summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-03-22 18:34:29 -0400
committeryenatch <yenatch@gmail.com>2017-03-22 18:34:29 -0400
commit7acbfe40778bfbd03b0e2d357efef9ee9b0a34e9 (patch)
tree90c0b95146f3d768b536658eac6a63ff9adcaaec
parentc0a27d5455014bfe54f7ea73e8a38ce0ed8da6da (diff)
parente3c26e52ae6ab881ade913ca1fad2cd9629bbcb1 (diff)
Merge remote-tracking branch 'origin/master'
Conflicts: Makefile
-rw-r--r--Makefile15
-rw-r--r--asm/battle_811DA74.s2212
-rw-r--r--asm/battle_ai.s2067
-rw-r--r--asm/battle_anim.s4729
-rw-r--r--asm/battle_anim_80CA710.s24
-rw-r--r--asm/battle_message.s74
-rw-r--r--asm/battle_party_menu.s1263
-rw-r--r--asm/bike.s2211
-rw-r--r--asm/braille_puzzles.s606
-rw-r--r--asm/choose_party.s82
-rw-r--r--asm/contest.s30
-rw-r--r--asm/contest_ai.s996
-rw-r--r--asm/credits.s2713
-rw-r--r--asm/daycare.s16
-rw-r--r--asm/field_control_avatar.s1780
-rw-r--r--asm/field_effect.s4
-rw-r--r--asm/field_map_obj.s4236
-rw-r--r--asm/field_region_map.s274
-rw-r--r--asm/field_tasks.s4
-rw-r--r--asm/fldeff_80C5CD4.s12
-rw-r--r--asm/fldeff_cut.s797
-rw-r--r--asm/fldeff_teleport.s93
-rw-r--r--asm/hall_of_fame.s14
-rw-r--r--asm/item_menu.s6
-rw-r--r--asm/item_use.s149
-rw-r--r--asm/libgcnmultiboot.s333
-rw-r--r--asm/macros/battle_ai_script.inc62
-rw-r--r--asm/map_name_popup.s248
-rw-r--r--asm/mauville_old_man.s496
-rw-r--r--asm/name_string_util.s76
-rw-r--r--asm/naming_screen.s4331
-rw-r--r--asm/party_menu.s14
-rw-r--r--asm/pokeball.s14
-rw-r--r--asm/pokemon_item_effect.s4
-rw-r--r--asm/pokemon_menu.s118
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--asm/reset_rtc_screen.s2
-rw-r--r--asm/rom3.s3411
-rw-r--r--asm/rom6.s474
-rw-r--r--asm/rom_800D42C.s2632
-rw-r--r--asm/rom_8080874.s179
-rw-r--r--asm/rom_8094928.s314
-rw-r--r--asm/rom_810CBB4.s12
-rw-r--r--asm/rom_81258BC.s18
-rw-r--r--asm/rotating_gate.s4
-rw-r--r--asm/script_movement.s596
-rw-r--r--asm/script_pokemon_util_80C4BF0.s1399
-rw-r--r--asm/script_pokemon_util_80F99CC.s978
-rw-r--r--asm/secret_base.s2
-rw-r--r--asm/shop.s812
-rw-r--r--asm/unknown_debug_menu.s133
-rw-r--r--common_syms/load_save.txt1
-rw-r--r--constants/map_constants.inc1
-rw-r--r--constants/misc_constants.inc10
-rw-r--r--data/battle_ai.s117
-rw-r--r--data/battle_ai_scripts.s390
-rw-r--r--data/battle_anim.s50
-rw-r--r--data/battle_anim_80CA710.s46
-rw-r--r--data/battle_party_menu.s34
-rw-r--r--data/battle_scripts_1.s4
-rw-r--r--data/battle_scripts_2.s22
-rw-r--r--data/battle_setup.s77
-rw-r--r--data/berries.inc689
-rw-r--r--data/berry.s14
-rw-r--r--data/bike.s57
-rw-r--r--data/clock_hand_coords.inc361
-rw-r--r--data/contest.s92
-rw-r--r--data/contest_ai.s274
-rw-r--r--data/contest_painting.s102
-rw-r--r--data/credits.s126
-rw-r--r--data/data2.s12
-rw-r--r--data/decoration.s4
-rw-r--r--data/diploma.s12
-rw-r--r--data/field_effect_helpers.s13
-rw-r--r--data/field_map_obj.s13
-rw-r--r--data/field_player_avatar.s180
-rw-r--r--data/field_tasks.s43
-rw-r--r--data/hall_of_fame.s27
-rw-r--r--data/heal_location.s29
-rw-r--r--data/intro.s514
-rw-r--r--data/intro_credits_graphics.s106
-rw-r--r--data/matsuda_debug_menu.s23
-rw-r--r--data/menu_cursor.s4
-rw-r--r--data/metatile_behavior.s246
-rw-r--r--data/multichoice.inc471
-rw-r--r--data/naming_screen.s210
-rw-r--r--data/pokedex_cry_screen.s46
-rw-r--r--data/pokemon_storage_system.s77
-rw-r--r--data/record_mixing.s4
-rw-r--r--data/rom_810CBB4.s60
-rw-r--r--data/rom_81258BC.s3
-rw-r--r--data/save.s29
-rw-r--r--data/save_failed_screen.s10
-rw-r--r--data/script_menu.s29
-rw-r--r--data/scripts/maps/IslandCave.inc2
-rw-r--r--data/shop.s24
-rw-r--r--data/specials.inc2
-rw-r--r--data/starter_choose.s173
-rw-r--r--data/strings.s2041
-rw-r--r--data/text/berry_descriptions.inc257
-rw-r--r--data/title_screen.s215
-rw-r--r--data/trainer_card.s8
-rw-r--r--data/trainer_eye_trainers.inc58
-rw-r--r--data/wallclock.s86
-rw-r--r--data/weather.s2
-rw-r--r--data/wild_mons.inc3101
-rw-r--r--generated.mk43
-rw-r--r--graphics/intro/8412818.pal51
-rw-r--r--graphics/intro/8412878.pal51
-rw-r--r--graphics/intro/8413E38.pal35
-rw-r--r--graphics/intro/intro2_bgclouds_afternoon.pal19
-rw-r--r--graphics/intro/intro2_bgtrees2.pal19
-rw-r--r--graphics/intro/intro2_bgtrees2_afternoon.pal19
-rw-r--r--graphics/intro/intro2_grass_afternoon.pal19
-rw-r--r--graphics/intro/intro2_grass_night.pal19
-rw-r--r--graphics/intro/unknown1.pal19
-rw-r--r--graphics/intro/unknown2.pal19
-rw-r--r--graphics/misc/83F808C.pal11
-rw-r--r--graphics/misc/83F809C.pal11
-rw-r--r--graphics/pokedex/83FB6F8.pal19
-rw-r--r--graphics/pokedex/cry_meter_map.binbin0 -> 160 bytes
-rw-r--r--graphics/pokemon_storage/83B6D74.pal19
-rw-r--r--graphics/pokemon_storage/83B6D94.pal19
-rw-r--r--graphics/trainer_card/83B5F0C.pal19
-rw-r--r--graphics/trainer_card/83B5F4C.pal19
-rw-r--r--graphics/trainer_card/83B5F6C.pal19
-rw-r--r--graphics/trainer_card/83B5F8C_map.binbin0 -> 64 bytes
-rw-r--r--include/asm.h47
-rw-r--r--include/asm.inc.h135
-rw-r--r--include/battle.h131
-rw-r--r--include/battle_ai.h31
-rw-r--r--include/battle_anim.h58
-rw-r--r--include/battle_move_effects.h222
-rw-r--r--include/battle_party_menu.h36
-rw-r--r--include/battle_setup.h154
-rw-r--r--include/berry.h12
-rw-r--r--include/bike.h56
-rw-r--r--include/braille_puzzles.h14
-rw-r--r--include/clock.h8
-rw-r--r--include/contest.h26
-rw-r--r--include/contest_painting.h77
-rw-r--r--include/dewford_trend.h10
-rw-r--r--include/field_control_avatar.h13
-rw-r--r--include/field_door.h25
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/field_map_obj_helpers.h11
-rw-r--r--include/field_player_avatar.h44
-rw-r--r--include/fieldmap.h6
-rw-r--r--include/fonts/.gitignore8
-rw-r--r--include/gba/flash_internal.h7
-rw-r--r--include/gba/gba.h1
-rw-r--r--include/gba/io_reg.h35
-rw-r--r--include/gba/multiboot.h55
-rw-r--r--include/gba/syscall.h2
-rw-r--r--include/global.berry.h6
-rw-r--r--include/global.fieldmap.h144
-rw-r--r--include/global.h86
-rw-r--r--include/heal_location.h8
-rw-r--r--include/intro.h1
-rw-r--r--include/libgncmultiboot.h4
-rw-r--r--include/link.h6
-rw-r--r--include/link/.gitignore2
-rw-r--r--include/load_save.h2
-rw-r--r--include/map_constants.h1098
-rw-r--r--include/map_object_constants.h226
-rw-r--r--include/matsuda_debug_menu.h11
-rw-r--r--include/menu.h2
-rw-r--r--include/metatile_behavior.h6
-rw-r--r--include/metatile_behaviors.h2
-rw-r--r--include/moves.h363
-rw-r--r--include/name_string_util.h7
-rw-r--r--include/naming_screen.h83
-rw-r--r--include/opponent_constants.h702
-rw-r--r--include/pokedex.h88
-rw-r--r--include/pokemon.h4
-rw-r--r--include/rom4.h21
-rw-r--r--include/rom6.h7
-rw-r--r--include/save.h83
-rw-r--r--include/save_menu_util.h4
-rw-r--r--include/script_menu.h31
-rw-r--r--include/script_pokemon_80C4.h22
-rw-r--r--include/script_pokemon_80F9.h17
-rw-r--r--include/songs.h20
-rw-r--r--include/sound.h8
-rw-r--r--include/species.h880
-rw-r--r--include/sprite.h55
-rw-r--r--include/starter_choose.h4
-rw-r--r--include/strings.h905
-rw-r--r--include/text.h7
-rw-r--r--include/text_window.h4
-rw-r--r--include/trainer_card.h48
-rw-r--r--include/trainer_see.h2
-rw-r--r--include/vars.h30
-rw-r--r--include/wallclock.h5
-rw-r--r--ld_script.txt83
-rw-r--r--shared_syms.txt5
-rw-r--r--src/agb_flash.c8
-rw-r--r--src/bard_music.c12
-rw-r--r--src/battle_811DA74.c713
-rw-r--r--src/battle_ai.c1875
-rw-r--r--src/battle_anim.c2257
-rw-r--r--src/battle_anim_80A7E7C.c1633
-rw-r--r--src/battle_party_menu.c483
-rw-r--r--src/battle_setup.c484
-rw-r--r--src/berry.c838
-rw-r--r--src/berry_tag_screen.c480
-rw-r--r--src/bike.c1015
-rw-r--r--src/braille_puzzles.c259
-rw-r--r--src/calculate_base_damage.c2102
-rw-r--r--src/clear_save_data_menu.c10
-rw-r--r--src/clock.c7
-rw-r--r--src/coins.c14
-rw-r--r--src/contest_painting.c699
-rw-r--r--src/credits.c2124
-rw-r--r--src/daycare.c26
-rw-r--r--src/decompress.c21
-rw-r--r--src/decoration.c5
-rw-r--r--src/dewford_trend.c590
-rw-r--r--src/diploma.c39
-rw-r--r--src/event_data.c15
-rw-r--r--src/field_camera.c138
-rw-r--r--src/field_control_avatar.c890
-rw-r--r--src/field_door.c31
-rw-r--r--src/field_effect.c3
-rw-r--r--src/field_map_obj.c1549
-rw-r--r--src/field_map_obj_helpers.c4
-rw-r--r--src/field_message_box.c6
-rw-r--r--src/field_player_avatar.c657
-rw-r--r--src/field_poison.c29
-rw-r--r--src/field_region_map.c134
-rw-r--r--src/field_special_scene.c63
-rw-r--r--src/fieldmap.c1686
-rw-r--r--src/fldeff_cut.c300
-rw-r--r--src/fldeff_strength.c19
-rw-r--r--src/fldeff_teleport.c51
-rw-r--r--src/heal_location.c37
-rw-r--r--src/intro.c1338
-rw-r--r--src/item.c52
-rw-r--r--src/item_use.c434
-rw-r--r--src/libc.c28
-rw-r--r--src/link.c44
-rw-r--r--src/load_save.c42
-rw-r--r--src/lottery_corner.c59
-rw-r--r--src/mail.c863
-rw-r--r--src/main.c5
-rw-r--r--src/main_menu.c11
-rw-r--r--src/map_name_popup.c106
-rw-r--r--src/map_obj_lock.c1
-rw-r--r--src/matsuda_debug_menu.c228
-rw-r--r--src/mauville_old_man.c406
-rw-r--r--src/menu.c12
-rw-r--r--src/menu_cursor.c28
-rw-r--r--src/metatile_behavior.c516
-rw-r--r--src/money.c82
-rw-r--r--src/mori_debug_menu.c20
-rw-r--r--src/mystery_event_menu.c18
-rw-r--r--src/mystery_event_script.c1
-rw-r--r--src/name_string_util.c39
-rw-r--r--src/naming_screen.c2008
-rw-r--r--src/new_game.c30
-rw-r--r--src/option_menu.c112
-rw-r--r--src/party_menu.c342
-rw-r--r--src/player_pc.c1216
-rw-r--r--src/pokedex.c636
-rw-r--r--src/pokemon_1.c10
-rw-r--r--src/pokemon_2.c142
-rw-r--r--src/pokemon_3.c24
-rw-r--r--src/pokemon_size_record.c27
-rw-r--r--src/pokemon_summary_screen.c47
-rw-r--r--src/record_mixing.c407
-rw-r--r--src/rom3.c1408
-rw-r--r--src/rom4.c68
-rw-r--r--src/rom6.c204
-rw-r--r--src/rom_800D42C.c81
-rw-r--r--src/rom_8080874.c97
-rw-r--r--src/rom_8094928.c135
-rw-r--r--src/safari_zone.c5
-rw-r--r--src/save.c435
-rw-r--r--src/save_failed_screen.c82
-rw-r--r--src/save_menu_util.c29
-rw-r--r--src/scrcmd.c43
-rw-r--r--src/script_menu.c637
-rw-r--r--src/script_movement.c226
-rw-r--r--src/script_pokemon_util_80C4BF0.c722
-rw-r--r--src/script_pokemon_util_80F99CC.c455
-rw-r--r--src/shop.c358
-rw-r--r--src/sound.c14
-rw-r--r--src/sprite.c148
-rw-r--r--src/start_menu.c169
-rw-r--r--src/starter_choose.c380
-rw-r--r--src/string_util.c91
-rw-r--r--src/strings.c923
-rw-r--r--src/task.c70
-rw-r--r--src/text.c24
-rw-r--r--src/text_window.c2
-rw-r--r--src/tileset_anim.c963
-rw-r--r--src/title_screen.c424
-rw-r--r--src/trainer_card.c2318
-rw-r--r--src/trainer_see.c46
-rw-r--r--src/tv.c85
-rw-r--r--src/unknown_debug_menu.c52
-rw-r--r--src/wallclock.c809
-rw-r--r--src/weather.c575
-rw-r--r--src/wild_encounter.c2910
-rw-r--r--sym_common.txt21
-rw-r--r--sym_ewram.txt92
-rw-r--r--tools/preproc/asm_file.cpp39
-rw-r--r--tools/preproc/c_file.cpp334
-rw-r--r--tools/preproc/c_file.h8
-rw-r--r--tools/preproc/char_util.h4
-rw-r--r--tools/preproc/preproc.cpp14
-rw-r--r--tools/scaninc/Makefile6
-rw-r--r--tools/scaninc/asm_file.cpp191
-rw-r--r--tools/scaninc/asm_file.h119
-rw-r--r--tools/scaninc/c_file.cpp287
-rw-r--r--tools/scaninc/c_file.h53
-rw-r--r--tools/scaninc/scaninc.cpp382
-rw-r--r--tools/scaninc/scaninc.h59
318 files changed, 44927 insertions, 60751 deletions
diff --git a/Makefile b/Makefile
index 1197b0af4..cd97efbbd 100644
--- a/Makefile
+++ b/Makefile
@@ -71,7 +71,6 @@ tidy:
include castform.mk
include tilesets.mk
include fonts.mk
-include generated.mk
include misc.mk
%.s: ;
@@ -102,9 +101,6 @@ sound/songs/%.s: sound/songs/%.mid
%src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
%src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
-%src/text.o: src/text.c $(GEN_FONT_HEADERS)
-%src/link.o: src/link.c $(GEN_LINK_HEADERS)
-
$(SONG_OBJS): %.o: %.s
$(AS) $(ASFLAGS) -I sound -o $@ $<
@@ -116,8 +112,9 @@ $1_ASM_OBJS := $$(ASM_SRCS:%.s=build/$1/%.o)
$1_DATA_ASM_OBJS := $$(DATA_ASM_SRCS:%.s=build/$1/%.o)
ifeq ($$(NODEP),)
-build/$1/asm/%.o: dep = $$(shell $$(SCANINC) asm/$$(*F).s)
-build/$1/data/%.o: dep = $$(shell $$(SCANINC) data/$$(*F).s)
+build/$1/src/%.o: c_dep = $$(shell $$(SCANINC) src/$$(*F).c)
+build/$1/asm/%.o: asm_dep = $$(shell $$(SCANINC) asm/$$(*F).s)
+build/$1/data/%.o: asm_dep = $$(shell $$(SCANINC) data/$$(*F).s)
endif
$1_OBJS := $$($1_C_OBJS) $$($1_ASM_OBJS) $$($1_DATA_ASM_OBJS) $$(SONG_OBJS)
@@ -126,7 +123,7 @@ $1_OBJS_REL := $$($1_OBJS_REL:sound/%=../../sound/%)
$$($1_C_OBJS): VERSION := $2
$$($1_C_OBJS): REVISION := $3
-build/$1/%.o : %.c
+build/$1/%.o : %.c $$$$(c_dep)
@$$(CPP) $$(CPPFLAGS) -D $$(VERSION) -D REVISION=$$(REVISION) $$< -o build/$1/$$*.i
@$$(PREPROC) build/$1/$$*.i charmap.txt | $$(CC1) $$(CFLAGS) -o build/$1/$$*.s
@printf ".text\n\t.align\t2, 0\n" >> build/$1/$$*.s
@@ -134,12 +131,12 @@ build/$1/%.o : %.c
$$($1_ASM_OBJS): VERSION := $2
$$($1_ASM_OBJS): REVISION := $3
-build/$1/asm/%.o: asm/%.s $$$$(dep)
+build/$1/asm/%.o: asm/%.s $$$$(asm_dep)
$$(AS) $$(ASFLAGS) --defsym $$(VERSION)=1 --defsym REVISION=$$(REVISION) -o $$@ $$<
$$($1_DATA_ASM_OBJS): VERSION := $2
$$($1_DATA_ASM_OBJS): REVISION := $3
-build/$1/data/%.o: data/%.s $$$$(dep)
+build/$1/data/%.o: data/%.s $$$$(asm_dep)
$$(PREPROC) $$< charmap.txt | $$(AS) $$(ASFLAGS) --defsym $$(VERSION)=1 --defsym REVISION=$$(REVISION) -o $$@
build/$1/sym_bss.ld: sym_bss.txt
diff --git a/asm/battle_811DA74.s b/asm/battle_811DA74.s
index 13a7f974e..0715b5110 100644
--- a/asm/battle_811DA74.s
+++ b/asm/battle_811DA74.s
@@ -6,2218 +6,6 @@
.text
- thumb_func_start nullsub_74
-nullsub_74: @ 811DA74
- bx lr
- thumb_func_end nullsub_74
-
- thumb_func_start sub_811DA78
-sub_811DA78: @ 811DA78
- ldr r1, _0811DA88 @ =gUnknown_03004330
- ldr r0, _0811DA8C @ =gUnknown_02024A60
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811DA90 @ =sub_811DA94
- str r1, [r0]
- bx lr
- .align 2, 0
-_0811DA88: .4byte gUnknown_03004330
-_0811DA8C: .4byte gUnknown_02024A60
-_0811DA90: .4byte sub_811DA94
- thumb_func_end sub_811DA78
-
- thumb_func_start sub_811DA94
-sub_811DA94: @ 811DA94
- push {lr}
- ldr r2, _0811DAC8 @ =gUnknown_02024A64
- ldr r1, _0811DACC @ =gBitTable
- ldr r0, _0811DAD0 @ =gUnknown_02024A60
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0811DAE0
- ldr r0, _0811DAD4 @ =gUnknown_02023A60
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _0811DADC
- ldr r0, _0811DAD8 @ =gUnknown_083FE4F4
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _0811DAE0
- .align 2, 0
-_0811DAC8: .4byte gUnknown_02024A64
-_0811DACC: .4byte gBitTable
-_0811DAD0: .4byte gUnknown_02024A60
-_0811DAD4: .4byte gUnknown_02023A60
-_0811DAD8: .4byte gUnknown_083FE4F4
-_0811DADC:
- bl dp01_tbl3_exec_completed
-_0811DAE0:
- pop {r0}
- bx r0
- thumb_func_end sub_811DA94
-
- thumb_func_start sub_811DAE4
-sub_811DAE4: @ 811DAE4
- push {lr}
- ldr r2, _0811DB0C @ =gSprites
- ldr r1, _0811DB10 @ =gUnknown_02024BE0
- ldr r0, _0811DB14 @ =gUnknown_02024A60
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0811DB18 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0811DB08
- bl dp01_tbl3_exec_completed
-_0811DB08:
- pop {r0}
- bx r0
- .align 2, 0
-_0811DB0C: .4byte gSprites
-_0811DB10: .4byte gUnknown_02024BE0
-_0811DB14: .4byte gUnknown_02024A60
-_0811DB18: .4byte SpriteCallbackDummy
- thumb_func_end sub_811DAE4
-
- thumb_func_start sub_811DB1C
-sub_811DB1C: @ 811DB1C
- push {r4-r6,lr}
- ldr r6, _0811DB74 @ =gSprites
- ldr r5, _0811DB78 @ =gUnknown_02024BE0
- ldr r4, _0811DB7C @ =gUnknown_02024A60
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _0811DB80 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0811DB6C
- movs r0, 0
- bl nullsub_10
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl FreeSpriteOamMatrix
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- bl dp01_tbl3_exec_completed
-_0811DB6C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811DB74: .4byte gSprites
-_0811DB78: .4byte gUnknown_02024BE0
-_0811DB7C: .4byte gUnknown_02024A60
-_0811DB80: .4byte SpriteCallbackDummy
- thumb_func_end sub_811DB1C
-
- thumb_func_start sub_811DB84
-sub_811DB84: @ 811DB84
- push {lr}
- ldr r3, _0811DBB8 @ =gUnknown_02024A60
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _0811DBBC @ =0x02017810
- adds r1, r2
- ldrb r0, [r1, 0x9]
- subs r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0811DBB4
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strb r0, [r1, 0x9]
- bl dp01_tbl3_exec_completed
-_0811DBB4:
- pop {r0}
- bx r0
- .align 2, 0
-_0811DBB8: .4byte gUnknown_02024A60
-_0811DBBC: .4byte 0x02017810
- thumb_func_end sub_811DB84
-
- thumb_func_start sub_811DBC0
-sub_811DBC0: @ 811DBC0
- push {r4-r6,lr}
- movs r6, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0811DBE4
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0811DC18
- ldr r0, _0811DC04 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0811DC18
-_0811DBE4:
- ldr r2, _0811DC08 @ =gSprites
- ldr r1, _0811DC0C @ =gUnknown_03004340
- ldr r0, _0811DC10 @ =gUnknown_02024A60
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0811DC14 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0811DC50
- b _0811DC4E
- .align 2, 0
-_0811DC04: .4byte gBattleTypeFlags
-_0811DC08: .4byte gSprites
-_0811DC0C: .4byte gUnknown_03004340
-_0811DC10: .4byte gUnknown_02024A60
-_0811DC14: .4byte SpriteCallbackDummy
-_0811DC18:
- ldr r2, _0811DC84 @ =gSprites
- ldr r5, _0811DC88 @ =gUnknown_03004340
- ldr r0, _0811DC8C @ =gUnknown_02024A60
- ldrb r3, [r0]
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r2, 0
- adds r4, 0x1C
- adds r0, r4
- ldr r2, [r0]
- ldr r0, _0811DC90 @ =SpriteCallbackDummy
- cmp r2, r0
- bne _0811DC50
- movs r0, 0x2
- eors r3, r0
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- cmp r0, r2
- bne _0811DC50
-_0811DC4E:
- movs r6, 0x1
-_0811DC50:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _0811DC5C
- movs r6, 0
-_0811DC5C:
- cmp r6, 0
- beq _0811DC7E
- ldr r2, _0811DC8C @ =gUnknown_02024A60
- ldrb r1, [r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811DC94 @ =0x02017810
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0, 0x9]
- ldr r1, _0811DC98 @ =gUnknown_03004330
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811DC9C @ =sub_811DB84
- str r1, [r0]
-_0811DC7E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811DC84: .4byte gSprites
-_0811DC88: .4byte gUnknown_03004340
-_0811DC8C: .4byte gUnknown_02024A60
-_0811DC90: .4byte SpriteCallbackDummy
-_0811DC94: .4byte 0x02017810
-_0811DC98: .4byte gUnknown_03004330
-_0811DC9C: .4byte sub_811DB84
- thumb_func_end sub_811DBC0
-
- thumb_func_start sub_811DCA0
-sub_811DCA0: @ 811DCA0
- push {r4-r7,lr}
- ldr r6, _0811DDBC @ =gUnknown_02024A60
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r4, _0811DDC0 @ =0x02017810
- adds r3, r0, r4
- ldrb r1, [r3]
- movs r5, 0x8
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _0811DDB4
- movs r7, 0x2
- adds r1, r7, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0811DDB4
- ldrb r0, [r3, 0x9]
- adds r0, 0x1
- strb r0, [r3, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0811DDB4
- ldrb r0, [r6]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- strb r2, [r1, 0x9]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0811DD56
- ldr r0, _0811DDC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0811DD56
- ldr r1, _0811DDC8 @ =gUnknown_0300434C
- ldrb r0, [r6]
- eors r0, r7
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811DDCC @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r4, _0811DDD0 @ =gUnknown_03004340
- ldrb r0, [r6]
- adds r1, r7, 0
- eors r1, r0
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _0811DDD4 @ =gUnknown_02024A6A
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0811DDD8 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r6]
- eors r0, r7
- bl sub_804777C
- ldrb r0, [r6]
- eors r0, r7
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
-_0811DD56:
- ldr r1, _0811DDC8 @ =gUnknown_0300434C
- ldr r4, _0811DDBC @ =gUnknown_02024A60
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811DDCC @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r5, _0811DDD0 @ =gUnknown_03004340
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _0811DDD4 @ =gUnknown_02024A6A
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0811DDD8 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- ldr r2, _0811DDDC @ =0x02017840
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _0811DDE0 @ =gUnknown_03004330
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811DDE4 @ =sub_811DBC0
- str r1, [r0]
-_0811DDB4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811DDBC: .4byte gUnknown_02024A60
-_0811DDC0: .4byte 0x02017810
-_0811DDC4: .4byte gBattleTypeFlags
-_0811DDC8: .4byte gUnknown_0300434C
-_0811DDCC: .4byte gSprites
-_0811DDD0: .4byte gUnknown_03004340
-_0811DDD4: .4byte gUnknown_02024A6A
-_0811DDD8: .4byte gPlayerParty
-_0811DDDC: .4byte 0x02017840
-_0811DDE0: .4byte gUnknown_03004330
-_0811DDE4: .4byte sub_811DBC0
- thumb_func_end sub_811DCA0
-
- thumb_func_start sub_811DDE8
-sub_811DDE8: @ 811DDE8
- push {lr}
- ldr r2, _0811DE1C @ =gSprites
- ldr r1, _0811DE20 @ =gUnknown_02024BE0
- ldr r0, _0811DE24 @ =gUnknown_02024A60
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _0811DE16
- movs r2, 0x24
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0811DE16
- bl dp01_tbl3_exec_completed
-_0811DE16:
- pop {r0}
- bx r0
- .align 2, 0
-_0811DE1C: .4byte gSprites
-_0811DE20: .4byte gUnknown_02024BE0
-_0811DE24: .4byte gUnknown_02024A60
- thumb_func_end sub_811DDE8
-
- thumb_func_start bx_t3_healthbar_update
-bx_t3_healthbar_update: @ 811DE28
- push {r4-r6,lr}
- ldr r5, _0811DE68 @ =gUnknown_02024A60
- ldrb r0, [r5]
- ldr r6, _0811DE6C @ =gUnknown_03004340
- adds r1, r0, r6
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- bl sub_8043DFC
- lsls r4, 16
- asrs r1, r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811DE70
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- movs r2, 0
- bl sub_80440EC
- b _0811DE8A
- .align 2, 0
-_0811DE68: .4byte gUnknown_02024A60
-_0811DE6C: .4byte gUnknown_03004340
-_0811DE70:
- ldr r2, _0811DE90 @ =gUnknown_02024A6A
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _0811DE94 @ =gPlayerParty
- adds r0, r2
- bl sub_80324F8
- bl dp01_tbl3_exec_completed
-_0811DE8A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811DE90: .4byte gUnknown_02024A6A
-_0811DE94: .4byte gPlayerParty
- thumb_func_end bx_t3_healthbar_update
-
- thumb_func_start sub_811DE98
-sub_811DE98: @ 811DE98
- push {r4-r6,lr}
- ldr r6, _0811DF1C @ =gSprites
- ldr r5, _0811DF20 @ =gUnknown_02024BE0
- ldr r4, _0811DF24 @ =gUnknown_02024A60
- ldrb r2, [r4]
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r3, 0x22
- ldrsh r1, [r0, r3]
- movs r3, 0x26
- ldrsh r0, [r0, r3]
- adds r1, r0
- cmp r1, 0xA0
- ble _0811DF14
- ldr r1, _0811DF28 @ =gUnknown_02024A6A
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0811DF2C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl nullsub_9
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- ldr r1, _0811DF30 @ =gUnknown_03004340
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl dp01_tbl3_exec_completed
-_0811DF14:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811DF1C: .4byte gSprites
-_0811DF20: .4byte gUnknown_02024BE0
-_0811DF24: .4byte gUnknown_02024A60
-_0811DF28: .4byte gUnknown_02024A6A
-_0811DF2C: .4byte gPlayerParty
-_0811DF30: .4byte gUnknown_03004340
- thumb_func_end sub_811DE98
-
- thumb_func_start sub_811DF34
-sub_811DF34: @ 811DF34
- push {r4-r6,lr}
- ldr r6, _0811DF8C @ =gUnknown_02024A60
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _0811DF90 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0811DF84
- ldr r5, _0811DF94 @ =gUnknown_02024BE0
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0811DF98 @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r1, _0811DF9C @ =gUnknown_03004340
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl dp01_tbl3_exec_completed
-_0811DF84:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811DF8C: .4byte gUnknown_02024A60
-_0811DF90: .4byte 0x02017810
-_0811DF94: .4byte gUnknown_02024BE0
-_0811DF98: .4byte gSprites
-_0811DF9C: .4byte gUnknown_03004340
- thumb_func_end sub_811DF34
-
- thumb_func_start sub_811DFA0
-sub_811DFA0: @ 811DFA0
- push {lr}
- ldr r0, _0811DFB4 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0811DFAE
- bl dp01_tbl3_exec_completed
-_0811DFAE:
- pop {r0}
- bx r0
- .align 2, 0
-_0811DFB4: .4byte gUnknown_03004210
- thumb_func_end sub_811DFA0
-
- thumb_func_start bx_blink_t3
-bx_blink_t3: @ 811DFB8
- push {r4,lr}
- ldr r1, _0811DFF4 @ =gUnknown_02024BE0
- ldr r0, _0811DFF8 @ =gUnknown_02024A60
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _0811DFFC @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x20
- bne _0811E004
- movs r3, 0
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x5
- ands r0, r1
- strb r0, [r2]
- ldr r0, _0811E000 @ =gUnknown_02024E6D
- strb r3, [r0]
- bl dp01_tbl3_exec_completed
- b _0811E02E
- .align 2, 0
-_0811DFF4: .4byte gUnknown_02024BE0
-_0811DFF8: .4byte gUnknown_02024A60
-_0811DFFC: .4byte gSprites
-_0811E000: .4byte gUnknown_02024E6D
-_0811E004:
- ldrh r0, [r4, 0x30]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0811E028
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_0811E028:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_0811E02E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end bx_blink_t3
-
- thumb_func_start sub_811E034
-sub_811E034: @ 811E034
- push {r4,lr}
- ldr r2, _0811E084 @ =gSprites
- ldr r0, _0811E088 @ =gUnknown_03004340
- ldr r4, _0811E08C @ =gUnknown_02024A60
- ldrb r3, [r4]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0811E090 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0811E07C
- lsls r0, r3, 2
- ldr r1, _0811E094 @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0811E070
- adds r0, r3, 0
- adds r1, r3, 0
- adds r2, r3, 0
- movs r3, 0x6
- bl move_anim_start_t4
-_0811E070:
- ldr r0, _0811E098 @ =gUnknown_03004330
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0811E09C @ =sub_811E0A0
- str r0, [r1]
-_0811E07C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811E084: .4byte gSprites
-_0811E088: .4byte gUnknown_03004340
-_0811E08C: .4byte gUnknown_02024A60
-_0811E090: .4byte SpriteCallbackDummy
-_0811E094: .4byte 0x02017800
-_0811E098: .4byte gUnknown_03004330
-_0811E09C: .4byte sub_811E0A0
- thumb_func_end sub_811E034
-
- thumb_func_start sub_811E0A0
-sub_811E0A0: @ 811E0A0
- push {lr}
- ldr r0, _0811E0C4 @ =gUnknown_02024A60
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811E0C8 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0811E0BE
- bl dp01_tbl3_exec_completed
-_0811E0BE:
- pop {r0}
- bx r0
- .align 2, 0
-_0811E0C4: .4byte gUnknown_02024A60
-_0811E0C8: .4byte 0x02017810
- thumb_func_end sub_811E0A0
-
- thumb_func_start sub_811E0CC
-sub_811E0CC: @ 811E0CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _0811E190 @ =gUnknown_02024A60
- ldrb r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r3, _0811E194 @ =0x02017810
- adds r2, r0, r3
- ldrb r1, [r2, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811E186
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _0811E198 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldr r0, _0811E19C @ =c3_0802FDF4
- movs r1, 0xA
- bl CreateTask
- ldr r0, _0811E1A0 @ =gUnknown_02024A6A
- mov r8, r0
- ldrb r1, [r7]
- lsls r0, r1, 1
- add r0, r8
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0811E1A4 @ =gPlayerParty
- adds r0, r5
- bl sub_80324F8
- ldr r1, _0811E1A8 @ =gUnknown_02024BE0
- ldrb r0, [r7]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811E1AC @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- ldr r4, _0811E1B0 @ =gUnknown_03004340
- ldrb r1, [r7]
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r1, 1
- add r1, r8
- ldrh r1, [r1]
- muls r1, r6
- adds r1, r5
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r7]
- bl sub_804777C
- ldrb r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r7]
- bl sub_8031F88
- ldr r1, _0811E1B4 @ =gUnknown_03004330
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811E1B8 @ =sub_811E034
- str r1, [r0]
-_0811E186:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811E190: .4byte gUnknown_02024A60
-_0811E194: .4byte 0x02017810
-_0811E198: .4byte 0x000027f9
-_0811E19C: .4byte c3_0802FDF4
-_0811E1A0: .4byte gUnknown_02024A6A
-_0811E1A4: .4byte gPlayerParty
-_0811E1A8: .4byte gUnknown_02024BE0
-_0811E1AC: .4byte gSprites
-_0811E1B0: .4byte gUnknown_03004340
-_0811E1B4: .4byte gUnknown_03004330
-_0811E1B8: .4byte sub_811E034
- thumb_func_end sub_811E0CC
-
- thumb_func_start sub_811E1BC
-sub_811E1BC: @ 811E1BC
- push {r4-r6,lr}
- ldr r4, _0811E234 @ =gUnknown_02024A60
- ldrb r2, [r4]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r6, _0811E238 @ =0x02017810
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _0811E1EA
- ldr r0, _0811E23C @ =gUnknown_02024A6A
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0811E240 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0811E1EA:
- ldr r5, _0811E244 @ =gSprites
- ldr r0, _0811E248 @ =gUnknown_0300434C
- ldrb r2, [r4]
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r0, r5, 0
- adds r0, 0x1C
- adds r0, r3, r0
- ldr r1, [r0]
- ldr r0, _0811E24C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0811E22C
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0811E22C
- adds r0, r3, r5
- bl DestroySprite
- ldr r1, _0811E250 @ =gUnknown_03004330
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811E254 @ =sub_811E0CC
- str r1, [r0]
-_0811E22C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811E234: .4byte gUnknown_02024A60
-_0811E238: .4byte 0x02017810
-_0811E23C: .4byte gUnknown_02024A6A
-_0811E240: .4byte gPlayerParty
-_0811E244: .4byte gSprites
-_0811E248: .4byte gUnknown_0300434C
-_0811E24C: .4byte SpriteCallbackDummy
-_0811E250: .4byte gUnknown_03004330
-_0811E254: .4byte sub_811E0CC
- thumb_func_end sub_811E1BC
-
- thumb_func_start sub_811E258
-sub_811E258: @ 811E258
- push {lr}
- ldr r0, _0811E288 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0811E284
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r3, _0811E28C @ =gMain
- ldr r0, _0811E290 @ =0x0000043d
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _0811E294 @ =gUnknown_030042D0
- ldr r0, [r0]
- str r0, [r3]
- ldr r0, _0811E298 @ =c2_8011A1C
- bl SetMainCallback2
-_0811E284:
- pop {r0}
- bx r0
- .align 2, 0
-_0811E288: .4byte gReceivedRemoteLinkPlayers
-_0811E28C: .4byte gMain
-_0811E290: .4byte 0x0000043d
-_0811E294: .4byte gUnknown_030042D0
-_0811E298: .4byte c2_8011A1C
- thumb_func_end sub_811E258
-
- thumb_func_start sub_811E29C
-sub_811E29C: @ 811E29C
- push {lr}
- ldr r0, _0811E2CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811E302
- ldr r0, _0811E2D0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811E2E0
- bl sub_800832C
- ldr r1, _0811E2D4 @ =gUnknown_03004330
- ldr r0, _0811E2D8 @ =gUnknown_02024A60
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811E2DC @ =sub_811E258
- str r1, [r0]
- b _0811E302
- .align 2, 0
-_0811E2CC: .4byte gPaletteFade
-_0811E2D0: .4byte gBattleTypeFlags
-_0811E2D4: .4byte gUnknown_03004330
-_0811E2D8: .4byte gUnknown_02024A60
-_0811E2DC: .4byte sub_811E258
-_0811E2E0:
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r2, _0811E308 @ =gMain
- ldr r0, _0811E30C @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _0811E310 @ =gUnknown_030042D0
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_0811E302:
- pop {r0}
- bx r0
- .align 2, 0
-_0811E308: .4byte gMain
-_0811E30C: .4byte 0x0000043d
-_0811E310: .4byte gUnknown_030042D0
- thumb_func_end sub_811E29C
-
- thumb_func_start dp01_tbl3_exec_completed
-dp01_tbl3_exec_completed: @ 811E314
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0811E354 @ =gUnknown_03004330
- ldr r4, _0811E358 @ =gUnknown_02024A60
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0811E35C @ =sub_811DA94
- str r1, [r0]
- ldr r0, _0811E360 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811E368
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _0811E364 @ =gUnknown_02023A60
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0811E37A
- .align 2, 0
-_0811E354: .4byte gUnknown_03004330
-_0811E358: .4byte gUnknown_02024A60
-_0811E35C: .4byte sub_811DA94
-_0811E360: .4byte gBattleTypeFlags
-_0811E364: .4byte gUnknown_02023A60
-_0811E368:
- ldr r2, _0811E384 @ =gUnknown_02024A64
- ldr r1, _0811E388 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0811E37A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811E384: .4byte gUnknown_02024A64
-_0811E388: .4byte gBitTable
- thumb_func_end dp01_tbl3_exec_completed
-
- thumb_func_start sub_811E38C
-sub_811E38C: @ 811E38C
- push {lr}
- ldr r0, _0811E3B0 @ =gUnknown_02024A60
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811E3B4 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0811E3AA
- bl dp01_tbl3_exec_completed
-_0811E3AA:
- pop {r0}
- bx r0
- .align 2, 0
-_0811E3B0: .4byte gUnknown_02024A60
-_0811E3B4: .4byte 0x02017810
- thumb_func_end sub_811E38C
-
- thumb_func_start sub_811E3B8
-sub_811E3B8: @ 811E3B8
- push {lr}
- ldr r0, _0811E3DC @ =gUnknown_02024A60
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811E3E0 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0811E3D6
- bl dp01_tbl3_exec_completed
-_0811E3D6:
- pop {r0}
- bx r0
- .align 2, 0
-_0811E3DC: .4byte gUnknown_02024A60
-_0811E3E0: .4byte 0x02017810
- thumb_func_end sub_811E3B8
-
- thumb_func_start dp01t_00_3_getattr
-dp01t_00_3_getattr: @ 811E3E4
- push {r4-r6,lr}
- sub sp, 0x100
- movs r6, 0
- ldr r1, _0811E410 @ =gUnknown_02023A60
- ldr r0, _0811E414 @ =gUnknown_02024A60
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- bne _0811E41C
- ldr r0, _0811E418 @ =gUnknown_02024A6A
- lsls r1, r2, 1
- adds r1, r0
- ldrb r0, [r1]
- mov r1, sp
- bl dp01_getattr_by_ch1_for_player_pokemon
- adds r6, r0, 0
- b _0811E43E
- .align 2, 0
-_0811E410: .4byte gUnknown_02023A60
-_0811E414: .4byte gUnknown_02024A60
-_0811E418: .4byte gUnknown_02024A6A
-_0811E41C:
- ldrb r4, [r1]
- movs r5, 0
-_0811E420:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0811E436
- lsls r0, r5, 24
- lsrs r0, 24
- mov r2, sp
- adds r1, r2, r6
- bl dp01_getattr_by_ch1_for_player_pokemon
- adds r6, r0
-_0811E436:
- lsrs r4, 1
- adds r5, 0x1
- cmp r5, 0x5
- ble _0811E420
-_0811E43E:
- lsls r1, r6, 16
- lsrs r1, 16
- movs r0, 0x1
- mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
- bl dp01_tbl3_exec_completed
- add sp, 0x100
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end dp01t_00_3_getattr
-
- thumb_func_start dp01_getattr_by_ch1_for_player_pokemon
-dp01_getattr_by_ch1_for_player_pokemon: @ 811E458
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x90
- adds r7, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r2, _0811E48C @ =gUnknown_02023A60
- ldr r3, _0811E490 @ =gUnknown_02024A60
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, r2, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3B
- bls _0811E482
- bl _0811EBEE
-_0811E482:
- lsls r0, 2
- ldr r1, _0811E494 @ =_0811E498
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811E48C: .4byte gUnknown_02023A60
-_0811E490: .4byte gUnknown_02024A60
-_0811E494: .4byte _0811E498
- .align 2, 0
-_0811E498:
- .4byte _0811E588
- .4byte _0811E7AC
- .4byte _0811E7BC
- .4byte _0811E7CC
- .4byte _0811E834
- .4byte _0811E834
- .4byte _0811E834
- .4byte _0811E834
- .4byte _0811E850
- .4byte _0811E88C
- .4byte _0811E88C
- .4byte _0811E88C
- .4byte _0811E88C
- .4byte _0811EBEE
- .4byte _0811EBEE
- .4byte _0811EBEE
- .4byte _0811EBEE
- .4byte _0811E8A8
- .4byte _0811E8B8
- .4byte _0811E8E8
- .4byte _0811E8F8
- .4byte _0811E908
- .4byte _0811E918
- .4byte _0811E928
- .4byte _0811E938
- .4byte _0811E948
- .4byte _0811E958
- .4byte _0811E968
- .4byte _0811E978
- .4byte _0811E988
- .4byte _0811E998
- .4byte _0811E9A8
- .4byte _0811E9F8
- .4byte _0811EA08
- .4byte _0811EA18
- .4byte _0811EA28
- .4byte _0811EA38
- .4byte _0811EA48
- .4byte _0811EA58
- .4byte _0811EA68
- .4byte _0811EA78
- .4byte _0811EAAC
- .4byte _0811EABC
- .4byte _0811EACC
- .4byte _0811EADC
- .4byte _0811EAEC
- .4byte _0811EAFC
- .4byte _0811EB0C
- .4byte _0811EB1C
- .4byte _0811EB3C
- .4byte _0811EB4C
- .4byte _0811EB5C
- .4byte _0811EB6C
- .4byte _0811EB7C
- .4byte _0811EB8C
- .4byte _0811EB9C
- .4byte _0811EBAC
- .4byte _0811EBBC
- .4byte _0811EBCC
- .4byte _0811EBDC
-_0811E588:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _0811E79C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2E]
- movs r6, 0
- add r0, sp, 0x24
- mov r9, r0
- movs r1, 0x3B
- add r1, sp
- mov r10, r1
- mov r2, sp
- adds r2, 0x2B
- str r2, [sp, 0x80]
- mov r0, sp
- adds r0, 0x2A
- str r0, [sp, 0x7C]
- mov r1, sp
- adds r1, 0x68
- str r1, [sp, 0x8C]
- adds r2, 0x5
- str r2, [sp, 0x84]
- adds r0, 0x12
- str r0, [sp, 0x88]
- mov r8, r4
- add r4, sp, 0xC
-_0811E5D4:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r8
- bl GetMonData
- strh r0, [r4]
- adds r1, r6, 0
- adds r1, 0x11
- mov r0, r8
- bl GetMonData
- mov r2, r9
- adds r1, r2, r6
- strb r0, [r1]
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0811E5D4
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _0811E79C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x15
- bl GetMonData
- mov r1, r10
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- ldr r2, [sp, 0x80]
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x44]
- adds r0, r4, 0
- movs r1, 0x27
- bl GetMonData
- mov r3, sp
- movs r5, 0x1F
- ands r0, r5
- ldrb r2, [r3, 0x14]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x14]
- adds r0, r4, 0
- movs r1, 0x28
- bl GetMonData
- mov r3, sp
- movs r6, 0x1F
- ands r0, r6
- lsls r0, 5
- ldrh r2, [r3, 0x14]
- ldr r1, _0811E7A0 @ =0xfffffc1f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x14]
- adds r0, r4, 0
- movs r1, 0x29
- bl GetMonData
- mov r3, sp
- ands r0, r5
- lsls r0, 2
- ldrb r2, [r3, 0x15]
- movs r1, 0x7D
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x15]
- adds r0, r4, 0
- movs r1, 0x2A
- bl GetMonData
- movs r1, 0x1F
- ands r1, r0
- lsls r1, 15
- ldr r0, [sp, 0x14]
- ldr r2, _0811E7A4 @ =0xfff07fff
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x14]
- adds r0, r4, 0
- movs r1, 0x2B
- bl GetMonData
- mov r3, sp
- ands r0, r6
- lsls r0, 4
- ldrh r2, [r3, 0x16]
- ldr r1, _0811E7A8 @ =0xfffffe0f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x16]
- adds r0, r4, 0
- movs r1, 0x2C
- bl GetMonData
- mov r3, sp
- ands r0, r5
- lsls r0, 1
- ldrb r2, [r3, 0x17]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x48]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- str r0, [sp, 0x4C]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- ldr r1, [sp, 0x7C]
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x28]
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2C]
- adds r0, r4, 0
- movs r1, 0x3B
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2]
- adds r0, r4, 0
- movs r1, 0x3C
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x4]
- adds r0, r4, 0
- movs r1, 0x3D
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x6]
- adds r0, r4, 0
- movs r1, 0x3E
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0x3F
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0xA]
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- mov r3, sp
- movs r1, 0x1
- ands r0, r1
- lsls r0, 6
- ldrb r2, [r3, 0x17]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- mov r3, sp
- lsls r0, 7
- ldrb r2, [r3, 0x17]
- movs r1, 0x7F
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [sp, 0x54]
- adds r0, r4, 0
- movs r1, 0x2
- ldr r2, [sp, 0x8C]
- bl GetMonData
- ldr r0, [sp, 0x84]
- ldr r1, [sp, 0x8C]
- bl StringCopy10
- adds r0, r4, 0
- movs r1, 0x7
- ldr r2, [sp, 0x88]
- bl GetMonData
- mov r2, sp
- movs r6, 0
-_0811E78C:
- adds r0, r7, r6
- adds r1, r2, r6
- ldrb r1, [r1]
- strb r1, [r0]
- adds r6, 0x1
- cmp r6, 0x57
- bls _0811E78C
- b _0811EBEE
- .align 2, 0
-_0811E79C: .4byte gPlayerParty
-_0811E7A0: .4byte 0xfffffc1f
-_0811E7A4: .4byte 0xfff07fff
-_0811E7A8: .4byte 0xfffffe0f
-_0811E7AC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E7B8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- b _0811EB26
- .align 2, 0
-_0811E7B8: .4byte gPlayerParty
-_0811E7BC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E7C8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- b _0811EB26
- .align 2, 0
-_0811E7C8: .4byte gPlayerParty
-_0811E7CC:
- movs r6, 0
- add r2, sp, 0x58
- mov r9, r2
- add r0, sp, 0x60
- mov r10, r0
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0811E830 @ =gPlayerParty
- adds r4, r1, r0
- mov r8, r9
-_0811E7E2:
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- adds r1, r6, 0
- adds r1, 0x11
- adds r0, r4, 0
- bl GetMonData
- mov r2, r10
- adds r1, r2, r6
- strb r0, [r1]
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0811E7E2
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E830 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- mov r1, r9
- strb r0, [r1, 0xC]
- mov r2, r9
- movs r6, 0
-_0811E820:
- adds r0, r7, r6
- adds r1, r2, r6
- ldrb r1, [r1]
- strb r1, [r0]
- adds r6, 0x1
- cmp r6, 0xF
- bls _0811E820
- b _0811EBEE
- .align 2, 0
-_0811E830: .4byte gPlayerParty
-_0811E834:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E84C @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r3]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x9
- b _0811EB26
- .align 2, 0
-_0811E84C: .4byte gPlayerParty
-_0811E850:
- movs r6, 0
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r2, _0811E888 @ =gPlayerParty
- mov r8, r2
-_0811E85C:
- adds r1, r6, 0
- adds r1, 0x11
- mov r2, r8
- adds r0, r4, r2
- bl GetMonData
- adds r1, r7, r6
- strb r0, [r1]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0811E85C
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E888 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- adds r1, r7, r6
- strb r0, [r1]
- adds r6, 0x1
- b _0811EBEE
- .align 2, 0
-_0811E888: .4byte gPlayerParty
-_0811E88C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E8A4 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r3]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x8
- b _0811EBE6
- .align 2, 0
-_0811E8A4: .4byte gPlayerParty
-_0811E8A8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E8B4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- b _0811E8C2
- .align 2, 0
-_0811E8B4: .4byte gPlayerParty
-_0811E8B8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E8E4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x19
-_0811E8C2:
- bl GetMonData
- adds r1, r0, 0
- strb r1, [r7]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r7, 0x2]
- movs r6, 0x3
- b _0811EBEE
- .align 2, 0
-_0811E8E4: .4byte gPlayerParty
-_0811E8E8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E8F4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1A
- b _0811EBE6
- .align 2, 0
-_0811E8F4: .4byte gPlayerParty
-_0811E8F8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E904 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1B
- b _0811EBE6
- .align 2, 0
-_0811E904: .4byte gPlayerParty
-_0811E908:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E914 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1C
- b _0811EBE6
- .align 2, 0
-_0811E914: .4byte gPlayerParty
-_0811E918:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E924 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1D
- b _0811EBE6
- .align 2, 0
-_0811E924: .4byte gPlayerParty
-_0811E928:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E934 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1E
- b _0811EBE6
- .align 2, 0
-_0811E934: .4byte gPlayerParty
-_0811E938:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E944 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1F
- b _0811EBE6
- .align 2, 0
-_0811E944: .4byte gPlayerParty
-_0811E948:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E954 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x20
- b _0811EBE6
- .align 2, 0
-_0811E954: .4byte gPlayerParty
-_0811E958:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E964 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x22
- b _0811EBE6
- .align 2, 0
-_0811E964: .4byte gPlayerParty
-_0811E968:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E974 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x23
- b _0811EBE6
- .align 2, 0
-_0811E974: .4byte gPlayerParty
-_0811E978:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E984 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x24
- b _0811EBE6
- .align 2, 0
-_0811E984: .4byte gPlayerParty
-_0811E988:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E994 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x25
- b _0811EBE6
- .align 2, 0
-_0811E994: .4byte gPlayerParty
-_0811E998:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811E9A4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x26
- b _0811EBE6
- .align 2, 0
-_0811E9A4: .4byte gPlayerParty
-_0811E9A8:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _0811E9F4 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x27
- bl GetMonData
- strb r0, [r7]
- adds r0, r4, 0
- movs r1, 0x28
- bl GetMonData
- strb r0, [r7, 0x1]
- adds r0, r4, 0
- movs r1, 0x29
- bl GetMonData
- strb r0, [r7, 0x2]
- adds r0, r4, 0
- movs r1, 0x2A
- bl GetMonData
- strb r0, [r7, 0x3]
- adds r0, r4, 0
- movs r1, 0x2B
- bl GetMonData
- strb r0, [r7, 0x4]
- adds r0, r4, 0
- movs r1, 0x2C
- bl GetMonData
- strb r0, [r7, 0x5]
- movs r6, 0x6
- b _0811EBEE
- .align 2, 0
-_0811E9F4: .4byte gPlayerParty
-_0811E9F8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA04 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x27
- b _0811EBE6
- .align 2, 0
-_0811EA04: .4byte gPlayerParty
-_0811EA08:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA14 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x28
- b _0811EBE6
- .align 2, 0
-_0811EA14: .4byte gPlayerParty
-_0811EA18:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA24 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x29
- b _0811EBE6
- .align 2, 0
-_0811EA24: .4byte gPlayerParty
-_0811EA28:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA34 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2A
- b _0811EBE6
- .align 2, 0
-_0811EA34: .4byte gPlayerParty
-_0811EA38:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA44 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2B
- b _0811EBE6
- .align 2, 0
-_0811EA44: .4byte gPlayerParty
-_0811EA48:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA54 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2C
- b _0811EBE6
- .align 2, 0
-_0811EA54: .4byte gPlayerParty
-_0811EA58:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA64 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- b _0811EA82
- .align 2, 0
-_0811EA64: .4byte gPlayerParty
-_0811EA68:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EA74 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x9
- b _0811EB26
- .align 2, 0
-_0811EA74: .4byte gPlayerParty
-_0811EA78:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EAA8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x37
-_0811EA82:
- bl GetMonData
- adds r1, r0, 0
- strb r1, [r7]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r7, 0x2]
- lsrs r0, r1, 24
- strb r0, [r7, 0x3]
- movs r6, 0x4
- b _0811EBEE
- .align 2, 0
-_0811EAA8: .4byte gPlayerParty
-_0811EAAC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EAB8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- b _0811EBE6
- .align 2, 0
-_0811EAB8: .4byte gPlayerParty
-_0811EABC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EAC8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- b _0811EB26
- .align 2, 0
-_0811EAC8: .4byte gPlayerParty
-_0811EACC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EAD8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3A
- b _0811EB26
- .align 2, 0
-_0811EAD8: .4byte gPlayerParty
-_0811EADC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EAE8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3B
- b _0811EB26
- .align 2, 0
-_0811EAE8: .4byte gPlayerParty
-_0811EAEC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EAF8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3C
- b _0811EB26
- .align 2, 0
-_0811EAF8: .4byte gPlayerParty
-_0811EAFC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB08 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3D
- b _0811EB26
- .align 2, 0
-_0811EB08: .4byte gPlayerParty
-_0811EB0C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB18 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3E
- b _0811EB26
- .align 2, 0
-_0811EB18: .4byte gPlayerParty
-_0811EB1C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB38 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3F
-_0811EB26:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- strb r0, [r7]
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r6, 0x2
- b _0811EBEE
- .align 2, 0
-_0811EB38: .4byte gPlayerParty
-_0811EB3C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB48 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x16
- b _0811EBE6
- .align 2, 0
-_0811EB48: .4byte gPlayerParty
-_0811EB4C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB58 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x17
- b _0811EBE6
- .align 2, 0
-_0811EB58: .4byte gPlayerParty
-_0811EB5C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB68 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x18
- b _0811EBE6
- .align 2, 0
-_0811EB68: .4byte gPlayerParty
-_0811EB6C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB78 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x21
- b _0811EBE6
- .align 2, 0
-_0811EB78: .4byte gPlayerParty
-_0811EB7C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB88 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2F
- b _0811EBE6
- .align 2, 0
-_0811EB88: .4byte gPlayerParty
-_0811EB8C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EB98 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x30
- b _0811EBE6
- .align 2, 0
-_0811EB98: .4byte gPlayerParty
-_0811EB9C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EBA8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x32
- b _0811EBE6
- .align 2, 0
-_0811EBA8: .4byte gPlayerParty
-_0811EBAC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EBB8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x33
- b _0811EBE6
- .align 2, 0
-_0811EBB8: .4byte gPlayerParty
-_0811EBBC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EBC8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x34
- b _0811EBE6
- .align 2, 0
-_0811EBC8: .4byte gPlayerParty
-_0811EBCC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EBD8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x35
- b _0811EBE6
- .align 2, 0
-_0811EBD8: .4byte gPlayerParty
-_0811EBDC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0811EC00 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x36
-_0811EBE6:
- bl GetMonData
- strb r0, [r7]
- movs r6, 0x1
-_0811EBEE:
- adds r0, r6, 0
- add sp, 0x90
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811EC00: .4byte gPlayerParty
- thumb_func_end dp01_getattr_by_ch1_for_player_pokemon
-
- thumb_func_start sub_811EC04
-sub_811EC04: @ 811EC04
- push {lr}
- bl dp01_tbl3_exec_completed
- pop {r0}
- bx r0
- thumb_func_end sub_811EC04
-
- thumb_func_start sub_811EC10
-sub_811EC10: @ 811EC10
- push {r4,r5,lr}
- ldr r1, _0811EC34 @ =gUnknown_02023A60
- ldr r0, _0811EC38 @ =gUnknown_02024A60
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- bne _0811EC40
- ldr r0, _0811EC3C @ =gUnknown_02024A6A
- lsls r1, r2, 1
- adds r1, r0
- ldrb r0, [r1]
- bl sub_811EC68
- b _0811EC5E
- .align 2, 0
-_0811EC34: .4byte gUnknown_02023A60
-_0811EC38: .4byte gUnknown_02024A60
-_0811EC3C: .4byte gUnknown_02024A6A
-_0811EC40:
- ldrb r4, [r1]
- movs r5, 0
-_0811EC44:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0811EC52
- adds r0, r5, 0
- bl sub_811EC68
-_0811EC52:
- lsrs r4, 1
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0811EC44
-_0811EC5E:
- bl dp01_tbl3_exec_completed
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811EC10
-
thumb_func_start sub_811EC68
sub_811EC68: @ 811EC68
push {r4-r7,lr}
diff --git a/asm/battle_ai.s b/asm/battle_ai.s
deleted file mode 100644
index 426790c89..000000000
--- a/asm/battle_ai.s
+++ /dev/null
@@ -1,2067 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BattleAICmd_if_status_not_in_party
-BattleAICmd_if_status_not_in_party: @ 8108A28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08108A44 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r2, r0, 0
- cmp r1, 0x1
- bne _08108A4C
- ldr r0, _08108A48 @ =gEnemyParty
- mov r10, r0
- b _08108A50
- .align 2, 0
-_08108A44: .4byte gAIScriptPtr
-_08108A48: .4byte gEnemyParty
-_08108A4C:
- ldr r1, _08108AE4 @ =gPlayerParty
- mov r10, r1
-_08108A50:
- ldr r1, [r2]
- ldrb r7, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r7, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r7, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r7, r0
- movs r0, 0
- mov r8, r0
- mov r9, r2
-_08108A6C:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- add r4, r10
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- cmp r5, 0
- beq _08108AB0
- movs r1, 0xCE
- lsls r1, 1
- cmp r5, r1
- beq _08108AB0
- cmp r6, 0
- beq _08108AB0
- cmp r0, r7
- bne _08108AB0
- mov r1, r9
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_08108AB0:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _08108A6C
- ldr r3, _08108AE8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x6]
- ldrb r0, [r2, 0x7]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x9]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108AE4: .4byte gPlayerParty
-_08108AE8: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_status_not_in_party
-
- thumb_func_start BattleAICmd_unk_36
-BattleAICmd_unk_36: @ 8108AEC
- push {lr}
- ldr r2, _08108B3C @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08108B00
- ldr r1, _08108B40 @ =0x02016800
- movs r0, 0x1
- str r0, [r1, 0x8]
-_08108B00:
- ldrh r2, [r2]
- movs r0, 0x18
- ands r0, r2
- adds r3, r2, 0
- cmp r0, 0
- beq _08108B12
- ldr r1, _08108B40 @ =0x02016800
- movs r0, 0x2
- str r0, [r1, 0x8]
-_08108B12:
- movs r0, 0x60
- ands r0, r3
- cmp r0, 0
- beq _08108B20
- ldr r1, _08108B40 @ =0x02016800
- movs r0, 0
- str r0, [r1, 0x8]
-_08108B20:
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _08108B2E
- ldr r1, _08108B40 @ =0x02016800
- movs r0, 0x3
- str r0, [r1, 0x8]
-_08108B2E:
- ldr r1, _08108B44 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08108B3C: .4byte gBattleWeather
-_08108B40: .4byte 0x02016800
-_08108B44: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_unk_36
-
- thumb_func_start BattleAICmd_if_effect
-BattleAICmd_if_effect: @ 8108B48
- push {lr}
- ldr r2, _08108B7C @ =gBattleMoves
- ldr r0, _08108B80 @ =0x02016800
- ldrh r1, [r0, 0x2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r3, _08108B84 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r0, [r0]
- ldrb r1, [r2, 0x1]
- cmp r0, r1
- bne _08108B88
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08108B8C
- .align 2, 0
-_08108B7C: .4byte gBattleMoves
-_08108B80: .4byte 0x02016800
-_08108B84: .4byte gAIScriptPtr
-_08108B88:
- adds r0, r2, 0x6
- str r0, [r3]
-_08108B8C:
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_effect
-
- thumb_func_start BattleAICmd_if_not_effect
-BattleAICmd_if_not_effect: @ 8108B90
- push {lr}
- ldr r2, _08108BC4 @ =gBattleMoves
- ldr r0, _08108BC8 @ =0x02016800
- ldrh r1, [r0, 0x2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r3, _08108BCC @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r0, [r0]
- ldrb r1, [r2, 0x1]
- cmp r0, r1
- beq _08108BD0
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08108BD4
- .align 2, 0
-_08108BC4: .4byte gBattleMoves
-_08108BC8: .4byte 0x02016800
-_08108BCC: .4byte gAIScriptPtr
-_08108BD0:
- adds r0, r2, 0x6
- str r0, [r3]
-_08108BD4:
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_not_effect
-
- thumb_func_start BattleAICmd_if_stat_level_less_than
-BattleAICmd_if_stat_level_less_than: @ 8108BD8
- push {r4,lr}
- ldr r0, _08108BEC @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08108BF4
- ldr r0, _08108BF0 @ =gUnknown_02024C07
- b _08108BF6
- .align 2, 0
-_08108BEC: .4byte gAIScriptPtr
-_08108BF0: .4byte gUnknown_02024C07
-_08108BF4:
- ldr r0, _08108C2C @ =gUnknown_02024C08
-_08108BF6:
- ldrb r3, [r0]
- ldr r1, _08108C30 @ =gBattleMons
- ldr r2, [r4]
- movs r0, 0x58
- muls r0, r3
- ldrb r3, [r2, 0x2]
- adds r0, r3
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrb r1, [r2, 0x3]
- cmp r0, r1
- bge _08108C34
- ldrb r1, [r2, 0x4]
- ldrb r0, [r2, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08108C3A
- .align 2, 0
-_08108C2C: .4byte gUnknown_02024C08
-_08108C30: .4byte gBattleMons
-_08108C34:
- adds r0, r2, 0
- adds r0, 0x8
- str r0, [r4]
-_08108C3A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_stat_level_less_than
-
- thumb_func_start BattleAICmd_if_stat_level_more_than
-BattleAICmd_if_stat_level_more_than: @ 8108C40
- push {r4,lr}
- ldr r0, _08108C54 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08108C5C
- ldr r0, _08108C58 @ =gUnknown_02024C07
- b _08108C5E
- .align 2, 0
-_08108C54: .4byte gAIScriptPtr
-_08108C58: .4byte gUnknown_02024C07
-_08108C5C:
- ldr r0, _08108C94 @ =gUnknown_02024C08
-_08108C5E:
- ldrb r3, [r0]
- ldr r1, _08108C98 @ =gBattleMons
- ldr r2, [r4]
- movs r0, 0x58
- muls r0, r3
- ldrb r3, [r2, 0x2]
- adds r0, r3
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrb r1, [r2, 0x3]
- cmp r0, r1
- ble _08108C9C
- ldrb r1, [r2, 0x4]
- ldrb r0, [r2, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08108CA2
- .align 2, 0
-_08108C94: .4byte gUnknown_02024C08
-_08108C98: .4byte gBattleMons
-_08108C9C:
- adds r0, r2, 0
- adds r0, 0x8
- str r0, [r4]
-_08108CA2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_stat_level_more_than
-
- thumb_func_start BattleAICmd_if_stat_level_equal
-BattleAICmd_if_stat_level_equal: @ 8108CA8
- push {r4,lr}
- ldr r0, _08108CBC @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08108CC4
- ldr r0, _08108CC0 @ =gUnknown_02024C07
- b _08108CC6
- .align 2, 0
-_08108CBC: .4byte gAIScriptPtr
-_08108CC0: .4byte gUnknown_02024C07
-_08108CC4:
- ldr r0, _08108CFC @ =gUnknown_02024C08
-_08108CC6:
- ldrb r3, [r0]
- ldr r1, _08108D00 @ =gBattleMons
- ldr r2, [r4]
- movs r0, 0x58
- muls r0, r3
- ldrb r3, [r2, 0x2]
- adds r0, r3
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrb r1, [r2, 0x3]
- cmp r0, r1
- bne _08108D04
- ldrb r1, [r2, 0x4]
- ldrb r0, [r2, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08108D0A
- .align 2, 0
-_08108CFC: .4byte gUnknown_02024C08
-_08108D00: .4byte gBattleMons
-_08108D04:
- adds r0, r2, 0
- adds r0, 0x8
- str r0, [r4]
-_08108D0A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_stat_level_equal
-
- thumb_func_start BattleAICmd_if_stat_level_not_equal
-BattleAICmd_if_stat_level_not_equal: @ 8108D10
- push {r4,lr}
- ldr r0, _08108D24 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08108D2C
- ldr r0, _08108D28 @ =gUnknown_02024C07
- b _08108D2E
- .align 2, 0
-_08108D24: .4byte gAIScriptPtr
-_08108D28: .4byte gUnknown_02024C07
-_08108D2C:
- ldr r0, _08108D64 @ =gUnknown_02024C08
-_08108D2E:
- ldrb r3, [r0]
- ldr r1, _08108D68 @ =gBattleMons
- ldr r2, [r4]
- movs r0, 0x58
- muls r0, r3
- ldrb r3, [r2, 0x2]
- adds r0, r3
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrb r1, [r2, 0x3]
- cmp r0, r1
- beq _08108D6C
- ldrb r1, [r2, 0x4]
- ldrb r0, [r2, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08108D72
- .align 2, 0
-_08108D64: .4byte gUnknown_02024C08
-_08108D68: .4byte gBattleMons
-_08108D6C:
- adds r0, r2, 0
- adds r0, 0x8
- str r0, [r4]
-_08108D72:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_stat_level_not_equal
-
- thumb_func_start BattleAICmd_if_can_faint
-BattleAICmd_if_can_faint: @ 8108D78
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, _08108E1C @ =gBattleMoves
- ldr r6, _08108E20 @ =0x02016800
- ldrh r1, [r6, 0x2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- bls _08108E4C
- ldr r0, _08108E24 @ =gUnknown_02024DEC
- movs r1, 0
- strh r1, [r0]
- ldr r2, _08108E28 @ =0xfffff81c
- adds r0, r6, r2
- strb r1, [r0]
- adds r2, 0x3
- adds r0, r6, r2
- movs r2, 0x1
- mov r8, r2
- mov r2, r8
- strb r2, [r0]
- ldr r0, _08108E2C @ =gUnknown_02024C68
- strb r1, [r0]
- ldr r0, _08108E30 @ =gCritMultiplier
- strb r2, [r0]
- ldr r5, _08108E34 @ =gUnknown_02024BE6
- ldrh r0, [r6, 0x2]
- strh r0, [r5]
- ldr r4, _08108E38 @ =gUnknown_02024C07
- ldrb r0, [r4]
- ldr r7, _08108E3C @ =gUnknown_02024C08
- ldrb r1, [r7]
- bl sub_801CAF8
- ldrh r0, [r5]
- ldrb r1, [r4]
- ldrb r2, [r7]
- bl move_effectiveness_something
- ldr r4, _08108E40 @ =gUnknown_02024BEC
- adds r0, r6, 0
- adds r0, 0x18
- ldrb r6, [r6, 0x1]
- adds r0, r6
- ldrb r1, [r0]
- ldr r0, [r4]
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _08108DEE
- mov r0, r8
- str r0, [r4]
-_08108DEE:
- ldr r2, _08108E44 @ =gBattleMons
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x28]
- ldr r0, [r4]
- cmp r1, r0
- bgt _08108E4C
- ldr r3, _08108E48 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08108E54
- .align 2, 0
-_08108E1C: .4byte gBattleMoves
-_08108E20: .4byte 0x02016800
-_08108E24: .4byte gUnknown_02024DEC
-_08108E28: .4byte 0xfffff81c
-_08108E2C: .4byte gUnknown_02024C68
-_08108E30: .4byte gCritMultiplier
-_08108E34: .4byte gUnknown_02024BE6
-_08108E38: .4byte gUnknown_02024C07
-_08108E3C: .4byte gUnknown_02024C08
-_08108E40: .4byte gUnknown_02024BEC
-_08108E44: .4byte gBattleMons
-_08108E48: .4byte gAIScriptPtr
-_08108E4C:
- ldr r1, _08108E60 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08108E54:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108E60: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_can_faint
-
- thumb_func_start BattleAICmd_if_cant_faint
-BattleAICmd_if_cant_faint: @ 8108E64
- push {r4-r7,lr}
- ldr r2, _08108EF8 @ =gBattleMoves
- ldr r7, _08108EFC @ =0x02016800
- ldrh r1, [r7, 0x2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- bls _08108F28
- ldr r0, _08108F00 @ =gUnknown_02024DEC
- movs r1, 0
- strh r1, [r0]
- ldr r2, _08108F04 @ =0xfffff81c
- adds r0, r7, r2
- strb r1, [r0]
- adds r2, 0x3
- adds r0, r7, r2
- movs r2, 0x1
- strb r2, [r0]
- ldr r0, _08108F08 @ =gUnknown_02024C68
- strb r1, [r0]
- ldr r0, _08108F0C @ =gCritMultiplier
- strb r2, [r0]
- ldr r6, _08108F10 @ =gUnknown_02024BE6
- ldrh r0, [r7, 0x2]
- strh r0, [r6]
- ldr r4, _08108F14 @ =gUnknown_02024C07
- ldrb r0, [r4]
- ldr r5, _08108F18 @ =gUnknown_02024C08
- ldrb r1, [r5]
- bl sub_801CAF8
- ldrh r0, [r6]
- ldrb r1, [r4]
- ldrb r2, [r5]
- bl move_effectiveness_something
- ldr r4, _08108F1C @ =gUnknown_02024BEC
- adds r0, r7, 0
- adds r0, 0x18
- ldrb r7, [r7, 0x1]
- adds r0, r7
- ldrb r1, [r0]
- ldr r0, [r4]
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- ldr r3, _08108F20 @ =gBattleMons
- ldrb r2, [r5]
- movs r1, 0x58
- muls r1, r2
- adds r1, r3
- ldrh r1, [r1, 0x28]
- cmp r1, r0
- ble _08108F28
- ldr r3, _08108F24 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08108F30
- .align 2, 0
-_08108EF8: .4byte gBattleMoves
-_08108EFC: .4byte 0x02016800
-_08108F00: .4byte gUnknown_02024DEC
-_08108F04: .4byte 0xfffff81c
-_08108F08: .4byte gUnknown_02024C68
-_08108F0C: .4byte gCritMultiplier
-_08108F10: .4byte gUnknown_02024BE6
-_08108F14: .4byte gUnknown_02024C07
-_08108F18: .4byte gUnknown_02024C08
-_08108F1C: .4byte gUnknown_02024BEC
-_08108F20: .4byte gBattleMons
-_08108F24: .4byte gAIScriptPtr
-_08108F28:
- ldr r1, _08108F38 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08108F30:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108F38: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_cant_faint
-
- thumb_func_start BattleAICmd_unk_3F
-BattleAICmd_unk_3F: @ 8108F3C
- push {r4-r7,lr}
- ldr r1, _08108F58 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r6, r0, 0x2
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x1
- beq _08108F64
- cmp r0, 0x1
- bgt _08108F5C
- cmp r0, 0
- beq _08108FA8
- b _08109008
- .align 2, 0
-_08108F58: .4byte gAIScriptPtr
-_08108F5C:
- cmp r0, 0x2
- beq _08108FA8
- cmp r0, 0x3
- bne _08109008
-_08108F64:
- movs r3, 0
- ldr r2, _08108FA0 @ =gBattleMons
- ldr r5, _08108FA4 @ =gUnknown_02024C07
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r2, 0xC
- adds r0, r2
- ldrh r0, [r0]
- ldrh r1, [r6]
- cmp r0, r1
- beq _08108F9A
- adds r7, r5, 0
- movs r6, 0x58
- adds r5, r2, 0
- adds r2, r1, 0
-_08108F84:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _08108F9A
- lsls r1, r3, 1
- ldrb r0, [r7]
- muls r0, r6
- adds r1, r0
- adds r1, r5
- ldrh r0, [r1]
- cmp r0, r2
- bne _08108F84
-_08108F9A:
- cmp r3, 0x4
- beq _08108FDE
- b _08108FF0
- .align 2, 0
-_08108FA0: .4byte gBattleMons
-_08108FA4: .4byte gUnknown_02024C07
-_08108FA8:
- movs r3, 0
- ldr r5, _08108FE8 @ =0x02016a00
- ldr r1, _08108FEC @ =gUnknown_02024C08
- ldrb r0, [r1]
- lsrs r0, 1
- lsls r0, 4
- adds r0, r5
- ldrh r0, [r0]
- ldrh r2, [r6]
- cmp r0, r2
- beq _08108FDA
- adds r6, r5, 0
- adds r5, r1, 0
-_08108FC2:
- adds r3, 0x1
- cmp r3, 0x7
- bgt _08108FDA
- lsls r0, r3, 1
- ldrb r1, [r5]
- lsrs r1, 1
- lsls r1, 4
- adds r0, r1
- adds r0, r6
- ldrh r0, [r0]
- cmp r0, r2
- bne _08108FC2
-_08108FDA:
- cmp r3, 0x8
- bne _08108FF0
-_08108FDE:
- ldr r0, [r4]
- adds r0, 0x8
- str r0, [r4]
- b _08109008
- .align 2, 0
-_08108FE8: .4byte 0x02016a00
-_08108FEC: .4byte gUnknown_02024C08
-_08108FF0:
- ldr r2, [r4]
- ldrb r1, [r2, 0x4]
- ldrb r0, [r2, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
-_08109008:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_unk_3F
-
- thumb_func_start BattleAICmd_unk_40
-BattleAICmd_unk_40: @ 8109010
- push {r4-r7,lr}
- ldr r1, _0810902C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r6, r0, 0x2
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x1
- beq _08109038
- cmp r0, 0x1
- bgt _08109030
- cmp r0, 0
- beq _0810907C
- b _081090DC
- .align 2, 0
-_0810902C: .4byte gAIScriptPtr
-_08109030:
- cmp r0, 0x2
- beq _0810907C
- cmp r0, 0x3
- bne _081090DC
-_08109038:
- movs r3, 0
- ldr r2, _08109074 @ =gBattleMons
- ldr r5, _08109078 @ =gUnknown_02024C07
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r2, 0xC
- adds r0, r2
- ldrh r0, [r0]
- ldrh r1, [r6]
- cmp r0, r1
- beq _0810906E
- adds r7, r5, 0
- movs r6, 0x58
- adds r5, r2, 0
- adds r2, r1, 0
-_08109058:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _0810906E
- lsls r1, r3, 1
- ldrb r0, [r7]
- muls r0, r6
- adds r1, r0
- adds r1, r5
- ldrh r0, [r1]
- cmp r0, r2
- bne _08109058
-_0810906E:
- cmp r3, 0x4
- bne _081090B2
- b _081090C4
- .align 2, 0
-_08109074: .4byte gBattleMons
-_08109078: .4byte gUnknown_02024C07
-_0810907C:
- movs r3, 0
- ldr r5, _081090BC @ =0x02016a00
- ldr r1, _081090C0 @ =gUnknown_02024C08
- ldrb r0, [r1]
- lsrs r0, 1
- lsls r0, 4
- adds r0, r5
- ldrh r0, [r0]
- ldrh r2, [r6]
- cmp r0, r2
- beq _081090AE
- adds r6, r5, 0
- adds r5, r1, 0
-_08109096:
- adds r3, 0x1
- cmp r3, 0x7
- bgt _081090AE
- lsls r0, r3, 1
- ldrb r1, [r5]
- lsrs r1, 1
- lsls r1, 4
- adds r0, r1
- adds r0, r6
- ldrh r0, [r0]
- cmp r0, r2
- bne _08109096
-_081090AE:
- cmp r3, 0x8
- beq _081090C4
-_081090B2:
- ldr r0, [r4]
- adds r0, 0x8
- str r0, [r4]
- b _081090DC
- .align 2, 0
-_081090BC: .4byte 0x02016a00
-_081090C0: .4byte gUnknown_02024C08
-_081090C4:
- ldr r2, [r4]
- ldrb r1, [r2, 0x4]
- ldrb r0, [r2, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
-_081090DC:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_unk_40
-
- thumb_func_start BattleAICmd_if_move_effect
-BattleAICmd_if_move_effect: @ 81090E4
- push {r4-r7,lr}
- ldr r1, _081090FC @ =gAIScriptPtr
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x1
- beq _08109108
- cmp r0, 0x1
- bgt _08109100
- cmp r0, 0
- beq _0810915C
- b _081091B8
- .align 2, 0
-_081090FC: .4byte gAIScriptPtr
-_08109100:
- cmp r0, 0x2
- beq _0810915C
- cmp r0, 0x3
- bne _081091B8
-_08109108:
- movs r3, 0
- ldr r1, _0810914C @ =gBattleMons
- ldr r0, _08109150 @ =gUnknown_02024C07
- ldrb r2, [r0]
- ldr r6, _08109154 @ =gBattleMoves
- movs r0, 0x58
- muls r0, r2
- adds r1, 0xC
- adds r2, r0, r1
- ldr r5, _08109158 @ =gAIScriptPtr
-_0810911C:
- ldrh r0, [r2]
- cmp r0, 0
- beq _08109136
- adds r1, r0, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r1, [r5]
- ldrb r0, [r0]
- ldrb r1, [r1, 0x2]
- cmp r0, r1
- beq _0810913E
-_08109136:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _0810911C
-_0810913E:
- cmp r3, 0x4
- bne _081091A0
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- b _081091B8
- .align 2, 0
-_0810914C: .4byte gBattleMons
-_08109150: .4byte gUnknown_02024C07
-_08109154: .4byte gBattleMoves
-_08109158: .4byte gAIScriptPtr
-_0810915C:
- movs r3, 0
- ldr r1, _081091C0 @ =gBattleMons
- ldr r0, _081091C4 @ =gUnknown_02024C07
- ldrb r2, [r0]
- ldr r7, _081091C8 @ =gBattleMoves
- ldr r6, _081091CC @ =0x02016a00
- ldr r5, _081091D0 @ =gUnknown_02024C08
- movs r0, 0x58
- muls r0, r2
- adds r1, 0xC
- adds r2, r0, r1
-_08109172:
- lsls r1, r3, 1
- ldrh r0, [r2]
- cmp r0, 0
- beq _08109198
- ldrb r0, [r5]
- lsrs r0, 1
- lsls r0, 4
- adds r0, r1, r0
- adds r0, r6
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldr r1, [r4]
- ldrb r0, [r0]
- ldrb r1, [r1, 0x2]
- cmp r0, r1
- beq _081091A0
-_08109198:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _08109172
-_081091A0:
- ldr r2, [r4]
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
-_081091B8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081091C0: .4byte gBattleMons
-_081091C4: .4byte gUnknown_02024C07
-_081091C8: .4byte gBattleMoves
-_081091CC: .4byte 0x02016a00
-_081091D0: .4byte gUnknown_02024C08
- thumb_func_end BattleAICmd_if_move_effect
-
- thumb_func_start BattleAICmd_if_not_move_effect
-BattleAICmd_if_not_move_effect: @ 81091D4
- push {r4-r6,lr}
- ldr r1, _081091EC @ =gAIScriptPtr
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x1
- beq _081091F8
- cmp r0, 0x1
- bgt _081091F0
- cmp r0, 0
- beq _0810925C
- b _08109294
- .align 2, 0
-_081091EC: .4byte gAIScriptPtr
-_081091F0:
- cmp r0, 0x2
- beq _0810925C
- cmp r0, 0x3
- bne _08109294
-_081091F8:
- movs r3, 0
- ldr r1, _0810924C @ =gBattleMons
- ldr r0, _08109250 @ =gUnknown_02024C07
- ldrb r2, [r0]
- ldr r6, _08109254 @ =gBattleMoves
- movs r0, 0x58
- muls r0, r2
- adds r1, 0xC
- adds r2, r0, r1
- ldr r5, _08109258 @ =gAIScriptPtr
-_0810920C:
- ldrh r0, [r2]
- cmp r0, 0
- beq _08109226
- adds r1, r0, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r1, [r5]
- ldrb r0, [r0]
- ldrb r1, [r1, 0x2]
- cmp r0, r1
- beq _0810922E
-_08109226:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _0810920C
-_0810922E:
- cmp r3, 0x4
- bne _0810928E
- ldr r2, [r4]
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08109294
- .align 2, 0
-_0810924C: .4byte gBattleMons
-_08109250: .4byte gUnknown_02024C07
-_08109254: .4byte gBattleMoves
-_08109258: .4byte gAIScriptPtr
-_0810925C:
- movs r3, 0
- ldr r1, _0810929C @ =0x02016a00
- ldr r0, _081092A0 @ =gUnknown_02024C08
- ldrb r0, [r0]
- lsrs r0, 1
- lsls r0, 4
- adds r2, r0, r1
- ldr r5, _081092A4 @ =gBattleMoves
-_0810926C:
- ldrh r0, [r2]
- cmp r0, 0
- beq _08109286
- adds r1, r0, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r4]
- ldrb r0, [r0]
- ldrb r1, [r1, 0x2]
- cmp r0, r1
- beq _0810928E
-_08109286:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _0810926C
-_0810928E:
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
-_08109294:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810929C: .4byte 0x02016a00
-_081092A0: .4byte gUnknown_02024C08
-_081092A4: .4byte gBattleMoves
- thumb_func_end BattleAICmd_if_not_move_effect
-
- thumb_func_start BattleAICmd_if_last_move_did_damage
-BattleAICmd_if_last_move_did_damage: @ 81092A8
- push {r4,r5,lr}
- ldr r0, _081092BC @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r5, r0, 0
- cmp r1, 0x1
- bne _081092C4
- ldr r0, _081092C0 @ =gUnknown_02024C07
- b _081092C6
- .align 2, 0
-_081092BC: .4byte gAIScriptPtr
-_081092C0: .4byte gUnknown_02024C07
-_081092C4:
- ldr r0, _081092E4 @ =gUnknown_02024C08
-_081092C6:
- ldrb r3, [r0]
- adds r4, r5, 0
- ldr r2, [r4]
- ldrb r0, [r2, 0x2]
- cmp r0, 0
- bne _081092EC
- ldr r0, _081092E8 @ =gUnknown_02024CA8
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- beq _081092F0
- b _08109306
- .align 2, 0
-_081092E4: .4byte gUnknown_02024C08
-_081092E8: .4byte gUnknown_02024CA8
-_081092EC:
- cmp r0, 0x1
- beq _081092F6
-_081092F0:
- adds r0, r2, 0x7
- str r0, [r4]
- b _08109328
-_081092F6:
- ldr r0, _08109320 @ =gUnknown_02024CA8
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x6]
- cmp r0, 0
- beq _08109324
-_08109306:
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08109328
- .align 2, 0
-_08109320: .4byte gUnknown_02024CA8
-_08109324:
- adds r0, r2, 0x7
- str r0, [r5]
-_08109328:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_last_move_did_damage
-
- thumb_func_start BattleAICmd_if_encored
-BattleAICmd_if_encored: @ 8109330
- push {r4,lr}
- ldr r4, _08109344 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- cmp r0, 0
- beq _08109348
- cmp r0, 0x1
- beq _08109370
- b _081093AC
- .align 2, 0
-_08109344: .4byte gAIScriptPtr
-_08109348:
- ldr r2, _08109364 @ =gUnknown_02024CA8
- ldr r0, _08109368 @ =gUnknown_02024A60
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0810936C @ =0x02016800
- ldrh r0, [r0, 0x4]
- ldrh r1, [r1, 0x2]
- cmp r0, r1
- beq _08109388
- b _081093AC
- .align 2, 0
-_08109364: .4byte gUnknown_02024CA8
-_08109368: .4byte gUnknown_02024A60
-_0810936C: .4byte 0x02016800
-_08109370:
- ldr r2, _081093A0 @ =gUnknown_02024CA8
- ldr r0, _081093A4 @ =gUnknown_02024A60
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _081093A8 @ =0x02016800
- ldrh r0, [r0, 0x6]
- ldrh r1, [r1, 0x2]
- cmp r0, r1
- bne _081093AC
-_08109388:
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _081093B0
- .align 2, 0
-_081093A0: .4byte gUnknown_02024CA8
-_081093A4: .4byte gUnknown_02024A60
-_081093A8: .4byte 0x02016800
-_081093AC:
- adds r0, r3, 0x6
- str r0, [r4]
-_081093B0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_encored
-
- thumb_func_start BattleAICmd_unk_45
-BattleAICmd_unk_45: @ 81093B8
- ldr r2, _081093C4 @ =0x02016800
- ldrb r1, [r2, 0x10]
- movs r0, 0xB
- orrs r0, r1
- strb r0, [r2, 0x10]
- bx lr
- .align 2, 0
-_081093C4: .4byte 0x02016800
- thumb_func_end BattleAICmd_unk_45
-
- thumb_func_start BattleAICmd_if_random_2
-BattleAICmd_if_random_2: @ 81093C8
- push {r4,lr}
- ldr r0, _0810940C @ =0x02000000
- ldr r1, _08109410 @ =0x00016088
- adds r0, r1
- ldrb r0, [r0]
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcs _08109418
- ldr r3, _08109414 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08109420
- .align 2, 0
-_0810940C: .4byte 0x02000000
-_08109410: .4byte 0x00016088
-_08109414: .4byte gAIScriptPtr
-_08109418:
- ldr r1, _08109428 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08109420:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109428: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_random_2
-
- thumb_func_start BattleAICmd_unk_47
-BattleAICmd_unk_47: @ 810942C
- ldr r2, _08109438 @ =0x02016800
- ldrb r1, [r2, 0x10]
- movs r0, 0xD
- orrs r0, r1
- strb r0, [r2, 0x10]
- bx lr
- .align 2, 0
-_08109438: .4byte 0x02016800
- thumb_func_end BattleAICmd_unk_47
-
- thumb_func_start BattleAICmd_get_hold_effect
-BattleAICmd_get_hold_effect: @ 810943C
- push {r4,lr}
- ldr r0, _0810944C @ =gAIScriptPtr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- bne _08109454
- ldr r0, _08109450 @ =gUnknown_02024C07
- b _08109456
- .align 2, 0
-_0810944C: .4byte gAIScriptPtr
-_08109450: .4byte gUnknown_02024C07
-_08109454:
- ldr r0, _0810947C @ =gUnknown_02024C08
-_08109456:
- ldrb r4, [r0]
- adds r0, r4, 0
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _08109488
- adds r0, r4, 0
- bl battle_get_per_side_status
- movs r1, 0x1
- ands r1, r0
- ldr r2, _08109480 @ =0x02016800
- ldr r3, _08109484 @ =0x00000222
- adds r0, r2, r3
- adds r1, r0
- ldrb r0, [r1]
- str r0, [r2, 0x8]
- b _0810949E
- .align 2, 0
-_0810947C: .4byte gUnknown_02024C08
-_08109480: .4byte 0x02016800
-_08109484: .4byte 0x00000222
-_08109488:
- ldr r1, _081094AC @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffect
- ldr r1, _081094B0 @ =0x02016800
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1, 0x8]
-_0810949E:
- ldr r1, _081094B4 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081094AC: .4byte gBattleMons
-_081094B0: .4byte 0x02016800
-_081094B4: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_get_hold_effect
-
- thumb_func_start BattleAICmd_get_gender
-BattleAICmd_get_gender: @ 81094B8
- push {lr}
- ldr r0, _081094C8 @ =gAIScriptPtr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- bne _081094D0
- ldr r0, _081094CC @ =gUnknown_02024C07
- b _081094D2
- .align 2, 0
-_081094C8: .4byte gAIScriptPtr
-_081094CC: .4byte gUnknown_02024C07
-_081094D0:
- ldr r0, _081094FC @ =gUnknown_02024C08
-_081094D2:
- ldrb r1, [r0]
- ldr r2, _08109500 @ =gBattleMons
- movs r0, 0x58
- muls r1, r0
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r2, 0x48
- adds r1, r2
- ldr r1, [r1]
- bl GetGenderFromSpeciesAndPersonality
- ldr r1, _08109504 @ =0x02016800
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1, 0x8]
- ldr r1, _08109508 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_081094FC: .4byte gUnknown_02024C08
-_08109500: .4byte gBattleMons
-_08109504: .4byte 0x02016800
-_08109508: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_get_gender
-
- thumb_func_start BattleAICmd_is_first_turn
-BattleAICmd_is_first_turn: @ 810950C
- push {r4,lr}
- ldr r0, _08109520 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08109528
- ldr r0, _08109524 @ =gUnknown_02024C07
- b _0810952A
- .align 2, 0
-_08109520: .4byte gAIScriptPtr
-_08109524: .4byte gUnknown_02024C07
-_08109528:
- ldr r0, _08109548 @ =gUnknown_02024C08
-_0810952A:
- ldrb r3, [r0]
- ldr r2, _0810954C @ =0x02016800
- ldr r1, _08109550 @ =gUnknown_02024CA8
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x16]
- str r0, [r2, 0x8]
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109548: .4byte gUnknown_02024C08
-_0810954C: .4byte 0x02016800
-_08109550: .4byte gUnknown_02024CA8
- thumb_func_end BattleAICmd_is_first_turn
-
- thumb_func_start BattleAICmd_get_stockpile_count
-BattleAICmd_get_stockpile_count: @ 8109554
- push {r4,lr}
- ldr r0, _08109568 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08109570
- ldr r0, _0810956C @ =gUnknown_02024C07
- b _08109572
- .align 2, 0
-_08109568: .4byte gAIScriptPtr
-_0810956C: .4byte gUnknown_02024C07
-_08109570:
- ldr r0, _08109590 @ =gUnknown_02024C08
-_08109572:
- ldrb r3, [r0]
- ldr r2, _08109594 @ =0x02016800
- ldr r1, _08109598 @ =gUnknown_02024CA8
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x9]
- str r0, [r2, 0x8]
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109590: .4byte gUnknown_02024C08
-_08109594: .4byte 0x02016800
-_08109598: .4byte gUnknown_02024CA8
- thumb_func_end BattleAICmd_get_stockpile_count
-
- thumb_func_start BattleAICmd_unk_4C
-BattleAICmd_unk_4C: @ 810959C
- ldr r2, _081095B4 @ =0x02016800
- ldr r0, _081095B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- str r0, [r2, 0x8]
- ldr r1, _081095BC @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_081095B4: .4byte 0x02016800
-_081095B8: .4byte gBattleTypeFlags
-_081095BC: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_unk_4C
-
- thumb_func_start BattleAICmd_get_item
-BattleAICmd_get_item: @ 81095C0
- push {lr}
- ldr r0, _081095D4 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r2, r0, 0
- cmp r1, 0x1
- bne _081095DC
- ldr r0, _081095D8 @ =gUnknown_02024C07
- b _081095DE
- .align 2, 0
-_081095D4: .4byte gAIScriptPtr
-_081095D8: .4byte gUnknown_02024C07
-_081095DC:
- ldr r0, _081095F8 @ =gUnknown_02024C08
-_081095DE:
- ldrb r0, [r0]
- ldr r1, _081095FC @ =0x02016800
- lsls r0, 1
- adds r0, r1
- ldr r3, _08109600 @ =0xfffff8cc
- adds r0, r3
- ldrb r0, [r0]
- str r0, [r1, 0x8]
- ldr r0, [r2]
- adds r0, 0x2
- str r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_081095F8: .4byte gUnknown_02024C08
-_081095FC: .4byte 0x02016800
-_08109600: .4byte 0xfffff8cc
- thumb_func_end BattleAICmd_get_item
-
- thumb_func_start BattleAICmd_unk_4E
-BattleAICmd_unk_4E: @ 8109604
- ldr r3, _08109620 @ =0x02016800
- ldr r2, _08109624 @ =gBattleMoves
- ldr r1, [r3, 0x8]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- str r0, [r3, 0x8]
- ldr r1, _08109628 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08109620: .4byte 0x02016800
-_08109624: .4byte gBattleMoves
-_08109628: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_unk_4E
-
- thumb_func_start BattleAICmd_unk_4F
-BattleAICmd_unk_4F: @ 810962C
- ldr r3, _08109648 @ =0x02016800
- ldr r2, _0810964C @ =gBattleMoves
- ldr r1, [r3, 0x8]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- str r0, [r3, 0x8]
- ldr r1, _08109650 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08109648: .4byte 0x02016800
-_0810964C: .4byte gBattleMoves
-_08109650: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_unk_4F
-
- thumb_func_start BattleAICmd_unk_50
-BattleAICmd_unk_50: @ 8109654
- ldr r3, _08109670 @ =0x02016800
- ldr r2, _08109674 @ =gBattleMoves
- ldr r1, [r3, 0x8]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- str r0, [r3, 0x8]
- ldr r1, _08109678 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08109670: .4byte 0x02016800
-_08109674: .4byte gBattleMoves
-_08109678: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_unk_50
-
- thumb_func_start BattleAICmd_get_protect_count
-BattleAICmd_get_protect_count: @ 810967C
- push {r4,lr}
- ldr r0, _08109690 @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0x1
- bne _08109698
- ldr r0, _08109694 @ =gUnknown_02024C07
- b _0810969A
- .align 2, 0
-_08109690: .4byte gAIScriptPtr
-_08109694: .4byte gUnknown_02024C07
-_08109698:
- ldr r0, _081096B8 @ =gUnknown_02024C08
-_0810969A:
- ldrb r3, [r0]
- ldr r2, _081096BC @ =0x02016800
- ldr r1, _081096C0 @ =gUnknown_02024CA8
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- str r0, [r2, 0x8]
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081096B8: .4byte gUnknown_02024C08
-_081096BC: .4byte 0x02016800
-_081096C0: .4byte gUnknown_02024CA8
- thumb_func_end BattleAICmd_get_protect_count
-
- thumb_func_start BattleAICmd_unk_52
-BattleAICmd_unk_52: @ 81096C4
- bx lr
- thumb_func_end BattleAICmd_unk_52
-
- thumb_func_start BattleAICmd_unk_53
-BattleAICmd_unk_53: @ 81096C8
- bx lr
- thumb_func_end BattleAICmd_unk_53
-
- thumb_func_start BattleAICmd_unk_54
-BattleAICmd_unk_54: @ 81096CC
- bx lr
- thumb_func_end BattleAICmd_unk_54
-
- thumb_func_start BattleAICmd_unk_55
-BattleAICmd_unk_55: @ 81096D0
- bx lr
- thumb_func_end BattleAICmd_unk_55
-
- thumb_func_start BattleAICmd_unk_56
-BattleAICmd_unk_56: @ 81096D4
- bx lr
- thumb_func_end BattleAICmd_unk_56
-
- thumb_func_start BattleAICmd_unk_57
-BattleAICmd_unk_57: @ 81096D8
- bx lr
- thumb_func_end BattleAICmd_unk_57
-
- thumb_func_start BattleAICmd_call
-BattleAICmd_call: @ 81096DC
- push {r4,lr}
- ldr r4, _08109708 @ =gAIScriptPtr
- ldr r0, [r4]
- adds r0, 0x5
- bl sub_81098C4
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109708: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_call
-
- thumb_func_start BattleAICmd_jump
-BattleAICmd_jump: @ 810970C
- ldr r3, _08109728 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- bx lr
- .align 2, 0
-_08109728: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_jump
-
- thumb_func_start BattleAICmd_unk_5A
-BattleAICmd_unk_5A: @ 810972C
- push {lr}
- bl sub_8109908
- lsls r0, 24
- cmp r0, 0
- bne _08109742
- ldr r2, _08109748 @ =0x02016800
- ldrb r1, [r2, 0x10]
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2, 0x10]
-_08109742:
- pop {r0}
- bx r0
- .align 2, 0
-_08109748: .4byte 0x02016800
- thumb_func_end BattleAICmd_unk_5A
-
- thumb_func_start BattleAICmd_if_level_cond
-BattleAICmd_if_level_cond: @ 810974C
- push {r4,r5,lr}
- ldr r5, _08109764 @ =gAIScriptPtr
- ldr r4, [r5]
- ldrb r0, [r4, 0x1]
- cmp r0, 0x1
- beq _081097A0
- cmp r0, 0x1
- bgt _08109768
- cmp r0, 0
- beq _0810976E
- b _0810981C
- .align 2, 0
-_08109764: .4byte gAIScriptPtr
-_08109768:
- cmp r0, 0x2
- beq _081097D0
- b _0810981C
-_0810976E:
- ldr r3, _08109794 @ =gBattleMons
- ldr r0, _08109798 @ =gUnknown_02024C07
- ldrb r0, [r0]
- movs r2, 0x58
- adds r1, r0, 0
- muls r1, r2
- adds r1, r3
- adds r1, 0x2A
- ldr r0, _0810979C @ =gUnknown_02024C08
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bhi _081097F2
- b _08109818
- .align 2, 0
-_08109794: .4byte gBattleMons
-_08109798: .4byte gUnknown_02024C07
-_0810979C: .4byte gUnknown_02024C08
-_081097A0:
- ldr r3, _081097C4 @ =gBattleMons
- ldr r0, _081097C8 @ =gUnknown_02024C07
- ldrb r0, [r0]
- movs r2, 0x58
- adds r1, r0, 0
- muls r1, r2
- adds r1, r3
- adds r1, 0x2A
- ldr r0, _081097CC @ =gUnknown_02024C08
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _081097F2
- b _08109818
- .align 2, 0
-_081097C4: .4byte gBattleMons
-_081097C8: .4byte gUnknown_02024C07
-_081097CC: .4byte gUnknown_02024C08
-_081097D0:
- ldr r3, _0810980C @ =gBattleMons
- ldr r0, _08109810 @ =gUnknown_02024C07
- ldrb r0, [r0]
- movs r2, 0x58
- adds r1, r0, 0
- muls r1, r2
- adds r1, r3
- adds r1, 0x2A
- ldr r0, _08109814 @ =gUnknown_02024C08
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08109818
-_081097F2:
- ldrb r1, [r4, 0x2]
- ldrb r0, [r4, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r5]
- b _0810981C
- .align 2, 0
-_0810980C: .4byte gBattleMons
-_08109810: .4byte gUnknown_02024C07
-_08109814: .4byte gUnknown_02024C08
-_08109818:
- adds r0, r4, 0x6
- str r0, [r5]
-_0810981C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end BattleAICmd_if_level_cond
-
- thumb_func_start BattleAICmd_if_taunted
-BattleAICmd_if_taunted: @ 8109824
- push {lr}
- ldr r2, _08109858 @ =gUnknown_02024CA8
- ldr r0, _0810985C @ =gUnknown_02024C08
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x13]
- lsls r0, 28
- cmp r0, 0
- beq _08109864
- ldr r3, _08109860 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0810986C
- .align 2, 0
-_08109858: .4byte gUnknown_02024CA8
-_0810985C: .4byte gUnknown_02024C08
-_08109860: .4byte gAIScriptPtr
-_08109864:
- ldr r1, _08109870 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0810986C:
- pop {r0}
- bx r0
- .align 2, 0
-_08109870: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_taunted
-
- thumb_func_start BattleAICmd_if_not_taunted
-BattleAICmd_if_not_taunted: @ 8109874
- push {lr}
- ldr r2, _081098A8 @ =gUnknown_02024CA8
- ldr r0, _081098AC @ =gUnknown_02024C08
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x13]
- lsls r0, 28
- cmp r0, 0
- bne _081098B4
- ldr r3, _081098B0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081098BC
- .align 2, 0
-_081098A8: .4byte gUnknown_02024CA8
-_081098AC: .4byte gUnknown_02024C08
-_081098B0: .4byte gAIScriptPtr
-_081098B4:
- ldr r1, _081098C0 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_081098BC:
- pop {r0}
- bx r0
- .align 2, 0
-_081098C0: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_not_taunted
-
- thumb_func_start sub_81098C4
-sub_81098C4: @ 81098C4
- push {r4,lr}
- ldr r4, _081098E0 @ =0x02016c00
- adds r3, r4, 0
- adds r3, 0x20
- ldrb r1, [r3]
- adds r2, r1, 0x1
- strb r2, [r3]
- lsls r1, 24
- lsrs r1, 22
- adds r1, r4
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081098E0: .4byte 0x02016c00
- thumb_func_end sub_81098C4
-
- thumb_func_start unref_sub_81098E4
-unref_sub_81098E4: @ 81098E4
- ldr r3, _08109900 @ =0x02016c00
- adds r2, r3, 0
- adds r2, 0x20
- ldrb r0, [r2]
- adds r1, r0, 0x1
- strb r1, [r2]
- lsls r0, 24
- lsrs r0, 22
- adds r0, r3
- ldr r1, _08109904 @ =gAIScriptPtr
- ldr r1, [r1]
- str r1, [r0]
- bx lr
- .align 2, 0
-_08109900: .4byte 0x02016c00
-_08109904: .4byte gAIScriptPtr
- thumb_func_end unref_sub_81098E4
-
- thumb_func_start sub_8109908
-sub_8109908: @ 8109908
- push {lr}
- ldr r3, _0810991C @ =0x02016c00
- adds r2, r3, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0
- bne _08109920
- movs r0, 0
- b _08109932
- .align 2, 0
-_0810991C: .4byte 0x02016c00
-_08109920:
- subs r0, 0x1
- strb r0, [r2]
- ldr r1, _08109938 @ =gAIScriptPtr
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r1]
- movs r0, 0x1
-_08109932:
- pop {r1}
- bx r1
- .align 2, 0
-_08109938: .4byte gAIScriptPtr
- thumb_func_end sub_8109908
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
deleted file mode 100644
index a64d0414a..000000000
--- a/asm/battle_anim.s
+++ /dev/null
@@ -1,4729 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8075624
-sub_8075624: @ 8075624
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _080756B8 @ =gUnknown_0202F7B0
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080756BC @ =gUnknown_0202F7B1
- strb r1, [r0]
- ldr r0, _080756C0 @ =gUnknown_0202F7B2
- strb r1, [r0]
- ldr r0, _080756C4 @ =gUnknown_0202F7B3
- strb r1, [r0]
- ldr r0, _080756C8 @ =gUnknown_0202F7B4
- movs r1, 0
- str r1, [r0]
- ldr r0, _080756CC @ =gUnknown_0202F7B8
- str r1, [r0]
- ldr r0, _080756D0 @ =gUnknown_0202F7BC
- movs r2, 0
- strh r1, [r0]
- ldr r0, _080756D4 @ =gUnknown_0202F7BE
- strb r2, [r0]
- ldr r4, _080756D8 @ =gUnknown_0202F7C2
- ldr r5, _080756DC @ =gUnknown_0202F7C4
- ldr r6, _080756E0 @ =gUnknown_0202F7C5
- ldr r7, _080756E4 @ =gUnknown_0202F7C6
- ldr r0, _080756E8 @ =gUnknown_0202F7C8
- mov r12, r0
- ldr r1, _080756EC @ =gUnknown_0202F7C9
- mov r8, r1
- ldr r0, _080756F0 @ =gUnknown_0202F7D2
- mov r9, r0
- ldr r1, _080756F4 @ =0x0000ffff
- adds r3, r1, 0
- ldr r1, _080756F8 @ =gUnknown_03004B10
- movs r2, 0x7
-_0807566E:
- ldrh r0, [r1]
- orrs r0, r3
- strh r0, [r1]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0807566E
- ldr r1, _080756FC @ =gBattleAnimArgs
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xE
-_08075684:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _08075684
- movs r1, 0
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r4, 0x1]
- strb r1, [r5]
- strb r1, [r6]
- movs r0, 0
- strh r1, [r7]
- mov r1, r12
- strb r0, [r1]
- mov r1, r8
- strb r0, [r1]
- mov r1, r9
- strb r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080756B8: .4byte gUnknown_0202F7B0
-_080756BC: .4byte gUnknown_0202F7B1
-_080756C0: .4byte gUnknown_0202F7B2
-_080756C4: .4byte gUnknown_0202F7B3
-_080756C8: .4byte gUnknown_0202F7B4
-_080756CC: .4byte gUnknown_0202F7B8
-_080756D0: .4byte gUnknown_0202F7BC
-_080756D4: .4byte gUnknown_0202F7BE
-_080756D8: .4byte gUnknown_0202F7C2
-_080756DC: .4byte gUnknown_0202F7C4
-_080756E0: .4byte gUnknown_0202F7C5
-_080756E4: .4byte gUnknown_0202F7C6
-_080756E8: .4byte gUnknown_0202F7C8
-_080756EC: .4byte gUnknown_0202F7C9
-_080756F0: .4byte gUnknown_0202F7D2
-_080756F4: .4byte 0x0000ffff
-_080756F8: .4byte gUnknown_03004B10
-_080756FC: .4byte gBattleAnimArgs
- thumb_func_end sub_8075624
-
- thumb_func_start move_anim_start_t1
-move_anim_start_t1: @ 8075700
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _08075724 @ =gUnknown_0202F7C8
- ldr r0, _08075728 @ =gUnknown_02024C07
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r2, _0807572C @ =gUnknown_0202F7C9
- ldr r0, _08075730 @ =gUnknown_02024C08
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, _08075734 @ =gBattleAnims_Moves
- movs r2, 0x1
- bl move_something
- pop {r0}
- bx r0
- .align 2, 0
-_08075724: .4byte gUnknown_0202F7C8
-_08075728: .4byte gUnknown_02024C07
-_0807572C: .4byte gUnknown_0202F7C9
-_08075730: .4byte gUnknown_02024C08
-_08075734: .4byte gBattleAnims_Moves
- thumb_func_end move_anim_start_t1
-
- thumb_func_start move_something
-move_something: @ 8075738
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _080757D8
- bl sub_8079E24
- movs r0, 0
- bl sub_8043EB4
- movs r4, 0
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- ldr r6, _0807578C @ =gUnknown_02024A6A
- movs r7, 0x64
- ldr r5, _08075790 @ =gUnknown_0202F7CA
-_08075774:
- lsls r0, r4, 24
- lsrs r0, 24
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- beq _08075798
- ldrh r0, [r6]
- muls r0, r7
- ldr r1, _08075794 @ =gEnemyParty
- b _0807579E
- .align 2, 0
-_0807578C: .4byte gUnknown_02024A6A
-_08075790: .4byte gUnknown_0202F7CA
-_08075794: .4byte gEnemyParty
-_08075798:
- ldrh r0, [r6]
- muls r0, r7
- ldr r1, _080757C0 @ =gPlayerParty
-_0807579E:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- strh r0, [r5]
- adds r6, 0x2
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _08075774
- ldr r3, _080757C4 @ =gUnknown_0202F7C6
- ldr r5, _080757C8 @ =gUnknown_0202F7C2
- ldr r1, _080757CC @ =gUnknown_0202F7B1
- mov r12, r1
- ldr r7, _080757D0 @ =gUnknown_0202F7AC
- ldr r6, _080757D4 @ =sub_80759D0
- b _080757FC
- .align 2, 0
-_080757C0: .4byte gPlayerParty
-_080757C4: .4byte gUnknown_0202F7C6
-_080757C8: .4byte gUnknown_0202F7C2
-_080757CC: .4byte gUnknown_0202F7B1
-_080757D0: .4byte gUnknown_0202F7AC
-_080757D4: .4byte sub_80759D0
-_080757D8:
- ldr r3, _08075808 @ =gUnknown_0202F7C6
- ldr r5, _0807580C @ =gUnknown_0202F7C2
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- ldr r1, _08075810 @ =gUnknown_0202F7B1
- mov r12, r1
- ldr r7, _08075814 @ =gUnknown_0202F7AC
- ldr r6, _08075818 @ =sub_80759D0
- ldr r2, _0807581C @ =0x02019348
- ldr r1, _08075820 @ =gUnknown_0202F7CA
- movs r4, 0x3
-_080757F0:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080757F0
-_080757FC:
- mov r0, r9
- cmp r0, 0
- bne _08075824
- strh r0, [r3]
- b _08075828
- .align 2, 0
-_08075808: .4byte gUnknown_0202F7C6
-_0807580C: .4byte gUnknown_0202F7C2
-_08075810: .4byte gUnknown_0202F7B1
-_08075814: .4byte gUnknown_0202F7AC
-_08075818: .4byte sub_80759D0
-_0807581C: .4byte 0x02019348
-_08075820: .4byte gUnknown_0202F7CA
-_08075824:
- mov r1, r8
- strh r1, [r3]
-_08075828:
- ldr r1, _0807587C @ =gBattleAnimArgs
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xE
-_08075830:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _08075830
- movs r0, 0xFF
- strb r0, [r5]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r5, 0x1]
- ldr r0, [sp]
- add r0, r10
- ldr r0, [r0]
- ldr r1, _08075880 @ =gUnknown_0202F7A4
- str r0, [r1]
- movs r0, 0x1
- mov r1, r12
- strb r0, [r1]
- movs r0, 0
- ldr r1, _08075884 @ =gUnknown_0202F7B0
- strb r0, [r1]
- str r6, [r7]
- ldr r0, _08075888 @ =0x0000ffff
- adds r2, r0, 0
- ldr r1, _0807588C @ =gUnknown_03004B10
- movs r4, 0x7
-_08075862:
- ldrh r0, [r1]
- orrs r0, r2
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08075862
- mov r1, r9
- cmp r1, 0
- beq _080758AE
- movs r4, 0
- ldr r2, _08075890 @ =gUnknown_081C7160
- b _08075896
- .align 2, 0
-_0807587C: .4byte gBattleAnimArgs
-_08075880: .4byte gUnknown_0202F7A4
-_08075884: .4byte gUnknown_0202F7B0
-_08075888: .4byte 0x0000ffff
-_0807588C: .4byte gUnknown_03004B10
-_08075890: .4byte gUnknown_081C7160
-_08075894:
- adds r4, 0x1
-_08075896:
- lsls r0, r4, 1
- adds r0, r2
- ldrh r0, [r0]
- ldr r1, _080758D0 @ =0x0000ffff
- cmp r0, r1
- beq _080758AE
- cmp r8, r0
- bne _08075894
- ldr r0, _080758D4 @ =gMPlay_BGM
- movs r2, 0x80
- bl m4aMPlayVolumeControl
-_080758AE:
- ldr r0, _080758D8 @ =gUnknown_030042C4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080758DC @ =gUnknown_03004240
- strh r1, [r0]
- ldr r0, _080758E0 @ =gUnknown_03004200
- strh r1, [r0]
- ldr r0, _080758E4 @ =gUnknown_03004244
- strh r1, [r0]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080758D0: .4byte 0x0000ffff
-_080758D4: .4byte gMPlay_BGM
-_080758D8: .4byte gUnknown_030042C4
-_080758DC: .4byte gUnknown_03004240
-_080758E0: .4byte gUnknown_03004200
-_080758E4: .4byte gUnknown_03004244
- thumb_func_end move_something
-
- thumb_func_start move_anim_8072740
-move_anim_8072740: @ 80758E8
- push {r4,lr}
- adds r4, r0, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- ldr r1, _08075904 @ =gUnknown_0202F7B2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075904: .4byte gUnknown_0202F7B2
- thumb_func_end move_anim_8072740
-
- thumb_func_start move_anim_task_del
-move_anim_task_del: @ 8075908
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, _08075920 @ =gUnknown_0202F7B2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08075920: .4byte gUnknown_0202F7B2
- thumb_func_end move_anim_task_del
-
- thumb_func_start move_anim_related_task_del
-move_anim_related_task_del: @ 8075924
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, _0807593C @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0807593C: .4byte gUnknown_0202F7B3
- thumb_func_end move_anim_related_task_del
-
- thumb_func_start sub_8075940
-sub_8075940: @ 8075940
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r4, _08075958 @ =0x0000ffff
- ldr r1, _0807595C @ =gUnknown_03004B10
-_0807594C:
- ldrh r0, [r1]
- cmp r0, r4
- bne _08075960
- strh r3, [r1]
- b _08075968
- .align 2, 0
-_08075958: .4byte 0x0000ffff
-_0807595C: .4byte gUnknown_03004B10
-_08075960:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x7
- ble _0807594C
-_08075968:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075940
-
- thumb_func_start sub_8075970
-sub_8075970: @ 8075970
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r0, _0807598C @ =0x0000ffff
- adds r4, r0, 0
- ldr r1, _08075990 @ =gUnknown_03004B10
-_0807597E:
- ldrh r0, [r1]
- cmp r0, r3
- bne _08075994
- orrs r0, r4
- strh r0, [r1]
- b _0807599C
- .align 2, 0
-_0807598C: .4byte 0x0000ffff
-_08075990: .4byte gUnknown_03004B10
-_08075994:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x7
- ble _0807597E
-_0807599C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075970
-
- thumb_func_start move_anim_waiter
-move_anim_waiter: @ 80759A4
- push {lr}
- ldr r2, _080759BC @ =gUnknown_0202F7B0
- ldrb r1, [r2]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0
- bgt _080759C8
- ldr r0, _080759C0 @ =gUnknown_0202F7AC
- ldr r1, _080759C4 @ =sub_80759D0
- str r1, [r0]
- movs r0, 0
- b _080759CA
- .align 2, 0
-_080759BC: .4byte gUnknown_0202F7B0
-_080759C0: .4byte gUnknown_0202F7AC
-_080759C4: .4byte sub_80759D0
-_080759C8:
- subs r0, r1, 0x1
-_080759CA:
- strb r0, [r2]
- pop {r0}
- bx r0
- thumb_func_end move_anim_waiter
-
- thumb_func_start sub_80759D0
-sub_80759D0: @ 80759D0
- push {r4,lr}
- ldr r4, _08075A00 @ =gUnknown_0837F4B8
-_080759D4:
- ldr r0, _08075A04 @ =gUnknown_0202F7A4
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _08075A08 @ =gUnknown_0202F7B0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080759F8
- ldr r0, _08075A0C @ =gUnknown_0202F7B1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080759D4
-_080759F8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075A00: .4byte gUnknown_0837F4B8
-_08075A04: .4byte gUnknown_0202F7A4
-_08075A08: .4byte gUnknown_0202F7B0
-_08075A0C: .4byte gUnknown_0202F7B1
- thumb_func_end sub_80759D0
-
- thumb_func_start ma00_load_graphics
-ma00_load_graphics: @ 8075A10
- push {r4-r6,lr}
- ldr r6, _08075A5C @ =gUnknown_0202F7A4
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r4, r0
- lsls r5, r4, 3
- ldr r0, _08075A60 @ =gBattleAnimPicTable - (10000 * 8)
- adds r0, r5, r0
- bl LoadCompressedObjectPic
- ldr r0, _08075A64 @ =gBattleAnimPaletteTable - (10000 * 8)
- adds r5, r0
- adds r0, r5, 0
- bl LoadCompressedObjectPalette
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- ldr r0, _08075A68 @ =0xffffd8f0
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_8075940
- ldr r1, _08075A6C @ =gUnknown_0202F7B0
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _08075A70 @ =gUnknown_0202F7AC
- ldr r0, _08075A74 @ =move_anim_waiter
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08075A5C: .4byte gUnknown_0202F7A4
-_08075A60: .4byte gBattleAnimPicTable - (10000 * 8)
-_08075A64: .4byte gBattleAnimPaletteTable - (10000 * 8)
-_08075A68: .4byte 0xffffd8f0
-_08075A6C: .4byte gUnknown_0202F7B0
-_08075A70: .4byte gUnknown_0202F7AC
-_08075A74: .4byte move_anim_waiter
- thumb_func_end ma00_load_graphics
-
- thumb_func_start ma01_080728D0
-ma01_080728D0: @ 8075A78
- push {r4-r6,lr}
- ldr r6, _08075AB8 @ =gUnknown_0202F7A4
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r4, r0
- ldr r1, _08075ABC @ =gBattleAnimPicTable
- ldr r0, _08075AC0 @ =0xffffd8f0
- adds r4, r0
- lsls r0, r4, 3
- adds r0, r1
- ldrh r5, [r0, 0x6]
- adds r0, r5, 0
- bl FreeSpriteTilesByTag
- adds r0, r5, 0
- bl FreeSpritePaletteByTag
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_8075970
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08075AB8: .4byte gUnknown_0202F7A4
-_08075ABC: .4byte gBattleAnimPicTable
-_08075AC0: .4byte 0xffffd8f0
- thumb_func_end ma01_080728D0
-
- thumb_func_start ma02_instanciate_template
-ma02_instanciate_template: @ 8075AC4
- push {r4-r7,lr}
- ldr r5, _08075B2C @ =gUnknown_0202F7A4
- ldr r1, [r5]
- adds r3, r1, 0x1
- str r3, [r5]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r7, r2, r0
- adds r0, r1, 0x5
- str r0, [r5]
- ldrb r4, [r1, 0x5]
- adds r0, r1, 0x6
- str r0, [r5]
- ldrb r0, [r1, 0x6]
- adds r1, 0x7
- str r1, [r5]
- cmp r0, 0
- beq _08075B14
- adds r6, r5, 0
- ldr r5, _08075B30 @ =gBattleAnimArgs
- adds r3, r0, 0
-_08075AFC:
- ldr r2, [r6]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r5]
- adds r2, 0x2
- str r2, [r6]
- adds r5, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _08075AFC
-_08075B14:
- movs r0, 0x80
- ands r0, r4
- cmp r0, 0
- beq _08075B44
- movs r0, 0x80
- eors r4, r0
- cmp r4, 0x3F
- bls _08075B34
- adds r0, r4, 0
- subs r0, 0x40
- b _08075B36
- .align 2, 0
-_08075B2C: .4byte gUnknown_0202F7A4
-_08075B30: .4byte gBattleAnimArgs
-_08075B34:
- negs r0, r4
-_08075B36:
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08075B40 @ =gUnknown_0202F7C9
- b _08075B56
- .align 2, 0
-_08075B40: .4byte gUnknown_0202F7C9
-_08075B44:
- cmp r4, 0x3F
- bls _08075B4E
- adds r0, r4, 0
- subs r0, 0x40
- b _08075B50
-_08075B4E:
- negs r0, r4
-_08075B50:
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08075BAC @ =gUnknown_0202F7C8
-_08075B56:
- ldrb r0, [r0]
- bl sub_8079E90
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 24
- asrs r1, 24
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, 0x2
- bgt _08075B74
- movs r6, 0x3
-_08075B74:
- ldr r5, _08075BB0 @ =gUnknown_0202F7C9
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077ABC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8077ABC
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r3, r6, 24
- lsrs r3, 24
- adds r0, r7, 0
- adds r1, r4, 0
- bl CreateSpriteAndAnimate
- ldr r1, _08075BB4 @ =gUnknown_0202F7B2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075BAC: .4byte gUnknown_0202F7C8
-_08075BB0: .4byte gUnknown_0202F7C9
-_08075BB4: .4byte gUnknown_0202F7B2
- thumb_func_end ma02_instanciate_template
-
- thumb_func_start sub_8075BB8
-sub_8075BB8: @ 8075BB8
- push {r4-r7,lr}
- ldr r4, _08075C28 @ =gUnknown_0202F7A4
- ldr r1, [r4]
- adds r3, r1, 0x1
- str r3, [r4]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r6, r2, r0
- adds r0, r1, 0x5
- str r0, [r4]
- ldrb r7, [r1, 0x5]
- adds r0, r1, 0x6
- str r0, [r4]
- ldrb r0, [r1, 0x6]
- adds r1, 0x7
- str r1, [r4]
- cmp r0, 0
- beq _08075C08
- adds r5, r4, 0
- ldr r4, _08075C2C @ =gBattleAnimArgs
- adds r3, r0, 0
-_08075BF0:
- ldr r2, [r5]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r4]
- adds r2, 0x2
- str r2, [r5]
- adds r4, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _08075BF0
-_08075C08:
- adds r0, r6, 0
- adds r1, r7, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r6
- ldr r1, _08075C30 @ =gUnknown_0202F7B2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075C28: .4byte gUnknown_0202F7A4
-_08075C2C: .4byte gBattleAnimArgs
-_08075C30: .4byte gUnknown_0202F7B2
- thumb_func_end sub_8075BB8
-
- thumb_func_start ma04_wait_countdown
-ma04_wait_countdown: @ 8075C34
- push {r4,lr}
- ldr r1, _08075C64 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r2, r0, 0x1
- str r2, [r1]
- ldr r3, _08075C68 @ =gUnknown_0202F7B0
- ldrb r0, [r0, 0x1]
- strb r0, [r3]
- lsls r0, 24
- cmp r0, 0
- bne _08075C52
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- strb r0, [r3]
-_08075C52:
- adds r0, r2, 0x1
- str r0, [r1]
- ldr r1, _08075C6C @ =gUnknown_0202F7AC
- ldr r0, _08075C70 @ =move_anim_waiter
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075C64: .4byte gUnknown_0202F7A4
-_08075C68: .4byte gUnknown_0202F7B0
-_08075C6C: .4byte gUnknown_0202F7AC
-_08075C70: .4byte move_anim_waiter
- thumb_func_end ma04_wait_countdown
-
- thumb_func_start sub_8075C74
-sub_8075C74: @ 8075C74
- push {lr}
- ldr r0, _08075C8C @ =gUnknown_0202F7B2
- ldrb r2, [r0]
- cmp r2, 0
- bne _08075C98
- ldr r0, _08075C90 @ =gUnknown_0202F7A4
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, _08075C94 @ =gUnknown_0202F7B0
- strb r2, [r0]
- b _08075C9E
- .align 2, 0
-_08075C8C: .4byte gUnknown_0202F7B2
-_08075C90: .4byte gUnknown_0202F7A4
-_08075C94: .4byte gUnknown_0202F7B0
-_08075C98:
- ldr r1, _08075CA4 @ =gUnknown_0202F7B0
- movs r0, 0x1
- strb r0, [r1]
-_08075C9E:
- pop {r0}
- bx r0
- .align 2, 0
-_08075CA4: .4byte gUnknown_0202F7B0
- thumb_func_end sub_8075C74
-
- thumb_func_start nullsub_53
-nullsub_53: @ 8075CA8
- bx lr
- thumb_func_end nullsub_53
-
- thumb_func_start nullsub_88
-nullsub_88: @ 8075CAC
- bx lr
- thumb_func_end nullsub_88
-
- thumb_func_start sub_8075CB0
-sub_8075CB0: @ 8075CB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0
- mov r8, r0
- ldr r0, _08075CE0 @ =gUnknown_0202F7B2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08075CD8
- ldr r0, _08075CE4 @ =gUnknown_0202F7B3
- ldrb r0, [r0]
- cmp r0, 0
- bne _08075CD8
- ldr r1, _08075CE8 @ =gUnknown_0202F7C2
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _08075CD8
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFF
- beq _08075CF0
-_08075CD8:
- ldr r1, _08075CEC @ =gUnknown_03004AF0
- movs r0, 0
- strh r0, [r1]
- b _08075D0A
- .align 2, 0
-_08075CE0: .4byte gUnknown_0202F7B2
-_08075CE4: .4byte gUnknown_0202F7B3
-_08075CE8: .4byte gUnknown_0202F7C2
-_08075CEC: .4byte gUnknown_03004AF0
-_08075CF0:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08075D28
- ldr r1, _08075D14 @ =gUnknown_03004AF0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5A
- bhi _08075D1C
-_08075D0A:
- ldr r1, _08075D18 @ =gUnknown_0202F7B0
- movs r0, 0x1
- strb r0, [r1]
- b _08075D8E
- .align 2, 0
-_08075D14: .4byte gUnknown_03004AF0
-_08075D18: .4byte gUnknown_0202F7B0
-_08075D1C:
- ldr r0, _08075D98 @ =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, _08075D9C @ =gMPlay_SE2
- bl m4aMPlayStop
-_08075D28:
- ldr r1, _08075DA0 @ =gUnknown_03004AF0
- movs r0, 0
- strh r0, [r1]
- movs r5, 0
- ldr r7, _08075DA4 @ =0x0000ffff
- ldr r6, _08075DA8 @ =gBattleAnimPicTable
- ldr r4, _08075DAC @ =gUnknown_03004B10
-_08075D36:
- ldrh r0, [r4]
- cmp r0, r7
- beq _08075D5A
- lsls r0, 3
- adds r0, r6
- ldrh r0, [r0, 0x6]
- bl FreeSpriteTilesByTag
- ldrh r0, [r4]
- lsls r0, 3
- adds r0, r6
- ldrh r0, [r0, 0x6]
- bl FreeSpritePaletteByTag
- ldrh r1, [r4]
- adds r0, r7, 0
- orrs r0, r1
- strh r0, [r4]
-_08075D5A:
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x7
- ble _08075D36
- mov r1, r8
- cmp r1, 0
- bne _08075D8E
- ldr r0, _08075DB0 @ =gMPlay_BGM
- ldr r1, _08075DA4 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _08075D88
- bl sub_8079E24
- movs r0, 0x1
- bl sub_8043EB4
-_08075D88:
- ldr r0, _08075DB4 @ =gUnknown_0202F7B1
- mov r1, r8
- strb r1, [r0]
-_08075D8E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075D98: .4byte gMPlay_SE1
-_08075D9C: .4byte gMPlay_SE2
-_08075DA0: .4byte gUnknown_03004AF0
-_08075DA4: .4byte 0x0000ffff
-_08075DA8: .4byte gBattleAnimPicTable
-_08075DAC: .4byte gUnknown_03004B10
-_08075DB0: .4byte gMPlay_BGM
-_08075DB4: .4byte gUnknown_0202F7B1
- thumb_func_end sub_8075CB0
-
- thumb_func_start ma09_play_sound
-ma09_play_sound: @ 8075DB8
- push {r4,lr}
- ldr r4, _08075DDC @ =gUnknown_0202F7A4
- ldr r0, [r4]
- adds r1, r0, 0x1
- str r1, [r4]
- ldrb r0, [r0, 0x1]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- orrs r0, r1
- bl PlaySE
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075DDC: .4byte gUnknown_0202F7A4
- thumb_func_end ma09_play_sound
-
- thumb_func_start sub_8075DE0
-sub_8075DE0: @ 8075DE0
- push {r4-r7,lr}
- ldr r0, _08075DF4 @ =gUnknown_0202F7A4
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r6, [r2, 0x1]
- cmp r6, 0
- bne _08075DF8
- movs r6, 0x2
- b _08075E02
- .align 2, 0
-_08075DF4: .4byte gUnknown_0202F7A4
-_08075DF8:
- cmp r6, 0x1
- bne _08075DFE
- movs r6, 0x3
-_08075DFE:
- cmp r6, 0
- beq _08075E06
-_08075E02:
- cmp r6, 0x2
- bne _08075E10
-_08075E06:
- ldr r0, _08075E0C @ =gUnknown_0202F7C8
- b _08075E12
- .align 2, 0
-_08075E0C: .4byte gUnknown_0202F7C8
-_08075E10:
- ldr r0, _08075E44 @ =gUnknown_0202F7C9
-_08075E12:
- ldrb r5, [r0]
- adds r0, r5, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _08075ECE
- adds r0, r5, 0
- bl battle_get_per_side_status
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08075E3E
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08075E48
-_08075E3E:
- movs r7, 0
- b _08075E4A
- .align 2, 0
-_08075E44: .4byte gUnknown_0202F7C9
-_08075E48:
- movs r7, 0x1
-_08075E4A:
- adds r0, r5, 0
- adds r1, r7, 0
- bl sub_8076034
- ldr r0, _08075E98 @ =gUnknown_02024BE0
- adds r0, r5, r0
- ldrb r4, [r0]
- ldr r0, _08075E9C @ =task_pA_ma0A_obj_to_bg_pal
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _08075EA0 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- strh r4, [r2, 0x8]
- ldr r1, _08075EA4 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x24]
- ldrh r4, [r0, 0x20]
- adds r1, r4
- strh r1, [r2, 0xA]
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- strh r1, [r2, 0xC]
- cmp r7, 0
- bne _08075EB0
- ldr r0, _08075EA8 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r2, 0xE]
- ldr r0, _08075EAC @ =gUnknown_030041B4
- b _08075EB8
- .align 2, 0
-_08075E98: .4byte gUnknown_02024BE0
-_08075E9C: .4byte task_pA_ma0A_obj_to_bg_pal
-_08075EA0: .4byte gTasks
-_08075EA4: .4byte gSprites
-_08075EA8: .4byte gUnknown_030042C0
-_08075EAC: .4byte gUnknown_030041B4
-_08075EB0:
- ldr r0, _08075F04 @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r2, 0xE]
- ldr r0, _08075F08 @ =gUnknown_03004280
-_08075EB8:
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- ldr r0, _08075F0C @ =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- strh r7, [r1, 0x12]
- strh r5, [r1, 0x14]
- ldr r0, _08075F10 @ =gUnknown_0202F7C2
- strb r3, [r0]
-_08075ECE:
- movs r0, 0x2
- eors r5, r0
- cmp r6, 0x1
- bls _08075F9A
- adds r0, r5, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _08075F9A
- adds r0, r5, 0
- bl battle_get_per_side_status
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08075F00
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08075F14
-_08075F00:
- movs r7, 0
- b _08075F16
- .align 2, 0
-_08075F04: .4byte gUnknown_03004288
-_08075F08: .4byte gUnknown_03004280
-_08075F0C: .4byte gTasks
-_08075F10: .4byte gUnknown_0202F7C2
-_08075F14:
- movs r7, 0x1
-_08075F16:
- adds r0, r5, 0
- adds r1, r7, 0
- bl sub_8076034
- ldr r0, _08075F64 @ =gUnknown_02024BE0
- adds r0, r5, r0
- ldrb r4, [r0]
- ldr r0, _08075F68 @ =task_pA_ma0A_obj_to_bg_pal
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _08075F6C @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- strh r4, [r2, 0x8]
- ldr r1, _08075F70 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x24]
- ldrh r4, [r0, 0x20]
- adds r1, r4
- strh r1, [r2, 0xA]
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- strh r1, [r2, 0xC]
- cmp r7, 0
- bne _08075F7C
- ldr r0, _08075F74 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r2, 0xE]
- ldr r0, _08075F78 @ =gUnknown_030041B4
- b _08075F84
- .align 2, 0
-_08075F64: .4byte gUnknown_02024BE0
-_08075F68: .4byte task_pA_ma0A_obj_to_bg_pal
-_08075F6C: .4byte gTasks
-_08075F70: .4byte gSprites
-_08075F74: .4byte gUnknown_030042C0
-_08075F78: .4byte gUnknown_030041B4
-_08075F7C:
- ldr r0, _08075FA8 @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r2, 0xE]
- ldr r0, _08075FAC @ =gUnknown_03004280
-_08075F84:
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- ldr r0, _08075FB0 @ =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- strh r7, [r1, 0x12]
- strh r5, [r1, 0x14]
- ldr r0, _08075FB4 @ =gUnknown_0202F7C2
- strb r3, [r0, 0x1]
-_08075F9A:
- ldr r1, _08075FB8 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075FA8: .4byte gUnknown_03004288
-_08075FAC: .4byte gUnknown_03004280
-_08075FB0: .4byte gTasks
-_08075FB4: .4byte gUnknown_0202F7C2
-_08075FB8: .4byte gUnknown_0202F7A4
- thumb_func_end sub_8075DE0
-
- thumb_func_start b_side_obj__get_some_boolean
-b_side_obj__get_some_boolean: @ 8075FBC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08075FDC
- ldr r0, _08075FD8 @ =gUnknown_0202F7C8
- ldrb r0, [r0]
- cmp r4, r0
- beq _0807601C
- b _0807602C
- .align 2, 0
-_08075FD8: .4byte gUnknown_0202F7C8
-_08075FDC:
- adds r0, r4, 0
- bl sub_8078874
- lsls r0, 24
- cmp r0, 0
- beq _0807602C
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _0807601C
- lsls r0, r5, 2
- ldr r1, _08076020 @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807601C
- ldr r2, _08076024 @ =gSprites
- ldr r0, _08076028 @ =gUnknown_02024BE0
- adds r0, r5, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _0807602C
-_0807601C:
- movs r0, 0x1
- b _0807602E
- .align 2, 0
-_08076020: .4byte 0x02017800
-_08076024: .4byte gSprites
-_08076028: .4byte gUnknown_02024BE0
-_0807602C:
- movs r0, 0
-_0807602E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end b_side_obj__get_some_boolean
-
- thumb_func_start sub_8076034
-sub_8076034: @ 8076034
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- cmp r1, 0
- beq _0807604E
- b _08076220
-_0807604E:
- add r4, sp, 0x10
- adds r0, r4, 0
- bl sub_8078914
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 6
- add r6, sp, 0x1C
- add r0, sp, 0x20
- mov r10, r0
- mov r1, r9
- lsls r1, 5
- str r1, [sp, 0x24]
- movs r5, 0
- ldr r1, _08076194 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- mov r12, r6
- ldr r7, _08076198 @ =0x85000400
- movs r0, 0x85
- lsls r0, 24
- mov r8, r0
-_0807607A:
- str r5, [sp, 0x1C]
- mov r0, r12
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _0807607A
- str r5, [sp, 0x1C]
- str r6, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- mov r2, r8
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0xC
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0]
- ldr r1, [sp, 0x14]
- movs r0, 0xFF
- mov r3, r10
- strh r0, [r3]
- ldr r0, _08076194 @ =0x040000d4
- str r3, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0807619C @ =0x81000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r2, _080761A0 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r1, [r2, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x1]
- ldr r0, _080761A4 @ =gUnknown_02024BE0
- add r0, r9
- ldrb r4, [r0]
- ldr r5, _080761A8 @ =gUnknown_030042C0
- ldr r0, _080761AC @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- negs r0, r0
- adds r0, 0x20
- strh r0, [r5]
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _0807611C
- ldr r0, _080761B0 @ =0x02019348
- ldrh r0, [r0]
- bl sub_80AEB1C
- lsls r0, 24
- cmp r0, 0
- beq _0807611C
- ldrh r0, [r5]
- subs r0, 0x1
- strh r0, [r5]
-_0807611C:
- ldr r3, _080761B4 @ =gUnknown_030041B4
- ldr r2, _080761AC @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x26]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- negs r0, r0
- adds r0, 0x20
- strh r0, [r3]
- ldr r0, _080761A4 @ =gUnknown_02024BE0
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r1, _080761B8 @ =REG_BG1HOFS
- ldr r0, _080761A8 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r3]
- strh r0, [r1]
- ldr r4, _080761BC @ =gPlttBufferUnfaded + 0x200
- ldr r0, [sp, 0x24]
- adds r4, r0, r4
- mov r2, sp
- ldrb r1, [r2, 0x18]
- lsls r1, 4
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- mov r3, sp
- ldrb r0, [r3, 0x18]
- lsls r0, 5
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- ldr r1, _08076194 @ =0x040000d4
- str r4, [r1]
- str r0, [r1, 0x4]
- ldr r0, _080761C0 @ =0x84000008
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _080761C4
- movs r2, 0
- b _080761CE
- .align 2, 0
-_08076194: .4byte 0x040000d4
-_08076198: .4byte 0x85000400
-_0807619C: .4byte 0x81000800
-_080761A0: .4byte REG_BG1CNT
-_080761A4: .4byte gUnknown_02024BE0
-_080761A8: .4byte gUnknown_030042C0
-_080761AC: .4byte gSprites
-_080761B0: .4byte 0x02019348
-_080761B4: .4byte gUnknown_030041B4
-_080761B8: .4byte REG_BG1HOFS
-_080761BC: .4byte gPlttBufferUnfaded + 0x200
-_080761C0: .4byte 0x84000008
-_080761C4:
- mov r0, r9
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r2, r0, 24
-_080761CE:
- mov r0, sp
- ldrb r3, [r0, 0x18]
- ldr r0, [sp, 0x10]
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- ldr r4, [sp, 0x14]
- movs r1, 0xFA
- lsls r1, 24
- adds r0, r4, r1
- cmp r0, 0
- bge _080761EA
- ldr r1, _08076218 @ =0xfa0007ff
- adds r0, r4, r1
-_080761EA:
- asrs r0, 11
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, _0807621C @ =REG_BG1CNT
- ldr r0, [r0]
- lsls r0, 28
- lsrs r0, 30
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- bl sub_80E4EF8
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _08076210
- b _08076338
-_08076210:
- bl sub_8076380
- b _08076338
- .align 2, 0
-_08076218: .4byte 0xfa0007ff
-_0807621C: .4byte REG_BG1CNT
-_08076220:
- ldr r3, _08076348 @ =0x06006000
- movs r5, 0x80
- lsls r5, 6
- add r6, sp, 0x1C
- ldr r2, _0807634C @ =gSprites
- mov r10, r2
- mov r0, r9
- lsls r0, 5
- str r0, [sp, 0x24]
- movs r4, 0
- ldr r1, _08076350 @ =0x040000d4
- movs r2, 0x80
- lsls r2, 5
- mov r12, r6
- ldr r7, _08076354 @ =0x85000400
- movs r0, 0x85
- lsls r0, 24
- mov r8, r0
-_08076244:
- str r4, [sp, 0x1C]
- mov r0, r12
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- subs r5, r2
- cmp r5, r2
- bhi _08076244
- str r4, [sp, 0x1C]
- str r6, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r5, 2
- mov r2, r8
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0xC
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0]
- ldr r1, _08076358 @ =0x0600f000
- movs r0, 0
- str r0, [sp, 0x1C]
- ldr r5, _08076350 @ =0x040000d4
- str r6, [r5]
- str r1, [r5, 0x4]
- ldr r0, _0807635C @ =0x85000200
- str r0, [r5, 0x8]
- ldr r0, [r5, 0x8]
- ldr r6, _08076360 @ =REG_BG2CNT
- ldrb r1, [r6]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r6]
- ldrb r1, [r6, 0x1]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r6, 0x1]
- ldrb r1, [r6, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r6, 0x1]
- ldr r2, _08076364 @ =gUnknown_02024BE0
- add r2, r9
- ldrb r4, [r2]
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r10
- ldrh r0, [r1, 0x24]
- ldrh r3, [r1, 0x20]
- adds r0, r3
- negs r0, r0
- adds r0, 0x20
- ldr r3, _08076368 @ =gUnknown_03004288
- strh r0, [r3]
- ldrh r0, [r1, 0x26]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- negs r0, r0
- adds r0, 0x20
- ldr r1, _0807636C @ =gUnknown_03004280
- strh r0, [r1]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r1, _08076370 @ =REG_BG2HOFS
- ldrh r0, [r3]
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0807636C @ =gUnknown_03004280
- ldrh r0, [r2]
- strh r0, [r1]
- ldr r3, [sp, 0x24]
- ldr r0, _08076374 @ =gPlttBufferUnfaded + 0x200
- adds r4, r3, r0
- adds r0, r4, 0
- movs r1, 0x90
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08076378 @ =0x05000120
- str r4, [r5]
- str r0, [r5, 0x4]
- ldr r0, _0807637C @ =0x84000008
- str r0, [r5, 0x8]
- ldr r0, [r5, 0x8]
- mov r0, r9
- bl battle_get_per_side_status
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xC0
- lsls r0, 7
- str r0, [sp]
- movs r0, 0x1E
- str r0, [sp, 0x4]
- ldr r0, [r6]
- lsls r0, 28
- lsrs r0, 30
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r3, 0x9
- bl sub_80E4EF8
-_08076338:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08076348: .4byte 0x06006000
-_0807634C: .4byte gSprites
-_08076350: .4byte 0x040000d4
-_08076354: .4byte 0x85000400
-_08076358: .4byte 0x0600f000
-_0807635C: .4byte 0x85000200
-_08076360: .4byte REG_BG2CNT
-_08076364: .4byte gUnknown_02024BE0
-_08076368: .4byte gUnknown_03004288
-_0807636C: .4byte gUnknown_03004280
-_08076370: .4byte REG_BG2HOFS
-_08076374: .4byte gPlttBufferUnfaded + 0x200
-_08076378: .4byte 0x05000120
-_0807637C: .4byte 0x84000008
- thumb_func_end sub_8076034
-
- thumb_func_start sub_8076380
-sub_8076380: @ 8076380
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r0, _080763F8 @ =0x02019348
- ldrh r0, [r0]
- bl sub_80AEB1C
- lsls r0, 24
- cmp r0, 0
- beq _080763EE
- mov r0, sp
- bl sub_8078914
- ldr r6, [sp, 0x4]
- movs r5, 0
- movs r0, 0x7
- mov r12, r0
- movs r7, 0
-_080763A2:
- movs r4, 0
- adds r3, r7, r6
- mov r1, r12
- lsls r0, r1, 1
- adds r2, r0, r6
-_080763AC:
- ldrh r1, [r3]
- ldrh r0, [r2]
- strh r0, [r3]
- strh r1, [r2]
- adds r3, 0x2
- subs r2, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _080763AC
- movs r0, 0x20
- add r12, r0
- adds r7, 0x40
- adds r5, 0x1
- cmp r5, 0x7
- ble _080763A2
- movs r5, 0
- movs r1, 0x80
- lsls r1, 3
- adds r3, r1, 0
-_080763D2:
- adds r2, r5, 0x1
- lsls r0, r5, 6
- adds r1, r0, r6
- movs r4, 0x7
-_080763DA:
- ldrh r0, [r1]
- eors r0, r3
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080763DA
- adds r5, r2, 0
- cmp r5, 0x7
- ble _080763D2
-_080763EE:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080763F8: .4byte 0x02019348
- thumb_func_end sub_8076380
-
- thumb_func_start sub_80763FC
-sub_80763FC: @ 80763FC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r12, r1
- adds r7, r2, 0
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r3, 24
- movs r0, 0x40
- mov r9, r0
- cmp r3, 0
- bne _0807641A
- movs r1, 0x20
- mov r9, r1
-_0807641A:
- lsls r0, r6, 28
- lsrs r6, r0, 16
- movs r0, 0
- cmp r0, r9
- bcs _08076452
- ldr r1, _08076460 @ =0x00000fff
- mov r8, r1
-_08076428:
- movs r3, 0
- adds r5, r0, 0x1
- lsls r4, r0, 5
-_0807642E:
- adds r1, r4, r3
- lsls r1, 1
- add r1, r12
- ldrh r2, [r1]
- mov r0, r8
- ands r0, r2
- orrs r0, r6
- adds r0, r7
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _0807642E
- lsls r0, r5, 24
- lsrs r0, 24
- cmp r0, r9
- bcc _08076428
-_08076452:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08076460: .4byte 0x00000fff
- thumb_func_end sub_80763FC
-
- thumb_func_start sub_8076464
-sub_8076464: @ 8076464
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- add r5, sp, 0x4
- adds r0, r5, 0
- bl sub_8078914
- cmp r4, 0
- beq _0807648C
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _080764F0
-_0807648C:
- ldr r2, [sp, 0x4]
- movs r3, 0x80
- lsls r3, 6
- add r5, sp, 0x10
- ldr r0, _080764E0 @ =gUnknown_030042C0
- mov r9, r0
- ldr r0, _080764E4 @ =gUnknown_030041B4
- mov r10, r0
- movs r6, 0
- ldr r1, _080764E8 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- mov r12, r5
- ldr r7, _080764EC @ =0x85000400
- movs r0, 0x85
- lsls r0, 24
- mov r8, r0
-_080764AE:
- str r6, [sp, 0x10]
- mov r0, r12
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _080764AE
- str r6, [sp, 0x10]
- str r5, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- mov r2, r8
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, sp
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0]
- ldr r1, [sp, 0x8]
- b _08076540
- .align 2, 0
-_080764E0: .4byte gUnknown_030042C0
-_080764E4: .4byte gUnknown_030041B4
-_080764E8: .4byte 0x040000d4
-_080764EC: .4byte 0x85000400
-_080764F0:
- ldr r2, _08076568 @ =0x06006000
- movs r3, 0x80
- lsls r3, 6
- add r5, sp, 0x10
- ldr r0, _0807656C @ =gUnknown_03004288
- mov r9, r0
- ldr r0, _08076570 @ =gUnknown_03004280
- mov r10, r0
- movs r6, 0
- ldr r1, _08076574 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- mov r12, r5
- ldr r7, _08076578 @ =0x85000400
- movs r0, 0x85
- lsls r0, 24
- mov r8, r0
-_08076512:
- str r6, [sp, 0x10]
- mov r0, r12
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _08076512
- str r6, [sp, 0x10]
- str r5, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- mov r2, r8
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, sp
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0]
- ldr r1, _0807657C @ =0x0600f000
-_08076540:
- movs r2, 0
- str r2, [sp, 0x10]
- ldr r0, _08076574 @ =0x040000d4
- str r5, [r0]
- str r1, [r0, 0x4]
- ldr r1, _08076580 @ =0x85000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r9
- strh r2, [r0]
- mov r0, r10
- strh r2, [r0]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08076568: .4byte 0x06006000
-_0807656C: .4byte gUnknown_03004288
-_08076570: .4byte gUnknown_03004280
-_08076574: .4byte 0x040000d4
-_08076578: .4byte 0x85000400
-_0807657C: .4byte 0x0600f000
-_08076580: .4byte 0x85000200
- thumb_func_end sub_8076464
-
- thumb_func_start task_pA_ma0A_obj_to_bg_pal
-task_pA_ma0A_obj_to_bg_pal: @ 8076584
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080765FC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrb r4, [r5, 0x8]
- ldrb r6, [r5, 0x14]
- mov r0, sp
- bl sub_8078914
- ldr r0, _08076600 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x24]
- ldrh r0, [r1, 0x20]
- adds r2, r0
- ldrh r0, [r5, 0xA]
- subs r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r2, [r1, 0x26]
- ldrh r1, [r1, 0x22]
- adds r2, r1
- ldrh r0, [r5, 0xC]
- subs r0, r2
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0x12
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08076614
- ldr r1, _08076604 @ =gUnknown_030042C0
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r3, [r5, 0xE]
- adds r0, r3
- strh r0, [r1]
- ldr r1, _08076608 @ =gUnknown_030041B4
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r5, [r5, 0x10]
- adds r0, r5
- strh r0, [r1]
- lsls r2, r6, 5
- ldr r1, _0807660C @ =gPlttBufferFaded + 0x200
- adds r2, r1
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 5
- ldr r3, _08076610 @ =0xfffffe00
- adds r1, r3
- adds r0, r1
- b _08076634
- .align 2, 0
-_080765FC: .4byte gTasks
-_08076600: .4byte gSprites
-_08076604: .4byte gUnknown_030042C0
-_08076608: .4byte gUnknown_030041B4
-_0807660C: .4byte gPlttBufferFaded + 0x200
-_08076610: .4byte 0xfffffe00
-_08076614:
- ldr r1, _08076648 @ =gUnknown_03004288
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r3, [r5, 0xE]
- adds r0, r3
- strh r0, [r1]
- ldr r1, _0807664C @ =gUnknown_03004280
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r5, [r5, 0x10]
- adds r0, r5
- strh r0, [r1]
- lsls r2, r6, 5
- ldr r0, _08076650 @ =gPlttBufferFaded + 0x200
- adds r2, r0
- subs r0, 0xE0
-_08076634:
- ldr r1, _08076654 @ =0x040000d4
- str r2, [r1]
- str r0, [r1, 0x4]
- ldr r0, _08076658 @ =0x84000008
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08076648: .4byte gUnknown_03004288
-_0807664C: .4byte gUnknown_03004280
-_08076650: .4byte gPlttBufferFaded + 0x200
-_08076654: .4byte 0x040000d4
-_08076658: .4byte 0x84000008
- thumb_func_end task_pA_ma0A_obj_to_bg_pal
-
- thumb_func_start ma0B_0807324C
-ma0B_0807324C: @ 807665C
- push {r4,r5,lr}
- ldr r0, _08076670 @ =gUnknown_0202F7A4
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r4, [r2, 0x1]
- cmp r4, 0
- bne _08076674
- movs r4, 0x2
- b _0807667E
- .align 2, 0
-_08076670: .4byte gUnknown_0202F7A4
-_08076674:
- cmp r4, 0x1
- bne _0807667A
- movs r4, 0x3
-_0807667A:
- cmp r4, 0
- beq _08076682
-_0807667E:
- cmp r4, 0x2
- bne _0807668C
-_08076682:
- ldr r0, _08076688 @ =gUnknown_0202F7C8
- b _0807668E
- .align 2, 0
-_08076688: .4byte gUnknown_0202F7C8
-_0807668C:
- ldr r0, _080766E4 @ =gUnknown_0202F7C9
-_0807668E:
- ldrb r5, [r0]
- ldr r3, _080766E8 @ =gUnknown_0202F7C2
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _080766B4
- ldr r2, _080766EC @ =gSprites
- ldr r0, _080766F0 @ =gUnknown_02024BE0
- adds r0, r5, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080766B4:
- cmp r4, 0x1
- bls _080766F4
- ldrb r0, [r3, 0x1]
- cmp r0, 0xFF
- beq _080766F4
- ldr r3, _080766EC @ =gSprites
- ldr r2, _080766F0 @ =gUnknown_02024BE0
- movs r1, 0x2
- adds r0, r5, 0
- eors r0, r1
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- b _080766F6
- .align 2, 0
-_080766E4: .4byte gUnknown_0202F7C9
-_080766E8: .4byte gUnknown_0202F7C2
-_080766EC: .4byte gSprites
-_080766F0: .4byte gUnknown_02024BE0
-_080766F4:
- movs r4, 0
-_080766F6:
- ldr r0, _08076720 @ =sub_807672C
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08076724 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- strh r5, [r1, 0xC]
- ldr r1, _08076728 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08076720: .4byte sub_807672C
-_08076724: .4byte gTasks
-_08076728: .4byte gUnknown_0202F7A4
- thumb_func_end ma0B_0807324C
-
- thumb_func_start sub_807672C
-sub_807672C: @ 807672C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0807676C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- beq _080767B6
- ldrb r0, [r1, 0xC]
- bl battle_get_per_side_status
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08076768
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08076770
-_08076768:
- movs r4, 0
- b _08076772
- .align 2, 0
-_0807676C: .4byte gTasks
-_08076770:
- movs r4, 0x1
-_08076772:
- ldr r6, _080767BC @ =gUnknown_0202F7C2
- ldrb r0, [r6]
- cmp r0, 0xFF
- beq _0807678A
- adds r0, r4, 0
- bl sub_8076464
- ldrb r0, [r6]
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r6]
-_0807678A:
- ldr r0, _080767C0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- ble _080767B0
- movs r0, 0x1
- eors r4, r0
- adds r0, r4, 0
- bl sub_8076464
- ldrb r0, [r6, 0x1]
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r6, 0x1]
-_080767B0:
- adds r0, r5, 0
- bl DestroyTask
-_080767B6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080767BC: .4byte gUnknown_0202F7C2
-_080767C0: .4byte gTasks
- thumb_func_end sub_807672C
-
- thumb_func_start sub_80767C4
-sub_80767C4: @ 80767C4
- push {r4,r5,lr}
- ldr r0, _080767D8 @ =gUnknown_0202F7A4
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r5, [r2, 0x1]
- cmp r5, 0
- bne _080767DC
- movs r5, 0x2
- b _080767E6
- .align 2, 0
-_080767D8: .4byte gUnknown_0202F7A4
-_080767DC:
- cmp r5, 0x1
- bne _080767E2
- movs r5, 0x3
-_080767E2:
- cmp r5, 0
- beq _080767EA
-_080767E6:
- cmp r5, 0x2
- bne _080767F4
-_080767EA:
- ldr r0, _080767F0 @ =gUnknown_0202F7C8
- b _080767F6
- .align 2, 0
-_080767F0: .4byte gUnknown_0202F7C8
-_080767F4:
- ldr r0, _08076828 @ =gUnknown_0202F7C9
-_080767F6:
- ldrb r4, [r0]
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _08076850
- adds r0, r4, 0
- bl battle_get_per_side_status
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08076822
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _0807682C
-_08076822:
- movs r1, 0
- b _0807682E
- .align 2, 0
-_08076828: .4byte gUnknown_0202F7C9
-_0807682C:
- movs r1, 0x1
-_0807682E:
- adds r0, r4, 0
- bl sub_8076034
- ldr r2, _08076888 @ =gSprites
- ldr r0, _0807688C @ =gUnknown_02024BE0
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_08076850:
- movs r0, 0x2
- eors r4, r0
- cmp r5, 0x1
- bls _080768B4
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080768B4
- adds r0, r4, 0
- bl battle_get_per_side_status
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08076882
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08076890
-_08076882:
- movs r1, 0
- b _08076892
- .align 2, 0
-_08076888: .4byte gSprites
-_0807688C: .4byte gUnknown_02024BE0
-_08076890:
- movs r1, 0x1
-_08076892:
- adds r0, r4, 0
- bl sub_8076034
- ldr r2, _080768C4 @ =gSprites
- ldr r0, _080768C8 @ =gUnknown_02024BE0
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080768B4:
- ldr r1, _080768CC @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080768C4: .4byte gSprites
-_080768C8: .4byte gUnknown_02024BE0
-_080768CC: .4byte gUnknown_0202F7A4
- thumb_func_end sub_80767C4
-
- thumb_func_start ma23_8073484
-ma23_8073484: @ 80768D0
- push {r4-r6,lr}
- ldr r0, _080768E4 @ =gUnknown_0202F7A4
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r5, [r2, 0x1]
- cmp r5, 0
- bne _080768E8
- movs r5, 0x2
- b _080768F2
- .align 2, 0
-_080768E4: .4byte gUnknown_0202F7A4
-_080768E8:
- cmp r5, 0x1
- bne _080768EE
- movs r5, 0x3
-_080768EE:
- cmp r5, 0
- beq _080768F6
-_080768F2:
- cmp r5, 0x2
- bne _08076900
-_080768F6:
- ldr r0, _080768FC @ =gUnknown_0202F7C8
- b _08076902
- .align 2, 0
-_080768FC: .4byte gUnknown_0202F7C8
-_08076900:
- ldr r0, _08076960 @ =gUnknown_0202F7C9
-_08076902:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _0807692C
- ldr r2, _08076964 @ =gSprites
- ldr r0, _08076968 @ =gUnknown_02024BE0
- adds r0, r6, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_0807692C:
- cmp r5, 0x1
- bls _0807696C
- movs r0, 0x2
- adds r4, r6, 0
- eors r4, r0
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _0807696C
- ldr r2, _08076964 @ =gSprites
- ldr r0, _08076968 @ =gUnknown_02024BE0
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- b _0807696E
- .align 2, 0
-_08076960: .4byte gUnknown_0202F7C9
-_08076964: .4byte gSprites
-_08076968: .4byte gUnknown_02024BE0
-_0807696C:
- movs r5, 0
-_0807696E:
- ldr r0, _08076998 @ =sub_80769A4
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807699C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- strh r6, [r1, 0xC]
- ldr r1, _080769A0 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08076998: .4byte sub_80769A4
-_0807699C: .4byte gTasks
-_080769A0: .4byte gUnknown_0202F7A4
- thumb_func_end ma23_8073484
-
- thumb_func_start sub_80769A4
-sub_80769A4: @ 80769A4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080769E8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- beq _08076A32
- ldrb r4, [r1, 0xC]
- adds r0, r4, 0
- bl battle_get_per_side_status
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080769E2
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _080769EC
-_080769E2:
- movs r5, 0
- b _080769EE
- .align 2, 0
-_080769E8: .4byte gTasks
-_080769EC:
- movs r5, 0x1
-_080769EE:
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _08076A00
- adds r0, r5, 0
- bl sub_8076464
-_08076A00:
- ldr r0, _08076A38 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- ble _08076A2C
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _08076A2C
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8076464
-_08076A2C:
- adds r0, r6, 0
- bl DestroyTask
-_08076A32:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08076A38: .4byte gTasks
- thumb_func_end sub_80769A4
-
- thumb_func_start sub_8076A3C
-sub_8076A3C: @ 8076A3C
- push {r4,lr}
- ldr r2, _08076A6C @ =gUnknown_0202F7A4
- ldr r0, [r2]
- adds r1, r0, 0x1
- str r1, [r2]
- ldrb r3, [r0, 0x1]
- adds r0, r1, 0x1
- str r0, [r2]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- adds r0, 0x1
- str r0, [r2]
- ldr r2, _08076A70 @ =REG_BLDCNT
- movs r4, 0xFD
- lsls r4, 6
- adds r0, r4, 0
- strh r0, [r2]
- ldr r0, _08076A74 @ =REG_BLDALPHA
- orrs r3, r1
- strh r3, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076A6C: .4byte gUnknown_0202F7A4
-_08076A70: .4byte REG_BLDCNT
-_08076A74: .4byte REG_BLDALPHA
- thumb_func_end sub_8076A3C
-
- thumb_func_start sub_8076A78
-sub_8076A78: @ 8076A78
- ldr r2, _08076A98 @ =gUnknown_0202F7A4
- ldr r0, [r2]
- adds r1, r0, 0x1
- str r1, [r2]
- ldrb r3, [r0, 0x1]
- adds r0, r1, 0x1
- str r0, [r2]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- adds r0, 0x1
- str r0, [r2]
- ldr r0, _08076A9C @ =REG_BLDCNT
- orrs r3, r1
- strh r3, [r0]
- bx lr
- .align 2, 0
-_08076A98: .4byte gUnknown_0202F7A4
-_08076A9C: .4byte REG_BLDCNT
- thumb_func_end sub_8076A78
-
- thumb_func_start sub_8076AA0
-sub_8076AA0: @ 8076AA0
- ldr r1, _08076AB4 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, _08076AB8 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08076AB4: .4byte gUnknown_0202F7A4
-_08076AB8: .4byte REG_BLDCNT
- thumb_func_end sub_8076AA0
-
- thumb_func_start ma0E_call
-ma0E_call: @ 8076ABC
- push {r4,lr}
- ldr r4, _08076AE8 @ =gUnknown_0202F7A4
- ldr r1, [r4]
- adds r3, r1, 0x1
- str r3, [r4]
- ldr r2, _08076AEC @ =gUnknown_0202F7A8
- adds r0, r1, 0x5
- str r0, [r2]
- ldrb r1, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076AE8: .4byte gUnknown_0202F7A4
-_08076AEC: .4byte gUnknown_0202F7A8
- thumb_func_end ma0E_call
-
- thumb_func_start sub_8076AF0
-sub_8076AF0: @ 8076AF0
- ldr r0, _08076AFC @ =gUnknown_0202F7A4
- ldr r1, _08076B00 @ =gUnknown_0202F7A8
- ldr r1, [r1]
- str r1, [r0]
- bx lr
- .align 2, 0
-_08076AFC: .4byte gUnknown_0202F7A4
-_08076B00: .4byte gUnknown_0202F7A8
- thumb_func_end sub_8076AF0
-
- thumb_func_start ma10_080736AC
-ma10_080736AC: @ 8076B04
- push {r4,r5,lr}
- ldr r5, _08076B30 @ =gUnknown_0202F7A4
- ldr r1, [r5]
- adds r0, r1, 0x1
- str r0, [r5]
- ldrb r2, [r1, 0x1]
- adds r3, r0, 0x1
- str r3, [r5]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r4, r0
- adds r1, 0x4
- str r1, [r5]
- ldr r0, _08076B34 @ =gBattleAnimArgs
- lsls r2, 1
- adds r2, r0
- strh r4, [r2]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08076B30: .4byte gUnknown_0202F7A4
-_08076B34: .4byte gBattleAnimArgs
- thumb_func_end ma10_080736AC
-
- thumb_func_start ma11_if_else
-ma11_if_else: @ 8076B38
- push {lr}
- ldr r3, _08076B70 @ =gUnknown_0202F7A4
- ldr r2, [r3]
- adds r0, r2, 0x1
- str r0, [r3]
- ldr r0, _08076B74 @ =gUnknown_0202F7C4
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08076B52
- adds r0, r2, 0x5
- str r0, [r3]
-_08076B52:
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- pop {r0}
- bx r0
- .align 2, 0
-_08076B70: .4byte gUnknown_0202F7A4
-_08076B74: .4byte gUnknown_0202F7C4
- thumb_func_end ma11_if_else
-
- thumb_func_start ma12_cond_if
-ma12_cond_if: @ 8076B78
- push {r4,r5,lr}
- ldr r5, _08076BA8 @ =gUnknown_0202F7A4
- ldr r4, [r5]
- adds r2, r4, 0x1
- str r2, [r5]
- ldrb r1, [r4, 0x1]
- adds r3, r2, 0x1
- str r3, [r5]
- ldr r0, _08076BAC @ =gUnknown_0202F7C4
- ldrb r0, [r0]
- cmp r1, r0
- bne _08076BB0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r5]
- b _08076BB4
- .align 2, 0
-_08076BA8: .4byte gUnknown_0202F7A4
-_08076BAC: .4byte gUnknown_0202F7C4
-_08076BB0:
- adds r0, r4, 0x6
- str r0, [r5]
-_08076BB4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ma12_cond_if
-
- thumb_func_start sub_8076BBC
-sub_8076BBC: @ 8076BBC
- ldr r3, _08076BDC @ =gUnknown_0202F7A4
- ldr r0, [r3]
- adds r2, r0, 0x1
- str r2, [r3]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- bx lr
- .align 2, 0
-_08076BDC: .4byte gUnknown_0202F7A4
- thumb_func_end sub_8076BBC
-
- thumb_func_start sub_8076BE0
-sub_8076BE0: @ 8076BE0
- push {lr}
- ldr r0, _08076BF8 @ =gMain
- ldr r1, _08076BFC @ =0x0000043d
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08076C00
- movs r0, 0
- b _08076C02
- .align 2, 0
-_08076BF8: .4byte gMain
-_08076BFC: .4byte 0x0000043d
-_08076C00:
- movs r0, 0x1
-_08076C02:
- pop {r1}
- bx r1
- thumb_func_end sub_8076BE0
-
- thumb_func_start ma14_load_background
-ma14_load_background: @ 8076C08
- push {r4,lr}
- ldr r1, _08076C3C @ =gUnknown_0202F7A4
- ldr r2, [r1]
- adds r0, r2, 0x1
- str r0, [r1]
- ldrb r4, [r2, 0x1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, _08076C40 @ =task_p5_load_battle_screen_elements
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08076C44 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- ldr r1, _08076C48 @ =gUnknown_0202F7C5
- movs r0, 0x1
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076C3C: .4byte gUnknown_0202F7A4
-_08076C40: .4byte task_p5_load_battle_screen_elements
-_08076C44: .4byte gTasks
-_08076C48: .4byte gUnknown_0202F7C5
- thumb_func_end ma14_load_background
-
- thumb_func_start sub_8076C4C
-sub_8076C4C: @ 8076C4C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, _08076C8C @ =gUnknown_0202F7A4
- ldr r1, [r2]
- adds r0, r1, 0x1
- str r0, [r2]
- ldrb r3, [r1, 0x1]
- mov r8, r3
- ldrb r7, [r0, 0x1]
- ldrb r6, [r0, 0x2]
- adds r1, 0x4
- str r1, [r2]
- ldr r0, _08076C90 @ =task_p5_load_battle_screen_elements
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08076C98
- ldr r1, _08076C94 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0x8]
- b _08076CCA
- .align 2, 0
-_08076C8C: .4byte gUnknown_0202F7A4
-_08076C90: .4byte task_p5_load_battle_screen_elements
-_08076C94: .4byte gTasks
-_08076C98:
- ldr r0, _08076CB4 @ =gUnknown_0202F7C9
- ldrb r0, [r0]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _08076CBC
- ldr r1, _08076CB8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0x8]
- b _08076CCA
- .align 2, 0
-_08076CB4: .4byte gUnknown_0202F7C9
-_08076CB8: .4byte gTasks
-_08076CBC:
- ldr r1, _08076CDC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- mov r1, r8
- strh r1, [r0, 0x8]
-_08076CCA:
- ldr r1, _08076CE0 @ =gUnknown_0202F7C5
- movs r0, 0x1
- strb r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08076CDC: .4byte gTasks
-_08076CE0: .4byte gUnknown_0202F7C5
- thumb_func_end sub_8076C4C
-
- thumb_func_start task_p5_load_battle_screen_elements
-task_p5_load_battle_screen_elements: @ 8076CE4
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08076D18 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r6, [r4, 0x1C]
- movs r0, 0x1C
- ldrsh r3, [r4, r0]
- adds r7, r1, 0
- cmp r3, 0
- bne _08076D1C
- str r3, [sp]
- movs r0, 0xE8
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginHardwarePaletteFade
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- b _08076DAC
- .align 2, 0
-_08076D18: .4byte gTasks
-_08076D1C:
- ldr r2, _08076D38 @ =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08076DAC
- cmp r3, 0x1
- bne _08076D40
- adds r0, r6, 0x1
- strh r0, [r4, 0x1C]
- ldr r1, _08076D3C @ =gUnknown_0202F7C5
- movs r0, 0x2
- strb r0, [r1]
- b _08076D84
- .align 2, 0
-_08076D38: .4byte gPaletteFade
-_08076D3C: .4byte gUnknown_0202F7C5
-_08076D40:
- cmp r3, 0x2
- bne _08076D84
- ldrh r0, [r4, 0x8]
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _08076D58
- bl dp01t_11_3_message_for_player_only
- b _08076D5E
-_08076D58:
- lsrs r0, r2, 16
- bl sub_8076DB8
-_08076D5E:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xE8
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r1, _08076D80 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x1C]
- adds r1, 0x1
- strh r1, [r0, 0x1C]
- b _08076DAC
- .align 2, 0
-_08076D80: .4byte gTasks
-_08076D84:
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08076DAC
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r7
- movs r1, 0x1C
- ldrsh r0, [r0, r1]
- cmp r0, 0x3
- bne _08076DAC
- adds r0, r5, 0
- bl DestroyTask
- ldr r0, _08076DB4 @ =gUnknown_0202F7C5
- strb r4, [r0]
-_08076DAC:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08076DB4: .4byte gUnknown_0202F7C5
- thumb_func_end task_p5_load_battle_screen_elements
-
- thumb_func_start sub_8076DB8
-sub_8076DB8: @ 8076DB8
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08076E70
- ldr r7, _08076E54 @ =gBattleAnimBackgroundTable
- lsls r0, r6, 1
- adds r0, r6
- lsls r4, r0, 2
- adds r0, r7, 0
- adds r0, 0x8
- adds r0, r4, r0
- ldr r5, [r0]
- bl sub_8076BE0
- lsls r0, 24
- ldr r1, _08076E58 @ =0x02018000
- cmp r0, 0
- beq _08076DE8
- ldr r0, _08076E5C @ =0xffffc800
- adds r1, r0
-_08076DE8:
- adds r0, r5, 0
- bl sub_800D238
- bl sub_80789BC
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8076BE0
- lsls r0, 24
- ldr r1, _08076E58 @ =0x02018000
- cmp r0, 0
- beq _08076E06
- ldr r0, _08076E5C @ =0xffffc800
- adds r1, r0
-_08076E06:
- movs r2, 0x80
- lsls r2, 1
- adds r0, r5, 0
- movs r3, 0
- bl sub_80763FC
- bl sub_8076BE0
- lsls r0, 24
- ldr r2, _08076E58 @ =0x02018000
- cmp r0, 0
- beq _08076E22
- ldr r0, _08076E5C @ =0xffffc800
- adds r2, r0
-_08076E22:
- ldr r1, _08076E60 @ =0x0600d000
- ldr r0, _08076E64 @ =0x040000d4
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _08076E68 @ =0x84000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- adds r0, r4, r7
- ldr r0, [r0]
- ldr r1, _08076E6C @ =0x06002000
- bl LZDecompressVram
- adds r0, r7, 0x4
- adds r0, r4, r0
- ldr r4, [r0]
- bl sub_80789BC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 20
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- b _08076E9E
- .align 2, 0
-_08076E54: .4byte gBattleAnimBackgroundTable
-_08076E58: .4byte 0x02018000
-_08076E5C: .4byte 0xffffc800
-_08076E60: .4byte 0x0600d000
-_08076E64: .4byte 0x040000d4
-_08076E68: .4byte 0x84000200
-_08076E6C: .4byte 0x06002000
-_08076E70:
- ldr r5, _08076EA4 @ =gBattleAnimBackgroundTable
- lsls r4, r6, 1
- adds r4, r6
- lsls r4, 2
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, _08076EA8 @ =0x0600d000
- bl LZDecompressVram
- adds r0, r4, r5
- ldr r0, [r0]
- ldr r1, _08076EAC @ =0x06008000
- bl LZDecompressVram
- adds r5, 0x4
- adds r4, r5
- ldr r0, [r4]
- movs r1, 0x20
- movs r2, 0x20
- bl LoadCompressedPalette
-_08076E9E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08076EA4: .4byte gBattleAnimBackgroundTable
-_08076EA8: .4byte 0x0600d000
-_08076EAC: .4byte 0x06008000
- thumb_func_end sub_8076DB8
-
- thumb_func_start dp01t_11_3_message_for_player_only
-dp01t_11_3_message_for_player_only: @ 8076EB0
- push {lr}
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08076EC2
- bl sub_80AB2AC
- b _08076EC6
-_08076EC2:
- bl sub_800D7B8
-_08076EC6:
- pop {r0}
- bx r0
- thumb_func_end dp01t_11_3_message_for_player_only
-
- thumb_func_start ma15_load_battle_screen_elements
-ma15_load_battle_screen_elements: @ 8076ECC
- push {lr}
- ldr r1, _08076EFC @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, _08076F00 @ =task_p5_load_battle_screen_elements
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08076F04 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _08076F08 @ =0x0000ffff
- strh r0, [r1, 0x8]
- ldr r1, _08076F0C @ =gUnknown_0202F7C5
- movs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08076EFC: .4byte gUnknown_0202F7A4
-_08076F00: .4byte task_p5_load_battle_screen_elements
-_08076F04: .4byte gTasks
-_08076F08: .4byte 0x0000ffff
-_08076F0C: .4byte gUnknown_0202F7C5
- thumb_func_end ma15_load_battle_screen_elements
-
- thumb_func_start ma16_wait_for_battle_screen_elements_s2
-ma16_wait_for_battle_screen_elements_s2: @ 8076F10
- push {lr}
- ldr r0, _08076F28 @ =gUnknown_0202F7C5
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _08076F34
- ldr r1, _08076F2C @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, _08076F30 @ =gUnknown_0202F7B0
- movs r0, 0
- b _08076F38
- .align 2, 0
-_08076F28: .4byte gUnknown_0202F7C5
-_08076F2C: .4byte gUnknown_0202F7A4
-_08076F30: .4byte gUnknown_0202F7B0
-_08076F34:
- ldr r1, _08076F40 @ =gUnknown_0202F7B0
- movs r0, 0x1
-_08076F38:
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08076F40: .4byte gUnknown_0202F7B0
- thumb_func_end ma16_wait_for_battle_screen_elements_s2
-
- thumb_func_start sub_8076F44
-sub_8076F44: @ 8076F44
- push {lr}
- ldr r0, _08076F5C @ =gUnknown_0202F7C5
- ldrb r2, [r0]
- cmp r2, 0
- bne _08076F68
- ldr r0, _08076F60 @ =gUnknown_0202F7A4
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, _08076F64 @ =gUnknown_0202F7B0
- strb r2, [r0]
- b _08076F6E
- .align 2, 0
-_08076F5C: .4byte gUnknown_0202F7C5
-_08076F60: .4byte gUnknown_0202F7A4
-_08076F64: .4byte gUnknown_0202F7B0
-_08076F68:
- ldr r1, _08076F74 @ =gUnknown_0202F7B0
- movs r0, 0x1
- strb r0, [r1]
-_08076F6E:
- pop {r0}
- bx r0
- .align 2, 0
-_08076F74: .4byte gUnknown_0202F7B0
- thumb_func_end sub_8076F44
-
- thumb_func_start ma18_load_background_probably
-ma18_load_background_probably: @ 8076F78
- push {r4,lr}
- ldr r4, _08076F94 @ =gUnknown_0202F7A4
- ldr r1, [r4]
- adds r0, r1, 0x1
- str r0, [r4]
- ldrb r0, [r1, 0x1]
- bl sub_8076DB8
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076F94: .4byte gUnknown_0202F7A4
- thumb_func_end ma18_load_background_probably
-
- thumb_func_start sub_8076F98
-sub_8076F98: @ 8076F98
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _08076FDC
- ldr r0, _08076FD4 @ =gUnknown_0202F7C8
- ldrb r2, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _08076FD8 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08076FDC
- adds r0, r2, 0
- bl battle_side_get_owner
- lsls r0, 24
- movs r4, 0xC0
- cmp r0, 0
- beq _0807706E
- movs r4, 0x3F
- b _0807706E
- .align 2, 0
-_08076FD4: .4byte gUnknown_0202F7C8
-_08076FD8: .4byte 0x02017810
-_08076FDC:
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08077004
- ldr r0, _08076FFC @ =gUnknown_0202F7C8
- ldr r1, _08077000 @ =gUnknown_0202F7C9
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08077068
- cmp r0, 0x2
- bne _08077068
- cmp r4, 0x3F
- beq _0807707A
- b _08077068
- .align 2, 0
-_08076FFC: .4byte gUnknown_0202F7C8
-_08077000: .4byte gUnknown_0202F7C9
-_08077004:
- ldr r0, _0807702C @ =gUnknown_0202F7C8
- ldrb r0, [r0]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _08077042
- ldr r0, _08077030 @ =gUnknown_0202F7C9
- ldrb r0, [r0]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _0807706E
- lsls r0, r4, 24
- asrs r1, r0, 24
- cmp r1, 0x3F
- bne _08077034
- movs r4, 0xC0
- b _0807706E
- .align 2, 0
-_0807702C: .4byte gUnknown_0202F7C8
-_08077030: .4byte gUnknown_0202F7C9
-_08077034:
- movs r0, 0x40
- negs r0, r0
- cmp r1, r0
- beq _0807706E
- negs r0, r1
- lsls r0, 24
- b _0807706C
-_08077042:
- ldr r0, _08077064 @ =gUnknown_0202F7C9
- ldrb r0, [r0]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08077068
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0x40
- negs r1, r1
- cmp r0, r1
- bne _0807706E
- movs r4, 0x3F
- b _0807706E
- .align 2, 0
-_08077064: .4byte gUnknown_0202F7C9
-_08077068:
- lsls r0, r4, 24
- negs r0, r0
-_0807706C:
- lsrs r4, r0, 24
-_0807706E:
- lsls r0, r4, 24
- asrs r0, 24
- cmp r0, 0x3F
- ble _0807707A
- movs r4, 0x3F
- b _08077088
-_0807707A:
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0x40
- negs r1, r1
- cmp r0, r1
- bge _08077088
- movs r4, 0xC0
-_08077088:
- lsls r0, r4, 24
- asrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8076F98
-
- thumb_func_start sub_8077094
-sub_8077094: @ 8077094
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _080770D8
- ldr r0, _080770D0 @ =gUnknown_0202F7C8
- ldrb r2, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _080770D4 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080770D8
- adds r0, r2, 0
- bl battle_side_get_owner
- lsls r0, 24
- movs r4, 0xC0
- cmp r0, 0
- beq _080770F6
- movs r4, 0x3F
- b _080770F6
- .align 2, 0
-_080770D0: .4byte gUnknown_0202F7C8
-_080770D4: .4byte 0x02017810
-_080770D8:
- ldr r0, _08077100 @ =gUnknown_0202F7C8
- ldrb r0, [r0]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _080770F0
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _080770F6
-_080770F0:
- lsls r0, r4, 24
- negs r0, r0
- lsrs r4, r0, 24
-_080770F6:
- lsls r0, r4, 24
- asrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08077100: .4byte gUnknown_0202F7C8
- thumb_func_end sub_8077094
-
- thumb_func_start sub_8077104
-sub_8077104: @ 8077104
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r2, r0, 16
- cmp r2, 0x3F
- ble _08077114
- movs r1, 0x3F
- b _0807711E
-_08077114:
- movs r0, 0x40
- negs r0, r0
- cmp r2, r0
- bge _0807711E
- ldr r1, _08077128 @ =0x0000ffc0
-_0807711E:
- lsls r0, r1, 16
- asrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08077128: .4byte 0x0000ffc0
- thumb_func_end sub_8077104
-
- thumb_func_start sub_807712C
-sub_807712C: @ 807712C
- push {lr}
- lsls r2, 16
- lsrs r2, 16
- adds r3, r2, 0
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bge _0807714A
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0
- bge _0807715A
- b _08077158
-_0807714A:
- cmp r0, r1
- ble _08077160
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0
- bge _08077158
- negs r0, r0
-_08077158:
- negs r0, r0
-_0807715A:
- lsls r0, 16
- lsrs r0, 16
- b _08077162
-_08077160:
- movs r0, 0
-_08077162:
- lsls r0, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_807712C
-
- thumb_func_start ma19_08073BC8
-ma19_08073BC8: @ 807716C
- push {r4,r5,lr}
- ldr r5, _080771A0 @ =gUnknown_0202F7A4
- ldr r0, [r5]
- adds r1, r0, 0x1
- str r1, [r5]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r4, r0
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl sub_8076F98
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r4, 0
- bl PlaySE12WithPanning
- ldr r0, [r5]
- adds r0, 0x3
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080771A0: .4byte gUnknown_0202F7A4
- thumb_func_end ma19_08073BC8
-
- thumb_func_start ma1A_8073C00
-ma1A_8073C00: @ 80771A4
- push {r4,lr}
- ldr r4, _080771CC @ =gUnknown_0202F7A4
- ldr r1, [r4]
- adds r0, r1, 0x1
- str r0, [r4]
- movs r0, 0x1
- ldrsb r0, [r1, r0]
- bl sub_8076F98
- lsls r0, 24
- asrs r0, 24
- bl SE12PanpotControl
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080771CC: .4byte gUnknown_0202F7A4
- thumb_func_end ma1A_8073C00
-
- thumb_func_start ma1B_8073C2C
-ma1B_8073C2C: @ 80771D0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08077280 @ =gUnknown_0202F7A4
- mov r10, r0
- ldr r0, [r0]
- adds r1, r0, 0x1
- mov r2, r10
- str r1, [r2]
- ldrb r0, [r0, 0x1]
- mov r9, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- mov r2, r9
- orrs r2, r0
- mov r9, r2
- ldrb r4, [r1, 0x3]
- ldrb r6, [r1, 0x4]
- ldrb r7, [r1, 0x5]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl sub_8076F98
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- asrs r4, 24
- adds r0, r4, 0
- bl sub_8076F98
- mov r8, r0
- lsls r5, 24
- asrs r5, 24
- mov r0, r8
- lsls r0, 24
- asrs r0, 24
- mov r8, r0
- lsls r6, 24
- asrs r6, 24
- adds r0, r5, 0
- mov r1, r8
- adds r2, r6, 0
- bl sub_807712C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08077284 @ =c3_08073CEC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08077288 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- mov r2, r8
- strh r2, [r1, 0xA]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xC]
- strh r7, [r1, 0xE]
- strh r5, [r1, 0x10]
- mov r0, r9
- adds r1, r5, 0
- bl PlaySE12WithPanning
- ldr r1, _0807728C @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r1, r10
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077280: .4byte gUnknown_0202F7A4
-_08077284: .4byte c3_08073CEC
-_08077288: .4byte gTasks
-_0807728C: .4byte gUnknown_0202F7B3
- thumb_func_end ma1B_8073C2C
-
- thumb_func_start c3_08073CEC
-c3_08073CEC: @ 8077290
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- ldr r1, _080772D4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x18]
- adds r1, r0, 0x1
- strh r1, [r2, 0x18]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0xE
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _08077314
- strh r7, [r2, 0x18]
- ldrh r6, [r2, 0x8]
- ldrh r3, [r2, 0xA]
- movs r4, 0x10
- ldrsh r0, [r2, r4]
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- adds r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- strh r4, [r2, 0x10]
- cmp r1, 0
- bne _080772D8
- lsls r2, r3, 16
- b _080772FC
- .align 2, 0
-_080772D4: .4byte gTasks
-_080772D8:
- lsls r1, r6, 16
- lsls r0, r3, 16
- asrs r3, r0, 16
- adds r2, r0, 0
- cmp r1, r2
- bge _080772EE
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- blt _080772F8
- b _080772FC
-_080772EE:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- bgt _080772F8
- movs r7, 0x1
-_080772F8:
- cmp r7, 0
- beq _0807730C
-_080772FC:
- lsrs r4, r2, 16
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, _0807731C @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_0807730C:
- lsls r0, r4, 24
- asrs r0, 24
- bl SE12PanpotControl
-_08077314:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807731C: .4byte gUnknown_0202F7B3
- thumb_func_end c3_08073CEC
-
- thumb_func_start sub_8077320
-sub_8077320: @ 8077320
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldr r0, _080773A4 @ =gUnknown_0202F7A4
- mov r9, r0
- ldr r0, [r0]
- adds r1, r0, 0x1
- mov r2, r9
- str r1, [r2]
- ldrb r0, [r0, 0x1]
- mov r8, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- mov r2, r8
- orrs r2, r0
- mov r8, r2
- ldrb r4, [r1, 0x2]
- ldrb r5, [r1, 0x3]
- ldrb r6, [r1, 0x4]
- ldrb r1, [r1, 0x5]
- mov r10, r1
- ldr r0, _080773A8 @ =c3_08073CEC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080773AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0x8]
- lsls r5, 24
- asrs r5, 24
- strh r5, [r1, 0xA]
- lsls r6, 24
- asrs r6, 24
- strh r6, [r1, 0xC]
- mov r0, r10
- strh r0, [r1, 0xE]
- strh r4, [r1, 0x10]
- mov r0, r8
- adds r1, r4, 0
- bl PlaySE12WithPanning
- ldr r1, _080773B0 @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r1, r9
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080773A4: .4byte gUnknown_0202F7A4
-_080773A8: .4byte c3_08073CEC
-_080773AC: .4byte gTasks
-_080773B0: .4byte gUnknown_0202F7B3
- thumb_func_end sub_8077320
-
- thumb_func_start sub_80773B4
-sub_80773B4: @ 80773B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08077464 @ =gUnknown_0202F7A4
- mov r10, r0
- ldr r0, [r0]
- adds r1, r0, 0x1
- mov r2, r10
- str r1, [r2]
- ldrb r0, [r0, 0x1]
- mov r9, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- mov r2, r9
- orrs r2, r0
- mov r9, r2
- ldrb r4, [r1, 0x3]
- ldrb r0, [r1, 0x4]
- mov r8, r0
- ldrb r7, [r1, 0x5]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl sub_8077094
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- asrs r4, 24
- adds r0, r4, 0
- bl sub_8077094
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- mov r0, r8
- bl sub_8077094
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08077468 @ =c3_08073CEC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807746C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r6, 24
- asrs r6, 24
- strh r6, [r1, 0x8]
- lsls r5, 24
- asrs r5, 24
- strh r5, [r1, 0xA]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xC]
- strh r7, [r1, 0xE]
- strh r6, [r1, 0x10]
- mov r0, r9
- adds r1, r6, 0
- bl PlaySE12WithPanning
- ldr r1, _08077470 @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r2, r10
- ldr r0, [r2]
- adds r0, 0x6
- str r0, [r2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077464: .4byte gUnknown_0202F7A4
-_08077468: .4byte c3_08073CEC
-_0807746C: .4byte gTasks
-_08077470: .4byte gUnknown_0202F7B3
- thumb_func_end sub_80773B4
-
- thumb_func_start ma1C_8073ED0
-ma1C_8073ED0: @ 8077474
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r6, _080774EC @ =gUnknown_0202F7A4
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r5, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r5, r0
- ldrb r0, [r1, 0x3]
- mov r8, r0
- ldrb r2, [r1, 0x4]
- mov r9, r2
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl sub_8076F98
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080774F0 @ =sub_80774FC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080774F4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xA]
- mov r2, r8
- strh r2, [r1, 0xC]
- mov r2, r9
- strh r2, [r1, 0xE]
- mov r2, r8
- strh r2, [r1, 0x18]
- ldr r1, [r1]
- bl _call_via_r1
- ldr r1, _080774F8 @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x5
- str r0, [r6]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080774EC: .4byte gUnknown_0202F7A4
-_080774F0: .4byte sub_80774FC
-_080774F4: .4byte gTasks
-_080774F8: .4byte gUnknown_0202F7B3
- thumb_func_end ma1C_8073ED0
-
- thumb_func_start sub_80774FC
-sub_80774FC: @ 80774FC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08077550 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x18]
- adds r1, r0, 0x1
- strh r1, [r2, 0x18]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _0807754A
- movs r0, 0
- strh r0, [r2, 0x18]
- ldrh r0, [r2, 0x8]
- ldrb r1, [r2, 0xA]
- ldrh r4, [r2, 0xE]
- subs r4, 0x1
- strh r4, [r2, 0xE]
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- cmp r4, 0
- bne _0807754A
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, _08077554 @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_0807754A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08077550: .4byte gTasks
-_08077554: .4byte gUnknown_0202F7B3
- thumb_func_end sub_80774FC
-
- thumb_func_start ma1D_08073FB4
-ma1D_08073FB4: @ 8077558
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r6, _080775BC @ =gUnknown_0202F7A4
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r5, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r5, r0
- ldrb r0, [r1, 0x3]
- mov r8, r0
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl sub_8076F98
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080775C0 @ =sub_80775CC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080775C4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xA]
- mov r0, r8
- strh r0, [r1, 0xC]
- ldr r1, _080775C8 @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x4
- str r0, [r6]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080775BC: .4byte gUnknown_0202F7A4
-_080775C0: .4byte sub_80775CC
-_080775C4: .4byte gTasks
-_080775C8: .4byte gUnknown_0202F7B3
- thumb_func_end ma1D_08073FB4
-
- thumb_func_start sub_80775CC
-sub_80775CC: @ 80775CC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08077608 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0xC]
- subs r1, r0, 0x1
- strh r1, [r2, 0xC]
- lsls r0, 16
- cmp r0, 0
- bgt _08077600
- ldrh r0, [r2, 0x8]
- movs r1, 0xA
- ldrsb r1, [r2, r1]
- bl PlaySE12WithPanning
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _0807760C @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_08077600:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08077608: .4byte gTasks
-_0807760C: .4byte gUnknown_0202F7B3
- thumb_func_end sub_80775CC
-
- thumb_func_start sub_8077610
-sub_8077610: @ 8077610
- push {r4-r6,lr}
- ldr r4, _08077678 @ =gUnknown_0202F7A4
- ldr r1, [r4]
- adds r3, r1, 0x1
- str r3, [r4]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r6, r2, r0
- adds r0, r1, 0x5
- str r0, [r4]
- ldrb r0, [r1, 0x5]
- adds r1, 0x6
- str r1, [r4]
- cmp r0, 0
- beq _0807765A
- adds r5, r4, 0
- ldr r4, _0807767C @ =gBattleAnimArgs
- adds r3, r0, 0
-_08077642:
- ldr r2, [r5]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r4]
- adds r2, 0x2
- str r2, [r5]
- adds r4, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _08077642
-_0807765A:
- adds r0, r6, 0
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r6
- ldr r1, _08077680 @ =gUnknown_0202F7B3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08077678: .4byte gUnknown_0202F7A4
-_0807767C: .4byte gBattleAnimArgs
-_08077680: .4byte gUnknown_0202F7B3
- thumb_func_end sub_8077610
-
- thumb_func_start ma20_wait_for_something
-ma20_wait_for_something: @ 8077684
- push {r4,r5,lr}
- ldr r0, _080776BC @ =gUnknown_0202F7B3
- ldrb r5, [r0]
- cmp r5, 0
- bne _080776CC
- bl IsSEPlaying
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080776E4
- ldr r4, _080776C0 @ =gUnknown_03004AF0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5A
- bls _080776D2
- ldr r0, _080776C4 @ =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, _080776C8 @ =gMPlay_SE2
- bl m4aMPlayStop
- strh r5, [r4]
- b _080776F6
- .align 2, 0
-_080776BC: .4byte gUnknown_0202F7B3
-_080776C0: .4byte gUnknown_03004AF0
-_080776C4: .4byte gMPlay_SE1
-_080776C8: .4byte gMPlay_SE2
-_080776CC:
- ldr r1, _080776DC @ =gUnknown_03004AF0
- movs r0, 0
- strh r0, [r1]
-_080776D2:
- ldr r1, _080776E0 @ =gUnknown_0202F7B0
- movs r0, 0x1
- strb r0, [r1]
- b _080776F6
- .align 2, 0
-_080776DC: .4byte gUnknown_03004AF0
-_080776E0: .4byte gUnknown_0202F7B0
-_080776E4:
- ldr r0, _080776FC @ =gUnknown_03004AF0
- movs r2, 0
- strh r1, [r0]
- ldr r1, _08077700 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, _08077704 @ =gUnknown_0202F7B0
- strb r2, [r0]
-_080776F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080776FC: .4byte gUnknown_03004AF0
-_08077700: .4byte gUnknown_0202F7A4
-_08077704: .4byte gUnknown_0202F7B0
- thumb_func_end ma20_wait_for_something
-
- thumb_func_start ma21_08074164
-ma21_08074164: @ 8077708
- push {r4-r6,lr}
- ldr r5, _08077748 @ =gUnknown_0202F7A4
- ldr r4, [r5]
- adds r3, r4, 0x1
- str r3, [r5]
- ldrb r2, [r4, 0x1]
- ldrb r1, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r0, _0807774C @ =gBattleAnimArgs
- lsls r2, 1
- adds r2, r0
- lsls r1, 16
- asrs r1, 16
- movs r6, 0
- ldrsh r0, [r2, r6]
- cmp r1, r0
- bne _08077750
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- adds r1, r0
- str r1, [r5]
- b _08077756
- .align 2, 0
-_08077748: .4byte gUnknown_0202F7A4
-_0807774C: .4byte gBattleAnimArgs
-_08077750:
- adds r0, r4, 0
- adds r0, 0x8
- str r0, [r5]
-_08077756:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end ma21_08074164
-
- thumb_func_start sub_807775C
-sub_807775C: @ 807775C
- push {r4,lr}
- ldr r4, _0807778C @ =gUnknown_0202F7A4
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- beq _08077790
- ldr r2, [r4]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r4]
- b _08077796
- .align 2, 0
-_0807778C: .4byte gUnknown_0202F7A4
-_08077790:
- ldr r0, [r4]
- adds r0, 0x4
- str r0, [r4]
-_08077796:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807775C
-
- thumb_func_start sub_807779C
-sub_807779C: @ 807779C
- push {r4,lr}
- ldr r0, _080777B0 @ =gUnknown_0202F7A4
- ldr r1, [r0]
- ldrb r2, [r1, 0x1]
- adds r1, 0x2
- str r1, [r0]
- cmp r2, 0
- beq _080777B8
- ldr r0, _080777B4 @ =gUnknown_0202F7C9
- b _080777BA
- .align 2, 0
-_080777B0: .4byte gUnknown_0202F7A4
-_080777B4: .4byte gUnknown_0202F7C9
-_080777B8:
- ldr r0, _080777FC @ =gUnknown_0202F7C8
-_080777BA:
- ldrb r0, [r0]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _080777F4
- cmp r4, 0
- beq _080777D6
- cmp r4, 0x3
- bne _080777F4
-_080777D6:
- ldr r3, _08077800 @ =REG_BG1CNT
- ldrb r2, [r3]
- movs r1, 0x4
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r3]
- ldr r2, _08077804 @ =REG_BG2CNT
- ldrb r0, [r2]
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- strb r1, [r2]
-_080777F4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080777FC: .4byte gUnknown_0202F7C8
-_08077800: .4byte REG_BG1CNT
-_08077804: .4byte REG_BG2CNT
- thumb_func_end sub_807779C
-
- thumb_func_start sub_8077808
-sub_8077808: @ 8077808
- push {lr}
- ldr r0, _08077840 @ =gUnknown_0202F7A4
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _0807783A
- ldr r3, _08077844 @ =REG_BG1CNT
- ldrb r2, [r3]
- movs r1, 0x4
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r3]
- ldr r2, _08077848 @ =REG_BG2CNT
- ldrb r0, [r2]
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- strb r1, [r2]
-_0807783A:
- pop {r0}
- bx r0
- .align 2, 0
-_08077840: .4byte gUnknown_0202F7A4
-_08077844: .4byte REG_BG1CNT
-_08077848: .4byte REG_BG2CNT
- thumb_func_end sub_8077808
-
- thumb_func_start sub_807784C
-sub_807784C: @ 807784C
- push {r4-r7,lr}
- ldr r1, _0807787C @ =gUnknown_0202F7A4
- ldr r0, [r1]
- ldrb r6, [r0, 0x1]
- adds r0, 0x2
- str r0, [r1]
- ldr r7, _08077880 @ =gUnknown_0202F7C8
- ldrb r0, [r7]
- bl battle_side_get_owner
- adds r4, r0, 0
- ldr r5, _08077884 @ =gUnknown_0202F7C9
- ldrb r0, [r5]
- bl battle_side_get_owner
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080778C2
- cmp r6, 0
- beq _08077888
- ldrb r0, [r5]
- b _0807788A
- .align 2, 0
-_0807787C: .4byte gUnknown_0202F7A4
-_08077880: .4byte gUnknown_0202F7C8
-_08077884: .4byte gUnknown_0202F7C9
-_08077888:
- ldrb r0, [r7]
-_0807788A:
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _080778C2
- cmp r4, 0
- beq _080778A4
- cmp r4, 0x3
- bne _080778C2
-_080778A4:
- ldr r3, _080778C8 @ =REG_BG1CNT
- ldrb r2, [r3]
- movs r1, 0x4
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r3]
- ldr r2, _080778CC @ =REG_BG2CNT
- ldrb r0, [r2]
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- strb r1, [r2]
-_080778C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080778C8: .4byte REG_BG1CNT
-_080778CC: .4byte REG_BG2CNT
- thumb_func_end sub_807784C
-
- thumb_func_start ma2B_make_side_invisible
-ma2B_make_side_invisible: @ 80778D0
- push {r4,lr}
- ldr r4, _08077904 @ =gUnknown_0202F7A4
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl obj_id_for_side_relative_to_move
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080778F8
- ldr r1, _08077908 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080778F8:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08077904: .4byte gUnknown_0202F7A4
-_08077908: .4byte gSprites
- thumb_func_end ma2B_make_side_invisible
-
- thumb_func_start ma2C_make_side_visible
-ma2C_make_side_visible: @ 807790C
- push {r4,lr}
- ldr r4, _08077944 @ =gUnknown_0202F7A4
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl obj_id_for_side_relative_to_move
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _08077936
- ldr r1, _08077948 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_08077936:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08077944: .4byte gUnknown_0202F7A4
-_08077948: .4byte gSprites
- thumb_func_end ma2C_make_side_visible
-
- thumb_func_start sub_807794C
-sub_807794C: @ 807794C
- push {r4-r7,lr}
- ldr r1, _08077998 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- ldrb r7, [r0, 0x1]
- adds r0, 0x2
- str r0, [r1]
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _080779F6
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080779F6
- ldr r6, _0807799C @ =gUnknown_0202F7C8
- ldrb r0, [r6]
- bl battle_side_get_owner
- adds r4, r0, 0
- ldr r5, _080779A0 @ =gUnknown_0202F7C9
- ldrb r0, [r5]
- bl battle_side_get_owner
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080779F6
- cmp r7, 0
- bne _080779A4
- ldrb r0, [r6]
- bl battle_get_per_side_status_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- b _080779B0
- .align 2, 0
-_08077998: .4byte gUnknown_0202F7A4
-_0807799C: .4byte gUnknown_0202F7C8
-_080779A0: .4byte gUnknown_0202F7C9
-_080779A4:
- ldrb r0, [r5]
- bl battle_get_per_side_status_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
-_080779B0:
- bl obj_id_for_side_relative_to_move
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080779F6
- ldr r1, _080779EC @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r2, r0, r1
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- cmp r4, 0x2
- bne _080779E0
- ldrb r0, [r2, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080779E0:
- cmp r4, 0x1
- bne _080779F0
- movs r0, 0
- bl sub_8076464
- b _080779F6
- .align 2, 0
-_080779EC: .4byte gSprites
-_080779F0:
- movs r0, 0x1
- bl sub_8076464
-_080779F6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_807794C
-
- thumb_func_start sub_80779FC
-sub_80779FC: @ 80779FC
- push {r4-r7,lr}
- ldr r1, _08077A48 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- ldrb r7, [r0, 0x1]
- adds r0, 0x2
- str r0, [r1]
- bl sub_8076BE0
- lsls r0, 24
- cmp r0, 0
- bne _08077A88
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08077A88
- ldr r6, _08077A4C @ =gUnknown_0202F7C8
- ldrb r0, [r6]
- bl battle_side_get_owner
- adds r4, r0, 0
- ldr r5, _08077A50 @ =gUnknown_0202F7C9
- ldrb r0, [r5]
- bl battle_side_get_owner
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _08077A88
- cmp r7, 0
- bne _08077A54
- ldrb r0, [r6]
- bl battle_get_per_side_status_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- b _08077A60
- .align 2, 0
-_08077A48: .4byte gUnknown_0202F7A4
-_08077A4C: .4byte gUnknown_0202F7C8
-_08077A50: .4byte gUnknown_0202F7C9
-_08077A54:
- ldrb r0, [r5]
- bl battle_get_per_side_status_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
-_08077A60:
- bl obj_id_for_side_relative_to_move
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _08077A88
- cmp r4, 0x2
- bne _08077A88
- ldr r1, _08077A90 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x5]
-_08077A88:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077A90: .4byte gSprites
- thumb_func_end sub_80779FC
-
- thumb_func_start ma2F_stop_music
-ma2F_stop_music: @ 8077A94
- push {lr}
- ldr r0, _08077AB0 @ =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, _08077AB4 @ =gMPlay_SE2
- bl m4aMPlayStop
- ldr r1, _08077AB8 @ =gUnknown_0202F7A4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08077AB0: .4byte gMPlay_SE1
-_08077AB4: .4byte gMPlay_SE2
-_08077AB8: .4byte gUnknown_0202F7A4
- thumb_func_end ma2F_stop_music
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s
index ae6709650..32429e22d 100644
--- a/asm/battle_anim_80CA710.s
+++ b/asm/battle_anim_80CA710.s
@@ -31309,7 +31309,7 @@ sub_80D97CC: @ 80D97CC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D9828
- ldr r4, _080D981C @ =gUnknown_02024C07
+ ldr r4, _080D981C @ =gPlayerMonIndex
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -31338,7 +31338,7 @@ sub_80D97CC: @ 80D97CC
b _080D9844
.align 2, 0
_080D9818: .4byte gBattleAnimArgs
-_080D981C: .4byte gUnknown_02024C07
+_080D981C: .4byte gPlayerMonIndex
_080D9820: .4byte gUnknown_0202F7C8
_080D9824: .4byte gUnknown_0202F7C9
_080D9828:
@@ -31614,7 +31614,7 @@ sub_80D9A38: @ 80D9A38
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D9A7C
- ldr r4, _080D9A70 @ =gUnknown_02024C07
+ ldr r4, _080D9A70 @ =gPlayerMonIndex
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -31633,7 +31633,7 @@ sub_80D9A38: @ 80D9A38
b _080D9A82
.align 2, 0
_080D9A6C: .4byte gBattleAnimArgs
-_080D9A70: .4byte gUnknown_02024C07
+_080D9A70: .4byte gPlayerMonIndex
_080D9A74: .4byte gUnknown_0202F7C9
_080D9A78: .4byte gUnknown_0202F7C8
_080D9A7C:
@@ -43672,7 +43672,7 @@ sub_80DF78C: @ 80DF78C
ldr r0, _080DF7E4 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r6, 0x3A]
- ldr r4, _080DF7E8 @ =gUnknown_02024C07
+ ldr r4, _080DF7E8 @ =gPlayerMonIndex
ldrb r0, [r4]
movs r1, 0
bl sub_807A100
@@ -43690,7 +43690,7 @@ sub_80DF78C: @ 80DF78C
.align 2, 0
_080DF7E0: .4byte gUnknown_0202F7C8
_080DF7E4: .4byte gBattleAnimArgs
-_080DF7E8: .4byte gUnknown_02024C07
+_080DF7E8: .4byte gPlayerMonIndex
_080DF7EC:
lsrs r0, r1, 17
_080DF7EE:
@@ -53227,7 +53227,7 @@ sub_80E4234: @ 80E4234
lsls r0, 24
lsrs r0, 24
ldr r2, _080E4254 @ =gUnknown_0202F7C8
- ldr r1, _080E4258 @ =gUnknown_02024C08
+ ldr r1, _080E4258 @ =gEnemyMonIndex
ldrb r1, [r1]
strb r1, [r2]
ldr r2, _080E425C @ =gUnknown_0202F7C9
@@ -53239,7 +53239,7 @@ sub_80E4234: @ 80E4234
bx r0
.align 2, 0
_080E4254: .4byte gUnknown_0202F7C8
-_080E4258: .4byte gUnknown_02024C08
+_080E4258: .4byte gEnemyMonIndex
_080E425C: .4byte gUnknown_0202F7C9
_080E4260: .4byte gUnknown_02024C0A
thumb_func_end sub_80E4234
@@ -53287,7 +53287,7 @@ sub_80E42B0: @ 80E42B0
lsls r0, 24
lsrs r0, 24
ldr r2, _080E42C8 @ =gUnknown_0202F7C9
- ldr r1, _080E42CC @ =gUnknown_02024C08
+ ldr r1, _080E42CC @ =gEnemyMonIndex
ldrb r1, [r1]
strb r1, [r2]
bl move_anim_task_del
@@ -53295,7 +53295,7 @@ sub_80E42B0: @ 80E42B0
bx r0
.align 2, 0
_080E42C8: .4byte gUnknown_0202F7C9
-_080E42CC: .4byte gUnknown_02024C08
+_080E42CC: .4byte gEnemyMonIndex
thumb_func_end sub_80E42B0
thumb_func_start sub_80E42D0
@@ -53304,7 +53304,7 @@ sub_80E42D0: @ 80E42D0
lsls r0, 24
lsrs r0, 24
ldr r2, _080E42F0 @ =gUnknown_0202F7C8
- ldr r1, _080E42F4 @ =gUnknown_02024C07
+ ldr r1, _080E42F4 @ =gPlayerMonIndex
ldrb r1, [r1]
strb r1, [r2]
ldr r2, _080E42F8 @ =gUnknown_0202F7C9
@@ -53316,7 +53316,7 @@ sub_80E42D0: @ 80E42D0
bx r0
.align 2, 0
_080E42F0: .4byte gUnknown_0202F7C8
-_080E42F4: .4byte gUnknown_02024C07
+_080E42F4: .4byte gPlayerMonIndex
_080E42F8: .4byte gUnknown_0202F7C9
_080E42FC: .4byte gUnknown_02024C0A
thumb_func_end sub_80E42D0
diff --git a/asm/battle_message.s b/asm/battle_message.s
index c4e4a7dd0..0e3588d14 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -16,7 +16,7 @@ sub_8120AA8: @ 8120AA8
lsls r0, 16
lsrs r7, r0, 16
movs r6, 0
- ldr r5, _08120B70 @ =gUnknown_02039270
+ ldr r5, _08120B70 @ =gSelectedOrderFromParty
ldr r4, _08120B74 @ =gUnknown_02024A60
ldrb r1, [r4]
lsls r1, 9
@@ -73,7 +73,7 @@ _08120B10:
movs r2, 0
ldr r0, _08120B9C @ =gUnknown_030041C0
mov r8, r0
- ldr r3, _08120B70 @ =gUnknown_02039270
+ ldr r3, _08120B70 @ =gSelectedOrderFromParty
ldr r1, _08120BA4 @ =gUnknown_03004290
mov r12, r1
ldr r5, _08120BA8 @ =gUnknown_030042B0
@@ -111,7 +111,7 @@ _08120B64:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_08120B70: .4byte gUnknown_02039270
+_08120B70: .4byte gSelectedOrderFromParty
_08120B74: .4byte gUnknown_02024A60
_08120B78: .4byte gUnknown_02023A64
_08120B7C: .4byte gUnknown_02024C04
@@ -414,7 +414,7 @@ _08120DE4: .4byte gUnknown_08400622
_08120DE8:
mov r0, r10
bl sub_8121D1C
- ldr r0, _08120E14 @ =gUnknown_02039270
+ ldr r0, _08120E14 @ =gSelectedOrderFromParty
ldr r2, [r0]
ldrh r1, [r2]
movs r0, 0xB1
@@ -433,7 +433,7 @@ _08120DE8:
bl StringCopy
b _08120E38
.align 2, 0
-_08120E14: .4byte gUnknown_02039270
+_08120E14: .4byte gSelectedOrderFromParty
_08120E18: .4byte gUnknown_03004290
_08120E1C: .4byte gUnknown_08401674
_08120E20: .4byte 0x02000000
@@ -968,7 +968,7 @@ _0812129C: .4byte gUnknown_02024A6A
_081212A0: .4byte gLinkPlayers
_081212A4: .4byte gEnemyParty
_081212A8:
- ldr r4, _081212CC @ =gUnknown_02024C07
+ ldr r4, _081212CC @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -985,7 +985,7 @@ _081212A8:
ldr r4, _081212D8 @ =gUnknown_08400797
b _081212E6
.align 2, 0
-_081212CC: .4byte gUnknown_02024C07
+_081212CC: .4byte gPlayerMonIndex
_081212D0: .4byte gBattleTypeFlags
_081212D4: .4byte gUnknown_08400791
_081212D8: .4byte gUnknown_08400797
@@ -1035,7 +1035,7 @@ _0812131C:
.align 2, 0
_08121338: .4byte gUnknown_02024A6A
_0812133C:
- ldr r4, _08121370 @ =gUnknown_02024C07
+ ldr r4, _08121370 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -1059,7 +1059,7 @@ _0812133C:
adds r0, r1
b _0812190E
.align 2, 0
-_08121370: .4byte gUnknown_02024C07
+_08121370: .4byte gPlayerMonIndex
_08121374: .4byte gUnknown_02024A6A
_08121378: .4byte gPlayerParty
_0812137C:
@@ -1083,7 +1083,7 @@ _0812137C:
_081213A0: .4byte gUnknown_02024A6A
_081213A4: .4byte gEnemyParty
_081213A8:
- ldr r5, _081213F4 @ =gUnknown_02024C07
+ ldr r5, _081213F4 @ =gPlayerMonIndex
ldrb r0, [r5]
bl battle_side_get_owner
lsls r0, 24
@@ -1123,7 +1123,7 @@ _081213E8:
ldrh r1, [r0]
b _08121908
.align 2, 0
-_081213F4: .4byte gUnknown_02024C07
+_081213F4: .4byte gPlayerMonIndex
_081213F8: .4byte gBattleTypeFlags
_081213FC: .4byte gUnknown_08400791
_08121400: .4byte gUnknown_08400797
@@ -1139,7 +1139,7 @@ _0812140C:
.align 2, 0
_08121418: .4byte gUnknown_02024A6A
_0812141C:
- ldr r5, _08121468 @ =gUnknown_02024C08
+ ldr r5, _08121468 @ =gEnemyMonIndex
ldrb r0, [r5]
bl battle_side_get_owner
lsls r0, 24
@@ -1179,7 +1179,7 @@ _0812145C:
ldrh r1, [r0]
b _08121908
.align 2, 0
-_08121468: .4byte gUnknown_02024C08
+_08121468: .4byte gEnemyMonIndex
_0812146C: .4byte gBattleTypeFlags
_08121470: .4byte gUnknown_08400791
_08121474: .4byte gUnknown_08400797
@@ -1368,7 +1368,7 @@ _081215E8:
.align 2, 0
_081215F4: .4byte gUnknown_02024A6A
_081215F8:
- ldr r0, _08121610 @ =gUnknown_02039270
+ ldr r0, _08121610 @ =gSelectedOrderFromParty
ldr r2, [r0]
ldrh r1, [r2]
movs r0, 0xB1
@@ -1380,14 +1380,14 @@ _081215F8:
adds r0, r2
b _08121634
.align 2, 0
-_08121610: .4byte gUnknown_02039270
+_08121610: .4byte gSelectedOrderFromParty
_08121614: .4byte 0x02000000
_08121618: .4byte 0x000160a0
_0812161C:
ldrh r1, [r2]
b _08121652
_08121620:
- ldr r0, _08121640 @ =gUnknown_02039270
+ ldr r0, _08121640 @ =gSelectedOrderFromParty
ldr r2, [r0]
ldrh r1, [r2, 0x2]
movs r0, 0xB1
@@ -1404,7 +1404,7 @@ _08121634:
adds r4, r0, r1
b _081219E6
.align 2, 0
-_08121640: .4byte gUnknown_02039270
+_08121640: .4byte gSelectedOrderFromParty
_08121644: .4byte 0x02000000
_08121648: .4byte 0x000160a0
_0812164C: .4byte gUnknown_08401674
@@ -1489,18 +1489,18 @@ _081216EC:
_081216F0: .4byte byte_2024C06
_081216F4:
ldr r1, _081216FC @ =gUnknown_0203926C
- ldr r0, _08121700 @ =gUnknown_02024C07
+ ldr r0, _08121700 @ =gPlayerMonIndex
b _08121730
.align 2, 0
_081216FC: .4byte gUnknown_0203926C
-_08121700: .4byte gUnknown_02024C07
+_08121700: .4byte gPlayerMonIndex
_08121704:
ldr r1, _0812170C @ =gUnknown_0203926C
- ldr r0, _08121710 @ =gUnknown_02024C08
+ ldr r0, _08121710 @ =gEnemyMonIndex
b _08121730
.align 2, 0
_0812170C: .4byte gUnknown_0203926C
-_08121710: .4byte gUnknown_02024C08
+_08121710: .4byte gEnemyMonIndex
_08121714:
ldr r1, _08121720 @ =gUnknown_0203926C
ldr r0, _08121724 @ =0x02000000
@@ -1805,12 +1805,12 @@ _08121970: .4byte 0x0000084b
_08121974: .4byte gUnknown_084009ED
_08121978: .4byte gUnknown_084009F7
_0812197C:
- ldr r0, _08121980 @ =gUnknown_02024C07
+ ldr r0, _08121980 @ =gPlayerMonIndex
b _08121986
.align 2, 0
-_08121980: .4byte gUnknown_02024C07
+_08121980: .4byte gPlayerMonIndex
_08121984:
- ldr r0, _08121998 @ =gUnknown_02024C08
+ ldr r0, _08121998 @ =gEnemyMonIndex
_08121986:
ldrb r0, [r0]
bl battle_side_get_owner
@@ -1821,16 +1821,16 @@ _08121986:
ldr r4, _081219A0 @ =gUnknown_084007AC
b _081219E6
.align 2, 0
-_08121998: .4byte gUnknown_02024C08
+_08121998: .4byte gEnemyMonIndex
_0812199C: .4byte gUnknown_084007A7
_081219A0: .4byte gUnknown_084007AC
_081219A4:
- ldr r0, _081219A8 @ =gUnknown_02024C07
+ ldr r0, _081219A8 @ =gPlayerMonIndex
b _081219AE
.align 2, 0
-_081219A8: .4byte gUnknown_02024C07
+_081219A8: .4byte gPlayerMonIndex
_081219AC:
- ldr r0, _081219C0 @ =gUnknown_02024C08
+ ldr r0, _081219C0 @ =gEnemyMonIndex
_081219AE:
ldrb r0, [r0]
bl battle_side_get_owner
@@ -1841,16 +1841,16 @@ _081219AE:
ldr r4, _081219C8 @ =gUnknown_084007A1
b _081219E6
.align 2, 0
-_081219C0: .4byte gUnknown_02024C08
+_081219C0: .4byte gEnemyMonIndex
_081219C4: .4byte gUnknown_0840079C
_081219C8: .4byte gUnknown_084007A1
_081219CC:
- ldr r0, _081219D0 @ =gUnknown_02024C07
+ ldr r0, _081219D0 @ =gPlayerMonIndex
b _081219D6
.align 2, 0
-_081219D0: .4byte gUnknown_02024C07
+_081219D0: .4byte gPlayerMonIndex
_081219D4:
- ldr r0, _08121A24 @ =gUnknown_02024C08
+ ldr r0, _08121A24 @ =gEnemyMonIndex
_081219D6:
ldrb r0, [r0]
bl battle_side_get_owner
@@ -1894,7 +1894,7 @@ _08121A06:
adds r6, 0x1
b _08121A3C
.align 2, 0
-_08121A24: .4byte gUnknown_02024C08
+_08121A24: .4byte gEnemyMonIndex
_08121A28: .4byte gUnknown_084007B2
_08121A2C: .4byte gUnknown_084007B7
_08121A30:
@@ -2274,7 +2274,7 @@ sub_8121D1C: @ 8121D1C
push {r4,r5,lr}
adds r4, r0, 0
movs r2, 0
- ldr r5, _08121D50 @ =gUnknown_02039270
+ ldr r5, _08121D50 @ =gSelectedOrderFromParty
ldr r3, _08121D54 @ =gUnknown_084016BC
_08121D26:
cmp r2, 0x4
@@ -2299,7 +2299,7 @@ _08121D3C:
bl StringCopy
b _08121D68
.align 2, 0
-_08121D50: .4byte gUnknown_02039270
+_08121D50: .4byte gSelectedOrderFromParty
_08121D54: .4byte gUnknown_084016BC
_08121D58: .4byte gUnknown_08400E5E
_08121D5C:
@@ -2329,7 +2329,7 @@ _08121D7E:
cmp r0, 0xFF
bne _08121D7C
ldr r1, _08121DB4 @ =gUnknown_084016BC
- ldr r5, _08121DB8 @ =gUnknown_02039270
+ ldr r5, _08121DB8 @ =gSelectedOrderFromParty
movs r0, 0
lsls r0, 1
adds r2, r0, r1
@@ -2356,7 +2356,7 @@ _08121DA8:
mov pc, r0
.align 2, 0
_08121DB4: .4byte gUnknown_084016BC
-_08121DB8: .4byte gUnknown_02039270
+_08121DB8: .4byte gSelectedOrderFromParty
_08121DBC: .4byte _08121DC0
.align 2, 0
_08121DC0:
diff --git a/asm/battle_party_menu.s b/asm/battle_party_menu.s
deleted file mode 100644
index 471c5ccc0..000000000
--- a/asm/battle_party_menu.s
+++ /dev/null
@@ -1,1263 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpBattlePartyMenu
-SetUpBattlePartyMenu: @ 8094E58
- push {r4,r5,lr}
- ldr r1, _08094E78 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r3, 0
- ldrsh r0, [r0, r3]
- adds r4, r1, 0
- cmp r0, 0xA
- bls _08094E6E
- b _08095048
-_08094E6E:
- lsls r0, 2
- ldr r1, _08094E7C @ =_08094E80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08094E78: .4byte 0x0201b000
-_08094E7C: .4byte _08094E80
- .align 2, 0
-_08094E80:
- .4byte _08094EAC
- .4byte _08094F28
- .4byte _08094F3C
- .4byte _08094F4A
- .4byte _08094F6C
- .4byte _08094F80
- .4byte _08094F94
- .4byte _08094FA8
- .4byte _08094FBC
- .4byte _08094FD0
- .4byte _08095000
-_08094EAC:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08094EDC
- ldr r1, _08094ED4 @ =0x0201b000
- ldr r0, _08094ED8 @ =0x00000266
- adds r4, r1, r0
- ldrh r2, [r4]
- movs r3, 0
- ldrsh r0, [r4, r3]
- cmp r0, 0x6
- bne _08094EEC
- movs r0, 0
- strh r0, [r4]
- movs r3, 0x99
- lsls r3, 2
- adds r1, r3
- b _08094FEC
- .align 2, 0
-_08094ED4: .4byte 0x0201b000
-_08094ED8: .4byte 0x00000266
-_08094EDC:
- ldr r1, _08094F10 @ =0x0201b000
- ldr r0, _08094F14 @ =0x00000266
- adds r4, r1, r0
- ldrh r2, [r4]
- movs r3, 0
- ldrsh r0, [r4, r3]
- cmp r0, 0x5
- bgt _08094F1C
-_08094EEC:
- movs r3, 0x98
- lsls r3, 2
- adds r0, r1, r3
- ldrb r0, [r0]
- lsls r1, r2, 24
- lsrs r1, 24
- movs r2, 0
- ldrsh r3, [r4, r2]
- movs r2, 0x64
- muls r2, r3
- ldr r3, _08094F18 @ =gPlayerParty
- adds r2, r3
- bl TryCreatePartyMenuMonIcon
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _08095048
- .align 2, 0
-_08094F10: .4byte 0x0201b000
-_08094F14: .4byte 0x00000266
-_08094F18: .4byte gPlayerParty
-_08094F1C:
- movs r0, 0
- strh r0, [r4]
- movs r3, 0x99
- lsls r3, 2
- adds r1, r3
- b _08094FEC
-_08094F28:
- bl LoadHeldItemIconGraphics
- ldr r1, _08094F38 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _08094FEC
- .align 2, 0
-_08094F38: .4byte 0x0201b000
-_08094F3C:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl CreateHeldItemIcons_806DC34
- b _08094FE6
-_08094F4A:
- movs r3, 0x98
- lsls r3, 2
- adds r0, r4, r3
- ldrb r0, [r0]
- ldr r1, _08094F68 @ =0x00000266
- adds r5, r4, r1
- ldrb r1, [r5]
- bl sub_806BD58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08094FE2
- b _08094FF8
- .align 2, 0
-_08094F68: .4byte 0x00000266
-_08094F6C:
- bl PartyMenuPrintMonsLevelOrStatus
- ldr r1, _08094F7C @ =0x0201b000
- movs r3, 0x99
- lsls r3, 2
- adds r1, r3
- b _08094FEC
- .align 2, 0
-_08094F7C: .4byte 0x0201b000
-_08094F80:
- bl PrintPartyMenuMonNicknames
- ldr r1, _08094F90 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _08094FEC
- .align 2, 0
-_08094F90: .4byte 0x0201b000
-_08094F94:
- bl PartyMenuTryPrintMonsHP
- ldr r1, _08094FA4 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r1, r2
- b _08094FEC
- .align 2, 0
-_08094FA4: .4byte 0x0201b000
-_08094FA8:
- bl nullsub_13
- ldr r1, _08094FB8 @ =0x0201b000
- movs r3, 0x99
- lsls r3, 2
- adds r1, r3
- b _08094FEC
- .align 2, 0
-_08094FB8: .4byte 0x0201b000
-_08094FBC:
- bl PartyMenuDrawHPBars
- ldr r1, _08094FCC @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _08094FEC
- .align 2, 0
-_08094FCC: .4byte 0x0201b000
-_08094FD0:
- ldr r1, _08094FF4 @ =0x00000266
- adds r5, r4, r1
- ldrb r0, [r5]
- bl sub_806B58C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08094FF8
-_08094FE2:
- movs r0, 0
- strh r0, [r5]
-_08094FE6:
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
-_08094FEC:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08095048
- .align 2, 0
-_08094FF4: .4byte 0x00000266
-_08094FF8:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _08095048
-_08095000:
- ldr r0, _08095024 @ =gUnknown_02038473
- ldrb r4, [r0]
- cmp r4, 0x3
- bne _0809503C
- ldr r0, _08095028 @ =gScriptItemId
- ldrh r0, [r0]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA
- bne _08095034
- ldr r0, _0809502C @ =0x0201b000
- ldr r3, _08095030 @ =0x00000259
- adds r0, r3
- movs r1, 0xFF
- strb r1, [r0]
- b _0809503C
- .align 2, 0
-_08095024: .4byte gUnknown_02038473
-_08095028: .4byte gScriptItemId
-_0809502C: .4byte 0x0201b000
-_08095030: .4byte 0x00000259
-_08095034:
- ldr r0, _08095040 @ =0x0201b000
- ldr r1, _08095044 @ =0x00000259
- adds r0, r1
- strb r4, [r0]
-_0809503C:
- movs r0, 0x1
- b _0809504A
- .align 2, 0
-_08095040: .4byte 0x0201b000
-_08095044: .4byte 0x00000259
-_08095048:
- movs r0, 0
-_0809504A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end SetUpBattlePartyMenu
-
- thumb_func_start sub_8095050
-sub_8095050: @ 8095050
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809508C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- adds r5, r0, 0
- cmp r5, 0
- bne _080950C8
- ldr r0, _08095090 @ =gUnknown_02038473
- ldrb r4, [r0]
- cmp r4, 0x1
- bne _0809509C
- ldr r3, _08095094 @ =gTasks
- ldr r2, _08095098 @ =0x0201b000
- movs r0, 0x98
- lsls r0, 2
- adds r2, r0
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- b _080950DE
- .align 2, 0
-_0809508C: .4byte gPlayerParty
-_08095090: .4byte gUnknown_02038473
-_08095094: .4byte gTasks
-_08095098: .4byte 0x0201b000
-_0809509C:
- ldr r3, _080950C0 @ =gTasks
- ldr r2, _080950C4 @ =0x0201b000
- movs r0, 0x98
- lsls r0, 2
- adds r2, r0
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- strh r5, [r0, 0x10]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- strh r5, [r0, 0x12]
- b _080950EC
- .align 2, 0
-_080950C0: .4byte gTasks
-_080950C4: .4byte 0x0201b000
-_080950C8:
- ldr r3, _08095108 @ =gTasks
- ldr r2, _0809510C @ =0x0201b000
- movs r0, 0x98
- lsls r0, 2
- adds r2, r0
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- movs r4, 0x2
-_080950DE:
- strh r4, [r0, 0x10]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- strh r4, [r0, 0x12]
-_080950EC:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0, 0x10]
- ldr r1, _08095110 @ =gUnknown_083B5FF4
- ldr r2, _08095114 @ =gUnknown_083B5FCC
- movs r3, 0
- bl sub_806E750
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08095108: .4byte gTasks
-_0809510C: .4byte 0x0201b000
-_08095110: .4byte gUnknown_083B5FF4
-_08095114: .4byte gUnknown_083B5FCC
- thumb_func_end sub_8095050
-
- thumb_func_start SetUpBattlePokemonMenu
-SetUpBattlePokemonMenu: @ 8095118
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08095150 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0809512C
- b _08095268
-_0809512C:
- ldr r0, _08095154 @ =gUnknown_02038473
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _08095164
- ldr r5, _08095158 @ =gScriptItemId
- ldrh r0, [r5]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA
- bne _08095164
- ldr r0, _0809515C @ =gUnknown_03004AE4
- ldrh r1, [r5]
- ldr r2, _08095160 @ =sub_80952E4
- ldr r3, [r0]
- b _080951AA
- .align 2, 0
-_08095150: .4byte gPaletteFade
-_08095154: .4byte gUnknown_02038473
-_08095158: .4byte gScriptItemId
-_0809515C: .4byte gUnknown_03004AE4
-_08095160: .4byte sub_80952E4
-_08095164:
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _08095178
- cmp r0, 0x2
- beq _08095214
- b _08095268
-_08095178:
- ldr r0, _080951B4 @ =gUnknown_02038473
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080951C8
- adds r0, r4, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _080951B8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0809521C
- bl sub_806D5A4
- ldr r3, _080951BC @ =gUnknown_03004AE4
- ldr r0, _080951C0 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _080951C4 @ =sub_80952E4
- ldr r3, [r3]
-_080951AA:
- adds r0, r4, 0
- bl _call_via_r3
- b _08095268
- .align 2, 0
-_080951B4: .4byte gUnknown_02038473
-_080951B8: .4byte gPlayerParty
-_080951BC: .4byte gUnknown_03004AE4
-_080951C0: .4byte gScriptItemId
-_080951C4: .4byte sub_80952E4
-_080951C8:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08095204 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08095208 @ =gStringVar1
- bl GetMonNickname
- adds r0, r4, 0
- bl sub_806CA38
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8095050
- ldr r1, _0809520C @ =sub_8095408
- ldr r2, _08095210 @ =SetUpBattlePokemonMenu
- adds r0, r4, 0
- bl SetTaskFuncWithFollowupFunc
- b _08095268
- .align 2, 0
-_08095204: .4byte gPlayerParty
-_08095208: .4byte gStringVar1
-_0809520C: .4byte sub_8095408
-_08095210: .4byte SetUpBattlePokemonMenu
-_08095214:
- ldr r5, _08095224 @ =gUnknown_02038473
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _08095228
-_0809521C:
- movs r0, 0x20
- bl PlaySE
- b _08095268
- .align 2, 0
-_08095224: .4byte gUnknown_02038473
-_08095228:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r5]
- cmp r0, 0x3
- bne _08095254
- ldr r1, _08095248 @ =gUnknown_0202E8F4
- movs r0, 0
- strb r0, [r1]
- ldr r1, _0809524C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095250 @ =sub_80952E4
- b _08095266
- .align 2, 0
-_08095248: .4byte gUnknown_0202E8F4
-_0809524C: .4byte gTasks
-_08095250: .4byte sub_80952E4
-_08095254:
- ldr r1, _08095270 @ =gUnknown_0202E8F4
- movs r0, 0
- strb r0, [r1]
- ldr r1, _08095274 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095278 @ =sub_809527C
-_08095266:
- str r1, [r0]
-_08095268:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08095270: .4byte gUnknown_0202E8F4
-_08095274: .4byte gTasks
-_08095278: .4byte sub_809527C
- thumb_func_end SetUpBattlePokemonMenu
-
- thumb_func_start sub_809527C
-sub_809527C: @ 809527C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080952AC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080952B0 @ =sub_80952B4
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080952AC: .4byte gTasks
-_080952B0: .4byte sub_80952B4
- thumb_func_end sub_809527C
-
- thumb_func_start sub_80952B4
-sub_80952B4: @ 80952B4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080952DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080952D6
- bl sub_8094D60
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _080952E0 @ =sub_802E414
- bl SetMainCallback2
-_080952D6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080952DC: .4byte gPaletteFade
-_080952E0: .4byte sub_802E414
- thumb_func_end sub_80952B4
-
- thumb_func_start sub_80952E4
-sub_80952E4: @ 80952E4
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080952FC @ =gUnknown_0202E8F4
- ldrb r1, [r0]
- cmp r1, 0
- beq _08095300
- adds r0, r4, 0
- bl sub_809527C
- b _0809531E
- .align 2, 0
-_080952FC: .4byte gUnknown_0202E8F4
-_08095300:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08095328 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809532C @ =sub_8095330
- str r1, [r0]
-_0809531E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08095328: .4byte gTasks
-_0809532C: .4byte sub_8095330
- thumb_func_end sub_80952E4
-
- thumb_func_start sub_8095330
-sub_8095330: @ 8095330
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08095358 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08095350
- bl sub_8094D60
- adds r0, r4, 0
- bl DestroyTask
- bl sub_80A6DCC
-_08095350:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08095358: .4byte gPaletteFade
- thumb_func_end sub_8095330
-
- thumb_func_start sub_809535C
-sub_809535C: @ 809535C
- push {lr}
- ldr r2, _08095380 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _08095384 @ =SetUpBattlePokemonMenu
- movs r0, 0x1
- movs r1, 0xFF
- movs r3, 0x5
- bl sub_806AF4C
- ldr r0, _08095388 @ =sub_809538C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08095380: .4byte gPaletteFade
-_08095384: .4byte SetUpBattlePokemonMenu
-_08095388: .4byte sub_809538C
- thumb_func_end sub_809535C
-
- thumb_func_start sub_809538C
-sub_809538C: @ 809538C
- push {r4,r5,lr}
- ldr r4, _080953D8 @ =0x0201b260
- ldr r5, _080953DC @ =gUnknown_020384F0
-_08095392:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080953F4
- ldrb r0, [r4]
- ldrb r1, [r5]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldrb r1, [r5]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080953E0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080953E4 @ =gStringVar1
- bl GetMonNickname
- ldrb r0, [r4]
- ldrb r1, [r5]
- bl sub_8095050
- ldrb r0, [r4]
- ldr r1, _080953E8 @ =sub_8095408
- ldr r2, _080953EC @ =SetUpBattlePokemonMenu
- bl SetTaskFuncWithFollowupFunc
- ldr r0, _080953F0 @ =sub_806AEDC
- bl SetMainCallback2
- b _08095400
- .align 2, 0
-_080953D8: .4byte 0x0201b260
-_080953DC: .4byte gUnknown_020384F0
-_080953E0: .4byte gPlayerParty
-_080953E4: .4byte gStringVar1
-_080953E8: .4byte sub_8095408
-_080953EC: .4byte SetUpBattlePokemonMenu
-_080953F0: .4byte sub_806AEDC
-_080953F4:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08095392
-_08095400:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_809538C
-
- thumb_func_start sub_8095408
-sub_8095408: @ 8095408
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- adds r4, r7, 0
- ldr r0, _0809543C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r3, 0x80
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _080954B8
- ldr r2, _08095440 @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08095444
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- b _080954B8
- .align 2, 0
-_0809543C: .4byte gPaletteFade
-_08095440: .4byte gMain
-_08095444:
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0809545A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- b _080954B8
-_0809545A:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080954A4
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08095498 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrb r4, [r0, 0x10]
- ldr r5, _0809549C @ =gUnknown_083B5FF4
- ldr r6, _080954A0 @ =gUnknown_083B5FCC
- bl GetMenuCursorPos
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_806E81C
- adds r1, r0, 0
- adds r0, r7, 0
- bl _call_via_r1
- b _080954B8
- .align 2, 0
-_08095498: .4byte gTasks
-_0809549C: .4byte gUnknown_083B5FF4
-_080954A0: .4byte gUnknown_083B5FCC
-_080954A4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080954B8
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl BattlePokemonMenu_Cancel
-_080954B8:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8095408
-
- thumb_func_start sub_80954C0
-sub_80954C0: @ 80954C0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080954D8 @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0
- bne _080954D4
- adds r0, r1, 0
- bl BattlePokemonMenu_Cancel
-_080954D4:
- pop {r0}
- bx r0
- .align 2, 0
-_080954D8: .4byte gUnknown_0202E8F6
- thumb_func_end sub_80954C0
-
- thumb_func_start BattleShowPokemonSummaryScreen
-BattleShowPokemonSummaryScreen: @ 80954DC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0809552C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08095522
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _08095530 @ =0x0201b000
- ldr r1, _08095534 @ =0x00000262
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08095538 @ =gPlayerParty
- ldr r1, _0809553C @ =gPlayerPartyCount
- ldrb r2, [r1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08095540 @ =sub_809535C
- movs r1, 0x4
- str r1, [sp]
- adds r1, r5, 0
- bl ShowPokemonSummaryScreen
-_08095522:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809552C: .4byte gPaletteFade
-_08095530: .4byte 0x0201b000
-_08095534: .4byte 0x00000262
-_08095538: .4byte gPlayerParty
-_0809553C: .4byte gPlayerPartyCount
-_08095540: .4byte sub_809535C
- thumb_func_end BattleShowPokemonSummaryScreen
-
- thumb_func_start BattlePokemonMenu_Summary
-BattlePokemonMenu_Summary: @ 8095544
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0809557C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095580 @ =BattleShowPokemonSummaryScreen
- str r1, [r0]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809557C: .4byte gTasks
-_08095580: .4byte BattleShowPokemonSummaryScreen
- thumb_func_end BattlePokemonMenu_Summary
-
- thumb_func_start BattlePokemonMenu_Shift
-BattlePokemonMenu_Shift: @ 8095584
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080955F8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x10]
- ldr r1, _080955FC @ =gUnknown_083B5FF4
- bl sub_806E7D0
- adds r0, r6, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r5, r0, 24
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08095610
- cmp r5, 0x1
- beq _080955C6
- cmp r5, 0x4
- beq _080955C6
- cmp r5, 0x5
- bne _08095610
-_080955C6:
- bl sub_806D5A4
- ldr r4, _08095600 @ =gStringVar1
- bl sub_8040D08
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r4, _08095604 @ =gStringVar4
- ldr r1, _08095608 @ =gOtherText_CantSwitchPokeWithYours
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_806E834
- ldr r1, _080955F8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809560C @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_080955F8: .4byte gTasks
-_080955FC: .4byte gUnknown_083B5FF4
-_08095600: .4byte gStringVar1
-_08095604: .4byte gStringVar4
-_08095608: .4byte gOtherText_CantSwitchPokeWithYours
-_0809560C: .4byte sub_80954C0
-_08095610:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08095654 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0809566C
- bl sub_806D5A4
- ldr r1, _08095658 @ =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- ldr r4, _0809565C @ =gStringVar4
- ldr r1, _08095660 @ =gOtherText_NoEnergyLeft
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_806E834
- ldr r1, _08095664 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095668 @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_08095654: .4byte gPlayerParty
-_08095658: .4byte gStringVar1
-_0809565C: .4byte gStringVar4
-_08095660: .4byte gOtherText_NoEnergyLeft
-_08095664: .4byte gTasks
-_08095668: .4byte sub_80954C0
-_0809566C:
- movs r4, 0
- ldr r0, _08095678 @ =gUnknown_02024A68
- lsls r1, r6, 2
- mov r8, r1
- b _080956A8
- .align 2, 0
-_08095678: .4byte gUnknown_02024A68
-_0809567C:
- adds r0, r4, 0
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _080956A0
- adds r0, r5, 0
- bl sub_8094C20
- lsls r0, 24
- ldr r2, _080956EC @ =gUnknown_02024A6A
- lsls r1, r4, 1
- adds r1, r2
- lsrs r0, 24
- ldrh r1, [r1]
- cmp r0, r1
- bne _080956A0
- b _08095808
-_080956A0:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080956F0 @ =gUnknown_02024A68
-_080956A8:
- ldrb r0, [r0]
- cmp r4, r0
- bcc _0809567C
- movs r2, 0x64
- mov r9, r2
- mov r0, r9
- muls r0, r5
- ldr r1, _080956F4 @ =gPlayerParty
- mov r10, r1
- adds r7, r0, r1
- adds r0, r7, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08095708
- bl sub_806D5A4
- ldr r4, _080956F8 @ =gStringVar4
- ldr r1, _080956FC @ =gOtherText_EGGCantBattle
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_806E834
- ldr r1, _08095700 @ =gTasks
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095704 @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_080956EC: .4byte gUnknown_02024A6A
-_080956F0: .4byte gUnknown_02024A68
-_080956F4: .4byte gPlayerParty
-_080956F8: .4byte gStringVar4
-_080956FC: .4byte gOtherText_EGGCantBattle
-_08095700: .4byte gTasks
-_08095704: .4byte sub_80954C0
-_08095708:
- adds r0, r5, 0
- bl sub_8094C20
- ldr r1, _0809574C @ =0x02000000
- ldr r2, _08095750 @ =0x0001609d
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _08095768
- bl sub_806D5A4
- ldr r1, _08095754 @ =gStringVar1
- adds r0, r7, 0
- bl GetMonNickname
- ldr r4, _08095758 @ =gStringVar4
- ldr r1, _0809575C @ =gOtherText_AlreadySelected
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_806E834
- ldr r1, _08095760 @ =gTasks
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095764 @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_0809574C: .4byte 0x02000000
-_08095750: .4byte 0x0001609d
-_08095754: .4byte gStringVar1
-_08095758: .4byte gStringVar4
-_0809575C: .4byte gOtherText_AlreadySelected
-_08095760: .4byte gTasks
-_08095764: .4byte sub_80954C0
-_08095768:
- ldr r0, _08095790 @ =gUnknown_02038473
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _080957A0
- bl sub_806D5A4
- bl sub_8040B8C
- ldr r0, _08095794 @ =gStringVar4
- movs r1, 0
- bl sub_806E834
- ldr r1, _08095798 @ =gTasks
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809579C @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_08095790: .4byte gUnknown_02038473
-_08095794: .4byte gStringVar4
-_08095798: .4byte gTasks
-_0809579C: .4byte sub_80954C0
-_080957A0:
- cmp r0, 0x2
- bne _08095854
- ldr r0, _080957EC @ =gUnknown_02024E6C
- ldrb r4, [r0]
- bl sub_806D5A4
- ldr r0, _080957F0 @ =gUnknown_02024A6A
- lsls r4, 1
- adds r4, r0
- ldrb r0, [r4]
- bl pokemon_order_func
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r10
- ldr r1, _080957F4 @ =gStringVar1
- bl GetMonNickname
- ldr r4, _080957F8 @ =gStringVar4
- ldr r1, _080957FC @ =gOtherText_CantBeSwitched
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_806E834
- ldr r1, _08095800 @ =gTasks
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095804 @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_080957EC: .4byte gUnknown_02024E6C
-_080957F0: .4byte gUnknown_02024A6A
-_080957F4: .4byte gStringVar1
-_080957F8: .4byte gStringVar4
-_080957FC: .4byte gOtherText_CantBeSwitched
-_08095800: .4byte gTasks
-_08095804: .4byte sub_80954C0
-_08095808:
- bl sub_806D5A4
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0809583C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08095840 @ =gStringVar1
- bl GetMonNickname
- ldr r4, _08095844 @ =gStringVar4
- ldr r1, _08095848 @ =gOtherText_AlreadyBattle
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_806E834
- ldr r1, _0809584C @ =gTasks
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08095850 @ =sub_80954C0
- b _0809589A
- .align 2, 0
-_0809583C: .4byte gPlayerParty
-_08095840: .4byte gStringVar1
-_08095844: .4byte gStringVar4
-_08095848: .4byte gOtherText_AlreadyBattle
-_0809584C: .4byte gTasks
-_08095850: .4byte sub_80954C0
-_08095854:
- adds r0, r5, 0
- bl sub_8094C20
- ldr r1, _080958AC @ =gUnknown_0202E8F5
- strb r0, [r1]
- ldr r1, _080958B0 @ =gUnknown_0202E8F4
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080958B4 @ =gUnknown_02024A6A
- ldr r0, _080958B8 @ =gUnknown_02024E6C
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8094C98
- mov r0, r9
- muls r0, r4
- add r0, r10
- adds r1, r7, 0
- bl sub_806E6F0
- ldr r1, _080958BC @ =gTasks
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _080958C0 @ =sub_809527C
-_0809589A:
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080958AC: .4byte gUnknown_0202E8F5
-_080958B0: .4byte gUnknown_0202E8F4
-_080958B4: .4byte gUnknown_02024A6A
-_080958B8: .4byte gUnknown_02024E6C
-_080958BC: .4byte gTasks
-_080958C0: .4byte sub_809527C
- thumb_func_end BattlePokemonMenu_Shift
-
- thumb_func_start BattlePokemonMenu_Cancel
-BattlePokemonMenu_Cancel: @ 80958C4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl sub_8072DEC
- ldr r0, _080958FC @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x10]
- ldr r1, _08095900 @ =gUnknown_083B5FF4
- bl sub_806E7D0
- ldrh r0, [r4, 0x12]
- strh r0, [r4, 0x10]
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080958FC: .4byte gTasks
-_08095900: .4byte gUnknown_083B5FF4
- thumb_func_end BattlePokemonMenu_Cancel
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/bike.s b/asm/bike.s
deleted file mode 100644
index a7e3401ac..000000000
--- a/asm/bike.s
+++ /dev/null
@@ -1,2211 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start MovePlayerOnBike
-MovePlayerOnBike: @ 80E50A8
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _080E50CC @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080E50D0
- adds r0, r3, 0
- adds r1, r4, 0
- bl MovePlayerOnMachBike
- b _080E50D8
- .align 2, 0
-_080E50CC: .4byte gPlayerAvatar
-_080E50D0:
- adds r0, r3, 0
- adds r1, r4, 0
- bl MovePlayerOnAcroBike
-_080E50D8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end MovePlayerOnBike
-
- thumb_func_start MovePlayerOnMachBike
-MovePlayerOnMachBike: @ 80E50E0
- push {r4,lr}
- sub sp, 0x4
- mov r1, sp
- strb r0, [r1]
- ldr r4, _080E510C @ =gUnknown_083DB594
- mov r0, sp
- bl CheckMovementInputMachBike
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- mov r1, sp
- ldrb r1, [r1]
- ldr r2, [r0]
- adds r0, r1, 0
- bl _call_via_r2
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E510C: .4byte gUnknown_083DB594
- thumb_func_end MovePlayerOnMachBike
-
- thumb_func_start CheckMovementInputMachBike
-CheckMovementInputMachBike: @ 80E5110
- push {r4,lr}
- adds r4, r0, 0
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- ldrb r1, [r4]
- cmp r1, 0
- bne _080E5138
- strb r0, [r4]
- ldr r2, _080E5134 @ =gPlayerAvatar
- ldrb r0, [r2, 0xB]
- cmp r0, 0
- bne _080E514C
- strb r1, [r2, 0x2]
- movs r0, 0
- b _080E5160
- .align 2, 0
-_080E5134: .4byte gPlayerAvatar
-_080E5138:
- ldr r2, _080E5154 @ =gPlayerAvatar
- cmp r1, r3
- beq _080E515C
- ldrb r0, [r2, 0x2]
- cmp r0, 0x2
- beq _080E515C
- ldrb r0, [r2, 0xB]
- cmp r0, 0
- beq _080E5158
- strb r3, [r4]
-_080E514C:
- movs r0, 0x2
- strb r0, [r2, 0x2]
- movs r0, 0x3
- b _080E5160
- .align 2, 0
-_080E5154: .4byte gPlayerAvatar
-_080E5158:
- movs r0, 0x1
- b _080E515E
-_080E515C:
- movs r0, 0x2
-_080E515E:
- strb r0, [r2, 0x2]
-_080E5160:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end CheckMovementInputMachBike
-
- thumb_func_start sub_80E5168
-sub_80E5168: @ 80E5168
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl PlayerFaceDirection
- bl sub_80E6024
- pop {r0}
- bx r0
- thumb_func_end sub_80E5168
-
- thumb_func_start sub_80E517C
-sub_80E517C: @ 80E517C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080E51AC @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E51B0 @ =gMapObjects
- adds r4, r0, r1
- ldrb r1, [r4, 0x1E]
- adds r0, r5, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- beq _080E51B4
- adds r0, r5, 0
- bl PlayerTurnInPlace
- bl sub_80E6024
- b _080E51BE
- .align 2, 0
-_080E51AC: .4byte gPlayerAvatar
-_080E51B0: .4byte gMapObjects
-_080E51B4:
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl sub_80E5168
-_080E51BE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E517C
-
- thumb_func_start sub_80E51C4
-sub_80E51C4: @ 80E51C4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r6, _080E51F8 @ =gPlayerAvatar
- ldrb r1, [r6, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E51FC @ =gMapObjects
- adds r4, r0, r1
- ldrb r1, [r4, 0x1E]
- adds r0, r5, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E520A
- ldrb r0, [r6, 0xB]
- cmp r0, 0
- beq _080E5200
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl sub_80E5270
- b _080E5266
- .align 2, 0
-_080E51F8: .4byte gPlayerAvatar
-_080E51FC: .4byte gMapObjects
-_080E5200:
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl sub_80E5168
- b _080E5266
-_080E520A:
- adds r0, r5, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r4, r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080E5242
- cmp r4, 0x6
- bne _080E522C
- adds r0, r5, 0
- bl PlayerJumpLedge
- b _080E5266
-_080E522C:
- bl sub_80E6024
- subs r0, r4, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080E5266
- adds r0, r5, 0
- bl PlayerOnBikeCollide
- b _080E5266
-_080E5242:
- ldr r1, _080E526C @ =gUnknown_083DB5A4
- ldrb r0, [r6, 0xA]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r7, 0
- bl _call_via_r1
- ldrb r2, [r6, 0xA]
- lsls r0, r2, 24
- lsrs r1, r0, 24
- lsrs r0, 25
- adds r0, r2, r0
- strb r0, [r6, 0xB]
- cmp r1, 0x1
- bhi _080E5266
- adds r0, r2, 0x1
- strb r0, [r6, 0xA]
-_080E5266:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E526C: .4byte gUnknown_083DB5A4
- thumb_func_end sub_80E51C4
-
- thumb_func_start sub_80E5270
-sub_80E5270: @ 80E5270
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- ldr r6, _080E52A8 @ =gPlayerAvatar
- ldrb r0, [r6, 0xB]
- cmp r0, 0
- beq _080E5286
- subs r0, 0x1
- strb r0, [r6, 0xB]
- strb r0, [r6, 0xA]
-_080E5286:
- adds r0, r4, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080E52C2
- cmp r5, 0x6
- bne _080E52AC
- adds r0, r4, 0
- bl PlayerJumpLedge
- b _080E52D2
- .align 2, 0
-_080E52A8: .4byte gPlayerAvatar
-_080E52AC:
- bl sub_80E6024
- subs r0, r5, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080E52D2
- adds r0, r4, 0
- bl PlayerOnBikeCollide
- b _080E52D2
-_080E52C2:
- ldr r0, _080E52D8 @ =gUnknown_083DB5A4
- ldrb r1, [r6, 0xA]
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r7, 0
- bl _call_via_r1
-_080E52D2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E52D8: .4byte gUnknown_083DB5A4
- thumb_func_end sub_80E5270
-
- thumb_func_start MovePlayerOnAcroBike
-MovePlayerOnAcroBike: @ 80E52DC
- push {r4,lr}
- sub sp, 0x4
- mov r3, sp
- strb r0, [r3]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _080E5310 @ =gUnknown_083DB5B0
- mov r0, sp
- bl CheckMovementInputAcroBike
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- mov r1, sp
- ldrb r1, [r1]
- ldr r2, [r0]
- adds r0, r1, 0
- bl _call_via_r2
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5310: .4byte gUnknown_083DB5B0
- thumb_func_end MovePlayerOnAcroBike
-
- thumb_func_start CheckMovementInputAcroBike
-CheckMovementInputAcroBike: @ 80E5314
- push {r4,lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _080E5338 @ =gUnknown_083DB5E4
- ldr r3, _080E533C @ =gPlayerAvatar
- ldrb r3, [r3, 0x8]
- lsls r3, 2
- adds r3, r4
- ldr r3, [r3]
- bl _call_via_r3
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080E5338: .4byte gUnknown_083DB5E4
-_080E533C: .4byte gPlayerAvatar
- thumb_func_end CheckMovementInputAcroBike
-
- thumb_func_start CheckMovementInputAcroBikeNormal
-CheckMovementInputAcroBikeNormal: @ 80E5340
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080E5374 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r2, 0xA]
- ldrb r1, [r4]
- cmp r1, 0
- bne _080E5380
- movs r0, 0x2
- ands r0, r6
- cmp r0, 0
- beq _080E5378
- strb r3, [r4]
- strb r1, [r2, 0x2]
- movs r0, 0x2
- strb r0, [r2, 0x8]
- movs r0, 0x3
- b _080E53D4
- .align 2, 0
-_080E5374: .4byte gPlayerAvatar
-_080E5378:
- strb r3, [r4]
- strb r1, [r2, 0x2]
- movs r0, 0
- b _080E53D4
-_080E5380:
- cmp r1, r3
- bne _080E53A6
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _080E539E
- ldrb r0, [r2, 0xB]
- cmp r0, 0
- bne _080E539E
- adds r0, 0x1
- strb r0, [r2, 0xB]
- movs r0, 0x4
- strb r0, [r2, 0x8]
- movs r0, 0xB
- b _080E53D4
-_080E539E:
- ldrb r0, [r4]
- ldr r2, _080E53CC @ =gPlayerAvatar
- cmp r0, r3
- beq _080E53D0
-_080E53A6:
- ldr r0, _080E53CC @ =gPlayerAvatar
- ldrb r1, [r0, 0x2]
- adds r2, r0, 0
- cmp r1, 0x2
- beq _080E53D0
- movs r1, 0
- movs r0, 0x1
- strb r0, [r2, 0x8]
- ldrb r0, [r4]
- strb r0, [r2, 0x9]
- strb r1, [r2, 0x2]
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl CheckMovementInputAcroBike
- lsls r0, 24
- lsrs r0, 24
- b _080E53D4
- .align 2, 0
-_080E53CC: .4byte gPlayerAvatar
-_080E53D0:
- movs r0, 0x2
- strb r0, [r2, 0x2]
-_080E53D4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CheckMovementInputAcroBikeNormal
-
- thumb_func_start CheckMovementInputAcroBikeChangingDirection
-CheckMovementInputAcroBikeChangingDirection: @ 80E53DC
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _080E5404 @ =gPlayerAvatar
- ldrb r0, [r4, 0x9]
- strb r0, [r5]
- ldrb r0, [r4, 0xA]
- adds r0, 0x1
- strb r0, [r4, 0xA]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bls _080E5408
- movs r0, 0x1
- strb r0, [r4, 0x2]
- movs r0, 0
- strb r0, [r4, 0x8]
- bl sub_80E6024
- movs r0, 0x1
- b _080E544E
- .align 2, 0
-_080E5404: .4byte gPlayerAvatar
-_080E5408:
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r6, r0, 24
- bl sub_80E5C2C
- ldrb r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _080E544A
- bl sub_80E6024
- movs r0, 0x1
- strb r0, [r4, 0xB]
- adds r0, r6, 0
- bl GetOppositeDirection
- ldrb r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _080E543E
- movs r0, 0x6
- strb r0, [r4, 0x8]
- movs r0, 0x9
- b _080E544E
-_080E543E:
- movs r0, 0x2
- strb r0, [r4, 0x2]
- movs r0, 0x5
- strb r0, [r4, 0x8]
- movs r0, 0x8
- b _080E544E
-_080E544A:
- strb r6, [r5]
- movs r0, 0
-_080E544E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CheckMovementInputAcroBikeChangingDirection
-
- thumb_func_start CheckMovementInputAcroBikeStandingWheelie
-CheckMovementInputAcroBikeStandingWheelie: @ 80E5454
- push {r4-r7,lr}
- adds r7, r0, 0
- lsls r4, r2, 16
- lsrs r4, 16
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _080E54A0 @ =gPlayerAvatar
- ldrb r1, [r5, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E54A4 @ =gMapObjects
- adds r1, r0, r1
- movs r0, 0
- strb r0, [r5, 0x2]
- movs r0, 0x2
- ands r4, r0
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0
- bne _080E54A8
- strb r4, [r5, 0xA]
- ldrb r0, [r1, 0x1E]
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080E54AE
- strb r6, [r7]
- strb r0, [r5, 0x8]
- bl sub_80E6024
- movs r0, 0x4
- b _080E54EC
- .align 2, 0
-_080E54A0: .4byte gPlayerAvatar
-_080E54A4: .4byte gMapObjects
-_080E54A8:
- ldrb r0, [r5, 0xA]
- adds r0, 0x1
- strb r0, [r5, 0xA]
-_080E54AE:
- ldr r1, _080E54C4 @ =gPlayerAvatar
- ldrb r0, [r1, 0xA]
- cmp r0, 0x27
- bls _080E54C8
- strb r6, [r7]
- movs r0, 0x3
- strb r0, [r1, 0x8]
- bl sub_80E6024
- movs r0, 0x6
- b _080E54EC
- .align 2, 0
-_080E54C4: .4byte gPlayerAvatar
-_080E54C8:
- ldrb r0, [r7]
- cmp r0, r6
- bne _080E54DE
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0x4
- strb r0, [r1, 0x8]
- bl sub_80E6024
- movs r0, 0xA
- b _080E54EC
-_080E54DE:
- cmp r0, 0
- beq _080E54E8
- movs r0, 0x1
- strb r0, [r1, 0x2]
- b _080E54EA
-_080E54E8:
- strb r6, [r7]
-_080E54EA:
- movs r0, 0x5
-_080E54EC:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckMovementInputAcroBikeStandingWheelie
-
- thumb_func_start CheckMovementInputAcroBikeBunnyHop
-CheckMovementInputAcroBikeBunnyHop: @ 80E54F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- ldr r4, _080E5554 @ =gPlayerAvatar
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E5558 @ =gMapObjects
- adds r7, r0, r1
- movs r0, 0x2
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- bne _080E5566
- bl sub_80E6024
- ldrb r0, [r7, 0x1E]
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080E555C
- movs r0, 0x2
- strb r0, [r4, 0x8]
- adds r0, r6, 0
- mov r1, r9
- mov r2, r8
- bl CheckMovementInputAcroBike
- lsls r0, 24
- lsrs r0, 24
- b _080E558A
- .align 2, 0
-_080E5554: .4byte gPlayerAvatar
-_080E5558: .4byte gMapObjects
-_080E555C:
- strb r5, [r6]
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x8]
- movs r0, 0x4
- b _080E558A
-_080E5566:
- ldrb r0, [r6]
- cmp r0, 0
- bne _080E5570
- strb r5, [r6]
- b _080E557C
-_080E5570:
- cmp r0, r2
- beq _080E5582
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- beq _080E5582
- movs r0, 0x1
-_080E557C:
- strb r0, [r4, 0x2]
- movs r0, 0x6
- b _080E558A
-_080E5582:
- ldr r1, _080E5598 @ =gPlayerAvatar
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0x7
-_080E558A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080E5598: .4byte gPlayerAvatar
- thumb_func_end CheckMovementInputAcroBikeBunnyHop
-
- thumb_func_start CheckMovementInputAcroBikeMovingWheelie
-CheckMovementInputAcroBikeMovingWheelie: @ 80E559C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- ldr r4, _080E55F8 @ =gPlayerAvatar
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E55FC @ =gMapObjects
- adds r7, r0, r1
- movs r0, 0x2
- mov r9, r0
- movs r0, 0x2
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- bne _080E5634
- bl sub_80E6024
- ldrb r0, [r7, 0x1E]
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080E5620
- strb r1, [r4, 0x8]
- ldrb r0, [r6]
- cmp r0, 0
- bne _080E5600
- strb r5, [r6]
- b _080E560A
- .align 2, 0
-_080E55F8: .4byte gPlayerAvatar
-_080E55FC: .4byte gMapObjects
-_080E5600:
- cmp r0, r5
- beq _080E5610
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- beq _080E5610
-_080E560A:
- strb r1, [r4, 0x2]
- movs r0, 0x4
- b _080E5664
-_080E5610:
- ldr r1, _080E561C @ =gPlayerAvatar
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0xC
- b _080E5664
- .align 2, 0
-_080E561C: .4byte gPlayerAvatar
-_080E5620:
- mov r0, r9
- strb r0, [r4, 0x8]
- adds r0, r6, 0
- mov r1, r10
- mov r2, r8
- bl CheckMovementInputAcroBike
- lsls r0, 24
- lsrs r0, 24
- b _080E5664
-_080E5634:
- ldrb r0, [r6]
- cmp r0, 0
- bne _080E564A
- strb r5, [r6]
- mov r1, r9
- strb r1, [r4, 0x8]
- strb r0, [r4, 0x2]
- bl sub_80E6024
- movs r0, 0x5
- b _080E5664
-_080E564A:
- cmp r2, r0
- beq _080E565C
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- beq _080E565C
- movs r0, 0
- strb r0, [r4, 0x2]
- movs r0, 0x5
- b _080E5664
-_080E565C:
- ldr r1, _080E5674 @ =gPlayerAvatar
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0xA
-_080E5664:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080E5674: .4byte gPlayerAvatar
- thumb_func_end CheckMovementInputAcroBikeMovingWheelie
-
- thumb_func_start CheckMovementInputAcroBikeUnknownMode5
-CheckMovementInputAcroBikeUnknownMode5: @ 80E5678
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _080E56CC @ =gPlayerAvatar
- ldrb r1, [r6, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E56D0 @ =gMapObjects
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x1]
- ldrb r1, [r0, 0x18]
- lsls r1, 28
- lsrs r1, 28
- bl FieldObjectSetDirection
- movs r0, 0
- strb r0, [r6, 0x8]
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- bl CheckMovementInputAcroBike
- lsls r0, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080E56CC: .4byte gPlayerAvatar
-_080E56D0: .4byte gMapObjects
- thumb_func_end CheckMovementInputAcroBikeUnknownMode5
-
- thumb_func_start CheckMovementInputAcroBikeUnknownMode6
-CheckMovementInputAcroBikeUnknownMode6: @ 80E56D4
- push {r4,lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _080E56F4 @ =gPlayerAvatar
- movs r3, 0
- strb r3, [r4, 0x8]
- bl CheckMovementInputAcroBike
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080E56F4: .4byte gPlayerAvatar
- thumb_func_end CheckMovementInputAcroBikeUnknownMode6
-
- thumb_func_start sub_80E56F8
-sub_80E56F8: @ 80E56F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl PlayerFaceDirection
- pop {r0}
- bx r0
- thumb_func_end sub_80E56F8
-
- thumb_func_start sub_80E5708
-sub_80E5708: @ 80E5708
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E573C @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E5740 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E572E
- ldrb r0, [r5, 0x18]
- lsrs r4, r0, 4
-_080E572E:
- adds r0, r4, 0
- bl PlayerFaceDirection
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E573C: .4byte gPlayerAvatar
-_080E5740: .4byte gMapObjects
- thumb_func_end sub_80E5708
-
- thumb_func_start sub_80E5744
-sub_80E5744: @ 80E5744
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r0, _080E5774 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E5778 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E577C
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- bl sub_80E56F8
- b _080E57B6
- .align 2, 0
-_080E5774: .4byte gPlayerAvatar
-_080E5778: .4byte gMapObjects
-_080E577C:
- adds r0, r4, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080E57B0
- cmp r1, 0x6
- bne _080E579E
- adds r0, r4, 0
- bl PlayerJumpLedge
- b _080E57B6
-_080E579E:
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080E57B6
- adds r0, r4, 0
- bl PlayerOnBikeCollide
- b _080E57B6
-_080E57B0:
- adds r0, r6, 0
- bl npc_use_some_d2s
-_080E57B6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E5744
-
- thumb_func_start sub_80E57BC
-sub_80E57BC: @ 80E57BC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E57F0 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E57F4 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E57E2
- ldrb r0, [r5, 0x18]
- lsrs r4, r0, 4
-_080E57E2:
- adds r0, r4, 0
- bl sub_805951C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E57F0: .4byte gPlayerAvatar
-_080E57F4: .4byte gMapObjects
- thumb_func_end sub_80E57BC
-
- thumb_func_start sub_80E57F8
-sub_80E57F8: @ 80E57F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E582C @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E5830 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E581E
- ldrb r0, [r5, 0x18]
- lsrs r4, r0, 4
-_080E581E:
- adds r0, r4, 0
- bl sub_8059534
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E582C: .4byte gPlayerAvatar
-_080E5830: .4byte gMapObjects
- thumb_func_end sub_80E57F8
-
- thumb_func_start sub_80E5834
-sub_80E5834: @ 80E5834
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E5868 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E586C @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E585A
- ldrb r0, [r5, 0x18]
- lsrs r4, r0, 4
-_080E585A:
- adds r0, r4, 0
- bl sub_8059504
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5868: .4byte gPlayerAvatar
-_080E586C: .4byte gMapObjects
- thumb_func_end sub_80E5834
-
- thumb_func_start sub_80E5870
-sub_80E5870: @ 80E5870
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E58A4 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E58A8 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E5896
- ldrb r0, [r5, 0x18]
- lsrs r4, r0, 4
-_080E5896:
- adds r0, r4, 0
- bl sub_805954C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E58A4: .4byte gPlayerAvatar
-_080E58A8: .4byte gMapObjects
- thumb_func_end sub_80E5870
-
- thumb_func_start sub_80E58AC
-sub_80E58AC: @ 80E58AC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E58D8 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E58DC @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E58E0
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- bl sub_80E5870
- b _080E591A
- .align 2, 0
-_080E58D8: .4byte gPlayerAvatar
-_080E58DC: .4byte gMapObjects
-_080E58E0:
- adds r0, r4, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080E5914
- cmp r1, 0x9
- beq _080E5914
- cmp r1, 0x6
- bne _080E58FE
- adds r0, r4, 0
- bl sub_8059594
- b _080E591A
-_080E58FE:
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080E591A
- cmp r1, 0xB
- bhi _080E5914
- adds r0, r4, 0
- bl sub_80E5870
- b _080E591A
-_080E5914:
- adds r0, r4, 0
- bl sub_8059570
-_080E591A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E58AC
-
- thumb_func_start sub_80E5920
-sub_80E5920: @ 80E5920
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0
- beq _080E5954
- cmp r0, 0x7
- beq _080E5980
- cmp r0, 0x9
- bls _080E594C
- adds r0, r1, 0
- adds r1, r5, 0
- bl sub_80E5EC0
- lsls r0, 24
- cmp r0, 0
- bne _080E5954
-_080E594C:
- adds r0, r5, 0
- bl sub_80E5708
- b _080E5980
-_080E5954:
- ldr r0, _080E5988 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080E598C @ =gMapObjects
- adds r4, r0
- movs r0, 0x22
- bl PlaySE
- ldrb r0, [r4, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r0, r5, 0
- bl sub_80608A4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
-_080E5980:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5988: .4byte gPlayerAvatar
-_080E598C: .4byte gMapObjects
- thumb_func_end sub_80E5920
-
- thumb_func_start sub_80E5990
-sub_80E5990: @ 80E5990
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80595B8
- pop {r0}
- bx r0
- thumb_func_end sub_80E5990
-
- thumb_func_start sub_80E59A0
-sub_80E59A0: @ 80E59A0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r7, _080E59D0 @ =gPlayerAvatar
- ldrb r1, [r7, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E59D4 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E59D8
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- bl sub_8059504
- b _080E5A28
- .align 2, 0
-_080E59D0: .4byte gPlayerAvatar
-_080E59D4: .4byte gMapObjects
-_080E59D8:
- adds r0, r4, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080E5A1E
- cmp r1, 0x6
- bne _080E59FA
- adds r0, r4, 0
- bl sub_8059594
- b _080E5A28
-_080E59FA:
- cmp r1, 0x9
- beq _080E5A0E
- cmp r1, 0x4
- bhi _080E5A28
- ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- cmp r0, 0
- beq _080E5A16
-_080E5A0E:
- adds r0, r4, 0
- bl sub_8059504
- b _080E5A28
-_080E5A16:
- adds r0, r4, 0
- bl sub_80595DC
- b _080E5A28
-_080E5A1E:
- adds r0, r6, 0
- bl sub_8059618
- movs r0, 0x2
- strb r0, [r7, 0x2]
-_080E5A28:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E59A0
-
- thumb_func_start sub_80E5A30
-sub_80E5A30: @ 80E5A30
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r7, _080E5A60 @ =gPlayerAvatar
- ldrb r1, [r7, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E5A64 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E5A68
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- bl sub_805951C
- b _080E5AB8
- .align 2, 0
-_080E5A60: .4byte gPlayerAvatar
-_080E5A64: .4byte gMapObjects
-_080E5A68:
- adds r0, r4, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080E5AAE
- cmp r1, 0x6
- bne _080E5A8A
- adds r0, r4, 0
- bl sub_8059594
- b _080E5AB8
-_080E5A8A:
- cmp r1, 0x9
- beq _080E5A9E
- cmp r1, 0x4
- bhi _080E5AB8
- ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- cmp r0, 0
- beq _080E5AA6
-_080E5A9E:
- adds r0, r4, 0
- bl sub_8059504
- b _080E5AB8
-_080E5AA6:
- adds r0, r4, 0
- bl sub_80595DC
- b _080E5AB8
-_080E5AAE:
- adds r0, r6, 0
- bl sub_8059600
- movs r0, 0x2
- strb r0, [r7, 0x2]
-_080E5AB8:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E5A30
-
- thumb_func_start sub_80E5AC0
-sub_80E5AC0: @ 80E5AC0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r0, _080E5AF0 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E5AF4 @ =gMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80E5E70
- lsls r0, 24
- cmp r0, 0
- bne _080E5AF8
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- bl sub_8059534
- b _080E5B32
- .align 2, 0
-_080E5AF0: .4byte gPlayerAvatar
-_080E5AF4: .4byte gMapObjects
-_080E5AF8:
- adds r0, r4, 0
- bl sub_80E5D34
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080E5B2C
- cmp r1, 0x6
- bne _080E5B1A
- adds r0, r4, 0
- bl PlayerJumpLedge
- b _080E5B32
-_080E5B1A:
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080E5B32
- adds r0, r4, 0
- bl sub_8059534
- b _080E5B32
-_080E5B2C:
- adds r0, r6, 0
- bl sub_8059630
-_080E5B32:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E5AC0
-
- thumb_func_start sub_80E5B38
-sub_80E5B38: @ 80E5B38
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r2, r1, 16
- ldr r0, _080E5B5C @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080E5B56
- adds r0, r3, 0
- adds r1, r2, 0
- bl sub_80E5B60
-_080E5B56:
- pop {r0}
- bx r0
- .align 2, 0
-_080E5B5C: .4byte gPlayerAvatar
- thumb_func_end sub_80E5B38
-
- thumb_func_start sub_80E5B60
-sub_80E5B60: @ 80E5B60
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- adds r0, r5, 0
- bl sub_80E5CF4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r4, _080E5B88 @ =gPlayerAvatar
- ldr r0, [r4, 0xC]
- movs r1, 0xF
- ands r0, r1
- cmp r2, r0
- bne _080E5B8C
- ldrb r0, [r4, 0x14]
- cmp r0, 0xFE
- bhi _080E5B96
- adds r0, 0x1
- strb r0, [r4, 0x14]
- b _080E5B96
- .align 2, 0
-_080E5B88: .4byte gPlayerAvatar
-_080E5B8C:
- adds r0, r2, 0
- bl sub_80E5C7C
- movs r0, 0
- strb r0, [r4, 0xB]
-_080E5B96:
- movs r0, 0xF
- adds r2, r5, 0
- ands r2, r0
- ldr r4, _080E5BB4 @ =gPlayerAvatar
- ldr r0, [r4, 0x10]
- movs r1, 0xF
- ands r0, r1
- cmp r2, r0
- bne _080E5BB8
- ldrb r0, [r4, 0x1C]
- cmp r0, 0xFE
- bhi _080E5BC2
- adds r0, 0x1
- strb r0, [r4, 0x1C]
- b _080E5BC2
- .align 2, 0
-_080E5BB4: .4byte gPlayerAvatar
-_080E5BB8:
- adds r0, r2, 0
- bl sub_80E5CB8
- movs r0, 0
- strb r0, [r4, 0xB]
-_080E5BC2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E5B60
-
- thumb_func_start sub_80E5BC8
-sub_80E5BC8: @ 80E5BC8
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- movs r2, 0
- ldrb r0, [r3]
- cmp r0, 0
- beq _080E5BF2
- ldr r5, _080E5C0C @ =gUnknown_0202E86C
-_080E5BD8:
- adds r0, r2, r5
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bhi _080E5C08
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080E5BD8
-_080E5BF2:
- movs r2, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _080E5C22
- ldr r3, _080E5C10 @ =gUnknown_0202E874
-_080E5BFC:
- adds r0, r2, r3
- adds r1, r4, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _080E5C14
-_080E5C08:
- movs r0, 0
- b _080E5C24
- .align 2, 0
-_080E5C0C: .4byte gUnknown_0202E86C
-_080E5C10: .4byte gUnknown_0202E874
-_080E5C14:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080E5BFC
-_080E5C22:
- movs r0, 0x1
-_080E5C24:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80E5BC8
-
- thumb_func_start sub_80E5C2C
-sub_80E5C2C: @ 80E5C2C
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
-_080E5C32:
- ldr r0, _080E5C64 @ =gUnknown_083DB608
- adds r4, r5, r0
- ldr r0, _080E5C68 @ =gPlayerAvatar
- ldr r1, [r0, 0xC]
- ldr r2, [r0, 0x10]
- ldr r0, [r4, 0x8]
- ands r1, r0
- ldr r0, [r4, 0xC]
- ands r2, r0
- ldr r0, [r4]
- cmp r1, r0
- bne _080E5C6C
- ldr r0, [r4, 0x4]
- cmp r2, r0
- bne _080E5C6C
- ldr r0, [r4, 0x10]
- ldr r1, [r4, 0x14]
- bl sub_80E5BC8
- lsls r0, 24
- cmp r0, 0
- beq _080E5C6C
- ldrb r0, [r4, 0x18]
- b _080E5C76
- .align 2, 0
-_080E5C64: .4byte gUnknown_083DB608
-_080E5C68: .4byte gPlayerAvatar
-_080E5C6C:
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- bls _080E5C32
- movs r0, 0
-_080E5C76:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80E5C2C
-
- thumb_func_start sub_80E5C7C
-sub_80E5C7C: @ 80E5C7C
- push {r4,lr}
- lsls r0, 24
- ldr r3, _080E5CB4 @ =gPlayerAvatar
- ldr r2, [r3, 0xC]
- lsls r2, 4
- movs r1, 0xF0
- lsls r1, 20
- ands r1, r0
- lsrs r1, 24
- orrs r2, r1
- str r2, [r3, 0xC]
- movs r1, 0x7
- adds r4, r3, 0
- adds r3, 0x14
-_080E5C98:
- adds r2, r1, r3
- subs r1, 0x1
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- bne _080E5C98
- movs r0, 0x1
- strb r0, [r4, 0x14]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5CB4: .4byte gPlayerAvatar
- thumb_func_end sub_80E5C7C
-
- thumb_func_start sub_80E5CB8
-sub_80E5CB8: @ 80E5CB8
- push {r4,lr}
- lsls r0, 24
- ldr r3, _080E5CF0 @ =gPlayerAvatar
- ldr r2, [r3, 0x10]
- lsls r2, 4
- movs r1, 0xF0
- lsls r1, 20
- ands r1, r0
- lsrs r1, 24
- orrs r2, r1
- str r2, [r3, 0x10]
- movs r1, 0x7
- adds r4, r3, 0
- adds r3, 0x1C
-_080E5CD4:
- adds r2, r1, r3
- subs r1, 0x1
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- bne _080E5CD4
- movs r0, 0x1
- strb r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5CF0: .4byte gPlayerAvatar
- thumb_func_end sub_80E5CB8
-
- thumb_func_start sub_80E5CF4
-sub_80E5CF4: @ 80E5CF4
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r1, 0
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080E5D08
- movs r0, 0x2
- b _080E5D2E
-_080E5D08:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080E5D14
- movs r0, 0x1
- b _080E5D2E
-_080E5D14:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080E5D20
- movs r0, 0x3
- b _080E5D2E
-_080E5D20:
- movs r0, 0x10
- ands r2, r0
- cmp r2, 0
- bne _080E5D2C
- movs r0, 0
- b _080E5D2E
-_080E5D2C:
- movs r0, 0x4
-_080E5D2E:
- pop {r1}
- bx r1
- thumb_func_end sub_80E5CF4
-
- thumb_func_start sub_80E5D34
-sub_80E5D34: @ 80E5D34
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080E5D98 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080E5D9C @ =gMapObjects
- adds r4, r0
- ldrh r1, [r4, 0x10]
- add r0, sp, 0x4
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x6
- strh r0, [r5]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- bl MoveCoords
- add r0, sp, 0x4
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- add r1, sp, 0x4
- movs r3, 0
- ldrsh r1, [r1, r3]
- movs r3, 0
- ldrsh r2, [r5, r3]
- str r0, [sp]
- adds r0, r4, 0
- adds r3, r6, 0
- bl sub_80E5DA0
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080E5D98: .4byte gPlayerAvatar
-_080E5D9C: .4byte gMapObjects
- thumb_func_end sub_80E5D34
-
- thumb_func_start sub_80E5DA0
-sub_80E5DA0: @ 80E5DA0
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r4, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- adds r5, r4, 0
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- str r5, [sp]
- bl CheckForFieldObjectCollision
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bhi _080E5DE0
- cmp r4, 0
- bne _080E5DDC
- adds r0, r5, 0
- bl IsRunningDisallowedByMetatile
- lsls r0, 24
- cmp r0, 0
- beq _080E5DD8
- movs r4, 0x2
-_080E5DD8:
- cmp r4, 0
- beq _080E5DE0
-_080E5DDC:
- bl sub_80E5E4C
-_080E5DE0:
- adds r0, r4, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80E5DA0
-
- thumb_func_start sub_80E5DEC
-sub_80E5DEC: @ 80E5DEC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl IsRunningDisallowedByMetatile
- lsls r0, 24
- cmp r0, 0
- bne _080E5E04
- ldr r0, _080E5E08 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x8
- bne _080E5E0C
-_080E5E04:
- movs r0, 0x1
- b _080E5E0E
- .align 2, 0
-_080E5E08: .4byte gMapHeader
-_080E5E0C:
- movs r0, 0
-_080E5E0E:
- pop {r1}
- bx r1
- thumb_func_end sub_80E5DEC
-
- thumb_func_start IsRunningDisallowedByMetatile
-IsRunningDisallowedByMetatile: @ 80E5E14
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsRunningDisallowed
- lsls r0, 24
- cmp r0, 0
- bne _080E5E3E
- adds r0, r4, 0
- bl MetatileBehavior_IsFortreeBridge
- lsls r0, 24
- cmp r0, 0
- beq _080E5E42
- bl PlayerGetZCoord
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _080E5E42
-_080E5E3E:
- movs r0, 0x1
- b _080E5E44
-_080E5E42:
- movs r0, 0
-_080E5E44:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsRunningDisallowedByMetatile
-
- thumb_func_start sub_80E5E4C
-sub_80E5E4C: @ 80E5E4C
- push {lr}
- ldr r0, _080E5E68 @ =gUnknown_02039250
- ldrb r0, [r0]
- cmp r0, 0
- beq _080E5E62
- ldr r1, _080E5E6C @ =gUnknown_02039251
- ldrb r0, [r1]
- cmp r0, 0x63
- bhi _080E5E62
- adds r0, 0x1
- strb r0, [r1]
-_080E5E62:
- pop {r0}
- bx r0
- .align 2, 0
-_080E5E68: .4byte gUnknown_02039250
-_080E5E6C: .4byte gUnknown_02039251
- thumb_func_end sub_80E5E4C
-
- thumb_func_start sub_80E5E70
-sub_80E5E70: @ 80E5E70
- push {r4,r5,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- adds r5, r4, 0
- movs r1, 0xFD
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080E5E9A
- adds r0, r4, 0
- bl MetatileBehavior_IsIsolatedVerticalRail
- lsls r0, 24
- cmp r0, 0
- bne _080E5EB2
- adds r0, r4, 0
- bl MetatileBehavior_IsVerticalRail
- b _080E5EAC
-_080E5E9A:
- adds r0, r5, 0
- bl MetatileBehavior_IsIsolatedHorizontalRail
- lsls r0, 24
- cmp r0, 0
- bne _080E5EB2
- adds r0, r5, 0
- bl MetatileBehavior_IsHorizontalRail
-_080E5EAC:
- lsls r0, 24
- cmp r0, 0
- beq _080E5EB6
-_080E5EB2:
- movs r0, 0
- b _080E5EB8
-_080E5EB6:
- movs r0, 0x1
-_080E5EB8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80E5E70
-
- thumb_func_start sub_80E5EC0
-sub_80E5EC0: @ 80E5EC0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- lsls r1, 24
- movs r3, 0xFF
- lsls r3, 24
- adds r1, r3
- lsrs r1, 24
- cmp r1, 0x1
- bhi _080E5EE0
- cmp r0, 0xA
- beq _080E5EE8
- cmp r0, 0xC
- bne _080E5EEC
- b _080E5EE8
-_080E5EE0:
- cmp r2, 0xB
- beq _080E5EE8
- cmp r2, 0xD
- bne _080E5EEC
-_080E5EE8:
- movs r0, 0
- b _080E5EEE
-_080E5EEC:
- movs r0, 0x1
-_080E5EEE:
- pop {r1}
- bx r1
- thumb_func_end sub_80E5EC0
-
- thumb_func_start IsBikingDisallowedByPlayer
-IsBikingDisallowedByPlayer: @ 80E5EF4
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080E5F30 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- bne _080E5F34
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl IsRunningDisallowedByMetatile
- lsls r0, 24
- cmp r0, 0
- bne _080E5F34
- movs r0, 0
- b _080E5F36
- .align 2, 0
-_080E5F30: .4byte gPlayerAvatar
-_080E5F34:
- movs r0, 0x1
-_080E5F36:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsBikingDisallowedByPlayer
-
- thumb_func_start player_should_look_direction_be_enforced_upon_movement
-player_should_look_direction_be_enforced_upon_movement: @ 80E5F40
- push {lr}
- movs r0, 0x4
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _080E5F74
- ldr r2, _080E5F6C @ =gMapObjects
- ldr r0, _080E5F70 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- cmp r0, 0
- beq _080E5F74
- movs r0, 0
- b _080E5F76
- .align 2, 0
-_080E5F6C: .4byte gMapObjects
-_080E5F70: .4byte gPlayerAvatar
-_080E5F74:
- movs r0, 0x1
-_080E5F76:
- pop {r1}
- bx r1
- thumb_func_end player_should_look_direction_be_enforced_upon_movement
-
- thumb_func_start GetOnOffBike
-GetOnOffBike: @ 80E5F7C
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080E5FA4 @ =gUnknown_0202E854
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080E5FA8 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _080E5FAC
- movs r0, 0x1
- bl SetPlayerAvatarTransitionFlags
- bl sav1_reset_battle_music_maybe
- bl sub_8053E90
- b _080E5FC0
- .align 2, 0
-_080E5FA4: .4byte gUnknown_0202E854
-_080E5FA8: .4byte gPlayerAvatar
-_080E5FAC:
- adds r0, r2, 0
- bl SetPlayerAvatarTransitionFlags
- ldr r4, _080E5FC8 @ =0x00000193
- adds r0, r4, 0
- bl sav1_set_battle_music_maybe
- adds r0, r4, 0
- bl sub_8053FB0
-_080E5FC0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5FC8: .4byte 0x00000193
- thumb_func_end GetOnOffBike
-
- thumb_func_start sub_80E5FCC
-sub_80E5FCC: @ 80E5FCC
- push {lr}
- ldr r2, _080E6008 @ =gPlayerAvatar
- movs r3, 0
- strb r3, [r2, 0x8]
- strb r3, [r2, 0x9]
- strb r3, [r2, 0xA]
- strb r3, [r2, 0xB]
- str r0, [r2, 0xC]
- str r1, [r2, 0x10]
- movs r1, 0
- adds r2, 0x14
-_080E5FE2:
- adds r0, r1, r2
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x7
- bls _080E5FE2
- movs r1, 0
- ldr r3, _080E600C @ =gUnknown_0202E874
- movs r2, 0
-_080E5FF6:
- adds r0, r1, r3
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x7
- bls _080E5FF6
- pop {r0}
- bx r0
- .align 2, 0
-_080E6008: .4byte gPlayerAvatar
-_080E600C: .4byte gUnknown_0202E874
- thumb_func_end sub_80E5FCC
-
- thumb_func_start sub_80E6010
-sub_80E6010: @ 80E6010
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E6020 @ =gPlayerAvatar
- strb r0, [r2, 0xA]
- lsrs r1, r0, 1
- adds r0, r1
- strb r0, [r2, 0xB]
- bx lr
- .align 2, 0
-_080E6020: .4byte gPlayerAvatar
- thumb_func_end sub_80E6010
-
- thumb_func_start sub_80E6024
-sub_80E6024: @ 80E6024
- ldr r1, _080E6030 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0xA]
- strb r0, [r1, 0xB]
- bx lr
- .align 2, 0
-_080E6030: .4byte gPlayerAvatar
- thumb_func_end sub_80E6024
-
- thumb_func_start sub_80E6034
-sub_80E6034: @ 80E6034
- push {lr}
- sub sp, 0x8
- ldr r1, _080E605C @ =gUnknown_083DB600
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- ldr r2, _080E6060 @ =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080E6064
- ldrb r0, [r2, 0xA]
- lsls r0, 1
- add r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- b _080E607E
- .align 2, 0
-_080E605C: .4byte gUnknown_083DB600
-_080E6060: .4byte gPlayerAvatar
-_080E6064:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080E6070
- movs r0, 0x3
- b _080E607E
-_080E6070:
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _080E607C
- movs r0, 0x1
- b _080E607E
-_080E607C:
- movs r0, 0x2
-_080E607E:
- add sp, 0x8
- pop {r1}
- bx r1
- thumb_func_end sub_80E6034
-
- thumb_func_start sub_80E6084
-sub_80E6084: @ 80E6084
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _080E60D4 @ =gPlayerAvatar
- ldrb r1, [r5]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080E60CC
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsBumpySlope
- lsls r0, 24
- cmp r0, 0
- beq _080E60CC
- movs r0, 0x2
- strb r0, [r5, 0x8]
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r0, 24
- bl sub_8059C94
-_080E60CC:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E60D4: .4byte gPlayerAvatar
- thumb_func_end sub_80E6084
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/braille_puzzles.s b/asm/braille_puzzles.s
deleted file mode 100644
index f8f2683a6..000000000
--- a/asm/braille_puzzles.s
+++ /dev/null
@@ -1,606 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ShouldDoBrailleDigEffect
-ShouldDoBrailleDigEffect: @ 81473B8
- push {lr}
- ldr r0, _081473E8 @ =0x0000084f
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08147400
- ldr r2, _081473EC @ =gSaveBlock1
- ldrh r1, [r2, 0x4]
- ldr r0, _081473F0 @ =0x00004718
- cmp r1, r0
- bne _08147400
- ldr r1, [r2]
- ldr r0, _081473F4 @ =0x0003000a
- cmp r1, r0
- beq _081473E4
- ldr r0, _081473F8 @ =0x00030009
- cmp r1, r0
- beq _081473E4
- ldr r0, _081473FC @ =0x0003000b
- cmp r1, r0
- bne _08147400
-_081473E4:
- movs r0, 0x1
- b _08147402
- .align 2, 0
-_081473E8: .4byte 0x0000084f
-_081473EC: .4byte gSaveBlock1
-_081473F0: .4byte 0x00004718
-_081473F4: .4byte 0x0003000a
-_081473F8: .4byte 0x00030009
-_081473FC: .4byte 0x0003000b
-_08147400:
- movs r0, 0
-_08147402:
- pop {r1}
- bx r1
- thumb_func_end ShouldDoBrailleDigEffect
-
- thumb_func_start DoBrailleDigEffect
-DoBrailleDigEffect: @ 8147408
- push {lr}
- ldr r2, _08147460 @ =0x0000022a
- movs r0, 0x10
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, _08147464 @ =0x0000022b
- movs r0, 0x11
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- movs r2, 0x8B
- lsls r2, 2
- movs r0, 0x12
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, _08147468 @ =0x00000e32
- movs r0, 0x10
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- ldr r2, _0814746C @ =0x00000233
- movs r0, 0x11
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- ldr r2, _08147470 @ =0x00000e34
- movs r0, 0x12
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x14
- bl PlaySE
- ldr r0, _08147474 @ =0x0000084f
- bl FlagSet
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- .align 2, 0
-_08147460: .4byte 0x0000022a
-_08147464: .4byte 0x0000022b
-_08147468: .4byte 0x00000e32
-_0814746C: .4byte 0x00000233
-_08147470: .4byte 0x00000e34
-_08147474: .4byte 0x0000084f
- thumb_func_end DoBrailleDigEffect
-
- thumb_func_start CheckRelicanthWailord
-CheckRelicanthWailord: @ 8147478
- push {r4,lr}
- ldr r4, _081474B4 @ =gPlayerParty
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- ldr r1, _081474B8 @ =0x0000017d
- cmp r0, r1
- bne _081474C0
- bl CalculatePlayerPartyCount
- ldr r0, _081474BC @ =gPlayerPartyCount
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- adds r1, r4, 0
- subs r1, 0x64
- adds r0, r1
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- movs r1, 0x9D
- lsls r1, 1
- cmp r0, r1
- bne _081474C0
- movs r0, 0x1
- b _081474C2
- .align 2, 0
-_081474B4: .4byte gPlayerParty
-_081474B8: .4byte 0x0000017d
-_081474BC: .4byte gPlayerPartyCount
-_081474C0:
- movs r0, 0
-_081474C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end CheckRelicanthWailord
-
- thumb_func_start ShouldDoBrailleStrengthEffect
-ShouldDoBrailleStrengthEffect: @ 81474C8
- push {lr}
- movs r0, 0x85
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0814750C
- ldr r2, _081474FC @ =gSaveBlock1
- ldrh r1, [r2, 0x4]
- movs r0, 0xC3
- lsls r0, 3
- cmp r1, r0
- bne _0814750C
- ldr r1, [r2]
- ldr r0, _08147500 @ =0x0017000a
- cmp r1, r0
- beq _081474F8
- ldr r0, _08147504 @ =0x00170009
- cmp r1, r0
- beq _081474F8
- ldr r0, _08147508 @ =0x0017000b
- cmp r1, r0
- bne _0814750C
-_081474F8:
- movs r0, 0x1
- b _0814750E
- .align 2, 0
-_081474FC: .4byte gSaveBlock1
-_08147500: .4byte 0x0017000a
-_08147504: .4byte 0x00170009
-_08147508: .4byte 0x0017000b
-_0814750C:
- movs r0, 0
-_0814750E:
- pop {r1}
- bx r1
- thumb_func_end ShouldDoBrailleStrengthEffect
-
- thumb_func_start DoBrailleStrengthEffect
-DoBrailleStrengthEffect: @ 8147514
- push {lr}
- movs r0, 0x28
- bl FieldEffectActiveListRemove
- ldr r2, _08147574 @ =0x0000022a
- movs r0, 0xE
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, _08147578 @ =0x0000022b
- movs r0, 0xF
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- movs r2, 0x8B
- lsls r2, 2
- movs r0, 0x10
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, _0814757C @ =0x00000e32
- movs r0, 0xE
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, _08147580 @ =0x00000233
- movs r0, 0xF
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, _08147584 @ =0x00000e34
- movs r0, 0x10
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x14
- bl PlaySE
- movs r0, 0x85
- lsls r0, 4
- bl FlagSet
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- .align 2, 0
-_08147574: .4byte 0x0000022a
-_08147578: .4byte 0x0000022b
-_0814757C: .4byte 0x00000e32
-_08147580: .4byte 0x00000233
-_08147584: .4byte 0x00000e34
- thumb_func_end DoBrailleStrengthEffect
-
- thumb_func_start ShouldDoBrailleFlyEffect
-ShouldDoBrailleFlyEffect: @ 8147588
- push {lr}
- ldr r0, _081475AC @ =0x00000852
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _081475BC
- ldr r2, _081475B0 @ =gSaveBlock1
- ldrh r1, [r2, 0x4]
- ldr r0, _081475B4 @ =0x00004418
- cmp r1, r0
- bne _081475BC
- ldr r1, [r2]
- ldr r0, _081475B8 @ =0x00190008
- cmp r1, r0
- bne _081475BC
- movs r0, 0x1
- b _081475BE
- .align 2, 0
-_081475AC: .4byte 0x00000852
-_081475B0: .4byte gSaveBlock1
-_081475B4: .4byte 0x00004418
-_081475B8: .4byte 0x00190008
-_081475BC:
- movs r0, 0
-_081475BE:
- pop {r1}
- bx r1
- thumb_func_end ShouldDoBrailleFlyEffect
-
- thumb_func_start DoBrailleFlyEffect
-DoBrailleFlyEffect: @ 81475C4
- push {lr}
- ldr r0, _081475D8 @ =gUnknown_0202FF84
- ldr r1, _081475DC @ =gUnknown_03005CE0
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x3C
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_081475D8: .4byte gUnknown_0202FF84
-_081475DC: .4byte gUnknown_03005CE0
- thumb_func_end DoBrailleFlyEffect
-
- thumb_func_start FldEff_UseFlyAncientTomb
-FldEff_UseFlyAncientTomb: @ 81475E0
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08147604 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _08147608 @ =UseFlyAncientTomb_Callback
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08147604: .4byte gTasks
-_08147608: .4byte UseFlyAncientTomb_Callback
- thumb_func_end FldEff_UseFlyAncientTomb
-
- thumb_func_start UseFlyAncientTomb_Callback
-UseFlyAncientTomb_Callback: @ 814760C
- push {lr}
- movs r0, 0x3C
- bl FieldEffectActiveListRemove
- bl UseFlyAncientTomb_Finish
- pop {r0}
- bx r0
- thumb_func_end UseFlyAncientTomb_Callback
-
- thumb_func_start UseFlyAncientTomb_Finish
-UseFlyAncientTomb_Finish: @ 814761C
- push {lr}
- ldr r2, _08147674 @ =0x0000022a
- movs r0, 0xE
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, _08147678 @ =0x0000022b
- movs r0, 0xF
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- movs r2, 0x8B
- lsls r2, 2
- movs r0, 0x10
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, _0814767C @ =0x00000e32
- movs r0, 0xE
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, _08147680 @ =0x00000233
- movs r0, 0xF
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, _08147684 @ =0x00000e34
- movs r0, 0x10
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x14
- bl PlaySE
- ldr r0, _08147688 @ =0x00000852
- bl FlagSet
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- .align 2, 0
-_08147674: .4byte 0x0000022a
-_08147678: .4byte 0x0000022b
-_0814767C: .4byte 0x00000e32
-_08147680: .4byte 0x00000233
-_08147684: .4byte 0x00000e34
-_08147688: .4byte 0x00000852
- thumb_func_end UseFlyAncientTomb_Finish
-
- thumb_func_start DoBrailleWait
-DoBrailleWait: @ 814768C
- push {lr}
- ldr r0, _081476A8 @ =0x00000851
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _081476A2
- ldr r0, _081476AC @ =Task_BrailleWait
- movs r1, 0x50
- bl CreateTask
-_081476A2:
- pop {r0}
- bx r0
- .align 2, 0
-_081476A8: .4byte 0x00000851
-_081476AC: .4byte Task_BrailleWait
- thumb_func_end DoBrailleWait
-
- thumb_func_start Task_BrailleWait
-Task_BrailleWait: @ 81476B0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _081476D4 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bhi _0814776A
- lsls r0, 2
- ldr r1, _081476D8 @ =_081476DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081476D4: .4byte gTasks + 0x8
-_081476D8: .4byte _081476DC
- .align 2, 0
-_081476DC:
- .4byte _081476F0
- .4byte _081476FE
- .4byte _08147730
- .4byte _08147748
- .4byte _0814775A
-_081476F0:
- movs r1, 0xE1
- lsls r1, 5
- adds r0, r1, 0
- strh r0, [r4, 0x2]
- movs r0, 0x1
- strh r0, [r4]
- b _0814776A
-_081476FE:
- bl BrailleWait_CheckButtonPress
- cmp r0, 0
- beq _08147716
- bl MenuZeroFillScreen
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- strh r0, [r4]
- b _0814776A
-_08147716:
- ldrh r0, [r4, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _0814776A
- bl MenuZeroFillScreen
- movs r0, 0x3
- strh r0, [r4]
- movs r0, 0x1E
- strh r0, [r4, 0x2]
- b _0814776A
-_08147730:
- bl BrailleWait_CheckButtonPress
- cmp r0, 0
- beq _08147748
- bl sub_8064E2C
- adds r0, r5, 0
- bl DestroyTask
- bl ScriptContext2_Disable
- b _0814776A
-_08147748:
- ldrh r0, [r4, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _0814776A
- movs r0, 0x4
- strh r0, [r4]
- b _0814776A
-_0814775A:
- bl sub_8064E2C
- ldr r0, _08147770 @ =gUnknown_0815EF19
- bl ScriptContext1_SetupScript
- adds r0, r5, 0
- bl DestroyTask
-_0814776A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08147770: .4byte gUnknown_0815EF19
- thumb_func_end Task_BrailleWait
-
- thumb_func_start BrailleWait_CheckButtonPress
-BrailleWait_CheckButtonPress: @ 8147774
- push {lr}
- movs r1, 0xFF
- ldr r0, _081477A4 @ =gSaveBlock2
- ldrb r2, [r0, 0x13]
- cmp r2, 0x1
- bne _08147788
- movs r3, 0xC0
- lsls r3, 2
- adds r0, r3, 0
- orrs r1, r0
-_08147788:
- cmp r2, 0x2
- bne _08147794
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- orrs r1, r0
-_08147794:
- ldr r0, _081477A8 @ =gMain
- ldrh r0, [r0, 0x2E]
- ands r1, r0
- cmp r1, 0
- bne _081477AC
- movs r0, 0
- b _081477AE
- .align 2, 0
-_081477A4: .4byte gSaveBlock2
-_081477A8: .4byte gMain
-_081477AC:
- movs r0, 0x1
-_081477AE:
- pop {r1}
- bx r1
- thumb_func_end BrailleWait_CheckButtonPress
-
- thumb_func_start DoSealedChamberShakingEffect1
-DoSealedChamberShakingEffect1: @ 81477B4
- push {lr}
- ldr r0, _081477E8 @ =SealedChamberShakingEffect
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081477EC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- movs r0, 0x2
- strh r0, [r1, 0x10]
- movs r0, 0x5
- strh r0, [r1, 0x12]
- movs r0, 0x32
- strh r0, [r1, 0x14]
- movs r0, 0
- bl SetCameraPanningCallback
- pop {r0}
- bx r0
- .align 2, 0
-_081477E8: .4byte SealedChamberShakingEffect
-_081477EC: .4byte gTasks
- thumb_func_end DoSealedChamberShakingEffect1
-
- thumb_func_start DoSealedChamberShakingEffect2
-DoSealedChamberShakingEffect2: @ 81477F0
- push {lr}
- ldr r0, _08147824 @ =SealedChamberShakingEffect
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08147828 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- movs r0, 0x3
- strh r0, [r1, 0x10]
- movs r0, 0x5
- strh r0, [r1, 0x12]
- movs r0, 0x2
- strh r0, [r1, 0x14]
- movs r0, 0
- bl SetCameraPanningCallback
- pop {r0}
- bx r0
- .align 2, 0
-_08147824: .4byte SealedChamberShakingEffect
-_08147828: .4byte gTasks
- thumb_func_end DoSealedChamberShakingEffect2
-
- thumb_func_start SealedChamberShakingEffect
-SealedChamberShakingEffect: @ 814782C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0814788C @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _08147884
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r0, 0
- bl SetCameraPanning
- movs r2, 0xC
- ldrsh r1, [r4, r2]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08147884
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- bl InstallCameraPanAheadCallback
-_08147884:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814788C: .4byte gTasks
- thumb_func_end SealedChamberShakingEffect
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/choose_party.s b/asm/choose_party.s
index c895e71e0..25122e4ef 100644
--- a/asm/choose_party.s
+++ b/asm/choose_party.s
@@ -47,7 +47,7 @@ _08121E54: .4byte 0x00000263
sub_8121E58: @ 8121E58
push {lr}
movs r1, 0
- ldr r3, _08121E74 @ =gUnknown_02039270
+ ldr r3, _08121E74 @ =gSelectedOrderFromParty
movs r2, 0
_08121E60:
adds r0, r1, r3
@@ -60,7 +60,7 @@ _08121E60:
pop {r0}
bx r0
.align 2, 0
-_08121E74: .4byte gUnknown_02039270
+_08121E74: .4byte gSelectedOrderFromParty
thumb_func_end sub_8121E58
thumb_func_start sub_8121E78
@@ -192,7 +192,7 @@ _08121F78:
_08121F7E:
cmp r4, 0x2
bhi _08121FA0
- ldr r0, _08121FC4 @ =gUnknown_02039270
+ ldr r0, _08121FC4 @ =gSelectedOrderFromParty
adds r0, r4, r0
ldrb r0, [r0]
cmp r0, r6
@@ -223,7 +223,7 @@ _08121FA0:
bl sub_806BC3C
b _08121FD4
.align 2, 0
-_08121FC4: .4byte gUnknown_02039270
+_08121FC4: .4byte gSelectedOrderFromParty
_08121FC8: .4byte gPlayerParty
_08121FCC:
adds r0, r5, 0
@@ -372,7 +372,7 @@ sub_81220C8: @ 81220C8
ldrb r0, [r0]
cmp r0, 0
beq _081221A2
- ldr r0, _081220F4 @ =gUnknown_02039270
+ ldr r0, _081220F4 @ =gSelectedOrderFromParty
ldrb r0, [r0, 0x2]
cmp r0, 0
bne _08122100
@@ -381,7 +381,7 @@ sub_81220C8: @ 81220C8
.align 2, 0
_081220EC: .4byte 0x0201b000
_081220F0: .4byte 0x00000263
-_081220F4: .4byte gUnknown_02039270
+_081220F4: .4byte gSelectedOrderFromParty
_081220F8:
movs r0, 0x12
b _081221A4
@@ -391,7 +391,7 @@ _081220FC:
_08122100:
movs r5, 0
_08122102:
- ldr r4, _081221B4 @ =gUnknown_02039270
+ ldr r4, _081221B4 @ =gSelectedOrderFromParty
adds r4, r5, r4
ldrb r0, [r4]
movs r1, 0x64
@@ -430,7 +430,7 @@ _0812214A:
add r0, r9
movs r1, 0
ldrsh r4, [r0, r1]
- ldr r0, _081221B4 @ =gUnknown_02039270
+ ldr r0, _081221B4 @ =gSelectedOrderFromParty
adds r6, r5, r0
ldrb r0, [r6]
mov r2, r8
@@ -481,7 +481,7 @@ _081221A4:
pop {r1}
bx r1
.align 2, 0
-_081221B4: .4byte gUnknown_02039270
+_081221B4: .4byte gSelectedOrderFromParty
_081221B8: .4byte gUnknown_030042FC
_081221BC: .4byte 0x0201b000
_081221C0: .4byte 0x00000282
@@ -495,7 +495,7 @@ sub_81221CC: @ 81221CC
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
- ldr r3, _081221E4 @ =gUnknown_02039270
+ ldr r3, _081221E4 @ =gSelectedOrderFromParty
_081221D6:
adds r0, r1, r3
ldrb r0, [r0]
@@ -504,7 +504,7 @@ _081221D6:
movs r0, 0x1
b _081221F4
.align 2, 0
-_081221E4: .4byte gUnknown_02039270
+_081221E4: .4byte gSelectedOrderFromParty
_081221E8:
adds r0, r1, 0x1
lsls r0, 24
@@ -525,7 +525,7 @@ sub_81221F8: @ 81221F8
movs r0, 0x5
movs r1, 0x1
bl sub_806D538
- ldr r5, _08122248 @ =gUnknown_03005CE0
+ ldr r5, _08122248 @ =gLastFieldPokeMenuOpened
ldrb r1, [r5]
movs r0, 0x64
muls r0, r1
@@ -556,7 +556,7 @@ sub_81221F8: @ 81221F8
movs r0, 0x1
b _08122270
.align 2, 0
-_08122248: .4byte gUnknown_03005CE0
+_08122248: .4byte gLastFieldPokeMenuOpened
_0812224C: .4byte gPlayerParty
_08122250: .4byte gTasks
_08122254: .4byte gUnknown_084017D8
@@ -633,7 +633,7 @@ _081222E0:
bl PlaySE
adds r0, r4, 0
bl sub_806CA38
- ldr r1, _08122320 @ =gUnknown_03005CE0
+ ldr r1, _08122320 @ =gLastFieldPokeMenuOpened
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
@@ -657,7 +657,7 @@ _081222E0:
str r1, [r0]
b _08122342
.align 2, 0
-_08122320: .4byte gUnknown_03005CE0
+_08122320: .4byte gLastFieldPokeMenuOpened
_08122324: .4byte gPlayerParty
_08122328: .4byte gStringVar1
_0812232C: .4byte gTasks
@@ -775,7 +775,7 @@ _081223F2:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
- bl sub_806E81C
+ bl PartyMenuGetPopupMenuFunc
adds r1, r0, 0
adds r0, r7, 0
bl _call_via_r1
@@ -868,7 +868,7 @@ sub_81224A8: @ 81224A8
.align 2, 0
_081224CC: .4byte gTasks
_081224D0:
- ldr r0, _081224F8 @ =gUnknown_02039270
+ ldr r0, _081224F8 @ =gSelectedOrderFromParty
ldrb r0, [r0]
cmp r0, 0
beq _08122504
@@ -888,7 +888,7 @@ _081224D0:
str r1, [r0]
b _08122520
.align 2, 0
-_081224F8: .4byte gUnknown_02039270
+_081224F8: .4byte gSelectedOrderFromParty
_081224FC: .4byte gTasks
_08122500: .4byte sub_8122450
_08122504:
@@ -939,7 +939,7 @@ _08122536:
adds r0, r1
ldr r1, _08122584 @ =gStringVar1
bl GetMonNickname
- ldr r1, _08122588 @ =gUnknown_03005CE0
+ ldr r1, _08122588 @ =gLastFieldPokeMenuOpened
ldrb r0, [r4]
strb r0, [r1]
ldrb r0, [r5]
@@ -952,7 +952,7 @@ _08122578: .4byte 0x0201b260
_0812257C: .4byte gUnknown_020384F0
_08122580: .4byte gPlayerParty
_08122584: .4byte gStringVar1
-_08122588: .4byte gUnknown_03005CE0
+_08122588: .4byte gLastFieldPokeMenuOpened
_0812258C: .4byte sub_806AEDC
_08122590:
bl sub_80F9344
@@ -1088,8 +1088,8 @@ sub_8122694: @ 8122694
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
- ldr r3, _081226D4 @ =gUnknown_02039270
- ldr r2, _081226D8 @ =gUnknown_03005CE0
+ ldr r3, _081226D4 @ =gSelectedOrderFromParty
+ ldr r2, _081226D8 @ =gLastFieldPokeMenuOpened
_081226A0:
adds r1, r4, r3
ldrb r0, [r1]
@@ -1116,8 +1116,8 @@ _081226CC:
bl sub_8122838
b _08122716
.align 2, 0
-_081226D4: .4byte gUnknown_02039270
-_081226D8: .4byte gUnknown_03005CE0
+_081226D4: .4byte gSelectedOrderFromParty
+_081226D8: .4byte gLastFieldPokeMenuOpened
_081226DC:
adds r0, r4, 0x1
lsls r0, 24
@@ -1196,8 +1196,8 @@ sub_8122770: @ 8122770
lsls r0, 24
lsrs r6, r0, 24
movs r4, 0
- ldr r5, _08122798 @ =gUnknown_03005CE0
- ldr r3, _0812279C @ =gUnknown_02039270
+ ldr r5, _08122798 @ =gLastFieldPokeMenuOpened
+ ldr r3, _0812279C @ =gSelectedOrderFromParty
_0812277C:
adds r2, r4, r3
ldrb r1, [r2]
@@ -1213,8 +1213,8 @@ _0812277C:
beq _081227AC
b _081227BE
.align 2, 0
-_08122798: .4byte gUnknown_03005CE0
-_0812279C: .4byte gUnknown_02039270
+_08122798: .4byte gLastFieldPokeMenuOpened
+_0812279C: .4byte gSelectedOrderFromParty
_081227A0:
ldrb r0, [r3, 0x1]
strb r0, [r3]
@@ -1237,7 +1237,7 @@ _081227BE:
ldrb r0, [r5]
movs r1, 0x70
bl sub_806BC3C
- ldr r4, _081227F8 @ =gUnknown_02039270
+ ldr r4, _081227F8 @ =gSelectedOrderFromParty
ldrb r0, [r4]
cmp r0, 0
beq _081227DA
@@ -1262,7 +1262,7 @@ _081227EC:
pop {r0}
bx r0
.align 2, 0
-_081227F8: .4byte gUnknown_02039270
+_081227F8: .4byte gSelectedOrderFromParty
thumb_func_end sub_8122770
thumb_func_start sub_81227FC
@@ -1982,7 +1982,7 @@ sub_8122D94: @ 8122D94
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _08122DCC @ =gUnknown_03005CE0
+ ldr r0, _08122DCC @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -2006,7 +2006,7 @@ sub_8122D94: @ 8122D94
bl sub_806E750
b _08122DFA
.align 2, 0
-_08122DCC: .4byte gUnknown_03005CE0
+_08122DCC: .4byte gLastFieldPokeMenuOpened
_08122DD0: .4byte gPlayerParty
_08122DD4: .4byte gTasks
_08122DD8: .4byte gUnknown_08401810
@@ -2061,7 +2061,7 @@ _08122E38:
bl PlaySE
adds r0, r4, 0
bl sub_806CA38
- ldr r1, _08122E70 @ =gUnknown_03005CE0
+ ldr r1, _08122E70 @ =gLastFieldPokeMenuOpened
strb r0, [r1]
ldrb r1, [r1]
movs r0, 0x64
@@ -2081,7 +2081,7 @@ _08122E38:
str r1, [r0]
b _08122E9C
.align 2, 0
-_08122E70: .4byte gUnknown_03005CE0
+_08122E70: .4byte gLastFieldPokeMenuOpened
_08122E74: .4byte gPlayerParty
_08122E78: .4byte gStringVar1
_08122E7C: .4byte gTasks
@@ -2089,7 +2089,7 @@ _08122E80: .4byte sub_8122EAC
_08122E84:
movs r0, 0x5
bl PlaySE
- ldr r1, _08122EA4 @ =gUnknown_03005CE0
+ ldr r1, _08122EA4 @ =gLastFieldPokeMenuOpened
movs r0, 0xFF
strb r0, [r1]
ldr r1, _08122EA8 @ =gSpecialVar_0x8004
@@ -2102,7 +2102,7 @@ _08122E9C:
pop {r0}
bx r0
.align 2, 0
-_08122EA4: .4byte gUnknown_03005CE0
+_08122EA4: .4byte gLastFieldPokeMenuOpened
_08122EA8: .4byte gSpecialVar_0x8004
thumb_func_end sub_8122E0C
@@ -2176,7 +2176,7 @@ _08122F12:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
- bl sub_806E81C
+ bl PartyMenuGetPopupMenuFunc
adds r1, r0, 0
adds r0, r7, 0
bl _call_via_r1
@@ -2204,7 +2204,7 @@ sub_8122F70: @ 8122F70
lsls r0, 24
lsrs r0, 24
ldr r2, _08122F88 @ =gSpecialVar_0x8004
- ldr r1, _08122F8C @ =gUnknown_03005CE0
+ ldr r1, _08122F8C @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
strh r1, [r2]
bl sub_8123138
@@ -2212,7 +2212,7 @@ sub_8122F70: @ 8122F70
bx r0
.align 2, 0
_08122F88: .4byte gSpecialVar_0x8004
-_08122F8C: .4byte gUnknown_03005CE0
+_08122F8C: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_8122F70
thumb_func_start sub_8122F90
@@ -2239,7 +2239,7 @@ _08122F96:
adds r0, r1
ldr r1, _08122FE4 @ =gStringVar1
bl GetMonNickname
- ldr r1, _08122FE8 @ =gUnknown_03005CE0
+ ldr r1, _08122FE8 @ =gLastFieldPokeMenuOpened
ldrb r0, [r4]
strb r0, [r1]
ldrb r0, [r5]
@@ -2252,7 +2252,7 @@ _08122FD8: .4byte 0x0201b260
_08122FDC: .4byte gUnknown_020384F0
_08122FE0: .4byte gPlayerParty
_08122FE4: .4byte gStringVar1
-_08122FE8: .4byte gUnknown_03005CE0
+_08122FE8: .4byte gLastFieldPokeMenuOpened
_08122FEC: .4byte sub_806AEDC
_08122FF0:
bl sub_80F9344
diff --git a/asm/contest.s b/asm/contest.s
index c98f5db0d..a851ac05a 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -878,9 +878,9 @@ _080AB8CC:
strb r2, [r1, 0x3]
ldr r0, _080AB92C @ =gBattleTypeFlags
strh r4, [r0]
- ldr r4, _080AB930 @ =gUnknown_02024C07
+ ldr r4, _080AB930 @ =gPlayerMonIndex
strb r2, [r4]
- ldr r0, _080AB934 @ =gUnknown_02024C08
+ ldr r0, _080AB934 @ =gEnemyMonIndex
strb r3, [r0]
bl sub_80AE858
ldr r2, _080AB938 @ =gUnknown_02024BE0
@@ -893,8 +893,8 @@ _080AB8CC:
_080AB924: .4byte 0x02019204
_080AB928: .4byte gUnknown_02024A72
_080AB92C: .4byte gBattleTypeFlags
-_080AB930: .4byte gUnknown_02024C07
-_080AB934: .4byte gUnknown_02024C08
+_080AB930: .4byte gPlayerMonIndex
+_080AB934: .4byte gEnemyMonIndex
_080AB938: .4byte gUnknown_02024BE0
_080AB93C:
movs r0, 0
@@ -2344,7 +2344,7 @@ _080AC542:
adds r4, r0
strh r5, [r4, 0xC]
ldr r1, _080AC5E0 @ =gUnknown_02024BE0
- ldr r0, _080AC5E4 @ =gUnknown_02024C07
+ ldr r0, _080AC5E4 @ =gPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
strb r5, [r0]
@@ -2365,7 +2365,7 @@ _080AC5D4: .4byte gSprites
_080AC5D8: .4byte sub_80AD8FC
_080AC5DC: .4byte gTasks
_080AC5E0: .4byte gUnknown_02024BE0
-_080AC5E4: .4byte gUnknown_02024C07
+_080AC5E4: .4byte gPlayerMonIndex
_080AC5E8:
mov r1, r8
lsls r0, r1, 2
@@ -9885,7 +9885,7 @@ _080B004A:
adds r0, r1
lsls r0, 2
adds r0, r7
- ldr r1, _080B00C4 @ =gUnknown_083CA464
+ ldr r1, _080B00C4 @ =gSubspriteTables_83CA464
bl SetSubspriteTables
ldrb r1, [r4, 0x1]
lsls r0, r1, 4
@@ -9914,7 +9914,7 @@ _080B00B4: .4byte gUnknown_083CA3C4
_080B00B8: .4byte gSpriteTemplate_83CA3F4
_080B00BC: .4byte gUnknown_02038696
_080B00C0: .4byte 0x02019338
-_080B00C4: .4byte gUnknown_083CA464
+_080B00C4: .4byte gSubspriteTables_83CA464
thumb_func_end sub_80B0034
thumb_func_start sub_80B00C8
@@ -15034,7 +15034,7 @@ sub_80B2790: @ 80B2790
movs r1, 0
movs r2, 0x14
bl memset
- bl sub_8075624
+ bl battle_anim_clear_some_data
ldr r1, _080B27F8 @ =gUnknown_02024E84
movs r2, 0
adds r0, r1, 0x3
@@ -15226,7 +15226,7 @@ sub_80B292C: @ 80B292C
bl CreateInvisibleSpriteWithCallback
ldr r1, _080B295C @ =gUnknown_02024BE0
strb r0, [r1, 0x3]
- ldr r0, _080B2960 @ =gUnknown_02024C08
+ ldr r0, _080B2960 @ =gEnemyMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -15242,7 +15242,7 @@ sub_80B292C: @ 80B292C
.align 2, 0
_080B2958: .4byte SpriteCallbackDummy
_080B295C: .4byte gUnknown_02024BE0
-_080B2960: .4byte gUnknown_02024C08
+_080B2960: .4byte gEnemyMonIndex
_080B2964: .4byte gSprites
thumb_func_end sub_80B292C
@@ -15341,20 +15341,20 @@ _080B29DC:
.4byte _080B2A6C
.4byte _080B2A6C
_080B2A60:
- ldr r1, _080B2A68 @ =gUnknown_02024C08
+ ldr r1, _080B2A68 @ =gEnemyMonIndex
movs r0, 0x2
b _080B2A70
.align 2, 0
-_080B2A68: .4byte gUnknown_02024C08
+_080B2A68: .4byte gEnemyMonIndex
_080B2A6C:
- ldr r1, _080B2A78 @ =gUnknown_02024C08
+ ldr r1, _080B2A78 @ =gEnemyMonIndex
movs r0, 0x3
_080B2A70:
strb r0, [r1]
pop {r0}
bx r0
.align 2, 0
-_080B2A78: .4byte gUnknown_02024C08
+_080B2A78: .4byte gEnemyMonIndex
thumb_func_end sub_80B29B4
thumb_func_start sub_80B2A7C
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index a947110ec..c7a67fed9 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -164,7 +164,7 @@ _08128A0E:
ldrh r1, [r1, 0x2]
cmp r1, 0
beq _08128A2C
- ldr r1, _08128A28 @ =gUnknown_08401E60
+ ldr r1, _08128A28 @ =sContestAICmdTable
ldr r0, [r5]
ldrb r0, [r0]
lsls r0, 2
@@ -173,7 +173,7 @@ _08128A0E:
bl _call_via_r0
b _08128A3C
.align 2, 0
-_08128A28: .4byte gUnknown_08401E60
+_08128A28: .4byte sContestAICmdTable
_08128A2C:
adds r0, r4, 0x5
ldrb r2, [r4, 0x4]
@@ -249,8 +249,8 @@ _08128A9A:
_08128AA4: .4byte 0x020192d0
thumb_func_end sub_8128A7C
- thumb_func_start sub_8128AA8
-sub_8128AA8: @ 8128AA8
+ thumb_func_start ContestAICmd_unk_00
+ContestAICmd_unk_00: @ 8128AA8
push {lr}
ldr r2, _08128AD0 @ =0x020192e4
adds r1, r2, 0x5
@@ -287,10 +287,10 @@ _08128ADE:
str r0, [r3]
pop {r0}
bx r0
- thumb_func_end sub_8128AA8
+ thumb_func_end ContestAICmd_unk_00
- thumb_func_start contest_ai_get_turn
-contest_ai_get_turn: @ 8128AF0
+ thumb_func_start ContestAICmd_get_turn
+ContestAICmd_get_turn: @ 8128AF0
ldr r1, _08128B04 @ =0x020192e4
adds r0, r1, 0
subs r0, 0xE0
@@ -304,12 +304,12 @@ contest_ai_get_turn: @ 8128AF0
.align 2, 0
_08128B04: .4byte 0x020192e4
_08128B08: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_turn
+ thumb_func_end ContestAICmd_get_turn
- thumb_func_start sub_8128B0C
-sub_8128B0C: @ 8128B0C
+ thumb_func_start ContestAICmd_unk_02
+ContestAICmd_unk_02: @ 8128B0C
push {lr}
- bl contest_ai_get_turn
+ bl ContestAICmd_get_turn
ldr r0, _08128B3C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -339,12 +339,12 @@ _08128B44:
_08128B48:
pop {r0}
bx r0
- thumb_func_end sub_8128B0C
+ thumb_func_end ContestAICmd_unk_02
- thumb_func_start sub_8128B4C
-sub_8128B4C: @ 8128B4C
+ thumb_func_start ContestAICmd_unk_03
+ContestAICmd_unk_03: @ 8128B4C
push {lr}
- bl contest_ai_get_turn
+ bl ContestAICmd_get_turn
ldr r0, _08128B7C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -374,12 +374,12 @@ _08128B84:
_08128B88:
pop {r0}
bx r0
- thumb_func_end sub_8128B4C
+ thumb_func_end ContestAICmd_unk_03
- thumb_func_start sub_8128B8C
-sub_8128B8C: @ 8128B8C
+ thumb_func_start ContestAICmd_unk_04
+ContestAICmd_unk_04: @ 8128B8C
push {lr}
- bl contest_ai_get_turn
+ bl ContestAICmd_get_turn
ldr r0, _08128BBC @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -409,12 +409,12 @@ _08128BC4:
_08128BC8:
pop {r0}
bx r0
- thumb_func_end sub_8128B8C
+ thumb_func_end ContestAICmd_unk_04
- thumb_func_start sub_8128BCC
-sub_8128BCC: @ 8128BCC
+ thumb_func_start ContestAICmd_unk_05
+ContestAICmd_unk_05: @ 8128BCC
push {lr}
- bl contest_ai_get_turn
+ bl ContestAICmd_get_turn
ldr r0, _08128BFC @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -444,10 +444,10 @@ _08128C04:
_08128C08:
pop {r0}
bx r0
- thumb_func_end sub_8128BCC
+ thumb_func_end ContestAICmd_unk_05
- thumb_func_start contest_ai_get_excitement
-contest_ai_get_excitement: @ 8128C0C
+ thumb_func_start ContestAICmd_get_excitement
+ContestAICmd_get_excitement: @ 8128C0C
ldr r1, _08128C24 @ =0x020192e4
adds r0, r1, 0
subs r0, 0xE0
@@ -463,12 +463,12 @@ contest_ai_get_excitement: @ 8128C0C
.align 2, 0
_08128C24: .4byte 0x020192e4
_08128C28: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_excitement
+ thumb_func_end ContestAICmd_get_excitement
- thumb_func_start sub_8128C2C
-sub_8128C2C: @ 8128C2C
+ thumb_func_start ContestAICmd_unk_07
+ContestAICmd_unk_07: @ 8128C2C
push {lr}
- bl contest_ai_get_excitement
+ bl ContestAICmd_get_excitement
ldr r0, _08128C5C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -498,12 +498,12 @@ _08128C64:
_08128C68:
pop {r0}
bx r0
- thumb_func_end sub_8128C2C
+ thumb_func_end ContestAICmd_unk_07
- thumb_func_start sub_8128C6C
-sub_8128C6C: @ 8128C6C
+ thumb_func_start ContestAICmd_unk_08
+ContestAICmd_unk_08: @ 8128C6C
push {lr}
- bl contest_ai_get_excitement
+ bl ContestAICmd_get_excitement
ldr r0, _08128C9C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -533,12 +533,12 @@ _08128CA4:
_08128CA8:
pop {r0}
bx r0
- thumb_func_end sub_8128C6C
+ thumb_func_end ContestAICmd_unk_08
- thumb_func_start sub_8128CAC
-sub_8128CAC: @ 8128CAC
+ thumb_func_start ContestAICmd_unk_09
+ContestAICmd_unk_09: @ 8128CAC
push {lr}
- bl contest_ai_get_excitement
+ bl ContestAICmd_get_excitement
ldr r0, _08128CDC @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -568,12 +568,12 @@ _08128CE4:
_08128CE8:
pop {r0}
bx r0
- thumb_func_end sub_8128CAC
+ thumb_func_end ContestAICmd_unk_09
- thumb_func_start sub_8128CEC
-sub_8128CEC: @ 8128CEC
+ thumb_func_start ContestAICmd_unk_0A
+ContestAICmd_unk_0A: @ 8128CEC
push {lr}
- bl contest_ai_get_excitement
+ bl ContestAICmd_get_excitement
ldr r0, _08128D1C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -603,10 +603,10 @@ _08128D24:
_08128D28:
pop {r0}
bx r0
- thumb_func_end sub_8128CEC
+ thumb_func_end ContestAICmd_unk_0A
- thumb_func_start contest_ai_get_user_order
-contest_ai_get_user_order: @ 8128D2C
+ thumb_func_start ContestAICmd_get_user_order
+ContestAICmd_get_user_order: @ 8128D2C
ldr r1, _08128D48 @ =0x020192e4
adds r2, r1, 0
adds r2, 0x41
@@ -624,12 +624,12 @@ contest_ai_get_user_order: @ 8128D2C
.align 2, 0
_08128D48: .4byte 0x020192e4
_08128D4C: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_user_order
+ thumb_func_end ContestAICmd_get_user_order
- thumb_func_start sub_8128D50
-sub_8128D50: @ 8128D50
+ thumb_func_start ContestAICmd_unk_0C
+ContestAICmd_unk_0C: @ 8128D50
push {lr}
- bl contest_ai_get_user_order
+ bl ContestAICmd_get_user_order
ldr r0, _08128D80 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -659,12 +659,12 @@ _08128D88:
_08128D8C:
pop {r0}
bx r0
- thumb_func_end sub_8128D50
+ thumb_func_end ContestAICmd_unk_0C
- thumb_func_start sub_8128D90
-sub_8128D90: @ 8128D90
+ thumb_func_start ContestAICmd_unk_0D
+ContestAICmd_unk_0D: @ 8128D90
push {lr}
- bl contest_ai_get_user_order
+ bl ContestAICmd_get_user_order
ldr r0, _08128DC0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -694,12 +694,12 @@ _08128DC8:
_08128DCC:
pop {r0}
bx r0
- thumb_func_end sub_8128D90
+ thumb_func_end ContestAICmd_unk_0D
- thumb_func_start sub_8128DD0
-sub_8128DD0: @ 8128DD0
+ thumb_func_start ContestAICmd_unk_0E
+ContestAICmd_unk_0E: @ 8128DD0
push {lr}
- bl contest_ai_get_user_order
+ bl ContestAICmd_get_user_order
ldr r0, _08128E00 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -729,12 +729,12 @@ _08128E08:
_08128E0C:
pop {r0}
bx r0
- thumb_func_end sub_8128DD0
+ thumb_func_end ContestAICmd_unk_0E
- thumb_func_start sub_8128E10
-sub_8128E10: @ 8128E10
+ thumb_func_start ContestAICmd_unk_0F
+ContestAICmd_unk_0F: @ 8128E10
push {lr}
- bl contest_ai_get_user_order
+ bl ContestAICmd_get_user_order
ldr r0, _08128E40 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -764,10 +764,10 @@ _08128E48:
_08128E4C:
pop {r0}
bx r0
- thumb_func_end sub_8128E10
+ thumb_func_end ContestAICmd_unk_0F
- thumb_func_start contest_ai_get_user_condition_maybe
-contest_ai_get_user_condition_maybe: @ 8128E50
+ thumb_func_start ContestAICmd_get_user_condition_maybe
+ContestAICmd_get_user_condition_maybe: @ 8128E50
push {r4,lr}
ldr r4, _08128E88 @ =0x020192e4
adds r0, r4, 0
@@ -797,12 +797,12 @@ contest_ai_get_user_condition_maybe: @ 8128E50
.align 2, 0
_08128E88: .4byte 0x020192e4
_08128E8C: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_user_condition_maybe
+ thumb_func_end ContestAICmd_get_user_condition_maybe
- thumb_func_start sub_8128E90
-sub_8128E90: @ 8128E90
+ thumb_func_start ContestAICmd_unk_11
+ContestAICmd_unk_11: @ 8128E90
push {lr}
- bl contest_ai_get_user_condition_maybe
+ bl ContestAICmd_get_user_condition_maybe
ldr r0, _08128EC0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -832,12 +832,12 @@ _08128EC8:
_08128ECC:
pop {r0}
bx r0
- thumb_func_end sub_8128E90
+ thumb_func_end ContestAICmd_unk_11
- thumb_func_start sub_8128ED0
-sub_8128ED0: @ 8128ED0
+ thumb_func_start ContestAICmd_unk_12
+ContestAICmd_unk_12: @ 8128ED0
push {lr}
- bl contest_ai_get_user_condition_maybe
+ bl ContestAICmd_get_user_condition_maybe
ldr r0, _08128F00 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -867,12 +867,12 @@ _08128F08:
_08128F0C:
pop {r0}
bx r0
- thumb_func_end sub_8128ED0
+ thumb_func_end ContestAICmd_unk_12
- thumb_func_start sub_8128F10
-sub_8128F10: @ 8128F10
+ thumb_func_start ContestAICmd_unk_13
+ContestAICmd_unk_13: @ 8128F10
push {lr}
- bl contest_ai_get_user_condition_maybe
+ bl ContestAICmd_get_user_condition_maybe
ldr r0, _08128F40 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -902,12 +902,12 @@ _08128F48:
_08128F4C:
pop {r0}
bx r0
- thumb_func_end sub_8128F10
+ thumb_func_end ContestAICmd_unk_13
- thumb_func_start sub_8128F50
-sub_8128F50: @ 8128F50
+ thumb_func_start ContestAICmd_unk_14
+ContestAICmd_unk_14: @ 8128F50
push {lr}
- bl contest_ai_get_user_condition_maybe
+ bl ContestAICmd_get_user_condition_maybe
ldr r0, _08128F80 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -937,10 +937,10 @@ _08128F88:
_08128F8C:
pop {r0}
bx r0
- thumb_func_end sub_8128F50
+ thumb_func_end ContestAICmd_unk_14
- thumb_func_start sub_8128F90
-sub_8128F90: @ 8128F90
+ thumb_func_start ContestAICmd_unk_15
+ContestAICmd_unk_15: @ 8128F90
ldr r2, _08128FB4 @ =0x020192e4
adds r0, r2, 0
adds r0, 0x41
@@ -961,12 +961,12 @@ sub_8128F90: @ 8128F90
.align 2, 0
_08128FB4: .4byte 0x020192e4
_08128FB8: .4byte gAIScriptPtr
- thumb_func_end sub_8128F90
+ thumb_func_end ContestAICmd_unk_15
- thumb_func_start sub_8128FBC
-sub_8128FBC: @ 8128FBC
+ thumb_func_start ContestAICmd_unk_16
+ContestAICmd_unk_16: @ 8128FBC
push {r4,r5,lr}
- bl sub_8128F90
+ bl ContestAICmd_unk_15
ldr r2, _08128FF4 @ =0x020192e4
ldr r4, _08128FF8 @ =gAIScriptPtr
ldr r3, [r4]
@@ -1002,12 +1002,12 @@ _08129000:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_8128FBC
+ thumb_func_end ContestAICmd_unk_16
- thumb_func_start sub_8129008
-sub_8129008: @ 8129008
+ thumb_func_start ContestAICmd_unk_17
+ContestAICmd_unk_17: @ 8129008
push {r4,r5,lr}
- bl sub_8128F90
+ bl ContestAICmd_unk_15
ldr r2, _08129040 @ =0x020192e4
ldr r4, _08129044 @ =gAIScriptPtr
ldr r3, [r4]
@@ -1043,12 +1043,12 @@ _0812904C:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_8129008
+ thumb_func_end ContestAICmd_unk_17
- thumb_func_start sub_8129054
-sub_8129054: @ 8129054
+ thumb_func_start ContestAICmd_unk_18
+ContestAICmd_unk_18: @ 8129054
push {r4,r5,lr}
- bl sub_8128F90
+ bl ContestAICmd_unk_15
ldr r2, _0812908C @ =0x020192e4
ldr r4, _08129090 @ =gAIScriptPtr
ldr r3, [r4]
@@ -1084,12 +1084,12 @@ _08129098:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_8129054
+ thumb_func_end ContestAICmd_unk_18
- thumb_func_start sub_81290A0
-sub_81290A0: @ 81290A0
+ thumb_func_start ContestAICmd_unk_19
+ContestAICmd_unk_19: @ 81290A0
push {r4,r5,lr}
- bl sub_8128F90
+ bl ContestAICmd_unk_15
ldr r2, _081290D8 @ =0x020192e4
ldr r4, _081290DC @ =gAIScriptPtr
ldr r3, [r4]
@@ -1125,10 +1125,10 @@ _081290E4:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_81290A0
+ thumb_func_end ContestAICmd_unk_19
- thumb_func_start sub_81290EC
-sub_81290EC: @ 81290EC
+ thumb_func_start ContestAICmd_unk_1A
+ContestAICmd_unk_1A: @ 81290EC
ldr r2, _08129108 @ =0x020192e4
ldr r1, _0812910C @ =gUnknown_02038670
adds r0, r2, 0
@@ -1147,12 +1147,12 @@ sub_81290EC: @ 81290EC
_08129108: .4byte 0x020192e4
_0812910C: .4byte gUnknown_02038670
_08129110: .4byte gAIScriptPtr
- thumb_func_end sub_81290EC
+ thumb_func_end ContestAICmd_unk_1A
- thumb_func_start sub_8129114
-sub_8129114: @ 8129114
+ thumb_func_start ContestAICmd_unk_1B
+ContestAICmd_unk_1B: @ 8129114
push {r4,r5,lr}
- bl sub_81290EC
+ bl ContestAICmd_unk_1A
ldr r2, _0812914C @ =0x020192e4
ldr r4, _08129150 @ =gAIScriptPtr
ldr r3, [r4]
@@ -1188,12 +1188,12 @@ _08129158:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_8129114
+ thumb_func_end ContestAICmd_unk_1B
- thumb_func_start sub_8129160
-sub_8129160: @ 8129160
+ thumb_func_start ContestAICmd_unk_1C
+ContestAICmd_unk_1C: @ 8129160
push {r4,r5,lr}
- bl sub_81290EC
+ bl ContestAICmd_unk_1A
ldr r2, _08129198 @ =0x020192e4
ldr r4, _0812919C @ =gAIScriptPtr
ldr r3, [r4]
@@ -1229,12 +1229,12 @@ _081291A4:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_8129160
+ thumb_func_end ContestAICmd_unk_1C
- thumb_func_start sub_81291AC
-sub_81291AC: @ 81291AC
+ thumb_func_start ContestAICmd_unk_1D
+ContestAICmd_unk_1D: @ 81291AC
push {r4,r5,lr}
- bl sub_81290EC
+ bl ContestAICmd_unk_1A
ldr r2, _081291E4 @ =0x020192e4
ldr r4, _081291E8 @ =gAIScriptPtr
ldr r3, [r4]
@@ -1270,12 +1270,12 @@ _081291F0:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_81291AC
+ thumb_func_end ContestAICmd_unk_1D
- thumb_func_start sub_81291F8
-sub_81291F8: @ 81291F8
+ thumb_func_start ContestAICmd_unk_1E
+ContestAICmd_unk_1E: @ 81291F8
push {r4,r5,lr}
- bl sub_81290EC
+ bl ContestAICmd_unk_1A
ldr r2, _08129230 @ =0x020192e4
ldr r4, _08129234 @ =gAIScriptPtr
ldr r3, [r4]
@@ -1311,10 +1311,10 @@ _0812923C:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_81291F8
+ thumb_func_end ContestAICmd_unk_1E
- thumb_func_start contest_ai_get_contest_type
-contest_ai_get_contest_type: @ 8129244
+ thumb_func_start ContestAICmd_get_contest_type
+ContestAICmd_get_contest_type: @ 8129244
ldr r1, _08129258 @ =0x020192e4
ldr r0, _0812925C @ =gScriptContestCategory
ldrh r0, [r0]
@@ -1328,12 +1328,12 @@ contest_ai_get_contest_type: @ 8129244
_08129258: .4byte 0x020192e4
_0812925C: .4byte gScriptContestCategory
_08129260: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_contest_type
+ thumb_func_end ContestAICmd_get_contest_type
- thumb_func_start sub_8129264
-sub_8129264: @ 8129264
+ thumb_func_start ContestAICmd_unk_20
+ContestAICmd_unk_20: @ 8129264
push {lr}
- bl contest_ai_get_contest_type
+ bl ContestAICmd_get_contest_type
ldr r0, _08129294 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1363,12 +1363,12 @@ _0812929C:
_081292A0:
pop {r0}
bx r0
- thumb_func_end sub_8129264
+ thumb_func_end ContestAICmd_unk_20
- thumb_func_start sub_81292A4
-sub_81292A4: @ 81292A4
+ thumb_func_start ContestAICmd_unk_21
+ContestAICmd_unk_21: @ 81292A4
push {lr}
- bl contest_ai_get_contest_type
+ bl ContestAICmd_get_contest_type
ldr r0, _081292D4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1398,10 +1398,10 @@ _081292DC:
_081292E0:
pop {r0}
bx r0
- thumb_func_end sub_81292A4
+ thumb_func_end ContestAICmd_unk_21
- thumb_func_start contest_ai_get_move_excitement
-contest_ai_get_move_excitement: @ 81292E4
+ thumb_func_start ContestAICmd_get_move_excitement
+ContestAICmd_get_move_excitement: @ 81292E4
push {r4,lr}
ldr r2, _08129318 @ =gContestMons
ldr r4, _0812931C @ =0x020192e4
@@ -1430,12 +1430,12 @@ contest_ai_get_move_excitement: @ 81292E4
_08129318: .4byte gContestMons
_0812931C: .4byte 0x020192e4
_08129320: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_move_excitement
+ thumb_func_end ContestAICmd_get_move_excitement
- thumb_func_start sub_8129324
-sub_8129324: @ 8129324
+ thumb_func_start ContestAICmd_unk_23
+ContestAICmd_unk_23: @ 8129324
push {r4,lr}
- bl contest_ai_get_move_excitement
+ bl ContestAICmd_get_move_excitement
ldr r0, _08129354 @ =0x020192e4
ldr r3, _08129358 @ =gAIScriptPtr
ldr r2, [r3]
@@ -1467,12 +1467,12 @@ _08129360:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8129324
+ thumb_func_end ContestAICmd_unk_23
- thumb_func_start sub_8129368
-sub_8129368: @ 8129368
+ thumb_func_start ContestAICmd_unk_24
+ContestAICmd_unk_24: @ 8129368
push {r4,lr}
- bl contest_ai_get_move_excitement
+ bl ContestAICmd_get_move_excitement
ldr r0, _08129398 @ =0x020192e4
ldr r3, _0812939C @ =gAIScriptPtr
ldr r2, [r3]
@@ -1504,12 +1504,12 @@ _081293A4:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8129368
+ thumb_func_end ContestAICmd_unk_24
- thumb_func_start sub_81293AC
-sub_81293AC: @ 81293AC
+ thumb_func_start ContestAICmd_unk_25
+ContestAICmd_unk_25: @ 81293AC
push {r4,lr}
- bl contest_ai_get_move_excitement
+ bl ContestAICmd_get_move_excitement
ldr r0, _081293DC @ =0x020192e4
ldr r3, _081293E0 @ =gAIScriptPtr
ldr r2, [r3]
@@ -1541,12 +1541,12 @@ _081293E8:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_81293AC
+ thumb_func_end ContestAICmd_unk_25
- thumb_func_start sub_81293F0
-sub_81293F0: @ 81293F0
+ thumb_func_start ContestAICmd_unk_26
+ContestAICmd_unk_26: @ 81293F0
push {r4,lr}
- bl contest_ai_get_move_excitement
+ bl ContestAICmd_get_move_excitement
ldr r0, _08129420 @ =0x020192e4
ldr r3, _08129424 @ =gAIScriptPtr
ldr r2, [r3]
@@ -1578,10 +1578,10 @@ _0812942C:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_81293F0
+ thumb_func_end ContestAICmd_unk_26
- thumb_func_start contest_ai_get_move_effect
-contest_ai_get_move_effect: @ 8129434
+ thumb_func_start ContestAICmd_get_move_effect
+ContestAICmd_get_move_effect: @ 8129434
ldr r2, _08129460 @ =gContestMons
ldr r3, _08129464 @ =0x020192e4
ldrb r1, [r3, 0x4]
@@ -1609,12 +1609,12 @@ _08129460: .4byte gContestMons
_08129464: .4byte 0x020192e4
_08129468: .4byte gContestMoves
_0812946C: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_move_effect
+ thumb_func_end ContestAICmd_get_move_effect
- thumb_func_start sub_8129470
-sub_8129470: @ 8129470
+ thumb_func_start ContestAICmd_unk_28
+ContestAICmd_unk_28: @ 8129470
push {lr}
- bl contest_ai_get_move_effect
+ bl ContestAICmd_get_move_effect
ldr r0, _081294A0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1644,12 +1644,12 @@ _081294A8:
_081294AC:
pop {r0}
bx r0
- thumb_func_end sub_8129470
+ thumb_func_end ContestAICmd_unk_28
- thumb_func_start sub_81294B0
-sub_81294B0: @ 81294B0
+ thumb_func_start ContestAICmd_unk_29
+ContestAICmd_unk_29: @ 81294B0
push {lr}
- bl contest_ai_get_move_effect
+ bl ContestAICmd_get_move_effect
ldr r0, _081294E0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1679,10 +1679,10 @@ _081294E8:
_081294EC:
pop {r0}
bx r0
- thumb_func_end sub_81294B0
+ thumb_func_end ContestAICmd_unk_29
- thumb_func_start contest_ai_get_move_effect_type
-contest_ai_get_move_effect_type: @ 81294F0
+ thumb_func_start ContestAICmd_get_move_effect_type
+ContestAICmd_get_move_effect_type: @ 81294F0
ldr r2, _08129524 @ =gContestMons
ldr r3, _08129528 @ =0x020192e4
ldrb r1, [r3, 0x4]
@@ -1715,12 +1715,12 @@ _08129528: .4byte 0x020192e4
_0812952C: .4byte gContestEffects
_08129530: .4byte gContestMoves
_08129534: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_move_effect_type
+ thumb_func_end ContestAICmd_get_move_effect_type
- thumb_func_start sub_8129538
-sub_8129538: @ 8129538
+ thumb_func_start ContestAICmd_unk_2B
+ContestAICmd_unk_2B: @ 8129538
push {lr}
- bl contest_ai_get_move_effect_type
+ bl ContestAICmd_get_move_effect_type
ldr r0, _08129568 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1750,12 +1750,12 @@ _08129570:
_08129574:
pop {r0}
bx r0
- thumb_func_end sub_8129538
+ thumb_func_end ContestAICmd_unk_2B
- thumb_func_start sub_8129578
-sub_8129578: @ 8129578
+ thumb_func_start ContestAICmd_unk_2C
+ContestAICmd_unk_2C: @ 8129578
push {lr}
- bl contest_ai_get_move_effect_type
+ bl ContestAICmd_get_move_effect_type
ldr r0, _081295A8 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1785,10 +1785,10 @@ _081295B0:
_081295B4:
pop {r0}
bx r0
- thumb_func_end sub_8129578
+ thumb_func_end ContestAICmd_unk_2C
- thumb_func_start contest_ai_check_move_has_highest_appeal
-contest_ai_check_move_has_highest_appeal: @ 81295B8
+ thumb_func_start ContestAICmd_check_move_has_highest_appeal
+ContestAICmd_check_move_has_highest_appeal: @ 81295B8
push {r4-r7,lr}
ldr r2, _08129610 @ =gContestMons
ldr r3, _08129614 @ =0x020192e4
@@ -1853,12 +1853,12 @@ _08129626:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end contest_ai_check_move_has_highest_appeal
+ thumb_func_end ContestAICmd_check_move_has_highest_appeal
- thumb_func_start sub_8129638
-sub_8129638: @ 8129638
+ thumb_func_start ContestAICmd_unk_2E
+ContestAICmd_unk_2E: @ 8129638
push {lr}
- bl contest_ai_check_move_has_highest_appeal
+ bl ContestAICmd_check_move_has_highest_appeal
ldr r0, _08129664 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1891,10 +1891,10 @@ _08129674:
bx r0
.align 2, 0
_08129678: .4byte gAIScriptPtr
- thumb_func_end sub_8129638
+ thumb_func_end ContestAICmd_unk_2E
- thumb_func_start sub_812967C
-sub_812967C: @ 812967C
+ thumb_func_start ContestAICmd_unk_2F
+ContestAICmd_unk_2F: @ 812967C
push {r4-r7,lr}
ldr r2, _081296D4 @ =gContestMons
ldr r3, _081296D8 @ =0x020192e4
@@ -1959,12 +1959,12 @@ _081296EA:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_812967C
+ thumb_func_end ContestAICmd_unk_2F
- thumb_func_start sub_81296FC
-sub_81296FC: @ 81296FC
+ thumb_func_start ContestAICmd_unk_30
+ContestAICmd_unk_30: @ 81296FC
push {lr}
- bl sub_812967C
+ bl ContestAICmd_unk_2F
ldr r0, _08129728 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -1997,10 +1997,10 @@ _08129738:
bx r0
.align 2, 0
_0812973C: .4byte gAIScriptPtr
- thumb_func_end sub_81296FC
+ thumb_func_end ContestAICmd_unk_30
- thumb_func_start sub_8129740
-sub_8129740: @ 8129740
+ thumb_func_start ContestAICmd_unk_31
+ContestAICmd_unk_31: @ 8129740
push {r4,lr}
ldr r2, _08129784 @ =gContestMons
ldr r4, _08129788 @ =0x020192e4
@@ -2040,12 +2040,12 @@ _08129788: .4byte 0x020192e4
_0812978C: .4byte gContestEffects
_08129790: .4byte gContestMoves
_08129794: .4byte gAIScriptPtr
- thumb_func_end sub_8129740
+ thumb_func_end ContestAICmd_unk_31
- thumb_func_start sub_8129798
-sub_8129798: @ 8129798
+ thumb_func_start ContestAICmd_unk_32
+ContestAICmd_unk_32: @ 8129798
push {lr}
- bl sub_8129740
+ bl ContestAICmd_unk_31
ldr r0, _081297C8 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2075,12 +2075,12 @@ _081297D0:
_081297D4:
pop {r0}
bx r0
- thumb_func_end sub_8129798
+ thumb_func_end ContestAICmd_unk_32
- thumb_func_start sub_81297D8
-sub_81297D8: @ 81297D8
+ thumb_func_start ContestAICmd_unk_33
+ContestAICmd_unk_33: @ 81297D8
push {lr}
- bl sub_8129740
+ bl ContestAICmd_unk_31
ldr r0, _08129808 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2110,12 +2110,12 @@ _08129810:
_08129814:
pop {r0}
bx r0
- thumb_func_end sub_81297D8
+ thumb_func_end ContestAICmd_unk_33
- thumb_func_start sub_8129818
-sub_8129818: @ 8129818
+ thumb_func_start ContestAICmd_unk_34
+ContestAICmd_unk_34: @ 8129818
push {lr}
- bl sub_8129740
+ bl ContestAICmd_unk_31
ldr r0, _08129848 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2145,12 +2145,12 @@ _08129850:
_08129854:
pop {r0}
bx r0
- thumb_func_end sub_8129818
+ thumb_func_end ContestAICmd_unk_34
- thumb_func_start sub_8129858
-sub_8129858: @ 8129858
+ thumb_func_start ContestAICmd_unk_35
+ContestAICmd_unk_35: @ 8129858
push {lr}
- bl sub_8129740
+ bl ContestAICmd_unk_31
ldr r0, _08129888 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2180,10 +2180,10 @@ _08129890:
_08129894:
pop {r0}
bx r0
- thumb_func_end sub_8129858
+ thumb_func_end ContestAICmd_unk_35
- thumb_func_start sub_8129898
-sub_8129898: @ 8129898
+ thumb_func_start ContestAICmd_unk_36
+ContestAICmd_unk_36: @ 8129898
push {r4,lr}
ldr r2, _081298DC @ =gContestMons
ldr r4, _081298E0 @ =0x020192e4
@@ -2223,12 +2223,12 @@ _081298E0: .4byte 0x020192e4
_081298E4: .4byte gContestEffects
_081298E8: .4byte gContestMoves
_081298EC: .4byte gAIScriptPtr
- thumb_func_end sub_8129898
+ thumb_func_end ContestAICmd_unk_36
- thumb_func_start sub_81298F0
-sub_81298F0: @ 81298F0
+ thumb_func_start ContestAICmd_unk_37
+ContestAICmd_unk_37: @ 81298F0
push {lr}
- bl sub_8129898
+ bl ContestAICmd_unk_36
ldr r0, _08129920 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2258,12 +2258,12 @@ _08129928:
_0812992C:
pop {r0}
bx r0
- thumb_func_end sub_81298F0
+ thumb_func_end ContestAICmd_unk_37
- thumb_func_start sub_8129930
-sub_8129930: @ 8129930
+ thumb_func_start ContestAICmd_unk_38
+ContestAICmd_unk_38: @ 8129930
push {lr}
- bl sub_8129898
+ bl ContestAICmd_unk_36
ldr r0, _08129960 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2293,12 +2293,12 @@ _08129968:
_0812996C:
pop {r0}
bx r0
- thumb_func_end sub_8129930
+ thumb_func_end ContestAICmd_unk_38
- thumb_func_start sub_8129970
-sub_8129970: @ 8129970
+ thumb_func_start ContestAICmd_unk_39
+ContestAICmd_unk_39: @ 8129970
push {lr}
- bl sub_8129898
+ bl ContestAICmd_unk_36
ldr r0, _081299A0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2328,12 +2328,12 @@ _081299A8:
_081299AC:
pop {r0}
bx r0
- thumb_func_end sub_8129970
+ thumb_func_end ContestAICmd_unk_39
- thumb_func_start sub_81299B0
-sub_81299B0: @ 81299B0
+ thumb_func_start ContestAICmd_unk_3A
+ContestAICmd_unk_3A: @ 81299B0
push {lr}
- bl sub_8129898
+ bl ContestAICmd_unk_36
ldr r0, _081299E0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2363,10 +2363,10 @@ _081299E8:
_081299EC:
pop {r0}
bx r0
- thumb_func_end sub_81299B0
+ thumb_func_end ContestAICmd_unk_3A
- thumb_func_start contest_ai_get_move_used_count
-contest_ai_get_move_used_count: @ 81299F0
+ thumb_func_start ContestAICmd_get_move_used_count
+ContestAICmd_get_move_used_count: @ 81299F0
push {r4,lr}
ldr r3, _08129A20 @ =gContestMons
ldr r4, _08129A24 @ =0x020192e4
@@ -2410,12 +2410,12 @@ _08129A30:
bx r0
.align 2, 0
_08129A40: .4byte gAIScriptPtr
- thumb_func_end contest_ai_get_move_used_count
+ thumb_func_end ContestAICmd_get_move_used_count
- thumb_func_start sub_8129A44
-sub_8129A44: @ 8129A44
+ thumb_func_start ContestAICmd_unk_3C
+ContestAICmd_unk_3C: @ 8129A44
push {lr}
- bl contest_ai_get_move_used_count
+ bl ContestAICmd_get_move_used_count
ldr r0, _08129A74 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2445,12 +2445,12 @@ _08129A7C:
_08129A80:
pop {r0}
bx r0
- thumb_func_end sub_8129A44
+ thumb_func_end ContestAICmd_unk_3C
- thumb_func_start sub_8129A84
-sub_8129A84: @ 8129A84
+ thumb_func_start ContestAICmd_unk_3D
+ContestAICmd_unk_3D: @ 8129A84
push {lr}
- bl contest_ai_get_move_used_count
+ bl ContestAICmd_get_move_used_count
ldr r0, _08129AB4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2480,12 +2480,12 @@ _08129ABC:
_08129AC0:
pop {r0}
bx r0
- thumb_func_end sub_8129A84
+ thumb_func_end ContestAICmd_unk_3D
- thumb_func_start sub_8129AC4
-sub_8129AC4: @ 8129AC4
+ thumb_func_start ContestAICmd_unk_3E
+ContestAICmd_unk_3E: @ 8129AC4
push {lr}
- bl contest_ai_get_move_used_count
+ bl ContestAICmd_get_move_used_count
ldr r0, _08129AF4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2515,12 +2515,12 @@ _08129AFC:
_08129B00:
pop {r0}
bx r0
- thumb_func_end sub_8129AC4
+ thumb_func_end ContestAICmd_unk_3E
- thumb_func_start sub_8129B04
-sub_8129B04: @ 8129B04
+ thumb_func_start ContestAICmd_unk_3F
+ContestAICmd_unk_3F: @ 8129B04
push {lr}
- bl contest_ai_get_move_used_count
+ bl ContestAICmd_get_move_used_count
ldr r0, _08129B34 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2550,10 +2550,10 @@ _08129B3C:
_08129B40:
pop {r0}
bx r0
- thumb_func_end sub_8129B04
+ thumb_func_end ContestAICmd_unk_3F
- thumb_func_start contest_ai_check_combo_starter
-contest_ai_check_combo_starter: @ 8129B44
+ thumb_func_start ContestAICmd_check_combo_starter
+ContestAICmd_check_combo_starter: @ 8129B44
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -2613,12 +2613,12 @@ _08129B96:
_08129BAC: .4byte gContestMons
_08129BB0: .4byte 0x020192e4
_08129BB4: .4byte gAIScriptPtr
- thumb_func_end contest_ai_check_combo_starter
+ thumb_func_end ContestAICmd_check_combo_starter
- thumb_func_start sub_8129BB8
-sub_8129BB8: @ 8129BB8
+ thumb_func_start ContestAICmd_unk_41
+ContestAICmd_unk_41: @ 8129BB8
push {lr}
- bl contest_ai_check_combo_starter
+ bl ContestAICmd_check_combo_starter
ldr r0, _08129BE4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2651,12 +2651,12 @@ _08129BF4:
bx r0
.align 2, 0
_08129BF8: .4byte gAIScriptPtr
- thumb_func_end sub_8129BB8
+ thumb_func_end ContestAICmd_unk_41
- thumb_func_start sub_8129BFC
-sub_8129BFC: @ 8129BFC
+ thumb_func_start ContestAICmd_unk_42
+ContestAICmd_unk_42: @ 8129BFC
push {lr}
- bl contest_ai_check_combo_starter
+ bl ContestAICmd_check_combo_starter
ldr r0, _08129C28 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2689,10 +2689,10 @@ _08129C38:
bx r0
.align 2, 0
_08129C3C: .4byte gAIScriptPtr
- thumb_func_end sub_8129BFC
+ thumb_func_end ContestAICmd_unk_42
- thumb_func_start contest_ai_check_combo_finisher
-contest_ai_check_combo_finisher: @ 8129C40
+ thumb_func_start ContestAICmd_check_combo_finisher
+ContestAICmd_check_combo_finisher: @ 8129C40
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -2751,12 +2751,12 @@ _08129C90:
_08129CA8: .4byte gContestMons
_08129CAC: .4byte 0x020192e4
_08129CB0: .4byte gAIScriptPtr
- thumb_func_end contest_ai_check_combo_finisher
+ thumb_func_end ContestAICmd_check_combo_finisher
- thumb_func_start sub_8129CB4
-sub_8129CB4: @ 8129CB4
+ thumb_func_start ContestAICmd_unk_44
+ContestAICmd_unk_44: @ 8129CB4
push {lr}
- bl contest_ai_check_combo_finisher
+ bl ContestAICmd_check_combo_finisher
ldr r0, _08129CE0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2789,12 +2789,12 @@ _08129CF0:
bx r0
.align 2, 0
_08129CF4: .4byte gAIScriptPtr
- thumb_func_end sub_8129CB4
+ thumb_func_end ContestAICmd_unk_44
- thumb_func_start sub_8129CF8
-sub_8129CF8: @ 8129CF8
+ thumb_func_start ContestAICmd_unk_45
+ContestAICmd_unk_45: @ 8129CF8
push {lr}
- bl contest_ai_check_combo_finisher
+ bl ContestAICmd_check_combo_finisher
ldr r0, _08129D24 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2827,10 +2827,10 @@ _08129D34:
bx r0
.align 2, 0
_08129D38: .4byte gAIScriptPtr
- thumb_func_end sub_8129CF8
+ thumb_func_end ContestAICmd_unk_45
- thumb_func_start contest_ai_check_would_finish_combo
-contest_ai_check_would_finish_combo: @ 8129D3C
+ thumb_func_start ContestAICmd_check_would_finish_combo
+ContestAICmd_check_would_finish_combo: @ 8129D3C
push {r4,r5,lr}
movs r5, 0
ldr r3, _08129D8C @ =gContestMons
@@ -2875,12 +2875,12 @@ _08129D7A:
_08129D8C: .4byte gContestMons
_08129D90: .4byte 0x020192e4
_08129D94: .4byte gAIScriptPtr
- thumb_func_end contest_ai_check_would_finish_combo
+ thumb_func_end ContestAICmd_check_would_finish_combo
- thumb_func_start sub_8129D98
-sub_8129D98: @ 8129D98
+ thumb_func_start ContestAICmd_unk_47
+ContestAICmd_unk_47: @ 8129D98
push {lr}
- bl contest_ai_check_would_finish_combo
+ bl ContestAICmd_check_would_finish_combo
ldr r0, _08129DC4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2913,12 +2913,12 @@ _08129DD4:
bx r0
.align 2, 0
_08129DD8: .4byte gAIScriptPtr
- thumb_func_end sub_8129D98
+ thumb_func_end ContestAICmd_unk_47
- thumb_func_start sub_8129DDC
-sub_8129DDC: @ 8129DDC
+ thumb_func_start ContestAICmd_unk_48
+ContestAICmd_unk_48: @ 8129DDC
push {lr}
- bl contest_ai_check_would_finish_combo
+ bl ContestAICmd_check_would_finish_combo
ldr r0, _08129E08 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -2951,10 +2951,10 @@ _08129E18:
bx r0
.align 2, 0
_08129E1C: .4byte gAIScriptPtr
- thumb_func_end sub_8129DDC
+ thumb_func_end ContestAICmd_unk_48
- thumb_func_start contest_ai_get_condition
-contest_ai_get_condition: @ 8129E20
+ thumb_func_start ContestAICmd_get_condition
+ContestAICmd_get_condition: @ 8129E20
push {r4,r5,lr}
ldr r4, _08129E5C @ =gAIScriptPtr
ldr r0, [r4]
@@ -2985,12 +2985,12 @@ contest_ai_get_condition: @ 8129E20
.align 2, 0
_08129E5C: .4byte gAIScriptPtr
_08129E60: .4byte 0x020192e4
- thumb_func_end contest_ai_get_condition
+ thumb_func_end ContestAICmd_get_condition
- thumb_func_start sub_8129E64
-sub_8129E64: @ 8129E64
+ thumb_func_start ContestAICmd_unk_4A
+ContestAICmd_unk_4A: @ 8129E64
push {lr}
- bl contest_ai_get_condition
+ bl ContestAICmd_get_condition
ldr r0, _08129E94 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3020,12 +3020,12 @@ _08129E9C:
_08129EA0:
pop {r0}
bx r0
- thumb_func_end sub_8129E64
+ thumb_func_end ContestAICmd_unk_4A
- thumb_func_start sub_8129EA4
-sub_8129EA4: @ 8129EA4
+ thumb_func_start ContestAICmd_unk_4B
+ContestAICmd_unk_4B: @ 8129EA4
push {lr}
- bl contest_ai_get_condition
+ bl ContestAICmd_get_condition
ldr r0, _08129ED4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3055,12 +3055,12 @@ _08129EDC:
_08129EE0:
pop {r0}
bx r0
- thumb_func_end sub_8129EA4
+ thumb_func_end ContestAICmd_unk_4B
- thumb_func_start sub_8129EE4
-sub_8129EE4: @ 8129EE4
+ thumb_func_start ContestAICmd_unk_4C
+ContestAICmd_unk_4C: @ 8129EE4
push {lr}
- bl contest_ai_get_condition
+ bl ContestAICmd_get_condition
ldr r0, _08129F14 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3090,12 +3090,12 @@ _08129F1C:
_08129F20:
pop {r0}
bx r0
- thumb_func_end sub_8129EE4
+ thumb_func_end ContestAICmd_unk_4C
- thumb_func_start sub_8129F24
-sub_8129F24: @ 8129F24
+ thumb_func_start ContestAICmd_unk_4D
+ContestAICmd_unk_4D: @ 8129F24
push {lr}
- bl contest_ai_get_condition
+ bl ContestAICmd_get_condition
ldr r0, _08129F54 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3125,10 +3125,10 @@ _08129F5C:
_08129F60:
pop {r0}
bx r0
- thumb_func_end sub_8129F24
+ thumb_func_end ContestAICmd_unk_4D
- thumb_func_start contest_ai_get_used_combo_starter
-contest_ai_get_used_combo_starter: @ 8129F64
+ thumb_func_start ContestAICmd_get_used_combo_starter
+ContestAICmd_get_used_combo_starter: @ 8129F64
push {r4-r6,lr}
movs r6, 0
ldr r5, _08129FAC @ =gAIScriptPtr
@@ -3169,12 +3169,12 @@ _08129FAC: .4byte gAIScriptPtr
_08129FB0: .4byte gContestMoves
_08129FB4: .4byte 0x02019260
_08129FB8: .4byte 0x020192e4
- thumb_func_end contest_ai_get_used_combo_starter
+ thumb_func_end ContestAICmd_get_used_combo_starter
- thumb_func_start sub_8129FBC
-sub_8129FBC: @ 8129FBC
+ thumb_func_start ContestAICmd_unk_4F
+ContestAICmd_unk_4F: @ 8129FBC
push {lr}
- bl contest_ai_get_used_combo_starter
+ bl ContestAICmd_get_used_combo_starter
ldr r0, _08129FEC @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3204,12 +3204,12 @@ _08129FF4:
_08129FF8:
pop {r0}
bx r0
- thumb_func_end sub_8129FBC
+ thumb_func_end ContestAICmd_unk_4F
- thumb_func_start sub_8129FFC
-sub_8129FFC: @ 8129FFC
+ thumb_func_start ContestAICmd_unk_50
+ContestAICmd_unk_50: @ 8129FFC
push {lr}
- bl contest_ai_get_used_combo_starter
+ bl ContestAICmd_get_used_combo_starter
ldr r0, _0812A02C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3239,12 +3239,12 @@ _0812A034:
_0812A038:
pop {r0}
bx r0
- thumb_func_end sub_8129FFC
+ thumb_func_end ContestAICmd_unk_50
- thumb_func_start sub_812A03C
-sub_812A03C: @ 812A03C
+ thumb_func_start ContestAICmd_unk_51
+ContestAICmd_unk_51: @ 812A03C
push {lr}
- bl contest_ai_get_used_combo_starter
+ bl ContestAICmd_get_used_combo_starter
ldr r0, _0812A06C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3274,12 +3274,12 @@ _0812A074:
_0812A078:
pop {r0}
bx r0
- thumb_func_end sub_812A03C
+ thumb_func_end ContestAICmd_unk_51
- thumb_func_start sub_812A07C
-sub_812A07C: @ 812A07C
+ thumb_func_start ContestAICmd_unk_52
+ContestAICmd_unk_52: @ 812A07C
push {lr}
- bl contest_ai_get_used_combo_starter
+ bl ContestAICmd_get_used_combo_starter
ldr r0, _0812A0AC @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3309,10 +3309,10 @@ _0812A0B4:
_0812A0B8:
pop {r0}
bx r0
- thumb_func_end sub_812A07C
+ thumb_func_end ContestAICmd_unk_52
- thumb_func_start contest_ai_check_can_participate
-contest_ai_check_can_participate: @ 812A0BC
+ thumb_func_start ContestAICmd_check_can_participate
+ContestAICmd_check_can_participate: @ 812A0BC
push {lr}
ldr r0, _0812A0DC @ =gAIScriptPtr
ldr r0, [r0]
@@ -3344,12 +3344,12 @@ _0812A0E8:
.align 2, 0
_0812A0F8: .4byte 0x020192e4
_0812A0FC: .4byte gAIScriptPtr
- thumb_func_end contest_ai_check_can_participate
+ thumb_func_end ContestAICmd_check_can_participate
- thumb_func_start sub_812A100
-sub_812A100: @ 812A100
+ thumb_func_start ContestAICmd_unk_54
+ContestAICmd_unk_54: @ 812A100
push {lr}
- bl contest_ai_check_can_participate
+ bl ContestAICmd_check_can_participate
ldr r0, _0812A12C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3382,12 +3382,12 @@ _0812A13C:
bx r0
.align 2, 0
_0812A140: .4byte gAIScriptPtr
- thumb_func_end sub_812A100
+ thumb_func_end ContestAICmd_unk_54
- thumb_func_start sub_812A144
-sub_812A144: @ 812A144
+ thumb_func_start ContestAICmd_unk_55
+ContestAICmd_unk_55: @ 812A144
push {lr}
- bl contest_ai_check_can_participate
+ bl ContestAICmd_check_can_participate
ldr r0, _0812A170 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3420,10 +3420,10 @@ _0812A180:
bx r0
.align 2, 0
_0812A184: .4byte gAIScriptPtr
- thumb_func_end sub_812A144
+ thumb_func_end ContestAICmd_unk_55
- thumb_func_start contest_ai_get_val_812A188
-contest_ai_get_val_812A188: @ 812A188
+ thumb_func_start ContestAICmd_get_val_812A188
+ContestAICmd_get_val_812A188: @ 812A188
push {r4,lr}
ldr r4, _0812A1BC @ =gAIScriptPtr
ldr r0, [r4]
@@ -3451,12 +3451,12 @@ contest_ai_get_val_812A188: @ 812A188
.align 2, 0
_0812A1BC: .4byte gAIScriptPtr
_0812A1C0: .4byte 0x020192e4
- thumb_func_end contest_ai_get_val_812A188
+ thumb_func_end ContestAICmd_get_val_812A188
- thumb_func_start sub_812A1C4
-sub_812A1C4: @ 812A1C4
+ thumb_func_start ContestAICmd_unk_57
+ContestAICmd_unk_57: @ 812A1C4
push {lr}
- bl contest_ai_get_val_812A188
+ bl ContestAICmd_get_val_812A188
ldr r0, _0812A1F0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3489,12 +3489,12 @@ _0812A200:
bx r0
.align 2, 0
_0812A204: .4byte gAIScriptPtr
- thumb_func_end sub_812A1C4
+ thumb_func_end ContestAICmd_unk_57
- thumb_func_start sub_812A208
-sub_812A208: @ 812A208
+ thumb_func_start ContestAICmd_unk_58
+ContestAICmd_unk_58: @ 812A208
push {lr}
- bl contest_ai_get_val_812A188
+ bl ContestAICmd_get_val_812A188
ldr r0, _0812A234 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3527,10 +3527,10 @@ _0812A244:
bx r0
.align 2, 0
_0812A248: .4byte gAIScriptPtr
- thumb_func_end sub_812A208
+ thumb_func_end ContestAICmd_unk_58
- thumb_func_start sub_812A24C
-sub_812A24C: @ 812A24C
+ thumb_func_start ContestAICmd_unk_59
+ContestAICmd_unk_59: @ 812A24C
push {r4,r5,lr}
ldr r5, _0812A28C @ =gAIScriptPtr
ldr r0, [r5]
@@ -3565,12 +3565,12 @@ sub_812A24C: @ 812A24C
.align 2, 0
_0812A28C: .4byte gAIScriptPtr
_0812A290: .4byte 0x020192e4
- thumb_func_end sub_812A24C
+ thumb_func_end ContestAICmd_unk_59
- thumb_func_start sub_812A294
-sub_812A294: @ 812A294
+ thumb_func_start ContestAICmd_unk_5A
+ContestAICmd_unk_5A: @ 812A294
push {lr}
- bl sub_812A24C
+ bl ContestAICmd_unk_59
ldr r0, _0812A2C0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3603,12 +3603,12 @@ _0812A2D0:
bx r0
.align 2, 0
_0812A2D4: .4byte gAIScriptPtr
- thumb_func_end sub_812A294
+ thumb_func_end ContestAICmd_unk_5A
- thumb_func_start sub_812A2D8
-sub_812A2D8: @ 812A2D8
+ thumb_func_start ContestAICmd_unk_5B
+ContestAICmd_unk_5B: @ 812A2D8
push {lr}
- bl sub_812A24C
+ bl ContestAICmd_unk_59
ldr r0, _0812A304 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3641,12 +3641,12 @@ _0812A314:
bx r0
.align 2, 0
_0812A318: .4byte gAIScriptPtr
- thumb_func_end sub_812A2D8
+ thumb_func_end ContestAICmd_unk_5B
- thumb_func_start sub_812A31C
-sub_812A31C: @ 812A31C
+ thumb_func_start ContestAICmd_unk_5C
+ContestAICmd_unk_5C: @ 812A31C
push {lr}
- bl sub_812A24C
+ bl ContestAICmd_unk_59
ldr r0, _0812A348 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3679,12 +3679,12 @@ _0812A358:
bx r0
.align 2, 0
_0812A35C: .4byte gAIScriptPtr
- thumb_func_end sub_812A31C
+ thumb_func_end ContestAICmd_unk_5C
- thumb_func_start sub_812A360
-sub_812A360: @ 812A360
+ thumb_func_start ContestAICmd_unk_5D
+ContestAICmd_unk_5D: @ 812A360
push {lr}
- bl sub_812A24C
+ bl ContestAICmd_unk_59
ldr r0, _0812A38C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3717,10 +3717,10 @@ _0812A39C:
bx r0
.align 2, 0
_0812A3A0: .4byte gAIScriptPtr
- thumb_func_end sub_812A360
+ thumb_func_end ContestAICmd_unk_5D
- thumb_func_start sub_812A3A4
-sub_812A3A4: @ 812A3A4
+ thumb_func_start ContestAICmd_unk_5E
+ContestAICmd_unk_5E: @ 812A3A4
push {r4,lr}
ldr r4, _0812A3D8 @ =gAIScriptPtr
ldr r0, [r4]
@@ -3750,12 +3750,12 @@ sub_812A3A4: @ 812A3A4
_0812A3D8: .4byte gAIScriptPtr
_0812A3DC: .4byte 0x020192e4
_0812A3E0: .4byte gUnknown_02038670
- thumb_func_end sub_812A3A4
+ thumb_func_end ContestAICmd_unk_5E
- thumb_func_start sub_812A3E4
-sub_812A3E4: @ 812A3E4
+ thumb_func_start ContestAICmd_unk_5F
+ContestAICmd_unk_5F: @ 812A3E4
push {lr}
- bl sub_812A3A4
+ bl ContestAICmd_unk_5E
ldr r0, _0812A410 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3788,12 +3788,12 @@ _0812A420:
bx r0
.align 2, 0
_0812A424: .4byte gAIScriptPtr
- thumb_func_end sub_812A3E4
+ thumb_func_end ContestAICmd_unk_5F
- thumb_func_start sub_812A428
-sub_812A428: @ 812A428
+ thumb_func_start ContestAICmd_unk_60
+ContestAICmd_unk_60: @ 812A428
push {lr}
- bl sub_812A3A4
+ bl ContestAICmd_unk_5E
ldr r0, _0812A454 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3826,12 +3826,12 @@ _0812A464:
bx r0
.align 2, 0
_0812A468: .4byte gAIScriptPtr
- thumb_func_end sub_812A428
+ thumb_func_end ContestAICmd_unk_60
- thumb_func_start sub_812A46C
-sub_812A46C: @ 812A46C
+ thumb_func_start ContestAICmd_unk_61
+ContestAICmd_unk_61: @ 812A46C
push {lr}
- bl sub_812A3A4
+ bl ContestAICmd_unk_5E
ldr r0, _0812A498 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3864,12 +3864,12 @@ _0812A4A8:
bx r0
.align 2, 0
_0812A4AC: .4byte gAIScriptPtr
- thumb_func_end sub_812A46C
+ thumb_func_end ContestAICmd_unk_61
- thumb_func_start sub_812A4B0
-sub_812A4B0: @ 812A4B0
+ thumb_func_start ContestAICmd_unk_62
+ContestAICmd_unk_62: @ 812A4B0
push {lr}
- bl sub_812A3A4
+ bl ContestAICmd_unk_5E
ldr r0, _0812A4DC @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3902,10 +3902,10 @@ _0812A4EC:
bx r0
.align 2, 0
_0812A4F0: .4byte gAIScriptPtr
- thumb_func_end sub_812A4B0
+ thumb_func_end ContestAICmd_unk_62
- thumb_func_start sub_812A4F4
-sub_812A4F4: @ 812A4F4
+ thumb_func_start ContestAICmd_unk_63
+ContestAICmd_unk_63: @ 812A4F4
push {r4,lr}
ldr r4, _0812A52C @ =gAIScriptPtr
ldr r0, [r4]
@@ -3937,12 +3937,12 @@ sub_812A4F4: @ 812A4F4
_0812A52C: .4byte gAIScriptPtr
_0812A530: .4byte 0x02019204
_0812A534: .4byte gContestMoves
- thumb_func_end sub_812A4F4
+ thumb_func_end ContestAICmd_unk_63
- thumb_func_start sub_812A538
-sub_812A538: @ 812A538
+ thumb_func_start ContestAICmd_unk_64
+ContestAICmd_unk_64: @ 812A538
push {lr}
- bl sub_812A4F4
+ bl ContestAICmd_unk_63
ldr r0, _0812A568 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -3972,12 +3972,12 @@ _0812A570:
_0812A574:
pop {r0}
bx r0
- thumb_func_end sub_812A538
+ thumb_func_end ContestAICmd_unk_64
- thumb_func_start sub_812A578
-sub_812A578: @ 812A578
+ thumb_func_start ContestAICmd_unk_65
+ContestAICmd_unk_65: @ 812A578
push {lr}
- bl sub_812A4F4
+ bl ContestAICmd_unk_63
ldr r0, _0812A5A8 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4007,12 +4007,12 @@ _0812A5B0:
_0812A5B4:
pop {r0}
bx r0
- thumb_func_end sub_812A578
+ thumb_func_end ContestAICmd_unk_65
- thumb_func_start sub_812A5B8
-sub_812A5B8: @ 812A5B8
+ thumb_func_start ContestAICmd_unk_66
+ContestAICmd_unk_66: @ 812A5B8
push {lr}
- bl sub_812A4F4
+ bl ContestAICmd_unk_63
ldr r0, _0812A5E8 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4042,12 +4042,12 @@ _0812A5F0:
_0812A5F4:
pop {r0}
bx r0
- thumb_func_end sub_812A5B8
+ thumb_func_end ContestAICmd_unk_66
- thumb_func_start sub_812A5F8
-sub_812A5F8: @ 812A5F8
+ thumb_func_start ContestAICmd_unk_67
+ContestAICmd_unk_67: @ 812A5F8
push {lr}
- bl sub_812A4F4
+ bl ContestAICmd_unk_63
ldr r0, _0812A628 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4077,10 +4077,10 @@ _0812A630:
_0812A634:
pop {r0}
bx r0
- thumb_func_end sub_812A5F8
+ thumb_func_end ContestAICmd_unk_67
- thumb_func_start sub_812A638
-sub_812A638: @ 812A638
+ thumb_func_start ContestAICmd_unk_68
+ContestAICmd_unk_68: @ 812A638
push {r4,lr}
ldr r4, _0812A66C @ =gAIScriptPtr
ldr r0, [r4]
@@ -4109,12 +4109,12 @@ sub_812A638: @ 812A638
.align 2, 0
_0812A66C: .4byte gAIScriptPtr
_0812A670: .4byte 0x02019204
- thumb_func_end sub_812A638
+ thumb_func_end ContestAICmd_unk_68
- thumb_func_start sub_812A674
-sub_812A674: @ 812A674
+ thumb_func_start ContestAICmd_unk_69
+ContestAICmd_unk_69: @ 812A674
push {lr}
- bl sub_812A638
+ bl ContestAICmd_unk_68
ldr r0, _0812A6A4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4144,12 +4144,12 @@ _0812A6AC:
_0812A6B0:
pop {r0}
bx r0
- thumb_func_end sub_812A674
+ thumb_func_end ContestAICmd_unk_69
- thumb_func_start sub_812A6B4
-sub_812A6B4: @ 812A6B4
+ thumb_func_start ContestAICmd_unk_6A
+ContestAICmd_unk_6A: @ 812A6B4
push {lr}
- bl sub_812A638
+ bl ContestAICmd_unk_68
ldr r0, _0812A6E4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4179,12 +4179,12 @@ _0812A6EC:
_0812A6F0:
pop {r0}
bx r0
- thumb_func_end sub_812A6B4
+ thumb_func_end ContestAICmd_unk_6A
- thumb_func_start sub_812A6F4
-sub_812A6F4: @ 812A6F4
+ thumb_func_start ContestAICmd_unk_6B
+ContestAICmd_unk_6B: @ 812A6F4
push {lr}
- bl sub_812A638
+ bl ContestAICmd_unk_68
ldr r0, _0812A724 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4214,12 +4214,12 @@ _0812A72C:
_0812A730:
pop {r0}
bx r0
- thumb_func_end sub_812A6F4
+ thumb_func_end ContestAICmd_unk_6B
- thumb_func_start sub_812A734
-sub_812A734: @ 812A734
+ thumb_func_start ContestAICmd_unk_6C
+ContestAICmd_unk_6C: @ 812A734
push {lr}
- bl sub_812A638
+ bl ContestAICmd_unk_68
ldr r0, _0812A764 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4249,10 +4249,10 @@ _0812A76C:
_0812A770:
pop {r0}
bx r0
- thumb_func_end sub_812A734
+ thumb_func_end ContestAICmd_unk_6C
- thumb_func_start sub_812A774
-sub_812A774: @ 812A774
+ thumb_func_start ContestAICmd_unk_6D
+ContestAICmd_unk_6D: @ 812A774
push {r4,r5,lr}
ldr r5, _0812A7B4 @ =gAIScriptPtr
ldr r0, [r5]
@@ -4289,12 +4289,12 @@ _0812A7B4: .4byte gAIScriptPtr
_0812A7B8: .4byte 0x02019204
_0812A7BC: .4byte gContestEffects
_0812A7C0: .4byte gContestMoves
- thumb_func_end sub_812A774
+ thumb_func_end ContestAICmd_unk_6D
- thumb_func_start sub_812A7C4
-sub_812A7C4: @ 812A7C4
+ thumb_func_start ContestAICmd_unk_6E
+ContestAICmd_unk_6E: @ 812A7C4
push {lr}
- bl sub_812A774
+ bl ContestAICmd_unk_6D
ldr r0, _0812A7F4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4324,12 +4324,12 @@ _0812A7FC:
_0812A800:
pop {r0}
bx r0
- thumb_func_end sub_812A7C4
+ thumb_func_end ContestAICmd_unk_6E
- thumb_func_start sub_812A804
-sub_812A804: @ 812A804
+ thumb_func_start ContestAICmd_unk_6F
+ContestAICmd_unk_6F: @ 812A804
push {lr}
- bl sub_812A774
+ bl ContestAICmd_unk_6D
ldr r0, _0812A834 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -4359,10 +4359,10 @@ _0812A83C:
_0812A840:
pop {r0}
bx r0
- thumb_func_end sub_812A804
+ thumb_func_end ContestAICmd_unk_6F
- thumb_func_start sub_812A844
-sub_812A844: @ 812A844
+ thumb_func_start ContestAICmd_unk_70
+ContestAICmd_unk_70: @ 812A844
push {r4,lr}
ldr r3, _0812A864 @ =0x020192e4
ldr r4, _0812A868 @ =gAIScriptPtr
@@ -4382,10 +4382,10 @@ sub_812A844: @ 812A844
.align 2, 0
_0812A864: .4byte 0x020192e4
_0812A868: .4byte gAIScriptPtr
- thumb_func_end sub_812A844
+ thumb_func_end ContestAICmd_unk_70
- thumb_func_start sub_812A86C
-sub_812A86C: @ 812A86C
+ thumb_func_start ContestAICmd_unk_71
+ContestAICmd_unk_71: @ 812A86C
push {r4,lr}
ldr r0, _0812A890 @ =0x020192e4
ldr r4, _0812A894 @ =gAIScriptPtr
@@ -4407,10 +4407,10 @@ sub_812A86C: @ 812A86C
.align 2, 0
_0812A890: .4byte 0x020192e4
_0812A894: .4byte gAIScriptPtr
- thumb_func_end sub_812A86C
+ thumb_func_end ContestAICmd_unk_71
- thumb_func_start sub_812A898
-sub_812A898: @ 812A898
+ thumb_func_start ContestAICmd_unk_72
+ContestAICmd_unk_72: @ 812A898
push {r4,lr}
ldr r0, _0812A8C4 @ =0x020192e4
ldr r4, _0812A8C8 @ =gAIScriptPtr
@@ -4435,10 +4435,10 @@ sub_812A898: @ 812A898
.align 2, 0
_0812A8C4: .4byte 0x020192e4
_0812A8C8: .4byte gAIScriptPtr
- thumb_func_end sub_812A898
+ thumb_func_end ContestAICmd_unk_72
- thumb_func_start sub_812A8CC
-sub_812A8CC: @ 812A8CC
+ thumb_func_start ContestAICmd_unk_73
+ContestAICmd_unk_73: @ 812A8CC
push {r4,lr}
ldr r2, _0812A8F4 @ =0x020192e4
ldr r4, _0812A8F8 @ =gAIScriptPtr
@@ -4462,10 +4462,10 @@ sub_812A8CC: @ 812A8CC
.align 2, 0
_0812A8F4: .4byte 0x020192e4
_0812A8F8: .4byte gAIScriptPtr
- thumb_func_end sub_812A8CC
+ thumb_func_end ContestAICmd_unk_73
- thumb_func_start sub_812A8FC
-sub_812A8FC: @ 812A8FC
+ thumb_func_start ContestAICmd_unk_74
+ContestAICmd_unk_74: @ 812A8FC
push {r4,lr}
ldr r2, _0812A924 @ =0x020192e4
ldr r4, _0812A928 @ =gAIScriptPtr
@@ -4489,10 +4489,10 @@ sub_812A8FC: @ 812A8FC
.align 2, 0
_0812A924: .4byte 0x020192e4
_0812A928: .4byte gAIScriptPtr
- thumb_func_end sub_812A8FC
+ thumb_func_end ContestAICmd_unk_74
- thumb_func_start sub_812A92C
-sub_812A92C: @ 812A92C
+ thumb_func_start ContestAICmd_unk_75
+ContestAICmd_unk_75: @ 812A92C
push {r4,lr}
ldr r1, _0812A964 @ =0x020192e4
ldr r4, _0812A968 @ =gAIScriptPtr
@@ -4532,10 +4532,10 @@ _0812A972:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812A92C
+ thumb_func_end ContestAICmd_unk_75
- thumb_func_start sub_812A978
-sub_812A978: @ 812A978
+ thumb_func_start ContestAICmd_unk_76
+ContestAICmd_unk_76: @ 812A978
push {r4,lr}
ldr r1, _0812A9B0 @ =0x020192e4
ldr r4, _0812A9B4 @ =gAIScriptPtr
@@ -4575,10 +4575,10 @@ _0812A9BE:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812A978
+ thumb_func_end ContestAICmd_unk_76
- thumb_func_start sub_812A9C4
-sub_812A9C4: @ 812A9C4
+ thumb_func_start ContestAICmd_unk_77
+ContestAICmd_unk_77: @ 812A9C4
push {r4,lr}
ldr r1, _0812A9FC @ =0x020192e4
ldr r4, _0812AA00 @ =gAIScriptPtr
@@ -4618,10 +4618,10 @@ _0812AA0A:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812A9C4
+ thumb_func_end ContestAICmd_unk_77
- thumb_func_start sub_812AA10
-sub_812AA10: @ 812AA10
+ thumb_func_start ContestAICmd_unk_78
+ContestAICmd_unk_78: @ 812AA10
push {r4,lr}
ldr r1, _0812AA48 @ =0x020192e4
ldr r4, _0812AA4C @ =gAIScriptPtr
@@ -4661,10 +4661,10 @@ _0812AA56:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812AA10
+ thumb_func_end ContestAICmd_unk_78
- thumb_func_start sub_812AA5C
-sub_812AA5C: @ 812AA5C
+ thumb_func_start ContestAICmd_unk_79
+ContestAICmd_unk_79: @ 812AA5C
push {r4,lr}
ldr r2, _0812AA98 @ =0x020192e4
ldr r4, _0812AA9C @ =gAIScriptPtr
@@ -4704,10 +4704,10 @@ _0812AAA4:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812AA5C
+ thumb_func_end ContestAICmd_unk_79
- thumb_func_start sub_812AAAC
-sub_812AAAC: @ 812AAAC
+ thumb_func_start ContestAICmd_unk_7A
+ContestAICmd_unk_7A: @ 812AAAC
push {r4,lr}
ldr r2, _0812AAE8 @ =0x020192e4
ldr r4, _0812AAEC @ =gAIScriptPtr
@@ -4747,10 +4747,10 @@ _0812AAF4:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812AAAC
+ thumb_func_end ContestAICmd_unk_7A
- thumb_func_start sub_812AAFC
-sub_812AAFC: @ 812AAFC
+ thumb_func_start ContestAICmd_unk_7B
+ContestAICmd_unk_7B: @ 812AAFC
push {r4,lr}
ldr r2, _0812AB38 @ =0x020192e4
ldr r4, _0812AB3C @ =gAIScriptPtr
@@ -4790,10 +4790,10 @@ _0812AB44:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812AAFC
+ thumb_func_end ContestAICmd_unk_7B
- thumb_func_start sub_812AB4C
-sub_812AB4C: @ 812AB4C
+ thumb_func_start ContestAICmd_unk_7C
+ContestAICmd_unk_7C: @ 812AB4C
push {r4,lr}
ldr r2, _0812AB88 @ =0x020192e4
ldr r4, _0812AB8C @ =gAIScriptPtr
@@ -4833,10 +4833,10 @@ _0812AB94:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812AB4C
+ thumb_func_end ContestAICmd_unk_7C
- thumb_func_start sub_812AB9C
-sub_812AB9C: @ 812AB9C
+ thumb_func_start ContestAICmd_unk_7D
+ContestAICmd_unk_7D: @ 812AB9C
push {r4,lr}
bl Random
movs r2, 0xFF
@@ -4874,10 +4874,10 @@ _0812ABE0:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812AB9C
+ thumb_func_end ContestAICmd_unk_7D
- thumb_func_start sub_812ABE8
-sub_812ABE8: @ 812ABE8
+ thumb_func_start ContestAICmd_unk_7E
+ContestAICmd_unk_7E: @ 812ABE8
push {r4,lr}
bl Random
movs r2, 0xFF
@@ -4915,10 +4915,10 @@ _0812AC2C:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_812ABE8
+ thumb_func_end ContestAICmd_unk_7E
- thumb_func_start sub_812AC34
-sub_812AC34: @ 812AC34
+ thumb_func_start ContestAICmd_unk_7F
+ContestAICmd_unk_7F: @ 812AC34
ldr r3, _0812AC50 @ =gAIScriptPtr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
@@ -4935,10 +4935,10 @@ sub_812AC34: @ 812AC34
bx lr
.align 2, 0
_0812AC50: .4byte gAIScriptPtr
- thumb_func_end sub_812AC34
+ thumb_func_end ContestAICmd_unk_7F
- thumb_func_start sub_812AC54
-sub_812AC54: @ 812AC54
+ thumb_func_start ContestAICmd_unk_80
+ContestAICmd_unk_80: @ 812AC54
push {r4,lr}
ldr r4, _0812AC80 @ =gAIScriptPtr
ldr r0, [r4]
@@ -4961,10 +4961,10 @@ sub_812AC54: @ 812AC54
bx r0
.align 2, 0
_0812AC80: .4byte gAIScriptPtr
- thumb_func_end sub_812AC54
+ thumb_func_end ContestAICmd_unk_80
- thumb_func_start sub_812AC84
-sub_812AC84: @ 812AC84
+ thumb_func_start ContestAICmd_unk_81
+ContestAICmd_unk_81: @ 812AC84
push {lr}
bl sub_812ACC8
lsls r0, 24
@@ -4980,7 +4980,7 @@ _0812AC9A:
bx r0
.align 2, 0
_0812ACA0: .4byte 0x020192e4
- thumb_func_end sub_812AC84
+ thumb_func_end ContestAICmd_unk_81
thumb_func_start sub_812ACA4
sub_812ACA4: @ 812ACA4
@@ -5034,8 +5034,8 @@ _0812ACF4:
_0812ACF8: .4byte gAIScriptPtr
thumb_func_end sub_812ACC8
- thumb_func_start contest_ai_check_for_exciting_move
-contest_ai_check_for_exciting_move: @ 812ACFC
+ thumb_func_start ContestAICmd_check_for_exciting_move
+ContestAICmd_check_for_exciting_move: @ 812ACFC
push {r4-r7,lr}
movs r5, 0
movs r4, 0
@@ -5077,12 +5077,12 @@ _0812AD36:
.align 2, 0
_0812AD48: .4byte 0x020192e4
_0812AD4C: .4byte gAIScriptPtr
- thumb_func_end contest_ai_check_for_exciting_move
+ thumb_func_end ContestAICmd_check_for_exciting_move
- thumb_func_start sub_812AD50
-sub_812AD50: @ 812AD50
+ thumb_func_start ContestAICmd_unk_83
+ContestAICmd_unk_83: @ 812AD50
push {lr}
- bl contest_ai_check_for_exciting_move
+ bl ContestAICmd_check_for_exciting_move
ldr r0, _0812AD7C @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -5115,12 +5115,12 @@ _0812AD8C:
bx r0
.align 2, 0
_0812AD90: .4byte gAIScriptPtr
- thumb_func_end sub_812AD50
+ thumb_func_end ContestAICmd_unk_83
- thumb_func_start sub_812AD94
-sub_812AD94: @ 812AD94
+ thumb_func_start ContestAICmd_unk_84
+ContestAICmd_unk_84: @ 812AD94
push {lr}
- bl contest_ai_check_for_exciting_move
+ bl ContestAICmd_check_for_exciting_move
ldr r0, _0812ADC0 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -5153,10 +5153,10 @@ _0812ADD0:
bx r0
.align 2, 0
_0812ADD4: .4byte gAIScriptPtr
- thumb_func_end sub_812AD94
+ thumb_func_end ContestAICmd_unk_84
- thumb_func_start sub_812ADD8
-sub_812ADD8: @ 812ADD8
+ thumb_func_start ContestAICmd_unk_85
+ContestAICmd_unk_85: @ 812ADD8
push {r4-r7,lr}
movs r6, 0
ldr r2, _0812AE08 @ =gAIScriptPtr
@@ -5212,12 +5212,12 @@ _0812AE34:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_812ADD8
+ thumb_func_end ContestAICmd_unk_85
- thumb_func_start sub_812AE44
-sub_812AE44: @ 812AE44
+ thumb_func_start ContestAICmd_unk_86
+ContestAICmd_unk_86: @ 812AE44
push {lr}
- bl sub_812ADD8
+ bl ContestAICmd_unk_85
ldr r0, _0812AE70 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -5250,12 +5250,12 @@ _0812AE80:
bx r0
.align 2, 0
_0812AE84: .4byte gAIScriptPtr
- thumb_func_end sub_812AE44
+ thumb_func_end ContestAICmd_unk_86
- thumb_func_start sub_812AE88
-sub_812AE88: @ 812AE88
+ thumb_func_start ContestAICmd_unk_87
+ContestAICmd_unk_87: @ 812AE88
push {lr}
- bl sub_812ADD8
+ bl ContestAICmd_unk_85
ldr r0, _0812AEB4 @ =0x020192e4
movs r1, 0x18
ldrsh r0, [r0, r1]
@@ -5288,6 +5288,6 @@ _0812AEC4:
bx r0
.align 2, 0
_0812AEC8: .4byte gAIScriptPtr
- thumb_func_end sub_812AE88
+ thumb_func_end ContestAICmd_unk_87
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/credits.s b/asm/credits.s
deleted file mode 100644
index 860015e46..000000000
--- a/asm/credits.s
+++ /dev/null
@@ -1,2713 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task_d_8144514
-task_d_8144514: @ 8144514
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, _08144548 @ =0x0201c000
- ldr r3, _0814454C @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r2, r0, r3
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _08144550
- cmp r0, 0x1
- bgt _0814453C
- b _08144658
-_0814453C:
- cmp r0, 0x2
- beq _08144584
- cmp r0, 0x3
- bne _08144546
- b _08144644
-_08144546:
- b _08144658
- .align 2, 0
-_08144548: .4byte 0x0201c000
-_0814454C: .4byte gTasks
-_08144550:
- adds r0, r6, 0
- adds r0, 0x8A
- ldrh r0, [r0]
- cmp r0, 0
- bne _0814456E
- movs r4, 0xA
- ldrsh r0, [r2, r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08144658
-_0814456E:
- movs r0, 0xA
- ldrsh r1, [r2, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x24]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- b _08144656
-_08144584:
- adds r0, r6, 0
- adds r0, 0x88
- ldrh r1, [r0]
- mov r9, r0
- cmp r1, 0x44
- beq _08144658
- movs r4, 0xA
- ldrsh r1, [r2, r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- ldr r1, [r0]
- ldr r0, _081445EC @ =sub_8143B68
- cmp r1, r0
- bne _08144658
- adds r7, r6, 0
- adds r7, 0x8C
- ldrh r0, [r7]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- ldr r4, _081445F0 @ =gUnknown_0840CA00
- adds r5, r6, 0
- adds r5, 0x8A
- ldrh r3, [r5]
- lsls r2, r3, 1
- adds r1, r2, r4
- ldrb r1, [r1]
- adds r4, 0x1
- adds r2, r4
- ldrb r2, [r2]
- bl sub_81456B4
- lsls r0, 24
- lsrs r2, r0, 24
- ldrh r1, [r7]
- adds r0, r6, 0
- adds r0, 0x8E
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bge _081445F8
- adds r0, r1, 0x1
- strh r0, [r7]
- ldr r1, _081445F4 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x32
- b _0814460A
- .align 2, 0
-_081445EC: .4byte task_a_8143B68
-_081445F0: .4byte gUnknown_0840CA00
-_081445F4: .4byte gSprites
-_081445F8:
- movs r0, 0
- strh r0, [r7]
- ldr r1, _08144620 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x80
- lsls r1, 2
-_0814460A:
- strh r1, [r0, 0x34]
- mov r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldrh r0, [r5]
- cmp r0, 0x2
- bne _08144624
- movs r0, 0
- b _08144626
- .align 2, 0
-_08144620: .4byte gSprites
-_08144624:
- adds r0, 0x1
-_08144626:
- strh r0, [r5]
- ldr r0, _08144640 @ =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x32
- strh r0, [r1, 0xE]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08144658
- .align 2, 0
-_08144640: .4byte gTasks
-_08144644:
- ldrh r1, [r2, 0xE]
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08144654
- subs r0, r1, 0x1
- strh r0, [r2, 0xE]
- b _08144658
-_08144654:
- movs r0, 0x1
-_08144656:
- strh r0, [r2, 0x8]
-_08144658:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_d_8144514
-
- thumb_func_start sub_8144664
-sub_8144664: @ 8144664
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0814468C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0x32
- bls _08144680
- b _0814492C
-_08144680:
- lsls r0, 2
- ldr r1, _08144690 @ =_08144694
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0814468C: .4byte gTasks
-_08144690: .4byte _08144694
- .align 2, 0
-_08144694:
- .4byte _08144760
- .4byte _08144784
- .4byte _081447D8
- .4byte _081447F0
- .4byte _0814482C
- .4byte _08144850
- .4byte _0814489C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _081448A8
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _081448C8
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _081448EC
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _08144920
-_08144760:
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 17
- movs r1, 0x7F
- ands r0, r1
- movs r1, 0xC
- bl Sin
- ldr r1, _08144780 @ =gUnknown_0203935A
- strh r0, [r1]
- b _081447A8
- .align 2, 0
-_08144780: .4byte gUnknown_0203935A
-_08144784:
- ldr r7, _081447B0 @ =gUnknown_0203935A
- movs r3, 0
- ldrsh r4, [r7, r3]
- cmp r4, 0
- beq _081447B4
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 17
- movs r1, 0x7F
- ands r0, r1
- movs r1, 0xC
- bl Sin
- strh r0, [r7]
-_081447A8:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- b _0814492C
- .align 2, 0
-_081447B0: .4byte gUnknown_0203935A
-_081447B4:
- ldr r3, _081447D4 @ =gSprites
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x2
- strh r2, [r0, 0x2E]
- strh r4, [r1, 0x12]
- b _08144848
- .align 2, 0
-_081447D4: .4byte gSprites
-_081447D8:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r6
- ldrh r2, [r1, 0x12]
- movs r3, 0x12
- ldrsh r0, [r1, r3]
- cmp r0, 0x3F
- bgt _08144848
- adds r0, r2, 0x1
- strh r0, [r1, 0x12]
- b _08144866
-_081447F0:
- ldr r3, _08144828 @ =gSprites
- lsls r2, r5, 2
- adds r2, r5
- lsls r2, 3
- adds r2, r6
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x3
- strh r1, [r0, 0x2E]
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- movs r0, 0x78
- strh r0, [r2, 0x10]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _0814492C
- .align 2, 0
-_08144828: .4byte gSprites
-_0814482C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r6
- ldrh r2, [r1, 0x10]
- movs r3, 0x10
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08144844
- subs r0, r2, 0x1
- strh r0, [r1, 0x10]
- b _0814492C
-_08144844:
- movs r0, 0x40
- strh r0, [r1, 0x12]
-_08144848:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0814492C
-_08144850:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r6
- ldrh r1, [r4, 0x12]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _0814487C
- subs r0, r1, 0x1
- strh r0, [r4, 0x12]
-_08144866:
- movs r1, 0x7F
- ands r0, r1
- movs r1, 0x14
- bl Sin
- ldr r1, _08144878 @ =gUnknown_0203935A
- strh r0, [r1]
- b _0814492C
- .align 2, 0
-_08144878: .4byte gUnknown_0203935A
-_0814487C:
- ldr r2, _08144898 @ =gSprites
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0814492C
- .align 2, 0
-_08144898: .4byte gSprites
-_0814489C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0x32
- b _0814492A
-_081448A8:
- ldr r3, _081448C4 @ =gSprites
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- movs r0, 0xE
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x2
- b _081448E0
- .align 2, 0
-_081448C4: .4byte gSprites
-_081448C8:
- ldr r3, _081448E8 @ =gSprites
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x4
-_081448E0:
- strh r2, [r0, 0x2E]
- movs r0, 0x32
- strh r0, [r1, 0x8]
- b _0814492C
- .align 2, 0
-_081448E8: .4byte gSprites
-_081448EC:
- ldr r3, _0814491C @ =gSprites
- lsls r2, r5, 2
- adds r2, r5
- lsls r2, 3
- adds r2, r6
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x5
- strh r1, [r0, 0x2E]
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x3
- strh r1, [r0, 0x2E]
- movs r0, 0x32
- strh r0, [r2, 0x8]
- b _0814492C
- .align 2, 0
-_0814491C: .4byte gSprites
-_08144920:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0
-_0814492A:
- strh r1, [r0, 0x8]
-_0814492C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8144664
-
- thumb_func_start sub_8144934
-sub_8144934: @ 8144934
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08144958 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r3, 0x8
- ldrsh r0, [r0, r3]
- adds r4, r1, 0
- cmp r0, 0x4
- bhi _08144974
- lsls r0, 2
- ldr r1, _0814495C @ =_08144960
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144958: .4byte gTasks
-_0814495C: .4byte _08144960
- .align 2, 0
-_08144960:
- .4byte _08144974
- .4byte _081449B8
- .4byte _081449C4
- .4byte _08144A0C
- .4byte _08144A5C
-_08144974:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r2, r0, r4
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- ldr r5, _081449C0 @ =0x00007fff
- cmp r0, r5
- beq _081449B8
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r3, r0, r4
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- bne _081449B8
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x14
- strh r0, [r1, 0x8]
- strh r5, [r2, 0xA]
-_081449B8:
- movs r0, 0
- bl sub_8149020
- b _08144A62
- .align 2, 0
-_081449C0: .4byte 0x00007fff
-_081449C4:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r2, r0, r4
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- ldr r5, _08144A08 @ =0x00007fff
- cmp r0, r5
- beq _08144A54
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r3, 0xA
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r3, r0, r4
- ldrh r1, [r3, 0x12]
- movs r0, 0x80
- negs r0, r0
- ands r0, r1
- movs r1, 0xA0
- lsls r1, 2
- cmp r0, r1
- bne _08144A54
- movs r0, 0x1
- strh r0, [r3, 0x8]
- strh r5, [r2, 0xA]
- b _08144A54
- .align 2, 0
-_08144A08: .4byte 0x00007fff
-_08144A0C:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r2, r0, r4
- ldrh r3, [r2, 0xA]
- movs r0, 0xA
- ldrsh r1, [r2, r0]
- ldr r5, _08144A48 @ =0x00007fff
- cmp r1, r5
- beq _08144A54
- ldr r0, _08144A4C @ =0x000001f3
- cmp r1, r0
- bne _08144A50
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r3, 0xA
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xA
- strh r1, [r0, 0x8]
- strh r5, [r2, 0xA]
- b _08144A54
- .align 2, 0
-_08144A48: .4byte 0x00007fff
-_08144A4C: .4byte 0x000001f3
-_08144A50:
- adds r0, r3, 0x1
- strh r0, [r2, 0xA]
-_08144A54:
- movs r0, 0x1
- bl sub_8149020
- b _08144A62
-_08144A5C:
- movs r0, 0x2
- bl sub_8149020
-_08144A62:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8144934
-
- thumb_func_start sub_8144A68
-sub_8144A68: @ 8144A68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- cmp r0, 0x4
- bls _08144A7E
- b _08144DFC
-_08144A7E:
- lsls r0, 2
- ldr r1, _08144A88 @ =_08144A8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144A88: .4byte _08144A8C
- .align 2, 0
-_08144A8C:
- .4byte _08144AA0
- .4byte _08144B48
- .4byte _08144BF4
- .4byte _08144CA0
- .4byte _08144D50
-_08144AA0:
- ldr r5, _08144B40 @ =gSprites
- ldr r0, _08144B44 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r2, 0x88
- lsls r2, 1
- strh r2, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- movs r2, 0x20
- b _08144DF0
- .align 2, 0
-_08144B40: .4byte gSprites
-_08144B44: .4byte gTasks
-_08144B48:
- ldr r5, _08144BEC @ =gSprites
- ldr r0, _08144BF0 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x88
- lsls r1, 1
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- movs r2, 0x20
- b _08144DF0
- .align 2, 0
-_08144BEC: .4byte gSprites
-_08144BF0: .4byte gTasks
-_08144BF4:
- ldr r5, _08144C98 @ =gSprites
- ldr r0, _08144C9C @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x88
- lsls r1, 1
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x1
- b _08144DF0
- .align 2, 0
-_08144C98: .4byte gSprites
-_08144C9C: .4byte gTasks
-_08144CA0:
- ldr r5, _08144D44 @ =gSprites
- ldr r0, _08144D48 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08144D4C @ =0x0000ffe0
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x1
- b _08144DF0
- .align 2, 0
-_08144D44: .4byte gSprites
-_08144D48: .4byte gTasks
-_08144D4C: .4byte 0x0000ffe0
-_08144D50:
- ldr r5, _08144EBC @ =gSprites
- ldr r0, _08144EC0 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x58
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x98
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x2
-_08144DF0:
- movs r3, 0x8
- bl sub_8148EC0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x8]
-_08144DFC:
- ldr r0, _08144EC4 @ =sub_8144934
- movs r1, 0
- bl CreateTask
- ldr r6, _08144EC0 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r5, r1, r6
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- strh r0, [r5, 0xC]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- mov r1, r8
- strh r1, [r0, 0x8]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r4, [r0, 0xA]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r7, [r0, 0xC]
- ldr r0, _08144EC8 @ =sub_8144664
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r4, [r0, 0x8]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r7, [r0, 0xA]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r5, 0x12]
- strh r1, [r0, 0xC]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r5, 0x14]
- strh r1, [r0, 0xE]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r4, [r0, 0x10]
- mov r1, r8
- cmp r1, 0x2
- bne _08144EB0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- movs r0, 0x45
- strh r0, [r1, 0x12]
-_08144EB0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08144EBC: .4byte gSprites
-_08144EC0: .4byte gTasks
-_08144EC4: .4byte sub_8144934
-_08144EC8: .4byte sub_8144664
- thumb_func_end sub_8144A68
-
- thumb_func_start sub_8144ECC
-sub_8144ECC: @ 8144ECC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _08144F28 @ =gMain
- ldr r1, _08144F2C @ =0x0000043c
- adds r6, r0, r1
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _08144F38
- cmp r0, 0x1
- ble _08144EF0
- cmp r0, 0x2
- beq _08144F5C
- cmp r0, 0x3
- bne _08144EF0
- b _0814508C
-_08144EF0:
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- ldr r2, _08144F30 @ =REG_BG3HOFS
- movs r0, 0x8
- strh r0, [r2]
- ldr r0, _08144F34 @ =REG_BG3VOFS
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x3A
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0x1
- strb r0, [r6]
- b _081450A2
- .align 2, 0
-_08144F28: .4byte gMain
-_08144F2C: .4byte 0x0000043c
-_08144F30: .4byte REG_BG3HOFS
-_08144F34: .4byte REG_BG3VOFS
-_08144F38:
- ldr r1, _08144F54 @ =gUnknown_02039358
- movs r0, 0x22
- strh r0, [r1]
- ldr r1, _08144F58 @ =gUnknown_0203935A
- movs r0, 0
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_8148CB0
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _081450A2
- .align 2, 0
-_08144F54: .4byte gUnknown_02039358
-_08144F58: .4byte gUnknown_0203935A
-_08144F5C:
- ldr r0, _08144FBC @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08144FE0
- ldr r0, _08144FC0 @ =gIntro2BrendanSpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08144FC4 @ =gUnknown_08416E34
- bl LoadCompressedObjectPic
- ldr r0, _08144FC8 @ =gIntro2BicycleSpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08144FCC @ =gIntro2SpritePalettes
- bl LoadSpritePalettes
- movs r0, 0x78
- movs r1, 0x2E
- bl intro_create_brendan_sprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08144FD0 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- strh r2, [r4, 0x12]
- ldr r6, _08144FD4 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r6, 0
- adds r5, 0x1C
- adds r2, r0, r5
- ldr r1, _08144FD8 @ =sub_8145378
- str r1, [r2]
- adds r6, 0x8
- adds r0, r6
- ldr r1, _08144FDC @ =gUnknown_0840CA54
- str r1, [r0]
- movs r0, 0x88
- lsls r0, 1
- movs r1, 0x2E
- bl intro_create_may_sprite
- b _08145034
- .align 2, 0
-_08144FBC: .4byte gSaveBlock2
-_08144FC0: .4byte gIntro2BrendanSpriteSheet
-_08144FC4: .4byte gUnknown_08416E34
-_08144FC8: .4byte gIntro2BicycleSpriteSheet
-_08144FCC: .4byte gIntro2SpritePalettes
-_08144FD0: .4byte gTasks
-_08144FD4: .4byte gSprites
-_08144FD8: .4byte sub_8145378
-_08144FDC: .4byte gUnknown_0840CA54
-_08144FE0:
- ldr r0, _0814505C @ =gIntro2MaySpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08145060 @ =gUnknown_08416E24
- bl LoadCompressedObjectPic
- ldr r0, _08145064 @ =gIntro2BicycleSpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08145068 @ =gIntro2SpritePalettes
- bl LoadSpritePalettes
- movs r0, 0x78
- movs r1, 0x2E
- bl intro_create_may_sprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0814506C @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- strh r2, [r4, 0x12]
- ldr r6, _08145070 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r6, 0
- adds r5, 0x1C
- adds r2, r0, r5
- ldr r1, _08145074 @ =sub_8145378
- str r1, [r2]
- adds r6, 0x8
- adds r0, r6
- ldr r1, _08145078 @ =gUnknown_0840CA54
- str r1, [r0]
- movs r0, 0x88
- lsls r0, 1
- movs r1, 0x2E
- bl intro_create_brendan_sprite
-_08145034:
- lsls r0, 24
- lsrs r2, r0, 24
- strh r2, [r4, 0x14]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r5
- ldr r1, _0814507C @ =sub_8145420
- str r1, [r5]
- adds r0, r6
- ldr r1, _08145080 @ =gUnknown_0840CA94
- str r1, [r0]
- ldr r1, _08145084 @ =gMain
- ldr r0, _08145088 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081450A2
- .align 2, 0
-_0814505C: .4byte gIntro2MaySpriteSheet
-_08145060: .4byte gUnknown_08416E24
-_08145064: .4byte gIntro2BicycleSpriteSheet
-_08145068: .4byte gIntro2SpritePalettes
-_0814506C: .4byte gTasks
-_08145070: .4byte gSprites
-_08145074: .4byte sub_8145378
-_08145078: .4byte gUnknown_0840CA54
-_0814507C: .4byte sub_8145420
-_08145080: .4byte gUnknown_0840CA94
-_08145084: .4byte gMain
-_08145088: .4byte 0x0000043c
-_0814508C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8144A68
- adds r0, r4, 0
- bl sub_8148E90
- movs r0, 0
- strb r0, [r6]
- movs r0, 0x1
- b _081450A4
-_081450A2:
- movs r0, 0
-_081450A4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144ECC
-
- thumb_func_start sub_81450AC
-sub_81450AC: @ 81450AC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08145120 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081450D2
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0x8]
-_081450D2:
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081450E8
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0xA]
-_081450E8:
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081450FE
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0xC]
-_081450FE:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08145114
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0xE]
-_08145114:
- ldr r1, _08145124 @ =gUnknown_0203935C
- movs r0, 0x1
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08145120: .4byte gTasks
-_08145124: .4byte gUnknown_0203935C
- thumb_func_end sub_81450AC
-
- thumb_func_start sub_8145128
-sub_8145128: @ 8145128
- push {r4-r7,lr}
- adds r3, r0, 0
- adds r4, r2, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r4, 16
- lsrs r5, r4, 16
- ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx
- movs r6, 0xC0
- lsls r6, 19
- adds r3, r6
- adds r1, r3, 0
- bl LZ77UnCompVram
- ldr r0, _081451F0 @ =gIntroCopyright_Pal
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- lsrs r4, 20
- lsls r4, 28
- lsrs r4, 16
- movs r2, 0
- adds r1, r4, 0x1
- ldr r3, _081451F4 @ =0x000003ff
-_0814515E:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r6
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _0814515E
- movs r2, 0
- adds r0, r4, 0x2
- adds r6, r4, 0
- adds r6, 0x17
- movs r1, 0x2B
- adds r1, r4
- mov r12, r1
- adds r4, 0x42
- ldr r5, _081451F8 @ =0x060001c8
- adds r3, r0, 0
-_08145184:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r5
- adds r1, r2, r3
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x14
- bls _08145184
- movs r2, 0
- ldr r5, _081451FC @ =0x06000248
- adds r3, r6, 0
-_0814519E:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r5
- adds r1, r2, r3
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x13
- bls _0814519E
- movs r2, 0
- ldr r5, _08145200 @ =0x060002c8
- mov r3, r12
-_081451B8:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r5
- adds r1, r2, r3
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x16
- bls _081451B8
- movs r2, 0
- ldr r3, _08145204 @ =0x06000348
-_081451D0:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r3
- adds r1, r2, r4
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xB
- bls _081451D0
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081451EC: .4byte gCreditsCopyrightEnd_Gfx
-_081451F0: .4byte gIntroCopyright_Pal
-_081451F4: .4byte 0x000003ff
-_081451F8: .4byte 0x060001c8
-_081451FC: .4byte 0x06000248
-_08145200: .4byte 0x060002c8
-_08145204: .4byte 0x06000348
- thumb_func_end sub_8145128
-
- thumb_func_start sub_8145208
-sub_8145208: @ 8145208
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- movs r0, 0x3F
- ands r0, r2
- adds r1, r0, 0
- adds r1, 0x50
- cmp r2, 0xFF
- bne _08145220
- movs r0, 0x1
- b _08145246
-_08145220:
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _08145230
- movs r2, 0x80
- lsls r2, 4
- adds r0, r2, 0
- orrs r1, r0
-_08145230:
- movs r0, 0x40
- ands r3, r0
- cmp r3, 0
- beq _08145244
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- orrs r1, r0
- lsls r0, r1, 16
- lsrs r1, r0, 16
-_08145244:
- adds r0, r1, 0
-_08145246:
- pop {r1}
- bx r1
- thumb_func_end sub_8145208
-
- thumb_func_start sub_814524C
-sub_814524C: @ 814524C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4]
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x8]
- lsls r0, 16
- lsrs r0, 20
- lsls r0, 28
- lsrs r0, 16
- mov r9, r0
- movs r5, 0
-_0814527A:
- movs r4, 0
- lsls r7, r5, 1
- ldr r1, [sp, 0x4]
- adds r0, r1, r5
- adds r2, r5, 0x1
- mov r8, r2
- lsls r0, 6
- ldr r1, [sp, 0x8]
- adds r6, r0, r1
-_0814528C:
- adds r0, r7, r5
- adds r0, r4
- ldr r2, [sp]
- adds r0, r2, r0
- ldrb r0, [r0]
- bl sub_8145208
- mov r2, r10
- adds r1, r2, r4
- lsls r1, 1
- adds r1, r6
- movs r2, 0xC0
- lsls r2, 19
- adds r1, r2
- add r0, r9
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0814528C
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _0814527A
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_814524C
-
- thumb_func_start sub_81452D0
-sub_81452D0: @ 81452D0
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsrs r1, 20
- lsls r1, 28
- lsrs r1, 16
- movs r2, 0
- ldr r7, _08145360 @ =gUnknown_0840B83C
- movs r4, 0xC0
- lsls r4, 19
- adds r1, 0x1
- ldr r3, _08145364 @ =0x000003ff
-_081452EE:
- lsls r0, r2, 1
- adds r0, r5
- adds r0, r4
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _081452EE
- str r6, [sp]
- adds r0, r7, 0
- movs r1, 0x3
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r0, _08145368 @ =gUnknown_0840B84B
- str r6, [sp]
- movs r1, 0x7
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r4, _0814536C @ =gUnknown_0840B85A
- str r6, [sp]
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- str r6, [sp]
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r0, _08145370 @ =gUnknown_0840B869
- str r6, [sp]
- movs r1, 0x14
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r0, _08145374 @ =gUnknown_0840B878
- str r6, [sp]
- movs r1, 0x18
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08145360: .4byte gUnknown_0840B83C
-_08145364: .4byte 0x000003ff
-_08145368: .4byte gUnknown_0840B84B
-_0814536C: .4byte gUnknown_0840B85A
-_08145370: .4byte gUnknown_0840B869
-_08145374: .4byte gUnknown_0840B878
- thumb_func_end sub_81452D0
-
- thumb_func_start sub_8145378
-sub_8145378: @ 8145378
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08145390 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08145394
- adds r0, r4, 0
- bl DestroySprite
- b _08145418
- .align 2, 0
-_08145390: .4byte gUnknown_0203935C
-_08145394:
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bhi _08145418
- lsls r0, 2
- ldr r1, _081453A8 @ =_081453AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081453A8: .4byte _081453AC
- .align 2, 0
-_081453AC:
- .4byte _081453C4
- .4byte _081453CE
- .4byte _081453D4
- .4byte _081453DE
- .4byte _081453E8
- .4byte _081453FE
-_081453C4:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- b _08145418
-_081453CE:
- adds r0, r4, 0
- movs r1, 0x1
- b _08145402
-_081453D4:
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnimIfDifferent
- b _08145418
-_081453DE:
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAnimIfDifferent
- b _08145418
-_081453E8:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x78
- ble _08145418
- subs r0, r1, 0x1
- b _08145416
-_081453FE:
- adds r0, r4, 0
- movs r1, 0
-_08145402:
- bl StartSpriteAnimIfDifferent
- ldrh r2, [r4, 0x20]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- ble _08145418
- subs r0, r2, 0x1
-_08145416:
- strh r0, [r4, 0x20]
-_08145418:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8145378
-
- thumb_func_start sub_8145420
-sub_8145420: @ 8145420
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08145438 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0814543C
- adds r0, r4, 0
- bl DestroySprite
- b _081454D8
- .align 2, 0
-_08145438: .4byte gUnknown_0203935C
-_0814543C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08145464
- cmp r0, 0x1
- bgt _0814544E
- cmp r0, 0
- beq _08145458
- b _081454D8
-_0814544E:
- cmp r0, 0x2
- beq _081454A0
- cmp r0, 0x3
- beq _081454BE
- b _081454D8
-_08145458:
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- b _081454D8
-_08145464:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r0, 0xC8
- ble _08145476
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnimIfDifferent
- b _0814547E
-_08145476:
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnimIfDifferent
-_0814547E:
- ldrh r2, [r4, 0x20]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- ble _08145490
- subs r0, r2, 0x2
- strh r0, [r4, 0x20]
-_08145490:
- ldr r0, _0814549C @ =gUnknown_0203935A
- ldrh r0, [r0]
- negs r0, r0
- strh r0, [r4, 0x26]
- b _081454D8
- .align 2, 0
-_0814549C: .4byte gUnknown_0203935A
-_081454A0:
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- ldrh r1, [r4, 0x3C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081454D8
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- b _081454D6
-_081454BE:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- ldrh r2, [r4, 0x20]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- ble _081454D8
- subs r0, r2, 0x1
-_081454D6:
- strh r0, [r4, 0x20]
-_081454D8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8145420
-
- thumb_func_start sub_81454E0
-sub_81454E0: @ 81454E0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, _081454F8 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081454FC
- adds r0, r5, 0
- bl DestroySprite
- b _081456A6
- .align 2, 0
-_081454F8: .4byte gUnknown_0203935C
-_081454FC:
- ldrh r0, [r5, 0x3C]
- adds r0, 0x1
- strh r0, [r5, 0x3C]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0xA
- bhi _08145544
- lsls r0, 2
- ldr r1, _08145514 @ =_08145518
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08145514: .4byte _08145518
- .align 2, 0
-_08145518:
- .4byte _08145544
- .4byte _0814559E
- .4byte _08145620
- .4byte _08145660
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145696
-_08145544:
- ldrb r1, [r5, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x1]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r0, 0x1F
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x3]
- movs r0, 0x10
- strh r0, [r5, 0x32]
- ldrh r4, [r5, 0x30]
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x80
- lsls r0, 9
- movs r1, 0x10
- bl __divsi3
- adds r1, r0, 0
- str r1, [sp]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- b _081456A6
-_0814559E:
- ldrh r1, [r5, 0x32]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- cmp r0, 0xFF
- bgt _081455D4
- adds r0, r1, 0
- adds r0, 0x8
- strh r0, [r5, 0x32]
- ldrh r4, [r5, 0x30]
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x32
- ldrsh r1, [r5, r0]
- movs r0, 0x80
- lsls r0, 9
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- b _081455DA
-_081455D4:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_081455DA:
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- cmp r1, 0x2
- beq _081456A6
- cmp r1, 0x2
- bgt _081455EC
- cmp r1, 0x1
- beq _081455F2
- b _081456A6
-_081455EC:
- cmp r1, 0x3
- beq _0814560A
- b _081456A6
-_081455F2:
- ldrh r1, [r5, 0x3C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08145602
- ldrh r0, [r5, 0x22]
- adds r0, 0x1
- strh r0, [r5, 0x22]
-_08145602:
- ldrh r0, [r5, 0x20]
- subs r0, 0x2
- strh r0, [r5, 0x20]
- b _081456A6
-_0814560A:
- ldrh r0, [r5, 0x3C]
- ands r1, r0
- cmp r1, 0
- bne _08145618
- ldrh r0, [r5, 0x22]
- adds r0, 0x1
- strh r0, [r5, 0x22]
-_08145618:
- ldrh r0, [r5, 0x20]
- adds r0, 0x2
- strh r0, [r5, 0x20]
- b _081456A6
-_08145620:
- ldrh r1, [r5, 0x34]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08145630
- subs r0, r1, 0x1
- strh r0, [r5, 0x34]
- b _081456A6
-_08145630:
- ldr r1, _0814565C @ =REG_BLDCNT
- movs r2, 0xF4
- lsls r2, 4
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x10
- strh r0, [r1]
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r5, 0x1]
- movs r0, 0x10
- strh r0, [r5, 0x34]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _081456A6
- .align 2, 0
-_0814565C: .4byte REG_BLDCNT
-_08145660:
- ldrh r1, [r5, 0x34]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08145684
- subs r1, 0x1
- strh r1, [r5, 0x34]
- ldr r3, _08145680 @ =REG_BLDALPHA
- movs r0, 0x34
- ldrsh r2, [r5, r0]
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- adds r1, r0
- strh r1, [r3]
- b _081456A6
- .align 2, 0
-_08145680: .4byte REG_BLDALPHA
-_08145684:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA
- strh r0, [r5, 0x2E]
- b _081456A6
-_08145696:
- ldr r0, _081456B0 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r5, 0
- bl DestroySprite
-_081456A6:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081456B0: .4byte REG_BLDCNT
- thumb_func_end sub_81454E0
-
- thumb_func_start sub_81456B4
-sub_81456B4: @ 81456B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x10]
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- adds r0, r6, 0
- bl NationalPokedexNumToSpecies
- adds r6, r0, 0
- cmp r6, 0xC9
- beq _081456F8
- movs r0, 0x9A
- lsls r0, 1
- cmp r6, r0
- beq _081456EE
- movs r7, 0
- b _081456FC
-_081456EE:
- ldr r0, _081456F4 @ =gSaveBlock2
- ldr r7, [r0, 0x20]
- b _081456FC
- .align 2, 0
-_081456F4: .4byte gSaveBlock2
-_081456F8:
- ldr r0, _081457E8 @ =gSaveBlock2
- ldr r7, [r0, 0x1C]
-_081456FC:
- lsls r0, r6, 3
- ldr r1, _081457EC @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _081457F0 @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _081457F4 @ =gUnknown_0840B5A0
- mov r8, r4
- mov r5, r9
- lsls r4, r5, 2
- add r4, r8
- ldr r4, [r4]
- str r4, [sp]
- str r6, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r4, 0x1
- str r4, [sp, 0xC]
- bl LoadSpecialPokePic
- ldr r2, _081457F8 @ =0x0000ffff
- adds r0, r6, 0
- movs r1, 0
- bl species_and_otid_get_pal
- lsls r5, 4
- mov r8, r5
- movs r1, 0x80
- lsls r1, 1
- add r1, r8
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- mov r7, r9
- lsls r6, r7, 24
- lsrs r6, 24
- mov r0, r9
- adds r1, r6, 0
- bl sub_8143648
- ldr r0, _081457FC @ =gUnknown_02024E8C
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldr r3, [sp, 0x10]
- lsls r2, r3, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08145800 @ =gSprites
- lsls r2, r4, 4
- adds r2, r4
- lsls r2, 2
- adds r3, r2, r5
- ldrb r1, [r3, 0x5]
- movs r0, 0xF
- ands r0, r1
- mov r7, r8
- orrs r0, r7
- movs r1, 0xD
- negs r1, r1
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3, 0x5]
- mov r0, r9
- adds r0, 0x1
- strh r0, [r3, 0x30]
- movs r0, 0x3E
- adds r0, r3
- mov r8, r0
- ldrb r0, [r0]
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- adds r0, r5, 0
- adds r0, 0x1C
- adds r2, r0
- ldr r0, _08145804 @ =sub_81454E0
- str r0, [r2]
- ldr r0, _08145808 @ =gSpriteTemplate_840CAEC
- movs r2, 0x20
- ldrsh r1, [r3, r2]
- movs r7, 0x22
- ldrsh r2, [r3, r7]
- movs r3, 0x1
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r4, [r0, 0x2E]
- adds r1, r6, 0
- bl StartSpriteAnimIfDifferent
- adds r0, r4, 0
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081457E8: .4byte gSaveBlock2
-_081457EC: .4byte gMonFrontPicTable
-_081457F0: .4byte gMonFrontPicCoords
-_081457F4: .4byte gUnknown_0840B5A0
-_081457F8: .4byte 0x0000ffff
-_081457FC: .4byte gUnknown_02024E8C
-_08145800: .4byte gSprites
-_08145804: .4byte sub_81454E0
-_08145808: .4byte gSpriteTemplate_840CAEC
- thumb_func_end sub_81456B4
-
- thumb_func_start sub_814580C
-sub_814580C: @ 814580C
- push {r4,lr}
- adds r3, r0, 0
- ldr r4, _08145838 @ =gSprites
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0xA
- beq _08145830
- ldr r0, _0814583C @ =gUnknown_0203935C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- beq _08145840
-_08145830:
- adds r0, r3, 0
- bl DestroySprite
- b _081458D4
- .align 2, 0
-_08145838: .4byte gSprites
-_0814583C: .4byte gUnknown_0203935C
-_08145840:
- adds r0, r1, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- movs r1, 0x4
- ands r1, r0
- mov r0, r12
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- movs r0, 0xC
- ands r0, r1
- ldrb r2, [r3, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x1]
- movs r0, 0x2E
- ldrsh r2, [r3, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r2, 0x4
- negs r2, r2
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x1]
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x3]
- movs r1, 0x3E
- ands r1, r0
- ldrb r2, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x3]
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x20]
- strh r0, [r3, 0x20]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x22]
- strh r0, [r3, 0x22]
-_081458D4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_814580C
-
- thumb_func_start sub_81458DC
-sub_81458DC: @ 81458DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r7, _0814597C @ =0x0201c000
- ldr r0, _08145980 @ =0x00004023
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl GetStarterPokemon
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- movs r4, 0x1
- movs r5, 0
- ldr r0, _08145984 @ =0x00000181
- mov r8, r0
-_0814590E:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- adds r6, r7, 0
- adds r6, 0x90
- cmp r0, 0
- beq _0814592C
- lsls r0, r5, 1
- adds r0, r6, r0
- strh r4, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_0814592C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bls _0814590E
- adds r4, r5, 0
- ldr r0, _08145984 @ =0x00000181
- lsls r1, r4, 16
- mov r9, r1
- movs r2, 0x8E
- adds r2, r7
- mov r8, r2
- adds r1, r7, 0
- adds r1, 0x86
- str r1, [sp]
- cmp r4, r0
- bhi _08145964
- adds r1, r6, 0
- movs r3, 0
- adds r2, r0, 0
-_08145954:
- lsls r0, r4, 1
- adds r0, r1, r0
- strh r3, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r2
- bls _08145954
-_08145964:
- movs r2, 0xE5
- lsls r2, 2
- adds r0, r7, r2
- strh r5, [r0]
- mov r1, r9
- lsrs r0, r1, 16
- cmp r0, 0x43
- bhi _08145988
- mov r2, r8
- strh r5, [r2]
- b _0814598E
- .align 2, 0
-_0814597C: .4byte 0x0201c000
-_08145980: .4byte 0x00004023
-_08145984: .4byte 0x00000181
-_08145988:
- movs r0, 0x44
- mov r1, r8
- strh r0, [r1]
-_0814598E:
- movs r5, 0
- movs r2, 0xE5
- lsls r2, 2
- adds r4, r7, r2
- mov r9, r5
- b _0814599E
-_0814599A:
- cmp r5, 0x43
- bhi _081459EE
-_0814599E:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, r5, 1
- adds r1, r7, r1
- lsls r0, r2, 1
- adds r3, r6, r0
- ldrh r0, [r3]
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, r9
- strh r0, [r3]
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r2, r0
- beq _081459E8
- ldrh r0, [r4]
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- strh r0, [r3]
- ldrh r0, [r4]
- lsls r0, 1
- adds r0, r6, r0
- mov r1, r9
- strh r1, [r0]
-_081459E8:
- ldrh r0, [r4]
- cmp r0, 0
- bne _0814599A
-_081459EE:
- mov r2, r8
- ldrh r0, [r2]
- cmp r0, 0x43
- bhi _08145A26
- adds r5, r0, 0
- movs r2, 0
- cmp r5, 0x43
- bhi _08145A5C
- mov r3, r8
-_08145A00:
- lsls r1, r5, 1
- adds r1, r7, r1
- lsls r0, r2, 1
- adds r0, r7, r0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r3]
- cmp r2, r0
- bne _08145A1A
- movs r2, 0
-_08145A1A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x43
- bls _08145A00
- b _08145A5C
-_08145A26:
- movs r4, 0
- ldrh r0, [r7]
- cmp r0, r10
- beq _08145A42
-_08145A2E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 1
- adds r0, r7, r0
- ldrh r0, [r0]
- cmp r0, r10
- beq _08145A42
- cmp r4, 0x43
- bls _08145A2E
-_08145A42:
- mov r1, r8
- ldrh r0, [r1]
- subs r0, 0x1
- cmp r4, r0
- bge _08145A5C
- lsls r0, r4, 1
- adds r0, r7, r0
- ldr r2, [sp]
- ldrh r1, [r2]
- strh r1, [r0]
- mov r0, r10
- strh r0, [r2]
- b _08145A62
-_08145A5C:
- mov r2, r10
- ldr r1, [sp]
- strh r2, [r1]
-_08145A62:
- movs r0, 0x44
- mov r1, r8
- strh r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81458DC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/daycare.s b/asm/daycare.s
index d78757d8f..886643fce 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -196,7 +196,7 @@ _08041498: .4byte 0x00002b4c
thumb_func_start daycare_send
daycare_send: @ 804149C
push {lr}
- ldr r0, _080414B4 @ =gUnknown_03005CE0
+ ldr r0, _080414B4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -207,7 +207,7 @@ daycare_send: @ 804149C
pop {r0}
bx r0
.align 2, 0
-_080414B4: .4byte gUnknown_03005CE0
+_080414B4: .4byte gLastFieldPokeMenuOpened
_080414B8: .4byte gPlayerParty
_080414BC: .4byte gSaveBlock1 + 0x2F9C
thumb_func_end daycare_send
@@ -2104,7 +2104,7 @@ _08042324: .4byte gStringVar2
thumb_func_start sub_8042328
sub_8042328: @ 8042328
push {r4-r6,lr}
- ldr r6, _08042354 @ =gUnknown_03005CE0
+ ldr r6, _08042354 @ =gLastFieldPokeMenuOpened
ldrb r0, [r6]
movs r5, 0x64
muls r0, r5
@@ -2123,7 +2123,7 @@ sub_8042328: @ 8042328
pop {r1}
bx r1
.align 2, 0
-_08042354: .4byte gUnknown_03005CE0
+_08042354: .4byte gLastFieldPokeMenuOpened
_08042358: .4byte gPlayerParty
_0804235C: .4byte gStringVar1
thumb_func_end sub_8042328
@@ -2722,7 +2722,7 @@ _0804279C:
bl sub_8072DEC
movs r0, 0x5
bl PlaySE
- ldr r3, _080427DC @ =gUnknown_03005CE0
+ ldr r3, _080427DC @ =gLastFieldPokeMenuOpened
ldr r2, _080427E0 @ =gScriptResult
ldr r1, _080427E4 @ =gTasks
lsls r0, r4, 2
@@ -2742,7 +2742,7 @@ _0804279C:
bl EnableBothScriptContexts
b _08042816
.align 2, 0
-_080427DC: .4byte gUnknown_03005CE0
+_080427DC: .4byte gLastFieldPokeMenuOpened
_080427E0: .4byte gScriptResult
_080427E4: .4byte gTasks
_080427E8:
@@ -2752,7 +2752,7 @@ _080427E8:
cmp r0, 0
beq _08042816
bl sub_8072DEC
- ldr r0, _0804281C @ =gUnknown_03005CE0
+ ldr r0, _0804281C @ =gLastFieldPokeMenuOpened
ldr r1, _08042820 @ =gScriptResult
strh r4, [r1]
movs r1, 0x2
@@ -2770,7 +2770,7 @@ _08042816:
pop {r0}
bx r0
.align 2, 0
-_0804281C: .4byte gUnknown_03005CE0
+_0804281C: .4byte gLastFieldPokeMenuOpened
_08042820: .4byte gScriptResult
thumb_func_end DaycareLevelMenuProcessKeyInput
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
deleted file mode 100644
index c122f7651..000000000
--- a/asm/field_control_avatar.s
+++ /dev/null
@@ -1,1780 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80682A8
-sub_80682A8: @ 80682A8
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsCounter
- lsls r0, 24
- cmp r0, 0
- bne _080682D0
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- b _080682EE
-_080682D0:
- ldr r1, _08068314 @ =gUnknown_0821664C
- lsls r2, r6, 3
- adds r0, r2, r1
- ldr r3, [r0]
- ldrh r0, [r4]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x4
- adds r2, r1
- ldr r2, [r2]
- ldrh r1, [r4, 0x2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
-_080682EE:
- ldrb r2, [r4, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x10
- beq _0806830E
- ldr r1, _08068318 @ =gMapObjects
- lsls r2, r3, 3
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- adds r5, r1, 0
- cmp r0, 0xFF
- bne _0806831C
-_0806830E:
- movs r0, 0
- b _0806834E
- .align 2, 0
-_08068314: .4byte gUnknown_0821664C
-_08068318: .4byte gMapObjects
-_0806831C:
- movs r4, 0
- ldr r1, _08068354 @ =gLinkPlayerMapObjects
-_08068320:
- ldrb r0, [r1]
- cmp r0, 0x1
- bne _0806832C
- ldrb r0, [r1, 0x2]
- cmp r0, r3
- beq _0806830E
-_0806832C:
- adds r1, 0x4
- adds r4, 0x1
- cmp r4, 0x3
- ble _08068320
- ldr r0, _08068358 @ =gSelectedMapObject
- strb r3, [r0]
- ldr r1, _0806835C @ =gScriptLastTalked
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x8]
- strh r0, [r1]
- ldr r0, _08068360 @ =gScriptFacing
- strh r6, [r0]
- adds r0, r3, 0
- bl GetFieldObjectScriptPointerByFieldObjectId
-_0806834E:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08068354: .4byte gLinkPlayerMapObjects
-_08068358: .4byte gSelectedMapObject
-_0806835C: .4byte gScriptLastTalked
-_08068360: .4byte gScriptFacing
- thumb_func_end sub_80682A8
-
- thumb_func_start sub_8068364
-sub_8068364: @ 8068364
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x10
- beq _08068392
- ldr r1, _080683E0 @ =gMapObjects
- lsls r2, r3, 3
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- cmp r0, 0xFF
- bne _080683E8
-_08068392:
- adds r0, r5, 0
- bl MetatileBehavior_IsCounter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080683DC
- ldr r1, _080683E4 @ =gUnknown_0821664C
- lsls r2, r6, 3
- adds r0, r2, r1
- ldr r3, [r0]
- ldrh r0, [r4]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x4
- adds r2, r1
- ldr r2, [r2]
- ldrh r1, [r4, 0x2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- ldrb r2, [r4, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x10
- beq _080683DC
- ldr r1, _080683E0 @ =gMapObjects
- lsls r2, r3, 3
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- cmp r0, 0xFF
- bne _080683E8
-_080683DC:
- movs r0, 0
- b _0806840C
- .align 2, 0
-_080683E0: .4byte gMapObjects
-_080683E4: .4byte gUnknown_0821664C
-_080683E8:
- ldr r0, _08068414 @ =gSelectedMapObject
- strb r3, [r0]
- ldr r4, _08068418 @ =gScriptLastTalked
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- strh r0, [r4]
- ldr r0, _0806841C @ =gScriptFacing
- strh r6, [r0]
- adds r0, r3, 0
- bl GetFieldObjectScriptPointerByFieldObjectId
- adds r1, r0, 0
- ldrb r0, [r4]
- bl GetRamScript
- adds r1, r0, 0
-_0806840C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08068414: .4byte gSelectedMapObject
-_08068418: .4byte gScriptLastTalked
-_0806841C: .4byte gScriptFacing
- thumb_func_end sub_8068364
-
- thumb_func_start TryGetInvisibleMapObjectScript
-TryGetInvisibleMapObjectScript: @ 8068420
- push {r4,r5,lr}
- lsls r2, 24
- lsrs r5, r2, 24
- ldr r4, _08068450 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl FindInvisibleMapObjectByPosition
- cmp r0, 0
- beq _08068494
- ldr r2, [r0, 0x8]
- cmp r2, 0
- bne _08068458
- ldr r0, _08068454 @ =gUnknown_081C6C02
- b _080684FA
- .align 2, 0
-_08068450: .4byte gMapHeader
-_08068454: .4byte gUnknown_081C6C02
-_08068458:
- ldrb r0, [r0, 0x5]
- cmp r0, 0x8
- bhi _080684F8
- lsls r0, 2
- ldr r1, _08068468 @ =_0806846C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08068468: .4byte _0806846C
- .align 2, 0
-_0806846C:
- .4byte _080684F8
- .4byte _08068490
- .4byte _08068498
- .4byte _0806849E
- .4byte _080684A4
- .4byte _080684AA
- .4byte _080684AA
- .4byte _080684AA
- .4byte _080684D8
-_08068490:
- cmp r5, 0x2
- beq _080684F8
-_08068494:
- movs r0, 0
- b _080684FA
-_08068498:
- cmp r5, 0x1
- beq _080684F8
- b _08068494
-_0806849E:
- cmp r5, 0x4
- beq _080684F8
- b _08068494
-_080684A4:
- cmp r5, 0x3
- beq _080684F8
- b _08068494
-_080684AA:
- ldr r1, _080684CC @ =gSpecialVar_0x8004
- lsrs r0, r2, 16
- movs r3, 0x96
- lsls r3, 2
- adds r0, r3
- strh r0, [r1]
- ldr r0, _080684D0 @ =gSpecialVar_0x8005
- strh r2, [r0]
- ldrh r0, [r1]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068494
- ldr r0, _080684D4 @ =HiddenItemScript
- b _080684FA
- .align 2, 0
-_080684CC: .4byte gSpecialVar_0x8004
-_080684D0: .4byte gSpecialVar_0x8005
-_080684D4: .4byte HiddenItemScript
-_080684D8:
- cmp r5, 0x2
- bne _08068494
- ldr r0, _080684F0 @ =gSpecialVar_0x8004
- strh r2, [r0]
- bl sub_80BC050
- lsls r0, 24
- cmp r0, 0
- beq _08068494
- ldr r0, _080684F4 @ =gUnknown_081A2C51
- b _080684FA
- .align 2, 0
-_080684F0: .4byte gSpecialVar_0x8004
-_080684F4: .4byte gUnknown_081A2C51
-_080684F8:
- adds r0, r2, 0
-_080684FA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end TryGetInvisibleMapObjectScript
-
- thumb_func_start sub_8068500
-sub_8068500: @ 8068500
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r2, 0
- bl MetatileBehavior_IsPlayerFacingTVScreen
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068524
- ldr r0, _08068520 @ =Event_TV
- b _080686EE
- .align 2, 0
-_08068520: .4byte Event_TV
-_08068524:
- adds r0, r5, 0
- bl MetatileBehavior_IsPC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806853C
- ldr r0, _08068538 @ =gUnknown_081A0009
- b _080686EE
- .align 2, 0
-_08068538: .4byte gUnknown_081A0009
-_0806853C:
- adds r0, r5, 0
- bl MetatileBehavior_IsClosedSootpolisGymDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068554
- ldr r0, _08068550 @ =ClosedSootopolisGymDoorScript
- b _080686EE
- .align 2, 0
-_08068550: .4byte ClosedSootopolisGymDoorScript
-_08068554:
- adds r0, r5, 0
- bl is_tile_x84
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806856C
- ldr r0, _08068568 @ =gUnknown_081A4363
- b _080686EE
- .align 2, 0
-_08068568: .4byte gUnknown_081A4363
-_0806856C:
- adds r0, r5, 0
- bl MetatileBehavior_IsPokeblockFeeder
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068584
- ldr r0, _08068580 @ =gUnknown_081C346A
- b _080686EE
- .align 2, 0
-_08068580: .4byte gUnknown_081C346A
-_08068584:
- adds r0, r5, 0
- bl MetatileBehavior_IsTrickHousePuzzleDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806859C
- ldr r0, _08068598 @ =gUnknown_081616E1
- b _080686EE
- .align 2, 0
-_08068598: .4byte gUnknown_081616E1
-_0806859C:
- adds r0, r5, 0
- bl MetatileBehavior_IsRegionMap
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080685B4
- ldr r0, _080685B0 @ =Event_WorldMap
- b _080686EE
- .align 2, 0
-_080685B0: .4byte Event_WorldMap
-_080685B4:
- adds r0, r5, 0
- bl sub_805791C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080685CC
- ldr r0, _080685C8 @ =Event_RunningShoesManual
- b _080686EE
- .align 2, 0
-_080685C8: .4byte Event_RunningShoesManual
-_080685CC:
- adds r0, r5, 0
- bl MetatileBehavior_IsPictureBookShelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080685E4
- ldr r0, _080685E0 @ =PictureBookShelfScript
- b _080686EE
- .align 2, 0
-_080685E0: .4byte PictureBookShelfScript
-_080685E4:
- adds r0, r5, 0
- bl MetatileBehavior_IsBookShelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080685FC
- ldr r0, _080685F8 @ =BookshelfScript
- b _080686EE
- .align 2, 0
-_080685F8: .4byte BookshelfScript
-_080685FC:
- adds r0, r5, 0
- bl MetatileBehavior_IsPokeCenterBookShelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068614
- ldr r0, _08068610 @ =PokemonCenterBookshelfScript
- b _080686EE
- .align 2, 0
-_08068610: .4byte PokemonCenterBookshelfScript
-_08068614:
- adds r0, r5, 0
- bl MetatileBehavior_IsVase
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806862C
- ldr r0, _08068628 @ =VaseScript
- b _080686EE
- .align 2, 0
-_08068628: .4byte VaseScript
-_0806862C:
- adds r0, r5, 0
- bl MetatileBehavior_IsTrashCan
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068644
- ldr r0, _08068640 @ =TrashCanScript
- b _080686EE
- .align 2, 0
-_08068640: .4byte TrashCanScript
-_08068644:
- adds r0, r5, 0
- bl MetatileBehavior_IsShopShelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806865C
- ldr r0, _08068658 @ =ShopShelfScript
- b _080686EE
- .align 2, 0
-_08068658: .4byte ShopShelfScript
-_0806865C:
- adds r0, r5, 0
- bl MetatileBehavior_IsBlueprint
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068674
- ldr r0, _08068670 @ =BlueprintScript
- b _080686EE
- .align 2, 0
-_08068670: .4byte BlueprintScript
-_08068674:
- movs r4, 0x4
- ldrsb r4, [r6, r4]
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0x2
- ldrsh r1, [r6, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080686EC
- adds r0, r5, 0
- bl MetatileBehavior_IsSecretBasePC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080686A4
- ldr r0, _080686A0 @ =gUnknown_0815F36C
- b _080686EE
- .align 2, 0
-_080686A0: .4byte gUnknown_0815F36C
-_080686A4:
- adds r0, r5, 0
- bl sub_805724C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080686BC
- ldr r0, _080686B8 @ =gUnknown_0815F43A
- b _080686EE
- .align 2, 0
-_080686B8: .4byte gUnknown_0815F43A
-_080686BC:
- adds r0, r5, 0
- bl sub_8057364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080686D4
- ldr r0, _080686D0 @ =gUnknown_0815F523
- b _080686EE
- .align 2, 0
-_080686D0: .4byte gUnknown_0815F523
-_080686D4:
- adds r0, r5, 0
- bl sub_8057378
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080686EC
- ldr r0, _080686E8 @ =gUnknown_0815F528
- b _080686EE
- .align 2, 0
-_080686E8: .4byte gUnknown_0815F528
-_080686EC:
- movs r0, 0
-_080686EE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8068500
-
- thumb_func_start TryGetFieldMoveScript
-TryGetFieldMoveScript: @ 80686F4
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _08068724 @ =0x0000080b
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806872C
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806872C
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806872C
- ldr r0, _08068728 @ =UseSurfScript
- b _0806876A
- .align 2, 0
-_08068724: .4byte 0x0000080b
-_08068728: .4byte UseSurfScript
-_0806872C:
- adds r0, r4, 0
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068768
- ldr r0, _08068758 @ =0x0000080e
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068760
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068760
- ldr r0, _0806875C @ =UseWaterfallScript
- b _0806876A
- .align 2, 0
-_08068758: .4byte 0x0000080e
-_0806875C: .4byte UseWaterfallScript
-_08068760:
- ldr r0, _08068764 @ =CannotUseWaterfallScript
- b _0806876A
- .align 2, 0
-_08068764: .4byte CannotUseWaterfallScript
-_08068768:
- movs r0, 0
-_0806876A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end TryGetFieldMoveScript
-
- thumb_func_start sub_8068770
-sub_8068770: @ 8068770
- push {lr}
- ldr r0, _08068794 @ =0x0000080d
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0806879C
- bl sub_8068F18
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0806879C
- ldr r0, _08068798 @ =UseDiveScript
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _0806879E
- .align 2, 0
-_08068794: .4byte 0x0000080d
-_08068798: .4byte UseDiveScript
-_0806879C:
- movs r0, 0
-_0806879E:
- pop {r1}
- bx r1
- thumb_func_end sub_8068770
-
- thumb_func_start sub_80687A4
-sub_80687A4: @ 80687A4
- push {lr}
- ldr r0, _080687D0 @ =0x0000080d
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080687DC
- ldr r0, _080687D4 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _080687DC
- bl sub_8068F18
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080687DC
- ldr r0, _080687D8 @ =UnderwaterUseDiveScript
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _080687DE
- .align 2, 0
-_080687D0: .4byte 0x0000080d
-_080687D4: .4byte gMapHeader
-_080687D8: .4byte UnderwaterUseDiveScript
-_080687DC:
- movs r0, 0
-_080687DE:
- pop {r1}
- bx r1
- thumb_func_end sub_80687A4
-
- thumb_func_start sub_80687E4
-sub_80687E4: @ 80687E4
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- bl mapheader_trigger_activate_at__run_now
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068834
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8068A64
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068834
- adds r0, r6, 0
- bl sub_8068870
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068834
- bl sub_8068894
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068834
- bl UpdateRepelCounter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068834
- movs r0, 0
- b _08068836
-_08068834:
- movs r0, 0x1
-_08068836:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80687E4
-
- thumb_func_start mapheader_trigger_activate_at__run_now
-mapheader_trigger_activate_at__run_now: @ 806883C
- push {r4,lr}
- ldr r4, _08068864 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl mapheader_trigger_activate_at
- cmp r0, 0
- beq _08068868
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _0806886A
- .align 2, 0
-_08068864: .4byte gMapHeader
-_08068868:
- movs r0, 0
-_0806886A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end mapheader_trigger_activate_at__run_now
-
- thumb_func_start sub_8068870
-sub_8068870: @ 8068870
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsCrackedFloorHole
- lsls r0, 24
- cmp r0, 0
- bne _08068884
- movs r0, 0
- b _0806888C
-_08068884:
- ldr r0, _08068890 @ =GraniteCave_B1F_EventScript_1C6BC5
- bl ScriptContext1_SetupScript
- movs r0, 0x1
-_0806888C:
- pop {r1}
- bx r1
- .align 2, 0
-_08068890: .4byte GraniteCave_B1F_EventScript_1C6BC5
- thumb_func_end sub_8068870
-
- thumb_func_start sub_8068894
-sub_8068894: @ 8068894
- push {lr}
- bl sub_8082B78
- bl happiness_algorithm_step
- bl overworld_poison_step
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080688B4
- ldr r0, _080688B0 @ =gUnknown_081A14B8
- b _080688E8
- .align 2, 0
-_080688B0: .4byte gUnknown_081A14B8
-_080688B4:
- bl sub_80422A0
- lsls r0, 24
- cmp r0, 0
- beq _080688CC
- movs r0, 0xD
- bl IncrementGameStat
- ldr r0, _080688C8 @ =Event_EggHatch
- b _080688E8
- .align 2, 0
-_080688C8: .4byte Event_EggHatch
-_080688CC:
- bl SafariZoneTakeStep
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080688EC
- movs r0, 0x1
- bl sub_810D9B0
- cmp r0, 0x1
- beq _080688E6
- movs r0, 0
- b _080688EE
-_080688E6:
- ldr r0, _080688F4 @ =gUnknown_0815FD0D
-_080688E8:
- bl ScriptContext1_SetupScript
-_080688EC:
- movs r0, 0x1
-_080688EE:
- pop {r1}
- bx r1
- .align 2, 0
-_080688F4: .4byte gUnknown_0815FD0D
- thumb_func_end sub_8068894
-
- thumb_func_start unref_sub_80688F8
-unref_sub_80688F8: @ 80688F8
- push {lr}
- ldr r0, _08068908 @ =0x0000402a
- movs r1, 0
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_08068908: .4byte 0x0000402a
- thumb_func_end unref_sub_80688F8
-
- thumb_func_start happiness_algorithm_step
-happiness_algorithm_step: @ 806890C
- push {r4,r5,lr}
- ldr r0, _08068940 @ =0x0000402a
- bl GetVarPointer
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- ldrh r1, [r0]
- movs r2, 0x7F
- ands r1, r2
- strh r1, [r0]
- cmp r1, 0
- bne _0806893A
- ldr r5, _08068944 @ =gPlayerParty
- movs r4, 0x5
-_0806892A:
- adds r0, r5, 0
- movs r1, 0x5
- bl AdjustFriendship
- adds r5, 0x64
- subs r4, 0x1
- cmp r4, 0
- bge _0806892A
-_0806893A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08068940: .4byte 0x0000402a
-_08068944: .4byte gPlayerParty
- thumb_func_end happiness_algorithm_step
-
- thumb_func_start overworld_poison_timer_set
-overworld_poison_timer_set: @ 8068948
- push {lr}
- ldr r0, _08068958 @ =0x0000402b
- movs r1, 0
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_08068958: .4byte 0x0000402b
- thumb_func_end overworld_poison_timer_set
-
- thumb_func_start overworld_poison_step
-overworld_poison_step: @ 806895C
- push {lr}
- ldr r0, _08068994 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x9
- beq _0806899C
- ldr r0, _08068998 @ =0x0000402b
- bl GetVarPointer
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- ldrh r1, [r0]
- movs r2, 0x3
- ands r1, r2
- strh r1, [r0]
- cmp r1, 0
- bne _0806899C
- bl overworld_poison
- cmp r0, 0x1
- beq _0806899C
- cmp r0, 0x1
- ble _0806899C
- cmp r0, 0x2
- bne _0806899C
- movs r0, 0x1
- b _0806899E
- .align 2, 0
-_08068994: .4byte gMapHeader
-_08068998: .4byte 0x0000402b
-_0806899C:
- movs r0, 0
-_0806899E:
- pop {r1}
- bx r1
- thumb_func_end overworld_poison_step
-
- thumb_func_start prev_quest_postbuffer_cursor_backup_reset
-prev_quest_postbuffer_cursor_backup_reset: @ 80689A4
- ldr r1, _080689AC @ =gUnknown_0202E8C0
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080689AC: .4byte gUnknown_0202E8C0
- thumb_func_end prev_quest_postbuffer_cursor_backup_reset
-
- thumb_func_start is_it_battle_time_3
-is_it_battle_time_3: @ 80689B0
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r7, r4, 0
- ldr r6, _080689CC @ =gUnknown_0202E8C0
- ldrb r0, [r6]
- cmp r0, 0x3
- bhi _080689D4
- adds r0, 0x1
- strb r0, [r6]
- ldr r0, _080689D0 @ =gUnknown_0202E8C2
- strh r4, [r0]
- movs r0, 0
- b _080689F8
- .align 2, 0
-_080689CC: .4byte gUnknown_0202E8C0
-_080689D0: .4byte gUnknown_0202E8C2
-_080689D4:
- ldr r5, _080689EC @ =gUnknown_0202E8C2
- ldrh r1, [r5]
- adds r0, r4, 0
- bl StandardWildEncounter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080689F0
- strh r4, [r5]
- movs r0, 0
- b _080689F8
- .align 2, 0
-_080689EC: .4byte gUnknown_0202E8C2
-_080689F0:
- movs r0, 0
- strb r0, [r6]
- strh r7, [r5]
- movs r0, 0x1
-_080689F8:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end is_it_battle_time_3
-
- thumb_func_start mapheader_run_first_tag2_script_list_match_conditionally
-mapheader_run_first_tag2_script_list_match_conditionally: @ 8068A00
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _08068A54 @ =gMapHeader
- mov r8, r0
- adds r1, r7, 0
- bl map_warp_check_packed
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl is_non_stair_warp_tile
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068A58
- lsls r0, r6, 24
- asrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08068A58
- bl walkrun_find_lowest_active_bit_in_bitfield
- mov r0, r8
- adds r1, r4, 0
- adds r2, r7, 0
- bl sub_8068C30
- bl sub_8080E88
- movs r0, 0x1
- b _08068A5A
- .align 2, 0
-_08068A54: .4byte gMapHeader
-_08068A58:
- movs r0, 0
-_08068A5A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end mapheader_run_first_tag2_script_list_match_conditionally
-
- thumb_func_start sub_8068A64
-sub_8068A64: @ 8068A64
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r7, _08068ABC @ =gMapHeader
- adds r0, r7, 0
- adds r1, r6, 0
- bl map_warp_check_packed
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08068B28
- adds r0, r5, 0
- bl sub_8068B30
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068B28
- bl walkrun_find_lowest_active_bit_in_bitfield
- adds r0, r7, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_8068C30
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsEscalator
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068AC0
- adds r0, r4, 0
- bl sub_8080F2C
- movs r0, 0x1
- b _08068B2A
- .align 2, 0
-_08068ABC: .4byte gMapHeader
-_08068AC0:
- adds r0, r4, 0
- bl MetatileBehavior_IsLavaridgeB1FWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068AD6
- bl sub_8080F48
- movs r0, 0x1
- b _08068B2A
-_08068AD6:
- adds r0, r4, 0
- bl MetatileBehavior_IsLavaridge1FWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068AEC
- bl sub_8080F58
- movs r0, 0x1
- b _08068B2A
-_08068AEC:
- adds r0, r4, 0
- bl MetatileBehavior_IsAquaHideoutWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068B02
- bl sub_8080F68
- movs r0, 0x1
- b _08068B2A
-_08068B02:
- adds r0, r4, 0
- bl MetatileBehavior_IsMtPyreHole
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068B20
- ldr r0, _08068B1C @ =gUnknown_081C6BDE
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _08068B2A
- .align 2, 0
-_08068B1C: .4byte gUnknown_081C6BDE
-_08068B20:
- bl sub_8080E88
- movs r0, 0x1
- b _08068B2A
-_08068B28:
- movs r0, 0
-_08068B2A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8068A64
-
- thumb_func_start sub_8068B30
-sub_8068B30: @ 8068B30
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsWarpDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsLadder
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsEscalator
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsNonAnimDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsLavaridgeB1FWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsLavaridge1FWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsAquaHideoutWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- adds r0, r4, 0
- bl MetatileBehavior_IsMtPyreHole
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08068BAA
- movs r0, 0
- b _08068BAC
-_08068BAA:
- movs r0, 0x1
-_08068BAC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8068B30
-
- thumb_func_start is_non_stair_warp_tile
-is_non_stair_warp_tile: @ 8068BB4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x2
- beq _08068BD8
- cmp r1, 0x2
- bgt _08068BCE
- cmp r1, 0x1
- beq _08068BE2
- b _08068C04
-_08068BCE:
- cmp r2, 0x3
- beq _08068BEC
- cmp r2, 0x4
- beq _08068BF6
- b _08068C04
-_08068BD8:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsNorthArrowWarp
- b _08068BFE
-_08068BE2:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSouthArrowWarp
- b _08068BFE
-_08068BEC:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWestArrowWarp
- b _08068BFE
-_08068BF6:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsEastArrowWarp
-_08068BFE:
- lsls r0, 24
- lsrs r0, 24
- b _08068C06
-_08068C04:
- movs r0, 0
-_08068C06:
- pop {r1}
- bx r1
- thumb_func_end is_non_stair_warp_tile
-
- thumb_func_start map_warp_check_packed
-map_warp_check_packed: @ 8068C0C
- push {lr}
- adds r3, r1, 0
- ldrh r1, [r3]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r3, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r3, 0x4]
- bl map_warp_check
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end map_warp_check_packed
-
- thumb_func_start sub_8068C30
-sub_8068C30: @ 8068C30
- push {r4-r7,lr}
- adds r5, r2, 0
- ldr r0, _08068C50 @ =gMapHeader
- ldr r0, [r0, 0x4]
- lsls r1, 24
- asrs r7, r1, 24
- lsls r6, r7, 3
- ldr r0, [r0, 0x8]
- adds r4, r0, r6
- ldrb r0, [r4, 0x6]
- cmp r0, 0x7F
- bne _08068C54
- ldrb r0, [r4, 0x5]
- bl copy_saved_warp2_bank_and_enter_x_to_warp1
- b _08068C9E
- .align 2, 0
-_08068C50: .4byte gMapHeader
-_08068C54:
- movs r0, 0x7
- ldrsb r0, [r4, r0]
- movs r1, 0x6
- ldrsb r1, [r4, r1]
- movs r2, 0x5
- ldrsb r2, [r4, r2]
- bl warp1_set_2
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl sub_80535C4
- ldrb r0, [r4, 0x7]
- ldrb r1, [r4, 0x6]
- bl get_mapheader_by_bank_and_number
- ldr r1, [r0, 0x4]
- ldrb r0, [r4, 0x5]
- ldr r1, [r1, 0x8]
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x6]
- cmp r0, 0x7F
- bne _08068C9E
- adds r0, r6, r1
- ldrb r0, [r0, 0x5]
- ldr r2, _08068CA4 @ =gSaveBlock1
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- ldrb r2, [r2, 0x5]
- lsls r2, 24
- asrs r2, 24
- adds r3, r7, 0
- bl saved_warp2_set
-_08068C9E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08068CA4: .4byte gSaveBlock1
- thumb_func_end sub_8068C30
-
- thumb_func_start map_warp_consider_2_to_inside
-map_warp_consider_2_to_inside: @ 8068CA8
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r0, r1, 16
- adds r7, r0, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0x2
- bne _08068D2C
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80571C0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068CE0
- ldr r0, _08068CDC @ =gMapHeader
- ldr r1, [r0, 0x4]
- adds r0, r5, 0
- bl sub_80BC038
- movs r0, 0x1
- b _08068D2E
- .align 2, 0
-_08068CDC: .4byte gMapHeader
-_08068CE0:
- adds r0, r4, 0
- bl MetatileBehavior_IsWarpDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068D2C
- ldr r6, _08068D28 @ =gMapHeader
- adds r0, r6, 0
- adds r1, r5, 0
- bl map_warp_check_packed
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08068D2C
- adds r0, r7, 0
- bl sub_8068B30
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068D2C
- bl walkrun_find_lowest_active_bit_in_bitfield
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8068C30
- bl sub_8080EF0
- movs r0, 0x1
- b _08068D2E
- .align 2, 0
-_08068D28: .4byte gMapHeader
-_08068D2C:
- movs r0, 0
-_08068D2E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end map_warp_consider_2_to_inside
-
- thumb_func_start map_warp_check
-map_warp_check: @ 8068D34
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 24
- lsrs r4, r3, 24
- ldr r0, [r0, 0x4]
- ldr r1, [r0, 0x8]
- ldrb r3, [r0, 0x1]
- movs r2, 0
- cmp r2, r3
- bge _08068D72
-_08068D4E:
- ldrh r0, [r1]
- cmp r0, r6
- bne _08068D6A
- ldrh r0, [r1, 0x2]
- cmp r0, r5
- bne _08068D6A
- ldrb r0, [r1, 0x4]
- cmp r0, r4
- beq _08068D64
- cmp r0, 0
- bne _08068D6A
-_08068D64:
- lsls r0, r2, 24
- asrs r0, 24
- b _08068D76
-_08068D6A:
- adds r2, 0x1
- adds r1, 0x8
- cmp r2, r3
- blt _08068D4E
-_08068D72:
- movs r0, 0x1
- negs r0, r0
-_08068D76:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end map_warp_check
-
- thumb_func_start trigger_activate
-trigger_activate: @ 8068D7C
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _08068DB2
- ldr r1, [r4, 0xC]
- cmp r1, 0
- bne _08068D92
- ldrb r0, [r4, 0x6]
- bl DoCoordEventWeather
- b _08068DB2
-_08068D92:
- ldrh r0, [r4, 0x6]
- cmp r0, 0
- beq _08068DAC
- ldrh r0, [r4, 0x6]
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r4, 0x8]
- cmp r0, r1
- bne _08068DB2
- ldr r0, [r4, 0xC]
- b _08068DB4
-_08068DAC:
- adds r0, r1, 0
- bl ScriptContext2_RunNewScript
-_08068DB2:
- movs r0, 0
-_08068DB4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end trigger_activate
-
- thumb_func_start mapheader_trigger_activate_at
-mapheader_trigger_activate_at: @ 8068DBC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- ldr r0, [r0, 0x4]
- ldr r1, [r0, 0xC]
- ldrb r7, [r0, 0x2]
- movs r6, 0
- cmp r6, r7
- bge _08068E12
- adds r5, r1, 0
- adds r4, r5, 0
-_08068DE8:
- ldrh r0, [r4]
- cmp r0, r10
- bne _08068E08
- ldrh r0, [r4, 0x2]
- cmp r0, r9
- bne _08068E08
- ldrb r0, [r4, 0x4]
- cmp r0, r8
- beq _08068DFE
- cmp r0, 0
- bne _08068E08
-_08068DFE:
- adds r0, r5, 0
- bl trigger_activate
- cmp r0, 0
- bne _08068E14
-_08068E08:
- adds r4, 0x10
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r7
- blt _08068DE8
-_08068E12:
- movs r0, 0
-_08068E14:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end mapheader_trigger_activate_at
-
- thumb_func_start sub_8068E24
-sub_8068E24: @ 8068E24
- push {r4,lr}
- ldr r4, _08068E48 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl mapheader_trigger_activate_at
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08068E48: .4byte gMapHeader
- thumb_func_end sub_8068E24
-
- thumb_func_start FindInvisibleMapObjectByPosition
-FindInvisibleMapObjectByPosition: @ 8068E4C
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- lsls r3, 24
- lsrs r5, r3, 24
- ldr r0, [r0, 0x4]
- ldr r4, [r0, 0x10]
- ldrb r3, [r0, 0x3]
- movs r2, 0
- cmp r2, r3
- bcs _08068E92
-_08068E66:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, r7
- bne _08068E88
- ldrh r0, [r1, 0x2]
- cmp r0, r6
- bne _08068E88
- ldrb r0, [r1, 0x4]
- cmp r0, r5
- beq _08068E84
- cmp r0, 0
- bne _08068E88
-_08068E84:
- adds r0, r1, 0
- b _08068E94
-_08068E88:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r3
- bcc _08068E66
-_08068E92:
- movs r0, 0
-_08068E94:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end FindInvisibleMapObjectByPosition
-
- thumb_func_start dive_warp
-dive_warp: @ 8068E9C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, _08068ED0 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _08068ED4
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_805750C
- lsls r0, 24
- cmp r0, 0
- bne _08068ED4
- ldrh r0, [r4]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0x2]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_80538B0
- b _08068EF8
- .align 2, 0
-_08068ED0: .4byte gMapHeader
-_08068ED4:
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_80574EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068F10
- ldrh r0, [r4]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0x2]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_80538D0
-_08068EF8:
- lsls r0, 24
- cmp r0, 0
- beq _08068F10
- bl walkrun_find_lowest_active_bit_in_bitfield
- bl sp13E_warp_to_last_warp
- movs r0, 0xE9
- bl PlaySE
- movs r0, 0x1
- b _08068F12
-_08068F10:
- movs r0, 0
-_08068F12:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end dive_warp
-
- thumb_func_start sub_8068F18
-sub_8068F18: @ 8068F18
- push {r4,r5,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08068F70 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _08068F74
- adds r0, r5, 0
- bl sub_805750C
- lsls r0, 24
- cmp r0, 0
- bne _08068F74
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_80538B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068FA4
- movs r0, 0x1
- b _08068FA6
- .align 2, 0
-_08068F70: .4byte gMapHeader
-_08068F74:
- adds r0, r5, 0
- bl sub_80574EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068FA4
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_80538D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08068FA4
- movs r0, 0x2
- b _08068FA6
-_08068FA4:
- movs r0, 0
-_08068FA6:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8068F18
-
- thumb_func_start GetFieldObjectScriptPointerForComparison
-GetFieldObjectScriptPointerForComparison: @ 8068FB0
- push {r4,r5,lr}
- sub sp, 0x8
- bl player_get_direction_upper_nybble
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r5, sp
- mov r0, sp
- bl player_get_next_pos_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- adds r2, r4, 0
- bl sub_8068364
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectScriptPointerForComparison
-
- thumb_func_start sub_8068FEC
-sub_8068FEC: @ 8068FEC
- push {r4,lr}
- sub sp, 0x8
- bl player_get_direction_upper_nybble
- mov r4, sp
- mov r0, sp
- bl player_get_pos_to_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- ldr r4, _0806902C @ =gMapHeader
- adds r0, r4, 0
- mov r1, sp
- bl map_warp_check_packed
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r4, 0
- mov r2, sp
- bl sub_8068C30
- movs r0, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806902C: .4byte gMapHeader
- thumb_func_end sub_8068FEC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 4bcba42ce..66d89ef09 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1620,7 +1620,7 @@ task00_8084310: @ 8086604
cmp r0, 0
beq _08086666
ldr r1, _08086670 @ =gUnknown_0202FF84
- ldr r0, _08086674 @ =gUnknown_03005CE0
+ ldr r0, _08086674 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
cmp r0, 0x5
@@ -1654,7 +1654,7 @@ _08086666:
.align 2, 0
_0808666C: .4byte gTasks
_08086670: .4byte gUnknown_0202FF84
-_08086674: .4byte gUnknown_03005CE0
+_08086674: .4byte gLastFieldPokeMenuOpened
_08086678: .4byte CB2_LoadMap
_0808667C: .4byte gUnknown_0300485C
_08086680: .4byte mapldr_08084390
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 348e1d0f3..d54b57fed 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -6,4242 +6,6 @@
.text
- thumb_func_start npc_clear_ids_and_state
-npc_clear_ids_and_state: @ 805AA50
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
- movs r0, 0xFF
- strb r0, [r4, 0x8]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r4, 0x9]
- strb r0, [r4, 0xA]
- strb r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end npc_clear_ids_and_state
-
- thumb_func_start npcs_clear_ids_and_state
-npcs_clear_ids_and_state: @ 805AA70
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0805AA94 @ =gMapObjects
-_0805AA76:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r0, r5
- bl npc_clear_ids_and_state
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _0805AA76
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805AA94: .4byte gMapObjects
- thumb_func_end npcs_clear_ids_and_state
-
- thumb_func_start sub_805AA98
-sub_805AA98: @ 805AA98
- push {lr}
- bl strange_npc_table_clear
- bl npcs_clear_ids_and_state
- bl ClearPlayerAvatarInfo
- bl sub_805AAB0
- pop {r0}
- bx r0
- thumb_func_end sub_805AA98
-
- thumb_func_start sub_805AAB0
-sub_805AAB0: @ 805AAB0
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldr r0, _0805AB4C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x54]
- mov r9, r0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1F
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805AB50 @ =gSprites
- mov r10, r1
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- add r4, r10
- ldrb r1, [r4, 0x1]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- movs r1, 0x1
- mov r8, r1
- mov r1, r8
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r6, 0x4
- orrs r0, r6
- strb r0, [r4]
- mov r0, r9
- movs r1, 0
- movs r2, 0
- movs r3, 0x1F
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- add r4, r10
- ldrb r0, [r4, 0x1]
- ands r5, r0
- mov r0, r8
- orrs r5, r0
- strb r5, [r4, 0x1]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r6
- strb r0, [r4]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805AB4C: .4byte gFieldEffectObjectTemplatePointers
-_0805AB50: .4byte gSprites
- thumb_func_end sub_805AAB0
-
- thumb_func_start sub_805AB54
-sub_805AB54: @ 805AB54
- push {lr}
- movs r1, 0
- ldr r2, _0805AB60 @ =gMapObjects
- ldrb r0, [r2]
- b _0805AB78
- .align 2, 0
-_0805AB60: .4byte gMapObjects
-_0805AB64:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bhi _0805AB7E
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
-_0805AB78:
- lsls r0, 31
- cmp r0, 0
- bne _0805AB64
-_0805AB7E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_805AB54
-
- thumb_func_start GetFieldObjectIdByLocalIdAndMap
-GetFieldObjectIdByLocalIdAndMap: @ 805AB84
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r0, 0xFE
- bls _0805AB9C
- bl GetFieldObjectIdByLocalId
- b _0805ABA0
-_0805AB9C:
- bl GetFieldObjectIdByLocalIdAndMapInternal
-_0805ABA0:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectIdByLocalIdAndMap
-
- thumb_func_start TryGetFieldObjectIdByLocalIdAndMap
-TryGetFieldObjectIdByLocalIdAndMap: @ 805ABA8
- push {r4,lr}
- adds r4, r3, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- bl GetFieldObjectIdByLocalIdAndMap
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _0805ABCA
- movs r0, 0
- b _0805ABCC
-_0805ABCA:
- movs r0, 0x1
-_0805ABCC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end TryGetFieldObjectIdByLocalIdAndMap
-
- thumb_func_start GetFieldObjectIdByXY
-GetFieldObjectIdByXY: @ 805ABD4
- push {r4-r6,lr}
- movs r3, 0
- ldr r5, _0805AC14 @ =gMapObjects
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r1, 16
-_0805ABE2:
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r5
- ldrb r0, [r2]
- lsls r0, 31
- cmp r0, 0
- beq _0805AC02
- movs r6, 0x10
- ldrsh r0, [r2, r6]
- cmp r0, r4
- bne _0805AC02
- movs r6, 0x12
- ldrsh r0, [r2, r6]
- cmp r0, r1
- beq _0805AC0C
-_0805AC02:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _0805ABE2
-_0805AC0C:
- adds r0, r3, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805AC14: .4byte gMapObjects
- thumb_func_end GetFieldObjectIdByXY
-
- thumb_func_start GetFieldObjectIdByLocalIdAndMapInternal
-GetFieldObjectIdByLocalIdAndMapInternal: @ 805AC18
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- ldr r6, _0805AC50 @ =gMapObjects
-_0805AC2A:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r6
- ldrb r0, [r3]
- lsls r0, 31
- cmp r0, 0
- beq _0805AC54
- ldrb r0, [r3, 0x8]
- cmp r0, r5
- bne _0805AC54
- ldrb r0, [r3, 0x9]
- cmp r0, r4
- bne _0805AC54
- ldrb r0, [r3, 0xA]
- cmp r0, r2
- bne _0805AC54
- adds r0, r1, 0
- b _0805AC60
- .align 2, 0
-_0805AC50: .4byte gMapObjects
-_0805AC54:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _0805AC2A
- movs r0, 0x10
-_0805AC60:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectIdByLocalIdAndMapInternal
-
- thumb_func_start GetFieldObjectIdByLocalId
-GetFieldObjectIdByLocalId: @ 805AC68
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r4, _0805AC8C @ =gMapObjects
-_0805AC72:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r4
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _0805AC90
- ldrb r0, [r1, 0x8]
- cmp r0, r3
- bne _0805AC90
- adds r0, r2, 0
- b _0805AC9C
- .align 2, 0
-_0805AC8C: .4byte gMapObjects
-_0805AC90:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _0805AC72
- movs r0, 0x10
-_0805AC9C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectIdByLocalId
-
- thumb_func_start InitFieldObjectStateFromTemplate
-InitFieldObjectStateFromTemplate: @ 805ACA4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- ldrb r0, [r5]
- adds r1, r6, 0
- adds r2, r7, 0
- mov r3, sp
- bl GetAvailableFieldObjectSlot
- lsls r0, 24
- cmp r0, 0
- beq _0805ACCE
- movs r0, 0x10
- b _0805ADC2
-_0805ACCE:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805ADD0 @ =gMapObjects
- adds r4, r0, r1
- adds r0, r4, 0
- bl npc_clear_ids_and_state
- ldrh r3, [r5, 0x4]
- adds r3, 0x7
- lsls r3, 16
- lsrs r3, 16
- ldrh r2, [r5, 0x6]
- adds r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrb r0, [r5, 0x1]
- strb r0, [r4, 0x5]
- ldrb r0, [r5, 0x9]
- strb r0, [r4, 0x6]
- ldrb r0, [r5]
- strb r0, [r4, 0x8]
- strb r6, [r4, 0x9]
- strb r7, [r4, 0xA]
- strh r3, [r4, 0xC]
- strh r2, [r4, 0xE]
- strh r3, [r4, 0x10]
- strh r2, [r4, 0x12]
- strh r3, [r4, 0x14]
- strh r2, [r4, 0x16]
- ldrb r0, [r5, 0x8]
- movs r7, 0xF
- adds r1, r7, 0
- ands r1, r0
- ldrb r2, [r4, 0xB]
- movs r0, 0x10
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0xB]
- ldrb r1, [r5, 0x8]
- lsls r1, 4
- ands r0, r7
- orrs r0, r1
- strb r0, [r4, 0xB]
- ldrb r1, [r5, 0xA]
- lsls r1, 28
- movs r0, 0xF
- mov r9, r0
- lsrs r1, 28
- ldrb r2, [r4, 0x19]
- mov r0, r8
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x19]
- ldrb r1, [r5, 0xA]
- lsrs r1, 4
- lsls r1, 4
- ands r0, r7
- orrs r0, r1
- strb r0, [r4, 0x19]
- ldrh r0, [r5, 0xC]
- strb r0, [r4, 0x7]
- ldrh r0, [r5, 0xE]
- strb r0, [r4, 0x1D]
- ldr r1, _0805ADD4 @ =gUnknown_0836DC09
- ldrb r0, [r5, 0x9]
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- strb r1, [r0]
- ldrb r1, [r0]
- adds r0, r4, 0
- bl FieldObjectSetDirection
- adds r0, r4, 0
- bl FieldObjectHandleDynamicGraphicsId
- ldr r1, _0805ADD8 @ =gUnknown_0836DBBC
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805ADBE
- ldrb r2, [r4, 0x19]
- adds r0, r7, 0
- ands r0, r2
- cmp r0, 0
- bne _0805ADA6
- lsls r0, r2, 28
- lsrs r0, 28
- adds r0, 0x1
- mov r1, r9
- ands r0, r1
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x19]
-_0805ADA6:
- ldrb r2, [r4, 0x19]
- movs r0, 0xF0
- ands r0, r2
- cmp r0, 0
- bne _0805ADBE
- lsrs r1, r2, 4
- adds r1, 0x1
- lsls r1, 4
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x19]
-_0805ADBE:
- mov r0, sp
- ldrb r0, [r0]
-_0805ADC2:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ADD0: .4byte gMapObjects
-_0805ADD4: .4byte gUnknown_0836DC09
-_0805ADD8: .4byte gUnknown_0836DBBC
- thumb_func_end InitFieldObjectStateFromTemplate
-
- thumb_func_start sub_805ADDC
-sub_805ADDC: @ 805ADDC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _0805ADF4 @ =gMapHeader
- ldr r0, [r0, 0x4]
- cmp r0, 0
- bne _0805AE10
- b _0805AE3E
- .align 2, 0
-_0805ADF4: .4byte gMapHeader
-_0805ADF8:
- ldr r1, _0805AE0C @ =0xfffff3e0
- adds r0, r7, r1
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- adds r0, r4, 0
- bl InitFieldObjectStateFromTemplate
- lsls r0, 24
- lsrs r0, 24
- b _0805AE40
- .align 2, 0
-_0805AE0C: .4byte 0xfffff3e0
-_0805AE10:
- ldrb r6, [r0]
- movs r5, 0
- cmp r5, r6
- bcs _0805AE3E
- ldr r7, _0805AE4C @ =gSaveBlock1 + 0xC20
-_0805AE1A:
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r7
- ldrb r0, [r4]
- cmp r0, r8
- bne _0805AE34
- ldrh r0, [r4, 0x14]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0805ADF8
-_0805AE34:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r6
- bcc _0805AE1A
-_0805AE3E:
- movs r0, 0x10
-_0805AE40:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805AE4C: .4byte gSaveBlock1 + 0xC20
- thumb_func_end sub_805ADDC
-
- thumb_func_start GetAvailableFieldObjectSlot
-GetAvailableFieldObjectSlot: @ 805AE50
- push {r4-r7,lr}
- mov r12, r3
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r2, 0
- ldr r1, _0805AEAC @ =gMapObjects
- ldrb r0, [r1]
- lsls r0, 31
- adds r7, r1, 0
- cmp r0, 0
- beq _0805AEA4
- adds r3, r1, 0
-_0805AE70:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r3
- ldrb r0, [r1, 0x8]
- cmp r0, r6
- bne _0805AE8A
- ldrb r0, [r1, 0x9]
- cmp r0, r5
- bne _0805AE8A
- ldrb r0, [r1, 0xA]
- cmp r0, r4
- beq _0805AEA8
-_0805AE8A:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bhi _0805AEA8
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _0805AE70
-_0805AEA4:
- cmp r2, 0xF
- bls _0805AEB0
-_0805AEA8:
- movs r0, 0x1
- b _0805AEE4
- .align 2, 0
-_0805AEAC: .4byte gMapObjects
-_0805AEB0:
- mov r0, r12
- strb r2, [r0]
- ldr r1, _0805AEEC @ =gMapObjects
-_0805AEB6:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r1
- ldrb r0, [r3]
- lsls r0, 31
- cmp r0, 0
- beq _0805AED8
- ldrb r0, [r3, 0x8]
- cmp r0, r6
- bne _0805AED8
- ldrb r0, [r3, 0x9]
- cmp r0, r5
- bne _0805AED8
- ldrb r0, [r3, 0xA]
- cmp r0, r4
- beq _0805AEA8
-_0805AED8:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _0805AEB6
- movs r0, 0
-_0805AEE4:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805AEEC: .4byte gMapObjects
- thumb_func_end GetAvailableFieldObjectSlot
-
- thumb_func_start RemoveFieldObject
-RemoveFieldObject: @ 805AEF0
- push {lr}
- ldrb r2, [r0]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- bl RemoveFieldObjectInternal
- pop {r0}
- bx r0
- thumb_func_end RemoveFieldObject
-
- thumb_func_start RemoveFieldObjectByLocalIdAndMap
-RemoveFieldObjectByLocalIdAndMap: @ 805AF04
- 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 _0805AF42
- mov r0, sp
- ldrb r0, [r0]
- bl GetFieldObjectFlagIdByFieldObjectId
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805AF48 @ =gMapObjects
- adds r0, r1
- bl RemoveFieldObject
-_0805AF42:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0805AF48: .4byte gMapObjects
- thumb_func_end RemoveFieldObjectByLocalIdAndMap
-
- thumb_func_start RemoveFieldObjectInternal
-RemoveFieldObjectInternal: @ 805AF4C
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrh r2, [r0, 0x6]
- ldr r1, _0805AF90 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- ldr r2, _0805AF94 @ =gSprites
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0
- adds r1, 0xC
- adds r0, r1
- mov r1, sp
- str r1, [r0]
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- bl DestroySprite
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805AF90: .4byte 0xffff0000
-_0805AF94: .4byte gSprites
- thumb_func_end RemoveFieldObjectInternal
-
- thumb_func_start npc_hide_all_but_player
-npc_hide_all_but_player: @ 805AF98
- push {r4,lr}
- movs r4, 0
-_0805AF9C:
- ldr r0, _0805AFC4 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- beq _0805AFB2
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r1, _0805AFC8 @ =gMapObjects
- adds r0, r1
- bl RemoveFieldObject
-_0805AFB2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _0805AF9C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805AFC4: .4byte gPlayerAvatar
-_0805AFC8: .4byte gMapObjects
- thumb_func_end npc_hide_all_but_player
-
- thumb_func_start sub_805AFCC
-sub_805AFCC: @ 805AFCC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- ldr r3, [sp, 0x20]
- ldr r4, [sp, 0x24]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r4, 16
- lsrs r4, 16
- mov r10, r4
- bl InitFieldObjectStateFromTemplate
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x10
- bne _0805B006
- movs r0, 0x10
- b _0805B154
-_0805B006:
- mov r0, r8
- lsls r4, r0, 3
- adds r0, r4, r0
- lsls r0, 2
- ldr r1, _0805B030 @ =gMapObjects
- adds r5, r0, r1
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r6, r0, 0
- ldrb r1, [r6, 0xC]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _0805B034
- ldrh r0, [r6, 0x2]
- lsls r1, 28
- lsrs r1, 28
- bl npc_load_two_palettes__no_record
- b _0805B042
- .align 2, 0
-_0805B030: .4byte gMapObjects
-_0805B034:
- cmp r0, 0xA
- bne _0805B042
- ldrh r0, [r6, 0x2]
- lsls r1, 28
- lsrs r1, 28
- bl npc_load_two_palettes__and_record
-_0805B042:
- ldrb r0, [r5, 0x6]
- cmp r0, 0x4C
- bne _0805B050
- ldrb r0, [r5, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r5, 0x1]
-_0805B050:
- ldr r1, _0805B084 @ =0x0000ffff
- adds r0, r1, 0
- strh r0, [r7, 0x2]
- adds r0, r7, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x40
- bne _0805B08C
- ldr r0, _0805B088 @ =gMapObjects
- mov r2, r8
- adds r1, r4, r2
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- movs r0, 0x10
- b _0805B154
- .align 2, 0
-_0805B084: .4byte 0x0000ffff
-_0805B088: .4byte gMapObjects
-_0805B08C:
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _0805B164 @ =gSprites
- adds r4, r0, r1
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- ldrh r2, [r5, 0x10]
- adds r0, r2
- lsls r0, 16
- asrs r0, 16
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldrh r2, [r5, 0x12]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- bl sub_8060388
- ldrh r0, [r6, 0x8]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r1, r4, 0
- adds r1, 0x28
- strb r0, [r1]
- ldrh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r2, r4, 0
- adds r2, 0x29
- strb r0, [r2]
- ldrh r0, [r4, 0x20]
- adds r0, 0x8
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x22]
- adds r1, 0x10
- movs r0, 0
- ldrsb r0, [r2, r0]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrb r1, [r6, 0xC]
- lsls r1, 28
- lsrs r1, 24
- ldrb r2, [r4, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- mov r0, r8
- strh r0, [r4, 0x2E]
- strb r7, [r5, 0x4]
- ldrb r1, [r6, 0xC]
- lsls r1, 25
- lsrs r1, 31
- lsls r1, 4
- ldrb r2, [r5, 0x1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x1]
- lsls r0, 27
- cmp r0, 0
- blt _0805B13E
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_0805B13E:
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- adds r1, r4, 0
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80634D0
- mov r0, r8
-_0805B154:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B164: .4byte gSprites
- thumb_func_end sub_805AFCC
-
- thumb_func_start SpawnFieldObject
-SpawnFieldObject: @ 805B168
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x2C
- mov r9, r0
- adds r6, r1, 0
- mov r8, r2
- adds r4, r3, 0
- ldr r5, [sp, 0x48]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0
- str r0, [sp, 0x20]
- mov r1, r9
- ldrb r0, [r1, 0x1]
- bl GetFieldObjectGraphicsInfo
- adds r7, r0, 0
- add r2, sp, 0x20
- mov r0, r9
- add r1, sp, 0x8
- bl MakeObjectTemplateFromFieldObjectTemplate
- ldrh r3, [r7, 0x6]
- ldr r2, _0805B1E0 @ =0xffff0000
- add r1, sp, 0x24
- ldr r0, [r1, 0x4]
- ands r0, r2
- orrs r0, r3
- str r0, [r1, 0x4]
- str r1, [sp, 0x14]
- lsls r4, 16
- asrs r4, 16
- str r4, [sp]
- lsls r5, 16
- asrs r5, 16
- str r5, [sp, 0x4]
- mov r0, r9
- add r1, sp, 0x8
- adds r2, r6, 0
- mov r3, r8
- bl sub_805AFCC
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r2, 0
- cmp r2, 0x10
- bne _0805B1E4
- movs r0, 0x10
- b _0805B21A
- .align 2, 0
-_0805B1E0: .4byte 0xffff0000
-_0805B1E4:
- ldr r4, _0805B228 @ =gSprites
- ldr r1, _0805B22C @ =gMapObjects
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r1
- ldrb r1, [r3, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r1
- ldr r1, [r7, 0x1C]
- str r1, [r0]
- ldr r2, [sp, 0x20]
- cmp r2, 0
- beq _0805B218
- ldrb r1, [r3, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r1, r2, 0
- bl SetSubspriteTables
-_0805B218:
- adds r0, r5, 0
-_0805B21A:
- add sp, 0x2C
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B228: .4byte gSprites
-_0805B22C: .4byte gMapObjects
- thumb_func_end SpawnFieldObject
-
- thumb_func_start SpawnSpecialFieldObject
-SpawnSpecialFieldObject: @ 805B230
- push {r4-r6,lr}
- sub sp, 0x8
- adds r5, r0, 0
- mov r4, sp
- adds r4, 0x6
- add r0, sp, 0x4
- adds r1, r4, 0
- bl GetFieldObjectMovingCameraOffset
- ldr r0, _0805B268 @ =gSaveBlock1
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- add r0, sp, 0x4
- movs r6, 0
- ldrsh r3, [r0, r6]
- movs r6, 0
- ldrsh r0, [r4, r6]
- str r0, [sp]
- adds r0, r5, 0
- bl SpawnFieldObject
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B268: .4byte gSaveBlock1
- thumb_func_end SpawnSpecialFieldObject
-
- thumb_func_start SpawnSpecialFieldObjectParametrized
-SpawnSpecialFieldObjectParametrized: @ 805B26C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- mov r8, r5
- lsls r0, 24
- lsrs r0, 24
- lsls r3, 16
- ldr r5, _0805B2D0 @ =0xfff90000
- adds r3, r5
- lsrs r3, 16
- lsls r4, 16
- adds r4, r5
- lsrs r4, 16
- mov r5, sp
- movs r6, 0
- strb r2, [r5]
- mov r2, sp
- strb r0, [r2, 0x1]
- mov r0, sp
- strb r6, [r0, 0x2]
- movs r5, 0
- strh r3, [r0, 0x4]
- strh r4, [r0, 0x6]
- mov r2, r8
- strb r2, [r0, 0x8]
- strb r1, [r0, 0x9]
- mov r2, sp
- ldrb r1, [r2, 0xA]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0xA]
- mov r0, sp
- strb r5, [r0, 0xA]
- strh r6, [r0, 0xC]
- strh r6, [r0, 0xE]
- bl SpawnSpecialFieldObject
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B2D0: .4byte 0xfff90000
- thumb_func_end SpawnSpecialFieldObjectParametrized
-
- thumb_func_start show_sprite
-show_sprite: @ 805B2D4
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- adds r1, r7, 0
- adds r2, r6, 0
- bl GetFieldObjectTemplateByLocalIdAndMap
- adds r5, r0, 0
- cmp r5, 0
- beq _0805B31A
- mov r4, sp
- adds r4, 0x6
- add r0, sp, 0x4
- adds r1, r4, 0
- bl GetFieldObjectMovingCameraOffset
- add r0, sp, 0x4
- movs r1, 0
- ldrsh r3, [r0, r1]
- movs r1, 0
- ldrsh r0, [r4, r1]
- str r0, [sp]
- adds r0, r5, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl SpawnFieldObject
- lsls r0, 24
- lsrs r0, 24
- b _0805B31C
-_0805B31A:
- movs r0, 0x10
-_0805B31C:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end show_sprite
-
- thumb_func_start MakeObjectTemplateFromFieldObjectGraphicsInfo
-MakeObjectTemplateFromFieldObjectGraphicsInfo: @ 805B324
- push {r4-r6,lr}
- adds r5, r1, 0
- adds r4, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- bl GetFieldObjectGraphicsInfo
- ldrh r1, [r0]
- strh r1, [r4]
- ldrh r1, [r0, 0x2]
- strh r1, [r4, 0x2]
- ldr r1, [r0, 0x10]
- str r1, [r4, 0x4]
- ldr r1, [r0, 0x18]
- str r1, [r4, 0x8]
- ldr r1, [r0, 0x1C]
- str r1, [r4, 0xC]
- ldr r1, [r0, 0x20]
- str r1, [r4, 0x10]
- str r5, [r4, 0x14]
- ldr r0, [r0, 0x14]
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end MakeObjectTemplateFromFieldObjectGraphicsInfo
-
- thumb_func_start MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
-MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex: @ 805B358
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- ldr r4, _0805B374 @ =gUnknown_0836DA88
- lsrs r1, 14
- adds r1, r4
- ldr r1, [r1]
- bl MakeObjectTemplateFromFieldObjectGraphicsInfo
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B374: .4byte gUnknown_0836DA88
- thumb_func_end MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
-
- thumb_func_start MakeObjectTemplateFromFieldObjectTemplate
-MakeObjectTemplateFromFieldObjectTemplate: @ 805B378
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r3, r2, 0
- ldrb r0, [r4, 0x1]
- ldrb r1, [r4, 0x9]
- adds r2, r5, 0
- bl MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end MakeObjectTemplateFromFieldObjectTemplate
-
- thumb_func_start AddPseudoFieldObject
-AddPseudoFieldObject: @ 805B390
- push {r4-r6,lr}
- sub sp, 0x1C
- ldr r4, [sp, 0x2C]
- lsls r0, 16
- lsrs r0, 16
- lsls r2, 16
- lsrs r6, r2, 16
- lsls r3, 16
- lsrs r5, r3, 16
- lsls r4, 24
- lsrs r4, 24
- add r3, sp, 0x18
- mov r2, sp
- bl MakeObjectTemplateFromFieldObjectGraphicsInfo
- mov r0, sp
- ldrh r1, [r0, 0x2]
- ldr r0, _0805B408 @ =0x0000ffff
- cmp r1, r0
- beq _0805B3C0
- mov r0, sp
- ldrh r0, [r0, 0x2]
- bl sub_805BDF8
-_0805B3C0:
- lsls r1, r6, 16
- asrs r1, 16
- lsls r2, r5, 16
- asrs r2, 16
- mov r0, sp
- adds r3, r4, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _0805B3FC
- ldr r1, [sp, 0x18]
- cmp r1, 0
- beq _0805B3FC
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- ldr r0, _0805B40C @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- bl SetSubspriteTables
- adds r4, 0x42
- ldrb r1, [r4]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r4]
-_0805B3FC:
- adds r0, r5, 0
- add sp, 0x1C
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B408: .4byte 0x0000ffff
-_0805B40C: .4byte gSprites
- thumb_func_end AddPseudoFieldObject
-
- thumb_func_start sub_805B410
-sub_805B410: @ 805B410
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- adds r5, r0, 0
- ldr r0, [sp, 0x44]
- ldr r4, [sp, 0x48]
- lsls r5, 24
- lsrs r5, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- add r1, sp, 0x18
- mov r8, r1
- strh r2, [r1]
- mov r6, sp
- adds r6, 0x1A
- strh r3, [r6]
- lsls r0, 24
- lsrs r7, r0, 24
- mov r9, r7
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x20]
- adds r0, r5, 0
- bl GetFieldObjectGraphicsInfo
- adds r4, r0, 0
- ldr r1, _0805B550 @ =sub_8064970
- add r3, sp, 0x1C
- adds r0, r5, 0
- mov r2, sp
- bl MakeObjectTemplateFromFieldObjectGraphicsInfo
- mov r1, sp
- ldr r2, _0805B554 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1, 0x2]
- mov r1, r8
- movs r2, 0
- ldrsh r0, [r1, r2]
- adds r0, 0x7
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- adds r0, 0x7
- strh r0, [r6]
- mov r0, r8
- adds r1, r6, 0
- movs r2, 0x8
- movs r3, 0x10
- bl sub_8060470
- mov r2, r8
- movs r0, 0
- ldrsh r1, [r2, r0]
- movs r0, 0
- ldrsh r2, [r6, r0]
- mov r0, sp
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0805B53C
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- ldr r1, _0805B558 @ =gSprites
- adds r5, r0, r1
- ldrh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r1, r5, 0
- adds r1, 0x28
- strb r0, [r1]
- ldrh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r1, 0x1
- strb r0, [r1]
- movs r0, 0
- ldrsb r0, [r1, r0]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrb r1, [r4, 0xC]
- lsls r1, 28
- lsrs r1, 24
- ldrb r3, [r5, 0x5]
- movs r2, 0xF
- adds r0, r2, 0
- ands r0, r3
- orrs r0, r1
- strb r0, [r5, 0x5]
- adds r3, r5, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- mov r0, r10
- strh r0, [r5, 0x2E]
- strh r7, [r5, 0x30]
- ldrb r1, [r4, 0xC]
- ands r2, r1
- cmp r2, 0xA
- bne _0805B4FC
- ldrh r0, [r4, 0x2]
- lsls r1, 28
- lsrs r1, 28
- bl npc_load_two_palettes__and_record
-_0805B4FC:
- ldr r1, [sp, 0x1C]
- cmp r1, 0
- beq _0805B518
- adds r0, r5, 0
- bl SetSubspriteTables
- adds r2, r5, 0
- adds r2, 0x42
- ldrb r0, [r2]
- movs r1, 0x3F
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r2]
-_0805B518:
- adds r0, r5, 0
- mov r1, r9
- bl InitObjectPriorityByZCoord
- mov r0, r9
- adds r1, r5, 0
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
- ldr r0, [sp, 0x20]
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
-_0805B53C:
- adds r0, r6, 0
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B550: .4byte sub_8064970
-_0805B554: .4byte 0x0000ffff
-_0805B558: .4byte gSprites
- thumb_func_end sub_805B410
-
- thumb_func_start sub_805B55C
-sub_805B55C: @ 805B55C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x4]
- ldr r0, _0805B628 @ =gMapHeader
- ldr r5, [r0, 0x4]
- cmp r5, 0
- beq _0805B618
- ldr r4, _0805B62C @ =gSaveBlock1
- ldrh r0, [r4]
- subs r1, r0, 0x2
- lsls r1, 16
- lsrs r1, 16
- adds r0, 0x11
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- ldrh r2, [r4, 0x2]
- adds r0, r2, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- ldrb r6, [r5]
- movs r5, 0
- cmp r5, r6
- bcs _0805B618
- lsls r0, r2, 16
- asrs r0, 16
- mov r10, r0
- adds r7, r4, 0
- lsls r0, r1, 16
- asrs r0, 16
- mov r9, r0
- lsls r3, 16
- mov r8, r3
-_0805B5B2:
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 3
- ldr r1, _0805B630 @ =gSaveBlock1 + 0xC20
- adds r4, r0, r1
- ldrh r0, [r4, 0x4]
- adds r0, 0x7
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r4, 0x6]
- adds r0, 0x7
- lsls r0, 16
- asrs r1, r0, 16
- cmp r10, r1
- bgt _0805B60E
- ldr r3, [sp, 0xC]
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, r1
- blt _0805B60E
- lsls r0, r2, 16
- asrs r1, r0, 16
- cmp r9, r1
- bgt _0805B60E
- ldr r2, [sp, 0x8]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, r1
- blt _0805B60E
- ldrh r0, [r4, 0x14]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0805B60E
- ldrb r1, [r7, 0x5]
- ldrb r2, [r7, 0x4]
- ldr r3, [sp, 0x4]
- lsls r0, r3, 16
- asrs r0, 16
- str r0, [sp]
- adds r0, r4, 0
- mov r4, r8
- asrs r3, r4, 16
- bl SpawnFieldObject
-_0805B60E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r6
- bcc _0805B5B2
-_0805B618:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B628: .4byte gMapHeader
-_0805B62C: .4byte gSaveBlock1
-_0805B630: .4byte gSaveBlock1 + 0xC20
- thumb_func_end sub_805B55C
-
- thumb_func_start RemoveFieldObjectsOutsideView
-RemoveFieldObjectsOutsideView: @ 805B634
- push {r4-r6,lr}
- movs r3, 0
- ldr r6, _0805B688 @ =gLinkPlayerMapObjects
-_0805B63A:
- movs r2, 0
- movs r4, 0
- adds r5, r3, 0x1
-_0805B640:
- lsls r0, r2, 2
- adds r1, r0, r6
- ldrb r0, [r1]
- cmp r0, 0
- beq _0805B652
- ldrb r1, [r1, 0x2]
- cmp r3, r1
- bne _0805B652
- movs r4, 0x1
-_0805B652:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _0805B640
- cmp r4, 0
- bne _0805B67A
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- ldr r1, _0805B68C @ =gMapObjects
- adds r2, r0, r1
- ldr r0, [r2]
- ldr r1, _0805B690 @ =0x00010001
- ands r0, r1
- cmp r0, 0x1
- bne _0805B67A
- adds r0, r2, 0
- bl RemoveFieldObjectIfOutsideView
-_0805B67A:
- lsls r0, r5, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _0805B63A
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B688: .4byte gLinkPlayerMapObjects
-_0805B68C: .4byte gMapObjects
-_0805B690: .4byte 0x00010001
- thumb_func_end RemoveFieldObjectsOutsideView
-
- thumb_func_start RemoveFieldObjectIfOutsideView
-RemoveFieldObjectIfOutsideView: @ 805B694
- push {r4-r7,lr}
- adds r3, r0, 0
- ldr r2, _0805B70C @ =gSaveBlock1
- ldrh r0, [r2]
- subs r1, r0, 0x2
- lsls r1, 16
- adds r0, 0x11
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r4, [r2, 0x2]
- adds r0, r4, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- movs r0, 0x10
- ldrsh r2, [r3, r0]
- lsrs r7, r1, 16
- asrs r1, 16
- cmp r2, r1
- blt _0805B6D8
- lsls r0, r5, 16
- asrs r0, 16
- cmp r2, r0
- bgt _0805B6D8
- movs r0, 0x12
- ldrsh r1, [r3, r0]
- lsls r0, r4, 16
- asrs r0, 16
- cmp r1, r0
- blt _0805B6D8
- lsls r0, r6, 16
- asrs r0, 16
- cmp r1, r0
- ble _0805B706
-_0805B6D8:
- movs r0, 0xC
- ldrsh r1, [r3, r0]
- lsls r0, r7, 16
- asrs r0, 16
- cmp r1, r0
- blt _0805B700
- lsls r0, r5, 16
- asrs r0, 16
- cmp r1, r0
- bgt _0805B700
- movs r0, 0xE
- ldrsh r1, [r3, r0]
- lsls r0, r4, 16
- asrs r0, 16
- cmp r1, r0
- blt _0805B700
- lsls r0, r6, 16
- asrs r0, 16
- cmp r1, r0
- ble _0805B706
-_0805B700:
- adds r0, r3, 0
- bl RemoveFieldObject
-_0805B706:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B70C: .4byte gSaveBlock1
- thumb_func_end RemoveFieldObjectIfOutsideView
-
- thumb_func_start sub_805B710
-sub_805B710: @ 805B710
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- bl ClearPlayerAvatarInfo
- movs r6, 0
- ldr r7, _0805B758 @ =gMapObjects
- lsls r4, 16
- lsls r5, 16
-_0805B72A:
- lsls r0, r6, 3
- adds r0, r6
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0805B744
- adds r0, r6, 0
- asrs r1, r4, 16
- asrs r2, r5, 16
- bl sub_805B75C
-_0805B744:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bls _0805B72A
- bl sub_805AAB0
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B758: .4byte gMapObjects
- thumb_func_end sub_805B710
-
- thumb_func_start sub_805B75C
-sub_805B75C: @ 805B75C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- mov r10, r2
- movs r7, 0
- ldr r2, _0805B900 @ =gLinkPlayerMapObjects
-_0805B77E:
- lsls r0, r7, 2
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _0805B790
- ldrb r1, [r1, 0x2]
- cmp r8, r1
- bne _0805B790
- b _0805B8EE
-_0805B790:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _0805B77E
- mov r1, r8
- lsls r0, r1, 3
- add r0, r8
- lsls r0, 2
- ldr r1, _0805B904 @ =gMapObjects
- adds r6, r0, r1
- movs r0, 0
- str r0, [sp, 0x20]
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r5, r0, 0
- ldrh r2, [r5, 0x6]
- ldr r1, _0805B908 @ =0xffff0000
- add r4, sp, 0x18
- ldr r0, [r4, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [r4, 0x4]
- ldrb r0, [r6, 0x5]
- ldrb r1, [r6, 0x6]
- add r3, sp, 0x20
- mov r2, sp
- bl MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex
- str r4, [sp, 0xC]
- mov r0, sp
- ldr r2, _0805B90C @ =0x0000ffff
- adds r4, r2, 0
- strh r4, [r0, 0x2]
- ldrb r1, [r5, 0xC]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _0805B7EA
- ldrh r0, [r5, 0x2]
- lsls r1, 28
- lsrs r1, 28
- bl npc_load_two_palettes__no_record
-_0805B7EA:
- ldrb r0, [r5, 0xC]
- lsls r1, r0, 28
- lsrs r0, r1, 28
- cmp r0, 0x9
- bls _0805B7FC
- ldrh r0, [r5, 0x2]
- lsrs r1, 28
- bl npc_load_two_palettes__and_record
-_0805B7FC:
- mov r0, sp
- strh r4, [r0, 0x2]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x40
- beq _0805B8EE
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _0805B910 @ =gSprites
- adds r4, r0, r1
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- ldrh r2, [r6, 0x10]
- adds r0, r2
- lsls r0, 16
- asrs r0, 16
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldrh r2, [r6, 0x12]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- bl sub_8060388
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r1, r4, 0
- adds r1, 0x28
- strb r0, [r1]
- ldrh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r2, r4, 0
- adds r2, 0x29
- strb r0, [r2]
- ldrh r0, [r4, 0x20]
- adds r0, 0x8
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x22]
- adds r1, 0x10
- movs r0, 0
- ldrsb r0, [r2, r0]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, [r5, 0x1C]
- str r0, [r4, 0xC]
- ldrb r0, [r6, 0x6]
- cmp r0, 0xB
- bne _0805B88A
- mov r0, r8
- adds r1, r7, 0
- bl SetPlayerAvatarFieldObjectIdAndObjectId
- bl sub_8126B54
- strb r0, [r6, 0x1B]
-_0805B88A:
- ldr r1, [sp, 0x20]
- cmp r1, 0
- beq _0805B896
- adds r0, r4, 0
- bl SetSubspriteTables
-_0805B896:
- ldrb r1, [r5, 0xC]
- lsls r1, 28
- lsrs r1, 24
- ldrb r2, [r4, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- mov r0, r8
- strh r0, [r4, 0x2E]
- strb r7, [r6, 0x4]
- ldrb r0, [r6, 0x1]
- lsls r0, 27
- cmp r0, 0
- blt _0805B8DC
- ldrb r0, [r6, 0x6]
- cmp r0, 0xB
- beq _0805B8DC
- ldrb r0, [r6, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_0805B8DC:
- adds r0, r6, 0
- bl sub_805B914
- ldrb r0, [r6, 0xB]
- lsrs r0, 4
- adds r1, r4, 0
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
-_0805B8EE:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B900: .4byte gLinkPlayerMapObjects
-_0805B904: .4byte gMapObjects
-_0805B908: .4byte 0xffff0000
-_0805B90C: .4byte 0x0000ffff
-_0805B910: .4byte gSprites
- thumb_func_end sub_805B75C
-
- thumb_func_start sub_805B914
-sub_805B914: @ 805B914
- push {lr}
- ldrb r2, [r0]
- movs r3, 0x3
- negs r3, r3
- adds r1, r3, 0
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldrb r2, [r0, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- ands r1, r3
- movs r2, 0x5
- negs r2, r2
- ands r1, r2
- subs r2, 0x4
- ands r1, r2
- subs r2, 0x8
- ands r1, r2
- subs r2, 0x10
- ands r1, r2
- strb r1, [r0, 0x2]
- bl FieldObjectClearAnim
- pop {r0}
- bx r0
- thumb_func_end sub_805B914
-
- thumb_func_start SetPlayerAvatarFieldObjectIdAndObjectId
-SetPlayerAvatarFieldObjectIdAndObjectId: @ 805B94C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0805B978 @ =gPlayerAvatar
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x4]
- ldr r1, _0805B97C @ =gMapObjects
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r1
- ldrb r0, [r4, 0x5]
- bl GetPlayerAvatarGenderByGraphicsId
- strb r0, [r5, 0x7]
- ldrb r0, [r4, 0x5]
- movs r1, 0x20
- bl SetPlayerAvatarExtraStateTransition
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B978: .4byte gPlayerAvatar
-_0805B97C: .4byte gMapObjects
- thumb_func_end SetPlayerAvatarFieldObjectIdAndObjectId
-
- thumb_func_start sub_805B980
-sub_805B980: @ 805B980
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r0, r8
- bl GetFieldObjectGraphicsInfo
- adds r5, r0, 0
- ldrb r1, [r6, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805BA7C @ =gSprites
- adds r4, r0, r1
- ldrb r1, [r5, 0xC]
- movs r7, 0xF
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0805B9B8
- ldrh r0, [r5, 0x2]
- lsls r1, 28
- lsrs r1, 28
- bl pal_patch_for_npc
-_0805B9B8:
- ldrb r1, [r5, 0xC]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0xA
- bne _0805B9CC
- ldrh r0, [r5, 0x2]
- lsls r1, 28
- lsrs r1, 28
- bl npc_load_two_palettes__and_record
-_0805B9CC:
- ldr r0, [r5, 0x10]
- ldrb r2, [r0, 0x1]
- lsrs r2, 6
- lsls r2, 6
- ldrb r3, [r4, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r3
- orrs r0, r2
- strb r0, [r4, 0x1]
- ldr r0, [r5, 0x10]
- ldrb r0, [r0, 0x3]
- lsrs r0, 6
- lsls r0, 6
- ldrb r2, [r4, 0x3]
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x3]
- ldr r0, [r5, 0x1C]
- str r0, [r4, 0xC]
- ldr r0, [r5, 0x18]
- str r0, [r4, 0x8]
- ldr r0, [r5, 0x14]
- str r0, [r4, 0x18]
- ldrb r1, [r5, 0xC]
- lsls r1, 28
- lsrs r1, 24
- ldrb r2, [r4, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrb r1, [r5, 0xC]
- lsls r1, 25
- lsrs r1, 31
- lsls r1, 4
- ldrb r2, [r6, 0x1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x1]
- mov r0, r8
- strb r0, [r6, 0x5]
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- movs r2, 0x12
- ldrsh r1, [r6, r2]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- bl sub_80603CC
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r1, r4, 0
- adds r1, 0x28
- strb r0, [r1]
- ldrh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r2, r4, 0
- adds r2, 0x29
- strb r0, [r2]
- ldrh r0, [r4, 0x20]
- adds r0, 0x8
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x22]
- adds r1, 0x10
- movs r0, 0
- ldrsb r0, [r2, r0]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrb r0, [r6, 0x1]
- lsrs r0, 7
- cmp r0, 0
- beq _0805BA72
- bl CameraObjectReset1
-_0805BA72:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BA7C: .4byte gSprites
- thumb_func_end sub_805B980
-
- thumb_func_start unref_sub_805BA80
-unref_sub_805BA80: @ 805BA80
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r4, r3, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0805BAB4
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805BABC @ =gMapObjects
- adds r0, r1
- adds r1, r4, 0
- bl sub_805B980
-_0805BAB4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BABC: .4byte gMapObjects
- thumb_func_end unref_sub_805BA80
-
- thumb_func_start FieldObjectTurn
-FieldObjectTurn: @ 805BAC0
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- bl FieldObjectSetDirection
- ldrb r0, [r6, 0x1]
- lsls r0, 27
- cmp r0, 0
- blt _0805BB06
- ldrb r0, [r6, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r5, _0805BB0C @ =gSprites
- adds r4, r5
- ldrb r0, [r6, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrb r1, [r6, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl SeekSpriteAnim
-_0805BB06:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BB0C: .4byte gSprites
- thumb_func_end FieldObjectTurn
-
- thumb_func_start FieldObjectTurnByLocalIdAndMap
-FieldObjectTurnByLocalIdAndMap: @ 805BB10
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r4, r3, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0805BB44
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805BB4C @ =gMapObjects
- adds r0, r1
- adds r1, r4, 0
- bl FieldObjectTurn
-_0805BB44:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BB4C: .4byte gMapObjects
- thumb_func_end FieldObjectTurnByLocalIdAndMap
-
- thumb_func_start unref_sub_805BB50
-unref_sub_805BB50: @ 805BB50
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0x5]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805BB6C @ =gMapObjects
- adds r0, r2
- bl FieldObjectTurn
- pop {r0}
- bx r0
- .align 2, 0
-_0805BB6C: .4byte gMapObjects
- thumb_func_end unref_sub_805BB50
-
- thumb_func_start get_berry_tree_graphics
-get_berry_tree_graphics: @ 805BB70
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- ldrb r0, [r5, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r5, 0x1]
- adds r4, r7, 0
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrb r0, [r5, 0x1D]
- bl GetStageByBerryTreeId
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0805BBFC
- ldrb r1, [r5, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x1]
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrb r0, [r5, 0x1D]
- bl GetBerryTypeByBerryTreeId
- subs r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r4, 0x2B
- bls _0805BBC4
- movs r4, 0
-_0805BBC4:
- ldr r0, _0805BC04 @ =gBerryTreeGraphicsIdTablePointers
- lsls r4, 2
- adds r0, r4, r0
- ldr r0, [r0]
- adds r0, r6
- ldrb r1, [r0]
- adds r0, r5, 0
- bl sub_805B980
- ldr r0, _0805BC08 @ =gBerryTreePicTablePointers
- adds r0, r4, r0
- ldr r0, [r0]
- str r0, [r7, 0xC]
- ldr r0, _0805BC0C @ =gBerryTreePaletteSlotTablePointers
- adds r4, r0
- ldr r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r7, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
- adds r0, r7, 0
- adds r1, r6, 0
- bl StartSpriteAnim
-_0805BBFC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BC04: .4byte gBerryTreeGraphicsIdTablePointers
-_0805BC08: .4byte gBerryTreePicTablePointers
-_0805BC0C: .4byte gBerryTreePaletteSlotTablePointers
- thumb_func_end get_berry_tree_graphics
-
- thumb_func_start GetFieldObjectGraphicsInfo
-GetFieldObjectGraphicsInfo: @ 805BC10
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xEF
- bls _0805BC28
- adds r0, r1, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r0, 24
- bl VarGetFieldObjectGraphicsId
- adds r1, r0, 0
-_0805BC28:
- cmp r1, 0xD9
- bls _0805BC2E
- movs r1, 0x5
-_0805BC2E:
- ldr r0, _0805BC3C @ =gMapObjectGraphicsInfoPointers
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- pop {r1}
- bx r1
- .align 2, 0
-_0805BC3C: .4byte gMapObjectGraphicsInfoPointers
- thumb_func_end GetFieldObjectGraphicsInfo
-
- thumb_func_start FieldObjectHandleDynamicGraphicsId
-FieldObjectHandleDynamicGraphicsId: @ 805BC40
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x5]
- cmp r0, 0xEF
- bls _0805BC56
- adds r0, 0x10
- lsls r0, 24
- lsrs r0, 24
- bl VarGetFieldObjectGraphicsId
- strb r0, [r4, 0x5]
-_0805BC56:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectHandleDynamicGraphicsId
-
- thumb_func_start npc_by_local_id_and_map_set_field_1_bit_x20
-npc_by_local_id_and_map_set_field_1_bit_x20: @ 805BC5C
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r4, r3, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0805BC9E
- ldr r2, _0805BCA8 @ =gMapObjects
- mov r0, sp
- ldrb r0, [r0]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x1
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 5
- ldrb r3, [r1, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x1]
-_0805BC9E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BCA8: .4byte gMapObjects
- thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20
-
- thumb_func_start FieldObjectGetLocalIdAndMap
-FieldObjectGetLocalIdAndMap: @ 805BCAC
- push {r4,lr}
- ldrb r4, [r0, 0x8]
- strb r4, [r1]
- ldrb r1, [r0, 0x9]
- strb r1, [r2]
- ldrb r0, [r0, 0xA]
- strb r0, [r3]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectGetLocalIdAndMap
-
- thumb_func_start sub_805BCC0
-sub_805BCC0: @ 805BCC0
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetFieldObjectIdByXY
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x10
- beq _0805BCE8
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805BCEC @ =gMapObjects
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0805BCE8:
- pop {r0}
- bx r0
- .align 2, 0
-_0805BCEC: .4byte gMapObjects
- thumb_func_end sub_805BCC0
-
- thumb_func_start sub_805BCF0
-sub_805BCF0: @ 805BCF0
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r4, r3, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0805BD36
- mov r0, sp
- ldrb r0, [r0]
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- ldr r0, _0805BD40 @ =gMapObjects
- adds r2, r0
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805BD44 @ =gSprites
- adds r0, r1
- ldrb r1, [r2, 0x3]
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r2, 0x3]
- adds r0, 0x43
- strb r4, [r0]
-_0805BD36:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BD40: .4byte gMapObjects
-_0805BD44: .4byte gSprites
- thumb_func_end sub_805BCF0
-
- thumb_func_start sub_805BD48
-sub_805BD48: @ 805BD48
- 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 _0805BD84
- mov r0, sp
- ldrb r0, [r0]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _0805BD8C @ =gMapObjects
- adds r1, r0
- ldrb r2, [r1, 0x3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x3]
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
-_0805BD84:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0805BD8C: .4byte gMapObjects
- thumb_func_end sub_805BD48
-
- thumb_func_start sub_805BD90
-sub_805BD90: @ 805BD90
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r4, [sp, 0x10]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 16
- lsrs r5, r3, 16
- lsls r4, 16
- lsrs r4, 16
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0805BDD4
- ldr r2, _0805BDDC @ =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
- ldr r1, _0805BDE0 @ =gSprites
- adds r0, r1
- strh r5, [r0, 0x24]
- strh r4, [r0, 0x26]
-_0805BDD4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BDDC: .4byte gMapObjects
-_0805BDE0: .4byte gSprites
- thumb_func_end sub_805BD90
-
- thumb_func_start gpu_pal_allocator_reset__manage_upper_four
-gpu_pal_allocator_reset__manage_upper_four: @ 805BDE4
- push {lr}
- bl FreeAllSpritePalettes
- ldr r1, _0805BDF4 @ =gReservedSpritePaletteCount
- movs r0, 0xC
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0805BDF4: .4byte gReservedSpritePaletteCount
- thumb_func_end gpu_pal_allocator_reset__manage_upper_four
-
- thumb_func_start sub_805BDF8
-sub_805BDF8: @ 805BDF8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl FindFieldObjectPaletteIndexByTag
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0805BE1C @ =0x000011ff
- cmp r1, r0
- beq _0805BE16
- lsls r0, r1, 3
- ldr r1, _0805BE20 @ =gUnknown_0837377C
- adds r0, r1
- bl sub_805BE58
-_0805BE16:
- pop {r0}
- bx r0
- .align 2, 0
-_0805BE1C: .4byte 0x000011ff
-_0805BE20: .4byte gUnknown_0837377C
- thumb_func_end sub_805BDF8
-
- thumb_func_start unref_sub_805BE24
-unref_sub_805BE24: @ 805BE24
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- ldrh r0, [r5]
- ldr r1, _0805BE54 @ =0x000011ff
- cmp r0, r1
- beq _0805BE4E
- adds r6, r1, 0
-_0805BE34:
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- bl sub_805BDF8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r6
- bne _0805BE34
-_0805BE4E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BE54: .4byte 0x000011ff
- thumb_func_end unref_sub_805BE24
-
- thumb_func_start sub_805BE58
-sub_805BE58: @ 805BE58
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0805BE76
- adds r0, r4, 0
- bl LoadSpritePalette
- lsls r0, 24
- lsrs r0, 24
- b _0805BE78
-_0805BE76:
- movs r0, 0xFF
-_0805BE78:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805BE58
-
- thumb_func_start pal_patch_for_npc
-pal_patch_for_npc: @ 805BE80
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- bl FindFieldObjectPaletteIndexByTag
- lsls r0, 24
- ldr r1, _0805BEB4 @ =gUnknown_0837377C
- lsrs r0, 21
- adds r0, r1
- ldr r0, [r0]
- lsls r4, 20
- movs r1, 0x80
- lsls r1, 17
- adds r4, r1
- lsrs r4, 16
- adds r1, r4, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805BEB4: .4byte gUnknown_0837377C
- thumb_func_end pal_patch_for_npc
-
- thumb_func_start pal_patch_for_npc_range
-pal_patch_for_npc_range: @ 805BEB8
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- cmp r4, r6
- bcs _0805BEDC
-_0805BEC8:
- ldrh r0, [r5]
- adds r1, r4, 0
- bl pal_patch_for_npc
- adds r5, 0x2
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _0805BEC8
-_0805BEDC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end pal_patch_for_npc_range
-
- thumb_func_start FindFieldObjectPaletteIndexByTag
-FindFieldObjectPaletteIndexByTag: @ 805BEE4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- movs r2, 0
- ldr r0, _0805BF0C @ =gUnknown_0837377C
- ldrh r1, [r0, 0x4]
- ldr r3, _0805BF10 @ =0x000011ff
- adds r4, r0, 0
- cmp r1, r3
- beq _0805BF24
- adds r6, r4, 0
- adds r1, r3, 0
-_0805BEFC:
- lsls r0, r2, 3
- adds r0, r6
- ldrh r0, [r0, 0x4]
- cmp r0, r5
- bne _0805BF14
- adds r0, r2, 0
- b _0805BF26
- .align 2, 0
-_0805BF0C: .4byte gUnknown_0837377C
-_0805BF10: .4byte 0x000011ff
-_0805BF14:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 3
- adds r0, r4
- ldrh r0, [r0, 0x4]
- cmp r0, r1
- bne _0805BEFC
-_0805BF24:
- movs r0, 0xFF
-_0805BF26:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end FindFieldObjectPaletteIndexByTag
-
- thumb_func_start npc_load_two_palettes__no_record
-npc_load_two_palettes__no_record: @ 805BF2C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl pal_patch_for_npc
- movs r3, 0
- ldr r1, _0805BF74 @ =gUnknown_08373874
- ldrh r0, [r1]
- ldr r2, _0805BF78 @ =0x000011ff
- cmp r0, r2
- beq _0805BF94
- ldr r0, _0805BF7C @ =gUnknown_0830FD14
- adds r5, r0
- adds r6, r2, 0
-_0805BF50:
- lsls r2, r3, 3
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r4
- bne _0805BF84
- adds r1, 0x4
- adds r1, r2, r1
- ldr r0, _0805BF80 @ =gUnknown_030005A4
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldrb r1, [r5]
- bl pal_patch_for_npc
- b _0805BF94
- .align 2, 0
-_0805BF74: .4byte gUnknown_08373874
-_0805BF78: .4byte 0x000011ff
-_0805BF7C: .4byte gUnknown_0830FD14
-_0805BF80: .4byte gUnknown_030005A4
-_0805BF84:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r6
- bne _0805BF50
-_0805BF94:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end npc_load_two_palettes__no_record
-
- thumb_func_start npc_load_two_palettes__and_record
-npc_load_two_palettes__and_record: @ 805BF9C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _0805BFE8 @ =gUnknown_030005A6
- strh r4, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl pal_patch_for_npc
- movs r3, 0
- ldr r1, _0805BFEC @ =gUnknown_083738E4
- ldrh r0, [r1]
- ldr r2, _0805BFF0 @ =0x000011ff
- cmp r0, r2
- beq _0805C00C
- ldr r0, _0805BFF4 @ =gUnknown_0830FD14
- adds r5, r0
- adds r6, r2, 0
-_0805BFC4:
- lsls r2, r3, 3
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r4
- bne _0805BFFC
- adds r1, 0x4
- adds r1, r2, r1
- ldr r0, _0805BFF8 @ =gUnknown_030005A4
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldrb r1, [r5]
- bl pal_patch_for_npc
- b _0805C00C
- .align 2, 0
-_0805BFE8: .4byte gUnknown_030005A6
-_0805BFEC: .4byte gUnknown_083738E4
-_0805BFF0: .4byte 0x000011ff
-_0805BFF4: .4byte gUnknown_0830FD14
-_0805BFF8: .4byte gUnknown_030005A4
-_0805BFFC:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r6
- bne _0805BFC4
-_0805C00C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end npc_load_two_palettes__and_record
-
- thumb_func_start unref_sub_805C014
-unref_sub_805C014: @ 805C014
- push {r4,lr}
- ldrh r3, [r0, 0x10]
- strh r3, [r0, 0x14]
- ldrh r4, [r0, 0x12]
- strh r4, [r0, 0x16]
- lsls r1, 16
- asrs r1, 16
- adds r1, r3
- strh r1, [r0, 0x10]
- lsls r2, 16
- asrs r2, 16
- adds r2, r4
- strh r2, [r0, 0x12]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_805C014
-
- thumb_func_start npc_coords_shift
-npc_coords_shift: @ 805C034
- ldrh r3, [r0, 0x10]
- strh r3, [r0, 0x14]
- ldrh r3, [r0, 0x12]
- strh r3, [r0, 0x16]
- strh r1, [r0, 0x10]
- strh r2, [r0, 0x12]
- bx lr
- thumb_func_end npc_coords_shift
-
- thumb_func_start npc_coords_set
-npc_coords_set: @ 805C044
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- strh r1, [r0, 0x14]
- strh r2, [r0, 0x16]
- strh r1, [r0, 0x10]
- strh r2, [r0, 0x12]
- bx lr
- thumb_func_end npc_coords_set
-
- thumb_func_start sub_805C058
-sub_805C058: @ 805C058
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldrb r1, [r6, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805C0F4 @ =gSprites
- adds r7, r0, r1
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r8, r0
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl npc_coords_set
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- movs r2, 0x12
- ldrsh r1, [r6, r2]
- adds r2, r7, 0
- adds r2, 0x20
- adds r3, r7, 0
- adds r3, 0x22
- bl sub_80603CC
- mov r1, r8
- ldrh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r1, r7, 0
- adds r1, 0x28
- strb r0, [r1]
- mov r2, r8
- ldrh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 17
- negs r0, r0
- adds r2, r7, 0
- adds r2, 0x29
- strb r0, [r2]
- ldrh r0, [r7, 0x20]
- adds r0, 0x8
- strh r0, [r7, 0x20]
- ldrh r1, [r7, 0x22]
- adds r1, 0x10
- movs r0, 0
- ldrsb r0, [r2, r0]
- adds r0, r1
- strh r0, [r7, 0x22]
- adds r0, r6, 0
- bl sub_805B914
- ldrb r0, [r6, 0x1]
- lsrs r0, 7
- cmp r0, 0
- beq _0805C0EA
- bl CameraObjectReset1
-_0805C0EA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C0F4: .4byte gSprites
- thumb_func_end sub_805C058
-
- thumb_func_start sub_805C0F8
-sub_805C0F8: @ 805C0F8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r4, [sp, 0x10]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 16
- lsrs r5, r3, 16
- lsls r4, 16
- lsrs r4, 16
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0805C140
- lsls r1, r5, 16
- lsls r2, r4, 16
- mov r0, sp
- ldrb r3, [r0]
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- ldr r3, _0805C148 @ =gMapObjects
- adds r0, r3
- movs r3, 0xE0
- lsls r3, 11
- adds r1, r3
- asrs r1, 16
- adds r2, r3
- asrs r2, 16
- bl sub_805C058
-_0805C140:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C148: .4byte gMapObjects
- thumb_func_end sub_805C0F8
-
- thumb_func_start npc_coords_shift_still
-npc_coords_shift_still: @ 805C14C
- push {lr}
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- movs r3, 0x12
- ldrsh r2, [r0, r3]
- bl npc_coords_shift
- pop {r0}
- bx r0
- thumb_func_end npc_coords_shift_still
-
- thumb_func_start UpdateFieldObjectCoordsForCameraUpdate
-UpdateFieldObjectCoordsForCameraUpdate: @ 805C160
- push {r4,r5,lr}
- ldr r2, _0805C1C0 @ =gUnknown_0202E844
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805C1B8
- movs r3, 0
- ldr r5, _0805C1C4 @ =gMapObjects
- movs r0, 0x4
- ldrsh r4, [r2, r0]
- movs r0, 0x8
- ldrsh r1, [r2, r0]
-_0805C17A:
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r5
- ldrb r0, [r2]
- lsls r0, 31
- cmp r0, 0
- beq _0805C1AE
- ldrh r0, [r2, 0xC]
- subs r0, r4
- strh r0, [r2, 0xC]
- ldrh r0, [r2, 0xE]
- subs r0, r1
- strh r0, [r2, 0xE]
- ldrh r0, [r2, 0x10]
- subs r0, r4
- strh r0, [r2, 0x10]
- ldrh r0, [r2, 0x12]
- subs r0, r1
- strh r0, [r2, 0x12]
- ldrh r0, [r2, 0x14]
- subs r0, r4
- strh r0, [r2, 0x14]
- ldrh r0, [r2, 0x16]
- subs r0, r1
- strh r0, [r2, 0x16]
-_0805C1AE:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _0805C17A
-_0805C1B8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C1C0: .4byte gUnknown_0202E844
-_0805C1C4: .4byte gMapObjects
- thumb_func_end UpdateFieldObjectCoordsForCameraUpdate
-
- thumb_func_start GetFieldObjectIdByXYZ
-GetFieldObjectIdByXYZ: @ 805C1C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 24
- lsrs r5, r2, 24
- movs r4, 0
- ldr r0, _0805C214 @ =gMapObjects
- mov r8, r0
-_0805C1E0:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- mov r2, r8
- adds r1, r0, r2
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _0805C218
- movs r2, 0x10
- ldrsh r0, [r1, r2]
- cmp r0, r7
- bne _0805C218
- movs r2, 0x12
- ldrsh r0, [r1, r2]
- cmp r0, r6
- bne _0805C218
- adds r0, r1, 0
- adds r1, r5, 0
- bl FieldObjectDoesZCoordMatch
- lsls r0, 24
- cmp r0, 0
- beq _0805C218
- adds r0, r4, 0
- b _0805C224
- .align 2, 0
-_0805C214: .4byte gMapObjects
-_0805C218:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _0805C1E0
- movs r0, 0x10
-_0805C224:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectIdByXYZ
-
- thumb_func_start FieldObjectDoesZCoordMatch
-FieldObjectDoesZCoordMatch: @ 805C230
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xB]
- movs r0, 0xF
- ands r0, r2
- cmp r0, 0
- beq _0805C250
- cmp r1, 0
- beq _0805C250
- lsls r0, r2, 28
- lsrs r0, 28
- cmp r0, r1
- beq _0805C250
- movs r0, 0
- b _0805C252
-_0805C250:
- movs r0, 0x1
-_0805C252:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectDoesZCoordMatch
-
- thumb_func_start UpdateFieldObjectsForCameraUpdate
-UpdateFieldObjectsForCameraUpdate: @ 805C258
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- bl UpdateFieldObjectCoordsForCameraUpdate
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805B55C
- bl RemoveFieldObjectsOutsideView
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end UpdateFieldObjectsForCameraUpdate
-
- thumb_func_start AddCameraObject
-AddCameraObject: @ 805C284
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0805C2C0 @ =gSpriteTemplate_830FD24
- movs r1, 0
- movs r2, 0
- movs r3, 0x4
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0805C2C4 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x3E
- adds r2, r1
- mov r12, r2
- ldrb r2, [r2]
- movs r3, 0x4
- orrs r2, r3
- mov r3, r12
- strb r2, [r3]
- strh r4, [r1, 0x2E]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805C2C0: .4byte gSpriteTemplate_830FD24
-_0805C2C4: .4byte gSprites
- thumb_func_end AddCameraObject
-
- thumb_func_start ObjectCB_CameraObject
-ObjectCB_CameraObject: @ 805C2C8
- push {r4,r5,lr}
- sub sp, 0xC
- mov r2, sp
- ldr r1, _0805C2EC @ =gUnknown_0830FD3C
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- movs r2, 0x30
- ldrsh r1, [r0, r2]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C2EC: .4byte gUnknown_0830FD3C
- thumb_func_end ObjectCB_CameraObject
-
- thumb_func_start CameraObject_0
-CameraObject_0: @ 805C2F0
- push {lr}
- ldr r3, _0805C328 @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrh r1, [r1, 0x20]
- strh r1, [r0, 0x20]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrh r1, [r1, 0x22]
- strh r1, [r0, 0x22]
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x1
- strh r1, [r0, 0x30]
- bl CameraObject_1
- pop {r0}
- bx r0
- .align 2, 0
-_0805C328: .4byte gSprites
- thumb_func_end CameraObject_0
-
- thumb_func_start CameraObject_1
-CameraObject_1: @ 805C32C
- push {r4,r5,lr}
- ldr r3, _0805C360 @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrh r3, [r1, 0x22]
- ldrh r2, [r0, 0x20]
- ldrh r4, [r1, 0x20]
- movs r5, 0x20
- ldrsh r1, [r1, r5]
- subs r1, r2
- strh r1, [r0, 0x32]
- ldrh r2, [r0, 0x22]
- lsls r1, r3, 16
- asrs r1, 16
- subs r1, r2
- strh r1, [r0, 0x34]
- strh r4, [r0, 0x20]
- strh r3, [r0, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C360: .4byte gSprites
- thumb_func_end CameraObject_1
-
- thumb_func_start CameraObject_2
-CameraObject_2: @ 805C364
- push {r4,lr}
- ldr r4, _0805C390 @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x20]
- movs r3, 0
- strh r1, [r0, 0x20]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- strh r1, [r0, 0x22]
- strh r3, [r0, 0x32]
- strh r3, [r0, 0x34]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C390: .4byte gSprites
- thumb_func_end CameraObject_2
-
- thumb_func_start FindCameraObject
-FindCameraObject: @ 805C394
- push {r4,r5,lr}
- movs r3, 0
- ldr r4, _0805C3C0 @ =gSprites
- adds r5, r4, 0
- adds r5, 0x1C
-_0805C39E:
- lsls r0, r3, 4
- adds r0, r3
- lsls r1, r0, 2
- adds r2, r1, r4
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0805C3C8
- adds r0, r1, r5
- ldr r1, [r0]
- ldr r0, _0805C3C4 @ =ObjectCB_CameraObject
- cmp r1, r0
- bne _0805C3C8
- adds r0, r2, 0
- b _0805C3D4
- .align 2, 0
-_0805C3C0: .4byte gSprites
-_0805C3C4: .4byte ObjectCB_CameraObject
-_0805C3C8:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3F
- bls _0805C39E
- movs r0, 0
-_0805C3D4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FindCameraObject
-
- thumb_func_start CameraObjectReset1
-CameraObjectReset1: @ 805C3DC
- push {lr}
- bl FindCameraObject
- adds r2, r0, 0
- cmp r2, 0
- beq _0805C3F4
- movs r0, 0
- strh r0, [r2, 0x30]
- ldr r1, [r2, 0x1C]
- adds r0, r2, 0
- bl _call_via_r1
-_0805C3F4:
- pop {r0}
- bx r0
- thumb_func_end CameraObjectReset1
-
- thumb_func_start CameraObjectSetFollowedObjectId
-CameraObjectSetFollowedObjectId: @ 805C3F8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl FindCameraObject
- cmp r0, 0
- beq _0805C40C
- strh r4, [r0, 0x2E]
- bl CameraObjectReset1
-_0805C40C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end CameraObjectSetFollowedObjectId
-
- thumb_func_start CameraObjectGetFollowedObjectId
-CameraObjectGetFollowedObjectId: @ 805C414
- push {lr}
- bl FindCameraObject
- cmp r0, 0
- beq _0805C426
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- b _0805C428
-_0805C426:
- movs r0, 0x40
-_0805C428:
- pop {r1}
- bx r1
- thumb_func_end CameraObjectGetFollowedObjectId
-
- thumb_func_start CameraObjectReset2
-CameraObjectReset2: @ 805C42C
- push {lr}
- bl FindCameraObject
- movs r1, 0x2
- strh r1, [r0, 0x30]
- pop {r0}
- bx r0
- thumb_func_end CameraObjectReset2
-
- thumb_func_start unref_sub_805C43C
-unref_sub_805C43C: @ 805C43C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r12, r0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 16
- lsrs r6, r2, 16
- lsls r3, 24
- lsrs r7, r3, 24
- movs r5, 0
- ldr r1, _0805C484 @ =gSprites
-_0805C456:
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _0805C488
- adds r0, r4, 0
- mov r1, r12
- movs r2, 0x44
- bl memcpy
- mov r0, r8
- strh r0, [r4, 0x20]
- strh r6, [r4, 0x22]
- adds r0, r4, 0
- adds r0, 0x43
- strb r7, [r0]
- b _0805C492
- .align 2, 0
-_0805C484: .4byte gSprites
-_0805C488:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3F
- bls _0805C456
-_0805C492:
- adds r0, r5, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_805C43C
-
- thumb_func_start obj_unfreeze
-obj_unfreeze: @ 805C4A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r12, r0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 16
- lsrs r6, r2, 16
- lsls r3, 24
- lsrs r7, r3, 24
- movs r5, 0x3F
- ldr r3, _0805C4F4 @ =gSprites
- movs r2, 0x1
- negs r2, r2
-_0805C4BE:
- lsls r0, r5, 16
- asrs r1, r0, 16
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r3
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _0805C4F8
- adds r0, r4, 0
- mov r1, r12
- movs r2, 0x44
- bl memcpy
- mov r0, r8
- strh r0, [r4, 0x20]
- strh r6, [r4, 0x22]
- adds r0, r4, 0
- adds r0, 0x43
- strb r7, [r0]
- lsls r0, r5, 24
- lsrs r0, 24
- b _0805C506
- .align 2, 0
-_0805C4F4: .4byte gSprites
-_0805C4F8:
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, r2
- bgt _0805C4BE
- movs r0, 0x40
-_0805C506:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end obj_unfreeze
-
- thumb_func_start FieldObjectSetDirection
-FieldObjectSetDirection: @ 805C510
- push {r4,lr}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- adds r4, r2, 0
- ldrb r0, [r3, 0x18]
- lsls r0, 28
- lsrs r0, 28
- adds r1, r3, 0
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r3, 0x1]
- lsls r0, 30
- cmp r0, 0
- blt _0805C540
- movs r0, 0xF
- adds r1, r2, 0
- ands r1, r0
- ldrb r2, [r3, 0x18]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x18]
-_0805C540:
- lsls r2, r4, 4
- ldrb r1, [r3, 0x18]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectSetDirection
-
- thumb_func_start GetFieldObjectScriptPointerByLocalIdAndMap
-GetFieldObjectScriptPointerByLocalIdAndMap: @ 805C554
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- bl GetFieldObjectTemplateByLocalIdAndMap
- ldr r0, [r0, 0x10]
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectScriptPointerByLocalIdAndMap
-
- thumb_func_start GetFieldObjectScriptPointerByFieldObjectId
-GetFieldObjectScriptPointerByFieldObjectId: @ 805C56C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805C58C @ =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r0, [r2, 0x8]
- ldrb r1, [r2, 0x9]
- ldrb r2, [r2, 0xA]
- bl GetFieldObjectScriptPointerByLocalIdAndMap
- pop {r1}
- bx r1
- .align 2, 0
-_0805C58C: .4byte gMapObjects
- thumb_func_end GetFieldObjectScriptPointerByFieldObjectId
-
- thumb_func_start GetFieldObjectFlagIdByLocalIdAndMap
-GetFieldObjectFlagIdByLocalIdAndMap: @ 805C590
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- bl GetFieldObjectTemplateByLocalIdAndMap
- ldrh r0, [r0, 0x14]
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectFlagIdByLocalIdAndMap
-
- thumb_func_start GetFieldObjectFlagIdByFieldObjectId
-GetFieldObjectFlagIdByFieldObjectId: @ 805C5A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805C5CC @ =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r0, [r2, 0x8]
- ldrb r1, [r2, 0x9]
- ldrb r2, [r2, 0xA]
- bl GetFieldObjectFlagIdByLocalIdAndMap
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0805C5CC: .4byte gMapObjects
- thumb_func_end GetFieldObjectFlagIdByFieldObjectId
-
- thumb_func_start unref_sub_805C5D0
-unref_sub_805C5D0: @ 805C5D0
- 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 _0805C604
- ldr r2, _0805C600 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x7]
- b _0805C606
- .align 2, 0
-_0805C600: .4byte gMapObjects
-_0805C604:
- movs r0, 0xFF
-_0805C606:
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end unref_sub_805C5D0
-
- thumb_func_start unref_sub_805C60C
-unref_sub_805C60C: @ 805C60C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0805C620 @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x7]
- bx lr
- .align 2, 0
-_0805C620: .4byte gMapObjects
- thumb_func_end unref_sub_805C60C
-
- thumb_func_start unref_sub_805C624
-unref_sub_805C624: @ 805C624
- 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 _0805C658
- ldr r2, _0805C654 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1D]
- b _0805C65A
- .align 2, 0
-_0805C654: .4byte gMapObjects
-_0805C658:
- movs r0, 0xFF
-_0805C65A:
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end unref_sub_805C624
-
- thumb_func_start FieldObjectGetBerryTreeId
-FieldObjectGetBerryTreeId: @ 805C660
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0805C674 @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x1D]
- bx lr
- .align 2, 0
-_0805C674: .4byte gMapObjects
- thumb_func_end FieldObjectGetBerryTreeId
-
- thumb_func_start GetFieldObjectTemplateByLocalIdAndMap
-GetFieldObjectTemplateByLocalIdAndMap: @ 805C678
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r1, _0805C6A4 @ =gSaveBlock1
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, r3
- bne _0805C6AC
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, r2
- bne _0805C6AC
- movs r0, 0xC2
- lsls r0, 4
- adds r1, r0
- ldr r0, _0805C6A8 @ =gMapHeader
- ldr r0, [r0, 0x4]
- b _0805C6B8
- .align 2, 0
-_0805C6A4: .4byte gSaveBlock1
-_0805C6A8: .4byte gMapHeader
-_0805C6AC:
- adds r0, r2, 0
- adds r1, r3, 0
- bl get_mapheader_by_bank_and_number
- ldr r0, [r0, 0x4]
- ldr r1, [r0, 0x4]
-_0805C6B8:
- ldrb r2, [r0]
- adds r0, r4, 0
- bl FindFieldObjectTemplateInArrayByLocalId
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectTemplateByLocalIdAndMap
-
- thumb_func_start FindFieldObjectTemplateInArrayByLocalId
-FindFieldObjectTemplateInArrayByLocalId: @ 805C6C8
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- cmp r1, r2
- bcs _0805C6F6
-_0805C6DA:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r3, r0, r5
- ldrb r0, [r3]
- cmp r0, r4
- bne _0805C6EC
- adds r0, r3, 0
- b _0805C6F8
-_0805C6EC:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r2
- bcc _0805C6DA
-_0805C6F6:
- movs r0, 0
-_0805C6F8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FindFieldObjectTemplateInArrayByLocalId
-
- thumb_func_start sub_805C700
-sub_805C700: @ 805C700
- push {r4,r5,lr}
- adds r2, r0, 0
- ldrb r1, [r2, 0x9]
- ldr r4, _0805C720 @ =gSaveBlock1
- movs r0, 0x5
- ldrsb r0, [r4, r0]
- adds r5, r4, 0
- cmp r1, r0
- bne _0805C74A
- ldrb r1, [r2, 0xA]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- beq _0805C72E
- b _0805C74A
- .align 2, 0
-_0805C720: .4byte gSaveBlock1
-_0805C724:
- movs r1, 0xC2
- lsls r1, 4
- adds r0, r5, r1
- adds r0, r2, r0
- b _0805C74C
-_0805C72E:
- movs r3, 0
- ldrb r0, [r2, 0x8]
- movs r2, 0xC2
- lsls r2, 4
- adds r1, r4, r2
- movs r2, 0
-_0805C73A:
- ldrb r4, [r1]
- cmp r0, r4
- beq _0805C724
- adds r1, 0x18
- adds r2, 0x18
- adds r3, 0x1
- cmp r3, 0x3F
- ble _0805C73A
-_0805C74A:
- movs r0, 0
-_0805C74C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805C700
-
- thumb_func_start sub_805C754
-sub_805C754: @ 805C754
- push {r4,lr}
- adds r4, r0, 0
- bl sub_805C700
- adds r1, r0, 0
- cmp r1, 0
- beq _0805C76E
- ldrh r0, [r4, 0x10]
- subs r0, 0x7
- strh r0, [r1, 0x4]
- ldrh r0, [r4, 0x12]
- subs r0, 0x7
- strh r0, [r1, 0x6]
-_0805C76E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_805C754
-
- thumb_func_start sub_805C774
-sub_805C774: @ 805C774
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- bl sub_805C700
- cmp r0, 0
- beq _0805C784
- strb r4, [r0, 0x9]
-_0805C784:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_805C774
-
- thumb_func_start sub_805C78C
-sub_805C78C: @ 805C78C
- 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 _0805C7BA
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805C7C0 @ =gMapObjects
- adds r0, r1
- bl sub_805C754
-_0805C7BA:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0805C7C0: .4byte gMapObjects
- thumb_func_end sub_805C78C
-
- thumb_func_start sub_805C7C4
-sub_805C7C4: @ 805C7C4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl gpu_pal_allocator_reset__manage_upper_four
- ldr r1, _0805C7F4 @ =gUnknown_030005A6
- ldr r2, _0805C7F8 @ =0x000011ff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0805C7FC @ =gUnknown_030005A4
- strb r4, [r0]
- ldr r1, _0805C800 @ =gUnknown_0837399C
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0xA
- bl pal_patch_for_npc_range
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805C7F4: .4byte gUnknown_030005A6
-_0805C7F8: .4byte 0x000011ff
-_0805C7FC: .4byte gUnknown_030005A4
-_0805C800: .4byte gUnknown_0837399C
- thumb_func_end sub_805C7C4
-
- thumb_func_start npc_paltag_by_palslot
-npc_paltag_by_palslot: @ 805C804
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x9
- bhi _0805C840
- ldr r1, _0805C820 @ =gUnknown_0837399C
- ldr r0, _0805C824 @ =gUnknown_030005A4
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r2, 1
- b _0805C834
- .align 2, 0
-_0805C820: .4byte gUnknown_0837399C
-_0805C824: .4byte gUnknown_030005A4
-_0805C828:
- adds r1, r4, 0x4
- adds r1, r2, r1
- ldr r0, _0805C83C @ =gUnknown_030005A4
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 1
-_0805C834:
- adds r0, r1
- ldrh r0, [r0]
- b _0805C872
- .align 2, 0
-_0805C83C: .4byte gUnknown_030005A4
-_0805C840:
- movs r3, 0
- ldr r0, _0805C878 @ =gUnknown_083738E4
- ldrh r1, [r0]
- ldr r2, _0805C87C @ =0x000011ff
- adds r4, r0, 0
- cmp r1, r2
- beq _0805C870
- adds r6, r4, 0
- ldr r0, _0805C880 @ =gUnknown_030005A6
- ldrh r1, [r0]
- adds r5, r2, 0
-_0805C856:
- lsls r2, r3, 3
- adds r0, r2, r6
- ldrh r0, [r0]
- cmp r0, r1
- beq _0805C828
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, r5
- bne _0805C856
-_0805C870:
- ldr r0, _0805C87C @ =0x000011ff
-_0805C872:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805C878: .4byte gUnknown_083738E4
-_0805C87C: .4byte 0x000011ff
-_0805C880: .4byte gUnknown_030005A6
- thumb_func_end npc_paltag_by_palslot
-
- thumb_func_start sub_805C884
-sub_805C884: @ 805C884
- 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, _0805C8A0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805C8A4 @ =sub_805C8A8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805C8A0: .4byte gMapObjects
-_0805C8A4: .4byte sub_805C8A8
- thumb_func_end sub_805C884
-
- thumb_func_start sub_805C8A8
-sub_805C8A8: @ 805C8A8
- movs r0, 0
- bx lr
- thumb_func_end sub_805C8A8
-
- thumb_func_start sub_805C8AC
-sub_805C8AC: @ 805C8AC
- 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, _0805C8C8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805C8CC @ =sub_805C8D0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805C8C8: .4byte gMapObjects
-_0805C8CC: .4byte sub_805C8D0
- thumb_func_end sub_805C8AC
-
- thumb_func_start sub_805C8D0
-sub_805C8D0: @ 805C8D0
- push {r4,lr}
- ldr r3, _0805C8EC @ =gUnknown_08375224
- 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
-_0805C8EC: .4byte gUnknown_08375224
- thumb_func_end sub_805C8D0
-
- thumb_func_start sub_805C8F0
-sub_805C8F0: @ 805C8F0
- 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_805C8F0
-
- thumb_func_start sub_805C904
-sub_805C904: @ 805C904
- 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_805C904
-
thumb_func_start sub_805C930
sub_805C930: @ 805C930
push {r4-r6,lr}
diff --git a/asm/field_region_map.s b/asm/field_region_map.s
deleted file mode 100644
index 37c97c3ec..000000000
--- a/asm/field_region_map.s
+++ /dev/null
@@ -1,274 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start FieldInitRegionMap
-FieldInitRegionMap: @ 813EEB4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- bl SetVBlankCallback
- ldr r2, _0813EED8 @ =0x02000000
- ldr r0, _0813EEDC @ =0x00000888
- adds r1, r2, r0
- movs r0, 0
- strh r0, [r1]
- str r4, [r2]
- ldr r0, _0813EEE0 @ =CB2_FieldInitRegionMap
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EED8: .4byte 0x02000000
-_0813EEDC: .4byte 0x00000888
-_0813EEE0: .4byte CB2_FieldInitRegionMap
- thumb_func_end FieldInitRegionMap
-
- thumb_func_start CB2_FieldInitRegionMap
-CB2_FieldInitRegionMap: @ 813EEE4
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x10
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _0813EF98 @ =0x02000008
- movs r1, 0
- bl sub_80FA8EC
- movs r0, 0
- movs r1, 0
- bl sub_80FBCF0
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80FBB3C
- ldr r4, _0813EF9C @ =gWindowConfig_81E709C
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r1, _0813EFA0 @ =REG_BG0CNT
- movs r2, 0xF8
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0x15
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x3
- bl MenuDrawTextWindow
- ldr r0, _0813EFA4 @ =gOtherText_Hoenn
- movs r1, 0x16
- movs r2, 0x1
- movs r3, 0x38
- bl sub_8072BD8
- movs r0, 0x10
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- bl sub_813F0C8
- ldr r0, _0813EFA8 @ =CB2_FieldRegionMap
- bl SetMainCallback2
- ldr r0, _0813EFAC @ =VBlankCB_FieldRegionMap
- bl SetVBlankCallback
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EF98: .4byte 0x02000008
-_0813EF9C: .4byte gWindowConfig_81E709C
-_0813EFA0: .4byte REG_BG0CNT
-_0813EFA4: .4byte gOtherText_Hoenn
-_0813EFA8: .4byte CB2_FieldRegionMap
-_0813EFAC: .4byte VBlankCB_FieldRegionMap
- thumb_func_end CB2_FieldInitRegionMap
-
- thumb_func_start VBlankCB_FieldRegionMap
-VBlankCB_FieldRegionMap: @ 813EFB0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end VBlankCB_FieldRegionMap
-
- thumb_func_start CB2_FieldRegionMap
-CB2_FieldRegionMap: @ 813EFC4
- push {lr}
- bl sub_813EFDC
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end CB2_FieldRegionMap
-
- thumb_func_start sub_813EFDC
-sub_813EFDC: @ 813EFDC
- push {lr}
- sub sp, 0x4
- ldr r1, _0813EFF8 @ =0x02000000
- ldr r2, _0813EFFC @ =0x00000888
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x4
- bhi _0813F0B8
- lsls r0, 2
- ldr r1, _0813F000 @ =_0813F004
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813EFF8: .4byte 0x02000000
-_0813EFFC: .4byte 0x00000888
-_0813F000: .4byte _0813F004
- .align 2, 0
-_0813F004:
- .4byte _0813F018
- .4byte _0813F030
- .4byte _0813F04C
- .4byte _0813F078
- .4byte _0813F0A0
-_0813F018:
- movs r1, 0x80
- lsls r1, 19
- ldr r3, _0813F028 @ =0x00001541
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _0813F02C @ =0x00000888
- adds r1, r2, r0
- b _0813F08E
- .align 2, 0
-_0813F028: .4byte 0x00001541
-_0813F02C: .4byte 0x00000888
-_0813F030:
- ldr r0, _0813F044 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0813F0B8
- ldr r3, _0813F048 @ =0x00000888
- adds r1, r2, r3
- b _0813F08E
- .align 2, 0
-_0813F044: .4byte gPaletteFade
-_0813F048: .4byte 0x00000888
-_0813F04C:
- bl sub_80FAB60
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0813F05E
- bl sub_813F0C8
- b _0813F0B8
-_0813F05E:
- cmp r0, 0x3
- blt _0813F0B8
- cmp r0, 0x5
- bgt _0813F0B8
- ldr r1, _0813F070 @ =0x02000000
- ldr r0, _0813F074 @ =0x00000888
- adds r1, r0
- b _0813F08E
- .align 2, 0
-_0813F070: .4byte 0x02000000
-_0813F074: .4byte 0x00000888
-_0813F078:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0813F098 @ =0x02000000
- ldr r2, _0813F09C @ =0x00000888
- adds r1, r2
-_0813F08E:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0813F0B8
- .align 2, 0
-_0813F098: .4byte 0x02000000
-_0813F09C: .4byte 0x00000888
-_0813F0A0:
- ldr r0, _0813F0C0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0813F0B8
- bl sub_80FAB10
- ldr r0, _0813F0C4 @ =0x02000000
- ldr r0, [r0]
- bl SetMainCallback2
-_0813F0B8:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813F0C0: .4byte gPaletteFade
-_0813F0C4: .4byte 0x02000000
- thumb_func_end sub_813EFDC
-
- thumb_func_start sub_813F0C8
-sub_813F0C8: @ 813F0C8
- push {lr}
- movs r0, 0x11
- movs r1, 0x11
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuFillWindowRectWithBlankTile
- ldr r1, _0813F0F0 @ =0x02000000
- ldrb r0, [r1, 0x1E]
- cmp r0, 0
- beq _0813F0EA
- adds r0, r1, 0
- adds r0, 0x8
- movs r1, 0x11
- movs r2, 0x11
- bl MenuPrint
-_0813F0EA:
- pop {r0}
- bx r0
- .align 2, 0
-_0813F0F0: .4byte 0x02000000
- thumb_func_end sub_813F0C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index c879ebf63..5f3e3a03f 100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -1523,7 +1523,7 @@ _08069F9E:
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl MetatileBehavior_IsAsh
+ bl MetatileBehavior_IsAshGrass
lsls r0, 24
cmp r0, 0
beq _0806A02A
@@ -1708,7 +1708,7 @@ _0806A122:
lsls r0, 24
cmp r0, 0
beq _0806A182
- bl sub_80E6034
+ bl GetPlayerSpeed
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s
index 4214f8f9e..25ede5738 100644
--- a/asm/fldeff_80C5CD4.s
+++ b/asm/fldeff_80C5CD4.s
@@ -881,7 +881,7 @@ _080C6398: .4byte sub_80C660C
sub_80C639C: @ 80C639C
push {lr}
ldr r1, _080C63B0 @ =gUnknown_0202FF84
- ldr r0, _080C63B4 @ =gUnknown_03005CE0
+ ldr r0, _080C63B4 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
ldr r0, _080C63B8 @ =gUnknown_081A2CE6
@@ -890,7 +890,7 @@ sub_80C639C: @ 80C639C
bx r0
.align 2, 0
_080C63B0: .4byte gUnknown_0202FF84
-_080C63B4: .4byte gUnknown_03005CE0
+_080C63B4: .4byte gLastFieldPokeMenuOpened
_080C63B8: .4byte gUnknown_081A2CE6
thumb_func_end sub_80C639C
@@ -1026,7 +1026,7 @@ sub_80C6498: @ 80C6498
sub_80C64A8: @ 80C64A8
push {lr}
ldr r1, _080C64BC @ =gUnknown_0202FF84
- ldr r0, _080C64C0 @ =gUnknown_03005CE0
+ ldr r0, _080C64C0 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
ldr r0, _080C64C4 @ =gUnknown_081A2D3E
@@ -1035,7 +1035,7 @@ sub_80C64A8: @ 80C64A8
bx r0
.align 2, 0
_080C64BC: .4byte gUnknown_0202FF84
-_080C64C0: .4byte gUnknown_03005CE0
+_080C64C0: .4byte gLastFieldPokeMenuOpened
_080C64C4: .4byte gUnknown_081A2D3E
thumb_func_end sub_80C64A8
@@ -1213,7 +1213,7 @@ sub_80C65FC: @ 80C65FC
sub_80C660C: @ 80C660C
push {lr}
ldr r1, _080C6620 @ =gUnknown_0202FF84
- ldr r0, _080C6624 @ =gUnknown_03005CE0
+ ldr r0, _080C6624 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
ldr r0, _080C6628 @ =gUnknown_081A2D96
@@ -1222,7 +1222,7 @@ sub_80C660C: @ 80C660C
bx r0
.align 2, 0
_080C6620: .4byte gUnknown_0202FF84
-_080C6624: .4byte gUnknown_03005CE0
+_080C6624: .4byte gLastFieldPokeMenuOpened
_080C6628: .4byte gUnknown_081A2D96
thumb_func_end sub_80C660C
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
deleted file mode 100644
index a56ad32fa..000000000
--- a/asm/fldeff_cut.s
+++ /dev/null
@@ -1,797 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpFieldMove_Cut
-SetUpFieldMove_Cut: @ 80A2504
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0x52
- bl npc_before_player_of_type
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A2534
- ldr r1, _080A2524 @ =gUnknown_0300485C
- ldr r0, _080A2528 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _080A252C @ =gUnknown_03005CE4
- ldr r0, _080A2530 @ =sub_80A2634
- b _080A25A8
- .align 2, 0
-_080A2524: .4byte gUnknown_0300485C
-_080A2528: .4byte sub_808AB90
-_080A252C: .4byte gUnknown_03005CE4
-_080A2530: .4byte sub_80A2634
-_080A2534:
- ldr r4, _080A25B0 @ =gUnknown_0203923C
- adds r1, r4, 0x2
- adds r0, r4, 0
- bl PlayerGetDestCoords
- movs r7, 0
- mov r8, r4
-_080A2542:
- ldr r1, _080A25B4 @ =0x0000ffff
- adds r0, r7, r1
- mov r2, r8
- ldrh r2, [r2, 0x2]
- adds r0, r2
- movs r6, 0
- lsls r0, 16
- asrs r5, r0, 16
-_080A2552:
- ldr r1, _080A25B4 @ =0x0000ffff
- adds r0, r6, r1
- mov r2, r8
- ldrh r2, [r2]
- adds r0, r2
- lsls r0, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- mov r2, r8
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- cmp r0, r1
- bne _080A25C8
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsPokeGrass
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A259E
- adds r0, r4, 0
- bl MetatileBehavior_IsAsh
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A25C8
-_080A259E:
- ldr r1, _080A25B8 @ =gUnknown_0300485C
- ldr r0, _080A25BC @ =sub_808AB90
- str r0, [r1]
- ldr r1, _080A25C0 @ =gUnknown_03005CE4
- ldr r0, _080A25C4 @ =sub_80A25E8
-_080A25A8:
- str r0, [r1]
- movs r0, 0x1
- b _080A25DE
- .align 2, 0
-_080A25B0: .4byte gUnknown_0203923C
-_080A25B4: .4byte 0x0000ffff
-_080A25B8: .4byte gUnknown_0300485C
-_080A25BC: .4byte sub_808AB90
-_080A25C0: .4byte gUnknown_03005CE4
-_080A25C4: .4byte sub_80A25E8
-_080A25C8:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _080A2552
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _080A2542
- movs r0, 0
-_080A25DE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Cut
-
- thumb_func_start sub_80A25E8
-sub_80A25E8: @ 80A25E8
- push {lr}
- movs r0, 0x1
- bl FieldEffectStart
- ldr r0, _080A25FC @ =gUnknown_0202FF84
- ldr r1, _080A2600 @ =gUnknown_03005CE0
- ldrb r1, [r1]
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080A25FC: .4byte gUnknown_0202FF84
-_080A2600: .4byte gUnknown_03005CE0
- thumb_func_end sub_80A25E8
-
- thumb_func_start FldEff_UseCutOnGrass
-FldEff_UseCutOnGrass: @ 80A2604
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A262C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080A2630 @ =sub_80A2684
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x12
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080A262C: .4byte gTasks
-_080A2630: .4byte sub_80A2684
- thumb_func_end FldEff_UseCutOnGrass
-
- thumb_func_start sub_80A2634
-sub_80A2634: @ 80A2634
- push {lr}
- ldr r1, _080A2648 @ =gUnknown_0202FF84
- ldr r0, _080A264C @ =gUnknown_03005CE0
- ldrb r0, [r0]
- str r0, [r1]
- ldr r0, _080A2650 @ =UseCutScript
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080A2648: .4byte gUnknown_0202FF84
-_080A264C: .4byte gUnknown_03005CE0
-_080A2650: .4byte UseCutScript
- thumb_func_end sub_80A2634
-
- thumb_func_start FldEff_UseCutOnTree
-FldEff_UseCutOnTree: @ 80A2654
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A267C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080A2680 @ =sub_80A2B00
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x12
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080A267C: .4byte gTasks
-_080A2680: .4byte sub_80A2B00
- thumb_func_end FldEff_UseCutOnTree
-
- thumb_func_start sub_80A2684
-sub_80A2684: @ 80A2684
- push {lr}
- movs r0, 0x1
- bl FieldEffectActiveListRemove
- movs r0, 0x3A
- bl FieldEffectStart
- pop {r0}
- bx r0
- thumb_func_end sub_80A2684
-
- thumb_func_start FldEff_CutGrass
-FldEff_CutGrass: @ 80A2698
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r7, 0
- movs r0, 0x80
- bl PlaySE
- ldr r4, _080A2790 @ =gUnknown_0203923C
- adds r1, r4, 0x2
- adds r0, r4, 0
- bl PlayerGetDestCoords
- mov r8, r4
-_080A26B2:
- ldr r1, _080A2794 @ =0x0000ffff
- adds r0, r7, r1
- mov r2, r8
- ldrh r2, [r2, 0x2]
- adds r0, r2
- movs r6, 0
- lsls r0, 16
- asrs r5, r0, 16
-_080A26C2:
- ldr r1, _080A2794 @ =0x0000ffff
- adds r0, r6, r1
- mov r2, r8
- ldrh r2, [r2]
- adds r0, r2
- lsls r0, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- mov r2, r8
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- cmp r0, r1
- bne _080A270E
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_80578F8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A270E
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A27A8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805BCC0
-_080A270E:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _080A26C2
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _080A26B2
- ldr r1, _080A2790 @ =gUnknown_0203923C
- ldrh r0, [r1]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r1, 0x2]
- subs r1, 0x2
- lsls r1, 16
- asrs r1, 16
- bl sub_80A28F4
- bl DrawWholeMapView
- movs r7, 0
- ldr r4, _080A2798 @ =gSprites
-_080A2740:
- ldr r0, _080A279C @ =gPlayerAvatar
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x2]
- lsls r1, 23
- lsrs r1, 7
- movs r2, 0x80
- lsls r2, 12
- adds r1, r2
- asrs r1, 16
- ldrb r2, [r0]
- adds r2, 0x14
- ldr r0, _080A27A0 @ =gSpriteTemplate_CutGrass
- movs r3, 0
- bl CreateSprite
- ldr r1, _080A27A4 @ =0x0201fff0
- adds r1, r7, r1
- strb r0, [r1]
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- lsls r1, r7, 5
- strh r1, [r0, 0x32]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080A2740
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080A2790: .4byte gUnknown_0203923C
-_080A2794: .4byte 0x0000ffff
-_080A2798: .4byte gSprites
-_080A279C: .4byte gPlayerAvatar
-_080A27A0: .4byte gSpriteTemplate_CutGrass
-_080A27A4: .4byte 0x0201fff0
- thumb_func_end FldEff_CutGrass
-
- thumb_func_start sub_80A27A8
-sub_80A27A8: @ 80A27A8
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- lsrs r6, r0, 16
- asrs r4, r0, 16
- lsrs r7, r1, 16
- asrs r5, r1, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- ldr r0, _080A27E0 @ =0x00000207
- cmp r1, r0
- bgt _080A27F4
- subs r0, 0x1
- cmp r1, r0
- bge _080A286C
- cmp r1, 0x25
- beq _080A288E
- cmp r1, 0x25
- bgt _080A27E4
- cmp r1, 0xD
- beq _080A2834
- cmp r1, 0x15
- beq _080A2834
- b _080A2898
- .align 2, 0
-_080A27E0: .4byte 0x00000207
-_080A27E4:
- movs r0, 0xE3
- lsls r0, 1
- cmp r1, r0
- beq _080A2844
- adds r0, 0x1
- cmp r1, r0
- beq _080A284A
- b _080A2898
-_080A27F4:
- ldr r0, _080A280C @ =0x00000212
- cmp r1, r0
- beq _080A287C
- cmp r1, r0
- bgt _080A2810
- subs r0, 0xA
- cmp r1, r0
- beq _080A2834
- adds r0, 0x2
- cmp r1, r0
- beq _080A287C
- b _080A2898
- .align 2, 0
-_080A280C: .4byte 0x00000212
-_080A2810:
- ldr r0, _080A2824 @ =0x00000282
- cmp r1, r0
- beq _080A285C
- cmp r1, r0
- bgt _080A2828
- subs r0, 0x1
- cmp r1, r0
- beq _080A2854
- b _080A2898
- .align 2, 0
-_080A2824: .4byte 0x00000282
-_080A2828:
- ldr r0, _080A2830 @ =0x00000283
- cmp r1, r0
- beq _080A2864
- b _080A2898
- .align 2, 0
-_080A2830: .4byte 0x00000283
-_080A2834:
- lsls r0, r6, 16
- asrs r0, 16
- lsls r1, r7, 16
- asrs r1, 16
- movs r2, 0x1
- bl MapGridSetMetatileIdAt
- b _080A2898
-_080A2844:
- movs r2, 0xE7
- lsls r2, 1
- b _080A286E
-_080A284A:
- ldr r2, _080A2850 @ =0x000001cf
- b _080A286E
- .align 2, 0
-_080A2850: .4byte 0x000001cf
-_080A2854:
- ldr r2, _080A2858 @ =0x00000279
- b _080A286E
- .align 2, 0
-_080A2858: .4byte 0x00000279
-_080A285C:
- ldr r2, _080A2860 @ =0x0000027a
- b _080A286E
- .align 2, 0
-_080A2860: .4byte 0x0000027a
-_080A2864:
- ldr r2, _080A2868 @ =0x0000027b
- b _080A286E
- .align 2, 0
-_080A2868: .4byte 0x0000027b
-_080A286C:
- ldr r2, _080A2878 @ =0x00000271
-_080A286E:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
- b _080A2898
- .align 2, 0
-_080A2878: .4byte 0x00000271
-_080A287C:
- lsls r0, r6, 16
- asrs r0, 16
- lsls r1, r7, 16
- asrs r1, 16
- movs r2, 0x86
- lsls r2, 2
- bl MapGridSetMetatileIdAt
- b _080A2898
-_080A288E:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0xE
- bl MapGridSetMetatileIdAt
-_080A2898:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A27A8
-
- thumb_func_start sub_80A28A0
-sub_80A28A0: @ 80A28A0
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetMetatileIdAt
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r1, 0
- cmp r1, 0x1
- bne _080A28BC
- movs r0, 0x1
- b _080A28EE
-_080A28BC:
- ldr r0, _080A28C8 @ =0x00000279
- cmp r1, r0
- bne _080A28CC
- movs r0, 0x2
- b _080A28EE
- .align 2, 0
-_080A28C8: .4byte 0x00000279
-_080A28CC:
- ldr r0, _080A28D8 @ =0x0000027a
- cmp r1, r0
- bne _080A28DC
- movs r0, 0x3
- b _080A28EE
- .align 2, 0
-_080A28D8: .4byte 0x0000027a
-_080A28DC:
- ldr r0, _080A28E8 @ =0x0000027b
- cmp r2, r0
- beq _080A28EC
- movs r0, 0
- b _080A28EE
- .align 2, 0
-_080A28E8: .4byte 0x0000027b
-_080A28EC:
- movs r0, 0x4
-_080A28EE:
- pop {r1}
- bx r1
- thumb_func_end sub_80A28A0
-
- thumb_func_start sub_80A28F4
-sub_80A28F4: @ 80A28F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 16
- movs r2, 0xC0
- lsls r2, 10
- adds r0, r1, r2
- lsrs r0, 16
- mov r9, r0
- movs r4, 0
- asrs r7, r1, 16
-_080A2914:
- mov r1, r10
- lsls r0, r1, 16
- asrs r0, 16
- lsls r4, 16
- asrs r1, r4, 16
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- asrs r5, r0, 16
- adds r0, r5, 0
- adds r1, r7, 0
- bl MapGridGetMetatileIdAt
- mov r8, r4
- cmp r0, 0x15
- bne _080A2996
- adds r4, r7, 0x1
- lsls r1, r4, 16
- asrs r1, 16
- adds r0, r5, 0
- bl sub_80A28A0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080A296A
- cmp r0, 0x2
- bgt _080A2952
- cmp r0, 0x1
- beq _080A295C
- b _080A2996
-_080A2952:
- cmp r0, 0x3
- beq _080A297C
- cmp r0, 0x4
- beq _080A298C
- b _080A2996
-_080A295C:
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x82
- lsls r2, 2
- bl MapGridSetMetatileIdAt
- b _080A2996
-_080A296A:
- adds r0, r5, 0
- adds r1, r4, 0
- ldr r2, _080A2978 @ =0x00000281
- bl MapGridSetMetatileIdAt
- b _080A2996
- .align 2, 0
-_080A2978: .4byte 0x00000281
-_080A297C:
- adds r0, r5, 0
- adds r1, r4, 0
- ldr r2, _080A2988 @ =0x00000282
- bl MapGridSetMetatileIdAt
- b _080A2996
- .align 2, 0
-_080A2988: .4byte 0x00000282
-_080A298C:
- adds r0, r5, 0
- adds r1, r4, 0
- ldr r2, _080A2A30 @ =0x00000283
- bl MapGridSetMetatileIdAt
-_080A2996:
- lsls r0, r6, 16
- asrs r5, r0, 16
- mov r2, r9
- lsls r0, r2, 16
- asrs r4, r0, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridGetMetatileIdAt
- cmp r0, 0x1
- bne _080A2A10
- adds r4, 0x1
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridGetMetatileIdAt
- movs r1, 0x82
- lsls r1, 2
- cmp r0, r1
- bne _080A29C8
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl MapGridSetMetatileIdAt
-_080A29C8:
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridGetMetatileIdAt
- ldr r1, _080A2A34 @ =0x00000281
- cmp r0, r1
- bne _080A29E0
- adds r0, r5, 0
- adds r1, r4, 0
- ldr r2, _080A2A38 @ =0x00000279
- bl MapGridSetMetatileIdAt
-_080A29E0:
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridGetMetatileIdAt
- ldr r1, _080A2A3C @ =0x00000282
- cmp r0, r1
- bne _080A29F8
- adds r0, r5, 0
- adds r1, r4, 0
- ldr r2, _080A2A40 @ =0x0000027a
- bl MapGridSetMetatileIdAt
-_080A29F8:
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridGetMetatileIdAt
- ldr r1, _080A2A30 @ =0x00000283
- cmp r0, r1
- bne _080A2A10
- adds r0, r5, 0
- adds r1, r4, 0
- ldr r2, _080A2A44 @ =0x0000027b
- bl MapGridSetMetatileIdAt
-_080A2A10:
- movs r0, 0x80
- lsls r0, 9
- add r0, r8
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bgt _080A2A20
- b _080A2914
-_080A2A20:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2A30: .4byte 0x00000283
-_080A2A34: .4byte 0x00000281
-_080A2A38: .4byte 0x00000279
-_080A2A3C: .4byte 0x00000282
-_080A2A40: .4byte 0x0000027a
-_080A2A44: .4byte 0x0000027b
- thumb_func_end sub_80A28F4
-
- thumb_func_start sub_80A2A48
-sub_80A2A48: @ 80A2A48
- movs r2, 0
- movs r1, 0x8
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- strh r2, [r0, 0x34]
- ldr r1, _080A2A58 @ =objc_8097BBC
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080A2A58: .4byte objc_8097BBC
- thumb_func_end sub_80A2A48
-
- thumb_func_start objc_8097BBC
-objc_8097BBC: @ 80A2A5C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x2E]
- adds r1, 0x1
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 18
- adds r1, r0
- strh r1, [r4, 0x2E]
- adds r2, 0x1
- strh r2, [r4, 0x34]
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x1C
- beq _080A2AA8
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080A2AAC
-_080A2AA8:
- ldr r0, _080A2AB4 @ =sub_80A2AB8
- str r0, [r4, 0x1C]
-_080A2AAC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2AB4: .4byte sub_80A2AB8
- thumb_func_end objc_8097BBC
-
- thumb_func_start sub_80A2AB8
-sub_80A2AB8: @ 80A2AB8
- push {r4-r6,lr}
- movs r4, 0x1
-_080A2ABC:
- ldr r6, _080A2AF8 @ =0x0201fff0
- adds r0, r4, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _080A2AFC @ =gSprites
- adds r0, r5
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _080A2ABC
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x3A
- bl FieldEffectStop
- bl sub_8064E2C
- bl ScriptContext2_Disable
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2AF8: .4byte 0x0201fff0
-_080A2AFC: .4byte gSprites
- thumb_func_end sub_80A2AB8
-
- thumb_func_start sub_80A2B00
-sub_80A2B00: @ 80A2B00
- push {lr}
- movs r0, 0x80
- bl PlaySE
- movs r0, 0x2
- bl FieldEffectActiveListRemove
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80A2B00
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s
deleted file mode 100644
index 335aed789..000000000
--- a/asm/fldeff_teleport.s
+++ /dev/null
@@ -1,93 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpFieldMove_Teleport
-SetUpFieldMove_Teleport: @ 814A374
- push {lr}
- ldr r0, _0814A38C @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_1_2_3_or_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0814A390
- movs r0, 0
- b _0814A39E
- .align 2, 0
-_0814A38C: .4byte gMapHeader
-_0814A390:
- ldr r1, _0814A3A4 @ =gUnknown_0300485C
- ldr r0, _0814A3A8 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0814A3AC @ =gUnknown_03005CE4
- ldr r0, _0814A3B0 @ =hm_teleport_run_dp02scr
- str r0, [r1]
- movs r0, 0x1
-_0814A39E:
- pop {r1}
- bx r1
- .align 2, 0
-_0814A3A4: .4byte gUnknown_0300485C
-_0814A3A8: .4byte sub_808AB90
-_0814A3AC: .4byte gUnknown_03005CE4
-_0814A3B0: .4byte hm_teleport_run_dp02scr
- thumb_func_end SetUpFieldMove_Teleport
-
- thumb_func_start hm_teleport_run_dp02scr
-hm_teleport_run_dp02scr: @ 814A3B4
- push {lr}
- bl new_game
- movs r0, 0x3F
- bl FieldEffectStart
- ldr r0, _0814A3CC @ =gUnknown_0202FF84
- ldr r1, _0814A3D0 @ =gUnknown_03005CE0
- ldrb r1, [r1]
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0814A3CC: .4byte gUnknown_0202FF84
-_0814A3D0: .4byte gUnknown_03005CE0
- thumb_func_end hm_teleport_run_dp02scr
-
- thumb_func_start FldEff_UseTeleport
-FldEff_UseTeleport: @ 814A3D4
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814A3FC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _0814A400 @ =sub_814A404
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x1
- bl SetPlayerAvatarTransitionFlags
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0814A3FC: .4byte gTasks
-_0814A400: .4byte sub_814A404
- thumb_func_end FldEff_UseTeleport
-
- thumb_func_start sub_814A404
-sub_814A404: @ 814A404
- push {lr}
- movs r0, 0x3F
- bl FieldEffectActiveListRemove
- bl sub_8087BA8
- pop {r0}
- bx r0
- thumb_func_end sub_814A404
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index c1e93c8b3..3ad85d7cf 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -539,11 +539,11 @@ sub_8142274: @ 8142274
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, _081422A8 @ =gUnknown_03005EBC
+ ldr r1, _081422A8 @ =gGameContinueCallback
ldr r0, _081422AC @ =sub_8141FC4
str r0, [r1]
movs r0, 0x3
- bl sub_8125D44
+ bl TrySavingData
movs r0, 0x37
bl PlaySE
ldr r1, _081422B0 @ =gTasks
@@ -559,7 +559,7 @@ sub_8142274: @ 8142274
pop {r0}
bx r0
.align 2, 0
-_081422A8: .4byte gUnknown_03005EBC
+_081422A8: .4byte gGameContinueCallback
_081422AC: .4byte sub_8141FC4
_081422B0: .4byte gTasks
_081422B4: .4byte sub_81422B8
@@ -1700,7 +1700,7 @@ _08142B8E:
adds r0, 0x4
adds r0, r1, r0
ldrh r3, [r0]
- ldr r0, _08142BD0 @ =gUnknown_0840B53A
+ ldr r0, _08142BD0 @ =gUnknown_0840B534 + 0x6
adds r1, r0
b _08142BE2
.align 2, 0
@@ -1710,14 +1710,14 @@ _08142BC0: .4byte gUnknown_0203931C
_08142BC4: .4byte 0x000001ff
_08142BC8: .4byte gUnknown_0840B564
_08142BCC: .4byte gUnknown_0840B534
-_08142BD0: .4byte gUnknown_0840B53A
+_08142BD0: .4byte gUnknown_0840B534 + 0x6
_08142BD4:
lsls r1, r5, 3
mov r0, r10
adds r0, 0x4
adds r0, r1, r0
ldrh r3, [r0]
- ldr r2, _08142C28 @ =gUnknown_0840B56A
+ ldr r2, _08142C28 @ =gUnknown_0840B564 + 0x6
adds r1, r2
_08142BE2:
ldrh r2, [r1]
@@ -1755,7 +1755,7 @@ _08142BE2:
strh r0, [r1]
b _08142C3C
.align 2, 0
-_08142C28: .4byte gUnknown_0840B56A
+_08142C28: .4byte gUnknown_0840B564 + 0x6
_08142C2C: .4byte gSprites
_08142C30:
adds r0, r5, 0x5
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 4270b4954..29109f3d9 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5128,7 +5128,7 @@ sub_80A599C: @ 80A599C
movs r4, 0
strh r2, [r1, 0x18]
strh r3, [r1, 0x1A]
- ldr r1, _080A59CC @ =gUnknown_03005CE0
+ ldr r1, _080A59CC @ =gLastFieldPokeMenuOpened
strb r4, [r1]
bl sub_80A5AE4
pop {r4}
@@ -5137,7 +5137,7 @@ sub_80A599C: @ 80A599C
.align 2, 0
_080A59C4: .4byte gTasks
_080A59C8: .4byte sub_805469C
-_080A59CC: .4byte gUnknown_03005CE0
+_080A59CC: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_80A599C
thumb_func_start sub_80A59D0
@@ -7539,7 +7539,7 @@ _080A6D14:
thumb_func_start sub_80A6D1C
sub_80A6D1C: @ 80A6D1C
push {r4,r5,lr}
- bl HideMapNamePopUpWindow
+ bl HideMapNamePopup
ldr r0, _080A6D70 @ =gSaveBlock1
ldr r1, _080A6D74 @ =0x00000496
adds r4, r0, r1
diff --git a/asm/item_use.s b/asm/item_use.s
index c4f6fb74a..66b9d7800 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -6,147 +6,6 @@
.text
- thumb_func_start sub_80C962C
-sub_80C962C: @ 80C962C
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r2, 16
- lsrs r4, r2, 16
- ldrb r2, [r0, 0x3]
- ldr r5, [r0, 0x10]
- movs r1, 0
- cmp r1, r2
- bge _080C9680
- lsls r0, r3, 16
- asrs r6, r0, 16
- lsls r0, r4, 16
- asrs r4, r0, 16
- adds r3, r5, 0
-_080C964A:
- ldrb r0, [r3, 0x5]
- cmp r0, 0x7
- bne _080C9678
- ldrh r0, [r3]
- cmp r6, r0
- bne _080C9678
- ldrh r0, [r3, 0x2]
- cmp r4, r0
- bne _080C9678
- movs r1, 0x96
- lsls r1, 2
- adds r0, r1, 0
- ldrh r3, [r3, 0xA]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080C9680
- movs r0, 0x1
- b _080C9682
-_080C9678:
- adds r3, 0xC
- adds r1, 0x1
- cmp r1, r2
- blt _080C964A
-_080C9680:
- movs r0, 0
-_080C9682:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C962C
-
- thumb_func_start sub_80C9688
-sub_80C9688: @ 80C9688
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- bl mapconnection_get_mapheader
- adds r3, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x2
- beq _080C96B0
- cmp r0, 0x2
- bgt _080C96A6
- cmp r0, 0x1
- beq _080C96C4
- b _080C9704
-_080C96A6:
- cmp r0, 0x3
- beq _080C96DC
- cmp r0, 0x4
- beq _080C96E6
- b _080C9704
-_080C96B0:
- ldr r0, [r4, 0x4]
- adds r0, 0x7
- subs r0, r5, r0
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r3]
- ldr r0, [r0, 0x4]
- subs r0, 0x7
- adds r0, r6
- b _080C96FA
-_080C96C4:
- ldr r0, [r4, 0x4]
- adds r0, 0x7
- subs r0, r5, r0
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080C96D8 @ =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- b _080C96F6
- .align 2, 0
-_080C96D8: .4byte gMapHeader
-_080C96DC:
- ldr r0, [r3]
- ldr r0, [r0]
- subs r0, 0x7
- adds r0, r5
- b _080C96F0
-_080C96E6:
- ldr r0, _080C9700 @ =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0x7
- subs r0, r5, r0
-_080C96F0:
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r4, 0x4]
-_080C96F6:
- adds r0, 0x7
- subs r0, r6, r0
-_080C96FA:
- lsls r0, 16
- lsrs r2, r0, 16
- b _080C9708
- .align 2, 0
-_080C9700: .4byte gMapHeader
-_080C9704:
- movs r0, 0
- b _080C971A
-_080C9708:
- ldr r0, [r3, 0x4]
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- bl sub_80C962C
- lsls r0, 24
- lsrs r0, 24
-_080C971A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C9688
-
thumb_func_start sub_80C9720
sub_80C9720: @ 80C9720
push {r4-r7,lr}
@@ -1033,13 +892,13 @@ ItemUseOutOfBattle_SacredAsh: @ 80C9DCC
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _080C9DDC @ =gUnknown_03005CE0
+ ldr r1, _080C9DDC @ =gLastFieldPokeMenuOpened
movs r0, 0
strb r0, [r1]
movs r5, 0
b _080C9DE6
.align 2, 0
-_080C9DDC: .4byte gUnknown_03005CE0
+_080C9DDC: .4byte gLastFieldPokeMenuOpened
_080C9DE0:
adds r0, r5, 0x1
lsls r0, 24
@@ -1062,7 +921,7 @@ _080C9DE6:
bl GetMonData
cmp r0, 0
bne _080C9DE0
- ldr r0, _080C9E2C @ =gUnknown_03005CE0
+ ldr r0, _080C9E2C @ =gLastFieldPokeMenuOpened
strb r5, [r0]
_080C9E10:
ldr r1, _080C9E30 @ =gUnknown_03004AE4
@@ -1078,7 +937,7 @@ _080C9E10:
bx r0
.align 2, 0
_080C9E28: .4byte gPlayerParty
-_080C9E2C: .4byte gUnknown_03005CE0
+_080C9E2C: .4byte gLastFieldPokeMenuOpened
_080C9E30: .4byte gUnknown_03004AE4
_080C9E34: .4byte sub_8070048
_080C9E38: .4byte gUnknown_02038561
diff --git a/asm/libgcnmultiboot.s b/asm/libgcnmultiboot.s
index 87003abbc..91bc1890c 100644
--- a/asm/libgcnmultiboot.s
+++ b/asm/libgcnmultiboot.s
@@ -4,11 +4,36 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
+ .equiv GCMB_STRUCT_COUNTER1, 0x00
+ .equiv GCMB_STRUCT_COUNTER2, 0x01
+ .equiv GCMB_STRUCT_MBPROGRESS, 0x02
+ .equiv GCMB_STRUCT_SAVEDVCOUNT, 0x03
+ .equiv GCMB_STRUCT_KEYA, 0x04
+ .equiv GCMB_STRUCT_KEYB, 0x08
+ .equiv GCMB_STRUCT_KEYC, 0x0C
+ .equiv GCMB_STRUCT_BOOT_KEY, 0x10
+ .equiv GCMB_STRUCT_IMAGE_SIZE, 0x12
+ .equiv GCMB_STRUCT_SESSION_KEY, 0x14
+ .equiv GCMB_STRUCT_HASH_VAL, 0x18
+ .equiv GCMB_STRUCT_KEYC_DERIVATION, 0x1C
.equiv GCMB_STRUCT_BASE_DEST_PTR, 0x20
.equiv GCMB_STRUCT_CUR_DEST_PTR, 0x24
.equiv GCMB_STRUCT_SERIAL_INTR_HANDLER, 0x28
- .equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x4
+ .equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x04
+ .equiv ROM_HEADER_NINTENDO_LOGO_LENGTH, 0x98
+ .equiv ROM_HEADER_NINTENDO_LOGO_END, 0xA0
+
+ .equiv MBPROGRESS_NONE, 0x00
+ .equiv MBPROGRESS_LOGO_CORRECT, 0x01
+ .equiv MBPROGRESS_READY_TO_BOOT, 0x02
+
+ .equiv GCMB_MAGIC_BOOTKEY_HASHVAL, 0xBB
+ .equiv GCMB_MAGIC_BOOTKEY, 0xBB
+ .equiv GCMB_MAGIC_COUNTER2, 0xCC
+ .equiv GCMB_MAGIC_KEYA, 0xDD
+ .equiv GCMB_MAGIC_KEYB, 0xEE
+ .equiv GCMB_MAGIC_KEYCDERIVATION, 0xFF
.syntax unified
@@ -37,137 +62,177 @@ GameCubeMultiBoot_Hash_SkipEor:
thumb_func_start GameCubeMultiBoot_Main
@ void GameCubeMultiBoot_Main(struct GameCubeMultiBoot *mb)@
GameCubeMultiBoot_Main: @ 81DCB4C
+ @ If there is no interrupt handler, skip counter manipulation
ldr r1, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
cmp r1, 0
- beq _081DCB72
- ldrb r1, [r0, 0x1]
+ beq GameCubeMultiBoot_Main_SkipCounters
+ @ Increment the second counter
+ ldrb r1, [r0, GCMB_STRUCT_COUNTER2]
adds r1, 0x1
- strb r1, [r0, 0x1]
- ldrb r1, [r0, 0x2]
- cmp r1, 0x2
- beq _081DCBBC
+ strb r1, [r0, GCMB_STRUCT_COUNTER2]
+ @ If there is nothing more to do, bail out
+ ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS]
+ cmp r1, MBPROGRESS_READY_TO_BOOT
+ beq GameCubeMultiBoot_Main_Return
+ @ Save current interrupt master register value
ldr r3, pool_InterruptRegs
ldrh r2, [r3, OFFSET_REG_IME - 0x200]
+ @ Disable all interrupts
movs r1, 0
strh r1, [r3, OFFSET_REG_IME - 0x200]
- ldrb r1, [r0]
+ @ Increment the first counter, if it's less than or equal to 10.
+ ldrb r1, [r0, GCMB_STRUCT_COUNTER1]
cmp r1, 0xA
- bgt _081DCB70
+ bgt GameCubeMultiBoot_Main_SkipCounter1Inc
adds r1, 0x1
- strb r1, [r0]
-_081DCB70:
+ strb r1, [r0, GCMB_STRUCT_COUNTER1]
+GameCubeMultiBoot_Main_SkipCounter1Inc:
+ @ Load the saved interrupt master register value (re-enables interrupts if they were enabled before)
strh r2, [r3, OFFSET_REG_IME - 0x200]
-_081DCB72:
+GameCubeMultiBoot_Main_SkipCounters:
+ @ Initialise multiboot structures if required
bcs GameCubeMultiBoot_Init
- ldrb r1, [r0, 0x2]
- cmp r1, 0
- bne _081DCBBE
+ @ Skip this section (check Nintendo logo) if the check has already passed
+ ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS]
+ cmp r1, MBPROGRESS_NONE
+ bne GameCubeMultiBoot_Main_SkipLogoCheck
+ @ Bail out if no multiboot image data has been transferred yet
ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
subs r1, r2
- beq _081DCC3E
- cmp r1, 0xA0
- bcc _081DCC3E
+ beq GameCubeMultiBoot_Main_Return2
+ @ Also bail out if not enough data has been transferred
+ cmp r1, ROM_HEADER_NINTENDO_LOGO_END
+ bcc GameCubeMultiBoot_Main_Return2
+ @ Compare the Nintendo logo of the transferred multiboot image header, with the one in the ROM image of the inserted cart
push {r4-r6}
- movs r1, 0x98
+ movs r1, ROM_HEADER_NINTENDO_LOGO_LENGTH
adds r2, ROM_HEADER_NINTENDO_LOGO_OFFSET
ldr r4, pool_NintendoLogo
-_081DCB8E:
+GameCubeMultiBoot_Main_LogoCmpLoop:
ldm r2!, {r5}
ldm r4!, {r6}
cmp r5, r6
- bne _081DCBA4
+ bne GameCubeMultiBoot_Main_LogoCmpEnd
subs r1, 0x4
- bne _081DCB8E
+ bne GameCubeMultiBoot_Main_LogoCmpLoop
ldm r2!, {r5}
ldm r4!, {r6}
eors r5, r6
lsrs r5, 8
str r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
-_081DCBA4:
+GameCubeMultiBoot_Main_LogoCmpEnd:
pop {r4-r6}
+ @ Throw everything away if the logo data didn't match
bne GameCubeMultiBoot_Init
- movs r1, 0x1
- strb r1, [r0, 0x2]
- ldr r1, [r0, 0x4]
- ldr r2, [r0, 0x8]
+ @ Logo matched, set the relevent multiboot progress bit
+ movs r1, MBPROGRESS_LOGO_CORRECT
+ strb r1, [r0, GCMB_STRUCT_MBPROGRESS]
+ @ XOR together KeyA and KeyB to get the initial multiboot image checksum value
+ ldr r1, [r0, GCMB_STRUCT_KEYA]
+ ldr r2, [r0, GCMB_STRUCT_KEYB]
eors r1, r2
- str r1, [r0, 0x18]
+ str r1, [r0, GCMB_STRUCT_HASH_VAL]
+ @ ...also use it as the initial value for the image encryption session key. Algorithm is the same as the GBA BIOS multiboot: sessionkey = (initialvalue * 0x6177614b) + 1
ldr r2, pool_Kawa
muls r1, r2
adds r1, 0x1
- str r1, [r0, 0x14]
-_081DCBBC:
+ str r1, [r0, GCMB_STRUCT_SESSION_KEY]
+GameCubeMultiBoot_Main_Return:
bx lr
-_081DCBBE:
+GameCubeMultiBoot_Main_SkipLogoCheck:
+ @ If this code is executed, then the logo check has passed, and the data being transferred in is encrypted.
+ @ Set up registers.
ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
mov r12, r1
- ldr r3, [r0, 0x18]
+ ldr r3, [r0, GCMB_STRUCT_HASH_VAL]
push {r4-r7}
ldr r4, [r0, GCMB_STRUCT_BASE_DEST_PTR]
ldr r5, pool_Kawa
- ldr r6, [r0, 0x14]
+ ldr r6, [r0, GCMB_STRUCT_SESSION_KEY]
ldr r7, pool_HashVal
-_081DCBCE:
+GameCubeMultiBoot_Main_ImageDecryptHashLoop:
+ @ If there's no more data, break out of the loop
cmp r4, r12
- bcs _081DCBEE
+ bcs GameCubeMultiBoot_Main_ImageDecryptHashEnd
+ @ Get the next uint32
ldr r1, [r4]
+ @ Decrypt the ciphertext: plaintext = (ciphertext ^ sessionkey) + hashval
eors r1, r6
adds r1, r3
+ @ Save the current uint32 of plaintext and advance the pointer
stm r4!, {r1}
+ @ Advance the hashval with this uint32 of plaintext -- this is the same code as GameCubeMultiBoot_Hash.
eors r3, r1
movs r2, 0x20
-_081DCBDE:
+GameCubeMultiBoot_Main_HashLoop:
lsrs r3, 1
- bcc _081DCBE4
+ bcc GameCubeMultiBoot_Main_HashSkipEor
eors r3, r7
-_081DCBE4:
+GameCubeMultiBoot_Main_HashSkipEor:
subs r2, 0x1
- bne _081DCBDE
+ bne GameCubeMultiBoot_Main_HashLoop
+ @ Advance the sessionkey with the usual algorithm: sessionkey = (sessionkey * 0x6177614b) + 1
muls r6, r5
adds r6, 0x1
- b _081DCBCE
-_081DCBEE:
+ b GameCubeMultiBoot_Main_ImageDecryptHashLoop
+GameCubeMultiBoot_Main_ImageDecryptHashEnd:
+ @ Save the new pointer, sessionkey, hashval
str r4, [r0, GCMB_STRUCT_BASE_DEST_PTR]
- str r6, [r0, 0x14]
+ str r6, [r0, GCMB_STRUCT_SESSION_KEY]
pop {r4-r7}
- str r3, [r0, 0x18]
- ldrh r1, [r0, 0x12]
+ str r3, [r0, GCMB_STRUCT_HASH_VAL]
+ @ Bail out if the image size is unknown
+ ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE]
cmp r1, 0
- bne _081DCC3E
+ bne GameCubeMultiBoot_Main_Return2
+ @ Bail out if no image data has been transferred
ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
cmp r1, r2
- bne _081DCC3E
- ldr r1, [r0, 0xC]
+ bne GameCubeMultiBoot_Main_Return2
+ @ If KeyC hasn't been generated yet, go generate it
+ ldr r1, [r0, GCMB_STRUCT_KEYC]
cmp r1, 0
- beq _081DCC28
- ldrh r1, [r0, 0x10]
+ beq GameCubeMultiBoot_Main_GenerateKeyC
+ @ If the other side hasn't sent its boot key yet, bail out
+ ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY]
cmp r1, 0
- beq _081DCBBC
+ beq GameCubeMultiBoot_Main_Return
+ @ Save off LR so it doesn't get clobbered by the upcoming function call
mov r12, lr
- movs r1, 0xBB
- ldr r3, [r0, 0xC]
+ @ Generate the real boot key, which is the checksum of a hardcoded value and KeyC
+ movs r1, GCMB_MAGIC_BOOTKEY_HASHVAL
+ ldr r3, [r0, GCMB_STRUCT_KEYC]
bl GameCubeMultiBoot_Hash
- ldrh r1, [r0, 0x10]
+ ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY]
+ @ Restore the saved LR value
mov lr, r12
+ @ Compare the two boot keys (real and passed in), if they don't match then throw everything away
subs r1, r3
bne GameCubeMultiBoot_Init
- movs r1, 0x2
- strb r1, [r0, 0x2]
+ @ The two boot keys matched, tell the caller that the image is ready to boot
+ movs r1, MBPROGRESS_READY_TO_BOOT
+ strb r1, [r0, GCMB_STRUCT_MBPROGRESS]
+ @ Nothing more to do, return.
bx lr
-_081DCC28:
+GameCubeMultiBoot_Main_GenerateKeyC:
+ @ Save off LR so it doesn't get clobbered by the upcoming function call
mov r12, lr
- ldrb r1, [r0, 0x3]
+ @ KeyC = (SavedVCount << 24) - 1
+ ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT]
lsls r1, 24
subs r1, 0x1
- str r1, [r0, 0xC]
+ str r1, [r0, GCMB_STRUCT_KEYC]
+ @ Hash the KeyC with the multiboot image checksum to generate the KeyC derivation material to be sent to the other side of the link
bl GameCubeMultiBoot_Hash
+ @ Make sure the sent KeyC derivation material contains a magic value so that the other side can detect it
lsls r3, 8
- adds r3, 0xFF
- str r3, [r0, 0x1C]
+ adds r3, GCMB_MAGIC_KEYCDERIVATION
+ @ Save off the KeyC derivation material and return to caller
+ str r3, [r0, GCMB_STRUCT_KEYC_DERIVATION]
bx r12
-_081DCC3E:
+GameCubeMultiBoot_Main_Return2:
bx lr
thumb_func_end GameCubeMultiBoot_Main
@@ -182,12 +247,15 @@ pool_NintendoLogo: .4byte RomHeaderNintendoLogo
thumb_func_start GameCubeMultiBoot_ExecuteProgram
@ void GameCubeMultiBoot_ExecuteProgram(struct GameCubeMultiBoot *mb)@
GameCubeMultiBoot_ExecuteProgram: @ 81DCC4C
- ldrb r1, [r0, 0x2]
- cmp r1, 0x2
+ @ If there's no multiboot image ready, just return to caller
+ ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS]
+ cmp r1, MBPROGRESS_READY_TO_BOOT
bne GameCubeMultiBoot_ExecuteProgram_Fail
+ @ Disable interrupts
ldr r3, pool_InterruptRegs
movs r1, 0
strh r1, [r3, OFFSET_REG_IME - 0x200]
+ @ Jump to the real entry point of the multiboot image (past the image header), in ARM mode
ldr r1, pool_MultiBootLoadAddr
adds r1, 0xC0
bx r1
@@ -308,19 +376,25 @@ GameCubeMultiBoot_HandleSerialInterruptDone:
bx lr
GameCubeMultiBoot_BeginHandshake:
+ @ Throw away anything that got sent
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ @ Send the game code, the other side of the link must send back the same game code
ldr r1, pool_RubyUSAGameCode
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
movs r1, 0x10
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
- ldrb r1, [r0, 0x3]
- strb r1, [r0, 0x9]
- ldrb r1, [r0, 0x2]
+ @ Use the saved VCount value to provide 8 bits of entropy for KeyB
+ ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT]
+ strb r1, [r0, GCMB_STRUCT_KEYB + 1]
+ @ If a multiboot image has been transferred at least enough such that the Nintendo logo check has passed, stop everything.
+ ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS]
cmp r1, 0
bne GcMbIntrHandler_Stop
+ @ Set the image destination pointers.
ldr r1, pool_MultiBootLoadAddr
str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR]
str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ @ Set the new interrupt handler.
adr r2, GcMbIntrHandler_CheckGameCodeSent
b GameCubeMultiBoot_SetInterruptHandler
@@ -347,84 +421,91 @@ GameCubeMultiBoot_CheckHandshakeResponse:
ldr r2, pool_RubyUSAGameCode
cmp r1, r2
bne GcMbIntrHandler_Stop @ stop if the GameCube didn't reply with the same game code
- ldrb r1, [r0, 0x3]
- strb r1, [r0, 0xB]
- adr r2, GcMbIntrHandler_81DCD0C
+ @ Use the saved VCount value to provide another 8 bits of entropy for KeyB.
+ ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT]
+ strb r1, [r0, GCMB_STRUCT_KEYB + 3]
+ adr r2, GcMbIntrHandler_ReceiveKeyA
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCD0C: @ 81DCD0C
+GcMbIntrHandler_ReceiveKeyA: @ 81DCD0C
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ branch if not
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ @ make sure top 8 bits of the received value is the KeyA magic number, stop if KeyA is invalid
lsrs r2, r1, 24
- cmp r2, 0xDD
+ cmp r2, GCMB_MAGIC_KEYA
bne GcMbIntrHandler_Stop
- str r1, [r0, 0x4]
- ldrb r1, [r0, 0x1]
- strb r1, [r0, 0xA]
+ @ save received KeyA
+ str r1, [r0, GCMB_STRUCT_KEYA]
+ @ use the second GameCubeMultiBoot_Main() counter as another 8 bits of entropy for KeyB
+ ldrb r1, [r0, GCMB_STRUCT_COUNTER2]
+ strb r1, [r0, GCMB_STRUCT_KEYB + 2]
movs r2, 0
movs r3, 0
- ldr r1, [r0, 0x8]
+ ldr r1, [r0, GCMB_STRUCT_KEYB]
lsrs r1, 8
-_081DCD26:
+ @ make sure KeyB is valid (other side of the link is supposed to check KeyB too), if it's not then change the byte that was just set so it is
+GameCubeMultiBoot_KeyBCheckLoop:
lsrs r1, 1
adcs r2, r3
cmp r1, 0
- bne _081DCD26
+ bne GameCubeMultiBoot_KeyBCheckLoop
cmp r2, 0xE
- bgt _081DCD38
+ bgt GameCubeMultiBoot_KeyBSaveNewByte
cmp r2, 0x7
- bge _081DCD3A
+ bge GameCubeMultiBoot_KeyBCheckEnd
movs r1, 0xFF
-_081DCD38:
- strb r1, [r0, 0xA]
-_081DCD3A:
- ldr r1, [r0, 0x8]
- adds r1, 0xEE
+GameCubeMultiBoot_KeyBSaveNewByte:
+ strb r1, [r0, GCMB_STRUCT_KEYB + 2]
+GameCubeMultiBoot_KeyBCheckEnd:
+ @ add in the KeyB magic number and send off KeyB
+ ldr r1, [r0, GCMB_STRUCT_KEYB]
+ adds r1, GCMB_MAGIC_KEYB
ldr r3, pool_SerialRegs
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
movs r1, 0x30
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
- adr r2, GcMbIntrHandler_81DCD4C
+ @ set new interrupt handler
+ adr r2, GcMbIntrHandler_CheckKeyBSent
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCD4C: @ 81DCD4C
+GcMbIntrHandler_CheckKeyBSent: @ 81DCD4C
lsls r1, 31
bcc GcMbIntrHandler_Stop @ stop if send failed
- bmi _081DCD5C @ branch if receive is complete
- adr r2, GcMbIntrHandler_81DCD58
+ bmi GameCubeMultiBoot_CheckImageSizeResponse @ branch if receive is complete
+ adr r2, GcMbIntrHandler_CheckImageSizeResponse
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCD58: @ 81DCD58
+GcMbIntrHandler_CheckImageSizeResponse: @ 81DCD58
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ branch if not
-_081DCD5C:
+GameCubeMultiBoot_CheckImageSizeResponse:
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
- ldr r2, _081DCDFC
+ ldr r2, GameCubeMultiBoot_MaximumImageSizeUInt32s
cmp r1, r2
bhs GcMbIntrHandler_Stop
adds r1, 0x1
adds r1, r1
- strh r1, [r0, 0x12]
- ldrb r1, [r0, 0x2]
+ strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE]
+ ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS]
cmp r1, 0
-_081DCD6E:
+GcMbIntrHandler_StopIfNotEqual:
bne GcMbIntrHandler_Stop
ldr r1, pool_MultiBootLoadAddr
str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR]
str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
- adr r2, GcMbIntrHandler_81DCD7C
+ adr r2, GcMbIntrHandler_CheckImageResponse
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCD7C: @ 81DCD7C
+GcMbIntrHandler_CheckImageResponse: @ 81DCD7C
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ branch if not
ldr r2, [r0, GCMB_STRUCT_CUR_DEST_PTR]
@@ -433,63 +514,73 @@ GcMbIntrHandler_81DCD7C: @ 81DCD7C
adds r1, 0x8
lsls r1, 2
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
+ @ get the recieved uint32
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ @ put it in the current destination pointer and advance that pointer
stm r2!, {r1}
+ @ save off the advanced pointer
str r2, [r0, GCMB_STRUCT_CUR_DEST_PTR]
- ldrh r1, [r0, 0x12]
+ @ decrease the image size (in uint32s)
+ ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE]
subs r1, 0x1
- strh r1, [r0, 0x12]
+ strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE]
+ @ branch away if the transfer is not yet complete
bne GameCubeMultiBoot_ReadVCount
-_081DCD9A:
- ldrb r1, [r0, 0x1]
+GcMbIntrHandler_SendCounter2:
+ @ send counter2 with magic number
+ ldrb r1, [r0, GCMB_STRUCT_COUNTER2]
lsls r1, 8
- adds r1, 0xCC
+ adds r1, GCMB_MAGIC_COUNTER2
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
- adr r2, _081DCDA8
+ adr r2, GcMbIntrHandler_CheckCounter2Sent
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-_081DCDA8:
+GcMbIntrHandler_CheckCounter2Sent:
lsls r1, 31
-_081DCDAA:
- bcc GcMbIntrHandler_Stop
- ldr r1, [r0, 0x1C]
+GcMbIntrHandler_StopIfSendFailed:
+ bcc GcMbIntrHandler_Stop @ stop if send failed
+ @ if KeyC derivation value has not yet been generated, send Counter2 again, otherwise, send KeyC derivation
+ ldr r1, [r0, GCMB_STRUCT_KEYC_DERIVATION]
cmp r1, 0
- beq _081DCD9A
+ beq GcMbIntrHandler_SendCounter2
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
- adr r2, GcMbIntrHandler_81DCDB8
+ adr r2, GcMbIntrHandler_CheckKeyCDerivationSent
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCDB8: @ 81DCDB8
+GcMbIntrHandler_CheckKeyCDerivationSent: @ 81DCDB8
lsls r1, 31
- bcc _081DCDAA @ branch if send failed
- bmi _081DCDC8 @ branch if receive is complete
- adr r2, GcMbIntrHandler_81DCDC4
+ bcc GcMbIntrHandler_StopIfSendFailed @ branch if send failed
+ bmi GameCubeMultiBoot_CheckBootKeyResponse @ branch if receive is complete
+ adr r2, GcMbIntrHandler_CheckBootKeyResponse
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCDC4: @ 81DCDC4
+GcMbIntrHandler_CheckBootKeyResponse: @ 81DCDC4
lsrs r1, 1 @ is receive complete?
- bcc _081DCDAA @ branch if not
+ bcc GcMbIntrHandler_StopIfSendFailed @ branch if not
-_081DCDC8:
+GameCubeMultiBoot_CheckBootKeyResponse:
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ @ make sure received boot key contains expected magic number, stop if not
lsrs r2, r1, 24
- cmp r2, 0xBB
- bne _081DCD6E
- strh r1, [r0, 0x10]
- adr r2, GcMbIntrHandler_81DCDD8
+ cmp r2, GCMB_MAGIC_BOOTKEY
+ bne GcMbIntrHandler_StopIfNotEqual
+ @ save received bootkey to be checked in GameCubeMultiBoot_Main()
+ strh r1, [r0, GCMB_STRUCT_BOOT_KEY]
+ @ stop if anything more gets sent
+ adr r2, GcMbIntrHandler_StopUnconditionally
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
-GcMbIntrHandler_81DCDD8: @ 81DCDD8
+GcMbIntrHandler_StopUnconditionally: @ 81DCDD8
b GcMbIntrHandler_Stop
thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt
@@ -535,7 +626,7 @@ GameCubeMultiBoot_Quit: @ 81DCDDA
.align 2, 0
-_081DCDFC: .4byte 0x00004000
+GameCubeMultiBoot_MaximumImageSizeUInt32s: .4byte 0x00004000
pool_InterruptRegs: .4byte REG_BASE + 0x200
diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc
index 38a44ddfb..679e30340 100644
--- a/asm/macros/battle_ai_script.inc
+++ b/asm/macros/battle_ai_script.inc
@@ -1,21 +1,24 @@
- .macro if_random percent, address
+ .macro if_random_less_than percent, address
.byte 0x00
.byte \percent
.4byte \address
.endm
- .macro if_not_random percent, address
+ @ unused
+ .macro if_random_greater_than percent, address
.byte 0x01
.byte \percent
.4byte \address
.endm
- .macro if_random_1 address
+ @ unused
+ .macro if_random_equal address
.byte 0x02
.4byte \address
.endm
- .macro if_not_random_1 address
+ @ unused
+ .macro if_random_not_equal address
.byte 0x03
.4byte \address
.endm
@@ -212,7 +215,8 @@
.byte \byte
.endm
- .macro ai_23
+ @ unused
+ .macro get_move_power
.byte 0x23
.endm
@@ -225,14 +229,17 @@
.byte \target
.endm
- .macro if_type type, address
+ .macro if_arg_equal type, address
.byte 0x26
.byte \type
.4byte \address
.endm
- .macro ai_27
+ @ unused
+ .macro if_arg_not_equal type, address
.byte 0x27
+ .byte \type
+ .4byte \address
.endm
.macro if_would_go_first target, address
@@ -247,10 +254,12 @@
.4byte \address
.endm
+ @ nullsub
.macro ai_2a
.byte 0x2a
.endm
+ @ nullsub
.macro ai_2b
.byte 0x2b
.endm
@@ -260,7 +269,8 @@
.byte \target
.endm
- .macro ai_2d
+ @ unused
+ .macro get_considered_move
.byte 0x2d
.endm
@@ -273,7 +283,8 @@
.byte \target
.endm
- .macro ai_30
+ @ unused
+ .macro get_highest_possible_damage
.byte 0x30
.endm
@@ -283,10 +294,12 @@
.4byte \address
.endm
+ @ nullsub
.macro ai_32
.byte 0x32
.endm
+ @ nullsub
.macro ai_33
.byte 0x33
.endm
@@ -364,12 +377,20 @@
.4byte \address
.endm
- .macro if_has_move
+ @ unused
+ .macro if_has_move, target, move, address
.byte 0x3f
+ .byte \target
+ .2byte \move
+ .4byte \address
.endm
- .macro if_dont_have_move
+ @ unused
+ .macro if_dont_have_move, target, move, address
.byte 0x40
+ .byte \target
+ .2byte \move
+ .4byte \address
.endm
.macro if_move_effect target, effect, address
@@ -393,8 +414,9 @@
.4byte \address
.endm
- .macro if_encored address
+ .macro if_encored target, address
.byte 0x44
+ .byte \target
.4byte \address
.endm
@@ -402,7 +424,7 @@
.byte 0x45
.endm
- .macro if_random_2 address
+ .macro if_random_100 address
.byte 0x46
.4byte \address
.endm
@@ -440,15 +462,15 @@
.byte \target
.endm
- .macro get_move_type
+ .macro get_move_type_from_result
.byte 0x4e
.endm
- .macro get_move_power
+ .macro get_move_power_from_result
.byte 0x4f
.endm
- .macro get_move_effect
+ .macro get_move_effect_from_result
.byte 0x50
.endm
@@ -457,30 +479,37 @@
.byte \target
.endm
+ @ nullsub
.macro ai_52
.byte 0x52
.endm
+ @ nullsub
.macro ai_53
.byte 0x53
.endm
+ @ nullsub
.macro ai_54
.byte 0x54
.endm
+ @ nullsub
.macro ai_55
.byte 0x55
.endm
+ @ nullsub
.macro ai_56
.byte 0x56
.endm
+ @ nullsub
.macro ai_57
.byte 0x57
.endm
+ @ unused
.macro call address
.byte 0x58
.4byte \address
@@ -513,6 +542,7 @@
if_level_cond 2, \address
.endm
+ @ unused
.macro if_taunted address
.byte 0x5c
.4byte \address
diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s
deleted file mode 100644
index b488e5f73..000000000
--- a/asm/map_name_popup.s
+++ /dev/null
@@ -1,248 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_80A2F44
-unref_sub_80A2F44: @ 80A2F44
- push {lr}
- bl CloseMenu
- bl AddMapNamePopUpWindowTask
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end unref_sub_80A2F44
-
- thumb_func_start AddMapNamePopUpWindowTask
-AddMapNamePopUpWindowTask: @ 80A2F54
- push {r4,r5,lr}
- movs r0, 0x80
- lsls r0, 7
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A2FE4
- ldr r4, _080A2FAC @ =sub_80A2FF4
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080A2FBC
- adds r0, r4, 0
- movs r1, 0x5A
- bl CreateTask
- ldr r4, _080A2FB0 @ =gUnknown_02038538
- strb r0, [r4]
- ldr r1, _080A2FB4 @ =REG_BG0VOFS
- movs r0, 0x20
- strh r0, [r1]
- bl sub_80A30E0
- ldr r2, _080A2FB8 @ =gTasks
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- strh r5, [r0, 0x8]
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x20
- strh r1, [r0, 0xC]
- b _080A2FE4
- .align 2, 0
-_080A2FAC: .4byte sub_80A2FF4
-_080A2FB0: .4byte gUnknown_02038538
-_080A2FB4: .4byte REG_BG0VOFS
-_080A2FB8: .4byte gTasks
-_080A2FBC:
- ldr r3, _080A2FEC @ =gTasks
- ldr r2, _080A2FF0 @ =gUnknown_02038538
- ldrb r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- movs r4, 0x8
- ldrsh r0, [r1, r4]
- cmp r0, 0x2
- beq _080A2FD6
- movs r0, 0x2
- strh r0, [r1, 0x8]
-_080A2FD6:
- ldrb r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080A2FE4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2FEC: .4byte gTasks
-_080A2FF0: .4byte gUnknown_02038538
- thumb_func_end AddMapNamePopUpWindowTask
-
- thumb_func_start sub_80A2FF4
-sub_80A2FF4: @ 80A2FF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r3, _080A3018 @ =gTasks
- adds r4, r1, r3
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0x1
- beq _080A304C
- cmp r2, 0x1
- bgt _080A301C
- cmp r2, 0
- beq _080A3026
- b _080A3092
- .align 2, 0
-_080A3018: .4byte gTasks
-_080A301C:
- cmp r2, 0x2
- beq _080A3064
- cmp r2, 0x4
- beq _080A308C
- b _080A3092
-_080A3026:
- ldrh r0, [r4, 0xC]
- subs r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bgt _080A3092
- movs r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080A3048 @ =gUnknown_02038538
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- strh r2, [r0, 0xA]
- b _080A3092
- .align 2, 0
-_080A3048: .4byte gUnknown_02038538
-_080A304C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080A3092
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080A3092
-_080A3064:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- movs r5, 0
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- ble _080A3092
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A3086
- bl sub_80A30E0
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xE]
- b _080A3092
-_080A3086:
- movs r0, 0x4
- strh r0, [r4, 0x8]
- b _080A3098
-_080A308C:
- bl HideMapNamePopUpWindow
- b _080A3098
-_080A3092:
- ldr r1, _080A30A0 @ =REG_BG0VOFS
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
-_080A3098:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A30A0: .4byte REG_BG0VOFS
- thumb_func_end sub_80A2FF4
-
- thumb_func_start HideMapNamePopUpWindow
-HideMapNamePopUpWindow: @ 80A30A4
- push {lr}
- ldr r0, _080A30D4 @ =sub_80A2FF4
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _080A30D0
- bl MenuLoadTextWindowGraphics
- movs r0, 0
- movs r1, 0
- movs r2, 0xD
- movs r3, 0x3
- bl MenuZeroFillWindowRect
- ldr r1, _080A30D8 @ =REG_BG0VOFS
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080A30DC @ =gUnknown_02038538
- ldrb r0, [r0]
- bl DestroyTask
-_080A30D0:
- pop {r0}
- bx r0
- .align 2, 0
-_080A30D4: .4byte sub_80A2FF4
-_080A30D8: .4byte REG_BG0VOFS
-_080A30DC: .4byte gUnknown_02038538
- thumb_func_end HideMapNamePopUpWindow
-
- thumb_func_start sub_80A30E0
-sub_80A30E0: @ 80A30E0
- push {lr}
- sub sp, 0x14
- movs r0, 0
- bl MenuLoadTextWindowGraphics_OverrideFrameType
- ldr r0, _080A3114 @ =gMapHeader
- ldrb r1, [r0, 0x14]
- mov r0, sp
- movs r2, 0
- bl sub_80FBFB4
- movs r0, 0
- movs r1, 0
- movs r2, 0xD
- movs r3, 0x3
- bl MenuDrawTextWindow
- mov r0, sp
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x60
- bl sub_8072BD8
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_080A3114: .4byte gMapHeader
- thumb_func_end sub_80A30E0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s
index 3af0f2b11..90d97e9a4 100644
--- a/asm/mauville_old_man.s
+++ b/asm/mauville_old_man.s
@@ -6,502 +6,6 @@
.text
- thumb_func_start sub_80F7A34
-sub_80F7A34: @ 80F7A34
- push {r4,lr}
- ldr r0, _080F7A64 @ =gSaveBlock1 + 0x2D94
- movs r1, 0
- strb r1, [r0]
- adds r2, r0, 0
- adds r2, 0x29
- strb r1, [r2]
- movs r2, 0
- adds r4, r0, 0x2
- ldr r3, _080F7A68 @ =gUnknown_083E537C
-_080F7A48:
- lsls r0, r2, 1
- adds r1, r4, r0
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _080F7A48
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7A64: .4byte gSaveBlock1 + 0x2D94
-_080F7A68: .4byte gUnknown_083E537C
- thumb_func_end sub_80F7A34
-
- thumb_func_start sub_80F7A6C
-sub_80F7A6C: @ 80F7A6C
- ldr r0, _080F7A78 @ =gSaveBlock1 + 0x2D94
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bx lr
- .align 2, 0
-_080F7A78: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7A6C
-
- thumb_func_start sub_80F7A7C
-sub_80F7A7C: @ 80F7A7C
- push {lr}
- bl sub_80F83F8
- pop {r0}
- bx r0
- thumb_func_end sub_80F7A7C
-
- thumb_func_start sub_80F7A88
-sub_80F7A88: @ 80F7A88
- ldr r0, _080F7A94 @ =gSaveBlock1 + 0x2D94
- movs r2, 0
- movs r1, 0x4
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bx lr
- .align 2, 0
-_080F7A94: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7A88
-
- thumb_func_start sub_80F7A98
-sub_80F7A98: @ 80F7A98
- push {lr}
- bl sub_81099CC
- pop {r0}
- bx r0
- thumb_func_end sub_80F7A98
-
- thumb_func_start sub_80F7AA4
-sub_80F7AA4: @ 80F7AA4
- push {lr}
- ldr r0, _080F7AC8 @ =gSaveBlock2
- ldrb r1, [r0, 0xB]
- lsls r1, 8
- ldrb r0, [r0, 0xA]
- orrs r0, r1
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 17
- cmp r0, 0x4
- bhi _080F7B00
- lsls r0, 2
- ldr r1, _080F7ACC @ =_080F7AD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F7AC8: .4byte gSaveBlock2
-_080F7ACC: .4byte _080F7AD0
- .align 2, 0
-_080F7AD0:
- .4byte _080F7AE4
- .4byte _080F7AEA
- .4byte _080F7AF0
- .4byte _080F7AF6
- .4byte _080F7AFC
-_080F7AE4:
- bl sub_80F7A34
- b _080F7B00
-_080F7AEA:
- bl sub_80F7A6C
- b _080F7B00
-_080F7AF0:
- bl sub_80F7A98
- b _080F7B00
-_080F7AF6:
- bl sub_80F7A7C
- b _080F7B00
-_080F7AFC:
- bl sub_80F7A88
-_080F7B00:
- bl sub_80F83D0
- pop {r0}
- bx r0
- thumb_func_end sub_80F7AA4
-
- thumb_func_start GetCurrentMauvilleOldMan
-GetCurrentMauvilleOldMan: @ 80F7B08
- ldr r0, _080F7B10 @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080F7B10: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end GetCurrentMauvilleOldMan
-
- thumb_func_start sub_80F7B14
-sub_80F7B14: @ 80F7B14
- push {r4,lr}
- ldr r4, _080F7B28 @ =gScriptResult
- bl GetCurrentMauvilleOldMan
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7B28: .4byte gScriptResult
- thumb_func_end sub_80F7B14
-
- thumb_func_start sub_80F7B2C
-sub_80F7B2C: @ 80F7B2C
- ldr r0, _080F7B38 @ =gScriptResult
- ldr r1, _080F7B3C @ =gSaveBlock1 + 0x2D94
- adds r1, 0x29
- ldrb r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080F7B38: .4byte gScriptResult
-_080F7B3C: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7B2C
-
- thumb_func_start sub_80F7B40
-sub_80F7B40: @ 80F7B40
- push {r4,r5,lr}
- ldr r5, _080F7B98 @ =gSaveBlock1 + 0x2D94
- adds r0, r5, 0
- adds r0, 0x1A
- ldr r4, _080F7B9C @ =gSaveBlock2
- adds r1, r4, 0
- bl StringCopy
- movs r2, 0
- adds r3, r5, 0
- adds r3, 0x25
- adds r4, 0xA
-_080F7B58:
- adds r1, r3, r2
- adds r0, r2, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x3
- bls _080F7B58
- movs r2, 0
- movs r0, 0x29
- adds r0, r5
- mov r12, r0
- adds r4, r5, 0x2
- adds r3, r5, 0
- adds r3, 0xE
-_080F7B78:
- lsls r0, r2, 1
- adds r1, r4, r0
- adds r0, r3, r0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _080F7B78
- movs r0, 0x1
- mov r1, r12
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7B98: .4byte gSaveBlock1 + 0x2D94
-_080F7B9C: .4byte gSaveBlock2
- thumb_func_end sub_80F7B40
-
- thumb_func_start sub_80F7BA0
-sub_80F7BA0: @ 80F7BA0
- push {r4-r7,lr}
- ldr r1, _080F7C48 @ =gSaveBlock1 + 0x2D94
- ldr r0, _080F7C4C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r5, r1, 0
- adds r5, 0xE
- cmp r0, 0
- bne _080F7BB2
- adds r5, r1, 0x2
-_080F7BB2:
- ldr r2, _080F7C50 @ =gStringVar4
- adds r4, r2, 0
- movs r6, 0
-_080F7BB8:
- ldrh r1, [r5]
- adds r5, 0x2
- adds r0, r2, 0
- bl sub_80EB3FC
- adds r2, r0, 0
- adds r7, r6, 0x1
- cmp r2, r4
- beq _080F7BDA
- movs r1, 0x37
-_080F7BCC:
- ldrb r0, [r4]
- cmp r0, 0
- bne _080F7BD4
- strb r1, [r4]
-_080F7BD4:
- adds r4, 0x1
- cmp r2, r4
- bne _080F7BCC
-_080F7BDA:
- adds r4, 0x1
- movs r0, 0
- strb r0, [r2]
- adds r2, 0x1
- ldrh r1, [r5]
- adds r5, 0x2
- adds r0, r2, 0
- bl sub_80EB3FC
- adds r2, r0, 0
- cmp r2, r4
- beq _080F7C02
- movs r1, 0x37
-_080F7BF4:
- ldrb r0, [r4]
- cmp r0, 0
- bne _080F7BFC
- strb r1, [r4]
-_080F7BFC:
- adds r4, 0x1
- cmp r2, r4
- bne _080F7BF4
-_080F7C02:
- adds r4, 0x1
- movs r0, 0xFE
- strb r0, [r2]
- adds r2, 0x1
- ldrh r1, [r5]
- adds r5, 0x2
- adds r0, r2, 0
- bl sub_80EB3FC
- adds r2, r0, 0
- cmp r2, r4
- beq _080F7C2A
- movs r1, 0x37
-_080F7C1C:
- ldrb r0, [r4]
- cmp r0, 0
- bne _080F7C24
- strb r1, [r4]
-_080F7C24:
- adds r4, 0x1
- cmp r2, r4
- bne _080F7C1C
-_080F7C2A:
- cmp r6, 0
- bne _080F7C3A
- movs r0, 0xFC
- strb r0, [r2]
- adds r2, 0x1
- movs r0, 0xF
- strb r0, [r2]
- adds r2, 0x1
-_080F7C3A:
- lsls r0, r7, 16
- lsrs r6, r0, 16
- cmp r6, 0x1
- bls _080F7BB8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7C48: .4byte gSaveBlock1 + 0x2D94
-_080F7C4C: .4byte gSpecialVar_0x8004
-_080F7C50: .4byte gStringVar4
- thumb_func_end sub_80F7BA0
-
- thumb_func_start sub_80F7C54
-sub_80F7C54: @ 80F7C54
- push {lr}
- ldr r0, _080F7C6C @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_80F7F80
- bl MenuDisplayMessageBox
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .align 2, 0
-_080F7C6C: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80F7C54
-
- thumb_func_start sub_80F7C70
-sub_80F7C70: @ 80F7C70
- ldr r0, _080F7C7C @ =gScriptResult
- ldr r1, _080F7C80 @ =gSaveBlock1 + 0x2D94
- ldrb r1, [r1, 0x1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080F7C7C: .4byte gScriptResult
-_080F7C80: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7C70
-
- thumb_func_start sub_80F7C84
-sub_80F7C84: @ 80F7C84
- ldr r1, _080F7C8C @ =gSaveBlock1 + 0x2D94
- movs r0, 0x1
- strb r0, [r1, 0x1]
- bx lr
- .align 2, 0
-_080F7C8C: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7C84
-
- thumb_func_start sub_80F7C90
-sub_80F7C90: @ 80F7C90
- push {lr}
- bl sub_80EB8EC
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080F7CA8 @ =0x0000ffff
- cmp r1, r0
- bne _080F7CB0
- ldr r1, _080F7CAC @ =gScriptResult
- movs r0, 0
- b _080F7CBA
- .align 2, 0
-_080F7CA8: .4byte 0x0000ffff
-_080F7CAC: .4byte gScriptResult
-_080F7CB0:
- ldr r0, _080F7CC0 @ =gStringVar1
- bl sub_80EB3FC
- ldr r1, _080F7CC4 @ =gScriptResult
- movs r0, 0x1
-_080F7CBA:
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080F7CC0: .4byte gStringVar1
-_080F7CC4: .4byte gScriptResult
- thumb_func_end sub_80F7C90
-
- thumb_func_start sub_80F7CC8
-sub_80F7CC8: @ 80F7CC8
- push {lr}
- ldr r2, _080F7CDC @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r2, 0x1]
- cmp r0, 0xA
- bne _080F7CE4
- ldr r1, _080F7CE0 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- strb r0, [r2, 0x1]
- b _080F7CEA
- .align 2, 0
-_080F7CDC: .4byte gSaveBlock1 + 0x2D94
-_080F7CE0: .4byte gScriptResult
-_080F7CE4:
- ldr r1, _080F7CF0 @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
-_080F7CEA:
- pop {r0}
- bx r0
- .align 2, 0
-_080F7CF0: .4byte gScriptResult
- thumb_func_end sub_80F7CC8
-
- thumb_func_start sub_80F7CF4
-sub_80F7CF4: @ 80F7CF4
- push {r4-r6,lr}
- ldr r5, _080F7D50 @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- bne _080F7D02
- bl sub_80F7DC0
-_080F7D02:
- ldrb r0, [r5, 0x1]
- lsls r0, 1
- adds r6, r5, 0x4
- adds r0, r6
- ldrh r1, [r0]
- ldr r0, _080F7D54 @ =0x0000ffff
- cmp r1, r0
- beq _080F7D68
- bl Random
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x7
- ands r4, r0
- ldr r0, _080F7D58 @ =gStringVar4
- ldrb r1, [r5, 0x1]
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- bl sub_80EB3FC
- adds r2, r0, 0
- ldr r1, _080F7D5C @ =gOtherText_Is
- bl StringCopy
- adds r2, r0, 0
- ldr r0, _080F7D60 @ =gUnknown_083E5388
- lsls r4, 2
- adds r4, r0
- ldr r1, [r4]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r1, _080F7D64 @ =gOtherText_DontYouAgree
- bl StringCopy
- b _080F7D88
- .align 2, 0
-_080F7D50: .4byte gSaveBlock1 + 0x2D94
-_080F7D54: .4byte 0x0000ffff
-_080F7D58: .4byte gStringVar4
-_080F7D5C: .4byte gOtherText_Is
-_080F7D60: .4byte gUnknown_083E5388
-_080F7D64: .4byte gOtherText_DontYouAgree
-_080F7D68:
- ldr r0, _080F7DA0 @ =gStringVar4
- ldr r3, _080F7DA4 @ =gUnknown_083E53A8
- ldrb r1, [r5, 0x2]
- adds r2, r1, 0x1
- strb r2, [r5, 0x2]
- lsls r1, 24
- lsrs r1, 24
- adds r2, r5, 0
- adds r2, 0x18
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl StringCopy
-_080F7D88:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _080F7DA8
- movs r0, 0xA
- b _080F7DAC
- .align 2, 0
-_080F7DA0: .4byte gStringVar4
-_080F7DA4: .4byte gUnknown_083E53A8
-_080F7DA8:
- ldrb r0, [r5, 0x1]
- adds r0, 0x1
-_080F7DAC:
- strb r0, [r5, 0x1]
- ldr r1, _080F7DBC @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7DBC: .4byte gScriptResult
- thumb_func_end sub_80F7CF4
-
thumb_func_start sub_80F7DC0
sub_80F7DC0: @ 80F7DC0
push {r4-r7,lr}
diff --git a/asm/name_string_util.s b/asm/name_string_util.s
deleted file mode 100644
index 3fcfd89d9..000000000
--- a/asm/name_string_util.s
+++ /dev/null
@@ -1,76 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start PadNameString
-PadNameString: @ 814A518
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl StripExtCtrlCodes
- adds r0, r4, 0
- bl StringLength
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r5, 0xFC
- bne _0814A556
- cmp r1, 0x5
- bhi _0814A55A
- movs r3, 0xFC
- movs r2, 0x7
-_0814A53A:
- adds r0, r4, r1
- strb r3, [r0]
- strb r2, [r0, 0x1]
- adds r0, r1, 0x2
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x5
- bls _0814A53A
- b _0814A55A
-_0814A54C:
- adds r0, r4, r1
- strb r5, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
-_0814A556:
- cmp r1, 0x5
- bls _0814A54C
-_0814A55A:
- adds r1, r4, r1
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end PadNameString
-
- thumb_func_start SanitizeNameString
-SanitizeNameString: @ 814A568
- push {r4,lr}
- adds r4, r0, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5
- bhi _0814A582
- adds r0, r4, 0
- movs r1, 0x1
- bl ConvertInternationalString
- b _0814A588
-_0814A582:
- adds r0, r4, 0
- bl StripExtCtrlCodes
-_0814A588:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SanitizeNameString
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
deleted file mode 100644
index aeec1b4bc..000000000
--- a/asm/naming_screen.s
+++ /dev/null
@@ -1,4331 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start DoNamingScreen
-DoNamingScreen: @ 80B59CC
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, [sp, 0x14]
- ldr r5, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- str r4, [sp]
- str r5, [sp, 0x4]
- bl AddNamingScreenTask
- ldr r0, _080B59F8 @ =C2_NamingScreen
- bl SetMainCallback2
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B59F8: .4byte C2_NamingScreen
- thumb_func_end DoNamingScreen
-
- thumb_func_start C2_NamingScreen
-C2_NamingScreen: @ 80B59FC
- push {lr}
- ldr r0, _080B5A14 @ =gMain
- ldr r1, _080B5A18 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- bhi _080B5A96
- lsls r0, 2
- ldr r1, _080B5A1C @ =_080B5A20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B5A14: .4byte gMain
-_080B5A18: .4byte 0x0000043c
-_080B5A1C: .4byte _080B5A20
- .align 2, 0
-_080B5A20:
- .4byte _080B5A40
- .4byte _080B5A4A
- .4byte _080B5A50
- .4byte _080B5A56
- .4byte _080B5A5C
- .4byte _080B5A62
- .4byte _080B5A68
- .4byte _080B5A84
-_080B5A40:
- bl NamingScreen_TurnOffScreen
- bl NamingScreen_Init
- b _080B5A6C
-_080B5A4A:
- bl NamingScreen_ClearVram
- b _080B5A6C
-_080B5A50:
- bl NamingScreen_ClearOam
- b _080B5A6C
-_080B5A56:
- bl NamingScreen_SetUpVideoRegs
- b _080B5A6C
-_080B5A5C:
- bl sub_80B5DC8
- b _080B5A6C
-_080B5A62:
- bl NamingScreen_ResetObjects
- b _080B5A6C
-_080B5A68:
- bl sub_80B5DFC
-_080B5A6C:
- ldr r1, _080B5A7C @ =gMain
- ldr r0, _080B5A80 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080B5A96
- .align 2, 0
-_080B5A7C: .4byte gMain
-_080B5A80: .4byte 0x0000043c
-_080B5A84:
- bl sub_80B5E20
- bl sub_80B5E3C
- bl sub_80B5C04
- ldr r0, _080B5A9C @ =sub_80B5AA0
- bl SetMainCallback2
-_080B5A96:
- pop {r0}
- bx r0
- .align 2, 0
-_080B5A9C: .4byte sub_80B5AA0
- thumb_func_end C2_NamingScreen
-
- thumb_func_start sub_80B5AA0
-sub_80B5AA0: @ 80B5AA0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80B5AA0
-
- thumb_func_start sub_80B5AB8
-sub_80B5AB8: @ 80B5AB8
- push {r4,lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r1, _080B5B00 @ =REG_BG1VOFS
- ldr r4, _080B5B04 @ =0x02000000
- ldrh r0, [r4, 0x4]
- strh r0, [r1]
- adds r1, 0x4
- ldrh r0, [r4, 0x6]
- strh r0, [r1]
- ldr r2, _080B5B08 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r3, _080B5B0C @ =0x0000fffc
- adds r0, r3, 0
- ands r0, r1
- strh r0, [r2]
- ldrh r0, [r2]
- ldrh r1, [r4, 0x8]
- orrs r0, r1
- strh r0, [r2]
- adds r2, 0x2
- ldrh r0, [r2]
- ands r3, r0
- strh r3, [r2]
- ldrh r0, [r2]
- ldrh r1, [r4, 0xA]
- orrs r0, r1
- strh r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5B00: .4byte REG_BG1VOFS
-_080B5B04: .4byte 0x02000000
-_080B5B08: .4byte REG_BG1CNT
-_080B5B0C: .4byte 0x0000fffc
- thumb_func_end sub_80B5AB8
-
- thumb_func_start AddNamingScreenTask
-AddNamingScreenTask: @ 80B5B10
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r7, [sp, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080B5B74 @ =NamingScreenDummyTask
- movs r1, 0xFF
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B5B78 @ =gTasks
- adds r4, r0
- mov r0, r8
- strh r0, [r4, 0x8]
- strh r5, [r4, 0xA]
- strh r6, [r4, 0xC]
- lsrs r0, r7, 16
- strh r0, [r4, 0xE]
- strh r7, [r4, 0x10]
- adds r0, r4, 0
- adds r0, 0x12
- mov r1, r9
- bl StoreWordInTwoHalfwords
- adds r4, 0x16
- adds r0, r4, 0
- ldr r1, [sp, 0x20]
- bl StoreWordInTwoHalfwords
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5B74: .4byte NamingScreenDummyTask
-_080B5B78: .4byte gTasks
- thumb_func_end AddNamingScreenTask
-
- thumb_func_start GetNamingScreenParameters
-GetNamingScreenParameters: @ 80B5B7C
- push {r4-r6,lr}
- ldr r0, _080B5BD8 @ =NamingScreenDummyTask
- bl FindTaskIdByFunc
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _080B5BDC @ =gTasks
- adds r4, r0
- ldr r6, _080B5BE0 @ =0x02000000
- ldrh r0, [r4, 0x8]
- strb r0, [r6, 0x1]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x3E]
- ldrh r1, [r4, 0xC]
- adds r0, r6, 0
- adds r0, 0x40
- strh r1, [r0]
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r0, 16
- ldrh r1, [r4, 0x10]
- orrs r0, r1
- str r0, [r6, 0x44]
- adds r0, r4, 0
- adds r0, 0x12
- adds r1, r6, 0
- adds r1, 0x38
- bl LoadWordFromTwoHalfwords
- adds r4, 0x16
- adds r1, r6, 0
- adds r1, 0x48
- adds r0, r4, 0
- bl LoadWordFromTwoHalfwords
- adds r0, r5, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5BD8: .4byte NamingScreenDummyTask
-_080B5BDC: .4byte gTasks
-_080B5BE0: .4byte 0x02000000
- thumb_func_end GetNamingScreenParameters
-
- thumb_func_start NamingScreenDummyTask
-NamingScreenDummyTask: @ 80B5BE4
- bx lr
- thumb_func_end NamingScreenDummyTask
-
- thumb_func_start NamingScreen_TurnOffScreen
-NamingScreen_TurnOffScreen: @ 80B5BE8
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- thumb_func_end NamingScreen_TurnOffScreen
-
- thumb_func_start sub_80B5C04
-sub_80B5C04: @ 80B5C04
- push {r4,lr}
- ldr r0, _080B5C3C @ =sub_80B5AB8
- bl SetVBlankCallback
- ldr r3, _080B5C40 @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _080B5C44 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _080B5C48 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5C3C: .4byte sub_80B5AB8
-_080B5C40: .4byte 0x04000208
-_080B5C44: .4byte 0x04000200
-_080B5C48: .4byte REG_DISPSTAT
- thumb_func_end sub_80B5C04
-
- thumb_func_start NamingScreen_ClearVram
-NamingScreen_ClearVram: @ 80B5C4C
- push {r4-r7,lr}
- sub sp, 0x4
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0x80
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- ldr r1, _080B5C98 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080B5C9C @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080B5C6A:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _080B5C6A
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5C98: .4byte 0x040000d4
-_080B5C9C: .4byte 0x81000800
- thumb_func_end NamingScreen_ClearVram
-
- thumb_func_start NamingScreen_ClearOam
-NamingScreen_ClearOam: @ 80B5CA0
- sub sp, 0x4
- movs r2, 0xE0
- lsls r2, 19
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080B5CBC @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080B5CC0 @ =0x81000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- add sp, 0x4
- bx lr
- .align 2, 0
-_080B5CBC: .4byte 0x040000d4
-_080B5CC0: .4byte 0x81000200
- thumb_func_end NamingScreen_ClearOam
-
- thumb_func_start NamingScreen_SetUpVideoRegs
-NamingScreen_SetUpVideoRegs: @ 80B5CC4
- push {r4,r5,lr}
- ldr r5, _080B5D2C @ =REG_BG0CNT
- movs r1, 0
- strh r1, [r5]
- ldr r2, _080B5D30 @ =REG_BG1CNT
- strh r1, [r2]
- ldr r3, _080B5D34 @ =REG_BG2CNT
- strh r1, [r3]
- ldr r4, _080B5D38 @ =REG_BG3CNT
- strh r1, [r4]
- ldr r0, _080B5D3C @ =REG_BG0HOFS
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- movs r1, 0xF8
- lsls r1, 5
- adds r0, r1, 0
- strh r0, [r5]
- ldr r1, _080B5D40 @ =0x00001c01
- adds r0, r1, 0
- strh r0, [r2]
- ldr r2, _080B5D44 @ =0x00001d0a
- adds r0, r2, 0
- strh r0, [r3]
- ldr r1, _080B5D48 @ =0x00001e03
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, _080B5D4C @ =REG_BLDCNT
- movs r2, 0xC8
- lsls r2, 3
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080B5D50 @ =0x0000080c
- adds r0, r2, 0
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5D2C: .4byte REG_BG0CNT
-_080B5D30: .4byte REG_BG1CNT
-_080B5D34: .4byte REG_BG2CNT
-_080B5D38: .4byte REG_BG3CNT
-_080B5D3C: .4byte REG_BG0HOFS
-_080B5D40: .4byte 0x00001c01
-_080B5D44: .4byte 0x00001d0a
-_080B5D48: .4byte 0x00001e03
-_080B5D4C: .4byte REG_BLDCNT
-_080B5D50: .4byte 0x0000080c
- thumb_func_end NamingScreen_SetUpVideoRegs
-
- thumb_func_start NamingScreen_Init
-NamingScreen_Init: @ 80B5D54
- push {r4-r6,lr}
- bl GetNamingScreenParameters
- ldr r4, _080B5DBC @ =0x02000000
- movs r0, 0
- strb r0, [r4]
- movs r2, 0
- strh r0, [r4, 0x4]
- strh r0, [r4, 0x6]
- movs r1, 0x1
- movs r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x2
- strh r0, [r4, 0xA]
- strb r2, [r4, 0xC]
- strb r1, [r4, 0xD]
- ldr r1, _080B5DC0 @ =gUnknown_083CE398
- ldrb r0, [r4, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4, 0x34]
- ldrb r1, [r0, 0x4]
- strb r1, [r4, 0xE]
- ldrb r1, [r0, 0x1]
- lsrs r1, 1
- movs r0, 0xE
- subs r0, r1
- strh r0, [r4, 0x2]
- ldr r6, _080B5DC4 @ =gKeyRepeatStartDelay
- ldrh r0, [r6]
- strh r0, [r4, 0x3C]
- adds r5, r4, 0
- adds r5, 0x11
- adds r0, r5, 0
- movs r1, 0xFF
- movs r2, 0x10
- bl memset
- ldr r0, [r4, 0x34]
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B5DB2
- ldr r1, [r4, 0x38]
- adds r0, r5, 0
- bl StringCopy
-_080B5DB2:
- movs r0, 0x10
- strh r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5DBC: .4byte 0x02000000
-_080B5DC0: .4byte gUnknown_083CE398
-_080B5DC4: .4byte gKeyRepeatStartDelay
- thumb_func_end NamingScreen_Init
-
- thumb_func_start sub_80B5DC8
-sub_80B5DC8: @ 80B5DC8
- push {r4,lr}
- ldr r4, _080B5DE0 @ =gWindowConfig_81E6E88
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5DE0: .4byte gWindowConfig_81E6E88
- thumb_func_end sub_80B5DC8
-
- thumb_func_start NamingScreen_ResetObjects
-NamingScreen_ResetObjects: @ 80B5DE4
- push {lr}
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- pop {r0}
- bx r0
- thumb_func_end NamingScreen_ResetObjects
-
- thumb_func_start sub_80B5DFC
-sub_80B5DFC: @ 80B5DFC
- push {lr}
- bl sub_80B7558
- bl sub_80B753C
- bl sub_80B7680
- bl sub_80B75C4
- bl sub_80B7794
- bl sub_80B78A8
- bl sub_80B7960
- pop {r0}
- bx r0
- thumb_func_end sub_80B5DFC
-
- thumb_func_start sub_80B5E20
-sub_80B5E20: @ 80B5E20
- push {lr}
- bl sub_80B6774
- bl sub_80B6A80
- bl sub_80B6CA8
- bl sub_80B6D04
- bl sub_80B6E44
- pop {r0}
- bx r0
- thumb_func_end sub_80B5E20
-
- thumb_func_start sub_80B5E3C
-sub_80B5E3C: @ 80B5E3C
- push {lr}
- bl sub_80B61D8
- bl sub_80B6438
- bl sub_80B5E50
- pop {r0}
- bx r0
- thumb_func_end sub_80B5E3C
-
- thumb_func_start sub_80B5E50
-sub_80B5E50: @ 80B5E50
- push {r4,lr}
- ldr r4, _080B5E6C @ =sub_80B5E70
- adds r0, r4, 0
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5E6C: .4byte sub_80B5E70
- thumb_func_end sub_80B5E50
-
- thumb_func_start sub_80B5E70
-sub_80B5E70: @ 80B5E70
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r7, _080B5E9C @ =gUnknown_083CE218
- lsls r1, r0, 2
- adds r1, r0
- lsls r4, r1, 3
- ldr r6, _080B5EA0 @ =0x02000000
- ldr r5, _080B5EA4 @ =gTasks
-_080B5E82:
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r7
- ldr r1, [r0]
- adds r0, r4, r5
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _080B5E82
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5E9C: .4byte gUnknown_083CE218
-_080B5EA0: .4byte 0x02000000
-_080B5EA4: .4byte gTasks
- thumb_func_end sub_80B5E70
-
- thumb_func_start sub_80B5EA8
-sub_80B5EA8: @ 80B5EA8
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _080B5ECC @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_080B5ECC: .4byte 0x02000000
- thumb_func_end sub_80B5EA8
-
- thumb_func_start sub_80B5ED0
-sub_80B5ED0: @ 80B5ED0
- push {lr}
- ldr r0, _080B5EF8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B5EF2
- movs r0, 0x1
- bl sub_80B6210
- movs r0, 0x1
- bl sub_80B68D8
- ldr r1, _080B5EFC @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080B5EF2:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B5EF8: .4byte gPaletteFade
-_080B5EFC: .4byte 0x02000000
- thumb_func_end sub_80B5ED0
-
- thumb_func_start sub_80B5F00
-sub_80B5F00: @ 80B5F00
- push {lr}
- bl sub_80B60B8
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80B5F00
-
- thumb_func_start sub_80B5F10
-sub_80B5F10: @ 80B5F10
- push {lr}
- bl sub_80B6938
- lsls r0, 24
- cmp r0, 0
- beq _080B5F2C
- movs r0, 0x1
- bl sub_80B6210
- bl sub_80B6878
- ldr r1, _080B5F34 @ =0x02000000
- movs r0, 0x2
- strb r0, [r1]
-_080B5F2C:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B5F34: .4byte 0x02000000
- thumb_func_end sub_80B5F10
-
- thumb_func_start sub_80B5F38
-sub_80B5F38: @ 80B5F38
- push {lr}
- movs r0, 0
- bl sub_80B6210
- bl sub_80B6B14
- bl sub_80B65F0
- movs r0, 0x1
- bl sub_80B6888
- movs r0, 0
- movs r1, 0
- movs r2, 0x1
- bl sub_80B6460
- movs r0, 0x6
- bl PlaySE
- ldr r1, _080B5F6C @ =0x02000000
- movs r0, 0x5
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B5F6C: .4byte 0x02000000
- thumb_func_end sub_80B5F38
-
- thumb_func_start sub_80B5F70
-sub_80B5F70: @ 80B5F70
- push {r4,r5,lr}
- sub sp, 0x4
- bl sub_80B6610
- lsls r0, 24
- cmp r0, 0
- beq _080B5FDC
- ldr r4, _080B5FE8 @ =0x02000000
- movs r0, 0x2
- strb r0, [r4]
- ldrb r0, [r4, 0xE]
- adds r0, 0x1
- strb r0, [r4, 0xE]
- ldrb r0, [r4, 0xE]
- movs r1, 0x3
- bl __umodsi3
- strb r0, [r4, 0xE]
- bl sub_80B7614
- bl sub_80B77F8
- movs r0, 0x1
- bl sub_80B6210
- mov r5, sp
- adds r5, 0x2
- mov r0, sp
- adds r1, r5, 0
- bl sub_80B6858
- ldrb r0, [r4, 0xE]
- cmp r0, 0x2
- bne _080B5FC8
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080B5FC8
- mov r1, sp
- movs r0, 0x5
- strh r0, [r1]
-_080B5FC8:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl sub_80B680C
- movs r0, 0
- bl sub_80B6888
-_080B5FDC:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080B5FE8: .4byte 0x02000000
- thumb_func_end sub_80B5F70
-
- thumb_func_start pokemon_store
-pokemon_store: @ 80B5FEC
- push {r4,lr}
- bl sub_80B74B0
- movs r0, 0
- bl sub_80B6210
- movs r0, 0
- bl sub_80B68D8
- movs r0, 0x3
- movs r1, 0
- movs r2, 0x1
- bl sub_80B6460
- ldr r0, _080B6030 @ =gKeyRepeatStartDelay
- ldr r4, _080B6034 @ =0x02000000
- ldrh r1, [r4, 0x3C]
- strh r1, [r0]
- ldrb r0, [r4, 0x1]
- cmp r0, 0x2
- bne _080B6038
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _080B6038
- bl sub_80B74FC
- movs r0, 0x7
- strb r0, [r4]
- movs r0, 0
- b _080B6040
- .align 2, 0
-_080B6030: .4byte gKeyRepeatStartDelay
-_080B6034: .4byte 0x02000000
-_080B6038:
- ldr r1, _080B6048 @ =0x02000000
- movs r0, 0x8
- strb r0, [r1]
- movs r0, 0x1
-_080B6040:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080B6048: .4byte 0x02000000
- thumb_func_end pokemon_store
-
- thumb_func_start sub_80B604C
-sub_80B604C: @ 80B604C
- push {lr}
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _080B6060
- ldr r1, _080B6068 @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080B6060:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B6068: .4byte 0x02000000
- thumb_func_end sub_80B604C
-
- thumb_func_start sub_80B606C
-sub_80B606C: @ 80B606C
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080B6090 @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_080B6090: .4byte 0x02000000
- thumb_func_end sub_80B606C
-
- thumb_func_start sub_80B6094
-sub_80B6094: @ 80B6094
- push {lr}
- ldr r0, _080B60B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B60AA
- ldr r0, _080B60B4 @ =0x02000000
- ldr r0, [r0, 0x48]
- bl SetMainCallback2
-_080B60AA:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B60B0: .4byte gPaletteFade
-_080B60B4: .4byte 0x02000000
- thumb_func_end sub_80B6094
-
- thumb_func_start sub_80B60B8
-sub_80B60B8: @ 80B60B8
- push {r4,r5,lr}
- bl sub_80B61EC
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_80B6958
- lsls r0, 24
- lsrs r0, 24
- cmp r4, 0x8
- bne _080B60D6
- bl sub_80B61C8
- b _080B60F2
-_080B60D6:
- cmp r4, 0x6
- bne _080B60E0
- bl sub_80B6FBC
- b _080B6100
-_080B60E0:
- cmp r5, 0x7
- beq _080B60FC
- ldr r1, _080B60F8 @ =gUnknown_083CE240
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
-_080B60F2:
- lsls r0, 24
- lsrs r0, 24
- b _080B6102
- .align 2, 0
-_080B60F8: .4byte gUnknown_083CE240
-_080B60FC:
- bl sub_80B7090
-_080B6100:
- movs r0, 0
-_080B6102:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B60B8
-
- thumb_func_start sub_80B6108
-sub_80B6108: @ 80B6108
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl sub_80B6460
- cmp r4, 0x5
- bne _080B613C
- bl sub_80B7004
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80B6914
- cmp r4, 0
- beq _080B613C
- movs r0, 0
- bl sub_80B6210
- ldr r1, _080B6144 @ =0x02000000
- movs r0, 0x3
- strb r0, [r1]
-_080B613C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080B6144: .4byte 0x02000000
- thumb_func_end sub_80B6108
-
- thumb_func_start sub_80B6148
-sub_80B6148: @ 80B6148
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_80B6460
- cmp r4, 0x5
- beq _080B6162
- movs r0, 0
- b _080B616A
-_080B6162:
- bl sub_80B61C8
- lsls r0, 24
- lsrs r0, 24
-_080B616A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B6148
-
- thumb_func_start sub_80B6170
-sub_80B6170: @ 80B6170
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl sub_80B6460
- cmp r4, 0x5
- bne _080B618A
- bl sub_80B6FBC
-_080B618A:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B6170
-
- thumb_func_start sub_80B6194
-sub_80B6194: @ 80B6194
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl sub_80B6460
- cmp r4, 0x5
- beq _080B61AE
- movs r0, 0
- b _080B61BC
-_080B61AE:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080B61C4 @ =0x02000000
- movs r0, 0x6
- strb r0, [r1]
- movs r0, 0x1
-_080B61BC:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080B61C4: .4byte 0x02000000
- thumb_func_end sub_80B6194
-
- thumb_func_start sub_80B61C8
-sub_80B61C8: @ 80B61C8
- ldr r1, _080B61D4 @ =0x02000000
- movs r0, 0x4
- strb r0, [r1]
- movs r0, 0x1
- bx lr
- .align 2, 0
-_080B61D4: .4byte 0x02000000
- thumb_func_end sub_80B61C8
-
- thumb_func_start sub_80B61D8
-sub_80B61D8: @ 80B61D8
- push {lr}
- ldr r0, _080B61E8 @ =sub_80B623C
- movs r1, 0x1
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B61E8: .4byte sub_80B623C
- thumb_func_end sub_80B61D8
-
- thumb_func_start sub_80B61EC
-sub_80B61EC: @ 80B61EC
- push {lr}
- ldr r0, _080B6208 @ =sub_80B623C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B620C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0xA]
- pop {r1}
- bx r1
- .align 2, 0
-_080B6208: .4byte sub_80B623C
-_080B620C: .4byte gTasks
- thumb_func_end sub_80B61EC
-
- thumb_func_start sub_80B6210
-sub_80B6210: @ 80B6210
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B6234 @ =sub_80B623C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B6238 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6234: .4byte sub_80B623C
-_080B6238: .4byte gTasks
- thumb_func_end sub_80B6210
-
- thumb_func_start sub_80B623C
-sub_80B623C: @ 80B623C
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _080B6264 @ =gUnknown_083CE250
- ldr r2, _080B6268 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080B6264: .4byte gUnknown_083CE250
-_080B6268: .4byte gTasks
- thumb_func_end sub_80B623C
-
- thumb_func_start sub_80B626C
-sub_80B626C: @ 80B626C
- movs r1, 0
- strh r1, [r0, 0xA]
- bx lr
- thumb_func_end sub_80B626C
-
- thumb_func_start sub_80B6274
-sub_80B6274: @ 80B6274
- push {lr}
- adds r2, r0, 0
- movs r0, 0
- strh r0, [r2, 0xA]
- ldr r0, _080B6290 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6294
- movs r0, 0x5
- strh r0, [r2, 0xA]
- b _080B62C8
- .align 2, 0
-_080B6290: .4byte gMain
-_080B6294:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B62A2
- movs r0, 0x6
- strh r0, [r2, 0xA]
- b _080B62C8
-_080B62A2:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B62B0
- movs r0, 0x8
- strh r0, [r2, 0xA]
- b _080B62C8
-_080B62B0:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080B62C2
- movs r0, 0x9
- strh r0, [r2, 0xA]
- bl sub_80B6878
- b _080B62C8
-_080B62C2:
- adds r0, r2, 0
- bl sub_80B62CC
-_080B62C8:
- pop {r0}
- bx r0
- thumb_func_end sub_80B6274
-
- thumb_func_start sub_80B62CC
-sub_80B62CC: @ 80B62CC
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl sub_80B6858
- ldr r0, _080B6374 @ =gMain
- ldrh r2, [r0, 0x30]
- movs r0, 0x40
- ands r0, r2
- lsls r0, 16
- lsrs r0, 16
- negs r0, r0
- lsrs r1, r0, 31
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _080B62F8
- movs r1, 0x2
-_080B62F8:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _080B6302
- movs r1, 0x3
-_080B6302:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- beq _080B630C
- movs r1, 0x4
-_080B630C:
- mov r0, sp
- ldrh r6, [r0]
- mov r2, sp
- ldr r0, _080B6378 @ =gUnknown_083CE258
- lsls r1, 1
- adds r0, r1, r0
- ldrh r3, [r0]
- adds r0, r6, r3
- strh r0, [r2]
- ldr r0, _080B637C @ =gUnknown_083CE262
- adds r1, r0
- ldrh r0, [r1]
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r4]
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _080B633A
- mov r1, sp
- movs r0, 0x8
- strh r0, [r1]
-_080B633A:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x8
- ble _080B634A
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
-_080B634A:
- lsls r0, r3, 16
- asrs r1, r0, 16
- cmp r1, 0
- beq _080B63CA
- ldr r0, _080B6380 @ =0x02000000
- ldrb r0, [r0, 0xE]
- cmp r0, 0x2
- bne _080B638A
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080B638A
- cmp r1, 0
- ble _080B6384
- mov r1, sp
- movs r0, 0x8
- b _080B6388
- .align 2, 0
-_080B6374: .4byte gMain
-_080B6378: .4byte gUnknown_083CE258
-_080B637C: .4byte gUnknown_083CE262
-_080B6380: .4byte 0x02000000
-_080B6384:
- mov r1, sp
- movs r0, 0x5
-_080B6388:
- strh r0, [r1]
-_080B638A:
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x8
- bne _080B63AC
- ldrh r0, [r4]
- strh r0, [r5, 0xC]
- ldr r1, _080B63A8 @ =gUnknown_083CE26C
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- b _080B63C8
- .align 2, 0
-_080B63A8: .4byte gUnknown_083CE26C
-_080B63AC:
- cmp r6, 0x8
- bne _080B63CA
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B63BC
- ldrh r0, [r5, 0xC]
- b _080B63C8
-_080B63BC:
- ldr r0, _080B63FC @ =gUnknown_083CE274
- movs r2, 0
- ldrsh r1, [r4, r2]
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
-_080B63C8:
- strh r0, [r4]
-_080B63CA:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x8
- bne _080B6408
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bge _080B63E0
- movs r0, 0x2
- strh r0, [r4]
-_080B63E0:
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- ble _080B63EC
- movs r0, 0
- strh r0, [r4]
-_080B63EC:
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B6400
- movs r0, 0x1
- strh r0, [r5, 0xC]
- b _080B6420
- .align 2, 0
-_080B63FC: .4byte gUnknown_083CE274
-_080B6400:
- cmp r0, 0x2
- bne _080B6420
- strh r0, [r5, 0xC]
- b _080B6420
-_080B6408:
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080B6414
- movs r0, 0x3
- strh r0, [r4]
-_080B6414:
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- ble _080B6420
- movs r0, 0
- strh r0, [r4]
-_080B6420:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl sub_80B680C
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B62CC
-
- thumb_func_start sub_80B6438
-sub_80B6438: @ 80B6438
- push {lr}
- ldr r0, _080B6458 @ =sub_80B64D4
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B645C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x3
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_080B6458: .4byte sub_80B64D4
-_080B645C: .4byte gTasks
- thumb_func_end sub_80B6438
-
- thumb_func_start sub_80B6460
-sub_80B6460: @ 80B6460
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _080B6498 @ =sub_80B64D4
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B649C @ =gTasks
- adds r4, r1, r0
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r5, r0
- bne _080B64A0
- cmp r6, 0
- bne _080B64A0
- strh r7, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0xC]
- b _080B64CC
- .align 2, 0
-_080B6498: .4byte sub_80B64D4
-_080B649C: .4byte gTasks
-_080B64A0:
- cmp r5, 0x3
- bne _080B64B0
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B64B0
- cmp r6, 0
- beq _080B64CC
-_080B64B0:
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- beq _080B64C2
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_80B65AC
-_080B64C2:
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r7, 0
- bl sub_80B65D4
-_080B64CC:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B6460
-
- thumb_func_start sub_80B64D4
-sub_80B64D4: @ 80B64D4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B6548 @ =gTasks
- adds r4, r1, r0
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- beq _080B6540
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B6540
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_80B654C
- lsls r0, 16
- lsrs r0, 16
- ldrb r3, [r4, 0xE]
- adds r1, r3, 0
- adds r2, r3, 0
- bl MultiplyInvertedPaletteRGBComponents
- ldrh r1, [r4, 0x12]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B6520
- subs r0, r1, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _080B6540
-_080B6520:
- movs r0, 0x2
- strh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- ldrh r2, [r4, 0xE]
- adds r0, r1, r2
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- beq _080B653C
- cmp r0, 0
- bne _080B6540
- ldrh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
-_080B653C:
- negs r0, r1
- strh r0, [r4, 0x10]
-_080B6540:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6548: .4byte gTasks
- thumb_func_end sub_80B64D4
-
- thumb_func_start sub_80B654C
-sub_80B654C: @ 80B654C
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x4
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x87
- lsls r1, 1
- adds r5, r1, 0
- adds r0, r5
- add r6, sp, 0x8
- strh r0, [r6]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x86
- lsls r1, 1
- adds r0, r1
- mov r1, sp
- adds r1, 0xA
- strh r0, [r1]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- adds r0, r5
- add r1, sp, 0xC
- strh r0, [r1]
- mov r0, sp
- adds r1, r6, 0
- movs r2, 0x6
- bl memcpy
- lsls r4, 1
- mov r1, sp
- adds r0, r1, r4
- ldrh r0, [r0]
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B654C
-
- thumb_func_start sub_80B65AC
-sub_80B65AC: @ 80B65AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80B654C
- lsls r0, 16
- ldr r2, _080B65CC @ =gPlttBufferFaded
- lsrs r0, 15
- adds r2, r0, r2
- ldr r1, _080B65D0 @ =gPlttBufferUnfaded
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_080B65CC: .4byte gPlttBufferFaded
-_080B65D0: .4byte gPlttBufferUnfaded
- thumb_func_end sub_80B65AC
-
- thumb_func_start sub_80B65D4
-sub_80B65D4: @ 80B65D4
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- movs r2, 0x1
- strh r2, [r0, 0xC]
- movs r1, 0xF
- strh r1, [r0, 0xE]
- strh r2, [r0, 0x10]
- strh r3, [r0, 0x12]
- bx lr
- thumb_func_end sub_80B65D4
-
- thumb_func_start sub_80B65F0
-sub_80B65F0: @ 80B65F0
- push {r4,lr}
- ldr r4, _080B660C @ =sub_80B6630
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B660C: .4byte sub_80B6630
- thumb_func_end sub_80B65F0
-
- thumb_func_start sub_80B6610
-sub_80B6610: @ 80B6610
- push {lr}
- ldr r0, _080B6624 @ =sub_80B6630
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080B6628
- movs r0, 0
- b _080B662A
- .align 2, 0
-_080B6624: .4byte sub_80B6630
-_080B6628:
- movs r0, 0x1
-_080B662A:
- pop {r1}
- bx r1
- thumb_func_end sub_80B6610
-
- thumb_func_start sub_80B6630
-sub_80B6630: @ 80B6630
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080B6660 @ =gUnknown_083CE27C
- ldr r2, _080B6664 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_080B6642:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _080B6642
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6660: .4byte gUnknown_083CE27C
-_080B6664: .4byte gTasks
- thumb_func_end sub_80B6630
-
- thumb_func_start sub_80B6668
-sub_80B6668: @ 80B6668
- ldr r2, _080B667C @ =0x02000000
- movs r1, 0
- strh r1, [r2, 0x4]
- strh r1, [r2, 0x6]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- movs r0, 0
- bx lr
- .align 2, 0
-_080B667C: .4byte 0x02000000
- thumb_func_end sub_80B6668
-
- thumb_func_start sub_80B6680
-sub_80B6680: @ 80B6680
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, _080B66E4 @ =gUnknown_083CE28C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl Sin
- ldr r5, _080B66E8 @ =0x02000000
- ldrb r1, [r5, 0xC]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- ldrh r0, [r4, 0xA]
- adds r0, 0x80
- movs r1, 0xFF
- ands r0, r1
- movs r1, 0x28
- bl Sin
- ldrb r1, [r5, 0xD]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x3F
- ble _080B66DA
- ldrb r1, [r5, 0x8]
- ldrh r0, [r5, 0xA]
- strh r0, [r5, 0x8]
- strh r1, [r5, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B66DA:
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080B66E4: .4byte gUnknown_083CE28C
-_080B66E8: .4byte 0x02000000
- thumb_func_end sub_80B6680
-
- thumb_func_start sub_80B66EC
-sub_80B66EC: @ 80B66EC
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, _080B6750 @ =gUnknown_083CE28C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl Sin
- ldr r5, _080B6754 @ =0x02000000
- ldrb r1, [r5, 0xC]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- ldrh r0, [r4, 0xA]
- adds r0, 0x80
- movs r1, 0xFF
- ands r0, r1
- movs r1, 0x28
- bl Sin
- ldrb r1, [r5, 0xD]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- ble _080B6746
- ldrb r1, [r5, 0xC]
- ldrb r0, [r5, 0xD]
- strb r0, [r5, 0xC]
- strb r1, [r5, 0xD]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B6746:
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080B6750: .4byte gUnknown_083CE28C
-_080B6754: .4byte 0x02000000
- thumb_func_end sub_80B66EC
-
- thumb_func_start sub_80B6758
-sub_80B6758: @ 80B6758
- push {lr}
- ldr r0, _080B6770 @ =sub_80B6630
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B6770: .4byte sub_80B6630
- thumb_func_end sub_80B6758
-
- thumb_func_start sub_80B6774
-sub_80B6774: @ 80B6774
- push {r4,r5,lr}
- ldr r0, _080B67E0 @ =gSpriteTemplate_83CE640
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- ldr r4, _080B67E4 @ =0x02000000
- strb r0, [r4, 0xF]
- ldr r5, _080B67E8 @ =gSprites
- ldrb r0, [r4, 0xF]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r2, r1
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldrb r1, [r4, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- strh r1, [r0, 0x3A]
- ldrb r1, [r4, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x2
- strh r1, [r0, 0x3A]
- movs r0, 0
- movs r1, 0
- bl sub_80B680C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B67E0: .4byte gSpriteTemplate_83CE640
-_080B67E4: .4byte 0x02000000
-_080B67E8: .4byte gSprites
- thumb_func_end sub_80B6774
-
- thumb_func_start sub_80B67EC
-sub_80B67EC: @ 80B67EC
- ldr r3, _080B6804 @ =gUnknown_083CE294
- lsls r0, 16
- asrs r0, 16
- ldr r1, _080B6808 @ =0x02000000
- ldrb r2, [r1, 0xE]
- lsls r1, r2, 3
- adds r1, r2
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080B6804: .4byte gUnknown_083CE294
-_080B6808: .4byte 0x02000000
- thumb_func_end sub_80B67EC
-
- thumb_func_start sub_80B680C
-sub_80B680C: @ 80B680C
- push {r4-r6,lr}
- adds r5, r1, 0
- lsls r0, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r1, _080B6850 @ =0x02000000
- ldrb r1, [r1, 0xF]
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r1, _080B6854 @ =gSprites
- adds r4, r1
- lsrs r6, r0, 16
- asrs r0, 16
- bl sub_80B67EC
- lsls r0, 24
- lsrs r0, 21
- adds r0, 0x1B
- strh r0, [r4, 0x20]
- lsls r0, r5, 16
- asrs r0, 12
- adds r0, 0x50
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x2E]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x34]
- strh r6, [r4, 0x2E]
- strh r5, [r4, 0x30]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6850: .4byte 0x02000000
-_080B6854: .4byte gSprites
- thumb_func_end sub_80B680C
-
- thumb_func_start sub_80B6858
-sub_80B6858: @ 80B6858
- ldr r2, _080B6870 @ =0x02000000
- ldrb r3, [r2, 0xF]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- ldr r3, _080B6874 @ =gSprites
- adds r2, r3
- ldrh r3, [r2, 0x2E]
- strh r3, [r0]
- ldrh r0, [r2, 0x30]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080B6870: .4byte 0x02000000
-_080B6874: .4byte gSprites
- thumb_func_end sub_80B6858
-
- thumb_func_start sub_80B6878
-sub_80B6878: @ 80B6878
- push {lr}
- movs r0, 0x8
- movs r1, 0x2
- bl sub_80B680C
- pop {r0}
- bx r0
- thumb_func_end sub_80B6878
-
- thumb_func_start sub_80B6888
-sub_80B6888: @ 80B6888
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080B68CC @ =gSprites
- ldr r4, _080B68D0 @ =0x02000000
- ldrb r1, [r4, 0xF]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r5
- ldrh r3, [r2, 0x36]
- ldr r1, _080B68D4 @ =0xffffff00
- ands r1, r3
- strh r1, [r2, 0x36]
- ldrb r2, [r4, 0xF]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldrh r2, [r1, 0x36]
- orrs r0, r2
- strh r0, [r1, 0x36]
- ldrb r1, [r4, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B68CC: .4byte gSprites
-_080B68D0: .4byte 0x02000000
-_080B68D4: .4byte 0xffffff00
- thumb_func_end sub_80B6888
-
- thumb_func_start sub_80B68D8
-sub_80B68D8: @ 80B68D8
- push {r4,r5,lr}
- lsls r0, 24
- ldr r5, _080B690C @ =gSprites
- ldr r4, _080B6910 @ =0x02000000
- ldrb r1, [r4, 0xF]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r5
- ldrh r3, [r2, 0x36]
- movs r1, 0xFF
- ands r1, r3
- strh r1, [r2, 0x36]
- ldrb r2, [r4, 0xF]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- lsrs r0, 16
- ldrh r2, [r1, 0x36]
- orrs r0, r2
- strh r0, [r1, 0x36]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B690C: .4byte gSprites
-_080B6910: .4byte 0x02000000
- thumb_func_end sub_80B68D8
-
- thumb_func_start sub_80B6914
-sub_80B6914: @ 80B6914
- push {lr}
- ldr r0, _080B6930 @ =0x02000000
- ldrb r1, [r0, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B6934 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .align 2, 0
-_080B6930: .4byte 0x02000000
-_080B6934: .4byte gSprites
- thumb_func_end sub_80B6914
-
- thumb_func_start sub_80B6938
-sub_80B6938: @ 80B6938
- ldr r2, _080B6950 @ =gSprites
- ldr r0, _080B6954 @ =0x02000000
- ldrb r1, [r0, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 31
- bx lr
- .align 2, 0
-_080B6950: .4byte gSprites
-_080B6954: .4byte 0x02000000
- thumb_func_end sub_80B6938
-
- thumb_func_start sub_80B6958
-sub_80B6958: @ 80B6958
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r1, _080B6988 @ =gUnknown_083CE2AF
- mov r0, sp
- movs r2, 0x3
- bl memcpy
- add r4, sp, 0x4
- mov r5, sp
- adds r5, 0x6
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B6858
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- ble _080B698C
- movs r1, 0
- ldrsh r0, [r5, r1]
- add r0, sp
- ldrb r0, [r0]
- b _080B698E
- .align 2, 0
-_080B6988: .4byte gUnknown_083CE2AF
-_080B698C:
- movs r0, 0
-_080B698E:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B6958
-
- thumb_func_start sub_80B6998
-sub_80B6998: @ 80B6998
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B69B0
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_080B69B0:
- ldrh r1, [r4, 0x36]
- movs r0, 0xFF
- ands r0, r1
- adds r3, r4, 0
- adds r3, 0x3E
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- ldrb r1, [r3]
- movs r2, 0x5
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r3]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _080B69DA
- movs r0, 0x4
- orrs r2, r0
- strb r2, [r3]
-_080B69DA:
- ldrb r1, [r3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080B6A0A
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B6A0A
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080B6A0A
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _080B6A16
-_080B6A0A:
- movs r0, 0
- strh r0, [r4, 0x38]
- movs r0, 0x1
- strh r0, [r4, 0x3A]
- movs r0, 0x2
- strh r0, [r4, 0x3C]
-_080B6A16:
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- cmp r0, 0
- bne _080B6A3E
- ldrh r1, [r4, 0x3A]
- ldrh r2, [r4, 0x38]
- adds r0, r1, r2
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- beq _080B6A36
- cmp r0, 0
- bne _080B6A3A
-_080B6A36:
- negs r0, r1
- strh r0, [r4, 0x3A]
-_080B6A3A:
- movs r0, 0x2
- strh r0, [r4, 0x3C]
-_080B6A3E:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B6A74
- ldrh r4, [r4, 0x38]
- lsls r5, r4, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 17
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 4
- ldr r2, _080B6A7C @ =0x01010000
- adds r0, r2
- lsrs r0, 16
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r5, 0
- bl MultiplyInvertedPaletteRGBComponents
-_080B6A74:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6A7C: .4byte 0x01010000
- thumb_func_end sub_80B6998
-
- thumb_func_start sub_80B6A80
-sub_80B6A80: @ 80B6A80
- push {r4,r5,lr}
- ldr r0, _080B6AF8 @ =gSpriteTemplate_83CE5C8
- movs r1, 0xCC
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B6AFC @ =0x02000000
- strb r0, [r1, 0x10]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r5, _080B6B00 @ =gSprites
- adds r4, r5
- ldr r1, _080B6B04 @ =gSubspriteTables_83CE558
- adds r0, r4, 0
- bl SetSubspriteTables
- ldr r0, _080B6B08 @ =gSpriteTemplate_83CE5F8
- movs r1, 0xCC
- movs r2, 0x4C
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x3A]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- ldr r1, _080B6B0C @ =gSubspriteTables_83CE560
- adds r0, r2, 0
- bl SetSubspriteTables
- ldr r0, _080B6B10 @ =gSpriteTemplate_83CE5E0
- movs r1, 0xCC
- movs r2, 0x4B
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- ands r2, r3
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r1, 0x5]
- strh r0, [r4, 0x3C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6AF8: .4byte gSpriteTemplate_83CE5C8
-_080B6AFC: .4byte 0x02000000
-_080B6B00: .4byte gSprites
-_080B6B04: .4byte gSubspriteTables_83CE558
-_080B6B08: .4byte gSpriteTemplate_83CE5F8
-_080B6B0C: .4byte gSubspriteTables_83CE560
-_080B6B10: .4byte gSpriteTemplate_83CE5E0
- thumb_func_end sub_80B6A80
-
- thumb_func_start sub_80B6B14
-sub_80B6B14: @ 80B6B14
- ldr r2, _080B6B2C @ =0x02000000
- ldrb r1, [r2, 0x10]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B6B30 @ =gSprites
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x2E]
- ldrb r1, [r2, 0xE]
- strh r1, [r0, 0x30]
- bx lr
- .align 2, 0
-_080B6B2C: .4byte 0x02000000
-_080B6B30: .4byte gSprites
- thumb_func_end sub_80B6B14
-
- thumb_func_start sub_80B6B34
-sub_80B6B34: @ 80B6B34
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B6B58 @ =gUnknown_083CE2B4
-_080B6B3A:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _080B6B3A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6B58: .4byte gUnknown_083CE2B4
- thumb_func_end sub_80B6B34
-
- thumb_func_start sub_80B6B5C
-sub_80B6B5C: @ 80B6B5C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r3, _080B6B90 @ =gSprites
- adds r1, r3
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldr r0, _080B6B94 @ =0x02000000
- ldrb r0, [r0, 0xE]
- bl sub_80B6C48
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080B6B90: .4byte gSprites
-_080B6B94: .4byte 0x02000000
- thumb_func_end sub_80B6B5C
-
- thumb_func_start sub_80B6B98
-sub_80B6B98: @ 80B6B98
- movs r0, 0
- bx lr
- thumb_func_end sub_80B6B98
-
- thumb_func_start sub_80B6B9C
-sub_80B6B9C: @ 80B6B9C
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r2, _080B6C00 @ =gSprites
- adds r4, r0, r2
- movs r0, 0x3C
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r2
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080B6BF8
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- ldr r0, _080B6C04 @ =0x0000fffc
- strh r0, [r4, 0x26]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r3, 0x30]
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80B6C48
-_080B6BF8:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080B6C00: .4byte gSprites
-_080B6C04: .4byte 0x0000fffc
- thumb_func_end sub_80B6B9C
-
- thumb_func_start sub_80B6C08
-sub_80B6C08: @ 80B6C08
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B6C44 @ =gSprites
- adds r2, r0, r1
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _080B6C3C
- movs r0, 0
- strh r0, [r2, 0x26]
- movs r0, 0x1
- strh r0, [r4, 0x2E]
-_080B6C3C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080B6C44: .4byte gSprites
- thumb_func_end sub_80B6C08
-
- thumb_func_start sub_80B6C48
-sub_80B6C48: @ 80B6C48
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080B6CA0 @ =gUnknown_083CE2C4
- lsls r4, r5, 1
- adds r0, r4, r0
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 4
- mov r1, r8
- ldrb r2, [r1, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- mov r0, r8
- strb r1, [r0, 0x5]
- ldr r0, _080B6CA4 @ =gUnknown_083CE2CA
- adds r4, r0
- ldrh r0, [r4]
- bl GetSpriteTileStartByTag
- adds r1, r6, 0
- adds r1, 0x40
- strh r0, [r1]
- adds r6, 0x42
- movs r1, 0x3F
- ands r1, r5
- ldrb r2, [r6]
- movs r0, 0x40
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6CA0: .4byte gUnknown_083CE2C4
-_080B6CA4: .4byte gUnknown_083CE2CA
- thumb_func_end sub_80B6C48
-
- thumb_func_start sub_80B6CA8
-sub_80B6CA8: @ 80B6CA8
- push {r4,r5,lr}
- ldr r0, _080B6CF4 @ =gSpriteTemplate_83CE610
- movs r1, 0xCC
- movs r2, 0x6C
- movs r3, 0
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080B6CF8 @ =gSprites
- adds r0, r4
- ldr r5, _080B6CFC @ =gSubspriteTables_83CE578
- adds r1, r5, 0
- bl SetSubspriteTables
- ldr r0, _080B6D00 @ =gSpriteTemplate_83CE628
- movs r1, 0xCC
- movs r2, 0x84
- movs r3, 0
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r1, r5, 0
- bl SetSubspriteTables
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6CF4: .4byte gSpriteTemplate_83CE610
-_080B6CF8: .4byte gSprites
-_080B6CFC: .4byte gSubspriteTables_83CE578
-_080B6D00: .4byte gSpriteTemplate_83CE628
- thumb_func_end sub_80B6CA8
-
- thumb_func_start sub_80B6D04
-sub_80B6D04: @ 80B6D04
- push {r4-r6,lr}
- ldr r4, _080B6D8C @ =0x02000000
- ldrh r1, [r4, 0x2]
- subs r1, 0x1
- lsls r1, 3
- adds r1, 0x4
- ldr r0, _080B6D90 @ =gSpriteTemplate_83CE658
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x28
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, _080B6D94 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldrh r0, [r4, 0x2]
- lsls r0, 3
- adds r0, 0x4
- lsls r0, 16
- lsrs r1, r0, 16
- movs r5, 0
- ldr r0, [r4, 0x34]
- ldrb r0, [r0, 0x1]
- cmp r5, r0
- bcs _080B6D86
- adds r6, r3, 0
-_080B6D4A:
- lsls r4, r1, 16
- asrs r4, 16
- ldr r0, _080B6D98 @ =gSpriteTemplate_83CE670
- adds r1, r4, 0
- movs r2, 0x2C
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- strh r5, [r0, 0x2E]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x8
- lsls r4, 16
- lsrs r1, r4, 16
- ldr r0, _080B6D8C @ =0x02000000
- ldr r0, [r0, 0x34]
- ldrb r0, [r0, 0x1]
- cmp r5, r0
- bcc _080B6D4A
-_080B6D86:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6D8C: .4byte 0x02000000
-_080B6D90: .4byte gSpriteTemplate_83CE658
-_080B6D94: .4byte gSprites
-_080B6D98: .4byte gSpriteTemplate_83CE670
- thumb_func_end sub_80B6D04
-
- thumb_func_start sub_80B6D9C
-sub_80B6D9C: @ 80B6D9C
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _080B6DE4 @ =gUnknown_083CE2D0
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B6DC0
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080B6DCE
-_080B6DC0:
- movs r0, 0x8
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- strh r0, [r4, 0x30]
-_080B6DCE:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x24]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6DE4: .4byte gUnknown_083CE2D0
- thumb_func_end sub_80B6D9C
-
- thumb_func_start sub_80B6DE8
-sub_80B6DE8: @ 80B6DE8
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _080B6E10 @ =gUnknown_083CE2D8
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- bl sub_80B6F44
- lsls r0, 24
- ldrh r1, [r4, 0x2E]
- lsls r1, 24
- cmp r0, r1
- beq _080B6E14
- movs r0, 0
- strh r0, [r4, 0x26]
- strh r0, [r4, 0x30]
- b _080B6E3A
- .align 2, 0
-_080B6E10: .4byte gUnknown_083CE2D8
-_080B6E14:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080B6E3C
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r0, 0
-_080B6E3A:
- strh r0, [r4, 0x32]
-_080B6E3C:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B6DE8
-
- thumb_func_start sub_80B6E44
-sub_80B6E44: @ 80B6E44
- push {lr}
- ldr r1, _080B6E5C @ =gUnknown_083CE2E0
- ldr r0, _080B6E60 @ =0x02000000
- ldr r0, [r0, 0x34]
- ldrb r0, [r0, 0x2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r0}
- bx r0
- .align 2, 0
-_080B6E5C: .4byte gUnknown_083CE2E0
-_080B6E60: .4byte 0x02000000
- thumb_func_end sub_80B6E44
-
- thumb_func_start nullsub_40
-nullsub_40: @ 80B6E64
- bx lr
- thumb_func_end nullsub_40
-
- thumb_func_start sub_80B6E68
-sub_80B6E68: @ 80B6E68
- push {lr}
- sub sp, 0x4
- ldr r0, _080B6EB0 @ =0x02000000
- ldrh r1, [r0, 0x3E]
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_805983C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B6EB4 @ =SpriteCallbackDummy
- movs r2, 0
- str r2, [sp]
- movs r2, 0x38
- movs r3, 0x18
- bl AddPseudoFieldObject
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080B6EB8 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x4
- bl StartSpriteAnim
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080B6EB0: .4byte 0x02000000
-_080B6EB4: .4byte SpriteCallbackDummy
-_080B6EB8: .4byte gSprites
- thumb_func_end sub_80B6E68
-
- thumb_func_start sub_80B6EBC
-sub_80B6EBC: @ 80B6EBC
- push {r4,lr}
- ldr r0, _080B6EF0 @ =gSpriteTemplate_83CE688
- movs r1, 0x34
- movs r2, 0x18
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _080B6EF4 @ =gSprites
- adds r4, r0
- ldr r1, _080B6EF8 @ =gSubspriteTables_83CE580
- adds r0, r4, 0
- bl SetSubspriteTables
- ldrb r0, [r4, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r4, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6EF0: .4byte gSpriteTemplate_83CE688
-_080B6EF4: .4byte gSprites
-_080B6EF8: .4byte gSubspriteTables_83CE580
- thumb_func_end sub_80B6EBC
-
- thumb_func_start sub_80B6EFC
-sub_80B6EFC: @ 80B6EFC
- push {lr}
- sub sp, 0x8
- bl sub_809D51C
- ldr r3, _080B6F38 @ =0x02000000
- ldrh r0, [r3, 0x3E]
- ldr r1, _080B6F3C @ =SpriteCallbackDummy
- movs r2, 0
- str r2, [sp]
- ldr r2, [r3, 0x44]
- str r2, [sp, 0x4]
- movs r2, 0x34
- movs r3, 0x18
- bl CreateMonIcon
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B6F40 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- movs r2, 0xC
- orrs r0, r2
- strb r0, [r1, 0x5]
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080B6F38: .4byte 0x02000000
-_080B6F3C: .4byte SpriteCallbackDummy
-_080B6F40: .4byte gSprites
- thumb_func_end sub_80B6EFC
-
- thumb_func_start sub_80B6F44
-sub_80B6F44: @ 80B6F44
- push {r4,lr}
- movs r2, 0
- ldr r1, _080B6F64 @ =0x02000000
- ldr r0, [r1, 0x34]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r2, r0
- bcs _080B6F72
- adds r1, 0x11
- adds r3, r0, 0
-_080B6F58:
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080B6F68
- adds r0, r2, 0
- b _080B6F7C
- .align 2, 0
-_080B6F64: .4byte 0x02000000
-_080B6F68:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r3
- bcc _080B6F58
-_080B6F72:
- ldr r0, [r4, 0x34]
- ldrb r0, [r0, 0x1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_080B6F7C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B6F44
-
- thumb_func_start sub_80B6F84
-sub_80B6F84: @ 80B6F84
- push {lr}
- ldr r2, _080B6FA8 @ =0x02000000
- ldr r0, [r2, 0x34]
- ldrb r0, [r0, 0x1]
- subs r0, 0x1
- lsls r1, r0, 24
- cmp r1, 0
- ble _080B6FB4
- adds r3, r2, 0
- adds r3, 0x11
-_080B6F98:
- asrs r2, r1, 24
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080B6FAC
- lsrs r0, r1, 24
- b _080B6FB6
- .align 2, 0
-_080B6FA8: .4byte 0x02000000
-_080B6FAC:
- subs r0, r2, 0x1
- lsls r1, r0, 24
- cmp r1, 0
- bgt _080B6F98
-_080B6FB4:
- movs r0, 0
-_080B6FB6:
- pop {r1}
- bx r1
- thumb_func_end sub_80B6F84
-
- thumb_func_start sub_80B6FBC
-sub_80B6FBC: @ 80B6FBC
- push {r4,lr}
- bl sub_80B6F84
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B7000 @ =0x02000000
- adds r0, 0x11
- adds r4, r0
- movs r0, 0
- strb r0, [r4]
- bl sub_80B7960
- movs r0, 0xFF
- strb r0, [r4]
- bl sub_80B6958
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080B6FEA
- cmp r0, 0x2
- bne _080B6FF4
-_080B6FEA:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x1
- bl sub_80B6460
-_080B6FF4:
- movs r0, 0x17
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7000: .4byte 0x02000000
- thumb_func_end sub_80B6FBC
-
- thumb_func_start sub_80B7004
-sub_80B7004: @ 80B7004
- push {r4,r5,lr}
- sub sp, 0x4
- mov r5, sp
- adds r5, 0x2
- mov r0, sp
- adds r1, r5, 0
- bl sub_80B6858
- mov r4, sp
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl sub_80B67EC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl sub_80B7768
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- movs r4, 0x1
- cmp r0, 0xFF
- bne _080B7046
- bl sub_80B7104
- b _080B704E
-_080B7046:
- cmp r0, 0xFE
- bne _080B7054
- bl sub_80B713C
-_080B704E:
- lsls r0, 24
- lsrs r4, r0, 24
- b _080B705A
-_080B7054:
- adds r0, r1, 0
- bl sub_80B7174
-_080B705A:
- bl sub_80B7960
- movs r0, 0x5
- bl PlaySE
- cmp r4, 0
- beq _080B7084
- bl sub_80B6F84
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B7080 @ =0x02000000
- ldr r1, [r1, 0x34]
- ldrb r1, [r1, 0x1]
- subs r1, 0x1
- cmp r0, r1
- bne _080B7084
- movs r0, 0x1
- b _080B7086
- .align 2, 0
-_080B7080: .4byte 0x02000000
-_080B7084:
- movs r0, 0
-_080B7086:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B7004
-
- thumb_func_start sub_80B7090
-sub_80B7090: @ 80B7090
- push {r4-r7,lr}
- bl sub_80B6F84
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r0, _080B70C8 @ =0x02000000
- adds r0, 0x11
- adds r0, r5, r0
- ldrb r4, [r0]
- adds r6, r4, 0
- adds r0, r4, 0
- bl sub_80B7198
- lsls r0, 24
- cmp r0, 0
- beq _080B70D6
- adds r0, r4, 0
- bl sub_80B7264
- lsls r0, 24
- cmp r0, 0
- beq _080B70CC
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B7370
- b _080B70F4
- .align 2, 0
-_080B70C8: .4byte 0x02000000
-_080B70CC:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B73CC
- b _080B70F4
-_080B70D6:
- adds r0, r4, 0
- bl sub_80B71E4
- lsls r0, 24
- cmp r0, 0
- beq _080B70EC
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B7474
- b _080B70F4
-_080B70EC:
- adds r0, r6, 0
- adds r1, r7, 0
- bl sub_80B72A4
-_080B70F4:
- bl sub_80B7960
- movs r0, 0x5
- bl PlaySE
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7090
-
- thumb_func_start sub_80B7104
-sub_80B7104: @ 80B7104
- push {r4,r5,lr}
- bl sub_80B6F84
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B7128 @ =0x02000000
- adds r0, 0x11
- adds r0, r5, r0
- ldrb r4, [r0]
- adds r0, r4, 0
- bl sub_80B720C
- lsls r0, 24
- cmp r0, 0
- bne _080B712C
- movs r0, 0
- b _080B7136
- .align 2, 0
-_080B7128: .4byte 0x02000000
-_080B712C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B72A4
- movs r0, 0x1
-_080B7136:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B7104
-
- thumb_func_start sub_80B713C
-sub_80B713C: @ 80B713C
- push {r4,r5,lr}
- bl sub_80B6F84
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B7160 @ =0x02000000
- adds r0, 0x11
- adds r0, r5, r0
- ldrb r4, [r0]
- adds r0, r4, 0
- bl sub_80B7264
- lsls r0, 24
- cmp r0, 0
- bne _080B7164
- movs r0, 0
- b _080B716E
- .align 2, 0
-_080B7160: .4byte 0x02000000
-_080B7164:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B7370
- movs r0, 0x1
-_080B716E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B713C
-
- thumb_func_start sub_80B7174
-sub_80B7174: @ 80B7174
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80B6F44
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B7194 @ =0x02000000
- adds r1, 0x11
- adds r0, r1
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7194: .4byte 0x02000000
- thumb_func_end sub_80B7174
-
- thumb_func_start sub_80B7198
-sub_80B7198: @ 80B7198
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC9
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x13
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x74
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x6F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B71DE
-_080B71DA:
- movs r0, 0x1
- b _080B71E0
-_080B71DE:
- movs r0, 0
-_080B71E0:
- pop {r1}
- bx r1
- thumb_func_end sub_80B7198
-
- thumb_func_start sub_80B71E4
-sub_80B71E4: @ 80B71E4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xB5
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B7202
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7206
-_080B7202:
- movs r0, 0x1
- b _080B7208
-_080B7206:
- movs r0, 0
-_080B7208:
- pop {r1}
- bx r1
- thumb_func_end sub_80B71E4
-
- thumb_func_start sub_80B720C
-sub_80B720C: @ 80B720C
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFA
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xE
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x1A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x56
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B725A
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B725E
-_080B725A:
- movs r0, 0x1
- b _080B7260
-_080B725E:
- movs r0, 0
-_080B7260:
- pop {r1}
- bx r1
- thumb_func_end sub_80B720C
-
- thumb_func_start sub_80B7264
-sub_80B7264: @ 80B7264
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xE6
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B729A
- adds r0, r1, 0
- subs r0, 0x46
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B729A
- adds r0, r1, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B729A
- adds r0, r1, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B729E
-_080B729A:
- movs r0, 0x1
- b _080B72A0
-_080B729E:
- movs r0, 0
-_080B72A0:
- pop {r1}
- bx r1
- thumb_func_end sub_80B7264
-
- thumb_func_start sub_80B72A4
-sub_80B72A4: @ 80B72A4
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xFA
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72C0
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B72C0:
- adds r0, r2, 0
- subs r0, 0xB
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72D2
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B72D2:
- adds r0, r2, 0
- subs r0, 0x10
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72E4
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B72E4:
- adds r0, r2, 0
- subs r0, 0x1A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72F6
- adds r0, r2, 0
- adds r0, 0x2C
- b _080B735A
-_080B72F6:
- adds r0, r2, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B7356
- adds r0, r2, 0
- subs r0, 0x56
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7314
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B7314:
- adds r0, r2, 0
- subs r0, 0x5B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7326
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B7326:
- adds r0, r2, 0
- subs r0, 0x60
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7338
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B7338:
- adds r0, r2, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B734A
- adds r0, r2, 0
- adds r0, 0x2C
- b _080B735A
-_080B734A:
- adds r0, r2, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B735E
-_080B7356:
- adds r0, r2, 0
- adds r0, 0xFB
-_080B735A:
- lsls r0, 24
- lsrs r2, r0, 24
-_080B735E:
- ldr r0, _080B736C @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B736C: .4byte 0x02000000
- thumb_func_end sub_80B72A4
-
- thumb_func_start sub_80B7370
-sub_80B7370: @ 80B7370
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xE6
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B738C
- adds r0, r2, 0
- adds r0, 0x31
- b _080B73B8
-_080B738C:
- adds r0, r2, 0
- subs r0, 0x46
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B73B6
- adds r0, r2, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73AA
- adds r0, r2, 0
- adds r0, 0x31
- b _080B73B8
-_080B73AA:
- adds r0, r2, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73BC
-_080B73B6:
- adds r0, r2, 0x5
-_080B73B8:
- lsls r0, 24
- lsrs r2, r0, 24
-_080B73BC:
- ldr r0, _080B73C8 @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B73C8: .4byte 0x02000000
- thumb_func_end sub_80B7370
-
- thumb_func_start sub_80B73CC
-sub_80B73CC: @ 80B73CC
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xC9
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73E8
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B73E8:
- adds r0, r2, 0
- subs r0, 0x3C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73FA
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B73FA:
- adds r0, r2, 0
- subs r0, 0x41
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B740C
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B740C:
- adds r0, r2, 0
- subs r0, 0x46
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B745A
- adds r0, r2, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B742A
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B742A:
- adds r0, r2, 0
- adds r0, 0x74
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B743C
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B743C:
- adds r0, r2, 0
- adds r0, 0x6F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B744E
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B744E:
- adds r0, r2, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7462
-_080B745A:
- adds r0, r2, 0
- adds r0, 0xD4
-_080B745E:
- lsls r0, 24
- lsrs r2, r0, 24
-_080B7462:
- ldr r0, _080B7470 @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B7470: .4byte 0x02000000
- thumb_func_end sub_80B73CC
-
- thumb_func_start sub_80B7474
-sub_80B7474: @ 80B7474
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xB5
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B7496
- adds r0, r2, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B749E
-_080B7496:
- adds r0, r2, 0
- adds r0, 0xCF
- lsls r0, 24
- lsrs r2, r0, 24
-_080B749E:
- ldr r0, _080B74AC @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B74AC: .4byte 0x02000000
- thumb_func_end sub_80B7474
-
- thumb_func_start sub_80B74B0
-sub_80B74B0: @ 80B74B0
- push {r4,lr}
- movs r1, 0
- ldr r3, _080B74E4 @ =0x02000000
- ldr r0, [r3, 0x34]
- ldrb r0, [r0, 0x1]
- cmp r1, r0
- bcs _080B74F6
- adds r2, r3, 0
- adds r4, r3, 0
- adds r4, 0x11
-_080B74C4:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B74E8
- cmp r0, 0xFF
- beq _080B74E8
- ldr r0, [r2, 0x38]
- ldr r1, [r2, 0x34]
- ldrb r2, [r1, 0x1]
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r1, r4, 0
- bl StringCopyN
- b _080B74F6
- .align 2, 0
-_080B74E4: .4byte 0x02000000
-_080B74E8:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, [r3, 0x34]
- ldrb r0, [r0, 0x1]
- cmp r1, r0
- bcc _080B74C4
-_080B74F6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B74B0
-
- thumb_func_start sub_80B74FC
-sub_80B74FC: @ 80B74FC
- push {r4,lr}
- ldr r0, _080B7528 @ =gStringVar1
- ldr r1, _080B752C @ =0x02000000
- ldr r1, [r1, 0x38]
- bl StringCopy
- ldr r4, _080B7530 @ =gStringVar4
- ldr r1, _080B7534 @ =gOtherText_SentToPC
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _080B7538 @ =gWindowConfig_81E6E88
- bl BasicInitMenuWindow
- bl MenuDisplayMessageBox
- adds r0, r4, 0
- bl sub_8072044
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7528: .4byte gStringVar1
-_080B752C: .4byte 0x02000000
-_080B7530: .4byte gStringVar4
-_080B7534: .4byte gOtherText_SentToPC
-_080B7538: .4byte gWindowConfig_81E6E88
- thumb_func_end sub_80B74FC
-
- thumb_func_start sub_80B753C
-sub_80B753C: @ 80B753C
- push {lr}
- ldr r0, _080B7550 @ =gUnknown_083CE6A0
- bl LoadSpriteSheets
- ldr r0, _080B7554 @ =gUnknown_083CE708
- bl LoadSpritePalettes
- pop {r0}
- bx r0
- .align 2, 0
-_080B7550: .4byte gUnknown_083CE6A0
-_080B7554: .4byte gUnknown_083CE708
- thumb_func_end sub_80B753C
-
- thumb_func_start sub_80B7558
-sub_80B7558: @ 80B7558
- push {lr}
- bl sub_80B7568
- bl sub_80B75B0
- pop {r0}
- bx r0
- thumb_func_end sub_80B7558
-
- thumb_func_start sub_80B7568
-sub_80B7568: @ 80B7568
- push {r4,lr}
- ldr r4, _080B759C @ =gNamingScreenMenu_Gfx
- ldr r3, _080B75A0 @ =gMenuMessageBoxContentTileOffset
- ldrh r0, [r3]
- lsls r0, 5
- movs r1, 0xC0
- lsls r1, 19
- adds r0, r1
- ldr r1, _080B75A4 @ =0x040000d4
- str r4, [r1]
- str r0, [r1, 0x4]
- ldr r2, _080B75A8 @ =0x80000400
- str r2, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldrh r0, [r3]
- lsls r0, 5
- ldr r3, _080B75AC @ =0x06008000
- adds r0, r3
- str r4, [r1]
- str r0, [r1, 0x4]
- str r2, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B759C: .4byte gNamingScreenMenu_Gfx
-_080B75A0: .4byte gMenuMessageBoxContentTileOffset
-_080B75A4: .4byte 0x040000d4
-_080B75A8: .4byte 0x80000400
-_080B75AC: .4byte 0x06008000
- thumb_func_end sub_80B7568
-
- thumb_func_start sub_80B75B0
-sub_80B75B0: @ 80B75B0
- push {lr}
- ldr r0, _080B75C0 @ =gNamingScreenPalettes
- movs r1, 0
- movs r2, 0x80
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_080B75C0: .4byte gNamingScreenPalettes
- thumb_func_end sub_80B75B0
-
- thumb_func_start sub_80B75C4
-sub_80B75C4: @ 80B75C4
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _080B7608 @ =gUnknown_083CE308
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r4, _080B760C @ =gUnknown_083CE2F0
- ldr r5, _080B7610 @ =0x02000000
- ldrb r1, [r5, 0xE]
- lsls r1, 3
- adds r1, r4
- ldrb r0, [r5, 0xC]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [r1]
- bl _call_via_r1
- ldrb r1, [r5, 0xE]
- lsls r1, 3
- adds r4, 0x4
- adds r1, r4
- ldrb r0, [r5, 0xD]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7608: .4byte gUnknown_083CE308
-_080B760C: .4byte gUnknown_083CE2F0
-_080B7610: .4byte 0x02000000
- thumb_func_end sub_80B75C4
-
- thumb_func_start sub_80B7614
-sub_80B7614: @ 80B7614
- push {lr}
- sub sp, 0x8
- ldr r0, _080B7644 @ =gUnknown_083CE308
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, _080B7648 @ =gUnknown_083CE2F0
- ldr r2, _080B764C @ =0x02000000
- ldrb r1, [r2, 0xE]
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r2, 0xD]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080B7644: .4byte gUnknown_083CE308
-_080B7648: .4byte gUnknown_083CE2F0
-_080B764C: .4byte 0x02000000
- thumb_func_end sub_80B7614
-
- thumb_func_start sub_80B7650
-sub_80B7650: @ 80B7650
- push {lr}
- ldr r1, _080B765C @ =gUnknown_083CE748
- bl sub_80B7698
- pop {r0}
- bx r0
- .align 2, 0
-_080B765C: .4byte gUnknown_083CE748
- thumb_func_end sub_80B7650
-
- thumb_func_start sub_80B7660
-sub_80B7660: @ 80B7660
- push {lr}
- ldr r1, _080B766C @ =gUnknown_083CEBF8
- bl sub_80B7698
- pop {r0}
- bx r0
- .align 2, 0
-_080B766C: .4byte gUnknown_083CEBF8
- thumb_func_end sub_80B7660
-
- thumb_func_start sub_80B7670
-sub_80B7670: @ 80B7670
- push {lr}
- ldr r1, _080B767C @ =gUnknown_083CF0A8
- bl sub_80B7698
- pop {r0}
- bx r0
- .align 2, 0
-_080B767C: .4byte gUnknown_083CF0A8
- thumb_func_end sub_80B7670
-
- thumb_func_start sub_80B7680
-sub_80B7680: @ 80B7680
- push {lr}
- ldr r0, _080B7690 @ =0x0600f000
- ldr r1, _080B7694 @ =gUnknown_08E86258
- bl sub_80B76E0
- pop {r0}
- bx r0
- .align 2, 0
-_080B7690: .4byte 0x0600f000
-_080B7694: .4byte gUnknown_08E86258
- thumb_func_end sub_80B7680
-
- thumb_func_start sub_80B7698
-sub_80B7698: @ 80B7698
- push {r4-r7,lr}
- mov r12, r0
- adds r3, r1, 0
- movs r4, 0
- ldr r0, _080B76DC @ =gMenuMessageBoxContentTileOffset
- ldrh r6, [r0]
-_080B76A4:
- movs r1, 0
- lsls r4, 16
- asrs r5, r4, 11
-_080B76AA:
- lsls r0, r1, 16
- asrs r0, 16
- adds r1, r5, r0
- lsls r1, 1
- add r1, r12
- ldrh r7, [r3]
- adds r2, r6, r7
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 16
- adds r3, 0x2
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080B76AA
- movs r1, 0x80
- lsls r1, 9
- adds r0, r4, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080B76A4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B76DC: .4byte gMenuMessageBoxContentTileOffset
- thumb_func_end sub_80B7698
-
- thumb_func_start sub_80B76E0
-sub_80B76E0: @ 80B76E0
- push {r4-r7,lr}
- mov r12, r0
- adds r3, r1, 0
- movs r4, 0
- ldr r0, _080B7728 @ =gMenuMessageBoxContentTileOffset
- ldrh r6, [r0]
-_080B76EC:
- movs r1, 0
- lsls r5, r4, 16
- asrs r4, r5, 11
-_080B76F2:
- lsls r0, r1, 16
- asrs r0, 16
- adds r1, r4, r0
- lsls r1, 1
- add r1, r12
- ldrh r7, [r3]
- adds r2, r6, r7
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 16
- adds r3, 0x2
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080B76F2
- adds r3, 0x4
- movs r1, 0x80
- lsls r1, 9
- adds r0, r5, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080B76EC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7728: .4byte gMenuMessageBoxContentTileOffset
- thumb_func_end sub_80B76E0
-
- thumb_func_start sub_80B772C
-sub_80B772C: @ 80B772C
- push {lr}
- ldr r1, _080B773C @ =0x02000000
- ldrb r0, [r1, 0xE]
- ldrb r1, [r1, 0xC]
- bl nullsub_20
- pop {r0}
- bx r0
- .align 2, 0
-_080B773C: .4byte 0x02000000
- thumb_func_end sub_80B772C
-
- thumb_func_start sub_80B7740
-sub_80B7740: @ 80B7740
- push {r4,lr}
- ldr r4, _080B7760 @ =0x02000000
- ldrb r0, [r4, 0xE]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0xD]
- bl nullsub_20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7760: .4byte 0x02000000
- thumb_func_end sub_80B7740
-
- thumb_func_start nullsub_20
-nullsub_20: @ 80B7764
- bx lr
- thumb_func_end nullsub_20
-
- thumb_func_start sub_80B7768
-sub_80B7768: @ 80B7768
- ldr r3, _080B778C @ =gUnknown_083CE3A8
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- lsls r2, r1, 2
- adds r2, r1
- lsls r2, 2
- adds r0, r2
- ldr r1, _080B7790 @ =0x02000000
- ldrb r2, [r1, 0xE]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080B778C: .4byte gUnknown_083CE3A8
-_080B7790: .4byte 0x02000000
- thumb_func_end sub_80B7768
-
- thumb_func_start sub_80B7794
-sub_80B7794: @ 80B7794
- push {r4-r6,lr}
- ldr r6, _080B77EC @ =gUnknown_083CE328
- ldr r4, _080B77F0 @ =0x02000000
- ldrb r0, [r4, 0xC]
- lsls r0, 2
- ldrb r1, [r4, 0xE]
- lsls r1, 4
- adds r0, r1
- adds r0, r6
- ldr r0, [r0]
- bl BasicInitMenuWindow
- ldr r5, _080B77F4 @ =gUnknown_083CE310
- ldrb r0, [r4, 0xE]
- lsls r0, 3
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- ldrb r1, [r4, 0xD]
- lsls r1, 2
- ldrb r0, [r4, 0xE]
- lsls r0, 4
- adds r1, r0
- adds r6, 0x8
- adds r1, r6
- ldr r0, [r1]
- bl BasicInitMenuWindow
- ldrb r0, [r4, 0xE]
- lsls r0, 3
- adds r5, 0x4
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_80B772C
- bl sub_80B7740
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B77EC: .4byte gUnknown_083CE328
-_080B77F0: .4byte 0x02000000
-_080B77F4: .4byte gUnknown_083CE310
- thumb_func_end sub_80B7794
-
- thumb_func_start sub_80B77F8
-sub_80B77F8: @ 80B77F8
- push {r4,lr}
- ldr r2, _080B782C @ =gUnknown_083CE328
- ldr r4, _080B7830 @ =0x02000000
- ldrb r1, [r4, 0xD]
- lsls r1, 2
- ldrb r0, [r4, 0xE]
- lsls r0, 4
- adds r1, r0
- adds r2, 0x8
- adds r1, r2
- ldr r0, [r1]
- bl BasicInitMenuWindow
- ldr r1, _080B7834 @ =gUnknown_083CE310
- ldrb r0, [r4, 0xE]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_80B7740
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B782C: .4byte gUnknown_083CE328
-_080B7830: .4byte 0x02000000
-_080B7834: .4byte gUnknown_083CE310
- thumb_func_end sub_80B77F8
-
- thumb_func_start sub_80B7838
-sub_80B7838: @ 80B7838
- push {lr}
- movs r0, 0x1
- bl sub_80B785C
- pop {r0}
- bx r0
- thumb_func_end sub_80B7838
-
- thumb_func_start sub_80B7844
-sub_80B7844: @ 80B7844
- push {lr}
- movs r0, 0
- bl sub_80B785C
- pop {r0}
- bx r0
- thumb_func_end sub_80B7844
-
- thumb_func_start sub_80B7850
-sub_80B7850: @ 80B7850
- push {lr}
- movs r0, 0x2
- bl sub_80B785C
- pop {r0}
- bx r0
- thumb_func_end sub_80B7850
-
- thumb_func_start sub_80B785C
-sub_80B785C: @ 80B785C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- movs r5, 0x9
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 4
-_080B786C:
- lsls r4, r2, 16
- asrs r4, 16
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 2
- ldr r1, _080B78A4 @ =gUnknown_083CE3A8
- adds r0, r1
- adds r0, r6, r0
- lsls r2, r5, 24
- lsrs r2, 24
- movs r1, 0x3
- bl MenuPrint
- adds r4, 0x1
- lsls r4, 16
- lsls r0, r5, 16
- movs r1, 0x80
- lsls r1, 10
- adds r0, r1
- lsrs r5, r0, 16
- lsrs r2, r4, 16
- asrs r4, 16
- cmp r4, 0x3
- ble _080B786C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B78A4: .4byte gUnknown_083CE3A8
- thumb_func_end sub_80B785C
-
- thumb_func_start sub_80B78A8
-sub_80B78A8: @ 80B78A8
- push {r4,lr}
- ldr r0, _080B78E4 @ =gWindowConfig_81E6F4C
- bl BasicInitMenuWindow
- ldr r1, _080B78E8 @ =gUnknown_083CE358
- ldr r4, _080B78EC @ =0x02000000
- ldrb r0, [r4, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r1, _080B78F0 @ =gUnknown_083CE368
- ldr r0, [r4, 0x34]
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, [r4, 0x34]
- ldr r0, [r0, 0x8]
- movs r1, 0x9
- movs r2, 0x2
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B78E4: .4byte gWindowConfig_81E6F4C
-_080B78E8: .4byte gUnknown_083CE358
-_080B78EC: .4byte 0x02000000
-_080B78F0: .4byte gUnknown_083CE368
- thumb_func_end sub_80B78A8
-
- thumb_func_start nullsub_61
-nullsub_61: @ 80B78F4
- bx lr
- thumb_func_end nullsub_61
-
- thumb_func_start sub_80B78F8
-sub_80B78F8: @ 80B78F8
- push {lr}
- ldr r0, _080B7914 @ =gStringVar1
- ldr r1, _080B7918 @ =0x02000000
- movs r3, 0x3E
- ldrsh r2, [r1, r3]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080B791C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_080B7914: .4byte gStringVar1
-_080B7918: .4byte 0x02000000
-_080B791C: .4byte gSpeciesNames
- thumb_func_end sub_80B78F8
-
- thumb_func_start nullsub_62
-nullsub_62: @ 80B7920
- bx lr
- thumb_func_end nullsub_62
-
- thumb_func_start sub_80B7924
-sub_80B7924: @ 80B7924
- push {lr}
- sub sp, 0x4
- ldr r1, _080B7958 @ =gUnknown_083CE370
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- ldr r0, _080B795C @ =0x02000000
- adds r0, 0x40
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0xFF
- beq _080B7952
- cmp r0, 0xFE
- bne _080B7948
- mov r1, sp
- movs r0, 0xB6
- strb r0, [r1]
-_080B7948:
- mov r0, sp
- movs r1, 0x14
- movs r2, 0x4
- bl MenuPrint
-_080B7952:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080B7958: .4byte gUnknown_083CE370
-_080B795C: .4byte 0x02000000
- thumb_func_end sub_80B7924
-
- thumb_func_start sub_80B7960
-sub_80B7960: @ 80B7960
- push {r4,lr}
- ldr r0, _080B799C @ =gStringVar1
- movs r2, 0xFC
- strb r2, [r0]
- movs r1, 0x14
- strb r1, [r0, 0x1]
- movs r1, 0x8
- strb r1, [r0, 0x2]
- strb r2, [r0, 0x3]
- movs r1, 0x11
- strb r1, [r0, 0x4]
- movs r1, 0x1
- strb r1, [r0, 0x5]
- adds r0, 0x6
- ldr r4, _080B79A0 @ =0x02000011
- adds r1, r4, 0
- bl StringCopy
- ldr r0, _080B79A4 @ =gWindowConfig_81E6F4C
- bl BasicInitMenuWindow
- ldr r0, _080B799C @ =gStringVar1
- subs r4, 0x11
- ldrb r1, [r4, 0x2]
- movs r2, 0x4
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B799C: .4byte gStringVar1
-_080B79A0: .4byte 0x02000011
-_080B79A4: .4byte gWindowConfig_81E6F4C
- thumb_func_end sub_80B7960
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 0edec1623..f405d174a 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -7430,8 +7430,8 @@ sub_806E7D0: @ 806E7D0
bx r0
thumb_func_end sub_806E7D0
- thumb_func_start sub_806E81C
-sub_806E81C: @ 806E81C
+ thumb_func_start PartyMenuGetPopupMenuFunc
+PartyMenuGetPopupMenuFunc: @ 806E81C
lsls r0, 24
lsls r3, 24
lsrs r3, 24
@@ -7444,7 +7444,7 @@ sub_806E81C: @ 806E81C
adds r0, r2
ldr r0, [r0, 0x4]
bx lr
- thumb_func_end sub_806E81C
+ thumb_func_end PartyMenuGetPopupMenuFunc
.section .text_806E884
@@ -9414,7 +9414,7 @@ _0806F8FC:
strh r3, [r0]
_0806F900:
adds r5, r0, 0
- ldr r1, _0806F940 @ =gUnknown_02024BEC
+ ldr r1, _0806F940 @ =gBattleMoveDamage
ldrh r0, [r5]
negs r0, r0
str r0, [r1]
@@ -9442,7 +9442,7 @@ _0806F900:
bl StringExpandPlaceholders
b _0806F964
.align 2, 0
-_0806F940: .4byte gUnknown_02024BEC
+_0806F940: .4byte gBattleMoveDamage
_0806F944: .4byte 0x0201c000
_0806F948: .4byte gStringVar1
_0806F94C: .4byte gStringVar2
@@ -10413,13 +10413,13 @@ _080702B0:
ldr r1, [r4, 0x10]
str r1, [r0]
_080702C6:
- ldr r1, _080702D4 @ =gUnknown_03005CE0
+ ldr r1, _080702D4 @ =gLastFieldPokeMenuOpened
movs r0, 0
strb r0, [r1]
b _080702DE
.align 2, 0
_080702D0: .4byte gTasks
-_080702D4: .4byte gUnknown_03005CE0
+_080702D4: .4byte gLastFieldPokeMenuOpened
_080702D8:
adds r0, r5, 0
bl sub_8070088
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 57e4a5a21..9abeed00d 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -152,7 +152,7 @@ _080464D6:
beq _0804655C
cmp r2, 0xFF
bne _08046598
- ldr r0, _08046554 @ =gUnknown_02024C08
+ ldr r0, _08046554 @ =gEnemyMonIndex
strb r5, [r0]
movs r0, 0x18
strh r0, [r4, 0x20]
@@ -169,7 +169,7 @@ _08046544: .4byte gUnknown_02024A6A
_08046548: .4byte gPlayerParty
_0804654C: .4byte gSpriteTemplate_820AAB4
_08046550: .4byte gSprites
-_08046554: .4byte gUnknown_02024C08
+_08046554: .4byte gEnemyMonIndex
_08046558: .4byte sub_8047074
_0804655C:
adds r0, r5, 0
@@ -185,7 +185,7 @@ _0804655C:
lsrs r0, 24
adds r0, 0x18
strh r0, [r4, 0x22]
- ldr r0, _08046590 @ =gUnknown_02024C08
+ ldr r0, _08046590 @ =gEnemyMonIndex
strb r5, [r0]
movs r3, 0
strh r3, [r4, 0x2E]
@@ -196,12 +196,12 @@ _0804655C:
str r1, [r0]
b _080465A6
.align 2, 0
-_08046590: .4byte gUnknown_02024C08
+_08046590: .4byte gEnemyMonIndex
_08046594: .4byte sub_8047254
_08046598:
movs r0, 0x1
bl battle_get_side_with_given_state
- ldr r1, _080465C4 @ =gUnknown_02024C08
+ ldr r1, _080465C4 @ =gEnemyMonIndex
strb r0, [r1]
movs r0, 0x1
str r0, [sp]
@@ -211,7 +211,7 @@ _080465A6:
adds r1, r7
lsls r1, 2
adds r4, r1, r0
- ldr r5, _080465C4 @ =gUnknown_02024C08
+ ldr r5, _080465C4 @ =gEnemyMonIndex
ldrb r0, [r5]
strh r0, [r4, 0x3A]
ldr r2, [sp]
@@ -221,7 +221,7 @@ _080465A6:
bl DestroyTask
b _08046616
.align 2, 0
-_080465C4: .4byte gUnknown_02024C08
+_080465C4: .4byte gEnemyMonIndex
_080465C8: .4byte gSprites
_080465CC:
movs r0, 0x22
diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s
index a8a0ce89d..3a97f8a04 100644
--- a/asm/pokemon_item_effect.s
+++ b/asm/pokemon_item_effect.s
@@ -1200,7 +1200,7 @@ _0803EB34: .4byte gBattleMons
_0803EB38: .4byte gUnknown_02024A60
_0803EB3C: .4byte gUnknown_030042E0
_0803EB40:
- ldr r1, _0803EB58 @ =gUnknown_02024BEC
+ ldr r1, _0803EB58 @ =gBattleMoveDamage
ldr r0, [sp]
negs r0, r0
str r0, [r1]
@@ -1214,7 +1214,7 @@ _0803EB4C:
mov r10, r2
b _0803EE0A
.align 2, 0
-_0803EB58: .4byte gUnknown_02024BEC
+_0803EB58: .4byte gBattleMoveDamage
_0803EB5C:
movs r7, 0x2
mov r0, r10
diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s
index 6a3fbb170..2f1c16f8c 100644
--- a/asm/pokemon_menu.s
+++ b/asm/pokemon_menu.s
@@ -31,7 +31,7 @@ sub_8089A8C: @ 8089A8C
ldr r5, _08089AD0 @ =gUnknown_0202FFA9
movs r0, 0
strb r0, [r5]
- ldr r0, _08089AD4 @ =gUnknown_03005CE0
+ ldr r0, _08089AD4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -57,7 +57,7 @@ sub_8089A8C: @ 8089A8C
b _08089BC8
.align 2, 0
_08089AD0: .4byte gUnknown_0202FFA9
-_08089AD4: .4byte gUnknown_03005CE0
+_08089AD4: .4byte gLastFieldPokeMenuOpened
_08089AD8: .4byte gPlayerParty
_08089ADC: .4byte gUnknown_0202FFAA
_08089AE0:
@@ -73,7 +73,7 @@ _08089AE8:
beq _08089B48
ldr r5, _08089B24 @ =gUnknown_0839F554
_08089AF4:
- ldr r0, _08089B28 @ =gUnknown_03005CE0
+ ldr r0, _08089B28 @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -97,7 +97,7 @@ _08089AF4:
b _08089B48
.align 2, 0
_08089B24: .4byte gUnknown_0839F554
-_08089B28: .4byte gUnknown_03005CE0
+_08089B28: .4byte gLastFieldPokeMenuOpened
_08089B2C: .4byte gPlayerParty
_08089B30: .4byte gUnknown_0202FFAA
_08089B34: .4byte gUnknown_0202FFA9
@@ -132,7 +132,7 @@ _08089B48:
movs r2, 0x1
bl AppendToList
_08089B76:
- ldr r0, _08089BB0 @ =gUnknown_03005CE0
+ ldr r0, _08089BB0 @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -156,7 +156,7 @@ _08089B76:
_08089BA4: .4byte gUnknown_0202FFAA
_08089BA8: .4byte gUnknown_0202FFA9
_08089BAC: .4byte gPlayerParty + 1 * 0x64
-_08089BB0: .4byte gUnknown_03005CE0
+_08089BB0: .4byte gLastFieldPokeMenuOpened
_08089BB4:
adds r0, r4, 0
adds r1, r5, 0
@@ -336,7 +336,7 @@ _08089D04:
bl PlaySE
adds r0, r4, 0
bl sub_806CA38
- ldr r1, _08089D48 @ =gUnknown_03005CE0
+ ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened
strb r0, [r1]
ldrb r1, [r1]
movs r0, 0x64
@@ -361,7 +361,7 @@ _08089D04:
bl sub_808B5B4
b _08089D84
.align 2, 0
-_08089D48: .4byte gUnknown_03005CE0
+_08089D48: .4byte gLastFieldPokeMenuOpened
_08089D4C: .4byte gPlayerParty
_08089D50: .4byte gStringVar1
_08089D54: .4byte gUnknown_0202FFA8
@@ -492,7 +492,7 @@ sub_8089E4C: @ 8089E4C
lsrs r1, r0, 24
cmp r1, 0
bne _08089E72
- ldr r0, _08089E7C @ =gUnknown_03005CE0
+ ldr r0, _08089E7C @ =gLastFieldPokeMenuOpened
strb r1, [r0]
ldr r0, _08089E80 @ =sub_805469C
bl SetMainCallback2
@@ -504,14 +504,14 @@ _08089E72:
bx r0
.align 2, 0
_08089E78: .4byte gPaletteFade
-_08089E7C: .4byte gUnknown_03005CE0
+_08089E7C: .4byte gLastFieldPokeMenuOpened
_08089E80: .4byte sub_805469C
thumb_func_end sub_8089E4C
thumb_func_start sub_8089E84
sub_8089E84: @ 8089E84
push {lr}
- ldr r0, _08089EAC @ =gUnknown_03005CE0
+ ldr r0, _08089EAC @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -528,7 +528,7 @@ sub_8089E84: @ 8089E84
pop {r0}
bx r0
.align 2, 0
-_08089EAC: .4byte gUnknown_03005CE0
+_08089EAC: .4byte gLastFieldPokeMenuOpened
_08089EB0: .4byte gPlayerParty
_08089EB4: .4byte gStringVar1
_08089EB8: .4byte gUnknown_0202FFA8
@@ -561,7 +561,7 @@ _08089ED8:
ldrb r0, [r4]
movs r1, 0
bl sub_806BF74
- ldr r1, _08089F0C @ =gUnknown_03005CE0
+ ldr r1, _08089F0C @ =gLastFieldPokeMenuOpened
ldrb r0, [r5]
strb r0, [r1]
bl sub_8089E84
@@ -572,7 +572,7 @@ _08089F04:
pop {r0}
bx r0
.align 2, 0
-_08089F0C: .4byte gUnknown_03005CE0
+_08089F0C: .4byte gLastFieldPokeMenuOpened
_08089F10: .4byte sub_806AEDC
thumb_func_end sub_8089EBC
@@ -784,7 +784,7 @@ _0808A0A4:
ldr r0, _0808A0D4 @ =gUnknown_0202FFA8
ldrb r3, [r0]
movs r0, 0
- bl sub_806E81C
+ bl PartyMenuGetPopupMenuFunc
adds r1, r0, 0
adds r0, r5, 0
bl _call_via_r1
@@ -1126,7 +1126,7 @@ _0808A370:
cmp r0, 0x1
bne _0808A364
ldrb r0, [r4]
- ldr r1, _0808A39C @ =gUnknown_03005CE0
+ ldr r1, _0808A39C @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
bl sub_806C994
ldrb r0, [r4]
@@ -1139,7 +1139,7 @@ _0808A394:
pop {r0}
bx r0
.align 2, 0
-_0808A39C: .4byte gUnknown_03005CE0
+_0808A39C: .4byte gLastFieldPokeMenuOpened
_0808A3A0: .4byte sub_806AEDC
thumb_func_end sub_808A358
@@ -1155,7 +1155,7 @@ _0808A3AA:
cmp r0, 0x1
bne _0808A3E4
ldrb r0, [r4]
- ldr r1, _0808A3DC @ =gUnknown_03005CE0
+ ldr r1, _0808A3DC @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
bl sub_806C994
ldrb r0, [r4]
@@ -1169,7 +1169,7 @@ _0808A3AA:
b _0808A3F0
.align 2, 0
_0808A3D8: .4byte 0x0201b260
-_0808A3DC: .4byte gUnknown_03005CE0
+_0808A3DC: .4byte gLastFieldPokeMenuOpened
_0808A3E0: .4byte sub_806AEDC
_0808A3E4:
bl sub_80F9344
@@ -1205,7 +1205,7 @@ sub_808A3F8: @ 808A3F8
adds r0, r4, 0
movs r1, 0
bl sub_806BD58
- ldr r0, _0808A46C @ =gUnknown_03005CE0
+ ldr r0, _0808A46C @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
adds r0, r4, 0
bl sub_806C994
@@ -1232,7 +1232,7 @@ sub_808A3F8: @ 808A3F8
_0808A460: .4byte gScriptItemId
_0808A464: .4byte sub_808A330
_0808A468: .4byte gPaletteFade
-_0808A46C: .4byte gUnknown_03005CE0
+_0808A46C: .4byte gLastFieldPokeMenuOpened
_0808A470: .4byte gPlayerParty
_0808A474: .4byte sub_808A34C
_0808A478:
@@ -1298,7 +1298,7 @@ _0808A4EC:
cmp r0, 0x1
bne _0808A4E0
ldrb r0, [r4]
- ldr r1, _0808A518 @ =gUnknown_03005CE0
+ ldr r1, _0808A518 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
bl sub_806C994
ldrb r0, [r4]
@@ -1311,7 +1311,7 @@ _0808A510:
pop {r0}
bx r0
.align 2, 0
-_0808A518: .4byte gUnknown_03005CE0
+_0808A518: .4byte gLastFieldPokeMenuOpened
_0808A51C: .4byte sub_806AEDC
thumb_func_end sub_808A4D4
@@ -1334,7 +1334,7 @@ sub_808A520: @ 808A520
movs r1, 0x1
bl RemoveBagItem
_0808A542:
- ldr r6, _0808A590 @ =gUnknown_03005CE0
+ ldr r6, _0808A590 @ =gLastFieldPokeMenuOpened
ldrb r0, [r6]
movs r5, 0x64
muls r0, r5
@@ -1366,7 +1366,7 @@ _0808A542:
_0808A584: .4byte gPaletteFade
_0808A588: .4byte gScriptResult
_0808A58C: .4byte gUnknown_0202E8F8
-_0808A590: .4byte gUnknown_03005CE0
+_0808A590: .4byte gLastFieldPokeMenuOpened
_0808A594: .4byte gPlayerParty
_0808A598: .4byte sub_8089CD4
_0808A59C:
@@ -1397,7 +1397,7 @@ sub_808A5BC: @ 808A5BC
ands r0, r1
cmp r0, 0
bne _0808A5EA
- ldr r0, _0808A5F4 @ =gUnknown_03005CE0
+ ldr r0, _0808A5F4 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
ldr r1, _0808A5F8 @ =gScriptItemId
ldrh r1, [r1]
@@ -1416,7 +1416,7 @@ _0808A5EA:
bx r0
.align 2, 0
_0808A5F0: .4byte gPaletteFade
-_0808A5F4: .4byte gUnknown_03005CE0
+_0808A5F4: .4byte gLastFieldPokeMenuOpened
_0808A5F8: .4byte gScriptItemId
_0808A5FC: .4byte gTasks
_0808A600: .4byte sub_808A1E0
@@ -1648,7 +1648,7 @@ _0808A7B4:
ldr r0, _0808A7EC @ =gUnknown_0202FFA8
ldrb r3, [r0]
movs r0, 0
- bl sub_806E81C
+ bl PartyMenuGetPopupMenuFunc
adds r1, r0, 0
adds r0, r5, 0
bl _call_via_r1
@@ -1755,7 +1755,7 @@ _0808A8A4: .4byte sub_808A8A8
sub_808A8A8: @ 808A8A8
push {lr}
ldr r1, _0808A8C4 @ =gUnknown_020384F0
- ldr r0, _0808A8C8 @ =gUnknown_03005CE0
+ ldr r0, _0808A8C8 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _0808A8CC @ =0x0201b000
@@ -1768,7 +1768,7 @@ sub_808A8A8: @ 808A8A8
bx r0
.align 2, 0
_0808A8C4: .4byte gUnknown_020384F0
-_0808A8C8: .4byte gUnknown_03005CE0
+_0808A8C8: .4byte gLastFieldPokeMenuOpened
_0808A8CC: .4byte 0x0201b000
_0808A8D0: .4byte 0x00000262
thumb_func_end sub_808A8A8
@@ -2129,7 +2129,7 @@ sub_808ABA8: @ 808ABA8
lsrs r0, 24
cmp r0, 0x1
bne _0808ABDE
- ldr r0, _0808ABE4 @ =gUnknown_03005CE0
+ ldr r0, _0808ABE4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -2149,7 +2149,7 @@ _0808ABDE:
pop {r0}
bx r0
.align 2, 0
-_0808ABE4: .4byte gUnknown_03005CE0
+_0808ABE4: .4byte gLastFieldPokeMenuOpened
_0808ABE8: .4byte gPlayerParty
_0808ABEC: .4byte gUnknown_0202FF84
_0808ABF0: .4byte gUnknown_03005CE4
@@ -2190,7 +2190,7 @@ _0808AC28: .4byte gMain
sub_808AC2C: @ 808AC2C
push {lr}
ldr r0, _0808AC40 @ =gUnknown_0202FF84
- ldr r1, _0808AC44 @ =gUnknown_03005CE0
+ ldr r1, _0808AC44 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
str r1, [r0]
movs r0, 0x9
@@ -2199,7 +2199,7 @@ sub_808AC2C: @ 808AC2C
bx r0
.align 2, 0
_0808AC40: .4byte gUnknown_0202FF84
-_0808AC44: .4byte gUnknown_03005CE0
+_0808AC44: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_808AC2C
thumb_func_start SetUpFieldMove_Surf
@@ -2239,7 +2239,7 @@ _0808AC86:
sub_808AC8C: @ 808AC8C
push {lr}
ldr r0, _0808ACA0 @ =gUnknown_0202FF84
- ldr r1, _0808ACA4 @ =gUnknown_03005CE0
+ ldr r1, _0808ACA4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
str r1, [r0]
movs r0, 0x1F
@@ -2248,7 +2248,7 @@ sub_808AC8C: @ 808AC8C
bx r0
.align 2, 0
_0808ACA0: .4byte gUnknown_0202FF84
-_0808ACA4: .4byte gUnknown_03005CE0
+_0808ACA4: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_808AC8C
thumb_func_start SetUpFieldMove_Fly
@@ -2320,7 +2320,7 @@ _0808AD24:
cmp r0, 0x1
bne _0808AD18
ldrb r0, [r4]
- ldr r1, _0808AD50 @ =gUnknown_03005CE0
+ ldr r1, _0808AD50 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
bl sub_806C994
ldrb r0, [r4]
@@ -2333,7 +2333,7 @@ _0808AD48:
pop {r0}
bx r0
.align 2, 0
-_0808AD50: .4byte gUnknown_03005CE0
+_0808AD50: .4byte gLastFieldPokeMenuOpened
_0808AD54: .4byte sub_806AEDC
thumb_func_end sub_808AD0C
@@ -2363,7 +2363,7 @@ _0808AD84: .4byte sub_808AD0C
thumb_func_start unref_sub_808AD88
unref_sub_808AD88: @ 808AD88
push {lr}
- ldr r0, _0808ADA4 @ =gUnknown_03005CE0
+ ldr r0, _0808ADA4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -2376,7 +2376,7 @@ unref_sub_808AD88: @ 808AD88
pop {r1}
bx r1
.align 2, 0
-_0808ADA4: .4byte gUnknown_03005CE0
+_0808ADA4: .4byte gLastFieldPokeMenuOpened
_0808ADA8: .4byte gPlayerParty
thumb_func_end unref_sub_808AD88
@@ -2384,7 +2384,7 @@ _0808ADA8: .4byte gPlayerParty
sub_808ADAC: @ 808ADAC
push {lr}
ldr r0, _0808ADC0 @ =gUnknown_0202FF84
- ldr r1, _0808ADC4 @ =gUnknown_03005CE0
+ ldr r1, _0808ADC4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
str r1, [r0]
movs r0, 0x2C
@@ -2393,7 +2393,7 @@ sub_808ADAC: @ 808ADAC
bx r0
.align 2, 0
_0808ADC0: .4byte gUnknown_0202FF84
-_0808ADC4: .4byte gUnknown_03005CE0
+_0808ADC4: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_808ADAC
thumb_func_start SetUpFieldMove_Dive
@@ -2432,7 +2432,7 @@ _0808AE04: .4byte sub_808ADAC
sub_808AE08: @ 808AE08
push {lr}
ldr r0, _0808AE1C @ =gUnknown_0202FF84
- ldr r1, _0808AE20 @ =gUnknown_03005CE0
+ ldr r1, _0808AE20 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
str r1, [r0]
movs r0, 0x2B
@@ -2441,7 +2441,7 @@ sub_808AE08: @ 808AE08
bx r0
.align 2, 0
_0808AE1C: .4byte gUnknown_0202FF84
-_0808AE20: .4byte gUnknown_03005CE0
+_0808AE20: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_808AE08
thumb_func_start SetUpFieldMove_Waterfall
@@ -2648,7 +2648,7 @@ _0808AFBC:
_0808AFC2:
bl sub_808AF20
_0808AFC6:
- ldr r4, _0808B000 @ =gUnknown_03005CE0
+ ldr r4, _0808B000 @ =gLastFieldPokeMenuOpened
ldrb r0, [r4]
cmp r0, 0x5
bhi _0808AFE2
@@ -2666,7 +2666,7 @@ _0808AFE2:
strb r0, [r4]
_0808AFE6:
ldrb r0, [r5]
- ldr r1, _0808B000 @ =gUnknown_03005CE0
+ ldr r1, _0808B000 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
bl sub_806C994
ldrb r0, [r5]
@@ -2676,7 +2676,7 @@ _0808AFE6:
bl SetMainCallback2
b _0808B018
.align 2, 0
-_0808B000: .4byte gUnknown_03005CE0
+_0808B000: .4byte gLastFieldPokeMenuOpened
_0808B004: .4byte gPlayerParty
_0808B008: .4byte sub_806AEDC
_0808B00C:
@@ -2796,7 +2796,7 @@ _0808B0EC: .4byte gPaletteFade
_0808B0F0:
adds r0, r4, 0
bl sub_806CA38
- ldr r1, _0808B118 @ =gUnknown_03005CE0
+ ldr r1, _0808B118 @ =gLastFieldPokeMenuOpened
strb r0, [r1]
ldrb r1, [r1]
movs r0, 0x64
@@ -2811,7 +2811,7 @@ _0808B0F0:
bl PlaySE
b _0808B1CE
.align 2, 0
-_0808B118: .4byte gUnknown_03005CE0
+_0808B118: .4byte gLastFieldPokeMenuOpened
_0808B11C: .4byte gPlayerParty
_0808B120:
bl sub_806D5A4
@@ -2857,7 +2857,7 @@ _0808B180: .4byte sub_808B2B4
_0808B184:
adds r0, r4, 0
bl sub_806CA38
- ldr r1, _0808B1D8 @ =gUnknown_03005CE0
+ ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened
strb r0, [r1]
movs r0, 0x5
bl PlaySE
@@ -2896,7 +2896,7 @@ _0808B1CE:
pop {r0}
bx r0
.align 2, 0
-_0808B1D8: .4byte gUnknown_03005CE0
+_0808B1D8: .4byte gLastFieldPokeMenuOpened
_0808B1DC: .4byte gUnknown_02038561
_0808B1E0: .4byte gTasks
_0808B1E4: .4byte sub_808B25C
@@ -3092,7 +3092,7 @@ sub_808B338: @ 808B338
bne _0808B384
adds r0, r5, 0
bl sub_806CA38
- ldr r1, _0808B390 @ =gUnknown_03005CE0
+ ldr r1, _0808B390 @ =gLastFieldPokeMenuOpened
strb r0, [r1]
ldrb r1, [r1]
movs r0, 0x64
@@ -3121,7 +3121,7 @@ _0808B384:
bx r0
.align 2, 0
_0808B38C: .4byte gPaletteFade
-_0808B390: .4byte gUnknown_03005CE0
+_0808B390: .4byte gLastFieldPokeMenuOpened
_0808B394: .4byte gPlayerParty
_0808B398: .4byte gSaveBlock1 + 0x2B4C
_0808B39C: .4byte sub_808B3EC
@@ -3147,7 +3147,7 @@ _0808B3B8:
cmp r0, 0x1
bne _0808B3AC
ldrb r0, [r4]
- ldr r1, _0808B3E4 @ =gUnknown_03005CE0
+ ldr r1, _0808B3E4 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
bl sub_806C994
ldrb r0, [r4]
@@ -3160,7 +3160,7 @@ _0808B3DC:
pop {r0}
bx r0
.align 2, 0
-_0808B3E4: .4byte gUnknown_03005CE0
+_0808B3E4: .4byte gLastFieldPokeMenuOpened
_0808B3E8: .4byte sub_806AEDC
thumb_func_end sub_808B3A0
@@ -3187,7 +3187,7 @@ sub_808B3EC: @ 808B3EC
movs r1, 0x1
bl RemoveBagItem
_0808B416:
- ldr r6, _0808B470 @ =gUnknown_03005CE0
+ ldr r6, _0808B470 @ =gLastFieldPokeMenuOpened
ldrb r0, [r6]
movs r5, 0x64
muls r0, r5
@@ -3224,7 +3224,7 @@ _0808B416:
_0808B464: .4byte gPaletteFade
_0808B468: .4byte gScriptResult
_0808B46C: .4byte gUnknown_0202E8F8
-_0808B470: .4byte gUnknown_03005CE0
+_0808B470: .4byte gLastFieldPokeMenuOpened
_0808B474: .4byte gPlayerParty
_0808B478: .4byte sub_808B25C
_0808B47C: .4byte sub_806AEDC
@@ -3258,7 +3258,7 @@ sub_808B4A4: @ 808B4A4
ands r0, r1
cmp r0, 0
bne _0808B4D2
- ldr r0, _0808B4DC @ =gUnknown_03005CE0
+ ldr r0, _0808B4DC @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
ldr r1, _0808B4E0 @ =gScriptItemId
ldrh r1, [r1]
@@ -3277,7 +3277,7 @@ _0808B4D2:
bx r0
.align 2, 0
_0808B4D8: .4byte gPaletteFade
-_0808B4DC: .4byte gUnknown_03005CE0
+_0808B4DC: .4byte gLastFieldPokeMenuOpened
_0808B4E0: .4byte gScriptItemId
_0808B4E4: .4byte gTasks
_0808B4E8: .4byte sub_808B4EC
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 801c941d1..bcf005f2f 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -7972,7 +7972,7 @@ _0809988A:
strb r0, [r2, 0x1]
ldr r0, [r4]
ldr r1, [r0]
- ldr r0, _080998D4 @ =gUnknown_083B6F5C
+ ldr r0, _080998D4 @ =gSpriteAffineAnimTable_83B6F5C
str r0, [r1, 0x10]
ldr r0, [r4]
ldr r0, [r0]
@@ -7986,7 +7986,7 @@ _080998C0:
_080998C8: .4byte gUnknown_083B6DB4
_080998CC: .4byte 0x000010cc
_080998D0: .4byte 0x00001034
-_080998D4: .4byte gUnknown_083B6F5C
+_080998D4: .4byte gSpriteAffineAnimTable_83B6F5C
thumb_func_end sub_809981C
thumb_func_start sub_80998D8
diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s
index 1b58b417b..2fbc559c8 100644
--- a/asm/reset_rtc_screen.s
+++ b/asm/reset_rtc_screen.s
@@ -1238,7 +1238,7 @@ _0806AE54: .4byte 0x00004040
_0806AE58: .4byte gSystemText_ClockResetDataSave
_0806AE5C:
movs r0, 0
- bl sub_8125D44
+ bl TrySavingData
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/rom3.s b/asm/rom3.s
deleted file mode 100644
index 94862459b..000000000
--- a/asm/rom3.s
+++ /dev/null
@@ -1,3411 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_800B858
-sub_800B858: @ 800B858
- push {lr}
- ldr r0, _0800B87C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0800B876
- bl OpenLink
- ldr r0, _0800B880 @ =sub_8083C50
- movs r1, 0
- bl CreateTask
- bl sub_800BF28
-_0800B876:
- pop {r0}
- bx r0
- .align 2, 0
-_0800B87C: .4byte gBattleTypeFlags
-_0800B880: .4byte sub_8083C50
- thumb_func_end sub_800B858
-
- thumb_func_start sub_800B884
-sub_800B884: @ 800B884
- push {r4-r7,lr}
- sub sp, 0x14
- ldr r0, _0800B920 @ =gUnknown_030042D4
- ldr r1, _0800B924 @ =nullsub_41
- str r1, [r0]
- movs r0, 0
- str r0, [sp, 0x10]
- movs r1, 0
- ldr r7, _0800B928 @ =gUnknown_03004330
- ldr r6, _0800B92C @ =gUnknown_02024E60
- movs r2, 0
- ldr r5, _0800B930 @ =gUnknown_02024E64
- ldr r4, _0800B934 @ =nullsub_91
- ldr r3, _0800B938 @ =gUnknown_02024A72
-_0800B8A0:
- lsls r0, r1, 2
- adds r0, r7
- str r4, [r0]
- adds r1, r3
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, [sp, 0x10]
- adds r0, r6
- strb r2, [r0]
- ldr r0, [sp, 0x10]
- adds r0, r5
- strb r2, [r0]
- ldr r0, [sp, 0x10]
- adds r0, 0x1
- str r0, [sp, 0x10]
- adds r1, r0, 0
- cmp r1, 0x3
- ble _0800B8A0
- bl sub_800B858
- ldr r0, _0800B93C @ =gUnknown_02024A64
- movs r5, 0
- str r5, [r0]
- bl sub_8075624
- bl sub_8040710
- bl BattleAI_HandleItemUseBeforeAISetup
- ldr r0, _0800B940 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0800B90E
- bl ZeroEnemyPartyMons
- ldr r4, _0800B944 @ =gEnemyParty
- movs r1, 0x8F
- lsls r1, 1
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- str r5, [sp, 0xC]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x20
- bl CreateMon
- str r5, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
-_0800B90E:
- ldr r0, _0800B948 @ =gUnknown_020239FC
- str r5, [r0]
- ldr r0, _0800B94C @ =gUnknown_02024C78
- strb r5, [r0]
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B920: .4byte gUnknown_030042D4
-_0800B924: .4byte nullsub_41
-_0800B928: .4byte gUnknown_03004330
-_0800B92C: .4byte gUnknown_02024E60
-_0800B930: .4byte gUnknown_02024E64
-_0800B934: .4byte nullsub_91
-_0800B938: .4byte gUnknown_02024A72
-_0800B93C: .4byte gUnknown_02024A64
-_0800B940: .4byte gBattleTypeFlags
-_0800B944: .4byte gEnemyParty
-_0800B948: .4byte gUnknown_020239FC
-_0800B94C: .4byte gUnknown_02024C78
- thumb_func_end sub_800B884
-
- thumb_func_start sub_800B950
-sub_800B950: @ 800B950
- push {r4,r5,lr}
- ldr r0, _0800B964 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0800B968
- bl sub_800BA78
- b _0800B96C
- .align 2, 0
-_0800B964: .4byte gBattleTypeFlags
-_0800B968:
- bl sub_800B9A8
-_0800B96C:
- bl sub_800BD54
- ldr r0, _0800B9A0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0800B99A
- movs r4, 0
- ldr r0, _0800B9A4 @ =gUnknown_02024A68
- ldrb r1, [r0]
- cmp r4, r1
- bge _0800B99A
- adds r5, r0, 0
-_0800B988:
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8094978
- adds r4, 0x1
- ldrb r0, [r5]
- cmp r4, r0
- blt _0800B988
-_0800B99A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B9A0: .4byte gBattleTypeFlags
-_0800B9A4: .4byte gUnknown_02024A68
- thumb_func_end sub_800B950
-
- thumb_func_start sub_800B9A8
-sub_800B9A8: @ 800B9A8
- push {r4,lr}
- ldr r0, _0800B9CC @ =gBattleTypeFlags
- ldrh r2, [r0]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _0800BA28
- ldr r1, _0800B9D0 @ =gUnknown_030042D4
- ldr r0, _0800B9D4 @ =sub_8010800
- str r0, [r1]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _0800B9E0
- ldr r1, _0800B9D8 @ =gUnknown_03004330
- ldr r0, _0800B9DC @ =sub_812B468
- b _0800B9FC
- .align 2, 0
-_0800B9CC: .4byte gBattleTypeFlags
-_0800B9D0: .4byte gUnknown_030042D4
-_0800B9D4: .4byte sub_8010800
-_0800B9D8: .4byte gUnknown_03004330
-_0800B9DC: .4byte sub_812B468
-_0800B9E0:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0800B9F8
- ldr r1, _0800B9F0 @ =gUnknown_03004330
- ldr r0, _0800B9F4 @ =sub_8137224
- b _0800B9FC
- .align 2, 0
-_0800B9F0: .4byte gUnknown_03004330
-_0800B9F4: .4byte sub_8137224
-_0800B9F8:
- ldr r1, _0800BA14 @ =gUnknown_03004330
- ldr r0, _0800BA18 @ =sub_802BF74
-_0800B9FC:
- str r0, [r1]
- adds r2, r1, 0
- ldr r1, _0800BA1C @ =gUnknown_02024A72
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0800BA20 @ =sub_8032AE0
- str r0, [r2, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- ldr r1, _0800BA24 @ =gUnknown_02024A68
- movs r0, 0x2
- b _0800BA52
- .align 2, 0
-_0800BA14: .4byte gUnknown_03004330
-_0800BA18: .4byte sub_802BF74
-_0800BA1C: .4byte gUnknown_02024A72
-_0800BA20: .4byte sub_8032AE0
-_0800BA24: .4byte gUnknown_02024A68
-_0800BA28:
- ldr r1, _0800BA5C @ =gUnknown_030042D4
- ldr r0, _0800BA60 @ =sub_8010800
- str r0, [r1]
- ldr r2, _0800BA64 @ =gUnknown_03004330
- ldr r4, _0800BA68 @ =sub_802BF74
- str r4, [r2]
- ldr r1, _0800BA6C @ =gUnknown_02024A72
- movs r0, 0
- strb r0, [r1]
- ldr r3, _0800BA70 @ =sub_8032AE0
- str r3, [r2, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- str r4, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- str r3, [r2, 0xC]
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r1, _0800BA74 @ =gUnknown_02024A68
- movs r0, 0x4
-_0800BA52:
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800BA5C: .4byte gUnknown_030042D4
-_0800BA60: .4byte sub_8010800
-_0800BA64: .4byte gUnknown_03004330
-_0800BA68: .4byte sub_802BF74
-_0800BA6C: .4byte gUnknown_02024A72
-_0800BA70: .4byte sub_8032AE0
-_0800BA74: .4byte gUnknown_02024A68
- thumb_func_end sub_800B9A8
-
- thumb_func_start sub_800BA78
-sub_800BA78: @ 800BA78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r6, _0800BAB8 @ =gBattleTypeFlags
- ldrh r1, [r6]
- movs r5, 0x1
- movs r4, 0x1
- ands r4, r1
- cmp r4, 0
- bne _0800BB04
- movs r0, 0x4
- ands r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _0800BAD8
- ldr r1, _0800BABC @ =gUnknown_030042D4
- ldr r0, _0800BAC0 @ =sub_8010800
- str r0, [r1]
- ldr r2, _0800BAC4 @ =gUnknown_03004330
- ldr r0, _0800BAC8 @ =sub_802BF74
- str r0, [r2]
- ldr r1, _0800BACC @ =gUnknown_02024A72
- strb r4, [r1]
- ldr r0, _0800BAD0 @ =sub_8037510
- str r0, [r2, 0x4]
- strb r5, [r1, 0x1]
- ldr r1, _0800BAD4 @ =gUnknown_02024A68
- movs r0, 0x2
- b _0800BD3E
- .align 2, 0
-_0800BAB8: .4byte gBattleTypeFlags
-_0800BABC: .4byte gUnknown_030042D4
-_0800BAC0: .4byte sub_8010800
-_0800BAC4: .4byte gUnknown_03004330
-_0800BAC8: .4byte sub_802BF74
-_0800BACC: .4byte gUnknown_02024A72
-_0800BAD0: .4byte sub_8037510
-_0800BAD4: .4byte gUnknown_02024A68
-_0800BAD8:
- ldr r2, _0800BAF0 @ =gUnknown_03004330
- ldr r0, _0800BAF4 @ =sub_802BF74
- str r0, [r2, 0x4]
- ldr r1, _0800BAF8 @ =gUnknown_02024A72
- strb r3, [r1, 0x1]
- ldr r0, _0800BAFC @ =sub_8037510
- str r0, [r2]
- strb r5, [r1]
- ldr r1, _0800BB00 @ =gUnknown_02024A68
- movs r0, 0x2
- b _0800BD3E
- .align 2, 0
-_0800BAF0: .4byte gUnknown_03004330
-_0800BAF4: .4byte sub_802BF74
-_0800BAF8: .4byte gUnknown_02024A72
-_0800BAFC: .4byte sub_8037510
-_0800BB00: .4byte gUnknown_02024A68
-_0800BB04:
- movs r0, 0x41
- ands r0, r1
- cmp r0, 0x1
- bne _0800BB90
- movs r6, 0x4
- movs r0, 0x4
- ands r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _0800BB58
- ldr r1, _0800BB40 @ =gUnknown_030042D4
- ldr r0, _0800BB44 @ =sub_8010800
- str r0, [r1]
- ldr r2, _0800BB48 @ =gUnknown_03004330
- ldr r4, _0800BB4C @ =sub_802BF74
- str r4, [r2]
- ldr r1, _0800BB50 @ =gUnknown_02024A72
- movs r0, 0
- strb r0, [r1]
- ldr r3, _0800BB54 @ =sub_8037510
- str r3, [r2, 0x4]
- strb r5, [r1, 0x1]
- str r4, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- str r3, [r2, 0xC]
- movs r0, 0x3
- strb r0, [r1, 0x3]
- b _0800BB74
- .align 2, 0
-_0800BB40: .4byte gUnknown_030042D4
-_0800BB44: .4byte sub_8010800
-_0800BB48: .4byte gUnknown_03004330
-_0800BB4C: .4byte sub_802BF74
-_0800BB50: .4byte gUnknown_02024A72
-_0800BB54: .4byte sub_8037510
-_0800BB58:
- ldr r2, _0800BB7C @ =gUnknown_03004330
- ldr r0, _0800BB80 @ =sub_802BF74
- str r0, [r2, 0x4]
- ldr r1, _0800BB84 @ =gUnknown_02024A72
- strb r3, [r1, 0x1]
- ldr r3, _0800BB88 @ =sub_8037510
- str r3, [r2]
- strb r5, [r1]
- str r0, [r2, 0xC]
- movs r0, 0x2
- strb r0, [r1, 0x3]
- str r3, [r2, 0x8]
- movs r0, 0x3
- strb r0, [r1, 0x2]
-_0800BB74:
- ldr r0, _0800BB8C @ =gUnknown_02024A68
- strb r6, [r0]
- b _0800BD40
- .align 2, 0
-_0800BB7C: .4byte gUnknown_03004330
-_0800BB80: .4byte sub_802BF74
-_0800BB84: .4byte gUnknown_02024A72
-_0800BB88: .4byte sub_8037510
-_0800BB8C: .4byte gUnknown_02024A68
-_0800BB90:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r1, [r6]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0800BBA8
- ldr r1, _0800BBD0 @ =gUnknown_030042D4
- ldr r0, _0800BBD4 @ =sub_8010800
- str r0, [r1]
-_0800BBA8:
- movs r0, 0
- mov r10, r0
- ldr r1, _0800BBD8 @ =gLinkPlayers
- mov r12, r1
- ldr r7, _0800BBDC @ =gUnknown_02024A72
- mov r8, r0
- ldr r6, _0800BBE0 @ =gUnknown_02024A6A
- movs r4, 0
- movs r2, 0x3
- mov r9, r2
-_0800BBBC:
- mov r1, r12
- adds r0, r4, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _0800BBE4
- cmp r0, 0x1
- bge _0800BBFC
- cmp r0, 0
- beq _0800BBE8
- b _0800BC06
- .align 2, 0
-_0800BBD0: .4byte gUnknown_030042D4
-_0800BBD4: .4byte sub_8010800
-_0800BBD8: .4byte gLinkPlayers
-_0800BBDC: .4byte gUnknown_02024A72
-_0800BBE0: .4byte gUnknown_02024A6A
-_0800BBE4:
- cmp r0, 0x3
- bne _0800BC06
-_0800BBE8:
- ldr r0, _0800BBF8 @ =gLinkPlayers
- adds r0, r4, r0
- ldrb r0, [r0, 0x18]
- movs r1, 0
- bl sub_8094978
- b _0800BC06
- .align 2, 0
-_0800BBF8: .4byte gLinkPlayers
-_0800BBFC:
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_8094978
-_0800BC06:
- cmp r10, r5
- bne _0800BC56
- ldr r0, _0800BC2C @ =gLinkPlayers
- adds r3, r4, r0
- ldrh r1, [r3, 0x18]
- lsls r1, 2
- ldr r2, _0800BC30 @ =gUnknown_03004330
- adds r1, r2
- ldr r2, _0800BC34 @ =sub_802BF74
- str r2, [r1]
- ldrh r1, [r3, 0x18]
- mov r12, r0
- cmp r1, 0x2
- bgt _0800BC38
- cmp r1, 0x1
- bge _0800BC4C
- cmp r1, 0
- beq _0800BC3C
- b _0800BD2C
- .align 2, 0
-_0800BC2C: .4byte gLinkPlayers
-_0800BC30: .4byte gUnknown_03004330
-_0800BC34: .4byte sub_802BF74
-_0800BC38:
- cmp r1, 0x3
- bne _0800BD2C
-_0800BC3C:
- mov r1, r12
- adds r0, r4, r1
- ldrh r1, [r0, 0x18]
- adds r1, r7
- mov r2, r8
- strb r2, [r1]
- ldrh r0, [r0, 0x18]
- b _0800BD12
-_0800BC4C:
- adds r1, r7
- movs r0, 0x2
- strb r0, [r1]
- ldrh r0, [r3, 0x18]
- b _0800BD24
-_0800BC56:
- ldr r2, _0800BC7C @ =gLinkPlayers
- adds r0, r4, r2
- ldrh r1, [r0, 0x18]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- mov r12, r2
- cmp r0, 0
- bne _0800BC80
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0800BC92
- b _0800BCD8
- .align 2, 0
-_0800BC7C: .4byte gLinkPlayers
-_0800BC80:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0800BCD8
-_0800BC92:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- lsls r0, 2
- ldr r1, _0800BCB4 @ =gUnknown_03004330
- adds r0, r1
- ldr r1, _0800BCB8 @ =sub_811DA78
- str r1, [r0]
- ldrh r1, [r2, 0x18]
- cmp r1, 0x2
- bgt _0800BCBC
- cmp r1, 0x1
- bge _0800BCD0
- cmp r1, 0
- beq _0800BCC0
- b _0800BD2C
- .align 2, 0
-_0800BCB4: .4byte gUnknown_03004330
-_0800BCB8: .4byte sub_811DA78
-_0800BCBC:
- cmp r1, 0x3
- bne _0800BD2C
-_0800BCC0:
- mov r2, r12
- adds r0, r4, r2
- ldrh r1, [r0, 0x18]
- adds r1, r7
- mov r2, r8
- strb r2, [r1]
- ldrh r0, [r0, 0x18]
- b _0800BD12
-_0800BCD0:
- adds r1, r7
- movs r0, 0x2
- strb r0, [r1]
- b _0800BD22
-_0800BCD8:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- lsls r0, 2
- ldr r1, _0800BCF8 @ =gUnknown_03004330
- adds r0, r1
- ldr r1, _0800BCFC @ =sub_8037510
- str r1, [r0]
- ldrh r0, [r2, 0x18]
- cmp r0, 0x2
- bgt _0800BD00
- cmp r0, 0x1
- bge _0800BD1C
- cmp r0, 0
- beq _0800BD04
- b _0800BD2C
- .align 2, 0
-_0800BCF8: .4byte gUnknown_03004330
-_0800BCFC: .4byte sub_8037510
-_0800BD00:
- cmp r0, 0x3
- bne _0800BD2C
-_0800BD04:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- adds r0, r7
- movs r1, 0x1
- strb r1, [r0]
- ldrh r0, [r2, 0x18]
-_0800BD12:
- lsls r0, 1
- adds r0, r6
- mov r1, r8
- strh r1, [r0]
- b _0800BD2C
-_0800BD1C:
- adds r0, r7
- mov r1, r9
- strb r1, [r0]
-_0800BD22:
- ldrh r0, [r2, 0x18]
-_0800BD24:
- lsls r0, 1
- adds r0, r6
- mov r2, r9
- strh r2, [r0]
-_0800BD2C:
- adds r4, 0x1C
- movs r0, 0x1
- add r10, r0
- mov r1, r10
- cmp r1, 0x3
- bgt _0800BD3A
- b _0800BBBC
-_0800BD3A:
- ldr r1, _0800BD50 @ =gUnknown_02024A68
- movs r0, 0x4
-_0800BD3E:
- strb r0, [r1]
-_0800BD40:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800BD50: .4byte gUnknown_02024A68
- thumb_func_end sub_800BA78
-
- thumb_func_start sub_800BD54
-sub_800BD54: @ 800BD54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _0800BD74 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800BD6C
- b _0800BE88
-_0800BD6C:
- movs r0, 0
- mov r8, r0
- b _0800BE7E
- .align 2, 0
-_0800BD74: .4byte gBattleTypeFlags
-_0800BD78:
- movs r5, 0
- movs r0, 0x1
- add r0, r8
- mov r10, r0
- ldr r0, _0800BDA4 @ =gUnknown_02024A72
- add r0, r8
- mov r9, r0
- mov r0, r8
- lsls r6, r0, 1
- movs r7, 0
-_0800BD8C:
- mov r0, r8
- cmp r0, 0x1
- bgt _0800BDF4
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0800BDAC
- ldr r0, _0800BDA8 @ =gPlayerParty
- b _0800BDAE
- .align 2, 0
-_0800BDA4: .4byte gUnknown_02024A72
-_0800BDA8: .4byte gPlayerParty
-_0800BDAC:
- ldr r0, _0800BDEC @ =gEnemyParty
-_0800BDAE:
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0800BE74
- ldr r0, _0800BDF0 @ =gUnknown_02024A6A
- adds r0, r6, r0
- strh r5, [r0]
- b _0800BE7C
- .align 2, 0
-_0800BDEC: .4byte gEnemyParty
-_0800BDF0: .4byte gUnknown_02024A6A
-_0800BDF4:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0800BE1C
- ldr r0, _0800BE18 @ =gPlayerParty
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0xB
- b _0800BE30
- .align 2, 0
-_0800BE18: .4byte gPlayerParty
-_0800BE1C:
- ldr r0, _0800BE6C @ =gEnemyParty
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0x41
-_0800BE30:
- bl GetMonData
- cmp r0, 0
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0800BE74
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0800BE74
- ldr r1, _0800BE70 @ =gUnknown_02024A6A
- mov r0, r8
- subs r0, 0x2
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _0800BE74
- adds r0, r6, r1
- strh r5, [r0]
- b _0800BE7C
- .align 2, 0
-_0800BE6C: .4byte gEnemyParty
-_0800BE70: .4byte gUnknown_02024A6A
-_0800BE74:
- adds r7, 0x64
- adds r5, 0x1
- cmp r5, 0x5
- ble _0800BD8C
-_0800BE7C:
- mov r8, r10
-_0800BE7E:
- ldr r0, _0800BE98 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r8, r0
- bge _0800BE88
- b _0800BD78
-_0800BE88:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800BE98: .4byte gUnknown_02024A68
- thumb_func_end sub_800BD54
-
- thumb_func_start dp01_prepare_buffer
-dp01_prepare_buffer: @ 800BE9C
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r5, r3, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _0800BEC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0800BEC8
- adds r0, r3, 0
- adds r1, r2, 0
- adds r2, r4, 0
- bl dp01_prepare_buffer_wireless_probably
- b _0800BF1A
- .align 2, 0
-_0800BEC4: .4byte gBattleTypeFlags
-_0800BEC8:
- cmp r5, 0
- beq _0800BED2
- cmp r5, 0x1
- beq _0800BEFC
- b _0800BF1A
-_0800BED2:
- movs r3, 0
- cmp r3, r2
- bge _0800BF1A
- ldr r6, _0800BEF4 @ =gUnknown_02023A60
- ldr r5, _0800BEF8 @ =gUnknown_02024A60
-_0800BEDC:
- ldrb r0, [r5]
- lsls r0, 9
- adds r0, r3, r0
- adds r0, r6
- ldrb r1, [r4]
- strb r1, [r0]
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, r2
- blt _0800BEDC
- b _0800BF1A
- .align 2, 0
-_0800BEF4: .4byte gUnknown_02023A60
-_0800BEF8: .4byte gUnknown_02024A60
-_0800BEFC:
- movs r3, 0
- cmp r3, r2
- bge _0800BF1A
- ldr r6, _0800BF20 @ =gUnknown_02024260
- ldr r5, _0800BF24 @ =gUnknown_02024A60
-_0800BF06:
- ldrb r0, [r5]
- lsls r0, 9
- adds r0, r3, r0
- adds r0, r6
- ldrb r1, [r4]
- strb r1, [r0]
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, r2
- blt _0800BF06
-_0800BF1A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800BF20: .4byte gUnknown_02024260
-_0800BF24: .4byte gUnknown_02024A60
- thumb_func_end dp01_prepare_buffer
-
- thumb_func_start sub_800BF28
-sub_800BF28: @ 800BF28
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0800BFD0 @ =sub_800C1A8
- movs r1, 0
- bl CreateTask
- ldr r2, _0800BFD4 @ =gUnknown_020238C4
- strb r0, [r2]
- ldr r5, _0800BFD8 @ =gTasks
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r6, 0
- movs r4, 0
- strh r4, [r0, 0x1E]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x26]
- ldr r0, _0800BFDC @ =sub_800C47C
- movs r1, 0
- bl CreateTask
- ldr r2, _0800BFE0 @ =gUnknown_020238C5
- strb r0, [r2]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x26]
- ldr r0, _0800BFE4 @ =gUnknown_020238C6
- strb r6, [r0]
- mov r0, sp
- strh r4, [r0]
- ldr r1, _0800BFE8 @ =0x02014000
- ldr r2, _0800BFEC @ =0x01001000
- bl CpuSet
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800BFD0: .4byte sub_800C1A8
-_0800BFD4: .4byte gUnknown_020238C4
-_0800BFD8: .4byte gTasks
-_0800BFDC: .4byte sub_800C47C
-_0800BFE0: .4byte gUnknown_020238C5
-_0800BFE4: .4byte gUnknown_020238C6
-_0800BFE8: .4byte 0x02014000
-_0800BFEC: .4byte 0x01001000
- thumb_func_end sub_800BF28
-
- thumb_func_start dp01_prepare_buffer_wireless_probably
-dp01_prepare_buffer_wireless_probably: @ 800BFF0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r2
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- movs r1, 0x3
- mov r0, r8
- bics r0, r1
- adds r0, 0x4
- mov r9, r0
- ldr r2, _0800C168 @ =gTasks
- ldr r3, _0800C16C @ =gUnknown_020238C4
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r4, r0, r2
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- add r0, r9
- adds r0, 0x9
- movs r1, 0x80
- lsls r1, 5
- adds r5, r2, 0
- cmp r0, r1
- ble _0800C042
- ldrh r0, [r4, 0x24]
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r2, [r0, 0x24]
-_0800C042:
- ldr r4, _0800C170 @ =0x02000000
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r0, [r0, r2]
- movs r7, 0xA0
- lsls r7, 9
- adds r0, r7
- adds r0, r4
- strb r6, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- ldr r2, _0800C174 @ =0x00014001
- adds r0, r2
- adds r0, r4
- ldr r1, _0800C178 @ =gUnknown_02024A60
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r7, 0x24
- ldrsh r0, [r0, r7]
- ldr r1, _0800C17C @ =0x00014002
- adds r0, r1
- adds r0, r4
- ldr r1, _0800C180 @ =gUnknown_02024C07
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r0, [r0, r2]
- ldr r7, _0800C184 @ =0x00014003
- adds r0, r7
- adds r0, r4
- ldr r1, _0800C188 @ =gUnknown_02024C08
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- ldr r2, _0800C18C @ =0x00014004
- adds r0, r2
- adds r0, r4
- mov r7, r9
- strb r7, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- ldr r7, _0800C190 @ =0x00014005
- adds r1, r7
- adds r1, r4
- movs r0, 0xFF
- lsls r0, 8
- mov r2, r9
- ands r0, r2
- asrs r0, 8
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r7, 0x24
- ldrsh r0, [r0, r7]
- ldr r1, _0800C194 @ =0x00014006
- adds r0, r1
- adds r0, r4
- ldr r1, _0800C198 @ =gUnknown_02024C0C
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r0, [r0, r2]
- ldr r7, _0800C19C @ =0x00014007
- adds r0, r7
- adds r0, r4
- ldr r1, _0800C1A0 @ =gUnknown_02024C0A
- ldrb r1, [r1]
- strb r1, [r0]
- movs r2, 0
- cmp r2, r8
- bge _0800C146
- mov r12, r4
- adds r6, r3, 0
- ldr r4, _0800C1A4 @ =0x00014008
-_0800C122:
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0800C168 @ =gTasks
- adds r0, r1
- movs r7, 0x24
- ldrsh r1, [r0, r7]
- adds r0, r2, r4
- adds r1, r0
- add r1, r12
- mov r7, r10
- adds r0, r7, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, r8
- blt _0800C122
-_0800C146:
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r5
- ldrh r0, [r1, 0x24]
- add r0, r9
- adds r0, 0x8
- strh r0, [r1, 0x24]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C168: .4byte gTasks
-_0800C16C: .4byte gUnknown_020238C4
-_0800C170: .4byte 0x02000000
-_0800C174: .4byte 0x00014001
-_0800C178: .4byte gUnknown_02024A60
-_0800C17C: .4byte 0x00014002
-_0800C180: .4byte gUnknown_02024C07
-_0800C184: .4byte 0x00014003
-_0800C188: .4byte gUnknown_02024C08
-_0800C18C: .4byte 0x00014004
-_0800C190: .4byte 0x00014005
-_0800C194: .4byte 0x00014006
-_0800C198: .4byte gUnknown_02024C0C
-_0800C19C: .4byte 0x00014007
-_0800C1A0: .4byte gUnknown_02024C0A
-_0800C1A4: .4byte 0x00014008
- thumb_func_end dp01_prepare_buffer_wireless_probably
-
- thumb_func_start sub_800C1A8
-sub_800C1A8: @ 800C1A8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0800C1D0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x1E
- ldrsh r0, [r0, r2]
- adds r7, r1, 0
- cmp r0, 0x5
- bls _0800C1C4
- b _0800C354
-_0800C1C4:
- lsls r0, 2
- ldr r1, _0800C1D4 @ =_0800C1D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0800C1D0: .4byte gTasks
-_0800C1D4: .4byte _0800C1D8
- .align 2, 0
-_0800C1D8:
- .4byte _0800C1F0
- .4byte _0800C204
- .4byte _0800C220
- .4byte _0800C25C
- .4byte _0800C2E6
- .4byte _0800C338
-_0800C1F0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r7
- movs r1, 0x64
- strh r1, [r0, 0x1C]
- ldrh r1, [r0, 0x1E]
- adds r1, 0x1
- strh r1, [r0, 0x1E]
- b _0800C354
-_0800C204:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r7
- ldrh r0, [r1, 0x1C]
- subs r0, 0x1
- strh r0, [r1, 0x1C]
- lsls r0, 16
- cmp r0, 0
- beq _0800C21A
- b _0800C354
-_0800C21A:
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- b _0800C352
-_0800C220:
- bl GetLinkPlayerCount_2
- bl IsLinkMaster
- lsls r0, 24
- cmp r0, 0
- beq _0800C248
- bl sub_8007F4C
- ldr r0, _0800C244 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- b _0800C352
- .align 2, 0
-_0800C244: .4byte gTasks
-_0800C248:
- ldr r0, _0800C258 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- b _0800C352
- .align 2, 0
-_0800C258: .4byte gTasks
-_0800C25C:
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r7
- movs r5, 0x26
- ldrsh r3, [r2, r5]
- movs r0, 0x24
- ldrsh r6, [r2, r0]
- mov r12, r6
- cmp r3, r12
- beq _0800C354
- ldrh r0, [r2, 0x22]
- movs r6, 0x22
- ldrsh r5, [r2, r6]
- cmp r5, 0
- bne _0800C2E0
- cmp r3, r12
- ble _0800C28C
- movs r6, 0x20
- ldrsh r0, [r2, r6]
- cmp r3, r0
- bne _0800C28C
- strh r5, [r2, 0x20]
- strh r5, [r2, 0x26]
-_0800C28C:
- ldr r5, _0800C2D4 @ =0x02000000
- adds r4, r1, r4
- lsls r4, 3
- adds r4, r7
- movs r0, 0x26
- ldrsh r2, [r4, r0]
- ldr r1, _0800C2D8 @ =0x00014004
- adds r0, r2, r1
- adds r0, r5
- ldrb r1, [r0]
- ldr r6, _0800C2DC @ =0x00014005
- adds r2, r6
- adds r2, r5
- ldrb r0, [r2]
- lsls r0, 8
- orrs r1, r0
- adds r1, 0x8
- lsls r1, 16
- lsrs r6, r1, 16
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- movs r2, 0xA0
- lsls r2, 9
- adds r5, r2
- adds r1, r5
- adds r2, r6, 0
- bl SendBlock
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- b _0800C354
- .align 2, 0
-_0800C2D4: .4byte 0x02000000
-_0800C2D8: .4byte 0x00014004
-_0800C2DC: .4byte 0x00014005
-_0800C2E0:
- subs r0, 0x1
- strh r0, [r2, 0x22]
- b _0800C354
-_0800C2E6:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0800C354
- ldr r2, _0800C328 @ =0x02000000
- ldr r0, _0800C32C @ =gTasks
- lsls r3, r4, 2
- adds r3, r4
- lsls r3, 3
- adds r3, r0
- movs r4, 0x26
- ldrsh r1, [r3, r4]
- ldr r5, _0800C330 @ =0x00014004
- adds r0, r1, r5
- adds r0, r2
- ldrb r0, [r0]
- ldr r6, _0800C334 @ =0x00014005
- adds r1, r6
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- movs r2, 0x1
- strh r2, [r3, 0x22]
- orrs r0, r1
- ldrh r1, [r3, 0x26]
- adds r0, r1
- adds r0, 0x8
- strh r0, [r3, 0x26]
- movs r0, 0x3
- strh r0, [r3, 0x1E]
- b _0800C354
- .align 2, 0
-_0800C328: .4byte 0x02000000
-_0800C32C: .4byte gTasks
-_0800C330: .4byte 0x00014004
-_0800C334: .4byte 0x00014005
-_0800C338:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r7
- ldrh r0, [r1, 0x22]
- subs r0, 0x1
- strh r0, [r1, 0x22]
- lsls r0, 16
- cmp r0, 0
- bne _0800C354
- movs r0, 0x1
- strh r0, [r1, 0x22]
- movs r0, 0x3
-_0800C352:
- strh r0, [r1, 0x1E]
-_0800C354:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_800C1A8
-
- thumb_func_start sub_800C35C
-sub_800C35C: @ 800C35C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _0800C38C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0800C458
- ldr r0, _0800C390 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0800C458
- ldr r0, _0800C394 @ =gLinkPlayers
- ldr r1, [r0, 0x14]
- ldr r0, _0800C398 @ =0x00002211
- cmp r1, r0
- bne _0800C458
- movs r4, 0
- ldr r0, _0800C39C @ =gBlockRecvBuffer
- mov r10, r0
- b _0800C44C
- .align 2, 0
-_0800C38C: .4byte gReceivedRemoteLinkPlayers
-_0800C390: .4byte gBattleTypeFlags
-_0800C394: .4byte gLinkPlayers
-_0800C398: .4byte 0x00002211
-_0800C39C: .4byte gBlockRecvBuffer
-_0800C3A0:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800C468 @ =gBitTable
- lsls r1, r4, 2
- adds r1, r2
- ldr r1, [r1]
- ands r0, r1
- adds r1, r4, 0x1
- mov r9, r1
- cmp r0, 0
- beq _0800C446
- adds r0, r4, 0
- bl ResetBlockReceivedFlag
- lsls r0, r4, 8
- mov r2, r10
- adds r3, r0, r2
- ldr r1, _0800C46C @ =gBlockRecvBuffer + 0x4
- adds r0, r1
- ldrh r6, [r0]
- ldr r7, _0800C470 @ =gTasks
- ldr r2, _0800C474 @ =gUnknown_020238C5
- mov r12, r2
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r2, r0, r7
- movs r0, 0x24
- ldrsh r1, [r2, r0]
- adds r0, r6, 0
- adds r0, 0x9
- adds r1, r0
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- ble _0800C402
- ldrh r0, [r2, 0x24]
- strh r0, [r2, 0x20]
- mov r2, r12
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r7
- movs r1, 0
- strh r1, [r0, 0x24]
-_0800C402:
- mov r2, r12
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r7
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- ldr r0, _0800C478 @ =0x02015000
- adds r5, r1, r0
- adds r4, r3, 0
- movs r2, 0
- adds r3, r6, 0
- adds r3, 0x8
- mov r8, r7
- mov r7, r12
- cmp r2, r3
- bge _0800C434
-_0800C426:
- adds r0, r5, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r3
- blt _0800C426
-_0800C434:
- ldrb r0, [r7]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x24]
- adds r0, r6, r0
- adds r0, 0x8
- strh r0, [r1, 0x24]
-_0800C446:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r4, r0, 24
-_0800C44C:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _0800C3A0
-_0800C458:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C468: .4byte gBitTable
-_0800C46C: .4byte gBlockRecvBuffer + 0x4
-_0800C470: .4byte gTasks
-_0800C474: .4byte gUnknown_020238C5
-_0800C478: .4byte 0x02015000
- thumb_func_end sub_800C35C
-
- thumb_func_start sub_800C47C
-sub_800C47C: @ 800C47C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _0800C4FC @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r3, r0, r1
- movs r0, 0x26
- ldrsh r2, [r3, r0]
- movs r4, 0x24
- ldrsh r0, [r3, r4]
- adds r4, r1, 0
- cmp r2, r0
- bne _0800C4A4
- b _0800C5FA
-_0800C4A4:
- cmp r2, r0
- ble _0800C4B6
- movs r1, 0x20
- ldrsh r0, [r3, r1]
- cmp r2, r0
- bne _0800C4B6
- movs r0, 0
- strh r0, [r3, 0x20]
- strh r0, [r3, 0x26]
-_0800C4B6:
- ldr r5, _0800C500 @ =0x02000000
- mov r2, r8
- lsls r1, r2, 2
- adds r0, r1, r2
- lsls r0, 3
- adds r6, r0, r4
- movs r4, 0x26
- ldrsh r3, [r6, r4]
- ldr r2, _0800C504 @ =0x00015001
- adds r0, r3, r2
- adds r0, r5
- ldrb r4, [r0]
- adds r2, 0x3
- adds r0, r3, r2
- adds r0, r5
- ldrb r7, [r0]
- adds r2, 0x1
- adds r0, r3, r2
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 8
- orrs r7, r0
- subs r2, 0x5
- adds r0, r3, r2
- adds r0, r5
- ldrb r0, [r0]
- mov r9, r1
- cmp r0, 0x1
- beq _0800C5B0
- cmp r0, 0x1
- bgt _0800C508
- cmp r0, 0
- beq _0800C50E
- b _0800C5E8
- .align 2, 0
-_0800C4FC: .4byte gTasks
-_0800C500: .4byte 0x02000000
-_0800C504: .4byte 0x00015001
-_0800C508:
- cmp r0, 0x2
- beq _0800C5CC
- b _0800C5E8
-_0800C50E:
- ldr r2, _0800C588 @ =gUnknown_02024A64
- ldr r1, _0800C58C @ =gBitTable
- lsls r0, r4, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0800C5FA
- lsls r0, r4, 9
- ldr r1, _0800C590 @ =gUnknown_02023A60
- adds r0, r1
- ldr r2, _0800C594 @ =0x00015008
- adds r1, r5, r2
- adds r1, r3, r1
- adds r2, r7, 0
- bl memcpy
- adds r0, r4, 0
- bl sub_80155A4
- ldr r0, _0800C598 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0800C5E8
- ldr r1, _0800C59C @ =gUnknown_02024C07
- movs r4, 0x26
- ldrsh r0, [r6, r4]
- ldr r2, _0800C5A0 @ =0x00015002
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _0800C5A4 @ =gUnknown_02024C08
- movs r4, 0x26
- ldrsh r0, [r6, r4]
- adds r2, 0x1
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _0800C5A8 @ =gUnknown_02024C0C
- movs r4, 0x26
- ldrsh r0, [r6, r4]
- adds r2, 0x3
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _0800C5AC @ =gUnknown_02024C0A
- movs r4, 0x26
- ldrsh r0, [r6, r4]
- adds r2, 0x1
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- b _0800C5E8
- .align 2, 0
-_0800C588: .4byte gUnknown_02024A64
-_0800C58C: .4byte gBitTable
-_0800C590: .4byte gUnknown_02023A60
-_0800C594: .4byte 0x00015008
-_0800C598: .4byte gBattleTypeFlags
-_0800C59C: .4byte gUnknown_02024C07
-_0800C5A0: .4byte 0x00015002
-_0800C5A4: .4byte gUnknown_02024C08
-_0800C5A8: .4byte gUnknown_02024C0C
-_0800C5AC: .4byte gUnknown_02024C0A
-_0800C5B0:
- lsls r0, r4, 9
- ldr r1, _0800C5C4 @ =gUnknown_02024260
- adds r0, r1
- ldr r4, _0800C5C8 @ =0x00015008
- adds r1, r5, r4
- adds r1, r3, r1
- adds r2, r7, 0
- bl memcpy
- b _0800C5E8
- .align 2, 0
-_0800C5C4: .4byte gUnknown_02024260
-_0800C5C8: .4byte 0x00015008
-_0800C5CC:
- ldr r1, _0800C608 @ =0x00015008
- adds r0, r3, r1
- adds r0, r5
- ldrb r2, [r0]
- ldr r3, _0800C60C @ =gUnknown_02024A64
- ldr r1, _0800C610 @ =gBitTable
- lsls r0, r4, 2
- adds r0, r1
- lsls r2, 2
- ldr r1, [r0]
- lsls r1, r2
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
-_0800C5E8:
- ldr r0, _0800C614 @ =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, r7, r0
- adds r0, 0x8
- strh r0, [r1, 0x26]
-_0800C5FA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C608: .4byte 0x00015008
-_0800C60C: .4byte gUnknown_02024A64
-_0800C610: .4byte gBitTable
-_0800C614: .4byte gTasks
- thumb_func_end sub_800C47C
-
- thumb_func_start dp01_build_cmdbuf_x00_a_b_0
-dp01_build_cmdbuf_x00_a_b_0: @ 800C618
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C638 @ =gUnknown_03004040
- movs r3, 0
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r3, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C638: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x00_a_b_0
-
- thumb_func_start dp01_build_cmdbuf_x01_a_b_0
-dp01_build_cmdbuf_x01_a_b_0: @ 800C63C
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C660 @ =gUnknown_03004040
- movs r4, 0
- movs r3, 0x1
- strb r3, [r1]
- strb r5, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r4, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C660: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x01_a_b_0
-
- thumb_func_start dp01_build_cmdbuf_x02_a_b_varargs
-dp01_build_cmdbuf_x02_a_b_varargs: @ 800C664
- push {r4-r6,lr}
- ldr r4, [sp, 0x10]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r3, 24
- lsrs r5, r3, 24
- ldr r0, _0800C6A0 @ =gUnknown_03004040
- movs r3, 0x2
- strb r3, [r0]
- strb r1, [r0, 0x1]
- strb r2, [r0, 0x2]
- adds r1, r0, 0
- cmp r5, 0
- beq _0800C692
- adds r3, r1, 0x3
- adds r2, r5, 0
-_0800C684:
- ldrb r0, [r4]
- strb r0, [r3]
- adds r4, 0x1
- adds r3, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne _0800C684
-_0800C692:
- adds r2, r5, 0x3
- adds r0, r6, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C6A0: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x02_a_b_varargs
-
- thumb_func_start unref_sub_800C6A4
-unref_sub_800C6A4: @ 800C6A4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r4, r2, 24
- ldr r0, _0800C6E0 @ =gUnknown_03004040
- movs r2, 0x3
- strb r2, [r0]
- strb r1, [r0, 0x1]
- strb r4, [r0, 0x2]
- adds r5, r0, 0
- cmp r4, 0
- beq _0800C6D0
- adds r1, r5, 0x3
- adds r2, r4, 0
-_0800C6C2:
- ldrb r0, [r3]
- strb r0, [r1]
- adds r3, 0x1
- adds r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne _0800C6C2
-_0800C6D0:
- adds r2, r4, 0x3
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C6E0: .4byte gUnknown_03004040
- thumb_func_end unref_sub_800C6A4
-
- thumb_func_start dp01_build_cmdbuf_x04_4_4_4
-dp01_build_cmdbuf_x04_4_4_4: @ 800C6E4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C700 @ =gUnknown_03004040
- movs r2, 0x4
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C700: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x04_4_4_4
-
- thumb_func_start sub_800C704
-sub_800C704: @ 800C704
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C724 @ =gUnknown_03004040
- movs r3, 0x5
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r3, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C724: .4byte gUnknown_03004040
- thumb_func_end sub_800C704
-
- thumb_func_start dp01_build_cmdbuf_x06_a
-dp01_build_cmdbuf_x06_a: @ 800C728
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C744 @ =gUnknown_03004040
- movs r2, 0x6
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C744: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x06_a
-
- thumb_func_start dp01_build_cmdbuf_x07_7_7_7
-dp01_build_cmdbuf_x07_7_7_7: @ 800C748
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C764 @ =gUnknown_03004040
- movs r2, 0x7
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C764: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x07_7_7_7
-
- thumb_func_start dp01_build_cmdbuf_x08_8_8_8
-dp01_build_cmdbuf_x08_8_8_8: @ 800C768
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C784 @ =gUnknown_03004040
- movs r2, 0x8
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C784: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x08_8_8_8
-
- thumb_func_start dp01_build_cmdbuf_x09_9_9_9
-dp01_build_cmdbuf_x09_9_9_9: @ 800C788
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C7A4 @ =gUnknown_03004040
- movs r2, 0x9
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C7A4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x09_9_9_9
-
- thumb_func_start dp01_build_cmdbuf_x0A_A_A_A
-dp01_build_cmdbuf_x0A_A_A_A: @ 800C7A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C7C4 @ =gUnknown_03004040
- movs r2, 0xA
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C7C4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x0A_A_A_A
-
- thumb_func_start dp01_build_cmdbuf_x0B_B_B_B
-dp01_build_cmdbuf_x0B_B_B_B: @ 800C7C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C7E4 @ =gUnknown_03004040
- movs r2, 0xB
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C7E4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x0B_B_B_B
-
- thumb_func_start dp01_build_cmdbuf_x0C_C_C_C
-dp01_build_cmdbuf_x0C_C_C_C: @ 800C7E8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C804 @ =gUnknown_03004040
- movs r2, 0xC
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C804: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x0C_C_C_C
-
- thumb_func_start dp01_build_cmdbuf_x0D_a
-dp01_build_cmdbuf_x0D_a: @ 800C808
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800C824 @ =gUnknown_03004040
- movs r2, 0xD
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800C824: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x0D_a
-
- thumb_func_start unref_sub_800C828
-unref_sub_800C828: @ 800C828
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r1, _0800C86C @ =gUnknown_03004040
- movs r0, 0xE
- strb r0, [r1]
- strb r4, [r1, 0x1]
- lsls r0, r4, 1
- adds r0, r4
- adds r5, r1, 0
- cmp r0, 0
- beq _0800C856
- adds r1, r5, 0x2
- adds r3, r0, 0
-_0800C848:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0800C848
-_0800C856:
- lsls r2, r4, 1
- adds r2, r4
- adds r2, 0x2
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C86C: .4byte gUnknown_03004040
- thumb_func_end unref_sub_800C828
-
- thumb_func_start dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes
-dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes: @ 800C870
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r7, _0800C904 @ =gUnknown_03004040
- movs r0, 0
- mov r12, r0
- movs r0, 0xF
- strb r0, [r7]
- strb r1, [r7, 0x1]
- lsrs r1, 8
- strb r1, [r7, 0x2]
- strb r2, [r7, 0x3]
- strb r3, [r7, 0x4]
- movs r6, 0xFF
- lsls r6, 8
- lsrs r3, 8
- strb r3, [r7, 0x5]
- strb r4, [r7, 0x6]
- adds r0, r4, 0
- ands r0, r6
- asrs r0, 8
- strb r0, [r7, 0x7]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r4
- asrs r0, 16
- strb r0, [r7, 0x8]
- lsrs r4, 24
- strb r4, [r7, 0x9]
- strb r5, [r7, 0xA]
- ldr r0, _0800C908 @ =gUnknown_02024C0E
- ldrb r0, [r0]
- strb r0, [r7, 0xB]
- mov r0, r12
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0800C910
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- bne _0800C910
- ldr r0, _0800C90C @ =gBattleWeather
- ldrh r0, [r0]
- strb r0, [r7, 0xC]
- ands r6, r0
- lsrs r0, r6, 8
- strb r0, [r7, 0xD]
- adds r4, r7, 0
- b _0800C91A
- .align 2, 0
-_0800C904: .4byte gUnknown_03004040
-_0800C908: .4byte gUnknown_02024C0E
-_0800C90C: .4byte gBattleWeather
-_0800C910:
- ldr r0, _0800C944 @ =gUnknown_03004040
- movs r1, 0
- strb r1, [r0, 0xC]
- strb r1, [r0, 0xD]
- adds r4, r0, 0
-_0800C91A:
- movs r0, 0
- strb r0, [r4, 0xE]
- strb r0, [r4, 0xF]
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, [sp, 0x24]
- movs r2, 0x1C
- bl memcpy
- mov r0, r8
- adds r1, r4, 0
- movs r2, 0x2C
- bl dp01_prepare_buffer
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C944: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes
-
- thumb_func_start dp01_build_cmdbuf_x10_TODO
-dp01_build_cmdbuf_x10_TODO: @ 800C948
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _0800CA2C @ =gUnknown_03004040
- movs r0, 0x10
- strb r0, [r2]
- ldr r0, _0800CA30 @ =gUnknown_02024D26
- ldrb r0, [r0]
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- lsrs r1, 8
- strb r1, [r2, 0x3]
- adds r0, r2, 0x4
- mov r12, r0
- ldr r4, _0800CA34 @ =gUnknown_02024BE6
- ldrh r0, [r4]
- strh r0, [r2, 0x4]
- ldr r0, _0800CA38 @ =gUnknown_02024BE8
- ldrh r0, [r0]
- mov r1, r12
- strh r0, [r1, 0x2]
- ldr r0, _0800CA3C @ =gUnknown_02024C04
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- ldr r0, _0800CA40 @ =byte_2024C06
- ldrb r0, [r0]
- strb r0, [r1, 0x6]
- ldr r1, _0800CA44 @ =0x02000000
- ldr r3, _0800CA48 @ =0x00016003
- adds r0, r1, r3
- ldrb r0, [r0]
- mov r7, r12
- strb r0, [r7, 0x7]
- adds r3, 0x5B
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r7, 0x8]
- ldr r7, _0800CA4C @ =0x000160c1
- adds r1, r7
- ldrb r0, [r1]
- mov r1, r12
- strb r0, [r1, 0x9]
- ldr r0, _0800CA50 @ =gUnknown_02024C0B
- ldrb r0, [r0]
- strb r0, [r1, 0xA]
- ldr r3, _0800CA54 @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- mov r3, r12
- strb r0, [r3, 0xB]
- movs r3, 0
- mov r9, r2
- ldr r7, _0800CA58 @ =gUnknown_030042B0
- mov r8, r7
- adds r2, 0x10
- ldr r0, _0800CA5C @ =gBattleMons
- adds r4, r0, 0
- adds r4, 0x20
-_0800C9D2:
- adds r1, r2, r3
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x58
- adds r3, 0x1
- cmp r3, 0x3
- ble _0800C9D2
- movs r3, 0
- mov r5, r12
- adds r5, 0x10
- mov r4, r12
- adds r4, 0x20
- ldr r6, _0800CA60 @ =gUnknown_03004290
- mov r2, r12
- adds r2, 0x30
-_0800C9F0:
- adds r1, r5, r3
- ldr r7, _0800CA64 @ =gUnknown_030041C0
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r4, r3
- adds r0, r3, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r3
- mov r7, r8
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0xF
- ble _0800C9F0
- mov r0, r10
- mov r1, r9
- movs r2, 0x44
- bl dp01_prepare_buffer
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CA2C: .4byte gUnknown_03004040
-_0800CA30: .4byte gUnknown_02024D26
-_0800CA34: .4byte gUnknown_02024BE6
-_0800CA38: .4byte gUnknown_02024BE8
-_0800CA3C: .4byte gUnknown_02024C04
-_0800CA40: .4byte byte_2024C06
-_0800CA44: .4byte 0x02000000
-_0800CA48: .4byte 0x00016003
-_0800CA4C: .4byte 0x000160c1
-_0800CA50: .4byte gUnknown_02024C0B
-_0800CA54: .4byte gBattleMoves
-_0800CA58: .4byte gUnknown_030042B0
-_0800CA5C: .4byte gBattleMons
-_0800CA60: .4byte gUnknown_03004290
-_0800CA64: .4byte gUnknown_030041C0
- thumb_func_end dp01_build_cmdbuf_x10_TODO
-
- thumb_func_start dp01_build_cmdbuf_x11_TODO
-dp01_build_cmdbuf_x11_TODO: @ 800CA68
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _0800CB28 @ =gUnknown_03004040
- movs r0, 0x11
- strb r0, [r2]
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- lsrs r1, 8
- strb r1, [r2, 0x3]
- adds r0, r2, 0x4
- mov r12, r0
- ldr r0, _0800CB2C @ =gUnknown_02024BE6
- ldrh r0, [r0]
- strh r0, [r2, 0x4]
- ldr r0, _0800CB30 @ =gUnknown_02024BE8
- ldrh r0, [r0]
- mov r1, r12
- strh r0, [r1, 0x2]
- ldr r0, _0800CB34 @ =gUnknown_02024C04
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- ldr r0, _0800CB38 @ =byte_2024C06
- ldrb r0, [r0]
- strb r0, [r1, 0x6]
- ldr r0, _0800CB3C @ =0x02000000
- ldr r3, _0800CB40 @ =0x00016003
- adds r1, r0, r3
- ldrb r1, [r1]
- mov r7, r12
- strb r1, [r7, 0x7]
- ldr r1, _0800CB44 @ =0x0001605e
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r7, 0x8]
- movs r3, 0
- mov r9, r2
- ldr r7, _0800CB48 @ =gUnknown_030042B0
- mov r8, r7
- mov r4, r9
- adds r4, 0x10
- ldr r0, _0800CB4C @ =gBattleMons
- adds r2, r0, 0
- adds r2, 0x20
-_0800CACE:
- adds r1, r4, r3
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x58
- adds r3, 0x1
- cmp r3, 0x3
- ble _0800CACE
- movs r3, 0
- mov r5, r12
- adds r5, 0x10
- mov r4, r12
- adds r4, 0x20
- ldr r6, _0800CB50 @ =gUnknown_03004290
- mov r2, r12
- adds r2, 0x30
-_0800CAEC:
- adds r1, r5, r3
- ldr r7, _0800CB54 @ =gUnknown_030041C0
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r4, r3
- adds r0, r3, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r3
- mov r7, r8
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0xF
- ble _0800CAEC
- mov r0, r10
- mov r1, r9
- movs r2, 0x44
- bl dp01_prepare_buffer
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CB28: .4byte gUnknown_03004040
-_0800CB2C: .4byte gUnknown_02024BE6
-_0800CB30: .4byte gUnknown_02024BE8
-_0800CB34: .4byte gUnknown_02024C04
-_0800CB38: .4byte byte_2024C06
-_0800CB3C: .4byte 0x02000000
-_0800CB40: .4byte 0x00016003
-_0800CB44: .4byte 0x0001605e
-_0800CB48: .4byte gUnknown_030042B0
-_0800CB4C: .4byte gBattleMons
-_0800CB50: .4byte gUnknown_03004290
-_0800CB54: .4byte gUnknown_030041C0
- thumb_func_end dp01_build_cmdbuf_x11_TODO
-
- thumb_func_start dp01_build_cmdbuf_x12_a_bb
-dp01_build_cmdbuf_x12_a_bb: @ 800CB58
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, _0800CB80 @ =gUnknown_03004040
- movs r3, 0x12
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CB80: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x12_a_bb
-
- thumb_func_start unref_sub_800CB84
-unref_sub_800CB84: @ 800CB84
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CBA0 @ =gUnknown_03004040
- movs r2, 0x13
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800CBA0: .4byte gUnknown_03004040
- thumb_func_end unref_sub_800CB84
-
- thumb_func_start sub_800CBA4
-sub_800CBA4: @ 800CBA4
- push {r4-r6,lr}
- adds r5, r3, 0
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, _0800CBDC @ =gUnknown_03004040
- movs r4, 0
- movs r0, 0x14
- strb r0, [r3]
- strb r1, [r3, 0x1]
- strb r2, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0
- adds r1, r3, 0
- adds r4, r1, 0x4
-_0800CBC0:
- adds r0, r5, r2
- ldrb r0, [r0]
- strb r0, [r4]
- adds r4, 0x1
- adds r2, 0x1
- cmp r2, 0x13
- bls _0800CBC0
- adds r0, r6, 0
- movs r2, 0x18
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CBDC: .4byte gUnknown_03004040
- thumb_func_end sub_800CBA4
-
- thumb_func_start sub_800CBE0
-sub_800CBE0: @ 800CBE0
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0800CC10 @ =gUnknown_03004040
- movs r0, 0x15
- strb r0, [r1]
- movs r2, 0
- adds r3, r1, 0x1
-_0800CBF2:
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2
- ble _0800CBF2
- adds r0, r5, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CC10: .4byte gUnknown_03004040
- thumb_func_end sub_800CBE0
-
- thumb_func_start dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
-dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f: @ 800CC14
- push {r4-r6,lr}
- ldr r6, [sp, 0x10]
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0800CC4C @ =gUnknown_03004040
- movs r0, 0x16
- strb r0, [r4]
- strb r1, [r4, 0x1]
- strb r2, [r4, 0x2]
- strb r3, [r4, 0x3]
- movs r2, 0
- adds r1, r4, 0
- adds r3, r1, 0x4
-_0800CC2E:
- adds r0, r6, r2
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2
- ble _0800CC2E
- adds r0, r5, 0
- movs r2, 0x8
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CC4C: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
-
- thumb_func_start dp01_build_cmdbuf_x17_17_17_17
-dp01_build_cmdbuf_x17_17_17_17: @ 800CC50
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CC6C @ =gUnknown_03004040
- movs r2, 0x17
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800CC6C: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x17_17_17_17
-
- thumb_func_start dp01_build_cmdbuf_x18_0_aa_health_bar_update
-dp01_build_cmdbuf_x18_0_aa_health_bar_update: @ 800CC70
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _0800CCA4 @ =gUnknown_03004040
- movs r4, 0
- movs r2, 0x18
- strb r2, [r3]
- strb r4, [r3, 0x1]
- strb r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0xFF
- lsls r2, 8
- ands r1, r2
- asrs r1, 8
- strb r1, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CCA4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x18_0_aa_health_bar_update
-
- thumb_func_start dp01_build_cmdbuf_x19_a_bb
-dp01_build_cmdbuf_x19_a_bb: @ 800CCA8
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, _0800CCD8 @ =gUnknown_03004040
- movs r3, 0x19
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsls r2, 16
- asrs r2, 16
- movs r3, 0xFF
- lsls r3, 8
- ands r2, r3
- asrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CCD8: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x19_a_bb
-
- thumb_func_start dp01_build_cmdbuf_x1A_aaaa_bbbb
-dp01_build_cmdbuf_x1A_aaaa_bbbb: @ 800CCDC
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CD2C @ =gUnknown_03004040
- movs r3, 0x1A
- strb r3, [r1]
- strb r4, [r1, 0x1]
- movs r6, 0xFF
- lsls r6, 8
- adds r3, r4, 0
- ands r3, r6
- lsrs r3, 8
- strb r3, [r1, 0x2]
- movs r5, 0xFF
- lsls r5, 16
- adds r3, r4, 0
- ands r3, r5
- lsrs r3, 16
- strb r3, [r1, 0x3]
- lsrs r4, 24
- strb r4, [r1, 0x4]
- strb r2, [r1, 0x5]
- adds r3, r2, 0
- ands r3, r6
- lsrs r3, 8
- strb r3, [r1, 0x6]
- adds r3, r2, 0
- ands r3, r5
- lsrs r3, 16
- strb r3, [r1, 0x7]
- lsrs r2, 24
- strb r2, [r1, 0x8]
- movs r2, 0x9
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CD2C: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x1A_aaaa_bbbb
-
- thumb_func_start dp01_build_cmdbuf_x1B_aaaa_b
-dp01_build_cmdbuf_x1B_aaaa_b: @ 800CD30
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CD68 @ =gUnknown_03004040
- movs r3, 0x1B
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- movs r3, 0xFF
- lsls r3, 8
- ands r3, r2
- lsrs r3, 8
- strb r3, [r1, 0x3]
- movs r3, 0xFF
- lsls r3, 16
- ands r3, r2
- lsrs r3, 16
- strb r3, [r1, 0x4]
- lsrs r2, 24
- strb r2, [r1, 0x5]
- movs r2, 0x6
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CD68: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x1B_aaaa_b
-
- thumb_func_start dp01_build_cmdbuf_x1C_a
-dp01_build_cmdbuf_x1C_a: @ 800CD6C
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CD88 @ =gUnknown_03004040
- movs r2, 0x1C
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800CD88: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x1C_a
-
- thumb_func_start dp01_build_cmdbuf_x1D_1D_numargs_varargs
-dp01_build_cmdbuf_x1D_1D_numargs_varargs: @ 800CD8C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r1, _0800CDD0 @ =gUnknown_03004040
- movs r0, 0x1D
- strb r0, [r1]
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- adds r5, r1, 0
- cmp r4, 0
- beq _0800CDBC
- adds r1, r5, 0x4
- adds r3, r4, 0
-_0800CDAE:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0800CDAE
-_0800CDBC:
- adds r2, r4, 0x4
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CDD0: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x1D_1D_numargs_varargs
-
- thumb_func_start unref_sub_800CDD4
-unref_sub_800CDD4: @ 800CDD4
- push {r4-r6,lr}
- adds r4, r3, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 16
- lsrs r5, r2, 16
- ldr r2, _0800CE38 @ =gUnknown_03004040
- movs r0, 0x1E
- strb r0, [r2]
- strb r1, [r2, 0x1]
- movs r3, 0xFF
- lsls r3, 8
- adds r0, r1, 0
- ands r0, r3
- lsrs r0, 8
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r2, 0x3]
- lsrs r1, 24
- strb r1, [r2, 0x4]
- strb r5, [r2, 0x5]
- adds r0, r5, 0
- ands r0, r3
- lsrs r0, 8
- strb r0, [r2, 0x6]
- adds r1, r2, 0
- cmp r5, 0
- beq _0800CE24
- adds r3, r1, 0x7
- adds r2, r5, 0
-_0800CE16:
- ldrb r0, [r4]
- strb r0, [r3]
- adds r4, 0x1
- adds r3, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne _0800CE16
-_0800CE24:
- adds r2, r5, 0x7
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CE38: .4byte gUnknown_03004040
- thumb_func_end unref_sub_800CDD4
-
- thumb_func_start unref_sub_800CE3C
-unref_sub_800CE3C: @ 800CE3C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r1, _0800CE80 @ =gUnknown_03004040
- movs r0, 0x1F
- strb r0, [r1]
- strb r4, [r1, 0x1]
- lsrs r0, r4, 8
- strb r0, [r1, 0x2]
- adds r5, r1, 0
- cmp r4, 0
- beq _0800CE6A
- adds r1, r5, 0x3
- adds r3, r4, 0
-_0800CE5C:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0800CE5C
-_0800CE6A:
- adds r2, r4, 0x3
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CE80: .4byte gUnknown_03004040
- thumb_func_end unref_sub_800CE3C
-
- thumb_func_start unref_sub_800CE84
-unref_sub_800CE84: @ 800CE84
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r1, _0800CEC8 @ =gUnknown_03004040
- movs r0, 0x20
- strb r0, [r1]
- strb r4, [r1, 0x1]
- lsrs r0, r4, 8
- strb r0, [r1, 0x2]
- adds r5, r1, 0
- cmp r4, 0
- beq _0800CEB2
- adds r1, r5, 0x3
- adds r3, r4, 0
-_0800CEA4:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0800CEA4
-_0800CEB2:
- adds r2, r4, 0x3
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CEC8: .4byte gUnknown_03004040
- thumb_func_end unref_sub_800CE84
-
- thumb_func_start dp01_build_cmdbuf_x21_a_bb
-dp01_build_cmdbuf_x21_a_bb: @ 800CECC
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, _0800CEF4 @ =gUnknown_03004040
- movs r3, 0x21
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CEF4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x21_a_bb
-
- thumb_func_start dp01_build_cmdbuf_x22_a_three_bytes
-dp01_build_cmdbuf_x22_a_three_bytes: @ 800CEF8
- push {r4,r5,lr}
- adds r4, r2, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _0800CF2C @ =gUnknown_03004040
- movs r0, 0x22
- strb r0, [r2]
- strb r1, [r2, 0x1]
- movs r3, 0
- adds r1, r2, 0x2
-_0800CF0C:
- adds r0, r4, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _0800CF0C
- adds r0, r5, 0
- adds r1, r2, 0
- movs r2, 0x5
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CF2C: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x22_a_three_bytes
-
- thumb_func_start dp01_build_cmdbuf_x23_aa_0
-dp01_build_cmdbuf_x23_aa_0: @ 800CF30
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _0800CF58 @ =gUnknown_03004040
- movs r4, 0
- movs r2, 0x23
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CF58: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x23_aa_0
-
- thumb_func_start dp01_build_cmdbuf_x24_aa_0
-dp01_build_cmdbuf_x24_aa_0: @ 800CF5C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _0800CF84 @ =gUnknown_03004040
- movs r4, 0
- movs r2, 0x24
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CF84: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x24_aa_0
-
- thumb_func_start dp01_build_cmdbuf_x25_25_25_25
-dp01_build_cmdbuf_x25_25_25_25: @ 800CF88
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CFA4 @ =gUnknown_03004040
- movs r2, 0x25
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800CFA4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x25_25_25_25
-
- thumb_func_start dp01_build_cmdbuf_x26_a
-dp01_build_cmdbuf_x26_a: @ 800CFA8
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CFC4 @ =gUnknown_03004040
- movs r2, 0x26
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800CFC4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x26_a
-
- thumb_func_start dp01_build_cmdbuf_x27_27_27_27
-dp01_build_cmdbuf_x27_27_27_27: @ 800CFC8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CFE4 @ =gUnknown_03004040
- movs r2, 0x27
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800CFE4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x27_27_27_27
-
- thumb_func_start dp01_build_cmdbuf_x28_28_28_28
-dp01_build_cmdbuf_x28_28_28_28: @ 800CFE8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D004 @ =gUnknown_03004040
- movs r2, 0x28
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D004: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x28_28_28_28
-
- thumb_func_start dp01_build_cmdbuf_x29_29_29_29
-dp01_build_cmdbuf_x29_29_29_29: @ 800D008
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D024 @ =gUnknown_03004040
- movs r2, 0x29
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D024: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x29_29_29_29
-
- thumb_func_start dp01_build_cmdbuf_x2A_2A_2A_2A
-dp01_build_cmdbuf_x2A_2A_2A_2A: @ 800D028
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D044 @ =gUnknown_03004040
- movs r2, 0x2A
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D044: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x2A_2A_2A_2A
-
- thumb_func_start dp01_build_cmdbuf_x2B_aa_0
-dp01_build_cmdbuf_x2B_aa_0: @ 800D048
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _0800D070 @ =gUnknown_03004040
- movs r4, 0
- movs r2, 0x2B
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800D070: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x2B_aa_0
-
- thumb_func_start sub_800D074
-sub_800D074: @ 800D074
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _0800D09C @ =gUnknown_03004040
- movs r4, 0
- movs r2, 0x2C
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800D09C: .4byte gUnknown_03004040
- thumb_func_end sub_800D074
-
- thumb_func_start dp01_build_cmdbuf_x2D_2D_2D_2D
-dp01_build_cmdbuf_x2D_2D_2D_2D: @ 800D0A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D0BC @ =gUnknown_03004040
- movs r2, 0x2D
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D0BC: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x2D_2D_2D_2D
-
- thumb_func_start dp01_build_cmdbuf_x2E_a
-dp01_build_cmdbuf_x2E_a: @ 800D0C0
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D0DC @ =gUnknown_03004040
- movs r2, 0x2E
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D0DC: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x2E_a
-
- thumb_func_start dp01_build_cmdbuf_x2F_2F_2F_2F
-dp01_build_cmdbuf_x2F_2F_2F_2F: @ 800D0E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D0FC @ =gUnknown_03004040
- movs r2, 0x2F
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D0FC: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x2F_2F_2F_2F
-
- thumb_func_start dp01_build_cmdbuf_x30_TODO
-dp01_build_cmdbuf_x30_TODO: @ 800D100
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r1, _0800D144 @ =gUnknown_03004040
- movs r3, 0x30
- strb r3, [r1]
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x80
- ands r0, r2
- lsls r0, 24
- lsrs r0, 31
- strb r0, [r1, 0x2]
- strb r3, [r1, 0x3]
- movs r2, 0
- adds r3, r1, 0x4
-_0800D128:
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2F
- ble _0800D128
- adds r0, r5, 0
- movs r2, 0x34
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800D144: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x30_TODO
-
- thumb_func_start dp01_build_cmdbuf_x31_31_31_31
-dp01_build_cmdbuf_x31_31_31_31: @ 800D148
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D164 @ =gUnknown_03004040
- movs r2, 0x31
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D164: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x31_31_31_31
-
- thumb_func_start dp01_build_cmdbuf_x32_32_32_32
-dp01_build_cmdbuf_x32_32_32_32: @ 800D168
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D184 @ =gUnknown_03004040
- movs r2, 0x32
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D184: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x32_32_32_32
-
- thumb_func_start dp01_build_cmdbuf_x33_a_33_33
-dp01_build_cmdbuf_x33_a_33_33: @ 800D188
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D1A8 @ =gUnknown_03004040
- movs r2, 0x33
- strb r2, [r1]
- strb r3, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D1A8: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x33_a_33_33
-
- thumb_func_start dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
-dp01_build_cmdbuf_x34_a_bb_aka_battle_anim: @ 800D1AC
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, _0800D1D4 @ =gUnknown_03004040
- movs r3, 0x34
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800D1D4: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
-
- thumb_func_start sub_800D1D8
-sub_800D1D8: @ 800D1D8
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D1F4 @ =gUnknown_03004040
- movs r2, 0x35
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D1F4: .4byte gUnknown_03004040
- thumb_func_end sub_800D1D8
-
- thumb_func_start dp01_build_cmdbuf_x38_a
-dp01_build_cmdbuf_x38_a: @ 800D1F8
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D214 @ =gUnknown_03004040
- movs r2, 0x36
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D214: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x38_a
-
- thumb_func_start dp01_build_cmdbuf_x37_a
-dp01_build_cmdbuf_x37_a: @ 800D218
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800D234 @ =gUnknown_03004040
- movs r2, 0x37
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .align 2, 0
-_0800D234: .4byte gUnknown_03004040
- thumb_func_end dp01_build_cmdbuf_x37_a
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom6.s b/asm/rom6.s
deleted file mode 100644
index 16899bf2e..000000000
--- a/asm/rom6.s
+++ /dev/null
@@ -1,474 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start npc_before_player_of_type
-npc_before_player_of_type: @ 810B2D4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _0810B314 @ =gUnknown_0203923C
- adds r1, r4, 0x2
- adds r0, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- bl PlayerGetZCoord
- strb r0, [r4, 0x4]
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810B318 @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x5]
- cmp r0, r5
- bne _0810B320
- ldr r1, _0810B31C @ =gScriptLastTalked
- ldrb r0, [r2, 0x8]
- strh r0, [r1]
- movs r0, 0x1
- b _0810B322
- .align 2, 0
-_0810B314: .4byte gUnknown_0203923C
-_0810B318: .4byte gMapObjects
-_0810B31C: .4byte gScriptLastTalked
-_0810B320:
- movs r0, 0
-_0810B322:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end npc_before_player_of_type
-
- thumb_func_start oei_task_add
-oei_task_add: @ 810B328
- push {lr}
- ldr r0, _0810B344 @ =gUnknown_0203923C
- adds r1, r0, 0x2
- bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r0, _0810B348 @ =task08_080C9820
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0810B344: .4byte gUnknown_0203923C
-_0810B348: .4byte task08_080C9820
- thumb_func_end oei_task_add
-
- thumb_func_start task08_080C9820
-task08_080C9820: @ 810B34C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl ScriptContext2_Enable
- ldr r1, _0810B3A0 @ =gPlayerAvatar
- movs r0, 0x1
- strb r0, [r1, 0x6]
- ldrb r1, [r1, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810B3A4 @ =gMapObjects
- adds r4, r0, r1
- adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _0810B382
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0810B3CE
-_0810B382:
- ldr r0, _0810B3A8 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _0810B3B4
- movs r0, 0x3B
- bl FieldEffectStart
- ldr r0, _0810B3AC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0810B3B0 @ =sub_810B428
- b _0810B3CC
- .align 2, 0
-_0810B3A0: .4byte gPlayerAvatar
-_0810B3A4: .4byte gMapObjects
-_0810B3A8: .4byte gMapHeader
-_0810B3AC: .4byte gTasks
-_0810B3B0: .4byte sub_810B428
-_0810B3B4:
- bl sub_8059BF4
- adds r0, r4, 0
- movs r1, 0x39
- bl FieldObjectSetSpecialAnim
- ldr r0, _0810B3D4 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0810B3D8 @ =sub_810B3DC
-_0810B3CC:
- str r0, [r1]
-_0810B3CE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B3D4: .4byte gTasks
-_0810B3D8: .4byte sub_810B3DC
- thumb_func_end task08_080C9820
-
- thumb_func_start sub_810B3DC
-sub_810B3DC: @ 810B3DC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810B418 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810B41C @ =gMapObjects
- adds r0, r1
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810B410
- movs r0, 0x3B
- bl FieldEffectStart
- ldr r0, _0810B420 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0810B424 @ =sub_810B428
- str r0, [r1]
-_0810B410:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B418: .4byte gPlayerAvatar
-_0810B41C: .4byte gMapObjects
-_0810B420: .4byte gTasks
-_0810B424: .4byte sub_810B428
- thumb_func_end sub_810B3DC
-
- thumb_func_start sub_810B428
-sub_810B428: @ 810B428
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x6
- bl FieldEffectActiveListContains
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0810B4AC
- bl player_get_direction_lower_nybble
- ldr r6, _0810B4B4 @ =gUnknown_0202FF84
- lsls r0, 24
- lsrs r0, 24
- str r0, [r6, 0x4]
- cmp r0, 0x1
- bne _0810B44E
- str r4, [r6, 0x8]
-_0810B44E:
- ldr r1, [r6, 0x4]
- cmp r1, 0x2
- bne _0810B458
- movs r0, 0x1
- str r0, [r6, 0x8]
-_0810B458:
- cmp r1, 0x3
- bne _0810B460
- movs r0, 0x2
- str r0, [r6, 0x8]
-_0810B460:
- cmp r1, 0x4
- bne _0810B468
- movs r0, 0x3
- str r0, [r6, 0x8]
-_0810B468:
- ldr r5, _0810B4B8 @ =gPlayerAvatar
- ldrb r0, [r5, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _0810B4BC @ =gMapObjects
- adds r4, r0
- bl GetPlayerAvatarGraphicsIdByCurrentState
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810B4C0 @ =gSprites
- adds r0, r1
- ldrb r1, [r6, 0x8]
- bl StartSpriteAnim
- movs r0, 0x6
- bl FieldEffectActiveListRemove
- ldr r1, _0810B4C4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810B4C8 @ =sub_810B4CC
- str r1, [r0]
-_0810B4AC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B4B4: .4byte gUnknown_0202FF84
-_0810B4B8: .4byte gPlayerAvatar
-_0810B4BC: .4byte gMapObjects
-_0810B4C0: .4byte gSprites
-_0810B4C4: .4byte gTasks
-_0810B4C8: .4byte sub_810B4CC
- thumb_func_end sub_810B428
-
- thumb_func_start sub_810B4CC
-sub_810B4CC: @ 810B4CC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810B4FC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x18]
- lsls r1, 16
- ldrh r0, [r0, 0x1A]
- orrs r1, r0
- bl _call_via_r1
- ldr r1, _0810B500 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x6]
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B4FC: .4byte gTasks
-_0810B500: .4byte gPlayerAvatar
- thumb_func_end sub_810B4CC
-
- thumb_func_start SetUpFieldMove_RockSmash
-SetUpFieldMove_RockSmash: @ 810B504
- push {lr}
- movs r0, 0x56
- bl npc_before_player_of_type
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810B518
- movs r0, 0
- b _0810B526
-_0810B518:
- ldr r1, _0810B52C @ =gUnknown_0300485C
- ldr r0, _0810B530 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0810B534 @ =gUnknown_03005CE4
- ldr r0, _0810B538 @ =sub_810B53C
- str r0, [r1]
- movs r0, 0x1
-_0810B526:
- pop {r1}
- bx r1
- .align 2, 0
-_0810B52C: .4byte gUnknown_0300485C
-_0810B530: .4byte sub_808AB90
-_0810B534: .4byte gUnknown_03005CE4
-_0810B538: .4byte sub_810B53C
- thumb_func_end SetUpFieldMove_RockSmash
-
- thumb_func_start sub_810B53C
-sub_810B53C: @ 810B53C
- push {lr}
- ldr r1, _0810B550 @ =gUnknown_0202FF84
- ldr r0, _0810B554 @ =gUnknown_03005CE0
- ldrb r0, [r0]
- str r0, [r1]
- ldr r0, _0810B558 @ =UseRockSmashScript
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_0810B550: .4byte gUnknown_0202FF84
-_0810B554: .4byte gUnknown_03005CE0
-_0810B558: .4byte UseRockSmashScript
- thumb_func_end sub_810B53C
-
- thumb_func_start FldEff_RockSmash
-FldEff_RockSmash: @ 810B55C
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810B584 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _0810B588 @ =sub_810B58C
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x13
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0810B584: .4byte gTasks
-_0810B588: .4byte sub_810B58C
- thumb_func_end FldEff_RockSmash
-
- thumb_func_start sub_810B58C
-sub_810B58C: @ 810B58C
- push {lr}
- movs r0, 0x83
- bl PlaySE
- movs r0, 0x25
- bl FieldEffectActiveListRemove
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_810B58C
-
- thumb_func_start SetUpFieldMove_Dig
-SetUpFieldMove_Dig: @ 810B5A4
- push {lr}
- bl sub_80CA1C8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810B5B6
- movs r0, 0
- b _0810B5C4
-_0810B5B6:
- ldr r1, _0810B5C8 @ =gUnknown_0300485C
- ldr r0, _0810B5CC @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0810B5D0 @ =gUnknown_03005CE4
- ldr r0, _0810B5D4 @ =sub_810B5D8
- str r0, [r1]
- movs r0, 0x1
-_0810B5C4:
- pop {r1}
- bx r1
- .align 2, 0
-_0810B5C8: .4byte gUnknown_0300485C
-_0810B5CC: .4byte sub_808AB90
-_0810B5D0: .4byte gUnknown_03005CE4
-_0810B5D4: .4byte sub_810B5D8
- thumb_func_end SetUpFieldMove_Dig
-
- thumb_func_start sub_810B5D8
-sub_810B5D8: @ 810B5D8
- push {lr}
- bl sub_8053014
- movs r0, 0x26
- bl FieldEffectStart
- ldr r0, _0810B5F0 @ =gUnknown_0202FF84
- ldr r1, _0810B5F4 @ =gUnknown_03005CE0
- ldrb r1, [r1]
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0810B5F0: .4byte gUnknown_0202FF84
-_0810B5F4: .4byte gUnknown_03005CE0
- thumb_func_end sub_810B5D8
-
- thumb_func_start FldEff_UseDig
-FldEff_UseDig: @ 810B5F8
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810B62C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _0810B630 @ =sub_810B634
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- bl ShouldDoBrailleDigEffect
- lsls r0, 24
- cmp r0, 0
- bne _0810B624
- movs r0, 0x1
- bl SetPlayerAvatarTransitionFlags
-_0810B624:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0810B62C: .4byte gTasks
-_0810B630: .4byte sub_810B634
- thumb_func_end FldEff_UseDig
-
- thumb_func_start sub_810B634
-sub_810B634: @ 810B634
- push {r4,lr}
- movs r0, 0x26
- bl FieldEffectActiveListRemove
- bl ShouldDoBrailleDigEffect
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0810B64E
- bl DoBrailleDigEffect
- b _0810B666
-_0810B64E:
- ldr r0, _0810B66C @ =task08_080A1C44
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810B670 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
-_0810B666:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B66C: .4byte task08_080A1C44
-_0810B670: .4byte gTasks
- thumb_func_end sub_810B634
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_800D42C.s b/asm/rom_800D42C.s
index 57a727072..9ab29cd30 100644
--- a/asm/rom_800D42C.s
+++ b/asm/rom_800D42C.s
@@ -2271,7 +2271,7 @@ _0800E868:
strb r0, [r1]
ldr r0, _0800E96C @ =sub_800FCFC
bl SetVBlankCallback
- bl sub_800B884
+ bl setup_poochyena_battle
ldr r0, _0800E970 @ =gBattleTypeFlags
ldrh r1, [r0]
movs r0, 0x40
@@ -6330,9 +6330,9 @@ _08010906:
cmp r2, 0
bge _08010902
movs r1, 0
- ldr r2, _08010AFC @ =gUnknown_02024C07
+ ldr r2, _08010AFC @ =gPlayerMonIndex
strb r1, [r2]
- ldr r3, _08010B00 @ =gUnknown_02024C08
+ ldr r3, _08010B00 @ =gEnemyMonIndex
strb r1, [r3]
ldr r4, _08010B04 @ =gBattleWeather
strh r1, [r4]
@@ -6401,7 +6401,7 @@ _08010994:
ldr r0, _08010B3C @ =gUnknown_02024D18
strh r5, [r0]
movs r0, 0
- ldr r1, _08010B40 @ =gUnknown_02024BEC
+ ldr r1, _08010B40 @ =gBattleMoveDamage
str r0, [r1]
ldr r2, _08010B44 @ =gUnknown_02024DE8
strh r0, [r2]
@@ -6562,8 +6562,8 @@ _08010AEC: .4byte gUnknown_02024C5C
_08010AF0: .4byte 0x02017100
_08010AF4: .4byte gUnknown_02024C80
_08010AF8: .4byte gUnknown_02024C7A
-_08010AFC: .4byte gUnknown_02024C07
-_08010B00: .4byte gUnknown_02024C08
+_08010AFC: .4byte gPlayerMonIndex
+_08010B00: .4byte gEnemyMonIndex
_08010B04: .4byte gBattleWeather
_08010B08: .4byte gUnknown_02024DBC
_08010B0C: .4byte gUnknown_02024C6C
@@ -6579,7 +6579,7 @@ _08010B30: .4byte 0x00017130
_08010B34: .4byte 0x00017160
_08010B38: .4byte gUnknown_02024D1E
_08010B3C: .4byte gUnknown_02024D18
-_08010B40: .4byte gUnknown_02024BEC
+_08010B40: .4byte gBattleMoveDamage
_08010B44: .4byte gUnknown_02024DE8
_08010B48: .4byte 0x00016002
_08010B4C: .4byte 0x000160a1
@@ -8790,7 +8790,7 @@ _08011D06:
movs r5, 0
ldr r3, _08011D84 @ =gUnknown_02024A68
ldr r2, _08011D7C @ =0x02000000
- ldr r6, _08011DB0 @ =gUnknown_02024C68
+ ldr r6, _08011DB0 @ =gBattleMoveFlags
ldrb r0, [r3]
cmp r5, r0
bge _08011D36
@@ -8858,7 +8858,7 @@ _08011DA0: .4byte 0x000160a6
_08011DA4: .4byte gUnknown_030042D4
_08011DA8: .4byte sub_8012324
_08011DAC: .4byte gUnknown_02024D1E
-_08011DB0: .4byte gUnknown_02024C68
+_08011DB0: .4byte gBattleMoveFlags
_08011DB4: .4byte gBattleMons
_08011DB8: .4byte 0x00016001
_08011DBC: .4byte 0x00016110
@@ -8942,7 +8942,7 @@ _08011E32:
ldr r1, _08011E84 @ =0x0001600e
adds r0, r1
strb r2, [r0]
- ldr r0, _08011E88 @ =gUnknown_02024C68
+ ldr r0, _08011E88 @ =gBattleMoveFlags
strb r2, [r0]
_08011E5A:
pop {r4-r6}
@@ -8959,7 +8959,7 @@ _08011E78: .4byte 0x02000000
_08011E7C: .4byte 0x00016001
_08011E80: .4byte 0x00016110
_08011E84: .4byte 0x0001600e
-_08011E88: .4byte gUnknown_02024C68
+_08011E88: .4byte gBattleMoveFlags
thumb_func_end bc_8013B1C
thumb_func_start sub_8011E8C
@@ -9027,9 +9027,9 @@ _08011EE0:
ldr r2, _08011F64 @ =0x0001600c
adds r0, r5, r2
strb r4, [r0]
- ldr r0, _08011F68 @ =gUnknown_02024BEC
+ ldr r0, _08011F68 @ =gBattleMoveDamage
str r4, [r0]
- ldr r0, _08011F6C @ =gUnknown_02024C68
+ ldr r0, _08011F6C @ =gBattleMoveFlags
strb r4, [r0]
ldr r1, _08011F70 @ =gUnknown_02024D1E
movs r2, 0
@@ -9062,8 +9062,8 @@ _08011F58: .4byte 0xffefffff
_08011F5C: .4byte 0x00016002
_08011F60: .4byte 0x000160a1
_08011F64: .4byte 0x0001600c
-_08011F68: .4byte gUnknown_02024BEC
-_08011F6C: .4byte gUnknown_02024C68
+_08011F68: .4byte gBattleMoveDamage
+_08011F6C: .4byte gBattleMoveFlags
_08011F70: .4byte gUnknown_02024D1E
_08011F74: .4byte gUnknown_02024A7F
_08011F78: .4byte gUnknown_030042D4
@@ -10891,7 +10891,7 @@ _08012EC0: .4byte 0x00016060
_08012EC4: .4byte gUnknown_02024D1E
_08012EC8: .4byte 0x00016094
_08012ECC:
- ldr r0, _08012F20 @ =gUnknown_02024C07
+ ldr r0, _08012F20 @ =gPlayerMonIndex
strb r1, [r0]
ldr r7, _08012F24 @ =gUnknown_02024C10
ldr r6, _08012F28 @ =gUnknown_02024C1C
@@ -10933,7 +10933,7 @@ _08012F12:
str r1, [r0]
b _08012F66
.align 2, 0
-_08012F20: .4byte gUnknown_02024C07
+_08012F20: .4byte gPlayerMonIndex
_08012F24: .4byte gUnknown_02024C10
_08012F28: .4byte gUnknown_02024C1C
_08012F2C: .4byte gUnknown_02024A64
@@ -12067,7 +12067,7 @@ bc_80154A0: @ 80137CC
cmp r1, r0
bcs _08013884
ldr r6, _08013860 @ =gUnknown_02024A60
- ldr r5, _08013864 @ =gUnknown_02024C07
+ ldr r5, _08013864 @ =gPlayerMonIndex
adds r4, r2, 0
movs r1, 0x84
lsls r1, 1
@@ -12121,7 +12121,7 @@ _08013854: .4byte 0x02000000
_08013858: .4byte 0x0001601d
_0801385C: .4byte gUnknown_02024A68
_08013860: .4byte gUnknown_02024A60
-_08013864: .4byte gUnknown_02024C07
+_08013864: .4byte gPlayerMonIndex
_08013868: .4byte gUnknown_02024C60
_0801386C: .4byte gBattleMons
_08013870: .4byte gUnknown_02024CA8
@@ -12273,7 +12273,7 @@ sub_8013998: @ 8013998
strb r0, [r1]
movs r0, 0
bl battle_get_side_with_given_state
- ldr r1, _080139E0 @ =gUnknown_02024C07
+ ldr r1, _080139E0 @ =gPlayerMonIndex
strb r0, [r1]
ldr r1, _080139E4 @ =gUnknown_02024C10
ldr r0, _080139E8 @ =gUnknown_081D8E02
@@ -12288,7 +12288,7 @@ _080139D0: .4byte gUnknown_02024A7F
_080139D4: .4byte gBattleTypeFlags
_080139D8: .4byte gUnknown_030041C0
_080139DC: .4byte gUnknown_02024D26
-_080139E0: .4byte gUnknown_02024C07
+_080139E0: .4byte gPlayerMonIndex
_080139E4: .4byte gUnknown_02024C10
_080139E8: .4byte gUnknown_081D8E02
_080139EC:
@@ -12448,7 +12448,7 @@ sub_8013B64: @ 8013B64
strb r0, [r1]
movs r0, 0
bl battle_get_side_with_given_state
- ldr r1, _08013BAC @ =gUnknown_02024C07
+ ldr r1, _08013BAC @ =gPlayerMonIndex
strb r0, [r1]
ldr r1, _08013BB0 @ =gUnknown_02024C10
ldr r0, _08013BB4 @ =gUnknown_081D8E02
@@ -12463,7 +12463,7 @@ _08013B9C: .4byte gUnknown_02024A7F
_08013BA0: .4byte gBattleTypeFlags
_08013BA4: .4byte gUnknown_030041C0
_08013BA8: .4byte gUnknown_02024D26
-_08013BAC: .4byte gUnknown_02024C07
+_08013BAC: .4byte gPlayerMonIndex
_08013BB0: .4byte gUnknown_02024C10
_08013BB4: .4byte gUnknown_081D8E02
_08013BB8:
@@ -12491,7 +12491,7 @@ sub_8013BDC: @ 8013BDC
movs r0, 0
strb r0, [r1]
ldr r1, _08013C08 @ =gUnknown_02024D28
- ldr r0, _08013C0C @ =gUnknown_02024C07
+ ldr r0, _08013C0C @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -12508,7 +12508,7 @@ sub_8013BDC: @ 8013BDC
.align 2, 0
_08013C04: .4byte gUnknown_02024A7F
_08013C08: .4byte gUnknown_02024D28
-_08013C0C: .4byte gUnknown_02024C07
+_08013C0C: .4byte gPlayerMonIndex
_08013C10: .4byte gUnknown_02024C10
_08013C14: .4byte gUnknown_081D8E29
_08013C18:
@@ -12545,7 +12545,7 @@ sub_8013C48: @ 8013C48
strb r0, [r1]
movs r0, 0x7
strb r0, [r1, 0x1]
- ldr r2, _08013C84 @ =gUnknown_02024C07
+ ldr r2, _08013C84 @ =gPlayerMonIndex
ldrb r0, [r2]
strb r0, [r1, 0x2]
ldr r3, _08013C88 @ =gUnknown_02024A6A
@@ -12566,7 +12566,7 @@ sub_8013C48: @ 8013C48
.align 2, 0
_08013C7C: .4byte gUnknown_02024A7F
_08013C80: .4byte gUnknown_030041C0
-_08013C84: .4byte gUnknown_02024C07
+_08013C84: .4byte gPlayerMonIndex
_08013C88: .4byte gUnknown_02024A6A
_08013C8C: .4byte gUnknown_02024C10
_08013C90: .4byte gUnknown_081D8E30
@@ -12995,7 +12995,7 @@ sub_8013FE8: @ 8013FE8
sub sp, 0xC
movs r0, 0x4
str r0, [sp]
- ldr r7, _08014028 @ =gUnknown_02024C07
+ ldr r7, _08014028 @ =gPlayerMonIndex
ldr r1, _0801402C @ =gUnknown_02024A7A
ldr r0, _08014030 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -13019,7 +13019,7 @@ sub_8013FE8: @ 8013FE8
movs r0, 0xC
b _080146CC
.align 2, 0
-_08014028: .4byte gUnknown_02024C07
+_08014028: .4byte gPlayerMonIndex
_0801402C: .4byte gUnknown_02024A7A
_08014030: .4byte gUnknown_02024A7E
_08014034: .4byte 0x02000000
@@ -13037,7 +13037,7 @@ _08014044:
ldr r0, _080140C0 @ =0x000160e7
add r0, r10
strb r2, [r0]
- ldr r0, _080140C4 @ =gUnknown_02024C68
+ ldr r0, _080140C4 @ =gBattleMoveFlags
strb r2, [r0]
ldr r0, _080140C8 @ =gUnknown_02024C0E
strb r2, [r0]
@@ -13088,7 +13088,7 @@ _08014044:
_080140B8: .4byte gCritMultiplier
_080140BC: .4byte 0x0001601f
_080140C0: .4byte 0x000160e7
-_080140C4: .4byte gUnknown_02024C68
+_080140C4: .4byte gBattleMoveFlags
_080140C8: .4byte gUnknown_02024C0E
_080140CC: .4byte gUnknown_02024D1E
_080140D0: .4byte gUnknown_02024BE4
@@ -13240,7 +13240,7 @@ _08014218:
mov r4, r8
ldrb r0, [r4]
lsls r0, 1
- ldr r4, _0801425C @ =gUnknown_02024C07
+ ldr r4, _0801425C @ =gPlayerMonIndex
ldrb r2, [r4]
movs r1, 0x58
muls r1, r2
@@ -13270,7 +13270,7 @@ _08014218:
strb r0, [r1]
b _08014280
.align 2, 0
-_0801425C: .4byte gUnknown_02024C07
+_0801425C: .4byte gPlayerMonIndex
_08014260: .4byte gBattleMons
_08014264: .4byte gUnknown_02024C60
_08014268: .4byte gUnknown_02024BE6
@@ -13283,7 +13283,7 @@ _08014278:
strh r3, [r0]
strh r3, [r1]
_08014280:
- ldr r0, _080142A0 @ =gUnknown_02024C07
+ ldr r0, _080142A0 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -13297,7 +13297,7 @@ _08014280:
.align 2, 0
_08014298: .4byte gUnknown_02024BE6
_0801429C: .4byte gUnknown_02024BE8
-_080142A0: .4byte gUnknown_02024C07
+_080142A0: .4byte gPlayerMonIndex
_080142A4: .4byte gUnknown_030042E0
_080142A8:
ldr r0, _08014314 @ =gUnknown_030042E0
@@ -13305,7 +13305,7 @@ _080142A8:
ldrh r1, [r1]
strh r1, [r0, 0x24]
_080142B0:
- ldr r4, _0801431C @ =gUnknown_02024C07
+ ldr r4, _0801431C @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
movs r1, 0x1
@@ -13348,23 +13348,23 @@ _080142B0:
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08014330
- ldr r0, _0801432C @ =gUnknown_02024C08
+ ldr r0, _0801432C @ =gEnemyMonIndex
strb r2, [r0]
b _080146AC
.align 2, 0
_08014314: .4byte gUnknown_030042E0
_08014318: .4byte gUnknown_02024BE6
-_0801431C: .4byte gUnknown_02024C07
+_0801431C: .4byte gPlayerMonIndex
_08014320: .4byte gUnknown_02024C80
_08014324: .4byte gBattleMoves
_08014328: .4byte gBattleMons
-_0801432C: .4byte gUnknown_02024C08
+_0801432C: .4byte gEnemyMonIndex
_08014330:
ldr r2, _08014454 @ =gBattleTypeFlags
ldrh r1, [r2]
movs r0, 0x1
ands r0, r1
- ldr r3, _08014458 @ =gUnknown_02024C07
+ ldr r3, _08014458 @ =gPlayerMonIndex
mov r9, r2
cmp r0, 0
bne _08014342
@@ -13398,7 +13398,7 @@ _08014370:
ldr r3, _08014468 @ =gBattleMons
ldr r0, _0801446C @ =0x02000000
mov r8, r0
- ldr r2, _08014458 @ =gUnknown_02024C07
+ ldr r2, _08014458 @ =gPlayerMonIndex
ldrb r5, [r2]
ldr r1, _08014470 @ =0x00016010
adds r0, r5, r1
@@ -13438,7 +13438,7 @@ _080143B6:
lsrs r0, 24
cmp r6, r0
beq _08014404
- ldr r0, _08014458 @ =gUnknown_02024C07
+ ldr r0, _08014458 @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r2, _08014470 @ =0x00016010
adds r0, r2
@@ -13496,7 +13496,7 @@ _0801441E:
ands r3, r0
cmp r3, 0
beq _080144A4
- ldr r0, _08014458 @ =gUnknown_02024C07
+ ldr r0, _08014458 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -13511,7 +13511,7 @@ _0801441E:
b _08014496
.align 2, 0
_08014454: .4byte gBattleTypeFlags
-_08014458: .4byte gUnknown_02024C07
+_08014458: .4byte gPlayerMonIndex
_0801445C: .4byte gUnknown_02024C80
_08014460: .4byte gBattleMoves
_08014464: .4byte gUnknown_02024BE6
@@ -13536,15 +13536,15 @@ _08014494:
movs r0, 0x2
_08014496:
bl battle_get_side_with_given_state
- ldr r1, _080144A0 @ =gUnknown_02024C08
+ ldr r1, _080144A0 @ =gEnemyMonIndex
strb r0, [r1]
b _080144B6
.align 2, 0
-_080144A0: .4byte gUnknown_02024C08
+_080144A0: .4byte gEnemyMonIndex
_080144A4:
- ldr r2, _080144EC @ =gUnknown_02024C08
+ ldr r2, _080144EC @ =gEnemyMonIndex
ldr r1, _080144F0 @ =0x02000000
- ldr r0, _080144F4 @ =gUnknown_02024C07
+ ldr r0, _080144F4 @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r4, _080144F8 @ =0x00016010
adds r0, r4
@@ -13556,7 +13556,7 @@ _080144B6:
ldrb r0, [r7]
ldr r1, _08014500 @ =gBitTable
mov r8, r1
- ldr r5, _080144EC @ =gUnknown_02024C08
+ ldr r5, _080144EC @ =gEnemyMonIndex
ldrb r1, [r5]
lsls r1, 2
add r1, r8
@@ -13566,7 +13566,7 @@ _080144B6:
bne _080144D0
b _080146AC
_080144D0:
- ldr r6, _080144F4 @ =gUnknown_02024C07
+ ldr r6, _080144F4 @ =gPlayerMonIndex
ldrb r0, [r6]
bl battle_side_get_owner
adds r4, r0, 0
@@ -13579,9 +13579,9 @@ _080144D0:
ldrb r0, [r5]
b _0801469A
.align 2, 0
-_080144EC: .4byte gUnknown_02024C08
+_080144EC: .4byte gEnemyMonIndex
_080144F0: .4byte 0x02000000
-_080144F4: .4byte gUnknown_02024C07
+_080144F4: .4byte gPlayerMonIndex
_080144F8: .4byte 0x00016010
_080144FC: .4byte gUnknown_02024C0C
_08014500: .4byte gBitTable
@@ -13624,7 +13624,7 @@ _08014522:
movs r2, 0x2
orrs r1, r2
strb r1, [r0]
- ldr r1, _0801456C @ =gUnknown_02024C08
+ ldr r1, _0801456C @ =gEnemyMonIndex
ldrb r0, [r4]
strb r0, [r1]
b _080146AC
@@ -13633,7 +13633,7 @@ _0801455C: .4byte gUnknown_02024A60
_08014560: .4byte gUnknown_02024A7A
_08014564: .4byte gBattleMons
_08014568: .4byte gUnknown_02024D68
-_0801456C: .4byte gUnknown_02024C08
+_0801456C: .4byte gEnemyMonIndex
_08014570:
mov r4, r9
ldrh r1, [r4]
@@ -13684,12 +13684,12 @@ _080145D0:
movs r0, 0x2
_080145D2:
bl battle_get_side_with_given_state
- ldr r1, _0801460C @ =gUnknown_02024C08
+ ldr r1, _0801460C @ =gEnemyMonIndex
strb r0, [r1]
ldr r0, _08014610 @ =gUnknown_02024C0C
ldrb r1, [r0]
ldr r2, _08014614 @ =gBitTable
- ldr r5, _0801460C @ =gUnknown_02024C08
+ ldr r5, _0801460C @ =gEnemyMonIndex
ldrb r0, [r5]
lsls r0, 2
adds r0, r2
@@ -13697,7 +13697,7 @@ _080145D2:
ands r1, r0
cmp r1, 0
beq _080146AC
- ldr r0, _08014618 @ =gUnknown_02024C07
+ ldr r0, _08014618 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
adds r4, r0, 0
@@ -13710,12 +13710,12 @@ _080145D2:
ldrb r0, [r5]
b _0801469A
.align 2, 0
-_0801460C: .4byte gUnknown_02024C08
+_0801460C: .4byte gEnemyMonIndex
_08014610: .4byte gUnknown_02024C0C
_08014614: .4byte gBitTable
-_08014618: .4byte gUnknown_02024C07
+_08014618: .4byte gPlayerMonIndex
_0801461C:
- ldr r5, _08014660 @ =gUnknown_02024C08
+ ldr r5, _08014660 @ =gEnemyMonIndex
ldr r1, _08014664 @ =0x02000000
adds r2, r3, 0
ldrb r0, [r2]
@@ -13748,7 +13748,7 @@ _0801461C:
ldrb r0, [r5]
b _0801469A
.align 2, 0
-_08014660: .4byte gUnknown_02024C08
+_08014660: .4byte gEnemyMonIndex
_08014664: .4byte 0x02000000
_08014668: .4byte 0x00016010
_0801466C: .4byte gUnknown_02024C0C
@@ -13818,7 +13818,7 @@ _080146F0: .4byte gUnknown_02024A7F
thumb_func_start sub_80146F4
sub_80146F4: @ 80146F4
push {r4,lr}
- ldr r3, _08014764 @ =gUnknown_02024C07
+ ldr r3, _08014764 @ =gPlayerMonIndex
ldr r1, _08014768 @ =gUnknown_02024A7A
ldr r0, _0801476C @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -13874,7 +13874,7 @@ _0801475C:
pop {r0}
bx r0
.align 2, 0
-_08014764: .4byte gUnknown_02024C07
+_08014764: .4byte gPlayerMonIndex
_08014768: .4byte gUnknown_02024A7A
_0801476C: .4byte gUnknown_02024A7E
_08014770: .4byte gUnknown_030042A4
@@ -13898,8 +13898,8 @@ sub_80147A0: @ 80147A0
mov r6, r9
mov r5, r8
push {r5-r7}
- ldr r4, _08014804 @ =gUnknown_02024C07
- ldr r2, _08014808 @ =gUnknown_02024C08
+ ldr r4, _08014804 @ =gPlayerMonIndex
+ ldr r2, _08014808 @ =gEnemyMonIndex
ldr r1, _0801480C @ =gUnknown_02024A7A
ldr r0, _08014810 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -13943,8 +13943,8 @@ sub_80147A0: @ 80147A0
str r0, [r2]
b _08014A8C
.align 2, 0
-_08014804: .4byte gUnknown_02024C07
-_08014808: .4byte gUnknown_02024C08
+_08014804: .4byte gPlayerMonIndex
+_08014808: .4byte gEnemyMonIndex
_0801480C: .4byte gUnknown_02024A7A
_08014810: .4byte gUnknown_02024A7E
_08014814: .4byte gUnknown_030042A4
@@ -14028,7 +14028,7 @@ _080148CC:
ldr r2, _08014904 @ =gUnknown_02024D1E
movs r0, 0
strb r0, [r2, 0x5]
- ldr r1, _08014908 @ =gUnknown_02024C07
+ ldr r1, _08014908 @ =gPlayerMonIndex
ldrb r0, [r1]
lsrs r0, 1
ldr r6, _0801490C @ =0x000160da
@@ -14055,7 +14055,7 @@ _080148FC:
b _08014A74
.align 2, 0
_08014904: .4byte gUnknown_02024D1E
-_08014908: .4byte gUnknown_02024C07
+_08014908: .4byte gPlayerMonIndex
_0801490C: .4byte 0x000160da
_08014910: .4byte gUnknown_02024C10
_08014914: .4byte gUnknown_081D9E7C
@@ -14095,7 +14095,7 @@ _08014958:
ldr r3, _0801498C @ =gUnknown_02024D1E
movs r0, 0x4
strb r0, [r3, 0x5]
- ldr r2, _08014990 @ =gUnknown_02024C07
+ ldr r2, _08014990 @ =gPlayerMonIndex
ldrb r0, [r2]
lsrs r0, 1
ldr r1, _08014994 @ =0x000160da
@@ -14119,7 +14119,7 @@ _08014958:
b _08014A74
.align 2, 0
_0801498C: .4byte gUnknown_02024D1E
-_08014990: .4byte gUnknown_02024C07
+_08014990: .4byte gPlayerMonIndex
_08014994: .4byte 0x000160da
_08014998: .4byte gUnknown_02024C10
_0801499C: .4byte gUnknown_081D9E7C
@@ -14202,7 +14202,7 @@ _08014A30:
ldr r1, _08014A54 @ =gUnknown_02024D1E
movs r0, 0x2
strb r0, [r1, 0x5]
- ldr r0, _08014A58 @ =gUnknown_02024C07
+ ldr r0, _08014A58 @ =gPlayerMonIndex
mov r8, r0
ldr r1, _08014A5C @ =gUnknown_02024C10
mov r9, r1
@@ -14212,13 +14212,13 @@ _08014A30:
.align 2, 0
_08014A50: .4byte gBattleTypeFlags
_08014A54: .4byte gUnknown_02024D1E
-_08014A58: .4byte gUnknown_02024C07
+_08014A58: .4byte gPlayerMonIndex
_08014A5C: .4byte gUnknown_02024C10
_08014A60: .4byte gUnknown_081D9E7C
_08014A64:
ldr r0, _08014AA0 @ =gUnknown_02024D1E
strb r1, [r0, 0x5]
- ldr r3, _08014AA4 @ =gUnknown_02024C07
+ ldr r3, _08014AA4 @ =gPlayerMonIndex
mov r8, r3
ldr r0, _08014AA8 @ =gUnknown_02024C10
mov r9, r0
@@ -14250,7 +14250,7 @@ _08014A8C:
bx r0
.align 2, 0
_08014AA0: .4byte gUnknown_02024D1E
-_08014AA4: .4byte gUnknown_02024C07
+_08014AA4: .4byte gPlayerMonIndex
_08014AA8: .4byte gUnknown_02024C10
_08014AAC: .4byte gUnknown_081D9E7C
_08014AB0: .4byte 0x000160d8
@@ -14416,7 +14416,7 @@ _08014BF0: .4byte gUnknown_02024D26
thumb_func_start sub_8014BF4
sub_8014BF4: @ 8014BF4
push {r4-r6,lr}
- ldr r4, _08014C44 @ =gUnknown_02024C07
+ ldr r4, _08014C44 @ =gPlayerMonIndex
ldr r1, _08014C48 @ =gUnknown_02024A7A
ldr r5, _08014C4C @ =gUnknown_02024A7E
ldrb r0, [r5]
@@ -14456,7 +14456,7 @@ _08014C28:
movs r1, 0x2
b _08014C72
.align 2, 0
-_08014C44: .4byte gUnknown_02024C07
+_08014C44: .4byte gPlayerMonIndex
_08014C48: .4byte gUnknown_02024A7A
_08014C4C: .4byte gUnknown_02024A7E
_08014C50: .4byte gBattleTypeFlags
@@ -14579,7 +14579,7 @@ _08014D4C: .4byte gUnknown_02024D26
thumb_func_start sub_8014D50
sub_8014D50: @ 8014D50
- ldr r2, _08014D78 @ =gUnknown_02024C07
+ ldr r2, _08014D78 @ =gPlayerMonIndex
ldr r1, _08014D7C @ =gUnknown_02024A7A
ldr r0, _08014D80 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -14600,7 +14600,7 @@ sub_8014D50: @ 8014D50
strb r0, [r1]
bx lr
.align 2, 0
-_08014D78: .4byte gUnknown_02024C07
+_08014D78: .4byte gPlayerMonIndex
_08014D7C: .4byte gUnknown_02024A7A
_08014D80: .4byte gUnknown_02024A7E
_08014D84: .4byte gUnknown_030042A4
@@ -14612,7 +14612,7 @@ _08014D94: .4byte gUnknown_02024A7F
thumb_func_start sub_8014D98
sub_8014D98: @ 8014D98
- ldr r2, _08014DD0 @ =gUnknown_02024C07
+ ldr r2, _08014DD0 @ =gPlayerMonIndex
ldr r1, _08014DD4 @ =gUnknown_02024A7A
ldr r0, _08014DD8 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -14640,7 +14640,7 @@ sub_8014D98: @ 8014D98
strb r0, [r1]
bx lr
.align 2, 0
-_08014DD0: .4byte gUnknown_02024C07
+_08014DD0: .4byte gPlayerMonIndex
_08014DD4: .4byte gUnknown_02024A7A
_08014DD8: .4byte gUnknown_02024A7E
_08014DDC: .4byte gUnknown_030042A4
@@ -14655,7 +14655,7 @@ _08014DF4: .4byte gUnknown_02024A7F
thumb_func_start sub_8014DF8
sub_8014DF8: @ 8014DF8
push {r4-r6,lr}
- ldr r3, _08014E68 @ =gUnknown_02024C07
+ ldr r3, _08014E68 @ =gPlayerMonIndex
ldr r1, _08014E6C @ =gUnknown_02024A7A
ldr r0, _08014E70 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -14711,7 +14711,7 @@ _08014E42:
movs r0, 0x1
b _08014E9A
.align 2, 0
-_08014E68: .4byte gUnknown_02024C07
+_08014E68: .4byte gPlayerMonIndex
_08014E6C: .4byte gUnknown_02024A7A
_08014E70: .4byte gUnknown_02024A7E
_08014E74: .4byte gUnknown_030042A4
@@ -14747,7 +14747,7 @@ _08014EB8: .4byte gUnknown_02024A7F
thumb_func_start sub_8014EBC
sub_8014EBC: @ 8014EBC
push {r4,r5,lr}
- ldr r2, _08014F28 @ =gUnknown_02024C07
+ ldr r2, _08014F28 @ =gPlayerMonIndex
ldr r1, _08014F2C @ =gUnknown_02024A7A
ldr r0, _08014F30 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -14803,7 +14803,7 @@ _08014F18:
strb r5, [r0, 0x5]
b _08014F5A
.align 2, 0
-_08014F28: .4byte gUnknown_02024C07
+_08014F28: .4byte gPlayerMonIndex
_08014F2C: .4byte gUnknown_02024A7A
_08014F30: .4byte gUnknown_02024A7E
_08014F34: .4byte gUnknown_030042A4
@@ -14839,7 +14839,7 @@ _08014F7C: .4byte gUnknown_02024A7F
thumb_func_start bs8_exit_by_flight
bs8_exit_by_flight: @ 8014F80
push {r4,lr}
- ldr r2, _08014FA8 @ =gUnknown_02024C07
+ ldr r2, _08014FA8 @ =gPlayerMonIndex
ldr r1, _08014FAC @ =gUnknown_02024A7A
ldr r4, _08014FB0 @ =gUnknown_02024A7E
ldrb r0, [r4]
@@ -14858,7 +14858,7 @@ bs8_exit_by_flight: @ 8014F80
pop {r0}
bx r0
.align 2, 0
-_08014FA8: .4byte gUnknown_02024C07
+_08014FA8: .4byte gPlayerMonIndex
_08014FAC: .4byte gUnknown_02024A7A
_08014FB0: .4byte gUnknown_02024A7E
_08014FB4: .4byte gUnknown_02024A68
@@ -14867,7 +14867,7 @@ _08014FB8: .4byte gUnknown_02024D26
thumb_func_start sub_8014FBC
sub_8014FBC: @ 8014FBC
- ldr r3, _08015008 @ =gUnknown_02024C07
+ ldr r3, _08015008 @ =gPlayerMonIndex
ldr r1, _0801500C @ =gUnknown_02024A7A
ldr r0, _08015010 @ =gUnknown_02024A7E
ldrb r0, [r0]
@@ -14905,7 +14905,7 @@ sub_8014FBC: @ 8014FBC
strb r0, [r1, 0x1]
bx lr
.align 2, 0
-_08015008: .4byte gUnknown_02024C07
+_08015008: .4byte gPlayerMonIndex
_0801500C: .4byte gUnknown_02024A7A
_08015010: .4byte gUnknown_02024A7E
_08015014: .4byte gUnknown_030042A4
@@ -14987,7 +14987,7 @@ bsC_8016D70: @ 8015094
ldr r1, _0801511C @ =0xf1e892af
ands r0, r1
str r0, [r2]
- ldr r0, _08015120 @ =gUnknown_02024BEC
+ ldr r0, _08015120 @ =gBattleMoveDamage
movs r4, 0
str r4, [r0]
ldr r1, _08015124 @ =0x02000000
@@ -14998,7 +14998,7 @@ bsC_8016D70: @ 8015094
adds r0, r1, r3
strb r4, [r0]
ldr r2, _08015130 @ =gUnknown_02024C3C
- ldr r5, _08015134 @ =gUnknown_02024C07
+ ldr r5, _08015134 @ =gPlayerMonIndex
ldrb r0, [r5]
lsls r0, 1
adds r0, r2
@@ -15035,12 +15035,12 @@ _08015110: .4byte gUnknown_02024A7F
_08015114: .4byte gUnknown_02024A76
_08015118: .4byte gUnknown_02024C6C
_0801511C: .4byte 0xf1e892af
-_08015120: .4byte gUnknown_02024BEC
+_08015120: .4byte gBattleMoveDamage
_08015124: .4byte 0x02000000
_08015128: .4byte 0x00016002
_0801512C: .4byte 0x000160a1
_08015130: .4byte gUnknown_02024C3C
-_08015134: .4byte gUnknown_02024C07
+_08015134: .4byte gPlayerMonIndex
_08015138: .4byte gUnknown_02024C44
_0801513C: .4byte 0x0001601c
_08015140: .4byte gUnknown_02024DEC
@@ -15078,15 +15078,15 @@ _0801516C:
.4byte _080151C8
.4byte _080151B4
_08015198:
- ldr r0, _0801519C @ =gUnknown_02024C08
+ ldr r0, _0801519C @ =gEnemyMonIndex
b _080151C6
.align 2, 0
-_0801519C: .4byte gUnknown_02024C08
+_0801519C: .4byte gEnemyMonIndex
_080151A0:
- ldr r0, _080151A4 @ =gUnknown_02024C07
+ ldr r0, _080151A4 @ =gPlayerMonIndex
b _080151C6
.align 2, 0
-_080151A4: .4byte gUnknown_02024C07
+_080151A4: .4byte gPlayerMonIndex
_080151A8:
ldr r0, _080151AC @ =gUnknown_02024C0A
b _080151C6
@@ -16703,14 +16703,14 @@ sub_8015DFC: @ 8015DFC
push {r5-r7}
movs r0, 0
mov r9, r0
- ldr r1, _08015EA0 @ =gUnknown_02024C07
+ ldr r1, _08015EA0 @ =gPlayerMonIndex
mov r2, r9
strb r2, [r1]
ldr r0, _08015EA4 @ =gUnknown_02024A68
ldrb r4, [r0]
adds r6, r1, 0
mov r10, r0
- ldr r7, _08015EA8 @ =gUnknown_02024C08
+ ldr r7, _08015EA8 @ =gEnemyMonIndex
ldr r3, _08015EAC @ =0x02000000
mov r12, r3
cmp r9, r4
@@ -16784,9 +16784,9 @@ _08015E96:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_08015EA0: .4byte gUnknown_02024C07
+_08015EA0: .4byte gPlayerMonIndex
_08015EA4: .4byte gUnknown_02024A68
-_08015EA8: .4byte gUnknown_02024C08
+_08015EA8: .4byte gEnemyMonIndex
_08015EAC: .4byte 0x02000000
_08015EB0: .4byte gUnknown_02024C0C
_08015EB4: .4byte gBitTable
@@ -16891,7 +16891,7 @@ _08015F80:
movs r7, 0
ldr r5, _0801601C @ =gUnknown_030041C0
_08015F8A:
- ldr r0, _08016020 @ =gUnknown_02024C07
+ ldr r0, _08016020 @ =gPlayerMonIndex
ldrb r4, [r6]
strb r4, [r0]
mov r0, r8
@@ -16961,7 +16961,7 @@ _08016010: .4byte 0x0001600e
_08016014: .4byte 0x000160fc
_08016018: .4byte gUnknown_02024A60
_0801601C: .4byte gUnknown_030041C0
-_08016020: .4byte gUnknown_02024C07
+_08016020: .4byte gPlayerMonIndex
_08016024: .4byte gUnknown_02024C7A
_08016028: .4byte gUnknown_02024C80
_0801602C: .4byte 0x0000fffe
@@ -16981,7 +16981,7 @@ _08016040:
mov r8, r0
ldr r5, _080160D0 @ =gUnknown_030041C0
_0801604C:
- ldr r0, _080160D4 @ =gUnknown_02024C07
+ ldr r0, _080160D4 @ =gPlayerMonIndex
ldrb r4, [r7]
strb r4, [r0]
ldr r1, _080160D8 @ =gUnknown_02024A60
@@ -17049,7 +17049,7 @@ _080160C2:
.align 2, 0
_080160CC: .4byte 0x000160fc
_080160D0: .4byte gUnknown_030041C0
-_080160D4: .4byte gUnknown_02024C07
+_080160D4: .4byte gPlayerMonIndex
_080160D8: .4byte gUnknown_02024A60
_080160DC: .4byte gUnknown_02024C7A
_080160E0: .4byte gUnknown_02024C80
@@ -17070,7 +17070,7 @@ _080160F4:
mov r8, r1
ldr r5, _080161A4 @ =gUnknown_030041C0
_0801610A:
- ldr r0, _080161A8 @ =gUnknown_02024C07
+ ldr r0, _080161A8 @ =gPlayerMonIndex
ldrb r4, [r7]
strb r4, [r0]
mov r2, r10
@@ -17150,7 +17150,7 @@ _0801618A:
_0801619C: .4byte 0x000160fc
_080161A0: .4byte gUnknown_02024A60
_080161A4: .4byte gUnknown_030041C0
-_080161A8: .4byte gUnknown_02024C07
+_080161A8: .4byte gPlayerMonIndex
_080161AC: .4byte gUnknown_02024C80
_080161B0: .4byte gUnknown_02024C7A
_080161B4: .4byte 0x0000feff
@@ -17166,7 +17166,7 @@ _080161C8:
bhi _08016236
ldr r7, _08016254 @ =gUnknown_02024A60
adds r5, r1, 0
- ldr r6, _08016258 @ =gUnknown_02024C07
+ ldr r6, _08016258 @ =gPlayerMonIndex
_080161D8:
ldrb r4, [r5]
strb r4, [r6]
@@ -17234,7 +17234,7 @@ _0801623E:
.align 2, 0
_08016250: .4byte 0x000160fc
_08016254: .4byte gUnknown_02024A60
-_08016258: .4byte gUnknown_02024C07
+_08016258: .4byte gPlayerMonIndex
_0801625C: .4byte gUnknown_02024C7A
_08016260: .4byte gUnknown_02024C80
_08016264: .4byte 0x0000ffdf
@@ -17276,7 +17276,7 @@ _08016288:
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _080162CA
- ldr r0, _08016314 @ =gUnknown_02024C08
+ ldr r0, _08016314 @ =gEnemyMonIndex
strb r2, [r0]
ldr r0, _08016318 @ =gUnknown_081D939A
bl b_call_bc_move_exec
@@ -17321,7 +17321,7 @@ _08016304: .4byte gUnknown_02024A60
_08016308: .4byte gUnknown_02024DDC
_0801630C: .4byte gUnknown_02024A7A
_08016310: .4byte gBattleMons
-_08016314: .4byte gUnknown_02024C08
+_08016314: .4byte gEnemyMonIndex
_08016318: .4byte gUnknown_081D939A
_0801631C: .4byte 0x02000000
_08016320: .4byte 0x0001600e
@@ -17619,7 +17619,7 @@ _08016578: .4byte gUnknown_02024C6C
_0801657C: .4byte 0x01000020
_08016580:
ldr r3, _080165B4 @ =gUnknown_02024A60
- ldr r4, _080165B8 @ =gUnknown_02024C07
+ ldr r4, _080165B8 @ =gPlayerMonIndex
ldr r1, _080165BC @ =gUnknown_02024A7A
adds r5, r7, r2
ldrb r0, [r5]
@@ -17644,7 +17644,7 @@ _08016580:
bl _08017088
.align 2, 0
_080165B4: .4byte gUnknown_02024A60
-_080165B8: .4byte gUnknown_02024C07
+_080165B8: .4byte gPlayerMonIndex
_080165BC: .4byte gUnknown_02024A7A
_080165C0: .4byte gUnknown_02024C0C
_080165C4: .4byte gBitTable
@@ -17707,7 +17707,7 @@ _08016638:
beq _08016686
cmp r2, 0
beq _08016686
- ldr r1, _0801669C @ =gUnknown_02024BEC
+ ldr r1, _0801669C @ =gBattleMoveDamage
ldrh r0, [r0, 0x2C]
lsrs r0, 4
str r0, [r1]
@@ -17735,7 +17735,7 @@ _08016686:
.align 2, 0
_08016694: .4byte gUnknown_02024C98
_08016698: .4byte gBattleMons
-_0801669C: .4byte gUnknown_02024BEC
+_0801669C: .4byte gBattleMoveDamage
_080166A0: .4byte gUnknown_081D93D1
_080166A4: .4byte 0x02000000
_080166A8:
@@ -17830,9 +17830,9 @@ _08016730:
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _0801679C
- ldr r0, _080167B0 @ =gUnknown_02024C08
+ ldr r0, _080167B0 @ =gEnemyMonIndex
strb r5, [r0]
- ldr r2, _080167B4 @ =gUnknown_02024BEC
+ ldr r2, _080167B4 @ =gBattleMoveDamage
ldrb r0, [r6]
muls r0, r1
adds r0, r3
@@ -17868,8 +17868,8 @@ _0801679C:
.align 2, 0
_080167A8: .4byte gUnknown_02024C98
_080167AC: .4byte gBattleMons
-_080167B0: .4byte gUnknown_02024C08
-_080167B4: .4byte gUnknown_02024BEC
+_080167B0: .4byte gEnemyMonIndex
+_080167B4: .4byte gBattleMoveDamage
_080167B8: .4byte 0x02000000
_080167BC: .4byte 0x000160a4
_080167C0: .4byte 0x000160a5
@@ -17892,7 +17892,7 @@ _080167C8:
ldrh r0, [r1, 0x28]
cmp r0, 0
beq _0801680A
- ldr r2, _0801681C @ =gUnknown_02024BEC
+ ldr r2, _0801681C @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 3
str r0, [r2]
@@ -17916,7 +17916,7 @@ _0801680A:
bl _08017072
.align 2, 0
_08016818: .4byte gBattleMons
-_0801681C: .4byte gUnknown_02024BEC
+_0801681C: .4byte gBattleMoveDamage
_08016820: .4byte gUnknown_081D9518
_08016824: .4byte 0x02000000
_08016828:
@@ -17938,7 +17938,7 @@ _08016828:
ldrh r0, [r1, 0x28]
cmp r0, 0
beq _080168A2
- ldr r5, _080168B4 @ =gUnknown_02024BEC
+ ldr r5, _080168B4 @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 4
str r0, [r5]
@@ -17990,7 +17990,7 @@ _080168A2:
bl _08017072
.align 2, 0
_080168B0: .4byte gBattleMons
-_080168B4: .4byte gUnknown_02024BEC
+_080168B4: .4byte gBattleMoveDamage
_080168B8: .4byte gUnknown_081D9518
_080168BC: .4byte 0x02000000
_080168C0:
@@ -18011,7 +18011,7 @@ _080168C0:
ldrh r0, [r1, 0x28]
cmp r0, 0
beq _08016902
- ldr r2, _08016910 @ =gUnknown_02024BEC
+ ldr r2, _08016910 @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 3
str r0, [r2]
@@ -18035,7 +18035,7 @@ _08016902:
b _08017072
.align 2, 0
_0801690C: .4byte gBattleMons
-_08016910: .4byte gUnknown_02024BEC
+_08016910: .4byte gBattleMoveDamage
_08016914: .4byte gUnknown_081D953A
_08016918: .4byte 0x02000000
_0801691C:
@@ -18057,7 +18057,7 @@ _0801691C:
ldrh r0, [r1, 0x28]
cmp r0, 0
beq _08016960
- ldr r2, _08016970 @ =gUnknown_02024BEC
+ ldr r2, _08016970 @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 2
str r0, [r2]
@@ -18081,7 +18081,7 @@ _08016960:
b _08017072
.align 2, 0
_0801696C: .4byte gBattleMons
-_08016970: .4byte gUnknown_02024BEC
+_08016970: .4byte gBattleMoveDamage
_08016974: .4byte gUnknown_081D9613
_08016978: .4byte 0x02000000
_0801697C:
@@ -18103,7 +18103,7 @@ _0801697C:
ldrh r0, [r1, 0x28]
cmp r0, 0
beq _080169C0
- ldr r2, _080169D0 @ =gUnknown_02024BEC
+ ldr r2, _080169D0 @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 2
str r0, [r2]
@@ -18127,7 +18127,7 @@ _080169C0:
b _08017072
.align 2, 0
_080169CC: .4byte gBattleMons
-_080169D0: .4byte gUnknown_02024BEC
+_080169D0: .4byte gBattleMoveDamage
_080169D4: .4byte gUnknown_081D9624
_080169D8: .4byte 0x02000000
_080169DC:
@@ -18204,7 +18204,7 @@ _080169DC:
ldr r1, _08016AA8 @ =gUnknown_02024C10
ldr r0, _08016AAC @ =gUnknown_081D95E2
str r0, [r1]
- ldr r2, _08016AB0 @ =gUnknown_02024BEC
+ ldr r2, _08016AB0 @ =gBattleMoveDamage
ldrb r0, [r6]
mov r7, r10
muls r7, r0
@@ -18228,7 +18228,7 @@ _08016AA0: .4byte 0x000160a5
_08016AA4: .4byte gUnknown_030041C0
_08016AA8: .4byte gUnknown_02024C10
_08016AAC: .4byte gUnknown_081D95E2
-_08016AB0: .4byte gUnknown_02024BEC
+_08016AB0: .4byte gBattleMoveDamage
_08016AB4:
ldr r1, _08016B00 @ =gUnknown_030041C0
movs r0, 0xFD
@@ -18374,7 +18374,7 @@ _08016BD2:
cmp r0, r1
bcc _08016BB2
_08016BE0:
- ldr r2, _08016BF8 @ =gUnknown_02024C07
+ ldr r2, _08016BF8 @ =gPlayerMonIndex
ldr r1, _08016BFC @ =gUnknown_02024A68
ldrb r0, [r2]
ldrb r1, [r1]
@@ -18385,7 +18385,7 @@ _08016BE0:
b _0801707E
.align 2, 0
_08016BF4: .4byte gBattleMons
-_08016BF8: .4byte gUnknown_02024C07
+_08016BF8: .4byte gPlayerMonIndex
_08016BFC: .4byte gUnknown_02024A68
_08016C00:
ldr r5, _08016C38 @ =gUnknown_02024A60
@@ -19130,17 +19130,17 @@ _080171C6:
strb r0, [r6, 0x3]
movs r0, 0xFF
strb r0, [r6, 0x4]
- ldr r3, _08017224 @ =gUnknown_02024C08
+ ldr r3, _08017224 @ =gEnemyMonIndex
ldrb r0, [r4]
strb r0, [r3]
- ldr r1, _08017228 @ =gUnknown_02024C07
+ ldr r1, _08017228 @ =gPlayerMonIndex
mov r0, r12
adds r0, 0x4
ldrb r2, [r4]
adds r0, r2
ldrb r0, [r0]
strb r0, [r1]
- ldr r1, _0801722C @ =gUnknown_02024BEC
+ ldr r1, _0801722C @ =gBattleMoveDamage
ldrb r0, [r4]
lsls r0, 2
add r0, r10
@@ -19159,9 +19159,9 @@ _080171C6:
b _08017364
.align 2, 0
_08017220: .4byte gUnknown_02024D1E
-_08017224: .4byte gUnknown_02024C08
-_08017228: .4byte gUnknown_02024C07
-_0801722C: .4byte gUnknown_02024BEC
+_08017224: .4byte gEnemyMonIndex
+_08017228: .4byte gPlayerMonIndex
+_0801722C: .4byte gBattleMoveDamage
_08017230: .4byte gUnknown_02024D68
_08017234: .4byte 0x0000ffff
_08017238: .4byte gUnknown_081D92D7
@@ -19197,7 +19197,7 @@ _0801726A:
ldr r4, _080172AC @ =gUnknown_030041C0
ldr r7, _080172B0 @ =gUnknown_02024CA8
_08017272:
- ldr r2, _080172B4 @ =gUnknown_02024C07
+ ldr r2, _080172B4 @ =gPlayerMonIndex
ldr r1, _080172B8 @ =gUnknown_02024A7A
ldrb r0, [r3]
adds r0, r1
@@ -19225,7 +19225,7 @@ _080172A4: .4byte gUnknown_02024A68
_080172A8: .4byte gUnknown_02024A60
_080172AC: .4byte gUnknown_030041C0
_080172B0: .4byte gUnknown_02024CA8
-_080172B4: .4byte gUnknown_02024C07
+_080172B4: .4byte gPlayerMonIndex
_080172B8: .4byte gUnknown_02024A7A
_080172BC: .4byte gUnknown_02024C0C
_080172C0: .4byte gBitTable
@@ -19274,7 +19274,7 @@ _080172C4:
negs r1, r1
ands r0, r1
str r0, [r2]
- ldr r3, _08017338 @ =gUnknown_02024BEC
+ ldr r3, _08017338 @ =gBattleMoveDamage
ldr r2, _0801733C @ =gBattleMons
ldrb r1, [r5]
movs r0, 0x58
@@ -19287,7 +19287,7 @@ _080172C4:
b _08017360
.align 2, 0
_08017334: .4byte gUnknown_02024C98
-_08017338: .4byte gUnknown_02024BEC
+_08017338: .4byte gBattleMoveDamage
_0801733C: .4byte gBattleMons
_08017340: .4byte gUnknown_02024C10
_08017344: .4byte gUnknown_081D9202
@@ -19459,7 +19459,7 @@ _08017490:
mov r9, r1
ldr r0, _08017520 @ =gUnknown_02024C09
mov r12, r0
- ldr r1, _08017524 @ =gUnknown_02024C08
+ ldr r1, _08017524 @ =gEnemyMonIndex
mov r8, r1
mov r10, r9
ldr r5, _08017508 @ =0x0001605a
@@ -19524,7 +19524,7 @@ _08017514: .4byte gUnknown_02024C0C
_08017518: .4byte gBitTable
_0801751C: .4byte 0x02000000
_08017520: .4byte gUnknown_02024C09
-_08017524: .4byte gUnknown_02024C08
+_08017524: .4byte gEnemyMonIndex
_08017528: .4byte gBattleMons
_0801752C: .4byte 0x00016113
_08017530: .4byte gUnknown_02024A6A
@@ -19573,7 +19573,7 @@ _0801757C:
strb r0, [r1]
_0801758E:
ldr r7, _080175E0 @ =gUnknown_02024C09
- ldr r6, _080175E4 @ =gUnknown_02024C08
+ ldr r6, _080175E4 @ =gEnemyMonIndex
ldr r1, _080175E8 @ =0x02000000
mov r8, r1
ldr r3, _080175D8 @ =0x0001605a
@@ -19614,7 +19614,7 @@ _080175C4:
_080175D8: .4byte 0x0001605a
_080175DC: .4byte 0x00016059
_080175E0: .4byte gUnknown_02024C09
-_080175E4: .4byte gUnknown_02024C08
+_080175E4: .4byte gEnemyMonIndex
_080175E8: .4byte 0x02000000
_080175EC: .4byte gBattleMons
_080175F0: .4byte gBitTable
@@ -19829,7 +19829,7 @@ _08017768:
.4byte _08017F9E
_080177A4:
ldr r1, _080177D0 @ =gBattleMons
- ldr r3, _080177D4 @ =gUnknown_02024C07
+ ldr r3, _080177D4 @ =gPlayerMonIndex
ldrb r2, [r3]
movs r0, 0x58
muls r2, r0
@@ -19850,13 +19850,13 @@ _080177A4:
bl _08017F94
.align 2, 0
_080177D0: .4byte gBattleMons
-_080177D4: .4byte gUnknown_02024C07
+_080177D4: .4byte gPlayerMonIndex
_080177D8: .4byte 0xfdffffff
_080177DC: .4byte gUnknown_02024C98
_080177E0: .4byte 0xffffbfff
_080177E4:
ldr r7, _0801784C @ =gBattleMons
- ldr r4, _08017850 @ =gUnknown_02024C07
+ ldr r4, _08017850 @ =gPlayerMonIndex
ldrb r1, [r4]
movs r5, 0x58
adds r0, r1, 0
@@ -19908,7 +19908,7 @@ _08017804:
b _08017D90
.align 2, 0
_0801784C: .4byte gBattleMons
-_08017850: .4byte gUnknown_02024C07
+_08017850: .4byte gPlayerMonIndex
_08017854: .4byte 0xf7ffffff
_08017858: .4byte gUnknown_02024D1E
_0801785C: .4byte gUnknown_02024C10
@@ -19942,7 +19942,7 @@ _08017890:
str r0, [r2]
_08017894:
ldr r2, _080178D8 @ =gBattleMons
- ldr r0, _080178DC @ =gUnknown_02024C07
+ ldr r0, _080178DC @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
@@ -19978,7 +19978,7 @@ _080178BE:
b _08017D90
.align 2, 0
_080178D8: .4byte gBattleMons
-_080178DC: .4byte gUnknown_02024C07
+_080178DC: .4byte gPlayerMonIndex
_080178E0: .4byte gUnknown_02024BE6
_080178E4: .4byte gUnknown_02024C10
_080178E8: .4byte gUnknown_081D94EE
@@ -20005,7 +20005,7 @@ _08017918: .4byte gUnknown_02024C10
_0801791C: .4byte gUnknown_081D94FB
_08017920:
ldr r1, _0801797C @ =gBattleMons
- ldr r7, _08017980 @ =gUnknown_02024C07
+ ldr r7, _08017980 @ =gPlayerMonIndex
ldrb r0, [r7]
movs r6, 0x58
muls r0, r6
@@ -20050,7 +20050,7 @@ _0801793C:
b _080179C8
.align 2, 0
_0801797C: .4byte gBattleMons
-_08017980: .4byte gUnknown_02024C07
+_08017980: .4byte gPlayerMonIndex
_08017984: .4byte gBattleMoves
_08017988: .4byte gUnknown_02024BE6
_0801798C: .4byte gUnknown_02024C10
@@ -20089,7 +20089,7 @@ _080179D0: .4byte gUnknown_081D9552
_080179D4: .4byte gUnknown_02024D1E
_080179D8:
ldr r1, _08017A30 @ =gBattleMons
- ldr r0, _08017A34 @ =gUnknown_02024C07
+ ldr r0, _08017A34 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -20125,7 +20125,7 @@ _08017A02:
ldr r1, _08017A44 @ =gUnknown_02024C10
ldr r0, _08017A48 @ =gUnknown_081D9977
str r0, [r1]
- ldr r2, _08017A4C @ =gUnknown_02024C68
+ ldr r2, _08017A4C @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -20135,16 +20135,16 @@ _08017A02:
b _08017D90
.align 2, 0
_08017A30: .4byte gBattleMons
-_08017A34: .4byte gUnknown_02024C07
+_08017A34: .4byte gPlayerMonIndex
_08017A38: .4byte gUnknown_02024CA8
_08017A3C: .4byte gUnknown_02024C6C
_08017A40: .4byte gUnknown_02024D1E
_08017A44: .4byte gUnknown_02024C10
_08017A48: .4byte gUnknown_081D9977
-_08017A4C: .4byte gUnknown_02024C68
+_08017A4C: .4byte gBattleMoveFlags
_08017A50:
ldr r1, _08017AA4 @ =gBattleMons
- ldr r3, _08017AA8 @ =gUnknown_02024C07
+ ldr r3, _08017AA8 @ =gPlayerMonIndex
ldrb r2, [r3]
movs r0, 0x58
muls r0, r2
@@ -20187,7 +20187,7 @@ _08017A9C:
b _08017D96
.align 2, 0
_08017AA4: .4byte gBattleMons
-_08017AA8: .4byte gUnknown_02024C07
+_08017AA8: .4byte gPlayerMonIndex
_08017AAC: .4byte 0xffbfffff
_08017AB0: .4byte gUnknown_02024CA8
_08017AB4: .4byte gUnknown_02024C10
@@ -20197,7 +20197,7 @@ _08017AC0: .4byte 0x02000000
_08017AC4: .4byte 0x000160e7
_08017AC8:
ldr r1, _08017B08 @ =gBattleMons
- ldr r3, _08017B0C @ =gUnknown_02024C07
+ ldr r3, _08017B0C @ =gPlayerMonIndex
ldrb r2, [r3]
movs r0, 0x58
muls r0, r2
@@ -20229,13 +20229,13 @@ _08017AE2:
b _08017D7E
.align 2, 0
_08017B08: .4byte gBattleMons
-_08017B0C: .4byte gUnknown_02024C07
+_08017B0C: .4byte gPlayerMonIndex
_08017B10: .4byte gUnknown_02024D28
_08017B14: .4byte gUnknown_02024C10
_08017B18: .4byte gUnknown_081D9573
_08017B1C:
ldr r0, _08017B74 @ =gUnknown_02024CA8
- ldr r3, _08017B78 @ =gUnknown_02024C07
+ ldr r3, _08017B78 @ =gPlayerMonIndex
ldrb r2, [r3]
lsls r1, r2, 3
subs r1, r2
@@ -20280,7 +20280,7 @@ _08017B3C:
b _08017D90
.align 2, 0
_08017B74: .4byte gUnknown_02024CA8
-_08017B78: .4byte gUnknown_02024C07
+_08017B78: .4byte gPlayerMonIndex
_08017B7C: .4byte gUnknown_02024BE6
_08017B80: .4byte gUnknown_02024D28
_08017B84: .4byte 0x02000000
@@ -20290,7 +20290,7 @@ _08017B90: .4byte gUnknown_081D9139
_08017B94: .4byte gUnknown_02024C6C
_08017B98:
ldr r0, _08017BF4 @ =gUnknown_02024CA8
- ldr r4, _08017BF8 @ =gUnknown_02024C07
+ ldr r4, _08017BF8 @ =gPlayerMonIndex
ldrb r3, [r4]
lsls r1, r3, 3
subs r1, r3
@@ -20337,7 +20337,7 @@ _08017BEC:
b _08017D96
.align 2, 0
_08017BF4: .4byte gUnknown_02024CA8
-_08017BF8: .4byte gUnknown_02024C07
+_08017BF8: .4byte gPlayerMonIndex
_08017BFC: .4byte gBattleMoves
_08017C00: .4byte gUnknown_02024BE6
_08017C04: .4byte gUnknown_02024D28
@@ -20347,7 +20347,7 @@ _08017C10: .4byte gUnknown_02024C6C
_08017C14: .4byte 0x02000000
_08017C18: .4byte 0x000160e7
_08017C1C:
- ldr r4, _08017C4C @ =gUnknown_02024C07
+ ldr r4, _08017C4C @ =gPlayerMonIndex
ldrb r0, [r4]
ldr r1, _08017C50 @ =gUnknown_02024BE6
ldrh r1, [r1]
@@ -20371,14 +20371,14 @@ _08017C30:
ldr r0, _08017C5C @ =gUnknown_081D9459
b _08017D7E
.align 2, 0
-_08017C4C: .4byte gUnknown_02024C07
+_08017C4C: .4byte gPlayerMonIndex
_08017C50: .4byte gUnknown_02024BE6
_08017C54: .4byte gUnknown_02024D28
_08017C58: .4byte gUnknown_02024C10
_08017C5C: .4byte gUnknown_081D9459
_08017C60:
ldr r7, _08017CAC @ =gBattleMons
- ldr r5, _08017CB0 @ =gUnknown_02024C07
+ ldr r5, _08017CB0 @ =gPlayerMonIndex
ldrb r0, [r5]
movs r6, 0x58
muls r0, r6
@@ -20415,13 +20415,13 @@ _08017C7E:
b _08017D02
.align 2, 0
_08017CAC: .4byte gBattleMons
-_08017CB0: .4byte gUnknown_02024C07
+_08017CB0: .4byte gPlayerMonIndex
_08017CB4: .4byte gUnknown_02024D1E
_08017CB8:
ldr r0, _08017D08 @ =gUnknown_02024D1E
movs r4, 0x1
strb r1, [r0, 0x5]
- ldr r1, _08017D0C @ =gUnknown_02024C08
+ ldr r1, _08017D0C @ =gEnemyMonIndex
ldrb r0, [r5]
strb r0, [r1]
ldrb r0, [r5]
@@ -20439,7 +20439,7 @@ _08017CB8:
movs r2, 0x1
movs r3, 0
bl CalculateBaseDamage
- ldr r1, _08017D10 @ =gUnknown_02024BEC
+ ldr r1, _08017D10 @ =gBattleMoveDamage
str r0, [r1]
ldr r0, _08017D14 @ =gUnknown_02024D28
ldrb r1, [r5]
@@ -20460,8 +20460,8 @@ _08017D02:
b _08017D2C
.align 2, 0
_08017D08: .4byte gUnknown_02024D1E
-_08017D0C: .4byte gUnknown_02024C08
-_08017D10: .4byte gUnknown_02024BEC
+_08017D0C: .4byte gEnemyMonIndex
+_08017D10: .4byte gBattleMoveDamage
_08017D14: .4byte gUnknown_02024D28
_08017D18: .4byte gUnknown_02024C6C
_08017D1C: .4byte gUnknown_02024C10
@@ -20479,7 +20479,7 @@ _08017D34: .4byte gUnknown_02024C10
_08017D38: .4byte gUnknown_081D95D4
_08017D3C:
ldr r1, _08017DA0 @ =gBattleMons
- ldr r4, _08017DA4 @ =gUnknown_02024C07
+ ldr r4, _08017DA4 @ =gPlayerMonIndex
ldrb r2, [r4]
movs r0, 0x58
muls r0, r2
@@ -20532,7 +20532,7 @@ _08017D96:
b _08017F9E
.align 2, 0
_08017DA0: .4byte gBattleMons
-_08017DA4: .4byte gUnknown_02024C07
+_08017DA4: .4byte gPlayerMonIndex
_08017DA8: .4byte gUnknown_02024D28
_08017DAC: .4byte gUnknown_02024C10
_08017DB0: .4byte gUnknown_081D9566
@@ -20541,7 +20541,7 @@ _08017DB8: .4byte 0x02000000
_08017DBC: .4byte 0x000160e7
_08017DC0:
ldr r1, _08017DFC @ =gBattleMons
- ldr r4, _08017E00 @ =gUnknown_02024C07
+ ldr r4, _08017E00 @ =gPlayerMonIndex
ldrb r2, [r4]
movs r0, 0x58
muls r0, r2
@@ -20570,7 +20570,7 @@ _08017DDC:
b _08017E34
.align 2, 0
_08017DFC: .4byte gBattleMons
-_08017E00: .4byte gUnknown_02024C07
+_08017E00: .4byte gPlayerMonIndex
_08017E04: .4byte 0x02000000
_08017E08: .4byte 0x00016003
_08017E0C:
@@ -20611,7 +20611,7 @@ _08017E54: .4byte gUnknown_081D95FB
_08017E58: .4byte 0x02000000
_08017E5C:
ldr r1, _08017E98 @ =gBattleMons
- ldr r6, _08017E9C @ =gUnknown_02024C07
+ ldr r6, _08017E9C @ =gPlayerMonIndex
ldrb r0, [r6]
movs r5, 0x58
muls r0, r5
@@ -20642,7 +20642,7 @@ _08017E7A:
b _08017F38
.align 2, 0
_08017E98: .4byte gBattleMons
-_08017E9C: .4byte gUnknown_02024C07
+_08017E9C: .4byte gPlayerMonIndex
_08017EA0: .4byte 0xffffff00
_08017EA4: .4byte gUnknown_02024C10
_08017EA8: .4byte gUnknown_081D90A7
@@ -20667,7 +20667,7 @@ _08017EAC:
lsls r0, 1
mov r1, r10
str r0, [r1]
- ldr r4, _08017F18 @ =gUnknown_02024C08
+ ldr r4, _08017F18 @ =gEnemyMonIndex
ldr r1, _08017F1C @ =gUnknown_02024C74
ldrb r0, [r6]
adds r0, r1
@@ -20698,7 +20698,7 @@ _08017EFE:
_08017F0C: .4byte 0xffffefff
_08017F10: .4byte gUnknown_02024BF4
_08017F14: .4byte gUnknown_02024BE6
-_08017F18: .4byte gUnknown_02024C08
+_08017F18: .4byte gEnemyMonIndex
_08017F1C: .4byte gUnknown_02024C74
_08017F20: .4byte gUnknown_02024C0C
_08017F24: .4byte gBitTable
@@ -20719,7 +20719,7 @@ _08017F40: .4byte gUnknown_02024C10
_08017F44: .4byte gUnknown_081D90F1
_08017F48:
ldr r1, _08017FEC @ =gBattleMons
- ldr r0, _08017FF0 @ =gUnknown_02024C07
+ ldr r0, _08017FF0 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -20775,7 +20775,7 @@ _08017FAC:
cmp r1, 0x2
bne _08017FD8
ldr r4, _08018010 @ =gUnknown_02024A60
- ldr r0, _08017FF0 @ =gUnknown_02024C07
+ ldr r0, _08017FF0 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r4]
ldrb r1, [r4]
@@ -20803,7 +20803,7 @@ _08017FD8:
bx r1
.align 2, 0
_08017FEC: .4byte gBattleMons
-_08017FF0: .4byte gUnknown_02024C07
+_08017FF0: .4byte gPlayerMonIndex
_08017FF4: .4byte gBattleMoves
_08017FF8: .4byte gUnknown_02024BE6
_08017FFC: .4byte gUnknown_02024C10
@@ -21235,7 +21235,7 @@ sub_8018324: @ 8018324
lsrs r4, 16
movs r0, 0
mov r9, r0
- ldr r5, _08018380 @ =gUnknown_02024C07
+ ldr r5, _08018380 @ =gPlayerMonIndex
ldr r1, _08018384 @ =gUnknown_02024A68
ldrb r0, [r5]
ldrb r1, [r1]
@@ -21259,7 +21259,7 @@ _08018360:
ldr r0, _0801838C @ =gPlayerParty
b _080183A0
.align 2, 0
-_08018380: .4byte gUnknown_02024C07
+_08018380: .4byte gPlayerMonIndex
_08018384: .4byte gUnknown_02024A68
_08018388: .4byte gUnknown_02024A6A
_0801838C: .4byte gPlayerParty
@@ -21274,7 +21274,7 @@ _08018390:
ldr r0, _080183D4 @ =gEnemyParty
_080183A0:
adds r7, r1, r0
- ldr r5, _080183D8 @ =gUnknown_02024C08
+ ldr r5, _080183D8 @ =gEnemyMonIndex
ldr r1, _080183DC @ =gUnknown_02024A68
ldrb r0, [r5]
ldrb r1, [r1]
@@ -21300,7 +21300,7 @@ _080183B2:
.align 2, 0
_080183D0: .4byte gUnknown_02024A6A
_080183D4: .4byte gEnemyParty
-_080183D8: .4byte gUnknown_02024C08
+_080183D8: .4byte gEnemyMonIndex
_080183DC: .4byte gUnknown_02024A68
_080183E0: .4byte gPlayerParty
_080183E4:
@@ -21436,7 +21436,7 @@ _080184C8:
.4byte _08019F44
.4byte _08019CD4
_08018518:
- ldr r2, _0801854C @ =gUnknown_02024C07
+ ldr r2, _0801854C @ =gPlayerMonIndex
ldr r0, _08018550 @ =gUnknown_02024A68
ldrb r1, [r2]
adds r5, r0, 0
@@ -21466,7 +21466,7 @@ _0801853E:
_08018548:
bl _08019F76
.align 2, 0
-_0801854C: .4byte gUnknown_02024C07
+_0801854C: .4byte gPlayerMonIndex
_08018550: .4byte gUnknown_02024A68
_08018554:
cmp r0, 0x16
@@ -21796,7 +21796,7 @@ _08018814:
bne _08018828
bl _08019F76
_08018828:
- ldr r0, _08018848 @ =gUnknown_02024C07
+ ldr r0, _08018848 @ =gPlayerMonIndex
mov r3, r10
strb r3, [r0]
mov r3, r8
@@ -21812,7 +21812,7 @@ _08018840:
bl _08019F76
.align 2, 0
_08018844: .4byte gBattleMons
-_08018848: .4byte gUnknown_02024C07
+_08018848: .4byte gPlayerMonIndex
_0801884C:
cmp r5, 0x36
bne _08018852
@@ -21864,7 +21864,7 @@ _080188AA:
strb r5, [r2]
ldr r0, _080188D4 @ =gUnknown_081D9730
bl b_push_move_exec
- ldr r1, _080188D8 @ =gUnknown_02024BEC
+ ldr r1, _080188D8 @ =gBattleMoveDamage
ldrh r0, [r4, 0x2C]
lsrs r0, 4
str r0, [r1]
@@ -21880,7 +21880,7 @@ _080188C4:
.align 2, 0
_080188D0: .4byte gBattleWeather
_080188D4: .4byte gUnknown_081D9730
-_080188D8: .4byte gUnknown_02024BEC
+_080188D8: .4byte gBattleMoveDamage
_080188DC:
adds r0, r2, 0
adds r0, 0x4C
@@ -22077,7 +22077,7 @@ _08018A76:
bl _08019F76
_08018A86:
ldr r1, _08018AC4 @ =gBattleMons
- ldr r0, _08018AC8 @ =gUnknown_02024C07
+ ldr r0, _08018AC8 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -22106,7 +22106,7 @@ _08018AAC:
_08018ABC: .4byte gUnknown_081FA724
_08018AC0: .4byte 0x0000ffff
_08018AC4: .4byte gBattleMons
-_08018AC8: .4byte gUnknown_02024C07
+_08018AC8: .4byte gPlayerMonIndex
_08018ACC: .4byte gUnknown_02024C6C
_08018AD0: .4byte gUnknown_02024C10
_08018AD4: .4byte gUnknown_081D98F3
@@ -22144,7 +22144,7 @@ _08018AFE:
b _08018C6A
_08018B10:
ldr r1, _08018B2C @ =gUnknown_02024D28
- ldr r0, _08018B30 @ =gUnknown_02024C07
+ ldr r0, _08018B30 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -22158,7 +22158,7 @@ _08018B10:
.align 2, 0
_08018B28: .4byte gBattleMoves
_08018B2C: .4byte gUnknown_02024D28
-_08018B30: .4byte gUnknown_02024C07
+_08018B30: .4byte gPlayerMonIndex
_08018B34: .4byte gUnknown_02024C10
_08018B38: .4byte gUnknown_081D9843
_08018B3C:
@@ -22187,7 +22187,7 @@ _08018B56:
b _08018C6A
_08018B68:
ldr r1, _08018B84 @ =gUnknown_02024D28
- ldr r0, _08018B88 @ =gUnknown_02024C07
+ ldr r0, _08018B88 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -22201,7 +22201,7 @@ _08018B68:
.align 2, 0
_08018B80: .4byte gBattleMoves
_08018B84: .4byte gUnknown_02024D28
-_08018B88: .4byte gUnknown_02024C07
+_08018B88: .4byte gPlayerMonIndex
_08018B8C: .4byte gUnknown_02024C10
_08018B90: .4byte gUnknown_081D9843
_08018B94:
@@ -22243,7 +22243,7 @@ _08018BA8:
ldr r0, _08018BFC @ =gUnknown_02024D1E
strb r3, [r0, 0x5]
ldr r1, _08018C00 @ =gUnknown_02024D28
- ldr r0, _08018C04 @ =gUnknown_02024C07
+ ldr r0, _08018C04 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -22259,7 +22259,7 @@ _08018BF4: .4byte gBattleMons
_08018BF8: .4byte 0x02017100
_08018BFC: .4byte gUnknown_02024D1E
_08018C00: .4byte gUnknown_02024D28
-_08018C04: .4byte gUnknown_02024C07
+_08018C04: .4byte gPlayerMonIndex
_08018C08: .4byte gUnknown_02024C10
_08018C0C: .4byte gUnknown_081D987C
_08018C10:
@@ -22282,7 +22282,7 @@ _08018C30:
ldr r0, _08018C4C @ =gUnknown_02024D1E
strb r4, [r0, 0x5]
ldr r1, _08018C50 @ =gUnknown_02024D28
- ldr r0, _08018C54 @ =gUnknown_02024C07
+ ldr r0, _08018C54 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -22296,7 +22296,7 @@ _08018C30:
.align 2, 0
_08018C4C: .4byte gUnknown_02024D1E
_08018C50: .4byte gUnknown_02024D28
-_08018C54: .4byte gUnknown_02024C07
+_08018C54: .4byte gPlayerMonIndex
_08018C58: .4byte gUnknown_02024C10
_08018C5C: .4byte gUnknown_081D987C
_08018C60:
@@ -22324,7 +22324,7 @@ _08018C74:
cmp r0, r2
bne _08018CD0
ldr r1, _08018CB0 @ =gUnknown_02024D28
- ldr r0, _08018CB4 @ =gUnknown_02024C07
+ ldr r0, _08018CB4 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -22341,7 +22341,7 @@ _08018CA4: .4byte gUnknown_02024C10
_08018CA8: .4byte gUnknown_081D987B
_08018CAC: .4byte gBattleMons
_08018CB0: .4byte gUnknown_02024D28
-_08018CB4: .4byte gUnknown_02024C07
+_08018CB4: .4byte gPlayerMonIndex
_08018CB8: .4byte gUnknown_081D9866
_08018CBC:
ldr r1, _08018CC8 @ =gUnknown_02024C10
@@ -22352,7 +22352,7 @@ _08018CBC:
_08018CC8: .4byte gUnknown_02024C10
_08018CCC: .4byte gUnknown_081D9865
_08018CD0:
- ldr r2, _08018CEC @ =gUnknown_02024BEC
+ ldr r2, _08018CEC @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 2
str r0, [r2]
@@ -22366,7 +22366,7 @@ _08018CE0:
str r0, [r2]
bl _08019F76
.align 2, 0
-_08018CEC: .4byte gUnknown_02024BEC
+_08018CEC: .4byte gBattleMoveDamage
_08018CF0:
mov r5, r8
ldrb r0, [r5]
@@ -22433,7 +22433,7 @@ _08018D0C:
.4byte _08019F76
.4byte _080192E0
_08018DCC:
- ldr r0, _08018E74 @ =gUnknown_02024C68
+ ldr r0, _08018E74 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -22456,7 +22456,7 @@ _08018DE4:
bl _08019F76
_08018DF8:
ldr r2, _08018E7C @ =gUnknown_02024D68
- ldr r0, _08018E80 @ =gUnknown_02024C08
+ ldr r0, _08018E80 @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -22516,16 +22516,16 @@ _08018E52:
str r0, [r1]
bl _08019F22
.align 2, 0
-_08018E74: .4byte gUnknown_02024C68
+_08018E74: .4byte gBattleMoveFlags
_08018E78: .4byte gBattleMoves
_08018E7C: .4byte gUnknown_02024D68
-_08018E80: .4byte gUnknown_02024C08
+_08018E80: .4byte gEnemyMonIndex
_08018E84: .4byte gBattleMons
_08018E88: .4byte gUnknown_030041C0
_08018E8C: .4byte gUnknown_02024C10
_08018E90: .4byte gUnknown_081D9921
_08018E94:
- ldr r0, _08018F2C @ =gUnknown_02024C68
+ ldr r0, _08018F2C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -22534,7 +22534,7 @@ _08018E94:
bl _08019F76
_08018EA4:
ldr r1, _08018F30 @ =gBattleMons
- ldr r0, _08018F34 @ =gUnknown_02024C07
+ ldr r0, _08018F34 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -22554,7 +22554,7 @@ _08018EBA:
bl _08019F76
_08018ECC:
ldr r2, _08018F3C @ =gUnknown_02024D68
- ldr r0, _08018F40 @ =gUnknown_02024C08
+ ldr r0, _08018F40 @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -22586,7 +22586,7 @@ _08018EF4:
bne _08018F0E
bl _08019F76
_08018F0E:
- ldr r1, _08018F48 @ =gUnknown_02024BEC
+ ldr r1, _08018F48 @ =gBattleMoveDamage
ldrh r0, [r4, 0x2C]
lsrs r0, 4
str r0, [r1]
@@ -22600,18 +22600,18 @@ _08018F1C:
str r0, [r1]
bl _08019F22
.align 2, 0
-_08018F2C: .4byte gUnknown_02024C68
+_08018F2C: .4byte gBattleMoveFlags
_08018F30: .4byte gBattleMons
-_08018F34: .4byte gUnknown_02024C07
+_08018F34: .4byte gPlayerMonIndex
_08018F38: .4byte gUnknown_02024D28
_08018F3C: .4byte gUnknown_02024D68
-_08018F40: .4byte gUnknown_02024C08
+_08018F40: .4byte gEnemyMonIndex
_08018F44: .4byte gBattleMoves
-_08018F48: .4byte gUnknown_02024BEC
+_08018F48: .4byte gBattleMoveDamage
_08018F4C: .4byte gUnknown_02024C10
_08018F50: .4byte gUnknown_081D9928
_08018F54:
- ldr r0, _08019020 @ =gUnknown_02024C68
+ ldr r0, _08019020 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -22620,7 +22620,7 @@ _08018F54:
bl _08019F76
_08018F64:
ldr r1, _08019024 @ =gBattleMons
- ldr r0, _08019028 @ =gUnknown_02024C07
+ ldr r0, _08019028 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -22640,7 +22640,7 @@ _08018F7A:
bl _08019F76
_08018F8C:
ldr r2, _08019030 @ =gUnknown_02024D68
- ldr r0, _08019034 @ =gUnknown_02024C08
+ ldr r0, _08019034 @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -22711,19 +22711,19 @@ _08019000:
str r0, [r2]
bl _08019F22
.align 2, 0
-_08019020: .4byte gUnknown_02024C68
+_08019020: .4byte gBattleMoveFlags
_08019024: .4byte gBattleMons
-_08019028: .4byte gUnknown_02024C07
+_08019028: .4byte gPlayerMonIndex
_0801902C: .4byte gUnknown_02024D28
_08019030: .4byte gUnknown_02024D68
-_08019034: .4byte gUnknown_02024C08
+_08019034: .4byte gEnemyMonIndex
_08019038: .4byte gBattleMoves
_0801903C: .4byte gUnknown_02024D1E
_08019040: .4byte gUnknown_02024C10
_08019044: .4byte gUnknown_081D9950
_08019048: .4byte gUnknown_02024C6C
_0801904C:
- ldr r0, _080190FC @ =gUnknown_02024C68
+ ldr r0, _080190FC @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -22732,7 +22732,7 @@ _0801904C:
bl _08019F76
_0801905C:
ldr r1, _08019100 @ =gBattleMons
- ldr r0, _08019104 @ =gUnknown_02024C07
+ ldr r0, _08019104 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -22752,7 +22752,7 @@ _08019072:
bl _08019F76
_08019084:
ldr r2, _0801910C @ =gUnknown_02024D68
- ldr r0, _08019110 @ =gUnknown_02024C08
+ ldr r0, _08019110 @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -22808,19 +22808,19 @@ _080190DC:
str r0, [r2]
bl _08019F22
.align 2, 0
-_080190FC: .4byte gUnknown_02024C68
+_080190FC: .4byte gBattleMoveFlags
_08019100: .4byte gBattleMons
-_08019104: .4byte gUnknown_02024C07
+_08019104: .4byte gPlayerMonIndex
_08019108: .4byte gUnknown_02024D28
_0801910C: .4byte gUnknown_02024D68
-_08019110: .4byte gUnknown_02024C08
+_08019110: .4byte gEnemyMonIndex
_08019114: .4byte gBattleMoves
_08019118: .4byte gUnknown_02024D1E
_0801911C: .4byte gUnknown_02024C10
_08019120: .4byte gUnknown_081D9950
_08019124: .4byte gUnknown_02024C6C
_08019128:
- ldr r0, _080191D8 @ =gUnknown_02024C68
+ ldr r0, _080191D8 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -22829,7 +22829,7 @@ _08019128:
bl _08019F76
_08019138:
ldr r1, _080191DC @ =gBattleMons
- ldr r0, _080191E0 @ =gUnknown_02024C07
+ ldr r0, _080191E0 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -22849,7 +22849,7 @@ _0801914E:
bl _08019F76
_08019160:
ldr r2, _080191E8 @ =gUnknown_02024D68
- ldr r0, _080191EC @ =gUnknown_02024C08
+ ldr r0, _080191EC @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -22905,19 +22905,19 @@ _080191B8:
str r0, [r2]
bl _08019F22
.align 2, 0
-_080191D8: .4byte gUnknown_02024C68
+_080191D8: .4byte gBattleMoveFlags
_080191DC: .4byte gBattleMons
-_080191E0: .4byte gUnknown_02024C07
+_080191E0: .4byte gPlayerMonIndex
_080191E4: .4byte gUnknown_02024D28
_080191E8: .4byte gUnknown_02024D68
-_080191EC: .4byte gUnknown_02024C08
+_080191EC: .4byte gEnemyMonIndex
_080191F0: .4byte gBattleMoves
_080191F4: .4byte gUnknown_02024D1E
_080191F8: .4byte gUnknown_02024C10
_080191FC: .4byte gUnknown_081D9950
_08019200: .4byte gUnknown_02024C6C
_08019204:
- ldr r0, _080192B4 @ =gUnknown_02024C68
+ ldr r0, _080192B4 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -22926,7 +22926,7 @@ _08019204:
bl _08019F76
_08019214:
ldr r1, _080192B8 @ =gBattleMons
- ldr r0, _080192BC @ =gUnknown_02024C07
+ ldr r0, _080192BC @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -22958,7 +22958,7 @@ _0801923C:
bl _08019F76
_08019254:
ldr r2, _080192C8 @ =gUnknown_02024D68
- ldr r0, _080192CC @ =gUnknown_02024C08
+ ldr r0, _080192CC @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -23002,19 +23002,19 @@ _08019294:
str r0, [r2]
bl _08019F22
.align 2, 0
-_080192B4: .4byte gUnknown_02024C68
+_080192B4: .4byte gBattleMoveFlags
_080192B8: .4byte gBattleMons
-_080192BC: .4byte gUnknown_02024C07
+_080192BC: .4byte gPlayerMonIndex
_080192C0: .4byte gUnknown_02024D28
_080192C4: .4byte gBattleMoves
_080192C8: .4byte gUnknown_02024D68
-_080192CC: .4byte gUnknown_02024C08
+_080192CC: .4byte gEnemyMonIndex
_080192D0: .4byte gUnknown_02024D1E
_080192D4: .4byte gUnknown_02024C10
_080192D8: .4byte gUnknown_081D9950
_080192DC: .4byte gUnknown_02024C6C
_080192E0:
- ldr r0, _08019420 @ =gUnknown_02024C68
+ ldr r0, _08019420 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -23023,7 +23023,7 @@ _080192E0:
bl _08019F76
_080192F0:
ldr r5, _08019424 @ =gBattleMons
- ldr r7, _08019428 @ =gUnknown_02024C07
+ ldr r7, _08019428 @ =gPlayerMonIndex
ldrb r1, [r7]
movs r6, 0x58
adds r0, r1, 0
@@ -23056,7 +23056,7 @@ _0801931A:
bl _08019F76
_08019332:
ldr r3, _08019434 @ =gUnknown_02024D68
- ldr r0, _08019438 @ =gUnknown_02024C08
+ ldr r0, _08019438 @ =gEnemyMonIndex
mov r8, r0
ldrb r1, [r0]
lsls r0, r1, 2
@@ -23167,13 +23167,13 @@ _080193F6:
str r0, [r1]
bl _08019F22
.align 2, 0
-_08019420: .4byte gUnknown_02024C68
+_08019420: .4byte gBattleMoveFlags
_08019424: .4byte gBattleMons
-_08019428: .4byte gUnknown_02024C07
+_08019428: .4byte gPlayerMonIndex
_0801942C: .4byte gUnknown_02024D28
_08019430: .4byte gBattleMoves
_08019434: .4byte gUnknown_02024D68
-_08019438: .4byte gUnknown_02024C08
+_08019438: .4byte gEnemyMonIndex
_0801943C: .4byte gBitTable
_08019440: .4byte gUnknown_02024C10
_08019444: .4byte gUnknown_081D9943
@@ -23618,7 +23618,7 @@ _08019838:
ldrb r0, [r2]
adds r0, 0x40
strb r0, [r1, 0x3]
- ldr r0, _08019870 @ =gUnknown_02024C08
+ ldr r0, _08019870 @ =gEnemyMonIndex
ldrb r1, [r0]
ldr r5, _08019874 @ =0x00016003
adds r0, r7, r5
@@ -23638,7 +23638,7 @@ _08019860: .4byte gUnknown_02024C6C
_08019864: .4byte 0xffffbfff
_08019868: .4byte 0x000160ca
_0801986C: .4byte gUnknown_02024D1E
-_08019870: .4byte gUnknown_02024C08
+_08019870: .4byte gEnemyMonIndex
_08019874: .4byte 0x00016003
_08019878: .4byte gUnknown_02024C10
_0801987C: .4byte gUnknown_081D9953
@@ -23675,7 +23675,7 @@ _080198B4:
ldr r1, _080198E8 @ =gUnknown_02024D1E
ldrb r0, [r2]
strb r0, [r1, 0x3]
- ldr r0, _080198EC @ =gUnknown_02024C07
+ ldr r0, _080198EC @ =gPlayerMonIndex
ldrb r1, [r0]
ldr r5, _080198F0 @ =0x00016003
adds r0, r7, r5
@@ -23695,7 +23695,7 @@ _080198DC: .4byte gUnknown_02024C6C
_080198E0: .4byte 0xffffbfff
_080198E4: .4byte 0x000160ca
_080198E8: .4byte gUnknown_02024D1E
-_080198EC: .4byte gUnknown_02024C07
+_080198EC: .4byte gPlayerMonIndex
_080198F0: .4byte 0x00016003
_080198F4: .4byte gUnknown_02024C10
_080198F8: .4byte gUnknown_081D9953
@@ -24671,7 +24671,7 @@ _0801A084:
_0801A098:
mov r9, r0
ldr r1, _0801A0C0 @ =gBattleMons
- ldr r0, _0801A0C4 @ =gUnknown_02024C07
+ ldr r0, _0801A0C4 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -24691,7 +24691,7 @@ _0801A098:
b _0801A0E2
.align 2, 0
_0801A0C0: .4byte gBattleMons
-_0801A0C4: .4byte gUnknown_02024C07
+_0801A0C4: .4byte gPlayerMonIndex
_0801A0C8: .4byte gEnigmaBerries
_0801A0CC:
ldr r0, [sp, 0x14]
@@ -24706,7 +24706,7 @@ _0801A0CC:
_0801A0E2:
str r0, [sp, 0x10]
ldr r2, _0801A118 @ =gBattleMons
- ldr r0, _0801A11C @ =gUnknown_02024C08
+ ldr r0, _0801A11C @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -24731,7 +24731,7 @@ _0801A10C:
mov pc, r0
.align 2, 0
_0801A118: .4byte gBattleMons
-_0801A11C: .4byte gUnknown_02024C08
+_0801A11C: .4byte gEnemyMonIndex
_0801A120: .4byte _0801A124
.align 2, 0
_0801A124:
@@ -24796,7 +24796,7 @@ _0801A198:
ldr r0, _0801A1C4 @ =gUnknown_02024C0B
strb r7, [r0]
ldr r1, _0801A1C8 @ =gUnknown_02024A60
- ldr r0, _0801A1CC @ =gUnknown_02024C07
+ ldr r0, _0801A1CC @ =gPlayerMonIndex
strb r7, [r0]
strb r7, [r1]
ldr r0, _0801A1D0 @ =gUnknown_081D9A5E
@@ -24808,7 +24808,7 @@ _0801A1BC: .4byte 0x02000000
_0801A1C0: .4byte 0x00016003
_0801A1C4: .4byte gUnknown_02024C0B
_0801A1C8: .4byte gUnknown_02024A60
-_0801A1CC: .4byte gUnknown_02024C07
+_0801A1CC: .4byte gPlayerMonIndex
_0801A1D0: .4byte gUnknown_081D9A5E
_0801A1D4:
ldr r1, _0801A1FC @ =gBattleMons
@@ -24895,7 +24895,7 @@ _0801A2C6:
beq _0801A2CE
bl _0801AD5A
_0801A2CE:
- ldr r4, _0801A2F0 @ =gUnknown_02024BEC
+ ldr r4, _0801A2F0 @ =gBattleMoveDamage
mov r5, r9
str r5, [r4]
ldrh r3, [r2, 0x28]
@@ -24913,7 +24913,7 @@ _0801A2E2:
bl b_call_bc_move_exec
b _0801A752
.align 2, 0
-_0801A2F0: .4byte gUnknown_02024BEC
+_0801A2F0: .4byte gBattleMoveDamage
_0801A2F4: .4byte gUnknown_081D9A74
_0801A2F8:
cmp r6, 0
@@ -25076,7 +25076,7 @@ _0801A432:
ldr r0, _0801A45C @ =gUnknown_02024C0B
strb r7, [r0]
ldr r1, _0801A460 @ =gUnknown_02024A60
- ldr r0, _0801A464 @ =gUnknown_02024C07
+ ldr r0, _0801A464 @ =gPlayerMonIndex
strb r7, [r0]
strb r7, [r1]
ldr r0, _0801A468 @ =gUnknown_081D9A5E
@@ -25088,7 +25088,7 @@ _0801A454: .4byte 0x02000000
_0801A458: .4byte 0x00016003
_0801A45C: .4byte gUnknown_02024C0B
_0801A460: .4byte gUnknown_02024A60
-_0801A464: .4byte gUnknown_02024C07
+_0801A464: .4byte gPlayerMonIndex
_0801A468: .4byte gUnknown_081D9A5E
_0801A46C:
movs r0, 0x58
@@ -25105,7 +25105,7 @@ _0801A480:
beq _0801A488
bl _0801AD5A
_0801A488:
- ldr r3, _0801A4C4 @ =gUnknown_02024BEC
+ ldr r3, _0801A4C4 @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
lsrs r0, 4
str r0, [r3]
@@ -25135,7 +25135,7 @@ _0801A4A8:
bl sub_81074F8
bl _0801AD5A
.align 2, 0
-_0801A4C4: .4byte gUnknown_02024BEC
+_0801A4C4: .4byte gBattleMoveDamage
_0801A4C8: .4byte gUnknown_081D9AA1
_0801A4CC:
movs r0, 0x58
@@ -25162,7 +25162,7 @@ _0801A4EC:
strb r6, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
- ldr r5, _0801A544 @ =gUnknown_02024BEC
+ ldr r5, _0801A544 @ =gBattleMoveDamage
ldrh r0, [r4, 0x2C]
mov r1, r9
bl __divsi3
@@ -25200,7 +25200,7 @@ _0801A53E:
b _0801A74C
.align 2, 0
_0801A540: .4byte gUnknown_030041C0
-_0801A544: .4byte gUnknown_02024BEC
+_0801A544: .4byte gBattleMoveDamage
_0801A548:
movs r0, 0x58
adds r1, r7, 0
@@ -25228,7 +25228,7 @@ _0801A56A:
strb r6, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
- ldr r4, _0801A5C0 @ =gUnknown_02024BEC
+ ldr r4, _0801A5C0 @ =gBattleMoveDamage
ldrh r0, [r5, 0x2C]
mov r1, r9
bl __divsi3
@@ -25262,7 +25262,7 @@ _0801A59E:
b _0801A6B8
.align 2, 0
_0801A5BC: .4byte gUnknown_030041C0
-_0801A5C0: .4byte gUnknown_02024BEC
+_0801A5C0: .4byte gBattleMoveDamage
_0801A5C4:
movs r0, 0x58
adds r4, r7, 0
@@ -25290,7 +25290,7 @@ _0801A5E2:
strb r0, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
- ldr r4, _0801A630 @ =gUnknown_02024BEC
+ ldr r4, _0801A630 @ =gBattleMoveDamage
ldrh r0, [r5, 0x2C]
mov r1, r9
bl __divsi3
@@ -25321,7 +25321,7 @@ _0801A618:
b _0801A532
.align 2, 0
_0801A62C: .4byte gUnknown_030041C0
-_0801A630: .4byte gUnknown_02024BEC
+_0801A630: .4byte gBattleMoveDamage
_0801A634:
movs r0, 0x58
adds r1, r7, 0
@@ -25349,7 +25349,7 @@ _0801A652:
strb r0, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
- ldr r4, _0801A6B0 @ =gUnknown_02024BEC
+ ldr r4, _0801A6B0 @ =gBattleMoveDamage
ldrh r0, [r5, 0x2C]
mov r1, r9
bl __divsi3
@@ -25387,7 +25387,7 @@ _0801A6A4:
b _0801A6BE
.align 2, 0
_0801A6AC: .4byte gUnknown_030041C0
-_0801A6B0: .4byte gUnknown_02024BEC
+_0801A6B0: .4byte gBattleMoveDamage
_0801A6B4: .4byte gUnknown_081D9AD4
_0801A6B8:
ldr r0, _0801A6C4 @ =gUnknown_081D9A74
@@ -25425,7 +25425,7 @@ _0801A6E6:
strb r0, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
- ldr r4, _0801A744 @ =gUnknown_02024BEC
+ ldr r4, _0801A744 @ =gBattleMoveDamage
ldrh r0, [r5, 0x2C]
mov r1, r9
bl __divsi3
@@ -25463,7 +25463,7 @@ _0801A738:
b _0801A752
.align 2, 0
_0801A740: .4byte gUnknown_030041C0
-_0801A744: .4byte gUnknown_02024BEC
+_0801A744: .4byte gBattleMoveDamage
_0801A748: .4byte gUnknown_081D9AD4
_0801A74C:
ldr r0, _0801A758 @ =gUnknown_081D9A74
@@ -26236,7 +26236,7 @@ _0801AD62:
ldr r0, _0801ADA0 @ =gUnknown_02024C0B
strb r7, [r0]
ldr r4, _0801ADA4 @ =gUnknown_02024A60
- ldr r0, _0801ADA8 @ =gUnknown_02024C07
+ ldr r0, _0801ADA8 @ =gPlayerMonIndex
strb r7, [r0]
strb r7, [r4]
ldr r3, [sp, 0xC]
@@ -26255,7 +26255,7 @@ _0801AD98: .4byte 0x02000000
_0801AD9C: .4byte 0x00016003
_0801ADA0: .4byte gUnknown_02024C0B
_0801ADA4: .4byte gUnknown_02024A60
-_0801ADA8: .4byte gUnknown_02024C07
+_0801ADA8: .4byte gPlayerMonIndex
_0801ADAC:
movs r0, 0x58
muls r0, r7
@@ -26807,7 +26807,7 @@ _0801B264:
.align 2, 0
_0801B268: .4byte gUnknown_02024A68
_0801B26C:
- ldr r7, _0801B284 @ =gUnknown_02024BEC
+ ldr r7, _0801B284 @ =gBattleMoveDamage
ldr r0, [r7]
cmp r0, 0
bne _0801B276
@@ -26820,9 +26820,9 @@ _0801B276:
beq _0801B330
b _0801B3CA
.align 2, 0
-_0801B284: .4byte gUnknown_02024BEC
+_0801B284: .4byte gBattleMoveDamage
_0801B288:
- ldr r0, _0801B314 @ =gUnknown_02024C68
+ ldr r0, _0801B314 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -26831,7 +26831,7 @@ _0801B288:
b _0801B3CA
_0801B296:
ldr r2, _0801B318 @ =gUnknown_02024D68
- ldr r4, _0801B31C @ =gUnknown_02024C08
+ ldr r4, _0801B31C @ =gEnemyMonIndex
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
@@ -26889,22 +26889,22 @@ _0801B2BC:
bl b_movescr_stack_pop_cursor
b _0801B3CA
.align 2, 0
-_0801B314: .4byte gUnknown_02024C68
+_0801B314: .4byte gBattleMoveFlags
_0801B318: .4byte gUnknown_02024D68
-_0801B31C: .4byte gUnknown_02024C08
+_0801B31C: .4byte gEnemyMonIndex
_0801B320: .4byte gBattleMoves
_0801B324: .4byte gUnknown_02024BE6
_0801B328: .4byte gBattleMons
_0801B32C: .4byte gUnknown_02024D1E
_0801B330:
- ldr r0, _0801B3DC @ =gUnknown_02024C68
+ ldr r0, _0801B3DC @ =gBattleMoveFlags
ldrb r0, [r0]
movs r4, 0x29
ands r4, r0
cmp r4, 0
bne _0801B3CA
ldr r1, _0801B3E0 @ =gUnknown_02024D68
- ldr r5, _0801B3E4 @ =gUnknown_02024C08
+ ldr r5, _0801B3E4 @ =gEnemyMonIndex
ldrb r2, [r5]
lsls r0, r2, 2
adds r0, r2
@@ -26917,7 +26917,7 @@ _0801B330:
ldr r0, _0801B3E8 @ =0x0000ffff
cmp r1, r0
beq _0801B3CA
- ldr r0, _0801B3EC @ =gUnknown_02024C07
+ ldr r0, _0801B3EC @ =gPlayerMonIndex
ldrb r3, [r0]
cmp r3, r2
beq _0801B3CA
@@ -26984,11 +26984,11 @@ _0801B3CA:
pop {r1}
bx r1
.align 2, 0
-_0801B3DC: .4byte gUnknown_02024C68
+_0801B3DC: .4byte gBattleMoveFlags
_0801B3E0: .4byte gUnknown_02024D68
-_0801B3E4: .4byte gUnknown_02024C08
+_0801B3E4: .4byte gEnemyMonIndex
_0801B3E8: .4byte 0x0000ffff
-_0801B3EC: .4byte gUnknown_02024C07
+_0801B3EC: .4byte gPlayerMonIndex
_0801B3F0: .4byte gBattleMons
_0801B3F4: .4byte gUnknown_02024C04
_0801B3F8: .4byte gUnknown_02024C0B
@@ -27322,7 +27322,7 @@ _0801B604:
.4byte _0801B900
.4byte _0801B808
_0801B708:
- ldr r0, _0801B7E8 @ =gUnknown_02024C07
+ ldr r0, _0801B7E8 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
movs r1, 0x1
@@ -27347,7 +27347,7 @@ _0801B708:
beq _0801B73A
b _0801B850
_0801B73A:
- ldr r0, _0801B7E8 @ =gUnknown_02024C07
+ ldr r0, _0801B7E8 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -27363,7 +27363,7 @@ _0801B74A:
bl __modsi3
lsls r0, 24
lsrs r5, r0, 24
- ldr r6, _0801B7E8 @ =gUnknown_02024C07
+ ldr r6, _0801B7E8 @ =gPlayerMonIndex
ldrb r2, [r6]
cmp r5, r2
beq _0801B74A
@@ -27433,7 +27433,7 @@ _0801B7C2:
strb r1, [r0]
b _0801B900
.align 2, 0
-_0801B7E8: .4byte gUnknown_02024C07
+_0801B7E8: .4byte gPlayerMonIndex
_0801B7EC: .4byte gUnknown_02024C80
_0801B7F0: .4byte gBattleMons
_0801B7F4: .4byte gUnknown_02024A68
@@ -27442,7 +27442,7 @@ _0801B7FC: .4byte gBitTable
_0801B800: .4byte gBattleMoves
_0801B804: .4byte gUnknown_02024D68
_0801B808:
- ldr r0, _0801B81C @ =gUnknown_02024C07
+ ldr r0, _0801B81C @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_get_per_side_status
adds r1, r0, 0
@@ -27452,9 +27452,9 @@ _0801B808:
eors r0, r2
b _0801B8B2
.align 2, 0
-_0801B81C: .4byte gUnknown_02024C07
+_0801B81C: .4byte gPlayerMonIndex
_0801B820:
- ldr r0, _0801B854 @ =gUnknown_02024C07
+ ldr r0, _0801B854 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
movs r1, 0x1
@@ -27481,7 +27481,7 @@ _0801B850:
adds r5, r4, 0
b _0801B900
.align 2, 0
-_0801B854: .4byte gUnknown_02024C07
+_0801B854: .4byte gPlayerMonIndex
_0801B858: .4byte gUnknown_02024C80
_0801B85C: .4byte gBattleMons
_0801B860:
@@ -27496,7 +27496,7 @@ _0801B860:
ands r6, r0
cmp r6, 0
beq _0801B8DC
- ldr r0, _0801B898 @ =gUnknown_02024C07
+ ldr r0, _0801B898 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -27511,7 +27511,7 @@ _0801B860:
b _0801B8B2
.align 2, 0
_0801B894: .4byte gBattleTypeFlags
-_0801B898: .4byte gUnknown_02024C07
+_0801B898: .4byte gPlayerMonIndex
_0801B89C:
movs r0, 0x3
b _0801B8B2
@@ -27545,7 +27545,7 @@ _0801B8B2:
_0801B8D4: .4byte gUnknown_02024C0C
_0801B8D8: .4byte gBitTable
_0801B8DC:
- ldr r0, _0801B8F8 @ =gUnknown_02024C07
+ ldr r0, _0801B8F8 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_get_per_side_status
adds r1, r0, 0
@@ -27558,13 +27558,13 @@ _0801B8DC:
lsrs r5, r0, 24
b _0801B900
.align 2, 0
-_0801B8F8: .4byte gUnknown_02024C07
+_0801B8F8: .4byte gPlayerMonIndex
_0801B8FC:
- ldr r0, _0801B91C @ =gUnknown_02024C07
+ ldr r0, _0801B91C @ =gPlayerMonIndex
ldrb r5, [r0]
_0801B900:
ldr r1, _0801B920 @ =0x02000000
- ldr r0, _0801B91C @ =gUnknown_02024C07
+ ldr r0, _0801B91C @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r2, _0801B924 @ =0x00016010
adds r0, r2
@@ -27578,7 +27578,7 @@ _0801B900:
pop {r1}
bx r1
.align 2, 0
-_0801B91C: .4byte gUnknown_02024C07
+_0801B91C: .4byte gPlayerMonIndex
_0801B920: .4byte 0x02000000
_0801B924: .4byte 0x00016010
thumb_func_end sub_801B5C0
@@ -27596,7 +27596,7 @@ sub_801B928: @ 801B928
ands r0, r1
cmp r0, 0
bne _0801B9DA
- ldr r7, _0801B9E4 @ =gUnknown_02024C07
+ ldr r7, _0801B9E4 @ =gPlayerMonIndex
ldrb r0, [r7]
bl battle_side_get_owner
lsls r0, 24
@@ -27675,7 +27675,7 @@ _0801B9DA:
b _0801BC24
.align 2, 0
_0801B9E0: .4byte gBattleTypeFlags
-_0801B9E4: .4byte gUnknown_02024C07
+_0801B9E4: .4byte gPlayerMonIndex
_0801B9E8: .4byte gBattleMons
_0801B9EC: .4byte 0x0000080e
_0801B9F0: .4byte 0x00000808
@@ -27726,7 +27726,7 @@ _0801BA4C:
adds r1, r5, 0
ands r1, r0
ldr r7, _0801BB04 @ =gBattleMons
- ldr r2, _0801BB08 @ =gUnknown_02024C07
+ ldr r2, _0801BB08 @ =gPlayerMonIndex
mov r9, r2
ldrb r3, [r2]
movs r0, 0x58
@@ -27780,7 +27780,7 @@ _0801BA9E:
ldr r0, _0801BB10 @ =gUnknown_02024BE4
ldrb r0, [r0]
lsls r0, 1
- ldr r1, _0801BB08 @ =gUnknown_02024C07
+ ldr r1, _0801BB08 @ =gPlayerMonIndex
ldrb r2, [r1]
movs r1, 0x58
muls r1, r2
@@ -27804,7 +27804,7 @@ _0801BA9E:
ldrh r0, [r4]
movs r1, 0
bl sub_801B5C0
- ldr r1, _0801BB34 @ =gUnknown_02024C08
+ ldr r1, _0801BB34 @ =gEnemyMonIndex
strb r0, [r1]
ldr r2, _0801BB38 @ =gUnknown_02024C6C
ldr r0, [r2]
@@ -27813,7 +27813,7 @@ _0801BA9E:
b _0801BC1E
.align 2, 0
_0801BB04: .4byte gBattleMons
-_0801BB08: .4byte gUnknown_02024C07
+_0801BB08: .4byte gPlayerMonIndex
_0801BB0C: .4byte gBitTable
_0801BB10: .4byte gUnknown_02024BE4
_0801BB14: .4byte gUnknown_02024BE5
@@ -27824,7 +27824,7 @@ _0801BB24: .4byte 0x02000000
_0801BB28: .4byte 0x0001601c
_0801BB2C: .4byte gUnknown_02024C10
_0801BB30: .4byte gUnknown_081D996F
-_0801BB34: .4byte gUnknown_02024C08
+_0801BB34: .4byte gEnemyMonIndex
_0801BB38: .4byte gUnknown_02024C6C
_0801BB3C:
subs r0, r2, r6
@@ -27909,7 +27909,7 @@ _0801BBD4: .4byte gUnknown_02024D1E
_0801BBD8: .4byte gUnknown_02024C10
_0801BBDC: .4byte gUnknown_081D9977
_0801BBE0:
- ldr r4, _0801BC34 @ =gUnknown_02024C07
+ ldr r4, _0801BC34 @ =gPlayerMonIndex
ldrb r1, [r4]
movs r0, 0x58
muls r1, r0
@@ -27927,9 +27927,9 @@ _0801BBE0:
movs r2, 0x1
movs r3, 0
bl CalculateBaseDamage
- ldr r1, _0801BC3C @ =gUnknown_02024BEC
+ ldr r1, _0801BC3C @ =gBattleMoveDamage
str r0, [r1]
- ldr r1, _0801BC40 @ =gUnknown_02024C08
+ ldr r1, _0801BC40 @ =gEnemyMonIndex
ldrb r0, [r4]
strb r0, [r1]
ldr r1, _0801BC44 @ =gUnknown_02024C10
@@ -27952,10 +27952,10 @@ _0801BC24:
pop {r1}
bx r1
.align 2, 0
-_0801BC34: .4byte gUnknown_02024C07
+_0801BC34: .4byte gPlayerMonIndex
_0801BC38: .4byte gBattleMons
-_0801BC3C: .4byte gUnknown_02024BEC
-_0801BC40: .4byte gUnknown_02024C08
+_0801BC3C: .4byte gBattleMoveDamage
+_0801BC40: .4byte gEnemyMonIndex
_0801BC44: .4byte gUnknown_02024C10
_0801BC48: .4byte gUnknown_081D99A0
_0801BC4C: .4byte gUnknown_02024C6C
@@ -27981,7 +27981,7 @@ _0801BC6C: .4byte gUnknown_02024D26
_0801BC70: .4byte gUnknown_02024A7F
_0801BC74:
ldr r2, _0801BCA4 @ =gBattleMons
- ldr r0, _0801BCA8 @ =gUnknown_02024C07
+ ldr r0, _0801BCA8 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -28005,7 +28005,7 @@ _0801BC74:
b _0801BFF2
.align 2, 0
_0801BCA4: .4byte gBattleMons
-_0801BCA8: .4byte gUnknown_02024C07
+_0801BCA8: .4byte gPlayerMonIndex
_0801BCAC: .4byte gUnknown_02024C6C
_0801BCB0: .4byte gUnknown_02024C10
_0801BCB4: .4byte BattleScript_1D6F62
@@ -28017,7 +28017,7 @@ _0801BCB8:
beq _0801BCC6
b _0801BFF4
_0801BCC6:
- ldr r0, _0801BD34 @ =gUnknown_02024C08
+ ldr r0, _0801BD34 @ =gEnemyMonIndex
ldrb r1, [r0]
str r2, [sp]
movs r0, 0x2
@@ -28032,7 +28032,7 @@ _0801BCDE:
ldr r4, _0801BD38 @ =gBattleMons
ldr r0, _0801BD3C @ =gUnknown_02024BE4
ldrb r1, [r0]
- ldr r3, _0801BD40 @ =gUnknown_02024C07
+ ldr r3, _0801BD40 @ =gPlayerMonIndex
ldrb r2, [r3]
movs r0, 0x58
muls r2, r0
@@ -28065,23 +28065,23 @@ _0801BCDE:
ldr r1, _0801BD50 @ =gUnknown_02024C10
ldr r0, _0801BD54 @ =gUnknown_081D936D
str r0, [r1]
- ldr r2, _0801BD58 @ =gUnknown_02024C68
+ ldr r2, _0801BD58 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
b _0801BFF4
.align 2, 0
-_0801BD34: .4byte gUnknown_02024C08
+_0801BD34: .4byte gEnemyMonIndex
_0801BD38: .4byte gBattleMons
_0801BD3C: .4byte gUnknown_02024BE4
-_0801BD40: .4byte gUnknown_02024C07
+_0801BD40: .4byte gPlayerMonIndex
_0801BD44: .4byte gUnknown_02024C6C
_0801BD48: .4byte gUnknown_02024BE6
_0801BD4C: .4byte 0x00800200
_0801BD50: .4byte gUnknown_02024C10
_0801BD54: .4byte gUnknown_081D936D
-_0801BD58: .4byte gUnknown_02024C68
+_0801BD58: .4byte gBattleMoveFlags
_0801BD5C:
ldr r0, [r5]
ldr r1, _0801BDA0 @ =0xff7fffff
@@ -28118,14 +28118,14 @@ _0801BD5C:
.align 2, 0
_0801BDA0: .4byte 0xff7fffff
_0801BDA4:
- ldr r0, _0801BDB0 @ =gUnknown_02024C68
+ ldr r0, _0801BDB0 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
b _0801BFF4
.align 2, 0
-_0801BDB0: .4byte gUnknown_02024C68
+_0801BDB0: .4byte gBattleMoveFlags
_0801BDB4:
ldr r2, _0801BE18 @ =gUnknown_02024C6C
ldr r0, [r2]
@@ -28134,7 +28134,7 @@ _0801BDB4:
orrs r0, r1
str r0, [r2]
ldr r2, _0801BE1C @ =gUnknown_02024D28
- ldr r1, _0801BE20 @ =gUnknown_02024C08
+ ldr r1, _0801BE20 @ =gEnemyMonIndex
ldrb r3, [r1]
lsls r0, r3, 4
adds r0, r2
@@ -28156,7 +28156,7 @@ _0801BDB4:
ands r0, r1
cmp r0, 0
beq _0801BE3C
- ldr r0, _0801BE2C @ =gUnknown_02024C07
+ ldr r0, _0801BE2C @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r2, _0801BE30 @ =0x00000115
adds r1, r3, 0
@@ -28177,10 +28177,10 @@ _0801BDB4:
.align 2, 0
_0801BE18: .4byte gUnknown_02024C6C
_0801BE1C: .4byte gUnknown_02024D28
-_0801BE20: .4byte gUnknown_02024C08
+_0801BE20: .4byte gEnemyMonIndex
_0801BE24: .4byte gBattleMoves
_0801BE28: .4byte gUnknown_02024BE6
-_0801BE2C: .4byte gUnknown_02024C07
+_0801BE2C: .4byte gPlayerMonIndex
_0801BE30: .4byte 0x00000115
_0801BE34: .4byte gUnknown_02024C10
_0801BE38: .4byte gUnknown_081D946F
@@ -28283,7 +28283,7 @@ _0801BEEA:
cmp r3, 0xAE
bne _0801BF28
ldr r2, _0801BF88 @ =gBattleMons
- ldr r0, _0801BF8C @ =gUnknown_02024C07
+ ldr r0, _0801BF8C @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -28305,7 +28305,7 @@ _0801BF28:
cmp r0, 0
beq _0801BF4E
ldr r1, _0801BF88 @ =gBattleMons
- ldr r0, _0801BF8C @ =gUnknown_02024C07
+ ldr r0, _0801BF8C @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -28318,16 +28318,16 @@ _0801BF28:
cmp r0, 0
beq _0801BFEC
_0801BF4E:
- ldr r0, _0801BF8C @ =gUnknown_02024C07
+ ldr r0, _0801BF8C @ =gPlayerMonIndex
ldrb r0, [r0]
bl b_cancel_multi_turn_move_maybe
- ldr r2, _0801BF90 @ =gUnknown_02024C68
+ ldr r2, _0801BF90 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0801BF94 @ =gUnknown_02024C3C
- ldr r3, _0801BF98 @ =gUnknown_02024C08
+ ldr r3, _0801BF98 @ =gEnemyMonIndex
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
@@ -28346,14 +28346,14 @@ _0801BF4E:
_0801BF80: .4byte gBattleMoves
_0801BF84: .4byte gUnknown_02024BE6
_0801BF88: .4byte gBattleMons
-_0801BF8C: .4byte gUnknown_02024C07
-_0801BF90: .4byte gUnknown_02024C68
+_0801BF8C: .4byte gPlayerMonIndex
+_0801BF90: .4byte gBattleMoveFlags
_0801BF94: .4byte gUnknown_02024C3C
-_0801BF98: .4byte gUnknown_02024C08
+_0801BF98: .4byte gEnemyMonIndex
_0801BF9C: .4byte gUnknown_02024C44
_0801BFA0: .4byte gUnknown_02024D1E
_0801BFA4:
- ldr r0, _0801BFD4 @ =gUnknown_02024C07
+ ldr r0, _0801BFD4 @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r2, _0801BFD8 @ =0x00000121
adds r1, r3, 0
@@ -28376,7 +28376,7 @@ _0801BFA4:
ldr r0, _0801BFE8 @ =gUnknown_081D9487
b _0801BFF2
.align 2, 0
-_0801BFD4: .4byte gUnknown_02024C07
+_0801BFD4: .4byte gPlayerMonIndex
_0801BFD8: .4byte 0x00000121
_0801BFDC: .4byte 0x02000000
_0801BFE0: .4byte 0x00016003
@@ -28411,14 +28411,14 @@ mcmd_jump_if_move_not_executed: @ 801C008
ldr r1, _0801C054 @ =gUnknown_02024C10
ldr r5, [r1]
adds r4, r5, r0
- ldr r0, _0801C058 @ =gUnknown_02024C68
+ ldr r0, _0801C058 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0801C068
ldr r1, _0801C05C @ =gUnknown_02024C3C
- ldr r3, _0801C060 @ =gUnknown_02024C08
+ ldr r3, _0801C060 @ =gEnemyMonIndex
ldrb r0, [r3]
lsls r0, 1
adds r0, r1
@@ -28442,13 +28442,13 @@ mcmd_jump_if_move_not_executed: @ 801C008
b _0801C082
.align 2, 0
_0801C054: .4byte gUnknown_02024C10
-_0801C058: .4byte gUnknown_02024C68
+_0801C058: .4byte gBattleMoveFlags
_0801C05C: .4byte gUnknown_02024C3C
-_0801C060: .4byte gUnknown_02024C08
+_0801C060: .4byte gEnemyMonIndex
_0801C064: .4byte gUnknown_02024C44
_0801C068:
bl b_feature_update_destiny_bond
- ldr r0, _0801C090 @ =gUnknown_02024C08
+ ldr r0, _0801C090 @ =gEnemyMonIndex
ldrb r1, [r0]
str r6, [sp]
movs r0, 0x3
@@ -28467,7 +28467,7 @@ _0801C086:
pop {r0}
bx r0
.align 2, 0
-_0801C090: .4byte gUnknown_02024C08
+_0801C090: .4byte gEnemyMonIndex
_0801C094: .4byte gUnknown_02024C10
thumb_func_end mcmd_jump_if_move_not_executed
@@ -28475,7 +28475,7 @@ _0801C094: .4byte gUnknown_02024C10
atk40_801DBA0: @ 801C098
push {lr}
ldr r1, _0801C0E0 @ =gUnknown_02024D28
- ldr r0, _0801C0E4 @ =gUnknown_02024C08
+ ldr r0, _0801C0E4 @ =gEnemyMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -28495,7 +28495,7 @@ atk40_801DBA0: @ 801C098
ands r0, r1
cmp r0, 0
beq _0801C0F8
- ldr r2, _0801C0F0 @ =gUnknown_02024C68
+ ldr r2, _0801C0F0 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -28509,10 +28509,10 @@ atk40_801DBA0: @ 801C098
b _0801C100
.align 2, 0
_0801C0E0: .4byte gUnknown_02024D28
-_0801C0E4: .4byte gUnknown_02024C08
+_0801C0E4: .4byte gEnemyMonIndex
_0801C0E8: .4byte gBattleMoves
_0801C0EC: .4byte gUnknown_02024BE6
-_0801C0F0: .4byte gUnknown_02024C68
+_0801C0F0: .4byte gBattleMoveFlags
_0801C0F4: .4byte gUnknown_02024D1E
_0801C0F8:
ldr r1, _0801C104 @ =gUnknown_02024C10
@@ -28533,7 +28533,7 @@ sub_801C108: @ 801C108
lsrs r3, r0, 16
movs r4, 0
ldr r1, _0801C15C @ =gUnknown_02024D28
- ldr r0, _0801C160 @ =gUnknown_02024C08
+ ldr r0, _0801C160 @ =gEnemyMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -28553,7 +28553,7 @@ sub_801C108: @ 801C108
ands r0, r1
cmp r0, 0
beq _0801C154
- ldr r2, _0801C16C @ =gUnknown_02024C68
+ ldr r2, _0801C16C @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -28572,10 +28572,10 @@ _0801C154:
bx r1
.align 2, 0
_0801C15C: .4byte gUnknown_02024D28
-_0801C160: .4byte gUnknown_02024C08
+_0801C160: .4byte gEnemyMonIndex
_0801C164: .4byte gBattleMoves
_0801C168: .4byte gUnknown_02024BE6
-_0801C16C: .4byte gUnknown_02024C68
+_0801C16C: .4byte gBattleMoveFlags
_0801C170: .4byte gUnknown_02024D1E
thumb_func_end sub_801C108
@@ -28586,7 +28586,7 @@ sub_801C174: @ 801C174
lsls r0, 16
lsrs r5, r0, 16
ldr r2, _0801C1D4 @ =gUnknown_02024C98
- ldr r3, _0801C1D8 @ =gUnknown_02024C08
+ ldr r3, _0801C1D8 @ =gEnemyMonIndex
ldrb r4, [r3]
lsls r0, r4, 2
adds r0, r2
@@ -28601,7 +28601,7 @@ sub_801C174: @ 801C174
subs r0, r4
lsls r0, 2
adds r0, r1
- ldr r1, _0801C1E0 @ =gUnknown_02024C07
+ ldr r1, _0801C1E0 @ =gPlayerMonIndex
ldrb r0, [r0, 0x15]
ldrb r1, [r1]
cmp r0, r1
@@ -28624,7 +28624,7 @@ _0801C1A6:
cmp r0, 0
beq _0801C1EC
_0801C1C6:
- ldr r0, _0801C1E8 @ =gUnknown_02024C68
+ ldr r0, _0801C1E8 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
@@ -28632,11 +28632,11 @@ _0801C1C6:
b _0801C290
.align 2, 0
_0801C1D4: .4byte gUnknown_02024C98
-_0801C1D8: .4byte gUnknown_02024C08
+_0801C1D8: .4byte gEnemyMonIndex
_0801C1DC: .4byte gUnknown_02024CA8
-_0801C1E0: .4byte gUnknown_02024C07
+_0801C1E0: .4byte gPlayerMonIndex
_0801C1E4: .4byte gUnknown_02024C6C
-_0801C1E8: .4byte gUnknown_02024C68
+_0801C1E8: .4byte gBattleMoveFlags
_0801C1EC:
ldr r0, [r2]
ldr r1, _0801C29C @ =0xfffeffff
@@ -28763,7 +28763,7 @@ atk01_accuracycheck: @ 801C2BC
cmp r1, 0x1
bhi _0801C378
ldr r2, _0801C318 @ =gUnknown_02024C98
- ldr r3, _0801C31C @ =gUnknown_02024C08
+ ldr r3, _0801C31C @ =gEnemyMonIndex
ldrb r4, [r3]
lsls r0, r4, 2
adds r0, r2
@@ -28780,7 +28780,7 @@ atk01_accuracycheck: @ 801C2BC
subs r0, r4
lsls r0, 2
adds r0, r1
- ldr r1, _0801C328 @ =gUnknown_02024C07
+ ldr r1, _0801C328 @ =gPlayerMonIndex
ldrb r0, [r0, 0x15]
ldrb r1, [r1]
cmp r0, r1
@@ -28791,10 +28791,10 @@ atk01_accuracycheck: @ 801C2BC
.align 2, 0
_0801C314: .4byte gUnknown_02024C10
_0801C318: .4byte gUnknown_02024C98
-_0801C31C: .4byte gUnknown_02024C08
+_0801C31C: .4byte gEnemyMonIndex
_0801C320: .4byte 0x0000ffff
_0801C324: .4byte gUnknown_02024CA8
-_0801C328: .4byte gUnknown_02024C07
+_0801C328: .4byte gPlayerMonIndex
_0801C32C:
ldrb r0, [r3]
lsls r0, 2
@@ -28880,7 +28880,7 @@ _0801C3C0:
b _0801C632
_0801C3CE:
ldr r3, _0801C3FC @ =gBattleMons
- ldr r0, _0801C400 @ =gUnknown_02024C08
+ ldr r0, _0801C400 @ =gEnemyMonIndex
ldrb r0, [r0]
movs r2, 0x58
adds r4, r0, 0
@@ -28894,7 +28894,7 @@ _0801C3CE:
ands r0, r1
cmp r0, 0
beq _0801C408
- ldr r0, _0801C404 @ =gUnknown_02024C07
+ ldr r0, _0801C404 @ =gPlayerMonIndex
ldrb r0, [r0]
muls r0, r2
adds r0, r3
@@ -28903,10 +28903,10 @@ _0801C3CE:
.align 2, 0
_0801C3F8: .4byte gBattleMoves
_0801C3FC: .4byte gBattleMons
-_0801C400: .4byte gUnknown_02024C08
-_0801C404: .4byte gUnknown_02024C07
+_0801C400: .4byte gEnemyMonIndex
+_0801C404: .4byte gPlayerMonIndex
_0801C408:
- ldr r0, _0801C56C @ =gUnknown_02024C07
+ ldr r0, _0801C56C @ =gPlayerMonIndex
ldrb r0, [r0]
muls r0, r2
adds r0, r3
@@ -28982,7 +28982,7 @@ _0801C482:
lsls r0, 16
lsrs r4, r0, 16
ldr r7, _0801C57C @ =gBattleMons
- ldr r0, _0801C56C @ =gUnknown_02024C07
+ ldr r0, _0801C56C @ =gPlayerMonIndex
ldrb r0, [r0]
movs r5, 0x58
muls r0, r5
@@ -29019,7 +29019,7 @@ _0801C4C0:
lsls r0, 24
cmp r0, 0
bne _0801C518
- ldr r0, _0801C580 @ =gUnknown_02024C08
+ ldr r0, _0801C580 @ =gEnemyMonIndex
ldrb r0, [r0]
muls r0, r5
adds r0, r7
@@ -29042,7 +29042,7 @@ _0801C4C0:
lsrs r4, r0, 16
_0801C518:
ldr r2, _0801C57C @ =gBattleMons
- ldr r0, _0801C56C @ =gUnknown_02024C07
+ ldr r0, _0801C56C @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -29063,7 +29063,7 @@ _0801C518:
lsls r0, 16
lsrs r4, r0, 16
_0801C544:
- ldr r3, _0801C580 @ =gUnknown_02024C08
+ ldr r3, _0801C580 @ =gEnemyMonIndex
mov r8, r3
ldrb r2, [r3]
movs r7, 0x58
@@ -29083,12 +29083,12 @@ _0801C544:
ldrb r2, [r0, 0x1A]
b _0801C5A4
.align 2, 0
-_0801C56C: .4byte gUnknown_02024C07
+_0801C56C: .4byte gPlayerMonIndex
_0801C570: .4byte gBattleMoves
_0801C574: .4byte gBattleWeather
_0801C578: .4byte gAccuracyStageRatios
_0801C57C: .4byte gBattleMons
-_0801C580: .4byte gUnknown_02024C08
+_0801C580: .4byte gEnemyMonIndex
_0801C584: .4byte gEnigmaBerries
_0801C588:
ldrh r0, [r1, 0x2E]
@@ -29105,7 +29105,7 @@ _0801C588:
lsrs r2, r0, 24
_0801C5A4:
ldr r0, _0801C608 @ =gUnknown_02024C0B
- ldr r1, _0801C60C @ =gUnknown_02024C08
+ ldr r1, _0801C60C @ =gEnemyMonIndex
ldrb r1, [r1]
strb r1, [r0]
cmp r5, 0x16
@@ -29128,7 +29128,7 @@ _0801C5C0:
adds r0, 0x1
cmp r0, r4
ble _0801C62A
- ldr r2, _0801C610 @ =gUnknown_02024C68
+ ldr r2, _0801C610 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -29155,8 +29155,8 @@ _0801C602:
b _0801C624
.align 2, 0
_0801C608: .4byte gUnknown_02024C0B
-_0801C60C: .4byte gUnknown_02024C08
-_0801C610: .4byte gUnknown_02024C68
+_0801C60C: .4byte gEnemyMonIndex
+_0801C610: .4byte gBattleMoveFlags
_0801C614: .4byte gBattleTypeFlags
_0801C618: .4byte gBattleMoves
_0801C61C: .4byte gUnknown_02024D1E
@@ -29197,7 +29197,7 @@ atk02_attackstring: @ 801C648
ands r0, r1
cmp r0, 0
bne _0801C674
- ldr r0, _0801C690 @ =gUnknown_02024C07
+ ldr r0, _0801C690 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x4
bl b_std_message
@@ -29220,7 +29220,7 @@ _0801C680:
.align 2, 0
_0801C688: .4byte gUnknown_02024A64
_0801C68C: .4byte gUnknown_02024C6C
-_0801C690: .4byte gUnknown_02024C07
+_0801C690: .4byte gPlayerMonIndex
_0801C694: .4byte gUnknown_02024C10
_0801C698: .4byte gUnknown_02024D1E
thumb_func_end atk02_attackstring
@@ -29241,7 +29241,7 @@ atk03_ppreduce: @ 801C69C
b _0801C84E
_0801C6B4:
ldr r1, _0801C6F0 @ =gUnknown_02024D68
- ldr r2, _0801C6F4 @ =gUnknown_02024C07
+ ldr r2, _0801C6F4 @ =gPlayerMonIndex
ldrb r3, [r2]
lsls r0, r3, 2
adds r0, r3
@@ -29271,7 +29271,7 @@ _0801C6B4:
.align 2, 0
_0801C6EC: .4byte gUnknown_02024A64
_0801C6F0: .4byte gUnknown_02024D68
-_0801C6F4: .4byte gUnknown_02024C07
+_0801C6F4: .4byte gPlayerMonIndex
_0801C6F8: .4byte gBattleMoves
_0801C6FC: .4byte gUnknown_02024BE6
_0801C700:
@@ -29303,7 +29303,7 @@ _0801C71C:
adds r6, r0
b _0801C756
_0801C736:
- ldr r1, _0801C7B8 @ =gUnknown_02024C08
+ ldr r1, _0801C7B8 @ =gEnemyMonIndex
mov r2, r9
ldrb r0, [r2]
ldrb r7, [r1]
@@ -29329,7 +29329,7 @@ _0801C756:
bne _0801C83C
ldr r2, _0801C7BC @ =gBattleMons
ldr r3, _0801C7C4 @ =gUnknown_02024BE4
- ldr r1, _0801C7C8 @ =gUnknown_02024C07
+ ldr r1, _0801C7C8 @ =gPlayerMonIndex
ldrb r5, [r1]
movs r0, 0x58
mov r8, r0
@@ -29370,11 +29370,11 @@ _0801C756:
strb r0, [r2]
b _0801C7D2
.align 2, 0
-_0801C7B8: .4byte gUnknown_02024C08
+_0801C7B8: .4byte gEnemyMonIndex
_0801C7BC: .4byte gBattleMons
_0801C7C0: .4byte gUnknown_02024C6C
_0801C7C4: .4byte gUnknown_02024BE4
-_0801C7C8: .4byte gUnknown_02024C07
+_0801C7C8: .4byte gPlayerMonIndex
_0801C7CC: .4byte gUnknown_02024D28
_0801C7D0:
strb r4, [r2]
@@ -29462,7 +29462,7 @@ _0801C874: .4byte gUnknown_02024C10
atk04_critcalc: @ 801C878
push {r4-r7,lr}
ldr r1, _0801C89C @ =gBattleMons
- ldr r0, _0801C8A0 @ =gUnknown_02024C07
+ ldr r0, _0801C8A0 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -29479,7 +29479,7 @@ atk04_critcalc: @ 801C878
b _0801C8B0
.align 2, 0
_0801C89C: .4byte gBattleMons
-_0801C8A0: .4byte gUnknown_02024C07
+_0801C8A0: .4byte gPlayerMonIndex
_0801C8A4: .4byte gEnigmaBerries
_0801C8A8:
bl ItemId_GetHoldEffect
@@ -29487,7 +29487,7 @@ _0801C8A8:
lsrs r6, r0, 24
_0801C8B0:
ldr r1, _0801C93C @ =gUnknown_02024C0B
- ldr r3, _0801C940 @ =gUnknown_02024C07
+ ldr r3, _0801C940 @ =gPlayerMonIndex
ldrb r0, [r3]
strb r0, [r1]
ldr r4, _0801C944 @ =gBattleMons
@@ -29564,7 +29564,7 @@ _0801C930:
b _0801C952
.align 2, 0
_0801C93C: .4byte gUnknown_02024C0B
-_0801C940: .4byte gUnknown_02024C07
+_0801C940: .4byte gPlayerMonIndex
_0801C944: .4byte gBattleMons
_0801C948: .4byte gBattleMoves
_0801C94C: .4byte gUnknown_02024BE6
@@ -29579,7 +29579,7 @@ _0801C952:
bls _0801C960
movs r5, 0x4
_0801C960:
- ldr r0, _0801C9BC @ =gUnknown_02024C08
+ ldr r0, _0801C9BC @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -29623,7 +29623,7 @@ _0801C960:
movs r0, 0x2
b _0801C9D4
.align 2, 0
-_0801C9BC: .4byte gUnknown_02024C08
+_0801C9BC: .4byte gEnemyMonIndex
_0801C9C0: .4byte gUnknown_02024C98
_0801C9C4: .4byte gBattleTypeFlags
_0801C9C8: .4byte gCriticalHitChance
@@ -29653,7 +29653,7 @@ atk05_damagecalc1: @ 801C9EC
push {r6,r7}
sub sp, 0x10
ldr r4, _0801CABC @ =gUnknown_02024C7A
- ldr r6, _0801CAC0 @ =gUnknown_02024C08
+ ldr r6, _0801CAC0 @ =gEnemyMonIndex
ldrb r0, [r6]
bl battle_get_per_side_status
movs r1, 0x1
@@ -29661,7 +29661,7 @@ atk05_damagecalc1: @ 801C9EC
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
- ldr r0, _0801CAC4 @ =gUnknown_02024C07
+ ldr r0, _0801CAC4 @ =gPlayerMonIndex
mov r8, r0
ldrb r0, [r0]
movs r4, 0x58
@@ -29688,7 +29688,7 @@ atk05_damagecalc1: @ 801C9EC
ldrb r4, [r6]
str r4, [sp, 0xC]
bl CalculateBaseDamage
- ldr r4, _0801CADC @ =gUnknown_02024BEC
+ ldr r4, _0801CADC @ =gBattleMoveDamage
ldr r1, _0801CAE0 @ =gCritMultiplier
ldrb r1, [r1]
muls r1, r0
@@ -29722,7 +29722,7 @@ atk05_damagecalc1: @ 801C9EC
str r0, [r4]
_0801CA82:
ldr r1, _0801CAF0 @ =gUnknown_02024D28
- ldr r0, _0801CAC4 @ =gUnknown_02024C07
+ ldr r0, _0801CAC4 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -29730,7 +29730,7 @@ _0801CA82:
lsls r0, 28
cmp r0, 0
bge _0801CAA4
- ldr r4, _0801CADC @ =gUnknown_02024BEC
+ ldr r4, _0801CADC @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
@@ -29751,14 +29751,14 @@ _0801CAA4:
bx r0
.align 2, 0
_0801CABC: .4byte gUnknown_02024C7A
-_0801CAC0: .4byte gUnknown_02024C08
-_0801CAC4: .4byte gUnknown_02024C07
+_0801CAC0: .4byte gEnemyMonIndex
+_0801CAC4: .4byte gPlayerMonIndex
_0801CAC8: .4byte gBattleMons
_0801CACC: .4byte gUnknown_02024BE6
_0801CAD0: .4byte gUnknown_02024DEC
_0801CAD4: .4byte 0x02000000
_0801CAD8: .4byte 0x0001601c
-_0801CADC: .4byte gUnknown_02024BEC
+_0801CADC: .4byte gBattleMoveDamage
_0801CAE0: .4byte gCritMultiplier
_0801CAE4: .4byte 0x0001601f
_0801CAE8: .4byte gUnknown_02024C98
@@ -29808,7 +29808,7 @@ sub_801CAF8: @ 801CAF8
str r7, [sp, 0x8]
str r5, [sp, 0xC]
bl CalculateBaseDamage
- ldr r4, _0801CBD4 @ =gUnknown_02024BEC
+ ldr r4, _0801CBD4 @ =gBattleMoveDamage
movs r1, 0
mov r2, r8
strh r1, [r2]
@@ -29850,7 +29850,7 @@ _0801CB8E:
lsls r0, 28
cmp r0, 0
bge _0801CBAC
- ldr r4, _0801CBD4 @ =gUnknown_02024BEC
+ ldr r4, _0801CBD4 @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
@@ -29872,7 +29872,7 @@ _0801CBC4: .4byte gUnknown_02024BE6
_0801CBC8: .4byte gUnknown_02024DEC
_0801CBCC: .4byte 0x02000000
_0801CBD0: .4byte 0x0001601c
-_0801CBD4: .4byte gUnknown_02024BEC
+_0801CBD4: .4byte gBattleMoveDamage
_0801CBD8: .4byte gCritMultiplier
_0801CBDC: .4byte 0x0001601f
_0801CBE0: .4byte gUnknown_02024C98
@@ -29885,7 +29885,7 @@ battle_attack_damage_modulate_by_effectivity: @ 801CBEC
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r5, _0801CC1C @ =gUnknown_02024BEC
+ ldr r5, _0801CC1C @ =gBattleMoveDamage
ldr r0, [r5]
muls r0, r4
movs r1, 0xA
@@ -29906,13 +29906,13 @@ _0801CC0C:
beq _0801CC26
b _0801CCBE
.align 2, 0
-_0801CC1C: .4byte gUnknown_02024BEC
+_0801CC1C: .4byte gBattleMoveDamage
_0801CC20:
cmp r4, 0x14
beq _0801CC7C
b _0801CCBE
_0801CC26:
- ldr r2, _0801CC38 @ =gUnknown_02024C68
+ ldr r2, _0801CC38 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x8
orrs r0, r1
@@ -29922,7 +29922,7 @@ _0801CC26:
ands r0, r1
b _0801CCBC
.align 2, 0
-_0801CC38: .4byte gUnknown_02024C68
+_0801CC38: .4byte gBattleMoveFlags
_0801CC3C:
ldr r2, _0801CC6C @ =gBattleMoves
ldr r0, _0801CC70 @ =gUnknown_02024BE6
@@ -29934,7 +29934,7 @@ _0801CC3C:
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _0801CCBE
- ldr r2, _0801CC74 @ =gUnknown_02024C68
+ ldr r2, _0801CC74 @ =gBattleMoveFlags
ldrb r1, [r2]
movs r0, 0x29
ands r0, r1
@@ -29950,7 +29950,7 @@ _0801CC3C:
.align 2, 0
_0801CC6C: .4byte gBattleMoves
_0801CC70: .4byte gUnknown_02024BE6
-_0801CC74: .4byte gUnknown_02024C68
+_0801CC74: .4byte gBattleMoveFlags
_0801CC78:
movs r0, 0x4
b _0801CCBA
@@ -29965,7 +29965,7 @@ _0801CC7C:
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _0801CCBE
- ldr r2, _0801CCB4 @ =gUnknown_02024C68
+ ldr r2, _0801CCB4 @ =gBattleMoveFlags
ldrb r1, [r2]
movs r0, 0x29
ands r0, r1
@@ -29981,7 +29981,7 @@ _0801CC7C:
.align 2, 0
_0801CCAC: .4byte gBattleMoves
_0801CCB0: .4byte gUnknown_02024BE6
-_0801CCB4: .4byte gUnknown_02024C68
+_0801CCB4: .4byte gBattleMoveFlags
_0801CCB8:
movs r0, 0x2
_0801CCBA:
@@ -30034,7 +30034,7 @@ _0801CCFC:
mov r8, r0
_0801CD0C:
ldr r2, _0801CD98 @ =gBattleMons
- ldr r0, _0801CD9C @ =gUnknown_02024C07
+ ldr r0, _0801CD9C @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -30051,7 +30051,7 @@ _0801CD0C:
cmp r0, r8
bne _0801CD44
_0801CD2E:
- ldr r4, _0801CDA0 @ =gUnknown_02024BEC
+ ldr r4, _0801CDA0 @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
@@ -30062,7 +30062,7 @@ _0801CD2E:
str r0, [r4]
ldr r3, [sp, 0x4]
_0801CD44:
- ldr r2, _0801CDA4 @ =gUnknown_02024C08
+ ldr r2, _0801CDA4 @ =gEnemyMonIndex
ldrb r1, [r2]
movs r0, 0x58
muls r0, r1
@@ -30077,7 +30077,7 @@ _0801CD44:
bne _0801CDBC
ldr r3, _0801CDA8 @ =byte_2024C06
strb r0, [r3]
- ldr r2, _0801CDAC @ =gUnknown_02024C68
+ ldr r2, _0801CDAC @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x9
orrs r0, r1
@@ -30103,11 +30103,11 @@ _0801CD44:
.align 2, 0
_0801CD94: .4byte gBattleMoves
_0801CD98: .4byte gBattleMons
-_0801CD9C: .4byte gUnknown_02024C07
-_0801CDA0: .4byte gUnknown_02024BEC
-_0801CDA4: .4byte gUnknown_02024C08
+_0801CD9C: .4byte gPlayerMonIndex
+_0801CDA0: .4byte gBattleMoveDamage
+_0801CDA4: .4byte gEnemyMonIndex
_0801CDA8: .4byte byte_2024C06
-_0801CDAC: .4byte gUnknown_02024C68
+_0801CDAC: .4byte gBattleMoveFlags
_0801CDB0: .4byte gUnknown_02024C3C
_0801CDB4: .4byte gUnknown_02024C44
_0801CDB8: .4byte gUnknown_02024D1E
@@ -30131,7 +30131,7 @@ _0801CDD0:
adds r1, r3, 0x1
adds r1, r5
ldr r2, _0801CF0C @ =gBattleMons
- ldr r7, _0801CF10 @ =gUnknown_02024C08
+ ldr r7, _0801CF10 @ =gEnemyMonIndex
ldrb r0, [r7]
movs r6, 0x58
muls r0, r6
@@ -30171,7 +30171,7 @@ _0801CE06:
_0801CE2C:
adds r3, 0x3
ldr r5, _0801CF0C @ =gBattleMons
- ldr r4, _0801CF10 @ =gUnknown_02024C08
+ ldr r4, _0801CF10 @ =gEnemyMonIndex
ldr r2, _0801CF08 @ =gTypeEffectiveness
_0801CE34:
adds r0, r3, r2
@@ -30195,7 +30195,7 @@ _0801CE38:
beq _0801CDCC
_0801CE58:
ldr r2, _0801CF0C @ =gBattleMons
- ldr r5, _0801CF10 @ =gUnknown_02024C08
+ ldr r5, _0801CF10 @ =gEnemyMonIndex
ldrb r1, [r5]
movs r0, 0x58
muls r0, r1
@@ -30204,7 +30204,7 @@ _0801CE58:
ldrb r6, [r0]
cmp r6, 0x19
bne _0801CED6
- ldr r0, _0801CF14 @ =gUnknown_02024C07
+ ldr r0, _0801CF14 @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r7, _0801CF18 @ =gUnknown_02024BE6
ldrh r1, [r7]
@@ -30213,7 +30213,7 @@ _0801CE58:
lsrs r0, 24
cmp r0, 0x2
bne _0801CED6
- ldr r1, _0801CF1C @ =gUnknown_02024C68
+ ldr r1, _0801CF1C @ =gBattleMoveFlags
mov r8, r1
ldrb r4, [r1]
ands r0, r4
@@ -30257,14 +30257,14 @@ _0801CE94:
ldrb r1, [r3]
bl sub_81074C4
_0801CED6:
- ldr r0, _0801CF1C @ =gUnknown_02024C68
+ ldr r0, _0801CF1C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0801CEF4
ldr r2, _0801CF34 @ =gUnknown_02024D28
- ldr r0, _0801CF14 @ =gUnknown_02024C07
+ ldr r0, _0801CF14 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 4
adds r1, r2
@@ -30286,10 +30286,10 @@ _0801CEF4:
.align 2, 0
_0801CF08: .4byte gTypeEffectiveness
_0801CF0C: .4byte gBattleMons
-_0801CF10: .4byte gUnknown_02024C08
-_0801CF14: .4byte gUnknown_02024C07
+_0801CF10: .4byte gEnemyMonIndex
+_0801CF14: .4byte gPlayerMonIndex
_0801CF18: .4byte gUnknown_02024BE6
-_0801CF1C: .4byte gUnknown_02024C68
+_0801CF1C: .4byte gBattleMoveFlags
_0801CF20: .4byte gBattleMoves
_0801CF24: .4byte byte_2024C06
_0801CF28: .4byte gUnknown_02024C3C
@@ -30346,7 +30346,7 @@ _0801CF90:
mov r12, r1
_0801CF94:
ldr r2, _0801CFC8 @ =gBattleMons
- ldr r3, _0801CFCC @ =gUnknown_02024C08
+ ldr r3, _0801CFCC @ =gEnemyMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -30371,7 +30371,7 @@ _0801CF94:
b _0801D1A4
.align 2, 0
_0801CFC8: .4byte gBattleMons
-_0801CFCC: .4byte gUnknown_02024C08
+_0801CFCC: .4byte gEnemyMonIndex
_0801CFD0: .4byte byte_2024C06
_0801CFD4: .4byte gUnknown_02024D1E
_0801CFD8:
@@ -30407,13 +30407,13 @@ _0801CFF2:
ldrb r0, [r0]
cmp r0, 0
bne _0801D032
- ldr r2, _0801D1B0 @ =gUnknown_02024C68
+ ldr r2, _0801D1B0 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, _0801D1B4 @ =gUnknown_02024D28
- ldr r0, _0801D1B8 @ =gUnknown_02024C07
+ ldr r0, _0801D1B8 @ =gPlayerMonIndex
ldrb r2, [r0]
lsls r2, 4
adds r2, r1
@@ -30443,13 +30443,13 @@ _0801D032:
ldrb r0, [r0]
cmp r0, 0
bne _0801D078
- ldr r2, _0801D1B0 @ =gUnknown_02024C68
+ ldr r2, _0801D1B0 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, _0801D1B4 @ =gUnknown_02024D28
- ldr r0, _0801D1B8 @ =gUnknown_02024C07
+ ldr r0, _0801D1B8 @ =gPlayerMonIndex
ldrb r2, [r0]
lsls r2, 4
adds r2, r1
@@ -30581,7 +30581,7 @@ _0801D14E:
ldrb r4, [r0]
cmp r4, 0x19
bne _0801D1A4
- ldr r0, _0801D1B8 @ =gUnknown_02024C07
+ ldr r0, _0801D1B8 @ =gPlayerMonIndex
ldrb r0, [r0]
mov r2, r9
ldrh r1, [r2]
@@ -30621,9 +30621,9 @@ _0801D1A4:
pop {r0}
bx r0
.align 2, 0
-_0801D1B0: .4byte gUnknown_02024C68
+_0801D1B0: .4byte gBattleMoveFlags
_0801D1B4: .4byte gUnknown_02024D28
-_0801D1B8: .4byte gUnknown_02024C07
+_0801D1B8: .4byte gPlayerMonIndex
_0801D1BC: .4byte gBattleMoves
_0801D1C0: .4byte byte_2024C06
_0801D1C4: .4byte gUnknown_02024D1E
@@ -30637,7 +30637,7 @@ b_attack_effectivity_adapt: @ 801D1C8
lsrs r4, r0, 24
lsls r1, 16
lsrs r5, r1, 16
- ldr r7, _0801D1FC @ =gUnknown_02024BEC
+ ldr r7, _0801D1FC @ =gBattleMoveDamage
ldr r0, [r7]
muls r0, r4
movs r1, 0xA
@@ -30658,7 +30658,7 @@ _0801D1EE:
beq _0801D206
b _0801D27A
.align 2, 0
-_0801D1FC: .4byte gUnknown_02024BEC
+_0801D1FC: .4byte gBattleMoveDamage
_0801D200:
cmp r4, 0x14
beq _0801D248
@@ -30786,7 +30786,7 @@ _0801D2AE:
cmp r0, r1
bne _0801D2F4
_0801D2E2:
- ldr r4, _0801D324 @ =gUnknown_02024BEC
+ ldr r4, _0801D324 @ =gBattleMoveDamage
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
@@ -30817,7 +30817,7 @@ _0801D2F4:
.align 2, 0
_0801D31C: .4byte gBattleMoves
_0801D320: .4byte gBattleMons
-_0801D324: .4byte gUnknown_02024BEC
+_0801D324: .4byte gBattleMoveDamage
_0801D328:
ldr r1, _0801D344 @ =gTypeEffectiveness
adds r0, r7, r1
@@ -30873,7 +30873,7 @@ _0801D388:
ldrb r0, [r0]
cmp r4, r0
bne _0801D3B0
- ldr r0, _0801D454 @ =gUnknown_02024C08
+ ldr r0, _0801D454 @ =gEnemyMonIndex
ldrb r0, [r0]
muls r0, r3
add r0, r8
@@ -30973,7 +30973,7 @@ _0801D43A:
.align 2, 0
_0801D44C: .4byte gTypeEffectiveness
_0801D450: .4byte gBattleMons
-_0801D454: .4byte gUnknown_02024C08
+_0801D454: .4byte gEnemyMonIndex
_0801D458: .4byte gBattleMoves
thumb_func_end move_effectiveness_something
@@ -31055,7 +31055,7 @@ _0801D4D2:
_0801D4EE:
cmp r5, r8
bne _0801D510
- ldr r0, _0801D568 @ =gUnknown_02024C08
+ ldr r0, _0801D568 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -31118,7 +31118,7 @@ _0801D554:
bx r1
.align 2, 0
_0801D564: .4byte gTypeEffectiveness
-_0801D568: .4byte gUnknown_02024C08
+_0801D568: .4byte gEnemyMonIndex
_0801D56C: .4byte gBattleMons
_0801D570: .4byte gBattleMoves
thumb_func_end ai_rate_move
@@ -31135,7 +31135,7 @@ unref_sub_801D574: @ 801D574
subs r1, r0
lsls r1, 16
lsrs r1, 16
- ldr r4, _0801D5AC @ =gUnknown_02024BEC
+ ldr r4, _0801D5AC @ =gBattleMoveDamage
ldr r0, [r4]
cmp r0, 0
beq _0801D5A6
@@ -31153,7 +31153,7 @@ _0801D5A6:
pop {r0}
bx r0
.align 2, 0
-_0801D5AC: .4byte gUnknown_02024BEC
+_0801D5AC: .4byte gBattleMoveDamage
thumb_func_end unref_sub_801D574
thumb_func_start atk07_damagecalc3
@@ -31168,7 +31168,7 @@ atk07_damagecalc3: @ 801D5B0
subs r1, r0
lsls r1, 16
lsrs r1, 16
- ldr r4, _0801D608 @ =gUnknown_02024BEC
+ ldr r4, _0801D608 @ =gBattleMoveDamage
ldr r0, [r4]
cmp r0, 0
beq _0801D5E2
@@ -31183,7 +31183,7 @@ atk07_damagecalc3: @ 801D5B0
str r0, [r4]
_0801D5E2:
ldr r7, _0801D60C @ =gBattleMons
- ldr r6, _0801D610 @ =gUnknown_02024C08
+ ldr r6, _0801D610 @ =gEnemyMonIndex
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
@@ -31201,9 +31201,9 @@ _0801D5E2:
ldrb r6, [r0, 0x1A]
b _0801D632
.align 2, 0
-_0801D608: .4byte gUnknown_02024BEC
+_0801D608: .4byte gBattleMoveDamage
_0801D60C: .4byte gBattleMons
-_0801D610: .4byte gUnknown_02024C08
+_0801D610: .4byte gEnemyMonIndex
_0801D614: .4byte gEnigmaBerries
_0801D618:
ldrh r0, [r1, 0x2E]
@@ -31219,7 +31219,7 @@ _0801D618:
lsrs r6, r0, 24
_0801D632:
ldr r1, _0801D6F4 @ =gUnknown_02024C0B
- ldr r5, _0801D6F8 @ =gUnknown_02024C08
+ ldr r5, _0801D6F8 @ =gEnemyMonIndex
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
@@ -31248,7 +31248,7 @@ _0801D632:
strb r1, [r0]
_0801D670:
ldr r2, _0801D700 @ =gBattleMons
- ldr r3, _0801D6F8 @ =gUnknown_02024C08
+ ldr r3, _0801D6F8 @ =gEnemyMonIndex
ldrb r4, [r3]
movs r0, 0x58
muls r0, r4
@@ -31294,7 +31294,7 @@ _0801D6C2:
muls r0, r4
adds r0, r5
ldrh r1, [r0, 0x28]
- ldr r2, _0801D710 @ =gUnknown_02024BEC
+ ldr r2, _0801D710 @ =gBattleMoveDamage
ldr r0, [r2]
cmp r1, r0
bgt _0801D740
@@ -31308,7 +31308,7 @@ _0801D6C2:
lsls r0, 30
cmp r0, 0
bge _0801D718
- ldr r0, _0801D714 @ =gUnknown_02024C68
+ ldr r0, _0801D714 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
@@ -31316,14 +31316,14 @@ _0801D6C2:
b _0801D740
.align 2, 0
_0801D6F4: .4byte gUnknown_02024C0B
-_0801D6F8: .4byte gUnknown_02024C08
+_0801D6F8: .4byte gEnemyMonIndex
_0801D6FC: .4byte gUnknown_02024D68
_0801D700: .4byte gBattleMons
_0801D704: .4byte gBattleMoves
_0801D708: .4byte gUnknown_02024BE6
_0801D70C: .4byte gUnknown_02024D28
-_0801D710: .4byte gUnknown_02024BEC
-_0801D714: .4byte gUnknown_02024C68
+_0801D710: .4byte gBattleMoveDamage
+_0801D714: .4byte gBattleMoveFlags
_0801D718:
ldr r0, _0801D750 @ =gUnknown_02024D68
lsls r1, r3, 2
@@ -31334,7 +31334,7 @@ _0801D718:
lsrs r0, 7
cmp r0, 0
beq _0801D740
- ldr r2, _0801D754 @ =gUnknown_02024C68
+ ldr r2, _0801D754 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
@@ -31355,7 +31355,7 @@ _0801D740:
bx r0
.align 2, 0
_0801D750: .4byte gUnknown_02024D68
-_0801D754: .4byte gUnknown_02024C68
+_0801D754: .4byte gBattleMoveFlags
_0801D758: .4byte gUnknown_02024C04
_0801D75C: .4byte gUnknown_02024C10
thumb_func_end atk07_damagecalc3
@@ -31372,7 +31372,7 @@ atk08_cmd8: @ 801D760
subs r1, r0
lsls r1, 16
lsrs r1, 16
- ldr r4, _0801D7B8 @ =gUnknown_02024BEC
+ ldr r4, _0801D7B8 @ =gBattleMoveDamage
ldr r0, [r4]
cmp r0, 0
beq _0801D792
@@ -31387,7 +31387,7 @@ atk08_cmd8: @ 801D760
str r0, [r4]
_0801D792:
ldr r7, _0801D7BC @ =gBattleMons
- ldr r6, _0801D7C0 @ =gUnknown_02024C08
+ ldr r6, _0801D7C0 @ =gEnemyMonIndex
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
@@ -31405,9 +31405,9 @@ _0801D792:
ldrb r6, [r0, 0x1A]
b _0801D7E2
.align 2, 0
-_0801D7B8: .4byte gUnknown_02024BEC
+_0801D7B8: .4byte gBattleMoveDamage
_0801D7BC: .4byte gBattleMons
-_0801D7C0: .4byte gUnknown_02024C08
+_0801D7C0: .4byte gEnemyMonIndex
_0801D7C4: .4byte gEnigmaBerries
_0801D7C8:
ldrh r0, [r1, 0x2E]
@@ -31423,7 +31423,7 @@ _0801D7C8:
lsrs r6, r0, 24
_0801D7E2:
ldr r1, _0801D888 @ =gUnknown_02024C0B
- ldr r5, _0801D88C @ =gUnknown_02024C08
+ ldr r5, _0801D88C @ =gEnemyMonIndex
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
@@ -31452,7 +31452,7 @@ _0801D7E2:
strb r1, [r0]
_0801D820:
ldr r4, _0801D894 @ =gBattleMons
- ldr r6, _0801D88C @ =gUnknown_02024C08
+ ldr r6, _0801D88C @ =gEnemyMonIndex
ldrb r2, [r6]
movs r7, 0x58
adds r3, r2, 0
@@ -31485,7 +31485,7 @@ _0801D820:
_0801D85E:
adds r0, r3, r4
ldrh r1, [r0, 0x28]
- ldr r2, _0801D89C @ =gUnknown_02024BEC
+ ldr r2, _0801D89C @ =gBattleMoveDamage
ldr r0, [r2]
cmp r1, r0
bgt _0801D8CC
@@ -31498,7 +31498,7 @@ _0801D85E:
lsls r0, 30
cmp r0, 0
bge _0801D8A4
- ldr r0, _0801D8A0 @ =gUnknown_02024C68
+ ldr r0, _0801D8A0 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
@@ -31506,12 +31506,12 @@ _0801D85E:
b _0801D8CC
.align 2, 0
_0801D888: .4byte gUnknown_02024C0B
-_0801D88C: .4byte gUnknown_02024C08
+_0801D88C: .4byte gEnemyMonIndex
_0801D890: .4byte gUnknown_02024D68
_0801D894: .4byte gBattleMons
_0801D898: .4byte gUnknown_02024D28
-_0801D89C: .4byte gUnknown_02024BEC
-_0801D8A0: .4byte gUnknown_02024C68
+_0801D89C: .4byte gBattleMoveDamage
+_0801D8A0: .4byte gBattleMoveFlags
_0801D8A4:
ldr r0, _0801D8DC @ =gUnknown_02024D68
lsls r1, r3, 2
@@ -31522,7 +31522,7 @@ _0801D8A4:
lsrs r0, 7
cmp r0, 0
beq _0801D8CC
- ldr r2, _0801D8E0 @ =gUnknown_02024C68
+ ldr r2, _0801D8E0 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
@@ -31543,7 +31543,7 @@ _0801D8CC:
bx r0
.align 2, 0
_0801D8DC: .4byte gUnknown_02024D68
-_0801D8E0: .4byte gUnknown_02024C68
+_0801D8E0: .4byte gBattleMoveFlags
_0801D8E4: .4byte gUnknown_02024C04
_0801D8E8: .4byte gUnknown_02024C10
thumb_func_end atk08_cmd8
@@ -31628,14 +31628,14 @@ _0801D986:
cmp r0, 0
bne _0801DA00
_0801D992:
- ldr r0, _0801DA18 @ =gUnknown_02024C68
+ ldr r0, _0801DA18 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801DA3C
ldr r1, _0801DA1C @ =gUnknown_02024A60
- ldr r2, _0801DA20 @ =gUnknown_02024C07
+ ldr r2, _0801DA20 @ =gPlayerMonIndex
mov r9, r2
ldrb r0, [r2]
strb r0, [r1]
@@ -31647,7 +31647,7 @@ _0801D992:
ldrb r2, [r0]
ldr r0, _0801DA28 @ =gBattleMovePower
ldrh r3, [r0]
- ldr r0, _0801DA2C @ =gUnknown_02024BEC
+ ldr r0, _0801DA2C @ =gBattleMoveDamage
ldr r0, [r0]
str r0, [sp]
ldr r5, _0801DA30 @ =gBattleMons
@@ -31691,12 +31691,12 @@ _0801DA00:
_0801DA0C: .4byte gBattleMoves
_0801DA10: .4byte 0x02000000
_0801DA14: .4byte 0x000160a1
-_0801DA18: .4byte gUnknown_02024C68
+_0801DA18: .4byte gBattleMoveFlags
_0801DA1C: .4byte gUnknown_02024A60
-_0801DA20: .4byte gUnknown_02024C07
+_0801DA20: .4byte gPlayerMonIndex
_0801DA24: .4byte 0x00016002
_0801DA28: .4byte gBattleMovePower
-_0801DA2C: .4byte gUnknown_02024BEC
+_0801DA2C: .4byte gBattleMoveDamage
_0801DA30: .4byte gBattleMons
_0801DA34: .4byte gUnknown_02024CA8
_0801DA38: .4byte gUnknown_02024C10
@@ -31746,7 +31746,7 @@ sub_801DA80: @ 801DA80
ldr r0, [r0]
cmp r0, 0
bne _0801DB36
- ldr r0, _0801DAE8 @ =gUnknown_02024C68
+ ldr r0, _0801DAE8 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -31791,14 +31791,14 @@ sub_801DA80: @ 801DA80
b _0801DB2E
.align 2, 0
_0801DAE4: .4byte gUnknown_02024A64
-_0801DAE8: .4byte gUnknown_02024C68
+_0801DAE8: .4byte gBattleMoveFlags
_0801DAEC: .4byte gUnknown_02024C10
_0801DAF0: .4byte gUnknown_02024A60
_0801DAF4: .4byte gBattleMons
_0801DAF8: .4byte gUnknown_02024CA8
_0801DAFC: .4byte gUnknown_02024C6C
_0801DB00:
- ldr r5, _0801DB3C @ =gUnknown_02024BEC
+ ldr r5, _0801DB3C @ =gBattleMoveDamage
ldrh r1, [r5]
movs r0, 0
bl dp01_build_cmdbuf_x18_0_aa_health_bar_update
@@ -31828,7 +31828,7 @@ _0801DB36:
pop {r0}
bx r0
.align 2, 0
-_0801DB3C: .4byte gUnknown_02024BEC
+_0801DB3C: .4byte gBattleMoveDamage
_0801DB40: .4byte gUnknown_02024A60
_0801DB44: .4byte gUnknown_030042E0
_0801DB48: .4byte gUnknown_02024C10
@@ -31871,7 +31871,7 @@ _0801DB80:
adds r0, r2
ldrb r6, [r0, 0x2]
_0801DB90:
- ldr r0, _0801DC24 @ =gUnknown_02024C68
+ ldr r0, _0801DC24 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -31914,7 +31914,7 @@ _0801DB9E:
cmp r3, 0
bne _0801DCB4
adds r5, r1, 0
- ldr r6, _0801DC3C @ =gUnknown_02024BEC
+ ldr r6, _0801DC3C @ =gBattleMoveDamage
ldr r4, [r6]
cmp r5, r4
blt _0801DC48
@@ -31945,13 +31945,13 @@ _0801DC02:
.align 2, 0
_0801DC1C: .4byte gBattleMoves
_0801DC20: .4byte gUnknown_02024BE6
-_0801DC24: .4byte gUnknown_02024C68
+_0801DC24: .4byte gBattleMoveFlags
_0801DC28: .4byte gUnknown_02024C10
_0801DC2C: .4byte gUnknown_02024A60
_0801DC30: .4byte gBattleMons
_0801DC34: .4byte gUnknown_02024CA8
_0801DC38: .4byte gUnknown_02024C6C
-_0801DC3C: .4byte gUnknown_02024BEC
+_0801DC3C: .4byte gBattleMoveDamage
_0801DC40: .4byte gUnknown_02024D68
_0801DC44: .4byte gUnknown_02024BF0
_0801DC48:
@@ -32012,7 +32012,7 @@ _0801DCB4:
ldr r1, _0801DCF8 @ =0xfffffeff
ands r2, r1
str r2, [r0]
- ldr r1, _0801DCFC @ =gUnknown_02024BEC
+ ldr r1, _0801DCFC @ =gBattleMoveDamage
ldr r5, [r1]
mov r12, r0
adds r7, r1, 0
@@ -32043,7 +32043,7 @@ _0801DCF0:
.align 2, 0
_0801DCF4: .4byte gUnknown_02024C6C
_0801DCF8: .4byte 0xfffffeff
-_0801DCFC: .4byte gUnknown_02024BEC
+_0801DCFC: .4byte gBattleMoveDamage
_0801DD00: .4byte gBattleMons
_0801DD04: .4byte gUnknown_02024A60
_0801DD08:
@@ -32078,19 +32078,19 @@ _0801DD24:
ldr r1, _0801DD58 @ =gUnknown_02024C74
ldrb r0, [r5]
adds r0, r1
- ldr r1, _0801DD5C @ =gUnknown_02024C07
+ ldr r1, _0801DD5C @ =gPlayerMonIndex
b _0801DD68
.align 2, 0
_0801DD4C: .4byte gUnknown_02024BF4
_0801DD50: .4byte gUnknown_02024A60
_0801DD54: .4byte gUnknown_02024C10
_0801DD58: .4byte gUnknown_02024C74
-_0801DD5C: .4byte gUnknown_02024C07
+_0801DD5C: .4byte gPlayerMonIndex
_0801DD60:
ldr r1, _0801DD8C @ =gUnknown_02024C74
ldrb r0, [r5]
adds r0, r1
- ldr r1, _0801DD90 @ =gUnknown_02024C08
+ ldr r1, _0801DD90 @ =gEnemyMonIndex
_0801DD68:
ldrb r1, [r1]
strb r1, [r0]
@@ -32112,7 +32112,7 @@ _0801DD6C:
b _0801DDAC
.align 2, 0
_0801DD8C: .4byte gUnknown_02024C74
-_0801DD90: .4byte gUnknown_02024C08
+_0801DD90: .4byte gEnemyMonIndex
_0801DD94: .4byte gBattleMons
_0801DD98: .4byte gUnknown_02024BF0
_0801DD9C:
@@ -32182,7 +32182,7 @@ _0801DDD4:
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
- ldr r2, _0801DE34 @ =gUnknown_02024C07
+ ldr r2, _0801DE34 @ =gPlayerMonIndex
b _0801DE40
.align 2, 0
_0801DE20: .4byte gUnknown_02024BF0
@@ -32190,12 +32190,12 @@ _0801DE24: .4byte gUnknown_02024D68
_0801DE28: .4byte gUnknown_02024BE6
_0801DE2C: .4byte gUnknown_02024D28
_0801DE30: .4byte gUnknown_02024C10
-_0801DE34: .4byte gUnknown_02024C07
+_0801DE34: .4byte gPlayerMonIndex
_0801DE38:
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
- ldr r2, _0801DE54 @ =gUnknown_02024C08
+ ldr r2, _0801DE54 @ =gEnemyMonIndex
_0801DE40:
ldrb r1, [r2]
strb r1, [r0, 0xC]
@@ -32208,7 +32208,7 @@ _0801DE40:
strb r1, [r0, 0x10]
b _0801DEC6
.align 2, 0
-_0801DE54: .4byte gUnknown_02024C08
+_0801DE54: .4byte gEnemyMonIndex
_0801DE58:
cmp r6, 0x8
bls _0801DEC6
@@ -32244,17 +32244,17 @@ _0801DE5C:
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
- ldr r2, _0801DEA8 @ =gUnknown_02024C07
+ ldr r2, _0801DEA8 @ =gPlayerMonIndex
b _0801DEB4
.align 2, 0
_0801DEA0: .4byte gUnknown_02024D28
_0801DEA4: .4byte gUnknown_02024C10
-_0801DEA8: .4byte gUnknown_02024C07
+_0801DEA8: .4byte gPlayerMonIndex
_0801DEAC:
ldrb r0, [r5]
lsls r0, 4
adds r0, r3
- ldr r2, _0801DEF4 @ =gUnknown_02024C08
+ ldr r2, _0801DEF4 @ =gEnemyMonIndex
_0801DEB4:
ldrb r1, [r2]
strb r1, [r0, 0xD]
@@ -32287,7 +32287,7 @@ _0801DEC6:
bl dp01_battle_side_mark_buffer_for_execution
b _0801DF26
.align 2, 0
-_0801DEF4: .4byte gUnknown_02024C08
+_0801DEF4: .4byte gEnemyMonIndex
_0801DEF8: .4byte 0xffefffff
_0801DEFC: .4byte gUnknown_02024AA8
_0801DF00:
@@ -32337,13 +32337,13 @@ atk0D_critmessage: @ 801DF48
ldrb r0, [r0]
cmp r0, 0x2
bne _0801DF76
- ldr r0, _0801DF8C @ =gUnknown_02024C68
+ ldr r0, _0801DF8C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _0801DF76
- ldr r0, _0801DF90 @ =gUnknown_02024C07
+ ldr r0, _0801DF90 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0xD9
bl b_std_message
@@ -32361,8 +32361,8 @@ _0801DF7E:
.align 2, 0
_0801DF84: .4byte gUnknown_02024A64
_0801DF88: .4byte gCritMultiplier
-_0801DF8C: .4byte gUnknown_02024C68
-_0801DF90: .4byte gUnknown_02024C07
+_0801DF8C: .4byte gBattleMoveFlags
+_0801DF90: .4byte gPlayerMonIndex
_0801DF94: .4byte gUnknown_02024D1E
_0801DF98: .4byte gUnknown_02024C10
thumb_func_end atk0D_critmessage
@@ -32375,10 +32375,10 @@ atk0E_missmessage: @ 801DF9C
cmp r0, 0
bne _0801E05C
ldr r4, _0801DFD8 @ =gUnknown_02024A60
- ldr r0, _0801DFDC @ =gUnknown_02024C08
+ ldr r0, _0801DFDC @ =gEnemyMonIndex
ldrb r0, [r0]
strb r0, [r4]
- ldr r1, _0801DFE0 @ =gUnknown_02024C68
+ ldr r1, _0801DFE0 @ =gBattleMoveFlags
ldrb r2, [r1]
movs r0, 0x1
ands r0, r2
@@ -32400,8 +32400,8 @@ atk0E_missmessage: @ 801DF9C
.align 2, 0
_0801DFD4: .4byte gUnknown_02024A64
_0801DFD8: .4byte gUnknown_02024A60
-_0801DFDC: .4byte gUnknown_02024C08
-_0801DFE0: .4byte gUnknown_02024C68
+_0801DFDC: .4byte gEnemyMonIndex
+_0801DFE0: .4byte gBattleMoveFlags
_0801DFE4:
cmp r0, 0x8
beq _0801E054
@@ -32485,7 +32485,7 @@ atk0F_resultmessage: @ 801E06C
beq _0801E07A
b _0801E20C
_0801E07A:
- ldr r1, _0801E0AC @ =gUnknown_02024C68
+ ldr r1, _0801E0AC @ =gBattleMoveFlags
ldrb r2, [r1]
movs r4, 0x1
adds r0, r4, 0
@@ -32511,7 +32511,7 @@ _0801E09A:
b _0801E1F6
.align 2, 0
_0801E0A8: .4byte gUnknown_02024A64
-_0801E0AC: .4byte gUnknown_02024C68
+_0801E0AC: .4byte gBattleMoveFlags
_0801E0B0: .4byte gUnknown_02024D1E
_0801E0B4: .4byte gUnknown_08401508
_0801E0B8:
@@ -32564,7 +32564,7 @@ _0801E100:
_0801E104:
ldr r4, _0801E12C @ =gUnknown_02024C04
ldr r2, _0801E130 @ =gBattleMons
- ldr r3, _0801E134 @ =gUnknown_02024C08
+ ldr r3, _0801E134 @ =gEnemyMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -32584,7 +32584,7 @@ _0801E104:
.align 2, 0
_0801E12C: .4byte gUnknown_02024C04
_0801E130: .4byte gBattleMons
-_0801E134: .4byte gUnknown_02024C08
+_0801E134: .4byte gEnemyMonIndex
_0801E138: .4byte gUnknown_02024C0B
_0801E13C: .4byte gUnknown_02024C10
_0801E140: .4byte gUnknown_081D9AC6
@@ -32639,7 +32639,7 @@ _0801E19C:
beq _0801E1E4
ldr r4, _0801E1CC @ =gUnknown_02024C04
ldr r2, _0801E1D0 @ =gBattleMons
- ldr r3, _0801E1D4 @ =gUnknown_02024C08
+ ldr r3, _0801E1D4 @ =gEnemyMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -32659,7 +32659,7 @@ _0801E19C:
.align 2, 0
_0801E1CC: .4byte gUnknown_02024C04
_0801E1D0: .4byte gBattleMons
-_0801E1D4: .4byte gUnknown_02024C08
+_0801E1D4: .4byte gEnemyMonIndex
_0801E1D8: .4byte gUnknown_02024C0B
_0801E1DC: .4byte gUnknown_02024C10
_0801E1E0: .4byte gUnknown_081D9AC6
@@ -32680,7 +32680,7 @@ _0801E1F6:
beq _0801E204
_0801E1FA:
adds r0, r3, 0
- ldr r1, _0801E214 @ =gUnknown_02024C07
+ ldr r1, _0801E214 @ =gPlayerMonIndex
ldrb r1, [r1]
bl b_std_message
_0801E204:
@@ -32694,7 +32694,7 @@ _0801E20C:
pop {r0}
bx r0
.align 2, 0
-_0801E214: .4byte gUnknown_02024C07
+_0801E214: .4byte gPlayerMonIndex
_0801E218: .4byte gUnknown_02024C10
thumb_func_end atk0F_resultmessage
@@ -32711,7 +32711,7 @@ atk10_printstring: @ 801E21C
ldrb r1, [r1, 0x2]
lsls r1, 8
orrs r0, r1
- ldr r1, _0801E254 @ =gUnknown_02024C07
+ ldr r1, _0801E254 @ =gPlayerMonIndex
ldrb r1, [r1]
bl b_std_message
ldr r0, [r4]
@@ -32727,7 +32727,7 @@ _0801E246:
.align 2, 0
_0801E24C: .4byte gUnknown_02024A64
_0801E250: .4byte gUnknown_02024C10
-_0801E254: .4byte gUnknown_02024C07
+_0801E254: .4byte gPlayerMonIndex
_0801E258: .4byte gUnknown_02024D1E
thumb_func_end atk10_printstring
@@ -32735,7 +32735,7 @@ _0801E258: .4byte gUnknown_02024D1E
atk11_printstring2: @ 801E25C
push {r4,r5,lr}
ldr r5, _0801E290 @ =gUnknown_02024A60
- ldr r0, _0801E294 @ =gUnknown_02024C07
+ ldr r0, _0801E294 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r5]
ldr r4, _0801E298 @ =gUnknown_02024C10
@@ -32759,7 +32759,7 @@ atk11_printstring2: @ 801E25C
bx r0
.align 2, 0
_0801E290: .4byte gUnknown_02024A60
-_0801E294: .4byte gUnknown_02024C07
+_0801E294: .4byte gPlayerMonIndex
_0801E298: .4byte gUnknown_02024C10
_0801E29C: .4byte gUnknown_02024D1E
thumb_func_end atk11_printstring2
@@ -32837,7 +32837,7 @@ atk13_printfromtable: @ 801E2FC
lsls r0, 1
adds r1, r0
ldrh r0, [r1]
- ldr r1, _0801E34C @ =gUnknown_02024C07
+ ldr r1, _0801E34C @ =gPlayerMonIndex
ldrb r1, [r1]
bl b_std_message
ldr r0, [r4]
@@ -32853,7 +32853,7 @@ _0801E33A:
_0801E340: .4byte gUnknown_02024A64
_0801E344: .4byte gUnknown_02024C10
_0801E348: .4byte gUnknown_02024D1E
-_0801E34C: .4byte gUnknown_02024C07
+_0801E34C: .4byte gPlayerMonIndex
thumb_func_end atk13_printfromtable
thumb_func_start atk14_printfromtable2
@@ -32880,7 +32880,7 @@ atk14_printfromtable2: @ 801E350
lsls r0, 1
adds r1, r0
ldr r4, _0801E3AC @ =gUnknown_02024A60
- ldr r0, _0801E3B0 @ =gUnknown_02024C07
+ ldr r0, _0801E3B0 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r4]
ldrh r1, [r1]
@@ -32902,7 +32902,7 @@ _0801E3A0: .4byte gUnknown_02024A64
_0801E3A4: .4byte gUnknown_02024C10
_0801E3A8: .4byte gUnknown_02024D1E
_0801E3AC: .4byte gUnknown_02024A60
-_0801E3B0: .4byte gUnknown_02024C07
+_0801E3B0: .4byte gPlayerMonIndex
thumb_func_end atk14_printfromtable2
thumb_func_start sub_801E3B4
@@ -32963,7 +32963,7 @@ sub_801E3EC: @ 801E3EC
cmp r0, 0
beq _0801E444
ldr r2, _0801E434 @ =gUnknown_02024C0A
- ldr r0, _0801E438 @ =gUnknown_02024C07
+ ldr r0, _0801E438 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r2]
movs r0, 0xBF
@@ -32971,21 +32971,21 @@ sub_801E3EC: @ 801E3EC
strb r0, [r7, 0x3]
movs r6, 0x40
ldr r0, _0801E43C @ =0x02000000
- ldr r1, _0801E440 @ =gUnknown_02024C08
+ ldr r1, _0801E440 @ =gEnemyMonIndex
b _0801E450
.align 2, 0
_0801E430: .4byte gUnknown_02024D1E
_0801E434: .4byte gUnknown_02024C0A
-_0801E438: .4byte gUnknown_02024C07
+_0801E438: .4byte gPlayerMonIndex
_0801E43C: .4byte 0x02000000
-_0801E440: .4byte gUnknown_02024C08
+_0801E440: .4byte gEnemyMonIndex
_0801E444:
ldr r2, _0801E538 @ =gUnknown_02024C0A
- ldr r0, _0801E53C @ =gUnknown_02024C08
+ ldr r0, _0801E53C @ =gEnemyMonIndex
ldrb r0, [r0]
strb r0, [r2]
ldr r0, _0801E540 @ =0x02000000
- ldr r1, _0801E544 @ =gUnknown_02024C07
+ ldr r1, _0801E544 @ =gPlayerMonIndex
_0801E450:
ldrb r1, [r1]
ldr r3, _0801E548 @ =0x00016003
@@ -33107,9 +33107,9 @@ _0801E536:
b _0801EA14
.align 2, 0
_0801E538: .4byte gUnknown_02024C0A
-_0801E53C: .4byte gUnknown_02024C08
+_0801E53C: .4byte gEnemyMonIndex
_0801E540: .4byte 0x02000000
-_0801E544: .4byte gUnknown_02024C07
+_0801E544: .4byte gPlayerMonIndex
_0801E548: .4byte 0x00016003
_0801E54C: .4byte gBattleMons
_0801E550: .4byte gUnknown_02024C6C
@@ -33730,7 +33730,7 @@ _0801EA04:
mov r10, r0
b _0801EA14
_0801EA0A:
- ldr r0, _0801EA58 @ =gUnknown_02024C68
+ ldr r0, _0801EA58 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x8
orrs r1, r2
@@ -33769,7 +33769,7 @@ _0801EA1C:
str r0, [r3]
b _0801EA84
.align 2, 0
-_0801EA58: .4byte gUnknown_02024C68
+_0801EA58: .4byte gBattleMoveFlags
_0801EA5C: .4byte gUnknown_02024C10
_0801EA60: .4byte gUnknown_081FAB5C
_0801EA64: .4byte gUnknown_02024D1E
@@ -34134,7 +34134,7 @@ _0801EDD0: .4byte gUnknown_02024C10
_0801EDD4: .4byte gUnknown_081FAC4C
_0801EDD8: .4byte gUnknown_02024D1E
_0801EDDC:
- ldr r5, _0801EE30 @ =gUnknown_02024C07
+ ldr r5, _0801EE30 @ =gPlayerMonIndex
ldrb r0, [r5]
bl battle_get_per_side_status
movs r1, 0x1
@@ -34174,7 +34174,7 @@ _0801EE14:
ldr r0, [r0]
bl _0801F5F8
.align 2, 0
-_0801EE30: .4byte gUnknown_02024C07
+_0801EE30: .4byte gPlayerMonIndex
_0801EE34: .4byte gUnknown_02024D1A
_0801EE38: .4byte gBattleMons
_0801EE3C: .4byte 0x0000ffff
@@ -34294,7 +34294,7 @@ _0801EEE8:
ldr r3, _0801EF90 @ =0x00016020
adds r0, r3
adds r0, r2
- ldr r1, _0801EF94 @ =gUnknown_02024C07
+ ldr r1, _0801EF94 @ =gPlayerMonIndex
ldrb r1, [r1]
strb r1, [r0]
ldr r4, _0801EF98 @ =gUnknown_02024C10
@@ -34342,13 +34342,13 @@ _0801EF84: .4byte 0x00016004
_0801EF88: .4byte gUnknown_02024BE6
_0801EF8C: .4byte 0x00016005
_0801EF90: .4byte 0x00016020
-_0801EF94: .4byte gUnknown_02024C07
+_0801EF94: .4byte gPlayerMonIndex
_0801EF98: .4byte gUnknown_02024C10
_0801EF9C: .4byte gUnknown_081FAC4C
_0801EFA0: .4byte gUnknown_02024D1E
_0801EFA4: .4byte gUnknown_0840164C
_0801EFA8:
- ldr r1, _0801EFD8 @ =gUnknown_02024BEC
+ ldr r1, _0801EFD8 @ =gBattleMoveDamage
ldr r0, _0801EFDC @ =gUnknown_02024BF0
ldr r0, [r0]
cmp r0, 0
@@ -34374,7 +34374,7 @@ _0801EFC0:
ldr r0, [r0]
b _0801F5F8
.align 2, 0
-_0801EFD8: .4byte gUnknown_02024BEC
+_0801EFD8: .4byte gBattleMoveDamage
_0801EFDC: .4byte gUnknown_02024BF0
_0801EFE0: .4byte gUnknown_02024C10
_0801EFE4: .4byte gUnknown_081FAC4C
@@ -34565,7 +34565,7 @@ _0801F178: .4byte gUnknown_02024CA8
_0801F17C: .4byte gUnknown_02024C54
_0801F180: .4byte gUnknown_02024BE6
_0801F184:
- ldr r0, _0801F1A0 @ =gUnknown_02024C07
+ ldr r0, _0801F1A0 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
adds r2, r1, 0
@@ -34581,9 +34581,9 @@ _0801F19A:
str r0, [r2]
b _0801F5DC
.align 2, 0
-_0801F1A0: .4byte gUnknown_02024C07
+_0801F1A0: .4byte gPlayerMonIndex
_0801F1A4:
- ldr r4, _0801F254 @ =gUnknown_02024C07
+ ldr r4, _0801F254 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -34626,7 +34626,7 @@ _0801F1D8:
ldrb r1, [r0]
ldr r3, _0801F268 @ =gBitTable
ldr r2, _0801F26C @ =gUnknown_02024A6A
- ldr r0, _0801F254 @ =gUnknown_02024C07
+ ldr r0, _0801F254 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 1
adds r0, r2
@@ -34640,7 +34640,7 @@ _0801F1D8:
b _0801F5DC
_0801F214:
ldr r2, _0801F270 @ =gBattleMons
- ldr r1, _0801F274 @ =gUnknown_02024C08
+ ldr r1, _0801F274 @ =gEnemyMonIndex
ldrb r0, [r1]
movs r3, 0x58
muls r0, r3
@@ -34670,7 +34670,7 @@ _0801F214:
bl sub_81074C4
b _0801F5FA
.align 2, 0
-_0801F254: .4byte gUnknown_02024C07
+_0801F254: .4byte gPlayerMonIndex
_0801F258: .4byte gBattleTypeFlags
_0801F25C: .4byte 0x00000902
_0801F260: .4byte gTrainerBattleOpponent
@@ -34678,12 +34678,12 @@ _0801F264: .4byte gUnknown_02024DBC
_0801F268: .4byte gBitTable
_0801F26C: .4byte gUnknown_02024A6A
_0801F270: .4byte gBattleMons
-_0801F274: .4byte gUnknown_02024C08
+_0801F274: .4byte gEnemyMonIndex
_0801F278: .4byte gUnknown_02024C10
_0801F27C: .4byte gUnknown_081D9913
_0801F280: .4byte byte_2024C06
_0801F284:
- ldr r4, _0801F340 @ =gUnknown_02024C07
+ ldr r4, _0801F340 @ =gPlayerMonIndex
mov r10, r4
ldrb r1, [r4]
movs r0, 0x58
@@ -34776,7 +34776,7 @@ _0801F2B6:
strb r6, [r0]
b _0801F5FA
.align 2, 0
-_0801F340: .4byte gUnknown_02024C07
+_0801F340: .4byte gPlayerMonIndex
_0801F344: .4byte 0x020160f0
_0801F348: .4byte gUnknown_02024C04
_0801F34C: .4byte gUnknown_02024A60
@@ -34786,7 +34786,7 @@ _0801F358: .4byte 0xfffe9f10
_0801F35C: .4byte 0x000160e8
_0801F360: .4byte 0x000160e9
_0801F364:
- ldr r3, _0801F394 @ =gUnknown_02024C08
+ ldr r3, _0801F394 @ =gEnemyMonIndex
ldrb r1, [r3]
movs r0, 0x58
adds r2, r1, 0
@@ -34805,16 +34805,16 @@ _0801F364:
subs r0, r1
lsls r0, 2
adds r0, r2
- ldr r1, _0801F39C @ =gUnknown_02024C07
+ ldr r1, _0801F39C @ =gPlayerMonIndex
ldrb r1, [r1]
strb r1, [r0, 0x14]
b _0801F5DC
.align 2, 0
-_0801F394: .4byte gUnknown_02024C08
+_0801F394: .4byte gEnemyMonIndex
_0801F398: .4byte gUnknown_02024CA8
-_0801F39C: .4byte gUnknown_02024C07
+_0801F39C: .4byte gPlayerMonIndex
_0801F3A0:
- ldr r0, _0801F3B8 @ =gUnknown_02024C08
+ ldr r0, _0801F3B8 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
adds r2, r1, 0
@@ -34827,7 +34827,7 @@ _0801F3A0:
lsls r1, 20
b _0801F19A
.align 2, 0
-_0801F3B8: .4byte gUnknown_02024C08
+_0801F3B8: .4byte gEnemyMonIndex
_0801F3BC:
ldr r4, _0801F3CC @ =gUnknown_02024C10
ldr r0, [r4]
@@ -34849,7 +34849,7 @@ _0801F3D4:
_0801F3E4: .4byte gUnknown_02024C10
_0801F3E8: .4byte gUnknown_081D92C0
_0801F3EC:
- ldr r6, _0801F43C @ =gUnknown_02024C08
+ ldr r6, _0801F43C @ =gEnemyMonIndex
ldrb r0, [r6]
movs r2, 0x58
muls r0, r2
@@ -34888,7 +34888,7 @@ _0801F406:
ldr r0, _0801F448 @ =gUnknown_081D9635
b _0801F5F8
.align 2, 0
-_0801F43C: .4byte gUnknown_02024C08
+_0801F43C: .4byte gEnemyMonIndex
_0801F440: .4byte gUnknown_02024A60
_0801F444: .4byte gUnknown_02024C10
_0801F448: .4byte gUnknown_081D9635
@@ -34903,7 +34903,7 @@ _0801F44C:
_0801F45C: .4byte gUnknown_02024C10
_0801F460: .4byte gUnknown_081D93FA
_0801F464:
- ldr r4, _0801F494 @ =gUnknown_02024BEC
+ ldr r4, _0801F494 @ =gBattleMoveDamage
ldr r0, _0801F498 @ =gUnknown_02024BF0
ldr r0, [r0]
movs r1, 0x3
@@ -34926,7 +34926,7 @@ _0801F47A:
ldr r0, [r0]
b _0801F5F8
.align 2, 0
-_0801F494: .4byte gUnknown_02024BEC
+_0801F494: .4byte gBattleMoveDamage
_0801F498: .4byte gUnknown_02024BF0
_0801F49C: .4byte gUnknown_02024C10
_0801F4A0: .4byte gUnknown_081FAC4C
@@ -35107,7 +35107,7 @@ _0801F610: .4byte gUnknown_081D94B0
atk15_seteffectwithchancetarget: @ 801F614
push {r4,lr}
ldr r2, _0801F640 @ =gBattleMons
- ldr r0, _0801F644 @ =gUnknown_02024C07
+ ldr r0, _0801F644 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -35128,7 +35128,7 @@ atk15_seteffectwithchancetarget: @ 801F614
b _0801F660
.align 2, 0
_0801F640: .4byte gBattleMons
-_0801F644: .4byte gUnknown_02024C07
+_0801F644: .4byte gPlayerMonIndex
_0801F648: .4byte gBattleMoves
_0801F64C: .4byte gUnknown_02024BE6
_0801F650:
@@ -35147,7 +35147,7 @@ _0801F660:
ands r0, r2
cmp r0, 0
beq _0801F690
- ldr r0, _0801F68C @ =gUnknown_02024C68
+ ldr r0, _0801F68C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -35161,7 +35161,7 @@ _0801F660:
_0801F680: .4byte gBattleMoves
_0801F684: .4byte gUnknown_02024BE6
_0801F688: .4byte gUnknown_02024D1E
-_0801F68C: .4byte gUnknown_02024C68
+_0801F68C: .4byte gBattleMoveFlags
_0801F690:
bl Random
lsls r0, 16
@@ -35176,7 +35176,7 @@ _0801F690:
ldrb r0, [r0, 0x3]
cmp r0, 0
beq _0801F6DA
- ldr r0, _0801F6CC @ =gUnknown_02024C68
+ ldr r0, _0801F6CC @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -35191,7 +35191,7 @@ _0801F6BE:
b _0801F6E2
.align 2, 0
_0801F6C8: .4byte gUnknown_02024D1E
-_0801F6CC: .4byte gUnknown_02024C68
+_0801F6CC: .4byte gBattleMoveFlags
_0801F6D0:
movs r0, 0
movs r1, 0
@@ -35369,24 +35369,24 @@ _0801F834:
cmp r0, 0x1
bne _0801F85C
ldr r1, _0801F84C @ =gUnknown_02024A60
- ldr r0, _0801F850 @ =gUnknown_02024C07
+ ldr r0, _0801F850 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r1]
- ldr r0, _0801F854 @ =gUnknown_02024C08
+ ldr r0, _0801F854 @ =gEnemyMonIndex
ldrb r7, [r0]
ldr r4, _0801F858 @ =gUnknown_081D8C58
b _0801F86A
.align 2, 0
_0801F84C: .4byte gUnknown_02024A60
-_0801F850: .4byte gUnknown_02024C07
-_0801F854: .4byte gUnknown_02024C08
+_0801F850: .4byte gPlayerMonIndex
+_0801F854: .4byte gEnemyMonIndex
_0801F858: .4byte gUnknown_081D8C58
_0801F85C:
ldr r1, _0801F954 @ =gUnknown_02024A60
- ldr r0, _0801F958 @ =gUnknown_02024C08
+ ldr r0, _0801F958 @ =gEnemyMonIndex
ldrb r0, [r0]
strb r0, [r1]
- ldr r0, _0801F95C @ =gUnknown_02024C07
+ ldr r0, _0801F95C @ =gPlayerMonIndex
ldrb r7, [r0]
ldr r4, _0801F960 @ =gUnknown_081D8C65
_0801F86A:
@@ -35509,8 +35509,8 @@ _0801F914:
b _0801F9CC
.align 2, 0
_0801F954: .4byte gUnknown_02024A60
-_0801F958: .4byte gUnknown_02024C08
-_0801F95C: .4byte gUnknown_02024C07
+_0801F958: .4byte gEnemyMonIndex
+_0801F95C: .4byte gPlayerMonIndex
_0801F960: .4byte gUnknown_081D8C65
_0801F964: .4byte gUnknown_02024C0C
_0801F968: .4byte gBitTable
@@ -35562,7 +35562,7 @@ _0801F9CC:
cmp r0, 0
beq _0801FA02
ldr r6, _0801FAEC @ =gBattleMons
- ldr r0, _0801FAF0 @ =gUnknown_02024C07
+ ldr r0, _0801FAF0 @ =gPlayerMonIndex
ldrb r0, [r0]
movs r5, 0x58
muls r0, r5
@@ -35573,7 +35573,7 @@ _0801F9CC:
ldr r4, _0801FAF4 @ =gUnknown_02024C10
ldr r0, [r4]
bl b_movescr_stack_push
- ldr r1, _0801FAF8 @ =gUnknown_02024BEC
+ ldr r1, _0801FAF8 @ =gBattleMoveDamage
adds r0, r7, 0
muls r0, r5
adds r0, r6
@@ -35583,7 +35583,7 @@ _0801F9CC:
str r0, [r4]
_0801FA02:
ldr r1, _0801FB00 @ =gUnknown_02024C98
- ldr r6, _0801FB04 @ =gUnknown_02024C08
+ ldr r6, _0801FB04 @ =gEnemyMonIndex
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
@@ -35602,7 +35602,7 @@ _0801FA1A:
ands r5, r0
cmp r5, 0
bne _0801FB22
- ldr r4, _0801FAF0 @ =gUnknown_02024C07
+ ldr r4, _0801FAF0 @ =gPlayerMonIndex
mov r8, r4
ldrb r0, [r4]
bl battle_side_get_owner
@@ -35693,12 +35693,12 @@ _0801FAE0: .4byte gUnknown_030042E0
_0801FAE4: .4byte gUnknown_02024A60
_0801FAE8: .4byte gUnknown_02024C6C
_0801FAEC: .4byte gBattleMons
-_0801FAF0: .4byte gUnknown_02024C07
+_0801FAF0: .4byte gPlayerMonIndex
_0801FAF4: .4byte gUnknown_02024C10
-_0801FAF8: .4byte gUnknown_02024BEC
+_0801FAF8: .4byte gBattleMoveDamage
_0801FAFC: .4byte gUnknown_081D9156
_0801FB00: .4byte gUnknown_02024C98
-_0801FB04: .4byte gUnknown_02024C08
+_0801FB04: .4byte gEnemyMonIndex
_0801FB08: .4byte gUnknown_02024BE6
_0801FB0C: .4byte 0x02000000
_0801FB10: .4byte 0x0001608c
@@ -35944,7 +35944,7 @@ atk1E_jumpifability: @ 801FCC4
ldrb r0, [r2, 0x1]
cmp r0, 0x8
bne _0801FD24
- ldr r0, _0801FD1C @ =gUnknown_02024C07
+ ldr r0, _0801FD1C @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
@@ -35966,12 +35966,12 @@ atk1E_jumpifability: @ 801FCC4
b _0801FD80
.align 2, 0
_0801FD18: .4byte gUnknown_02024C10
-_0801FD1C: .4byte gUnknown_02024C07
+_0801FD1C: .4byte gPlayerMonIndex
_0801FD20: .4byte byte_2024C06
_0801FD24:
cmp r0, 0x9
bne _0801FD5C
- ldr r0, _0801FD54 @ =gUnknown_02024C07
+ ldr r0, _0801FD54 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
@@ -35992,7 +35992,7 @@ _0801FD24:
ldrb r1, [r1]
b _0801FD80
.align 2, 0
-_0801FD54: .4byte gUnknown_02024C07
+_0801FD54: .4byte gPlayerMonIndex
_0801FD58: .4byte byte_2024C06
_0801FD5C:
ldrb r0, [r2, 0x1]
@@ -36045,15 +36045,15 @@ sub_801FDB4: @ 801FDB4
ldrb r4, [r0, 0x1]
cmp r4, 0x1
bne _0801FDD4
- ldr r0, _0801FDD0 @ =gUnknown_02024C07
+ ldr r0, _0801FDD0 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_get_per_side_status
b _0801FDDE
.align 2, 0
_0801FDCC: .4byte gUnknown_02024C10
-_0801FDD0: .4byte gUnknown_02024C07
+_0801FDD0: .4byte gPlayerMonIndex
_0801FDD4:
- ldr r0, _0801FE14 @ =gUnknown_02024C08
+ ldr r0, _0801FE14 @ =gEnemyMonIndex
ldrb r0, [r0]
bl battle_get_per_side_status
movs r4, 0x1
@@ -36085,7 +36085,7 @@ _0801FDDE:
str r5, [r6]
b _0801FE26
.align 2, 0
-_0801FE14: .4byte gUnknown_02024C08
+_0801FE14: .4byte gEnemyMonIndex
_0801FE18: .4byte gUnknown_02024C10
_0801FE1C: .4byte gUnknown_02024C7A
_0801FE20:
@@ -36671,7 +36671,7 @@ _080202A0:
_080202C8:
movs r0, 0x5
strb r0, [r1]
- ldr r0, _080202E4 @ =gUnknown_02024BEC
+ ldr r0, _080202E4 @ =gBattleMoveDamage
str r2, [r0]
b _08020996
.align 2, 0
@@ -36679,7 +36679,7 @@ _080202D4: .4byte 0x00016018
_080202D8: .4byte gPlayerParty
_080202DC: .4byte 0x0001605f
_080202E0: .4byte 0x0001600f
-_080202E4: .4byte gUnknown_02024BEC
+_080202E4: .4byte gBattleMoveDamage
_080202E8:
ldr r0, _0802034C @ =gBattleTypeFlags
ldrh r1, [r0]
@@ -36724,7 +36724,7 @@ _08020332:
ands r3, r0
cmp r3, 0
beq _08020370
- ldr r1, _0802036C @ =gUnknown_02024BEC
+ ldr r1, _0802036C @ =gBattleMoveDamage
mov r3, r10
ldrh r0, [r3]
str r0, [r1]
@@ -36739,9 +36739,9 @@ _0802035C: .4byte 0x02000000
_08020360: .4byte 0x00016018
_08020364: .4byte gPlayerParty
_08020368: .4byte 0x0001605f
-_0802036C: .4byte gUnknown_02024BEC
+_0802036C: .4byte gBattleMoveDamage
_08020370:
- ldr r0, _080203EC @ =gUnknown_02024BEC
+ ldr r0, _080203EC @ =gBattleMoveDamage
str r3, [r0]
mov r8, r0
_08020376:
@@ -36771,7 +36771,7 @@ _0802039C:
ands r0, r1
cmp r0, 0
beq _080203B8
- ldr r4, _080203EC @ =gUnknown_02024BEC
+ ldr r4, _080203EC @ =gBattleMoveDamage
ldr r1, [r4]
movs r0, 0x96
muls r0, r1
@@ -36791,7 +36791,7 @@ _080203B8:
lsls r0, 24
cmp r0, 0
beq _08020404
- ldr r4, _080203EC @ =gUnknown_02024BEC
+ ldr r4, _080203EC @ =gBattleMoveDamage
ldr r1, [r4]
movs r0, 0x96
muls r0, r1
@@ -36803,7 +36803,7 @@ _080203B8:
mov r8, r4
b _0802040A
.align 2, 0
-_080203EC: .4byte gUnknown_02024BEC
+_080203EC: .4byte gBattleMoveDamage
_080203F0: .4byte gUnknown_02024DEE
_080203F4: .4byte gBattleTypeFlags
_080203F8: .4byte 0x02000000
@@ -36811,7 +36811,7 @@ _080203FC: .4byte 0x00016018
_08020400: .4byte gPlayerParty
_08020404:
ldr r7, _0802043C @ =0x00000149
- ldr r3, _08020440 @ =gUnknown_02024BEC
+ ldr r3, _08020440 @ =gBattleMoveDamage
mov r8, r3
_0802040A:
ldr r0, _08020444 @ =gBattleTypeFlags
@@ -36841,7 +36841,7 @@ _0802040A:
b _0802047C
.align 2, 0
_0802043C: .4byte 0x00000149
-_08020440: .4byte gUnknown_02024BEC
+_08020440: .4byte gBattleMoveDamage
_08020444: .4byte gBattleTypeFlags
_08020448: .4byte gUnknown_02024A6A
_0802044C: .4byte 0x02000000
@@ -37044,7 +37044,7 @@ _08020566:
ldrb r0, [r2]
strb r0, [r4]
ldrb r1, [r7]
- ldr r0, _08020640 @ =gUnknown_02024BEC
+ ldr r0, _08020640 @ =gBattleMoveDamage
ldrh r2, [r0]
movs r0, 0
bl dp01_build_cmdbuf_x19_a_bb
@@ -37068,7 +37068,7 @@ _08020630: .4byte 0x00016018
_08020634: .4byte gPlayerParty
_08020638: .4byte 0x00017180
_0802063C: .4byte gUnknown_02024A60
-_08020640: .4byte gUnknown_02024BEC
+_08020640: .4byte gBattleMoveDamage
_08020644: .4byte 0x0001600f
_08020648:
ldr r0, _080208AC @ =gUnknown_02024A64
@@ -37171,7 +37171,7 @@ _080206A8:
ldr r1, _080208E0 @ =gUnknown_02024C10
ldr r0, _080208E4 @ =gUnknown_081D8EF3
str r0, [r1]
- ldr r4, _080208E8 @ =gUnknown_02024BEC
+ ldr r4, _080208E8 @ =gBattleMoveDamage
ldr r2, _080208BC @ =gUnknown_02024260
ldrb r1, [r5]
lsls r1, 9
@@ -37376,10 +37376,10 @@ _080208D8: .4byte gUnknown_03004324
_080208DC: .4byte gBitTable
_080208E0: .4byte gUnknown_02024C10
_080208E4: .4byte gUnknown_081D8EF3
-_080208E8: .4byte gUnknown_02024BEC
+_080208E8: .4byte gBattleMoveDamage
_080208EC: .4byte gBattleMons
_080208F0:
- ldr r1, _08020904 @ =gUnknown_02024BEC
+ ldr r1, _08020904 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
_080208F6:
@@ -37390,11 +37390,11 @@ _080208F6:
strb r1, [r0]
b _08020996
.align 2, 0
-_08020904: .4byte gUnknown_02024BEC
+_08020904: .4byte gBattleMoveDamage
_08020908: .4byte 0x02000000
_0802090C: .4byte 0x0001600f
_08020910:
- ldr r0, _08020924 @ =gUnknown_02024BEC
+ ldr r0, _08020924 @ =gBattleMoveDamage
ldr r0, [r0]
cmp r0, 0
beq _08020930
@@ -37405,7 +37405,7 @@ _08020910:
strb r1, [r0]
b _08020996
.align 2, 0
-_08020924: .4byte gUnknown_02024BEC
+_08020924: .4byte gBattleMoveDamage
_08020928: .4byte 0x02000000
_0802092C: .4byte 0x0001600f
_08020930:
@@ -37690,7 +37690,7 @@ _08020B50: .4byte gUnknown_02024C10
thumb_func_start sub_8020B54
sub_8020B54: @ 8020B54
- ldr r1, _08020B80 @ =gUnknown_02024C68
+ ldr r1, _08020B80 @ =gBattleMoveFlags
movs r0, 0
strb r0, [r1]
ldr r0, _08020B84 @ =0x02000000
@@ -37713,7 +37713,7 @@ sub_8020B54: @ 8020B54
str r0, [r2]
bx lr
.align 2, 0
-_08020B80: .4byte gUnknown_02024C68
+_08020B80: .4byte gBattleMoveFlags
_08020B84: .4byte 0x02000000
_08020B88: .4byte 0x0001601f
_08020B8C: .4byte gCritMultiplier
@@ -38667,19 +38667,19 @@ atk3B_8022C68: @ 802122C
cmp r0, 0
bne _0802124C
ldr r0, _08021244 @ =gUnknown_02024A60
- ldr r1, _08021248 @ =gUnknown_02024C08
+ ldr r1, _08021248 @ =gEnemyMonIndex
b _08021250
.align 2, 0
_08021240: .4byte gUnknown_02024C10
_08021244: .4byte gUnknown_02024A60
-_08021248: .4byte gUnknown_02024C08
+_08021248: .4byte gEnemyMonIndex
_0802124C:
ldr r0, _08021274 @ =gUnknown_02024A60
- ldr r1, _08021278 @ =gUnknown_02024C07
+ ldr r1, _08021278 @ =gPlayerMonIndex
_08021250:
ldrb r1, [r1]
strb r1, [r0]
- ldr r0, _0802127C @ =gUnknown_02024BEC
+ ldr r0, _0802127C @ =gBattleMoveDamage
ldrh r1, [r0]
movs r0, 0
bl dp01_build_cmdbuf_x18_0_aa_health_bar_update
@@ -38694,8 +38694,8 @@ _08021250:
bx r0
.align 2, 0
_08021274: .4byte gUnknown_02024A60
-_08021278: .4byte gUnknown_02024C07
-_0802127C: .4byte gUnknown_02024BEC
+_08021278: .4byte gPlayerMonIndex
+_0802127C: .4byte gBattleMoveDamage
_08021280: .4byte gUnknown_02024C10
thumb_func_end atk3B_8022C68
@@ -38709,7 +38709,7 @@ atk3C_return: @ 8021284
thumb_func_start sub_8021290
sub_8021290: @ 8021290
- ldr r0, _080212A4 @ =gUnknown_02024C68
+ ldr r0, _080212A4 @ =gBattleMoveFlags
movs r1, 0
strb r1, [r0]
ldr r0, _080212A8 @ =gUnknown_02024A60
@@ -38719,7 +38719,7 @@ sub_8021290: @ 8021290
strb r0, [r1]
bx lr
.align 2, 0
-_080212A4: .4byte gUnknown_02024C68
+_080212A4: .4byte gBattleMoveFlags
_080212A8: .4byte gUnknown_02024A60
_080212AC: .4byte gUnknown_02024A7F
thumb_func_end sub_8021290
@@ -38884,7 +38884,7 @@ _080213C6:
thumb_func_start sub_80213D0
sub_80213D0: @ 80213D0
ldr r1, _080213E4 @ =0x02000000
- ldr r0, _080213E8 @ =gUnknown_02024C07
+ ldr r0, _080213E8 @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r2, _080213EC @ =0x00016060
adds r0, r2
@@ -38894,7 +38894,7 @@ sub_80213D0: @ 80213D0
bx lr
.align 2, 0
_080213E4: .4byte 0x02000000
-_080213E8: .4byte gUnknown_02024C07
+_080213E8: .4byte gPlayerMonIndex
_080213EC: .4byte 0x00016060
thumb_func_end sub_80213D0
@@ -39446,7 +39446,7 @@ sub_80217F8: @ 80217F8
ldrb r0, [r0, 0x2]
str r0, [sp, 0x14]
ldr r1, _08021838 @ =gBattleMons
- ldr r0, _0802183C @ =gUnknown_02024C07
+ ldr r0, _0802183C @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -39464,7 +39464,7 @@ sub_80217F8: @ 80217F8
.align 2, 0
_08021834: .4byte gUnknown_02024C10
_08021838: .4byte gBattleMons
-_0802183C: .4byte gUnknown_02024C07
+_0802183C: .4byte gPlayerMonIndex
_08021840: .4byte gEnigmaBerries
_08021844:
ldrh r0, [r1, 0x2E]
@@ -39473,7 +39473,7 @@ _08021844:
lsrs r0, 24
_0802184E:
str r0, [sp, 0x8]
- ldr r0, _0802186C @ =gUnknown_02024C07
+ ldr r0, _0802186C @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 1
ldr r0, _08021870 @ =0x020160e8
@@ -39488,7 +39488,7 @@ _0802184E:
str r2, [sp, 0x4]
b _080218D2
.align 2, 0
-_0802186C: .4byte gUnknown_02024C07
+_0802186C: .4byte gPlayerMonIndex
_08021870: .4byte 0x020160e8
_08021874:
strb r2, [r7]
@@ -39582,7 +39582,7 @@ _08021910:
.4byte _0802224E
_08021958:
ldr r5, _08021A08 @ =gBattleMons
- ldr r2, _08021A0C @ =gUnknown_02024C08
+ ldr r2, _08021A0C @ =gEnemyMonIndex
ldrb r4, [r2]
movs r6, 0x58
adds r3, r4, 0
@@ -39600,28 +39600,28 @@ _08021958:
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _080219FE
- ldr r0, _08021A10 @ =gUnknown_02024C07
+ ldr r0, _08021A10 @ =gPlayerMonIndex
ldrb r1, [r0]
cmp r1, r4
beq _080219FE
adds r0, r1, 0
bl battle_side_get_owner
adds r4, r0, 0
- ldr r1, _08021A0C @ =gUnknown_02024C08
+ ldr r1, _08021A0C @ =gEnemyMonIndex
ldrb r0, [r1]
bl battle_side_get_owner
lsls r4, 24
lsls r0, 24
cmp r4, r0
beq _080219FE
- ldr r0, _08021A14 @ =gUnknown_02024C68
+ ldr r0, _08021A14 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _080219FE
ldr r2, _08021A18 @ =gUnknown_02024D28
- ldr r4, _08021A0C @ =gUnknown_02024C08
+ ldr r4, _08021A0C @ =gEnemyMonIndex
ldrb r3, [r4]
lsls r1, r3, 4
adds r0, r2, 0x4
@@ -39669,9 +39669,9 @@ _080219FE:
b _08021E00
.align 2, 0
_08021A08: .4byte gBattleMons
-_08021A0C: .4byte gUnknown_02024C08
-_08021A10: .4byte gUnknown_02024C07
-_08021A14: .4byte gUnknown_02024C68
+_08021A0C: .4byte gEnemyMonIndex
+_08021A10: .4byte gPlayerMonIndex
+_08021A14: .4byte gBattleMoveFlags
_08021A18: .4byte gUnknown_02024D28
_08021A1C: .4byte gBattleMoves
_08021A20: .4byte gUnknown_02024BE6
@@ -39681,7 +39681,7 @@ _08021A2C: .4byte 0x02000000
_08021A30: .4byte 0x0001600c
_08021A34:
ldr r2, _08021AD0 @ =gBattleMons
- ldr r1, _08021AD4 @ =gUnknown_02024C08
+ ldr r1, _08021AD4 @ =gEnemyMonIndex
ldrb r4, [r1]
movs r3, 0x58
mov r12, r3
@@ -39703,7 +39703,7 @@ _08021A54:
bne _08021A5E
b _08021DFA
_08021A5E:
- ldr r0, _08021AD8 @ =gUnknown_02024C07
+ ldr r0, _08021AD8 @ =gPlayerMonIndex
ldrb r0, [r0]
cmp r0, r4
bne _08021A68
@@ -39720,7 +39720,7 @@ _08021A68:
bne _08021A7C
b _08021DFA
_08021A7C:
- ldr r0, _08021AE0 @ =gUnknown_02024C68
+ ldr r0, _08021AE0 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -39738,7 +39738,7 @@ _08021A92:
ands r5, r0
str r5, [r6]
ldr r4, _08021AE4 @ =gUnknown_02024A60
- ldr r5, _08021AD4 @ =gUnknown_02024C08
+ ldr r5, _08021AD4 @ =gEnemyMonIndex
ldrb r0, [r5]
strb r0, [r4]
ldrb r0, [r5]
@@ -39763,15 +39763,15 @@ _08021A92:
b _08021DFA
.align 2, 0
_08021AD0: .4byte gBattleMons
-_08021AD4: .4byte gUnknown_02024C08
-_08021AD8: .4byte gUnknown_02024C07
+_08021AD4: .4byte gEnemyMonIndex
+_08021AD8: .4byte gPlayerMonIndex
_08021ADC: .4byte gUnknown_02024D68
-_08021AE0: .4byte gUnknown_02024C68
+_08021AE0: .4byte gBattleMoveFlags
_08021AE4: .4byte gUnknown_02024A60
_08021AE8: .4byte gUnknown_02024C10
_08021AEC: .4byte gUnknown_081D955D
_08021AF0:
- ldr r0, _08021B14 @ =gUnknown_02024C08
+ ldr r0, _08021B14 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
@@ -39790,11 +39790,11 @@ _08021B0C:
adds r1, r2, r5
b _08021E00
.align 2, 0
-_08021B14: .4byte gUnknown_02024C08
+_08021B14: .4byte gEnemyMonIndex
_08021B18: .4byte 0x02000000
_08021B1C: .4byte 0x0001600c
_08021B20:
- ldr r0, _08021B40 @ =gUnknown_02024C08
+ ldr r0, _08021B40 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
@@ -39811,7 +39811,7 @@ _08021B3A:
mov r10, r0
b _08021DFA
.align 2, 0
-_08021B40: .4byte gUnknown_02024C08
+_08021B40: .4byte gEnemyMonIndex
_08021B44:
movs r0, 0
str r0, [sp]
@@ -39839,7 +39839,7 @@ _08021B68:
_08021B70: .4byte 0x02000000
_08021B74: .4byte 0x0001600c
_08021B78:
- ldr r0, _08021B98 @ =gUnknown_02024C07
+ ldr r0, _08021B98 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
@@ -39856,7 +39856,7 @@ _08021B92:
mov r10, r1
b _08021DFA
.align 2, 0
-_08021B98: .4byte gUnknown_02024C07
+_08021B98: .4byte gPlayerMonIndex
_08021B9C:
ldr r0, _08021C28 @ =gUnknown_02024C6C
ldr r0, [r0]
@@ -39883,7 +39883,7 @@ _08021B9C:
_08021BC8:
cmp r2, 0xE2
bne _08021BDA
- ldr r0, _08021C34 @ =gUnknown_02024C68
+ ldr r0, _08021C34 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
@@ -39897,7 +39897,7 @@ _08021BDA:
_08021BE0:
movs r4, 0
ldr r2, _08021C38 @ =gBattleMons
- ldr r3, _08021C3C @ =gUnknown_02024C07
+ ldr r3, _08021C3C @ =gPlayerMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -39938,9 +39938,9 @@ _08021C22:
_08021C28: .4byte gUnknown_02024C6C
_08021C2C: .4byte gUnknown_02024BE8
_08021C30: .4byte 0x0000ffff
-_08021C34: .4byte gUnknown_02024C68
+_08021C34: .4byte gBattleMoveFlags
_08021C38: .4byte gBattleMons
-_08021C3C: .4byte gUnknown_02024C07
+_08021C3C: .4byte gPlayerMonIndex
_08021C40:
movs r4, 0
ldr r0, _08021C6C @ =gUnknown_02024A68
@@ -40013,7 +40013,7 @@ _08021CC4: .4byte 0x02000000
_08021CC8: .4byte 0x0001600c
_08021CCC:
ldr r1, _08021D04 @ =gUnknown_02024C98
- ldr r0, _08021D08 @ =gUnknown_02024C07
+ ldr r0, _08021D08 @ =gPlayerMonIndex
ldrb r2, [r0]
lsls r0, r2, 2
adds r0, r1
@@ -40042,19 +40042,19 @@ _08021CF0:
b _08021DFA
.align 2, 0
_08021D04: .4byte gUnknown_02024C98
-_08021D08: .4byte gUnknown_02024C07
+_08021D08: .4byte gPlayerMonIndex
_08021D0C: .4byte 0x000400c0
_08021D10: .4byte gUnknown_02024C6C
_08021D14: .4byte gUnknown_02024A60
_08021D18:
- ldr r0, _08021D88 @ =gUnknown_02024C68
+ ldr r0, _08021D88 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
bne _08021D44
ldr r1, _08021D8C @ =gUnknown_02024C98
- ldr r0, _08021D90 @ =gUnknown_02024C07
+ ldr r0, _08021D90 @ =gPlayerMonIndex
ldrb r2, [r0]
lsls r0, r2, 2
adds r0, r1
@@ -40070,7 +40070,7 @@ _08021D18:
beq _08021D7E
_08021D44:
ldr r4, _08021D98 @ =gUnknown_02024A60
- ldr r5, _08021D90 @ =gUnknown_02024C07
+ ldr r5, _08021D90 @ =gPlayerMonIndex
ldrb r0, [r5]
strb r0, [r4]
movs r0, 0
@@ -40102,9 +40102,9 @@ _08021D7E:
adds r1, r2, r4
b _08021E00
.align 2, 0
-_08021D88: .4byte gUnknown_02024C68
+_08021D88: .4byte gBattleMoveFlags
_08021D8C: .4byte gUnknown_02024C98
-_08021D90: .4byte gUnknown_02024C07
+_08021D90: .4byte gPlayerMonIndex
_08021D94: .4byte 0x000400c0
_08021D98: .4byte gUnknown_02024A60
_08021D9C: .4byte 0xfffbff3f
@@ -40113,7 +40113,7 @@ _08021DA4: .4byte 0x02000000
_08021DA8: .4byte 0x0001600c
_08021DAC:
ldr r2, _08021E0C @ =gUnknown_02024D68
- ldr r1, _08021E10 @ =gUnknown_02024C08
+ ldr r1, _08021E10 @ =gEnemyMonIndex
ldrb r3, [r1]
lsls r4, r3, 2
adds r0, r4, r3
@@ -40141,7 +40141,7 @@ _08021DAC:
bl dp01_build_cmdbuf_x33_a_33_33
ldrb r0, [r4]
bl dp01_battle_side_mark_buffer_for_execution
- ldr r0, _08021E10 @ =gUnknown_02024C08
+ ldr r0, _08021E10 @ =gEnemyMonIndex
ldrb r2, [r0]
lsls r2, 2
adds r2, r5
@@ -40161,7 +40161,7 @@ _08021E00:
b _0802224E
.align 2, 0
_08021E0C: .4byte gUnknown_02024D68
-_08021E10: .4byte gUnknown_02024C08
+_08021E10: .4byte gEnemyMonIndex
_08021E14: .4byte gUnknown_02024A68
_08021E18: .4byte gUnknown_02024C98
_08021E1C: .4byte 0x000400c0
@@ -40207,7 +40207,7 @@ _08021E70:
movs r0, 0x80
lsls r0, 5
ands r0, r3
- ldr r2, _08021F30 @ =gUnknown_02024C07
+ ldr r2, _08021F30 @ =gPlayerMonIndex
mov r9, r2
adds r5, r1, 0
cmp r0, 0
@@ -40215,7 +40215,7 @@ _08021E70:
ldr r0, _08021F34 @ =gUnknown_02024A60
ldrb r2, [r2]
strb r2, [r0]
- ldr r1, _08021F38 @ =gUnknown_02024C08
+ ldr r1, _08021F38 @ =gEnemyMonIndex
ldrb r0, [r1]
mov r4, r9
strb r0, [r4]
@@ -40236,7 +40236,7 @@ _08021E9A:
adds r7, r2, 0
cmp r0, 0x7F
bne _08021EBE
- ldr r0, _08021F48 @ =gUnknown_02024C68
+ ldr r0, _08021F48 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -40303,13 +40303,13 @@ _08021F04:
b _08021F82
.align 2, 0
_08021F2C: .4byte gUnknown_02024C6C
-_08021F30: .4byte gUnknown_02024C07
+_08021F30: .4byte gPlayerMonIndex
_08021F34: .4byte gUnknown_02024A60
-_08021F38: .4byte gUnknown_02024C08
+_08021F38: .4byte gEnemyMonIndex
_08021F3C: .4byte 0xffffefff
_08021F40: .4byte gBattleMoves
_08021F44: .4byte gUnknown_02024BE8
-_08021F48: .4byte gUnknown_02024C68
+_08021F48: .4byte gBattleMoveFlags
_08021F4C: .4byte gUnknown_02024C2C
_08021F50: .4byte gUnknown_02024C0C
_08021F54: .4byte gBitTable
@@ -40332,7 +40332,7 @@ _08021F68:
negs r1, r1
strh r1, [r0]
_08021F82:
- ldr r2, _08021FDC @ =gUnknown_02024C08
+ ldr r2, _08021FDC @ =gEnemyMonIndex
ldrb r3, [r2]
lsls r0, r3, 2
adds r0, r6
@@ -40354,7 +40354,7 @@ _08021FA0:
ands r0, r1
cmp r0, 0
beq _0802204C
- ldr r0, _08021FE4 @ =gUnknown_02024C68
+ ldr r0, _08021FE4 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -40365,7 +40365,7 @@ _08021FA0:
cmp r2, r0
bne _08021FEC
ldr r1, _08021FE8 @ =gUnknown_02024C3C
- ldr r4, _08021FDC @ =gUnknown_02024C08
+ ldr r4, _08021FDC @ =gEnemyMonIndex
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -40375,13 +40375,13 @@ _08021FA0:
_08021FD0: .4byte gUnknown_02024C34
_08021FD4: .4byte 0x0000ffff
_08021FD8: .4byte gUnknown_02024C4C
-_08021FDC: .4byte gUnknown_02024C08
+_08021FDC: .4byte gEnemyMonIndex
_08021FE0: .4byte gUnknown_02024C5C
-_08021FE4: .4byte gUnknown_02024C68
+_08021FE4: .4byte gBattleMoveFlags
_08021FE8: .4byte gUnknown_02024C3C
_08021FEC:
ldr r0, _08022014 @ =gUnknown_02024C3C
- ldr r5, _08022018 @ =gUnknown_02024C08
+ ldr r5, _08022018 @ =gEnemyMonIndex
ldrb r1, [r5]
lsls r1, 1
adds r1, r0
@@ -40402,13 +40402,13 @@ _08021FEC:
b _08021C22
.align 2, 0
_08022014: .4byte gUnknown_02024C3C
-_08022018: .4byte gUnknown_02024C08
+_08022018: .4byte gEnemyMonIndex
_0802201C: .4byte gUnknown_02024BE6
_08022020: .4byte 0x0001601c
_08022024: .4byte gUnknown_02024C44
_08022028:
ldr r0, _08022044 @ =gUnknown_02024C44
- ldr r1, _08022048 @ =gUnknown_02024C08
+ ldr r1, _08022048 @ =gEnemyMonIndex
ldrb r2, [r1]
lsls r2, 1
adds r2, r0
@@ -40422,10 +40422,10 @@ _08022028:
b _08022244
.align 2, 0
_08022044: .4byte gUnknown_02024C44
-_08022048: .4byte gUnknown_02024C08
+_08022048: .4byte gEnemyMonIndex
_0802204C:
ldr r0, _0802205C @ =gUnknown_02024C3C
- ldr r2, _08022060 @ =gUnknown_02024C08
+ ldr r2, _08022060 @ =gEnemyMonIndex
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
@@ -40433,13 +40433,13 @@ _0802204C:
b _08021C22
.align 2, 0
_0802205C: .4byte gUnknown_02024C3C
-_08022060: .4byte gUnknown_02024C08
+_08022060: .4byte gEnemyMonIndex
_08022064: .4byte 0x0000ffff
_08022068:
ldr r0, _0802212C @ =gUnknown_02024C0C
ldrb r1, [r0]
ldr r6, _08022130 @ =gBitTable
- ldr r2, _08022134 @ =gUnknown_02024C07
+ ldr r2, _08022134 @ =gPlayerMonIndex
ldrb r5, [r2]
lsls r0, r5, 2
adds r0, r6
@@ -40477,7 +40477,7 @@ _08022090:
ands r0, r1
cmp r0, 0
beq _0802215C
- ldr r2, _08022148 @ =gUnknown_02024C08
+ ldr r2, _08022148 @ =gEnemyMonIndex
ldrb r0, [r2]
cmp r5, r0
bne _080220C0
@@ -40491,7 +40491,7 @@ _080220C0:
ands r1, r0
cmp r1, 0
bne _0802215C
- ldr r0, _0802214C @ =gUnknown_02024C68
+ ldr r0, _0802214C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -40502,7 +40502,7 @@ _080220C0:
adds r0, r5
add r0, r12
strb r3, [r0]
- ldr r0, _08022148 @ =gUnknown_02024C08
+ ldr r0, _08022148 @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r1, 1
ldr r2, _08022154 @ =0x000160ad
@@ -40511,7 +40511,7 @@ _080220C0:
ldrh r0, [r4]
lsrs r0, 8
strb r0, [r1]
- ldr r3, _08022148 @ =gUnknown_02024C08
+ ldr r3, _08022148 @ =gEnemyMonIndex
ldrb r2, [r3]
lsls r2, 2
mov r5, r9
@@ -40540,24 +40540,24 @@ _080220C0:
.align 2, 0
_0802212C: .4byte gUnknown_02024C0C
_08022130: .4byte gBitTable
-_08022134: .4byte gUnknown_02024C07
+_08022134: .4byte gPlayerMonIndex
_08022138: .4byte 0x000160a6
_0802213C: .4byte gBattleMoves
_08022140: .4byte gUnknown_02024BE8
_08022144: .4byte gUnknown_02024C6C
-_08022148: .4byte gUnknown_02024C08
-_0802214C: .4byte gUnknown_02024C68
+_08022148: .4byte gEnemyMonIndex
+_0802214C: .4byte gBattleMoveFlags
_08022150: .4byte 0x000160ac
_08022154: .4byte 0x000160ad
_08022158: .4byte 0x00016100
_0802215C:
mov r1, r9
ldrb r0, [r1]
- ldr r2, _080221B4 @ =gUnknown_02024C08
+ ldr r2, _080221B4 @ =gEnemyMonIndex
ldrb r2, [r2]
cmp r0, r2
beq _08022244
- ldr r3, _080221B4 @ =gUnknown_02024C08
+ ldr r3, _080221B4 @ =gEnemyMonIndex
ldrb r0, [r3]
lsls r0, 1
ldr r4, _080221B8 @ =0x000160ac
@@ -40565,7 +40565,7 @@ _0802215C:
add r0, r12
movs r3, 0
strb r3, [r0]
- ldr r5, _080221B4 @ =gUnknown_02024C08
+ ldr r5, _080221B4 @ =gEnemyMonIndex
ldrb r0, [r5]
lsls r0, 1
ldr r1, _080221BC @ =0x000160ad
@@ -40595,7 +40595,7 @@ _0802215C:
strb r3, [r2]
b _08022244
.align 2, 0
-_080221B4: .4byte gUnknown_02024C08
+_080221B4: .4byte gEnemyMonIndex
_080221B8: .4byte 0x000160ac
_080221BC: .4byte 0x000160ad
_080221C0:
@@ -40613,7 +40613,7 @@ _080221C0:
cmp r0, 0
beq _08022244
ldr r1, _080222B8 @ =gUnknown_02024D28
- ldr r0, _080222BC @ =gUnknown_02024C07
+ ldr r0, _080222BC @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -40639,7 +40639,7 @@ _080221C0:
ands r4, r2
cmp r4, 0
bne _08022244
- ldr r7, _080222C8 @ =gUnknown_02024C08
+ ldr r7, _080222C8 @ =gEnemyMonIndex
ldrb r0, [r7]
bl battle_get_per_side_status
movs r1, 0x2
@@ -40726,10 +40726,10 @@ _0802229E:
_080222B0: .4byte gUnknown_02024C6C
_080222B4: .4byte gBattleTypeFlags
_080222B8: .4byte gUnknown_02024D28
-_080222BC: .4byte gUnknown_02024C07
+_080222BC: .4byte gPlayerMonIndex
_080222C0: .4byte gBattleMoves
_080222C4: .4byte gUnknown_02024BE6
-_080222C8: .4byte gUnknown_02024C08
+_080222C8: .4byte gEnemyMonIndex
_080222CC: .4byte gBattleMons
_080222D0: .4byte 0x02000000
_080222D4: .4byte 0x0001600c
@@ -40753,7 +40753,7 @@ atk4A_damageflags: @ 80222DC
ldrb r0, [r0, 0x2]
mov r8, r0
ldr r2, _08022348 @ =gBattleMons
- ldr r3, _0802234C @ =gUnknown_02024C08
+ ldr r3, _0802234C @ =gEnemyMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -40769,7 +40769,7 @@ atk4A_damageflags: @ 80222DC
bne _08022370
ldr r3, _08022350 @ =byte_2024C06
strb r0, [r3]
- ldr r2, _08022354 @ =gUnknown_02024C68
+ ldr r2, _08022354 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x9
orrs r0, r1
@@ -40790,20 +40790,20 @@ atk4A_damageflags: @ 80222DC
_08022340: .4byte gBattleMoves
_08022344: .4byte gUnknown_02024BE6
_08022348: .4byte gBattleMons
-_0802234C: .4byte gUnknown_02024C08
+_0802234C: .4byte gEnemyMonIndex
_08022350: .4byte byte_2024C06
-_08022354: .4byte gUnknown_02024C68
+_08022354: .4byte gBattleMoveFlags
_08022358: .4byte gUnknown_02024C3C
_0802235C: .4byte gUnknown_02024D1E
_08022360:
- ldr r0, _0802236C @ =gUnknown_02024C68
+ ldr r0, _0802236C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x8
orrs r1, r2
strb r1, [r0]
b _08022452
.align 2, 0
-_0802236C: .4byte gUnknown_02024C68
+_0802236C: .4byte gBattleMoveFlags
_08022370:
ldr r1, _0802237C @ =gTypeEffectiveness
adds r0, r5, r1
@@ -40926,7 +40926,7 @@ _08022432:
beq _0802242C
_08022452:
ldr r2, _08022500 @ =gBattleMons
- ldr r0, _08022504 @ =gUnknown_02024C08
+ ldr r0, _08022504 @ =gEnemyMonIndex
mov r8, r0
ldrb r1, [r0]
movs r0, 0x58
@@ -40940,7 +40940,7 @@ _08022452:
ands r5, r4
cmp r5, 0
bne _080224CE
- ldr r0, _08022508 @ =gUnknown_02024C07
+ ldr r0, _08022508 @ =gPlayerMonIndex
ldrb r0, [r0]
ldr r7, _0802250C @ =gUnknown_02024BE6
ldrh r1, [r7]
@@ -40969,7 +40969,7 @@ _08022494:
beq _080224CE
ldr r3, _08022514 @ =byte_2024C06
strb r6, [r3]
- ldr r2, _08022518 @ =gUnknown_02024C68
+ ldr r2, _08022518 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -40987,14 +40987,14 @@ _08022494:
ldrb r1, [r3]
bl sub_81074C4
_080224CE:
- ldr r0, _08022518 @ =gUnknown_02024C68
+ ldr r0, _08022518 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080224EC
ldr r2, _08022524 @ =gUnknown_02024D28
- ldr r0, _08022508 @ =gUnknown_02024C07
+ ldr r0, _08022508 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 4
adds r1, r2
@@ -41014,12 +41014,12 @@ _080224EC:
bx r0
.align 2, 0
_08022500: .4byte gBattleMons
-_08022504: .4byte gUnknown_02024C08
-_08022508: .4byte gUnknown_02024C07
+_08022504: .4byte gEnemyMonIndex
+_08022508: .4byte gPlayerMonIndex
_0802250C: .4byte gUnknown_02024BE6
_08022510: .4byte gBattleMoves
_08022514: .4byte byte_2024C06
-_08022518: .4byte gUnknown_02024C68
+_08022518: .4byte gBattleMoveFlags
_0802251C: .4byte gUnknown_02024C3C
_08022520: .4byte gUnknown_02024D1E
_08022524: .4byte gUnknown_02024D28
@@ -41030,7 +41030,7 @@ _08022528: .4byte gUnknown_02024C10
atk4B_cmd4b: @ 802252C
push {r4,lr}
ldr r4, _08022568 @ =gUnknown_02024A60
- ldr r0, _0802256C @ =gUnknown_02024C07
+ ldr r0, _0802256C @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r4]
ldr r2, _08022570 @ =gUnknown_02024C6C
@@ -41059,7 +41059,7 @@ _0802255A:
bx r0
.align 2, 0
_08022568: .4byte gUnknown_02024A60
-_0802256C: .4byte gUnknown_02024C07
+_0802256C: .4byte gPlayerMonIndex
_08022570: .4byte gUnknown_02024C6C
_08022574: .4byte gBitTable
_08022578: .4byte gUnknown_02024C10
@@ -42909,7 +42909,7 @@ _080234AA:
movs r0, 0x6
strb r0, [r1, 0x1]
ldr r4, _0802350C @ =gBattleMons
- ldr r3, _08023510 @ =gUnknown_02024C07
+ ldr r3, _08023510 @ =gPlayerMonIndex
ldrb r0, [r3]
movs r2, 0x58
muls r0, r2
@@ -42955,7 +42955,7 @@ _080234FE:
.align 2, 0
_08023508: .4byte gUnknown_030041C0
_0802350C: .4byte gBattleMons
-_08023510: .4byte gUnknown_02024C07
+_08023510: .4byte gPlayerMonIndex
_08023514: .4byte gUnknown_03004290
_08023518: .4byte gUnknown_02024A60
_0802351C: .4byte gUnknown_02024260
@@ -43066,7 +43066,7 @@ sub_8023524: @ 8023524
subs r1, r0
lsls r1, 25
lsrs r1, 24
- ldr r5, _08023650 @ =gUnknown_02024BEC
+ ldr r5, _08023650 @ =gBattleMoveDamage
ldrb r0, [r4]
muls r0, r7
add r0, r9
@@ -43100,7 +43100,7 @@ _08023640: .4byte gUnknown_02024D68
_08023644: .4byte gUnknown_02024C7A
_08023648: .4byte gBattleMons
_0802364C: .4byte gUnknown_02024C80
-_08023650: .4byte gUnknown_02024BEC
+_08023650: .4byte gBattleMoveDamage
_08023654: .4byte 0x02000000
_08023658: .4byte 0x00016003
_0802365C: .4byte gUnknown_081D919F
@@ -43321,7 +43321,7 @@ _08023808: .4byte gUnknown_02024C10
atk54_802511C: @ 802380C
push {r4,r5,lr}
ldr r5, _0802383C @ =gUnknown_02024A60
- ldr r0, _08023840 @ =gUnknown_02024C07
+ ldr r0, _08023840 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r5]
ldr r4, _08023844 @ =gUnknown_02024C10
@@ -43342,7 +43342,7 @@ atk54_802511C: @ 802380C
bx r0
.align 2, 0
_0802383C: .4byte gUnknown_02024A60
-_08023840: .4byte gUnknown_02024C07
+_08023840: .4byte gPlayerMonIndex
_08023844: .4byte gUnknown_02024C10
thumb_func_end atk54_802511C
@@ -43350,7 +43350,7 @@ _08023844: .4byte gUnknown_02024C10
sub_8023848: @ 8023848
push {r4,r5,lr}
ldr r5, _08023878 @ =gUnknown_02024A60
- ldr r0, _0802387C @ =gUnknown_02024C07
+ ldr r0, _0802387C @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r5]
ldr r4, _08023880 @ =gUnknown_02024C10
@@ -43371,7 +43371,7 @@ sub_8023848: @ 8023848
bx r0
.align 2, 0
_08023878: .4byte gUnknown_02024A60
-_0802387C: .4byte gUnknown_02024C07
+_0802387C: .4byte gPlayerMonIndex
_08023880: .4byte gUnknown_02024C10
thumb_func_end sub_8023848
@@ -44218,7 +44218,7 @@ atk5C_cmd5c: @ 8023F84
bl sub_8015150
ldr r2, _08023FF4 @ =gUnknown_02024A60
strb r0, [r2]
- ldr r0, _08023FF8 @ =gUnknown_02024C68
+ ldr r0, _08023FF8 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -44265,7 +44265,7 @@ _08023FD6:
.align 2, 0
_08023FF0: .4byte gUnknown_02024C10
_08023FF4: .4byte gUnknown_02024A60
-_08023FF8: .4byte gUnknown_02024C68
+_08023FF8: .4byte gBattleMoveFlags
_08023FFC: .4byte gUnknown_02024C6C
_08024000: .4byte gBattleMons
_08024004: .4byte gUnknown_02024CA8
@@ -44568,10 +44568,10 @@ _08024244: .4byte gUnknown_02024AA4
atk5F_8025B24: @ 8024248
push {lr}
ldr r0, _08024270 @ =gUnknown_02024A60
- ldr r2, _08024274 @ =gUnknown_02024C07
+ ldr r2, _08024274 @ =gPlayerMonIndex
ldrb r3, [r2]
strb r3, [r0]
- ldr r1, _08024278 @ =gUnknown_02024C08
+ ldr r1, _08024278 @ =gEnemyMonIndex
ldrb r0, [r1]
strb r0, [r2]
strb r3, [r1]
@@ -44588,8 +44588,8 @@ atk5F_8025B24: @ 8024248
b _08024286
.align 2, 0
_08024270: .4byte gUnknown_02024A60
-_08024274: .4byte gUnknown_02024C07
-_08024278: .4byte gUnknown_02024C08
+_08024274: .4byte gPlayerMonIndex
+_08024278: .4byte gEnemyMonIndex
_0802427C: .4byte gUnknown_02024C6C
_08024280: .4byte 0xffffefff
_08024284:
@@ -44609,7 +44609,7 @@ _08024294: .4byte gUnknown_02024C10
thumb_func_start atk60_cmd60
atk60_cmd60: @ 8024298
push {lr}
- ldr r0, _080242C0 @ =gUnknown_02024C07
+ ldr r0, _080242C0 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -44627,7 +44627,7 @@ _080242B2:
pop {r0}
bx r0
.align 2, 0
-_080242C0: .4byte gUnknown_02024C07
+_080242C0: .4byte gPlayerMonIndex
_080242C4: .4byte gUnknown_02024C10
thumb_func_end atk60_cmd60
@@ -45141,7 +45141,7 @@ _080246D4: .4byte gUnknown_02024A76
atk69_8025FE0: @ 80246D8
push {r4-r7,lr}
ldr r7, _08024700 @ =gBattleMons
- ldr r6, _08024704 @ =gUnknown_02024C08
+ ldr r6, _08024704 @ =gEnemyMonIndex
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
@@ -45160,7 +45160,7 @@ atk69_8025FE0: @ 80246D8
b _08024726
.align 2, 0
_08024700: .4byte gBattleMons
-_08024704: .4byte gUnknown_02024C08
+_08024704: .4byte gEnemyMonIndex
_08024708: .4byte gEnigmaBerries
_0802470C:
ldrh r0, [r1, 0x2E]
@@ -45176,7 +45176,7 @@ _0802470C:
lsrs r6, r0, 24
_08024726:
ldr r1, _080247E8 @ =gUnknown_02024C0B
- ldr r5, _080247EC @ =gUnknown_02024C08
+ ldr r5, _080247EC @ =gEnemyMonIndex
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
@@ -45205,7 +45205,7 @@ _08024726:
strb r1, [r0]
_08024764:
ldr r2, _080247F4 @ =gBattleMons
- ldr r3, _080247EC @ =gUnknown_02024C08
+ ldr r3, _080247EC @ =gEnemyMonIndex
ldrb r4, [r3]
movs r0, 0x58
muls r0, r4
@@ -45251,7 +45251,7 @@ _080247B6:
muls r0, r4
adds r0, r5
ldrh r1, [r0, 0x28]
- ldr r2, _08024804 @ =gUnknown_02024BEC
+ ldr r2, _08024804 @ =gBattleMoveDamage
ldr r0, [r2]
cmp r1, r0
bgt _08024834
@@ -45265,7 +45265,7 @@ _080247B6:
lsls r0, 30
cmp r0, 0
bge _0802480C
- ldr r0, _08024808 @ =gUnknown_02024C68
+ ldr r0, _08024808 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x40
orrs r1, r2
@@ -45273,14 +45273,14 @@ _080247B6:
b _08024834
.align 2, 0
_080247E8: .4byte gUnknown_02024C0B
-_080247EC: .4byte gUnknown_02024C08
+_080247EC: .4byte gEnemyMonIndex
_080247F0: .4byte gUnknown_02024D68
_080247F4: .4byte gBattleMons
_080247F8: .4byte gBattleMoves
_080247FC: .4byte gUnknown_02024BE6
_08024800: .4byte gUnknown_02024D28
-_08024804: .4byte gUnknown_02024BEC
-_08024808: .4byte gUnknown_02024C68
+_08024804: .4byte gBattleMoveDamage
+_08024808: .4byte gBattleMoveFlags
_0802480C:
ldr r0, _08024844 @ =gUnknown_02024D68
lsls r1, r3, 2
@@ -45291,7 +45291,7 @@ _0802480C:
lsrs r0, 7
cmp r0, 0
beq _08024834
- ldr r2, _08024848 @ =gUnknown_02024C68
+ ldr r2, _08024848 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
@@ -45312,7 +45312,7 @@ _08024834:
bx r0
.align 2, 0
_08024844: .4byte gUnknown_02024D68
-_08024848: .4byte gUnknown_02024C68
+_08024848: .4byte gBattleMoveFlags
_0802484C: .4byte gUnknown_02024C04
_08024850: .4byte gUnknown_02024C10
thumb_func_end atk69_8025FE0
@@ -45376,7 +45376,7 @@ sub_80248C0: @ 80248C0
strb r0, [r1]
movs r0, 0x7
strb r0, [r1, 0x1]
- ldr r2, _080248F0 @ =gUnknown_02024C07
+ ldr r2, _080248F0 @ =gPlayerMonIndex
ldrb r0, [r2]
strb r0, [r1, 0x2]
ldr r3, _080248F4 @ =gUnknown_02024A6A
@@ -45394,7 +45394,7 @@ sub_80248C0: @ 80248C0
bx lr
.align 2, 0
_080248EC: .4byte gUnknown_030041C0
-_080248F0: .4byte gUnknown_02024C07
+_080248F0: .4byte gPlayerMonIndex
_080248F4: .4byte gUnknown_02024A6A
_080248F8: .4byte gUnknown_02024C10
thumb_func_end sub_80248C0
@@ -45824,7 +45824,7 @@ atk6E_state0_side_becomes_attacker: @ 8024C64
push {lr}
movs r0, 0
bl battle_get_side_with_given_state
- ldr r1, _08024C7C @ =gUnknown_02024C07
+ ldr r1, _08024C7C @ =gPlayerMonIndex
strb r0, [r1]
ldr r1, _08024C80 @ =gUnknown_02024C10
ldr r0, [r1]
@@ -45833,7 +45833,7 @@ atk6E_state0_side_becomes_attacker: @ 8024C64
pop {r0}
bx r0
.align 2, 0
-_08024C7C: .4byte gUnknown_02024C07
+_08024C7C: .4byte gPlayerMonIndex
_08024C80: .4byte gUnknown_02024C10
thumb_func_end atk6E_state0_side_becomes_attacker
@@ -46150,7 +46150,7 @@ atk75_8026A58: @ 8024EE8
push {lr}
sub sp, 0x4
ldr r2, _08024F28 @ =gUnknown_02024E6C
- ldr r1, _08024F2C @ =gUnknown_02024C07
+ ldr r1, _08024F2C @ =gPlayerMonIndex
ldrb r0, [r1]
strb r0, [r2]
ldr r2, _08024F30 @ =gUnknown_02024A6A
@@ -46179,7 +46179,7 @@ atk75_8026A58: @ 8024EE8
bx r0
.align 2, 0
_08024F28: .4byte gUnknown_02024E6C
-_08024F2C: .4byte gUnknown_02024C07
+_08024F2C: .4byte gPlayerMonIndex
_08024F30: .4byte gUnknown_02024A6A
_08024F34: .4byte gEnemyParty
_08024F38: .4byte gUnknown_02024C04
@@ -46227,8 +46227,8 @@ _08024F8C:
.align 2, 0
_08024F98: .4byte gUnknown_02024A60
_08024F9C:
- ldr r1, _08024FD8 @ =gUnknown_02024C07
- ldr r4, _08024FDC @ =gUnknown_02024C08
+ ldr r1, _08024FD8 @ =gPlayerMonIndex
+ ldr r4, _08024FDC @ =gEnemyMonIndex
ldrb r0, [r4]
strb r0, [r1]
ldrb r0, [r1]
@@ -46256,18 +46256,18 @@ _08024F9C:
strb r2, [r4]
b _08025112
.align 2, 0
-_08024FD8: .4byte gUnknown_02024C07
-_08024FDC: .4byte gUnknown_02024C08
+_08024FD8: .4byte gPlayerMonIndex
+_08024FDC: .4byte gEnemyMonIndex
_08024FE0: .4byte gUnknown_02024C80
_08024FE4: .4byte gBattleMons
_08024FE8:
- ldr r0, _08024FF4 @ =gUnknown_02024C08
+ ldr r0, _08024FF4 @ =gEnemyMonIndex
ldr r1, _08024FF8 @ =gUnknown_02024A60
ldrb r1, [r1]
strb r1, [r0]
b _08025112
.align 2, 0
-_08024FF4: .4byte gUnknown_02024C08
+_08024FF4: .4byte gEnemyMonIndex
_08024FF8: .4byte gUnknown_02024A60
_08024FFC:
bl sub_8012028
@@ -46281,12 +46281,12 @@ _0802500C:
ldrh r0, [r0]
movs r1, 0
bl sub_801B5C0
- ldr r1, _08025020 @ =gUnknown_02024C08
+ ldr r1, _08025020 @ =gEnemyMonIndex
strb r0, [r1]
b _08025112
.align 2, 0
_0802501C: .4byte gUnknown_02024BE6
-_08025020: .4byte gUnknown_02024C08
+_08025020: .4byte gEnemyMonIndex
_08025024:
ldr r2, _08025044 @ =gUnknown_02024C6C
ldr r1, _08025048 @ =gBitTable
@@ -46428,7 +46428,7 @@ atk77_setprotect: @ 8025130
push {r7}
movs r6, 0x1
ldr r2, _080251FC @ =gUnknown_02024C4C
- ldr r1, _08025200 @ =gUnknown_02024C07
+ ldr r1, _08025200 @ =gPlayerMonIndex
ldrb r3, [r1]
lsls r0, r3, 1
adds r0, r2
@@ -46529,7 +46529,7 @@ _080251E6:
b _08025246
.align 2, 0
_080251FC: .4byte gUnknown_02024C4C
-_08025200: .4byte gUnknown_02024C07
+_08025200: .4byte gPlayerMonIndex
_08025204: .4byte gUnknown_02024CA8
_08025208: .4byte gUnknown_02024A7E
_0802520C: .4byte gUnknown_02024A68
@@ -46540,7 +46540,7 @@ _0802521C: .4byte gUnknown_02024D28
_08025220: .4byte gUnknown_02024D1E
_08025224:
ldr r2, _08025258 @ =gUnknown_02024CA8
- ldr r0, _0802525C @ =gUnknown_02024C07
+ ldr r0, _0802525C @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -46551,7 +46551,7 @@ _08025224:
ldr r1, _08025260 @ =gUnknown_02024D1E
movs r0, 0x2
strb r0, [r1, 0x5]
- ldr r2, _08025264 @ =gUnknown_02024C68
+ ldr r2, _08025264 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -46568,9 +46568,9 @@ _08025246:
bx r0
.align 2, 0
_08025258: .4byte gUnknown_02024CA8
-_0802525C: .4byte gUnknown_02024C07
+_0802525C: .4byte gPlayerMonIndex
_08025260: .4byte gUnknown_02024D1E
-_08025264: .4byte gUnknown_02024C68
+_08025264: .4byte gBattleMoveFlags
_08025268: .4byte gUnknown_02024C10
thumb_func_end atk77_setprotect
@@ -46583,7 +46583,7 @@ atk78_faintifabilitynotdamp: @ 802526C
ldr r2, [r0]
cmp r2, 0
bne _08025370
- ldr r1, _0802532C @ =gUnknown_02024C08
+ ldr r1, _0802532C @ =gEnemyMonIndex
strb r2, [r1]
ldr r0, _08025330 @ =gUnknown_02024A68
ldrb r3, [r0]
@@ -46622,10 +46622,10 @@ _080252B8:
cmp r0, r1
bne _08025354
ldr r4, _08025338 @ =gUnknown_02024A60
- ldr r7, _0802533C @ =gUnknown_02024C07
+ ldr r7, _0802533C @ =gPlayerMonIndex
ldrb r0, [r7]
strb r0, [r4]
- ldr r2, _08025340 @ =gUnknown_02024BEC
+ ldr r2, _08025340 @ =gBattleMoveDamage
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
@@ -46674,12 +46674,12 @@ _0802531A:
b _08025370
.align 2, 0
_08025328: .4byte gUnknown_02024A64
-_0802532C: .4byte gUnknown_02024C08
+_0802532C: .4byte gEnemyMonIndex
_08025330: .4byte gUnknown_02024A68
_08025334: .4byte gBattleMons
_08025338: .4byte gUnknown_02024A60
-_0802533C: .4byte gUnknown_02024C07
-_08025340: .4byte gUnknown_02024BEC
+_0802533C: .4byte gPlayerMonIndex
+_08025340: .4byte gBattleMoveDamage
_08025344: .4byte 0x00007fff
_08025348: .4byte gUnknown_02024C10
_0802534C: .4byte gBitTable
@@ -46719,7 +46719,7 @@ atk79_setuserhptozero: @ 8025388
cmp r3, 0
bne _080253CC
ldr r4, _080253D8 @ =gUnknown_02024A60
- ldr r0, _080253DC @ =gUnknown_02024C07
+ ldr r0, _080253DC @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r4]
ldr r1, _080253E0 @ =gBattleMons
@@ -46752,7 +46752,7 @@ _080253CC:
.align 2, 0
_080253D4: .4byte gUnknown_02024A64
_080253D8: .4byte gUnknown_02024A60
-_080253DC: .4byte gUnknown_02024C07
+_080253DC: .4byte gPlayerMonIndex
_080253E0: .4byte gBattleMons
_080253E4: .4byte gUnknown_02024C10
thumb_func_end atk79_setuserhptozero
@@ -46779,11 +46779,11 @@ sub_80253E8: @ 80253E8
adds r7, r3, 0
cmp r0, 0
beq _08025480
- ldr r0, _08025468 @ =gUnknown_02024C08
+ ldr r0, _08025468 @ =gEnemyMonIndex
ldrb r1, [r0]
adds r1, 0x1
strb r1, [r0]
- ldr r2, _0802546C @ =gUnknown_02024C07
+ ldr r2, _0802546C @ =gPlayerMonIndex
lsls r1, 24
lsrs r1, 24
adds r3, r0, 0
@@ -46824,8 +46824,8 @@ _0802543E:
.align 2, 0
_08025460: .4byte gUnknown_02024C10
_08025464: .4byte gBattleTypeFlags
-_08025468: .4byte gUnknown_02024C08
-_0802546C: .4byte gUnknown_02024C07
+_08025468: .4byte gEnemyMonIndex
+_0802546C: .4byte gPlayerMonIndex
_08025470: .4byte gUnknown_02024C0C
_08025474: .4byte gBitTable
_08025478: .4byte gUnknown_02024A68
@@ -46857,14 +46857,14 @@ sub_802548C: @ 802548C
lsls r0, 24
orrs r2, r0
ldrb r0, [r1, 0x5]
- ldr r3, _080254EC @ =gUnknown_02024C08
+ ldr r3, _080254EC @ =gEnemyMonIndex
cmp r0, 0x1
bne _080254B4
- ldr r0, _080254F0 @ =gUnknown_02024C07
+ ldr r0, _080254F0 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r3]
_080254B4:
- ldr r1, _080254F4 @ =gUnknown_02024BEC
+ ldr r1, _080254F4 @ =gBattleMoveDamage
ldr r6, _080254F8 @ =gBattleMons
ldrb r0, [r3]
movs r5, 0x58
@@ -46892,9 +46892,9 @@ _080254CE:
b _08025502
.align 2, 0
_080254E8: .4byte gUnknown_02024C10
-_080254EC: .4byte gUnknown_02024C08
-_080254F0: .4byte gUnknown_02024C07
-_080254F4: .4byte gUnknown_02024BEC
+_080254EC: .4byte gEnemyMonIndex
+_080254F0: .4byte gPlayerMonIndex
+_080254F4: .4byte gBattleMoveDamage
_080254F8: .4byte gBattleMons
_080254FC:
ldr r0, [r4]
@@ -46910,7 +46910,7 @@ _08025502:
sub_8025508: @ 8025508
push {r4-r7,lr}
ldr r3, _0802556C @ =0x02000000
- ldr r4, _08025570 @ =gUnknown_02024C07
+ ldr r4, _08025570 @ =gPlayerMonIndex
ldrb r2, [r4]
lsls r1, r2, 1
ldr r5, _08025574 @ =0x000160ac
@@ -46959,7 +46959,7 @@ sub_8025508: @ 8025508
b _0802565C
.align 2, 0
_0802556C: .4byte 0x02000000
-_08025570: .4byte gUnknown_02024C07
+_08025570: .4byte gPlayerMonIndex
_08025574: .4byte 0x000160ac
_08025578: .4byte 0x000160ad
_0802557C: .4byte 0x00016100
@@ -47004,7 +47004,7 @@ _080255D8:
ldrh r0, [r5]
movs r1, 0
bl sub_801B5C0
- ldr r1, _08025608 @ =gUnknown_02024C08
+ ldr r1, _08025608 @ =gEnemyMonIndex
strb r0, [r1]
ldr r4, _0802560C @ =gUnknown_02024C10
ldr r3, _08025610 @ =gUnknown_081D6BBC
@@ -47022,7 +47022,7 @@ _080255D8:
b _080256C0
.align 2, 0
_08025604: .4byte gUnknown_02024BE6
-_08025608: .4byte gUnknown_02024C08
+_08025608: .4byte gEnemyMonIndex
_0802560C: .4byte gUnknown_02024C10
_08025610: .4byte gUnknown_081D6BBC
_08025614: .4byte gBattleMoves
@@ -47062,7 +47062,7 @@ _0802565C:
ldrh r0, [r4]
movs r1, 0
bl sub_801B5C0
- ldr r1, _08025694 @ =gUnknown_02024C08
+ ldr r1, _08025694 @ =gEnemyMonIndex
strb r0, [r1]
ldr r5, _08025698 @ =gUnknown_02024C10
ldr r3, _0802569C @ =gUnknown_081D6BBC
@@ -47083,7 +47083,7 @@ _08025684: .4byte 0x0000ffff
_08025688: .4byte gUnknown_02024C6C
_0802568C: .4byte 0xfffffbff
_08025690: .4byte gUnknown_02024BE6
-_08025694: .4byte gUnknown_02024C08
+_08025694: .4byte gEnemyMonIndex
_08025698: .4byte gUnknown_02024C10
_0802569C: .4byte gUnknown_081D6BBC
_080256A0: .4byte gBattleMoves
@@ -47120,7 +47120,7 @@ sub_80256D0: @ 80256D0
ands r1, r0
cmp r1, 0
beq _080256FC
- ldr r2, _080256F4 @ =gUnknown_02024C68
+ ldr r2, _080256F4 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -47131,7 +47131,7 @@ sub_80256D0: @ 80256D0
b _0802570C
.align 2, 0
_080256F0: .4byte gBattleWeather
-_080256F4: .4byte gUnknown_02024C68
+_080256F4: .4byte gBattleMoveFlags
_080256F8: .4byte gUnknown_02024D1E
_080256FC:
movs r0, 0x1
@@ -47158,7 +47158,7 @@ _08025720: .4byte gUnknown_02024C10
thumb_func_start atk7E_setreflect
atk7E_setreflect: @ 8025724
push {r4-r6,lr}
- ldr r5, _08025754 @ =gUnknown_02024C07
+ ldr r5, _08025754 @ =gPlayerMonIndex
ldrb r0, [r5]
bl battle_get_per_side_status
ldr r6, _08025758 @ =gUnknown_02024C7A
@@ -47172,7 +47172,7 @@ atk7E_setreflect: @ 8025724
ands r0, r1
cmp r0, 0
beq _08025764
- ldr r2, _0802575C @ =gUnknown_02024C68
+ ldr r2, _0802575C @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -47181,9 +47181,9 @@ atk7E_setreflect: @ 8025724
movs r0, 0
b _080257C4
.align 2, 0
-_08025754: .4byte gUnknown_02024C07
+_08025754: .4byte gPlayerMonIndex
_08025758: .4byte gUnknown_02024C7A
-_0802575C: .4byte gUnknown_02024C68
+_0802575C: .4byte gBattleMoveFlags
_08025760: .4byte gUnknown_02024D1E
_08025764:
ldrb r0, [r5]
@@ -47250,7 +47250,7 @@ sub_80257DC: @ 80257DC
mov r7, r9
mov r6, r8
push {r6,r7}
- ldr r7, _0802581C @ =gUnknown_02024C68
+ ldr r7, _0802581C @ =gBattleMoveFlags
ldrb r5, [r7]
movs r0, 0x29
ands r0, r5
@@ -47258,7 +47258,7 @@ sub_80257DC: @ 80257DC
bne _0802580E
ldr r0, _08025820 @ =gUnknown_02024C98
mov r9, r0
- ldr r1, _08025824 @ =gUnknown_02024C08
+ ldr r1, _08025824 @ =gEnemyMonIndex
mov r8, r1
ldrb r4, [r1]
lsls r0, r4, 2
@@ -47280,9 +47280,9 @@ _0802580E:
strb r0, [r1, 0x5]
b _0802587C
.align 2, 0
-_0802581C: .4byte gUnknown_02024C68
+_0802581C: .4byte gBattleMoveFlags
_08025820: .4byte gUnknown_02024C98
-_08025824: .4byte gUnknown_02024C08
+_08025824: .4byte gEnemyMonIndex
_08025828: .4byte gUnknown_02024D1E
_0802582C:
ldr r1, _08025858 @ =gBattleMons
@@ -47311,7 +47311,7 @@ _08025848:
_08025858: .4byte gBattleMons
_0802585C: .4byte gUnknown_02024D1E
_08025860:
- ldr r0, _08025890 @ =gUnknown_02024C07
+ ldr r0, _08025890 @ =gPlayerMonIndex
ldrb r0, [r0]
orrs r2, r0
str r2, [r6]
@@ -47337,7 +47337,7 @@ _0802587C:
pop {r0}
bx r0
.align 2, 0
-_08025890: .4byte gUnknown_02024C07
+_08025890: .4byte gPlayerMonIndex
_08025894: .4byte gUnknown_02024D1E
_08025898: .4byte gUnknown_02024C10
thumb_func_end sub_80257DC
@@ -47363,14 +47363,14 @@ _080258B8:
beq _08025904
b _0802590C
_080258BE:
- ldr r1, _080258C8 @ =gUnknown_02024BEC
+ ldr r1, _080258C8 @ =gBattleMoveDamage
ldr r0, [r1]
negs r0, r0
b _0802590A
.align 2, 0
-_080258C8: .4byte gUnknown_02024BEC
+_080258C8: .4byte gBattleMoveDamage
_080258CC:
- ldr r3, _080258F8 @ =gUnknown_02024BEC
+ ldr r3, _080258F8 @ =gBattleMoveDamage
ldr r0, [r3]
lsrs r1, r0, 31
adds r0, r1
@@ -47381,7 +47381,7 @@ _080258CC:
str r2, [r3]
_080258DE:
ldr r2, _080258FC @ =gBattleMons
- ldr r0, _08025900 @ =gUnknown_02024C08
+ ldr r0, _08025900 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -47394,11 +47394,11 @@ _080258DE:
str r1, [r3]
b _0802590C
.align 2, 0
-_080258F8: .4byte gUnknown_02024BEC
+_080258F8: .4byte gBattleMoveDamage
_080258FC: .4byte gBattleMons
-_08025900: .4byte gUnknown_02024C08
+_08025900: .4byte gEnemyMonIndex
_08025904:
- ldr r1, _08025918 @ =gUnknown_02024BEC
+ ldr r1, _08025918 @ =gBattleMoveDamage
ldr r0, [r1]
lsls r0, 1
_0802590A:
@@ -47411,7 +47411,7 @@ _0802590C:
pop {r0}
bx r0
.align 2, 0
-_08025918: .4byte gUnknown_02024BEC
+_08025918: .4byte gBattleMoveDamage
thumb_func_end atk80_manipulatedamage
thumb_func_start atk81_setrest
@@ -47432,12 +47432,12 @@ atk81_setrest: @ 802591C
lsls r0, 24
orrs r6, r0
ldr r5, _08025978 @ =gUnknown_02024A60
- ldr r2, _0802597C @ =gUnknown_02024C08
- ldr r0, _08025980 @ =gUnknown_02024C07
+ ldr r2, _0802597C @ =gEnemyMonIndex
+ ldr r0, _08025980 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r2]
strb r0, [r5]
- ldr r4, _08025984 @ =gUnknown_02024BEC
+ ldr r4, _08025984 @ =gBattleMoveDamage
ldr r1, _08025988 @ =gBattleMons
ldrb r0, [r2]
movs r3, 0x58
@@ -47463,9 +47463,9 @@ atk81_setrest: @ 802591C
.align 2, 0
_08025974: .4byte gUnknown_02024C10
_08025978: .4byte gUnknown_02024A60
-_0802597C: .4byte gUnknown_02024C08
-_08025980: .4byte gUnknown_02024C07
-_08025984: .4byte gUnknown_02024BEC
+_0802597C: .4byte gEnemyMonIndex
+_08025980: .4byte gPlayerMonIndex
+_08025984: .4byte gBattleMoveDamage
_08025988: .4byte gBattleMons
_0802598C:
adds r0, r2, 0
@@ -47534,7 +47534,7 @@ atk82_jumpifnotfirstturn: @ 80259EC
lsls r0, 24
orrs r3, r0
ldr r2, _08025A24 @ =gUnknown_02024CA8
- ldr r0, _08025A28 @ =gUnknown_02024C07
+ ldr r0, _08025A28 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -47549,7 +47549,7 @@ atk82_jumpifnotfirstturn: @ 80259EC
.align 2, 0
_08025A20: .4byte gUnknown_02024C10
_08025A24: .4byte gUnknown_02024CA8
-_08025A28: .4byte gUnknown_02024C07
+_08025A28: .4byte gPlayerMonIndex
_08025A2C:
str r3, [r5]
_08025A2E:
@@ -47607,7 +47607,7 @@ _08025A70:
beq _08025AB0
movs r3, 0
strb r2, [r6]
- ldr r1, _08025AAC @ =gUnknown_02024C08
+ ldr r1, _08025AAC @ =gEnemyMonIndex
ldrb r0, [r1]
cmp r0, 0xFF
beq _08025AD0
@@ -47621,7 +47621,7 @@ _08025A9C: .4byte gUnknown_02024A68
_08025AA0: .4byte gBattleMons
_08025AA4: .4byte 0x02016003
_08025AA8: .4byte gUnknown_02024D1E
-_08025AAC: .4byte gUnknown_02024C08
+_08025AAC: .4byte gEnemyMonIndex
_08025AB0:
adds r3, 0x58
adds r2, 0x1
@@ -47668,7 +47668,7 @@ sub_8025AE0: @ 8025AE0
ldrb r0, [r1, 0x4]
lsls r0, 24
orrs r4, r0
- ldr r6, _08025B10 @ =gUnknown_02024C08
+ ldr r6, _08025B10 @ =gEnemyMonIndex
ldrb r0, [r6]
bl sub_8025A44
lsls r0, 24
@@ -47678,7 +47678,7 @@ sub_8025AE0: @ 8025AE0
b _08025B56
.align 2, 0
_08025B0C: .4byte gUnknown_02024C10
-_08025B10: .4byte gUnknown_02024C08
+_08025B10: .4byte gEnemyMonIndex
_08025B14:
ldr r1, _08025B44 @ =gBattleMons
ldrb r3, [r6]
@@ -47721,7 +47721,7 @@ _08025B56:
sub_8025B5C: @ 8025B5C
push {r4,r5,lr}
ldr r5, _08025B84 @ =gUnknown_02024CA8
- ldr r4, _08025B88 @ =gUnknown_02024C07
+ ldr r4, _08025B88 @ =gPlayerMonIndex
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
@@ -47730,7 +47730,7 @@ sub_8025B5C: @ 8025B5C
ldrb r0, [r1, 0x9]
cmp r0, 0x3
bne _08025B94
- ldr r2, _08025B8C @ =gUnknown_02024C68
+ ldr r2, _08025B8C @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -47741,8 +47741,8 @@ sub_8025B5C: @ 8025B5C
b _08025BBE
.align 2, 0
_08025B84: .4byte gUnknown_02024CA8
-_08025B88: .4byte gUnknown_02024C07
-_08025B8C: .4byte gUnknown_02024C68
+_08025B88: .4byte gPlayerMonIndex
+_08025B8C: .4byte gBattleMoveFlags
_08025B90: .4byte gUnknown_02024D1E
_08025B94:
adds r0, 0x1
@@ -47799,7 +47799,7 @@ atk86_stockpiletobasedamage: @ 8025BD8
lsls r0, 24
orrs r2, r0
ldr r7, _08025C14 @ =gUnknown_02024CA8
- ldr r6, _08025C18 @ =gUnknown_02024C07
+ ldr r6, _08025C18 @ =gPlayerMonIndex
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
@@ -47813,16 +47813,16 @@ atk86_stockpiletobasedamage: @ 8025BD8
.align 2, 0
_08025C10: .4byte gUnknown_02024C10
_08025C14: .4byte gUnknown_02024CA8
-_08025C18: .4byte gUnknown_02024C07
+_08025C18: .4byte gPlayerMonIndex
_08025C1C:
ldr r0, _08025CD0 @ =gUnknown_02024D1E
ldrb r0, [r0, 0x6]
cmp r0, 0x1
beq _08025CA8
- ldr r0, _08025CD4 @ =gUnknown_02024BEC
+ ldr r0, _08025CD4 @ =gBattleMoveDamage
mov r8, r0
ldr r4, _08025CD8 @ =gUnknown_02024C7A
- ldr r5, _08025CDC @ =gUnknown_02024C08
+ ldr r5, _08025CDC @ =gEnemyMonIndex
ldrb r0, [r5]
bl battle_get_per_side_status
movs r1, 0x1
@@ -47884,7 +47884,7 @@ _08025C1C:
str r0, [r1]
_08025CA8:
ldr r2, _08025CF4 @ =gUnknown_02024CA8
- ldr r0, _08025CF8 @ =gUnknown_02024C07
+ ldr r0, _08025CF8 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -47905,16 +47905,16 @@ _08025CC2:
bx r0
.align 2, 0
_08025CD0: .4byte gUnknown_02024D1E
-_08025CD4: .4byte gUnknown_02024BEC
+_08025CD4: .4byte gBattleMoveDamage
_08025CD8: .4byte gUnknown_02024C7A
-_08025CDC: .4byte gUnknown_02024C08
+_08025CDC: .4byte gEnemyMonIndex
_08025CE0: .4byte gBattleMons
_08025CE4: .4byte gUnknown_02024BE6
_08025CE8: .4byte 0x02000000
_08025CEC: .4byte 0x00016002
_08025CF0: .4byte gUnknown_02024D28
_08025CF4: .4byte gUnknown_02024CA8
-_08025CF8: .4byte gUnknown_02024C07
+_08025CF8: .4byte gPlayerMonIndex
_08025CFC: .4byte gUnknown_02024C10
thumb_func_end atk86_stockpiletobasedamage
@@ -47937,7 +47937,7 @@ sub_8025D00: @ 8025D00
orrs r2, r0
ldr r0, _08025D44 @ =gUnknown_02024CA8
mov r8, r0
- ldr r6, _08025D48 @ =gUnknown_02024C07
+ ldr r6, _08025D48 @ =gPlayerMonIndex
ldrb r3, [r6]
lsls r0, r3, 3
subs r0, r3
@@ -47954,7 +47954,7 @@ sub_8025D00: @ 8025D00
.align 2, 0
_08025D40: .4byte gUnknown_02024C10
_08025D44: .4byte gUnknown_02024CA8
-_08025D48: .4byte gUnknown_02024C07
+_08025D48: .4byte gPlayerMonIndex
_08025D4C: .4byte gUnknown_02024D1E
_08025D50:
ldr r1, _08025D74 @ =gBattleMons
@@ -47968,7 +47968,7 @@ _08025D50:
movs r0, 0
strb r0, [r4, 0x9]
str r2, [r7]
- ldr r1, _08025D78 @ =gUnknown_02024C08
+ ldr r1, _08025D78 @ =gEnemyMonIndex
ldrb r0, [r6]
strb r0, [r1]
ldr r1, _08025D7C @ =gUnknown_02024D1E
@@ -47977,10 +47977,10 @@ _08025D50:
b _08025DD0
.align 2, 0
_08025D74: .4byte gBattleMons
-_08025D78: .4byte gUnknown_02024C08
+_08025D78: .4byte gEnemyMonIndex
_08025D7C: .4byte gUnknown_02024D1E
_08025D80:
- ldr r5, _08025DDC @ =gUnknown_02024BEC
+ ldr r5, _08025DDC @ =gBattleMoveDamage
ldrh r0, [r1, 0x2C]
ldrb r1, [r4, 0x9]
movs r2, 0x3
@@ -48017,7 +48017,7 @@ _08025D9C:
ldr r0, [r7]
adds r0, 0x5
str r0, [r7]
- ldr r1, _08025DE8 @ =gUnknown_02024C08
+ ldr r1, _08025DE8 @ =gEnemyMonIndex
ldrb r0, [r6]
strb r0, [r1]
_08025DD0:
@@ -48027,16 +48027,16 @@ _08025DD0:
pop {r0}
bx r0
.align 2, 0
-_08025DDC: .4byte gUnknown_02024BEC
+_08025DDC: .4byte gBattleMoveDamage
_08025DE0: .4byte 0x02000000
_08025DE4: .4byte 0x00016002
-_08025DE8: .4byte gUnknown_02024C08
+_08025DE8: .4byte gEnemyMonIndex
thumb_func_end sub_8025D00
thumb_func_start atk88_negativedamage
atk88_negativedamage: @ 8025DEC
push {lr}
- ldr r2, _08025E14 @ =gUnknown_02024BEC
+ ldr r2, _08025E14 @ =gBattleMoveDamage
ldr r0, _08025E18 @ =gUnknown_02024BF0
ldr r0, [r0]
lsrs r1, r0, 31
@@ -48057,7 +48057,7 @@ _08025E08:
pop {r0}
bx r0
.align 2, 0
-_08025E14: .4byte gUnknown_02024BEC
+_08025E14: .4byte gBattleMoveDamage
_08025E18: .4byte gUnknown_02024BF0
_08025E1C: .4byte gUnknown_02024C10
thumb_func_end atk88_negativedamage
@@ -48084,14 +48084,14 @@ sub_8025E20: @ 8025E20
cmp r0, 0
beq _08025E54
ldr r0, _08025E4C @ =gUnknown_02024A60
- ldr r1, _08025E50 @ =gUnknown_02024C07
+ ldr r1, _08025E50 @ =gPlayerMonIndex
b _08025E58
.align 2, 0
_08025E4C: .4byte gUnknown_02024A60
-_08025E50: .4byte gUnknown_02024C07
+_08025E50: .4byte gPlayerMonIndex
_08025E54:
ldr r0, _08025EF8 @ =gUnknown_02024A60
- ldr r1, _08025EFC @ =gUnknown_02024C08
+ ldr r1, _08025EFC @ =gEnemyMonIndex
_08025E58:
ldrb r1, [r1]
strb r1, [r0]
@@ -48177,7 +48177,7 @@ _08025EAC:
b _08025F74
.align 2, 0
_08025EF8: .4byte gUnknown_02024A60
-_08025EFC: .4byte gUnknown_02024C08
+_08025EFC: .4byte gEnemyMonIndex
_08025F00: .4byte gUnknown_030041C0
_08025F04: .4byte gUnknown_02024C80
_08025F08: .4byte gUnknown_02024BE6
@@ -48476,7 +48476,7 @@ _08026156:
cmp r0, 0
beq _08026206
movs r1, 0
- ldr r0, _080261A8 @ =gUnknown_02024C08
+ ldr r0, _080261A8 @ =gEnemyMonIndex
ldrb r0, [r0]
ldr r3, _080261AC @ =gUnknown_02024D1E
mov r8, r3
@@ -48490,7 +48490,7 @@ _0802619A:
.align 2, 0
_080261A0: .4byte gUnknown_02024A60
_080261A4: .4byte gUnknown_03004290
-_080261A8: .4byte gUnknown_02024C08
+_080261A8: .4byte gEnemyMonIndex
_080261AC: .4byte gUnknown_02024D1E
_080261B0:
asrs r6, r0, 28
@@ -48550,7 +48550,7 @@ _08026218: .4byte gUnknown_02024A60
_0802621C: .4byte gUnknown_02024D1E
_08026220:
movs r1, 0
- ldr r0, _080262B4 @ =gUnknown_02024C08
+ ldr r0, _080262B4 @ =gEnemyMonIndex
ldrb r0, [r0]
ldr r2, _080262B8 @ =gUnknown_02024D1E
mov r8, r2
@@ -48606,7 +48606,7 @@ _0802627A:
ands r3, r5
cmp r3, 0
beq _08026294
- ldr r0, _080262C0 @ =gUnknown_02024C68
+ ldr r0, _080262C0 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
@@ -48630,10 +48630,10 @@ _080262A4:
pop {r1}
bx r1
.align 2, 0
-_080262B4: .4byte gUnknown_02024C08
+_080262B4: .4byte gEnemyMonIndex
_080262B8: .4byte gUnknown_02024D1E
_080262BC: .4byte gUnknown_02024A60
-_080262C0: .4byte gUnknown_02024C68
+_080262C0: .4byte gBattleMoveFlags
thumb_func_end sub_8025E20
thumb_func_start atk89_statbuffchange
@@ -48729,7 +48729,7 @@ _08026368: .4byte gBattleMons
atk8B_setbide: @ 802636C
push {r4,r5,lr}
ldr r4, _080263C4 @ =gBattleMons
- ldr r3, _080263C8 @ =gUnknown_02024C07
+ ldr r3, _080263C8 @ =gPlayerMonIndex
ldrb r0, [r3]
movs r5, 0x58
adds r2, r0, 0
@@ -48772,7 +48772,7 @@ atk8B_setbide: @ 802636C
bx r0
.align 2, 0
_080263C4: .4byte gBattleMons
-_080263C8: .4byte gUnknown_02024C07
+_080263C8: .4byte gPlayerMonIndex
_080263CC: .4byte gUnknown_02024C54
_080263D0: .4byte gUnknown_02024BE6
_080263D4: .4byte gUnknown_02024BF4
@@ -48783,7 +48783,7 @@ _080263D8: .4byte gUnknown_02024C10
atk8C_confuseifrepeatingattackends: @ 80263DC
push {lr}
ldr r1, _0802640C @ =gBattleMons
- ldr r0, _08026410 @ =gUnknown_02024C07
+ ldr r0, _08026410 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -48807,7 +48807,7 @@ _080263FE:
bx r0
.align 2, 0
_0802640C: .4byte gBattleMons
-_08026410: .4byte gUnknown_02024C07
+_08026410: .4byte gPlayerMonIndex
_08026414: .4byte gUnknown_02024D1E
_08026418: .4byte gUnknown_02024C10
thumb_func_end atk8C_confuseifrepeatingattackends
@@ -48898,14 +48898,14 @@ _080264BC: .4byte gUnknown_02024C10
sub_80264C0: @ 80264C0
push {r4-r7,lr}
ldr r6, _080264F4 @ =gBattleMons
- ldr r7, _080264F8 @ =gUnknown_02024C07
+ ldr r7, _080264F8 @ =gPlayerMonIndex
ldrb r0, [r7]
movs r5, 0x58
adds r1, r0, 0
muls r1, r5
adds r1, r6
adds r1, 0x2A
- ldr r4, _080264FC @ =gUnknown_02024C08
+ ldr r4, _080264FC @ =gEnemyMonIndex
ldrb r3, [r4]
adds r0, r3, 0
muls r0, r5
@@ -48924,8 +48924,8 @@ sub_80264C0: @ 80264C0
b _08026568
.align 2, 0
_080264F4: .4byte gBattleMons
-_080264F8: .4byte gUnknown_02024C07
-_080264FC: .4byte gUnknown_02024C08
+_080264F8: .4byte gPlayerMonIndex
+_080264FC: .4byte gEnemyMonIndex
_08026500: .4byte 0x02000000
_08026504: .4byte 0x00016064
_08026508: .4byte gUnknown_02024A6A
@@ -49009,7 +49009,7 @@ sub_8026590: @ 8026590
bne _080265A4
b _0802687C
_080265A4:
- ldr r5, _0802662C @ =gUnknown_02024C08
+ ldr r5, _0802662C @ =gEnemyMonIndex
ldrb r0, [r5]
bl battle_side_get_owner
lsls r0, 24
@@ -49075,7 +49075,7 @@ _0802661A:
b _08026678
.align 2, 0
_08026628: .4byte gBattleTypeFlags
-_0802662C: .4byte gUnknown_02024C08
+_0802662C: .4byte gEnemyMonIndex
_08026630: .4byte gEnemyParty
_08026634: .4byte gPlayerParty
_08026638:
@@ -49171,7 +49171,7 @@ _080266DC:
bl __umodsi3
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, _08026714 @ =gUnknown_02024C08
+ ldr r0, _08026714 @ =gEnemyMonIndex
ldrb r0, [r0]
bl sub_803FC34
lsls r0, 24
@@ -49187,12 +49187,12 @@ _080266DC:
b _0802671A
.align 2, 0
_08026710: .4byte gBattleTypeFlags
-_08026714: .4byte gUnknown_02024C08
+_08026714: .4byte gEnemyMonIndex
_08026718:
adds r5, r6, 0
_0802671A:
ldr r4, _0802676C @ =gUnknown_02024A6A
- ldr r0, _08026770 @ =gUnknown_02024C08
+ ldr r0, _08026770 @ =gEnemyMonIndex
ldrb r2, [r0]
lsls r1, r2, 1
adds r1, r4
@@ -49230,7 +49230,7 @@ _0802671A:
b _08026832
.align 2, 0
_0802676C: .4byte gUnknown_02024A6A
-_08026770: .4byte gUnknown_02024C08
+_08026770: .4byte gEnemyMonIndex
_08026774:
movs r0, 0x1
ands r0, r1
@@ -49245,7 +49245,7 @@ _0802677E:
bl __umodsi3
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080267E0 @ =gUnknown_02024C08
+ ldr r0, _080267E0 @ =gEnemyMonIndex
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r6
@@ -49282,7 +49282,7 @@ _0802677E:
b _08026832
.align 2, 0
_080267DC: .4byte gUnknown_02024A6A
-_080267E0: .4byte gUnknown_02024C08
+_080267E0: .4byte gEnemyMonIndex
_080267E4:
ldr r6, _0802686C @ =gUnknown_02024A6A
_080267E6:
@@ -49293,7 +49293,7 @@ _080267E6:
bl __umodsi3
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _08026870 @ =gUnknown_02024C08
+ ldr r0, _08026870 @ =gEnemyMonIndex
ldrb r0, [r0]
lsls r0, 1
adds r0, r6
@@ -49321,7 +49321,7 @@ _080267E6:
beq _080267E6
_08026832:
ldr r0, _08026874 @ =0x02000000
- ldr r4, _08026870 @ =gUnknown_02024C08
+ ldr r4, _08026870 @ =gEnemyMonIndex
ldrb r1, [r4]
ldr r2, _08026878 @ =0x00016068
adds r1, r2
@@ -49347,7 +49347,7 @@ _08026850:
b _08026880
.align 2, 0
_0802686C: .4byte gUnknown_02024A6A
-_08026870: .4byte gUnknown_02024C08
+_08026870: .4byte gEnemyMonIndex
_08026874: .4byte 0x02000000
_08026878: .4byte 0x00016068
_0802687C:
@@ -49369,7 +49369,7 @@ sub_802688C: @ 802688C
push {r5-r7}
movs r6, 0
ldr r2, _08026920 @ =gBattleMons
- ldr r3, _08026924 @ =gUnknown_02024C07
+ ldr r3, _08026924 @ =gPlayerMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -49404,7 +49404,7 @@ _080268CE:
mov r10, r0
ldr r5, _08026920 @ =gBattleMons
mov r12, r5
- ldr r7, _08026924 @ =gUnknown_02024C07
+ ldr r7, _08026924 @ =gPlayerMonIndex
ldrb r0, [r7]
movs r4, 0x58
adds r5, r0, 0
@@ -49441,7 +49441,7 @@ _0802691A:
b _0802692E
.align 2, 0
_08026920: .4byte gBattleMons
-_08026924: .4byte gUnknown_02024C07
+_08026924: .4byte gPlayerMonIndex
_08026928: .4byte gBattleMoves
_0802692C:
movs r2, 0
@@ -49495,7 +49495,7 @@ _0802697A:
bcs _0802697A
ldr r4, _080269D0 @ =gBattleMons
lsls r1, r3, 1
- ldr r3, _080269D4 @ =gUnknown_02024C07
+ ldr r3, _080269D4 @ =gPlayerMonIndex
ldrb r2, [r3]
movs r0, 0x58
adds r5, r2, 0
@@ -49532,7 +49532,7 @@ _080269C8:
.align 2, 0
_080269CC: .4byte gBattleMoves
_080269D0: .4byte gBattleMons
-_080269D4: .4byte gUnknown_02024C07
+_080269D4: .4byte gPlayerMonIndex
_080269D8:
movs r2, 0
_080269DA:
@@ -49651,7 +49651,7 @@ _08026ABC: .4byte gUnknown_02024C10
thumb_func_start atk92_setlightscreen
atk92_setlightscreen: @ 8026AC0
push {r4-r6,lr}
- ldr r4, _08026AF0 @ =gUnknown_02024C07
+ ldr r4, _08026AF0 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_get_per_side_status
ldr r6, _08026AF4 @ =gUnknown_02024C7A
@@ -49665,7 +49665,7 @@ atk92_setlightscreen: @ 8026AC0
ands r0, r1
cmp r0, 0
beq _08026B00
- ldr r2, _08026AF8 @ =gUnknown_02024C68
+ ldr r2, _08026AF8 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -49674,9 +49674,9 @@ atk92_setlightscreen: @ 8026AC0
movs r0, 0
b _08026B60
.align 2, 0
-_08026AF0: .4byte gUnknown_02024C07
+_08026AF0: .4byte gPlayerMonIndex
_08026AF4: .4byte gUnknown_02024C7A
-_08026AF8: .4byte gUnknown_02024C68
+_08026AF8: .4byte gBattleMoveFlags
_08026AFC: .4byte gUnknown_02024D1E
_08026B00:
ldrb r0, [r4]
@@ -49744,7 +49744,7 @@ sub_8026B78: @ 8026B78
mov r5, r8
push {r5-r7}
ldr r7, _08026BA8 @ =gBattleMons
- ldr r6, _08026BAC @ =gUnknown_02024C08
+ ldr r6, _08026BAC @ =gEnemyMonIndex
ldrb r2, [r6]
movs r5, 0x58
adds r0, r2, 0
@@ -49763,7 +49763,7 @@ sub_8026B78: @ 8026B78
b _08026BCE
.align 2, 0
_08026BA8: .4byte gBattleMons
-_08026BAC: .4byte gUnknown_02024C08
+_08026BAC: .4byte gEnemyMonIndex
_08026BB0: .4byte gEnigmaBerries
_08026BB4:
ldrh r0, [r1, 0x2E]
@@ -49779,7 +49779,7 @@ _08026BB4:
lsrs r6, r0, 24
_08026BCE:
ldr r1, _08026C4C @ =gUnknown_02024C0B
- ldr r5, _08026C50 @ =gUnknown_02024C08
+ ldr r5, _08026C50 @ =gEnemyMonIndex
ldrb r0, [r5]
strb r0, [r1]
cmp r4, 0x27
@@ -49809,7 +49809,7 @@ _08026BCE:
_08026C0C:
ldr r0, _08026C58 @ =gBattleMons
mov r8, r0
- ldr r1, _08026C50 @ =gUnknown_02024C08
+ ldr r1, _08026C50 @ =gEnemyMonIndex
ldrb r2, [r1]
movs r6, 0x58
adds r0, r2, 0
@@ -49822,7 +49822,7 @@ _08026C0C:
mov r10, r8
cmp r3, 0x5
bne _08026C6C
- ldr r2, _08026C5C @ =gUnknown_02024C68
+ ldr r2, _08026C5C @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -49832,17 +49832,17 @@ _08026C0C:
ldr r1, _08026C64 @ =gUnknown_02024C10
ldr r0, _08026C68 @ =gUnknown_081D9826
str r0, [r1]
- ldr r1, _08026C50 @ =gUnknown_02024C08
+ ldr r1, _08026C50 @ =gEnemyMonIndex
ldrb r0, [r1]
movs r1, 0x5
bl sub_81074C4
b _08026E40
.align 2, 0
_08026C4C: .4byte gUnknown_02024C0B
-_08026C50: .4byte gUnknown_02024C08
+_08026C50: .4byte gEnemyMonIndex
_08026C54: .4byte gUnknown_02024D68
_08026C58: .4byte gBattleMons
-_08026C5C: .4byte gUnknown_02024C68
+_08026C5C: .4byte gBattleMoveFlags
_08026C60: .4byte byte_2024C06
_08026C64: .4byte gUnknown_02024C10
_08026C68: .4byte gUnknown_081D9826
@@ -49862,7 +49862,7 @@ _08026C6C:
adds r2, r0
lsls r2, 2
adds r2, r1
- ldr r7, _08026CEC @ =gUnknown_02024C07
+ ldr r7, _08026CEC @ =gPlayerMonIndex
ldrb r0, [r7]
muls r0, r6
add r0, r10
@@ -49891,7 +49891,7 @@ _08026C6C:
muls r1, r6
add r1, r10
adds r1, 0x2A
- ldr r2, _08026CF0 @ =gUnknown_02024C08
+ ldr r2, _08026CF0 @ =gEnemyMonIndex
ldrb r0, [r2]
muls r0, r6
add r0, r10
@@ -49908,15 +49908,15 @@ _08026CDC:
_08026CE0: .4byte gUnknown_02024C98
_08026CE4: .4byte gBattleMoves
_08026CE8: .4byte gUnknown_02024BE6
-_08026CEC: .4byte gUnknown_02024C07
-_08026CF0: .4byte gUnknown_02024C08
+_08026CEC: .4byte gPlayerMonIndex
+_08026CF0: .4byte gEnemyMonIndex
_08026CF4:
ldr r0, _08026D4C @ =gUnknown_02024CA8
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r0
- ldr r2, _08026D50 @ =gUnknown_02024C07
+ ldr r2, _08026D50 @ =gPlayerMonIndex
ldrb r0, [r1, 0x15]
movs r4, 0
ldrb r3, [r2]
@@ -49937,7 +49937,7 @@ _08026D20:
cmp r4, 0
beq _08026DE0
ldr r0, _08026D54 @ =gUnknown_02024D28
- ldr r1, _08026D58 @ =gUnknown_02024C08
+ ldr r1, _08026D58 @ =gEnemyMonIndex
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r0
@@ -49945,24 +49945,24 @@ _08026D20:
lsls r0, 30
cmp r0, 0
bge _08026D64
- ldr r1, _08026D5C @ =gUnknown_02024BEC
+ ldr r1, _08026D5C @ =gBattleMoveDamage
movs r0, 0x58
muls r0, r2
add r0, r10
ldrh r0, [r0, 0x28]
subs r0, 0x1
str r0, [r1]
- ldr r2, _08026D60 @ =gUnknown_02024C68
+ ldr r2, _08026D60 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x40
b _08026DC6
.align 2, 0
_08026D4C: .4byte gUnknown_02024CA8
-_08026D50: .4byte gUnknown_02024C07
+_08026D50: .4byte gPlayerMonIndex
_08026D54: .4byte gUnknown_02024D28
-_08026D58: .4byte gUnknown_02024C08
-_08026D5C: .4byte gUnknown_02024BEC
-_08026D60: .4byte gUnknown_02024C68
+_08026D58: .4byte gEnemyMonIndex
+_08026D5C: .4byte gBattleMoveDamage
+_08026D60: .4byte gBattleMoveFlags
_08026D64:
ldr r0, _08026DA0 @ =gUnknown_02024D68
lsls r1, r2, 2
@@ -49973,7 +49973,7 @@ _08026D64:
lsrs r0, 7
cmp r0, 0
beq _08026DB4
- ldr r1, _08026DA4 @ =gUnknown_02024BEC
+ ldr r1, _08026DA4 @ =gBattleMoveDamage
movs r3, 0x58
adds r0, r2, 0
muls r0, r3
@@ -49981,13 +49981,13 @@ _08026D64:
ldrh r0, [r0, 0x28]
subs r0, 0x1
str r0, [r1]
- ldr r2, _08026DA8 @ =gUnknown_02024C68
+ ldr r2, _08026DA8 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r1, _08026DAC @ =gUnknown_02024C04
- ldr r2, _08026DB0 @ =gUnknown_02024C08
+ ldr r2, _08026DB0 @ =gEnemyMonIndex
ldrb r0, [r2]
muls r0, r3
add r0, r10
@@ -49996,18 +49996,18 @@ _08026D64:
b _08026DCA
.align 2, 0
_08026DA0: .4byte gUnknown_02024D68
-_08026DA4: .4byte gUnknown_02024BEC
-_08026DA8: .4byte gUnknown_02024C68
+_08026DA4: .4byte gBattleMoveDamage
+_08026DA8: .4byte gBattleMoveFlags
_08026DAC: .4byte gUnknown_02024C04
-_08026DB0: .4byte gUnknown_02024C08
+_08026DB0: .4byte gEnemyMonIndex
_08026DB4:
- ldr r1, _08026DD4 @ =gUnknown_02024BEC
+ ldr r1, _08026DD4 @ =gBattleMoveDamage
movs r0, 0x58
muls r0, r2
add r0, r10
ldrh r0, [r0, 0x28]
str r0, [r1]
- ldr r2, _08026DD8 @ =gUnknown_02024C68
+ ldr r2, _08026DD8 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x10
_08026DC6:
@@ -50020,23 +50020,23 @@ _08026DCA:
str r0, [r1]
b _08026E40
.align 2, 0
-_08026DD4: .4byte gUnknown_02024BEC
-_08026DD8: .4byte gUnknown_02024C68
+_08026DD4: .4byte gBattleMoveDamage
+_08026DD8: .4byte gBattleMoveFlags
_08026DDC: .4byte gUnknown_02024C10
_08026DE0:
- ldr r2, _08026E10 @ =gUnknown_02024C68
+ ldr r2, _08026E10 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- ldr r0, _08026E14 @ =gUnknown_02024C07
+ ldr r0, _08026E14 @ =gPlayerMonIndex
ldrb r0, [r0]
movs r2, 0x58
adds r1, r0, 0
muls r1, r2
add r1, r10
adds r1, 0x2A
- ldr r3, _08026E18 @ =gUnknown_02024C08
+ ldr r3, _08026E18 @ =gEnemyMonIndex
ldrb r0, [r3]
muls r0, r2
add r0, r10
@@ -50049,9 +50049,9 @@ _08026DE0:
movs r0, 0
b _08026E24
.align 2, 0
-_08026E10: .4byte gUnknown_02024C68
-_08026E14: .4byte gUnknown_02024C07
-_08026E18: .4byte gUnknown_02024C08
+_08026E10: .4byte gBattleMoveFlags
+_08026E14: .4byte gPlayerMonIndex
+_08026E18: .4byte gEnemyMonIndex
_08026E1C: .4byte gUnknown_02024D1E
_08026E20:
ldr r1, _08026E50 @ =gUnknown_02024D1E
@@ -50087,9 +50087,9 @@ _08026E54: .4byte gUnknown_02024C10
thumb_func_start atk94_gethalfcurrentenemyhp
atk94_gethalfcurrentenemyhp: @ 8026E58
push {lr}
- ldr r3, _08026E84 @ =gUnknown_02024BEC
+ ldr r3, _08026E84 @ =gBattleMoveDamage
ldr r2, _08026E88 @ =gBattleMons
- ldr r0, _08026E8C @ =gUnknown_02024C08
+ ldr r0, _08026E8C @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -50109,9 +50109,9 @@ _08026E76:
pop {r0}
bx r0
.align 2, 0
-_08026E84: .4byte gUnknown_02024BEC
+_08026E84: .4byte gBattleMoveDamage
_08026E88: .4byte gBattleMons
-_08026E8C: .4byte gUnknown_02024C08
+_08026E8C: .4byte gEnemyMonIndex
_08026E90: .4byte gUnknown_02024C10
thumb_func_end atk94_gethalfcurrentenemyhp
@@ -50124,7 +50124,7 @@ sub_8026E94: @ 8026E94
ands r0, r1
cmp r0, 0
beq _08026EC0
- ldr r2, _08026EB8 @ =gUnknown_02024C68
+ ldr r2, _08026EB8 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -50135,7 +50135,7 @@ sub_8026E94: @ 8026E94
b _08026ED2
.align 2, 0
_08026EB4: .4byte gBattleWeather
-_08026EB8: .4byte gUnknown_02024C68
+_08026EB8: .4byte gBattleMoveFlags
_08026EBC: .4byte gUnknown_02024D1E
_08026EC0:
movs r0, 0x8
@@ -50193,7 +50193,7 @@ _08026F20:
movs r0, 0x18
ands r0, r1
adds r4, r2, 0
- ldr r5, _08026F98 @ =gUnknown_02024C07
+ ldr r5, _08026F98 @ =gPlayerMonIndex
cmp r0, 0
beq _08026FAE
ldr r0, _08026F9C @ =gBattleMons
@@ -50237,7 +50237,7 @@ _08026F20:
ands r1, r0
cmp r1, 0
bne _08026FA8
- ldr r1, _08026FA4 @ =gUnknown_02024BEC
+ ldr r1, _08026FA4 @ =gBattleMoveDamage
ldrh r0, [r3, 0x2C]
lsrs r0, 4
str r0, [r1]
@@ -50247,12 +50247,12 @@ _08026F20:
b _08026FAC
.align 2, 0
_08026F94: .4byte gBattleWeather
-_08026F98: .4byte gUnknown_02024C07
+_08026F98: .4byte gPlayerMonIndex
_08026F9C: .4byte gBattleMons
_08026FA0: .4byte gUnknown_02024C98
-_08026FA4: .4byte gUnknown_02024BEC
+_08026FA4: .4byte gBattleMoveDamage
_08026FA8:
- ldr r1, _08027004 @ =gUnknown_02024BEC
+ ldr r1, _08027004 @ =gBattleMoveDamage
movs r0, 0
_08026FAC:
str r0, [r1]
@@ -50291,7 +50291,7 @@ _08026FAE:
ands r1, r0
cmp r1, 0
bne _08027010
- ldr r1, _08027004 @ =gUnknown_02024BEC
+ ldr r1, _08027004 @ =gBattleMoveDamage
ldrh r0, [r2, 0x2C]
lsrs r0, 4
str r0, [r1]
@@ -50301,21 +50301,21 @@ _08026FAE:
str r0, [r1]
b _08027024
.align 2, 0
-_08027004: .4byte gUnknown_02024BEC
+_08027004: .4byte gBattleMoveDamage
_08027008: .4byte gBattleMons
_0802700C: .4byte gUnknown_02024C98
_08027010:
- ldr r1, _08027018 @ =gUnknown_02024BEC
+ ldr r1, _08027018 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
b _08027024
.align 2, 0
-_08027018: .4byte gUnknown_02024BEC
+_08027018: .4byte gBattleMoveDamage
_0802701C:
- ldr r1, _08027050 @ =gUnknown_02024BEC
+ ldr r1, _08027050 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
- ldr r5, _08027054 @ =gUnknown_02024C07
+ ldr r5, _08027054 @ =gPlayerMonIndex
_08027024:
ldr r0, _08027058 @ =gUnknown_02024C0C
ldrb r1, [r0]
@@ -50327,7 +50327,7 @@ _08027024:
ands r1, r0
cmp r1, 0
beq _0802703E
- ldr r1, _08027050 @ =gUnknown_02024BEC
+ ldr r1, _08027050 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
_0802703E:
@@ -50340,8 +50340,8 @@ _0802703E:
pop {r0}
bx r0
.align 2, 0
-_08027050: .4byte gUnknown_02024BEC
-_08027054: .4byte gUnknown_02024C07
+_08027050: .4byte gBattleMoveDamage
+_08027054: .4byte gPlayerMonIndex
_08027058: .4byte gUnknown_02024C0C
_0802705C: .4byte gBitTable
_08027060: .4byte gUnknown_02024C10
@@ -50354,7 +50354,7 @@ sub_8027064: @ 8027064
mov r6, r9
mov r5, r8
push {r5-r7}
- ldr r4, _08027090 @ =gUnknown_02024C07
+ ldr r4, _08027090 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -50370,7 +50370,7 @@ sub_8027064: @ 8027064
ldr r0, _08027098 @ =gPlayerParty
b _080270AC
.align 2, 0
-_08027090: .4byte gUnknown_02024C07
+_08027090: .4byte gPlayerMonIndex
_08027094: .4byte gUnknown_02024A6A
_08027098: .4byte gPlayerParty
_0802709C:
@@ -50384,7 +50384,7 @@ _0802709C:
ldr r0, _080270D4 @ =gEnemyParty
_080270AC:
adds r5, r1, r0
- ldr r4, _080270D8 @ =gUnknown_02024C08
+ ldr r4, _080270D8 @ =gEnemyMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -50402,7 +50402,7 @@ _080270AC:
.align 2, 0
_080270D0: .4byte gUnknown_02024A6A
_080270D4: .4byte gEnemyParty
-_080270D8: .4byte gUnknown_02024C08
+_080270D8: .4byte gEnemyMonIndex
_080270DC: .4byte gPlayerParty
_080270E0:
ldr r1, _0802714C @ =gUnknown_02024A6A
@@ -50435,7 +50435,7 @@ _080270F0:
movs r1, 0
bl GetMonData
adds r7, r0, 0
- ldr r5, _08027154 @ =gUnknown_02024C08
+ ldr r5, _08027154 @ =gEnemyMonIndex
ldrb r0, [r5]
movs r6, 0x58
muls r0, r6
@@ -50457,7 +50457,7 @@ _080270F0:
.align 2, 0
_0802714C: .4byte gUnknown_02024A6A
_08027150: .4byte gEnemyParty
-_08027154: .4byte gUnknown_02024C08
+_08027154: .4byte gEnemyMonIndex
_08027158: .4byte gBattleMons
_0802715C: .4byte gUnknown_02024C10
_08027160: .4byte gUnknown_081D98C9
@@ -50534,7 +50534,7 @@ _080271F8:
muls r2, r6
adds r2, r4
ldr r1, _0802722C @ =gBitTable
- ldr r0, _08027230 @ =gUnknown_02024C07
+ ldr r0, _08027230 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
@@ -50557,7 +50557,7 @@ _0802721C:
bx r0
.align 2, 0
_0802722C: .4byte gBitTable
-_08027230: .4byte gUnknown_02024C07
+_08027230: .4byte gPlayerMonIndex
_08027234: .4byte gUnknown_02024C10
thumb_func_end sub_8027064
@@ -50603,7 +50603,7 @@ _08027288: .4byte gUnknown_02024A60
_0802728C: .4byte gBattleMons
_08027290:
ldr r4, _0802732C @ =gUnknown_02024A60
- ldr r5, _08027330 @ =gUnknown_02024C07
+ ldr r5, _08027330 @ =gPlayerMonIndex
ldrb r0, [r5]
strb r0, [r4]
ldr r6, _08027334 @ =gUnknown_02024C0C
@@ -50678,7 +50678,7 @@ _08027324:
bx r0
.align 2, 0
_0802732C: .4byte gUnknown_02024A60
-_08027330: .4byte gUnknown_02024C07
+_08027330: .4byte gPlayerMonIndex
_08027334: .4byte gUnknown_02024C0C
_08027338: .4byte gBitTable
_0802733C: .4byte gBattleMons
@@ -50690,7 +50690,7 @@ _08027344: .4byte gUnknown_02024C10
sub_8027348: @ 8027348
push {r4-r6,lr}
ldr r6, _08027378 @ =gUnknown_02024C80
- ldr r4, _0802737C @ =gUnknown_02024C07
+ ldr r4, _0802737C @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_get_per_side_status
movs r5, 0x1
@@ -50703,7 +50703,7 @@ sub_8027348: @ 8027348
ldrb r0, [r0, 0x2]
cmp r0, 0
beq _08027388
- ldr r2, _08027380 @ =gUnknown_02024C68
+ ldr r2, _08027380 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
@@ -50713,8 +50713,8 @@ sub_8027348: @ 8027348
b _080273C0
.align 2, 0
_08027378: .4byte gUnknown_02024C80
-_0802737C: .4byte gUnknown_02024C07
-_08027380: .4byte gUnknown_02024C68
+_0802737C: .4byte gPlayerMonIndex
+_08027380: .4byte gBattleMoveFlags
_08027384: .4byte gUnknown_02024D1E
_08027388:
ldrb r0, [r4]
@@ -50761,7 +50761,7 @@ _080273D8: .4byte gUnknown_02024C10
atk9A_setincreasedcriticalchance: @ 80273DC
push {lr}
ldr r1, _0802740C @ =gBattleMons
- ldr r0, _08027410 @ =gUnknown_02024C07
+ ldr r0, _08027410 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -50774,7 +50774,7 @@ atk9A_setincreasedcriticalchance: @ 80273DC
ands r2, r3
cmp r2, 0
beq _0802741C
- ldr r2, _08027414 @ =gUnknown_02024C68
+ ldr r2, _08027414 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
@@ -50785,8 +50785,8 @@ atk9A_setincreasedcriticalchance: @ 80273DC
b _08027424
.align 2, 0
_0802740C: .4byte gBattleMons
-_08027410: .4byte gUnknown_02024C07
-_08027414: .4byte gUnknown_02024C68
+_08027410: .4byte gPlayerMonIndex
+_08027414: .4byte gBattleMoveFlags
_08027418: .4byte gUnknown_02024D1E
_0802741C:
orrs r1, r3
@@ -50819,7 +50819,7 @@ atk9B_transformdataexecution: @ 8027438
adds r0, 0x1
str r0, [r1]
ldr r7, _0802749C @ =gBattleMons
- ldr r0, _080274A0 @ =gUnknown_02024C08
+ ldr r0, _080274A0 @ =gEnemyMonIndex
mov r12, r0
ldrb r1, [r0]
movs r6, 0x58
@@ -50843,7 +50843,7 @@ atk9B_transformdataexecution: @ 8027438
cmp r2, 0
beq _080274B4
_0802747E:
- ldr r2, _080274AC @ =gUnknown_02024C68
+ ldr r2, _080274AC @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
@@ -50856,13 +50856,13 @@ _08027490: .4byte gUnknown_02024BE8
_08027494: .4byte 0x0000ffff
_08027498: .4byte gUnknown_02024C10
_0802749C: .4byte gBattleMons
-_080274A0: .4byte gUnknown_02024C08
+_080274A0: .4byte gEnemyMonIndex
_080274A4: .4byte gUnknown_02024C98
_080274A8: .4byte 0x000400c0
-_080274AC: .4byte gUnknown_02024C68
+_080274AC: .4byte gBattleMoveFlags
_080274B0: .4byte gUnknown_02024D1E
_080274B4:
- ldr r3, _08027588 @ =gUnknown_02024C07
+ ldr r3, _08027588 @ =gPlayerMonIndex
ldrb r0, [r3]
adds r1, r0, 0
muls r1, r6
@@ -50970,7 +50970,7 @@ _08027564:
adds r0, r5
b _080275A6
.align 2, 0
-_08027588: .4byte gUnknown_02024C07
+_08027588: .4byte gPlayerMonIndex
_0802758C: .4byte gUnknown_02024CA8
_08027590: .4byte gUnknown_030041C0
_08027594: .4byte gUnknown_02024A60
@@ -51011,7 +51011,7 @@ _080275D4: .4byte gUnknown_02024D1E
sub_80275D8: @ 80275D8
push {r4-r7,lr}
ldr r7, _08027608 @ =gBattleMons
- ldr r6, _0802760C @ =gUnknown_02024C07
+ ldr r6, _0802760C @ =gPlayerMonIndex
ldrb r0, [r6]
movs r5, 0x58
muls r0, r5
@@ -51026,7 +51026,7 @@ _080275F2:
ldrh r0, [r3, 0x28]
cmp r0, r2
bhi _08027618
- ldr r1, _08027610 @ =gUnknown_02024BEC
+ ldr r1, _08027610 @ =gBattleMoveDamage
movs r0, 0
str r0, [r1]
ldr r1, _08027614 @ =gUnknown_02024D1E
@@ -51035,11 +51035,11 @@ _080275F2:
b _0802766C
.align 2, 0
_08027608: .4byte gBattleMons
-_0802760C: .4byte gUnknown_02024C07
-_08027610: .4byte gUnknown_02024BEC
+_0802760C: .4byte gPlayerMonIndex
+_08027610: .4byte gBattleMoveDamage
_08027614: .4byte gUnknown_02024D1E
_08027618:
- ldr r4, _0802767C @ =gUnknown_02024BEC
+ ldr r4, _0802767C @ =gBattleMoveDamage
str r1, [r4]
cmp r1, 0
bne _08027624
@@ -51091,7 +51091,7 @@ _0802766C:
pop {r0}
bx r0
.align 2, 0
-_0802767C: .4byte gUnknown_02024BEC
+_0802767C: .4byte gBattleMoveDamage
_08027680: .4byte 0xffff1fff
_08027684: .4byte gUnknown_02024CA8
_08027688: .4byte gUnknown_02024D1E
@@ -51151,7 +51151,7 @@ atk9D_copyattack: @ 80276DC
adds r7, r1, 0
strh r7, [r0]
ldr r5, _0802775C @ =gUnknown_02024C34
- ldr r6, _08027760 @ =gUnknown_02024C08
+ ldr r6, _08027760 @ =gEnemyMonIndex
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -51161,7 +51161,7 @@ atk9D_copyattack: @ 80276DC
cmp r0, 0
bne _08027736
ldr r3, _08027764 @ =gBattleMons
- ldr r2, _08027768 @ =gUnknown_02024C07
+ ldr r2, _08027768 @ =gPlayerMonIndex
ldrb r1, [r2]
movs r0, 0x58
adds r4, r1, 0
@@ -51204,9 +51204,9 @@ _08027736:
_08027754: .4byte gUnknown_02024BE8
_08027758: .4byte 0x0000ffff
_0802775C: .4byte gUnknown_02024C34
-_08027760: .4byte gUnknown_02024C08
+_08027760: .4byte gEnemyMonIndex
_08027764: .4byte gBattleMons
-_08027768: .4byte gUnknown_02024C07
+_08027768: .4byte gPlayerMonIndex
_0802776C: .4byte gUnknown_02024C10
_08027770:
movs r2, 0
@@ -51254,7 +51254,7 @@ _080277AA:
adds r0, 0xC
adds r1, r0
ldr r2, _08027808 @ =gUnknown_02024C34
- ldr r3, _0802780C @ =gUnknown_02024C08
+ ldr r3, _0802780C @ =gEnemyMonIndex
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
@@ -51286,7 +51286,7 @@ _080277AA:
_08027800: .4byte gUnknown_02024C10
_08027804: .4byte gUnknown_02024BE4
_08027808: .4byte gUnknown_02024C34
-_0802780C: .4byte gUnknown_02024C08
+_0802780C: .4byte gEnemyMonIndex
_08027810: .4byte gBattleMoves
_08027814:
mov r4, r9
@@ -51433,7 +51433,7 @@ _080278F8:
ldrh r0, [r4]
movs r1, 0
bl sub_801B5C0
- ldr r1, _0802795C @ =gUnknown_02024C08
+ ldr r1, _0802795C @ =gEnemyMonIndex
strb r0, [r1]
pop {r3}
mov r8, r3
@@ -51450,14 +51450,14 @@ _0802794C: .4byte gUnknown_02024C6C
_08027950: .4byte 0xfffffbff
_08027954: .4byte gUnknown_081D6BBC
_08027958: .4byte gBattleMoves
-_0802795C: .4byte gUnknown_02024C08
+_0802795C: .4byte gEnemyMonIndex
thumb_func_end sub_80278B8
thumb_func_start sub_8027960
sub_8027960: @ 8027960
- ldr r3, _08027980 @ =gUnknown_02024BEC
+ ldr r3, _08027980 @ =gBattleMoveDamage
ldr r2, _08027984 @ =gBattleMons
- ldr r0, _08027988 @ =gUnknown_02024C07
+ ldr r0, _08027988 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -51471,9 +51471,9 @@ sub_8027960: @ 8027960
str r0, [r1]
bx lr
.align 2, 0
-_08027980: .4byte gUnknown_02024BEC
+_08027980: .4byte gBattleMoveDamage
_08027984: .4byte gBattleMons
-_08027988: .4byte gUnknown_02024C07
+_08027988: .4byte gPlayerMonIndex
_0802798C: .4byte gUnknown_02024C10
thumb_func_end sub_8027960
@@ -51490,9 +51490,9 @@ _08027994:
lsls r0, r3, 2
adds r0, r3
lsls r3, r0, 1
- ldr r4, _080279D4 @ =gUnknown_02024BEC
+ ldr r4, _080279D4 @ =gBattleMoveDamage
ldr r2, _080279D8 @ =gBattleMons
- ldr r0, _080279DC @ =gUnknown_02024C07
+ ldr r0, _080279DC @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -51513,16 +51513,16 @@ _08027994:
pop {r0}
bx r0
.align 2, 0
-_080279D4: .4byte gUnknown_02024BEC
+_080279D4: .4byte gBattleMoveDamage
_080279D8: .4byte gBattleMons
-_080279DC: .4byte gUnknown_02024C07
+_080279DC: .4byte gPlayerMonIndex
_080279E0: .4byte gUnknown_02024C10
thumb_func_end atkA0_psywavedamageeffect
thumb_func_start atkA1_counterdamagecalculator
atkA1_counterdamagecalculator: @ 80279E4
push {r4-r6,lr}
- ldr r4, _08027A54 @ =gUnknown_02024C07
+ ldr r4, _08027A54 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -51553,7 +51553,7 @@ atkA1_counterdamagecalculator: @ 80279E4
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08027A98
- ldr r1, _08027A60 @ =gUnknown_02024BEC
+ ldr r1, _08027A60 @ =gBattleMoveDamage
lsls r0, r3, 1
str r0, [r1]
ldr r1, _08027A64 @ =gUnknown_02024C80
@@ -51571,20 +51571,20 @@ atkA1_counterdamagecalculator: @ 80279E4
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08027A6C
- ldr r0, _08027A68 @ =gUnknown_02024C08
+ ldr r0, _08027A68 @ =gEnemyMonIndex
strb r1, [r0]
b _08027A7C
.align 2, 0
-_08027A54: .4byte gUnknown_02024C07
+_08027A54: .4byte gPlayerMonIndex
_08027A58: .4byte gUnknown_02024D28
_08027A5C: .4byte gBattleMons
-_08027A60: .4byte gUnknown_02024BEC
+_08027A60: .4byte gBattleMoveDamage
_08027A64: .4byte gUnknown_02024C80
-_08027A68: .4byte gUnknown_02024C08
+_08027A68: .4byte gEnemyMonIndex
_08027A6C:
- ldr r2, _08027A88 @ =gUnknown_02024C08
+ ldr r2, _08027A88 @ =gEnemyMonIndex
ldr r1, _08027A8C @ =gUnknown_02024D28
- ldr r0, _08027A90 @ =gUnknown_02024C07
+ ldr r0, _08027A90 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -51597,13 +51597,13 @@ _08027A7C:
str r0, [r1]
b _08027AC8
.align 2, 0
-_08027A88: .4byte gUnknown_02024C08
+_08027A88: .4byte gEnemyMonIndex
_08027A8C: .4byte gUnknown_02024D28
-_08027A90: .4byte gUnknown_02024C07
+_08027A90: .4byte gPlayerMonIndex
_08027A94: .4byte gUnknown_02024C10
_08027A98:
ldr r2, _08027AD0 @ =gUnknown_02024D68
- ldr r0, _08027AD4 @ =gUnknown_02024C07
+ ldr r0, _08027AD4 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -51632,14 +51632,14 @@ _08027AC8:
bx r0
.align 2, 0
_08027AD0: .4byte gUnknown_02024D68
-_08027AD4: .4byte gUnknown_02024C07
+_08027AD4: .4byte gPlayerMonIndex
_08027AD8: .4byte gUnknown_02024C10
thumb_func_end atkA1_counterdamagecalculator
thumb_func_start atkA2_mirrorcoatdamagecalculator
atkA2_mirrorcoatdamagecalculator: @ 8027ADC
push {r4-r6,lr}
- ldr r4, _08027B4C @ =gUnknown_02024C07
+ ldr r4, _08027B4C @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -51671,7 +51671,7 @@ atkA2_mirrorcoatdamagecalculator: @ 8027ADC
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08027B90
- ldr r1, _08027B58 @ =gUnknown_02024BEC
+ ldr r1, _08027B58 @ =gBattleMoveDamage
lsls r0, r3, 1
str r0, [r1]
ldr r1, _08027B5C @ =gUnknown_02024C80
@@ -51689,20 +51689,20 @@ atkA2_mirrorcoatdamagecalculator: @ 8027ADC
ldrh r0, [r0, 0x28]
cmp r0, 0
beq _08027B64
- ldr r0, _08027B60 @ =gUnknown_02024C08
+ ldr r0, _08027B60 @ =gEnemyMonIndex
strb r1, [r0]
b _08027B74
.align 2, 0
-_08027B4C: .4byte gUnknown_02024C07
+_08027B4C: .4byte gPlayerMonIndex
_08027B50: .4byte gUnknown_02024D28
_08027B54: .4byte gBattleMons
-_08027B58: .4byte gUnknown_02024BEC
+_08027B58: .4byte gBattleMoveDamage
_08027B5C: .4byte gUnknown_02024C80
-_08027B60: .4byte gUnknown_02024C08
+_08027B60: .4byte gEnemyMonIndex
_08027B64:
- ldr r2, _08027B80 @ =gUnknown_02024C08
+ ldr r2, _08027B80 @ =gEnemyMonIndex
ldr r1, _08027B84 @ =gUnknown_02024D28
- ldr r0, _08027B88 @ =gUnknown_02024C07
+ ldr r0, _08027B88 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 4
adds r0, r1
@@ -51715,13 +51715,13 @@ _08027B74:
str r0, [r1]
b _08027BC0
.align 2, 0
-_08027B80: .4byte gUnknown_02024C08
+_08027B80: .4byte gEnemyMonIndex
_08027B84: .4byte gUnknown_02024D28
-_08027B88: .4byte gUnknown_02024C07
+_08027B88: .4byte gPlayerMonIndex
_08027B8C: .4byte gUnknown_02024C10
_08027B90:
ldr r2, _08027BC8 @ =gUnknown_02024D68
- ldr r0, _08027BCC @ =gUnknown_02024C07
+ ldr r0, _08027BCC @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -51750,7 +51750,7 @@ _08027BC0:
bx r0
.align 2, 0
_08027BC8: .4byte gUnknown_02024D68
-_08027BCC: .4byte gUnknown_02024C07
+_08027BCC: .4byte gPlayerMonIndex
_08027BD0: .4byte gUnknown_02024C10
thumb_func_end atkA2_mirrorcoatdamagecalculator
@@ -51762,7 +51762,7 @@ atkA3_disablelastusedattack: @ 8027BD4
push {r6,r7}
movs r4, 0
ldr r2, _08027CD4 @ =gBattleMons
- ldr r3, _08027CD8 @ =gUnknown_02024C08
+ ldr r3, _08027CD8 @ =gEnemyMonIndex
ldrb r1, [r3]
movs r0, 0x58
muls r0, r1
@@ -51887,7 +51887,7 @@ _08027C28:
b _08027D06
.align 2, 0
_08027CD4: .4byte gBattleMons
-_08027CD8: .4byte gUnknown_02024C08
+_08027CD8: .4byte gEnemyMonIndex
_08027CDC: .4byte gUnknown_02024C34
_08027CE0: .4byte gUnknown_02024CA8
_08027CE4: .4byte gUnknown_030041C0
@@ -51926,7 +51926,7 @@ atkA4_setencore: @ 8027D18
push {r5-r7}
movs r5, 0
ldr r3, _08027E0C @ =gBattleMons
- ldr r4, _08027E10 @ =gUnknown_02024C08
+ ldr r4, _08027E10 @ =gEnemyMonIndex
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
@@ -52046,7 +52046,7 @@ _08027D88:
b _08027E3A
.align 2, 0
_08027E0C: .4byte gBattleMons
-_08027E10: .4byte gUnknown_02024C08
+_08027E10: .4byte gEnemyMonIndex
_08027E14: .4byte gUnknown_02024C34
_08027E18: .4byte gUnknown_02024CA8
_08027E1C: .4byte gUnknown_02024C10
@@ -52083,7 +52083,7 @@ sub_8027E4C: @ 8027E4C
mov r6, r8
push {r6,r7}
ldr r7, _08027EEC @ =gBattleMons
- ldr r0, _08027EF0 @ =gUnknown_02024C08
+ ldr r0, _08027EF0 @ =gEnemyMonIndex
mov r8, r0
ldrb r0, [r0]
movs r6, 0x58
@@ -52098,7 +52098,7 @@ sub_8027E4C: @ 8027E4C
ands r0, r1
cmp r0, 0
bne _08027F18
- ldr r1, _08027EF4 @ =gUnknown_02024C07
+ ldr r1, _08027EF4 @ =gPlayerMonIndex
mov r12, r1
ldrb r0, [r1]
muls r0, r6
@@ -52108,7 +52108,7 @@ sub_8027E4C: @ 8027E4C
ldrh r2, [r0, 0x28]
adds r4, r2
asrs r4, 1
- ldr r5, _08027EF8 @ =gUnknown_02024BEC
+ ldr r5, _08027EF8 @ =gBattleMoveDamage
mov r9, r5
subs r2, r4
str r2, [r5]
@@ -52159,9 +52159,9 @@ sub_8027E4C: @ 8027E4C
b _08027F32
.align 2, 0
_08027EEC: .4byte gBattleMons
-_08027EF0: .4byte gUnknown_02024C08
-_08027EF4: .4byte gUnknown_02024C07
-_08027EF8: .4byte gUnknown_02024BEC
+_08027EF0: .4byte gEnemyMonIndex
+_08027EF4: .4byte gPlayerMonIndex
+_08027EF8: .4byte gBattleMoveDamage
_08027EFC: .4byte 0x02000000
_08027F00: .4byte 0x00016014
_08027F04: .4byte 0x00016015
@@ -52202,7 +52202,7 @@ sub_8027F44: @ 8027F44
mov r5, r8
push {r5-r7}
ldr r1, _08027FA8 @ =gUnknown_02024C3C
- ldr r4, _08027FAC @ =gUnknown_02024C07
+ ldr r4, _08027FAC @ =gPlayerMonIndex
ldrb r0, [r4]
lsls r0, 1
adds r2, r0, r1
@@ -52248,7 +52248,7 @@ _08027F8C:
b _08028110
.align 2, 0
_08027FA8: .4byte gUnknown_02024C3C
-_08027FAC: .4byte gUnknown_02024C07
+_08027FAC: .4byte gPlayerMonIndex
_08027FB0: .4byte 0x0000ffff
_08027FB4: .4byte gUnknown_02024D28
_08027FB8: .4byte gUnknown_02024C10
@@ -52320,7 +52320,7 @@ _0802802C:
ldr r6, _08028120 @ =gTypeEffectiveness
adds r3, r4, r6
ldr r1, _08028124 @ =gUnknown_02024C44
- ldr r2, _08028128 @ =gUnknown_02024C07
+ ldr r2, _08028128 @ =gPlayerMonIndex
ldrb r5, [r2]
lsls r0, r5, 1
adds r0, r1
@@ -52438,7 +52438,7 @@ _08028110:
.align 2, 0
_08028120: .4byte gTypeEffectiveness
_08028124: .4byte gUnknown_02024C44
-_08028128: .4byte gUnknown_02024C07
+_08028128: .4byte gPlayerMonIndex
_0802812C: .4byte gBattleMons
_08028130: .4byte 0x000003e7
_08028134: .4byte gUnknown_02024C10
@@ -52449,7 +52449,7 @@ _08028138: .4byte 0x0000014f
atkA7_setalwayshitflag: @ 802813C
push {r4,lr}
ldr r4, _08028180 @ =gUnknown_02024C98
- ldr r3, _08028184 @ =gUnknown_02024C08
+ ldr r3, _08028184 @ =gEnemyMonIndex
ldrb r1, [r3]
lsls r1, 2
adds r1, r4
@@ -52471,7 +52471,7 @@ atkA7_setalwayshitflag: @ 802813C
subs r0, r1
lsls r0, 2
adds r0, r2
- ldr r1, _0802818C @ =gUnknown_02024C07
+ ldr r1, _0802818C @ =gPlayerMonIndex
ldrb r1, [r1]
strb r1, [r0, 0x15]
ldr r1, _08028190 @ =gUnknown_02024C10
@@ -52483,9 +52483,9 @@ atkA7_setalwayshitflag: @ 802813C
bx r0
.align 2, 0
_08028180: .4byte gUnknown_02024C98
-_08028184: .4byte gUnknown_02024C08
+_08028184: .4byte gEnemyMonIndex
_08028188: .4byte gUnknown_02024CA8
-_0802818C: .4byte gUnknown_02024C07
+_0802818C: .4byte gPlayerMonIndex
_08028190: .4byte gUnknown_02024C10
thumb_func_end atkA7_setalwayshitflag
@@ -52502,7 +52502,7 @@ atkA8_copymovepermanently: @ 8028194
adds r5, r1, 0
strh r5, [r0]
ldr r3, _080282FC @ =gBattleMons
- ldr r2, _08028300 @ =gUnknown_02024C07
+ ldr r2, _08028300 @ =gPlayerMonIndex
ldrb r1, [r2]
movs r0, 0x58
adds r4, r1, 0
@@ -52521,7 +52521,7 @@ atkA8_copymovepermanently: @ 8028194
b _08028320
_080281CC:
ldr r0, _08028304 @ =gUnknown_02024C2C
- ldr r2, _08028308 @ =gUnknown_02024C08
+ ldr r2, _08028308 @ =gEnemyMonIndex
ldrb r1, [r2]
lsls r1, 1
adds r1, r0
@@ -52656,7 +52656,7 @@ _08028282:
movs r0, 0x2
strb r0, [r1, 0x1]
ldr r3, _08028304 @ =gUnknown_02024C2C
- ldr r2, _08028308 @ =gUnknown_02024C08
+ ldr r2, _08028308 @ =gEnemyMonIndex
ldrb r0, [r2]
lsls r0, 1
adds r0, r3
@@ -52679,9 +52679,9 @@ _08028282:
_080282F4: .4byte gUnknown_02024BE8
_080282F8: .4byte 0x0000ffff
_080282FC: .4byte gBattleMons
-_08028300: .4byte gUnknown_02024C07
+_08028300: .4byte gPlayerMonIndex
_08028304: .4byte gUnknown_02024C2C
-_08028308: .4byte gUnknown_02024C08
+_08028308: .4byte gEnemyMonIndex
_0802830C: .4byte gUnknown_02024BE4
_08028310: .4byte gBattleMoves
_08028314: .4byte gUnknown_02024A60
@@ -52844,7 +52844,7 @@ sub_8028420: @ 8028420
push {r5-r7}
movs r6, 0
movs r5, 0
- ldr r0, _080284B0 @ =gUnknown_02024C07
+ ldr r0, _080284B0 @ =gPlayerMonIndex
mov r9, r0
movs r1, 0x58
mov r8, r1
@@ -52895,7 +52895,7 @@ _0802848C:
adds r5, 0x1
cmp r5, 0x3
ble _0802843E
- ldr r0, _080284B0 @ =gUnknown_02024C07
+ ldr r0, _080284B0 @ =gPlayerMonIndex
ldrb r0, [r0]
adds r1, r6, 0
movs r2, 0xFD
@@ -52910,7 +52910,7 @@ _0802848C:
str r0, [r1]
b _08028524
.align 2, 0
-_080284B0: .4byte gUnknown_02024C07
+_080284B0: .4byte gPlayerMonIndex
_080284B4: .4byte gUnknown_02024A8C
_080284B8: .4byte gBitTable
_080284BC: .4byte gUnknown_02024C10
@@ -52930,7 +52930,7 @@ _080284C4:
ldr r4, _08028538 @ =gUnknown_02024BEA
ldr r2, _0802853C @ =gBattleMons
lsls r1, r5, 1
- ldr r0, _08028540 @ =gUnknown_02024C07
+ ldr r0, _08028540 @ =gPlayerMonIndex
ldrb r3, [r0]
movs r0, 0x58
muls r0, r3
@@ -52949,7 +52949,7 @@ _080284C4:
ldrh r0, [r4]
movs r1, 0
bl sub_801B5C0
- ldr r1, _08028550 @ =gUnknown_02024C08
+ ldr r1, _08028550 @ =gEnemyMonIndex
strb r0, [r1]
ldr r3, _08028554 @ =gUnknown_02024C10
ldr r2, [r3]
@@ -52976,18 +52976,18 @@ _08028524:
_08028534: .4byte gBitTable
_08028538: .4byte gUnknown_02024BEA
_0802853C: .4byte gBattleMons
-_08028540: .4byte gUnknown_02024C07
+_08028540: .4byte gPlayerMonIndex
_08028544: .4byte gUnknown_02024BE4
_08028548: .4byte gUnknown_02024C6C
_0802854C: .4byte 0xfffffbff
-_08028550: .4byte gUnknown_02024C08
+_08028550: .4byte gEnemyMonIndex
_08028554: .4byte gUnknown_02024C10
thumb_func_end sub_8028420
thumb_func_start sub_8028558
sub_8028558: @ 8028558
ldr r1, _0802857C @ =gBattleMons
- ldr r0, _08028580 @ =gUnknown_02024C07
+ ldr r0, _08028580 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r2, r0
@@ -53005,19 +53005,19 @@ sub_8028558: @ 8028558
bx lr
.align 2, 0
_0802857C: .4byte gBattleMons
-_08028580: .4byte gUnknown_02024C07
+_08028580: .4byte gPlayerMonIndex
_08028584: .4byte gUnknown_02024C10
thumb_func_end sub_8028558
thumb_func_start b_feature_update_destiny_bond
b_feature_update_destiny_bond: @ 8028588
push {r4,r5,lr}
- ldr r0, _080285D8 @ =gUnknown_02024C07
+ ldr r0, _080285D8 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
lsrs r5, r0, 24
- ldr r4, _080285DC @ =gUnknown_02024C08
+ ldr r4, _080285DC @ =gEnemyMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -53051,8 +53051,8 @@ _080285D2:
pop {r0}
bx r0
.align 2, 0
-_080285D8: .4byte gUnknown_02024C07
-_080285DC: .4byte gUnknown_02024C08
+_080285D8: .4byte gPlayerMonIndex
+_080285DC: .4byte gEnemyMonIndex
_080285E0: .4byte gBattleMons
_080285E4: .4byte gUnknown_02024C6C
thumb_func_end b_feature_update_destiny_bond
@@ -53075,7 +53075,7 @@ _080285FC: .4byte gUnknown_02024C10
atkAC_remaininghptopower: @ 8028600
push {lr}
ldr r2, _08028654 @ =gBattleMons
- ldr r0, _08028658 @ =gUnknown_02024C07
+ ldr r0, _08028658 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
@@ -53117,7 +53117,7 @@ _0802863A:
bx r0
.align 2, 0
_08028654: .4byte gBattleMons
-_08028658: .4byte gUnknown_02024C07
+_08028658: .4byte gPlayerMonIndex
_0802865C: .4byte gUnknown_081FAD26
_08028660: .4byte gUnknown_02024DEC
_08028664: .4byte gUnknown_02024C10
@@ -53132,7 +53132,7 @@ sub_8028668: @ 8028668
push {r5-r7}
sub sp, 0x4
ldr r4, _080287F8 @ =gUnknown_02024C34
- ldr r1, _080287FC @ =gUnknown_02024C08
+ ldr r1, _080287FC @ =gEnemyMonIndex
ldrb r2, [r1]
lsls r0, r2, 1
adds r0, r4
@@ -53316,7 +53316,7 @@ _080287D2:
adds r0, 0x5
str r0, [r1]
ldr r1, _0802880C @ =gBattleMons
- ldr r0, _080287FC @ =gUnknown_02024C08
+ ldr r0, _080287FC @ =gEnemyMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -53331,7 +53331,7 @@ _080287D2:
b _08028842
.align 2, 0
_080287F8: .4byte gUnknown_02024C34
-_080287FC: .4byte gUnknown_02024C08
+_080287FC: .4byte gEnemyMonIndex
_08028800: .4byte 0x0000ffff
_08028804: .4byte gUnknown_02024C98
_08028808: .4byte 0x000400c0
@@ -53387,7 +53387,7 @@ sub_8028858: @ 8028858
_08028872:
ldr r5, _080288B0 @ =gUnknown_02024D1E
strb r7, [r5, 0x5]
- ldr r6, _080288B4 @ =gUnknown_02024C07
+ ldr r6, _080288B4 @ =gPlayerMonIndex
ldrb r0, [r6]
bl battle_side_get_owner
lsls r0, 24
@@ -53417,7 +53417,7 @@ _0802888C:
.align 2, 0
_080288AC: .4byte gUnknown_02024BE6
_080288B0: .4byte gUnknown_02024D1E
-_080288B4: .4byte gUnknown_02024C07
+_080288B4: .4byte gPlayerMonIndex
_080288B8: .4byte gEnemyParty
_080288BC: .4byte gPlayerParty
_080288C0: .4byte gBattleMons
@@ -53431,7 +53431,7 @@ _080288C4:
strb r0, [r5, 0x5]
_080288D4:
ldr r4, _08028934 @ =gUnknown_02024A60
- ldr r0, _08028938 @ =gUnknown_02024C07
+ ldr r0, _08028938 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_get_per_side_status
movs r6, 0x2
@@ -53477,7 +53477,7 @@ _080288D4:
b _08028964
.align 2, 0
_08028934: .4byte gUnknown_02024A60
-_08028938: .4byte gUnknown_02024C07
+_08028938: .4byte gPlayerMonIndex
_0802893C: .4byte 0x02000000
_08028940: .4byte 0x00016003
_08028944: .4byte gBattleTypeFlags
@@ -53518,7 +53518,7 @@ _0802896A:
cmp r5, r0
beq _08028A1E
ldr r2, _080289B4 @ =gUnknown_02024A6A
- ldr r0, _080289B8 @ =gUnknown_02024C07
+ ldr r0, _080289B8 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r2
@@ -53532,7 +53532,7 @@ _0802896A:
_080289AC: .4byte gUnknown_02024D1E
_080289B0: .4byte gBattleMons
_080289B4: .4byte gUnknown_02024A6A
-_080289B8: .4byte gUnknown_02024C07
+_080289B8: .4byte gPlayerMonIndex
_080289BC:
ldr r0, _080289F4 @ =gBattleTypeFlags
ldrh r1, [r0]
@@ -53593,7 +53593,7 @@ _08028A26:
strb r0, [r1, 0x5]
movs r7, 0x3F
ldr r2, _08028AB8 @ =gBattleMons
- ldr r1, _08028ABC @ =gUnknown_02024C07
+ ldr r1, _08028ABC @ =gPlayerMonIndex
ldrb r0, [r1]
movs r6, 0x58
muls r0, r6
@@ -53632,7 +53632,7 @@ _08028A26:
str r2, [r0]
_08028A7E:
ldr r4, _08028AC0 @ =gUnknown_02024A60
- ldr r0, _08028ABC @ =gUnknown_02024C07
+ ldr r0, _08028ABC @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r4]
add r1, sp, 0x4
@@ -53658,7 +53658,7 @@ _08028A7E:
.align 2, 0
_08028AB4: .4byte gUnknown_02024D1E
_08028AB8: .4byte gBattleMons
-_08028ABC: .4byte gUnknown_02024C07
+_08028ABC: .4byte gPlayerMonIndex
_08028AC0: .4byte gUnknown_02024A60
_08028AC4: .4byte gBattleTypeFlags
_08028AC8: .4byte gUnknown_02024C0C
@@ -53670,7 +53670,7 @@ _08028AD0: .4byte gUnknown_02024C10
sub_8028AD4: @ 8028AD4
push {r4-r7,lr}
ldr r7, _08028B24 @ =gBattleMons
- ldr r0, _08028B28 @ =gUnknown_02024C08
+ ldr r0, _08028B28 @ =gEnemyMonIndex
ldrb r3, [r0]
movs r6, 0x58
adds r1, r3, 0
@@ -53710,15 +53710,15 @@ _08028B06:
b _08028B5C
.align 2, 0
_08028B24: .4byte gBattleMons
-_08028B28: .4byte gUnknown_02024C08
+_08028B28: .4byte gEnemyMonIndex
_08028B2C: .4byte gUnknown_02024C98
_08028B30: .4byte 0x000400c0
_08028B34: .4byte gUnknown_02024C10
_08028B38:
orrs r2, r5
str r2, [r4]
- ldr r1, _08028B64 @ =gUnknown_02024BEC
- ldr r0, _08028B68 @ =gUnknown_02024C07
+ ldr r1, _08028B64 @ =gBattleMoveDamage
+ ldr r0, _08028B68 @ =gPlayerMonIndex
ldrb r0, [r0]
muls r0, r6
adds r0, r7
@@ -53739,15 +53739,15 @@ _08028B5C:
pop {r0}
bx r0
.align 2, 0
-_08028B64: .4byte gUnknown_02024BEC
-_08028B68: .4byte gUnknown_02024C07
+_08028B64: .4byte gBattleMoveDamage
+_08028B68: .4byte gPlayerMonIndex
_08028B6C: .4byte gUnknown_02024C10
thumb_func_end sub_8028AD4
thumb_func_start sub_8028B70
sub_8028B70: @ 8028B70
push {r4,lr}
- ldr r4, _08028BC4 @ =gUnknown_02024C07
+ ldr r4, _08028BC4 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
movs r1, 0x1
@@ -53787,7 +53787,7 @@ sub_8028B70: @ 8028B70
str r1, [r3]
b _08028BEE
.align 2, 0
-_08028BC4: .4byte gUnknown_02024C07
+_08028BC4: .4byte gPlayerMonIndex
_08028BC8: .4byte gUnknown_02024C80
_08028BCC: .4byte gUnknown_02024D68
_08028BD0: .4byte gUnknown_02024C10
@@ -53817,7 +53817,7 @@ _08028BF8: .4byte gUnknown_02024C10
thumb_func_start sub_8028BFC
sub_8028BFC: @ 8028BFC
ldr r1, _08028C20 @ =gBattleMons
- ldr r0, _08028C24 @ =gUnknown_02024C08
+ ldr r0, _08028C24 @ =gEnemyMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r2, r0
@@ -53835,7 +53835,7 @@ sub_8028BFC: @ 8028BFC
bx lr
.align 2, 0
_08028C20: .4byte gBattleMons
-_08028C24: .4byte gUnknown_02024C08
+_08028C24: .4byte gEnemyMonIndex
_08028C28: .4byte gUnknown_02024C10
thumb_func_end sub_8028BFC
@@ -53849,7 +53849,7 @@ atkB2_setperishsong: @ 8028C2C
movs r3, 0
ldr r0, _08028C70 @ =gUnknown_02024A68
adds r7, r0, 0
- ldr r0, _08028C74 @ =gUnknown_02024C07
+ ldr r0, _08028C74 @ =gPlayerMonIndex
mov r8, r0
ldrb r1, [r7]
cmp r6, r1
@@ -53879,7 +53879,7 @@ _08028C6C:
b _08028C8C
.align 2, 0
_08028C70: .4byte gUnknown_02024A68
-_08028C74: .4byte gUnknown_02024C07
+_08028C74: .4byte gPlayerMonIndex
_08028C78: .4byte gBattleMons
_08028C7C: .4byte gUnknown_02024CA8
_08028C80: .4byte gUnknown_02024C98
@@ -53942,13 +53942,13 @@ atkB3_rolloutdamagecalculation: @ 8028CE4
mov r7, r9
mov r6, r8
push {r6,r7}
- ldr r0, _08028D08 @ =gUnknown_02024C68
+ ldr r0, _08028D08 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _08028D18
- ldr r0, _08028D0C @ =gUnknown_02024C07
+ ldr r0, _08028D0C @ =gPlayerMonIndex
ldrb r0, [r0]
bl b_cancel_multi_turn_move_maybe
ldr r1, _08028D10 @ =gUnknown_02024C10
@@ -53956,13 +53956,13 @@ atkB3_rolloutdamagecalculation: @ 8028CE4
str r0, [r1]
b _08028E30
.align 2, 0
-_08028D08: .4byte gUnknown_02024C68
-_08028D0C: .4byte gUnknown_02024C07
+_08028D08: .4byte gBattleMoveFlags
+_08028D0C: .4byte gPlayerMonIndex
_08028D10: .4byte gUnknown_02024C10
_08028D14: .4byte BattleScript_1D6F74
_08028D18:
ldr r2, _08028E3C @ =gBattleMons
- ldr r1, _08028E40 @ =gUnknown_02024C07
+ ldr r1, _08028E40 @ =gPlayerMonIndex
ldrb r3, [r1]
movs r5, 0x58
adds r0, r3, 0
@@ -54115,7 +54115,7 @@ _08028E30:
bx r0
.align 2, 0
_08028E3C: .4byte gBattleMons
-_08028E40: .4byte gUnknown_02024C07
+_08028E40: .4byte gPlayerMonIndex
_08028E44: .4byte gUnknown_02024CA8
_08028E48: .4byte gUnknown_02024BE6
_08028E4C: .4byte gUnknown_02024C54
@@ -54129,7 +54129,7 @@ _08028E5C: .4byte gUnknown_02024C10
atkB4_jumpifconfusedandattackmaxed: @ 8028E60
push {r4,r5,lr}
ldr r5, _08028EB0 @ =gBattleMons
- ldr r0, _08028EB4 @ =gUnknown_02024C08
+ ldr r0, _08028EB4 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
adds r3, r1, 0
@@ -54168,7 +54168,7 @@ atkB4_jumpifconfusedandattackmaxed: @ 8028E60
b _08028EC2
.align 2, 0
_08028EB0: .4byte gBattleMons
-_08028EB4: .4byte gUnknown_02024C08
+_08028EB4: .4byte gEnemyMonIndex
_08028EB8: .4byte gUnknown_02024C10
_08028EBC:
ldr r0, [r4]
@@ -54183,14 +54183,14 @@ _08028EC2:
thumb_func_start sub_8028EC8
sub_8028EC8: @ 8028EC8
push {r4,r5,lr}
- ldr r0, _08028EF0 @ =gUnknown_02024C68
+ ldr r0, _08028EF0 @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _08028F04
ldr r2, _08028EF4 @ =gUnknown_02024CA8
- ldr r0, _08028EF8 @ =gUnknown_02024C07
+ ldr r0, _08028EF8 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -54203,14 +54203,14 @@ sub_8028EC8: @ 8028EC8
str r0, [r1]
b _08028F5C
.align 2, 0
-_08028EF0: .4byte gUnknown_02024C68
+_08028EF0: .4byte gBattleMoveFlags
_08028EF4: .4byte gUnknown_02024CA8
-_08028EF8: .4byte gUnknown_02024C07
+_08028EF8: .4byte gPlayerMonIndex
_08028EFC: .4byte gUnknown_02024C10
_08028F00: .4byte BattleScript_1D6F74
_08028F04:
ldr r5, _08028F64 @ =gUnknown_02024CA8
- ldr r4, _08028F68 @ =gUnknown_02024C07
+ ldr r4, _08028F68 @ =gPlayerMonIndex
ldrb r1, [r4]
lsls r0, r1, 3
subs r0, r1
@@ -54262,7 +54262,7 @@ _08028F5C:
bx r0
.align 2, 0
_08028F64: .4byte gUnknown_02024CA8
-_08028F68: .4byte gUnknown_02024C07
+_08028F68: .4byte gPlayerMonIndex
_08028F6C: .4byte gUnknown_02024DEC
_08028F70: .4byte gBattleMoves
_08028F74: .4byte gUnknown_02024BE6
@@ -54284,7 +54284,7 @@ atkB6_happinesstodamagecalculation: @ 8028F7C
bne _08028FBC
ldr r4, _08028FB0 @ =gUnknown_02024DEC
ldr r2, _08028FB4 @ =gBattleMons
- ldr r0, _08028FB8 @ =gUnknown_02024C07
+ ldr r0, _08028FB8 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -54297,11 +54297,11 @@ _08028FA8: .4byte gBattleMoves
_08028FAC: .4byte gUnknown_02024BE6
_08028FB0: .4byte gUnknown_02024DEC
_08028FB4: .4byte gBattleMons
-_08028FB8: .4byte gUnknown_02024C07
+_08028FB8: .4byte gPlayerMonIndex
_08028FBC:
ldr r4, _08028FF0 @ =gUnknown_02024DEC
ldr r2, _08028FF4 @ =gBattleMons
- ldr r0, _08028FF8 @ =gUnknown_02024C07
+ ldr r0, _08028FF8 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -54327,7 +54327,7 @@ _08028FD2:
.align 2, 0
_08028FF0: .4byte gUnknown_02024DEC
_08028FF4: .4byte gBattleMons
-_08028FF8: .4byte gUnknown_02024C07
+_08028FF8: .4byte gPlayerMonIndex
_08028FFC: .4byte gUnknown_02024C10
thumb_func_end atkB6_happinesstodamagecalculation
@@ -54364,9 +54364,9 @@ _0802902C:
.align 2, 0
_08029038: .4byte gUnknown_02024DEC
_0802903C:
- ldr r3, _08029068 @ =gUnknown_02024BEC
+ ldr r3, _08029068 @ =gBattleMoveDamage
ldr r2, _0802906C @ =gBattleMons
- ldr r0, _08029070 @ =gUnknown_02024C08
+ ldr r0, _08029070 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -54389,14 +54389,14 @@ _0802905E:
ldr r0, _08029078 @ =BattleScript_1D6F44
b _080290AC
.align 2, 0
-_08029068: .4byte gUnknown_02024BEC
+_08029068: .4byte gBattleMoveDamage
_0802906C: .4byte gBattleMons
-_08029070: .4byte gUnknown_02024C08
+_08029070: .4byte gEnemyMonIndex
_08029074: .4byte gUnknown_02024C10
_08029078: .4byte BattleScript_1D6F44
_0802907C:
ldr r2, _08029098 @ =gBattleMons
- ldr r0, _0802909C @ =gUnknown_02024C08
+ ldr r0, _0802909C @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -54410,7 +54410,7 @@ _0802907C:
b _080290AC
.align 2, 0
_08029098: .4byte gBattleMons
-_0802909C: .4byte gUnknown_02024C08
+_0802909C: .4byte gEnemyMonIndex
_080290A0: .4byte gUnknown_02024C10
_080290A4: .4byte BattleScript_1D83B5
_080290A8:
@@ -54429,7 +54429,7 @@ _080290B8: .4byte BattleScript_1D839B
thumb_func_start sub_80290BC
sub_80290BC: @ 80290BC
push {r4-r6,lr}
- ldr r4, _080290F0 @ =gUnknown_02024C07
+ ldr r4, _080290F0 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_get_per_side_status
ldr r6, _080290F4 @ =gUnknown_02024C7A
@@ -54443,7 +54443,7 @@ sub_80290BC: @ 80290BC
ands r0, r1
cmp r0, 0
beq _08029100
- ldr r2, _080290F8 @ =gUnknown_02024C68
+ ldr r2, _080290F8 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -54453,9 +54453,9 @@ sub_80290BC: @ 80290BC
strb r0, [r1, 0x5]
b _08029132
.align 2, 0
-_080290F0: .4byte gUnknown_02024C07
+_080290F0: .4byte gPlayerMonIndex
_080290F4: .4byte gUnknown_02024C7A
-_080290F8: .4byte gUnknown_02024C68
+_080290F8: .4byte gBattleMoveFlags
_080290FC: .4byte gUnknown_02024D1E
_08029100:
ldrb r0, [r4]
@@ -54584,7 +54584,7 @@ _080291E4:
strb r3, [r1, 0x4]
movs r0, 0xFF
strb r0, [r1, 0x5]
- ldr r1, _08029258 @ =gUnknown_02024C08
+ ldr r1, _08029258 @ =gEnemyMonIndex
strb r2, [r1]
ldr r0, _0802925C @ =gUnknown_02024A68
ldrb r3, [r0]
@@ -54594,7 +54594,7 @@ _080291E4:
cmp r2, r3
bcs _0802923C
adds r4, r6, 0
- ldr r0, _08029264 @ =gUnknown_02024C07
+ ldr r0, _08029264 @ =gPlayerMonIndex
ldrb r5, [r0]
ldr r1, _08029268 @ =gBitTable
mov r12, r1
@@ -54631,10 +54631,10 @@ _0802923C:
.align 2, 0
_08029250: .4byte gUnknown_02024DEC
_08029254: .4byte gUnknown_030041C0
-_08029258: .4byte gUnknown_02024C08
+_08029258: .4byte gEnemyMonIndex
_0802925C: .4byte gUnknown_02024A68
_08029260: .4byte gUnknown_02024C10
-_08029264: .4byte gUnknown_02024C07
+_08029264: .4byte gPlayerMonIndex
_08029268: .4byte gBitTable
_0802926C: .4byte gUnknown_02024C0C
thumb_func_end atkB9_magnitudedamagecalculation
@@ -54650,7 +54650,7 @@ sub_8029270: @ 8029270
ldrb r0, [r0]
cmp r0, 0x1
bne _080292A0
- ldr r0, _08029298 @ =gUnknown_02024C07
+ ldr r0, _08029298 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -54660,12 +54660,12 @@ sub_8029270: @ 8029270
b _080292BA
.align 2, 0
_08029294: .4byte gUnknown_02024C0E
-_08029298: .4byte gUnknown_02024C07
+_08029298: .4byte gPlayerMonIndex
_0802929C:
movs r0, 0
b _080292BA
_080292A0:
- ldr r0, _080292B4 @ =gUnknown_02024C07
+ ldr r0, _080292B4 @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -54674,22 +54674,22 @@ _080292A0:
movs r0, 0x3
b _080292BA
.align 2, 0
-_080292B4: .4byte gUnknown_02024C07
+_080292B4: .4byte gPlayerMonIndex
_080292B8:
movs r0, 0x2
_080292BA:
bl battle_get_side_with_given_state
- ldr r1, _0802937C @ =gUnknown_02024C08
+ ldr r1, _0802937C @ =gEnemyMonIndex
strb r0, [r1]
ldr r0, _08029380 @ =gUnknown_02024C18
- ldr r1, _0802937C @ =gUnknown_02024C08
+ ldr r1, _0802937C @ =gEnemyMonIndex
mov r9, r1
ldrb r3, [r1]
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
bne _080293BC
- ldr r5, _08029384 @ =gUnknown_02024C07
+ ldr r5, _08029384 @ =gPlayerMonIndex
ldr r0, _08029388 @ =0x02000000
ldr r2, _0802938C @ =0x00016010
adds r1, r3, r2
@@ -54778,9 +54778,9 @@ _0802935A:
str r0, [r7]
b _080293D6
.align 2, 0
-_0802937C: .4byte gUnknown_02024C08
+_0802937C: .4byte gEnemyMonIndex
_08029380: .4byte gUnknown_02024C18
-_08029384: .4byte gUnknown_02024C07
+_08029384: .4byte gPlayerMonIndex
_08029388: .4byte 0x02000000
_0802938C: .4byte 0x00016010
_08029390: .4byte gBattleMons
@@ -54829,7 +54829,7 @@ sub_80293E8: @ 80293E8
ands r0, r1
cmp r0, 0
beq _08029414
- ldr r2, _0802940C @ =gUnknown_02024C68
+ ldr r2, _0802940C @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -54840,7 +54840,7 @@ sub_80293E8: @ 80293E8
b _08029426
.align 2, 0
_08029408: .4byte gBattleWeather
-_0802940C: .4byte gUnknown_02024C68
+_0802940C: .4byte gBattleMoveFlags
_08029410: .4byte gUnknown_02024D1E
_08029414:
movs r0, 0x20
@@ -54869,7 +54869,7 @@ _0802943C: .4byte gUnknown_02024C10
atkBC_maxattackhalvehp: @ 8029440
push {r4,r5,lr}
ldr r5, _0802948C @ =gBattleMons
- ldr r4, _08029490 @ =gUnknown_02024C07
+ ldr r4, _08029490 @ =gPlayerMonIndex
ldrb r0, [r4]
movs r3, 0x58
muls r0, r3
@@ -54889,7 +54889,7 @@ _08029458:
bls _0802949C
movs r0, 0xC
strb r0, [r2, 0x19]
- ldr r1, _08029494 @ =gUnknown_02024BEC
+ ldr r1, _08029494 @ =gBattleMoveDamage
ldrb r0, [r4]
muls r0, r3
adds r0, r5
@@ -54908,8 +54908,8 @@ _08029480:
b _080294B6
.align 2, 0
_0802948C: .4byte gBattleMons
-_08029490: .4byte gUnknown_02024C07
-_08029494: .4byte gUnknown_02024BEC
+_08029490: .4byte gPlayerMonIndex
+_08029494: .4byte gBattleMoveDamage
_08029498: .4byte gUnknown_02024C10
_0802949C:
ldr r3, _080294BC @ =gUnknown_02024C10
@@ -54938,10 +54938,10 @@ atkBD_copyfoestats: @ 80294C0
push {r4-r7,lr}
movs r2, 0
ldr r7, _080294F8 @ =gUnknown_02024C10
- ldr r6, _080294FC @ =gUnknown_02024C07
+ ldr r6, _080294FC @ =gPlayerMonIndex
movs r4, 0x58
ldr r3, _08029500 @ =gUnknown_02024A98
- ldr r5, _08029504 @ =gUnknown_02024C08
+ ldr r5, _08029504 @ =gEnemyMonIndex
_080294CE:
ldrb r0, [r6]
adds r1, r0, 0
@@ -54965,16 +54965,16 @@ _080294CE:
bx r0
.align 2, 0
_080294F8: .4byte gUnknown_02024C10
-_080294FC: .4byte gUnknown_02024C07
+_080294FC: .4byte gPlayerMonIndex
_08029500: .4byte gUnknown_02024A98
-_08029504: .4byte gUnknown_02024C08
+_08029504: .4byte gEnemyMonIndex
thumb_func_end atkBD_copyfoestats
thumb_func_start atkBE_breakfree
atkBE_breakfree: @ 8029508
push {r4,r5,lr}
ldr r1, _08029570 @ =gBattleMons
- ldr r5, _08029574 @ =gUnknown_02024C07
+ ldr r5, _08029574 @ =gPlayerMonIndex
ldrb r2, [r5]
movs r0, 0x58
muls r0, r2
@@ -54989,7 +54989,7 @@ atkBE_breakfree: @ 8029508
ldr r0, _08029578 @ =0xffff1fff
ands r1, r0
str r1, [r3]
- ldr r1, _0802957C @ =gUnknown_02024C08
+ ldr r1, _0802957C @ =gEnemyMonIndex
ldr r2, _08029580 @ =0x02000000
ldrb r0, [r5]
ldr r3, _08029584 @ =0x00016020
@@ -55024,9 +55024,9 @@ atkBE_breakfree: @ 8029508
b _0802963E
.align 2, 0
_08029570: .4byte gBattleMons
-_08029574: .4byte gUnknown_02024C07
+_08029574: .4byte gPlayerMonIndex
_08029578: .4byte 0xffff1fff
-_0802957C: .4byte gUnknown_02024C08
+_0802957C: .4byte gEnemyMonIndex
_08029580: .4byte 0x02000000
_08029584: .4byte 0x00016020
_08029588: .4byte gUnknown_030041C0
@@ -55119,7 +55119,7 @@ _08029648: .4byte gUnknown_02024C10
thumb_func_start sub_802964C
sub_802964C: @ 802964C
ldr r1, _08029670 @ =gBattleMons
- ldr r0, _08029674 @ =gUnknown_02024C07
+ ldr r0, _08029674 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r2, r0
@@ -55137,7 +55137,7 @@ sub_802964C: @ 802964C
bx lr
.align 2, 0
_08029670: .4byte gBattleMons
-_08029674: .4byte gUnknown_02024C07
+_08029674: .4byte gPlayerMonIndex
_08029678: .4byte gUnknown_02024C10
thumb_func_end sub_802964C
@@ -55145,8 +55145,8 @@ _08029678: .4byte gUnknown_02024C10
atkC0_recoverbasedonsunlight: @ 802967C
push {r4-r7,lr}
sub sp, 0x4
- ldr r1, _080296E8 @ =gUnknown_02024C08
- ldr r5, _080296EC @ =gUnknown_02024C07
+ ldr r1, _080296E8 @ =gEnemyMonIndex
+ ldr r5, _080296EC @ =gPlayerMonIndex
ldrb r0, [r5]
strb r0, [r1]
ldr r7, _080296F0 @ =gBattleMons
@@ -55183,9 +55183,9 @@ atkC0_recoverbasedonsunlight: @ 802967C
cmp r0, 0
beq _080296FC
_080296CE:
- ldr r3, _080296F8 @ =gUnknown_02024BEC
+ ldr r3, _080296F8 @ =gBattleMoveDamage
ldr r2, _080296F0 @ =gBattleMons
- ldr r0, _080296EC @ =gUnknown_02024C07
+ ldr r0, _080296EC @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -55196,18 +55196,18 @@ _080296CE:
adds r1, r3, 0
b _08029736
.align 2, 0
-_080296E8: .4byte gUnknown_02024C08
-_080296EC: .4byte gUnknown_02024C07
+_080296E8: .4byte gEnemyMonIndex
+_080296EC: .4byte gPlayerMonIndex
_080296F0: .4byte gBattleMons
_080296F4: .4byte gBattleWeather
-_080296F8: .4byte gUnknown_02024BEC
+_080296F8: .4byte gBattleMoveDamage
_080296FC:
ldrh r1, [r4]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _08029728
- ldr r4, _08029724 @ =gUnknown_02024BEC
+ ldr r4, _08029724 @ =gBattleMoveDamage
ldrb r0, [r5]
muls r0, r6
adds r0, r7
@@ -55221,9 +55221,9 @@ _080296FC:
adds r1, r4, 0
b _08029736
.align 2, 0
-_08029724: .4byte gUnknown_02024BEC
+_08029724: .4byte gBattleMoveDamage
_08029728:
- ldr r1, _08029754 @ =gUnknown_02024BEC
+ ldr r1, _08029754 @ =gBattleMoveDamage
ldrb r0, [r5]
muls r0, r6
adds r0, r7
@@ -55247,7 +55247,7 @@ _08029742:
str r0, [r1]
b _08029776
.align 2, 0
-_08029754: .4byte gUnknown_02024BEC
+_08029754: .4byte gBattleMoveDamage
_08029758: .4byte gUnknown_02024C10
_0802975C:
ldr r3, _08029780 @ =gUnknown_02024C10
@@ -55280,7 +55280,7 @@ sub_8029784: @ 8029784
mov r5, r8
push {r5-r7}
ldr r2, _08029894 @ =gBattleMons
- ldr r0, _08029898 @ =gUnknown_02024C07
+ ldr r0, _08029898 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
adds r4, r1, 0
@@ -55411,7 +55411,7 @@ _08029876:
bx r0
.align 2, 0
_08029894: .4byte gBattleMons
-_08029898: .4byte gUnknown_02024C07
+_08029898: .4byte gPlayerMonIndex
_0802989C: .4byte gUnknown_02024DEC
_080298A0: .4byte 0x02000000
_080298A4: .4byte 0x0001601c
@@ -55423,7 +55423,7 @@ atkC2_selectnexttarget: @ 80298AC
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r0, _08029908 @ =gUnknown_02024C08
+ ldr r0, _08029908 @ =gEnemyMonIndex
movs r1, 0
strb r1, [r0]
ldr r1, _0802990C @ =gUnknown_02024A68
@@ -55434,7 +55434,7 @@ atkC2_selectnexttarget: @ 80298AC
cmp r1, 0
beq _080298F6
adds r3, r6, 0
- ldr r0, _08029914 @ =gUnknown_02024C07
+ ldr r0, _08029914 @ =gPlayerMonIndex
ldrb r5, [r0]
ldr r0, _08029918 @ =gBitTable
mov r12, r0
@@ -55470,10 +55470,10 @@ _080298F6:
pop {r0}
bx r0
.align 2, 0
-_08029908: .4byte gUnknown_02024C08
+_08029908: .4byte gEnemyMonIndex
_0802990C: .4byte gUnknown_02024A68
_08029910: .4byte gUnknown_02024C10
-_08029914: .4byte gUnknown_02024C07
+_08029914: .4byte gPlayerMonIndex
_08029918: .4byte gBitTable
_0802991C: .4byte gUnknown_02024C0C
thumb_func_end atkC2_selectnexttarget
@@ -55488,7 +55488,7 @@ atkC3_setfutureattack: @ 8029920
sub sp, 0x10
ldr r0, _08029958 @ =gUnknown_02024DBC
mov r8, r0
- ldr r7, _0802995C @ =gUnknown_02024C08
+ ldr r7, _0802995C @ =gEnemyMonIndex
ldrb r1, [r7]
adds r0, r1, r0
ldrb r6, [r0]
@@ -55510,7 +55510,7 @@ atkC3_setfutureattack: @ 8029920
b _08029A2E
.align 2, 0
_08029958: .4byte gUnknown_02024DBC
-_0802995C: .4byte gUnknown_02024C08
+_0802995C: .4byte gEnemyMonIndex
_08029960: .4byte gUnknown_02024C10
_08029964:
lsls r1, 1
@@ -55525,7 +55525,7 @@ _08029964:
adds r0, 0x4
ldrb r4, [r7]
adds r0, r4
- ldr r5, _08029A08 @ =gUnknown_02024C07
+ ldr r5, _08029A08 @ =gPlayerMonIndex
ldrb r1, [r5]
strb r1, [r0]
ldrb r0, [r7]
@@ -55593,7 +55593,7 @@ _080299F2:
b _08029A26
.align 2, 0
_08029A04: .4byte gUnknown_02024BE6
-_08029A08: .4byte gUnknown_02024C07
+_08029A08: .4byte gPlayerMonIndex
_08029A0C: .4byte gUnknown_02024C7A
_08029A10: .4byte gBattleMons
_08029A14: .4byte gUnknown_02024D28
@@ -55628,7 +55628,7 @@ atkC4_802B910: @ 8029A48
mov r7, r9
mov r6, r8
push {r6,r7}
- ldr r0, _08029A8C @ =gUnknown_02024C07
+ ldr r0, _08029A8C @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -55638,7 +55638,7 @@ atkC4_802B910: @ 8029A48
ldr r7, _08029A94 @ =gPlayerParty
_08029A62:
ldr r2, _08029A98 @ =gBattleMons
- ldr r0, _08029A9C @ =gUnknown_02024C08
+ ldr r0, _08029A9C @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -55658,11 +55658,11 @@ _08029A62:
ldrb r0, [r2, 0x4]
b _08029C40
.align 2, 0
-_08029A8C: .4byte gUnknown_02024C07
+_08029A8C: .4byte gPlayerMonIndex
_08029A90: .4byte gEnemyParty
_08029A94: .4byte gPlayerParty
_08029A98: .4byte gBattleMons
-_08029A9C: .4byte gUnknown_02024C08
+_08029A9C: .4byte gEnemyMonIndex
_08029AA0: .4byte gUnknown_02024C10
_08029AA4:
ldr r6, _08029BE0 @ =gUnknown_02024D1E
@@ -55725,7 +55725,7 @@ _08029B08:
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
- ldr r6, _08029BE8 @ =gUnknown_02024C07
+ ldr r6, _08029BE8 @ =gPlayerMonIndex
ldrb r0, [r6]
strb r0, [r1, 0x2]
strb r2, [r1, 0x3]
@@ -55735,7 +55735,7 @@ _08029B08:
ldr r0, [r1]
adds r0, 0x9
str r0, [r1]
- ldr r2, _08029BF0 @ =gUnknown_02024BEC
+ ldr r2, _08029BF0 @ =gBattleMoveDamage
mov r8, r2
ldr r5, _08029BF4 @ =gBaseStats
mov r1, r9
@@ -55778,7 +55778,7 @@ _08029B08:
muls r0, r1
str r0, [r2]
ldr r3, _08029C00 @ =gBattleMons
- ldr r1, _08029C04 @ =gUnknown_02024C08
+ ldr r1, _08029C04 @ =gEnemyMonIndex
ldrb r2, [r1]
movs r1, 0x58
muls r1, r2
@@ -55820,14 +55820,14 @@ _08029BD4:
.align 2, 0
_08029BE0: .4byte gUnknown_02024D1E
_08029BE4: .4byte gUnknown_030041C0
-_08029BE8: .4byte gUnknown_02024C07
+_08029BE8: .4byte gPlayerMonIndex
_08029BEC: .4byte gUnknown_02024C10
-_08029BF0: .4byte gUnknown_02024BEC
+_08029BF0: .4byte gBattleMoveDamage
_08029BF4: .4byte gBaseStats
_08029BF8: .4byte gBattleMoves
_08029BFC: .4byte gUnknown_02024BE6
_08029C00: .4byte gBattleMons
-_08029C04: .4byte gUnknown_02024C08
+_08029C04: .4byte gEnemyMonIndex
_08029C08: .4byte gUnknown_02024D28
_08029C0C:
mov r0, r8
@@ -55895,7 +55895,7 @@ _08029C70:
bne _08029CC4
_08029C7C:
ldr r2, _08029C90 @ =gUnknown_02024C98
- ldr r0, _08029C94 @ =gUnknown_02024C07
+ ldr r0, _08029C94 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -55905,10 +55905,10 @@ _08029C7C:
.align 2, 0
_08029C8C: .4byte 0x00000123
_08029C90: .4byte gUnknown_02024C98
-_08029C94: .4byte gUnknown_02024C07
+_08029C94: .4byte gPlayerMonIndex
_08029C98:
ldr r2, _08029CA8 @ =gUnknown_02024C98
- ldr r0, _08029CAC @ =gUnknown_02024C07
+ ldr r0, _08029CAC @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -55917,10 +55917,10 @@ _08029C98:
b _08029CC0
.align 2, 0
_08029CA8: .4byte gUnknown_02024C98
-_08029CAC: .4byte gUnknown_02024C07
+_08029CAC: .4byte gPlayerMonIndex
_08029CB0:
ldr r2, _08029CD0 @ =gUnknown_02024C98
- ldr r0, _08029CD4 @ =gUnknown_02024C07
+ ldr r0, _08029CD4 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -55939,7 +55939,7 @@ _08029CC4:
bx r0
.align 2, 0
_08029CD0: .4byte gUnknown_02024C98
-_08029CD4: .4byte gUnknown_02024C07
+_08029CD4: .4byte gPlayerMonIndex
_08029CD8: .4byte gUnknown_02024C10
thumb_func_end atkC5_hidepreattack
@@ -55966,7 +55966,7 @@ _08029CF4:
bne _08029D4E
_08029D00:
ldr r2, _08029D18 @ =gUnknown_02024C98
- ldr r0, _08029D1C @ =gUnknown_02024C07
+ ldr r0, _08029D1C @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -55977,10 +55977,10 @@ _08029D00:
.align 2, 0
_08029D14: .4byte 0x00000123
_08029D18: .4byte gUnknown_02024C98
-_08029D1C: .4byte gUnknown_02024C07
+_08029D1C: .4byte gPlayerMonIndex
_08029D20:
ldr r2, _08029D34 @ =gUnknown_02024C98
- ldr r0, _08029D38 @ =gUnknown_02024C07
+ ldr r0, _08029D38 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -55990,10 +55990,10 @@ _08029D20:
b _08029D4A
.align 2, 0
_08029D34: .4byte gUnknown_02024C98
-_08029D38: .4byte gUnknown_02024C07
+_08029D38: .4byte gPlayerMonIndex
_08029D3C:
ldr r2, _08029D5C @ =gUnknown_02024C98
- ldr r0, _08029D60 @ =gUnknown_02024C07
+ ldr r0, _08029D60 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -56011,7 +56011,7 @@ _08029D4E:
bx r0
.align 2, 0
_08029D5C: .4byte gUnknown_02024C98
-_08029D60: .4byte gUnknown_02024C07
+_08029D60: .4byte gPlayerMonIndex
_08029D64: .4byte 0xfffbffff
_08029D68: .4byte gUnknown_02024C10
thumb_func_end atkC6_unhidepostattack
@@ -56027,7 +56027,7 @@ atkC7_setminimize: @ 8029D6C
cmp r0, 0
beq _08029D90
ldr r2, _08029DA0 @ =gUnknown_02024C98
- ldr r0, _08029DA4 @ =gUnknown_02024C07
+ ldr r0, _08029DA4 @ =gPlayerMonIndex
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
@@ -56046,7 +56046,7 @@ _08029D90:
.align 2, 0
_08029D9C: .4byte gUnknown_02024C6C
_08029DA0: .4byte gUnknown_02024C98
-_08029DA4: .4byte gUnknown_02024C07
+_08029DA4: .4byte gPlayerMonIndex
_08029DA8: .4byte gUnknown_02024C10
thumb_func_end atkC7_setminimize
@@ -56060,7 +56060,7 @@ sub_8029DAC: @ 8029DAC
ands r0, r1
cmp r0, 0
beq _08029DDC
- ldr r2, _08029DD4 @ =gUnknown_02024C68
+ ldr r2, _08029DD4 @ =gBattleMoveFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
@@ -56071,7 +56071,7 @@ sub_8029DAC: @ 8029DAC
b _08029DEA
.align 2, 0
_08029DD0: .4byte gBattleWeather
-_08029DD4: .4byte gUnknown_02024C68
+_08029DD4: .4byte gBattleMoveFlags
_08029DD8: .4byte gUnknown_02024D1E
_08029DDC:
strh r2, [r3]
@@ -56098,7 +56098,7 @@ _08029E00: .4byte gUnknown_02024C10
atkC9_jumpifattackandspecialattackcannotfall: @ 8029E04
push {r4,lr}
ldr r2, _08029E48 @ =gBattleMons
- ldr r0, _08029E4C @ =gUnknown_02024C08
+ ldr r0, _08029E4C @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -56132,15 +56132,15 @@ atkC9_jumpifattackandspecialattackcannotfall: @ 8029E04
b _08029E84
.align 2, 0
_08029E48: .4byte gBattleMons
-_08029E4C: .4byte gUnknown_02024C08
+_08029E4C: .4byte gEnemyMonIndex
_08029E50: .4byte gUnknown_02024D1E
_08029E54: .4byte gUnknown_02024C10
_08029E58:
ldr r4, _08029E8C @ =gUnknown_02024A60
- ldr r0, _08029E90 @ =gUnknown_02024C07
+ ldr r0, _08029E90 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r4]
- ldr r2, _08029E94 @ =gUnknown_02024BEC
+ ldr r2, _08029E94 @ =gBattleMoveDamage
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
@@ -56162,8 +56162,8 @@ _08029E84:
bx r0
.align 2, 0
_08029E8C: .4byte gUnknown_02024A60
-_08029E90: .4byte gUnknown_02024C07
-_08029E94: .4byte gUnknown_02024BEC
+_08029E90: .4byte gPlayerMonIndex
+_08029E94: .4byte gBattleMoveDamage
_08029E98: .4byte 0x00007fff
_08029E9C: .4byte gUnknown_02024C10
thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
@@ -56171,7 +56171,7 @@ _08029E9C: .4byte gUnknown_02024C10
thumb_func_start atkCA_setforcedtarget
atkCA_setforcedtarget: @ 8029EA0
push {r4,r5,lr}
- ldr r4, _08029EE0 @ =gUnknown_02024C07
+ ldr r4, _08029EE0 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
ldr r5, _08029EE4 @ =gUnknown_02024C80
@@ -56201,7 +56201,7 @@ atkCA_setforcedtarget: @ 8029EA0
pop {r0}
bx r0
.align 2, 0
-_08029EE0: .4byte gUnknown_02024C07
+_08029EE0: .4byte gPlayerMonIndex
_08029EE4: .4byte gUnknown_02024C80
_08029EE8: .4byte gUnknown_02024C10
thumb_func_end atkCA_setforcedtarget
@@ -56210,7 +56210,7 @@ _08029EE8: .4byte gUnknown_02024C10
atkCB_setcharge: @ 8029EEC
push {r4,lr}
ldr r0, _08029F40 @ =gUnknown_02024C98
- ldr r3, _08029F44 @ =gUnknown_02024C07
+ ldr r3, _08029F44 @ =gPlayerMonIndex
ldrb r1, [r3]
lsls r1, 2
adds r1, r0
@@ -56252,7 +56252,7 @@ atkCB_setcharge: @ 8029EEC
bx r0
.align 2, 0
_08029F40: .4byte gUnknown_02024C98
-_08029F44: .4byte gUnknown_02024C07
+_08029F44: .4byte gPlayerMonIndex
_08029F48: .4byte gUnknown_02024CA8
_08029F4C: .4byte gUnknown_02024C10
thumb_func_end atkCB_setcharge
@@ -56276,7 +56276,7 @@ atkCC_callterrainattack: @ 8029F50
ldrh r0, [r4]
movs r1, 0
bl sub_801B5C0
- ldr r1, _08029FB4 @ =gUnknown_02024C08
+ ldr r1, _08029FB4 @ =gEnemyMonIndex
strb r0, [r1]
ldr r3, _08029FB8 @ =gUnknown_081D6BBC
ldr r2, _08029FBC @ =gBattleMoves
@@ -56303,7 +56303,7 @@ _08029FA4: .4byte 0xfffffbff
_08029FA8: .4byte gUnknown_02024BE6
_08029FAC: .4byte gNaturePowerMoves
_08029FB0: .4byte gBattleTerrain
-_08029FB4: .4byte gUnknown_02024C08
+_08029FB4: .4byte gEnemyMonIndex
_08029FB8: .4byte gUnknown_081D6BBC
_08029FBC: .4byte gBattleMoves
_08029FC0: .4byte gUnknown_02024C10
@@ -56314,7 +56314,7 @@ atkCD_cureifburnedparalysedorpoisoned: @ 8029FC4
push {r4-r6,lr}
sub sp, 0x4
ldr r1, _0802A010 @ =gBattleMons
- ldr r3, _0802A014 @ =gUnknown_02024C07
+ ldr r3, _0802A014 @ =gPlayerMonIndex
ldrb r0, [r3]
movs r6, 0x58
muls r0, r6
@@ -56349,7 +56349,7 @@ atkCD_cureifburnedparalysedorpoisoned: @ 8029FC4
b _0802A03A
.align 2, 0
_0802A010: .4byte gBattleMons
-_0802A014: .4byte gUnknown_02024C07
+_0802A014: .4byte gPlayerMonIndex
_0802A018: .4byte gUnknown_02024C10
_0802A01C: .4byte gUnknown_02024A60
_0802A020:
@@ -56379,7 +56379,7 @@ _0802A044: .4byte gUnknown_02024C10
atkCE_settorment: @ 802A048
push {lr}
ldr r1, _0802A080 @ =gBattleMons
- ldr r0, _0802A084 @ =gUnknown_02024C08
+ ldr r0, _0802A084 @ =gEnemyMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -56406,7 +56406,7 @@ atkCE_settorment: @ 802A048
b _0802A098
.align 2, 0
_0802A080: .4byte gBattleMons
-_0802A084: .4byte gUnknown_02024C08
+_0802A084: .4byte gEnemyMonIndex
_0802A088: .4byte gUnknown_02024C10
_0802A08C:
orrs r1, r2
@@ -56426,7 +56426,7 @@ _0802A09C: .4byte gUnknown_02024C10
atkCF_jumpifnodamage: @ 802A0A0
push {lr}
ldr r2, _0802A0CC @ =gUnknown_02024D28
- ldr r0, _0802A0D0 @ =gUnknown_02024C07
+ ldr r0, _0802A0D0 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r1, r0, 4
adds r0, r2, 0x4
@@ -56448,7 +56448,7 @@ _0802A0C0:
b _0802A0F2
.align 2, 0
_0802A0CC: .4byte gUnknown_02024D28
-_0802A0D0: .4byte gUnknown_02024C07
+_0802A0D0: .4byte gPlayerMonIndex
_0802A0D4: .4byte gUnknown_02024C10
_0802A0D8:
ldr r3, _0802A0F8 @ =gUnknown_02024C10
@@ -56475,7 +56475,7 @@ _0802A0F8: .4byte gUnknown_02024C10
atkD0_settaunt: @ 802A0FC
push {r4,lr}
ldr r4, _0802A140 @ =gUnknown_02024CA8
- ldr r3, _0802A144 @ =gUnknown_02024C08
+ ldr r3, _0802A144 @ =gEnemyMonIndex
ldrb r0, [r3]
lsls r1, r0, 3
subs r1, r0
@@ -56509,7 +56509,7 @@ atkD0_settaunt: @ 802A0FC
b _0802A166
.align 2, 0
_0802A140: .4byte gUnknown_02024CA8
-_0802A144: .4byte gUnknown_02024C08
+_0802A144: .4byte gEnemyMonIndex
_0802A148: .4byte gUnknown_02024C10
_0802A14C:
ldr r3, _0802A16C @ =gUnknown_02024C10
@@ -56536,7 +56536,7 @@ _0802A16C: .4byte gUnknown_02024C10
thumb_func_start sub_802A170
sub_802A170: @ 802A170
push {r4,lr}
- ldr r4, _0802A1D8 @ =gUnknown_02024C07
+ ldr r4, _0802A1D8 @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_get_per_side_status
movs r1, 0x2
@@ -56544,7 +56544,7 @@ sub_802A170: @ 802A170
lsls r0, 24
lsrs r0, 24
bl battle_get_side_with_given_state
- ldr r3, _0802A1DC @ =gUnknown_02024C08
+ ldr r3, _0802A1DC @ =gEnemyMonIndex
strb r0, [r3]
ldr r0, _0802A1E0 @ =gBattleTypeFlags
ldrh r1, [r0]
@@ -56585,8 +56585,8 @@ sub_802A170: @ 802A170
str r0, [r1]
b _0802A20E
.align 2, 0
-_0802A1D8: .4byte gUnknown_02024C07
-_0802A1DC: .4byte gUnknown_02024C08
+_0802A1D8: .4byte gPlayerMonIndex
+_0802A1DC: .4byte gEnemyMonIndex
_0802A1E0: .4byte gBattleTypeFlags
_0802A1E4: .4byte gUnknown_02024C0C
_0802A1E8: .4byte gBitTable
@@ -56622,7 +56622,7 @@ sub_802A218: @ 802A218
mov r5, r8
push {r5-r7}
sub sp, 0x4
- ldr r0, _0802A30C @ =gUnknown_02024C07
+ ldr r0, _0802A30C @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
lsls r0, 24
@@ -56642,7 +56642,7 @@ sub_802A218: @ 802A218
cmp r1, r0
bne _0802A2EE
_0802A24C:
- ldr r4, _0802A30C @ =gUnknown_02024C07
+ ldr r4, _0802A30C @ =gPlayerMonIndex
ldrb r0, [r4]
bl battle_side_get_owner
lsls r0, 24
@@ -56678,7 +56678,7 @@ _0802A24C:
_0802A290:
ldr r0, _0802A328 @ =gBattleMons
mov r9, r0
- ldr r1, _0802A30C @ =gUnknown_02024C07
+ ldr r1, _0802A30C @ =gPlayerMonIndex
ldrb r4, [r1]
movs r2, 0x58
mov r8, r2
@@ -56690,7 +56690,7 @@ _0802A290:
adds r1, r3, 0
cmp r1, 0
bne _0802A2BE
- ldr r0, _0802A32C @ =gUnknown_02024C08
+ ldr r0, _0802A32C @ =gEnemyMonIndex
ldrb r0, [r0]
mov r2, r8
muls r2, r0
@@ -56702,7 +56702,7 @@ _0802A290:
_0802A2BE:
cmp r1, 0xAF
beq _0802A2EE
- ldr r7, _0802A32C @ =gUnknown_02024C08
+ ldr r7, _0802A32C @ =gEnemyMonIndex
ldrb r0, [r7]
mov r1, r8
muls r1, r0
@@ -56740,7 +56740,7 @@ _0802A2EE:
str r1, [r3]
b _0802A49A
.align 2, 0
-_0802A30C: .4byte gUnknown_02024C07
+_0802A30C: .4byte gPlayerMonIndex
_0802A310: .4byte gBattleTypeFlags
_0802A314: .4byte 0x00000902
_0802A318: .4byte gTrainerBattleOpponent
@@ -56748,7 +56748,7 @@ _0802A31C: .4byte gUnknown_02024DBC
_0802A320: .4byte gBitTable
_0802A324: .4byte gUnknown_02024A6A
_0802A328: .4byte gBattleMons
-_0802A32C: .4byte gUnknown_02024C08
+_0802A32C: .4byte gEnemyMonIndex
_0802A330: .4byte gUnknown_02024C10
_0802A334:
adds r0, r2, 0
@@ -56783,7 +56783,7 @@ _0802A36C:
ldrh r5, [r5, 0x2E]
mov r10, r5
strh r1, [r6]
- ldr r3, _0802A45C @ =gUnknown_02024C07
+ ldr r3, _0802A45C @ =gPlayerMonIndex
ldrb r0, [r3]
mov r1, r8
muls r1, r0
@@ -56799,7 +56799,7 @@ _0802A36C:
mov r3, r10
strh r3, [r0, 0x2E]
ldr r5, _0802A460 @ =gUnknown_02024A60
- ldr r1, _0802A45C @ =gUnknown_02024C07
+ ldr r1, _0802A45C @ =gPlayerMonIndex
ldrb r0, [r1]
strb r0, [r5]
str r6, [sp]
@@ -56808,7 +56808,7 @@ _0802A36C:
movs r2, 0
movs r3, 0x2
bl dp01_build_cmdbuf_x02_a_b_varargs
- ldr r2, _0802A45C @ =gUnknown_02024C07
+ ldr r2, _0802A45C @ =gPlayerMonIndex
ldrb r0, [r2]
bl dp01_battle_side_mark_buffer_for_execution
ldrb r0, [r7]
@@ -56844,7 +56844,7 @@ _0802A36C:
adds r0, r4
movs r3, 0
strb r3, [r0]
- ldr r3, _0802A45C @ =gUnknown_02024C07
+ ldr r3, _0802A45C @ =gPlayerMonIndex
ldrb r0, [r3]
lsls r0, 1
adds r0, r2
@@ -56893,7 +56893,7 @@ _0802A36C:
b _0802A498
.align 2, 0
_0802A458: .4byte 0x020160f0
-_0802A45C: .4byte gUnknown_02024C07
+_0802A45C: .4byte gPlayerMonIndex
_0802A460: .4byte gUnknown_02024A60
_0802A464: .4byte 0xfffe9f10
_0802A468: .4byte 0x000160e8
@@ -56934,7 +56934,7 @@ _0802A4AC: .4byte gUnknown_02024D1E
sub_802A4B0: @ 802A4B0
push {r4,lr}
ldr r3, _0802A4F0 @ =gBattleMons
- ldr r4, _0802A4F4 @ =gUnknown_02024C08
+ ldr r4, _0802A4F4 @ =gEnemyMonIndex
ldrb r0, [r4]
movs r2, 0x58
muls r0, r2
@@ -56946,7 +56946,7 @@ sub_802A4B0: @ 802A4B0
beq _0802A504
cmp r0, 0x19
beq _0802A504
- ldr r0, _0802A4F8 @ =gUnknown_02024C07
+ ldr r0, _0802A4F8 @ =gPlayerMonIndex
ldrb r0, [r0]
muls r0, r2
adds r0, r3
@@ -56966,8 +56966,8 @@ sub_802A4B0: @ 802A4B0
b _0802A51E
.align 2, 0
_0802A4F0: .4byte gBattleMons
-_0802A4F4: .4byte gUnknown_02024C08
-_0802A4F8: .4byte gUnknown_02024C07
+_0802A4F4: .4byte gEnemyMonIndex
+_0802A4F8: .4byte gPlayerMonIndex
_0802A4FC: .4byte byte_2024C06
_0802A500: .4byte gUnknown_02024C10
_0802A504:
@@ -57007,7 +57007,7 @@ atkD4_802C408: @ 802A528
_0802A53C: .4byte gUnknown_02024C10
_0802A540:
ldr r1, _0802A56C @ =gUnknown_02024DBC
- ldr r4, _0802A570 @ =gUnknown_02024C07
+ ldr r4, _0802A570 @ =gPlayerMonIndex
adds r0, r1, 0
adds r0, 0x20
ldrb r5, [r4]
@@ -57030,7 +57030,7 @@ _0802A540:
b _0802A5F2
.align 2, 0
_0802A56C: .4byte gUnknown_02024DBC
-_0802A570: .4byte gUnknown_02024C07
+_0802A570: .4byte gPlayerMonIndex
_0802A574: .4byte gUnknown_02024A6A
_0802A578:
ldr r1, _0802A5DC @ =gUnknown_030041C0
@@ -57038,7 +57038,7 @@ _0802A578:
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
- ldr r4, _0802A5E0 @ =gUnknown_02024C08
+ ldr r4, _0802A5E0 @ =gEnemyMonIndex
ldrb r0, [r4]
strb r0, [r1, 0x2]
ldr r0, _0802A5E4 @ =gUnknown_02024DBC
@@ -57049,7 +57049,7 @@ _0802A578:
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
- ldr r1, _0802A5E8 @ =gUnknown_02024BEC
+ ldr r1, _0802A5E8 @ =gBattleMoveDamage
ldr r6, _0802A5EC @ =gBattleMons
ldrb r0, [r4]
movs r5, 0x58
@@ -57087,9 +57087,9 @@ _0802A5C4:
b _0802A5F4
.align 2, 0
_0802A5DC: .4byte gUnknown_030041C0
-_0802A5E0: .4byte gUnknown_02024C08
+_0802A5E0: .4byte gEnemyMonIndex
_0802A5E4: .4byte gUnknown_02024DBC
-_0802A5E8: .4byte gUnknown_02024BEC
+_0802A5E8: .4byte gBattleMoveDamage
_0802A5EC: .4byte gBattleMons
_0802A5F0:
adds r0, r2, 0x6
@@ -57105,7 +57105,7 @@ _0802A5F4:
sub_802A5FC: @ 802A5FC
push {lr}
ldr r1, _0802A634 @ =gUnknown_02024C98
- ldr r0, _0802A638 @ =gUnknown_02024C07
+ ldr r0, _0802A638 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
@@ -57132,7 +57132,7 @@ sub_802A5FC: @ 802A5FC
b _0802A64C
.align 2, 0
_0802A634: .4byte gUnknown_02024C98
-_0802A638: .4byte gUnknown_02024C07
+_0802A638: .4byte gPlayerMonIndex
_0802A63C: .4byte gUnknown_02024C10
_0802A640:
orrs r1, r3
@@ -57152,7 +57152,7 @@ _0802A650: .4byte gUnknown_02024C10
atkD6_doubledamagedealtifdamaged: @ 802A654
push {lr}
ldr r3, _0802A6A4 @ =gUnknown_02024D28
- ldr r0, _0802A6A8 @ =gUnknown_02024C07
+ ldr r0, _0802A6A8 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r2, r0, 4
adds r0, r3, 0x4
@@ -57161,7 +57161,7 @@ atkD6_doubledamagedealtifdamaged: @ 802A654
cmp r0, 0
beq _0802A674
adds r0, r2, r3
- ldr r1, _0802A6AC @ =gUnknown_02024C08
+ ldr r1, _0802A6AC @ =gEnemyMonIndex
ldrb r0, [r0, 0xC]
ldrb r1, [r1]
cmp r0, r1
@@ -57174,7 +57174,7 @@ _0802A674:
cmp r0, 0
beq _0802A696
adds r0, r2, r3
- ldr r1, _0802A6AC @ =gUnknown_02024C08
+ ldr r1, _0802A6AC @ =gEnemyMonIndex
ldrb r0, [r0, 0xD]
ldrb r1, [r1]
cmp r0, r1
@@ -57194,8 +57194,8 @@ _0802A696:
bx r0
.align 2, 0
_0802A6A4: .4byte gUnknown_02024D28
-_0802A6A8: .4byte gUnknown_02024C07
-_0802A6AC: .4byte gUnknown_02024C08
+_0802A6A8: .4byte gPlayerMonIndex
+_0802A6AC: .4byte gEnemyMonIndex
_0802A6B0: .4byte 0x02000000
_0802A6B4: .4byte 0x0001601f
_0802A6B8: .4byte gUnknown_02024C10
@@ -57205,7 +57205,7 @@ _0802A6B8: .4byte gUnknown_02024C10
sub_802A6BC: @ 802A6BC
push {r4,lr}
ldr r1, _0802A700 @ =gUnknown_02024C98
- ldr r0, _0802A704 @ =gUnknown_02024C08
+ ldr r0, _0802A704 @ =gEnemyMonIndex
ldrb r3, [r0]
lsls r0, r3, 2
adds r4, r0, r1
@@ -57240,7 +57240,7 @@ _0802A6E4:
b _0802A720
.align 2, 0
_0802A700: .4byte gUnknown_02024C98
-_0802A704: .4byte gUnknown_02024C08
+_0802A704: .4byte gEnemyMonIndex
_0802A708: .4byte gBattleMons
_0802A70C: .4byte gUnknown_02024C10
_0802A710:
@@ -57264,12 +57264,12 @@ _0802A728: .4byte gUnknown_02024C10
atkD8_setdamagetohealthdifference: @ 802A72C
push {lr}
ldr r2, _0802A768 @ =gBattleMons
- ldr r0, _0802A76C @ =gUnknown_02024C08
+ ldr r0, _0802A76C @ =gEnemyMonIndex
ldrb r0, [r0]
movs r1, 0x58
muls r0, r1
adds r3, r0, r2
- ldr r0, _0802A770 @ =gUnknown_02024C07
+ ldr r0, _0802A770 @ =gPlayerMonIndex
ldrb r0, [r0]
muls r0, r1
adds r1, r0, r2
@@ -57293,11 +57293,11 @@ atkD8_setdamagetohealthdifference: @ 802A72C
b _0802A78A
.align 2, 0
_0802A768: .4byte gBattleMons
-_0802A76C: .4byte gUnknown_02024C08
-_0802A770: .4byte gUnknown_02024C07
+_0802A76C: .4byte gEnemyMonIndex
+_0802A770: .4byte gPlayerMonIndex
_0802A774: .4byte gUnknown_02024C10
_0802A778:
- ldr r2, _0802A790 @ =gUnknown_02024BEC
+ ldr r2, _0802A790 @ =gBattleMoveDamage
ldrh r0, [r3, 0x28]
ldrh r1, [r1, 0x28]
subs r0, r1
@@ -57310,7 +57310,7 @@ _0802A78A:
pop {r0}
bx r0
.align 2, 0
-_0802A790: .4byte gUnknown_02024BEC
+_0802A790: .4byte gBattleMoveDamage
_0802A794: .4byte gUnknown_02024C10
thumb_func_end atkD8_setdamagetohealthdifference
@@ -57330,7 +57330,7 @@ atkD9_scaledamagebyhealthratio: @ 802A798
adds r0, r2
ldrb r3, [r0, 0x1]
ldr r2, _0802A7F0 @ =gBattleMons
- ldr r0, _0802A7F4 @ =gUnknown_02024C07
+ ldr r0, _0802A7F4 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
@@ -57358,7 +57358,7 @@ _0802A7E4: .4byte gUnknown_02024DEC
_0802A7E8: .4byte gBattleMoves
_0802A7EC: .4byte gUnknown_02024BE6
_0802A7F0: .4byte gBattleMons
-_0802A7F4: .4byte gUnknown_02024C07
+_0802A7F4: .4byte gPlayerMonIndex
_0802A7F8: .4byte gUnknown_02024C10
thumb_func_end atkD9_scaledamagebyhealthratio
@@ -57366,7 +57366,7 @@ _0802A7F8: .4byte gUnknown_02024C10
atkDA_abilityswap: @ 802A7FC
push {r4-r6,lr}
ldr r5, _0802A860 @ =gBattleMons
- ldr r0, _0802A864 @ =gUnknown_02024C07
+ ldr r0, _0802A864 @ =gPlayerMonIndex
ldrb r0, [r0]
movs r4, 0x58
muls r0, r4
@@ -57376,7 +57376,7 @@ atkDA_abilityswap: @ 802A7FC
ldrb r1, [r2]
cmp r1, 0
bne _0802A824
- ldr r0, _0802A868 @ =gUnknown_02024C08
+ ldr r0, _0802A868 @ =gEnemyMonIndex
ldrb r0, [r0]
muls r0, r4
adds r0, r5
@@ -57387,7 +57387,7 @@ atkDA_abilityswap: @ 802A7FC
_0802A824:
cmp r1, 0x19
beq _0802A844
- ldr r6, _0802A868 @ =gUnknown_02024C08
+ ldr r6, _0802A868 @ =gEnemyMonIndex
ldrb r0, [r6]
muls r0, r4
adds r0, r5
@@ -57395,7 +57395,7 @@ _0802A824:
ldrb r3, [r0]
cmp r3, 0x19
beq _0802A844
- ldr r0, _0802A86C @ =gUnknown_02024C68
+ ldr r0, _0802A86C @ =gBattleMoveFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -57418,9 +57418,9 @@ _0802A844:
b _0802A88A
.align 2, 0
_0802A860: .4byte gBattleMons
-_0802A864: .4byte gUnknown_02024C07
-_0802A868: .4byte gUnknown_02024C08
-_0802A86C: .4byte gUnknown_02024C68
+_0802A864: .4byte gPlayerMonIndex
+_0802A868: .4byte gEnemyMonIndex
+_0802A86C: .4byte gBattleMoveFlags
_0802A870: .4byte gUnknown_02024C10
_0802A874:
ldrb r1, [r2]
@@ -57451,7 +57451,7 @@ atkDB_imprisoneffect: @ 802A894
movs r0, 0
mov r8, r0
ldr r1, _0802A8B8 @ =gUnknown_02024C98
- ldr r0, _0802A8BC @ =gUnknown_02024C07
+ ldr r0, _0802A8BC @ =gPlayerMonIndex
ldrb r2, [r0]
lsls r0, r2, 2
adds r0, r1
@@ -57464,7 +57464,7 @@ atkDB_imprisoneffect: @ 802A894
b _0802A95E
.align 2, 0
_0802A8B8: .4byte gUnknown_02024C98
-_0802A8BC: .4byte gUnknown_02024C07
+_0802A8BC: .4byte gPlayerMonIndex
_0802A8C0:
ldr r0, _0802A8E0 @ =gUnknown_02024C98
mov r2, r9
@@ -57497,7 +57497,7 @@ _0802A8F2:
cmp r8, r0
beq _0802A948
movs r4, 0
- ldr r7, _0802A984 @ =gUnknown_02024C07
+ ldr r7, _0802A984 @ =gPlayerMonIndex
mov r9, r7
ldr r0, _0802A988 @ =gBattleMons
mov r12, r0
@@ -57573,7 +57573,7 @@ _0802A978:
pop {r0}
bx r0
.align 2, 0
-_0802A984: .4byte gUnknown_02024C07
+_0802A984: .4byte gPlayerMonIndex
_0802A988: .4byte gBattleMons
_0802A98C: .4byte gUnknown_02024A68
_0802A990: .4byte gUnknown_02024C10
@@ -57583,7 +57583,7 @@ _0802A990: .4byte gUnknown_02024C10
atkDC_setgrudge: @ 802A994
push {lr}
ldr r1, _0802A9CC @ =gUnknown_02024C98
- ldr r0, _0802A9D0 @ =gUnknown_02024C07
+ ldr r0, _0802A9D0 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
@@ -57610,7 +57610,7 @@ atkDC_setgrudge: @ 802A994
b _0802A9E4
.align 2, 0
_0802A9CC: .4byte gUnknown_02024C98
-_0802A9D0: .4byte gUnknown_02024C07
+_0802A9D0: .4byte gPlayerMonIndex
_0802A9D4: .4byte gUnknown_02024C10
_0802A9D8:
orrs r1, r3
@@ -57643,7 +57643,7 @@ atkDD_weightdamagecalculation: @ 802A9EC
adds r7, r1, 0
adds r4, r6, 0
_0802AA08:
- ldr r0, _0802AA5C @ =gUnknown_02024C08
+ ldr r0, _0802AA5C @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -57682,7 +57682,7 @@ _0802AA36:
_0802AA50: .4byte gWeightDamage
_0802AA54: .4byte 0x0000ffff
_0802AA58: .4byte gBattleMons
-_0802AA5C: .4byte gUnknown_02024C08
+_0802AA5C: .4byte gEnemyMonIndex
_0802AA60: .4byte gUnknown_02024DEC
_0802AA64:
ldr r1, _0802AA7C @ =gUnknown_02024DEC
@@ -57713,7 +57713,7 @@ atkDE_asistattackselect: @ 802AA84
sub sp, 0x8
movs r0, 0
mov r10, r0
- ldr r0, _0802AB9C @ =gUnknown_02024C07
+ ldr r0, _0802AB9C @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_get_per_side_status
movs r1, 0x1
@@ -57728,7 +57728,7 @@ _0802AAAC:
movs r2, 0
_0802AAAE:
ldr r1, _0802ABA8 @ =gUnknown_02024A6A
- ldr r0, _0802AB9C @ =gUnknown_02024C07
+ ldr r0, _0802AB9C @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -57838,7 +57838,7 @@ _0802AB54:
ldrh r0, [r4]
movs r1, 0
bl sub_801B5C0
- ldr r1, _0802ABC4 @ =gUnknown_02024C08
+ ldr r1, _0802ABC4 @ =gEnemyMonIndex
strb r0, [r1]
ldr r1, _0802ABC8 @ =gUnknown_02024C10
ldr r0, [r1]
@@ -57846,7 +57846,7 @@ _0802AB54:
str r0, [r1]
b _0802ABE6
.align 2, 0
-_0802AB9C: .4byte gUnknown_02024C07
+_0802AB9C: .4byte gPlayerMonIndex
_0802ABA0: .4byte gPlayerParty
_0802ABA4: .4byte gEnemyParty
_0802ABA8: .4byte gUnknown_02024A6A
@@ -57856,7 +57856,7 @@ _0802ABB4: .4byte gUnknown_081FACFE
_0802ABB8: .4byte gUnknown_02024C6C
_0802ABBC: .4byte 0xfffffbff
_0802ABC0: .4byte gUnknown_02024BEA
-_0802ABC4: .4byte gUnknown_02024C08
+_0802ABC4: .4byte gEnemyMonIndex
_0802ABC8: .4byte gUnknown_02024C10
_0802ABCC:
ldr r3, _0802ABF8 @ =gUnknown_02024C10
@@ -57888,8 +57888,8 @@ _0802ABF8: .4byte gUnknown_02024C10
thumb_func_start atkDF_setmagiccoat
atkDF_setmagiccoat: @ 802ABFC
push {lr}
- ldr r1, _0802AC44 @ =gUnknown_02024C08
- ldr r3, _0802AC48 @ =gUnknown_02024C07
+ ldr r1, _0802AC44 @ =gEnemyMonIndex
+ ldr r3, _0802AC48 @ =gPlayerMonIndex
ldrb r0, [r3]
strb r0, [r1]
ldr r2, _0802AC4C @ =gUnknown_02024D68
@@ -57924,8 +57924,8 @@ atkDF_setmagiccoat: @ 802ABFC
str r1, [r3]
b _0802AC74
.align 2, 0
-_0802AC44: .4byte gUnknown_02024C08
-_0802AC48: .4byte gUnknown_02024C07
+_0802AC44: .4byte gEnemyMonIndex
+_0802AC48: .4byte gPlayerMonIndex
_0802AC4C: .4byte gUnknown_02024D68
_0802AC50: .4byte gUnknown_02024A7E
_0802AC54: .4byte gUnknown_02024A68
@@ -57955,7 +57955,7 @@ _0802AC7C: .4byte gUnknown_02024C10
atkE0_setstealstatchange: @ 802AC80
push {lr}
ldr r2, _0802ACC4 @ =gUnknown_02024D68
- ldr r3, _0802ACC8 @ =gUnknown_02024C07
+ ldr r3, _0802ACC8 @ =gPlayerMonIndex
ldrb r1, [r3]
lsls r0, r1, 2
adds r0, r1
@@ -57988,7 +57988,7 @@ atkE0_setstealstatchange: @ 802AC80
b _0802ACEE
.align 2, 0
_0802ACC4: .4byte gUnknown_02024D68
-_0802ACC8: .4byte gUnknown_02024C07
+_0802ACC8: .4byte gPlayerMonIndex
_0802ACCC: .4byte gUnknown_02024A7E
_0802ACD0: .4byte gUnknown_02024A68
_0802ACD4: .4byte gUnknown_02024C10
@@ -58041,7 +58041,7 @@ atkE1_802CBE4: @ 802ACFC
strb r0, [r2, 0x2]
movs r0, 0xFF
strb r0, [r2, 0x3]
- ldr r2, _0802ADB0 @ =gUnknown_02024C08
+ ldr r2, _0802ADB0 @ =gEnemyMonIndex
ldr r1, _0802ADB4 @ =gUnknown_02024A68
ldrb r0, [r2]
ldrb r1, [r1]
@@ -58078,7 +58078,7 @@ _0802AD66:
cmp r0, r1
bcc _0802AD44
_0802AD7A:
- ldr r0, _0802ADB0 @ =gUnknown_02024C08
+ ldr r0, _0802ADB0 @ =gEnemyMonIndex
ldrb r0, [r0]
ldrb r2, [r2]
cmp r0, r2
@@ -58103,7 +58103,7 @@ _0802ADA0: .4byte 0x02000000
_0802ADA4: .4byte 0x000160dd
_0802ADA8: .4byte gUnknown_030041C0
_0802ADAC: .4byte gBattleMons
-_0802ADB0: .4byte gUnknown_02024C08
+_0802ADB0: .4byte gEnemyMonIndex
_0802ADB4: .4byte gUnknown_02024A68
_0802ADB8: .4byte gBitTable
_0802ADBC: .4byte gUnknown_02024C0C
@@ -58534,7 +58534,7 @@ atkE8_settypebasedhalvers: @ 802B108
cmp r0, 0xC9
bne _0802B158
ldr r1, _0802B14C @ =gUnknown_02024C98
- ldr r0, _0802B150 @ =gUnknown_02024C07
+ ldr r0, _0802B150 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
@@ -58554,11 +58554,11 @@ atkE8_settypebasedhalvers: @ 802B108
_0802B144: .4byte gBattleMoves
_0802B148: .4byte gUnknown_02024BE6
_0802B14C: .4byte gUnknown_02024C98
-_0802B150: .4byte gUnknown_02024C07
+_0802B150: .4byte gPlayerMonIndex
_0802B154: .4byte gUnknown_02024D1E
_0802B158:
ldr r1, _0802B18C @ =gUnknown_02024C98
- ldr r0, _0802B190 @ =gUnknown_02024C07
+ ldr r0, _0802B190 @ =gPlayerMonIndex
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
@@ -58586,7 +58586,7 @@ _0802B180:
b _0802B1B6
.align 2, 0
_0802B18C: .4byte gUnknown_02024C98
-_0802B190: .4byte gUnknown_02024C07
+_0802B190: .4byte gPlayerMonIndex
_0802B194: .4byte gUnknown_02024D1E
_0802B198: .4byte gUnknown_02024C10
_0802B19C:
@@ -58719,7 +58719,7 @@ atkEA_recycleitem: @ 802B28C
push {r4-r7,lr}
sub sp, 0x4
ldr r7, _0802B2F0 @ =gUnknown_02024A60
- ldr r0, _0802B2F4 @ =gUnknown_02024C07
+ ldr r0, _0802B2F4 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r7]
ldrb r2, [r7]
@@ -58765,7 +58765,7 @@ atkEA_recycleitem: @ 802B28C
b _0802B322
.align 2, 0
_0802B2F0: .4byte gUnknown_02024A60
-_0802B2F4: .4byte gUnknown_02024C07
+_0802B2F4: .4byte gPlayerMonIndex
_0802B2F8: .4byte 0x020160cc
_0802B2FC: .4byte gBattleMons
_0802B300: .4byte gUnknown_02024C04
@@ -58800,7 +58800,7 @@ atkEB_settypetoterrain: @ 802B330
push {r7}
ldr r0, _0802B3A0 @ =gBattleMons
mov r8, r0
- ldr r7, _0802B3A4 @ =gUnknown_02024C07
+ ldr r7, _0802B3A4 @ =gPlayerMonIndex
ldrb r0, [r7]
movs r6, 0x58
muls r0, r6
@@ -58853,7 +58853,7 @@ atkEB_settypetoterrain: @ 802B330
b _0802B3D2
.align 2, 0
_0802B3A0: .4byte gBattleMons
-_0802B3A4: .4byte gUnknown_02024C07
+_0802B3A4: .4byte gPlayerMonIndex
_0802B3A8: .4byte gTerrainToType
_0802B3AC: .4byte gBattleTerrain
_0802B3B0: .4byte gUnknown_030041C0
@@ -58885,7 +58885,7 @@ _0802B3DC: .4byte gUnknown_02024C10
thumb_func_start sub_802B3E0
sub_802B3E0: @ 802B3E0
push {r4,r5,lr}
- ldr r5, _0802B45C @ =gUnknown_02024C07
+ ldr r5, _0802B45C @ =gPlayerMonIndex
ldrb r0, [r5]
bl battle_get_per_side_status
movs r1, 0x2
@@ -58945,7 +58945,7 @@ sub_802B3E0: @ 802B3E0
strb r0, [r5]
b _0802B4AA
.align 2, 0
-_0802B45C: .4byte gUnknown_02024C07
+_0802B45C: .4byte gPlayerMonIndex
_0802B460: .4byte gUnknown_02024A60
_0802B464: .4byte gBattleTypeFlags
_0802B468: .4byte gUnknown_02024C0C
@@ -58984,10 +58984,10 @@ _0802B4B0: .4byte gUnknown_02024C10
sub_802B4B4: @ 802B4B4
push {r4,r5,lr}
ldr r1, _0802B4DC @ =gUnknown_02024C0A
- ldr r3, _0802B4E0 @ =gUnknown_02024C07
+ ldr r3, _0802B4E0 @ =gPlayerMonIndex
ldrb r0, [r3]
strb r0, [r1]
- ldr r2, _0802B4E4 @ =gUnknown_02024C08
+ ldr r2, _0802B4E4 @ =gEnemyMonIndex
lsls r0, 24
lsrs r0, 24
adds r4, r1, 0
@@ -59003,8 +59003,8 @@ sub_802B4B4: @ 802B4B4
b _0802B4FA
.align 2, 0
_0802B4DC: .4byte gUnknown_02024C0A
-_0802B4E0: .4byte gUnknown_02024C07
-_0802B4E4: .4byte gUnknown_02024C08
+_0802B4E0: .4byte gPlayerMonIndex
+_0802B4E4: .4byte gEnemyMonIndex
_0802B4E8: .4byte 0x02000000
_0802B4EC: .4byte 0x00016003
_0802B4F0:
@@ -59034,7 +59034,7 @@ _0802B518: .4byte gUnknown_02024C10
thumb_func_start sub_802B51C
sub_802B51C: @ 802B51C
push {r4,lr}
- ldr r0, _0802B56C @ =gUnknown_02024C07
+ ldr r0, _0802B56C @ =gPlayerMonIndex
ldrb r0, [r0]
bl battle_side_get_owner
movs r1, 0x1
@@ -59073,7 +59073,7 @@ _0802B544:
adds r0, r3
b _0802B598
.align 2, 0
-_0802B56C: .4byte gUnknown_02024C07
+_0802B56C: .4byte gPlayerMonIndex
_0802B570: .4byte gUnknown_02024C80
_0802B574: .4byte gUnknown_02024C7A
_0802B578: .4byte 0x0000fffe
@@ -59115,10 +59115,10 @@ sub_802B5B8: @ 802B5B8
b _0802B94E
_0802B5C6:
ldr r5, _0802B5FC @ =gUnknown_02024A60
- ldr r0, _0802B600 @ =gUnknown_02024C07
+ ldr r0, _0802B600 @ =gPlayerMonIndex
ldrb r0, [r0]
strb r0, [r5]
- ldr r6, _0802B604 @ =gUnknown_02024C08
+ ldr r6, _0802B604 @ =gEnemyMonIndex
movs r1, 0x1
eors r0, r1
strb r0, [r6]
@@ -59139,8 +59139,8 @@ _0802B5C6:
.align 2, 0
_0802B5F8: .4byte gUnknown_02024A64
_0802B5FC: .4byte gUnknown_02024A60
-_0802B600: .4byte gUnknown_02024C07
-_0802B604: .4byte gUnknown_02024C08
+_0802B600: .4byte gPlayerMonIndex
+_0802B604: .4byte gEnemyMonIndex
_0802B608: .4byte gBattleTypeFlags
_0802B60C: .4byte gUnknown_02024C10
_0802B610: .4byte gUnknown_081D9F35
@@ -59229,7 +59229,7 @@ _0802B6B0:
.4byte _0802B72E
_0802B6CC:
ldr r2, _0802B6F4 @ =gBattleMons
- ldr r0, _0802B6F8 @ =gUnknown_02024C08
+ ldr r0, _0802B6F8 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -59250,7 +59250,7 @@ _0802B6CC:
b _0802B72E
.align 2, 0
_0802B6F4: .4byte gBattleMons
-_0802B6F8: .4byte gUnknown_02024C08
+_0802B6F8: .4byte gEnemyMonIndex
_0802B6FC:
bl sav1_map_get_light_level
lsls r0, 24
@@ -59262,7 +59262,7 @@ _0802B6FC:
b _0802B78E
_0802B70E:
ldr r2, _0802B734 @ =gBattleMons
- ldr r0, _0802B738 @ =gUnknown_02024C08
+ ldr r0, _0802B738 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -59282,10 +59282,10 @@ _0802B72E:
b _0802B78E
.align 2, 0
_0802B734: .4byte gBattleMons
-_0802B738: .4byte gUnknown_02024C08
+_0802B738: .4byte gEnemyMonIndex
_0802B73C:
ldr r2, _0802B764 @ =gBattleMons
- ldr r0, _0802B768 @ =gUnknown_02024C08
+ ldr r0, _0802B768 @ =gEnemyMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -59305,7 +59305,7 @@ _0802B760:
b _0802B78E
.align 2, 0
_0802B764: .4byte gBattleMons
-_0802B768: .4byte gUnknown_02024C08
+_0802B768: .4byte gEnemyMonIndex
_0802B76C:
ldr r0, _0802B780 @ =gUnknown_030042E0
ldrb r0, [r0, 0x13]
@@ -59330,7 +59330,7 @@ _0802B78E:
movs r1, 0xA
bl __divsi3
ldr r5, _0802B7F8 @ =gBattleMons
- ldr r1, _0802B7FC @ =gUnknown_02024C08
+ ldr r1, _0802B7FC @ =gEnemyMonIndex
ldrb r1, [r1]
movs r7, 0x58
adds r4, r1, 0
@@ -59378,7 +59378,7 @@ _0802B7DC:
.align 2, 0
_0802B7F4: .4byte gBallCatchBonuses
_0802B7F8: .4byte gBattleMons
-_0802B7FC: .4byte gUnknown_02024C08
+_0802B7FC: .4byte gEnemyMonIndex
_0802B800: .4byte gUnknown_02024C04
_0802B804: .4byte gUnknown_030042E0
_0802B808:
@@ -59405,7 +59405,7 @@ _0802B81C:
ldr r0, _0802B86C @ =gUnknown_081D9EC2
str r0, [r1]
ldr r1, _0802B870 @ =gUnknown_02024A6A
- ldr r0, _0802B874 @ =gUnknown_02024C08
+ ldr r0, _0802B874 @ =gEnemyMonIndex
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -59429,7 +59429,7 @@ _0802B864: .4byte gUnknown_02024A60
_0802B868: .4byte gUnknown_02024C10
_0802B86C: .4byte gUnknown_081D9EC2
_0802B870: .4byte gUnknown_02024A6A
-_0802B874: .4byte gUnknown_02024C08
+_0802B874: .4byte gEnemyMonIndex
_0802B878: .4byte gEnemyParty
_0802B87C: .4byte gUnknown_02024C04
_0802B880:
@@ -59482,7 +59482,7 @@ _0802B8CC:
ldr r0, _0802B924 @ =gUnknown_081D9EC2
str r0, [r1]
ldr r1, _0802B928 @ =gUnknown_02024A6A
- ldr r0, _0802B92C @ =gUnknown_02024C08
+ ldr r0, _0802B92C @ =gEnemyMonIndex
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -59510,7 +59510,7 @@ _0802B91C: .4byte gUnknown_02024A60
_0802B920: .4byte gUnknown_02024C10
_0802B924: .4byte gUnknown_081D9EC2
_0802B928: .4byte gUnknown_02024A6A
-_0802B92C: .4byte gUnknown_02024C08
+_0802B92C: .4byte gEnemyMonIndex
_0802B930: .4byte gEnemyParty
_0802B934: .4byte gUnknown_02024D1E
_0802B938:
@@ -59545,7 +59545,7 @@ sub_802B960: @ 802B960
push {r5,r6}
ldr r0, _0802B9C8 @ =gUnknown_02024A6A
mov r9, r0
- ldr r5, _0802B9CC @ =gUnknown_02024C07
+ ldr r5, _0802B9CC @ =gPlayerMonIndex
ldrb r0, [r5]
movs r4, 0x1
eors r0, r4
@@ -59591,7 +59591,7 @@ sub_802B960: @ 802B960
bx r0
.align 2, 0
_0802B9C8: .4byte gUnknown_02024A6A
-_0802B9CC: .4byte gUnknown_02024C07
+_0802B9CC: .4byte gPlayerMonIndex
_0802B9D0: .4byte gEnemyParty
_0802B9D4: .4byte gUnknown_030042E0
_0802B9D8: .4byte gBattleMons
@@ -59602,7 +59602,7 @@ _0802B9DC: .4byte gUnknown_02024C10
sub_802B9E0: @ 802B9E0
push {r4-r6,lr}
ldr r4, _0802BA20 @ =gBattleMons
- ldr r6, _0802BA24 @ =gUnknown_02024C08
+ ldr r6, _0802BA24 @ =gEnemyMonIndex
ldrb r0, [r6]
movs r5, 0x58
muls r0, r5
@@ -59632,7 +59632,7 @@ sub_802B9E0: @ 802B9E0
b _0802BA82
.align 2, 0
_0802BA20: .4byte gBattleMons
-_0802BA24: .4byte gUnknown_02024C08
+_0802BA24: .4byte gEnemyMonIndex
_0802BA28: .4byte gUnknown_02024C10
_0802BA2C:
ldrb r0, [r6]
@@ -59726,7 +59726,7 @@ _0802BAC6:
cmp r0, 0
bne _0802BBC4
ldr r4, _0802BB08 @ =gBattleMons
- ldr r6, _0802BB0C @ =gUnknown_02024C08
+ ldr r6, _0802BB0C @ =gEnemyMonIndex
ldrb r0, [r6]
movs r5, 0x58
muls r0, r5
@@ -59751,7 +59751,7 @@ _0802BAC6:
.align 2, 0
_0802BB04: .4byte gPaletteFade
_0802BB08: .4byte gBattleMons
-_0802BB0C: .4byte gUnknown_02024C08
+_0802BB0C: .4byte gEnemyMonIndex
_0802BB10:
ldr r0, _0802BB7C @ =gPaletteFade
ldrb r1, [r0, 0x7]
@@ -60072,7 +60072,7 @@ _0802BD84:
b _0802BEDA
_0802BD92:
ldr r7, _0802BE38 @ =gUnknown_02024A6A
- ldr r0, _0802BE3C @ =gUnknown_02024C07
+ ldr r0, _0802BE3C @ =gPlayerMonIndex
mov r10, r0
ldrb r0, [r0]
movs r4, 0x1
@@ -60149,7 +60149,7 @@ _0802BD92:
.align 2, 0
_0802BE34: .4byte gPaletteFade
_0802BE38: .4byte gUnknown_02024A6A
-_0802BE3C: .4byte gUnknown_02024C07
+_0802BE3C: .4byte gPlayerMonIndex
_0802BE40: .4byte gEnemyParty
_0802BE44: .4byte 0x02016079
_0802BE48: .4byte sub_800F808
@@ -60167,7 +60167,7 @@ _0802BE50:
cmp r0, 0
bne _0802BEDA
ldr r2, _0802BE94 @ =gUnknown_02024A6A
- ldr r0, _0802BE98 @ =gUnknown_02024C07
+ ldr r0, _0802BE98 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x1
eors r0, r1
@@ -60187,7 +60187,7 @@ _0802BE88: .4byte gMain
_0802BE8C: .4byte sub_800F808
_0802BE90: .4byte gPaletteFade
_0802BE94: .4byte gUnknown_02024A6A
-_0802BE98: .4byte gUnknown_02024C07
+_0802BE98: .4byte gPlayerMonIndex
_0802BE9C: .4byte gEnemyParty
_0802BEA0: .4byte 0x02016079
_0802BEA4:
@@ -60233,12 +60233,12 @@ _0802BEEC: .4byte gUnknown_02024C10
thumb_func_start sub_802BEF0
sub_802BEF0: @ 802BEF0
ldr r2, _0802BF10 @ =gBattleMons
- ldr r0, _0802BF14 @ =gUnknown_02024C07
+ ldr r0, _0802BF14 @ =gPlayerMonIndex
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
- ldr r0, _0802BF18 @ =gUnknown_02024BEC
+ ldr r0, _0802BF18 @ =gBattleMoveDamage
ldr r2, [r0]
ldrh r0, [r1, 0x28]
subs r0, r2
@@ -60250,15 +60250,15 @@ sub_802BEF0: @ 802BEF0
bx lr
.align 2, 0
_0802BF10: .4byte gBattleMons
-_0802BF14: .4byte gUnknown_02024C07
-_0802BF18: .4byte gUnknown_02024BEC
+_0802BF14: .4byte gPlayerMonIndex
+_0802BF18: .4byte gBattleMoveDamage
_0802BF1C: .4byte gUnknown_02024C10
thumb_func_end sub_802BEF0
thumb_func_start sub_802BF20
sub_802BF20: @ 802BF20
ldr r1, _0802BF3C @ =gBattleMons
- ldr r0, _0802BF40 @ =gUnknown_02024C07
+ ldr r0, _0802BF40 @ =gPlayerMonIndex
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -60273,7 +60273,7 @@ sub_802BF20: @ 802BF20
bx lr
.align 2, 0
_0802BF3C: .4byte gBattleMons
-_0802BF40: .4byte gUnknown_02024C07
+_0802BF40: .4byte gPlayerMonIndex
_0802BF44: .4byte gUnknown_02024C10
thumb_func_end sub_802BF20
@@ -78510,7 +78510,7 @@ _08035474:
ands r0, r1
cmp r0, 0
beq _08035494
- ldr r1, _080354EC @ =gUnknown_02024C08
+ ldr r1, _080354EC @ =gEnemyMonIndex
ldrb r0, [r6]
strb r0, [r1]
_08035494:
@@ -78526,7 +78526,7 @@ _08035494:
beq _080354CE
movs r0, 0
bl battle_get_side_with_given_state
- ldr r5, _080354EC @ =gUnknown_02024C08
+ ldr r5, _080354EC @ =gEnemyMonIndex
strb r0, [r5]
ldr r0, _080354F0 @ =gUnknown_02024C0C
ldrb r1, [r0]
@@ -78542,7 +78542,7 @@ _08035494:
bl battle_get_side_with_given_state
strb r0, [r5]
_080354CE:
- ldr r0, _080354EC @ =gUnknown_02024C08
+ ldr r0, _080354EC @ =gEnemyMonIndex
ldrb r0, [r0]
lsls r0, 8
orrs r4, r0
@@ -78555,7 +78555,7 @@ _080354E0:
b _0803558A
.align 2, 0
_080354E8: .4byte gBattleMoves
-_080354EC: .4byte gUnknown_02024C08
+_080354EC: .4byte gEnemyMonIndex
_080354F0: .4byte gUnknown_02024C0C
_080354F4: .4byte gBitTable
_080354F8:
@@ -81840,7 +81840,7 @@ _08036F04:
adds r0, r4
movs r1, 0x1
strb r1, [r0]
- ldr r0, _08037010 @ =gUnknown_02024C68
+ ldr r0, _08037010 @ =gBattleMoveFlags
strb r2, [r0]
ldr r0, _08037014 @ =gCritMultiplier
strb r1, [r0]
@@ -81895,7 +81895,7 @@ _08036F2C:
beq _08036FE8
movs r5, 0
mov r9, r6
- ldr r4, _08037024 @ =gUnknown_02024BEC
+ ldr r4, _08037024 @ =gBattleMoveDamage
mov r8, r4
ldr r6, _08037028 @ =gUnknown_02024A60
_08036F90:
@@ -81961,12 +81961,12 @@ _08037000: .4byte gUnknown_02024DEC
_08037004: .4byte 0x02000000
_08037008: .4byte 0x0001601c
_0803700C: .4byte 0x0001601f
-_08037010: .4byte gUnknown_02024C68
+_08037010: .4byte gBattleMoveFlags
_08037014: .4byte gCritMultiplier
_08037018: .4byte gEnemyParty
_0803701C: .4byte gUnknown_02024A6A
_08037020: .4byte 0x00016068
-_08037024: .4byte gUnknown_02024BEC
+_08037024: .4byte gBattleMoveDamage
_08037028: .4byte gUnknown_02024A60
_0803702C: .4byte gBattleMoves
thumb_func_end sub_8036CD4
diff --git a/asm/rom_8080874.s b/asm/rom_8080874.s
index 77dad9f9e..28ea3a69f 100644
--- a/asm/rom_8080874.s
+++ b/asm/rom_8080874.s
@@ -6,185 +6,6 @@
.text
- thumb_func_start palette_bg_fill_white
-palette_bg_fill_white: @ 8080874
- push {lr}
- sub sp, 0x4
- ldr r0, _0808088C @ =0x7fff7fff
- str r0, [sp]
- ldr r1, _08080890 @ =gPlttBufferFaded
- ldr r2, _08080894 @ =0x01000100
- mov r0, sp
- bl CpuFastSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0808088C: .4byte 0x7fff7fff
-_08080890: .4byte gPlttBufferFaded
-_08080894: .4byte 0x01000100
- thumb_func_end palette_bg_fill_white
-
- thumb_func_start palette_bg_fill_black
-palette_bg_fill_black: @ 8080898
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, _080808B0 @ =gPlttBufferFaded
- ldr r2, _080808B4 @ =0x01000100
- mov r0, sp
- bl CpuFastSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080808B0: .4byte gPlttBufferFaded
-_080808B4: .4byte 0x01000100
- thumb_func_end palette_bg_fill_black
-
- thumb_func_start pal_fill_for_map_transition
-pal_fill_for_map_transition: @ 80808B8
- push {r4,lr}
- bl get_map_light_from_warp0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sav1_map_get_light_level
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl fade_type_for_given_maplight_pair
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080808E2
- cmp r0, 0x1
- beq _080808F0
- b _080808FC
-_080808E2:
- movs r0, 0
- movs r1, 0
- bl fade_screen
- bl palette_bg_fill_black
- b _080808FC
-_080808F0:
- movs r0, 0x2
- movs r1, 0
- bl fade_screen
- bl palette_bg_fill_white
-_080808FC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end pal_fill_for_map_transition
-
- thumb_func_start pal_fill_black
-pal_fill_black: @ 8080904
- push {lr}
- movs r0, 0
- movs r1, 0
- bl fade_screen
- bl palette_bg_fill_black
- pop {r0}
- bx r0
- thumb_func_end pal_fill_black
-
- thumb_func_start fade_8080918
-fade_8080918: @ 8080918
- push {r4,lr}
- bl sav1_map_get_light_level
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl warp1_get_mapheader
- ldrb r1, [r0, 0x17]
- adds r0, r4, 0
- bl sub_810CDB8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0808093E
- cmp r0, 0x1
- beq _08080948
- b _08080950
-_0808093E:
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- b _08080950
-_08080948:
- movs r0, 0x3
- movs r1, 0
- bl fade_screen
-_08080950:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end fade_8080918
-
- thumb_func_start sub_8080958
-sub_8080958: @ 8080958
- push {lr}
- lsls r0, 24
- movs r1, 0
- cmp r0, 0
- bne _08080964
- movs r1, 0x1
-_08080964:
- adds r0, r1, 0
- bl sub_8059B88
- pop {r0}
- bx r0
- thumb_func_end sub_8080958
-
- thumb_func_start task0A_asap_script_env_2_enable_and_set_ctx_running
-task0A_asap_script_env_2_enable_and_set_ctx_running: @ 8080970
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080988
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_08080988:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running
-
- thumb_func_start sub_8080990
-sub_8080990: @ 8080990
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl pal_fill_black
- ldr r0, _080809AC @ =task0A_asap_script_env_2_enable_and_set_ctx_running
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080809AC: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
- thumb_func_end sub_8080990
-
- thumb_func_start sub_80809B0
-sub_80809B0: @ 80809B0
- push {lr}
- bl ScriptContext2_Enable
- bl pal_fill_black
- ldr r0, _080809C8 @ =task0A_asap_script_env_2_enable_and_set_ctx_running
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080809C8: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
- thumb_func_end sub_80809B0
-
thumb_func_start task_mpl_807DD60
task_mpl_807DD60: @ 80809CC
push {r4,r5,lr}
diff --git a/asm/rom_8094928.s b/asm/rom_8094928.s
index d272b277a..a9d0e3dcc 100644
--- a/asm/rom_8094928.s
+++ b/asm/rom_8094928.s
@@ -6,320 +6,6 @@
.text
- thumb_func_start unref_sub_8094928
-unref_sub_8094928: @ 8094928
- push {lr}
- ldr r1, _08094938 @ =gPokemonStorage
- ldr r2, _0809493C @ =0x000083d0
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_08094938: .4byte gPokemonStorage
-_0809493C: .4byte 0x000083d0
- thumb_func_end unref_sub_8094928
-
- thumb_func_start unref_sub_8094940
-unref_sub_8094940: @ 8094940
- push {lr}
- adds r1, r0, 0
- ldr r0, _08094950 @ =gPokemonStorage
- ldr r2, _08094954 @ =0x000083d0
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_08094950: .4byte gPokemonStorage
-_08094954: .4byte 0x000083d0
- thumb_func_end unref_sub_8094940
-
- thumb_func_start sub_8094958
-sub_8094958: @ 8094958
- push {r4,lr}
- ldr r4, _08094974 @ =gUnknown_02038470
- bl sub_803FBBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8094998
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08094974: .4byte gUnknown_02038470
- thumb_func_end sub_8094958
-
- thumb_func_start sub_8094978
-sub_8094978: @ 8094978
- push {lr}
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r2, 1
- adds r0, r2
- ldr r3, _08094994 @ =0x0201606c
- adds r0, r3
- bl sub_8094A74
- pop {r0}
- bx r0
- .align 2, 0
-_08094994: .4byte 0x0201606c
- thumb_func_end sub_8094978
-
- thumb_func_start sub_8094998
-sub_8094998: @ 8094998
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080949CE
- cmp r4, 0
- beq _080949C0
- movs r0, 0x30
- strb r0, [r6]
- movs r0, 0x45
- strb r0, [r6, 0x1]
- movs r0, 0x12
- strb r0, [r6, 0x2]
- b _08094A68
-_080949C0:
- movs r0, 0x3
- strb r0, [r6]
- movs r0, 0x12
- strb r0, [r6, 0x1]
- movs r0, 0x45
- strb r0, [r6, 0x2]
- b _08094A68
-_080949CE:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08094A0C
- movs r5, 0x1
- movs r0, 0
- bl battle_get_side_with_given_state
- mov r2, sp
- ldr r1, _08094A08 @ =gUnknown_02024A6A
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r0, [r0]
- strb r0, [r2]
- movs r4, 0
- mov r1, sp
-_080949F2:
- ldrb r0, [r1]
- cmp r4, r0
- beq _08094A00
- mov r2, sp
- adds r0, r2, r5
- strb r4, [r0]
- adds r5, 0x1
-_08094A00:
- adds r4, 0x1
- cmp r4, 0x5
- ble _080949F2
- b _08094A50
- .align 2, 0
-_08094A08: .4byte gUnknown_02024A6A
-_08094A0C:
- movs r5, 0x2
- movs r0, 0
- bl battle_get_side_with_given_state
- mov r1, sp
- ldr r4, _08094A70 @ =gUnknown_02024A6A
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1]
- movs r0, 0x2
- bl battle_get_side_with_given_state
- mov r1, sp
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1, 0x1]
- movs r4, 0
-_08094A36:
- ldrb r0, [r1]
- cmp r4, r0
- beq _08094A4A
- ldrb r0, [r1, 0x1]
- cmp r4, r0
- beq _08094A4A
- mov r2, sp
- adds r0, r2, r5
- strb r4, [r0]
- adds r5, 0x1
-_08094A4A:
- adds r4, 0x1
- cmp r4, 0x5
- ble _08094A36
-_08094A50:
- movs r4, 0
- mov r3, sp
-_08094A54:
- adds r0, r6, r4
- ldrb r1, [r3]
- lsls r1, 4
- ldrb r2, [r3, 0x1]
- orrs r1, r2
- strb r1, [r0]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x2
- ble _08094A54
-_08094A68:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08094A70: .4byte gUnknown_02024A6A
- thumb_func_end sub_8094998
-
- thumb_func_start sub_8094A74
-sub_8094A74: @ 8094A74
- push {r4-r7,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r0, r2, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r0, 24
- lsrs r0, 24
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _08094A9C
- movs r0, 0
- bl battle_get_side_with_given_state
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- b _08094AA8
-_08094A9C:
- movs r0, 0x1
- bl battle_get_side_with_given_state
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x3
-_08094AA8:
- bl battle_get_side_with_given_state
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08094ADC
- cmp r7, 0
- beq _08094ACE
- movs r0, 0x30
- strb r0, [r5]
- movs r0, 0x45
- strb r0, [r5, 0x1]
- movs r0, 0x12
- strb r0, [r5, 0x2]
- b _08094B5E
-_08094ACE:
- movs r0, 0x3
- strb r0, [r5]
- movs r0, 0x12
- strb r0, [r5, 0x1]
- movs r0, 0x45
- strb r0, [r5, 0x2]
- b _08094B5E
-_08094ADC:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08094B14
- movs r3, 0x1
- mov r2, sp
- ldr r1, _08094B10 @ =gUnknown_02024A6A
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- strb r0, [r2]
- movs r4, 0
- mov r1, sp
-_08094AF8:
- ldrb r0, [r1]
- cmp r4, r0
- beq _08094B06
- mov r2, sp
- adds r0, r2, r3
- strb r4, [r0]
- adds r3, 0x1
-_08094B06:
- adds r4, 0x1
- cmp r4, 0x5
- ble _08094AF8
- b _08094B46
- .align 2, 0
-_08094B10: .4byte gUnknown_02024A6A
-_08094B14:
- movs r3, 0x2
- mov r1, sp
- ldr r2, _08094B68 @ =gUnknown_02024A6A
- lsls r0, r4, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- lsls r0, r6, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x1]
- movs r4, 0
-_08094B2C:
- ldrb r0, [r1]
- cmp r4, r0
- beq _08094B40
- ldrb r0, [r1, 0x1]
- cmp r4, r0
- beq _08094B40
- mov r2, sp
- adds r0, r2, r3
- strb r4, [r0]
- adds r3, 0x1
-_08094B40:
- adds r4, 0x1
- cmp r4, 0x5
- ble _08094B2C
-_08094B46:
- movs r4, 0
- mov r3, sp
-_08094B4A:
- adds r0, r5, r4
- ldrb r1, [r3]
- lsls r1, 4
- ldrb r2, [r3, 0x1]
- orrs r1, r2
- strb r1, [r0]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x2
- ble _08094B4A
-_08094B5E:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08094B68: .4byte gUnknown_02024A6A
- thumb_func_end sub_8094A74
-
thumb_func_start sub_8094B6C
sub_8094B6C: @ 8094B6C
push {r4-r7,lr}
diff --git a/asm/rom_810CBB4.s b/asm/rom_810CBB4.s
index 78fb7e6ac..b4223f094 100644
--- a/asm/rom_810CBB4.s
+++ b/asm/rom_810CBB4.s
@@ -47,7 +47,7 @@ sub_810CBFC: @ 810CBFC
lsls r0, 24
lsrs r0, 24
ldr r2, _0810CC24 @ =gUnknown_0202FF84
- ldr r1, _0810CC28 @ =gUnknown_03005CE0
+ ldr r1, _0810CC28 @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
str r1, [r2]
ldr r2, _0810CC2C @ =gTasks
@@ -63,7 +63,7 @@ sub_810CBFC: @ 810CBFC
bx r0
.align 2, 0
_0810CC24: .4byte gUnknown_0202FF84
-_0810CC28: .4byte gUnknown_03005CE0
+_0810CC28: .4byte gLastFieldPokeMenuOpened
_0810CC2C: .4byte gTasks
_0810CC30: .4byte sub_810CC34
thumb_func_end sub_810CBFC
@@ -1003,8 +1003,8 @@ _0810D370:
bx r1
thumb_func_end sub_810D32C
- thumb_func_start sub_810D378
-sub_810D378: @ 810D378
+ thumb_func_start UpdateShoalTideFlag
+UpdateShoalTideFlag: @ 810D378
push {lr}
bl get_map_light_from_warp0
lsls r0, 24
@@ -1038,7 +1038,7 @@ _0810D3BE:
bx r0
.align 2, 0
_0810D3C4: .4byte 0x0000083a
- thumb_func_end sub_810D378
+ thumb_func_end UpdateShoalTideFlag
thumb_func_start sub_810D3C8
sub_810D3C8: @ 810D3C8
@@ -2131,7 +2131,7 @@ _0810DBDC:
adds r0, r1
ldrb r1, [r0, 0x13]
movs r0, 0
- bl sub_805983C
+ bl GetRivalAvatarGraphicsIdByStateIdAndGender
lsls r0, 24
lsrs r0, 24
mov r1, sp
diff --git a/asm/rom_81258BC.s b/asm/rom_81258BC.s
index a169258ae..aadab16fd 100644
--- a/asm/rom_81258BC.s
+++ b/asm/rom_81258BC.s
@@ -2244,14 +2244,14 @@ sub_812BFD4: @ 812BFD4
movs r0, 0x33
bl FieldEffectStart
ldr r0, _0812BFE8 @ =gUnknown_0202FF84
- ldr r1, _0812BFEC @ =gUnknown_03005CE0
+ ldr r1, _0812BFEC @ =gLastFieldPokeMenuOpened
ldrb r1, [r1]
str r1, [r0]
pop {r0}
bx r0
.align 2, 0
_0812BFE8: .4byte gUnknown_0202FF84
-_0812BFEC: .4byte gUnknown_03005CE0
+_0812BFEC: .4byte gLastFieldPokeMenuOpened
thumb_func_end sub_812BFD4
thumb_func_start FldEff_SweetScent
@@ -18242,7 +18242,7 @@ SetUpFieldMove_SoftBoiled: @ 8133CCC
push {r4-r6,lr}
mov r6, r8
push {r6}
- ldr r0, _08133D14 @ =gUnknown_03005CE0
+ ldr r0, _08133D14 @ =gLastFieldPokeMenuOpened
mov r8, r0
ldrb r0, [r0]
movs r6, 0x64
@@ -18273,7 +18273,7 @@ SetUpFieldMove_SoftBoiled: @ 8133CCC
movs r0, 0
b _08133D1E
.align 2, 0
-_08133D14: .4byte gUnknown_03005CE0
+_08133D14: .4byte gLastFieldPokeMenuOpened
_08133D18: .4byte gPlayerParty
_08133D1C:
movs r0, 0x1
@@ -21701,7 +21701,7 @@ _08135750: .4byte 0x00000564
_08135754:
movs r2, 0
ldr r4, _0813576C @ =gSaveBlock2 + 0x565
- ldr r3, _08135770 @ =gUnknown_02039270
+ ldr r3, _08135770 @ =gSelectedOrderFromParty
_0813575A:
adds r0, r2, r4
adds r1, r2, r3
@@ -21713,7 +21713,7 @@ _0813575A:
b _0813589A
.align 2, 0
_0813576C: .4byte gSaveBlock2 + 0x565
-_08135770: .4byte gUnknown_02039270
+_08135770: .4byte gSelectedOrderFromParty
_08135774:
ldr r3, _081357C0 @ =0x00000564
adds r0, r5, r3
@@ -22042,7 +22042,7 @@ _08135A10: .4byte 0x00000554
sub_8135A14: @ 8135A14
push {r4,lr}
movs r2, 0
- ldr r4, _08135A34 @ =gUnknown_02039270
+ ldr r4, _08135A34 @ =gSelectedOrderFromParty
ldr r3, _08135A38 @ =gSaveBlock2 + 0x565
_08135A1C:
adds r0, r2, r4
@@ -22057,7 +22057,7 @@ _08135A1C:
pop {r0}
bx r0
.align 2, 0
-_08135A34: .4byte gUnknown_02039270
+_08135A34: .4byte gSelectedOrderFromParty
_08135A38: .4byte gSaveBlock2 + 0x565
thumb_func_end sub_8135A14
@@ -22293,7 +22293,7 @@ _08135BF8:
orrs r0, r1
strb r0, [r2]
movs r0, 0x2
- bl sub_8125D44
+ bl TrySavingData
pop {r4,r5}
pop {r0}
bx r0
diff --git a/asm/rotating_gate.s b/asm/rotating_gate.s
index 9c7b3847b..a553802e8 100644
--- a/asm/rotating_gate.s
+++ b/asm/rotating_gate.s
@@ -428,7 +428,7 @@ sub_80C7C94: @ 80C7C94
adds r0, r4, 0x4
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80E6034
+ bl GetPlayerSpeed
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
@@ -451,7 +451,7 @@ _080C7CDA:
adds r0, 0x8
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80E6034
+ bl GetPlayerSpeed
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
diff --git a/asm/script_movement.s b/asm/script_movement.s
deleted file mode 100644
index 72523c639..000000000
--- a/asm/script_movement.s
+++ /dev/null
@@ -1,596 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start exec_movement
-exec_movement: @ 80A20D4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r3, 0
- 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
- beq _080A20F6
- movs r0, 0x1
- b _080A211E
-_080A20F6:
- ldr r0, _080A2128 @ =sub_80A244C
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080A2108
- movs r0, 0x32
- bl sub_80A2198
-_080A2108:
- bl sub_80A21E0
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- ldrb r1, [r1]
- adds r2, r4, 0
- bl sub_80A21F4
- lsls r0, 24
- lsrs r0, 24
-_080A211E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080A2128: .4byte sub_80A244C
- thumb_func_end exec_movement
-
- thumb_func_start sub_80A212C
-sub_80A212C: @ 80A212C
- push {r4,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 _080A216E
- bl sub_80A21E0
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_80A2260
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x10
- beq _080A216E
- adds r0, r4, 0
- bl sub_80A2370
- lsls r0, 24
- lsrs r0, 24
- b _080A2170
-_080A216E:
- movs r0, 0x1
-_080A2170:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80A212C
-
- thumb_func_start sub_80A2178
-sub_80A2178: @ 80A2178
- push {r4,lr}
- bl sub_80A21E0
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- beq _080A2192
- adds r0, r4, 0
- bl sub_80A2408
- adds r0, r4, 0
- bl DestroyTask
-_080A2192:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2178
-
- thumb_func_start sub_80A2198
-sub_80A2198: @ 80A2198
- push {r4,r5,lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _080A21D4 @ =sub_80A244C
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1
- lsls r1, r0, 2
- adds r1, r0
- lsls r3, r1, 3
- ldr r5, _080A21D8 @ =gTasks + 0x8
- ldr r0, _080A21DC @ =0x0000ffff
- adds r4, r0, 0
-_080A21B8:
- lsls r0, r2, 1
- adds r0, r3
- adds r0, r5
- ldrh r1, [r0]
- orrs r1, r4
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080A21B8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A21D4: .4byte sub_80A244C
-_080A21D8: .4byte gTasks + 0x8
-_080A21DC: .4byte 0x0000ffff
- thumb_func_end sub_80A2198
-
- thumb_func_start sub_80A21E0
-sub_80A21E0: @ 80A21E0
- push {lr}
- ldr r0, _080A21F0 @ =sub_80A244C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080A21F0: .4byte sub_80A244C
- thumb_func_end sub_80A21E0
-
- thumb_func_start sub_80A21F4
-sub_80A21F4: @ 80A21F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r2
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- lsls r1, 24
- lsrs r6, r1, 24
- mov r8, r6
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80A2260
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x10
- beq _080A2230
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80A2370
- lsls r0, 24
- cmp r0, 0
- beq _080A2250
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r6, 0
- b _080A2246
-_080A2230:
- adds r0, r7, 0
- movs r1, 0xFF
- bl sub_80A2260
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x10
- beq _080A2250
- adds r0, r7, 0
- adds r1, r4, 0
- mov r2, r8
-_080A2246:
- mov r3, r9
- bl sub_80A23C8
- movs r0, 0
- b _080A2252
-_080A2250:
- movs r0, 0x1
-_080A2252:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80A21F4
-
- thumb_func_start sub_80A2260
-sub_80A2260: @ 80A2260
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080A2284 @ =gTasks + 0x8
- adds r1, r0
- adds r1, 0x2
- movs r2, 0
-_080A2278:
- ldrb r0, [r1]
- cmp r0, r3
- bne _080A2288
- adds r0, r2, 0
- b _080A2296
- .align 2, 0
-_080A2284: .4byte gTasks + 0x8
-_080A2288:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r1, 0x1
- cmp r2, 0xF
- bls _080A2278
- movs r0, 0x10
-_080A2296:
- pop {r1}
- bx r1
- thumb_func_end sub_80A2260
-
- thumb_func_start sub_80A229C
-sub_80A229C: @ 80A229C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080A22CC @ =gTasks + 0x8
- adds r1, r0
- adds r1, 0x2
- str r1, [r2]
- movs r0, 0
- cmp r0, r3
- bcs _080A22C8
-_080A22BA:
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r1, 0x1
- cmp r0, r3
- bcc _080A22BA
- str r1, [r2]
-_080A22C8:
- pop {r0}
- bx r0
- .align 2, 0
-_080A22CC: .4byte gTasks + 0x8
- thumb_func_end sub_80A229C
-
- thumb_func_start sub_80A22D0
-sub_80A22D0: @ 80A22D0
- push {r4,lr}
- sub sp, 0x4
- adds r4, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r4, 24
- lsrs r4, 24
- mov r2, sp
- bl sub_80A229C
- ldr r0, [sp]
- strb r4, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A22D0
-
- thumb_func_start sub_80A22F4
-sub_80A22F4: @ 80A22F4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r2, sp
- bl sub_80A229C
- ldr r0, [sp]
- ldrb r0, [r0]
- strb r0, [r4]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A22F4
-
- thumb_func_start sub_80A2318
-sub_80A2318: @ 80A2318
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r2, _080A2340 @ =gBitTable
- lsrs r1, 22
- adds r1, r2
- ldr r2, [r1]
- mvns r2, r2
- lsls r2, 16
- lsrs r2, 16
- ldr r3, _080A2344 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- ldrh r0, [r1, 0x8]
- ands r2, r0
- strh r2, [r1, 0x8]
- bx lr
- .align 2, 0
-_080A2340: .4byte gBitTable
-_080A2344: .4byte gTasks
- thumb_func_end sub_80A2318
-
- thumb_func_start sub_80A2348
-sub_80A2348: @ 80A2348
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _080A2368 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- ldr r0, _080A236C @ =gBitTable
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldrh r1, [r2, 0x8]
- orrs r0, r1
- strh r0, [r2, 0x8]
- bx lr
- .align 2, 0
-_080A2368: .4byte gTasks
-_080A236C: .4byte gBitTable
- thumb_func_end sub_80A2348
-
- thumb_func_start sub_80A2370
-sub_80A2370: @ 80A2370
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _080A2398 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- ldr r0, _080A239C @ =gBitTable
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldrh r1, [r2, 0x8]
- ands r0, r1
- cmp r0, 0
- bne _080A23A0
- movs r0, 0
- b _080A23A2
- .align 2, 0
-_080A2398: .4byte gTasks
-_080A239C: .4byte gBitTable
-_080A23A0:
- movs r0, 0x1
-_080A23A2:
- pop {r1}
- bx r1
- thumb_func_end sub_80A2370
-
- thumb_func_start npc_obj_offscreen_culling_and_flag_update
-npc_obj_offscreen_culling_and_flag_update: @ 80A23A8
- lsls r0, 24
- ldr r2, _080A23B4 @ =gUnknown_020384F8
- lsrs r0, 22
- adds r0, r2
- str r1, [r0]
- bx lr
- .align 2, 0
-_080A23B4: .4byte gUnknown_020384F8
- thumb_func_end npc_obj_offscreen_culling_and_flag_update
-
- thumb_func_start sub_80A23B8
-sub_80A23B8: @ 80A23B8
- lsls r0, 24
- ldr r1, _080A23C4 @ =gUnknown_020384F8
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_080A23C4: .4byte gUnknown_020384F8
- thumb_func_end sub_80A23B8
-
- thumb_func_start sub_80A23C8
-sub_80A23C8: @ 80A23C8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80A2318
- adds r0, r4, 0
- mov r1, r8
- bl npc_obj_offscreen_culling_and_flag_update
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_80A22D0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A23C8
-
- thumb_func_start sub_80A2408
-sub_80A2408: @ 80A2408
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080A2444 @ =gTasks + 0x8
- adds r1, r0
- adds r4, r1, 0x2
- movs r5, 0
-_080A241C:
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080A2432
- adds r1, r0, 0
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A2448 @ =gMapObjects
- adds r0, r1
- bl UnfreezeMapObject
-_080A2432:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x1
- cmp r5, 0xF
- bls _080A241C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2444: .4byte gTasks + 0x8
-_080A2448: .4byte gMapObjects
- thumb_func_end sub_80A2408
-
- thumb_func_start sub_80A244C
-sub_80A244C: @ 80A244C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- movs r5, 0
- mov r6, sp
-_080A2458:
- adds r0, r7, 0
- adds r1, r5, 0
- mov r2, sp
- bl sub_80A22F4
- ldrb r0, [r6]
- cmp r0, 0xFF
- beq _080A247C
- adds r4, r0, 0
- adds r0, r5, 0
- bl sub_80A23B8
- adds r3, r0, 0
- adds r0, r7, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_80A2490
-_080A247C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080A2458
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A244C
-
- thumb_func_start sub_80A2490
-sub_80A2490: @ 80A2490
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r3, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- mov r8, r6
- lsls r2, 24
- lsrs r2, 24
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r1, _080A24E0 @ =gMapObjects
- adds r4, r0, r1
- adds r0, r4, 0
- bl FieldObjectIsSpecialAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _080A24C8
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _080A24FA
-_080A24C8:
- ldrb r1, [r5]
- cmp r1, 0xFE
- bne _080A24E4
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_80A2348
- adds r0, r4, 0
- bl FreezeMapObject
- b _080A24FA
- .align 2, 0
-_080A24E0: .4byte gMapObjects
-_080A24E4:
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- lsls r0, 24
- cmp r0, 0
- bne _080A24FA
- adds r5, 0x1
- mov r0, r8
- adds r1, r5, 0
- bl npc_obj_offscreen_culling_and_flag_update
-_080A24FA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2490
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_pokemon_util_80C4BF0.s b/asm/script_pokemon_util_80C4BF0.s
deleted file mode 100644
index 6777ca135..000000000
--- a/asm/script_pokemon_util_80C4BF0.s
+++ /dev/null
@@ -1,1399 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80C4BF0
-sub_80C4BF0: @ 80C4BF0
- push {r4,lr}
- ldr r2, _080C4C1C @ =gSaveBlock1
- ldr r1, _080C4C20 @ =gContestMons
- ldrb r3, [r1, 0x15]
- movs r4, 0x9B
- lsls r4, 5
- adds r0, r2, r4
- strh r3, [r0]
- adds r0, r1, 0
- adds r0, 0x55
- ldrb r3, [r0]
- adds r4, 0x2
- adds r0, r2, r4
- strh r3, [r0]
- adds r1, 0x95
- ldrb r0, [r1]
- ldr r1, _080C4C24 @ =0x00001364
- adds r2, r1
- strh r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4C1C: .4byte gSaveBlock1
-_080C4C20: .4byte gContestMons
-_080C4C24: .4byte 0x00001364
- thumb_func_end sub_80C4BF0
-
- thumb_func_start sub_80C4C28
-sub_80C4C28: @ 80C4C28
- push {lr}
- ldr r0, _080C4C40 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- adds r1, r0, 0
- cmp r0, 0x1
- beq _080C4C4E
- cmp r0, 0x1
- bgt _080C4C44
- cmp r0, 0
- beq _080C4C4A
- b _080C4C56
- .align 2, 0
-_080C4C40: .4byte gSpecialVar_0x8005
-_080C4C44:
- cmp r1, 0x2
- beq _080C4C52
- b _080C4C56
-_080C4C4A:
- movs r1, 0x3
- b _080C4C58
-_080C4C4E:
- movs r1, 0x4
- b _080C4C58
-_080C4C52:
- movs r1, 0x5
- b _080C4C58
-_080C4C56:
- movs r1, 0x64
-_080C4C58:
- ldr r0, _080C4C60 @ =gSpecialVar_0x8004
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080C4C60: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80C4C28
-
- thumb_func_start sub_80C4C64
-sub_80C4C64: @ 80C4C64
- push {lr}
- bl sub_80C46EC
- bl sub_80C4740
- bl sub_80C48F4
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C64
-
- thumb_func_start sub_80C4C78
-sub_80C4C78: @ 80C4C78
- push {lr}
- ldr r0, _080C4C8C @ =gScriptContestCategory
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _080C4CB8
- lsls r0, 2
- ldr r1, _080C4C90 @ =_080C4C94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C4C8C: .4byte gScriptContestCategory
-_080C4C90: .4byte _080C4C94
- .align 2, 0
-_080C4C94:
- .4byte _080C4CA8
- .4byte _080C4CAC
- .4byte _080C4CB0
- .4byte _080C4CB4
- .4byte _080C4CB8
-_080C4CA8:
- movs r0, 0x8
- b _080C4CBA
-_080C4CAC:
- movs r0, 0x9
- b _080C4CBA
-_080C4CB0:
- movs r0, 0xA
- b _080C4CBA
-_080C4CB4:
- movs r0, 0xB
- b _080C4CBA
-_080C4CB8:
- movs r0, 0xC
-_080C4CBA:
- ldr r1, _080C4CD0 @ =gSaveBlock1
- lsls r0, 5
- adds r0, r1
- ldr r1, _080C4CD4 @ =0x00002e04
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- bne _080C4CDC
- ldr r0, _080C4CD8 @ =gSpecialVar_0x8004
- strh r1, [r0]
- b _080C4CE2
- .align 2, 0
-_080C4CD0: .4byte gSaveBlock1
-_080C4CD4: .4byte 0x00002e04
-_080C4CD8: .4byte gSpecialVar_0x8004
-_080C4CDC:
- ldr r1, _080C4CE8 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
-_080C4CE2:
- pop {r0}
- bx r0
- .align 2, 0
-_080C4CE8: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80C4C78
-
- thumb_func_start sub_80C4CEC
-sub_80C4CEC: @ 80C4CEC
- push {lr}
- movs r0, 0xFF
- bl sub_80B2A7C
- pop {r0}
- bx r0
- thumb_func_end sub_80C4CEC
-
- thumb_func_start sub_80C4CF8
-sub_80C4CF8: @ 80C4CF8
- push {lr}
- ldr r0, _080C4D28 @ =gUnknown_02038690
- ldr r1, _080C4D2C @ =gContestPlayerMonIndex
- ldrb r2, [r1]
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _080C4D40
- ldr r0, _080C4D30 @ =gScriptContestRank
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _080C4D40
- ldr r1, _080C4D34 @ =gUnknown_02038678
- lsls r0, r2, 1
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r0, _080C4D38 @ =0x0000031f
- cmp r1, r0
- ble _080C4D40
- ldr r1, _080C4D3C @ =gSpecialVar_0x8004
- movs r0, 0x1
- b _080C4D44
- .align 2, 0
-_080C4D28: .4byte gUnknown_02038690
-_080C4D2C: .4byte gContestPlayerMonIndex
-_080C4D30: .4byte gScriptContestRank
-_080C4D34: .4byte gUnknown_02038678
-_080C4D38: .4byte 0x0000031f
-_080C4D3C: .4byte gSpecialVar_0x8004
-_080C4D40:
- ldr r1, _080C4D4C @ =gSpecialVar_0x8004
- movs r0, 0
-_080C4D44:
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080C4D4C: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80C4CF8
-
- thumb_func_start sub_80C4D50
-sub_80C4D50: @ 80C4D50
- push {lr}
- movs r3, 0
- ldr r0, _080C4D78 @ =gSaveBlock1
- ldr r1, _080C4D7C @ =0x00002f04
- adds r2, r0, r1
- movs r1, 0x4
-_080C4D5C:
- ldrh r0, [r2]
- cmp r0, 0
- beq _080C4D68
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080C4D68:
- adds r2, 0x20
- subs r1, 0x1
- cmp r1, 0
- bge _080C4D5C
- adds r0, r3, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080C4D78: .4byte gSaveBlock1
-_080C4D7C: .4byte 0x00002f04
- thumb_func_end sub_80C4D50
-
- thumb_func_start sub_80C4D80
-sub_80C4D80: @ 80C4D80
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _080C4EA0 @ =gUnknown_02038670
- mov r12, r0
- ldr r1, _080C4EA4 @ =gSpecialVar_0x8006
- mov r8, r1
- ldr r2, _080C4EA8 @ =gStringVar1
- mov r9, r2
- mov r2, r12
- mov r1, sp
- movs r6, 0x3
-_080C4D9E:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080C4D9E
- movs r6, 0
-_080C4DAE:
- movs r1, 0x3
- cmp r1, r6
- ble _080C4DD8
-_080C4DB4:
- subs r4, r1, 0x1
- lsls r0, r4, 1
- mov r5, sp
- adds r3, r5, r0
- lsls r0, r1, 1
- adds r2, r5, r0
- ldrh r5, [r3]
- movs r7, 0
- ldrsh r1, [r3, r7]
- movs r7, 0
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bge _080C4DD2
- strh r5, [r2]
- strh r0, [r3]
-_080C4DD2:
- adds r1, r4, 0
- cmp r1, r6
- bgt _080C4DB4
-_080C4DD8:
- adds r6, 0x1
- cmp r6, 0x2
- ble _080C4DAE
- mov r2, r8
- ldrh r0, [r2]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- movs r2, 0
- movs r7, 0
- movs r6, 0
- lsls r0, 16
- asrs r4, r0, 16
- adds r3, r0, 0
- mov r1, sp
-_080C4DF6:
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, r4
- bne _080C4E12
- lsls r0, r2, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r2, r0, 24
- mov r5, r8
- ldrh r5, [r5]
- cmp r6, r5
- bne _080C4E12
- adds r7, r2, 0
-_080C4E12:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _080C4DF6
- movs r6, 0
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- asrs r1, r3, 16
- lsls r2, 24
- mov r10, r2
- cmp r0, r1
- beq _080C4E40
- adds r2, r1, 0
- mov r1, sp
-_080C4E30:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- bgt _080C4E40
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, r2
- bne _080C4E30
-_080C4E40:
- lsls r0, r6, 24
- lsrs r4, r0, 24
- adds r2, r7, 0
- movs r6, 0
- asrs r5, r3, 16
- mov r8, r5
- mov r1, r12
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r8, r0
- bne _080C4E60
- cmp r7, 0x1
- beq _080C4E78
-_080C4E5A:
- subs r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080C4E60:
- adds r6, 0x1
- cmp r6, 0x3
- bgt _080C4E78
- lsls r0, r6, 1
- add r0, r12
- asrs r1, r3, 16
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r1, r0
- bne _080C4E60
- cmp r2, 0x1
- bne _080C4E5A
-_080C4E78:
- lsls r1, r6, 24
- lsrs r1, 24
- mov r0, r9
- bl sub_80C4698
- ldr r0, _080C4EAC @ =gIsLinkContest
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080C4EB8
- ldr r0, _080C4EB0 @ =gStringVar2
- lsls r1, r6, 3
- subs r1, r6
- lsls r1, 2
- ldr r2, _080C4EB4 @ =gLinkPlayers + 0x8
- adds r1, r2
- bl sub_80C4674
- b _080C4EC4
- .align 2, 0
-_080C4EA0: .4byte gUnknown_02038670
-_080C4EA4: .4byte gSpecialVar_0x8006
-_080C4EA8: .4byte gStringVar1
-_080C4EAC: .4byte gIsLinkContest
-_080C4EB0: .4byte gStringVar2
-_080C4EB4: .4byte gLinkPlayers + 0x8
-_080C4EB8:
- ldr r0, _080C4ED8 @ =gStringVar2
- lsls r1, r6, 6
- ldr r2, _080C4EDC @ =gUnknown_0203857D
- adds r1, r2
- bl sub_80C4674
-_080C4EC4:
- mov r1, r10
- asrs r0, r1, 24
- cmp r0, 0x1
- beq _080C4ED0
- cmp r7, r0
- bne _080C4EE4
-_080C4ED0:
- ldr r0, _080C4EE0 @ =gSpecialVar_0x8006
- strh r4, [r0]
- b _080C4EEA
- .align 2, 0
-_080C4ED8: .4byte gStringVar2
-_080C4EDC: .4byte gUnknown_0203857D
-_080C4EE0: .4byte gSpecialVar_0x8006
-_080C4EE4:
- ldr r1, _080C4EFC @ =gSpecialVar_0x8006
- adds r0, r4, 0x4
- strh r0, [r1]
-_080C4EEA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4EFC: .4byte gSpecialVar_0x8006
- thumb_func_end sub_80C4D80
-
- thumb_func_start ShowContestWinnerCleanup
-ShowContestWinnerCleanup: @ 80C4F00
- push {lr}
- ldr r0, _080C4F0C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080C4F0C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end ShowContestWinnerCleanup
-
- thumb_func_start ShowContestWinner
-ShowContestWinner: @ 80C4F10
- push {r4-r6,lr}
- ldr r6, _080C4F54 @ =gUnknown_0203856C
- ldrb r0, [r6]
- cmp r0, 0
- beq _080C4F40
- bl sub_80AAF30
- ldr r4, _080C4F58 @ =0x02000000
- ldr r0, _080C4F5C @ =0x00015ddf
- adds r1, r4, r0
- movs r5, 0
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0xFE
- movs r1, 0
- bl sub_80B2C4C
- ldr r1, _080C4F60 @ =0x00015dde
- adds r4, r1
- strb r0, [r4]
- movs r0, 0x3
- bl sub_80B2A7C
- strb r5, [r6]
-_080C4F40:
- ldr r0, _080C4F64 @ =CB2_ContestPainting
- bl SetMainCallback2
- ldr r1, _080C4F68 @ =gMain
- ldr r0, _080C4F6C @ =ShowContestWinnerCleanup
- str r0, [r1, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4F54: .4byte gUnknown_0203856C
-_080C4F58: .4byte 0x02000000
-_080C4F5C: .4byte 0x00015ddf
-_080C4F60: .4byte 0x00015dde
-_080C4F64: .4byte CB2_ContestPainting
-_080C4F68: .4byte gMain
-_080C4F6C: .4byte ShowContestWinnerCleanup
- thumb_func_end ShowContestWinner
-
- thumb_func_start sub_80C4F70
-sub_80C4F70: @ 80C4F70
- push {r4,lr}
- ldr r0, _080C4FA8 @ =0x00004010
- ldr r4, _080C4FAC @ =gContestMons
- ldrb r1, [r4, 0x15]
- bl VarSet
- ldr r0, _080C4FB0 @ =0x00004011
- adds r1, r4, 0
- adds r1, 0x55
- ldrb r1, [r1]
- bl VarSet
- ldr r0, _080C4FB4 @ =0x00004012
- adds r1, r4, 0
- adds r1, 0x95
- ldrb r1, [r1]
- bl VarSet
- ldr r0, _080C4FB8 @ =0x00004013
- adds r1, r4, 0
- adds r1, 0xD5
- ldrb r1, [r1]
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4FA8: .4byte 0x00004010
-_080C4FAC: .4byte gContestMons
-_080C4FB0: .4byte 0x00004011
-_080C4FB4: .4byte 0x00004012
-_080C4FB8: .4byte 0x00004013
- thumb_func_end sub_80C4F70
-
- thumb_func_start GiveMonArtistRibbon
-GiveMonArtistRibbon: @ 80C4FBC
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _080C501C @ =gUnknown_02038694
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _080C5020 @ =gPlayerParty
- adds r0, r4
- movs r1, 0x46
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- cmp r0, 0
- bne _080C5038
- ldr r0, _080C5024 @ =gUnknown_02038690
- ldr r1, _080C5028 @ =gContestPlayerMonIndex
- ldrb r2, [r1]
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _080C5038
- ldr r0, _080C502C @ =gScriptContestRank
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _080C5038
- ldr r1, _080C5030 @ =gUnknown_02038678
- lsls r0, r2, 1
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r0, _080C5034 @ =0x0000031f
- cmp r1, r0
- ble _080C5038
- movs r1, 0x1
- mov r0, sp
- strb r1, [r0]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0x46
- mov r2, sp
- bl SetMonData
- movs r0, 0x1
- b _080C503A
- .align 2, 0
-_080C501C: .4byte gUnknown_02038694
-_080C5020: .4byte gPlayerParty
-_080C5024: .4byte gUnknown_02038690
-_080C5028: .4byte gContestPlayerMonIndex
-_080C502C: .4byte gScriptContestRank
-_080C5030: .4byte gUnknown_02038678
-_080C5034: .4byte 0x0000031f
-_080C5038:
- movs r0, 0
-_080C503A:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GiveMonArtistRibbon
-
- thumb_func_start sub_80C5044
-sub_80C5044: @ 80C5044
- ldr r0, _080C504C @ =gUnknown_0203856C
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080C504C: .4byte gUnknown_0203856C
- thumb_func_end sub_80C5044
-
- thumb_func_start ShowContestEntryMonPic
-ShowContestEntryMonPic: @ 80C5050
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r4, _080C513C @ =sub_80C5190
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080C512A
- movs r0, 0xA
- mov r10, r0
- movs r7, 0x3
- movs r1, 0x3
- movs r2, 0x13
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r2, _080C5140 @ =gContestMons
- ldr r0, _080C5144 @ =gSpecialVar_0x8006
- ldrh r1, [r0]
- lsls r1, 6
- adds r0, r1, r2
- ldrh r6, [r0]
- adds r0, r2, 0
- adds r0, 0x38
- adds r0, r1, r0
- ldr r0, [r0]
- mov r8, r0
- adds r2, 0x3C
- adds r1, r2
- ldr r1, [r1]
- mov r9, r1
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080C5148 @ =gTasks
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- adds r5, r1
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r6, [r5, 0xA]
- lsls r0, r6, 3
- ldr r1, _080C514C @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080C5150 @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- ldr r4, _080C5154 @ =gUnknown_081FAF4C
- ldr r3, [r4]
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r6, [sp, 0x4]
- mov r4, r8
- str r4, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- adds r0, r6, 0
- mov r1, r9
- mov r2, r8
- bl sub_80409C8
- adds r4, r0, 0
- bl LoadCompressedObjectPalette
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _080C5158 @ =gUnknown_02024E8C
- ldrh r1, [r4, 0x4]
- strh r1, [r0, 0x2]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xC]
- mov r1, r10
- strh r1, [r5, 0xE]
- strh r7, [r5, 0x10]
- ldr r3, _080C515C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _080C5160 @ =SpriteCallbackDummy
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
-_080C512A:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C513C: .4byte sub_80C5190
-_080C5140: .4byte gContestMons
-_080C5144: .4byte gSpecialVar_0x8006
-_080C5148: .4byte gTasks
-_080C514C: .4byte gMonFrontPicTable
-_080C5150: .4byte gMonFrontPicCoords
-_080C5154: .4byte gUnknown_081FAF4C
-_080C5158: .4byte gUnknown_02024E8C
-_080C515C: .4byte gSprites
-_080C5160: .4byte SpriteCallbackDummy
- thumb_func_end ShowContestEntryMonPic
-
- thumb_func_start sub_80C5164
-sub_80C5164: @ 80C5164
- push {lr}
- ldr r0, _080C5188 @ =sub_80C5190
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080C5184
- ldr r0, _080C518C @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_080C5184:
- pop {r0}
- bx r0
- .align 2, 0
-_080C5188: .4byte sub_80C5190
-_080C518C: .4byte gTasks
- thumb_func_end sub_80C5164
-
- thumb_func_start sub_80C5190
-sub_80C5190: @ 80C5190
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080C51B4 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080C5222
- cmp r0, 0x1
- bgt _080C51B8
- cmp r0, 0
- beq _080C51F8
- b _080C5222
- .align 2, 0
-_080C51B4: .4byte gTasks
-_080C51B8:
- cmp r0, 0x2
- beq _080C51C2
- cmp r0, 0x3
- beq _080C5204
- b _080C5222
-_080C51C2:
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C5200 @ =gSprites
- adds r5, r0, r1
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- bl GetSpritePaletteTagByPaletteNum
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- ldrb r0, [r5, 0x1]
- lsls r0, 30
- cmp r0, 0
- beq _080C51F2
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
-_080C51F2:
- adds r0, r5, 0
- bl DestroySprite
-_080C51F8:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080C5222
- .align 2, 0
-_080C5200: .4byte gSprites
-_080C5204:
- ldrb r2, [r4, 0xE]
- adds r0, r2, 0
- ldrb r3, [r4, 0x10]
- adds r1, r3, 0
- adds r2, 0x9
- lsls r2, 24
- lsrs r2, 24
- adds r3, 0xA
- lsls r3, 24
- lsrs r3, 24
- bl MenuZeroFillWindowRect
- adds r0, r5, 0
- bl DestroyTask
-_080C5222:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80C5190
-
- thumb_func_start ScriptGetMultiplayerId
-ScriptGetMultiplayerId: @ 80C5228
- push {r4,lr}
- ldr r0, _080C5244 @ =gIsLinkContest
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080C524C
- ldr r4, _080C5248 @ =gScriptResult
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- b _080C5252
- .align 2, 0
-_080C5244: .4byte gIsLinkContest
-_080C5248: .4byte gScriptResult
-_080C524C:
- ldr r1, _080C5258 @ =gScriptResult
- movs r0, 0x4
- strh r0, [r1]
-_080C5252:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5258: .4byte gScriptResult
- thumb_func_end ScriptGetMultiplayerId
-
- thumb_func_start ScriptRandom
-ScriptRandom: @ 80C525C
- push {r4,lr}
- ldr r0, _080C5280 @ =gIsLinkContest
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080C5294
- ldr r2, _080C5284 @ =gUnknown_03005D28
- ldr r1, [r2]
- ldr r0, _080C5288 @ =0x41c64e6d
- muls r0, r1
- ldr r1, _080C528C @ =0x00006073
- adds r0, r1
- str r0, [r2]
- lsrs r0, 16
- ldr r4, _080C5290 @ =gScriptResult
- b _080C529E
- .align 2, 0
-_080C5280: .4byte gIsLinkContest
-_080C5284: .4byte gUnknown_03005D28
-_080C5288: .4byte 0x41c64e6d
-_080C528C: .4byte 0x00006073
-_080C5290: .4byte gScriptResult
-_080C5294:
- ldr r4, _080C52AC @ =gScriptResult
- bl Random
- lsls r0, 16
- lsrs r0, 16
-_080C529E:
- ldrh r1, [r4]
- bl __umodsi3
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C52AC: .4byte gScriptResult
- thumb_func_end ScriptRandom
-
- thumb_func_start HealPlayerParty
-HealPlayerParty: @ 80C52B0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r8, r0
- ldr r0, _080C536C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r8, r0
- bcs _080C535C
- ldr r1, _080C5370 @ =gPlayerParty
- mov r10, r1
- mov r6, sp
-_080C52CE:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- add r4, r10
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- lsls r1, r0, 16
- strb r0, [r6]
- lsrs r1, 24
- strb r1, [r6, 0x1]
- adds r0, r4, 0
- movs r1, 0x39
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x15
- bl GetMonData
- lsls r0, 24
- lsrs r7, r0, 24
- movs r5, 0
- movs r1, 0x1
- add r1, r8
- mov r9, r1
-_080C5304:
- adds r1, r5, 0
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r7, 0
- adds r2, r5, 0
- bl CalculatePPWithBonus
- strb r0, [r6]
- adds r1, r5, 0
- adds r1, 0x11
- adds r0, r4, 0
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080C5304
- movs r0, 0
- strb r0, [r6]
- strb r0, [r6, 0x1]
- strb r0, [r6, 0x2]
- strb r0, [r6, 0x3]
- movs r1, 0x64
- mov r0, r8
- muls r0, r1
- add r0, r10
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- mov r1, r9
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _080C536C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r8, r0
- bcc _080C52CE
-_080C535C:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C536C: .4byte gPlayerPartyCount
-_080C5370: .4byte gPlayerParty
- thumb_func_end HealPlayerParty
-
- thumb_func_start ScriptGiveMon
-ScriptGiveMon: @ 80C5374
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x78
- adds r5, r0, 0
- adds r3, r1, 0
- adds r4, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 16
- lsrs r0, r4, 16
- mov r8, r0
- add r6, sp, 0x14
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r3, 0
- movs r3, 0x20
- bl CreateMon
- add r0, sp, 0x10
- mov r1, r8
- strb r1, [r0]
- lsrs r4, 24
- strb r4, [r0, 0x1]
- adds r0, r6, 0
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
- adds r0, r6, 0
- bl GiveMonToPlayer
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r5, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r4, 0x1
- bgt _080C53E8
- cmp r4, 0
- blt _080C53E8
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8090D90
- adds r0, r5, 0
- movs r1, 0x3
- bl sub_8090D90
-_080C53E8:
- adds r0, r4, 0
- add sp, 0x78
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScriptGiveMon
-
- thumb_func_start ScriptGiveEgg
-ScriptGiveEgg: @ 80C53F8
- push {lr}
- sub sp, 0x68
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, sp
- movs r2, 0x1
- bl sub_8042044
- add r2, sp, 0x64
- movs r0, 0x1
- strb r0, [r2]
- mov r0, sp
- movs r1, 0x2D
- bl SetMonData
- mov r0, sp
- bl GiveMonToPlayer
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x68
- pop {r1}
- bx r1
- thumb_func_end ScriptGiveEgg
-
- thumb_func_start CheckForAlivePartyMons
-CheckForAlivePartyMons: @ 80C5428
- push {lr}
- bl sub_803DAA0
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- beq _080C5444
- cmp r1, 0x1
- bgt _080C5440
- cmp r1, 0
- beq _080C5444
- b _080C5448
-_080C5440:
- cmp r1, 0x2
- bne _080C5448
-_080C5444:
- ldr r0, _080C544C @ =gScriptResult
- strh r1, [r0]
-_080C5448:
- pop {r0}
- bx r0
- .align 2, 0
-_080C544C: .4byte gScriptResult
- thumb_func_end CheckForAlivePartyMons
-
- thumb_func_start CheckPartyMonHasHeldItem
-CheckPartyMonHasHeldItem: @ 80C5450
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r5, 0
- movs r7, 0xCE
- lsls r7, 1
-_080C545C:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _080C548C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080C5490
- cmp r0, r7
- beq _080C5490
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- cmp r0, r6
- bne _080C5490
- movs r0, 0x1
- b _080C5498
- .align 2, 0
-_080C548C: .4byte gPlayerParty
-_080C5490:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080C545C
- movs r0, 0
-_080C5498:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckPartyMonHasHeldItem
-
- thumb_func_start GetNameOfEnigmaBerryInPlayerParty
-GetNameOfEnigmaBerryInPlayerParty: @ 80C54A0
- push {r4,lr}
- movs r0, 0xAF
- bl CheckPartyMonHasHeldItem
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r4, 0x1
- bne _080C54C2
- movs r0, 0xAF
- bl ItemIdToBerryType
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080C54CC @ =gStringVar1
- bl GetBerryNameByBerryType
-_080C54C2:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C54CC: .4byte gStringVar1
- thumb_func_end GetNameOfEnigmaBerryInPlayerParty
-
- thumb_func_start ScriptWildBattle
-ScriptWildBattle: @ 80C54D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r7, r2, 16
- lsrs r6, r7, 16
- bl ZeroEnemyPartyMons
- ldr r0, _080C552C @ =gEnemyParty
- mov r8, r0
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x20
- bl CreateMon
- cmp r6, 0
- beq _080C551E
- add r0, sp, 0x10
- strb r6, [r0]
- adds r1, r0, 0
- lsrs r0, r7, 24
- strb r0, [r1, 0x1]
- mov r0, r8
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
-_080C551E:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C552C: .4byte gEnemyParty
- thumb_func_end ScriptWildBattle
-
- thumb_func_start ScriptSetMonMoveSlot
-ScriptSetMonMoveSlot: @ 80C5530
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- cmp r3, 0x6
- bls _080C554C
- ldr r0, _080C5560 @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080C554C:
- movs r0, 0x64
- muls r0, r3
- ldr r1, _080C5564 @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl SetMonMoveSlot
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5560: .4byte gPlayerPartyCount
-_080C5564: .4byte gPlayerParty
- thumb_func_end ScriptSetMonMoveSlot
-
- thumb_func_start sub_80C5568
-sub_80C5568: @ 80C5568
- push {lr}
- ldr r1, _080C5578 @ =gMain
- ldr r0, _080C557C @ =sub_80C5580
- str r0, [r1, 0x8]
- bl sub_8121E10
- pop {r0}
- bx r0
- .align 2, 0
-_080C5578: .4byte gMain
-_080C557C: .4byte sub_80C5580
- thumb_func_end sub_80C5568
-
- thumb_func_start sub_80C5580
-sub_80C5580: @ 80C5580
- push {lr}
- ldr r0, _080C5590 @ =gUnknown_02039270
- ldrb r1, [r0]
- cmp r1, 0
- bne _080C5598
- ldr r0, _080C5594 @ =gScriptResult
- strh r1, [r0]
- b _080C559E
- .align 2, 0
-_080C5590: .4byte gUnknown_02039270
-_080C5594: .4byte gScriptResult
-_080C5598:
- ldr r1, _080C55A8 @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
-_080C559E:
- ldr r0, _080C55AC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080C55A8: .4byte gScriptResult
-_080C55AC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80C5580
-
- thumb_func_start ChooseBattleTowerPlayerParty
-ChooseBattleTowerPlayerParty: @ 80C55B0
- push {lr}
- ldr r1, _080C55C0 @ =gMain
- ldr r0, _080C55C4 @ =SetBattleTowerPlayerParty
- str r0, [r1, 0x8]
- bl sub_8121E34
- pop {r0}
- bx r0
- .align 2, 0
-_080C55C0: .4byte gMain
-_080C55C4: .4byte SetBattleTowerPlayerParty
- thumb_func_end ChooseBattleTowerPlayerParty
-
- thumb_func_start SetBattleTowerPlayerParty
-SetBattleTowerPlayerParty: @ 80C55C8
- push {r4,lr}
- ldr r0, _080C55DC @ =gUnknown_02039270
- ldrb r4, [r0]
- cmp r4, 0
- bne _080C55E4
- bl LoadPlayerParty
- ldr r0, _080C55E0 @ =gScriptResult
- strh r4, [r0]
- b _080C55EE
- .align 2, 0
-_080C55DC: .4byte gUnknown_02039270
-_080C55E0: .4byte gScriptResult
-_080C55E4:
- bl ReducePlayerPartyToThree
- ldr r1, _080C55FC @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
-_080C55EE:
- ldr r0, _080C5600 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C55FC: .4byte gScriptResult
-_080C5600: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end SetBattleTowerPlayerParty
-
- thumb_func_start ReducePlayerPartyToThree
-ReducePlayerPartyToThree: @ 80C5604
- push {r4-r7,lr}
- sub sp, 0x134
- add r0, sp, 0x12C
- movs r1, 0
- str r1, [r0]
- ldr r2, _080C5674 @ =0x0500004b
- mov r1, sp
- bl CpuSet
- movs r5, 0
- movs r7, 0x64
- ldr r6, _080C5678 @ =gPlayerParty
- mov r4, sp
-_080C561E:
- ldr r0, _080C567C @ =gUnknown_02039270
- adds r1, r5, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080C5638
- subs r0, 0x1
- adds r1, r0, 0
- muls r1, r7
- adds r1, r6
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
-_080C5638:
- adds r4, 0x64
- adds r5, 0x1
- cmp r5, 0x2
- ble _080C561E
- add r0, sp, 0x130
- movs r1, 0
- str r1, [r0]
- ldr r4, _080C5678 @ =gPlayerParty
- ldr r2, _080C5680 @ =0x05000096
- adds r1, r4, 0
- bl CpuSet
- mov r5, sp
- add r6, sp, 0xC8
-_080C5654:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r5, 0x64
- adds r4, 0x64
- cmp r5, r6
- ble _080C5654
- bl CalculatePlayerPartyCount
- add sp, 0x134
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5674: .4byte 0x0500004b
-_080C5678: .4byte gPlayerParty
-_080C567C: .4byte gUnknown_02039270
-_080C5680: .4byte 0x05000096
- thumb_func_end ReducePlayerPartyToThree
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_pokemon_util_80F99CC.s b/asm/script_pokemon_util_80F99CC.s
deleted file mode 100644
index d107902ae..000000000
--- a/asm/script_pokemon_util_80F99CC.s
+++ /dev/null
@@ -1,978 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F99CC
-sub_80F99CC: @ 80F99CC
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080F9A04 @ =sub_80F9A8C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F9A08 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x2
- strh r0, [r1, 0x8]
- subs r0, 0x3
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F9A04: .4byte sub_80F9A8C
-_080F9A08: .4byte gTasks
- thumb_func_end sub_80F99CC
-
- thumb_func_start sub_80F9A0C
-sub_80F9A0C: @ 80F9A0C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080F9A44 @ =sub_80F9A8C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F9A48 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x3
- strh r0, [r1, 0x8]
- subs r0, 0x4
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F9A44: .4byte sub_80F9A8C
-_080F9A48: .4byte gTasks
- thumb_func_end sub_80F9A0C
-
- thumb_func_start sub_80F9A4C
-sub_80F9A4C: @ 80F9A4C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080F9A84 @ =sub_80F9A8C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F9A88 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x7
- strh r0, [r1, 0x8]
- subs r0, 0x8
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F9A84: .4byte sub_80F9A8C
-_080F9A88: .4byte gTasks
- thumb_func_end sub_80F9A4C
-
- thumb_func_start sub_80F9A8C
-sub_80F9A8C: @ 80F9A8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080F9AC4 @ =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F9ABE
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r1, _080F9AC8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0
- bl OpenPartyMenu
- adds r0, r4, 0
- bl DestroyTask
-_080F9ABE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9AC4: .4byte gPaletteFade
-_080F9AC8: .4byte gTasks
- thumb_func_end sub_80F9A8C
-
- thumb_func_start sub_80F9ACC
-sub_80F9ACC: @ 80F9ACC
- push {r4,r5,lr}
- ldr r1, _080F9AEC @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _080F9AE2
- b _080F9BF6
-_080F9AE2:
- lsls r0, 2
- ldr r1, _080F9AF0 @ =_080F9AF4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F9AEC: .4byte 0x0201b000
-_080F9AF0: .4byte _080F9AF4
- .align 2, 0
-_080F9AF4:
- .4byte _080F9B14
- .4byte _080F9B54
- .4byte _080F9B5A
- .4byte _080F9B6E
- .4byte _080F9B98
- .4byte _080F9B9E
- .4byte _080F9BB0
- .4byte _080F9BC8
-_080F9B14:
- ldr r0, _080F9B3C @ =0x00000266
- adds r5, r4, r0
- movs r1, 0
- ldrsh r3, [r5, r1]
- ldr r0, _080F9B40 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r3, r0
- bge _080F9B48
- movs r2, 0x98
- lsls r2, 2
- adds r0, r4, r2
- ldrb r0, [r0]
- ldrb r1, [r5]
- movs r2, 0x64
- muls r2, r3
- ldr r3, _080F9B44 @ =gPlayerParty
- adds r2, r3
- bl TryCreatePartyMenuMonIcon
- b _080F9BF0
- .align 2, 0
-_080F9B3C: .4byte 0x00000266
-_080F9B40: .4byte gPlayerPartyCount
-_080F9B44: .4byte gPlayerParty
-_080F9B48:
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _080F9BBC
-_080F9B54:
- bl LoadHeldItemIconGraphics
- b _080F9BB4
-_080F9B5A:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl CreateHeldItemIcons_806DC34
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _080F9BBC
-_080F9B6E:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- ldr r2, _080F9B94 @ =0x00000266
- adds r5, r4, r2
- ldrb r1, [r5]
- bl sub_806BD58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9BF0
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _080F9BBC
- .align 2, 0
-_080F9B94: .4byte 0x00000266
-_080F9B98:
- bl PartyMenuPrintMonsLevelOrStatus
- b _080F9BB4
-_080F9B9E:
- bl PrintPartyMenuMonNicknames
- ldr r1, _080F9BAC @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _080F9BBC
- .align 2, 0
-_080F9BAC: .4byte 0x0201b000
-_080F9BB0:
- bl sub_80F9C00
-_080F9BB4:
- ldr r1, _080F9BC4 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r1, r2
-_080F9BBC:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080F9BF6
- .align 2, 0
-_080F9BC4: .4byte 0x0201b000
-_080F9BC8:
- ldr r0, _080F9BEC @ =0x00000266
- adds r5, r4, r0
- ldrb r0, [r5]
- bl sub_806B58C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9BF0
- movs r1, 0
- strh r1, [r5]
- movs r2, 0x99
- lsls r2, 2
- adds r0, r4, r2
- strh r1, [r0]
- movs r0, 0x1
- b _080F9BF8
- .align 2, 0
-_080F9BEC: .4byte 0x00000266
-_080F9BF0:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080F9BF6:
- movs r0, 0
-_080F9BF8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F9ACC
-
- thumb_func_start sub_80F9C00
-sub_80F9C00: @ 80F9C00
- push {r4,lr}
- movs r4, 0
- b _080F9C58
-_080F9C06:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080F9C24 @ =gPlayerParty
- adds r0, r1
- bl sub_80AE47C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F9C52
- lsls r0, 2
- ldr r1, _080F9C28 @ =_080F9C2C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F9C24: .4byte gPlayerParty
-_080F9C28: .4byte _080F9C2C
- .align 2, 0
-_080F9C2C:
- .4byte _080F9C40
- .4byte _080F9C4A
- .4byte _080F9C4A
- .4byte _080F9C40
- .4byte _080F9C40
-_080F9C40:
- adds r0, r4, 0
- movs r1, 0x7E
- bl sub_806BC3C
- b _080F9C52
-_080F9C4A:
- adds r0, r4, 0
- movs r1, 0x70
- bl sub_806BC3C
-_080F9C52:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080F9C58:
- ldr r0, _080F9C68 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _080F9C06
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9C68: .4byte gPlayerPartyCount
- thumb_func_end sub_80F9C00
-
- thumb_func_start sub_80F9C6C
-sub_80F9C6C: @ 80F9C6C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F9C94 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F9CD8
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _080F9C98
- cmp r0, 0x2
- beq _080F9CC0
- b _080F9CD8
- .align 2, 0
-_080F9C94: .4byte gPaletteFade
-_080F9C98:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _080F9CB8 @ =gUnknown_02038694
- strb r0, [r1]
- ldr r2, _080F9CBC @ =gSpecialVar_0x8004
- ldrb r0, [r1]
- strh r0, [r2]
- adds r0, r4, 0
- bl sub_8123138
- b _080F9CD8
- .align 2, 0
-_080F9CB8: .4byte gUnknown_02038694
-_080F9CBC: .4byte gSpecialVar_0x8004
-_080F9CC0:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080F9CE0 @ =gUnknown_02038694
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080F9CE4 @ =gSpecialVar_0x8004
- movs r0, 0xFF
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_8123138
-_080F9CD8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9CE0: .4byte gUnknown_02038694
-_080F9CE4: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80F9C6C
-
- thumb_func_start sub_80F9CE8
-sub_80F9CE8: @ 80F9CE8
- push {r4,r5,lr}
- ldr r1, _080F9D08 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _080F9CFE
- b _080F9E12
-_080F9CFE:
- lsls r0, 2
- ldr r1, _080F9D0C @ =_080F9D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F9D08: .4byte 0x0201b000
-_080F9D0C: .4byte _080F9D10
- .align 2, 0
-_080F9D10:
- .4byte _080F9D30
- .4byte _080F9D70
- .4byte _080F9D76
- .4byte _080F9D8A
- .4byte _080F9DB4
- .4byte _080F9DBA
- .4byte _080F9DCC
- .4byte _080F9DE4
-_080F9D30:
- ldr r0, _080F9D58 @ =0x00000266
- adds r5, r4, r0
- movs r1, 0
- ldrsh r3, [r5, r1]
- ldr r0, _080F9D5C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r3, r0
- bge _080F9D64
- movs r2, 0x98
- lsls r2, 2
- adds r0, r4, r2
- ldrb r0, [r0]
- ldrb r1, [r5]
- movs r2, 0x64
- muls r2, r3
- ldr r3, _080F9D60 @ =gPlayerParty
- adds r2, r3
- bl TryCreatePartyMenuMonIcon
- b _080F9E0C
- .align 2, 0
-_080F9D58: .4byte 0x00000266
-_080F9D5C: .4byte gPlayerPartyCount
-_080F9D60: .4byte gPlayerParty
-_080F9D64:
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _080F9DD8
-_080F9D70:
- bl LoadHeldItemIconGraphics
- b _080F9DD0
-_080F9D76:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl CreateHeldItemIcons_806DC34
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _080F9DD8
-_080F9D8A:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- ldr r2, _080F9DB0 @ =0x00000266
- adds r5, r4, r2
- ldrb r1, [r5]
- bl sub_806BD58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9E0C
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _080F9DD8
- .align 2, 0
-_080F9DB0: .4byte 0x00000266
-_080F9DB4:
- bl PartyMenuPrintMonsLevelOrStatus
- b _080F9DD0
-_080F9DBA:
- bl PrintPartyMenuMonNicknames
- ldr r1, _080F9DC8 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _080F9DD8
- .align 2, 0
-_080F9DC8: .4byte 0x0201b000
-_080F9DCC:
- bl sub_80F9E1C
-_080F9DD0:
- ldr r1, _080F9DE0 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r1, r2
-_080F9DD8:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080F9E12
- .align 2, 0
-_080F9DE0: .4byte 0x0201b000
-_080F9DE4:
- ldr r0, _080F9E08 @ =0x00000266
- adds r5, r4, r0
- ldrb r0, [r5]
- bl sub_806B58C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9E0C
- movs r1, 0
- strh r1, [r5]
- movs r2, 0x99
- lsls r2, 2
- adds r0, r4, r2
- strh r1, [r0]
- movs r0, 0x1
- b _080F9E14
- .align 2, 0
-_080F9E08: .4byte 0x00000266
-_080F9E0C:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080F9E12:
- movs r0, 0
-_080F9E14:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F9CE8
-
- thumb_func_start sub_80F9E1C
-sub_80F9E1C: @ 80F9E1C
- push {r4,lr}
- movs r4, 0
- b _080F9E52
-_080F9E22:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080F9E40 @ =gPlayerParty
- adds r0, r1
- bl sub_8040574
- lsls r0, 24
- cmp r0, 0
- bne _080F9E44
- adds r0, r4, 0
- movs r1, 0x9A
- bl sub_806BC3C
- b _080F9E4C
- .align 2, 0
-_080F9E40: .4byte gPlayerParty
-_080F9E44:
- adds r0, r4, 0
- movs r1, 0x8C
- bl sub_806BC3C
-_080F9E4C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080F9E52:
- ldr r0, _080F9E60 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _080F9E22
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9E60: .4byte gPlayerPartyCount
- thumb_func_end sub_80F9E1C
-
- thumb_func_start sub_80F9E64
-sub_80F9E64: @ 80F9E64
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080F9E8C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F9EE2
- adds r0, r6, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _080F9E90
- cmp r0, 0x2
- beq _080F9ED0
- b _080F9EE2
- .align 2, 0
-_080F9E8C: .4byte gPaletteFade
-_080F9E90:
- movs r0, 0x5
- bl PlaySE
- ldr r4, _080F9EC4 @ =gSpecialVar_0x8004
- adds r0, r6, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldr r5, _080F9EC8 @ =gSpecialVar_0x8005
- ldrh r1, [r4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080F9ECC @ =gPlayerParty
- adds r0, r1
- bl sub_8040574
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- adds r0, r6, 0
- bl sub_8123138
- b _080F9EE2
- .align 2, 0
-_080F9EC4: .4byte gSpecialVar_0x8004
-_080F9EC8: .4byte gSpecialVar_0x8005
-_080F9ECC: .4byte gPlayerParty
-_080F9ED0:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080F9EE8 @ =gSpecialVar_0x8004
- movs r0, 0xFF
- strh r0, [r1]
- adds r0, r6, 0
- bl sub_8123138
-_080F9EE2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9EE8: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80F9E64
-
- thumb_func_start sub_80F9EEC
-sub_80F9EEC: @ 80F9EEC
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080F9F20 @ =gPlayerParty
- ldr r1, _080F9F24 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- ldr r2, _080F9F28 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080F9F2C @ =c2_exit_to_overworld_2_switch
- movs r4, 0
- str r4, [sp]
- bl sub_809D9F0
- ldr r1, _080F9F30 @ =0x02018000
- movs r0, 0x3
- strb r0, [r1, 0x8]
- ldr r1, _080F9F34 @ =gUnknown_0300485C
- ldr r0, _080F9F38 @ =sub_8080990
- str r0, [r1]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9F20: .4byte gPlayerParty
-_080F9F24: .4byte gSpecialVar_0x8004
-_080F9F28: .4byte gPlayerPartyCount
-_080F9F2C: .4byte c2_exit_to_overworld_2_switch
-_080F9F30: .4byte 0x02018000
-_080F9F34: .4byte gUnknown_0300485C
-_080F9F38: .4byte sub_8080990
- thumb_func_end sub_80F9EEC
-
- thumb_func_start sub_80F9F3C
-sub_80F9F3C: @ 80F9F3C
- push {r4,r5,lr}
- ldr r1, _080F9F78 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- movs r4, 0
- adds r5, r1, 0
-_080F9F48:
- ldr r0, _080F9F7C @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080F9F80 @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0xD
- bl GetMonData
- cmp r0, 0
- beq _080F9F66
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080F9F66:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F9F48
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9F78: .4byte gScriptResult
-_080F9F7C: .4byte gSpecialVar_0x8004
-_080F9F80: .4byte gPlayerParty
- thumb_func_end sub_80F9F3C
-
- thumb_func_start sub_80F9F84
-sub_80F9F84: @ 80F9F84
- push {r4,r5,lr}
- ldr r0, _080F9FC4 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _080F9FC8 @ =gPlayerParty
- adds r5, r0
- ldr r0, _080F9FCC @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r1, _080F9FD0 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, _080F9FD4 @ =gStringVar2
- movs r1, 0xD
- muls r1, r4
- ldr r2, _080F9FD8 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9FC4: .4byte gSpecialVar_0x8004
-_080F9FC8: .4byte gPlayerParty
-_080F9FCC: .4byte gSpecialVar_0x8005
-_080F9FD0: .4byte gStringVar1
-_080F9FD4: .4byte gStringVar2
-_080F9FD8: .4byte gMoveNames
- thumb_func_end sub_80F9F84
-
- thumb_func_start sub_80F9FDC
-sub_80F9FDC: @ 80F9FDC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- mov r8, r0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r0, 0xD
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r1, [sp, 0x8]
- bl GetMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x14]
- strh r0, [r1]
- adds r3, r4, 0
- adds r3, 0xD
- str r3, [sp, 0xC]
- mov r0, r8
- adds r1, r3, 0
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r7, r5, 0
- adds r7, 0x11
- str r7, [sp, 0x10]
- mov r0, r8
- adds r1, r7, 0
- bl GetMonData
- mov r1, sp
- adds r1, 0x5
- str r1, [sp, 0x18]
- strb r0, [r1]
- adds r3, r4, 0
- adds r3, 0x11
- str r3, [sp, 0x1C]
- mov r0, r8
- adds r1, r3, 0
- bl GetMonData
- add r7, sp, 0x4
- mov r10, r7
- strb r0, [r7]
- mov r0, r8
- movs r1, 0x15
- bl GetMonData
- mov r6, sp
- adds r6, 0x6
- strb r0, [r6]
- ldr r1, _080FA0D8 @ =gUnknown_08208238
- adds r0, r5, r1
- ldrb r0, [r0]
- mov r9, r0
- ldrb r0, [r6]
- adds r2, r0, 0
- mov r3, r9
- ands r2, r3
- lsls r5, 1
- asrs r2, r5
- lsls r2, 24
- lsrs r2, 24
- adds r1, r4, r1
- ldrb r3, [r1]
- adds r1, r0, 0
- ands r1, r3
- lsls r4, 1
- asrs r1, r4
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- bics r0, r7
- strb r0, [r6]
- ldrb r0, [r6]
- bics r0, r3
- strb r0, [r6]
- lsls r2, r4
- lsls r1, r5
- adds r2, r1
- ldrb r0, [r6]
- orrs r0, r2
- strb r0, [r6]
- mov r0, r8
- ldr r1, [sp, 0x8]
- mov r2, sp
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0xC]
- ldr r2, [sp, 0x14]
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0x10]
- mov r2, r10
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0x1C]
- ldr r2, [sp, 0x18]
- bl SetMonData
- mov r0, r8
- movs r1, 0x15
- adds r2, r6, 0
- bl SetMonData
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA0D8: .4byte gUnknown_08208238
- thumb_func_end sub_80F9FDC
-
- thumb_func_start sub_80FA0DC
-sub_80FA0DC: @ 80FA0DC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _080FA13C @ =gSpecialVar_0x8004
- mov r8, r0
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080FA140 @ =gPlayerParty
- adds r0, r5
- ldr r4, _080FA144 @ =gSpecialVar_0x8005
- ldrb r2, [r4]
- movs r1, 0
- bl SetMonMoveSlot
- mov r1, r8
- ldrh r0, [r1]
- muls r0, r6
- adds r0, r5
- ldrb r1, [r4]
- bl RemoveMonPPBonus
- ldrh r4, [r4]
- cmp r4, 0x2
- bhi _080FA130
-_080FA10E:
- ldr r0, _080FA13C @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080FA140 @ =gPlayerParty
- adds r0, r1
- lsls r1, r4, 24
- lsrs r1, 24
- adds r4, 0x1
- lsls r2, r4, 24
- lsrs r2, 24
- bl sub_80F9FDC
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x2
- bls _080FA10E
-_080FA130:
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA13C: .4byte gSpecialVar_0x8004
-_080FA140: .4byte gPlayerParty
-_080FA144: .4byte gSpecialVar_0x8005
- thumb_func_end sub_80FA0DC
-
- thumb_func_start sub_80FA148
-sub_80FA148: @ 80FA148
- push {r4,lr}
- ldr r0, _080FA170 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080FA174 @ =gPlayerParty
- adds r0, r1
- ldr r4, _080FA178 @ =gScriptResult
- movs r1, 0
- strh r1, [r4]
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _080FA16A
- movs r0, 0x1
- strh r0, [r4]
-_080FA16A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA170: .4byte gSpecialVar_0x8004
-_080FA174: .4byte gPlayerParty
-_080FA178: .4byte gScriptResult
- thumb_func_end sub_80FA148
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/secret_base.s b/asm/secret_base.s
index 139375998..bfa0e573d 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -943,7 +943,7 @@ sub_80BBB90: @ 80BBB90
push {r4,lr}
sub sp, 0x4
bl ScriptContext2_Enable
- bl HideMapNamePopUpWindow
+ bl HideMapNamePopup
mov r4, sp
adds r4, 0x2
movs r2, 0x88
diff --git a/asm/shop.s b/asm/shop.s
index d59f9584e..1d0863469 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -6,818 +6,6 @@
.text
- thumb_func_start CreateShopMenu
-CreateShopMenu: @ 80B2D54
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ScriptContext2_Enable
- ldr r1, _080B2D90 @ =gUnknown_03000708
- movs r0, 0
- strb r4, [r1, 0xC]
- strb r0, [r1, 0x9]
- cmp r4, 0
- bne _080B2D9C
- movs r0, 0x2
- strb r0, [r1, 0xA]
- movs r0, 0
- movs r1, 0
- movs r2, 0xA
- movs r3, 0x7
- bl MenuDrawTextWindow
- ldr r3, _080B2D94 @ =gUnknown_083CC6D0
- ldr r0, _080B2D98 @ =gUnknown_083CC6E8
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x3
- bl PrintMenuItemsReordered
- b _080B2DBC
- .align 2, 0
-_080B2D90: .4byte gUnknown_03000708
-_080B2D94: .4byte gUnknown_083CC6D0
-_080B2D98: .4byte gUnknown_083CC6E8
-_080B2D9C:
- movs r0, 0x1
- strb r0, [r1, 0xA]
- movs r0, 0
- movs r1, 0
- movs r2, 0xA
- movs r3, 0x5
- bl MenuDrawTextWindow
- ldr r3, _080B2DEC @ =gUnknown_083CC6D0
- ldr r0, _080B2DF0 @ =gUnknown_083CC6EB
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x2
- bl PrintMenuItemsReordered
-_080B2DBC:
- ldr r0, _080B2DF4 @ =gUnknown_03000708
- ldrb r3, [r0, 0xA]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- bl InitMenu
- ldr r0, _080B2DF8 @ =sub_80B2E38
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080B2DEC: .4byte gUnknown_083CC6D0
-_080B2DF0: .4byte gUnknown_083CC6EB
-_080B2DF4: .4byte gUnknown_03000708
-_080B2DF8: .4byte sub_80B2E38
- thumb_func_end CreateShopMenu
-
- thumb_func_start SetShopMenuCallback
-SetShopMenuCallback: @ 80B2DFC
- ldr r1, _080B2E04 @ =gUnknown_03000708
- str r0, [r1]
- bx lr
- .align 2, 0
-_080B2E04: .4byte gUnknown_03000708
- thumb_func_end SetShopMenuCallback
-
- thumb_func_start SetShopItemsForSale
-SetShopItemsForSale: @ 80B2E08
- push {lr}
- adds r1, r0, 0
- movs r2, 0
- ldr r3, _080B2E34 @ =gUnknown_03000708
- str r1, [r3, 0x4]
- strb r2, [r3, 0x8]
- ldrh r0, [r1]
- cmp r0, 0
- beq _080B2E30
-_080B2E1A:
- ldrb r0, [r3, 0x8]
- adds r0, 0x1
- strb r0, [r3, 0x8]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _080B2E1A
-_080B2E30:
- pop {r0}
- bx r0
- .align 2, 0
-_080B2E34: .4byte gUnknown_03000708
- thumb_func_end SetShopItemsForSale
-
- thumb_func_start sub_80B2E38
-sub_80B2E38: @ 80B2E38
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080B2E60 @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080B2E68
- ldr r4, _080B2E64 @ =gUnknown_03000708
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- beq _080B2EF4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _080B2E82
- .align 2, 0
-_080B2E60: .4byte gMain
-_080B2E64: .4byte gUnknown_03000708
-_080B2E68:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080B2E90
- ldr r4, _080B2E8C @ =gUnknown_03000708
- ldrb r0, [r4, 0x9]
- ldrb r1, [r4, 0xA]
- cmp r0, r1
- beq _080B2EF4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_080B2E82:
- bl MoveMenuCursor
- strb r0, [r4, 0x9]
- b _080B2EF4
- .align 2, 0
-_080B2E8C: .4byte gUnknown_03000708
-_080B2E90:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B2EE0
- movs r0, 0x5
- bl PlaySE
- ldr r3, _080B2EB0 @ =gUnknown_03000708
- ldrb r0, [r3, 0xC]
- cmp r0, 0
- bne _080B2EBC
- ldr r1, _080B2EB4 @ =gUnknown_083CC6D0
- ldr r2, _080B2EB8 @ =gUnknown_083CC6E8
- b _080B2EC0
- .align 2, 0
-_080B2EB0: .4byte gUnknown_03000708
-_080B2EB4: .4byte gUnknown_083CC6D0
-_080B2EB8: .4byte gUnknown_083CC6E8
-_080B2EBC:
- ldr r1, _080B2ED8 @ =gUnknown_083CC6D0
- ldr r2, _080B2EDC @ =gUnknown_083CC6EB
-_080B2EC0:
- ldrb r0, [r3, 0x9]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- b _080B2EF4
- .align 2, 0
-_080B2ED8: .4byte gUnknown_083CC6D0
-_080B2EDC: .4byte gUnknown_083CC6EB
-_080B2EE0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B2EF4
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl HandleShopMenuQuit
-_080B2EF4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2E38
-
- thumb_func_start sub_80B2EFC
-sub_80B2EFC: @ 80B2EFC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B2F24 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080B2F28 @ =BuyMenuDrawGraphics
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- ldr r0, _080B2F2C @ =sub_80B2FA0
- str r0, [r1]
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- pop {r0}
- bx r0
- .align 2, 0
-_080B2F24: .4byte gTasks
-_080B2F28: .4byte BuyMenuDrawGraphics
-_080B2F2C: .4byte sub_80B2FA0
- thumb_func_end sub_80B2EFC
-
- thumb_func_start sub_80B2F30
-sub_80B2F30: @ 80B2F30
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B2F58 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080B2F5C @ =sub_80A6300
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- ldr r0, _080B2F60 @ =sub_80B2FA0
- str r0, [r1]
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- pop {r0}
- bx r0
- .align 2, 0
-_080B2F58: .4byte gTasks
-_080B2F5C: .4byte sub_80A6300
-_080B2F60: .4byte sub_80B2FA0
- thumb_func_end sub_80B2F30
-
- thumb_func_start HandleShopMenuQuit
-HandleShopMenuQuit: @ 80B2F64
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8072DEC
- movs r0, 0
- movs r1, 0
- movs r2, 0xB
- movs r3, 0x8
- bl MenuZeroFillWindowRect
- bl sub_80BE3BC
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _080B2F9C @ =gUnknown_03000708
- ldr r0, [r0]
- cmp r0, 0
- beq _080B2F96
- bl _call_via_r0
-_080B2F96:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2F9C: .4byte gUnknown_03000708
- thumb_func_end HandleShopMenuQuit
-
- thumb_func_start sub_80B2FA0
-sub_80B2FA0: @ 80B2FA0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080B2FD4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B2FCE
- ldr r0, _080B2FD8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- lsls r0, 16
- ldrh r1, [r1, 0x1A]
- orrs r0, r1
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_080B2FCE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2FD4: .4byte gPaletteFade
-_080B2FD8: .4byte gTasks
- thumb_func_end sub_80B2FA0
-
- thumb_func_start ReturnToShopMenuAfterExitingSellMenu
-ReturnToShopMenuAfterExitingSellMenu: @ 80B2FDC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B2FF8 @ =gUnknown_03000708
- ldrb r0, [r0, 0xC]
- bl CreateShopMenu
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2FF8: .4byte gUnknown_03000708
- thumb_func_end ReturnToShopMenuAfterExitingSellMenu
-
- thumb_func_start Task_ExitSellMenu
-Task_ExitSellMenu: @ 80B2FFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3040
- ldr r0, _080B3028 @ =gUnknown_03000708
- ldrb r0, [r0, 0xC]
- cmp r0, 0x2
- bne _080B3034
- ldr r1, _080B302C @ =gOtherText_CanIHelpYou
- ldr r2, _080B3030 @ =ReturnToShopMenuAfterExitingSellMenu
- adds r0, r4, 0
- movs r3, 0
- bl DisplayItemMessageOnField
- b _080B3040
- .align 2, 0
-_080B3028: .4byte gUnknown_03000708
-_080B302C: .4byte gOtherText_CanIHelpYou
-_080B3030: .4byte ReturnToShopMenuAfterExitingSellMenu
-_080B3034:
- ldr r1, _080B3048 @ =gOtherText_AnythingElse
- ldr r2, _080B304C @ =ReturnToShopMenuAfterExitingSellMenu
- adds r0, r5, 0
- movs r3, 0
- bl DisplayItemMessageOnField
-_080B3040:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3048: .4byte gOtherText_AnythingElse
-_080B304C: .4byte ReturnToShopMenuAfterExitingSellMenu
- thumb_func_end Task_ExitSellMenu
-
- thumb_func_start sub_80B3050
-sub_80B3050: @ 80B3050
- push {lr}
- bl pal_fill_black
- ldr r0, _080B3064 @ =Task_ExitSellMenu
- movs r1, 0x8
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B3064: .4byte Task_ExitSellMenu
- thumb_func_end sub_80B3050
-
- thumb_func_start sub_80B3068
-sub_80B3068: @ 80B3068
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl Task_ExitSellMenu
- pop {r0}
- bx r0
- thumb_func_end sub_80B3068
-
- thumb_func_start unref_sub_80B3078
-unref_sub_80B3078: @ 80B3078
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B308C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080B3090 @ =Task_ExitSellMenu
- str r0, [r1]
- bx lr
- .align 2, 0
-_080B308C: .4byte gTasks
-_080B3090: .4byte Task_ExitSellMenu
- thumb_func_end unref_sub_80B3078
-
- thumb_func_start sub_80B3094
-sub_80B3094: @ 80B3094
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTasks
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80B3094
-
- thumb_func_start sub_80B30AC
-sub_80B30AC: @ 80B30AC
- push {r4,lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r3, _080B30F0 @ =gBGTilemapBuffers + 0x800
- ldr r1, _080B30F4 @ =0x0600e800
- ldr r0, _080B30F8 @ =0x040000d4
- str r3, [r0]
- str r1, [r0, 0x4]
- ldr r4, _080B30FC @ =0x80000400
- str r4, [r0, 0x8]
- ldr r1, [r0, 0x8]
- movs r2, 0x80
- lsls r2, 4
- adds r1, r3, r2
- ldr r2, _080B3100 @ =0x0600e000
- str r1, [r0]
- str r2, [r0, 0x4]
- str r4, [r0, 0x8]
- ldr r1, [r0, 0x8]
- movs r1, 0x80
- lsls r1, 5
- adds r3, r1
- ldr r1, _080B3104 @ =0x0600f000
- str r3, [r0]
- str r1, [r0, 0x4]
- str r4, [r0, 0x8]
- ldr r0, [r0, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B30F0: .4byte gBGTilemapBuffers + 0x800
-_080B30F4: .4byte 0x0600e800
-_080B30F8: .4byte 0x040000d4
-_080B30FC: .4byte 0x80000400
-_080B3100: .4byte 0x0600e000
-_080B3104: .4byte 0x0600f000
- thumb_func_end sub_80B30AC
-
- thumb_func_start BuyMenuDrawGraphics
-BuyMenuDrawGraphics: @ 80B3108
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- bl sub_80F9438
- bl remove_some_task
- ldr r0, _080B3204 @ =REG_BG1HOFS
- movs r5, 0
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- ldr r0, _080B3208 @ =gPaletteFade
- mov r8, r0
- ldrb r0, [r0, 0x8]
- movs r1, 0x80
- orrs r0, r1
- mov r1, r8
- strb r0, [r1, 0x8]
- movs r1, 0xE0
- lsls r1, 19
- movs r6, 0
- str r6, [sp, 0x4]
- ldr r0, _080B320C @ =0x040000d4
- add r2, sp, 0x4
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080B3210 @ =0x85000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _080B3214 @ =gBuyMenuFrame_Gfx
- ldr r1, _080B3218 @ =0x06007c00
- bl LZDecompressVram
- ldr r0, _080B321C @ =gBuyMenuFrame_Tilemap
- ldr r1, _080B3220 @ =0x02018000
- bl sub_800D238
- ldr r0, _080B3224 @ =gMenuMoneyPal
- movs r1, 0xC0
- movs r2, 0x20
- bl LoadCompressedPalette
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- ldr r4, _080B3228 @ =gWindowConfig_81E6DFC
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl BuyMenuDrawMapGraphics
- ldr r0, _080B322C @ =gUnknown_03000708
- strb r6, [r0, 0x9]
- strb r5, [r0, 0xB]
- movs r0, 0
- movs r1, 0
- movs r2, 0x20
- movs r3, 0x20
- bl MenuZeroFillWindowRect
- ldr r0, _080B3230 @ =gSaveBlock1
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_80B7C14
- movs r0, 0
- movs r1, 0x7
- bl sub_80B3764
- bl sub_80B37EC
- bl sub_80B3270
- ldr r0, _080B3234 @ =sub_80B40E8
- movs r1, 0x8
- bl CreateTask
- bl sub_80B3240
- movs r0, 0x1
- negs r0, r0
- str r6, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- mov r2, r8
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _080B3238 @ =sub_80B30AC
- bl SetVBlankCallback
- ldr r0, _080B323C @ =sub_80B3094
- bl SetMainCallback2
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3204: .4byte REG_BG1HOFS
-_080B3208: .4byte gPaletteFade
-_080B320C: .4byte 0x040000d4
-_080B3210: .4byte 0x85000100
-_080B3214: .4byte gBuyMenuFrame_Gfx
-_080B3218: .4byte 0x06007c00
-_080B321C: .4byte gBuyMenuFrame_Tilemap
-_080B3220: .4byte 0x02018000
-_080B3224: .4byte gMenuMoneyPal
-_080B3228: .4byte gWindowConfig_81E6DFC
-_080B322C: .4byte gUnknown_03000708
-_080B3230: .4byte gSaveBlock1
-_080B3234: .4byte sub_80B40E8
-_080B3238: .4byte sub_80B30AC
-_080B323C: .4byte sub_80B3094
- thumb_func_end BuyMenuDrawGraphics
-
- thumb_func_start sub_80B3240
-sub_80B3240: @ 80B3240
- push {lr}
- sub sp, 0x4
- ldr r1, _080B326C @ =gUnknown_083CC710
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- mov r0, sp
- adds r0, 0x2
- movs r1, 0xD1
- movs r2, 0x2
- bl LoadPalette
- mov r0, sp
- movs r1, 0xD8
- movs r2, 0x2
- bl LoadPalette
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080B326C: .4byte gUnknown_083CC710
- thumb_func_end sub_80B3240
-
- thumb_func_start sub_80B3270
-sub_80B3270: @ 80B3270
- push {lr}
- bl sub_80F944C
- ldr r0, _080B32A0 @ =gUnknown_03000708
- ldrb r0, [r0, 0x8]
- cmp r0, 0x7
- bls _080B329A
- movs r0, 0
- movs r1, 0xAC
- movs r2, 0xC
- bl CreateVerticalScrollIndicators
- movs r0, 0x1
- movs r1, 0xAC
- movs r2, 0x94
- bl CreateVerticalScrollIndicators
- movs r0, 0
- movs r1, 0x1
- bl sub_80F979C
-_080B329A:
- pop {r0}
- bx r0
- .align 2, 0
-_080B32A0: .4byte gUnknown_03000708
- thumb_func_end sub_80B3270
-
- thumb_func_start sub_80B32A4
-sub_80B32A4: @ 80B32A4
- push {lr}
- ldr r0, _080B32B8 @ =gUnknown_03000708
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- bne _080B32BC
- movs r0, 0
- movs r1, 0x1
- bl sub_80F979C
- b _080B32C4
- .align 2, 0
-_080B32B8: .4byte gUnknown_03000708
-_080B32BC:
- movs r0, 0
- movs r1, 0
- bl sub_80F979C
-_080B32C4:
- ldr r1, _080B32DC @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, 0x7
- ldrb r1, [r1, 0x8]
- cmp r0, r1
- blt _080B32E0
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80F979C
- b _080B32E8
- .align 2, 0
-_080B32DC: .4byte gUnknown_03000708
-_080B32E0:
- movs r0, 0x1
- movs r1, 0
- bl sub_80F979C
-_080B32E8:
- pop {r0}
- bx r0
- thumb_func_end sub_80B32A4
-
- thumb_func_start sub_80B32EC
-sub_80B32EC: @ 80B32EC
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r2
- lsls r1, 1
- adds r1, r0
- ldr r2, _080B3304 @ =0x0000c3e1
- adds r0, r2, 0
- strh r0, [r1]
- strh r0, [r1, 0x2]
- bx lr
- .align 2, 0
-_080B3304: .4byte 0x0000c3e1
- thumb_func_end sub_80B32EC
-
- thumb_func_start BuyMenuDrawMapMetatileLayer
-BuyMenuDrawMapMetatileLayer: @ 80B3308
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r2
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r3]
- strh r0, [r1]
- ldrh r0, [r3, 0x2]
- strh r0, [r1, 0x2]
- adds r2, r1, 0
- adds r2, 0x40
- ldrh r0, [r3, 0x4]
- strh r0, [r2]
- adds r1, 0x42
- ldrh r0, [r3, 0x6]
- strh r0, [r1]
- bx lr
- thumb_func_end BuyMenuDrawMapMetatileLayer
-
- thumb_func_start BuyMenuDrawMapMetatile
-BuyMenuDrawMapMetatile: @ 80B3330
- push {r4-r7,lr}
- adds r7, r2, 0
- lsls r3, 24
- lsrs r3, 24
- adds r2, r3, 0
- lsls r0, 17
- lsrs r0, 16
- lsls r1, 22
- movs r4, 0x80
- lsls r4, 15
- adds r1, r4
- lsrs r1, 16
- cmp r3, 0x1
- beq _080B3364
- cmp r3, 0x1
- bgt _080B3356
- cmp r3, 0
- beq _080B335C
- b _080B33C0
-_080B3356:
- cmp r2, 0x2
- beq _080B3398
- b _080B33C0
-_080B335C:
- ldr r5, _080B3360 @ =gBGTilemapBuffers + 0x1000
- b _080B3366
- .align 2, 0
-_080B3360: .4byte gBGTilemapBuffers + 0x1000
-_080B3364:
- ldr r5, _080B3390 @ =gBGTilemapBuffers + 0x1800
-_080B3366:
- lsls r6, r0, 16
- asrs r6, 16
- lsls r4, r1, 16
- asrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- adds r3, r7, 0
- bl BuyMenuDrawMapMetatileLayer
- ldr r0, _080B3394 @ =0xfffff800
- adds r5, r0
- adds r3, r7, 0
- adds r3, 0x8
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl BuyMenuDrawMapMetatileLayer
- b _080B33C0
- .align 2, 0
-_080B3390: .4byte gBGTilemapBuffers + 0x1800
-_080B3394: .4byte 0xfffff800
-_080B3398:
- ldr r5, _080B33C8 @ =gBGTilemapBuffers + 0x1800
- lsls r6, r0, 16
- asrs r6, 16
- lsls r4, r1, 16
- asrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- adds r3, r7, 0
- bl BuyMenuDrawMapMetatileLayer
- ldr r0, _080B33CC @ =0xfffff000
- adds r5, r0
- adds r3, r7, 0
- adds r3, 0x8
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl BuyMenuDrawMapMetatileLayer
-_080B33C0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B33C8: .4byte gBGTilemapBuffers + 0x1800
-_080B33CC: .4byte 0xfffff000
- thumb_func_end BuyMenuDrawMapMetatile
-
thumb_func_start sub_80B33D0
sub_80B33D0: @ 80B33D0
push {r4-r6,lr}
diff --git a/asm/unknown_debug_menu.s b/asm/unknown_debug_menu.s
deleted file mode 100644
index 138fdb876..000000000
--- a/asm/unknown_debug_menu.s
+++ /dev/null
@@ -1,133 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_814A414
-unref_sub_814A414: @ 814A414
- push {lr}
- sub sp, 0x8
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x12
- bl MenuDrawTextWindow
- ldr r3, _0814A458 @ =gUnknown_0842C29C
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x8
- bl PrintMenuItems
- movs r0, 0
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x8
- bl InitMenu
- ldr r1, _0814A45C @ =gCallback_03004AE8
- ldr r0, _0814A460 @ =sub_814A464
- str r0, [r1]
- movs r0, 0
- add sp, 0x8
- pop {r1}
- bx r1
- .align 2, 0
-_0814A458: .4byte gUnknown_0842C29C
-_0814A45C: .4byte gCallback_03004AE8
-_0814A460: .4byte sub_814A464
- thumb_func_end unref_sub_814A414
-
- thumb_func_start sub_814A464
-sub_814A464: @ 814A464
- push {lr}
- bl ProcessMenuInput
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- lsls r0, r2, 24
- asrs r1, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- bne _0814A480
- movs r0, 0
- b _0814A4B2
-_0814A480:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0814A4AC
- ldr r0, _0814A4A0 @ =gUnknown_02024D1E
- strb r2, [r0]
- ldr r2, _0814A4A4 @ =gCallback_03004AE8
- ldr r0, _0814A4A8 @ =gUnknown_0842C29C
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2]
- movs r0, 0
- b _0814A4B2
- .align 2, 0
-_0814A4A0: .4byte gUnknown_02024D1E
-_0814A4A4: .4byte gCallback_03004AE8
-_0814A4A8: .4byte gUnknown_0842C29C
-_0814A4AC:
- bl CloseMenu
- movs r0, 0x1
-_0814A4B2:
- pop {r1}
- bx r1
- thumb_func_end sub_814A464
-
- thumb_func_start sub_814A4B8
-sub_814A4B8: @ 814A4B8
- push {r4,lr}
- ldr r2, _0814A4FC @ =gSaveBlock2
- ldr r1, _0814A500 @ =0x00000556
- adds r0, r2, r1
- movs r1, 0x3
- strb r1, [r0]
- ldr r3, _0814A504 @ =0x00000557
- adds r0, r2, r3
- strb r1, [r0]
- ldr r3, _0814A508 @ =gUnknown_02024D1E
- ldrb r0, [r3]
- adds r0, 0x1
- ldr r4, _0814A50C @ =0x0000055c
- adds r1, r2, r4
- strh r0, [r1]
- ldrb r0, [r3]
- adds r0, 0x1
- ldr r3, _0814A510 @ =0x0000055e
- adds r1, r2, r3
- strh r0, [r1]
- subs r4, 0x4
- adds r0, r2, r4
- movs r1, 0x1
- strh r1, [r0]
- ldr r0, _0814A514 @ =0x0000055a
- adds r2, r0
- strh r1, [r2]
- bl CloseMenu
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0814A4FC: .4byte gSaveBlock2
-_0814A500: .4byte 0x00000556
-_0814A504: .4byte 0x00000557
-_0814A508: .4byte gUnknown_02024D1E
-_0814A50C: .4byte 0x0000055c
-_0814A510: .4byte 0x0000055e
-_0814A514: .4byte 0x0000055a
- thumb_func_end sub_814A4B8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/common_syms/load_save.txt b/common_syms/load_save.txt
new file mode 100644
index 000000000..3b969deca
--- /dev/null
+++ b/common_syms/load_save.txt
@@ -0,0 +1 @@
+gFlashMemoryPresent
diff --git a/constants/map_constants.inc b/constants/map_constants.inc
index d7a8a323e..6d92c5e65 100644
--- a/constants/map_constants.inc
+++ b/constants/map_constants.inc
@@ -461,3 +461,4 @@
new_map_group
map_group Route124_DivingTreasureHuntersHouse @ 33.0
+
diff --git a/constants/misc_constants.inc b/constants/misc_constants.inc
index dcb3ab287..438fed6b6 100644
--- a/constants/misc_constants.inc
+++ b/constants/misc_constants.inc
@@ -33,3 +33,13 @@
.equiv FEMALE, 1
.equiv GAME_LANGUAGE, 2
+
+ .equiv ENEMY_TYPE1, 0
+ .equiv ENEMY_TYPE2, 1
+ .equiv PLAYER_TYPE1, 2
+ .equiv PLAYER_TYPE2, 3
+ .equiv CURRENT_MOVE, 4
+
+ .equiv LESS_THAN, 0
+ .equiv GREATER_THAN, 1
+ .equiv EQUAL, 2
diff --git a/data/battle_ai.s b/data/battle_ai.s
deleted file mode 100644
index 0d38042f1..000000000
--- a/data/battle_ai.s
+++ /dev/null
@@ -1,117 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBattleAICmdTable:: @ 83F6144
- .4byte BattleAICmd_if_random
- .4byte BattleAICmd_if_not_random
- .4byte BattleAICmd_if_random_1
- .4byte BattleAICmd_if_not_random_1
- .4byte BattleAICmd_score
- .4byte BattleAICmd_if_hp_less_than
- .4byte BattleAICmd_if_hp_more_than
- .4byte BattleAICmd_if_hp_equal
- .4byte BattleAICmd_if_hp_not_equal
- .4byte BattleAICmd_if_status
- .4byte BattleAICmd_if_not_status
- .4byte BattleAICmd_if_status2
- .4byte BattleAICmd_if_not_status2
- .4byte BattleAICmd_if_status3
- .4byte BattleAICmd_if_not_status3
- .4byte BattleAICmd_if_status4
- .4byte BattleAICmd_if_not_status4
- .4byte BattleAICmd_if_less_than
- .4byte BattleAICmd_if_more_than
- .4byte BattleAICmd_if_equal
- .4byte BattleAICmd_if_not_equal
- .4byte BattleAICmd_if_less_than_32
- .4byte BattleAICmd_if_more_than_32
- .4byte BattleAICmd_if_equal_32
- .4byte BattleAICmd_if_not_equal_32
- .4byte BattleAICmd_if_move
- .4byte BattleAICmd_if_not_move
- .4byte BattleAICmd_if_in_bytes
- .4byte BattleAICmd_if_not_in_bytes
- .4byte BattleAICmd_if_in_words
- .4byte BattleAICmd_if_not_in_words
- .4byte BattleAICmd_if_user_can_damage
- .4byte BattleAICmd_if_user_cant_damage
- .4byte BattleAICmd_unk_21
- .4byte BattleAICmd_get_type
- .4byte BattleAICmd_unk_23
- .4byte BattleAICmd_unk_24
- .4byte BattleAICmd_get_move
- .4byte BattleAICmd_if_type
- .4byte BattleAICmd_unk_27
- .4byte BattleAICmd_if_would_go_first
- .4byte BattleAICmd_if_would_not_go_first
- .4byte BattleAICmd_unk_2A
- .4byte BattleAICmd_unk_2B
- .4byte BattleAICmd_count_alive_pokemon
- .4byte BattleAICmd_unk_2D
- .4byte BattleAICmd_unk_2E
- .4byte BattleAICmd_get_ability
- .4byte BattleAICmd_unk_30
- .4byte BattleAICmd_if_damage_bonus
- .4byte BattleAICmd_unk_32
- .4byte BattleAICmd_unk_33
- .4byte BattleAICmd_if_status_in_party
- .4byte BattleAICmd_if_status_not_in_party
- .4byte BattleAICmd_unk_36
- .4byte BattleAICmd_if_effect
- .4byte BattleAICmd_if_not_effect
- .4byte BattleAICmd_if_stat_level_less_than
- .4byte BattleAICmd_if_stat_level_more_than
- .4byte BattleAICmd_if_stat_level_equal
- .4byte BattleAICmd_if_stat_level_not_equal
- .4byte BattleAICmd_if_can_faint
- .4byte BattleAICmd_if_cant_faint
- .4byte BattleAICmd_unk_3F
- .4byte BattleAICmd_unk_40
- .4byte BattleAICmd_if_move_effect
- .4byte BattleAICmd_if_not_move_effect
- .4byte BattleAICmd_if_last_move_did_damage
- .4byte BattleAICmd_if_encored
- .4byte BattleAICmd_unk_45
- .4byte BattleAICmd_if_random_2
- .4byte BattleAICmd_unk_47
- .4byte BattleAICmd_get_hold_effect
- .4byte BattleAICmd_get_gender
- .4byte BattleAICmd_is_first_turn
- .4byte BattleAICmd_get_stockpile_count
- .4byte BattleAICmd_unk_4C
- .4byte BattleAICmd_get_item
- .4byte BattleAICmd_unk_4E
- .4byte BattleAICmd_unk_4F
- .4byte BattleAICmd_unk_50
- .4byte BattleAICmd_get_protect_count
- .4byte BattleAICmd_unk_52
- .4byte BattleAICmd_unk_53
- .4byte BattleAICmd_unk_54
- .4byte BattleAICmd_unk_55
- .4byte BattleAICmd_unk_56
- .4byte BattleAICmd_unk_57
- .4byte BattleAICmd_call
- .4byte BattleAICmd_jump
- .4byte BattleAICmd_unk_5A
- .4byte BattleAICmd_if_level_cond
- .4byte BattleAICmd_if_taunted
- .4byte BattleAICmd_if_not_taunted
-
- .align 1
-gUnknown_083F62BC:: @ 83F62BC
- .2byte EFFECT_EXPLOSION
- .2byte EFFECT_DREAM_EATER
- .2byte EFFECT_RAZOR_WIND
- .2byte EFFECT_SKY_ATTACK
- .2byte EFFECT_RECHARGE
- .2byte EFFECT_SKULL_BASH
- .2byte EFFECT_SOLARBEAM
- .2byte EFFECT_SPIT_UP
- .2byte EFFECT_FOCUS_PUNCH
- .2byte EFFECT_SUPERPOWER
- .2byte EFFECT_ERUPTION
- .2byte EFFECT_OVERHEAT
- .2byte -1
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index dce46a908..855221507 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -52,18 +52,18 @@ AI_CheckBadMove: @ 81DA09C
jump AI_CheckBadMove_CheckSoundproof
CheckIfVoltAbsorbCancelsElectric: @ 81DA0CE
- get_type 4
- if_type TYPE_ELECTRIC, Score_Down12
+ get_type CURRENT_MOVE
+ if_arg_equal TYPE_ELECTRIC, Score_Down12
jump AI_CheckBadMove_CheckSoundproof
CheckIfWaterAbsorbCancelsWater: @ 81DA0DB
- get_type 4
- if_type TYPE_WATER, Score_Down12
+ get_type CURRENT_MOVE
+ if_arg_equal TYPE_WATER, Score_Down12
jump AI_CheckBadMove_CheckSoundproof
CheckIfFlashFireCancelsFire: @ 81DA0E8
- get_type 4
- if_type TYPE_FIRE, Score_Down12
+ get_type CURRENT_MOVE
+ if_arg_equal TYPE_FIRE, Score_Down12
jump AI_CheckBadMove_CheckSoundproof
CheckIfWonderGuardCancelsMove: @ 81DA0F5
@@ -71,8 +71,8 @@ CheckIfWonderGuardCancelsMove: @ 81DA0F5
jump Score_Down10
CheckIfLevitateCancelsGroundMove: @ 81DA100
- get_type 4
- if_type TYPE_GROUND, Score_Down10
+ get_type CURRENT_MOVE
+ if_arg_equal TYPE_GROUND, Score_Down10
AI_CheckBadMove_CheckSoundproof: @ 81DA108
get_ability TARGET
@@ -325,10 +325,10 @@ AI_CBM_Roar: @ 81DA572
end
AI_CBM_Toxic: @ 81DA583
- get_type 0
+ get_type ENEMY_TYPE1
if_equal TYPE_STEEL, Score_Down10
if_equal TYPE_POISON, Score_Down10
- get_type 2
+ get_type PLAYER_TYPE1
if_equal TYPE_STEEL, Score_Down10
if_equal TYPE_POISON, Score_Down10
get_ability TARGET
@@ -393,9 +393,9 @@ AI_CBM_Substitute: @ 81DA641
AI_CBM_LeechSeed: @ 81DA653
if_status3 TARGET, S_LEECH_SEED, Score_Down10
- get_type 0
+ get_type ENEMY_TYPE1
if_equal TYPE_GRASS, Score_Down10
- get_type 2
+ get_type PLAYER_TYPE1
if_equal TYPE_GRASS, Score_Down10
end
@@ -754,7 +754,7 @@ AI_CV_Sleep: @ 81DAB44
jump AI_CV_Sleep_End
AI_CV_SleepEncourageSlpDamage: @ 81DAB57
- if_random 128, AI_CV_Sleep_End
+ if_random_less_than 128, AI_CV_Sleep_End
score +1
AI_CV_Sleep_End: @ 81DAB5F
@@ -766,7 +766,7 @@ AI_CV_Absorb: @ 81DAB60
jump AI_CV_Absorb_End
AI_CV_AbsorbEncourageMaybe: @ 81DAB71
- if_random 50, AI_CV_Absorb_End
+ if_random_less_than 50, AI_CV_Absorb_End
score -3
AI_CV_Absorb_End: @ 81DAB79
@@ -776,28 +776,28 @@ AI_CV_SelfKO: @ 81DAB7A
if_stat_level_less_than TARGET, EVASION, 7, AI_CV_SelfKO_Encourage1
score -1
if_stat_level_less_than TARGET, EVASION, 10, AI_CV_SelfKO_Encourage1
- if_random 128, AI_CV_SelfKO_Encourage1
+ if_random_less_than 128, AI_CV_SelfKO_Encourage1
score -1
AI_CV_SelfKO_Encourage1: @ 81DAB94
if_hp_less_than USER, 80, AI_CV_SelfKO_Encourage2
if_would_go_first USER, AI_CV_SelfKO_Encourage2
- if_random 50, AI_CV_SelfKO_End
+ if_random_less_than 50, AI_CV_SelfKO_End
jump Score_Down3
AI_CV_SelfKO_Encourage2: @ 81DABAC
if_hp_more_than USER, 50, AI_CV_SelfKO_Encourage4
- if_random 128, AI_CV_SelfKO_Encourage3
+ if_random_less_than 128, AI_CV_SelfKO_Encourage3
score +1
AI_CV_SelfKO_Encourage3: @ 81DABBB
if_hp_more_than USER, 30, AI_CV_SelfKO_End
- if_random 50, AI_CV_SelfKO_End
+ if_random_less_than 50, AI_CV_SelfKO_End
score +1
jump AI_CV_SelfKO_End
AI_CV_SelfKO_Encourage4: @ 81DABCF
- if_random 50, AI_CV_SelfKO_End
+ if_random_less_than 50, AI_CV_SelfKO_End
score -1
AI_CV_SelfKO_End: @ 81DABD7
@@ -818,14 +818,14 @@ AI_CV_MirrorMove: @ 81DABEC
if_would_go_first USER, AI_CV_MirrorMove2
get_move TARGET
if_not_in_words AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove2
- if_random 128, AI_CV_MirrorMove_End
+ if_random_less_than 128, AI_CV_MirrorMove_End
score +2
jump AI_CV_MirrorMove_End
AI_CV_MirrorMove2: @ 81DAC0A
get_move TARGET
if_in_words AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove_End
- if_random 80, AI_CV_MirrorMove_End
+ if_random_less_than 80, AI_CV_MirrorMove_End
score -1
AI_CV_MirrorMove_End: @ 81DAC1D
@@ -876,19 +876,19 @@ AI_CV_MirrorMove_EncouragedMovesToMirror: @ 81DAC20
AI_CV_AttackUp: @ 81DAC70
if_stat_level_less_than USER, ATTACK, 9, AI_CV_AttackUp2
- if_random 100, AI_CV_AttackUp3
+ if_random_less_than 100, AI_CV_AttackUp3
score -1
jump AI_CV_AttackUp3
AI_CV_AttackUp2: @ 81DAC85
if_hp_not_equal USER, 100, AI_CV_AttackUp3
- if_random 128, AI_CV_AttackUp3
+ if_random_less_than 128, AI_CV_AttackUp3
score +2
AI_CV_AttackUp3: @ 81DAC94
if_hp_more_than USER, 70, AI_CV_AttackUp_End
if_hp_less_than USER, 40, AI_CV_AttackUp_ScoreDown2
- if_random 40, AI_CV_AttackUp_End
+ if_random_less_than 40, AI_CV_AttackUp_End
AI_CV_AttackUp_ScoreDown2: @ 81DACA8
score -2
@@ -898,31 +898,31 @@ AI_CV_AttackUp_End: @ 81DACAA
AI_CV_DefenseUp: @ 81DACAB
if_stat_level_less_than USER, DEFENSE, 9, AI_CV_DefenseUp2
- if_random 100, AI_CV_DefenseUp3
+ if_random_less_than 100, AI_CV_DefenseUp3
score -1
jump AI_CV_DefenseUp3
AI_CV_DefenseUp2: @ 81DACC0
if_hp_not_equal USER, 100, AI_CV_DefenseUp3
- if_random 128, AI_CV_DefenseUp3
+ if_random_less_than 128, AI_CV_DefenseUp3
score +2
AI_CV_DefenseUp3: @ 81DACCF
if_hp_less_than USER, 70, AI_CV_DefenseUp4
- if_random 200, AI_CV_DefenseUp_End
+ if_random_less_than 200, AI_CV_DefenseUp_End
AI_CV_DefenseUp4: @ 81DACDC
if_hp_less_than USER, 40, AI_CV_DefenseUp_ScoreDown2
get_move TARGET
- get_move_power
+ get_move_power_from_result
if_equal 0, AI_CV_DefenseUp5
get_move TARGET
- get_move_type
+ get_move_type_from_result
if_not_in_bytes AI_CV_DefenseUp_PhysicalTypes, AI_CV_DefenseUp_ScoreDown2
- if_random 60, AI_CV_DefenseUp_End
+ if_random_less_than 60, AI_CV_DefenseUp_End
AI_CV_DefenseUp5: @ 81DACFE
- if_random 60, AI_CV_DefenseUp_End
+ if_random_less_than 60, AI_CV_DefenseUp_End
AI_CV_DefenseUp_ScoreDown2: @ 81DAD04
score -2
@@ -948,7 +948,7 @@ AI_CV_SpeedUp: @ 81DAD11
jump AI_CV_SpeedUp_End
AI_CV_SpeedUp2: @ 81DAD1E
- if_random 70, AI_CV_SpeedUp_End
+ if_random_less_than 70, AI_CV_SpeedUp_End
score +3
AI_CV_SpeedUp_End: @ 81DAD26
@@ -956,19 +956,19 @@ AI_CV_SpeedUp_End: @ 81DAD26
AI_CV_SpAtkUp: @ 81DAD27
if_stat_level_less_than USER, SP_ATTACK, 9, AI_CV_SpAtkUp2
- if_random 100, AI_CV_SpAtkUp3
+ if_random_less_than 100, AI_CV_SpAtkUp3
score -1
jump AI_CV_SpAtkUp3
AI_CV_SpAtkUp2: @ 81DAD3C
if_hp_not_equal USER, 100, AI_CV_SpAtkUp3
- if_random 128, AI_CV_SpAtkUp3
+ if_random_less_than 128, AI_CV_SpAtkUp3
score +2
AI_CV_SpAtkUp3: @ 81DAD4B
if_hp_more_than USER, 70, AI_CV_SpAtkUp_End
if_hp_less_than USER, 40, AI_CV_SpAtkUp_ScoreDown2
- if_random 70, AI_CV_SpAtkUp_End
+ if_random_less_than 70, AI_CV_SpAtkUp_End
AI_CV_SpAtkUp_ScoreDown2: @ 81DAD5F
score -2
@@ -978,31 +978,31 @@ AI_CV_SpAtkUp_End: @ 81DAD61
AI_CV_SpDefUp: @ 81DAD62
if_stat_level_less_than USER, SP_DEFENSE, 9, AI_CV_SpDefUp2
- if_random 100, AI_CV_SpDefUp3
+ if_random_less_than 100, AI_CV_SpDefUp3
score -1
jump AI_CV_SpDefUp3
AI_CV_SpDefUp2: @ 81DAD77
if_hp_not_equal USER, 100, AI_CV_SpDefUp3
- if_random 128, AI_CV_SpDefUp3
+ if_random_less_than 128, AI_CV_SpDefUp3
score +2
AI_CV_SpDefUp3: @ 81DAD86
if_hp_less_than USER, 70, AI_CV_SpDefUp4
- if_random 200, AI_CV_SpDefUp_End
+ if_random_less_than 200, AI_CV_SpDefUp_End
AI_CV_SpDefUp4: @ 81DAD93
if_hp_less_than USER, 40, AI_CV_SpDefUp_ScoreDown2
get_move TARGET
- get_move_power
+ get_move_power_from_result
if_equal 0, AI_CV_SpDefUp5
get_move TARGET
- get_move_type
+ get_move_type_from_result
if_in_bytes AI_CV_SpDefUp_PhysicalTypes, AI_CV_SpDefUp_ScoreDown2
- if_random 60, AI_CV_SpDefUp_End
+ if_random_less_than 60, AI_CV_SpDefUp_End
AI_CV_SpDefUp5: @ 81DADB5
- if_random 60, AI_CV_SpDefUp_End
+ if_random_less_than 60, AI_CV_SpDefUp_End
AI_CV_SpDefUp_ScoreDown2: @ 81DADBB
score -2
@@ -1024,7 +1024,7 @@ AI_CV_SpDefUp_PhysicalTypes: @ 81DADBE
AI_CV_AccuracyUp: @ 81DADC8
if_stat_level_less_than USER, ACCURACY, 9, AI_CV_AccuracyUp2
- if_random 50, AI_CV_AccuracyUp2
+ if_random_less_than 50, AI_CV_AccuracyUp2
score -2
AI_CV_AccuracyUp2: @ 81DADD8
@@ -1036,36 +1036,36 @@ AI_CV_AccuracyUp_End: @ 81DADE1
AI_CV_EvasionUp: @ 81DADE2
if_hp_less_than USER, 90, AI_CV_EvasionUp2
- if_random 100, AI_CV_EvasionUp2
+ if_random_less_than 100, AI_CV_EvasionUp2
score +3
AI_CV_EvasionUp2: @ 81DADF1
if_stat_level_less_than USER, EVASION, 9, AI_CV_EvasionUp3
- if_random 128, AI_CV_EvasionUp3
+ if_random_less_than 128, AI_CV_EvasionUp3
score -1
AI_CV_EvasionUp3: @ 81DAE01
if_not_status TARGET, TOX, AI_CV_EvasionUp5
if_hp_more_than USER, 50, AI_CV_EvasionUp4
- if_random 80, AI_CV_EvasionUp5
+ if_random_less_than 80, AI_CV_EvasionUp5
AI_CV_EvasionUp4: @ 81DAE18
- if_random 50, AI_CV_EvasionUp5
+ if_random_less_than 50, AI_CV_EvasionUp5
score +3
AI_CV_EvasionUp5: @ 81DAE20
if_not_status3 TARGET, S_LEECH_SEED, AI_CV_EvasionUp6
- if_random 70, AI_CV_EvasionUp6
+ if_random_less_than 70, AI_CV_EvasionUp6
score +3
AI_CV_EvasionUp6: @ 81DAE32
if_not_status3 USER, S_ROOTED, AI_CV_EvasionUp7
- if_random 128, AI_CV_EvasionUp7
+ if_random_less_than 128, AI_CV_EvasionUp7
score +2
AI_CV_EvasionUp7: @ 81DAE44
if_not_status2 TARGET, S_CURSED, AI_CV_EvasionUp8
- if_random 70, AI_CV_EvasionUp8
+ if_random_less_than 70, AI_CV_EvasionUp8
score +3
AI_CV_EvasionUp8: @ 81DAE56
@@ -1073,7 +1073,7 @@ AI_CV_EvasionUp8: @ 81DAE56
if_stat_level_equal USER, EVASION, 6, AI_CV_EvasionUp_End
if_hp_less_than USER, 40, AI_CV_EvasionUp_ScoreDown2
if_hp_less_than TARGET, 40, AI_CV_EvasionUp_ScoreDown2
- if_random 70, AI_CV_EvasionUp_End
+ if_random_less_than 70, AI_CV_EvasionUp_End
AI_CV_EvasionUp_ScoreDown2: @ 81DAE79
score -2
@@ -1092,7 +1092,7 @@ AI_CV_AlwaysHit_ScoreUp1: @ 81DAEA1
score +1
AI_CV_AlwaysHit2: @ 81DAEA3
- if_random 100, AI_CV_AlwaysHit_End
+ if_random_less_than 100, AI_CV_AlwaysHit_End
score +1
AI_CV_AlwaysHit_End: @ 81DAEAB
@@ -1106,7 +1106,7 @@ AI_CV_AttackDown: @ 81DAEAC
AI_CV_AttackDown2: @ 81DAEBF
if_stat_level_more_than TARGET, ATTACK, 3, AI_CV_AttackDown3
- if_random 50, AI_CV_AttackDown3
+ if_random_less_than 50, AI_CV_AttackDown3
score -2
AI_CV_AttackDown3: @ 81DAECF
@@ -1114,11 +1114,11 @@ AI_CV_AttackDown3: @ 81DAECF
score -2
AI_CV_AttackDown4: @ 81DAED8
- get_type 0
+ get_type ENEMY_TYPE1
if_in_bytes AI_CV_AttackDown_UnknownTypeList, AI_CV_AttackDown_End
- get_type 2
+ get_type PLAYER_TYPE1
if_in_bytes AI_CV_AttackDown_UnknownTypeList, AI_CV_AttackDown_End
- if_random 50, AI_CV_AttackDown_End
+ if_random_less_than 50, AI_CV_AttackDown_End
score -2
AI_CV_AttackDown_End: @ 81DAEF6
@@ -1139,7 +1139,7 @@ AI_CV_DefenseDown: @ 81DAEFE
if_stat_level_more_than TARGET, DEFENSE, 3, AI_CV_DefenseDown3
AI_CV_DefenseDown2: @ 81DAF0D
- if_random 50, AI_CV_DefenseDown3
+ if_random_less_than 50, AI_CV_DefenseDown3
score -2
AI_CV_DefenseDown3: @ 81DAF15
@@ -1161,7 +1161,7 @@ AI_CV_SpeedDown: @ 81DAF35
jump AI_CV_SpeedDown_End
AI_CV_SpeedDown2: @ 81DAF42
- if_random 70, AI_CV_SpeedDown_End
+ if_random_less_than 70, AI_CV_SpeedDown_End
score +2
AI_CV_SpeedDown_End: @ 81DAF4A
@@ -1175,7 +1175,7 @@ AI_CV_SpAtkDown: @ 81DAF4B
AI_CV_SpAtkDown2: @ 81DAF5E
if_stat_level_more_than TARGET, SP_ATTACK, 3, AI_CV_SpAtkDown3
- if_random 50, AI_CV_SpAtkDown3
+ if_random_less_than 50, AI_CV_SpAtkDown3
score -2
AI_CV_SpAtkDown3: @ 81DAF6E
@@ -1183,11 +1183,11 @@ AI_CV_SpAtkDown3: @ 81DAF6E
score -2
AI_CV_SpAtkDown4: @ 81DAF77
- get_type 0
+ get_type ENEMY_TYPE1
if_in_bytes AI_CV_SpAtkDown_SpecialTypeList, AI_CV_SpAtkDown_End
- get_type 2
+ get_type PLAYER_TYPE1
if_in_bytes AI_CV_SpAtkDown_SpecialTypeList, AI_CV_SpAtkDown_End
- if_random 50, AI_CV_SpAtkDown_End
+ if_random_less_than 50, AI_CV_SpAtkDown_End
score -2
AI_CV_SpAtkDown_End: @ 81DAF95
@@ -1209,7 +1209,7 @@ AI_CV_SpDefDown: @ 81DAF9F
if_stat_level_more_than TARGET, SP_DEFENSE, 3, AI_CV_SpDefDown3
AI_CV_SpDefDown2: @ 81DAFAE
- if_random 50, AI_CV_SpDefDown3
+ if_random_less_than 50, AI_CV_SpDefDown3
score -2
AI_CV_SpDefDown3: @ 81DAFB6
@@ -1224,32 +1224,32 @@ AI_CV_AccuracyDown: @ 81DAFC0
if_hp_more_than TARGET, 70, AI_CV_AccuracyDown3
AI_CV_AccuracyDown2: @ 81DAFCE
- if_random 100, AI_CV_AccuracyDown3
+ if_random_less_than 100, AI_CV_AccuracyDown3
score -1
AI_CV_AccuracyDown3: @ 81DAFD6
if_stat_level_more_than USER, ACCURACY, 4, AI_CV_AccuracyDown4
- if_random 80, AI_CV_AccuracyDown4
+ if_random_less_than 80, AI_CV_AccuracyDown4
score -2
AI_CV_AccuracyDown4: @ 81DAFE6
if_not_status TARGET, TOX, AI_CV_AccuracyDown5
- if_random 70, AI_CV_AccuracyDown5
+ if_random_less_than 70, AI_CV_AccuracyDown5
score +2
AI_CV_AccuracyDown5: @ 81DAFF8
if_not_status3 TARGET, S_LEECH_SEED, AI_CV_AccuracyDown6
- if_random 70, AI_CV_AccuracyDown6
+ if_random_less_than 70, AI_CV_AccuracyDown6
score +2
AI_CV_AccuracyDown6: @ 81DB00A
if_not_status3 USER, S_ROOTED, AI_CV_AccuracyDown7
- if_random 128, AI_CV_AccuracyDown7
+ if_random_less_than 128, AI_CV_AccuracyDown7
score +1
AI_CV_AccuracyDown7: @ 81DB01C
if_not_status2 TARGET, S_CURSED, AI_CV_AccuracyDown8
- if_random 70, AI_CV_AccuracyDown8
+ if_random_less_than 70, AI_CV_AccuracyDown8
score +2
AI_CV_AccuracyDown8: @ 81DB02E
@@ -1257,7 +1257,7 @@ AI_CV_AccuracyDown8: @ 81DB02E
if_stat_level_equal TARGET, ACCURACY, 6, AI_CV_AccuracyDown_End
if_hp_less_than USER, 40, AI_CV_AccuracyDown_ScoreDown2
if_hp_less_than TARGET, 40, AI_CV_AccuracyDown_ScoreDown2
- if_random 70, AI_CV_AccuracyDown_End
+ if_random_less_than 70, AI_CV_AccuracyDown_End
AI_CV_AccuracyDown_ScoreDown2: @ 81DB051
score -2
@@ -1270,7 +1270,7 @@ AI_CV_EvasionDown: @ 81DB054
if_stat_level_more_than TARGET, EVASION, 3, AI_CV_EvasionDown3
AI_CV_EvasionDown2: @ 81DB063
- if_random 50, AI_CV_EvasionDown3
+ if_random_less_than 50, AI_CV_EvasionDown3
score -2
AI_CV_EvasionDown3: @ 81DB06B
@@ -1294,7 +1294,7 @@ AI_CV_Haze: @ 81DB075
jump AI_CV_Haze3
AI_CV_Haze2: @ 81DB0CA
- if_random 50, AI_CV_Haze3
+ if_random_less_than 50, AI_CV_Haze3
score -3
AI_CV_Haze3: @ 81DB0D2
@@ -1308,12 +1308,12 @@ AI_CV_Haze3: @ 81DB0D2
if_stat_level_less_than USER, SP_ATTACK, 4, AI_CV_Haze4
if_stat_level_less_than USER, SP_DEFENSE, 4, AI_CV_Haze4
if_stat_level_less_than USER, ACCURACY, 4, AI_CV_Haze4
- if_random 50, AI_CV_Haze_End
+ if_random_less_than 50, AI_CV_Haze_End
score -1
jump AI_CV_Haze_End
AI_CV_Haze4: @ 81DB12F
- if_random 50, AI_CV_Haze_End
+ if_random_less_than 50, AI_CV_Haze_End
score +3
AI_CV_Haze_End: @ 81DB137
@@ -1336,7 +1336,7 @@ AI_CV_Roar: @ 81DB142
jump AI_CV_Roar_End
AI_CV_Roar2: @ 81DB171
- if_random 128, AI_CV_Roar_End
+ if_random_less_than 128, AI_CV_Roar_End
score +2
AI_CV_Roar_End: @ 81DB179
@@ -1349,7 +1349,7 @@ AI_CV_Conversion: @ 81DB17A
AI_CV_Conversion2: @ 81DB183
get_turn_count
if_equal 0, AI_CV_Conversion_End
- if_random 200, Score_Down2
+ if_random_less_than 200, Score_Down2
AI_CV_Conversion_End: @ 81DB190
end
@@ -1373,7 +1373,7 @@ AI_CV_Heal: @ 81DB1AB
AI_CV_Heal2: @ unreferenced
if_hp_less_than USER, 50, AI_CV_Heal5
if_hp_more_than USER, 80, AI_CV_Heal3
- if_random 70, AI_CV_Heal5
+ if_random_less_than 70, AI_CV_Heal5
AI_CV_Heal3: @ 81DB1D3
score -3
@@ -1381,16 +1381,16 @@ AI_CV_Heal3: @ 81DB1D3
AI_CV_Heal4: @ 81DB1DA
if_hp_less_than USER, 70, AI_CV_Heal5
- if_random 30, AI_CV_Heal5
+ if_random_less_than 30, AI_CV_Heal5
score -3
jump AI_CV_Heal_End
AI_CV_Heal5: @ 81DB1EE
if_not_move_effect TARGET, EFFECT_SNATCH, AI_CV_Heal6
- if_random 100, AI_CV_Heal_End
+ if_random_less_than 100, AI_CV_Heal_End
AI_CV_Heal6: @ 81DB1FB
- if_random 20, AI_CV_Heal_End
+ if_random_less_than 20, AI_CV_Heal_End
score +2
AI_CV_Heal_End: @ 81DB203
@@ -1399,12 +1399,12 @@ AI_CV_Heal_End: @ 81DB203
AI_CV_Toxic: @ 81DB204
if_user_cant_damage AI_CV_Toxic3
if_hp_more_than USER, 50, AI_CV_Toxic2
- if_random 50, AI_CV_Toxic2
+ if_random_less_than 50, AI_CV_Toxic2
score -3
AI_CV_Toxic2: @ 81DB218
if_hp_more_than TARGET, 50, AI_CV_Toxic3
- if_random 50, AI_CV_Toxic3
+ if_random_less_than 50, AI_CV_Toxic3
score -3
AI_CV_Toxic3: @ 81DB227
@@ -1413,7 +1413,7 @@ AI_CV_Toxic3: @ 81DB227
jump AI_CV_Toxic_End
AI_CV_Toxic4: @ 81DB23A
- if_random 60, AI_CV_Toxic_End
+ if_random_less_than 60, AI_CV_Toxic_End
score +2
AI_CV_Toxic_End: @ 81DB242
@@ -1421,11 +1421,11 @@ AI_CV_Toxic_End: @ 81DB242
AI_CV_LightScreen: @ 81DB243
if_hp_less_than USER, 50, AI_CV_LightScreen_ScoreDown2
- get_type 0
+ get_type ENEMY_TYPE1
if_in_bytes AI_CV_LightScreen_SpecialTypeList, AI_CV_LightScreen_End
- get_type 2
+ get_type PLAYER_TYPE1
if_in_bytes AI_CV_LightScreen_SpecialTypeList, AI_CV_LightScreen_End
- if_random 50, AI_CV_LightScreen_End
+ if_random_less_than 50, AI_CV_LightScreen_End
AI_CV_LightScreen_ScoreDown2: @ 81DB266
score -2
@@ -1453,7 +1453,7 @@ AI_CV_Rest: @ 81DB272
AI_CV_Rest2: @ 81DB286
if_hp_less_than USER, 40, AI_CV_Rest6
if_hp_more_than USER, 50, AI_CV_Rest3
- if_random 70, AI_CV_Rest6
+ if_random_less_than 70, AI_CV_Rest6
AI_CV_Rest3: @ 81DB29A
score -3
@@ -1462,7 +1462,7 @@ AI_CV_Rest3: @ 81DB29A
AI_CV_Rest4: @ 81DB2A1
if_hp_less_than USER, 60, AI_CV_Rest6
if_hp_more_than USER, 70, AI_CV_Rest5
- if_random 50, AI_CV_Rest6
+ if_random_less_than 50, AI_CV_Rest6
AI_CV_Rest5: @ 81DB2B5
score -3
@@ -1470,10 +1470,10 @@ AI_CV_Rest5: @ 81DB2B5
AI_CV_Rest6: @ 81DB2BC
if_not_move_effect TARGET, EFFECT_SNATCH, AI_CV_Rest7
- if_random 50, AI_CV_Rest_End
+ if_random_less_than 50, AI_CV_Rest_End
AI_CV_Rest7: @ 81DB2C9
- if_random 10, AI_CV_Rest_End
+ if_random_less_than 10, AI_CV_Rest_End
score +3
AI_CV_Rest_End: @ 81DB2D1
@@ -1497,7 +1497,7 @@ AI_CV_Trap: @ 81DB2DD
jump AI_CV_Trap_End
AI_CV_Trap2: @ 81DB30A
- if_random 128, AI_CV_Trap_End
+ if_random_less_than 128, AI_CV_Trap_End
score +1
AI_CV_Trap_End: @ 81DB312
@@ -1508,22 +1508,22 @@ AI_CV_HighCrit: @ 81DB313
if_damage_bonus 20, AI_CV_HighCrit_End
if_damage_bonus 80, AI_CV_HighCrit2
if_damage_bonus 160, AI_CV_HighCrit2
- if_random 128, AI_CV_HighCrit_End
+ if_random_less_than 128, AI_CV_HighCrit_End
AI_CV_HighCrit2: @ 81DB331
- if_random 128, AI_CV_HighCrit_End
+ if_random_less_than 128, AI_CV_HighCrit_End
score +1
AI_CV_HighCrit_End: @ 81DB339
end
AI_CV_Flatter: @ 81DB33A
- if_random 128, AI_CV_Confuse
+ if_random_less_than 128, AI_CV_Confuse
score +1
AI_CV_Confuse: @ 81DB342
if_hp_more_than TARGET, 70, AI_CV_Confuse_End
- if_random 128, AI_CV_Confuse2
+ if_random_less_than 128, AI_CV_Confuse2
score -1
AI_CV_Confuse2: @ 81DB351
@@ -1537,11 +1537,11 @@ AI_CV_Confuse_End: @ 81DB363
AI_CV_Reflect: @ 81DB364
if_hp_less_than USER, 50, AI_CV_Reflect_ScoreDown2
- get_type 0
+ get_type ENEMY_TYPE1
if_in_bytes AI_CV_Reflect_PhysicalTypeList, AI_CV_Reflect_End
- get_type 2
+ get_type PLAYER_TYPE1
if_in_bytes AI_CV_Reflect_PhysicalTypeList, AI_CV_Reflect_End
- if_random 50, AI_CV_Reflect_End
+ if_random_less_than 50, AI_CV_Reflect_End
AI_CV_Reflect_ScoreDown2: @ 81DB387
score -2
@@ -1578,7 +1578,7 @@ AI_CV_Paralyze: @ 81DB3A5
jump AI_CV_Paralyze_End
AI_CV_Paralyze2: @ 81DB3B9
- if_random 20, AI_CV_Paralyze_End
+ if_random_less_than 20, AI_CV_Paralyze_End
score +3
AI_CV_Paralyze_End: @ 81DB3C1
@@ -1588,10 +1588,10 @@ AI_CV_VitalThrow: @ 81DB3C2
if_would_go_first USER, AI_CV_VitalThrow_End
if_hp_more_than USER, 60, AI_CV_VitalThrow_End
if_hp_less_than USER, 40, AI_CV_VitalThrow2
- if_random 180, AI_CV_VitalThrow_End
+ if_random_less_than 180, AI_CV_VitalThrow_End
AI_CV_VitalThrow2: @ 81DB3DC
- if_random 50, AI_CV_VitalThrow_End
+ if_random_less_than 50, AI_CV_VitalThrow_End
score -1
AI_CV_VitalThrow_End: @ 81DB3E4
@@ -1601,21 +1601,21 @@ AI_CV_Substitute: @ 81DB3E5
if_hp_more_than USER, 90, AI_CV_Substitute4
if_hp_more_than USER, 70, AI_CV_Substitute3
if_hp_more_than USER, 50, AI_CV_Substitute2
- if_random 100, AI_CV_Substitute2
+ if_random_less_than 100, AI_CV_Substitute2
score -1
AI_CV_Substitute2: @ 81DB402
- if_random 100, AI_CV_Substitute3
+ if_random_less_than 100, AI_CV_Substitute3
score -1
AI_CV_Substitute3: @ 81DB40A
- if_random 100, AI_CV_Substitute4
+ if_random_less_than 100, AI_CV_Substitute4
score -1
AI_CV_Substitute4: @ 81DB412
if_would_go_first USER, AI_CV_Substitute_End
get_move TARGET
- get_move_effect
+ get_move_effect_from_result
if_equal EFFECT_SLEEP, AI_CV_Substitute5
if_equal EFFECT_TOXIC, AI_CV_Substitute5
if_equal EFFECT_POISON, AI_CV_Substitute5
@@ -1637,7 +1637,7 @@ AI_CV_Substitute7: @ 81DB468
if_status3 TARGET, S_LEECH_SEED, AI_CV_Substitute_End
AI_CV_Substitute8: @ 81DB472
- if_random 100, AI_CV_Substitute_End
+ if_random_less_than 100, AI_CV_Substitute_End
score +1
AI_CV_Substitute_End: @ 81DB47A
@@ -1662,13 +1662,13 @@ AI_CV_Recharge_End: @ 81DB4A2
AI_CV_Disable: @ 81DB4A3
if_would_go_first USER, AI_CV_Disable_End
get_move TARGET
- get_move_power
+ get_move_power_from_result
if_equal 0, AI_CV_Disable2
score +1
jump AI_CV_Disable_End
AI_CV_Disable2: @ 81DB4B9
- if_random 100, AI_CV_Disable_End
+ if_random_less_than 100, AI_CV_Disable_End
score -1
AI_CV_Disable_End: @ 81DB4C1
@@ -1679,41 +1679,41 @@ AI_CV_Counter: @ 81DB4C2
if_status2 TARGET, S_INFATUATED, AI_CV_Counter_ScoreDown1
if_status2 TARGET, S_CONFUSED, AI_CV_Counter_ScoreDown1
if_hp_more_than USER, 30, AI_CV_Counter2
- if_random 10, AI_CV_Counter2
+ if_random_less_than 10, AI_CV_Counter2
score -1
AI_CV_Counter2: @ 81DB4EF
if_hp_more_than USER, 50, AI_CV_Counter3
- if_random 100, AI_CV_Counter3
+ if_random_less_than 100, AI_CV_Counter3
score -1
AI_CV_Counter3: @ 81DB4FE
get_move TARGET
- get_move_power
+ get_move_power_from_result
if_equal 0, AI_CV_Counter5
if_not_taunted AI_CV_Counter4
- if_random 100, AI_CV_Counter4
+ if_random_less_than 100, AI_CV_Counter4
score +1
AI_CV_Counter4: @ 81DB514
get_move TARGET
- get_move_type
+ get_move_type_from_result
if_not_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_ScoreDown1
- if_random 100, AI_CV_Counter_End
+ if_random_less_than 100, AI_CV_Counter_End
score +1
jump AI_CV_Counter_End
AI_CV_Counter5: @ 81DB52D
if_not_taunted AI_CV_Counter6
- if_random 100, AI_CV_Counter6
+ if_random_less_than 100, AI_CV_Counter6
score +1
AI_CV_Counter6: @ 81DB53A
- get_type 0
+ get_type ENEMY_TYPE1
if_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_End
- get_type 2
+ get_type PLAYER_TYPE1
if_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_End
- if_random 50, AI_CV_Counter_End
+ if_random_less_than 50, AI_CV_Counter_End
AI_CV_Counter_ScoreDown1: @ 81DB556
score -1
@@ -1737,11 +1737,11 @@ AI_CV_Encore: @ 81DB563
if_last_move_did_damage TARGET, 0, AI_CV_Encore2
if_would_go_first USER, AI_CV_Encore_ScoreDown2
get_move TARGET
- get_move_effect
+ get_move_effect_from_result
if_not_in_bytes AI_CV_Encore_EncouragedMovesToEncore, AI_CV_Encore_ScoreDown2
AI_CV_Encore2: @ 81DB57C
- if_random 30, AI_CV_Encore_End
+ if_random_less_than 30, AI_CV_Encore_End
score +3
jump AI_CV_Encore_End
@@ -1839,7 +1839,7 @@ AI_CV_Snore: @ 81DB5F7
end
AI_CV_LockOn: @ 81DB5FA
- if_random 128, AI_CV_LockOn_End
+ if_random_less_than 128, AI_CV_LockOn_End
score +2
AI_CV_LockOn_End: @ 81DB602
@@ -1853,17 +1853,17 @@ AI_CV_DestinyBond: @ 81DB606
score -1
if_would_go_first USER, AI_CV_DestinyBond_End
if_hp_more_than USER, 70, AI_CV_DestinyBond_End
- if_random 128, AI_CV_DestinyBond2
+ if_random_less_than 128, AI_CV_DestinyBond2
score +1
AI_CV_DestinyBond2: @ 81DB61D
if_hp_more_than USER, 50, AI_CV_DestinyBond_End
- if_random 128, AI_CV_DestinyBond3
+ if_random_less_than 128, AI_CV_DestinyBond3
score +1
AI_CV_DestinyBond3: @ 81DB62C
if_hp_more_than USER, 30, AI_CV_DestinyBond_End
- if_random 100, AI_CV_DestinyBond_End
+ if_random_less_than 100, AI_CV_DestinyBond_End
score +2
AI_CV_DestinyBond_End: @ 81DB63B
@@ -1885,7 +1885,7 @@ AI_CV_Flail_ScoreUp1: @ 81DB66F
score +1
AI_CV_Flail3: @ 81DB671
- if_random 100, AI_CV_Flail_End
+ if_random_less_than 100, AI_CV_Flail_End
score +1
jump AI_CV_Flail_End
@@ -1906,7 +1906,7 @@ AI_CV_HealBell_End: @ 81DB697
AI_CV_Thief: @ 81DB698
get_hold_effect TARGET
if_not_in_bytes AI_CV_Thief_EncourageItemsToSteal, AI_CV_Thief_ScoreDown2
- if_random 50, AI_CV_Thief_End
+ if_random_less_than 50, AI_CV_Thief_End
score +1
jump AI_CV_Thief_End
@@ -1927,22 +1927,22 @@ AI_CV_Thief_EncourageItemsToSteal: @ 81DB6B3
.byte -1
AI_CV_Curse: @ 81DB6BB
- get_type 1
+ get_type ENEMY_TYPE2
if_equal TYPE_GHOST, AI_CV_Curse4
- get_type 3
+ get_type PLAYER_TYPE2
if_equal TYPE_GHOST, AI_CV_Curse4
if_stat_level_more_than USER, DEFENSE, 9, AI_CV_Curse_End
- if_random 128, AI_CV_Curse2
+ if_random_less_than 128, AI_CV_Curse2
score +1
AI_CV_Curse2: @ 81DB6DB
if_stat_level_more_than USER, DEFENSE, 7, AI_CV_Curse_End
- if_random 128, AI_CV_Curse3
+ if_random_less_than 128, AI_CV_Curse3
score +1
AI_CV_Curse3: @ 81DB6EB
if_stat_level_more_than USER, DEFENSE, 6, AI_CV_Curse_End
- if_random 128, AI_CV_Curse_End
+ if_random_less_than 128, AI_CV_Curse_End
score +1
jump AI_CV_Curse_End
@@ -1971,7 +1971,7 @@ AI_CV_Protect: @ 81DB70A
if_status3 TARGET, S_LEECH_SEED, AI_CV_Protect_ScoreUp2
if_status3 TARGET, S_YAWN, AI_CV_Protect_ScoreUp2
get_move TARGET
- get_move_effect
+ get_move_effect_from_result
if_not_equal EFFECT_LOCK_ON, AI_CV_Protect_ScoreUp2
jump AI_CV_Protect2
@@ -1982,13 +1982,13 @@ AI_CV_Protect2: @ 81DB7A8
get_protect_count USER
if_equal 0, AI_CV_Protect_End
score -1
- if_random 128, AI_CV_Protect_End
+ if_random_less_than 128, AI_CV_Protect_End
score -1
jump AI_CV_Protect_End
AI_CV_Protect3: @ 81DB7BF
get_move TARGET
- get_move_effect
+ get_move_effect_from_result
if_not_equal EFFECT_LOCK_ON, AI_CV_Protect_End
AI_CV_Protect_ScoreDown2: @ 81DB7C8
@@ -1998,19 +1998,19 @@ AI_CV_Protect_End: @ 81DB7CA
end
AI_CV_Foresight: @ 81DB7CB
- get_type 1
+ get_type ENEMY_TYPE2
if_equal TYPE_GHOST, AI_CV_Foresight2
- get_type 3
+ get_type PLAYER_TYPE2
if_equal TYPE_GHOST, AI_CV_Foresight2
if_stat_level_more_than USER, EVASION, 8, AI_CV_Foresight3
score -2
jump AI_CV_Foresight_End
AI_CV_Foresight2: @ 81DB7EA
- if_random 80, AI_CV_Foresight_End
+ if_random_less_than 80, AI_CV_Foresight_End
AI_CV_Foresight3: @ 81DB7F0
- if_random 80, AI_CV_Foresight_End
+ if_random_less_than 80, AI_CV_Foresight_End
score +2
AI_CV_Foresight_End: @ 81DB7F8
@@ -2025,7 +2025,7 @@ AI_CV_Endure2: @ 81DB807
jump AI_CV_Endure_End
AI_CV_Endure3: @ 81DB80E
- if_random 70, AI_CV_Endure_End
+ if_random_less_than 70, AI_CV_Endure_End
score +1
AI_CV_Endure_End: @ 81DB816
@@ -2048,7 +2048,7 @@ AI_CV_BatonPass3: @ 81DB856
if_hp_more_than USER, 70, AI_CV_BatonPass_End
AI_CV_BatonPass4: @ 81DB85D
- if_random 80, AI_CV_BatonPass_End
+ if_random_less_than 80, AI_CV_BatonPass_End
score +2
jump AI_CV_BatonPass_End
@@ -2077,18 +2077,18 @@ AI_CV_BatonPass_End: @ 81DB8B2
AI_CV_Pursuit: @ 81DB8B3
is_first_turn USER
if_not_equal 0, AI_CV_Pursuit_End
- get_type 0
+ get_type ENEMY_TYPE1
if_equal TYPE_GHOST, AI_CV_Pursuit2
- get_type 0
+ get_type ENEMY_TYPE1
if_equal TYPE_PSYCHIC, AI_CV_Pursuit2
- get_type 2
+ get_type PLAYER_TYPE1
if_equal TYPE_GHOST, AI_CV_Pursuit2
- get_type 2
+ get_type PLAYER_TYPE1
if_equal TYPE_PSYCHIC, AI_CV_Pursuit2
jump AI_CV_Pursuit_End
AI_CV_Pursuit2: @ 81DB8E0
- if_random 128, AI_CV_Pursuit_End
+ if_random_less_than 128, AI_CV_Pursuit_End
score +1
AI_CV_Pursuit_End: @ 81DB8E8
@@ -2161,14 +2161,14 @@ AI_CV_PsychUp2: @ 81DB98D
if_stat_level_less_than USER, SP_ATTACK, 7, AI_CV_PsychUp3
if_stat_level_less_than USER, SP_DEFENSE, 7, AI_CV_PsychUp3
if_stat_level_less_than USER, EVASION, 7, AI_CV_PsychUp_ScoreUp1
- if_random 50, AI_CV_PsychUp_End
+ if_random_less_than 50, AI_CV_PsychUp_End
jump AI_CV_PsychUp_ScoreDown2
AI_CV_PsychUp_ScoreUp1: @ 81DB9C0
score +1
AI_CV_PsychUp3: @ 81DB9C2
- if_random 128, AI_CV_PsychUp_End
+ if_random_less_than 128, AI_CV_PsychUp_End
score +1
AI_CV_PsychUp_ScoreDown2: @ 81DB9CA
@@ -2182,41 +2182,41 @@ AI_CV_MirrorCoat: @ 81DB9CD
if_status2 TARGET, S_INFATUATED, AI_CV_MirrorCoat_ScoreDown1
if_status2 TARGET, S_CONFUSED, AI_CV_MirrorCoat_ScoreDown1
if_hp_more_than USER, 30, AI_CV_MirrorCoat2
- if_random 10, AI_CV_MirrorCoat2
+ if_random_less_than 10, AI_CV_MirrorCoat2
score -1
AI_CV_MirrorCoat2: @ 81DB9FA
if_hp_more_than USER, 50, AI_CV_MirrorCoat3
- if_random 100, AI_CV_MirrorCoat3
+ if_random_less_than 100, AI_CV_MirrorCoat3
score -1
AI_CV_MirrorCoat3: @ 81DBA09
get_move TARGET
- get_move_power
+ get_move_power_from_result
if_equal 0, AI_CV_MirrorCoat5
if_not_taunted AI_CV_MirrorCoat4
- if_random 100, AI_CV_MirrorCoat4
+ if_random_less_than 100, AI_CV_MirrorCoat4
score +1
AI_CV_MirrorCoat4: @ 81DBA1F
get_move TARGET
- get_move_type
+ get_move_type_from_result
if_not_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_ScoreDown1
- if_random 100, AI_CV_MirrorCoat_End
+ if_random_less_than 100, AI_CV_MirrorCoat_End
score +1
jump AI_CV_MirrorCoat_End
AI_CV_MirrorCoat5: @ 81DBA38
if_not_taunted AI_CV_MirrorCoat6
- if_random 100, AI_CV_MirrorCoat6
+ if_random_less_than 100, AI_CV_MirrorCoat6
score +1
AI_CV_MirrorCoat6: @ 81DBA45
- get_type 0
+ get_type ENEMY_TYPE1
if_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_End
- get_type 2
+ get_type PLAYER_TYPE1
if_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_End
- if_random 50, AI_CV_MirrorCoat_End
+ if_random_less_than 50, AI_CV_MirrorCoat_End
AI_CV_MirrorCoat_ScoreDown1: @ 81DBA61
score -1
@@ -2264,27 +2264,27 @@ AI_CV_Fly2: @ 81DBA9F
jump AI_CV_Fly5
AI_CV_Fly3: @ 81DBACF
- get_type 1
+ get_type ENEMY_TYPE2
if_in_bytes AI_CV_Fly_TypesToEncourage, AI_CV_Fly6
- get_type 3
+ get_type PLAYER_TYPE2
if_in_bytes AI_CV_Fly_TypesToEncourage, AI_CV_Fly6
jump AI_CV_Fly5
AI_CV_Fly4: @ 81DBAEA
- get_type 1
+ get_type ENEMY_TYPE2
if_equal TYPE_ICE, AI_CV_Fly6
- get_type 3
+ get_type PLAYER_TYPE2
if_equal TYPE_ICE, AI_CV_Fly6
AI_CV_Fly5: @ 81DBAFA
if_would_go_first USER, AI_CV_Fly_End
get_move TARGET
- get_move_effect
+ get_move_effect_from_result
if_not_equal EFFECT_LOCK_ON, AI_CV_Fly6
jump AI_CV_Fly_End
AI_CV_Fly6: @ 81DBB0E
- if_random 80, AI_CV_Fly_End
+ if_random_less_than 80, AI_CV_Fly_End
score +1
AI_CV_Fly_End: @ 81DBB16
@@ -2303,7 +2303,7 @@ AI_CV_FakeOut: @ 81DBB1B
AI_CV_SpitUp: @ 81DBB1E
get_stockpile_count USER
if_less_than 2, AI_CV_SpitUp_End
- if_random 80, AI_CV_SpitUp_End
+ if_random_less_than 80, AI_CV_SpitUp_End
score +2
AI_CV_SpitUp_End: @ 81DBB2E
@@ -2342,7 +2342,7 @@ AI_CV_FocusPunch: @ 81DBB65
if_status2 TARGET, S_CONFUSED, AI_CV_FocusPunch3
is_first_turn USER
if_not_equal 0, AI_CV_FocusPunch_End
- if_random 100, AI_CV_FocusPunch_End
+ if_random_less_than 100, AI_CV_FocusPunch_End
score +1
jump AI_CV_FocusPunch_End
@@ -2351,7 +2351,7 @@ AI_CV_FocusPunch2: @ 81DBBA4
jump AI_CV_FocusPunch_End
AI_CV_FocusPunch3: @ 81DBBAB
- if_random 100, AI_CV_FocusPunch_End
+ if_random_less_than 100, AI_CV_FocusPunch_End
AI_CV_FocusPunch_ScoreUp1: @ 81DBBB1
score +1
@@ -2387,7 +2387,7 @@ AI_CV_Trick3: @ 81DBBE1
AI_CV_Trick4: @ 81DBBF3
get_hold_effect TARGET
if_in_bytes AI_CV_Trick_EffectsToEncourage, AI_CV_Trick2
- if_random 50, AI_CV_Trick_End
+ if_random_less_than 50, AI_CV_Trick_End
score +2
AI_CV_Trick_End: @ 81DBC06
@@ -2418,7 +2418,7 @@ AI_CV_ChangeSelfAbility2: @ 81DBC27
jump AI_CV_ChangeSelfAbility_End
AI_CV_ChangeSelfAbility3: @ 81DBC2E
- if_random 50, AI_CV_ChangeSelfAbility_End
+ if_random_less_than 50, AI_CV_ChangeSelfAbility_End
score +2
AI_CV_ChangeSelfAbility_End: @ 81DBC36
@@ -2462,21 +2462,21 @@ AI_CV_Superpower_End: @ 81DBC77
AI_CV_MagicCoat: @ 81DBC78
if_hp_more_than TARGET, 30, AI_CV_MagicCoat2
- if_random 100, AI_CV_MagicCoat2
+ if_random_less_than 100, AI_CV_MagicCoat2
score -1
AI_CV_MagicCoat2: @ 81DBC87
is_first_turn USER
if_equal 0, AI_CV_MagicCoat4
- if_random 150, AI_CV_MagicCoat_End
+ if_random_less_than 150, AI_CV_MagicCoat_End
score +1
jump AI_CV_MagicCoat_End
AI_CV_MagicCoat3: @ unreferenced
- if_random 50, AI_CV_MagicCoat_End
+ if_random_less_than 50, AI_CV_MagicCoat_End
AI_CV_MagicCoat4: @ 81DBCA2
- if_random 30, AI_CV_MagicCoat_End
+ if_random_less_than 30, AI_CV_MagicCoat_End
score -1
AI_CV_MagicCoat_End: @ 81DBCAA
@@ -2485,7 +2485,7 @@ AI_CV_MagicCoat_End: @ 81DBCAA
AI_CV_Recycle: @ 81DBCAB
get_item USER
if_not_in_bytes AI_CV_Recycle_ItemsToEncourage, AI_CV_Recycle_ScoreDown2
- if_random 50, AI_CV_Recycle_End
+ if_random_less_than 50, AI_CV_Recycle_End
score +1
jump AI_CV_Recycle_End
@@ -2505,7 +2505,7 @@ AI_CV_Revenge: @ 81DBCCA
if_status TARGET, SLP, AI_CV_Revenge_ScoreDown2
if_status2 TARGET, S_INFATUATED, AI_CV_Revenge_ScoreDown2
if_status2 TARGET, S_CONFUSED, AI_CV_Revenge_ScoreDown2
- if_random 180, AI_CV_Revenge_ScoreDown2
+ if_random_less_than 180, AI_CV_Revenge_ScoreDown2
score +2
jump AI_CV_Revenge_End
@@ -2529,7 +2529,7 @@ AI_CV_KnockOff: @ 81DBD0A
if_hp_less_than TARGET, 30, AI_CV_KnockOff_End
is_first_turn USER
if_more_than 0, AI_CV_KnockOff_End
- if_random 180, AI_CV_KnockOff_End
+ if_random_less_than 180, AI_CV_KnockOff_End
score +1
AI_CV_KnockOff_End: @ 81DBD21
@@ -2572,7 +2572,7 @@ AI_CV_Eruption_End: @ 81DBD75
AI_CV_Imprison: @ 81DBD76
is_first_turn USER
if_more_than 0, AI_CV_Imprison_End
- if_random 100, AI_CV_Imprison_End
+ if_random_less_than 100, AI_CV_Imprison_End
score +2
AI_CV_Imprison_End: @ 81DBD86
@@ -2591,11 +2591,11 @@ AI_CV_Refresh_End: @ 81DBD95
AI_CV_Snatch: @ 81DBD96
is_first_turn USER
if_equal 1, AI_CV_Snatch3
- if_random 30, AI_CV_Snatch_End
+ if_random_less_than 30, AI_CV_Snatch_End
if_would_go_first USER, AI_CV_Snatch2
if_hp_not_equal USER, 100, AI_CV_Snatch5
if_hp_less_than TARGET, 70, AI_CV_Snatch5
- if_random 60, AI_CV_Snatch_End
+ if_random_less_than 60, AI_CV_Snatch_End
jump AI_CV_Snatch5
AI_CV_Snatch2: @ 81DBDC3
@@ -2605,17 +2605,17 @@ AI_CV_Snatch2: @ 81DBDC3
jump AI_CV_Snatch4
AI_CV_Snatch3: @ 81DBDDD
- if_random 150, AI_CV_Snatch_End
+ if_random_less_than 150, AI_CV_Snatch_End
score +2
jump AI_CV_Snatch_End
AI_CV_Snatch4: @ 81DBDEA
- if_random 230, AI_CV_Snatch5
+ if_random_less_than 230, AI_CV_Snatch5
score +1
jump AI_CV_Snatch_End
AI_CV_Snatch5: @ 81DBDF7
- if_random 30, AI_CV_Snatch_End
+ if_random_less_than 30, AI_CV_Snatch_End
score -2
AI_CV_Snatch_End: @ 81DBDFF
@@ -2623,9 +2623,9 @@ AI_CV_Snatch_End: @ 81DBDFF
AI_CV_MudSport: @ 81DBE00
if_hp_less_than USER, 50, AI_CV_MudSport_ScoreDown1
- get_type 0
+ get_type ENEMY_TYPE1
if_equal TYPE_ELECTRIC, AI_CV_MudSport2
- get_type 2
+ get_type PLAYER_TYPE1
if_equal TYPE_ELECTRIC, AI_CV_MudSport2
jump AI_CV_MudSport_ScoreDown1
@@ -2657,9 +2657,9 @@ AI_CV_Overheat_End: @ 81DBE4D
AI_CV_WaterSport: @ 81DBE4E
if_hp_less_than USER, 50, AI_CV_WaterSport_ScoreDown1
- get_type 0
+ get_type ENEMY_TYPE1
if_equal TYPE_FIRE, AI_CV_WaterSport2
- get_type 2
+ get_type PLAYER_TYPE1
if_equal TYPE_FIRE, AI_CV_WaterSport2
jump AI_CV_WaterSport_ScoreDown1
@@ -2676,12 +2676,12 @@ AI_CV_WaterSport_End: @ 81DBE73
AI_CV_DragonDance: @ 81DBE74
if_would_go_first USER, AI_CV_DragonDance2
if_hp_more_than USER, 50, AI_CV_DragonDance_End
- if_random 70, AI_CV_DragonDance_End
+ if_random_less_than 70, AI_CV_DragonDance_End
score -1
jump AI_CV_DragonDance_End
AI_CV_DragonDance2: @ 81DBE8E
- if_random 128, AI_CV_DragonDance_End
+ if_random_less_than 128, AI_CV_DragonDance_End
score +1
AI_CV_DragonDance_End: @ 81DBE96
@@ -2709,7 +2709,7 @@ AI_SetupFirstTurn: @ 81DBEB5
if_not_equal 0, AI_SetupFirstTurn_End
get_effect
if_not_in_bytes AI_SetupFirstTurn_SetupEffectsToEncourage, AI_SetupFirstTurn_End
- if_random 80, AI_SetupFirstTurn_End
+ if_random_less_than 80, AI_SetupFirstTurn_End
score +2
AI_SetupFirstTurn_End: @ 81DBECE
@@ -2776,7 +2776,7 @@ AI_SetupFirstTurn_SetupEffectsToEncourage: @ 81DBECF
AI_PreferStrongestMove: @ 81DBF07
is_most_powerful_move
if_not_equal 0, AI_PreferStrongestMove_End
- if_random 100, AI_PreferStrongestMove_End
+ if_random_less_than 100, AI_PreferStrongestMove_End
score +2
AI_PreferStrongestMove_End: @ 81DBF16
@@ -2785,7 +2785,7 @@ AI_PreferStrongestMove_End: @ 81DBF16
AI_Risky: @ 81DBF17
get_effect
if_not_in_bytes AI_Risky_EffectsToEncourage, AI_Risky_End
- if_random 128, AI_Risky_End
+ if_random_less_than 128, AI_Risky_End
score +2
AI_Risky_End: @ 81DBF29
@@ -2819,10 +2819,10 @@ AI_PreferBatonPass: @ 81DBF3E
is_most_powerful_move
if_not_equal 0, AI_PreferBatonPass_End
if_move_effect USER, EFFECT_BATON_PASS, AI_PreferBatonPass_GoForBatonPass
- if_random 80, AI_Risky_End
+ if_random_less_than 80, AI_Risky_End
AI_PreferBatonPass_GoForBatonPass: @ 81DBF5A
- if_random 20, AI_Risky_End
+ if_random_less_than 20, AI_Risky_End
score +3
AI_PreferBatonPass_End: @ 81DBF62
@@ -2849,7 +2849,7 @@ AI_HPAware_UserHasMediumHP: @ 81DBF90
jump AI_HPAware_ConsiderTarget
AI_HPAware_TryToDiscourage: @ 81DBF9F
- if_random 50, AI_HPAware_ConsiderTarget
+ if_random_less_than 50, AI_HPAware_ConsiderTarget
score -2
AI_HPAware_ConsiderTarget: @ 81DBFA7
@@ -2870,7 +2870,7 @@ AI_HPAware_TargetHasMediumHP: @ 81DBFD3
jump AI_HPAware_End
AI_HPAware_TargetTryToDiscourage: @ 81DBFE2
- if_random 50, AI_HPAware_End
+ if_random_less_than 50, AI_HPAware_End
score -2
AI_HPAware_End: @ 81DBFEA
@@ -3121,7 +3121,7 @@ AI_Roaming_End: @ 81DC0FD
end
AI_Safari: @ 81DC0FE
- if_random_2 AI_Safari_Flee
+ if_random_100 AI_Safari_Flee
watch
AI_Safari_Flee: @ 81DC104
diff --git a/data/battle_anim.s b/data/battle_anim.s
index 49f286c60..ed880ba77 100644
--- a/data/battle_anim.s
+++ b/data/battle_anim.s
@@ -1049,53 +1049,3 @@ gBattleAnimBackgroundTable:: @ 837F374
.4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_05
.4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_06
- .align 2
-gUnknown_0837F4B8:: @ 837F4B8
- .4byte ma00_load_graphics
- .4byte ma01_080728D0
- .4byte ma02_instanciate_template
- .4byte sub_8075BB8
- .4byte ma04_wait_countdown
- .4byte sub_8075C74
- .4byte nullsub_53
- .4byte nullsub_88
- .4byte sub_8075CB0
- .4byte ma09_play_sound
- .4byte sub_8075DE0
- .4byte ma0B_0807324C
- .4byte sub_8076A3C
- .4byte sub_8076AA0
- .4byte ma0E_call
- .4byte sub_8076AF0
- .4byte ma10_080736AC
- .4byte ma11_if_else
- .4byte ma12_cond_if
- .4byte sub_8076BBC
- .4byte ma14_load_background
- .4byte ma15_load_battle_screen_elements
- .4byte ma16_wait_for_battle_screen_elements_s2
- .4byte sub_8076F44
- .4byte ma18_load_background_probably
- .4byte ma19_08073BC8
- .4byte ma1A_8073C00
- .4byte ma1B_8073C2C
- .4byte ma1C_8073ED0
- .4byte ma1D_08073FB4
- .4byte sub_8076A78
- .4byte sub_8077610
- .4byte ma20_wait_for_something
- .4byte ma21_08074164
- .4byte sub_80767C4
- .4byte ma23_8073484
- .4byte sub_807775C
- .4byte sub_8076C4C
- .4byte sub_8077320
- .4byte sub_80773B4
- .4byte sub_807779C
- .4byte sub_8077808
- .4byte sub_807784C
- .4byte ma2B_make_side_invisible
- .4byte ma2C_make_side_visible
- .4byte sub_807794C
- .4byte sub_80779FC
- .4byte ma2F_stop_music
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s
index e138d641e..88d88d99f 100644
--- a/data/battle_anim_80CA710.s
+++ b/data/battle_anim_80CA710.s
@@ -483,9 +483,18 @@ gSpriteAffineAnimTable_83D67E4:: @ 83D67E4
gBattleAnimSpriteTemplate_83D67F4:: @ 83D67F4
spr_template 10224, 10224, gOamData_837DF94, gSpriteAnimTable_83D66B8, NULL, gSpriteAffineAnimTable_83D67E4, sub_80CBBF0
- .align 2
gUnknown_083D680C:: @ 83D680C
- .incbin "baserom.gba", 0x003d680c, 0x24
+ .byte 5, 24, 1
+ .byte 0, 4, 0
+ .byte 8, 16, -1
+ .byte 0, 2, 0
+ .byte 8, 16, 1
+ .byte 0, 2, 0
+ .byte 8, 16, 1
+ .byte 0, 2, 0
+ .byte 8, 16, 1
+ .byte 0, 16, 0
+ .byte 0, 0, 127
.align 2
gSpriteAnim_83D6830:: @ 83D6830
@@ -596,9 +605,15 @@ gBattleAnimSpriteTemplate_83D6954:: @ 83D6954
gBattleAnimSpriteTemplate_83D696C:: @ 83D696C
spr_template 10271, 10271, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D6938, sub_80CC474
- .align 2
+ .align 1
gUnknown_083D6984:: @ 83D6984
- .incbin "baserom.gba", 0x003d6984, 0x10
+ .2byte 0x1F
+ .2byte 0x27F
+ .2byte 0x3FF
+ .2byte 0x3E0
+ .2byte 0x7DC5
+ .2byte 0x7D56
+ .2byte 0x7EB6
.align 2
gBattleAnimSpriteTemplate_83D6994:: @ 83D6994
@@ -895,8 +910,10 @@ gSpriteAffineAnim_83D6D2C:: @ 83D6D2C
obj_rot_scal_anim_frame 0x8, 0x8, 1, 24
obj_rot_scal_anim_end
- .align 2
- .incbin "baserom.gba", 0x003d6d44, 0x18
+@ unused
+ obj_rot_scal_anim_loop 0
+ obj_rot_scal_anim_frame 0x0, 0x0, 1, 24
+ obj_rot_scal_anim_loop 10
.align 2
gSpriteAffineAnim_83D6D5C:: @ 83D6D5C
@@ -904,8 +921,10 @@ gSpriteAffineAnim_83D6D5C:: @ 83D6D5C
obj_rot_scal_anim_frame 0x8, 0x8, -1, 24
obj_rot_scal_anim_end
- .align 2
- .incbin "baserom.gba", 0x003d6d74, 0x18
+@ unused
+ obj_rot_scal_anim_loop 0
+ obj_rot_scal_anim_frame 0x0, 0x0, -1, 24
+ obj_rot_scal_anim_loop 10
.align 2
gSpriteAffineAnimTable_83D6D8C:: @ 83D6D8C
@@ -924,9 +943,11 @@ gBattleAnimSpriteTemplate_83D6DAC:: @ 83D6DAC
gBattleAnimSpriteTemplate_83D6DC4:: @ 83D6DC4
spr_template 10014, 10014, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CD6CC
- .align 2
gUnknown_083D6DDC:: @ 83D6DDC
- .incbin "baserom.gba", 0x003d6ddc, 0x8
+ .byte 64, 64
+ .byte 0,-64
+ .byte -64, 64
+ .byte 32,-32
.align 2
gBattleAnimSpriteTemplate_83D6DE4:: @ 83D6DE4
@@ -1197,7 +1218,10 @@ gBattleAnimSpriteTemplate_83D7114:: @ 83D7114
.align 2
gUnknown_083D712C:: @ 83D712C
- .incbin "baserom.gba", 0x003d712c, 0x30
+ .2byte 10072,0x7FFF,0x735F,0x6ADF,0x623F,0x59BF
+ .2byte 10097,0x7FFF,0x6BF9,0x57F4,0x43EF,0x33EA
+ .2byte 10185,0x7FFF,0x63FF,0x47FF,0x2BFF,0x0FFF
+ .2byte 10175,0x7FFF,0x7F9A,0x7F55,0x7F10,0x7ECC
.align 2
gBattleAnimSpriteTemplate_83D715C:: @ 83D715C
diff --git a/data/battle_party_menu.s b/data/battle_party_menu.s
deleted file mode 100644
index ce6b49927..000000000
--- a/data/battle_party_menu.s
+++ /dev/null
@@ -1,34 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083B5FCC:: @ 83B5FCC
- .4byte OtherText_Summary, BattlePokemonMenu_Summary
- .4byte gOtherText_CancelNoTerminator, BattlePokemonMenu_Cancel
- .4byte OtherText_Shift, BattlePokemonMenu_Shift
- .4byte OtherText_SendOut, BattlePokemonMenu_Shift
-
-Unknown_83B5FEC: @ 83B5FEC
- .byte 2, 0, 1
-
-Unknown_83B5FEF: @ 83B5FEF
- .byte 3, 0, 1
-
-Unknown_83B5FF2: @ 83B5FF2
- .byte 0, 1
-
- .align 2
-gUnknown_083B5FF4:: @ 83B5FF4
- .byte 3, 9
- .space 2
- .4byte Unknown_83B5FEC
-
- .byte 3, 9
- .space 2
- .4byte Unknown_83B5FEF
-
- .byte 2, 9
- .space 2
- .4byte Unknown_83B5FF2
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index f65807005..32d8e6da5 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -690,7 +690,7 @@ BattleScript_1D7377: @ 81D7377
resultmessage
waitmessage 64
jumpifbyte 4, 0x2024c68, 41, BattleScript_1D7396
- copyarray 0x30041c0, 0x20160e0, 6
+ copyarray gUnknown_030041C0, 0x20160e0, 6
printstring BATTLE_TEXT_HitMulti
waitmessage 64
@@ -1493,7 +1493,7 @@ BattleScript_1D7C90: @ 81D7C90
resultmessage
waitmessage 64
jumpifbyte 0, 0x20160e4, 0, BattleScript_1D7CAF
- copyarray 0x30041c0, 0x20160e0, 6
+ copyarray gUnknown_030041C0, 0x20160e0, 6
printstring BATTLE_TEXT_HitMulti
waitmessage 64
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 4bee5101c..0ed54d11e 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -38,7 +38,7 @@ gUnknown_081D9E98:: @ 81D9E98
.4byte BattleScript_1DA00A
BattleScript_1D9EA8: @ 81D9EA8
- jumpifhalfword 4, 0x20239f8, 512, BattleScript_1D9EB8
+ jumpifhalfword 4, gBattleTypeFlags, 512, BattleScript_1D9EB8
printstring BATTLE_TEXT_Used1
pokemoncatchfunction
@@ -52,7 +52,7 @@ BattleScript_1D9EBC: @ 81D9EBC
pokemoncatchfunction
gUnknown_081D9EC2:: @ 81D9EC2
- jumpifhalfword 0, 0x2024c04, 5, BattleScript_1D9ED0
+ jumpifhalfword 0, gUnknown_02024C04, 5, BattleScript_1D9ED0
atk60 11
BattleScript_1D9ED0: @ 81D9ED0
@@ -60,35 +60,35 @@ BattleScript_1D9ED0: @ 81D9ED0
capturesomethingf1 BattleScript_1D9EE3
printstring BATTLE_TEXT_AddedToDex
waitstateatk
- setbyte 0x2024d1e, 0
+ setbyte gUnknown_02024D1E, 0
capturesomethingf2
BattleScript_1D9EE3: @ 81D9EE3
printstring BATTLE_TEXT_GiveNickname
waitstateatk
- setbyte 0x2024d1e, 0
+ setbyte gUnknown_02024D1E, 0
capturesomethingf3 BattleScript_1D9EF8
printstring BATTLE_TEXT_SentToPC
waitmessage 64
BattleScript_1D9EF8: @ 81D9EF8
catchpoke
- setbyte 0x2024d26, 7
+ setbyte gUnknown_02024D26, 7
activesidesomething
gUnknown_081D9F00:: @ 81D9F00
printstring BATTLE_TEXT_BallCaught2
- setbyte 0x2024d26, 7
+ setbyte gUnknown_02024D26, 7
activesidesomething
gUnknown_081D9F0A:: @ 81D9F0A
printfromtable BattleTextList_4015E6
waitmessage 64
- jumpifbyte 5, 0x20239f8, 128, BattleScript_1D9F34
- jumpifbyte 1, 0x2038808, 0, BattleScript_1D9F34
+ jumpifbyte 5, gBattleTypeFlags, 128, BattleScript_1D9F34
+ jumpifbyte 1, gNumSafariBalls, 0, BattleScript_1D9F34
printstring BATTLE_TEXT_SafariOver
waitmessage 64
- setbyte 0x2024d26, 8
+ setbyte gUnknown_02024D26, 8
BattleScript_1D9F34: @ 81D9F34
atkf6
@@ -112,7 +112,7 @@ BattleScript_1D9F4F: @ 81D9F4F
printstring BATTLE_TEXT_Used2
waitmessage 64
atk75
- orword 0x2024c6c, 0x100
+ orword gUnknown_02024C6C, 0x100
graphicalhpupdate USER
datahpupdate USER
printstring BATTLE_TEXT_RestoredHealth
@@ -161,7 +161,7 @@ BattleScript_1D9FBB: @ 81D9FBB
BattleScript_1D9FDA: @ 81D9FDA
atk54 17
- setbyte 0x2024d26, 4
+ setbyte gUnknown_02024D26, 4
activesidesomething
BattleScript_1D9FE4: @ 81D9FE4
diff --git a/data/battle_setup.s b/data/battle_setup.s
deleted file mode 100644
index eb790edf4..000000000
--- a/data/battle_setup.s
+++ /dev/null
@@ -1,77 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gBattleTransitionTable_Wild:: @ 839ACF8
- .byte 8, 9, 5, 10, 0, 10, 7, 6
-
-gBattleTransitionTable_Trainer:: @ 839AD00
- .byte 4, 11, 2, 3, 0, 10, 1, 6
-
- .align 2
-gTrainerBattleSpecs_0:: @ 839AD08
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_1:: @ 839AD50
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 2
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_2:: @ 839AD98
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 2
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_3:: @ 839ADE0
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 5
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_4:: @ 839AE28
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 2
- .4byte gTrainerBattleEndScript, 2
- .4byte gTrainerBattleScriptReturnAddress, 6
-
-@ 839AE70
- .include "data/trainer_eye_trainers.inc"
-
- .align 2
-gBadgeFlags:: @ 839B1F0
- .2byte 0x0807, 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e
diff --git a/data/berries.inc b/data/berries.inc
deleted file mode 100644
index 7d7d3edd1..000000000
--- a/data/berries.inc
+++ /dev/null
@@ -1,689 +0,0 @@
- .align 2
-gBerries:: @ 83CD2CC
- .string "CHERI$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 20 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Cheri
- .4byte gBerryDescriptionPart2_Cheri
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "CHESTO$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 80 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Chesto
- .4byte gBerryDescriptionPart2_Chesto
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "PECHA$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 40 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Pecha
- .4byte gBerryDescriptionPart2_Pecha
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "RAWST$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 32 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Rawst
- .4byte gBerryDescriptionPart2_Rawst
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "ASPEAR$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 50 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Aspear
- .4byte gBerryDescriptionPart2_Aspear
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "LEPPA$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 28 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Leppa
- .4byte gBerryDescriptionPart2_Leppa
- .byte 4 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "ORAN$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 35 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Oran
- .4byte gBerryDescriptionPart2_Oran
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "PERSIM$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 47 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Persim
- .4byte gBerryDescriptionPart2_Persim
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "LUM$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 34 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Lum
- .4byte gBerryDescriptionPart2_Lum
- .byte 12 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "SITRUS$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 95 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Sitrus
- .4byte gBerryDescriptionPart2_Sitrus
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "FIGY$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 100 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Figy
- .4byte gBerryDescriptionPart2_Figy
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "WIKI$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 115 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Wiki
- .4byte gBerryDescriptionPart2_Wiki
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "MAGO$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 126 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Mago
- .4byte gBerryDescriptionPart2_Mago
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "AGUAV$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 64 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Aguav
- .4byte gBerryDescriptionPart2_Aguav
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "IAPAPA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 223 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Iapapa
- .4byte gBerryDescriptionPart2_Iapapa
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "RAZZ$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 120 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Razz
- .4byte gBerryDescriptionPart2_Razz
- .byte 1 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "BLUK$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 108 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Bluk
- .4byte gBerryDescriptionPart2_Bluk
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "NANAB$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 77 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Nanab
- .4byte gBerryDescriptionPart2_Nanab
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "WEPEAR$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 74 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Wepear
- .4byte gBerryDescriptionPart2_Wepear
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "PINAP$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 80 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Pinap
- .4byte gBerryDescriptionPart2_Pinap
- .byte 1 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "POMEG$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 135 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Pomeg
- .4byte gBerryDescriptionPart2_Pomeg
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "KELPSY$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 150 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Kelpsy
- .4byte gBerryDescriptionPart2_Kelpsy
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "QUALOT$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 110 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Qualot
- .4byte gBerryDescriptionPart2_Qualot
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "HONDEW$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 162 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Hondew
- .4byte gBerryDescriptionPart2_Hondew
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "GREPA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 149 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Grepa
- .4byte gBerryDescriptionPart2_Grepa
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "TAMATO$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 200 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Tamato
- .4byte gBerryDescriptionPart2_Tamato
- .byte 6 @ stage duration (in hours)
- .byte 20 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "CORNN$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 75 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Cornn
- .4byte gBerryDescriptionPart2_Cornn
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 20 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "MAGOST$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 140 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Magost
- .4byte gBerryDescriptionPart2_Magost
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 20 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "RABUTA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 226 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Rabuta
- .4byte gBerryDescriptionPart2_Rabuta
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 20 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "NOMEL$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 285 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Nomel
- .4byte gBerryDescriptionPart2_Nomel
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 20 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "SPELON$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 133 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Spelon
- .4byte gBerryDescriptionPart2_Spelon
- .byte 18 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "PAMTRE$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 244 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Pamtre
- .4byte gBerryDescriptionPart2_Pamtre
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "WATMEL$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 250 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Watmel
- .4byte gBerryDescriptionPart2_Watmel
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "DURIN$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 280 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Durin
- .4byte gBerryDescriptionPart2_Durin
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 10 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "BELUE$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 300 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Belue
- .4byte gBerryDescriptionPart2_Belue
- .byte 18 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "LIECHI$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 111 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Liechi
- .4byte gBerryDescriptionPart2_Liechi
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "GANLON$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 33 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Ganlon
- .4byte gBerryDescriptionPart2_Ganlon
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 0 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "SALAC$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 95 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Salac
- .4byte gBerryDescriptionPart2_Salac
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "PETAYA$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 237 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Petaya
- .4byte gBerryDescriptionPart2_Petaya
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 0 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "APICOT$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 75 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Apicot
- .4byte gBerryDescriptionPart2_Apicot
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "LANSAT$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 97 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Lansat
- .4byte gBerryDescriptionPart2_Lansat
- .byte 24 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "STARF$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 153 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Starf
- .4byte gBerryDescriptionPart2_Starf
- .byte 24 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "ENIGMA$", 7
- .byte BERRY_FIRMNESS_UNKNOWN
- .2byte 0 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Enigma
- .4byte gBerryDescriptionPart2_Enigma
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 40 @ dry
- .byte 40 @ sweet
- .byte 40 @ bitter
- .byte 40 @ sour
- .byte 40 @ smoothness
- .byte 0 @ padding
diff --git a/data/berry.s b/data/berry.s
deleted file mode 100644
index 091af4105..000000000
--- a/data/berry.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83CC740
- .include "data/text/berry_descriptions.inc"
-
-@ 83CD2CC
- .include "data/berries.inc"
-
- .align 2
-gBlankBerryTree:: @ 83CD780
- .4byte 0, 0
diff --git a/data/bike.s b/data/bike.s
deleted file mode 100644
index ab2d7b67c..000000000
--- a/data/bike.s
+++ /dev/null
@@ -1,57 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083DB594:: @ 83DB594
- .4byte sub_80E5168
- .4byte sub_80E517C
- .4byte sub_80E51C4
- .4byte sub_80E5270
-
- .align 2
-gUnknown_083DB5A4:: @ 83DB5A4
- .4byte PlayerGoSpeed0
- .4byte sub_80593C4
- .4byte sub_80593F4
-
- .align 2
-gUnknown_083DB5B0:: @ 83DB5B0
- .4byte sub_80E56F8
- .4byte sub_80E5708
- .4byte sub_80E5744
- .4byte sub_80E57BC
- .4byte sub_80E57F8
- .4byte sub_80E5834
- .4byte sub_80E5870
- .4byte sub_80E58AC
- .4byte sub_80E5920
- .4byte sub_80E5990
- .4byte sub_80E59A0
- .4byte sub_80E5A30
- .4byte sub_80E5AC0
-
- .align 2
-gUnknown_083DB5E4:: @ 83DB5E4
- .4byte CheckMovementInputAcroBikeNormal
- .4byte CheckMovementInputAcroBikeChangingDirection
- .4byte CheckMovementInputAcroBikeStandingWheelie
- .4byte CheckMovementInputAcroBikeBunnyHop
- .4byte CheckMovementInputAcroBikeMovingWheelie
- .4byte CheckMovementInputAcroBikeUnknownMode5
- .4byte CheckMovementInputAcroBikeUnknownMode6
-
- .align 1
-gUnknown_083DB600:: @ 83DB600
- .2byte 1, 2, 4
-
-Unknown_3DB606:: @ 83DB606
- .byte 4, 0
-
- .align 2
-gUnknown_083DB608:: @ 83DB608
- .4byte 0x1, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x1
- .4byte 0x2, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x2
- .4byte 0x3, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x3
- .4byte 0x4, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x4
diff --git a/data/clock_hand_coords.inc b/data/clock_hand_coords.inc
deleted file mode 100644
index 476ffb788..000000000
--- a/data/clock_hand_coords.inc
+++ /dev/null
@@ -1,361 +0,0 @@
-gClockHandCoords:: @ 83F7B58
- .byte 0, -24 @ 0
- .byte 1, -25 @ 1
- .byte 1, -25 @ 2
- .byte 2, -25 @ 3
- .byte 2, -25 @ 4
- .byte 2, -25 @ 5
- .byte 3, -24 @ 6
- .byte 3, -25 @ 7
- .byte 4, -25 @ 8
- .byte 4, -25 @ 9
- .byte 4, -25 @ 10
- .byte 5, -25 @ 11
- .byte 5, -25 @ 12
- .byte 6, -24 @ 13
- .byte 6, -24 @ 14
- .byte 6, -24 @ 15
- .byte 7, -24 @ 16
- .byte 7, -24 @ 17
- .byte 7, -24 @ 18
- .byte 8, -24 @ 19
- .byte 8, -24 @ 20
- .byte 9, -24 @ 21
- .byte 9, -24 @ 22
- .byte 10, -23 @ 23
- .byte 10, -23 @ 24
- .byte 11, -22 @ 25
- .byte 11, -22 @ 26
- .byte 11, -22 @ 27
- .byte 12, -22 @ 28
- .byte 12, -21 @ 29
- .byte 13, -21 @ 30
- .byte 13, -21 @ 31
- .byte 13, -21 @ 32
- .byte 14, -21 @ 33
- .byte 14, -21 @ 34
- .byte 14, -20 @ 35
- .byte 14, -20 @ 36
- .byte 15, -20 @ 37
- .byte 15, -19 @ 38
- .byte 16, -19 @ 39
- .byte 16, -19 @ 40
- .byte 16, -19 @ 41
- .byte 16, -18 @ 42
- .byte 16, -18 @ 43
- .byte 17, -18 @ 44
- .byte 17, -17 @ 45
- .byte 17, -17 @ 46
- .byte 18, -17 @ 47
- .byte 18, -17 @ 48
- .byte 18, -16 @ 49
- .byte 18, -16 @ 50
- .byte 19, -16 @ 51
- .byte 19, -15 @ 52
- .byte 19, -15 @ 53
- .byte 20, -15 @ 54
- .byte 20, -14 @ 55
- .byte 20, -14 @ 56
- .byte 20, -13 @ 57
- .byte 20, -13 @ 58
- .byte 21, -13 @ 59
- .byte 21, -13 @ 60
- .byte 21, -12 @ 61
- .byte 22, -12 @ 62
- .byte 22, -12 @ 63
- .byte 22, -11 @ 64
- .byte 22, -11 @ 65
- .byte 22, -10 @ 66
- .byte 23, -10 @ 67
- .byte 23, -9 @ 68
- .byte 23, -9 @ 69
- .byte 23, -9 @ 70
- .byte 23, -9 @ 71
- .byte 23, -8 @ 72
- .byte 23, -8 @ 73
- .byte 23, -7 @ 74
- .byte 23, -7 @ 75
- .byte 23, -6 @ 76
- .byte 24, -6 @ 77
- .byte 24, -6 @ 78
- .byte 25, -5 @ 79
- .byte 25, -5 @ 80
- .byte 24, -4 @ 81
- .byte 25, -4 @ 82
- .byte 24, -3 @ 83
- .byte 25, -3 @ 84
- .byte 25, -3 @ 85
- .byte 25, -2 @ 86
- .byte 25, -2 @ 87
- .byte 24, -1 @ 88
- .byte 25, -1 @ 89
- .byte 24, 0 @ 90
- .byte 24, 0 @ 91
- .byte 24, 0 @ 92
- .byte 24, 1 @ 93
- .byte 24, 1 @ 94
- .byte 25, 2 @ 95
- .byte 24, 2 @ 96
- .byte 25, 2 @ 97
- .byte 24, 3 @ 98
- .byte 24, 3 @ 99
- .byte 25, 4 @ 100
- .byte 24, 4 @ 101
- .byte 24, 5 @ 102
- .byte 24, 5 @ 103
- .byte 24, 5 @ 104
- .byte 24, 6 @ 105
- .byte 23, 6 @ 106
- .byte 23, 6 @ 107
- .byte 23, 7 @ 108
- .byte 23, 8 @ 109
- .byte 23, 8 @ 110
- .byte 23, 8 @ 111
- .byte 23, 9 @ 112
- .byte 23, 9 @ 113
- .byte 23, 10 @ 114
- .byte 22, 10 @ 115
- .byte 22, 10 @ 116
- .byte 22, 11 @ 117
- .byte 22, 11 @ 118
- .byte 22, 11 @ 119
- .byte 22, 12 @ 120
- .byte 21, 12 @ 121
- .byte 21, 12 @ 122
- .byte 21, 13 @ 123
- .byte 20, 13 @ 124
- .byte 20, 13 @ 125
- .byte 19, 13 @ 126
- .byte 19, 13 @ 127
- .byte 19, 14 @ 128
- .byte 19, 14 @ 129
- .byte 19, 15 @ 130
- .byte 19, 15 @ 131
- .byte 18, 15 @ 132
- .byte 18, 16 @ 133
- .byte 17, 16 @ 134
- .byte 17, 16 @ 135
- .byte 17, 17 @ 136
- .byte 17, 17 @ 137
- .byte 16, 17 @ 138
- .byte 16, 18 @ 139
- .byte 16, 18 @ 140
- .byte 15, 18 @ 141
- .byte 14, 18 @ 142
- .byte 15, 19 @ 143
- .byte 14, 19 @ 144
- .byte 14, 19 @ 145
- .byte 13, 19 @ 146
- .byte 13, 20 @ 147
- .byte 13, 20 @ 148
- .byte 13, 20 @ 149
- .byte 12, 20 @ 150
- .byte 12, 20 @ 151
- .byte 12, 21 @ 152
- .byte 11, 21 @ 153
- .byte 11, 21 @ 154
- .byte 11, 21 @ 155
- .byte 10, 21 @ 156
- .byte 10, 22 @ 157
- .byte 10, 22 @ 158
- .byte 9, 22 @ 159
- .byte 9, 22 @ 160
- .byte 8, 22 @ 161
- .byte 7, 22 @ 162
- .byte 7, 23 @ 163
- .byte 7, 23 @ 164
- .byte 6, 23 @ 165
- .byte 6, 23 @ 166
- .byte 5, 23 @ 167
- .byte 5, 23 @ 168
- .byte 5, 24 @ 169
- .byte 4, 24 @ 170
- .byte 4, 24 @ 171
- .byte 4, 24 @ 172
- .byte 3, 24 @ 173
- .byte 2, 24 @ 174
- .byte 2, 24 @ 175
- .byte 1, 24 @ 176
- .byte 1, 24 @ 177
- .byte 0, 24 @ 178
- .byte 0, 24 @ 179
- .byte -1, 23 @ 180
- .byte 0, 24 @ 181
- .byte 0, 24 @ 182
- .byte -1, 24 @ 183
- .byte -1, 24 @ 184
- .byte -2, 24 @ 185
- .byte -2, 24 @ 186
- .byte -3, 24 @ 187
- .byte -3, 24 @ 188
- .byte -4, 24 @ 189
- .byte -4, 24 @ 190
- .byte -5, 24 @ 191
- .byte -5, 23 @ 192
- .byte -5, 23 @ 193
- .byte -6, 23 @ 194
- .byte -6, 23 @ 195
- .byte -7, 23 @ 196
- .byte -7, 23 @ 197
- .byte -7, 23 @ 198
- .byte -8, 23 @ 199
- .byte -8, 22 @ 200
- .byte -9, 22 @ 201
- .byte -9, 22 @ 202
- .byte -10, 22 @ 203
- .byte -10, 22 @ 204
- .byte -10, 21 @ 205
- .byte -11, 21 @ 206
- .byte -11, 21 @ 207
- .byte -11, 21 @ 208
- .byte -11, 20 @ 209
- .byte -12, 20 @ 210
- .byte -12, 20 @ 211
- .byte -13, 20 @ 212
- .byte -13, 20 @ 213
- .byte -13, 19 @ 214
- .byte -14, 19 @ 215
- .byte -14, 19 @ 216
- .byte -14, 19 @ 217
- .byte -14, 18 @ 218
- .byte -15, 18 @ 219
- .byte -15, 18 @ 220
- .byte -15, 17 @ 221
- .byte -16, 17 @ 222
- .byte -16, 17 @ 223
- .byte -17, 17 @ 224
- .byte -17, 16 @ 225
- .byte -17, 16 @ 226
- .byte -18, 16 @ 227
- .byte -17, 15 @ 228
- .byte -18, 15 @ 229
- .byte -18, 15 @ 230
- .byte -19, 15 @ 231
- .byte -19, 14 @ 232
- .byte -19, 14 @ 233
- .byte -19, 13 @ 234
- .byte -19, 13 @ 235
- .byte -20, 13 @ 236
- .byte -20, 12 @ 237
- .byte -20, 12 @ 238
- .byte -21, 12 @ 239
- .byte -21, 12 @ 240
- .byte -21, 11 @ 241
- .byte -21, 11 @ 242
- .byte -21, 10 @ 243
- .byte -21, 10 @ 244
- .byte -21, 9 @ 245
- .byte -22, 9 @ 246
- .byte -22, 9 @ 247
- .byte -22, 8 @ 248
- .byte -22, 8 @ 249
- .byte -22, 7 @ 250
- .byte -23, 7 @ 251
- .byte -23, 7 @ 252
- .byte -23, 6 @ 253
- .byte -23, 6 @ 254
- .byte -23, 5 @ 255
- .byte -24, 5 @ 256
- .byte -23, 4 @ 257
- .byte -23, 4 @ 258
- .byte -24, 4 @ 259
- .byte -24, 4 @ 260
- .byte -24, 3 @ 261
- .byte -24, 3 @ 262
- .byte -24, 2 @ 263
- .byte -24, 2 @ 264
- .byte -24, 1 @ 265
- .byte -24, 1 @ 266
- .byte -24, 1 @ 267
- .byte -24, 0 @ 268
- .byte -25, 0 @ 269
- .byte -24, -1 @ 270
- .byte -25, -1 @ 271
- .byte -24, -1 @ 272
- .byte -24, -2 @ 273
- .byte -24, -2 @ 274
- .byte -24, -3 @ 275
- .byte -24, -3 @ 276
- .byte -24, -4 @ 277
- .byte -24, -4 @ 278
- .byte -24, -4 @ 279
- .byte -24, -5 @ 280
- .byte -24, -5 @ 281
- .byte -24, -6 @ 282
- .byte -24, -6 @ 283
- .byte -23, -6 @ 284
- .byte -23, -7 @ 285
- .byte -23, -7 @ 286
- .byte -23, -8 @ 287
- .byte -23, -8 @ 288
- .byte -23, -9 @ 289
- .byte -23, -9 @ 290
- .byte -22, -9 @ 291
- .byte -22, -9 @ 292
- .byte -22, -10 @ 293
- .byte -22, -10 @ 294
- .byte -21, -10 @ 295
- .byte -21, -11 @ 296
- .byte -22, -11 @ 297
- .byte -22, -12 @ 298
- .byte -21, -12 @ 299
- .byte -21, -13 @ 300
- .byte -21, -13 @ 301
- .byte -20, -13 @ 302
- .byte -21, -14 @ 303
- .byte -20, -14 @ 304
- .byte -20, -14 @ 305
- .byte -19, -14 @ 306
- .byte -19, -15 @ 307
- .byte -19, -15 @ 308
- .byte -18, -16 @ 309
- .byte -18, -16 @ 310
- .byte -18, -16 @ 311
- .byte -18, -17 @ 312
- .byte -18, -17 @ 313
- .byte -17, -17 @ 314
- .byte -17, -18 @ 315
- .byte -17, -18 @ 316
- .byte -16, -18 @ 317
- .byte -16, -18 @ 318
- .byte -16, -19 @ 319
- .byte -16, -19 @ 320
- .byte -15, -19 @ 321
- .byte -15, -19 @ 322
- .byte -15, -20 @ 323
- .byte -14, -20 @ 324
- .byte -14, -20 @ 325
- .byte -14, -21 @ 326
- .byte -13, -21 @ 327
- .byte -13, -21 @ 328
- .byte -13, -21 @ 329
- .byte -12, -21 @ 330
- .byte -12, -22 @ 331
- .byte -11, -22 @ 332
- .byte -11, -22 @ 333
- .byte -11, -22 @ 334
- .byte -10, -22 @ 335
- .byte -10, -22 @ 336
- .byte -9, -22 @ 337
- .byte -9, -23 @ 338
- .byte -9, -23 @ 339
- .byte -8, -23 @ 340
- .byte -8, -23 @ 341
- .byte -7, -23 @ 342
- .byte -7, -23 @ 343
- .byte -7, -24 @ 344
- .byte -6, -24 @ 345
- .byte -6, -24 @ 346
- .byte -5, -24 @ 347
- .byte -5, -24 @ 348
- .byte -4, -24 @ 349
- .byte -4, -24 @ 350
- .byte -4, -24 @ 351
- .byte -4, -25 @ 352
- .byte -3, -25 @ 353
- .byte -2, -25 @ 354
- .byte -2, -24 @ 355
- .byte -2, -24 @ 356
- .byte -1, -25 @ 357
- .byte -1, -25 @ 358
- .byte 0, -25 @ 359
diff --git a/data/contest.s b/data/contest.s
index f51fe0ca4..4e53035d2 100644
--- a/data/contest.s
+++ b/data/contest.s
@@ -121,20 +121,21 @@ gSpriteTemplate_83CA43C:: @ 83CA43C
spr_template 20009, 20006, gOamData_83CA3EC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
-Unknown_3CA454: @ 83CA454
- .incbin "baserom.gba", 0x3ca454, 0x10
+gSubspriteTable_83CA454:: @ 83CA454
+ subsprite -26, -4, 0, 0, 32x8
+ subsprite 6, -4, 0, 4, 32x8
.align 2
-gUnknown_083CA464:: @ 83CA464
- .4byte 0x2, Unknown_3CA454
+gSubspriteTables_83CA464:: @ 83CA464
+ .4byte 2, gSubspriteTable_83CA454
.align 2
gUnknown_083CA46C:: @ 83CA46C
- obj_tiles gContestApplauseGfx, 1024, 0xabe2
+ obj_tiles gContestApplauseGfx, 1024, 44002
.align 2
gUnknown_083CA474:: @ 83CA474
- obj_pal gContestPal, 0xABE2
+ obj_pal gContestPal, 44002
.align 2
gOamData_83CA47C:: @ 83CA47C
@@ -252,9 +253,7 @@ gSpriteAffineAnimTable_83CC43C:: @ 83CC43C
.4byte gSpriteAffineAnim_83CC404
.4byte gSpriteAffineAnim_83CC414
.4byte gSpriteAffineAnim_83CC424
-
- .align 2
- .incbin "baserom.gba", 0x003cc448, 0x4
+ .4byte NULL
.align 2
gOamData_83CC44C:: @ 83CC44C
@@ -280,13 +279,17 @@ gSpriteTemplate_83CC49C:: @ 83CC49C
.align 2
gUnknown_083CC4B4:: @ 83CC4B4
- obj_tiles gBlankGfxCompressed, 4096, 0x80e8
- obj_tiles gBlankGfxCompressed, 4096, 0x80e9
- obj_tiles gBlankGfxCompressed, 4096, 0x80ea
- obj_tiles gBlankGfxCompressed, 4096, 0x80eb
+ obj_tiles gBlankGfxCompressed, 4096, 33000
+ obj_tiles gBlankGfxCompressed, 4096, 33001
+ obj_tiles gBlankGfxCompressed, 4096, 33002
+ obj_tiles gBlankGfxCompressed, 4096, 33003
+ .align 2
gUnknown_083CC4D4:: @ 83CC4D4
- .incbin "baserom.gba", 0x003cc4d4, 0x20
+ obj_pal 0x20180A4, 33000
+ obj_pal 0x20180C4, 33001
+ obj_pal 0x20180E4, 33002
+ obj_pal 0x2018104, 33003
.align 2
gOamData_83CC4F4:: @ 83CC4F4
@@ -329,17 +332,72 @@ gSpriteTemplate_83CC584:: @ 83CC584
spr_template 33003, 33003, gOamData_83CC4F4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83CC534, SpriteCallbackDummy
gUnknown_083CC59C:: @ 83CC59C
- .incbin "baserom.gba", 0x003cc59c, 0x6
+ .string "{HIGHLIGHT TRANSPARENT}{COLOR}$"
gUnknown_083CC5A2:: @ 83CC5A2
.string "/$"
+ .align 1
gUnknown_083CC5A4:: @ 83CC5A4
- .incbin "baserom.gba", 0x003cc5a4, 0x10
+ .2byte 0x73, 0x19E6, 0x253, 0x4CC4, 0x1F, 0x3E0, 0x3FF, 0x7C00
@ 83CC5B4
.include "data/contest_excitement_table.inc"
.align 2
gUnknown_083CC5D0:: @ 83CC5D0
- .incbin "baserom.gba", 0x003cc5d0, 0x100
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_TAILLOW
+ .byte CONTEST_SMART
+ .string "TAILTA$", 11
+ .string "WYATT$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_BRELOOM
+ .byte CONTEST_BEAUTY
+ .string "BRELO$", 11
+ .string "LIANA$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_PELIPPER
+ .byte CONTEST_COOL
+ .string "PELEP$", 11
+ .string "TIERA$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_PELIPPER
+ .byte CONTEST_COOL
+ .string "PELEP$", 11
+ .string "TIERA$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_PELIPPER
+ .byte CONTEST_COOL
+ .string "PELEP$", 11
+ .string "TIERA$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_DELCATTY
+ .byte CONTEST_SMART
+ .string "KITSY$", 11
+ .string "OMAR$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_GULPIN
+ .byte CONTEST_CUTE
+ .string "GULPS$", 11
+ .string "MACIE$", 10
+
+ .4byte 0
+ .4byte 0xFFFF
+ .2byte SPECIES_LOUDRED
+ .byte CONTEST_TOUGH
+ .string "LOUDED$", 11
+ .string "BRYANT$", 10
diff --git a/data/contest_ai.s b/data/contest_ai.s
index 95e65db58..78f926df3 100644
--- a/data/contest_ai.s
+++ b/data/contest_ai.s
@@ -4,140 +4,140 @@
.section .rodata
.align 2
-gUnknown_08401E60:: @ 8401E60
- .4byte sub_8128AA8
- .4byte contest_ai_get_turn
- .4byte sub_8128B0C
- .4byte sub_8128B4C
- .4byte sub_8128B8C
- .4byte sub_8128BCC
- .4byte contest_ai_get_excitement
- .4byte sub_8128C2C
- .4byte sub_8128C6C
- .4byte sub_8128CAC
- .4byte sub_8128CEC
- .4byte contest_ai_get_user_order
- .4byte sub_8128D50
- .4byte sub_8128D90
- .4byte sub_8128DD0
- .4byte sub_8128E10
- .4byte contest_ai_get_user_condition_maybe
- .4byte sub_8128E90
- .4byte sub_8128ED0
- .4byte sub_8128F10
- .4byte sub_8128F50
- .4byte sub_8128F90
- .4byte sub_8128FBC
- .4byte sub_8129008
- .4byte sub_8129054
- .4byte sub_81290A0
- .4byte sub_81290EC
- .4byte sub_8129114
- .4byte sub_8129160
- .4byte sub_81291AC
- .4byte sub_81291F8
- .4byte contest_ai_get_contest_type
- .4byte sub_8129264
- .4byte sub_81292A4
- .4byte contest_ai_get_move_excitement
- .4byte sub_8129324
- .4byte sub_8129368
- .4byte sub_81293AC
- .4byte sub_81293F0
- .4byte contest_ai_get_move_effect
- .4byte sub_8129470
- .4byte sub_81294B0
- .4byte contest_ai_get_move_effect_type
- .4byte sub_8129538
- .4byte sub_8129578
- .4byte contest_ai_check_move_has_highest_appeal
- .4byte sub_8129638
- .4byte sub_812967C
- .4byte sub_81296FC
- .4byte sub_8129740
- .4byte sub_8129798
- .4byte sub_81297D8
- .4byte sub_8129818
- .4byte sub_8129858
- .4byte sub_8129898
- .4byte sub_81298F0
- .4byte sub_8129930
- .4byte sub_8129970
- .4byte sub_81299B0
- .4byte contest_ai_get_move_used_count
- .4byte sub_8129A44
- .4byte sub_8129A84
- .4byte sub_8129AC4
- .4byte sub_8129B04
- .4byte contest_ai_check_combo_starter
- .4byte sub_8129BB8
- .4byte sub_8129BFC
- .4byte contest_ai_check_combo_finisher
- .4byte sub_8129CB4
- .4byte sub_8129CF8
- .4byte contest_ai_check_would_finish_combo
- .4byte sub_8129D98
- .4byte sub_8129DDC
- .4byte contest_ai_get_condition
- .4byte sub_8129E64
- .4byte sub_8129EA4
- .4byte sub_8129EE4
- .4byte sub_8129F24
- .4byte contest_ai_get_used_combo_starter
- .4byte sub_8129FBC
- .4byte sub_8129FFC
- .4byte sub_812A03C
- .4byte sub_812A07C
- .4byte contest_ai_check_can_participate
- .4byte sub_812A100
- .4byte sub_812A144
- .4byte contest_ai_get_val_812A188
- .4byte sub_812A1C4
- .4byte sub_812A208
- .4byte sub_812A24C
- .4byte sub_812A294
- .4byte sub_812A2D8
- .4byte sub_812A31C
- .4byte sub_812A360
- .4byte sub_812A3A4
- .4byte sub_812A3E4
- .4byte sub_812A428
- .4byte sub_812A46C
- .4byte sub_812A4B0
- .4byte sub_812A4F4
- .4byte sub_812A538
- .4byte sub_812A578
- .4byte sub_812A5B8
- .4byte sub_812A5F8
- .4byte sub_812A638
- .4byte sub_812A674
- .4byte sub_812A6B4
- .4byte sub_812A6F4
- .4byte sub_812A734
- .4byte sub_812A774
- .4byte sub_812A7C4
- .4byte sub_812A804
- .4byte sub_812A844
- .4byte sub_812A86C
- .4byte sub_812A898
- .4byte sub_812A8CC
- .4byte sub_812A8FC
- .4byte sub_812A92C
- .4byte sub_812A978
- .4byte sub_812A9C4
- .4byte sub_812AA10
- .4byte sub_812AA5C
- .4byte sub_812AAAC
- .4byte sub_812AAFC
- .4byte sub_812AB4C
- .4byte sub_812AB9C
- .4byte sub_812ABE8
- .4byte sub_812AC34
- .4byte sub_812AC54
- .4byte sub_812AC84
- .4byte contest_ai_check_for_exciting_move
- .4byte sub_812AD50
- .4byte sub_812AD94
- .4byte sub_812ADD8
- .4byte sub_812AE44
- .4byte sub_812AE88
+sContestAICmdTable:: @ 8401E60
+ .4byte ContestAICmd_unk_00
+ .4byte ContestAICmd_get_turn
+ .4byte ContestAICmd_unk_02
+ .4byte ContestAICmd_unk_03
+ .4byte ContestAICmd_unk_04
+ .4byte ContestAICmd_unk_05
+ .4byte ContestAICmd_get_excitement
+ .4byte ContestAICmd_unk_07
+ .4byte ContestAICmd_unk_08
+ .4byte ContestAICmd_unk_09
+ .4byte ContestAICmd_unk_0A
+ .4byte ContestAICmd_get_user_order
+ .4byte ContestAICmd_unk_0C
+ .4byte ContestAICmd_unk_0D
+ .4byte ContestAICmd_unk_0E
+ .4byte ContestAICmd_unk_0F
+ .4byte ContestAICmd_get_user_condition_maybe
+ .4byte ContestAICmd_unk_11
+ .4byte ContestAICmd_unk_12
+ .4byte ContestAICmd_unk_13
+ .4byte ContestAICmd_unk_14
+ .4byte ContestAICmd_unk_15
+ .4byte ContestAICmd_unk_16
+ .4byte ContestAICmd_unk_17
+ .4byte ContestAICmd_unk_18
+ .4byte ContestAICmd_unk_19
+ .4byte ContestAICmd_unk_1A
+ .4byte ContestAICmd_unk_1B
+ .4byte ContestAICmd_unk_1C
+ .4byte ContestAICmd_unk_1D
+ .4byte ContestAICmd_unk_1E
+ .4byte ContestAICmd_get_contest_type
+ .4byte ContestAICmd_unk_20
+ .4byte ContestAICmd_unk_21
+ .4byte ContestAICmd_get_move_excitement
+ .4byte ContestAICmd_unk_23
+ .4byte ContestAICmd_unk_24
+ .4byte ContestAICmd_unk_25
+ .4byte ContestAICmd_unk_26
+ .4byte ContestAICmd_get_move_effect
+ .4byte ContestAICmd_unk_28
+ .4byte ContestAICmd_unk_29
+ .4byte ContestAICmd_get_move_effect_type
+ .4byte ContestAICmd_unk_2B
+ .4byte ContestAICmd_unk_2C
+ .4byte ContestAICmd_check_move_has_highest_appeal
+ .4byte ContestAICmd_unk_2E
+ .4byte ContestAICmd_unk_2F
+ .4byte ContestAICmd_unk_30
+ .4byte ContestAICmd_unk_31
+ .4byte ContestAICmd_unk_32
+ .4byte ContestAICmd_unk_33
+ .4byte ContestAICmd_unk_34
+ .4byte ContestAICmd_unk_35
+ .4byte ContestAICmd_unk_36
+ .4byte ContestAICmd_unk_37
+ .4byte ContestAICmd_unk_38
+ .4byte ContestAICmd_unk_39
+ .4byte ContestAICmd_unk_3A
+ .4byte ContestAICmd_get_move_used_count
+ .4byte ContestAICmd_unk_3C
+ .4byte ContestAICmd_unk_3D
+ .4byte ContestAICmd_unk_3E
+ .4byte ContestAICmd_unk_3F
+ .4byte ContestAICmd_check_combo_starter
+ .4byte ContestAICmd_unk_41
+ .4byte ContestAICmd_unk_42
+ .4byte ContestAICmd_check_combo_finisher
+ .4byte ContestAICmd_unk_44
+ .4byte ContestAICmd_unk_45
+ .4byte ContestAICmd_check_would_finish_combo
+ .4byte ContestAICmd_unk_47
+ .4byte ContestAICmd_unk_48
+ .4byte ContestAICmd_get_condition
+ .4byte ContestAICmd_unk_4A
+ .4byte ContestAICmd_unk_4B
+ .4byte ContestAICmd_unk_4C
+ .4byte ContestAICmd_unk_4D
+ .4byte ContestAICmd_get_used_combo_starter
+ .4byte ContestAICmd_unk_4F
+ .4byte ContestAICmd_unk_50
+ .4byte ContestAICmd_unk_51
+ .4byte ContestAICmd_unk_52
+ .4byte ContestAICmd_check_can_participate
+ .4byte ContestAICmd_unk_54
+ .4byte ContestAICmd_unk_55
+ .4byte ContestAICmd_get_val_812A188
+ .4byte ContestAICmd_unk_57
+ .4byte ContestAICmd_unk_58
+ .4byte ContestAICmd_unk_59
+ .4byte ContestAICmd_unk_5A
+ .4byte ContestAICmd_unk_5B
+ .4byte ContestAICmd_unk_5C
+ .4byte ContestAICmd_unk_5D
+ .4byte ContestAICmd_unk_5E
+ .4byte ContestAICmd_unk_5F
+ .4byte ContestAICmd_unk_60
+ .4byte ContestAICmd_unk_61
+ .4byte ContestAICmd_unk_62
+ .4byte ContestAICmd_unk_63
+ .4byte ContestAICmd_unk_64
+ .4byte ContestAICmd_unk_65
+ .4byte ContestAICmd_unk_66
+ .4byte ContestAICmd_unk_67
+ .4byte ContestAICmd_unk_68
+ .4byte ContestAICmd_unk_69
+ .4byte ContestAICmd_unk_6A
+ .4byte ContestAICmd_unk_6B
+ .4byte ContestAICmd_unk_6C
+ .4byte ContestAICmd_unk_6D
+ .4byte ContestAICmd_unk_6E
+ .4byte ContestAICmd_unk_6F
+ .4byte ContestAICmd_unk_70
+ .4byte ContestAICmd_unk_71
+ .4byte ContestAICmd_unk_72
+ .4byte ContestAICmd_unk_73
+ .4byte ContestAICmd_unk_74
+ .4byte ContestAICmd_unk_75
+ .4byte ContestAICmd_unk_76
+ .4byte ContestAICmd_unk_77
+ .4byte ContestAICmd_unk_78
+ .4byte ContestAICmd_unk_79
+ .4byte ContestAICmd_unk_7A
+ .4byte ContestAICmd_unk_7B
+ .4byte ContestAICmd_unk_7C
+ .4byte ContestAICmd_unk_7D
+ .4byte ContestAICmd_unk_7E
+ .4byte ContestAICmd_unk_7F
+ .4byte ContestAICmd_unk_80
+ .4byte ContestAICmd_unk_81
+ .4byte ContestAICmd_check_for_exciting_move
+ .4byte ContestAICmd_unk_83
+ .4byte ContestAICmd_unk_84
+ .4byte ContestAICmd_unk_85
+ .4byte ContestAICmd_unk_86
+ .4byte ContestAICmd_unk_87
diff --git a/data/contest_painting.s b/data/contest_painting.s
deleted file mode 100644
index 071661cb4..000000000
--- a/data/contest_painting.s
+++ /dev/null
@@ -1,102 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPictureFramePalettes:: @ 83EF198
- .incbin "graphics/picture_frame/bg0.gbapal"
- .incbin "graphics/picture_frame/bg1.gbapal"
- .incbin "graphics/picture_frame/bg2.gbapal"
- .incbin "graphics/picture_frame/bg3.gbapal"
- .incbin "graphics/picture_frame/bg4.gbapal"
- .incbin "graphics/picture_frame/bg5.gbapal"
- .space 10 * 32
-
- .align 2
-gPictureFrameTiles_0:: @ 83EF398
- .incbin "graphics/picture_frame/frame0.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_1:: @ 83F041C
- .incbin "graphics/picture_frame/frame1.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_2:: @ 83F104C
- .incbin "graphics/picture_frame/frame2.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_3:: @ 83F1B84
- .incbin "graphics/picture_frame/frame3.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_4:: @ 83F2B3C
- .incbin "graphics/picture_frame/frame4.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_5:: @ 83F3C6C
- .incbin "graphics/picture_frame/frame5.4bpp.rl"
-
- .align 2
-gPictureFrameTilemap_0:: @ 83F4260
- .incbin "graphics/picture_frame/frame0_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_1:: @ 83F476C
- .incbin "graphics/picture_frame/frame1_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_2:: @ 83F4C78
- .incbin "graphics/picture_frame/frame2_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_3:: @ 83F5184
- .incbin "graphics/picture_frame/frame3_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_4:: @ 83F5690
- .incbin "graphics/picture_frame/frame4_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_5:: @ 83F5B9C
- .incbin "graphics/picture_frame/frame5_map.bin.rl"
-
- .align 2
-gUnknown_083F60AC:: @ 83F60AC
- .4byte OtherText_Cool
- .4byte OtherText_Beauty2
- .4byte OtherText_Cute
- .4byte OtherText_Smart
- .4byte OtherText_Tough
-
- .align 2
-gUnknown_083F60C0:: @ 83F60C0
- .4byte OtherText_NonstopSuperCool, OtherText_Terminator6
- .4byte OtherText_GoodLookingPoke, OtherText_Terminator7
- .4byte OtherText_MarvelousGreat, OtherText_Terminator8
-
- .4byte OtherText_CenturyLastVenus, OtherText_Terminator9
- .4byte OtherText_Terminator10, OtherText_DazzlingSlime
- .4byte OtherText_PokeCenterIdol, OtherText_Terminator11
-
- .4byte OtherText_LovelyAndSweet, OtherText_Terminator12
- .4byte OtherText_ThePretty, OtherText_WinningPortrait
- .4byte OtherText_GiveUsWink, OtherText_Terminator13
-
- .4byte OtherText_SmartnessMaestro, OtherText_Terminator15
- .4byte OtherText_ChosenPokeAmong, OtherText_Terminator15
- .4byte OtherText_TheExcellent, OtherText_ItsMomentOfElegance
-
- .4byte OtherText_PowerfullyMuscular, OtherText_Terminator16
- .4byte OtherText_StrongErEst, OtherText_Terminator17
- .4byte OtherText_MightyTough, OtherText_Exclamation
-
- .align 2
-gOamData_83F6138:: @ 83F6138
- .2byte 0x3000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gUnknown_083F6140:: @ 83F6140
- .space 4
diff --git a/data/credits.s b/data/credits.s
index c6e0ad536..68931ef75 100644
--- a/data/credits.s
+++ b/data/credits.s
@@ -3,60 +3,108 @@
.section .rodata
-gUnknown_0840B7BC:: @ 840B7BC
- .incbin "graphics/credits/palette_1.gbapal"
-
-gUnknown_0840B7FC:: @ 840B7FC
- .incbin "graphics/credits/ampersand.4bpp"
-
gUnknown_0840B83C:: @ 840B83C
- .incbin "baserom.gba", 0x0040b83c, 0xf
+ .byte 0, 1, 0
+ .byte 0xFF, 1,0xFF
+ .byte 0xFF, 1,0xFF
+ .byte 0xFF, 1,0xFF
+ .byte 0xFF, 1,0xFF
gUnknown_0840B84B:: @ 840B84B
- .incbin "baserom.gba", 0x0040b84b, 0xf
+ .byte 1,0xFF, 1
+ .byte 1,0xFF, 1
+ .byte 1, 2, 1
+ .byte 1,0xFF, 1
+ .byte 1,0xFF, 1
gUnknown_0840B85A:: @ 840B85A
- .incbin "baserom.gba", 0x0040b85a, 0xf
+ .byte 1, 0, 0
+ .byte 1,0xFF,0xFF
+ .byte 1, 2, 2
+ .byte 1,0xFF,0xFF
+ .byte 1,0x80,0x80
gUnknown_0840B869:: @ 840B869
- .incbin "baserom.gba", 0x0040b869, 0xf
-
-gUnknown_0840B878::
- .incbin "baserom.gba", 0x0040B878, 0xf
+ .byte 1, 3, 1
+ .byte 1, 4, 1
+ .byte 1, 5, 1
+ .byte 1,0xC4, 1
+ .byte 1,0xC3, 1
+
+gUnknown_0840B878:: @ 840B878
+ .byte 1, 6, 7
+ .byte 1, 8, 9
+ .byte 1,0xFF, 1
+ .byte 1,0x88,0x89
+ .byte 1,0x86,0x87
.include "data/text/credits.inc"
gUnknown_0840CA00:: @ 840CA00
- .incbin "baserom.gba", 0x0040ca00, 0x8
+ .byte 104, 36
+ .byte 120, 36
+ .byte 136, 36
-Unknown_840CA08:
- .incbin "baserom.gba", 0x0040ca08, 0x14
-Unknown_840CA1C:
- .incbin "baserom.gba", 0x0040ca1c, 0x14
-Unknown_840CA30:
- .incbin "baserom.gba", 0x0040ca30, 0x10
-Unknown_840CA40:
- .incbin "baserom.gba", 0x0040ca40, 0x14
+ .align 2
+gSpriteAnim_840CA08:
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 64, 8
+ obj_image_anim_frame 128, 8
+ obj_image_anim_frame 192, 8
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA1C:
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 64, 4
+ obj_image_anim_frame 128, 4
+ obj_image_anim_frame 192, 4
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA30:
+ obj_image_anim_frame 256, 4
+ obj_image_anim_frame 320, 4
+ obj_image_anim_frame 384, 4
+ obj_image_anim_end
+
+gSpriteAnim_840CA40:
+ obj_image_anim_frame 384, 30
+ obj_image_anim_frame 320, 30
+ obj_image_anim_frame 256, 30
+ obj_image_anim_frame 256, 30
+ obj_image_anim_end
.align 2
-gUnknown_0840CA54:: @ 840CA54
- .4byte Unknown_840CA08
- .4byte Unknown_840CA1C
- .4byte Unknown_840CA30
- .4byte Unknown_840CA40
-
-Unknown_840CA64:
- .incbin "baserom.gba", 0x0040ca64, 0x14
-Unknown_840CA78:
- .incbin "baserom.gba", 0x0040ca78, 0x14
-Unknown_840CA8C:
- .incbin "baserom.gba", 0x0040ca8c, 0x8
+gSpriteAnimTable_0840CA54:: @ 840CA54
+ .4byte gSpriteAnim_840CA08
+ .4byte gSpriteAnim_840CA1C
+ .4byte gSpriteAnim_840CA30
+ .4byte gSpriteAnim_840CA40
+
+
+gSpriteAnim_840CA64:
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 64, 8
+ obj_image_anim_frame 128, 8
+ obj_image_anim_frame 192, 8
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA78:
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 64, 4
+ obj_image_anim_frame 128, 4
+ obj_image_anim_frame 192, 4
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA8C:
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
.align 2
-gUnknown_0840CA94:: @ 840CA94
- .4byte Unknown_840CA64
- .4byte Unknown_840CA78
- .4byte Unknown_840CA8C
+gSpriteAnimTable_0840CA94:: @ 840CA94
+ .4byte gSpriteAnim_840CA64
+ .4byte gSpriteAnim_840CA78
+ .4byte gSpriteAnim_840CA8C
+
gUnknown_0840CAA0:: @ 840CAA0
obj_tiles gHallOfFame, 6144, 1001
@@ -95,4 +143,4 @@ gSpriteAnimTable_840CAE0:: @ 840CAE0
.align 2
gSpriteTemplate_840CAEC:: @ 840CAEC
- spr_template 1001, 1001, gOamData_840CAC0, gSpriteAnimTable_840CAE0, NULL, gDummySpriteAffineAnimTable, sub_814580C
+ spr_template 1001, 1001, gOamData_840CAC0, gSpriteAnimTable_840CAE0, NULL, gDummySpriteAffineAnimTable, spritecb_814580C
diff --git a/data/data2.s b/data/data2.s
index e5802a44f..fd1fcc0a4 100644
--- a/data/data2.s
+++ b/data/data2.s
@@ -907,37 +907,37 @@ gUnknown_081F9674:: @ 81F9674
.align 2
gUnknown_081F9680:: @ 81F9680
- .4byte 0x030041D0
+ .4byte gUnknown_030041D0
.2byte 0x20
.byte 0x13
.byte 0x10
.4byte BG_VRAM + 0xE104
- .4byte 0x03004250
+ .4byte gUnknown_03004250
.2byte 0x40
.byte 0x13
.byte 0x10
.4byte BG_VRAM + 0xF104
- .4byte 0x030041D0
+ .4byte gUnknown_030041D0
.2byte 0x60
.byte 0x13
.byte 0x30
.4byte BG_VRAM + 0xE204
- .4byte 0x03004250
+ .4byte gUnknown_03004250
.2byte 0x80
.byte 0x13
.byte 0x30
.4byte BG_VRAM + 0xF204
- .4byte 0x030041D0
+ .4byte gUnknown_030041D0
.2byte 0x20
.byte 0x13
.byte 0x18
.4byte BG_VRAM + 0xE1C4
- .4byte 0x03004250
+ .4byte gUnknown_03004250
.2byte 0x40
.byte 0x13
.byte 0x18
diff --git a/data/decoration.s b/data/decoration.s
index 0ca44c847..d37e41823 100644
--- a/data/decoration.s
+++ b/data/decoration.s
@@ -169,7 +169,7 @@ gSpriteAnimTable_83EC930:: @ 83EC930
.align 2
gSpriteImageTable_83EC934: @ 83EC934
- obj_frame_tiles 0x02038984, 0x800
+ obj_frame_tiles gUnknown_02038900+0x84, 0x800
.align 2
gSpriteTemplate_83EC93C:: @ 83EC93C
@@ -177,7 +177,7 @@ gSpriteTemplate_83EC93C:: @ 83EC93C
.align 2
gUnknown_083EC954:: @ 83EC954
- obj_pal 0x02039184, 3000
+ obj_pal gUnknown_02038900+0x884, 3000
.align 2
gUnknown_083EC95C:: @ 83EC95C
diff --git a/data/diploma.s b/data/diploma.s
index c4edb83d8..508e86c63 100644
--- a/data/diploma.s
+++ b/data/diploma.s
@@ -3,15 +3,3 @@
.section .rodata
- .align 2
-gDiplomaPalettes:: @ 840CB0C
- .incbin "graphics/misc/diploma_national.gbapal"
- .incbin "graphics/misc/diploma_hoenn.gbapal"
-
- .align 2
-gDiplomaTilemap:: @ 840CB4C
- .incbin "graphics/misc/diploma_map.bin.lz"
-
- .align 2
-gDiplomaTiles:: @ 840D288
- .incbin "graphics/misc/diploma.4bpp.lz"
diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s
index 629d41df9..d22bd8dde 100644
--- a/data/field_effect_helpers.s
+++ b/data/field_effect_helpers.s
@@ -7,14 +7,16 @@
.align 2
.string "タマゴ$"
+ .align 1
gUnknown_08401E2C:: @ 8401E2C
- .incbin "baserom.gba", 0x00401e2c, 0x6
+ .2byte 0xC, 0x1C, 0x2C
gUnknown_08401E32:: @ 8401E32
- .incbin "baserom.gba", 0x00401e32, 0x4
+ .byte 0, 1, 2, 3
+ .align 1
gUnknown_08401E36:: @ 8401E36
- .incbin "baserom.gba", 0x00401e36, 0xa
+ .2byte 4, 4, 4, 16
.align 2
gUnknown_08401E40:: @ 8401E40
@@ -28,7 +30,8 @@ gUnknown_08401E48:: @ 8401E48
.4byte sub_8127E30
gUnknown_08401E54:: @ 8401E54
- .incbin "baserom.gba", 0x00401e54, 0x6
+ .byte 0, 0, 1, 2, 3
+ .align 1
gUnknown_08401E5A:: @ 8401E5A
- .incbin "baserom.gba", 0x00401e5a, 0x6
+ .2byte 3, 7
diff --git a/data/field_map_obj.s b/data/field_map_obj.s
index 9ff432961..ef39f3df6 100644
--- a/data/field_map_obj.s
+++ b/data/field_map_obj.s
@@ -3,19 +3,6 @@
.section .rodata
-gUnknown_0830FD14:: @ 830FD14
- .byte 1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0
-
- .align 2
-gSpriteTemplate_830FD24:: @ 830FD24
- spr_template 0, 0xFFFF, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject
-
- .align 2
-gUnknown_0830FD3C:: @ 830FD3C
- .4byte CameraObject_0
- .4byte CameraObject_1
- .4byte CameraObject_2
-
@ 830FD48
.include "data/graphics/field_objects/map_object_graphics.inc"
diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s
index 1491a1ad4..7935c693e 100644
--- a/data/field_player_avatar.s
+++ b/data/field_player_avatar.s
@@ -2,183 +2,3 @@
.include "constants/constants.inc"
.section .rodata
-
- .align 2
-gUnknown_0830FB58:: @ 830FB58
- .4byte MetatileBehavior_IsTrickHouseSlipperyFloor
- .4byte MetatileBehavior_IsIce_2
- .4byte MetatileBehavior_IsWalkSouth
- .4byte MetatileBehavior_IsWalkNorth
- .4byte MetatileBehavior_IsWalkWest
- .4byte MetatileBehavior_IsWalkEast
- .4byte MetatileBehavior_IsSouthwardCurrent
- .4byte MetatileBehavior_IsNorthwardCurrent
- .4byte MetatileBehavior_IsWestwardCurrent
- .4byte MetatileBehavior_IsEastwardCurrent
- .4byte MetatileBehavior_IsSlideSouth
- .4byte MetatileBehavior_IsSlideNorth
- .4byte MetatileBehavior_IsSlideWest
- .4byte MetatileBehavior_IsSlideEast
- .4byte MetatileBehavior_IsWaterfall
- .4byte MetatileBehavior_0xBB
- .4byte MetatileBehavior_0xBC
- .4byte MetatileBehavior_IsMuddySlope
-
- .align 2
-gUnknown_0830FBA0:: @ 830FBA0
- .4byte ForcedMovement_None
- .4byte ForcedMovement_Slip
- .4byte ForcedMovement_Slip
- .4byte sub_8058AAC
- .4byte sub_8058AC4
- .4byte sub_8058ADC
- .4byte sub_8058AF4
- .4byte sub_8058B0C
- .4byte sub_8058B24
- .4byte sub_8058B3C
- .4byte sub_8058B54
- .4byte ForcedMovement_SlideSouth
- .4byte ForcedMovement_SlideNorth
- .4byte ForcedMovement_SlideWest
- .4byte ForcedMovement_SlideEast
- .4byte sub_8058B0C
- .4byte sub_8058C04
- .4byte sub_8058C10
- .4byte ForcedMovement_MuddySlope
-
- .align 2
-gUnknown_0830FBEC:: @ 830FBEC
- .4byte PlayerNotOnBikeNotMoving
- .4byte PlayerNotOnBikeTurningInPlace
- .4byte sub_8058D0C
-
- .align 2
-gUnknown_0830FBF8:: @ 830FBF8
- .4byte MetatileBehavior_IsBumpySlope
- .4byte MetatileBehavior_IsIsolatedVerticalRail
- .4byte MetatileBehavior_IsIsolatedHorizontalRail
- .4byte MetatileBehavior_IsVerticalRail
- .4byte MetatileBehavior_IsHorizontalRail
-
-gUnknown_0830FC0C:: @ 830FC0C
- .byte 0x9, 0xA, 0xB, 0xC, 0xD
-
- .align 2
-gUnknown_0830FC14:: @ 830FC14
- .4byte PlayerAvatarTransition_Normal
- .4byte PlayerAvatarTransition_MachBike
- .4byte PlayerAvatarTransition_AcroBike
- .4byte PlayerAvatarTransition_Surfing
- .4byte PlayerAvatarTransition_Underwater
- .4byte sub_80591F4
- .4byte nullsub_49
- .4byte nullsub_49
-
- .align 2
-gUnknown_0830FC34:: @ 830FC34
- .4byte MetatileBehavior_IsSouthArrowWarp
- .4byte MetatileBehavior_IsNorthArrowWarp
- .4byte MetatileBehavior_IsWestArrowWarp
- .4byte MetatileBehavior_IsEastArrowWarp
-
-gUnknown_0830FC44:: @ 830FC44
- .byte MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, MAP_OBJ_GFX_RIVAL_MAY_NORMAL
- .byte MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE
- .byte MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE
- .byte MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, MAP_OBJ_GFX_RIVAL_MAY_SURFING
- .byte MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER
- .byte MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE
- .byte MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING
- .byte MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING
-
-gUnknown_0830FC54:: @ 830FC54
- .byte MAP_OBJ_GFX_BRENDAN_NORMAL, MAP_OBJ_GFX_MAY_NORMAL
- .byte MAP_OBJ_GFX_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_MAY_MACH_BIKE
- .byte MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_MAY_ACRO_BIKE
- .byte MAP_OBJ_GFX_BRENDAN_SURFING, MAP_OBJ_GFX_MAY_SURFING
- .byte MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER
- .byte MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_MAY_FIELD_MOVE
- .byte MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING
- .byte MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING
-
-gUnknown_0830FC64:: @ 830FC64
- @ male
- .byte MAP_OBJ_GFX_BRENDAN_NORMAL, 1
- .byte MAP_OBJ_GFX_BRENDAN_MACH_BIKE, 2
- .byte MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, 4
- .byte MAP_OBJ_GFX_BRENDAN_SURFING, 8
- .byte MAP_OBJ_GFX_BRENDAN_UNDERWATER, 16
- @ female
- .byte MAP_OBJ_GFX_MAY_NORMAL, 1
- .byte MAP_OBJ_GFX_MAY_MACH_BIKE, 2
- .byte MAP_OBJ_GFX_MAY_ACRO_BIKE, 4
- .byte MAP_OBJ_GFX_MAY_SURFING, 8
- .byte MAP_OBJ_GFX_MAY_UNDERWATER, 16
-
- .align 2
-gUnknown_0830FC78:: @ 830FC78
- .4byte MetatileBehavior_IsSouthArrowWarp
- .4byte MetatileBehavior_IsNorthArrowWarp
- .4byte MetatileBehavior_IsWestArrowWarp
- .4byte MetatileBehavior_IsEastArrowWarp
-
- .align 2
-gUnknown_0830FC88:: @ 830FC88
- .4byte sub_8059E84
- .4byte sub_8059EA4
- .4byte sub_8059F40
-
- .align 2
-gUnknown_0830FC94:: @ 830FC94
- .4byte sub_805A000
-
- .align 2
-gUnknown_0830FC98:: @ 830FC98
- .4byte sub_805A0D8
- .4byte sub_805A100
- .4byte sub_805A178
- .4byte sub_805A1B8
-
-gUnknown_0830FCA8:: @ 830FCA8
- .byte DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH
-
-gUnknown_0830FCAC:: @ 830FCAC
- .byte 0x10, 0x10, 0x11, 0x12, 0x13
-
- .align 2
-gUnknown_0830FCB4:: @ 830FCB4
- .4byte Fishing1
- .4byte Fishing2
- .4byte Fishing3
- .4byte Fishing4
- .4byte Fishing5
- .4byte Fishing6
- .4byte Fishing7
- .4byte Fishing8
- .4byte Fishing9
- .4byte Fishing10
- .4byte Fishing11
- .4byte Fishing12
- .4byte Fishing13
- .4byte Fishing14
- .4byte Fishing15
- .4byte Fishing16
-
- .align 1
-gUnknown_0830FCF4:: @ 830FCF4
- .2byte 1, 1, 1
-
- .align 1
-gUnknown_0830FCFA:: @ 830FCFA
- .2byte 1, 3, 6
-
-gUnknown_0830FD00:: @ 830FD00
- .string "·$"
-
- .align 1
-gUnknown_0830FD02:: @ 830FD02
- .2byte 36, 33, 30
-
- .align 1
-gUnknown_0830FD08:: @ 830FD08
- .2byte 0, 0, 40, 10, 70, 30
diff --git a/data/field_tasks.s b/data/field_tasks.s
index d7de1fe16..122e089e6 100644
--- a/data/field_tasks.s
+++ b/data/field_tasks.s
@@ -15,16 +15,51 @@ gUnknown_08376364:: @ 8376364
.4byte PerStepCallback_806A07C
gUnknown_08376384:: @ 8376384
- .incbin "baserom.gba", 0x00376384, 0x20
+ .byte 0, 0,0x59, 2, 0, 1,0x61, 2
+ .byte 0, -1,0x59, 2, 0, 0,0x61, 2
+ .byte 0, 0,0x52, 2, 1, 0,0x53, 2
+ .byte -1, 0,0x52, 2, 0, 0,0x53, 2
gUnknown_083763A4:: @ 83763A4
- .incbin "baserom.gba", 0x003763a4, 0x20
+ .byte 0, 0,0x5A, 2, 0, 1,0x62, 2
+ .byte 0, -1,0x5A, 2, 0, 0,0x62, 2
+ .byte 0, 0,0x54, 2, 1, 0,0x55, 2
+ .byte -1, 0,0x54, 2, 0, 0,0x55, 2
gUnknown_083763C4:: @ 83763C4
- .incbin "baserom.gba", 0x003763c4, 0x20
+ .byte 0, 0,0x58, 2, 0, 1,0x60, 2
+ .byte 0, -1,0x58, 2, 0, 0,0x60, 2
+ .byte 0, 0,0x50, 2, 1, 0,0x51, 2
+ .byte -1, 0,0x50, 2, 0, 0,0x51, 2
+ .align 1
gUnknown_083763E4:: @ 83763E4
- .incbin "baserom.gba", 0x003763e4, 0x34
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0x4001
+ .2byte 0x4002
+ .2byte 0x4003
+ .2byte 0x4004
+ .2byte 0
+ .2byte 0
+ .2byte 0x4005
+ .2byte 0x4006
+ .2byte 0x4007
+ .2byte 0
+ .2byte 0
+ .2byte 0x4008
+ .2byte 0x4009
+ .2byte 0x400A
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0
+ .2byte 0
.align 1
gUnknown_08376418:: @ 8376418
diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s
index faf9c4fef..0795e7389 100644
--- a/data/hall_of_fame.s
+++ b/data/hall_of_fame.s
@@ -12,20 +12,29 @@ gUnknown_0840B524:: @ 840B524
obj_pal gContestConfetti_Pal, 1001
.space 8
+ .align 2
gUnknown_0840B534:: @ 840B534
- .incbin "baserom.gba", 0x0040b534, 0x6
-
-gUnknown_0840B53A:: @ 840B53A
- .incbin "baserom.gba", 0x0040b53a, 0x2a
+ .2byte 120,210,120, 40
+ .2byte 326,220, 56, 40
+ .2byte -86,220,184, 40
+ .2byte 120,-62,120, 88
+ .2byte -25,-62,200, 88
+ .2byte 265,-62, 40, 88
+ .align 2
gUnknown_0840B564:: @ 840B564
- .incbin "baserom.gba", 0x0040b564, 0x6
-
-gUnknown_0840B56A:: @ 840B56A
- .incbin "baserom.gba", 0x0040b56a, 0x12
+ .2byte 120,214,120, 64
+ .2byte 281,214, 56, 64
+ .2byte -41,214,184, 64
+ .align 2
gUnknown_0840B57C:: @ 840B57C
- .incbin "baserom.gba", 0x0040b57c, 0x1c
+ .2byte 1002
+ .2byte 1002
+ .space 0x10
+
+@ unused data?
+ .byte 2, 1, 3, 6, 4, 5
.align 2
gOamData_840B598:: @ 840B598
diff --git a/data/heal_location.s b/data/heal_location.s
deleted file mode 100644
index 101bec24f..000000000
--- a/data/heal_location.s
+++ /dev/null
@@ -1,29 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gHealLocations:: @ 83E5A20
- heal_location LittlerootTown_BrendansHouse_2F, 4, 2
- heal_location LittlerootTown_MaysHouse_2F, 4, 2
- heal_location PetalburgCity, 20, 17
- heal_location SlateportCity, 19, 20
- heal_location MauvilleCity, 22, 6
- heal_location RustboroCity, 16, 39
- heal_location FortreeCity, 5, 7
- heal_location LilycoveCity, 24, 15
- heal_location MossdeepCity, 28, 17
- heal_location SootopolisCity, 43, 32
- heal_location EverGrandeCity, 27, 49
- heal_location LittlerootTown, 5, 9
- heal_location LittlerootTown, 14, 9
- heal_location OldaleTown, 6, 17
- heal_location DewfordTown, 2, 11
- heal_location LavaridgeTown, 9, 7
- heal_location FallarborTown, 14, 8
- heal_location VerdanturfTown, 16, 4
- heal_location PacifidlogTown, 8, 16
- heal_location EverGrandeCity, 18, 6
- heal_location BattleTower_Outside, 14, 9
- heal_location SouthernIsland_Exterior, 15, 20
diff --git a/data/intro.s b/data/intro.s
deleted file mode 100644
index 11cf7d2e5..000000000
--- a/data/intro.s
+++ /dev/null
@@ -1,514 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-Palette_406340:: @ 8406340
- .incbin "baserom.gba", 0x406340, 0x20
-
- .align 2
-Palette_406360:: @ 8406360
- .incbin "baserom.gba", 0x406360, 0x20
-
- .align 2
-gIntroTiles::
- .incbin "graphics/intro/intro.4bpp.lz"
-
- .align 2
-gIntro1BGPals:: @ 8406974
- .incbin "graphics/intro/intro1_bgpal1.gbapal"
- .incbin "graphics/intro/intro1_bgpal2.gbapal"
- .incbin "graphics/intro/intro1_bgpal3.gbapal"
- .incbin "graphics/intro/intro1_bgpal4.gbapal"
- .incbin "graphics/intro/intro1_bgpal5.gbapal"
- .incbin "graphics/intro/intro1_bgpal6.gbapal"
- .incbin "graphics/intro/intro1_bgpal7.gbapal"
- .incbin "graphics/intro/intro1_bgpal8.gbapal"
- .incbin "graphics/intro/intro1_bgpal9.gbapal"
- .incbin "graphics/intro/intro1_bgpal10.gbapal"
- .incbin "graphics/intro/intro1_bgpal11.gbapal"
- .incbin "graphics/intro/intro1_bgpal12.gbapal"
- .incbin "graphics/intro/intro1_bgpal13.gbapal"
- .incbin "graphics/intro/intro1_bgpal14.gbapal"
- .incbin "graphics/intro/intro1_bgpal15.gbapal"
- .incbin "graphics/intro/intro1_bgpal16.gbapal"
-
- .align 2
-gIntro1BG0_Tilemap:: @ 8406B74
- .incbin "graphics/intro/intro1_bg0_map.bin.lz"
-
- .align 2
-gIntro1BG1_Tilemap:: @ 8406F28
- .incbin "graphics/intro/intro1_bg1_map.bin.lz"
-
- .align 2
-gIntro1BG2_Tilemap:: @ 840725C
- .incbin "graphics/intro/intro1_bg2_map.bin.lz"
-
- .align 2
-gIntro1BG3_Tilemap:: @ 840754C
- .incbin "graphics/intro/intro1_bg3_map.bin.lz"
-
- .align 2
-gIntro1BGLeavesGfx:: @ 8407764
- .incbin "graphics/intro/introgfx.4bpp.lz"
-
- .align 2
-gIntro3PokeballPal:: @ 84098D4
- .incbin "graphics/intro/intro3_pokeball.gbapal"
-
- .align 2
-gIntro3Pokeball_Tilemap:: @ 8409AD4
- .incbin "graphics/intro/intro3_pokeball_map.bin.lz"
-
- .align 2
-gIntro3Pokeball_Gfx:: @ 8409C04
- .incbin "graphics/intro/intro3_pokeball.8bpp.lz"
-
- .align 2
-gIntro3Streaks_Pal:: @ 840A758
- .incbin "graphics/intro/intro3_streaks.gbapal"
-
- .align 2
-gIntro3Streaks_Gfx:: @ 840A778
- .incbin "graphics/intro/intro3_streaks.4bpp.lz"
-
- .align 2
-gIntro3Streaks_Tilemap:: @ 840A7E4
- .incbin "graphics/intro/intro3_streaks_map.bin.lz"
-
- .align 2
-gIntro3Misc1Palette::
- .incbin "graphics/intro/intro3_misc1.gbapal"
-
- .align 2
-gIntro3Misc2Palette::
- .incbin "graphics/intro/intro3_misc2.gbapal"
-
- .align 2
-gIntro3MiscTiles::
- .incbin "graphics/intro/intro3_misc.4bpp.lz"
-
- .align 2
-gIntro1EonPalette::
- .incbin "graphics/intro/intro1_eon.gbapal"
-
- .align 2
-gIntro1EonTiles::
- .incbin "graphics/intro/intro1_eon.4bpp.lz"
-
- .align 2
-gOamData_840ADE8:: @ 840ADE8
- .2byte 0x00A0
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840ADF0:: @ 840ADF0
- obj_image_anim_frame 16, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840ADF8:: @ 840ADF8
- obj_image_anim_frame 24, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AE00:: @ 840AE00
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AE08:: @ 840AE08
- obj_image_anim_frame 48, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840AE10:: @ 840AE10
- .4byte gSpriteAnim_840ADF0
- .4byte gSpriteAnim_840ADF8
- .4byte gSpriteAnim_840AE00
- .4byte gSpriteAnim_840AE08
-
- .align 2
-gSpriteTemplate_840AE20:: @ 840AE20
- spr_template 2000, 2000, gOamData_840ADE8, gSpriteAnimTable_840AE10, NULL, gDummySpriteAffineAnimTable, sub_813D208
-
- .align 2
-Unknown_40AE38: @ 840AE38
- .incbin "baserom.gba", 0x40ae38, 0x14
-
- .align 2
-Unknown_40AE4C: @ 840AE4C
- .incbin "baserom.gba", 0x40ae4c, 0x14
-
- .align 2
-Unknown_40AE60: @ 840AE60
- .incbin "baserom.gba", 0x40ae60, 0x10
-
- .align 2
-Unknown_40AE70: @ 840AE70
- .incbin "baserom.gba", 0x40ae70, 0x10
-
- .align 2
-gUnknown_0840AE80:: @ 840AE80
- .4byte Unknown_40AE38
- .4byte Unknown_40AE4C
- .4byte Unknown_40AE60
- .4byte Unknown_40AE70
-
- .align 2
-gOamData_840AE90:: @ 840AE90
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gOamData_840AE98:: @ 840AE98
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_840AEA0:: @ 840AEA0
- .2byte 0x80A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840AEA8:: @ 840AEA8
- obj_image_anim_frame 80, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEB0:: @ 840AEB0
- obj_image_anim_frame 84, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEB8:: @ 840AEB8
- obj_image_anim_frame 88, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEC0:: @ 840AEC0
- obj_image_anim_frame 92, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEC8:: @ 840AEC8
- obj_image_anim_frame 96, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AED0:: @ 840AED0
- obj_image_anim_frame 100, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AED8:: @ 840AED8
- obj_image_anim_frame 104, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEE0:: @ 840AEE0
- obj_image_anim_frame 112, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEE8:: @ 840AEE8
- obj_image_anim_frame 113, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEF0:: @ 840AEF0
- obj_image_anim_frame 114, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEF8:: @ 840AEF8
- obj_image_anim_frame 115, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AF00:: @ 840AF00
- obj_image_anim_frame 116, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AF08:: @ 840AF08
- obj_image_anim_frame 117, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AF10:: @ 840AF10
- obj_image_anim_frame 128, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840AF18:: @ 840AF18
- .4byte gSpriteAnim_840AEA8
- .4byte gSpriteAnim_840AEB0
- .4byte gSpriteAnim_840AEB8
- .4byte gSpriteAnim_840AEC0
- .4byte gSpriteAnim_840AEC8
- .4byte gSpriteAnim_840AED0
- .4byte gSpriteAnim_840AED8
-
- .align 2
-gSpriteAnimTable_840AF34:: @ 840AF34
- .4byte gSpriteAnim_840AEE0
- .4byte gSpriteAnim_840AEE8
- .4byte gSpriteAnim_840AEF0
- .4byte gSpriteAnim_840AEF8
- .4byte gSpriteAnim_840AF00
- .4byte gSpriteAnim_840AF08
-
- .align 2
-gSpriteAnimTable_840AF4C:: @ 840AF4C
- .4byte gSpriteAnim_840AF10
-
-gUnknown_0840AF50:: @ 840AF50
- .incbin "baserom.gba", 0x0040af50, 0x24
-
-gUnknown_0840AF74:: @ 840AF74
- .incbin "baserom.gba", 0x0040af74, 0x20
-
- .align 2
-gSpriteTemplate_840AF94:: @ 840AF94
- spr_template 2000, 2001, gOamData_840AE90, gSpriteAnimTable_840AF18, NULL, gDummySpriteAffineAnimTable, sub_813D908
-
- .align 2
-gSpriteTemplate_840AFAC:: @ 840AFAC
- spr_template 2000, 2001, gOamData_840AE98, gSpriteAnimTable_840AF34, NULL, gDummySpriteAffineAnimTable, sub_813D908
-
- .align 2
-gSpriteTemplate_840AFC4:: @ 840AFC4
- spr_template 2000, 2001, gOamData_840AEA0, gSpriteAnimTable_840AF4C, NULL, gDummySpriteAffineAnimTable, sub_813D908
-
- .align 2
-gOamData_840AFDC:: @ 840AFDC
- .2byte 0x40A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840AFE4:: @ 840AFE4
- obj_image_anim_frame 0, 10
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_840AFEC:: @ 840AFEC
- .4byte gSpriteAnim_840AFE4
-
- .align 2
-gSpriteTemplate_840AFF0:: @ 840AFF0
- spr_template 2002, 2002, gOamData_840AFDC, gSpriteAnimTable_840AFEC, NULL, gDummySpriteAffineAnimTable, sub_813DA64
-
- .align 2
-gUnknown_0840B008:: @ 840B008
- obj_tiles gIntroTiles, 0x1400, 2000
- .space 8
-
- .align 2
-gUnknown_0840B018:: @ 840B018
- obj_tiles gIntro1EonTiles, 0x400, 2002
- .space 8
-
- .align 2
-gUnknown_0840B028:: @ 840B028
- obj_pal Palette_406340, 2000
- obj_pal Palette_406360, 2001
- obj_pal gIntro1EonPalette, 2002
- .space 8
-
-gUnknown_0840B048:: @ 840B048
- .incbin "baserom.gba", 0x40b048, 0x8
-
-gUnknown_0840B050:: @ 840B050
- .incbin "baserom.gba", 0x40b050, 0x8
-
-gUnknown_0840B058:: @ 840B058
- .incbin "baserom.gba", 0x40b058, 0xc
-
- .align 2
-gUnknown_0840B064:: @ 840B064
- .4byte gUnknown_0840B048
- .4byte gUnknown_0840B050
- .4byte gUnknown_0840B058
-
- .align 2
-gOamData_840B070:: @ 840B070
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B078:: @ 840B078
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B080:: @ 840B080
- .4byte gSpriteAnim_840B078
-
- .align 2
-gSpriteTemplate_840B084:: @ 840B084
- spr_template 2002, 2002, gOamData_840B070, gSpriteAnimTable_840B080, NULL, gDummySpriteAffineAnimTable, sub_813E30C
-
- .align 2
-gOamData_840B09C:: @ 840B09C
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B0A4:: @ 840B0A4
- obj_image_anim_frame 1, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B0AC:: @ 840B0AC
- .4byte gSpriteAnim_840B0A4
-
- .align 2
-gSpriteTemplate_840B0B0:: @ 840B0B0
- spr_template 2003, 2003, gOamData_840B09C, gSpriteAnimTable_840B0AC, NULL, gDummySpriteAffineAnimTable, sub_813E4B8
-
- .align 2
-gOamData_840B0C8:: @ 840B0C8
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B0D0:: @ 840B0D0
- obj_image_anim_frame 14, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B0D8:: @ 840B0D8
- .4byte gSpriteAnim_840B0D0
-
- .align 2
-gSpriteTemplate_840B0DC:: @ 840B0DC
- spr_template 2003, 2004, gOamData_840B0C8, gSpriteAnimTable_840B0D8, NULL, gDummySpriteAffineAnimTable, sub_813E5E0
-
- .align 2
-gSpriteTemplate_840B0F4:: @ 840B0F4
- spr_template 2003, 2004, gOamData_840B0C8, gSpriteAnimTable_840B0D8, NULL, gDummySpriteAffineAnimTable, sub_813E6C0
-
- .align 2
-gOamData_840B10C:: @ 840B10C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B114:: @ 840B114
- obj_image_anim_frame 6, 8
- obj_image_anim_frame 6, 8, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_840B120:: @ 840B120
- .4byte gSpriteAnim_840B114
-
- .align 2
-gSpriteTemplate_840B124:: @ 840B124
- spr_template 2003, 2004, gOamData_840B10C, gSpriteAnimTable_840B120, NULL, gDummySpriteAffineAnimTable, sub_813E804
-
- .align 2
-gOamData_840B13C:: @ 840B13C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B144:: @ 840B144
- obj_image_anim_frame 10, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B14C:: @ 840B14C
- .4byte gSpriteAnim_840B144
-
- .align 2
-gSpriteTemplate_840B150:: @ 840B150
- spr_template 2003, 2004, gOamData_840B13C, gSpriteAnimTable_840B14C, NULL, gDummySpriteAffineAnimTable, sub_813E980
-
-gUnknown_0840B168:: @ 840B168
- .incbin "baserom.gba", 0x0040b168, 0x8
-
- .align 2
-gSpriteTemplate_840B170:: @ 840B170
- spr_template 2003, 2004, gOamData_840B13C, gSpriteAnimTable_840B14C, NULL, gDummySpriteAffineAnimTable, sub_813EA60
-
-gUnknown_0840B188:: @ 840B188
- .incbin "baserom.gba", 0x0040b188, 0x14
-
- .align 2
-gOamData_840B19C:: @ 840B19C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B1A4:: @ 840B1A4
- obj_image_anim_frame 2, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B1AC:: @ 840B1AC
- .4byte gSpriteAnim_840B1A4
-
- .align 2
-gSpriteTemplate_840B1B0:: @ 840B1B0
- spr_template 2003, 2004, gOamData_840B19C, gSpriteAnimTable_840B1AC, NULL, gDummySpriteAffineAnimTable, sub_813EBBC
-
- .align 2
-gSpriteTemplate_840B1C8:: @ 840B1C8
- spr_template 2003, 2004, gOamData_840B19C, gSpriteAnimTable_840B1AC, NULL, gDummySpriteAffineAnimTable, sub_813EC90
-
- .align 2
-gOamData_840B1E0:: @ 840B1E0
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B1E8:: @ 840B1E8
- obj_image_anim_frame 16, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B1F0:: @ 840B1F0
- .4byte gSpriteAnim_840B1E8
-
- .align 2
-gSpriteTemplate_840B1F4:: @ 840B1F4
- spr_template 2003, 2003, gOamData_840B1E0, gSpriteAnimTable_840B1F0, NULL, gDummySpriteAffineAnimTable, sub_813EDFC
-
- .align 2
-gIntro3PokeballGfx_Table:: @ 840B20C
- obj_tiles gInterfaceGfx_PokeBall, 0x100, 2002
- .space 8
-
- .align 2
-gIntro3MiscGfx_Table:: @ 840B21C
- obj_tiles gIntro3MiscTiles, 0xa00, 2003
- .space 8
-
- .align 2
-gInterfacePokeballPal_Table:: @ 840B22C
- obj_pal gInterfacePal_PokeBall, 2002
- .space 8
-
- .align 2
-gIntro3MiscPal_Table:: @ 840B23C
- obj_pal gIntro3Misc1Palette, 2003
- obj_pal gIntro3Misc2Palette, 2004
- .space 8
-
- .incbin "baserom.gba", 0x0040b254, 0x4
diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s
index 6320bc332..82931f6ee 100644
--- a/data/intro_credits_graphics.s
+++ b/data/intro_credits_graphics.s
@@ -7,10 +7,10 @@ gUnknown_084121FC:: @ 84121FC
.incbin "graphics/intro/intro2_grass.gbapal"
gUnknown_0841221C:: @ 841221C
- .incbin "baserom.gba", 0x0041221c, 0x20
+ .incbin "graphics/intro/intro2_grass_afternoon.gbapal"
gUnknown_0841223C:: @ 841223C
- .incbin "baserom.gba", 0x0041223c, 0x20
+ .incbin "graphics/intro/intro2_grass_night.gbapal"
.align 2
gUnknown_0841225C:: @ 841225C
@@ -21,10 +21,10 @@ gUnknown_084126DC:: @ 84126DC
.incbin "graphics/intro/intro2_grass_map.bin.lz"
gUnknown_08412818:: @ 8412818
- .incbin "baserom.gba", 0x00412818, 0x60
+ .incbin "graphics/intro/8412818.gbapal"
gUnknown_08412878:: @ 8412878
- .incbin "baserom.gba", 0x00412878, 0x60
+ .incbin "graphics/intro/8412878.gbapal"
.align 2
gUnknown_084128D8:: @ 84128D8
@@ -38,16 +38,16 @@ gUnknown_08413184:: @ 8413184
.incbin "graphics/intro/intro2_bgclouds.gbapal"
gUnknown_084131A4:: @ 84131A4
- .incbin "baserom.gba", 0x004131a4, 0x20
+ .incbin "graphics/intro/intro2_bgclouds_afternoon.gbapal"
gUnknown_084131C4:: @ 84131C4
.incbin "graphics/intro/intro2_bgclouds2.4bpp.lz"
gUnknown_08413300:: @ 8413300
- .incbin "baserom.gba", 0x00413300, 0x20
+ .incbin "graphics/intro/intro2_bgtrees2.gbapal"
gUnknown_08413320:: @ 8413320
- .incbin "baserom.gba", 0x00413320, 0x20
+ .incbin "graphics/intro/intro2_bgtrees2_afternoon.gbapal"
.align 2
gUnknown_08413340:: @ 8413340
@@ -66,7 +66,7 @@ gIntro2TreeTiles:: @ 8413CEC
.incbin "graphics/intro/intro2_bgtreessmall.4bpp.lz"
gUnknown_08413E38:: @ 8413E38
- .incbin "baserom.gba", 0x00413e38, 0x40 @ two palettes?
+ .incbin "graphics/intro/8413E38.gbapal"
.align 2
gUnknown_08413E78:: @ 8413E78
@@ -160,8 +160,36 @@ gSpriteAnimTable_8416B84:: @ 8416B84
.4byte gSpriteAnim_8416B74
.4byte gSpriteAnim_8416B7C
+@ array of 8-byte structs
+ .align 2
gUnknown_08416B94:: @ 8416B94
- .incbin "baserom.gba", 0x00416b94, 0x48
+ .byte -128, 72, 32, 100
+ .2byte 0xC00
+ .space 2
+ .byte -128, -98, 32, 100
+ .2byte 0xC00
+ .space 2
+ .byte 65, -64, 40, 101
+ .2byte 0x800
+ .space 2
+ .byte 65, 56, 40, 101
+ .2byte 0x800
+ .space 2
+ .byte 18, 100, 44, 102
+ .2byte 0x400
+ .space 2
+ .byte 18, -104, 44, 102
+ .2byte 0x400
+ .space 2
+ .byte 19, 8, 46, 103
+ .2byte 0x100
+ .space 2
+ .byte 19, 56, 46, 103
+ .2byte 0x100
+ .space 2
+ .byte 19, -16, 46, 103
+ .2byte 0x100
+ .space 2
.align 2
gUnknown_08416BDC:: @ 8416BDC
@@ -189,8 +217,45 @@ gSpriteAnimTable_8416C04:: @ 8416C04
.4byte gSpriteAnim_8416BF4
.4byte gSpriteAnim_8416BFC
+@ array of 8-byte structs
+ .align 2
gUnknown_08416C10:: @ 8416C10
- .incbin "baserom.gba", 0x00416c10, 0x60
+ .byte -128, 16, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -128, 80, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -128, -112, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -128, -48, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -95, 40, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -95, 104, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -95, -88, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -95, -24, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -94, 56, 88, 102
+ .2byte 0x800
+ .space 2
+ .byte -94, 120, 88, 102
+ .2byte 0x800
+ .space 2
+ .byte -94, -72, 88, 102
+ .2byte 0x800
+ .space 2
+ .byte -94, -8, 88, 102
+ .2byte 0x800
+ .space 2
.align 2
gUnknown_08416C70:: @ 8416C70
@@ -206,8 +271,27 @@ gSpriteAnim_8416C80:: @ 8416C80
gSpriteAnimTable_8416C88:: @ 8416C88
.4byte gSpriteAnim_8416C80
+@ array of 8-byte structs
+ .align 2
gUnknown_08416C8C:: @ 8416C8C
- .incbin "baserom.gba", 0x00416c8c, 0x30
+ .byte -128, 24, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, 64, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, 104, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, -112, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, -72, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, -32, 88, 100
+ .2byte 0x1000
+ .space 2
.align 2
gOamData_8416CBC:: @ 8416CBC
diff --git a/data/matsuda_debug_menu.s b/data/matsuda_debug_menu.s
index b7da90fd4..d1ce9fc3d 100644
--- a/data/matsuda_debug_menu.s
+++ b/data/matsuda_debug_menu.s
@@ -50,7 +50,10 @@ Unknown_083C924E:
.incbin "graphics/unknown/ball.gbapal"
gUnknown_083C926E:: @ 83C926E
- .incbin "baserom.gba", 0x003c926e, 0x8
+ .byte 2, 0
+ .byte 17, 0
+ .byte 2, 2
+ .byte 17, 2
gMatsudaDebugMenuContestTopLeft:: @ 83C9276
.byte 0, 6
@@ -61,10 +64,18 @@ gMatsudaDebugMenuContestTopLeft:: @ 83C9276
.byte 15, 10
gUnknown_083C9282:: @ 83C9282
- .incbin "baserom.gba", 0x003c9282, 0xc
+ .byte 7, 6
+ .byte 22, 6
+ .byte 7, 8
+ .byte 22, 8
+ .byte 7, 10
+ .byte 22, 10
gUnknown_083C928E:: @ 83C928E
- .incbin "baserom.gba", 0x003c928e, 0x8
+ .byte 2, 14
+ .byte 17, 14
+ .byte 2, 16
+ .byte 17, 16
gUnknown_083C9296:: @ 83C9296
.byte 0x08, 0x80, 0x08, 0x80, 0x10, 0x10, 0x30, 0xA8, 0x30, 0xA8, 0x30, 0xA8, 0x08, 0x80, 0x08, 0x80, 0x10, 0x88
@@ -178,5 +189,9 @@ gMatsudaDebugMenuTextList3:: @ 83C93F0
.4byte MatsudaDebugMenuText_Slateport @ Hyper
.4byte MatsudaDebugMenuText_Lilycove @ Master
+@ OamData
+ .align 2
gUnknown_083C9400:: @ 83C9400
- .incbin "baserom.gba", 0x003c9400, 0x8
+ .2byte 0x4000
+ .2byte 0x4000
+ .2byte 0xF3FF
diff --git a/data/menu_cursor.s b/data/menu_cursor.s
index 0e12c519c..f3c5fe956 100644
--- a/data/menu_cursor.s
+++ b/data/menu_cursor.s
@@ -134,11 +134,11 @@ gUnknown_0842F1C0:: @ 842F1C0
.align 2
gUnknown_0842F240:: @ 842F240
- obj_pal 0x0203a360, 0xfff0
+ obj_pal gUnknown_0203A360, 0xfff0
.align 2
gUnknown_0842F248:: @ 842F248
- obj_pal 0x0203a360, 0xfff1
+ obj_pal gUnknown_0203A360, 0xfff1
.align 2
gSpriteTemplate_842F250:: @ 842F250
diff --git a/data/metatile_behavior.s b/data/metatile_behavior.s
deleted file mode 100644
index 6588828d0..000000000
--- a/data/metatile_behavior.s
+++ /dev/null
@@ -1,246 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_08308E2C:: @ 8308E2C
- .byte 0b100
- .byte 0b000
- .byte 0b101
- .byte 0b101
- .byte 0b000
- .byte 0b001
- .byte 0b101
- .byte 0b100
- .byte 0b101
- .byte 0b100
- .byte 0b100
- .byte 0b101
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b111
- .byte 0b111
- .byte 0b111
- .byte 0b110
- .byte 0b110
- .byte 0b111
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b110
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b111
- .byte 0b100
- .byte 0b101
- .byte 0b101
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b111
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b110
- .byte 0b110
- .byte 0b110
- .byte 0b110
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b110
- .byte 0b110
- .byte 0b100
- .byte 0b110
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b100
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
- .byte 0b000
diff --git a/data/multichoice.inc b/data/multichoice.inc
deleted file mode 100644
index 256038c23..000000000
--- a/data/multichoice.inc
+++ /dev/null
@@ -1,471 +0,0 @@
- .align 2
-MultichoiceList_00:
- .4byte OtherText_Petalburg, 0
- .4byte OtherText_Slateport, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_02:
- .4byte OtherText_Enter, 0
- .4byte OtherText_Info3, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_03:
- .4byte OtherText_WhatsAContest, 0
- .4byte OtherText_TypesOfContest, 0
- .4byte OtherText_Ranks, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_04:
- .4byte OtherText_CoolContest, 0
- .4byte OtherText_BeautyContest, 0
- .4byte OtherText_CuteContest, 0
- .4byte OtherText_SmartContest, 0
- .4byte OtherText_ToughContest, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_06:
- .4byte OtherText_Decoration, 0
- .4byte OtherText_PackUp, 0
- .4byte OtherText_Registry, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_05:
- .4byte OtherText_Decoration, 0
- .4byte OtherText_PackUp, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_07:
- .4byte OtherText_Register, 0
- .4byte OtherText_Registry, 0
- .4byte OtherText_Information, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_12:
- .4byte OtherText_Mach, 0
- .4byte OtherText_Acro, 0
-
- .align 2
-MultichoiceList_13:
- .4byte OtherText_Poison, 0
- .4byte OtherText_Paralysis, 0
- .4byte OtherText_Sleep, 0
- .4byte OtherText_Burn, 0
- .4byte OtherText_Frozen, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_14:
- .4byte OtherText_Dewford, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_16:
- .4byte OtherText_SawIt, 0
- .4byte OtherText_NotYet, 0
-
- .align 2
-MultichoiceList_17:
- .4byte OtherText_Yes, 0
- .4byte OtherText_No, 0
- .4byte OtherText_Info3, 0
-
- .align 2
-MultichoiceList_18:
- .4byte OtherText_SingleBattle, 0
- .4byte OtherText_DoubleBattle, 0
- .4byte OtherText_MultiBattle, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_19:
- .4byte OtherText_Littleroot, 0
- .4byte OtherText_Slateport, 0
- .4byte OtherText_Lilycove, 0
-
- .align 2
-MultichoiceList_20:
- .4byte OtherText_Yes, 0
- .4byte OtherText_No, 0
- .4byte OtherText_Info3, 0
-
- .align 2
-MultichoiceList_23:
- .4byte OtherText_MakeAChallenge, 0
- .4byte OtherText_ObtainInformation, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_24:
- .4byte OtherText_Lv50_2, 0
- .4byte OtherText_Lv100_2, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_25:
- .4byte OtherText_Zigzagoon, 0
- .4byte OtherText_Nincada, 0
- .4byte OtherText_Poochyena, 0
-
- .align 2
-MultichoiceList_26:
- .4byte OtherText_Nincada2, 0
- .4byte OtherText_Lotad, 0
- .4byte OtherText_Roselia, 0
-
- .align 2
-MultichoiceList_27:
- .4byte OtherText_Shroomish, 0
- .4byte OtherText_Nincada3, 0
- .4byte OtherText_Surskit, 0
-
- .align 2
-MultichoiceList_28:
- .4byte OtherText_Treecko, 0
- .4byte OtherText_Torchic, 0
- .4byte OtherText_Mudkip, 0
-
- .align 2
-MultichoiceList_29:
- .4byte OtherText_Seedot, 0
- .4byte OtherText_Shroomish2, 0
- .4byte OtherText_Spinda, 0
-
- .align 2
-MultichoiceList_30:
- .4byte OtherText_Shroomish3, 0
- .4byte OtherText_Zigzagoon2, 0
- .4byte OtherText_Wurmple, 0
-
- .align 2
-MultichoiceList_31:
- .4byte OtherText_PokeBall, 0
- .4byte OtherText_SuperPotion, 0
- .4byte OtherText_SamePrice, 0
-
- .align 2
-MultichoiceList_32:
- .4byte OtherText_Yen135, 0
- .4byte OtherText_Yen155, 0
- .4byte OtherText_Yen175, 0
-
- .align 2
-MultichoiceList_33:
- .4byte OtherText_CostMore, 0
- .4byte OtherText_CostLess, 0
- .4byte OtherText_SamePrice2, 0
-
- .align 2
-MultichoiceList_34:
- .4byte OtherText_MaleSymbol, 0
- .4byte OtherText_FemaleSymbol, 0
- .4byte OtherText_Neither, 0
-
- .align 2
-MultichoiceList_35:
- .4byte OtherText_Males, 0
- .4byte OtherText_Females, 0
- .4byte OtherText_SameNumber, 0
-
- .align 2
-MultichoiceList_36:
- .4byte OtherText_Male, 0
- .4byte OtherText_Female, 0
- .4byte OtherText_ItDepends, 0
-
- .align 2
-MultichoiceList_37:
- .4byte OtherText_Six2, 0
- .4byte OtherText_Eight2, 0
- .4byte OtherText_Ten, 0
-
- .align 2
-MultichoiceList_38:
- .4byte OtherText_One, 0
- .4byte OtherText_Two, 0
- .4byte OtherText_Three, 0
-
- .align 2
-MultichoiceList_39:
- .4byte OtherText_Six, 0
- .4byte OtherText_Seven, 0
- .4byte OtherText_Eight, 0
-
- .align 2
-MultichoiceList_42:
- .4byte OtherText_FreshWater, 0
- .4byte OtherText_SodaPop, 0
- .4byte OtherText_Lemonade, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_43:
- .4byte OtherText_HowToRide, 0
- .4byte OtherText_HowToTurn, 0
- .4byte OtherText_SandySlopes, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_44:
- .4byte OtherText_Wheelies, 0
- .4byte OtherText_BunnyHops, 0
- .4byte OtherText_Jumping, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_45:
- .4byte OtherText_Satisfied, 0
- .4byte OtherText_Dissatisfied, 0
-
- .align 2
-MultichoiceList_46:
- .4byte OtherText_Deepseatooth, 0
- .4byte OtherText_Deepseascale, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_47:
- .4byte OtherText_BlueFlute2, 0
- .4byte OtherText_YellowFlute2, 0
- .4byte OtherText_RedFlute2, 0
- .4byte OtherText_WhiteFlute2, 0
- .4byte OtherText_BlackFlute2, 0
- .4byte OtherText_GlassChair, 0
- .4byte OtherText_GlassDesk, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_48:
- .4byte OtherText_TreeckoDoll, 0
- .4byte OtherText_TorchicDoll, 0
- .4byte OtherText_MudkipDoll, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_55:
- .4byte OtherText_TM32, 0
- .4byte OtherText_TM29, 0
- .4byte OtherText_TM35, 0
- .4byte OtherText_TM24, 0
- .4byte OtherText_TM13, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_49:
- .4byte OtherText_50Coins, 0
- .4byte OtherText_500Coins, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_50:
- .4byte OtherText_Excellent, 0
- .4byte OtherText_NotSoHot, 0
-
- .align 2
-MultichoiceList_52:
- .4byte OtherText_Lilycove, 0
- .4byte OtherText_BattleTower, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_53:
- .4byte OtherText_Slateport, 0
- .4byte OtherText_Lilycove, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_54:
- .4byte OtherText_Right, 0
- .4byte OtherText_Left, 0
-
- .align 2
-MultichoiceList_56:
- .4byte OtherText_Slateport, 0
- .4byte OtherText_BattleTower, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_57:
- .4byte OtherText_1F_2, 0
- .4byte OtherText_2F_2, 0
- .4byte OtherText_3F_2, 0
- .4byte OtherText_4F_2, 0
- .4byte OtherText_5F_2, 0
-
- .align 2
-MultichoiceList_58:
- .4byte OtherText_RedShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_59:
- .4byte OtherText_YellowShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_60:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_YellowShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_61:
- .4byte OtherText_BlueShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_62:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_BlueShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_63:
- .4byte OtherText_YellowShard, 0
- .4byte OtherText_BlueShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_64:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_YellowShard, 0
- .4byte OtherText_BlueShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_65:
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_66:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_67:
- .4byte OtherText_YellowShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_68:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_YellowShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_69:
- .4byte OtherText_BlueShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_70:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_BlueShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_71:
- .4byte OtherText_YellowShard, 0
- .4byte OtherText_BlueShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_72:
- .4byte OtherText_RedShard, 0
- .4byte OtherText_YellowShard, 0
- .4byte OtherText_BlueShard, 0
- .4byte OtherText_GreenShard, 0
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-MultichoiceList_01:
- .4byte gOtherText_CancelNoTerminator, 0
-
- .align 2
-gMultichoiceLists:: @ 83CDE00
- .4byte MultichoiceList_00, 3
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_02, 3
- .4byte MultichoiceList_03, 4
- .4byte MultichoiceList_04, 6
- .4byte MultichoiceList_05, 3
- .4byte MultichoiceList_06, 4
- .4byte MultichoiceList_07, 4
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_12, 2
- .4byte MultichoiceList_13, 6
- .4byte MultichoiceList_14, 2
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_16, 2
- .4byte MultichoiceList_17, 3
- .4byte MultichoiceList_18, 4
- .4byte MultichoiceList_19, 3
- .4byte MultichoiceList_20, 3
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_23, 3
- .4byte MultichoiceList_24, 3
- .4byte MultichoiceList_25, 3
- .4byte MultichoiceList_26, 3
- .4byte MultichoiceList_27, 3
- .4byte MultichoiceList_28, 3
- .4byte MultichoiceList_29, 3
- .4byte MultichoiceList_30, 3
- .4byte MultichoiceList_31, 3
- .4byte MultichoiceList_32, 3
- .4byte MultichoiceList_33, 3
- .4byte MultichoiceList_34, 3
- .4byte MultichoiceList_35, 3
- .4byte MultichoiceList_36, 3
- .4byte MultichoiceList_37, 3
- .4byte MultichoiceList_38, 3
- .4byte MultichoiceList_39, 3
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_42, 4
- .4byte MultichoiceList_43, 4
- .4byte MultichoiceList_44, 4
- .4byte MultichoiceList_45, 2
- .4byte MultichoiceList_46, 3
- .4byte MultichoiceList_47, 8
- .4byte MultichoiceList_48, 4
- .4byte MultichoiceList_49, 3
- .4byte MultichoiceList_50, 2
- .4byte MultichoiceList_01, 1
- .4byte MultichoiceList_52, 3
- .4byte MultichoiceList_53, 3
- .4byte MultichoiceList_54, 2
- .4byte MultichoiceList_55, 6
- .4byte MultichoiceList_56, 3
- .4byte MultichoiceList_57, 5
- .4byte MultichoiceList_58, 2
- .4byte MultichoiceList_59, 2
- .4byte MultichoiceList_60, 3
- .4byte MultichoiceList_61, 2
- .4byte MultichoiceList_62, 3
- .4byte MultichoiceList_63, 3
- .4byte MultichoiceList_64, 4
- .4byte MultichoiceList_65, 2
- .4byte MultichoiceList_66, 3
- .4byte MultichoiceList_67, 3
- .4byte MultichoiceList_68, 4
- .4byte MultichoiceList_69, 3
- .4byte MultichoiceList_70, 4
- .4byte MultichoiceList_71, 4
- .4byte MultichoiceList_72, 5
diff --git a/data/naming_screen.s b/data/naming_screen.s
index 4e477f4b9..60aba1345 100644
--- a/data/naming_screen.s
+++ b/data/naming_screen.s
@@ -4,216 +4,6 @@
.section .rodata
.align 2
-gSpriteImage_83CE094:: @ 83CE094
- .incbin "graphics/naming_screen/pc_icon/0.4bpp"
-
- .align 2
-gSpriteImage_83CE154:: @ 83CE154
- .incbin "graphics/naming_screen/pc_icon/1.4bpp"
-
-@ XXX: what is this?
- .align 2
- .4byte 0x2000000
-
- .align 2
-gUnknown_083CE218:: @ 83CE218
- .4byte sub_80B5EA8
- .4byte sub_80B5ED0
- .4byte sub_80B5F00
- .4byte sub_80B5F10
- .4byte sub_80B5F38
- .4byte sub_80B5F70
- .4byte pokemon_store
- .4byte sub_80B604C
- .4byte sub_80B606C
- .4byte sub_80B6094
-
- .align 2
-gUnknown_083CE240:: @ 83CE240
- .4byte sub_80B6108
- .4byte sub_80B6148
- .4byte sub_80B6170
- .4byte sub_80B6194
-
- .align 2
-gUnknown_083CE250:: @ 83CE250
- .4byte sub_80B626C
- .4byte sub_80B6274
-
- .align 1
-gUnknown_083CE258:: @ 83CE258
- .2byte 0, 0, 0, -1, 1
-
- .align 1
-gUnknown_083CE262:: @ 83CE262
- .2byte 0, -1, 1, 0, 0
-
- .align 1
-gUnknown_083CE26C:: @ 83CE26C
- .2byte 0, 1, 1, 2
-
- .align 1
-gUnknown_083CE274:: @ 83CE274
- .2byte 0, 0, 3, 0
-
- .align 2
-gUnknown_083CE27C:: @ 83CE27C
- .4byte sub_80B6668
- .4byte sub_80B6680
- .4byte sub_80B66EC
- .4byte sub_80B6758
-
- .align 2
-gUnknown_083CE28C:: @ 83CE28C
- .4byte 0x02000006
- .4byte 0x02000004
-
-gUnknown_083CE294:: @ 83CE294
- .byte 1, 3, 5, 8, 10, 12, 14, 17, 19
- .byte 1, 3, 5, 8, 10, 12, 14, 17, 19
- .byte 1, 4, 7, 10, 13, 16, 16, 16, 19
-
-gUnknown_083CE2AF:: @ 83CE2AF
- .byte 1, 2, 3
-
- .align 2
-gUnknown_083CE2B4:: @ 83CE2B4
- .4byte sub_80B6B5C
- .4byte sub_80B6B98
- .4byte sub_80B6B9C
- .4byte sub_80B6C08
-
- .align 1
-gUnknown_083CE2C4:: @ 83CE2C4
- .2byte 1, 3, 2
-
- .align 1
-gUnknown_083CE2CA:: @ 83CE2CA
- .2byte 4, 6, 5
-
- .align 1
-gUnknown_083CE2D0:: @ 83CE2D0
- .2byte 0, -4, -2, -1
-
- .align 1
-gUnknown_083CE2D8:: @ 83CE2D8
- .2byte 2, 3, 2, 1
-
- .align 2
-gUnknown_083CE2E0:: @ 83CE2E0
- .4byte nullsub_40
- .4byte sub_80B6E68
- .4byte sub_80B6EBC
- .4byte sub_80B6EFC
-
- .align 2
-gUnknown_083CE2F0:: @ 83CE2F0
- .4byte sub_80B7660
- .4byte sub_80B7650
- .4byte sub_80B7650
- .4byte sub_80B7670
- .4byte sub_80B7670
- .4byte sub_80B7660
-
- .align 2
-gUnknown_083CE308:: @ 83CE308
- .4byte VRAM + 0xE000
- .4byte VRAM + 0xE800
-
- .align 2
-gUnknown_083CE310:: @ 83CE310
- .4byte sub_80B7844
- .4byte sub_80B7838
- .4byte sub_80B7838
- .4byte sub_80B7850
- .4byte sub_80B7850
- .4byte sub_80B7844
-
- .align 2
-gUnknown_083CE328:: @ 83CE328
- .4byte gWindowConfig_81E6EDC
- .4byte gWindowConfig_81E6EF8
- .4byte gWindowConfig_81E6EA4
- .4byte gWindowConfig_81E6EC0
- .4byte gWindowConfig_81E6EA4
- .4byte gWindowConfig_81E6EC0
- .4byte gWindowConfig_81E6F14
- .4byte gWindowConfig_81E6F30
- .4byte gWindowConfig_81E6F14
- .4byte gWindowConfig_81E6F30
- .4byte gWindowConfig_81E6EDC
- .4byte gWindowConfig_81E6EF8
-
- .align 2
-gUnknown_083CE358:: @ 83CE358
- .4byte nullsub_61
- .4byte nullsub_61
- .4byte sub_80B78F8
- .4byte sub_80B78F8
-
- .align 2
-gUnknown_083CE368:: @ 83CE368
- .4byte nullsub_62
- .4byte sub_80B7924
-
-gUnknown_083CE370:: @ 83CE370
- .string "♂$"
-
- .align 2
-Unknown_83CE374:
- .byte 0, 7, 1, 0, 0, 0, 0, 0
- .4byte OtherText_YourName
-
- .align 2
-Unknown_83CE380:
- .byte 0, 8, 2, 0, 0, 0, 0, 0
- .4byte OtherText_BoxName
-
- .align 2
-Unknown_83CE38C:
- .byte 0, 10, 3, 1, 0, 0, 0, 0
- .4byte OtherText_PokeName
-
- .align 2
-gUnknown_083CE398:: @ 83CE398
- .4byte Unknown_83CE374
- .4byte Unknown_83CE380
- .4byte Unknown_83CE38C
- .4byte Unknown_83CE38C
-
-gUnknown_083CE3A8:: @ 83CE3A8
- .string " A B C D E F . $"
- .string " G H I J K L , $"
- .string " M N O P Q R S $"
- .string " T U V W X Y Z $"
- .string " a b c d e f . $"
- .string " g h i j k l , $"
- .string " m n o p q r s $"
- .string " t u v w x y z $"
- .string " 0 1 2 3 4 $"
- .string " 5 6 7 8 9 $"
- .string " ! ? ♂ ♀ / - $"
- .string " … “ ” ‘ ’ $"
-
- .align 2
-gOamData_83CE498:: @ 83CE498
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_83CE4A0:: @ 83CE4A0
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gOamData_83CE4A8:: @ 83CE4A8
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
gSubspriteTable_83CE4B0:: @ 83CE4B0
subsprite -20, -16, 1, 0, 32x8
subsprite 12, -16, 1, 4, 8x8
diff --git a/data/pokedex_cry_screen.s b/data/pokedex_cry_screen.s
index 70e356410..1eb3086e9 100644
--- a/data/pokedex_cry_screen.s
+++ b/data/pokedex_cry_screen.s
@@ -11,12 +11,15 @@ CryMeterNeedlePalette: @ 83FA65C
CryMeterNeedleTiles: @ 83FA67C
.incbin "graphics/pokedex/cry_meter_needle.4bpp"
+ .align 1
gUnknown_083FAE7C:: @ 83FAE7C
- .incbin "baserom.gba", 0x003fae7c, 0xa0
+ .incbin "graphics/pokedex/cry_meter_map.bin"
+ .align 1
gUnknown_083FAF1C:: @ 83FAF1C
.incbin "graphics/pokedex/cry_meter.gbapal"
+ .align 2
gUnknown_083FAF3C:: @ 83FAF3C
.incbin "graphics/pokedex/cry_meter.4bpp.lz"
@@ -34,17 +37,52 @@ gUnknown_083FB274:: @ 83FB274
.align 2
.4byte 0x201C000
+ .align 1
gUnknown_083FB6F8:: @ 83FB6F8
- .incbin "baserom.gba", 0x003fb6f8, 0x20
+ .incbin "graphics/pokedex/83FB6F8.gbapal"
gUnknown_083FB718:: @ 83FB718
- .incbin "baserom.gba", 0x003fb718, 0x20
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x11
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
+ .byte 0x22
gUnknown_083FB738:: @ 83FB738
.byte 0xF0, 0x0F
gUnknown_083FB73A:: @ 83FB73A
- .incbin "baserom.gba", 0x003fb73a, 0x26
+ .byte 0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F
+ .byte 0xF0,0xE0,0xD0,0xC0,0xB0,0xA0,0x90,0x80,0x80,0x90,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0
+
+ .byte 0, 0, 0, 200, 1, 2
.align 2
gSpriteAnim_83FB760:: @ 83FB760
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index 584b818cd..e5d3e9282 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -70,7 +70,43 @@ gPokemonStorageScrollingBGTile:: @ 83B6A30
gPokemonStorageScrollingBGTilemap:: @ 83B6A50
.incbin "graphics/pokemon_storage/scrolling_bg_map.bin.lz"
- .incbin "baserom.gba", 0x003b6b4c, 0x48
+@ unused tilemap?
+ .2byte 0x1281
+ .2byte 0x1282
+ .2byte 0x1283
+ .2byte 0x1284
+ .2byte 0x1285
+ .2byte 0x1286
+ .2byte 0x1287
+ .2byte 0x1288
+ .2byte 0x128C
+ .2byte 0x128D
+ .2byte 0x128E
+ .2byte 0x128F
+ .2byte 0x1290
+ .2byte 0x1291
+ .2byte 0x1292
+ .2byte 0x1293
+ .2byte 0x0281
+ .2byte 0x0282
+ .2byte 0x0283
+ .2byte 0x0284
+ .2byte 0x0285
+ .2byte 0x0286
+ .2byte 0x0287
+ .2byte 0x0288
+ .2byte 0x028C
+ .2byte 0x028D
+ .2byte 0x028E
+ .2byte 0x028F
+ .2byte 0x0290
+ .2byte 0x0291
+ .2byte 0x0292
+ .2byte 0x0293
+ .2byte 0x12AD
+ .2byte 0x12AE
+ .2byte 0x12A8
+ .2byte 0x12A8
.align 2
WaveformPalette: @ 83B6B94
@@ -82,11 +118,11 @@ WaveformTiles: @ 83B6BB4
.align 2
gUnknown_083B6D74:: @ 83B6D74
- .incbin "baserom.gba", 0x003b6d74, 0x20
+ .incbin "graphics/pokemon_storage/83B6D74.gbapal"
.align 2
gUnknown_083B6D94:: @ 83B6D94
- .incbin "baserom.gba", 0x003b6d94, 0x20
+ .incbin "graphics/pokemon_storage/83B6D94.gbapal"
.align 2
gUnknown_083B6DB4:: @ 83B6DB4
@@ -200,17 +236,20 @@ gOamData_83B6F2C:: @ 83B6F2C
.2byte 0x0000
.align 2
-Unknown_83B6F34: @ 83B6F34
- .incbin "baserom.gba", 0x003b6f34, 0x10
+gSpriteAffineAnim_83B6F34:: @ 83B6F34
+ obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 120
+ obj_rot_scal_anim_end
.align 2
-Unknown_83B6F44: @ 83B6F44
- .incbin "baserom.gba", 0x003b6f44, 0x18
+gSpriteAffineAnim_83B6F44:: @ 83B6F44
+ obj_rot_scal_anim_frame 0x10, 0x10, 0, 0
+ obj_rot_scal_anim_frame 0x10, 0x10, 0, 15
+ obj_rot_scal_anim_end
.align 2
-gUnknown_083B6F5C:: @ 83B6F5C
- .4byte Unknown_83B6F34
- .4byte Unknown_83B6F44
+gSpriteAffineAnimTable_83B6F5C:: @ 83B6F5C
+ .4byte gSpriteAffineAnim_83B6F34
+ .4byte gSpriteAffineAnim_83B6F44
.align 2
gWallpaperPalettes_Forest: @ 83B6F64
@@ -441,8 +480,24 @@ gWallpaperTilemap_Plain: @ 83BAE74
@ 12×18 tilemap
.incbin "graphics/unused/tilemap_3BAEF8.bin"
+ .align 1
gUnknown_083BB0A8:: @ 83BB0A8
- .incbin "baserom.gba", 0x003bb0a8, 0x40
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
+ .2byte 0x1CE7, 0x7FFF
.align 2
gWallpaperTable:: @ 83BB0E8
diff --git a/data/record_mixing.s b/data/record_mixing.s
index 329651039..8b46e1ed3 100644
--- a/data/record_mixing.s
+++ b/data/record_mixing.s
@@ -28,11 +28,11 @@ recordMixingEasyChatPairs:: @ 83D027C
.align 2
gUnknown_083D0280:: @ 83D0280
- .4byte 0x02038738
+ .4byte gUnknown_02038738
.align 2
gUnknown_083D0284:: @ 83D0284
- .4byte 0x02024f4c
+ .4byte gSaveBlock2+0xA8
gUnknown_083D0288:: @ 83D0288
.byte 1, 0
diff --git a/data/rom_810CBB4.s b/data/rom_810CBB4.s
index 0eefbaeb9..3860788cf 100644
--- a/data/rom_810CBB4.s
+++ b/data/rom_810CBB4.s
@@ -54,11 +54,13 @@ gCaveTransitionPalette_Black:: @ 83F806C
.2byte 0x0000
.endr
+ .align 1
gUnknown_083F808C:: @ 83F808C
- .incbin "baserom.gba", 0x003f808c, 0x10
+ .incbin "graphics/misc/83F808C.gbapal"
+ .align 1
gUnknown_083F809C:: @ 83F809C
- .incbin "baserom.gba", 0x003f809c, 0x10
+ .incbin "graphics/misc/83F809C.gbapal"
.align 2
gCaveTransitionTilemap:: @ 83F80AC
@@ -69,22 +71,52 @@ gCaveTransitionTiles:: @ 83F828C
.incbin "graphics/misc/cave_transition.4bpp.lz"
gUnknown_083F8340:: @ 83F8340
- .incbin "baserom.gba", 0x003f8340, 0x18
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
gUnknown_083F8358:: @ 83F8358
- .incbin "baserom.gba", 0x003f8358, 0x4
+ .byte 7, 9, 8, 10
gUnknown_083F835C:: @ 83F835C
- .incbin "baserom.gba", 0x003f835c, 0x8
+ .byte 0, 1
+ .byte 1, 0
+ .byte 0, -1
+ .byte -1, 0
+ .align 2
gUnknown_083F8364:: @ 83F8364
- .incbin "baserom.gba", 0x003f8364, 0xc
+ .byte 7, 16, 0, 0
+ .byte 15, 18, 0, 0
+ .byte 11, 22, 0, 0
gUnknown_083F8370:: @ 83F8370
- .incbin "baserom.gba", 0x003f8370, 0x6
+ .byte 0, 1, 1, 1, 1
+ .align 1
gUnknown_083F8376:: @ 83F8376
- .incbin "baserom.gba", 0x003f8376, 0xa
+ .2byte 0x218, 0x219, 0x21A, 0x21B, 0x21C
.align 2
gUnknown_083F8380:: @ 83F8380
@@ -117,19 +149,19 @@ gUnknown_083F83C0:: @ 83F83C0
.4byte gOtherText_CancelNoTerminator
gUnknown_083F83E0:: @ 83F83E0
- .incbin "baserom.gba", 0x003f83e0, 0xc
+ .byte 12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6
gUnknown_083F83EC:: @ 83F83EC
- .incbin "baserom.gba", 0x003f83ec, 0xc
+ .byte 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5
gUnknown_083F83F8:: @ 83F83F8
- .incbin "baserom.gba", 0x003f83f8, 0xc
+ .byte 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5
gUnknown_083F8404:: @ 83F8404
- .incbin "baserom.gba", 0x003f8404, 0x4
+ .byte 2, 1, 2, 1
gUnknown_083F8408:: @ 83F8408
- .incbin "baserom.gba", 0x003f8408, 0x8
+ .byte 8, 9, 10, 11, 12, 13, 14, 15
gUnknown_083F8410:: @ 83F8410
- .incbin "baserom.gba", 0x003f8410, 0x8
+ .byte 8, 13, 14, 11, 10, 12, 15, 9
diff --git a/data/rom_81258BC.s b/data/rom_81258BC.s
index b07fdddf1..7b46c77e7 100644
--- a/data/rom_81258BC.s
+++ b/data/rom_81258BC.s
@@ -689,7 +689,8 @@ gUnknown_08402D08:: @ 8402D08
.byte 1, 9, 2, 0
.space 8
- .incbin "baserom.gba", 0x402d48, 0x8
+ .4byte 0xFF00FFEF
+ .4byte gTileBuffer
.align 2
gOamData_8402D50:: @ 8402D50
diff --git a/data/save.s b/data/save.s
deleted file mode 100644
index bcb08e0ca..000000000
--- a/data/save.s
+++ /dev/null
@@ -1,29 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSaveSectionLocations:: @ 8401DA4
- .4byte gSaveBlock2, 0x890
- .4byte gSaveBlock1 + 0xF80 * 0, 0xF80
- .4byte gSaveBlock1 + 0xF80 * 1, 0xF80
- .4byte gSaveBlock1 + 0xF80 * 2, 0xF80
- .4byte gSaveBlock1 + 0xF80 * 3, 0xC40
- .4byte gPokemonStorage + 0xF80 * 0, 0xF80
- .4byte gPokemonStorage + 0xF80 * 1, 0xF80
- .4byte gPokemonStorage + 0xF80 * 2, 0xF80
- .4byte gPokemonStorage + 0xF80 * 3, 0xF80
- .4byte gPokemonStorage + 0xF80 * 4, 0xF80
- .4byte gPokemonStorage + 0xF80 * 5, 0xF80
- .4byte gPokemonStorage + 0xF80 * 6, 0xF80
- .4byte gPokemonStorage + 0xF80 * 7, 0xF80
- .4byte gPokemonStorage + 0xF80 * 8, 0x7D0
-
- .align 2
-gHallOfFameSaveSectionLocations:: @ 8401E14
- .4byte gHallOfFame + 0xF80 * 0, 0xF80
- .4byte gHallOfFame + 0xF80 * 1, 0xF80
-
-gUnknown_08401E24:: @ 8401E24
- .byte 0x1E, 0x1F @ flash sectors
diff --git a/data/save_failed_screen.s b/data/save_failed_screen.s
deleted file mode 100644
index 5d22810ea..000000000
--- a/data/save_failed_screen.s
+++ /dev/null
@@ -1,10 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gSaveFailedClockPal:: @ 8411960
- .incbin "graphics/misc/clock_small.gbapal"
-
-gSaveFailedClockGfx:: @ 8411980
- .incbin "graphics/misc/clock_small.4bpp.lz"
diff --git a/data/script_menu.s b/data/script_menu.s
deleted file mode 100644
index e28616300..000000000
--- a/data/script_menu.s
+++ /dev/null
@@ -1,29 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83CD788
- .include "data/multichoice.inc"
-
- .align 2
-gUnknown_083CE048:: @ 83CE048
- .4byte OtherText_Cool2
- .4byte OtherText_Beauty3
- .4byte OtherText_Cute2
- .4byte OtherText_Smart2
- .4byte OtherText_Tough2
- .4byte OtherText_Normal
- .4byte OtherText_Super
- .4byte OtherText_Hyper
- .4byte OtherText_Master
- .4byte OtherText_Cool3
- .4byte OtherText_Beauty4
- .4byte OtherText_Cute3
- .4byte OtherText_Smart3
- .4byte OtherText_Tough3
- .4byte OtherText_Items
- .4byte OtherText_KeyItems
- .4byte OtherText_Balls
- .4byte OtherText_TMsHMs
- .4byte OtherText_Berries
diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc
index b52b13b5a..c5d932a91 100644
--- a/data/scripts/maps/IslandCave.inc
+++ b/data/scripts/maps/IslandCave.inc
@@ -31,7 +31,7 @@ IslandCave_MapScript1_15EF15:: @ 815EF15
setflag 2133
end
-gUnknown_0815EF19:: @ 815EF19
+gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19
setmaptile 7, 19, 554, 1
setmaptile 8, 19, 555, 1
setmaptile 9, 19, 556, 1
diff --git a/data/shop.s b/data/shop.s
index 1974786cf..071874d0e 100644
--- a/data/shop.s
+++ b/data/shop.s
@@ -36,26 +36,34 @@ gUnknown_083CC708:: @ 83CC708
.4byte sub_80B3BF4
.4byte sub_80B3D7C
+ .align 1
gUnknown_083CC710:: @ 83CC710
- .incbin "baserom.gba", 0x003cc710, 0x4
+ .2byte 0x41EE,0x7FFF
+ .align 1
gUnknown_083CC714:: @ 83CC714
- .incbin "baserom.gba", 0x003cc714, 0x6
+ .2byte 0x284,0x282,0x280
+ .align 1
gUnknown_083CC71A:: @ 83CC71A
- .incbin "baserom.gba", 0x003cc71a, 0x6
+ .2byte 0x285,0x283,0x281
+ .align 1
gUnknown_083CC720:: @ 83CC720
- .incbin "baserom.gba", 0x003cc720, 0x6
+ .2byte 0x28C,0x28A,0x288
+ .align 1
gUnknown_083CC726:: @ 83CC726
- .incbin "baserom.gba", 0x003cc726, 0x6
+ .2byte 0x28D,0x28B,0x289
+ .align 1
gUnknown_083CC72C:: @ 83CC72C
- .incbin "baserom.gba", 0x003cc72c, 0x6
+ .2byte 0x2A0,0x2A2,0x2A4
+ .align 1
gUnknown_083CC732:: @ 83CC732
- .incbin "baserom.gba", 0x003cc732, 0x6
+ .2byte 0x2A1,0x2A3,0x2A5
+ .align 1
gUnknown_083CC738:: @ 83CC738
- .incbin "baserom.gba", 0x003cc738, 0x8
+ .2byte 0x2A8,0x2AA,0x2AC
diff --git a/data/specials.inc b/data/specials.inc
index 46fb14058..a955fe3eb 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -210,7 +210,7 @@ gSpecials::
.4byte SafariZoneGetPokeblockNameInFeeder
.4byte sub_810BAF4
.4byte sub_810D32C
- .4byte sub_810D378
+ .4byte UpdateShoalTideFlag
.4byte sub_810D3FC
.4byte ScriptGetPokedexInfo
.4byte ShowPokedexRatingMessage
diff --git a/data/starter_choose.s b/data/starter_choose.s
deleted file mode 100644
index 4c549b449..000000000
--- a/data/starter_choose.s
+++ /dev/null
@@ -1,173 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBirchBagGrassPal:: @ 83F62EC
- .incbin "graphics/misc/birch_bag.gbapal"
- .incbin "graphics/misc/birch_grass.gbapal"
-
- .align 2
-gBirchBallarrow_Pal::
- .incbin "graphics/misc/birch_ballarrow.gbapal"
-
- .align 2
-gBirchCircle_Pal::
- .incbin "graphics/misc/birch_circle.gbapal"
-
- .align 2
-gBirchBagTilemap:: @ 83F636C
- .incbin "graphics/misc/birch_bag_map.bin.lz"
-
- .align 2
-gBirchGrassTilemap:: @ 83F64F8
- .incbin "graphics/misc/birch_grass_map.bin.lz"
-
- .align 2
-gBirchHelpGfx:: @ 83F66F0
- .incbin "graphics/misc/birch_help.4bpp.lz"
-
- .align 2
-gBirchBallarrow_Gfx::
- .incbin "graphics/misc/birch_ballarrow.4bpp.lz"
-
- .align 2
-gBirchCircle_Gfx::
- .incbin "graphics/misc/birch_circle.4bpp.lz"
-
-gStarterChoose_PokeballCoords:: @ 83F76B8
- .byte 60, 64
- .byte 120, 88
- .byte 180, 64
-
-gStarterChoose_LabelCoords:: @ 83F76BE
- .byte 0, 9
- .byte 16, 10
- .byte 8, 4
-
- .align 1
-gStarterMons:: @ 83F76C4
- .2byte SPECIES_TREECKO
- .2byte SPECIES_TORCHIC
- .2byte SPECIES_MUDKIP
- .2byte 0
-
- .align 2
-gOamData_83F76CC:: @ 83F76CC
- .2byte 0x00A0
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gOamData_83F76D4:: @ 83F76D4
- .2byte 0x00A0
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gOamData_83F76DC:: @ 83F76DC
- .2byte 0x03A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gUnknown_083F76E4:: @ 83F76E4
- .byte 60, 32
- .byte 120, 56
- .byte 180, 32
- .byte 0, 0
-
- .align 2
-gSpriteAnim_83F76EC:: @ 83F76EC
- obj_image_anim_frame 48, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F76F4:: @ 83F76F4
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F76FC:: @ 83F76FC
- obj_image_anim_frame 16, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 32, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 16, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 32, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 0, 32
- obj_image_anim_frame 16, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 32, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 16, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 32, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83F7744:: @ 83F7744
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83F774C:: @ 83F774C
- .4byte gSpriteAnim_83F76EC
-
- .align 2
-gSpriteAnimTable_83F7750:: @ 83F7750
- .4byte gSpriteAnim_83F76F4
- .4byte gSpriteAnim_83F76FC
-
- .align 2
-gSpriteAnimTable_83F7758:: @ 83F7758
- .4byte gSpriteAnim_83F7744
-
- .align 2
-gSpriteAffineAnim_83F775C:: @ 83F775C
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 0
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83F7774:: @ 83F7774
- obj_rot_scal_anim_frame 0x14, 0x14, 0, 0
- obj_rot_scal_anim_frame 0x14, 0x14, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83F778C:: @ 83F778C
- .4byte gSpriteAffineAnim_83F775C
-
- .align 2
-gSpriteAffineAnimTable_83F7790:: @ 83F7790
- .4byte gSpriteAffineAnim_83F7774
-
-gUnknown_083F7794:: @ 83F7794
- obj_tiles gBirchBallarrow_Gfx, 0x0800, 0x1000
- .space 8
-
-gUnknown_083F77A4:: @ 83F77A4
- obj_tiles gBirchCircle_Gfx, 0x0800, 0x1001
- .space 8
-
-gUnknown_083F77B4:: @ 83F77B4
- obj_pal gBirchBallarrow_Pal, 0x1000
- obj_pal gBirchCircle_Pal, 0x1001
- .space 8
-
- .align 2
-gSpriteTemplate_83F77CC:: @ 83F77CC
- spr_template 4096, 4096, gOamData_83F76CC, gSpriteAnimTable_83F774C, NULL, gDummySpriteAffineAnimTable, sub_810A62C
-
- .align 2
-gSpriteTemplate_83F77E4:: @ 83F77E4
- spr_template 4096, 4096, gOamData_83F76D4, gSpriteAnimTable_83F7750, NULL, gDummySpriteAffineAnimTable, sub_810A68C
-
- .align 2
-gSpriteTemplate_83F77FC:: @ 83F77FC
- spr_template 4097, 4097, gOamData_83F76DC, gSpriteAnimTable_83F7758, NULL, gSpriteAffineAnimTable_83F7790, StarterPokemonSpriteAnimCallback
diff --git a/data/strings.s b/data/strings.s
deleted file mode 100644
index f83ad62d0..000000000
--- a/data/strings.s
+++ /dev/null
@@ -1,2041 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gExpandedPlaceholder_Empty:: @ 840DC80
- .string "$"
-
-gExpandedPlaceholder_Kun:: @ 840DC81
- .string "$"
-
-gExpandedPlaceholder_Chan:: @ 840DC82
- .string "$"
-
-gExpandedPlaceholder_Sapphire:: @ 840DC83
- .string "SAPPHIRE$"
-
-gExpandedPlaceholder_Ruby:: @ 840DC8C
- .string "RUBY$"
-
-gExpandedPlaceholder_Aqua:: @ 840DC91
- .string "AQUA$"
-
-gExpandedPlaceholder_Magma:: @ 840DC96
- .string "MAGMA$"
-
-gExpandedPlaceholder_Archie:: @ 840DC9C
- .string "ARCHIE$"
-
-gExpandedPlaceholder_Maxie:: @ 840DCA3
- .string "MAXIE$"
-
-gExpandedPlaceholder_Kyogre:: @ 840DCA9
- .string "KYOGRE$"
-
-gExpandedPlaceholder_Groudon:: @ 840DCB0
- .string "GROUDON$"
-
-gExpandedPlaceholder_Brendan:: @ 840DCB8
- .string "BRENDAN$"
-
-gExpandedPlaceholder_May:: @ 840DCC0
- .string "MAY$"
-
-gSystemText_Egg:: @ 840DCC4
- .string "EGG$"
-
-gSystemText_Pokemon2:: @ 840DCC8
- .string "POKéMON$"
-
-gMainMenuString_NewGame:: @ 840DCD0
- .string "NEW GAME$"
-
-gMainMenuString_Continue:: @ 840DCD9
- .string "CONTINUE$"
-
-gMainMenuString_Option:: @ 840DCE2
- .string "OPTION$"
-
-gMainMenuString_MysteryEvents:: @ 840DCE9
- .string "MYSTERY EVENTS$"
-
-SystemText_UpdatingSaveExternal::
- .string "Updating save file using external\ndata. Please wait.$"
-
-SystemText_SaveUpdated::
- .string "The save file has been updated.$"
-
-SystemText_SaveUpdatedExchangeBackup::
- .string "The save file has been updated.\pFurther game data cannot be saved\nto the backup memory.\pPlease exchange the backup memory.\pFor details, please contact the\nNintendo Service Center.$"
-
-SystemText_SaveNotUpdated::
- .string "The save file could not be updated.\pPlease exchange the backup\nmemory.\pFor details, please contact the\nNintendo Service Center.$"
-
-gSaveFileCorruptMessage:: @ 840DE81
- .string "The save file is corrupt. The\nprevious save file will be loaded.$"
-
-gSaveFileDeletedMessage:: @ 840DEC2
- .string " The save file has been deleted...$"
-
-gBoardNotInstalledMessage:: @ 840DEE5
- .string "The 1M sub-circuit board is\nnot installed.$"
-
-gBatteryDryMessage:: @ 840DF10
- .string "The internal battery has run dry.\nThe game can be played.\pHowever, clock-based events will\nno longer occur.$"
-
-gMainMenuString_Player:: @ 840DF7C
- .string "PLAYER$"
-
-gMainMenuString_Pokedex:: @ 840DF83
- .string "POKéDEX$"
-
-gMainMenuString_Time:: @ 840DF8B
- .string "TIME$"
-
-gMainMenuString_Badges:: @ 840DF90
- .string "BADGES$"
-
-gBirchText_Boy::
- .string "BOY$"
-gBirchText_Girl::
- .string "GIRL$"
-gBirchText_NewName::
- .string "NEW NAME$"
-
-gDefaultBoyName1::
- .ifdef SAPPHIRE
- .string "SEAN$"
- .else
- .string "LANDON$"
- .endif
-gDefaultBoyName2::
- .string "TERRY$"
-gDefaultBoyName3::
- .string "SETH$"
-gDefaultBoyName4::
- .string "TOM$"
-
-gDefaultGirlName1::
- .ifdef SAPPHIRE
- .string "MARINA$"
- .else
- .string "TERRA$"
- .endif
-gDefaultGirlName2::
- .string "KIMMY$"
-gDefaultGirlName3::
- .string "NICOLA$"
-gDefaultGirlName4::
- .string "SARA$"
-
-gSystemText_IntroWeCall::
- .string "This is what we call\na POKéMON.$"
-
-gSystemText_NewPara:: @ 840DFF7
- .string "\p$"
-
-gDexText_UnknownPoke:: @ 840DFF9
- .string " ????? POKéMON$" @ why 12 spaces?
-
-gDexText_UnknownHeight:: @ 840E013
- .string "{CLEAR_TO 0x0C}??’??”$"
-
-gDexText_UnknownWeight:: @ 840E01D
- .string "????.? lbs.$"
- .string "$"
-
-gDexText_CryOf:: @ 840E02A
- .string "{CLEAR_TO 2}CRY OF$"
- .string "$"
-
-gDexText_SizeComparedTo:: @ 840E035
- .string "SIZE COMPARED TO $"
-
-gDexText_RegisterComplete:: @ 840E047
- .string "POKéDEX registration completed.$"
-
-gDexText_Searching:: @ 840E067
- .string "Searching...\nPlease wait.$"
-
-gDexText_SearchComplete:: @ 840E081
- .string "Search completed.$"
-
-gDexText_NoMatching:: @ 840E093
- .string "No matching POKéMON were found.$"
-
-DexText_SearchForPoke::
- .string "Search for POKéMON based on\nselected parameters.$"
-DexText_SwitchDex::
- .string "Switch POKéDEX listings.$"
-DexText_ReturnToDex::
- .string "Return to the POKéDEX.$"
-DexText_SelectDexMode::
- .string "Select the POKéDEX mode.$"
-DexText_SelectDexList::
- .string "Select the POKéDEX listing mode.$"
-DexText_ListByABC::
- .string "List by the first letter in the name.\n/Spotted POKéMON only.$"
-DexText_ListByColor::
- .string "List by body color.\n/Spotted POKéMON only.$"
-DexText_ListByType::
- .string "List by type.\n/Owned POKéMON only.$"
-DexText_ExecuteSearchSwitch::
- .string "Execute search/switch.$"
-DexText_HoennDex::
- .string "HOENN DEX$"
-DexText_NationalDex::
- .string "NATIONAL DEX$"
-DexText_NumericalMode::
- .string "NUMERICAL MODE$"
-DexText_ABCMode::
- .string "A TO Z MODE$"
-DexText_HeaviestMode::
- .string "HEAVIEST MODE$"
-DexText_LightestMode::
- .string "LIGHTEST MODE$"
-DexText_TallestMode::
- .string "TALLEST MODE$"
-DexText_SmallestMode::
- .string "SMALLEST MODE$"
-DexText_ABC::
- .string "ABC$"
-DexText_DEF::
- .string "DEF$"
-DexText_GHI::
- .string "GHI$"
-DexText_JKL::
- .string "JKL$"
-DexText_MNO::
- .string "MNO$"
-DexText_PQR::
- .string "PQR$"
-DexText_STU::
- .string "STU$"
-DexText_VWX::
- .string "VWX$"
-DexText_YZ::
- .string "YZ$"
-DexText_Red::
- .string "RED$"
-DexText_Blue::
- .string "BLUE$"
-DexText_Yellow::
- .string "YELLOW$"
-DexText_Green::
- .string "GREEN$"
-DexText_Black::
- .string "BLACK$"
-DexText_Brown::
- .string "BROWN$"
-DexText_Purple::
- .string "PURPLE$"
-DexText_Gray::
- .string "GRAY$"
-DexText_White::
- .string "WHITE$"
-DexText_Pink::
- .string "PINK$"
-DexText_HoennDex2::
- .string "HOENN region’s POKéDEX$"
-DexText_NationalDex2::
- .string "National edition POKéDEX$"
-DexText_ListByNumber::
- .string "POKéMON are listed according to their\nnumber.$"
-DexText_ListByABC2::
- .string "Spotted and owned POKéMON are listed\nalphabetically.$"
-DexText_ListByHeavyToLightest::
- .string "Owned POKéMON are listed from the\nheaviest to the lightest.$"
-DexText_ListByLightToHeaviest::
- .string "Owned POKéMON are listed from the\nlightest to the heaviest.$"
-DexText_ListByTallToSmallest::
- .string "Owned POKéMON are listed from the\ntallest to the smallest.$"
-DexText_ListBySmallToTallest::
- .string "Owned POKéMON are listed from the\nsmallest to the tallest.$"
-DexText_Terminator5::
- .string "$"
-DexText_DontSpecify::
- .string "DON’T SPECIFY.$"
-DexText_None::
- .string "NONE$"
-DexText_RightPointingTriangle::
- .string "▶$" @ right-pointing triangle
-DexText_Terminator6::
- .string " $"
-
-gMenuText_WelcomeToHOFAndDexRating:: @ 840E44F
- .string "Welcome to the HALL OF FAME!$"
- .string "Spotted POKéMON: {STR_VAR_1}!\nOwned POKéMON: {STR_VAR_2}!\pPROF. BIRCH’s POKéDEX rating!\pPROF. BIRCH: Let’s see...\p$"
-
-gMenuText_HOFSaving:: @ 840E4CD
- .string "SAVING...\nDON’T TURN OFF THE POWER.$"
-
-gMenuText_HOFCorrupt:: @ 840E4F1
- .string "The HALL OF FAME data is corrupt.$"
-
-gMenuText_HOFNumber:: @ 840E513
- .string "HALL OF FAME No. $"
-
-gMenuText_HOFCongratulations:: @ 840E525
- .string "LEAGUE CHAMPION!\nCONGRATULATIONS!$"
-
-gOtherText_Number2:: @ 840E547
- .string "No. $"
-
-gOtherText_Level3:: @ 840E54C
- .string "Lv. $"
-
-gOtherText_IDNumber:: @ 840E551
- .string "IDNo. /$"
-
-gOtherText_Name:: @ 840E559
- .string "NAME /$"
-
-gOtherText_IDNumber2:: @ 840E560
- .string "IDNo. /$"
-
-gOtherText_BirchInTrouble:: @ 840E568
- .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}PROF. BIRCH is in trouble!\nRelease a POKéMON and rescue him!$"
-
-gOtherText_DoYouChoosePoke:: @ 840E5AB
- .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}Do you choose this POKéMON?$"
-
-gOtherText_Poke:: @ 840E5CD
- .string "POKéMON$"
-
-gSystemText_SaveErrorExchangeBackup:: @ 840E5D5
- .string "Save error.\pPlease exchange the\nbackup memory.$"
-
-gOtherText_FlyToWhere:: @ 840E604
- .string "FLY to where?$"
-
-OtherText_Use::
- .string "USE$"
-OtherText_Toss::
- .string "TOSS$"
-OtherText_Register::
- .string "REGISTER$"
-OtherText_Give2::
- .string "GIVE$"
-OtherText_CheckTag::
- .string "CHECK TAG$"
-OtherText_Confirm::
- .string "CONFIRM$"
-
-gOtherText_Walk:: @ 840E63B
- .string "WALK$"
-
-gUnknownText_Exit:: @ 840E640
- .string "EXIT$"
-
-gOtherText_CancelNoTerminator:: @ 840E645
- .string "CANCEL$"
-
-gOtherText_CancelWithTerminator:: @ 840E64C
- .string "$CANCEL$"
-
-OtherText_Item::
- .string "ITEM$"
-OtherText_Mail::
- .string "MAIL$"
-OtherText_Take2::
- .string "TAKE$"
-OtherText_Store::
- .string "STORE$"
-
-gOtherText_Check:: @ 840E669
- .string "CHECK$"
-
-gOtherText_None:: @ 840E66F
- .string "NONE$"
-
-gOtherText_ThreeQuestions2:: @ 840E674
- .string "???$"
-
-gOtherText_FiveQuestionsAndSlash:: @ 840E678
- .string "?????$"
- .string "/$"
-
-gOtherText_OneDash:: @ 840E680
- .string "-$"
-
-gOtherText_TwoDashes:: @ 840E682
- .string "--$"
-
-gOtherText_ThreeDashes2:: @ 840E685
- .string "---$"
-
-gOtherText_MaleSymbol2:: @ 840E689
- .string "♂$"
-
-gOtherText_FemaleSymbolAndLv:: @ 840E68B
- .string "♀$"
- .string "Lv.$"
-
-gOtherText_TallPlusAndRightArrow:: @ 840E691
- .string "{TALL_PLUS}$"
- .string "{RIGHT_ARROW}$"
-
-gMenuText_GoBackToPrev:: @ 840E697
- .string "Go back to the\nprevious menu.$"
-
-gOtherText_WhatWillYouDo:: @ 840E6B5
- .string "What would you like to do?$"
-
-gOtherText_xString1:: @ 840E6D0
- .string "×{STR_VAR_1}$"
-
-gOtherText_Berry2:: @ 840E6D4
- .string " BERRY$"
-
-gOtherText_Coins2:: @ 840E6DB
- .string "{STR_VAR_1} COINS$"
-
-gOtherText_CloseBag:: @ 840E6E4
- .string "CLOSE BAG$"
-
-OtherText_TheField3::
- .string "the field.$"
-OtherText_TheBattle::
- .string "the battle.$"
-OtherText_ThePokeList::
- .string "the POKéMON LIST.$"
-OtherText_TheShop::
- .string "the shop.$"
-OtherText_TheField::
- .string "the field.$"
-OtherText_TheField2::
- .string "the field.$"
-OtherText_ThePC::
- .string "the PC.$"
-
- .align 2
-gUnknown_0840E740:: @ 840E740
- .4byte OtherText_TheField3
- .4byte OtherText_TheBattle
- .4byte OtherText_ThePokeList
- .4byte OtherText_TheShop
- .4byte OtherText_TheField
- .4byte OtherText_TheField2
- .4byte OtherText_ThePC
-
-gOtherText_ReturnTo:: @ 840E75C
- .string "Return to$"
-
-gOtherText_WhatWillYouDo2:: @ 840E766
- .string "What would you\nlike to do?$"
-
-gOtherText_CantWriteMail:: @ 840E781
- .string "You can’t write\nMAIL here.$"
-
-gOtherText_NoPokemon:: @ 840E79C
- .string "There is no\nPOKéMON.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_SwitchWhichItem:: @ 840E7B3
- .string "Switch with which\nitem?$"
-
-gOtherText_CantBeHeld:: @ 840E7CB
- .string "{STR_VAR_1} can’t be held.$"
-
-gOtherText_CantBeHeldHere:: @ 840E7DD
- .string "{STR_VAR_1} can’t be held here.$"
-
-gOtherText_HowManyToDeposit:: @ 840E7F4
- .string "How many do you\nwant to deposit?$"
-
-gOtherText_DepositedItems:: @ 840E815
- .string "Deposited {STR_VAR_2}\n{STR_VAR_1}(s).$"
-
-gOtherText_NoRoomForItems:: @ 840E829
- .string "There’s no room to\nstore items.$"
-
-gOtherText_CantStoreSomeoneItem:: @ 840E849
- .string "You can’t store\nsomeone else’s item\nin the PC.$"
-
-gOtherText_TooImportant:: @ 840E878
- .string "That’s much too\nimportant to toss\nout!$"
-
-gOtherText_HowManyToToss:: @ 840E89F
- .string "Toss out how many?$"
-
-gOtherText_ThrewAwayItem:: @ 840E8B2
- .string "Threw away {STR_VAR_2}\n{STR_VAR_1}(s).$"
-
-gOtherText_OkayToThrowAwayPrompt:: @ 840E8C7
- .string "Is it okay to\nthrow away {STR_VAR_2}\n{STR_VAR_1}(s)?$"
-
-gOtherText_DadsAdvice:: @ 840E8EA
- .string "DAD’s advice...\n{PLAYER}, there’s a time and place for\leverything!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CantGetOffBike:: @ 840E929
- .string "You can’t dismount your BIKE here.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_ItemfinderResponding:: @ 840E94E
- .string "Oh!\nThe machine’s responding!\pThere’s an item buried around here!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_ItemfinderItemUnderfoot:: @ 840E992
- .string "The machine’s indicating something\nright underfoot!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_NoResponse:: @ 840E9C8
- .string "... ... ... ... Nope!\nThere’s no response.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_Coins3:: @ 840E9F5
- .string "Your COINS:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_BootedTM:: @ 840EA06
- .string "Booted up a TM.$"
-
-gOtherText_BootedHM:: @ 840EA16
- .string "Booted up an HM.$"
-
-gOtherText_ContainsMove:: @ 840EA27
- .string "It contained\n{STR_VAR_1}.\pTeach {STR_VAR_1}\nto a POKéMON?$"
-
-gOtherText_UsedItem:: @ 840EA4F
- .string "{PLAYER} used the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_RepelLingers:: @ 840EA61
- .string "But the effects of a REPEL lingered\nfrom earlier.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_UsedFlute:: @ 840EA95
- .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be lured.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_UsedRepel:: @ 840EAC3
- .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be repelled.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_BoxIsFull:: @ 840EAF4
- .string "The BOX is full.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_Size:: @ 840EB07
- .string "SIZE /$"
-
-gOtherText_Firm:: @ 840EB0E
- .string "FIRM /$"
-
-gContestStatsText_Unknown1:: @ 840EB15
- .string "{STR_VAR_1}.{STR_VAR_2}”$"
-
-ContestStatsText_VerySoft::
- .string "Very soft$"
-ContestStatsText_Soft::
- .string "Soft$"
-ContestStatsText_Hard::
- .string "Hard$"
-ContestStatsText_VeryHard::
- .string "Very hard$"
-ContestStatsText_SuperHard::
- .string "Super hard$"
-ContestStatsText_RedPokeBlock::
- .string "RED {POKEBLOCK}$"
-ContestStatsText_BluePokeBlock::
- .string "BLUE {POKEBLOCK}$"
-ContestStatsText_PinkPokeBlock::
- .string "PINK {POKEBLOCK}$"
-ContestStatsText_GreenPokeBlock::
- .string "GREEN {POKEBLOCK}$"
-ContestStatsText_YellowPokeBlock::
- .string "YELLOW {POKEBLOCK}$"
-ContestStatsText_PurplePokeBlock::
- .string "PURPLE {POKEBLOCK}$"
-ContestStatsText_IndigoPokeBlock::
- .string "INDIGO {POKEBLOCK}$"
-ContestStatsText_BrownPokeBlock::
- .string "BROWN {POKEBLOCK}$"
-ContestStatsText_LiteBluePokeBlock::
- .string "LITEBLUE {POKEBLOCK}$"
-ContestStatsText_OlivePokeBlock::
- .string "OLIVE {POKEBLOCK}$"
-ContestStatsText_GrayPokeBlock::
- .string "GRAY {POKEBLOCK}$"
-ContestStatsText_BlackPokeBlock::
- .string "BLACK {POKEBLOCK}$"
-ContestStatsText_WhitePokeBlock::
- .string "WHITE {POKEBLOCK}$"
-ContestStatsText_GoldPokeBlock::
- .string "GOLD {POKEBLOCK}$"
-
-gContestStatsText_Spicy:: @ 840EBED
- .string "SPICY$"
-
-gContestStatsText_Dry:: @ 840EBF3
- .string "DRY$"
-
-gContestStatsText_Sweet:: @ 840EBF7
- .string "SWEET$"
-
-gContestStatsText_Bitter:: @ 840EBFD
- .string "BITTER$"
-
-gContestStatsText_Sour:: @ 840EC04
- .string "SOUR$"
- .string "TASTY$" @ tasty is probably unused, but feel isn't.
- .string "FEEL$"
-
-gContestStatsText_StowCase:: @ 840EC14
- .string "Stow CASE.$"
-
-gContestStatsText_ThrowAwayPrompt:: @ 840EC1F
- .string "Throw away this\n{STR_VAR_1}?$"
-
-gContestStatsText_WasThrownAway:: @ 840EC33
- .string "The {STR_VAR_1}\nwas thrown away.$"
-
-gContestStatsText_NormallyAte:: @ 840EC4B
- .string "{STR_VAR_1} ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
-gContestStatsText_HappilyAte:: @ 840EC5C
- .string "{STR_VAR_1} happily ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
-gContestStatsText_DisdainfullyAte:: @ 840EC75
- .string "{STR_VAR_1} disdainfully ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
-MartText_Buy::
- .string "BUY$"
-MartText_Sell::
- .string "SELL$"
-MartText_Quit2::
- .string "QUIT$"
-
-gOtherText_QuitShopping:: @ 840ECA1
- .string "Quit shopping.$"
-
-gOtherText_HowManyYouWant:: @ 840ECB0
- .string "{STR_VAR_1}? Certainly.\nHow many would you like?$"
-
-gOtherText_ThatWillBe:: @ 840ECD8
- .string "{STR_VAR_1}? And you wanted {STR_VAR_2}?\nThat will be ¥{STR_VAR_3}.$"
-
-gOtherText_ThatWillBe2:: @ 840ED01
- .string "{STR_VAR_1}, is it?\nThat’ll be ¥{STR_VAR_2}. Do you want it?$"
-
-gOtherText_ThatWillBe3:: @ 840ED2C
- .string "You wanted {STR_VAR_1}?\nThat’ll be ¥{STR_VAR_2}. Will that be okay?$"
-
-gOtherText_HereYouGo:: @ 840ED5E
- .string "Here you go!\nThank you very much.$"
-
-gOtherText_HereYouGo2:: @ 840ED80
- .string "Thank you!\nI’ll send it to your home PC.$"
-
-gOtherText_HereYouGo3:: @ 840EDA9
- .string "Thanks!\nI’ll send it to your PC at home.$"
-
-gOtherText_NotEnoughMoney:: @ 840EDD2
- .string "You don’t have enough money.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_NoRoomFor:: @ 840EDF1
- .string "You have no more room for items.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_SpaceForIsFull:: @ 840EE14
- .string "The space for {STR_VAR_1} is full.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_AnythingElse:: @ 840EE30
- .string "Is there anything else I can help\nyou with?$"
-
-gOtherText_CanIHelpYou:: @ 840EE5C
- .string "Can I help you with anything else?$"
-
-gOtherText_FreePremierBall:: @ 840EE7F
- .string "I’ll throw in a PREMIER BALL, too.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CantBuyThat:: @ 840EEA4
- .string "{STR_VAR_2}? Oh, no.\nI can’t buy that.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_HowManyToSell:: @ 840EEC4
- .string "{STR_VAR_2}?\nHow many would you like to sell?$"
-
-gOtherText_CanPay:: @ 840EEE9
- .string "I can pay ¥{STR_VAR_1}.\nWould that be okay?$"
-
-gOtherText_SoldItem:: @ 840EF0C
- .string "Turned over the {STR_VAR_2}\nand received ¥{STR_VAR_1}.$"
-
-OtherText_Money::
- .string "¥{STR_VAR_1}$"
-OtherText_Shift::
- .string "SHIFT$"
-OtherText_SendOut::
- .string "SEND OUT$"
-OtherText_Switch2::
- .string "SWITCH$"
-OtherText_Summary::
- .string "SUMMARY$"
-OtherText_Moves::
- .string "MOVES$"
-OtherText_Enter2::
- .string "ENTER$"
-OtherText_NoEntry::
- .string "NO ENTRY$"
-OtherText_Take::
- .string "TAKE$"
-OtherText_Read2::
- .string "READ$"
-
-gOtherText_Hp2:: @ 840EF72
- .string "HP$"
-
-gOtherText_SpAtk2:: @ 840EF75
- .string "SP. ATK$"
-
-gOtherText_SpDef2:: @ 840EF7D
- .string "SP. DEF$"
-
-gOtherText_WontHaveAnyEffect:: @ 840EF85
- .string "It won’t have any effect.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CantUseOnPoke:: @ 840EFA1
- .if REVISION >= 1
- .string "This can’t be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}$"
- .else
- .string "This item can’t be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}$"
- .endif
-
-gOtherText_CantBeSwitched:: @ 840EFCC
- .string "{STR_VAR_1} can’t be switched\nout!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_AlreadyBattle:: @ 840EFE8
- .string "{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_AlreadySelected:: @ 840F003
- .string "{STR_VAR_1} has already been\nselected.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_NoEnergyLeft:: @ 840F023
- .string "{STR_VAR_1} has no energy\nleft to battle!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CantSwitchPokeWithYours:: @ 840F046
- .string "You can’t switch {STR_VAR_1}’s\nPOKéMON with one of yours!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_EGGCantBattle:: @ 840F079
- .string "An EGG can’t battle!{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CantBeUsedBadge:: @ 840F090
- .string "This can’t be used until a new\nBADGE is obtained.$"
-
-gOtherText_NoMoreThreePoke:: @ 840F0C2
- .string "No more than three POKéMON\nmay enter.$"
-
-gOtherText_SendRemovedMailPrompt:: @ 840F0E8
- .string "Send the removed MAIL to\nyour PC?$"
-
-gOtherText_MailWasSent:: @ 840F10A
- .string "The MAIL was sent to your PC.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_MailboxIsFull:: @ 840F12A
- .string "Your PC’s MAILBOX is full.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_MailRemovedMessageLost:: @ 840F147
- .string "If the MAIL is removed, the\nmessage will be lost. Okay?$"
-
-gOtherText_MailMustBeRemoved:: @ 840F17F
- .string "MAIL must be removed before\nholding an item.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_WasGivenToHold:: @ 840F1AE
- .string "{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_AlreadyHolding:: @ 840F1CD
- .string "{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?$"
-
-gOtherText_NotHoldingAnything:: @ 840F213
- .string "{STR_VAR_1} isn’t\nholding anything.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_ReceivedTheThingFrom:: @ 840F230
- .string "Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_MailTaken:: @ 840F24B
- .string "MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_TakenAndReplaced:: @ 840F26E
- .string "The {STR_VAR_2} was taken and\nreplaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_PokeHoldingItemCantMail:: @ 840F29B
- .string "This POKéMON is holding an item.\nIt cannot hold MAIL.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_MailTransferredMailbox:: @ 840F2D3
- .string "MAIL was transferred from\nthe MAILBOX.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_BagFullCannotRemoveItem:: @ 840F2FC
- .string "The BAG is full. The POKéMON’s\nitem could not be removed.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_LearnedMove:: @ 840F338
- .string "{STR_VAR_1} learned\n{STR_VAR_2}!$"
-
-gOtherText_NotCompatible:: @ 840F347
- .string "{STR_VAR_1} and {STR_VAR_2}\nare not compatible.\p{STR_VAR_2} can’t be learned.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_WantsToLearn:: @ 840F37C
- .string "{STR_VAR_1} wants to learn the\nmove {STR_VAR_2}.\pHowever, {STR_VAR_1} already\nknows four moves.\pShould a move be deleted and\nreplaced with {STR_VAR_2}?$"
-
-gOtherText_StopTryingTo:: @ 840F3F0
- .string "Stop trying to teach\n{STR_VAR_2}?$"
-
-gOtherText_DidNotLearnMove2:: @ 840F409
- .string "{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_WhichMoveToForget2:: @ 840F429
- .string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_ForgetMove123_2:: @ 840F44B
- .string "{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}... {PAUSE 15}... {PAUSE 15}... {PAUSE 15}{PLAY_SE SE_KON}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd...{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_AlreadyKnows:: @ 840F49E
- .string "{STR_VAR_1} already knows\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_HPRestoredBy:: @ 840F4B5
- .string "{STR_VAR_1}’s HP was restored by\n{STR_VAR_2} points.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CuredPoisoning:: @ 840F4DA
- .string "{STR_VAR_1} was cured of its\npoisoning.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_CuredParalysis:: @ 840F4FB
- .string "{STR_VAR_1} was cured of\nparalysis.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_WokeUp:: @ 840F518
- .string "{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_BurnHealed:: @ 840F526
- .string "{STR_VAR_1}’s burn was healed.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_ThawedOut:: @ 840F53E
- .string "{STR_VAR_1} was thawed out.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_PPRestored:: @ 840F553
- .string "PP was restored.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_RegainedHealth:: @ 840F566
- .string "{STR_VAR_1} regained health.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_BecameHealthy:: @ 840F57C
- .string "{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_PPIncreased:: @ 840F591
- .string "{STR_VAR_1}’s PP increased.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_ElevatedTo:: @ 840F5A6
- .string "{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}.$"
-
-gOtherText_WasRaised:: @ 840F5C1
- .string "{STR_VAR_1}’s {STR_VAR_2} was\nraised.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_SnapConfusion:: @ 840F5D7
- .string "{STR_VAR_1} snapped out of its\nconfusion.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_GotOverLove:: @ 840F5FA
- .string "{STR_VAR_1} got over its\ninfatuation.{PAUSE_UNTIL_PRESS}$"
-
-OtherText_ChoosePoke::
- .string "Choose a POKéMON.$"
-OtherText_MovePokeTo::
- .string "Move to where?$"
-OtherText_TeachWhat::
- .string "Teach which POKéMON?$"
-OtherText_UseWhat::
- .string "Use on which POKéMON?$"
-OtherText_GiveWhat::
- .string "Give to which POKéMON?$"
-OtherText_DoWhat::
- .string "Do what with {STR_VAR_1}?$"
-OtherText_NothingToCut::
- .string "There’s nothing to CUT.$"
-OtherText_CantSurf::
- .string "You can’t SURF here.$"
-OtherText_AlreadySurfing::
- .string "You’re already SURFING.$"
-OtherText_CantUseThatHere::
- .string "Can’t use that here.$"
-OtherText_RestoreWhatMove::
- .string "Restore which move?$"
-OtherText_BoostPP::
- .string "Boost PP of which move?$"
-OtherText_DoWhatWithItem::
- .string "Do what with an item?$"
-OtherText_NoPokeForBattle::
- .string "No POKéMON for battle!$"
-OtherText_ChoosePoke2::
- .string "Choose a POKéMON.$"
-OtherText_NotEnoughHP::
- .string "Not enough HP...$"
-OtherText_ThreePokeNeeded::
- .string "Three POKéMON are needed.$"
-OtherText_PokeCantBeSame::
- .string "POKéMON can’t be the same.$"
-OtherText_NoIdenticalHoldItems::
- .string "No identical hold items.$"
-OtherText_TeachWhichPoke::
- .string "Teach which POKéMON?$"
-
-gOtherText_Attack:: @ 840F7C6
- .string "ATTACK$"
-
-gOtherText_Defense:: @ 840F7CD
- .string "DEFENSE$"
-
-gOtherText_SpAtk:: @ 840F7D5
- .string "SP. ATK$"
-
-gOtherText_SpDef:: @ 840F7DD
- .string "SP. DEF$"
-
-gOtherText_Speed:: @ 840F7E5
- .string "SPEED$"
-
-gOtherText_HP:: @ 840F7EB
- .string "HP$"
-
-gOtherText_Terminator18:: @ 840F7EE
- .string "$"
-
-gOtherText_OriginalTrainer:: @ 840F7EF
- .string "OT/$"
-
-gOtherText_Type2:: @ 840F7F3
- .string "TYPE/$"
-
-gOtherText_Power2:: @ 840F7F9
- .string "POWER$"
-
-gOtherText_Accuracy2:: @ 840F7FF
- .string "ACCURACY$"
-
-gOtherText_Appeal2:: @ 840F808
- .string "APPEAL$"
-
-gOtherText_Jam2:: @ 840F80F
- .string "JAM$"
-
-gOtherText_Status:: @ 840F813
- .string "STATUS$"
-
-gOtherText_ExpPoints:: @ 840F81A
- .string "EXP. POINTS$"
-
-gOtherText_NextLv:: @ 840F826
- .string "NEXT LV.$"
-
-gOtherText_Ribbons00:: @ 840F82F
- .string "RIBBONS: 00$"
-
-OtherText_Event::
- .string "EVENT$"
-OtherText_Switch::
- .string "SWITCH$"
-OtherText_PokeInfo::
- .string "POKéMON INFO$"
-OtherText_PokeSkills::
- .string "POKéMON SKILLS$"
-OtherText_BattleMoves::
- .string "BATTLE MOVES$"
-OtherText_ContestMoves::
- .string "C0NTEST MOVES$" @why the l33t 0, that's stupid
-OtherText_Info::
- .string "INFO$"
-
-gOtherText_EggLongTime:: @ 840F884
- .string "It looks like this EGG will\ntake a long time to hatch.$"
-
-gOtherText_EggSomeTime:: @ 840F8BB
- .string "What will hatch from this?\nIt will take some time.$"
-
-gOtherText_EggSoon:: @ 840F8EE
- .string "It moves occasionally.\nIt should hatch soon.$"
-
-gOtherText_EggAbout:: @ 840F91B
- .string "It’s making sounds.\nIt’s about to hatch!$"
-
-gOtherText_CantForgetHMs:: @ 840F944
- .string "HM moves can’t be\nforgotten now.$"
-
-gOtherText_PlayersBase:: @ 840F965
- .string "’s BASE$"
-
-gOtherText_OkayToDeleteFromRegistry:: @ 840F96D
- .string "Is it okay to delete {STR_VAR_1}\nfrom the REGISTRY?$"
-
-gOtherText_RegisteredDataDeleted:: @ 840F998
- .string "The registered data was deleted.{PAUSE_UNTIL_PRESS}$"
-
-gSecretBaseText_NoRegistry:: @ 840F9BB
- .string "There is no REGISTRY.{PAUSE_UNTIL_PRESS}$"
-
-SecretBaseText_DelRegist::
- .string "DEL REGIST.$"
-SecretBaseText_Decorate::
- .string "DECORATE$"
-SecretBaseText_PutAway::
- .string "PUT AWAY$"
-SecretBaseText_Toss::
- .string "TOSS$"
-SecretBaseText_PutOutDecor::
- .string "Put out the selected decoration item.$"
-SecretBaseText_StoreChosenDecor::
- .string "Store the chosen decoration in the PC.$"
-SecretBaseText_ThrowAwayDecor::
- .string "Throw away unwanted decorations.$"
-
-gSecretBaseText_NoDecors:: @ 840FA64
- .string "There are no decorations.{PAUSE_UNTIL_PRESS}$"
-
-SecretBaseText_Desk::
- .string "DESK$"
-SecretBaseText_Chair::
- .string "CHAIR$"
-SecretBaseText_Plant::
- .string "PLANT$"
-SecretBaseText_Ornament::
- .string "ORNAMENT$"
-SecretBaseText_Mat::
- .string "MAT$"
-SecretBaseText_Poster::
- .string "POSTER$"
-SecretBaseText_Doll::
- .string "DOLL$"
-SecretBaseText_Cushion::
- .string "CUSHION$"
-
-gSecretBaseText_GoldRank:: @ 840FAB2
- .string "GOLD$"
-
-gSecretBaseText_SilverRank:: @ 840FAB7
- .string "SILVER$"
-
-gSecretBaseText_PlaceItHere:: @ 840FABE
- .string "Place it here?$"
-
-gSecretBaseText_CantBePlacedHere:: @ 840FACD
- .string "It can’t be placed here.$"
-
-gSecretBaseText_CancelDecorating:: @ 840FAE6
- .string "Cancel decorating?$"
-
-gSecretBaseText_InUseAlready:: @ 840FAF9
- .string "This is in use already.$"
-
-gSecretBaseText_NoMoreDecor:: @ 840FB11
- .string "No more decorations can be placed.\nThe most that can be placed is {STR_VAR_1}.$"
-
-gSecretBaseText_NoMoreDecor2:: @ 840FB57
- .string "No more decorations can be placed.\nThe most that can be placed is {STR_VAR_1}.$"
- .string "This can’t be placed here.\nIt must be on a DESK, etc.$"
-
-gSecretBaseText_DecorCantPlace:: @ 840FBD3
- .string "This decoration can’t be placed in\nyour own room.$"
-
-gSecretBaseText_DecorInUse:: @ 840FC05
- .string "This decoration is in use.\nIt can’t be thrown away.$"
-
-gSecretBaseText_WillBeDiscarded:: @ 840FC39
- .string "This {STR_VAR_1} will be discarded.\nIs that okay?$"
-
-gSecretBaseText_DecorThrownAway:: @ 840FC62
- .string "The decoration item was thrown away.$"
-
-gSecretBaseText_StopPuttingAwayDecor:: @ 840FC87
- .string "Stop putting away decorations?$"
-
-gSecretBaseText_NoDecor:: @ 840FCA6
- .string "There is no decoration item here.$"
-
-gSecretBaseText_ReturnDecor:: @ 840FCC8
- .string "Return this decoration to the PC?$"
-
-gSecretBaseText_DecorReturned:: @ 840FCEA
- .string "The decoration was returned to the PC.$"
-
-gSecretBaseText_NoDecorInUse:: @ 840FD11
- .string "There are no decorations in use.{PAUSE_UNTIL_PRESS}$"
-
-SecretBaseText_Tristan::
- .string "TRISTAN$"
-SecretBaseText_Philip::
- .string "PHILIP$"
-SecretBaseText_Dennis::
- .string "DENNIS$"
-SecretBaseText_Roberto::
- .string "ROBERTO$"
-SecretBaseText_TurnOff::
- .string "TURN OFF$"
-SecretBaseText_Decoration::
- .string "DECORATION$"
-SecretBaseText_ItemStorage::
- .string "ITEM STORAGE$"
-
-gPCText_Mailbox:: @ 840FD73
- .string "MAILBOX$"
-
-PCText_DepositItem::
- .string "DEPOSIT ITEM$"
-PCText_WithdrawItem::
- .string "WITHDRAW ITEM$"
-PCText_TossItem::
- .string "TOSS ITEM$"
-PCText_StoreItems::
- .string "Store items in the PC.$"
-PCText_TakeOutItems::
- .string "Take out items from the PC.$"
-PCText_ThrowAwayItems::
- .string "Throw away items stored in the PC.$"
-
-gOtherText_NoItems:: @ 840FDF6
- .string "There are no items.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_NoMoreRoom:: @ 840FE0C
- .string "There is no more\nroom in the BAG.$"
-
-gOtherText_HowManyToWithdraw:: @ 840FE2E
- .string "How many do you\nwant to withdraw?$"
-
-gOtherText_WithdrewThing:: @ 840FE50
- .string "Withdrew {STR_VAR_2}\n{STR_VAR_1}(s).$"
-
-OtherText_Read::
- .string "READ$"
-
-gOtherText_MoveToBag:: @ 840FE68
- .string "MOVE TO BAG$"
-
-OtherText_Give::
- .string "GIVE$"
-
-gOtherText_NoMailHere:: @ 840FE79
- .string "There’s no MAIL here.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_WhatWillYouDoMail:: @ 840FE91
- .string "What would you like to do with\n{STR_VAR_1}’s MAIL?$"
-
-gOtherText_MessageWillBeLost:: @ 840FEBB
- .string "The message will be lost.\nIs that okay?$"
-
-gOtherText_BagIsFull:: @ 840FEE3
- .string "The BAG is full.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_MailWasReturned:: @ 840FEF6
- .string "The MAIL was returned to the BAG\nwith its message erased.{PAUSE_UNTIL_PRESS}$"
-
-gOtherText_Dad:: @ 840FF32
- .string "DAD$"
-
-gOtherText_Mom:: @ 840FF36
- .string "MOM$"
-
-gOtherText_Wallace:: @ 840FF3A
- .string "WALLACE$"
-
-gOtherText_Steven:: @ 840FF42
- .string "STEVEN$"
-
-gOtherText_Brawly:: @ 840FF49
- .string "BRAWLY$"
-
-gOtherText_Winona:: @ 840FF50
- .string "WINONA$"
-
-gOtherText_Phoebe:: @ 840FF57
- .string "PHOEBE$"
-
-gOtherText_Glacia:: @ 840FF5E
- .string "GLACIA$"
-
-gContestText_ContestWinner:: @ 840FF65
- .string "CONTEST WINNER\n$"
-
-gOtherText_Unknown1:: @ 840FF75
- .string "’s $"
-
-OtherText_Cool::
- .string "COOL $"
-OtherText_Beauty2::
- .string "BEAUTY $"
-OtherText_Cute::
- .string "CUTE $"
-OtherText_Smart::
- .string "SMART $"
-OtherText_Tough::
- .string "TOUGH $"
-OtherText_NonstopSuperCool::
- .string "Nonstop super-cool -\nthe inestimable $"
-OtherText_Terminator6::
- .string "$"
-OtherText_GoodLookingPoke::
- .string "Hey, there!\nThe good-looking POKéMON $"
-OtherText_Terminator7::
- .string "$"
-OtherText_MarvelousGreat::
- .string "The marvelous, wonderful, and\nvery great $"
-OtherText_Terminator8::
- .string "$"
-OtherText_CenturyLastVenus::
- .string "This century’s last Venus -\nthe beautiful $"
-OtherText_Terminator9::
- .string "$"
-OtherText_Terminator10::
- .string "$"
-OtherText_DazzlingSlime::
- .string "’s dazzling,\nglittering smile$"
-OtherText_PokeCenterIdol::
- .string "POKéMON CENTER’s super idol -\nthe incomparable $"
-OtherText_Terminator11::
- .string "$"
-OtherText_LovelyAndSweet::
- .string "The lovely and sweet $"
-OtherText_Terminator12::
- .string "$"
-OtherText_ThePretty::
- .string "The pretty $"
-OtherText_WinningPortrait::
- .string "’s\nwinning portrait$"
-OtherText_GiveUsWink::
- .string "Give us a wink!\nThe cutie POKéMON $"
-OtherText_Terminator13::
- .string "$"
-OtherText_SmartnessMaestro::
- .string "The smartness maestro -\nThe wise POKéMON $"
-OtherText_Terminator14::
- .string "$"
-OtherText_ChosenPokeAmong::
- .string "The chosen POKéMON -\nThe one among POKéMON $"
-OtherText_Terminator15::
- .string "$"
-OtherText_TheExcellent::
- .string "The excellent $"
-OtherText_ItsMomentOfElegance::
- .string "’s\nmoment of elegance$"
-OtherText_PowerfullyMuscular::
- .string "The powerfully muscular\nspeedster $"
-OtherText_Terminator16::
- .string "$"
-OtherText_StrongErEst::
- .string "The strong, stronger, and\nstrongest $"
-OtherText_Terminator17::
- .string "$"
-OtherText_MightyTough::
- .string "The mighty tough\nhyper POKéMON $"
-OtherText_Exclamation::
- .string "!$"
-OtherText_Petalburg::
- .string "PETALBURG$"
-OtherText_Slateport::
- .string "SLATEPORT$"
-OtherText_Littleroot::
- .string "LITTLEROOT$"
-OtherText_Lilycove::
- .string "LILYCOVE$"
-OtherText_Dewford::
- .string "DEWFORD$"
-OtherText_Enter::
- .string "ENTER$"
-OtherText_Info3::
- .string "INFO$"
-OtherText_WhatsAContest::
- .string "What’s a CONTEST?$"
-OtherText_TypesOfContest::
- .string "Types of CONTESTS$"
-OtherText_Ranks::
- .string "Ranks$"
-OtherText_Judging::
- .string "Judging$"
-OtherText_CoolContest::
- .string "COOL CONTEST$"
-OtherText_BeautyContest::
- .string "BEAUTY CONTEST$"
-OtherText_CuteContest::
- .string "CUTE CONTEST$"
-OtherText_SmartContest::
- .string "SMART CONTEST$"
-OtherText_ToughContest::
- .string "TOUGH CONTEST$"
-OtherText_Decoration::
- .string "DECORATION$"
-OtherText_PackUp::
- .string "PACK UP$"
-OtherText_Count::
- .string "COUNT$"
-OtherText_Registry::
- .string "REGISTRY$"
-OtherText_Information::
- .string "INFORMATION$"
-OtherText_Mach::
- .string "MACH$"
-OtherText_Acro::
- .string "ACRO$"
-OtherText_Poison::
- .string "PSN$"
-OtherText_Paralysis::
- .string "PAR$"
-OtherText_Sleep::
- .string "SLP$"
-OtherText_Burn::
- .string "BRN$"
-OtherText_Frozen::
- .string "FRZ$"
-OtherText_Quit::
- .string "QUIT$"
-OtherText_SawIt::
- .string "Saw it$"
-OtherText_NotYet::
- .string "Not yet$"
-OtherText_Yes::
- .string "YES$"
-OtherText_No::
- .string "NO$"
-OtherText_Info2::
- .string "INFO$"
-OtherText_SingleBattle::
- .string "SINGLE BATTLE$"
-OtherText_DoubleBattle::
- .string "DOUBLE BATTLE$"
-OtherText_MultiBattle::
- .string "MULTI BATTLE$"
-OtherText_MrBriney::
- .string "MR. BRINEY$"
-OtherText_MakeAChallenge::
- .string "Make a challenge.$"
-OtherText_ObtainInformation::
- .string "Obtain information.$"
-OtherText_Lv50_2::
- .string "LV. 50$"
-OtherText_Lv100_2::
- .string "LV. 100$"
-OtherText_Zigzagoon::
- .string "ZIGZAGOON$"
-OtherText_Nincada::
- .string "NINCADA$"
-OtherText_Poochyena::
- .string "POOCHYENA$"
-OtherText_Nincada2::
- .string "NINCADA$"
-OtherText_Lotad::
- .string "LOTAD$"
-OtherText_Roselia::
- .string "ROSELIA$"
-OtherText_Shroomish::
- .string "SHROOMISH$"
-OtherText_Nincada3::
- .string "NINCADA$"
-OtherText_Surskit::
- .string "SURSKIT$"
-OtherText_Treecko::
- .string "TREECKO$"
-OtherText_Torchic::
- .string "TORCHIC$"
-OtherText_Mudkip::
- .string "MUDKIP$"
-OtherText_Seedot::
- .string "SEEDOT$"
-OtherText_Shroomish2::
- .string "SHROOMISH$"
-OtherText_Spinda::
- .string "SPINDA$"
-OtherText_Shroomish3::
- .string "SHROOMISH$"
-OtherText_Zigzagoon2::
- .string "ZIGZAGOON$"
-OtherText_Wurmple::
- .string "WURMPLE$"
-OtherText_PokeBall::
- .string "POKé BALL$"
-OtherText_SuperPotion::
- .string "SUPER POTION$"
-OtherText_SamePrice::
- .string "Same price$"
-OtherText_Yen135::
- .string "¥135$"
-OtherText_Yen155::
- .string "¥155$"
-OtherText_Yen175::
- .string "¥175$"
-OtherText_CostMore::
- .string "They will cost more.$"
-OtherText_CostLess::
- .string "They will cost less.$"
-OtherText_SamePrice2::
- .string "Same price$"
-OtherText_MaleSymbol::
- .string "♂$"
-OtherText_FemaleSymbol::
- .string "♀$"
-OtherText_Neither::
- .string "Neither$"
-OtherText_Males::
- .string "Males$"
-OtherText_Females::
- .string "Females$"
-OtherText_SameNumber::
- .string "Same number$"
-OtherText_Male::
- .string "Male$"
-OtherText_Female::
- .string "Female$"
-OtherText_ItDepends::
- .string "It depends$"
-OtherText_Six2::
- .string "6$"
-OtherText_Eight2::
- .string "8$"
-OtherText_Ten::
- .string "10$"
-OtherText_One::
- .string "1$"
-OtherText_Two::
- .string "2$"
-OtherText_Three::
- .string "3$"
-OtherText_Six::
- .string "6$"
-OtherText_Seven::
- .string "7$"
-OtherText_Eight::
- .string "8$"
-OtherText_FreshWater::
- .string "FRESH WATER{CLEAR_TO 0x48}¥200$"
-OtherText_SodaPop::
- .string "SODA POP{CLEAR_TO 0x48}¥300$"
-OtherText_Lemonade::
- .string "LEMONADE{CLEAR_TO 0x48}¥350$"
-OtherText_HowToRide::
- .string "HOW TO RIDE$"
-OtherText_HowToTurn::
- .string "HOW TO TURN$"
-OtherText_SandySlopes::
- .string "SANDY SLOPES$"
-OtherText_Wheelies::
- .string "WHEELIES$"
-OtherText_BunnyHops::
- .string "BUNNY-HOPS$"
-OtherText_Jumping::
- .string "JUMPING$"
-OtherText_Satisfied::
- .string "Satisfied$"
-OtherText_Dissatisfied::
- .string "Dissatisfied$"
-OtherText_Deepseatooth::
- .string "DEEPSEATOOTH$"
-OtherText_Deepseascale::
- .string "DEEPSEASCALE$"
-OtherText_BlueFlute2::
- .string "BLUE FLUTE$"
-OtherText_YellowFlute2::
- .string "YELLOW FLUTE$"
-OtherText_RedFlute2::
- .string "RED FLUTE$"
-OtherText_WhiteFlute2::
- .string "WHITE FLUTE$"
-OtherText_BlackFlute2::
- .string "BLACK FLUTE$"
-OtherText_GlassChair::
- .string "GLASS CHAIR$"
-OtherText_GlassDesk::
- .string "GLASS DESK$"
-OtherText_TreeckoDoll::
- .string "TREECKO DOLL 1,000 COINS$"
-OtherText_TorchicDoll::
- .string "TORCHIC DOLL 1,000 COINS$"
-OtherText_MudkipDoll::
- .string "MUDKIP DOLL 1,000 COINS$"
-OtherText_50Coins::
- .string " 50 COINS ¥1,000$"
-OtherText_500Coins::
- .string "500 COINS ¥10,000$"
-OtherText_Excellent::
- .string "Excellent!$"
-OtherText_NotSoHot::
- .string "Not so hot$"
-OtherText_RedShard::
- .string "RED SHARD$"
-OtherText_YellowShard::
- .string "YELLOW SHARD$"
-OtherText_BlueShard::
- .string "BLUE SHARD$"
-OtherText_GreenShard::
- .string "GREEN SHARD$"
-OtherText_BattleTower::
- .string "BATTLE TOWER$"
-OtherText_Right::
- .string "Right$"
-OtherText_Left::
- .string "Left$"
-OtherText_TM32::
- .string "TM32 1,500 COINS$"
-OtherText_TM29::
- .string "TM29 3,500 COINS$"
-OtherText_TM35::
- .string "TM35 4,000 COINS$"
-OtherText_TM24::
- .string "TM24 4,000 COINS$"
-OtherText_TM13::
- .string "TM13 4,000 COINS$"
-OtherText_1F_2::
- .string "1F$"
-OtherText_2F_2::
- .string "2F$"
-OtherText_3F_2::
- .string "3F$"
-OtherText_4F_2::
- .string "4F$"
-OtherText_5F_2::
- .string "5F$"
-OtherText_Cool2::
- .string "COOL$"
-OtherText_Beauty3::
- .string "BEAUTY$"
-OtherText_Cute2::
- .string "CUTE$"
-OtherText_Smart2::
- .string "SMART$"
-OtherText_Tough2::
- .string "TOUGH$"
-OtherText_Normal::
- .string "NORMAL$"
-OtherText_Super::
- .string "SUPER$"
-OtherText_Hyper::
- .string "HYPER$"
-OtherText_Master::
- .string "MASTER$"
-OtherText_Cool3::
- .string "COOL$"
-OtherText_Beauty4::
- .string "BEAUTY$"
-OtherText_Cute3::
- .string "CUTE$"
-OtherText_Smart3::
- .string "SMART$"
-OtherText_Tough3::
- .string "TOUGH$"
-OtherText_Items::
- .string "ITEMS$"
-OtherText_KeyItems::
- .string "KEY ITEMS$"
-OtherText_Balls::
- .string "BALLS$"
-OtherText_TMsHMs::
- .string "TMs & HMs$"
-OtherText_Berries::
- .string "BERRIES$"
-
-gPCText_SomeonesPC:: @ 8410753
- .string "SOMEONE’S PC$"
-
-gPCText_LanettesPC:: @ 8410760
- .string "LANETTE’S PC$"
-
-gPCText_PlayersPC:: @ 841076D
- .string "{PLAYER}’s PC$"
-
-gPCText_HallOfFame:: @ 8410775
- .string "HALL OF FAME$"
-
-gPCText_LogOff:: @ 8410782
- .string "LOG OFF$"
-
-gOtherText_99Times:: @ 841078A
- .string "99 times +$"
-
-gOtherText_1Minute:: @ 8410795
- .string "1 minute +$"
-
-gOtherText_Seconds:: @ 84107A0
- .string " seconds$"
-
-gOtherText_Times:: @ 84107A9
- .string " times$"
- .string ".$"
-
-gOtherText_BigGuy:: @ 84107B2
- .string "Big guy$"
-
-gOtherText_BigGirl:: @ 84107BA
- .string "Big girl$"
-
-gOtherText_Son:: @ 84107C3
- .string "son$"
-
-gOtherText_Daughter:: @ 84107C7
- .string "daughter$"
-
-OtherText_BlueFlute::
- .string "BLUE FLUTE$"
-OtherText_YellowFlute::
- .string "YELLOW FLUTE$"
-OtherText_RedFlute::
- .string "RED FLUTE$"
-OtherText_WhiteFlute::
- .string "WHITE FLUTE$"
-OtherText_BlackFlute::
- .string "BLACK FLUTE$"
-OtherText_PrettyChair::
- .string "PRETTY CHAIR$"
-OtherText_PrettyDesk::
- .string "PRETTY DESK$"
-OtherText_1F::
- .string "1F$"
-OtherText_2F::
- .string "2F$"
-OtherText_3F::
- .string "3F$"
-OtherText_4F::
- .string "4F$"
-OtherText_5F::
- .string "5F$"
-OtherText_6F::
- .string "6F$"
-OtherText_7F::
- .string "7F$"
-OtherText_8F::
- .string "8F$"
-OtherText_9F::
- .string "9F$"
-OtherText_10F::
- .string "10F$"
-OtherText_11F::
- .string "11F$"
-OtherText_B1F::
- .string "B1F$"
-OtherText_B2F::
- .string "B2F$"
-OtherText_B3F::
- .string "B3F$"
-OtherText_B4F::
- .string "B4F$"
-OtherText_Rooftop::
- .string "ROOFTOP$"
-
-gOtherText_NowOn:: @ 841085E
- .string "Now on:$"
-
-gPCText_Cancel:: @ 8410866
- .string "CANCEL$"
-
-PCText_ExitBox::
- .string "Exit from the BOX.$"
-PCText_WhatYouDo::
- .string "What would you like to do?$"
-PCText_PickATheme::
- .string "Please pick a theme.$"
-PCText_PickAWallpaper::
- .string "Please pick out wallpaper.$"
-PCText_IsSelected::
- .string " is selected.$"
-PCText_JumpToWhichBox::
- .string "Jump to which BOX?$"
-PCText_DepositInWhichBox::
- .string "Deposit in which BOX?$"
-PCText_WasDeposited::
- .string " was deposited.$"
-PCText_BoxIsFull::
- .string "The BOX is full.$"
-PCText_ReleasePoke::
- .string "Release this POKéMON?$"
-PCText_WasReleased::
- .string " was released.$"
-PCText_ByeBye::
- .string "Bye-bye, !$"
-PCText_MarkPoke::
- .string "Mark your POKéMON.$"
-PCText_LastPoke::
- .string "That’s your last POKéMON!$"
-PCText_PartyFull::
- .string "Your party’s full!$"
-PCText_HoldingPoke::
- .string "You’re holding a POKéMON!$"
-PCText_WhichOneWillTake::
- .string "Which one will you take?$"
-PCText_CantReleaseEgg::
- .string "You can’t release an EGG.$"
-PCText_ContinueBox::
- .string "Continue BOX operations?$"
-PCText_CameBack::
- .string " came back!$"
-PCText_Worried::
- .string "Was it worried about you?$"
-PCText_Surprise::
- .string "... ... ... ... ...!$"
-PCText_PleaseRemoveMail::
- .string "Please remove the MAIL.$"
-PCText_Cancel2::
- .string "CANCEL$"
-PCText_Deposit::
- .string "DEPOSIT$"
-PCText_Withdraw::
- .string "WITHDRAW$"
-PCText_Switch::
- .string "SWITCH$"
-PCText_Move::
- .string "MOVE$"
-PCText_Place::
- .string "PLACE$"
-PCText_Summary::
- .string "SUMMARY$"
-PCText_Release::
- .string "RELEASE$"
-PCText_Mark::
- .string "MARK$"
-PCText_Name::
- .string "NAME$"
-PCText_Jump::
- .string "JUMP$"
-PCText_Wallpaper::
- .string "WALLPAPER$"
-PCText_Scenery1::
- .string "SCENERY 1$"
-PCText_Scenery2::
- .string "SCENERY 2$"
-PCText_Scenery3::
- .string "SCENERY 3$"
-PCText_Etc::
- .string "ETCETERA$"
-PCText_Forest::
- .string "FOREST$"
-PCText_City::
- .string "CITY$"
-PCText_Desert::
- .string "DESERT$"
-PCText_Savanna::
- .string "SAVANNA$"
-PCText_Crag::
- .string "CRAG$"
-PCText_Volcano::
- .string "VOLCANO$"
-PCText_Snow::
- .string "SNOW$"
-PCText_Cave::
- .string "CAVE$"
-PCText_Beach::
- .string "BEACH$"
-PCText_Seafloor::
- .string "SEAFLOOR$"
-PCText_River::
- .string "RIVER$"
-PCText_Sky::
- .string "SKY$"
-PCText_Polka::
- .string "POLKA-DOT$"
-PCText_PokeCenter::
- .string "POKéCENTER$"
-PCText_Machine::
- .string "MACHINE$"
-PCText_Plain::
- .string "PLAIN$"
-PCText_WhatDoYouWant::
- .string "What do you want?$"
-PCText_WithdrawPoke::
- .string "WITHDRAW POKéMON$"
-PCText_DepositPoke::
- .string "DEPOSIT POKéMON$"
-PCText_MovePoke::
- .string "MOVE POKéMON$"
-PCText_SeeYa::
- .string "SEE YA!$"
-PCText_MovePokeToParty::
- .string "Move POKéMON stored in BOXES to\nyour party.$"
-PCText_StorePokeInBox::
- .string "Store POKéMON in your party in BOXES.$"
-PCText_OrganizeBoxesParty::
- .string "Organize the POKéMON in BOXES and\nin your party.$"
-PCText_ReturnToPrevMenu::
- .string "Return to the previous menu.$"
-
-gPCText_OnlyOne:: @ 8410C1C
- .string "There is just one POKéMON with you.$"
-
-gPCText_PartyFull2:: @ 8410C40
- .string "Your party is full!$"
-
-gPCText_BOX:: @ 8410C54
- .string "BOX$"
-
-PCText_CheckMap::
- .string "{CLEAR 0}Check the map of the HOENN region.$"
-PCText_CheckPoke::
- .string "{CLEAR 0}Check POKéMON in detail.$"
-PCText_CheckTrainer::
- .string "{CLEAR 0}Check TRAINER information.$"
-PCText_CheckRibbons::
- .string "{CLEAR 0}Check obtained RIBBONS.$"
-PCText_PutAwayNav::
- .string "{CLEAR 0}Put away the POKéNAV.$"
-PCText_NoRibbonWin::
- .string "{CLEAR 0}There are no RIBBON winners.$"
-PCText_NoTrainers::
- .string "{CLEAR 0}No TRAINERS are registered.$"
-PCText_CheckParty::
- .string "{CLEAR 0}Check party POKéMON in detail.$"
-PCText_CheckPokeAll::
- .string "{CLEAR 0}Check all POKéMON in detail.$"
-PCText_ReturnToNav::
- .string "{CLEAR 0}Return to the POKéNAV menu.$"
-PCText_FindCool::
- .string "{CLEAR 0}Find cool POKéMON.$"
-PCText_FindBeauty::
- .string "{CLEAR 0}Find beautiful POKéMON.$"
-PCText_FindCute::
- .string "{CLEAR 0}Find cute POKéMON.$"
-PCText_FindSmart::
- .string "{CLEAR 0}Find smart POKéMON.$"
-PCText_FindTough::
- .string "{CLEAR 0}Find tough POKéMON.$"
-PCText_ReturnToCondition::
- .string "{CLEAR 0}Return to the CONDITION menu.$"
-
-gOtherText_NumberRegistered:: @ 8410E22
- .string "No. registered$"
-
-gOtherText_NumberBattles:: @ 8410E31
- .string "No. of battles$"
-
-gOtherText_Strategy:: @ 8410E40
- .string "{PALETTE 5}STRATEGY$"
-
-gOtherText_TrainersPokemon:: @ 8410E4C
- .string "{PALETTE 5}TRAINER’S POKéMON$"
-
-gOtherText_SelfIntroduction:: @ 8410E61
- .string "{PALETTE 5}SELF-INTRODUCTION$"
-
-gOtherText_Nature2:: @ 8410E76
- .string "NATURE/$"
-
-gOtherText_InParty:: @ 8410E7E
- .string "IN PARTY$"
-
-gOtherText_Number:: @ 8410E87
- .string "No. $"
-
-gOtherText_Ribbons:: @ 8410E8C
- .string "RIBBONS$"
-
-OtherText_MakeProfilePage1::
- .string "Make your profile by combining$"
-OtherText_MakeProfilePage2::
- .string "four words or phrases.$"
-OtherText_MakeMessagePage1::
- .string "Make a message with 6 phrases.$"
-OtherText_MakeMessagePage2::
- .string "Max. two 12-letter phrases/line.$"
-OtherText_DescribeFeelingsPage1::
- .string "Find words that describe your$"
-OtherText_DescribeFeelingsPage2::
- .string "feelings right now.$"
-OtherText_WithFourPhrases::
- .string "With four phrases,$"
-OtherText_CombineNinePhrasesPage1::
- .string "Combine nine phrases and$"
-OtherText_CombineNinePhrasesPage2::
- .string "make a message.$"
-OtherText_ImproveBardSongPage1::
- .string "Change just one word or phrase$"
-OtherText_ImproveBardSongPage2::
- .string "and improve the BARD’s song.$"
-OtherText_YourProfile::
- .string "Your profile $"
-OtherText_YourFeelingBattle::
- .string "Your feeling at the battle’s start$"
-OtherText_SetWinMessage::
- .string "What you say if you win a battle$"
-OtherText_SetLossMessage::
- .string "What you say if you lose a battle$"
-OtherText_TheAnswer::
- .string "The answer$"
-OtherText_MailMessage::
- .string "The MAIL message$"
-OtherText_MailSalutation::
- .string "The MAIL salutation$"
-OtherText_NewSong::
- .string "The new song$"
-OtherText_CombineTwoPhrasesPage1::
- .string "Combine two phrases and$"
-OtherText_CombineTwoPhrasesPage2::
- .string "make a trendy saying.$"
-OtherText_ConfirmTrendyPage1::
- .string "The trendy saying$"
-OtherText_ConfirmTrendyPage2::
- .string "is as shown. Okay?$"
-OtherText_HipsterPage1::
- .string "I’ll combine two phrases and$"
-OtherText_HipsterPage2::
- .string "teach you a good saying.$"
-
-gOtherText_TextDeletedConfirmPage1:: @ 84110EE
- .string "All the text being edited will$"
-
-gOtherText_TextDeletedConfirmPage2:: @ 841110D
- .string "be deleted. Is that okay?$"
-
-gOtherText_QuitEditing:: @ 8411127
- .string "Quit editing?$"
-
-gOtherText_EditedTextNoSavePage1:: @ 8411135
- .string "The edited text will not be saved.$"
-
-gOtherText_EditedTextNoSavePage2:: @ 8411158
- .string "Is that okay?$"
-
-gOtherText_EnterAPhraseOrWord:: @ 8411166
- .string "Please enter a phrase or word.$"
-
-gOtherText_TextNoDelete:: @ 8411185
- .string "The entire text can’t be deleted.$"
-
-gOtherText_OnlyOnePhrase:: @ 84111A7
- .string "Only one phrase may be changed.$"
-
-gOtherText_OriginalSongRestored:: @ 84111C7
- .string "The original song will be restored.$"
-
-gOtherText_TrendyAlready:: @ 84111EB
- .string "That’s trendy already!$"
-
-gOtherText_CombineTwoPhrases:: @ 8411202
- .string "Combine two words or phrases.$"
-
-gOtherText_QuitGivingInfo:: @ 8411220
- .string "Quit giving information?$"
-
-gOtherText_StopGivingMail:: @ 8411239
- .string "Stop giving the POKéMON MAIL?$"
-
-gOtherText_Profile:: @ 8411257
- .string "PROFILE$"
-
-gOtherText_AtBattleStart:: @ 841125F
- .string "At the battle’s start.$"
-
-gOtherText_UponWinningBattle:: @ 8411276
- .string "Upon winning a battle.$"
-
-gOtherText_UponLosingBattle:: @ 841128D
- .string "Upon losing a battle.$"
-
-gOtherText_TheBardsSong:: @ 84112A3
- .string "The BARD’s Song$"
-
-gOtherText_WhatsHipHappening:: @ 84112B3
- .string "What’s hip and happening?$"
-
-gOtherText_Interview:: @ 84112CD
- .string "Interview$"
-
-gOtherText_GoodSaying:: @ 84112D7
- .string "Good saying$"
-
-OtherText_SoPretty::
- .string " so pretty!$"
-OtherText_SoDarling::
- .string " so darling!$"
-OtherText_SoRelaxed::
- .string " so relaxed!$"
-OtherText_SoSunny::
- .string " so sunny!$"
-OtherText_SoDesirable::
- .string " so desirable!$"
-OtherText_SoExciting::
- .string " so exciting!$"
-OtherText_SoAmusing::
- .string " so amusing!$"
-OtherText_SoMagical::
- .string " so magical!$"
-
-gOtherText_Is:: @ 841134B
- .string " is$"
-
-gOtherText_DontYouAgree:: @ 841134F
- .string "\nDon’t you agree?$"
-
-OtherText_WantVacationNicePlace::
- .string "I so want to go on a vacation.\nWould you happen to know a nice place?$"
-OtherText_BoughtCrayonsIsNice::
- .string "I bought crayons with 120 colors!\nDon’t you think that’s nice?$"
-OtherText_IfWeCouldFloat::
- .string "Wouldn’t it be nice if we could float\naway on a cloud of bubbles?$"
-OtherText_SandWashesAwayMakeSad::
- .string "When you write on a sandy beach,\nthey wash away. It makes me sad.$"
-OtherText_WhatsBottomSeaLike::
- .string "What’s the bottom of the sea like?\nJust once I would so love to go!$"
-OtherText_SeeSettingSun::
- .string "When you see the setting sun, does it\nmake you want to go home?$"
-OtherText_LyingInGreenGrass::
- .string "Lying back in the green grass...\nOh, it’s so, so nice!$"
-OtherText_SecretBasesWonderful::
- .string "SECRET BASES are so wonderful!\nCan’t you feel the excitement?$"
-OtherText_PokeLeague::
- .string "POKéMON LEAGUE$"
-OtherText_PokeCenter::
- .string "POKéMON CENTER$"
-
-gOtherText_GetsAPokeBlock:: @ 8411581
- .string " gets a {POKEBLOCK}?$"
-
-OtherText_Coolness::
- .string "Coolness $"
-OtherText_Beauty::
- .string "Beauty $"
-OtherText_Cuteness::
- .string "Cuteness $"
-OtherText_Smartness::
- .string "Smartness $"
-OtherText_Toughness::
- .string "Toughness $"
-
-gOtherText_WasEnhanced:: @ 84115C2
- .string "was enhanced!$"
-
-gOtherText_NothingChanged:: @ 84115D0
- .string "Nothing changed!$"
-
-gOtherText_WontEat:: @ 84115E1
- .string "It won’t eat anymore...$"
-
-gSystemText_SaveFailedBackupCheck:: @ 84115F9
- .string "Save failed.\nChecking the backup memory...\nPlease wait.\n{COLOR RED}“Time required: 1 minute”$"
-
-gSystemText_BackupDamagedGameContinue:: @ 841164E
- .string "The backup memory is damaged or\nthe internal battery has run dry.\nThe game can be played. However,\nprogress cannot be saved.$"
-
-gSystemText_GameplayEnded:: @ 84116CB
- .string "{COLOR RED}“Gameplay cannot be continued.\nReturning to the title screen...”$"
-
-gSystemText_CheckCompleteSaveAttempt:: @ 841170F
- .string "Check completed.\nAttempting to save again.\nPlease wait.$"
-
-gSystemText_SaveCompletedGameEnd:: @ 8411747
- .string "Save completed.\n{COLOR RED}“Gameplay cannot be continued.\nReturning to the title screen.”$"
-
-gSystemText_SaveCompletedPressA:: @ 8411799
- .string "Save completed.\n{COLOR RED}“Please press the A Button.”$"
-
-gOtherText_Ferry:: @ 84117C9
- .string "FERRY$"
-
-gOtherText_SecretBase:: @ 84117CF
- .string "SECRET BASE$"
-
-gOtherText_Hideout:: @ 84117DB
- .string "HIDEOUT$"
-
-gSystemText_ResetRTCPrompt:: @ 84117E3
- .string "Reset RTC?\nA: Confirm, B: Cancel$"
-
-gSystemText_PresentTime:: @ 8411804
- .string "Present time in game$"
-
-gSystemText_PreviousTime:: @ 8411819
- .string "Previous time in game$"
-
-gSystemText_PleaseResetTime:: @ 841182F
- .string "Please reset the time.$"
-
-gSystemText_ClockResetDataSave:: @ 8411846
- .string "The clock has been reset.\nData will be saved. Please wait.$"
-
-gSystemText_SaveCompleted:: @ 8411881
- .string "Save completed.$"
-
-gSystemText_SaveFailed:: @ 8411891
- .string "Save failed...$"
-
-gSystemText_NoSaveFileNoTime:: @ 84118A0
- .string "There is no save file, so the time\ncan’t be set.$"
-
-gSystemText_ClockAdjustmentUsable:: @ 84118D1
- .string "The in-game clock adjustment system\nis now useable.$"
-
-gSystemText_Saving:: @ 8411905
- .string "SAVING...\nDON’T TURN OFF THE POWER.$"
diff --git a/data/text/berry_descriptions.inc b/data/text/berry_descriptions.inc
deleted file mode 100644
index ace0cff17..000000000
--- a/data/text/berry_descriptions.inc
+++ /dev/null
@@ -1,257 +0,0 @@
-gBerryDescriptionPart1_Cheri: @ 83CC740
- .string "Blooms with delicate pretty flowers.$"
-
-gBerryDescriptionPart2_Cheri: @ 83CC765
- .string "The bright red BERRY is very spicy.$"
-
-gBerryDescriptionPart1_Chesto: @ 83CC789
- .string "The BERRY’s thick skin and fruit are$"
-
-gBerryDescriptionPart2_Chesto: @ 83CC7AE
- .string "very tough. It is dry-tasting all over.$"
-
-gBerryDescriptionPart1_Pecha: @ 83CC7D6
- .string "Very sweet and delicious.$"
-
-gBerryDescriptionPart2_Pecha: @ 83CC7F0
- .string "Also very tender - handle with care.$"
-
-gBerryDescriptionPart1_Rawst: @ 83CC815
- .string "If the leaves grow long and curly,$"
-
-gBerryDescriptionPart2_Rawst: @ 83CC838
- .string "the BERRY seems to grow very bitter.$"
-
-gBerryDescriptionPart1_Aspear: @ 83CC85D
- .string "The hard BERRY is dense with a rich$"
-
-gBerryDescriptionPart2_Aspear: @ 83CC881
- .string "juice. It is quite sour.$"
-
-gBerryDescriptionPart1_Leppa: @ 83CC89A
- .string "Grows slower than CHERI and others.$"
-
-gBerryDescriptionPart2_Leppa: @ 83CC8BE
- .string "The smaller the BERRY, the tastier.$"
-
-gBerryDescriptionPart1_Oran: @ 83CC8E2
- .string "A peculiar BERRY with a mix of flavors.$"
-
-gBerryDescriptionPart2_Oran: @ 83CC90A
- .string "BERRIES grow in half a day.$"
-
-gBerryDescriptionPart1_Persim: @ 83CC926
- .string "Loves sunlight. The BERRY’s color$"
-
-gBerryDescriptionPart2_Persim: @ 83CC948
- .string "grows vivid when exposed to the sun.$"
-
-gBerryDescriptionPart1_Lum: @ 83CC96D
- .string "Slow to grow. If raised with loving$"
-
-gBerryDescriptionPart2_Lum: @ 83CC991
- .string "care, it may grow two BERRIES.$"
-
-gBerryDescriptionPart1_Sitrus: @ 83CC9B0
- .string "Closely related to ORAN. The large$"
-
-gBerryDescriptionPart2_Sitrus: @ 83CC9D3
- .string "BERRY has a well-rounded flavor.$"
-
-gBerryDescriptionPart1_Figy: @ 83CC9F4
- .string "The BERRY, which looks chewed up,$"
-
-gBerryDescriptionPart2_Figy: @ 83CCA16
- .string "brims with spicy substances.$"
-
-gBerryDescriptionPart1_Wiki: @ 83CCA33
- .string "The BERRY is said to have grown lumpy$"
-
-gBerryDescriptionPart2_Wiki: @ 83CCA59
- .string "to help POKéMON grip it.$"
-
-gBerryDescriptionPart1_Mago: @ 83CCA72
- .string "The BERRY turns curvy as it grows.$"
-
-gBerryDescriptionPart2_Mago: @ 83CCA95
- .string "The curvier, the sweeter and tastier.$"
-
-gBerryDescriptionPart1_Aguav: @ 83CCABB
- .string "The flower is dainty. It is rare in its$"
-
-gBerryDescriptionPart2_Aguav: @ 83CCAE3
- .string "ability to grow without light.$"
-
-gBerryDescriptionPart1_Iapapa: @ 83CCB02
- .string "The BERRY is very big and sour.$"
-
-gBerryDescriptionPart2_Iapapa: @ 83CCB22
- .string "It takes at least a day to grow.$"
-
-gBerryDescriptionPart1_Razz: @ 83CCB43
- .string "The red BERRY tastes slightly spicy.$"
-
-gBerryDescriptionPart2_Razz: @ 83CCB68
- .string "It grows quickly in just four hours.$"
-
-gBerryDescriptionPart1_Bluk: @ 83CCB8D
- .string "The BERRY is blue on the outside, but$"
-
-gBerryDescriptionPart2_Bluk: @ 83CCBB3
- .string "it blackens the mouth when eaten.$"
-
-gBerryDescriptionPart1_Nanab: @ 83CCBD5
- .string "This BERRY was the seventh$"
-
-gBerryDescriptionPart2_Nanab: @ 83CCBF0
- .string "discovered in the world. It is sweet.$"
-
-gBerryDescriptionPart1_Wepear: @ 83CCC16
- .string "The flower is small and white. It has a$"
-
-gBerryDescriptionPart2_Wepear: @ 83CCC3E
- .string "delicate balance of bitter and sour.$"
-
-gBerryDescriptionPart1_Pinap: @ 83CCC63
- .string "Weak against wind and cold.$"
-
-gBerryDescriptionPart2_Pinap: @ 83CCC7F
- .string "The fruit is spicy and the skin, sour.$"
-
-gBerryDescriptionPart1_Pomeg: @ 83CCCA6
- .string "However much it is watered,$"
-
-gBerryDescriptionPart2_Pomeg: @ 83CCCC2
- .string "it only grows up to six BERRIES.$"
-
-gBerryDescriptionPart1_Kelpsy: @ 83CCCE3
- .string "A rare variety shaped like a root.$"
-
-gBerryDescriptionPart2_Kelpsy: @ 83CCD06
- .string "Grows a very large flower.$"
-
-gBerryDescriptionPart1_Qualot: @ 83CCD21
- .string "Loves water. Grows strong even in$"
-
-gBerryDescriptionPart2_Qualot: @ 83CCD43
- .string "locations with constant rainfall.$"
-
-gBerryDescriptionPart1_Hondew: @ 83CCD65
- .string "A BERRY that is very valuable and$"
-
-gBerryDescriptionPart2_Hondew: @ 83CCD87
- .string "rarely seen. It is very delicious.$"
-
-gBerryDescriptionPart1_Grepa: @ 83CCDAA
- .string "Despite its tenderness and round$"
-
-gBerryDescriptionPart2_Grepa: @ 83CCDCB
- .string "shape, the BERRY is unimaginably sour.$"
-
-gBerryDescriptionPart1_Tamato: @ 83CCDF2
- .string "The BERRY is lip-bendingly spicy.$"
-
-gBerryDescriptionPart2_Tamato: @ 83CCE14
- .string "It takes time to grow.$"
-
-gBerryDescriptionPart1_Cornn: @ 83CCE2B
- .string "A BERRY from an ancient era. May not$"
-
-gBerryDescriptionPart2_Cornn: @ 83CCE50
- .string "grow unless planted in quantity.$"
-
-gBerryDescriptionPart1_Magost: @ 83CCE71
- .string "A BERRY that is widely said to have$"
-
-gBerryDescriptionPart2_Magost: @ 83CCE95
- .string "a finely balanced flavor.$"
-
-gBerryDescriptionPart1_Rabuta: @ 83CCEAF
- .string "A rare variety that is overgrown with$"
-
-gBerryDescriptionPart2_Rabuta: @ 83CCED5
- .string "hair. It is quite bitter.$"
-
-gBerryDescriptionPart1_Nomel: @ 83CCEEF
- .string "Quite sour. Just one bite makes it$"
-
-gBerryDescriptionPart2_Nomel: @ 83CCF12
- .string "impossible to taste for three days.$"
-
-gBerryDescriptionPart1_Spelon: @ 83CCF36
- .string "The vividly red BERRY is very spicy.$"
-
-gBerryDescriptionPart2_Spelon: @ 83CCF5B
- .string "Its warts secrete a spicy substance.$"
-
-gBerryDescriptionPart1_Pamtre: @ 83CCF80
- .string "Drifts on the sea from somewhere.$"
-
-gBerryDescriptionPart2_Pamtre: @ 83CCFA2
- .string "It is thought to grow elsewhere.$"
-
-gBerryDescriptionPart1_Watmel: @ 83CCFC3
- .string "A huge BERRY, with some over 20$"
-
-gBerryDescriptionPart2_Watmel: @ 83CCFE3
- .string "inches discovered. Exceedingly sweet.$"
-
-gBerryDescriptionPart1_Durin: @ 83CD009
- .string "Bitter to even look at. It is so$"
-
-gBerryDescriptionPart2_Durin: @ 83CD02A
- .string "bitter, no one has ever eaten it as is.$"
-
-gBerryDescriptionPart1_Belue: @ 83CD052
- .string "It is glossy and looks delicious, but$"
-
-gBerryDescriptionPart2_Belue: @ 83CD078
- .string "it is awfully sour. Takes time to grow.$"
-
-gBerryDescriptionPart1_Liechi: @ 83CD0A0
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Liechi: @ 83CD0C5
- .string "contain the power of the sea.$"
-
-gBerryDescriptionPart1_Ganlon: @ 83CD0E3
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Ganlon: @ 83CD108
- .string "contain the power of the land.$"
-
-gBerryDescriptionPart1_Salac: @ 83CD127
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Salac: @ 83CD14C
- .string "contain the power of the sky.$"
-
-gBerryDescriptionPart1_Petaya: @ 83CD16A
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Petaya: @ 83CD18F
- .string "contain the power of all living things.$"
-
-gBerryDescriptionPart1_Apicot: @ 83CD1B7
- .string "A very mystifying BERRY. No telling$"
-
-gBerryDescriptionPart2_Apicot: @ 83CD1DB
- .string "what may happen or how it can be used.$"
-
-gBerryDescriptionPart1_Lansat: @ 83CD202
- .string "Said to be a legendary BERRY.$"
-
-gBerryDescriptionPart2_Lansat: @ 83CD220
- .string "Holding it supposedly brings joy.$"
-
-gBerryDescriptionPart1_Starf: @ 83CD242
- .string "So strong, it was abandoned at the$"
-
-gBerryDescriptionPart2_Starf: @ 83CD265
- .string "world’s edge. Considered a mirage.$"
-
-gBerryDescriptionPart1_Enigma: @ 83CD288
- .string "A completely enigmatic BERRY.$"
-
-gBerryDescriptionPart2_Enigma: @ 83CD2A6
- .string "Appears to have the power of stars.$"
diff --git a/data/title_screen.s b/data/title_screen.s
deleted file mode 100644
index 7c818eeb2..000000000
--- a/data/title_screen.s
+++ /dev/null
@@ -1,215 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08393210:: @ 8393210
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/kyogre_dark.gbapal"
- .incbin "graphics/title_screen/kyogre_glow.gbapal"
- .else
- .incbin "graphics/title_screen/groudon_dark.gbapal"
- .incbin "graphics/title_screen/groudon_glow.gbapal"
- .endif
-
- .align 2
-gUnknown_08393250:: @ 8393250
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/kyogre.4bpp.lz"
- .else
- .incbin "graphics/title_screen/groudon.4bpp.lz"
- .endif
-
- .align 2
-gUnknown_083939EC:: @ 83939EC
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/kyogre_map.bin.lz"
- .else
- .incbin "graphics/title_screen/groudon_map.bin.lz"
- .endif
-
- .align 2
-gUnknown_08393BF8:: @ 8393BF8
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/water_map.bin.lz"
- .else
- .incbin "graphics/title_screen/lava_map.bin.lz"
- .endif
-
- .align 2
-LogoShineTiles: @ 8393D14
- .incbin "graphics/title_screen/logo_shine.4bpp.lz"
-
- .align 1
-gUnknown_08393E64:: @ 8393E64
- .2byte 0x10
- .2byte 0x110
- .2byte 0x210
- .2byte 0x310
- .2byte 0x410
- .2byte 0x510
- .2byte 0x610
- .2byte 0x710
- .2byte 0x810
- .2byte 0x910
- .2byte 0xA10
- .2byte 0xB10
- .2byte 0xC10
- .2byte 0xD10
- .2byte 0xE10
- .2byte 0xF10
- .2byte 0x100F
- .2byte 0x100E
- .2byte 0x100D
- .2byte 0x100C
- .2byte 0x100B
- .2byte 0x100A
- .2byte 0x1009
- .2byte 0x1008
- .2byte 0x1007
- .2byte 0x1006
- .2byte 0x1005
- .2byte 0x1004
- .2byte 0x1003
- .2byte 0x1002
- .2byte 0x1001
- .2byte 0x1000
-
- .align 2
-gOamData_8393EA4:: @ 8393EA4
- .2byte 0x60A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_8393EAC:: @ 8393EAC
- .2byte 0x60A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8393EB4:: @ 8393EB4
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393EBC:: @ 8393EBC
- obj_image_anim_frame 64, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8393EC4:: @ 8393EC4
- .4byte gSpriteAnim_8393EB4
-
- .align 2
-gSpriteAnimTable_8393EC8:: @ 8393EC8
- .4byte gSpriteAnim_8393EBC
-
- .align 2
-gSpriteTemplate_8393ECC:: @ 8393ECC
- spr_template 1000, 1000, gOamData_8393EA4, gSpriteAnimTable_8393EC4, NULL, gDummySpriteAffineAnimTable, SpriteCallback_VersionBannerLeft
-
- .align 2
-gSpriteTemplate_8393EE4:: @ 8393EE4
- spr_template 1000, 1000, gOamData_8393EAC, gSpriteAnimTable_8393EC8, NULL, gDummySpriteAffineAnimTable, SpriteCallback_VersionBannerRight
-
- .align 2
-gUnknown_08393EFC:: @ 8393EFC
- obj_tiles gVersionTiles, 0x1000, 1000
- null_obj_tiles
-
- .align 2
-gOamData_8393F0C:: @ 8393F0C
- .2byte 0x40A0
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8393F14:: @ 8393F14
- obj_image_anim_frame 0, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F1C:: @ 8393F1C
- obj_image_anim_frame 4, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F24:: @ 8393F24
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F2C:: @ 8393F2C
- obj_image_anim_frame 12, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F34:: @ 8393F34
- obj_image_anim_frame 16, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F3C:: @ 8393F3C
- obj_image_anim_frame 20, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F44:: @ 8393F44
- obj_image_anim_frame 24, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F4C:: @ 8393F4C
- obj_image_anim_frame 28, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8393F54:: @ 8393F54
- .4byte gSpriteAnim_8393F14
- .4byte gSpriteAnim_8393F1C
- .4byte gSpriteAnim_8393F24
- .4byte gSpriteAnim_8393F2C
- .4byte gSpriteAnim_8393F34
- .4byte gSpriteAnim_8393F3C
- .4byte gSpriteAnim_8393F44
- .4byte gSpriteAnim_8393F4C
-
- .align 2
-gSpriteTemplate_8393F74:: @ 8393F74
- spr_template 1001, 1001, gOamData_8393F0C, gSpriteAnimTable_8393F54, NULL, gDummySpriteAffineAnimTable, SpriteCallback_PressStartCopyrightBanner
-
- .align 2
-gUnknown_08393F8C:: @ 8393F8C
- obj_tiles gTitleScreenPressStart_Gfx, 0x520, 1001
- null_obj_tiles
-
- .align 2
-gUnknown_08393F9C:: @ 8393F9C
- obj_pal gTitleScreenLogoShinePalette, 1001
- obj_pal 0x0, 0x0
-
- .align 2
-gOamData_8393FAC:: @ 8393FAC
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8393FB4:: @ 8393FB4
- obj_image_anim_frame 0, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8393FBC:: @ 8393FBC
- .4byte gSpriteAnim_8393FB4
-
- .align 2
-gSpriteTemplate_8393FC0:: @ 8393FC0
- spr_template 1002, 1001, gOamData_8393FAC, gSpriteAnimTable_8393FBC, NULL, gDummySpriteAffineAnimTable, SpriteCallback_PokemonLogoShine
-
- .align 2
-gUnknown_08393FD8:: @ 8393FD8
- obj_tiles LogoShineTiles, 0x800, 1002
- null_obj_tiles
diff --git a/data/trainer_card.s b/data/trainer_card.s
index e73af87a2..75e0041dd 100644
--- a/data/trainer_card.s
+++ b/data/trainer_card.s
@@ -46,17 +46,17 @@ gUnknown_083B5EF8:: @ 83B5EF8
.4byte gMenuTrainerCard4Star_Pal
gUnknown_083B5F0C:: @ 83B5F0C
- .incbin "baserom.gba", 0x003b5f0c, 0x20
+ .incbin "graphics/trainer_card/83B5F0C.gbapal"
.align 2
gBadgesPalette:: @ 83B5F2C
.incbin "graphics/trainer_card/badges.gbapal"
gUnknown_083B5F4C:: @ 83B5F4C
- .incbin "baserom.gba", 0x003b5f4c, 0x20
+ .incbin "graphics/trainer_card/83B5F4C.gbapal"
gUnknown_083B5F6C:: @ 83B5F6C
- .incbin "baserom.gba", 0x003b5f6c, 0x20
+ .incbin "graphics/trainer_card/83B5F6C.gbapal"
gUnknown_083B5F8C:: @ 83B5F8C
- .incbin "baserom.gba", 0x003b5f8c, 0x40
+ .incbin "graphics/trainer_card/83B5F8C_map.bin"
diff --git a/data/trainer_eye_trainers.inc b/data/trainer_eye_trainers.inc
deleted file mode 100644
index 3628ea598..000000000
--- a/data/trainer_eye_trainers.inc
+++ /dev/null
@@ -1,58 +0,0 @@
- .align 2
-gTrainerEyeTrainers:: @ 839AE70
- trainer_eye_trainer ROSE_1, ROSE_2, ROSE_3, ROSE_4, ROSE_5, Route118
- trainer_eye_trainer DUSTY_1, DUSTY_2, DUSTY_3, DUSTY_4, DUSTY_5, Route111
- trainer_eye_trainer LOLA_1, LOLA_2, LOLA_3, LOLA_4, LOLA_5, Route109
- trainer_eye_trainer RICKY_1, RICKY_2, RICKY_3, RICKY_4, RICKY_5, Route109
- trainer_eye_trainer RITA_AND_SAM_1, RITA_AND_SAM_2, RITA_AND_SAM_3, RITA_AND_SAM_4, RITA_AND_SAM_5, Route124
- trainer_eye_trainer BROOKE_1, BROOKE_2, BROOKE_3, BROOKE_4, BROOKE_5, Route111
- trainer_eye_trainer WILTON_1, WILTON_2, WILTON_3, WILTON_4, WILTON_5, Route111
- trainer_eye_trainer VALERIE_1, VALERIE_2, VALERIE_3, VALERIE_4, VALERIE_5, MtPyre_6F
- trainer_eye_trainer CINDY_1, CINDY_3, CINDY_4, CINDY_5, CINDY_6, Route104
- trainer_eye_trainer JESSICA_1, JESSICA_2, JESSICA_3, JESSICA_4, JESSICA_5, Route121
- trainer_eye_trainer WINSTON_1, WINSTON_2, WINSTON_3, WINSTON_4, WINSTON_5, Route104
- trainer_eye_trainer STEVE_1, STEVE_2, STEVE_3, STEVE_4, STEVE_5, Route114
- trainer_eye_trainer TONY_1, TONY_2, TONY_3, TONY_4, TONY_5, Route107
- trainer_eye_trainer NOB_1, NOB_2, NOB_3, NOB_4, NOB_5, Route115
- trainer_eye_trainer DALTON_1, DALTON_2, DALTON_3, DALTON_4, DALTON_5, Route118
- trainer_eye_trainer BERNIE_1, BERNIE_2, BERNIE_3, BERNIE_4, BERNIE_5, Route114
- trainer_eye_trainer ETHAN_1, ETHAN_2, ETHAN_3, ETHAN_4, ETHAN_5, JaggedPass
- trainer_eye_trainer JOHN_AND_JAY_1, JOHN_AND_JAY_2, JOHN_AND_JAY_3, JOHN_AND_JAY_4, JOHN_AND_JAY_5, MeteorFalls_1F_2R
- trainer_eye_trainer BRANDON_1, BRANDON_2, BRANDON_3, BRANDON_4, BRANDON_5, Route120
- trainer_eye_trainer CAMERON_1, CAMERON_2, CAMERON_3, CAMERON_4, CAMERON_5, Route123
- trainer_eye_trainer JACKI_1, JACKI_2, JACKI_3, JACKI_4, JACKI_5, Route123
- trainer_eye_trainer WALTER_1, WALTER_2, WALTER_3, WALTER_4, WALTER_5, Route121
- trainer_eye_trainer KAREN_1, KAREN_2, KAREN_3, KAREN_4, KAREN_5, Route116
- trainer_eye_trainer JERRY_1, JERRY_2, JERRY_3, JERRY_4, JERRY_5, Route116
- trainer_eye_trainer ANNA_AND_MEG_1, ANNA_AND_MEG_2, ANNA_AND_MEG_3, ANNA_AND_MEG_4, ANNA_AND_MEG_5, Route117
- trainer_eye_trainer ISABEL_1, ISABEL_2, ISABEL_3, ISABEL_4, ISABEL_5, Route110
- trainer_eye_trainer MIGUEL_1, MIGUEL_2, MIGUEL_3, MIGUEL_4, MIGUEL_5, Route103
- trainer_eye_trainer TIMOTHY_1, TIMOTHY_2, TIMOTHY_3, TIMOTHY_4, TIMOTHY_5, Route115
- trainer_eye_trainer SHELBY_1, SHELBY_2, SHELBY_3, SHELBY_4, SHELBY_5, MtChimney
- trainer_eye_trainer CALVIN_1, CALVIN_2, CALVIN_3, CALVIN_4, CALVIN_5, Route102
- trainer_eye_trainer ELLIOT_1, ELLIOT_2, ELLIOT_3, ELLIOT_4, ELLIOT_5, Route106
- trainer_eye_trainer ABIGAIL_1, ABIGAIL_2, ABIGAIL_3, ABIGAIL_4, ABIGAIL_5, Route110
- trainer_eye_trainer BENJAMIN_1, BENJAMIN_2, BENJAMIN_3, BENJAMIN_4, BENJAMIN_5, Route110
- trainer_eye_trainer ISAIAH_1, ISAIAH_2, ISAIAH_3, ISAIAH_4, ISAIAH_5, Route128
- trainer_eye_trainer KATELYN_1, KATELYN_2, KATELYN_3, KATELYN_4, KATELYN_5, Route128
- trainer_eye_trainer MARIA_1, MARIA_2, MARIA_3, MARIA_4, MARIA_5, Route117
- trainer_eye_trainer DYLAN_1, DYLAN_2, DYLAN_3, DYLAN_4, DYLAN_5, Route117
- trainer_eye_trainer NICOLAS_1, NICOLAS_2, NICOLAS_3, NICOLAS_4, NICOLAS_5, MeteorFalls_1F_2R
- trainer_eye_trainer ROBERT_1, ROBERT_2, ROBERT_3, ROBERT_4, ROBERT_5, Route120
- trainer_eye_trainer LAO_1, LAO_2, LAO_3, LAO_4, LAO_5, Route113
- trainer_eye_trainer CYNDY_1, CYNDY_2, CYNDY_3, CYNDY_4, CYNDY_5, Route115
- trainer_eye_trainer MADELINE_1, MADELINE_2, MADELINE_3, MADELINE_4, MADELINE_5, Route113
- trainer_eye_trainer JENNY_1, JENNY_2, JENNY_3, JENNY_4, JENNY_5, Route124
- trainer_eye_trainer DIANA_1, DIANA_2, DIANA_3, DIANA_4, DIANA_5, JaggedPass
- trainer_eye_trainer AMY_AND_LIV_1, AMY_AND_LIV_2, AMY_AND_LIV_4, AMY_AND_LIV_5, AMY_AND_LIV_6, Route103
- trainer_eye_trainer ERNEST_1, ERNEST_2, ERNEST_3, ERNEST_4, ERNEST_5, Route125
- trainer_eye_trainer EDWIN_1, EDWIN_2, EDWIN_3, EDWIN_4, EDWIN_5, Route110
- trainer_eye_trainer LYDIA_1, LYDIA_2, LYDIA_3, LYDIA_4, LYDIA_5, Route117
- trainer_eye_trainer ISAAC_1, ISAAC_2, ISAAC_3, ISAAC_4, ISAAC_5, Route117
- trainer_eye_trainer CATHERINE_1, CATHERINE_2, CATHERINE_3, CATHERINE_4, CATHERINE_5, Route119
- trainer_eye_trainer JACKSON_1, JACKSON_2, JACKSON_3, JACKSON_4, JACKSON_5, Route119
- trainer_eye_trainer HALEY_1, HALEY_2, HALEY_3, HALEY_4, HALEY_5, Route104
- trainer_eye_trainer JAMES_1, JAMES_2, JAMES_3, JAMES_4, JAMES_5, PetalburgWoods
- trainer_eye_trainer TRENT_1, TRENT_2, TRENT_3, TRENT_4, TRENT_5, Route112
- trainer_eye_trainer LOIS_AND_HAL_1, LOIS_AND_HAL_2, LOIS_AND_HAL_3, LOIS_AND_HAL_4, LOIS_AND_HAL_5, AbandonedShip_Rooms2_1F
- trainer_eye_trainer WALLY_3, WALLY_4, WALLY_5, WALLY_6, NONE, VictoryRoad_1F
diff --git a/data/wallclock.s b/data/wallclock.s
deleted file mode 100644
index 15ab36097..000000000
--- a/data/wallclock.s
+++ /dev/null
@@ -1,86 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-ClockGfx_Misc: @ 83F7814
- .incbin "graphics/misc/clock_misc.4bpp.lz"
-
- .align 2
-gUnknown_083F7A90:: @ 83F7A90
- obj_tiles ClockGfx_Misc, 0x2000, 0x1000
- .space 8
-
- .align 2
-gUnknown_083F7AA0:: @ 83F7AA0
- obj_pal gMiscClockMale_Pal, 0x1000
- obj_pal gMiscClockFemale_Pal, 0x1001
- .space 8
-
- .align 2
-gOamData_83F7AB8:: @ 83F7AB8
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83F7AC0:: @ 83F7AC0
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F7AC8:: @ 83F7AC8
- obj_image_anim_frame 64, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83F7AD0:: @ 83F7AD0
- .4byte gSpriteAnim_83F7AC0
-
- .align 2
-gSpriteAnimTable_83F7AD4:: @ 83F7AD4
- .4byte gSpriteAnim_83F7AC8
-
- .align 2
-gSpriteTemplate_83F7AD8:: @ 83F7AD8
- spr_template 4096, 4096, gOamData_83F7AB8, gSpriteAnimTable_83F7AD0, NULL, gDummySpriteAffineAnimTable, sub_810B05C
-
- .align 2
-gSpriteTemplate_83F7AF0:: @ 83F7AF0
- spr_template 4096, 4096, gOamData_83F7AB8, gSpriteAnimTable_83F7AD4, NULL, gDummySpriteAffineAnimTable, sub_810B0F4
-
- .align 2
-gOamData_83F7B08:: @ 83F7B08
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83F7B10:: @ 83F7B10
- obj_image_anim_frame 132, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F7B18:: @ 83F7B18
- obj_image_anim_frame 128, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83F7B20:: @ 83F7B20
- .4byte gSpriteAnim_83F7B10
-
- .align 2
-gSpriteAnimTable_83F7B24:: @ 83F7B24
- .4byte gSpriteAnim_83F7B18
-
- .align 2
-gSpriteTemplate_83F7B28:: @ 83F7B28
- spr_template 4096, 4096, gOamData_83F7B08, gSpriteAnimTable_83F7B20, NULL, gDummySpriteAffineAnimTable, sub_810B18C
-
- .align 2
-gSpriteTemplate_83F7B40:: @ 83F7B40
- spr_template 4096, 4096, gOamData_83F7B08, gSpriteAnimTable_83F7B24, NULL, gDummySpriteAffineAnimTable, sub_810B230
-
-@ 83F7B58
- .include "data/clock_hand_coords.inc"
diff --git a/data/weather.s b/data/weather.s
index 814030248..44ef8a8da 100644
--- a/data/weather.s
+++ b/data/weather.s
@@ -40,7 +40,7 @@ gUnknown_08396FA8:: @ 8396FA8
.align 2
gUnknown_08396FC4:: @ 8396FC4
- .4byte 0x0202f7e8
+ .4byte gUnknown_0202F7E8
.align 2
gUnknown_08396FC8:: @ 8396FC8
diff --git a/data/wild_mons.inc b/data/wild_mons.inc
index b30bc847d..01ebd8a16 100644
--- a/data/wild_mons.inc
+++ b/data/wild_mons.inc
@@ -1,3104 +1,3 @@
- .macro wild_mon_difference species1, species2
- .ifdef SAPPHIRE
- .equiv SPECIES_\species1\()_\species2, SPECIES_\species2
- .equiv SPECIES_\species2\()_\species1, SPECIES_\species1
- .else
- .equiv SPECIES_\species1\()_\species2, SPECIES_\species1
- .equiv SPECIES_\species2\()_\species1, SPECIES_\species2
- .endif
- .endm
-
- wild_mon_difference SEEDOT, LOTAD
- wild_mon_difference NUZLEAF, LOMBRE
- wild_mon_difference MAWILE, SABLEYE
- wild_mon_difference ZANGOOSE, SEVIPER
- wild_mon_difference SOLROCK, LUNATONE
- wild_mon_difference DUSKULL, SHUPPET
- wild_mon_difference DUSCLOPS, BANETTE
- wild_mon_difference KOFFING, GRIMER
- wild_mon_difference MINUN, PLUSLE
- wild_mon_difference ILLUMISE, VOLBEAT
-
- .align 2
-PetalburgCity_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon MARILL, 5, 10
-
- .align 2
-PetalburgCity_WaterMonsInfo:
- .4byte 1 @ encounter rate
- .4byte PetalburgCity_WaterMons
-
- .align 2
-PetalburgCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
-
- .align 2
-PetalburgCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte PetalburgCity_FishingMons
-
- .align 2
-SlateportCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-SlateportCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SlateportCity_WaterMons
-
- .align 2
-SlateportCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SlateportCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SlateportCity_FishingMons
-
- .align 2
-LilycoveCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-LilycoveCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte LilycoveCity_WaterMons
-
- .align 2
-LilycoveCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon STARYU, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-LilycoveCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte LilycoveCity_FishingMons
-
- .align 2
-MossdeepCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-MossdeepCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MossdeepCity_WaterMons
-
- .align 2
-MossdeepCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-MossdeepCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MossdeepCity_FishingMons
-
- .align 2
-SootopolisCity_WaterMons:
- wild_mon MAGIKARP, 5, 35
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 15, 25
- wild_mon MAGIKARP, 25, 30
- wild_mon MAGIKARP, 25, 30
-
- .align 2
-SootopolisCity_WaterMonsInfo:
- .4byte 1 @ encounter rate
- .4byte SootopolisCity_WaterMons
-
- .align 2
-SootopolisCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- .ifdef SAPPHIRE
- wild_mon TENTACOOL, 5, 10
- .else
- wild_mon MAGIKARP, 10, 15
- .endif
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 30, 35
- wild_mon MAGIKARP, 30, 35
- wild_mon GYARADOS, 35, 40
- wild_mon GYARADOS, 35, 45
- wild_mon GYARADOS, 5, 45
-
- .align 2
-SootopolisCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SootopolisCity_FishingMons
-
- .align 2
-EverGrandeCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-EverGrandeCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte EverGrandeCity_WaterMons
-
- .align 2
-EverGrandeCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon LUVDISC, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon LUVDISC, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon CORSOLA, 30, 35
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-EverGrandeCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte EverGrandeCity_FishingMons
-
- .align 2
-MeteorFalls_1F_1R_LandMons:
- wild_mon ZUBAT, 16
- wild_mon ZUBAT, 17
- wild_mon ZUBAT, 18
- wild_mon ZUBAT, 15
- wild_mon ZUBAT, 14
- wild_mon SOLROCK_LUNATONE, 16
- wild_mon SOLROCK_LUNATONE, 18
- wild_mon SOLROCK_LUNATONE, 14
- wild_mon ZUBAT, 19
- wild_mon ZUBAT, 20
- wild_mon ZUBAT, 19
- wild_mon ZUBAT, 20
-
- .align 2
-MeteorFalls_1F_1R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_1F_1R_LandMons
-
- .align 2
-MeteorFalls_1F_1R_WaterMons:
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_1F_1R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_1F_1R_WaterMons
-
- .align 2
-MeteorFalls_1F_1R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-MeteorFalls_1F_1R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_1F_1R_FishingMons
-
- .align 2
-MeteorFalls_1F_2R_LandMons:
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK_LUNATONE, 35
- wild_mon SOLROCK_LUNATONE, 33
- wild_mon SOLROCK_LUNATONE, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK_LUNATONE, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
-
- .align 2
-MeteorFalls_1F_2R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_1F_2R_LandMons
-
- .align 2
-MeteorFalls_1F_2R_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_1F_2R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_1F_2R_WaterMons
-
- .align 2
-MeteorFalls_1F_2R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-MeteorFalls_1F_2R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_1F_2R_FishingMons
-
- .align 2
-MeteorFalls_B1F_1R_LandMons:
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK_LUNATONE, 35
- wild_mon SOLROCK_LUNATONE, 33
- wild_mon SOLROCK_LUNATONE, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK_LUNATONE, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
-
- .align 2
-MeteorFalls_B1F_1R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_B1F_1R_LandMons
-
- .align 2
-MeteorFalls_B1F_1R_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_B1F_1R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_B1F_1R_WaterMons
-
- .align 2
-MeteorFalls_B1F_1R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-MeteorFalls_B1F_1R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_B1F_1R_FishingMons
-
- .align 2
-MeteorFalls_B1F_2R_LandMons:
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon BAGON, 30
- wild_mon SOLROCK_LUNATONE, 35
- wild_mon BAGON, 35
- wild_mon SOLROCK_LUNATONE, 37
- wild_mon BAGON, 25
- wild_mon SOLROCK_LUNATONE, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
-
- .align 2
-MeteorFalls_B1F_2R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_B1F_2R_LandMons
-
- .align 2
-MeteorFalls_B1F_2R_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_B1F_2R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_B1F_2R_WaterMons
-
- .align 2
-MeteorFalls_B1F_2R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-MeteorFalls_B1F_2R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_B1F_2R_FishingMons
-
- .align 2
-RusturfTunnel_LandMons:
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
-
- .align 2
-RusturfTunnel_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte RusturfTunnel_LandMons
-
- .align 2
-GraniteCave_1F_LandMons:
- wild_mon ZUBAT, 7
- wild_mon MAKUHITA, 8
- wild_mon MAKUHITA, 7
- wild_mon ZUBAT, 8
- wild_mon MAKUHITA, 9
- wild_mon ABRA, 8
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 6
- wild_mon GEODUDE, 7
- wild_mon GEODUDE, 8
- wild_mon GEODUDE, 6
- wild_mon GEODUDE, 9
-
- .align 2
-GraniteCave_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_1F_LandMons
-
- .align 2
-GraniteCave_B1F_LandMons:
- wild_mon ZUBAT, 9
- wild_mon ARON, 10
- wild_mon ARON, 9
- wild_mon ARON, 11
- wild_mon ZUBAT, 10
- wild_mon ABRA, 9
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 11
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 9
- wild_mon MAWILE_SABLEYE, 11
-
- .align 2
-GraniteCave_B1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_B1F_LandMons
-
- .align 2
-GraniteCave_B2F_LandMons:
- wild_mon ZUBAT, 10
- wild_mon ARON, 11
- wild_mon ARON, 10
- wild_mon ZUBAT, 11
- wild_mon ARON, 12
- wild_mon ABRA, 10
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 11
- wild_mon MAWILE_SABLEYE, 12
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 12
- wild_mon MAWILE_SABLEYE, 10
-
- .align 2
-GraniteCave_B2F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_B2F_LandMons
-
- .align 2
-GraniteCave_B2F_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon NOSEPASS, 10, 20
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
-
- .align 2
-GraniteCave_B2F_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte GraniteCave_B2F_RockSmashMons
-
- .align 2
-GraniteCave_StevensRoom_LandMons:
- wild_mon ZUBAT, 7
- wild_mon MAKUHITA, 8
- wild_mon MAKUHITA, 7
- wild_mon ZUBAT, 8
- wild_mon MAKUHITA, 9
- wild_mon ABRA, 8
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 6
- wild_mon ARON, 7
- wild_mon ARON, 8
- wild_mon ARON, 7
- wild_mon ARON, 8
-
- .align 2
-GraniteCave_StevensRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_StevensRoom_LandMons
-
- .align 2
-PetalburgWoods_LandMons:
- wild_mon ZIGZAGOON, 5
- wild_mon WURMPLE, 5
- wild_mon SHROOMISH, 5
- wild_mon ZIGZAGOON, 6
- wild_mon SILCOON, 5
- wild_mon CASCOON, 5
- wild_mon WURMPLE, 6
- wild_mon SHROOMISH, 6
- wild_mon TAILLOW, 5
- wild_mon SLAKOTH, 5
- wild_mon TAILLOW, 6
- wild_mon SLAKOTH, 6
-
- .align 2
-PetalburgWoods_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte PetalburgWoods_LandMons
-
- .ifdef SAPPHIRE
- .equiv JAGGED_PASS_LEVEL_DIFF, 2
- .else
- .equiv JAGGED_PASS_LEVEL_DIFF, 0
- .endif
-
- .align 2
-JaggedPass_LandMons:
- wild_mon NUMEL, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon MACHOP, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 18 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 18 + JAGGED_PASS_LEVEL_DIFF
- wild_mon MACHOP, 18 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon MACHOP, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 20 + JAGGED_PASS_LEVEL_DIFF
-
- .align 2
-JaggedPass_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte JaggedPass_LandMons
-
- .align 2
-FieryPath_LandMons:
- wild_mon NUMEL, 15
- wild_mon KOFFING_GRIMER, 15
- wild_mon NUMEL, 16
- wild_mon MACHOP, 15
- wild_mon TORKOAL, 15
- wild_mon SLUGMA, 15
- wild_mon KOFFING_GRIMER, 16
- wild_mon MACHOP, 16
- wild_mon TORKOAL, 14
- wild_mon TORKOAL, 16
- wild_mon GRIMER_KOFFING, 14
- wild_mon GRIMER_KOFFING, 14
-
- .align 2
-FieryPath_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte FieryPath_LandMons
-
- .align 2
-MtPyre_1F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
-
- .align 2
-MtPyre_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_1F_LandMons
-
- .align 2
-MtPyre_2F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
-
- .align 2
-MtPyre_2F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_2F_LandMons
-
- .align 2
-MtPyre_3F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
-
- .align 2
-MtPyre_3F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_3F_LandMons
-
- .align 2
-MtPyre_4F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 25
- wild_mon SHUPPET_DUSKULL, 29
-
- .align 2
-MtPyre_4F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_4F_LandMons
-
- .align 2
-MtPyre_5F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 25
- wild_mon SHUPPET_DUSKULL, 29
-
- .align 2
-MtPyre_5F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_5F_LandMons
-
- .align 2
-MtPyre_6F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 25
- wild_mon SHUPPET_DUSKULL, 29
-
- .align 2
-MtPyre_6F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_6F_LandMons
-
- .align 2
-MtPyre_Exterior_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon MEDITITE, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon MEDITITE, 29
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon VULPIX, 27
- wild_mon VULPIX, 29
- wild_mon VULPIX, 25
- wild_mon WINGULL, 27
- wild_mon WINGULL, 27
- wild_mon WINGULL, 26
- wild_mon WINGULL, 28
-
- .align 2
-MtPyre_Exterior_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_Exterior_LandMons
-
- .align 2
-MtPyre_Summit_LandMons:
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 30
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon SHUPPET_DUSKULL, 28
- wild_mon SHUPPET_DUSKULL, 26
- wild_mon SHUPPET_DUSKULL, 30
- wild_mon CHIMECHO, 28
- wild_mon CHIMECHO, 28
-
- .align 2
-MtPyre_Summit_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_Summit_LandMons
-
- .align 2
-SeafloorCavern_Entrance_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
-
- .align 2
-SeafloorCavern_Entrance_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Entrance_WaterMons
-
- .align 2
-SeafloorCavern_Entrance_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SeafloorCavern_Entrance_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SeafloorCavern_Entrance_FishingMons
-
- .align 2
-SeafloorCavern_Room1_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room1_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room1_LandMons
-
- .align 2
-SeafloorCavern_Room2_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room2_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room2_LandMons
-
- .align 2
-SeafloorCavern_Room3_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room3_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room3_LandMons
-
- .align 2
-SeafloorCavern_Room4_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room4_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room4_LandMons
-
- .align 2
-SeafloorCavern_Room5_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room5_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room5_LandMons
-
- .align 2
-SeafloorCavern_Room6_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room6_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room6_LandMons
-
- .align 2
-SeafloorCavern_Room6_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
-
- .align 2
-SeafloorCavern_Room6_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room6_WaterMons
-
- .align 2
-SeafloorCavern_Room6_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SeafloorCavern_Room6_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SeafloorCavern_Room6_FishingMons
-
- .align 2
-SeafloorCavern_Room7_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room7_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room7_LandMons
-
- .align 2
-SeafloorCavern_Room7_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
-
- .align 2
-SeafloorCavern_Room7_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room7_WaterMons
-
- .align 2
-SeafloorCavern_Room7_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SeafloorCavern_Room7_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SeafloorCavern_Room7_FishingMons
-
- .align 2
-SeafloorCavern_Room8_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room8_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room8_LandMons
-
- .align 2
-CaveOfOrigin_Entrance_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_Entrance_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_Entrance_LandMons
-
- .align 2
-CaveOfOrigin_1F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_1F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_1F_LandMons
-
- .align 2
-CaveOfOrigin_B1F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_B1F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_B1F_LandMons
-
- .align 2
-CaveOfOrigin_B2F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_B2F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_B2F_LandMons
-
- .align 2
-CaveOfOrigin_B3F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_B3F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_B3F_LandMons
-
- .align 2
-VictoryRoad_1F_LandMons:
- wild_mon GOLBAT, 40
- wild_mon HARIYAMA, 40
- wild_mon LAIRON, 40
- wild_mon LOUDRED, 40
- wild_mon ZUBAT, 36
- wild_mon MAKUHITA, 36
- wild_mon GOLBAT, 38
- wild_mon HARIYAMA, 38
- wild_mon ARON, 36
- wild_mon WHISMUR, 36
- wild_mon ARON, 36
- wild_mon WHISMUR, 36
-
- .align 2
-VictoryRoad_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte VictoryRoad_1F_LandMons
-
- .align 2
-VictoryRoad_B1F_LandMons:
- wild_mon GOLBAT, 40
- wild_mon HARIYAMA, 40
- wild_mon LAIRON, 40
- wild_mon MEDICHAM, 40
- wild_mon GOLBAT, 38
- wild_mon HARIYAMA, 38
- wild_mon GOLBAT, 42
- wild_mon HARIYAMA, 42
- wild_mon LAIRON, 42
- wild_mon MEDITITE, 38
- wild_mon LAIRON, 42
- wild_mon MEDITITE, 38
-
- .align 2
-VictoryRoad_B1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte VictoryRoad_B1F_LandMons
-
- .align 2
-VictoryRoad_B1F_RockSmashMons:
- wild_mon GRAVELER, 30, 40
- wild_mon GEODUDE, 30, 40
- wild_mon GRAVELER, 35, 40
- wild_mon GRAVELER, 35, 40
- wild_mon GRAVELER, 35, 40
-
- .align 2
-VictoryRoad_B1F_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte VictoryRoad_B1F_RockSmashMons
-
- .align 2
-VictoryRoad_B2F_LandMons:
- wild_mon GOLBAT, 40
- wild_mon MAWILE_SABLEYE, 40
- wild_mon LAIRON, 40
- wild_mon MEDICHAM, 40
- wild_mon GOLBAT, 42
- wild_mon MAWILE_SABLEYE, 42
- wild_mon GOLBAT, 44
- wild_mon MAWILE_SABLEYE, 44
- wild_mon LAIRON, 42
- wild_mon MEDICHAM, 42
- wild_mon LAIRON, 44
- wild_mon MEDICHAM, 44
-
- .align 2
-VictoryRoad_B2F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte VictoryRoad_B2F_LandMons
-
- .align 2
-VictoryRoad_B2F_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 25, 30
- wild_mon GOLBAT, 35, 40
- wild_mon GOLBAT, 35, 40
- wild_mon GOLBAT, 35, 40
-
- .align 2
-VictoryRoad_B2F_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte VictoryRoad_B2F_WaterMons
-
- .align 2
-VictoryRoad_B2F_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-VictoryRoad_B2F_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte VictoryRoad_B2F_FishingMons
-
- .align 2
-ShoalCave_LowTideEntranceRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideEntranceRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideEntranceRoom_LandMons
-
- .align 2
-ShoalCave_LowTideEntranceRoom_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 35
-
- .align 2
-ShoalCave_LowTideEntranceRoom_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte ShoalCave_LowTideEntranceRoom_WaterMons
-
- .align 2
-ShoalCave_LowTideEntranceRoom_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-ShoalCave_LowTideEntranceRoom_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideEntranceRoom_FishingMons
-
- .align 2
-ShoalCave_LowTideInnerRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideInnerRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideInnerRoom_LandMons
-
- .align 2
-ShoalCave_LowTideInnerRoom_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 35
-
- .align 2
-ShoalCave_LowTideInnerRoom_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte ShoalCave_LowTideInnerRoom_WaterMons
-
- .align 2
-ShoalCave_LowTideInnerRoom_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-ShoalCave_LowTideInnerRoom_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideInnerRoom_FishingMons
-
- .align 2
-ShoalCave_LowTideStairsRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideStairsRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideStairsRoom_LandMons
-
- .align 2
-ShoalCave_LowTideLowerRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideLowerRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideLowerRoom_LandMons
-
- .align 2
-ShoalCave_LowTideIceRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon SNORUNT, 26
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 30
- wild_mon SNORUNT, 28
- wild_mon GOLBAT, 32
- wild_mon SNORUNT, 30
-
- .align 2
-ShoalCave_LowTideIceRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideIceRoom_LandMons
-
- .align 2
-NewMauville_Entrance_LandMons:
- wild_mon VOLTORB, 24
- wild_mon MAGNEMITE, 24
- wild_mon VOLTORB, 25
- wild_mon MAGNEMITE, 25
- wild_mon VOLTORB, 23
- wild_mon MAGNEMITE, 23
- wild_mon VOLTORB, 26
- wild_mon MAGNEMITE, 26
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
-
- .align 2
-NewMauville_Entrance_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte NewMauville_Entrance_LandMons
-
- .align 2
-NewMauville_Inside_LandMons:
- wild_mon VOLTORB, 24
- wild_mon MAGNEMITE, 24
- wild_mon VOLTORB, 25
- wild_mon MAGNEMITE, 25
- wild_mon VOLTORB, 23
- wild_mon MAGNEMITE, 23
- wild_mon VOLTORB, 26
- wild_mon MAGNEMITE, 26
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
- wild_mon ELECTRODE, 26
- wild_mon MAGNETON, 26
-
- .align 2
-NewMauville_Inside_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte NewMauville_Inside_LandMons
-
- .align 2
-AbandonedShip_Rooms_B1F_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACRUEL, 30, 35
-
- .align 2
-AbandonedShip_Rooms_B1F_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte AbandonedShip_Rooms_B1F_WaterMons
-
- .align 2
-AbandonedShip_Rooms_B1F_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 25, 30
- wild_mon TENTACOOL, 30, 35
- wild_mon TENTACRUEL, 30, 35
- wild_mon TENTACRUEL, 25, 30
- wild_mon TENTACRUEL, 20, 25
-
- .align 2
-AbandonedShip_Rooms_B1F_FishingMonsInfo:
- .4byte 20 @ encounter rate
- .4byte AbandonedShip_Rooms_B1F_FishingMons
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACRUEL, 30, 35
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte AbandonedShip_HiddenFloorCorridors_WaterMons
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 25, 30
- wild_mon TENTACOOL, 30, 35
- wild_mon TENTACRUEL, 30, 35
- wild_mon TENTACRUEL, 25, 30
- wild_mon TENTACRUEL, 20, 25
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_FishingMonsInfo:
- .4byte 20 @ encounter rate
- .4byte AbandonedShip_HiddenFloorCorridors_FishingMons
-
- .align 2
-SkyPillar_1F_LandMons:
- wild_mon MAWILE_SABLEYE, 48
- wild_mon GOLBAT, 48
- wild_mon GOLBAT, 50
- wild_mon MAWILE_SABLEYE, 50
- wild_mon CLAYDOL, 48
- wild_mon DUSCLOPS_BANETTE, 48
- wild_mon DUSCLOPS_BANETTE, 50
- wild_mon CLAYDOL, 49
- wild_mon CLAYDOL, 47
- wild_mon CLAYDOL, 50
- wild_mon CLAYDOL, 47
- wild_mon CLAYDOL, 50
-
- .align 2
-SkyPillar_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SkyPillar_1F_LandMons
-
- .align 2
-SkyPillar_3F_LandMons:
- wild_mon MAWILE_SABLEYE, 51
- wild_mon GOLBAT, 51
- wild_mon GOLBAT, 53
- wild_mon MAWILE_SABLEYE, 53
- wild_mon CLAYDOL, 51
- wild_mon DUSCLOPS_BANETTE, 51
- wild_mon DUSCLOPS_BANETTE, 53
- wild_mon CLAYDOL, 52
- wild_mon CLAYDOL, 50
- wild_mon CLAYDOL, 53
- wild_mon CLAYDOL, 50
- wild_mon CLAYDOL, 53
-
- .align 2
-SkyPillar_3F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SkyPillar_3F_LandMons
-
- .align 2
-SkyPillar_5F_LandMons:
- wild_mon MAWILE_SABLEYE, 54
- wild_mon GOLBAT, 54
- wild_mon GOLBAT, 56
- wild_mon MAWILE_SABLEYE, 56
- wild_mon CLAYDOL, 54
- wild_mon DUSCLOPS_BANETTE, 54
- wild_mon DUSCLOPS_BANETTE, 56
- wild_mon CLAYDOL, 55
- wild_mon CLAYDOL, 56
- wild_mon ALTARIA, 57
- wild_mon ALTARIA, 54
- wild_mon ALTARIA, 60
-
- .align 2
-SkyPillar_5F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SkyPillar_5F_LandMons
-
- .align 2
-Route101_LandMons:
- wild_mon WURMPLE, 2
- wild_mon ZIGZAGOON, 2
- wild_mon WURMPLE, 2
- wild_mon WURMPLE, 3
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
- wild_mon WURMPLE, 3
- wild_mon ZIGZAGOON, 3
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
-
- .align 2
-Route101_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route101_LandMons
-
- .align 2
-Route102_LandMons:
- wild_mon ZIGZAGOON, 3
- wild_mon WURMPLE, 3
- wild_mon ZIGZAGOON, 4
- wild_mon WURMPLE, 4
- wild_mon SEEDOT_LOTAD, 3
- wild_mon SEEDOT_LOTAD, 4
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 4
- wild_mon RALTS, 4
- wild_mon POOCHYENA, 4
- wild_mon SURSKIT, 3
-
- .align 2
-Route102_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route102_LandMons
-
- .align 2
-Route102_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route102_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route102_WaterMons
-
- .align 2
-Route102_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
-
- .align 2
-Route102_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route102_FishingMons
-
- .align 2
-Route103_LandMons:
- wild_mon ZIGZAGOON, 2
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 4
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 4
- wild_mon WINGULL, 3
- wild_mon WINGULL, 3
- wild_mon WINGULL, 2
- wild_mon WINGULL, 4
-
- .align 2
-Route103_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route103_LandMons
-
- .align 2
-Route103_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route103_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route103_WaterMons
-
- .align 2
-Route103_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route103_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route103_FishingMons
-
- .align 2
-Route104_LandMons:
- wild_mon ZIGZAGOON, 4
- wild_mon WURMPLE, 4
- wild_mon ZIGZAGOON, 5
- wild_mon WURMPLE, 5
- wild_mon ZIGZAGOON, 4
- wild_mon ZIGZAGOON, 5
- wild_mon TAILLOW, 4
- wild_mon TAILLOW, 5
- wild_mon WINGULL, 4
- wild_mon WINGULL, 4
- wild_mon WINGULL, 3
- wild_mon WINGULL, 5
-
- .align 2
-Route104_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route104_LandMons
-
- .align 2
-Route104_WaterMons:
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route104_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route104_WaterMons
-
- .align 2
-Route104_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon MAGIKARP, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 25, 30
- wild_mon MAGIKARP, 30, 35
- wild_mon MAGIKARP, 20, 25
- wild_mon MAGIKARP, 35, 40
- wild_mon MAGIKARP, 40, 45
-
- .align 2
-Route104_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route104_FishingMons
-
- .align 2
-Route105_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route105_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route105_WaterMons
-
- .align 2
-Route105_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route105_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route105_FishingMons
-
- .align 2
-Route106_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route106_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route106_WaterMons
-
- .align 2
-Route106_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route106_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route106_FishingMons
-
- .align 2
-Route107_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route107_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route107_WaterMons
-
- .align 2
-Route107_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route107_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route107_FishingMons
-
- .align 2
-Route108_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route108_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route108_WaterMons
-
- .align 2
-Route108_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route108_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route108_FishingMons
-
- .align 2
-Route109_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route109_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route109_WaterMons
-
- .align 2
-Route109_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route109_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route109_FishingMons
-
- .align 2
-Route110_LandMons:
- wild_mon ZIGZAGOON, 12
- wild_mon ELECTRIKE, 12
- wild_mon GULPIN, 12
- wild_mon ELECTRIKE, 13
- wild_mon MINUN_PLUSLE, 13
- wild_mon ODDISH, 13
- wild_mon MINUN_PLUSLE, 13
- wild_mon GULPIN, 13
- wild_mon WINGULL, 12
- wild_mon WINGULL, 12
- wild_mon PLUSLE_MINUN, 12
- wild_mon PLUSLE_MINUN, 13
-
- .align 2
-Route110_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route110_LandMons
-
- .align 2
-Route110_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route110_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route110_WaterMons
-
- .align 2
-Route110_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route110_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route110_FishingMons
-
- .align 2
-Route111_LandMons:
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon CACNEA, 19
- wild_mon CACNEA, 21
- wild_mon SANDSHREW, 19
- wild_mon TRAPINCH, 19
- wild_mon BALTOY, 20
- wild_mon BALTOY, 20
- wild_mon BALTOY, 22
- wild_mon BALTOY, 22
-
- .align 2
-Route111_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte Route111_LandMons
-
- .align 2
-Route111_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route111_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route111_WaterMons
-
- .align 2
-Route111_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
-
- .align 2
-Route111_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route111_RockSmashMons
-
- .align 2
-Route111_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-Route111_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route111_FishingMons
-
- .align 2
-Route112_LandMons:
- wild_mon NUMEL, 15
- wild_mon NUMEL, 15
- wild_mon MACHOP, 15
- wild_mon NUMEL, 14
- wild_mon NUMEL, 14
- wild_mon MACHOP, 14
- wild_mon NUMEL, 16
- wild_mon MACHOP, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
-
- .align 2
-Route112_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route112_LandMons
-
- .align 2
-Route113_LandMons:
- wild_mon SPINDA, 15
- wild_mon SPINDA, 15
- wild_mon SANDSHREW, 15
- wild_mon SPINDA, 14
- wild_mon SPINDA, 14
- wild_mon SANDSHREW, 14
- wild_mon SPINDA, 16
- wild_mon SANDSHREW, 16
- wild_mon SPINDA, 16
- wild_mon SKARMORY, 16
- wild_mon SPINDA, 16
- wild_mon SKARMORY, 16
-
- .align 2
-Route113_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route113_LandMons
-
- .align 2
-Route114_LandMons:
- wild_mon SWABLU, 16
- wild_mon SEEDOT_LOTAD, 16
- wild_mon SWABLU, 17
- wild_mon SWABLU, 15
- wild_mon SEEDOT_LOTAD, 15
- wild_mon ZANGOOSE_SEVIPER, 16
- wild_mon NUZLEAF_LOMBRE, 16
- wild_mon NUZLEAF_LOMBRE, 18
- wild_mon ZANGOOSE_SEVIPER, 17
- wild_mon ZANGOOSE_SEVIPER, 15
- wild_mon ZANGOOSE_SEVIPER, 17
- wild_mon SURSKIT, 15
-
- .align 2
-Route114_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route114_LandMons
-
- .align 2
-Route114_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route114_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route114_WaterMons
-
- .align 2
-Route114_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
-
- .align 2
-Route114_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route114_RockSmashMons
-
- .align 2
-Route114_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-Route114_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route114_FishingMons
-
- .align 2
-Route115_LandMons:
- wild_mon SWABLU, 23
- wild_mon TAILLOW, 23
- wild_mon SWABLU, 25
- wild_mon TAILLOW, 24
- wild_mon TAILLOW, 25
- wild_mon SWELLOW, 25
- wild_mon JIGGLYPUFF, 24
- wild_mon JIGGLYPUFF, 25
- wild_mon WINGULL, 24
- wild_mon WINGULL, 24
- wild_mon WINGULL, 26
- wild_mon WINGULL, 25
-
- .align 2
-Route115_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route115_LandMons
-
- .align 2
-Route115_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route115_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route115_WaterMons
-
- .align 2
-Route115_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route115_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route115_FishingMons
-
- .align 2
-Route116_LandMons:
- wild_mon ZIGZAGOON, 6
- wild_mon WHISMUR, 6
- wild_mon NINCADA, 6
- wild_mon WHISMUR, 7
- wild_mon NINCADA, 7
- wild_mon TAILLOW, 6
- wild_mon TAILLOW, 7
- wild_mon TAILLOW, 8
- wild_mon ZIGZAGOON, 7
- wild_mon ZIGZAGOON, 8
- wild_mon SKITTY, 7
- wild_mon SKITTY, 8
-
- .align 2
-Route116_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route116_LandMons
-
- .align 2
-Route117_LandMons:
- wild_mon ZIGZAGOON, 13
- wild_mon ROSELIA, 13
- wild_mon ZIGZAGOON, 14
- wild_mon ROSELIA, 14
- wild_mon MARILL, 13
- wild_mon ODDISH, 13
- wild_mon ILLUMISE_VOLBEAT, 13
- wild_mon ILLUMISE_VOLBEAT, 13
- wild_mon ILLUMISE_VOLBEAT, 14
- wild_mon ILLUMISE_VOLBEAT, 14
- wild_mon VOLBEAT_ILLUMISE, 13
- wild_mon SURSKIT, 13
-
- .align 2
-Route117_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route117_LandMons
-
- .align 2
-Route117_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route117_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route117_WaterMons
-
- .align 2
-Route117_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
-
- .align 2
-Route117_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route117_FishingMons
-
- .align 2
-Route118_LandMons:
- wild_mon ZIGZAGOON, 24
- wild_mon ELECTRIKE, 24
- wild_mon ZIGZAGOON, 26
- wild_mon ELECTRIKE, 26
- wild_mon LINOONE, 26
- wild_mon MANECTRIC, 26
- wild_mon WINGULL, 25
- wild_mon WINGULL, 25
- wild_mon WINGULL, 26
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon KECLEON, 25
-
- .align 2
-Route118_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route118_LandMons
-
- .align 2
-Route118_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route118_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route118_WaterMons
-
- .align 2
-Route118_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon CARVANHA, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon CARVANHA, 30, 35
- wild_mon CARVANHA, 20, 25
- wild_mon CARVANHA, 35, 40
- wild_mon CARVANHA, 40, 45
-
- .align 2
-Route118_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route118_FishingMons
-
- .align 2
-Route119_LandMons:
- wild_mon ZIGZAGOON, 25
- wild_mon LINOONE, 25
- wild_mon ZIGZAGOON, 27
- wild_mon ODDISH, 25
- wild_mon LINOONE, 27
- wild_mon ODDISH, 26
- wild_mon ODDISH, 27
- wild_mon ODDISH, 24
- wild_mon TROPIUS, 25
- wild_mon TROPIUS, 26
- wild_mon TROPIUS, 27
- wild_mon KECLEON, 25
-
- .align 2
-Route119_LandMonsInfo:
- .4byte 15 @ encounter rate
- .4byte Route119_LandMons
-
- .align 2
-Route119_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route119_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route119_WaterMons
-
- .align 2
-Route119_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon CARVANHA, 10, 30
- wild_mon CARVANHA, 25, 30
- wild_mon CARVANHA, 30, 35
- wild_mon CARVANHA, 20, 25
- wild_mon CARVANHA, 35, 40
- wild_mon CARVANHA, 40, 45
-
- .align 2
-Route119_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route119_FishingMons
-
- .align 2
-Route120_LandMons:
- wild_mon ZIGZAGOON, 25
- wild_mon LINOONE, 25
- wild_mon LINOONE, 27
- wild_mon ODDISH, 25
- wild_mon MARILL, 25
- wild_mon ODDISH, 26
- wild_mon ODDISH, 27
- wild_mon MARILL, 27
- wild_mon ABSOL, 25
- wild_mon ABSOL, 27
- wild_mon KECLEON, 25
- wild_mon SURSKIT, 25
-
- .align 2
-Route120_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route120_LandMons
-
- .align 2
-Route120_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route120_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route120_WaterMons
-
- .align 2
-Route120_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-Route120_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route120_FishingMons
-
- .align 2
-Route121_LandMons:
- wild_mon ZIGZAGOON, 26
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon LINOONE, 26
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon LINOONE, 28
- wild_mon ODDISH, 26
- wild_mon ODDISH, 28
- wild_mon GLOOM, 28
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon WINGULL, 28
- wild_mon KECLEON, 25
-
- .align 2
-Route121_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route121_LandMons
-
- .align 2
-Route121_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route121_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route121_WaterMons
-
- .align 2
-Route121_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route121_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route121_FishingMons
-
- .align 2
-Route122_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route122_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route122_WaterMons
-
- .align 2
-Route122_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route122_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route122_FishingMons
-
- .align 2
-Route123_LandMons:
- wild_mon ZIGZAGOON, 26
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon LINOONE, 26
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon LINOONE, 28
- wild_mon ODDISH, 26
- wild_mon ODDISH, 28
- wild_mon GLOOM, 28
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon WINGULL, 28
- wild_mon KECLEON, 25
-
- .align 2
-Route123_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route123_LandMons
-
- .align 2
-Route123_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route123_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route123_WaterMons
-
- .align 2
-Route123_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route123_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route123_FishingMons
-
- .align 2
-Route124_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route124_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route124_WaterMons
-
- .align 2
-Route124_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route124_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route124_FishingMons
-
- .align 2
-Route125_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route125_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route125_WaterMons
-
- .align 2
-Route125_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route125_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route125_FishingMons
-
- .align 2
-Route126_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route126_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route126_WaterMons
-
- .align 2
-Route126_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route126_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route126_FishingMons
-
- .align 2
-Route127_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route127_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route127_WaterMons
-
- .align 2
-Route127_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route127_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route127_FishingMons
-
- .align 2
-Route128_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route128_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route128_WaterMons
-
- .align 2
-Route128_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon LUVDISC, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon LUVDISC, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon CORSOLA, 30, 35
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route128_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route128_FishingMons
-
- .align 2
-Route129_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- .ifdef SAPPHIRE
- wild_mon WAILORD, 25, 30
- .else
- wild_mon WAILORD, 35, 40
- .endif
-
- .align 2
-Route129_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route129_WaterMons
-
- .align 2
-Route129_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route129_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route129_FishingMons
-
- .align 2
-Route130_LandMons:
- wild_mon WYNAUT, 30
- wild_mon WYNAUT, 35
- wild_mon WYNAUT, 25
- wild_mon WYNAUT, 40
- wild_mon WYNAUT, 20
- wild_mon WYNAUT, 45
- wild_mon WYNAUT, 15
- wild_mon WYNAUT, 50
- wild_mon WYNAUT, 10
- wild_mon WYNAUT, 5
- wild_mon WYNAUT, 10
- wild_mon WYNAUT, 5
-
- .align 2
-Route130_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route130_LandMons
-
- .align 2
-Route130_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route130_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route130_WaterMons
-
- .align 2
-Route130_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route130_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route130_FishingMons
-
- .align 2
-Route131_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route131_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route131_WaterMons
-
- .align 2
-Route131_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route131_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route131_FishingMons
-
- .align 2
-Route132_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route132_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route132_WaterMons
-
- .align 2
-Route132_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route132_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route132_FishingMons
-
- .align 2
-Route133_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route133_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route133_WaterMons
-
- .align 2
-Route133_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route133_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route133_FishingMons
-
- .align 2
-Route134_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route134_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route134_WaterMons
-
- .align 2
-Route134_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route134_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route134_FishingMons
-
- .align 2
-SafariZone_Northwest_LandMons:
- wild_mon RHYHORN, 27
- wild_mon ODDISH, 27
- wild_mon RHYHORN, 29
- wild_mon ODDISH, 29
- wild_mon DODUO, 27
- wild_mon GLOOM, 29
- wild_mon GLOOM, 31
- wild_mon DODUO, 29
- wild_mon DODRIO, 29
- wild_mon PINSIR, 27
- wild_mon DODRIO, 31
- wild_mon PINSIR, 29
-
- .align 2
-SafariZone_Northwest_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Northwest_LandMons
-
- .align 2
-SafariZone_Northwest_WaterMons:
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 30, 35
- wild_mon GOLDUCK, 30, 35
- wild_mon GOLDUCK, 25, 40
-
- .align 2
-SafariZone_Northwest_WaterMonsInfo:
- .4byte 9 @ encounter rate
- .4byte SafariZone_Northwest_WaterMons
-
- .align 2
-SafariZone_Northwest_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 25
- wild_mon GOLDEEN, 10, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon GOLDEEN, 30, 35
- wild_mon SEAKING, 30, 35
- wild_mon SEAKING, 35, 40
- wild_mon SEAKING, 25, 30
-
- .align 2
-SafariZone_Northwest_FishingMonsInfo:
- .4byte 35 @ encounter rate
- .4byte SafariZone_Northwest_FishingMons
-
- .align 2
-SafariZone_Northeast_LandMons:
- wild_mon PHANPY, 27
- wild_mon ODDISH, 27
- wild_mon PHANPY, 29
- wild_mon ODDISH, 29
- wild_mon NATU, 27
- wild_mon GLOOM, 29
- wild_mon GLOOM, 31
- wild_mon NATU, 29
- wild_mon XATU, 29
- wild_mon HERACROSS, 27
- wild_mon XATU, 31
- wild_mon HERACROSS, 29
-
- .align 2
-SafariZone_Northeast_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Northeast_LandMons
-
- .align 2
-SafariZone_Northeast_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 20, 25
- wild_mon GEODUDE, 25, 30
-
- .align 2
-SafariZone_Northeast_RockSmashMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Northeast_RockSmashMons
-
- .align 2
-SafariZone_Southwest_LandMons:
- wild_mon ODDISH, 25
- wild_mon ODDISH, 27
- wild_mon GIRAFARIG, 25
- wild_mon GIRAFARIG, 27
- wild_mon NATU, 25
- .ifdef SAPPHIRE
- wild_mon DODUO, 27
- .else
- wild_mon DODUO, 25
- .endif
- wild_mon GLOOM, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 27
- wild_mon WOBBUFFET, 29
-
- .align 2
-SafariZone_Southwest_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Southwest_LandMons
-
- .align 2
-SafariZone_Southwest_WaterMons:
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 30, 35
- wild_mon PSYDUCK, 30, 35
- wild_mon PSYDUCK, 30, 35
-
- .align 2
-SafariZone_Southwest_WaterMonsInfo:
- .4byte 9 @ encounter rate
- .4byte SafariZone_Southwest_WaterMons
-
- .align 2
-SafariZone_Southwest_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 25
- wild_mon GOLDEEN, 10, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon GOLDEEN, 30, 35
- wild_mon SEAKING, 30, 35
- wild_mon SEAKING, 35, 40
- wild_mon SEAKING, 25, 30
-
- .align 2
-SafariZone_Southwest_FishingMonsInfo:
- .4byte 35 @ encounter rate
- .4byte SafariZone_Southwest_FishingMons
-
- .align 2
-SafariZone_Southeast_LandMons:
- wild_mon ODDISH, 25
- wild_mon ODDISH, 27
- wild_mon GIRAFARIG, 25
- wild_mon GIRAFARIG, 27
- wild_mon NATU, 25
- wild_mon DODUO, 25
- wild_mon GLOOM, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 27
- wild_mon WOBBUFFET, 29
-
- .align 2
-SafariZone_Southeast_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Southeast_LandMons
-
- .align 2
-DewfordTown_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-DewfordTown_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte DewfordTown_WaterMons
-
- .align 2
-DewfordTown_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-DewfordTown_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte DewfordTown_FishingMons
-
- .align 2
-PacifidlogTown_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-PacifidlogTown_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte PacifidlogTown_WaterMons
-
- .align 2
-PacifidlogTown_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-PacifidlogTown_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte PacifidlogTown_FishingMons
-
- .align 2
-Underwater1_WaterMons:
- wild_mon CLAMPERL, 20, 30
- wild_mon CHINCHOU, 20, 30
- wild_mon CLAMPERL, 30, 35
- wild_mon RELICANTH, 30, 35
- wild_mon RELICANTH, 30, 35
-
- .align 2
-Underwater1_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Underwater1_WaterMons
-
- .align 2
-Underwater2_WaterMons:
- wild_mon CLAMPERL, 20, 30
- wild_mon CHINCHOU, 20, 30
- wild_mon CLAMPERL, 30, 35
- wild_mon RELICANTH, 30, 35
- wild_mon RELICANTH, 30, 35
-
- .align 2
-Underwater2_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Underwater2_WaterMons
.align 2
gWildMonHeaders::
diff --git a/generated.mk b/generated.mk
deleted file mode 100644
index e05b28a9c..000000000
--- a/generated.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-BIN2C := tools/bin2c/bin2c
-
-GEN_FONT_HEADERS := \
-include/fonts/font0_lat_glyphs.h \
-include/fonts/font1_lat_glyphs.h \
-include/fonts/font0_jpn_glyphs.h \
-include/fonts/font1_jpn_glyphs.h \
-include/fonts/braille_glyphs.h \
-include/fonts/down_arrow_tiles.h \
-include/fonts/unknown_palette_81E6692.h \
-include/fonts/default_palette.h
-
-GEN_LINK_HEADERS := include/link/digit_tiles.h include/link/digit_palette.h
-
-include/fonts/font0_lat_glyphs.h: graphics/fonts/font0_lat.1bpp
- $(BIN2C) $< sFont0LatinGlyphs >$@ -static -col 8 -pad 4
-
-include/fonts/font1_lat_glyphs.h: graphics/fonts/font1_lat.1bpp
- $(BIN2C) $< sFont1LatinGlyphs >$@ -static -col 8 -pad 4
-
-include/fonts/font0_jpn_glyphs.h: graphics/fonts/font0_jpn.1bpp
- $(BIN2C) $< sFont0JapaneseGlyphs >$@ -static -col 8 -pad 4
-
-include/fonts/font1_jpn_glyphs.h: graphics/fonts/font1_jpn.1bpp
- $(BIN2C) $< sFont1JapaneseGlyphs >$@ -static -col 8 -pad 4
-
-include/fonts/braille_glyphs.h: graphics/fonts/font6_braille.1bpp
- $(BIN2C) $< sBrailleGlyphs >$@ -static -col 8 -pad 4
-
-include/fonts/down_arrow_tiles.h: graphics/fonts/down_arrow.4bpp
- $(BIN2C) $< sDownArrowTiles >$@ -static -size 4 -pad 10
-
-include/fonts/unknown_palette_81E6692.h: graphics/fonts/unknown_81E6692.gbapal
- $(BIN2C) $< gUnknownPalette_81E6692 >$@ -size 2 -pad 6
-
-include/fonts/default_palette.h: graphics/fonts/default.gbapal
- $(BIN2C) $< gFontDefaultPalette >$@ -size 2 -pad 6
-
-include/link/digit_tiles.h: graphics/interface/link_test_digits.4bpp
- $(BIN2C) $< sLinkTestDigitTiles >$@ -static -size 4 -pad 10
-
-include/link/digit_palette.h: graphics/interface/link_test_digits.gbapal
- $(BIN2C) $< sLinkTestDigitPalette >$@ -static -size 2 -pad 6
diff --git a/graphics/intro/8412818.pal b/graphics/intro/8412818.pal
new file mode 100644
index 000000000..09a1ee728
--- /dev/null
+++ b/graphics/intro/8412818.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+82 131 246
+115 164 246
+139 197 246
+180 222 230
+197 246 230
+164 230 246
+131 164 255
+189 197 255
+156 197 255
+180 230 255
+189 197 255
+0 0 0
+255 255 255
+230 246 255
+205 238 255
+180 230 255
+164 222 255
+139 213 255
+115 205 255
+98 197 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 255 255
+230 246 255
+205 238 255
+180 230 255
+164 222 255
+139 213 255
+115 205 255
+98 197 255
+230 230 255
+246 255 255
+213 222 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/8412878.pal b/graphics/intro/8412878.pal
new file mode 100644
index 000000000..4ff388f48
--- /dev/null
+++ b/graphics/intro/8412878.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+255 98 82
+255 123 106
+255 148 139
+255 172 172
+255 197 205
+255 222 238
+156 180 172
+197 197 156
+172 189 164
+255 222 156
+222 172 106
+0 0 0
+255 255 255
+255 238 205
+255 222 156
+255 222 156
+255 213 131
+255 197 106
+255 172 98
+255 156 90
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 255 255
+255 238 205
+255 222 156
+255 222 156
+255 213 131
+255 197 106
+255 172 98
+255 156 90
+255 238 205
+246 255 255
+255 222 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/8413E38.pal b/graphics/intro/8413E38.pal
new file mode 100644
index 000000000..82855d938
--- /dev/null
+++ b/graphics/intro/8413E38.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+49 115 246
+57 74 123
+57 74 123
+57 74 123
+49 57 98
+49 49 82
+49 32 57
+49 24 41
+0 0 0
+0 0 0
+0 0 0
+57 74 123
+57 74 123
+246 246 123
+41 65 90
+0 0 0
+0 0 0
+0 0 0
+82 90 148
+148 131 164
+57 74 123
+131 106 156
+98 90 123
+156 164 197
+139 148 172
+90 131 139
+189 197 213
+90 115 164
+230 230 82
+131 131 164
+246 246 123
diff --git a/graphics/intro/intro2_bgclouds_afternoon.pal b/graphics/intro/intro2_bgclouds_afternoon.pal
new file mode 100644
index 000000000..6d5d9dbcd
--- /dev/null
+++ b/graphics/intro/intro2_bgclouds_afternoon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+255 238 205
+255 222 156
+255 222 156
+255 213 131
+255 197 106
+255 172 98
+255 156 90
+255 238 205
+246 255 255
+255 222 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgtrees2.pal b/graphics/intro/intro2_bgtrees2.pal
new file mode 100644
index 000000000..5c506481a
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees2.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+156 189 246
+172 205 246
+197 230 255
+213 246 255
+238 255 255
+156 180 172
+197 197 156
+172 189 164
+98 139 98
+98 156 57
+123 164 131
+156 213 82
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgtrees2_afternoon.pal b/graphics/intro/intro2_bgtrees2_afternoon.pal
new file mode 100644
index 000000000..9736a6e95
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees2_afternoon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 106 57
+255 131 82
+255 197 106
+255 213 131
+255 222 156
+156 180 172
+197 197 156
+172 189 164
+115 139 57
+98 156 57
+131 172 57
+189 197 49
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_grass_afternoon.pal b/graphics/intro/intro2_grass_afternoon.pal
new file mode 100644
index 000000000..20b1e45f5
--- /dev/null
+++ b/graphics/intro/intro2_grass_afternoon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+106 164 98
+106 197 98
+164 197 131
diff --git a/graphics/intro/intro2_grass_night.pal b/graphics/intro/intro2_grass_night.pal
new file mode 100644
index 000000000..e44980f78
--- /dev/null
+++ b/graphics/intro/intro2_grass_night.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+106 164 98
+106 197 98
+131 197 164
diff --git a/graphics/intro/unknown1.pal b/graphics/intro/unknown1.pal
new file mode 100644
index 000000000..1b8ce3d6e
--- /dev/null
+++ b/graphics/intro/unknown1.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8 57 8
+32 74 32
+57 98 57
+90 123 90
+115 139 115
+139 164 139
+172 189 172
+197 205 197
+222 230 222
+255 255 255
diff --git a/graphics/intro/unknown2.pal b/graphics/intro/unknown2.pal
new file mode 100644
index 000000000..aef9152e4
--- /dev/null
+++ b/graphics/intro/unknown2.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+156 246 0
+65 90 156
+49 115 255
+82 82 82
+98 98 98
+115 115 115
+131 131 131
+148 148 148
+164 164 164
+180 180 180
+197 197 197
+213 213 213
+230 230 230
+255 255 255
+255 255 255
diff --git a/graphics/misc/83F808C.pal b/graphics/misc/83F808C.pal
new file mode 100644
index 000000000..fea15a176
--- /dev/null
+++ b/graphics/misc/83F808C.pal
@@ -0,0 +1,11 @@
+JASC-PAL
+0100
+8
+148 197 172
+16 16 16
+32 32 32
+49 49 49
+65 65 65
+82 82 82
+98 98 98
+115 115 115
diff --git a/graphics/misc/83F809C.pal b/graphics/misc/83F809C.pal
new file mode 100644
index 000000000..09eb37624
--- /dev/null
+++ b/graphics/misc/83F809C.pal
@@ -0,0 +1,11 @@
+JASC-PAL
+0100
+8
+131 131 131
+148 148 148
+164 164 164
+180 180 180
+197 197 197
+213 213 213
+230 230 230
+255 255 255
diff --git a/graphics/pokedex/83FB6F8.pal b/graphics/pokedex/83FB6F8.pal
new file mode 100644
index 000000000..969c38cbd
--- /dev/null
+++ b/graphics/pokedex/83FB6F8.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 148
+0 131 131
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+148 148 255
+156 156 255
+172 172 255
+189 189 255
+205 205 255
+222 222 255
+238 238 255
+255 255 255
diff --git a/graphics/pokedex/cry_meter_map.bin b/graphics/pokedex/cry_meter_map.bin
new file mode 100644
index 000000000..cd58849a4
--- /dev/null
+++ b/graphics/pokedex/cry_meter_map.bin
Binary files differ
diff --git a/graphics/pokemon_storage/83B6D74.pal b/graphics/pokemon_storage/83B6D74.pal
new file mode 100644
index 000000000..c3bd0a175
--- /dev/null
+++ b/graphics/pokemon_storage/83B6D74.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 205 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 139 189
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+148 148 172
diff --git a/graphics/pokemon_storage/83B6D94.pal b/graphics/pokemon_storage/83B6D94.pal
new file mode 100644
index 000000000..20982d214
--- /dev/null
+++ b/graphics/pokemon_storage/83B6D94.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 156 148
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+189 90 82
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+148 148 172
diff --git a/graphics/trainer_card/83B5F0C.pal b/graphics/trainer_card/83B5F0C.pal
new file mode 100644
index 000000000..9df82c665
--- /dev/null
+++ b/graphics/trainer_card/83B5F0C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+230 123 139
+164 49 115
+0 0 0
+0 0 0
diff --git a/graphics/trainer_card/83B5F4C.pal b/graphics/trainer_card/83B5F4C.pal
new file mode 100644
index 000000000..485a85f79
--- /dev/null
+++ b/graphics/trainer_card/83B5F4C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 98 115
+246 197 0
+205 164 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/trainer_card/83B5F6C.pal b/graphics/trainer_card/83B5F6C.pal
new file mode 100644
index 000000000..f990e1eaf
--- /dev/null
+++ b/graphics/trainer_card/83B5F6C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 0 255
+255 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/trainer_card/83B5F8C_map.bin b/graphics/trainer_card/83B5F8C_map.bin
new file mode 100644
index 000000000..0cbe2035c
--- /dev/null
+++ b/graphics/trainer_card/83B5F8C_map.bin
Binary files differ
diff --git a/include/asm.h b/include/asm.h
index acf688d84..0b0fc3006 100644
--- a/include/asm.h
+++ b/include/asm.h
@@ -6,36 +6,43 @@
#include "sprite.h"
#include "asm_fieldmap.h"
-struct UnkInputStruct
+struct FieldInput
{
- u8 input_field_0_0:1;
+ u8 pressedAButton:1;
u8 input_field_0_1:1;
- u8 input_field_0_2:1;
- u8 input_field_0_3:1;
+ u8 pressedStartButton:1;
+ u8 pressedSelectButton:1;
u8 input_field_0_4:1;
u8 input_field_0_5:1;
u8 input_field_0_6:1;
- u8 input_field_0_7:1;
- u8 input_field_1;
- u8 input_field_2;
+ u8 pressedBButton:1;
+ u8 input_field_1_0:1;
+ u8 input_field_1_1:1;
+ u8 input_field_1_2:1;
+ u8 input_field_1_3:1;
+ u8 input_field_1_4:1;
+ u8 input_field_1_5:1;
+ u8 input_field_1_6:1;
+ u8 input_field_1_7:1;
+ u8 dpadDirection;
u8 input_field_3;
};
struct UnknownStruct_FPA
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- s16 unk4;
- s16 unk6;
- u8 unk8;
- u8 unk9;
- u8 unkA_0:4;
- u8 unkA_4:4;
- u16 unkC;
- u16 unkE;
- u32 unk10;
- u16 unk14;
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ s16 unk4;
+ s16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA_0:4;
+ u8 unkA_4:4;
+ u16 unkC;
+ u16 unkE;
+ u32 unk10;
+ u16 unk14;
};
#include "asm.inc.h"
diff --git a/include/asm.inc.h b/include/asm.inc.h
index c415cd825..9ee10aa58 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -38,14 +38,6 @@ void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u16 s
// asm/berry_blender.o
void sub_80516C4(u8, u16);
-// src/field_door.o
-void FieldSetDoorOpened(u32, u32);
-void FieldSetDoorClosed(u32, u32);
-s8 FieldAnimateDoorClose(u32, u32);
-s8 FieldAnimateDoorOpen(u32, u32);
-bool8 FieldIsDoorAnimationRunning(void);
-u32 sub_8058790(u32 x, u32 y);
-
// asm/field_map_obj.o
void sub_805AA98();
u8 sub_805AB54(void);
@@ -53,16 +45,17 @@ u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
u8 GetFieldObjectIdByXY(s16, s16);
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
-u8 SpawnSpecialFieldObject(struct UnknownStruct_FPA *);
+u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
u8 show_sprite(u8, u8, u8);
-u8 AddPseudoFieldObject(u8 val, void (*player)(struct Sprite *), int i, int i1, int i2);
+u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c, s16 d, u8 subpriority);
u8 sub_805B410(u8, u8, s16, s16, u8, u8);
-void sub_805B55C(int i, int i1);
-void sub_805B710(int i, int i1);
+//void sub_805B55C(int i, int i1);
+void sub_805B55C(s16 a, s16 b);
+void sub_805B710(u16 i, u16 i1);
void sub_805B980(struct MapObject *, u8);
void FieldObjectTurn(struct MapObject *, u8);
void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8);
-struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
+const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *);
void sub_805BCF0(u8, u8, u8, u8);
@@ -72,15 +65,15 @@ void gpu_pal_allocator_reset__manage_upper_four(void);
void npc_coords_shift(struct MapObject *pObject, s16 x, s16 y);
void sub_805C0F8(u8, u8, u8, s16, s16);
void npc_coords_shift_still(struct MapObject *pObject);
-u8 GetFieldObjectIdByXYZ(u16, u16, int);
+u8 GetFieldObjectIdByXYZ(u16, u16, u8);
void UpdateFieldObjectsForCameraUpdate(s16, s16);
u8 AddCameraObject(u8);
u8 * GetFieldObjectScriptPointerByFieldObjectId(u8);
u8 FieldObjectGetBerryTreeId(u8);
void sub_805C754(struct MapObject *pObject);
-void sub_805C774(struct MapObject *, u8 );
+void sub_805C774(struct MapObject *, u8);
void sub_805C78C(u8, u8, u8);
-void sub_805C7C4(int i);
+void sub_805C7C4(u8 i);
u8 FieldObjectDirectionToImageAnimId(u8);
u8 get_go_image_anim_num(u8 unk_19);
u8 sub_805FD98(u8);
@@ -96,7 +89,7 @@ void sub_8060288(u8, u8, u8);
void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1);
void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1);
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *);
-void FieldObjectSetSpecialAnim(struct MapObject *, u8);
+bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8);
void FieldObjectForceSetSpecialAnim(struct MapObject *pObject, u8 a);
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
void FieldObjectClearAnim(struct MapObject *);
@@ -136,32 +129,11 @@ u8 ZCoordToPriority(u8);
void FieldObjectUpdateZCoord(struct MapObject *pObject);
void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
-// src/field_map_obj_helpers.o
-bool8 FreezeMapObject(struct MapObject *);
-void FreezeMapObjects(void);
-void FreezeMapObjectsExceptOne(u8);
-void UnfreezeMapObjects(void);
-void sub_806487C(struct Sprite *sprite, bool8 invisible);
-void sub_8064990(u8, u8);
-
-// asm/field_control_avatar.o
-void sub_8067EEC(struct UnkInputStruct *pStruct);
-void process_overworld_input(struct UnkInputStruct *pStruct, u16 keys, u16 heldKeys);
-int sub_8068024(struct UnkInputStruct *pStruct);
-u8 *sub_80682A8(void *, u8, u8);
-void overworld_poison_timer_set(void);
-void prev_quest_postbuffer_cursor_backup_reset(void);
-u8 *sub_8068E24(struct UnkStruct_8054FF8_Substruct *);
-u8 *GetFieldObjectScriptPointerForComparison();
-
// asm/field_tasks.o
void SetUpFieldTasks();
void ActivatePerStepCallback(u8);
void ResetFieldTasksArgs(void);
-// asm/clock.o
-void DoTimeBasedEvents(void);
-
// asm/reset_rtc_screen.o
void CB2_InitResetRtcScreen(void);
@@ -202,10 +174,6 @@ u8 sub_8083664(void);
void sub_8083A84(TaskFunc);
s32 sub_8083BF4(u8 id);
-// src/fldeff_emotion.o
-void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
-void objc_exclamation_mark_probably(struct Sprite *sprite);
-
// asm/rom_80859BC.o
u8 CreateTrainerSprite_BirchSpeech(u8, u16, u16, u8, void *);
void LoadTrainerGfx_TrainerCard(u8 gender, int, void *);
@@ -236,7 +204,7 @@ void sub_809D608(u16);
u8 pokemon_ailments_get_primary(u32);
// asm/script_movement.o
-u8 exec_movement(u8, u8, u8, void *);
+bool8 exec_movement(u8, u8, u8, u8 *);
bool8 sub_80A212C(u8, u8, u8);
void sub_80A2178(void);
@@ -245,8 +213,8 @@ void sub_80A2B18(void);
u16 sub_80A2D64(u16, u8 *);
// asm/map_name_popup.o
-void AddMapNamePopUpWindowTask(void);
-void HideMapNamePopUpWindow();
+void ShowMapNamePopup(void);
+void HideMapNamePopup();
// asm/item_menu.o
void sub_80A3684(void);
@@ -258,11 +226,6 @@ u8 sub_80A7D8C(u8 berry, int i, int i1);
void sub_80A7DD4(void);
u8 sub_80A7E5C(u8);
-// src/matsuda_debug_menu.o
-void sub_80AA280(u8);
-void sub_80AA5E8(u8);
-void sub_80AA658(u8);
-
// asm/contest.o
void sub_80AB1B0(void);
void sub_80AE098(u8);
@@ -278,18 +241,6 @@ void CreatePokemartMenu(void *);
void CreateDecorationShop1Menu(void *);
void CreateDecorationShop2Menu(void *);
-// src/script_menu.o
-bool8 sub_80B5054(u8, u8, u8, u8);
-bool8 sub_80B50B0(u8, u8, u8, u8, u8);
-bool8 Multichoice(u8, u8, u8, u8);
-bool8 yes_no_box(u8, u8);
-bool8 sub_80B5578(u8, u8, u8, u8, u8);
-bool8 sub_80B58C4(u16, u8, u8);
-void *picbox_close(void);
-
-// asm/naming_screen.o
-void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4);
-
// asm/secret_base.o
void sub_80BB5B4(void);
u8 sub_80BBB24(void);
@@ -329,15 +280,6 @@ void sub_80C4940(void);
void sub_80C4980(u8);
u8 sub_80C4B34(u8 *);
-// asm/script_pokemon_util_80C4BF0.o
-u8 sub_80C4D50(void);
-void ShowContestWinner(void);
-void HealPlayerParty();
-u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
-u8 ScriptGiveEgg(u16);
-void ScriptWildBattle(u16, u8, u16);
-void ScriptSetMonMoveSlot(u8, u16, u8);
-
// asm/fldeff_80C5CD4.o
void DoFieldPoisonEffect(void);
bool32 FieldPoisonEffectIsRunning(void);
@@ -356,16 +298,6 @@ void sub_80C8E1C(u8);
void sub_80C8EBC(u8);
void sub_80C8F34(u8);
-// asm/bike.o
-void MovePlayerOnBike(u8, u16, u16);
-void sub_80E5B38(u16 i, u16 c);
-u8 sub_80E5DEC(u8);
-bool8 player_should_look_direction_be_enforced_upon_movement(void);
-void sub_80E5FCC(int i, int i1);
-void sub_80E6010(int i);
-s16 sub_80E6034(void);
-void sub_80E6084();
-
// asm/easy_chat.o
void sub_80E6764(void);
void sub_80EB3FC(u8 *, u16);
@@ -376,7 +308,7 @@ u16 sub_80EB72C(u16);
void sub_80EBA5C(void);
// asm/mauville_old_man.o
-void sub_80F7AA4(void);
+void SetMauvilleOldMan(void);
void sub_80F7F30(void);
// asm/menu_helpers.o
@@ -384,18 +316,6 @@ bool8 sub_80F9344(void);
void sub_80F9368(void);
void sub_80F9438(void);
-// asm/script_pokemon_util_80F99CC.o
-void sub_80F99CC(void);
-
-// src/dewford_trend.o
-void sub_80FA17C(void);
-void sub_80FA46C(struct EasyChatPair *, u16, u8);
-void sub_80FA4E4(struct EasyChatPair *, u32, u8);
-bool8 sub_80FA670(struct EasyChatPair *, struct EasyChatPair *, u8);
-void sub_80FA740(struct EasyChatPair *);
-bool8 SB1ContainsWords(u16 *);
-bool8 IsEasyChatPairEqual(u16 *, u16 *);
-
// asm/region_map.o
void sub_80FBFB4(u8 *str, u8 region, u8);
void CopyMapName();
@@ -404,13 +324,6 @@ u8 *CopyLocationName(u8 *dest, u8 location);
// asm/slot_machine.o
void PlaySlotMachine(u8, void *);
-// asm/contest_painting.o
-void sub_8106630(u32);
-
-// asm/rom6.o
-bool8 npc_before_player_of_type(u8);
-u8 oei_task_add(void);
-
// asm/pokeblock.o
void sub_810C994(void);
void sub_810CA6C(s32);
@@ -468,30 +381,14 @@ void sub_8134AC0(void *);
// src/player_pc.o
void NewGameInitPCItems(void);
-// src/intro.o
-void sub_813CE30(u16, u16, u16, u16);
-
-// asm/braille_puzzles.o
-bool8 ShouldDoBrailleStrengthEffect(void);
-void DoBrailleStrengthEffect(void);
-
// asm/intro_credits_graphics.o
void load_intro_part2_graphics(/*TODO: arg types*/);
void sub_8148C78(/*TODO: arg types*/);
+void sub_8148CB0(u8);
+void sub_8148E90(u8);
u8 sub_8148EC0(/*TODO: arg types*/);
void sub_8149020(/*TODO: arg types*/);
u8 intro_create_brendan_sprite(/*TODO: arg types*/);
u8 intro_create_may_sprite(/*TODO: arg types*/);
u8 intro_create_latios_sprite(/*TODO: arg types*/);
u8 intro_create_latias_sprite(/*TODO: arg types*/);
-
-// asm/name_string_util.o
-void SanitizeNameString(u8*);
-
-// src/agb_flash.o
-u16 ReadFlashId(void);
-u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
-void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size);
-u32 ProgramFlashSectorAndVerify();
-u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n);
-u16 IdentifyFlash(void);
diff --git a/include/battle.h b/include/battle.h
index d58b234e3..4b9144721 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -17,54 +17,129 @@
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
+#define AI_ACTION_DONE 0x0001
+#define AI_ACTION_FLEE 0x0002
+#define AI_ACTION_WATCH 0x0004
+#define AI_ACTION_DO_NOT_ATTACK 0x0008
+#define AI_ACTION_UNK5 0x0010
+#define AI_ACTION_UNK6 0x0020
+#define AI_ACTION_UNK7 0x0040
+#define AI_ACTION_UNK8 0x0080
+
+#define MAX_TRAINER_ITEMS 4
+#define MAX_MON_MOVES 4
+
+// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
+extern u8 unk_2000000[];
+
+// to do: maybe try to reduce the defines needed to match?
+#define BATTLE_STRUCT ((struct BattleStruct *)(unk_2000000))
+#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(unk_2000000 + 0x16800))
+#define UNK_2016A00_STRUCT ((struct UnknownStruct1 *)(unk_2000000 + 0x16A00))
+#define AI_STACK ((struct AI_Stack *)(unk_2000000 + 0x16C00))
+#define AI_ARRAY_160CC ((struct SmallItemStruct *)(unk_2000000 + 0x160CC))
+
+enum
+{
+ WEATHER_SUN,
+ WEATHER_RAIN,
+ WEATHER_SANDSTORM,
+ WEATHER_HAIL,
+};
+
struct Trainer
{
- /*0x00*/ u8 partyFlags;
- /*0x01*/ u8 trainerClass;
- /*0x02*/ u8 encounterMusic:7;
- /*0x02*/ u8 gender:1;
- /*0x03*/ u8 trainerPic;
- /*0x04*/ u8 trainerName[12];
- /*0x10*/ u16 items[4];
- /*0x18*/ bool8 doubleBattle;
- /*0x1C*/ u32 aiFlags;
- /*0x20*/ u8 partySize;
- /*0x24*/ void *party;
+ /*0x00*/ u8 partyFlags;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u8 encounterMusic:7;
+ /*0x02*/ u8 gender:1;
+ /*0x03*/ u8 trainerPic;
+ /*0x04*/ u8 trainerName[12];
+ /*0x10*/ u16 items[4];
+ /*0x18*/ bool8 doubleBattle;
+ /*0x1C*/ u32 aiFlags;
+ /*0x20*/ u8 partySize;
+ /*0x24*/ void *party;
+};
+
+struct UnknownStruct1 // AI_Opponent_Info?
+{
+ /*0x00*/ u16 movesUsed[2][8]; // 0xFFFF means move not used (confuse self hit, etc)
+ /*0x20*/ u8 unk20[2];
+ /*0x22*/ u8 unk22[2];
+ /*0x24*/ u16 items[4];
+ /*0x2C*/ u8 numOfItems;
+};
+
+struct AI_Stack
+{
+ u8 *ptr[8];
+ u8 size;
};
struct AI_ThinkingStruct /* 0x2016800 */
{
-/* 0x00 */ u8 unk0;
-/* 0x01 */ u8 moveConsidered;
-/* 0x02 */ u16 unk2;
+/* 0x00 */ u8 aiState;
+/* 0x01 */ u8 movesetIndex;
+/* 0x02 */ u16 moveConsidered;
/* 0x04 */ s8 score[4]; // score?
-/* 0x08 */ u32 unk8;
+/* 0x08 */ u32 funcResult;
/* 0x0C */ u32 aiFlags;
-/* 0x10 */ u8 unk10;
+/* 0x10 */ u8 aiAction;
/* 0x11 */ u8 aiLogicId;
/* 0x12 */ u8 filler12[6];
-/* 0x18 */ u8 unk18[4];
+/* 0x18 */ u8 simulatedRNG[4];
};
struct SmallBattleStruct1
{
- u8 unk1;
- u8 unk2;
- u8 unk3;
- u8 unk4;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ // unknown size
+};
+
+struct SmallItemStruct
+{
+ u8 itemLocal[2][3];
};
struct BattleStruct /* 0x2000000 */
{
- u8 filler0[0x1601C];
- struct SmallBattleStruct1 unk;
- u8 filler1[0xAB]; // 0x2016020
- /* 0x160CB */ u8 linkPlayerIndex;
- u8 filler2[0x734];
- struct AI_ThinkingStruct ai;
+ u8 filler0[0x15DDE];
+ /*0x15DDE*/ u8 unk15DDE;
+ /*0x15DDF*/ u8 unk15DDF;
+ /*0x15DE0*/ u8 filler15DE0[0x23C]; // 0xAF off?
+ struct SmallBattleStruct1 unk;
+ u8 filler1[0x68];
+ /* 0x16089 */ u8 safariFleeRate;
+ u8 filler1_2[0x42];
+ /* 0x160CB */ u8 linkPlayerIndex;
+ /* 0x160CC */ struct SmallItemStruct item;
+ u8 filler2[0x72E];
+ /* 0x16800 */ struct AI_ThinkingStruct ai; /* 0x2016800 */
+ u8 filler1681C[0x1E4];
+ /* 0x16A00 */ struct UnknownStruct1 unk_2016A00_2;
+};
+
+struct UnknownStruct4
+{
+ u8 filler0[0x3];
+ u16 unk4;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 fillerA[0x9];
+ u8 taunt:4;
+ u8 unkC:4;
+ u8 fillerD[0x2];
+ u8 unk16;
+ u8 filler17[0x4];
};
-extern struct BattleStruct battle_2000000;
+extern struct UnknownStruct1 unk_2016A00;
+extern struct UnknownStruct4 gUnknown_02024CA8[];
extern struct AI_ThinkingStruct gAIThinkingSpace;
#endif // GUARD_BATTLE_H
diff --git a/include/battle_ai.h b/include/battle_ai.h
new file mode 100644
index 000000000..a5fea3480
--- /dev/null
+++ b/include/battle_ai.h
@@ -0,0 +1,31 @@
+#ifndef GUARD_BATTLEAI_H
+#define GUARD_BATTLEAI_H
+
+#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
+#define AIScriptRead8(ptr) ((ptr)[0])
+#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
+
+enum
+{
+ TARGET,
+ USER
+};
+
+// AI states
+enum
+{
+ AIState_SettingUp,
+ AIState_Processing,
+ AIState_FinishedProcessing,
+ AIState_DoNotProcess
+};
+
+// battle_ai
+void BattleAI_SetupAIData(void);
+void BattleAI_DoAIProcessing(void);
+void sub_810745C(void);
+void AIStackPushVar(u8 *);
+u8 AIStackPop(void);
+
+#endif
diff --git a/include/battle_anim.h b/include/battle_anim.h
new file mode 100644
index 000000000..eb98ebf09
--- /dev/null
+++ b/include/battle_anim.h
@@ -0,0 +1,58 @@
+#ifndef GUARD_BATTLEANIM_H
+#define GUARD_BATTLEANIM_H
+
+#define SCRIPT_READ_8(ptr) ((ptr)[0])
+#define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define SCRIPT_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+
+#define REG_BGnCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT)
+#define REG_BG1CNT_BITFIELD REG_BGnCNT_BITFIELD(1)
+#define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2)
+
+#define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800))
+#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800))
+#define EWRAM_17810 ((struct UnknownStruct3 *)(unk_2000000 + 0x17810))
+#define EWRAM_18000 ((u16 *)(unk_2000000 + 0x18000))
+#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348))
+
+struct BGCntrlBitfield
+{
+ volatile u16 priority:2;
+ volatile u16 charBaseBlock:2;
+ volatile u16 field_0_2:4;
+ volatile u16 field_1_0:5;
+ volatile u16 areaOverflowMode:1;
+ volatile u16 screenSize:2;
+};
+
+struct BattleAnimBackground
+{
+ void *image;
+ void *palette;
+ void *tilemap;
+};
+
+struct UnknownStruct1
+{
+ u8 unk0;
+};
+
+struct UnknownStruct2
+{
+ void *unk0;
+ u16 *unk4;
+ u8 unk8;
+};
+
+struct UnknownStruct3
+{
+ u8 unk0;
+ u8 filler1[0xB];
+};
+
+void move_something(const u8 *const moveAnims[], u16 b, u8 c);
+bool8 b_side_obj__get_some_boolean(u8 a);
+void sub_8076034(u8, u8);
+bool8 sub_8076BE0(void);
+
+#endif
diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h
new file mode 100644
index 000000000..4a9415379
--- /dev/null
+++ b/include/battle_move_effects.h
@@ -0,0 +1,222 @@
+#ifndef GUARD_BATTLE_MOVE_EFFECTS_H
+#define GUARD_BATTLE_MOVE_EFFECTS_H
+
+enum
+{
+ EFFECT_HIT,
+ EFFECT_SLEEP,
+ EFFECT_POISON_HIT,
+ EFFECT_ABSORB,
+ EFFECT_BURN_HIT,
+ EFFECT_FREEZE_HIT,
+ EFFECT_PARALYZE_HIT,
+ EFFECT_EXPLOSION,
+ EFFECT_DREAM_EATER,
+ EFFECT_MIRROR_MOVE,
+ EFFECT_ATTACK_UP,
+ EFFECT_DEFENSE_UP,
+ EFFECT_SPEED_UP,
+ EFFECT_SPECIAL_ATTACK_UP,
+ EFFECT_SPECIAL_DEFENSE_UP,
+ EFFECT_ACCURACY_UP,
+ EFFECT_EVASION_UP,
+ EFFECT_ALWAYS_HIT,
+ EFFECT_ATTACK_DOWN,
+ EFFECT_DEFENSE_DOWN,
+ EFFECT_SPEED_DOWN,
+ EFFECT_SPECIAL_ATTACK_DOWN, // unused
+ EFFECT_SPECIAL_DEFENSE_DOWN, // unused
+ EFFECT_ACCURACY_DOWN,
+ EFFECT_EVASION_DOWN,
+ EFFECT_HAZE,
+ EFFECT_BIDE,
+ EFFECT_RAMPAGE,
+ EFFECT_ROAR,
+ EFFECT_MULTI_HIT,
+ EFFECT_CONVERSION,
+ EFFECT_FLINCH_HIT,
+ EFFECT_RESTORE_HP,
+ EFFECT_TOXIC,
+ EFFECT_PAY_DAY,
+ EFFECT_LIGHT_SCREEN,
+ EFFECT_TRI_ATTACK,
+ EFFECT_REST,
+ EFFECT_OHKO,
+ EFFECT_RAZOR_WIND,
+ EFFECT_SUPER_FANG,
+ EFFECT_DRAGON_RAGE,
+ EFFECT_TRAP,
+ EFFECT_HIGH_CRITICAL,
+ EFFECT_DOUBLE_HIT,
+ EFFECT_RECOIL_IF_MISS,
+ EFFECT_MIST,
+ EFFECT_FOCUS_ENERGY,
+ EFFECT_RECOIL,
+ EFFECT_CONFUSE,
+ EFFECT_ATTACK_UP_2,
+ EFFECT_DEFENSE_UP_2,
+ EFFECT_SPEED_UP_2,
+ EFFECT_SPECIAL_ATTACK_UP_2,
+ EFFECT_SPECIAL_DEFENSE_UP_2,
+ EFFECT_ACCURACY_UP_2,
+ EFFECT_EVASION_UP_2,
+ EFFECT_TRANSFORM,
+ EFFECT_ATTACK_DOWN_2,
+ EFFECT_DEFENSE_DOWN_2,
+ EFFECT_SPEED_DOWN_2,
+ EFFECT_SPECIAL_ATTACK_DOWN_2,
+ EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ EFFECT_ACCURACY_DOWN_2,
+ EFFECT_EVASION_DOWN_2,
+ EFFECT_REFLECT,
+ EFFECT_POISON,
+ EFFECT_PARALYZE,
+ EFFECT_ATTACK_DOWN_HIT,
+ EFFECT_DEFENSE_DOWN_HIT,
+ EFFECT_SPEED_DOWN_HIT,
+ EFFECT_SPECIAL_ATTACK_DOWN_HIT,
+ EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ EFFECT_ACCURACY_DOWN_HIT,
+ EFFECT_EVASION_DOWN_HIT,
+ EFFECT_SKY_ATTACK,
+ EFFECT_CONFUSE_HIT,
+ EFFECT_TWINEEDLE,
+ EFFECT_VITAL_THROW,
+ EFFECT_SUBSTITUTE,
+ EFFECT_RECHARGE,
+ EFFECT_RAGE,
+ EFFECT_MIMIC,
+ EFFECT_METRONOME,
+ EFFECT_LEECH_SEED,
+ EFFECT_SPLASH,
+ EFFECT_DISABLE,
+ EFFECT_LEVEL_DAMAGE,
+ EFFECT_PSYWAVE,
+ EFFECT_COUNTER,
+ EFFECT_ENCORE,
+ EFFECT_PAIN_SPLIT,
+ EFFECT_SNORE,
+ EFFECT_CONVERSION_2,
+ EFFECT_LOCK_ON,
+ EFFECT_SKETCH,
+ EFFECT_UNUSED_60, // thaw
+ EFFECT_SLEEP_TALK,
+ EFFECT_DESTINY_BOND,
+ EFFECT_FLAIL,
+ EFFECT_SPITE,
+ EFFECT_FALSE_SWIPE,
+ EFFECT_HEAL_BELL,
+ EFFECT_QUICK_ATTACK,
+ EFFECT_TRIPLE_KICK,
+ EFFECT_THIEF,
+ EFFECT_MEAN_LOOK,
+ EFFECT_NIGHTMARE,
+ EFFECT_MINIMIZE,
+ EFFECT_CURSE,
+ EFFECT_UNUSED_6E,
+ EFFECT_PROTECT,
+ EFFECT_SPIKES,
+ EFFECT_FORESIGHT,
+ EFFECT_PERISH_SONG,
+ EFFECT_SANDSTORM,
+ EFFECT_ENDURE,
+ EFFECT_ROLLOUT,
+ EFFECT_SWAGGER,
+ EFFECT_FURY_CUTTER,
+ EFFECT_ATTRACT,
+ EFFECT_RETURN,
+ EFFECT_PRESENT,
+ EFFECT_FRUSTRATION,
+ EFFECT_SAFEGUARD,
+ EFFECT_THAW_HIT,
+ EFFECT_MAGNITUDE,
+ EFFECT_BATON_PASS,
+ EFFECT_PURSUIT,
+ EFFECT_RAPID_SPIN,
+ EFFECT_SONICBOOM,
+ EFFECT_UNUSED_83,
+ EFFECT_MORNING_SUN,
+ EFFECT_SYNTHESIS,
+ EFFECT_MOONLIGHT,
+ EFFECT_HIDDEN_POWER,
+ EFFECT_RAIN_DANCE,
+ EFFECT_SUNNY_DAY,
+ EFFECT_DEFENSE_UP_HIT,
+ EFFECT_ATTACK_UP_HIT,
+ EFFECT_ALL_STATS_UP_HIT,
+ EFFECT_UNUSED_8D, // incomplete fake out in gen 2
+ EFFECT_BELLY_DRUM,
+ EFFECT_PSYCH_UP,
+ EFFECT_MIRROR_COAT,
+ EFFECT_SKULL_BASH,
+ EFFECT_TWISTER,
+ EFFECT_EARTHQUAKE,
+ EFFECT_FUTURE_SIGHT,
+ EFFECT_GUST,
+ EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
+ EFFECT_SOLARBEAM,
+ EFFECT_THUNDER,
+ EFFECT_TELEPORT,
+ EFFECT_BEAT_UP,
+ EFFECT_FLY,
+ EFFECT_DEFENSE_CURL,
+ EFFECT_SOFTBOILED,
+ EFFECT_FAKE_OUT,
+ EFFECT_UPROAR,
+ EFFECT_STOCKPILE,
+ EFFECT_SPIT_UP,
+ EFFECT_SWALLOW,
+ EFFECT_UNUSED_A3,
+ EFFECT_HAIL,
+ EFFECT_TORMENT,
+ EFFECT_FLATTER,
+ EFFECT_WILL_O_WISP,
+ EFFECT_MEMENTO,
+ EFFECT_FACADE,
+ EFFECT_FOCUS_PUNCH,
+ EFFECT_SMELLINGSALT,
+ EFFECT_FOLLOW_ME,
+ EFFECT_NATURE_POWER,
+ EFFECT_CHARGE,
+ EFFECT_TAUNT,
+ EFFECT_HELPING_HAND,
+ EFFECT_TRICK,
+ EFFECT_ROLE_PLAY,
+ EFFECT_WISH,
+ EFFECT_ASSIST,
+ EFFECT_INGRAIN,
+ EFFECT_SUPERPOWER,
+ EFFECT_MAGIC_COAT,
+ EFFECT_RECYCLE,
+ EFFECT_REVENGE,
+ EFFECT_BRICK_BREAK,
+ EFFECT_YAWN,
+ EFFECT_KNOCK_OFF,
+ EFFECT_ENDEAVOR,
+ EFFECT_ERUPTION,
+ EFFECT_SKILL_SWAP,
+ EFFECT_IMPRISON,
+ EFFECT_REFRESH,
+ EFFECT_GRUDGE,
+ EFFECT_SNATCH,
+ EFFECT_LOW_KICK,
+ EFFECT_SECRET_POWER,
+ EFFECT_DOUBLE_EDGE,
+ EFFECT_TEETER_DANCE,
+ EFFECT_BLAZE_KICK,
+ EFFECT_MUD_SPORT,
+ EFFECT_POISON_FANG,
+ EFFECT_WEATHER_BALL,
+ EFFECT_OVERHEAT,
+ EFFECT_TICKLE,
+ EFFECT_COSMIC_POWER,
+ EFFECT_SKY_UPPERCUT,
+ EFFECT_BULK_UP,
+ EFFECT_POISON_TAIL,
+ EFFECT_WATER_SPORT,
+ EFFECT_CALM_MIND,
+ EFFECT_DRAGON_DANCE,
+ EFFECT_CAMOUFLAGE,
+};
+
+#endif // GUARD_BATTLE_MOVE_EFFECTS_H
diff --git a/include/battle_party_menu.h b/include/battle_party_menu.h
new file mode 100644
index 000000000..d0ae8da35
--- /dev/null
+++ b/include/battle_party_menu.h
@@ -0,0 +1,36 @@
+#ifndef GUARD_BATTLE_PARTY_MENU_H
+#define GUARD_BATTLE_PARTY_MENU_H
+
+struct UnknownStruct1
+{
+ u8 filler0[0x259];
+ u8 unk259;
+ u8 filler25A[6];
+ u8 unk260;
+ u8 filler261[1];
+ u8 unk262;
+ s16 unk264;
+ s16 unk266;
+};
+
+struct PartyMenuItem
+{
+ const u8 *text;
+ TaskFunc func;
+};
+
+struct PartyPopupMenu
+{
+ u8 unk0;
+ u8 unk1;
+ const u8 *unk4;
+};
+
+extern u8 unk_2000000[];
+
+void SetUpBattlePokemonMenu(u8);
+
+#define EWRAM_1609D unk_2000000[0x1609D]
+#define EWRAM_1B000 (*(struct UnknownStruct1 *)(unk_2000000 + 0x1B000))
+
+#endif
diff --git a/include/battle_setup.h b/include/battle_setup.h
index 6271a3cc5..e88aefe6d 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -1,84 +1,136 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
-// task01_battle_start
-// task_add_01_battle_start
+#define NUM_TRAINER_EYE_TRAINERS 56
+#define TRAINER_REMATCH_STEPS 255
+
+// IV + LEVEL + SPECIES
+struct TrainerPartyMember0
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+};
+
+// IV + LEVEL + SPECIES + MOVES
+struct TrainerPartyMember1
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+ u16 moves[4];
+};
+
+// IV + LEVEL + SPECIES + ITEMS
+struct TrainerPartyMember2
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+ u16 heldItem;
+};
+
+// IV + LEVEL + SPECIES + ITEMS + MOVES
+struct TrainerPartyMember3
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+};
+
+struct TrainerBattleSpec
+{
+ void *ptr;
+ u8 ptrType;
+};
+
+struct TrainerEyeTrainer
+{
+ u16 trainerNums[5];
+ u16 mapGroup;
+ u16 mapNum;
+};
+
+//void task01_battle_start(u8 taskId);
+//void task_add_01_battle_start(u8 transition, u16 song);
void CheckForSafariZoneAndProceed(void);
void StartBattle_StandardWild(void);
void StartBattle_Roamer(void);
void StartBattle_Safari(void);
-// task_add_01_battle_start_with_music_and_stats
-// StartBattle_WallyTutorial
+//void task_add_01_battle_start_with_music_and_stats(void);
+//void StartBattle_WallyTutorial(void);
void StartBattle_ScriptedWild(void);
-// StartBattle_SouthernIsland
-// StartBattle_Rayquaza
-// StartBattle_GroudonKyogre
-// StartBattle_Regi
+//void StartBattle_SouthernIsland(void);
+//void StartBattle_Rayquaza(void);
+//void StartBattle_GroudonKyogre(void);
+//void StartBattle_Regi(void);
void HandleWildBattleEnd(void);
void HandleScriptedWildBattleEnd(void);
-// GetBattleTerrain
-// GetBattleTransitionTypeByMap
-// GetSumOfPartyMonLevel
-// GetSumOfEnemyPartyLevel
+s8 GetBattleTerrain(void);
+//s8 GetBattleTransitionTypeByMap(void);
+//u16 GetSumOfPartyMonLevel(u8 numMons);
+//u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons);
u8 GetWildBattleTransition(void);
u8 GetTrainerBattleTransition(void);
-// GetBattleTowerBattleTransition
-// ChooseStarter
+u8 GetBattleTowerBattleTransition(void);
+//void ChooseStarter(void);
void CB2_GiveStarter(void);
void CB2_StartFirstBattle(void);
void HandleFirstBattleEnd(void);
-// TrainerBattleLoadArg32
-// TrainerBattleLoadArg16
-// TrainerBattleLoadArg8
-// trainerflag_opponent
+//u32 TrainerBattleLoadArg32(u8 *ptr);
+//u16 TrainerBattleLoadArg16(u8 *ptr);
+//u8 TrainerBattleLoadArg8(u8 *ptr);
+//u16 trainerflag_opponent(void);
bool32 battle_exit_is_player_defeat(u32 a1);
-// sub_80822BC
-// TrainerBattleLoadArgs
-// battle_80801F0
+//void sub_80822BC(void);
+//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data);
+//void battle_80801F0(void);
u8 *TrainerBattleConfigure(u8 *data);
void TrainerWantsBattle(u8, u8 *);
bool32 GetTrainerFlagFromScriptPointer(u8 *data);
-// sub_8082524
-// sub_8082558
-// sub_8082564
-// sub_808257C
-// unref_sub_8082590
+//void sub_8082524(void);
+//u8 sub_8082558(void);
+//u8 sub_8082564(void);
+//void sub_808257C(void);
+//void unref_sub_8082590(void); // unused
u8 trainer_flag_check(u16);
void trainer_flag_set(u16);
void trainer_flag_clear(u16);
void sub_80825E4(void);
void sub_808260C(void);
-// do_choose_name_or_words_screen
-// sub_80826B0
-// sub_80826D8
+void do_choose_name_or_words_screen(void);
+//void sub_80826B0(void);
+//void sub_80826D8(void);
u8 *sub_80826E8(void);
u8 *sub_8082700(void);
-// sub_8082718
-// PlayTrainerEncounterMusic
-// SanitizeString
+//void sub_8082718(void);
+//void PlayTrainerEncounterMusic(void);
+//u8 *SanitizeString(u8 *str);
u8 *sub_808281C(void);
-// sub_8082830
-// unref_sub_808286C
+u8 *sub_8082830(void);
+//u8 *unref_sub_808286C(void);
u8 *sub_8082880(void);
-// sub_8082894
-// sub_80828B8
-// sub_80828FC
-// sub_80829A8
-// sub_80829E8
-// sub_8082A18
-// sub_8082A54
-// sub_8082A90
-// sub_8082AE4
-// sub_8082B10
-// sub_8082B44
-// sub_8082B78
-// sub_8082BA4
+//s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
+//s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
+//s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
+//bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool32 sub_8082B44(void);
+void sub_8082B78(void);
+//bool32 sub_8082BA4(void);
void sub_8082BD0(u16, u16);
-// sub_8082C0C
-// unref_sub_8082C2C
+s32 sub_8082C0C(u16 mapGroup, u16 mapNum);
+s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum);
u16 sub_8082C4C(u16 a1);
-// sub_8082C68
-// sub_8082C9C
+//s32 sub_8082C68(void);
+//u8 sub_8082C9C(void);
void sub_8082CB8(void);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/berry.h b/include/berry.h
index 152f92e38..f17799870 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -1,11 +1,21 @@
#ifndef GUARD_BERRY_H
#define GUARD_BERRY_H
+enum
+{
+ BERRY_FIRMNESS_UNKNOWN,
+ BERRY_FIRMNESS_VERY_SOFT,
+ BERRY_FIRMNESS_SOFT,
+ BERRY_FIRMNESS_HARD,
+ BERRY_FIRMNESS_VERY_HARD,
+ BERRY_FIRMNESS_SUPER_HARD,
+};
+
void ClearEnigmaBerries(void);
void SetEnigmaBerry(u8 *src);
u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry);
bool32 IsEnigmaBerryValid(void);
-struct Berry *GetBerryInfo(u8 berry);
+const struct Berry *GetBerryInfo(u8 berry);
struct BerryTree *GetBerryTreeInfo(u8 id);
bool32 FieldObjectInteractionWaterBerryTree(void);
bool32 IsPlayerFacingPlantedBerryTree(void);
diff --git a/include/bike.h b/include/bike.h
new file mode 100644
index 000000000..decbd1d49
--- /dev/null
+++ b/include/bike.h
@@ -0,0 +1,56 @@
+#ifndef GUARD_BIKE_H
+#define GUARD_BIKE_H
+
+struct UnknownStruct1
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+ const u8 *unk10;
+ const u8 *unk14;
+ u32 unk18;
+};
+
+// Player speeds
+enum
+{
+ SPEED_STANDING,
+ SPEED_NORMAL,
+ SPEED_FAST,
+ SPEED_FASTER,
+ SPEED_FASTEST,
+};
+
+//Acro bike states
+enum
+{
+ ACRO_STATE_NORMAL,
+ ACRO_STATE_TURNING,
+ ACRO_STATE_WHEELIE_STANDING,
+ ACRO_STATE_BUNNY_HOP,
+ ACRO_STATE_WHEELIE_MOVING,
+ ACRO_STATE_5,
+ ACRO_STATE_6,
+};
+
+//Acro bike transitions
+enum
+{
+ ACRO_TRANS_FACE_DIRECTION,
+ ACRO_TRANS_NORMAL_TO_WHEELIE = 3,
+ ACRO_TRANS_WHEELIE_TO_NORMAL,
+};
+
+void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys);
+void sub_80E5B38(u16 a, u16 b);
+bool8 IsRunningDisallowed(u8 tile);
+bool8 IsBikingDisallowedByPlayer(void);
+bool8 player_should_look_direction_be_enforced_upon_movement(void);
+void GetOnOffBike(u8 var);
+void BikeClearState(int var1, int var2);
+void sub_80E6010(u8 var);
+s16 GetPlayerSpeed(void);
+void sub_80E6084(void);
+
+#endif
diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h
new file mode 100644
index 000000000..2b0e2bb96
--- /dev/null
+++ b/include/braille_puzzles.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_BRAILLEPUZZLES_H
+#define GUARD_BRAILLEPUZZLES_H
+
+bool8 ShouldDoBrailleStrengthEffect(void);
+void DoBrailleStrengthEffect(void);
+void UseFlyAncientTomb_Callback(void);
+void UseFlyAncientTomb_Finish(void);
+void Task_BrailleWait(u8 taskId);
+bool32 BrailleWait_CheckButtonPress(void);
+void SealedChamberShakingEffect(u8 taskId);
+bool8 ShouldDoBrailleDigEffect(void);
+void DoBrailleDigEffect(void);
+
+#endif
diff --git a/include/clock.h b/include/clock.h
new file mode 100644
index 000000000..4e6560c91
--- /dev/null
+++ b/include/clock.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CLOCK_H
+#define GUARD_CLOCK_H
+
+// TODO: time of day and seconds in a day defines
+
+void DoTimeBasedEvents(void);
+
+#endif
diff --git a/include/contest.h b/include/contest.h
new file mode 100644
index 000000000..82520717f
--- /dev/null
+++ b/include/contest.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_CONTEST_H
+#define GUARD_CONTEST_H
+
+struct ContestPokemon
+{
+ /* 0x00 */ u16 species;
+ /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH];
+ /* 0x0D */ u8 trainerName[8];
+ /* 0x15 */ u8 unk15;
+ /* 0x16 */ u8 unk16;
+ /* 0x17 */ u8 filler17[7];
+ /* 0x1E */ u16 moves[4]; // moves
+ /* 0x26 */ u8 cool; // cool
+ /* 0x27 */ u8 beauty; // beauty
+ /* 0x28 */ u8 cute; // cute
+ /* 0x29 */ u8 smart; // smart
+ /* 0x2A */ u8 tough; // tough
+ /* 0x2B */ u8 sheen; // sheen
+ /* 0x2C */ u8 filler2C[12];
+ /* 0x38 */ u32 unk38;
+ /* 0x3C */ u32 unk3C;
+}; // wow
+
+extern struct ContestPokemon gContestMons[];
+
+#endif // GUARD_CONTEST_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
new file mode 100644
index 000000000..896aa299b
--- /dev/null
+++ b/include/contest_painting.h
@@ -0,0 +1,77 @@
+#ifndef GUARD_CONTESTPAINTING_H
+#define GUARD_CONTESTPAINTING_H
+
+#define MOSAIC_BIT_BG_HSIZE (0)
+#define MOSAIC_BIT_BG_VSIZE (4)
+#define MOSAIC_BIT_OBJ_HSIZE (8)
+#define MOSAIC_BIT_OBJ_VSIZE (12)
+
+enum
+{
+ CONTEST_COOL,
+ CONTEST_BEAUTY,
+ CONTEST_CUTE,
+ CONTEST_SMART,
+ CONTEST_TOUGH,
+};
+
+enum
+{
+ CONTESTRESULT_COOL = 9,
+ CONTESTRESULT_BEAUTY = 13,
+ CONTESTRESULT_CUTE = 2,
+ CONTESTRESULT_SMART = 36,
+ CONTESTRESULT_TOUGH = 6,
+};
+
+struct Unk2015E00
+{
+ u16 unk2015e00[128][32];
+ u16 unk2017e00[0];
+};
+
+struct ContestEntry
+{
+ /*0x00*/ u8 var0;
+ /*0x04*/ u32 var4;
+ /*0x08*/ u16 var8;
+ /*0x0A*/ u8 contestType;
+ /*0x0B*/ u8 pokemon_name[POKEMON_NAME_LENGTH];
+ /*0x15*/ u8 pad15;
+ /*0x16*/ u8 trainer_name[OT_NAME_LENGTH];
+};
+
+struct Unk3000756
+{
+ /*0x00*/ u8 var_0;
+};
+
+struct LabelPair
+{
+ const u8 *prefix;
+ const u8 *suffix;
+};
+
+struct Unk03005E20
+{
+ u8 var_0;
+ u8 pad1[3];
+ u16 (*var_4)[][32];
+ u16 (*var_8)[];
+ u8 pad0C[4];
+ u32 var_10;
+ u16 var_14;
+ u16 var_16;
+ u8 var_18;
+ u8 var_19;
+ u8 var_1A;
+ u8 var_1B;
+ u8 var_1C;
+ u8 var_1D;
+ u8 var_1E;
+ u8 var_1F;
+};
+
+void sub_8106630(u32);
+
+#endif
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
new file mode 100644
index 000000000..713d491b6
--- /dev/null
+++ b/include/dewford_trend.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_DEWFORDTREND_H
+#define GUARD_DEWFORDTREND_H
+
+#define ARRAY_2007800 ((struct EasyChatPair *)(unk_2000000 + 0x7800))
+#define ARRAY_2007900 ((struct EasyChatPair *)(unk_2000000 + 0x7900))
+
+void sub_80FA17C(void);
+void sub_80FA4E4(void *, u32, u8);
+
+#endif
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
new file mode 100644
index 000000000..3f17ebee9
--- /dev/null
+++ b/include/field_control_avatar.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_FIELDCONTROLAVATAR_H
+#define GUARD_FIELDCONTROLAVATAR_H
+
+void FieldClearPlayerInput(struct FieldInput *pStruct);
+void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys);
+int sub_8068024(struct FieldInput *pStruct);
+u8 *sub_80682A8(struct MapPosition *, u8, u8);
+void overworld_poison_timer_set(void);
+void prev_quest_postbuffer_cursor_backup_reset(void);
+u8 *sub_8068E24(struct MapPosition *);
+u8 *GetFieldObjectScriptPointerForComparison();
+
+#endif
diff --git a/include/field_door.h b/include/field_door.h
new file mode 100644
index 000000000..1759e0dc1
--- /dev/null
+++ b/include/field_door.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_FIELDDOOR_H
+#define GUARD_FIELDDOOR_H
+
+struct DoorGraphics
+{
+ u16 metatileNum;
+ u8 unk2;
+ void *tiles;
+ void *palette;
+};
+
+struct DoorAnimFrame
+{
+ u8 time;
+ u16 offset;
+};
+
+void FieldSetDoorOpened(u32, u32);
+void FieldSetDoorClosed(u32, u32);
+s8 FieldAnimateDoorClose(u32, u32);
+s8 FieldAnimateDoorOpen(u32, u32);
+bool8 FieldIsDoorAnimationRunning(void);
+u32 sub_8058790(u32 x, u32 y);
+
+#endif
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index c31b0fc2a..dfc41d38b 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -6,6 +6,6 @@
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));
+void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)());
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
new file mode 100644
index 000000000..5498bde12
--- /dev/null
+++ b/include/field_map_obj_helpers.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_FIELDMAPOBJHELP_H
+#define GUARD_FIELDMAPOBJHELP_H
+
+bool8 FreezeMapObject(struct MapObject *);
+void FreezeMapObjects(void);
+void FreezeMapObjectsExceptOne(u8);
+void UnfreezeMapObjects(void);
+void sub_806487C(struct Sprite *sprite, bool8 invisible);
+void sub_8064990(u8, u8);
+
+#endif
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 9f6f634f7..a4f77a172 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -34,28 +34,28 @@ void SetPlayerAvatarTransitionFlags(u16 a);
// sub_80591F4
void sub_8059204(void);
// player_get_x22
-// player_npc_set_state_and_x22_etc
+void PlayerSetAnimId(u8 a, u8 b);
void PlayerGoSpeed0(u8 a);
void sub_80593C4(u8 a);
void npc_use_some_d2s(u8 a);
-// sub_80593F4
+void sub_80593F4(u8 a);
void sub_805940C(u8 a);
-// PlayerOnBikeCollide
+void PlayerOnBikeCollide(u8);
void PlayerFaceDirection(u8 a);
void PlayerTurnInPlace(u8 a);
void PlayerJumpLedge(u8 a);
void sub_80594C0(void);
-// sub_8059504
-// sub_805951C
-// sub_8059534
-// sub_805954C
-// sub_8059570
-// sub_8059594
-// sub_80595B8
-// sub_80595DC
-// sub_8059600
-// sub_8059618
-// sub_8059630
+void sub_8059504(u8 a);
+void PlayerStartWheelie(u8 a);
+void sub_8059534(u8 a);
+void sub_805954C(u8 a);
+void sub_8059570(u8 a);
+void sub_8059594(u8 a);
+void sub_80595B8(u8 a);
+void sub_80595DC(u8 a);
+void sub_8059600(u8 a);
+void sub_8059618(u8 a);
+void sub_8059630(u8 a);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y);
void PlayerGetDestCoords(s16 *, s16 *);
u8 player_get_direction_lower_nybble(void);
@@ -66,21 +66,21 @@ u8 TestPlayerAvatarFlags(u8);
// GetPlayerAvatarObjectId
void sub_80597E8(void);
void sub_80597F4(void);
-u8 sub_805983C(u8 a, u8 b);
+u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 a, u8 b);
u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
-// GetPlayerAvatarGenderByGraphicsId
-// PartyHasMonWithSurf
-// IsPlayerSurfingNorth
+u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId);
+bool8 PartyHasMonWithSurf(void);
+bool8 IsPlayerSurfingNorth(void);
bool8 IsPlayerFacingSurfableFishableWater(void);
// ClearPlayerAvatarInfo
void SetPlayerAvatarStateMask(u8 a);
-// GetPlayerAvatarGraphicsIdByCurrentState
-// SetPlayerAvatarExtraStateTransition
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
+void SetPlayerAvatarExtraStateTransition(u8 a, u8 b);
void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
// sub_8059B88
-// sub_8059BF4
+void sub_8059BF4(void);
// sub_8059C3C
-// sub_8059C94
+void sub_8059C94(u8);
// sub_8059D08
// sub_8059E84
// sub_8059EA4
diff --git a/include/fieldmap.h b/include/fieldmap.h
new file mode 100644
index 000000000..936d27b4a
--- /dev/null
+++ b/include/fieldmap.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELDMAP2_H
+#define GUARD_FIELDMAP2_H
+
+struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection);
+
+#endif
diff --git a/include/fonts/.gitignore b/include/fonts/.gitignore
deleted file mode 100644
index 6e5bdcae2..000000000
--- a/include/fonts/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-font0_lat_glyphs.h
-font1_lat_glyphs.h
-font0_jpn_glyphs.h
-font1_jpn_glyphs.h
-braille_glyphs.h
-down_arrow_tiles.h
-unknown_palette_81E6692.h
-default_palette.h
diff --git a/include/gba/flash_internal.h b/include/gba/flash_internal.h
index 6156b6c14..cbcfb5466 100644
--- a/include/gba/flash_internal.h
+++ b/include/gba/flash_internal.h
@@ -65,6 +65,10 @@ u16 ReadFlashId(void);
void StartFlashTimer(u8 phase);
void SetReadFlash1(u16 *dest);
void StopFlashTimer(void);
+u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
+u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src);
+void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size);
+u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n);
u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData);
@@ -73,4 +77,7 @@ u16 EraseFlashSector_MX(u16 sectorNum);
u16 ProgramFlashByte_MX(u16 sectorNum, u32 offset, u8 data);
u16 ProgramFlashSector_MX(u16 sectorNum, u8 *src);
+// agb_flash_1m
+u16 IdentifyFlash(void);
+
#endif // GUARD_GBA_FLASH_INTERNAL_H
diff --git a/include/gba/gba.h b/include/gba/gba.h
index 26342cf88..42ae3cdde 100644
--- a/include/gba/gba.h
+++ b/include/gba/gba.h
@@ -4,6 +4,7 @@
#include "gba/defines.h"
#include "gba/io_reg.h"
#include "gba/types.h"
+#include "gba/multiboot.h"
#include "gba/syscall.h"
#include "gba/macro.h"
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 0be92fa60..c0874bcbb 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -495,12 +495,12 @@
// I/O register fields
// DISPCNT
-#define DISPCNT_MODE_0 0x0000
-#define DISPCNT_MODE_1 0x0001
-#define DISPCNT_MODE_2 0x0002
-#define DISPCNT_MODE_3 0x0003
-#define DISPCNT_MODE_4 0x0004
-#define DISPCNT_MODE_5 0x0005
+#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
+#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
+#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
+#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
+#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
+#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
#define DISPCNT_OBJ_1D_MAP 0x0040
#define DISPCNT_FORCED_BLANK 0x0080
#define DISPCNT_BG0_ON 0x0100
@@ -521,6 +521,26 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BGCNT
+#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
+#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
+#define BGCNT_MOSAIC 0x0040
+#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
+#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
+#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
+#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
+#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
+#define BGCNT_TXT512x256 0x4000
+#define BGCNT_TXT256x512 0x8000
+#define BGCNT_TXT512x512 0xC000
+#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
+#define BGCNT_AFF256x256 0x4000
+#define BGCNT_AFF512x512 0x8000
+#define BGCNT_AFF1024x1024 0xC000
+
+// BLDCNT
+
+
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
#define SOUND_CGB_MIX_HALF 0x0001
@@ -577,6 +597,8 @@
#define TIMER_ENABLE 0x80
// serial
+#define SIO_ID 0x0030 // Communication ID
+
#define SIO_8BIT_MODE 0x0000 // Normal 8-bit communication mode
#define SIO_32BIT_MODE 0x1000 // Normal 32-bit communication mode
#define SIO_MULTI_MODE 0x2000 // Multi-player communication mode
@@ -589,6 +611,7 @@
#define SIO_MULTI_SI 0x0004 // Multi-player communication SI terminal
#define SIO_MULTI_SD 0x0008 // SD terminal
+#define SIO_MULTI_BUSY 0x0080
#define SIO_ERROR 0x0040 // Detect error
#define SIO_START 0x0080 // Start transfer
diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h
new file mode 100644
index 000000000..e88b43a19
--- /dev/null
+++ b/include/gba/multiboot.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_GBA_MULTIBOOT_H
+#define GUARD_GBA_MULTIBOOT_H
+
+#define MULTIBOOT_NCHILD 3 // Maximum number of slaves
+#define MULTIBOOT_HEADER_SIZE 0xc0 // Header size
+#define MULTIBOOT_SEND_SIZE_MIN 0x100 // Minimum transmission size
+#define MULTIBOOT_SEND_SIZE_MAX 0x40000 // Maximum transmission size
+
+struct MultiBootParam
+{
+ u32 system_work[5];
+ u8 handshake_data;
+ u8 padding;
+ u16 handshake_timeout;
+ u8 probe_count;
+ u8 client_data[MULTIBOOT_NCHILD];
+ u8 palette_data;
+ u8 response_bit;
+ u8 client_bit;
+ u8 reserved1;
+ u8 *boot_srcp;
+ u8 *boot_endp;
+ u8 *masterp;
+ u8 *reserved2[MULTIBOOT_NCHILD];
+ u32 system_work2[4];
+ u8 sendflag;
+ u8 probe_target_bit;
+ u8 check_wait;
+ u8 server_type;
+};
+
+#define MULTIBOOT_ERROR_04 0x04
+#define MULTIBOOT_ERROR_08 0x08
+#define MULTIBOOT_ERROR_0c 0x0c
+#define MULTIBOOT_ERROR_40 0x40
+#define MULTIBOOT_ERROR_44 0x44
+#define MULTIBOOT_ERROR_48 0x48
+#define MULTIBOOT_ERROR_4c 0x4c
+#define MULTIBOOT_ERROR_80 0x80
+#define MULTIBOOT_ERROR_84 0x84
+#define MULTIBOOT_ERROR_88 0x88
+#define MULTIBOOT_ERROR_8c 0x8c
+#define MULTIBOOT_ERROR_NO_PROBE_TARGET 0x50
+#define MULTIBOOT_ERROR_NO_DLREADY 0x60
+#define MULTIBOOT_ERROR_BOOT_FAILURE 0x70
+#define MULTIBOOT_ERROR_HANDSHAKE_FAILURE 0x71
+
+#define MULTIBOOT_CONNECTION_CHECK_WAIT 15
+
+#define MULTIBOOT_SERVER_TYPE_NORMAL 0
+#define MULTIBOOT_SERVER_TYPE_QUICK 1
+
+#define MULTIBOOT_HANDSHAKE_TIMEOUT 400
+
+#endif // GUARD_GBA_MULTIBOOT_H
diff --git a/include/gba/syscall.h b/include/gba/syscall.h
index e47f964d1..deddec5ba 100644
--- a/include/gba/syscall.h
+++ b/include/gba/syscall.h
@@ -43,4 +43,6 @@ void RLUnCompWram(const void *src, void *dest);
void RLUnCompVram(const void *src, void *dest);
+int MultiBoot(struct MultiBootParam *mp);
+
#endif // GUARD_GBA_SYSCALL_H
diff --git a/include/global.berry.h b/include/global.berry.h
index 8b98a5f58..b7938868d 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -3,13 +3,13 @@
struct Berry
{
- u8 name[7];
+ const u8 name[7];
u8 firmness;
u16 size;
u8 maxYield;
u8 minYield;
- u8 *description1;
- u8 *description2;
+ const u8 *description1;
+ const u8 *description2;
u8 stageDuration;
u8 spicy;
u8 dry;
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 95ccf2614..508d7e4ed 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -14,16 +14,16 @@ enum
// map types
enum
{
- MAP_TYPE_0,
- MAP_TYPE_TOWN,
- MAP_TYPE_CITY,
- MAP_TYPE_ROUTE,
- MAP_TYPE_UNDERGROUND,
- MAP_TYPE_UNDERWATER,
- MAP_TYPE_6,
- MAP_TYPE_7,
- MAP_TYPE_INDOOR,
- MAP_TYPE_SECRET_BASE
+ MAP_TYPE_0,
+ MAP_TYPE_TOWN,
+ MAP_TYPE_CITY,
+ MAP_TYPE_ROUTE,
+ MAP_TYPE_UNDERGROUND,
+ MAP_TYPE_UNDERWATER,
+ MAP_TYPE_6,
+ MAP_TYPE_7,
+ MAP_TYPE_INDOOR,
+ MAP_TYPE_SECRET_BASE
};
// map battle scenes
@@ -66,28 +66,35 @@ struct MapData
struct MapObjectTemplate
{
/*0x00*/ u8 localId;
- /*0x01*/ u8 filler_1[0x3];
+ /*0x01*/ u8 graphicsId;
+ /*0x02*/ u8 unk2;
/*0x04*/ s16 x;
/*0x06*/ s16 y;
/*0x08*/ u8 elevation;
/*0x09*/ u8 movementType;
- /*0x0A*/ u8 filler_A[0x6];
+ /*0x0A*/ u8 unkA_0:4;
+ u8 unkA_4:4;
+ ///*0x0B*/ u8 fillerB[1];
+ /*0x0C*/ u16 unkC;
+ /*0x0E*/ u16 unkE;
/*0x10*/ u8 *script;
- /*0x14*/ u8 filler_14[0x4];
+ /*0x14*/ u16 flagId;
+ /*0x16*/ u8 filler_16[2];
}; /*size = 0x18*/
struct WarpEvent
{
s16 x, y;
s8 warpId;
- s8 mapGroup;
- s8 mapNum;
+ u8 mapGroup;
+ u8 mapNum;
+ u8 unk7;
};
struct CoordEvent
{
s16 x, y;
- u8 filler_4;
+ u8 unk4;
u8 filler_5;
u16 trigger;
u16 index;
@@ -98,10 +105,23 @@ struct CoordEvent
struct BgEvent
{
s16 x, y;
- u8 filler_4;
+ u8 unk4;
u8 kind;
- s16 filler_6;
- u8 *script;
+ // 0x2 padding for the union beginning.
+ union { // carried over from diego's FR/LG work, seems to be the same struct
+ // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union.
+ u8 *script;
+
+ // hidden item type probably
+ struct {
+ u8 filler6[0x2];
+ u16 hiddenItemId; // flag offset to determine flag lookup
+ } hiddenItem;
+
+ // secret base type
+ u16 secretBaseId;
+
+ } bgUnion;
};
struct MapEvents
@@ -119,10 +139,10 @@ struct MapEvents
struct MapConnection
{
- u8 direction;
- u32 offset;
- u8 mapGroup;
- u8 mapNum;
+ /*0x00*/ u8 direction;
+ /*0x01*/ u32 offset;
+ /*0x05*/ u8 mapGroup;
+ /*0x06*/ u8 mapNum;
};
struct MapConnections
@@ -195,7 +215,7 @@ struct MapObject
/*0x0C*/ struct Coords16 coords1;
/*0x10*/ struct Coords16 coords2;
/*0x14*/ struct Coords16 coords3;
- /*0x18*/ u8 mapobj_unk_18:4;
+ /*0x18*/ u8 mapobj_unk_18:4; //current direction?
/*0x18*/ u8 placeholder18:4;
/*0x19*/ u8 mapobj_unk_19;
/*0x1A*/ u8 mapobj_unk_1A;
@@ -206,7 +226,7 @@ struct MapObject
/*0x1F*/ u8 mapobj_unk_1F;
/*0x20*/ u8 mapobj_unk_20;
/*0x21*/ u8 mapobj_unk_21;
- /*0x22*/ u8 mapobj_unk_22;
+ /*0x22*/ u8 animId;
/*size = 0x24*/
};
@@ -274,22 +294,22 @@ struct MapObject2
struct MapObjectGraphicsInfo
{
- u16 tileTag;
- u16 paletteTag1;
- u16 paletteTag2;
- u16 size;
- s16 width;
- s16 height;
- u8 paletteSlot:4;
- u8 shadowSize:2;
- u8 inanimate:1;
- u8 disableReflectionPaletteLoad:1;
- u8 tracks;
- struct OamData *oam;
- struct SubspriteTable *subspriteTables;
- union AnimCmd **anims;
- struct SpriteFrameImage *images;
- union AffineAnimCmd **affineAnims;
+ /*0x00*/ u16 tileTag;
+ /*0x02*/ u16 paletteTag1;
+ /*0x04*/ u16 paletteTag2;
+ /*0x06*/ u16 size;
+ /*0x08*/ s16 width;
+ /*0x0A*/ s16 height;
+ /*0x0C*/ u8 paletteSlot:4;
+ u8 shadowSize:2;
+ u8 inanimate:1;
+ u8 disableReflectionPaletteLoad:1;
+ /*0x0D*/ u8 tracks;
+ /*0x10*/ struct OamData *oam;
+ /*0x14*/ struct SubspriteTable *subspriteTables;
+ /*0x18*/ const union AnimCmd *const *anims;
+ /*0x1C*/ struct SpriteFrameImage *images;
+ /*0x20*/ const union AffineAnimCmd *const *affineAnims;
};
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
@@ -301,7 +321,32 @@ struct MapObjectGraphicsInfo
#define PLAYER_AVATAR_FLAG_6 (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
-struct PlayerAvatar
+enum
+{
+ ACRO_BIKE_NORMAL,
+ ACRO_BIKE_TURNING,
+ ACRO_BIKE_WHEELIE_STANDING,
+ ACRO_BIKE_BUNNY_HOP,
+ ACRO_BIKE_WHEELIE_MOVING,
+ ACRO_BIKE_STATE5,
+ ACRO_BIKE_STATE6,
+};
+
+enum
+{
+ DIR_NONE,
+ DIR_SOUTH,
+ DIR_NORTH,
+ DIR_WEST,
+ DIR_EAST,
+};
+
+enum
+{
+ COLLISION_LEDGE_JUMP = 6
+};
+
+struct PlayerAvatar /* 0x202E858 */
{
/*0x00*/ u8 flags;
/*0x01*/ u8 bike;
@@ -311,9 +356,24 @@ struct PlayerAvatar
/*0x05*/ u8 mapObjectId;
/*0x06*/ u8 unk6;
/*0x07*/ u8 gender;
+ u8 acroBikeState;
+ u8 unk9;
+ u8 bikeFrameCounter;
+ u8 unkB;
+ u32 unkC;
+ u32 unk10;
+ u8 unk14[8];
+ u8 unk1C[8];
// TODO: rest of struct
};
+struct Camera
+{
+ bool8 field_0:1;
+ s32 x;
+ s32 y;
+};
+
extern struct MapObject gMapObjects[];
extern u8 gSelectedMapObject;
extern struct MapHeader gMapHeader;
diff --git a/include/global.h b/include/global.h
index a5932d175..ad08af84f 100644
--- a/include/global.h
+++ b/include/global.h
@@ -15,11 +15,6 @@
#define POKEMON_NAME_LENGTH 10
#define OT_NAME_LENGTH 7
-extern u8 gStringVar1[];
-extern u8 gStringVar2[];
-extern u8 gStringVar3[];
-extern u8 gStringVar4[];
-
enum
{
VERSION_SAPPHIRE = 1,
@@ -76,6 +71,11 @@ enum
BAG_KEYITEMS
};
+struct TextStruct
+{
+ const u8 *text;
+};
+
struct Coords16
{
s16 x;
@@ -172,7 +172,8 @@ struct RamScript
struct SB1_2EFC_Struct
{
- u8 unknown[0x20];
+ u16 var;
+ u8 unknown[0x1E];
};
struct EasyChatPair
@@ -271,7 +272,55 @@ struct MailStruct
/*0x20*/ u16 itemId;
};
-struct SaveBlock1
+struct UnkMauvilleOldManStruct
+{
+ u8 unk_2D94;
+ u8 unk_2D95;
+ /*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
+ /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
+ /*0x2DAE*/ u8 playerName[8];
+ /*0x2DB6*/ u8 filler_2DB6[0x3];
+ /*0x2DB9*/ u8 playerTrainerId[4];
+ u8 unk_2DBD;
+ /* size = 0x2C */
+};
+
+struct UnkMauvilleOldManStruct2
+{
+ u8 filler0;
+ u8 unk1;
+ u8 unk2;
+ u16 mauvilleOldMan_ecArray[10];
+ u16 mauvilleOldMan_ecArray2[6];
+ u8 fillerF[0x2];
+ /* size = 0x2C */
+};
+
+typedef union OldMan {
+ struct UnkMauvilleOldManStruct oldMan1;
+ struct UnkMauvilleOldManStruct2 oldMan2;
+} OldMan;
+
+struct Unk_SB_Access_Struct1
+{
+ u8 filler0[0xF8];
+ struct SB1_2EFC_Struct sb1_2EFC_struct[5];
+};
+
+struct Unk_SB_Access_Struct2
+{
+ struct SB1_2EFC_Struct sb1_2EFC_struct2[12]; // each is 0x20
+ /*0x2F84*/ u8 filler[0x18];
+};
+
+/*0x2E04*/
+typedef union SB_Struct {
+ struct Unk_SB_Access_Struct1 unkSB1;
+ struct Unk_SB_Access_Struct2 unkSB2;
+} SB_Struct;
+// size is 0x198
+
+struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
/*0x04*/ struct WarpData location;
@@ -336,10 +385,12 @@ struct SaveBlock1
/*0x2B1C*/ u16 unk2B1C[4];
/*0x2B24*/ u8 filler_2B24[0x28];
/*0x2B4C*/ struct MailStruct mail[16];
- /*0x2D8C*/ u8 filler_2D8C[0x48];
+ /*0x2D8C*/ u8 filler_2D8C[0x8];
+ /*0x2D94*/ OldMan oldMan;
+ /*0x2DC0*/ u8 unk_2DC0[0x14];
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
- /*0x2DFC*/ u8 filler_2DFC[0x100];
- /*0x2EFC*/ struct SB1_2EFC_Struct sb1_2EFC_struct[5];
+ /*0x2DFC*/ u8 filler_2DFC[0x8];
+ /*0x2E04*/ SB_Struct sbStruct;
/*0x2F9C*/ u8 filler_2F9C[0xA0];
/*0x303C*/ u8 filler_303C[0x38];
/*0x3074*/ u8 filler_3074[0x42];
@@ -380,7 +431,14 @@ struct Pokedex
struct SaveBlock2_Sub
{
- /*0x0000, 0x00A8*/ u8 filler_000[0x4C8];
+ /*0x0000, 0x00A8*/ u8 filler_000[0x4AE];
+ /*0x04AE, 0x0556*/ u8 var_4AE;
+ /*0x04AF, 0x0557*/ u8 var_4AF;
+ /*0x04B0, 0x0558*/ u16 var_4B0;
+ /*0x04B2, 0x055A*/ u16 var_4B2;
+ /*0x04B4, 0x055C*/ u16 var_4B4;
+ /*0x04B6, 0x055E*/ u16 var_4B6;
+ /*0x04B8, 0x0560*/ u8 filler_4B8[0x10];
/*0x04C8, 0x0570*/ u16 var_4C8;
/*0x04CA, 0x0572*/ u16 var_4CA;
/*0x04CC, 0x0574*/ u8 filler_4CC[0x31C];
@@ -410,11 +468,11 @@ struct SaveBlock2 /* 0x02024EA4 */
/*0xA8*/ struct SaveBlock2_Sub filler_A8;
};
-struct UnkStruct_8054FF8_Substruct
+struct MapPosition
{
s16 x;
s16 y;
- u8 field_8;
+ u8 height;
};
struct UnkStruct_8054FF8
@@ -423,7 +481,7 @@ struct UnkStruct_8054FF8
u8 b;
u8 c;
u8 d;
- struct UnkStruct_8054FF8_Substruct sub;
+ struct MapPosition sub;
u16 field_C;
};
diff --git a/include/heal_location.h b/include/heal_location.h
index 785918bd6..94dac2417 100644
--- a/include/heal_location.h
+++ b/include/heal_location.h
@@ -5,10 +5,10 @@
struct HealLocation
{
- s8 group;
- s8 map;
- u16 x;
- u16 y;
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum);
diff --git a/include/intro.h b/include/intro.h
index a859a9ce4..7fdbd9cb0 100644
--- a/include/intro.h
+++ b/include/intro.h
@@ -3,5 +3,6 @@
void c2_copyright_1(void);
void CB2_InitCopyrightScreen(void);
+void sub_813CE30(u16, u16, u16, u16);
#endif // GUARD_INTRO_H
diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h
index b4d1cd231..33c9f6bfa 100644
--- a/include/libgncmultiboot.h
+++ b/include/libgncmultiboot.h
@@ -3,8 +3,8 @@
struct GcmbStruct
{
- u16 gcmb_field_0;
- u8 gcmb_field_2;
+ u16 gcmb_field_0;
+ u8 gcmb_field_2;
};
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
diff --git a/include/link.h b/include/link.h
index 49dff6547..f88cf8f5a 100644
--- a/include/link.h
+++ b/include/link.h
@@ -65,11 +65,11 @@ struct LinkPlayer
/* 0x00 */ u16 version;
/* 0x02 */ u16 lp_field_2;
/* 0x04 */ u32 trainerId;
- /* 0x05 */ u8 name[11];
- /* 0x10 */ u8 gender;
+ /* 0x08 */ u8 name[11];
+ /* 0x13 */ u8 gender;
/* 0x14 */ u32 linkType;
/* 0x18 */ u16 lp_field_18;
- /* 0x20 */ u16 language;
+ /* 0x1A */ u16 language;
};
struct LinkPlayerBlock
diff --git a/include/link/.gitignore b/include/link/.gitignore
deleted file mode 100644
index 266afbe6e..000000000
--- a/include/link/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-digit_tiles.h
-digit_palette.h
diff --git a/include/load_save.h b/include/load_save.h
index a3c2c609c..0abc9985d 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -1,6 +1,8 @@
#ifndef GUARD_LOAD_SAVE_H
#define GUARD_LOAD_SAVE_H
+extern bool32 gFlashMemoryPresent;
+
void CheckForFlashMemory(void);
bool32 GetSecretBase2Field_9(void);
void ClearSecretBase2Field_9(void);
diff --git a/include/map_constants.h b/include/map_constants.h
new file mode 100644
index 000000000..f525f43a3
--- /dev/null
+++ b/include/map_constants.h
@@ -0,0 +1,1098 @@
+#ifndef GUARD_MAP_CONSTANTS_H
+#define GUARD_MAP_CONSTANTS_H
+
+//--------------------------------------------------
+// Map Group 0
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY,
+ MAP_ID_SLATEPORT_CITY,
+ MAP_ID_MAUVILLE_CITY,
+ MAP_ID_RUSTBORO_CITY,
+ MAP_ID_FORTREE_CITY,
+ MAP_ID_LILYCOVE_CITY,
+ MAP_ID_MOSSDEEP_CITY,
+ MAP_ID_SOOTOPOLIS_CITY,
+ MAP_ID_EVER_GRANDE_CITY,
+ MAP_ID_LITTLEROOT_TOWN,
+ MAP_ID_OLDALE_TOWN,
+ MAP_ID_DEWFORD_TOWN,
+ MAP_ID_LAVARIDGE_TOWN,
+ MAP_ID_FALLARBOR_TOWN,
+ MAP_ID_VERDANTURF_TOWN,
+ MAP_ID_PACIFIDLOG_TOWN,
+ MAP_ID_ROUTE101,
+ MAP_ID_ROUTE102,
+ MAP_ID_ROUTE103,
+ MAP_ID_ROUTE104,
+ MAP_ID_ROUTE105,
+ MAP_ID_ROUTE106,
+ MAP_ID_ROUTE107,
+ MAP_ID_ROUTE108,
+ MAP_ID_ROUTE109,
+ MAP_ID_ROUTE110,
+ MAP_ID_ROUTE111,
+ MAP_ID_ROUTE112,
+ MAP_ID_ROUTE113,
+ MAP_ID_ROUTE114,
+ MAP_ID_ROUTE115,
+ MAP_ID_ROUTE116,
+ MAP_ID_ROUTE117,
+ MAP_ID_ROUTE118,
+ MAP_ID_ROUTE119,
+ MAP_ID_ROUTE120,
+ MAP_ID_ROUTE121,
+ MAP_ID_ROUTE122,
+ MAP_ID_ROUTE123,
+ MAP_ID_ROUTE124,
+ MAP_ID_ROUTE125,
+ MAP_ID_ROUTE126,
+ MAP_ID_ROUTE127,
+ MAP_ID_ROUTE128,
+ MAP_ID_ROUTE129,
+ MAP_ID_ROUTE130,
+ MAP_ID_ROUTE131,
+ MAP_ID_ROUTE132,
+ MAP_ID_ROUTE133,
+ MAP_ID_ROUTE134,
+ MAP_ID_UNDERWATER1,
+ MAP_ID_UNDERWATER2,
+ MAP_ID_UNDERWATER3,
+ MAP_ID_UNDERWATER4,
+};
+
+#define MAP_GROUP_PETALBURG_CITY 0
+#define MAP_GROUP_SLATEPORT_CITY 0
+#define MAP_GROUP_MAUVILLE_CITY 0
+#define MAP_GROUP_RUSTBORO_CITY 0
+#define MAP_GROUP_FORTREE_CITY 0
+#define MAP_GROUP_LILYCOVE_CITY 0
+#define MAP_GROUP_MOSSDEEP_CITY 0
+#define MAP_GROUP_SOOTOPOLIS_CITY 0
+#define MAP_GROUP_EVER_GRANDE_CITY 0
+#define MAP_GROUP_LITTLEROOT_TOWN 0
+#define MAP_GROUP_OLDALE_TOWN 0
+#define MAP_GROUP_DEWFORD_TOWN 0
+#define MAP_GROUP_LAVARIDGE_TOWN 0
+#define MAP_GROUP_FALLARBOR_TOWN 0
+#define MAP_GROUP_VERDANTURF_TOWN 0
+#define MAP_GROUP_PACIFIDLOG_TOWN 0
+#define MAP_GROUP_ROUTE101 0
+#define MAP_GROUP_ROUTE102 0
+#define MAP_GROUP_ROUTE103 0
+#define MAP_GROUP_ROUTE104 0
+#define MAP_GROUP_ROUTE105 0
+#define MAP_GROUP_ROUTE106 0
+#define MAP_GROUP_ROUTE107 0
+#define MAP_GROUP_ROUTE108 0
+#define MAP_GROUP_ROUTE109 0
+#define MAP_GROUP_ROUTE110 0
+#define MAP_GROUP_ROUTE111 0
+#define MAP_GROUP_ROUTE112 0
+#define MAP_GROUP_ROUTE113 0
+#define MAP_GROUP_ROUTE114 0
+#define MAP_GROUP_ROUTE115 0
+#define MAP_GROUP_ROUTE116 0
+#define MAP_GROUP_ROUTE117 0
+#define MAP_GROUP_ROUTE118 0
+#define MAP_GROUP_ROUTE119 0
+#define MAP_GROUP_ROUTE120 0
+#define MAP_GROUP_ROUTE121 0
+#define MAP_GROUP_ROUTE122 0
+#define MAP_GROUP_ROUTE123 0
+#define MAP_GROUP_ROUTE124 0
+#define MAP_GROUP_ROUTE125 0
+#define MAP_GROUP_ROUTE126 0
+#define MAP_GROUP_ROUTE127 0
+#define MAP_GROUP_ROUTE128 0
+#define MAP_GROUP_ROUTE129 0
+#define MAP_GROUP_ROUTE130 0
+#define MAP_GROUP_ROUTE131 0
+#define MAP_GROUP_ROUTE132 0
+#define MAP_GROUP_ROUTE133 0
+#define MAP_GROUP_ROUTE134 0
+#define MAP_GROUP_UNDERWATER1 0
+#define MAP_GROUP_UNDERWATER2 0
+#define MAP_GROUP_UNDERWATER3 0
+#define MAP_GROUP_UNDERWATER4 0
+
+//--------------------------------------------------
+// Map Group 1
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB,
+};
+
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1
+
+//--------------------------------------------------
+// Map Group 2
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_OLDALE_TOWN_HOUSE1,
+ MAP_ID_OLDALE_TOWN_HOUSE2,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_OLDALE_TOWN_MART,
+};
+
+#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2
+#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2
+#define MAP_GROUP_OLDALE_TOWN_MART 2
+
+//--------------------------------------------------
+// Map Group 3
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_DEWFORD_TOWN_HOUSE1,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_DEWFORD_TOWN_GYM,
+ MAP_ID_DEWFORD_TOWN_HALL,
+ MAP_ID_DEWFORD_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3
+#define MAP_GROUP_DEWFORD_TOWN_GYM 3
+#define MAP_GROUP_DEWFORD_TOWN_HALL 3
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3
+
+//--------------------------------------------------
+// Map Group 4
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LAVARIDGE_TOWN_HERB_SHOP,
+ MAP_ID_LAVARIDGE_TOWN_GYM_1F,
+ MAP_ID_LAVARIDGE_TOWN_GYM_B1F,
+ MAP_ID_LAVARIDGE_TOWN_HOUSE,
+ MAP_ID_LAVARIDGE_TOWN_MART,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4
+#define MAP_GROUP_LAVARIDGE_TOWN_MART 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4
+
+//--------------------------------------------------
+// Map Group 5
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FALLARBOR_TOWN_MART,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_LOBBY,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_HALL,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_FALLARBOR_TOWN_HOUSE1,
+ MAP_ID_FALLARBOR_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_FALLARBOR_TOWN_MART 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_LOBBY 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_HALL 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5
+
+//--------------------------------------------------
+// Map Group 6
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_VERDANTURF_TOWN_CONTEST_LOBBY,
+ MAP_ID_VERDANTURF_TOWN_CONTEST_HALL,
+ MAP_ID_VERDANTURF_TOWN_MART,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_HOUSE,
+};
+
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_LOBBY 6
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_HALL 6
+#define MAP_GROUP_VERDANTURF_TOWN_MART 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6
+#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6
+
+//--------------------------------------------------
+// Map Group 7
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE1,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE2,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE3,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE4,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE5,
+};
+
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7
+
+//--------------------------------------------------
+// Map Group 8
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY_WALLYS_HOUSE,
+ MAP_ID_PETALBURG_CITY_GYM,
+ MAP_ID_PETALBURG_CITY_HOUSE1,
+ MAP_ID_PETALBURG_CITY_HOUSE2,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F,
+ MAP_ID_PETALBURG_CITY_MART,
+};
+
+#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8
+#define MAP_GROUP_PETALBURG_CITY_GYM 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8
+#define MAP_GROUP_PETALBURG_CITY_MART 8
+
+//--------------------------------------------------
+// Map Group 9
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F,
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F,
+ MAP_ID_SLATEPORT_CITY_CONTEST_LOBBY,
+ MAP_ID_SLATEPORT_CITY_CONTEST_HALL,
+ MAP_ID_SLATEPORT_CITY_HOUSE1,
+ MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F,
+ MAP_ID_SLATEPORT_CITY_HARBOR,
+ MAP_ID_SLATEPORT_CITY_HOUSE2,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SLATEPORT_CITY_MART,
+};
+
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_LOBBY 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_HALL 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_MART 9
+
+//--------------------------------------------------
+// Map Group 10
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MAUVILLE_CITY_GYM,
+ MAP_ID_MAUVILLE_CITY_BIKE_SHOP,
+ MAP_ID_MAUVILLE_CITY_HOUSE1,
+ MAP_ID_MAUVILLE_CITY_GAME_CORNER,
+ MAP_ID_MAUVILLE_CITY_HOUSE2,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MAUVILLE_CITY_MART,
+};
+
+#define MAP_GROUP_MAUVILLE_CITY_GYM 10
+#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10
+#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10
+#define MAP_GROUP_MAUVILLE_CITY_MART 10
+
+//--------------------------------------------------
+// Map Group 11
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F,
+ MAP_ID_RUSTBORO_CITY_GYM,
+ MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F,
+ MAP_ID_RUSTBORO_CITY_MART,
+ MAP_ID_RUSTBORO_CITY_FLAT1_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT1_2F,
+ MAP_ID_RUSTBORO_CITY_HOUSE1,
+ MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE,
+ MAP_ID_RUSTBORO_CITY_HOUSE2,
+ MAP_ID_RUSTBORO_CITY_FLAT2_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_2F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_3F,
+ MAP_ID_RUSTBORO_CITY_HOUSE3,
+};
+
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_GYM 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_MART 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11
+#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11
+
+//--------------------------------------------------
+// Map Group 12
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FORTREE_CITY_HOUSE1,
+ MAP_ID_FORTREE_CITY_GYM,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_FORTREE_CITY_MART,
+ MAP_ID_FORTREE_CITY_HOUSE2,
+ MAP_ID_FORTREE_CITY_HOUSE3,
+ MAP_ID_FORTREE_CITY_HOUSE4,
+ MAP_ID_FORTREE_CITY_HOUSE5,
+ MAP_ID_FORTREE_CITY_DECORATION_SHOP,
+};
+
+#define MAP_GROUP_FORTREE_CITY_HOUSE1 12
+#define MAP_GROUP_FORTREE_CITY_GYM 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12
+#define MAP_GROUP_FORTREE_CITY_MART 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE2 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE3 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE4 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE5 12
+#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12
+
+//--------------------------------------------------
+// Map Group 13
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F,
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F,
+ MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY,
+ MAP_ID_LILYCOVE_CITY_CONTEST_HALL,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_LILYCOVE_CITY_UNUSED_MART,
+ MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB,
+ MAP_ID_LILYCOVE_CITY_HARBOR,
+ MAP_ID_LILYCOVE_CITY_EMPTY_MAP,
+ MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE,
+ MAP_ID_LILYCOVE_CITY_HOUSE1,
+ MAP_ID_LILYCOVE_CITY_HOUSE2,
+ MAP_ID_LILYCOVE_CITY_HOUSE3,
+ MAP_ID_LILYCOVE_CITY_HOUSE4,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR,
+};
+
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13
+#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13
+#define MAP_GROUP_LILYCOVE_CITY_EMPTY_MAP 13
+#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13
+
+//--------------------------------------------------
+// Map Group 14
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MOSSDEEP_CITY_GYM,
+ MAP_ID_MOSSDEEP_CITY_HOUSE1,
+ MAP_ID_MOSSDEEP_CITY_HOUSE2,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_MART,
+ MAP_ID_MOSSDEEP_CITY_HOUSE3,
+ MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE,
+ MAP_ID_MOSSDEEP_CITY_HOUSE4,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F,
+};
+
+#define MAP_GROUP_MOSSDEEP_CITY_GYM 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_MART 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14
+#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14
+
+//--------------------------------------------------
+// Map Group 15
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SOOTOPOLIS_CITY_GYM_1F,
+ MAP_ID_SOOTOPOLIS_CITY_GYM_B1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SOOTOPOLIS_CITY_MART,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE1,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE2,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE3,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE4,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE5,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE6,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE7,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE8,
+};
+
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15
+
+//--------------------------------------------------
+// Map Group 16
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR1,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR2,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR3,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR4,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR5,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE,
+ MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE 16
+#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16
+
+//--------------------------------------------------
+// Map Group 17
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_MR_BRINEYS_HOUSE,
+ MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17
+#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17
+
+//--------------------------------------------------
+// Map Group 18
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE,
+ MAP_ID_ROUTE111_OLD_LADYS_REST_STOP,
+};
+
+#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18
+#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18
+
+//--------------------------------------------------
+// Map Group 19
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE112_CABLE_CAR_STATION,
+ MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION,
+};
+
+#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19
+#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19
+
+//--------------------------------------------------
+// Map Group 20
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE,
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL,
+ MAP_ID_ROUTE114_LANETTES_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20
+#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20
+
+//--------------------------------------------------
+// Map Group 21
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21
+
+//--------------------------------------------------
+// Map Group 22
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE117_POKEMON_DAY_CARE,
+};
+
+#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22
+
+//--------------------------------------------------
+// Map Group 23
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23
+
+//--------------------------------------------------
+// Map Group 24
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_METEOR_FALLS_1F_1R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_B1F_1R,
+ MAP_ID_METEOR_FALLS_B1F_2R,
+ MAP_ID_RUSTURF_TUNNEL,
+ MAP_ID_UNDERWATER_SOOTOPOLIS_CITY,
+ MAP_ID_DESERT_RUINS,
+ MAP_ID_GRANITE_CAVE_1F,
+ MAP_ID_GRANITE_CAVE_B1F,
+ MAP_ID_GRANITE_CAVE_B2F,
+ MAP_ID_GRANITE_CAVE_STEVENS_ROOM,
+ MAP_ID_PETALBURG_WOODS,
+ MAP_ID_MT_CHIMNEY,
+ MAP_ID_JAGGED_PASS,
+ MAP_ID_FIERY_PATH,
+ MAP_ID_MT_PYRE_1F,
+ MAP_ID_MT_PYRE_2F,
+ MAP_ID_MT_PYRE_3F,
+ MAP_ID_MT_PYRE_4F,
+ MAP_ID_MT_PYRE_5F,
+ MAP_ID_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_EXTERIOR,
+ MAP_ID_MT_PYRE_SUMMIT,
+ MAP_ID_AQUA_HIDEOUT_1F,
+ MAP_ID_AQUA_HIDEOUT_B1F,
+ MAP_ID_AQUA_HIDEOUT_B2F,
+ MAP_ID_UNDERWATER_SEAFLOOR_CAVERN,
+ MAP_ID_SEAFLOOR_CAVERN_ENTRANCE,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM1,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM2,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM3,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM4,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM5,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM6,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM7,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM8,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM9,
+ MAP_ID_CAVE_OF_ORIGIN_ENTRANCE,
+ MAP_ID_CAVE_OF_ORIGIN_1F,
+ MAP_ID_CAVE_OF_ORIGIN_B1F,
+ MAP_ID_CAVE_OF_ORIGIN_B2F,
+ MAP_ID_CAVE_OF_ORIGIN_B3F,
+ MAP_ID_CAVE_OF_ORIGIN_B4F,
+ MAP_ID_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_B1F,
+ MAP_ID_VICTORY_ROAD_B2F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM,
+ MAP_ID_NEW_MAUVILLE_ENTRANCE,
+ MAP_ID_NEW_MAUVILLE_INSIDE,
+ MAP_ID_ABANDONED_SHIP_DECK,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_1F,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_B1F,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER1,
+ MAP_ID_ABANDONED_SHIP_ROOM_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER2,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS,
+ MAP_ID_ISLAND_CAVE,
+ MAP_ID_ANCIENT_TOMB,
+ MAP_ID_UNDERWATER_ROUTE134,
+ MAP_ID_UNDERWATER_SEALED_CHAMBER,
+ MAP_ID_SEALED_CHAMBER_OUTER_ROOM,
+ MAP_ID_SEALED_CHAMBER_INNER_ROOM,
+ MAP_ID_SCORCHED_SLAB,
+ MAP_ID_MAGMA_HIDEOUT_1F,
+ MAP_ID_MAGMA_HIDEOUT_B1F,
+ MAP_ID_MAGMA_HIDEOUT_B2F,
+ MAP_ID_SKY_PILLAR_ENTRANCE,
+ MAP_ID_SKY_PILLAR_OUTSIDE,
+ MAP_ID_SKY_PILLAR_1F,
+ MAP_ID_SKY_PILLAR_2F,
+ MAP_ID_SKY_PILLAR_3F,
+ MAP_ID_SKY_PILLAR_4F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM,
+ MAP_ID_SKY_PILLAR_5F,
+ MAP_ID_SKY_PILLAR_TOP,
+};
+
+#define MAP_GROUP_METEOR_FALLS_1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_1F_2R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_2R 24
+#define MAP_GROUP_RUSTURF_TUNNEL 24
+#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24
+#define MAP_GROUP_DESERT_RUINS 24
+#define MAP_GROUP_GRANITE_CAVE_1F 24
+#define MAP_GROUP_GRANITE_CAVE_B1F 24
+#define MAP_GROUP_GRANITE_CAVE_B2F 24
+#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24
+#define MAP_GROUP_PETALBURG_WOODS 24
+#define MAP_GROUP_MT_CHIMNEY 24
+#define MAP_GROUP_JAGGED_PASS 24
+#define MAP_GROUP_FIERY_PATH 24
+#define MAP_GROUP_MT_PYRE_1F 24
+#define MAP_GROUP_MT_PYRE_2F 24
+#define MAP_GROUP_MT_PYRE_3F 24
+#define MAP_GROUP_MT_PYRE_4F 24
+#define MAP_GROUP_MT_PYRE_5F 24
+#define MAP_GROUP_MT_PYRE_6F 24
+#define MAP_GROUP_MT_PYRE_EXTERIOR 24
+#define MAP_GROUP_MT_PYRE_SUMMIT 24
+#define MAP_GROUP_AQUA_HIDEOUT_1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B2F 24
+#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24
+#define MAP_GROUP_VICTORY_ROAD_1F 24
+#define MAP_GROUP_VICTORY_ROAD_B1F 24
+#define MAP_GROUP_VICTORY_ROAD_B2F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24
+#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24
+#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24
+#define MAP_GROUP_ABANDONED_SHIP_DECK 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24
+#define MAP_GROUP_ISLAND_CAVE 24
+#define MAP_GROUP_ANCIENT_TOMB 24
+#define MAP_GROUP_UNDERWATER_ROUTE134 24
+#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24
+#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24
+#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24
+#define MAP_GROUP_SCORCHED_SLAB 24
+#define MAP_GROUP_MAGMA_HIDEOUT_1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24
+#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24
+#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24
+#define MAP_GROUP_SKY_PILLAR_1F 24
+#define MAP_GROUP_SKY_PILLAR_2F 24
+#define MAP_GROUP_SKY_PILLAR_3F 24
+#define MAP_GROUP_SKY_PILLAR_4F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24
+#define MAP_GROUP_SKY_PILLAR_5F 24
+#define MAP_GROUP_SKY_PILLAR_TOP 24
+
+//--------------------------------------------------
+// Map Group 25
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SECRET_BASE_RED_CAVE1,
+ MAP_ID_SECRET_BASE_BROWN_CAVE1,
+ MAP_ID_SECRET_BASE_BLUE_CAVE1,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE1,
+ MAP_ID_SECRET_BASE_TREE1,
+ MAP_ID_SECRET_BASE_SHRUB1,
+ MAP_ID_SECRET_BASE_RED_CAVE2,
+ MAP_ID_SECRET_BASE_BROWN_CAVE2,
+ MAP_ID_SECRET_BASE_BLUE_CAVE2,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE2,
+ MAP_ID_SECRET_BASE_TREE2,
+ MAP_ID_SECRET_BASE_SHRUB2,
+ MAP_ID_SECRET_BASE_RED_CAVE3,
+ MAP_ID_SECRET_BASE_BROWN_CAVE3,
+ MAP_ID_SECRET_BASE_BLUE_CAVE3,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE3,
+ MAP_ID_SECRET_BASE_TREE3,
+ MAP_ID_SECRET_BASE_SHRUB3,
+ MAP_ID_SECRET_BASE_RED_CAVE4,
+ MAP_ID_SECRET_BASE_BROWN_CAVE4,
+ MAP_ID_SECRET_BASE_BLUE_CAVE4,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE4,
+ MAP_ID_SECRET_BASE_TREE4,
+ MAP_ID_SECRET_BASE_SHRUB4,
+ MAP_ID_SINGLE_BATTLE_COLOSSEUM,
+ MAP_ID_TRADE_CENTER,
+ MAP_ID_RECORD_CORNER,
+ MAP_ID_DOUBLE_BATTLE_COLOSSEUM,
+ MAP_ID_LINK_CONTEST_ROOM1,
+ MAP_ID_UNKNOWN_MAP_25_29,
+ MAP_ID_UNKNOWN_MAP_25_30,
+ MAP_ID_UNKNOWN_MAP_25_31,
+ MAP_ID_UNKNOWN_MAP_25_32,
+ MAP_ID_UNKNOWN_MAP_25_33,
+ MAP_ID_UNKNOWN_MAP_25_34,
+ MAP_ID_LINK_CONTEST_ROOM2,
+ MAP_ID_LINK_CONTEST_ROOM3,
+ MAP_ID_LINK_CONTEST_ROOM4,
+ MAP_ID_LINK_CONTEST_ROOM5,
+ MAP_ID_LINK_CONTEST_ROOM6,
+ MAP_ID_INSIDE_OF_TRUCK,
+ MAP_ID_SS_TIDAL_CORRIDOR,
+ MAP_ID_SS_TIDAL_LOWER_DECK,
+ MAP_ID_SS_TIDAL_ROOMS,
+};
+
+#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_TREE1 25
+#define MAP_GROUP_SECRET_BASE_SHRUB1 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_TREE2 25
+#define MAP_GROUP_SECRET_BASE_SHRUB2 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_TREE3 25
+#define MAP_GROUP_SECRET_BASE_SHRUB3 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_TREE4 25
+#define MAP_GROUP_SECRET_BASE_SHRUB4 25
+#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_TRADE_CENTER 25
+#define MAP_GROUP_RECORD_CORNER 25
+#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_LINK_CONTEST_ROOM1 25
+#define MAP_GROUP_UNKNOWN_MAP_25_29 25
+#define MAP_GROUP_UNKNOWN_MAP_25_30 25
+#define MAP_GROUP_UNKNOWN_MAP_25_31 25
+#define MAP_GROUP_UNKNOWN_MAP_25_32 25
+#define MAP_GROUP_UNKNOWN_MAP_25_33 25
+#define MAP_GROUP_UNKNOWN_MAP_25_34 25
+#define MAP_GROUP_LINK_CONTEST_ROOM2 25
+#define MAP_GROUP_LINK_CONTEST_ROOM3 25
+#define MAP_GROUP_LINK_CONTEST_ROOM4 25
+#define MAP_GROUP_LINK_CONTEST_ROOM5 25
+#define MAP_GROUP_LINK_CONTEST_ROOM6 25
+#define MAP_GROUP_INSIDE_OF_TRUCK 25
+#define MAP_GROUP_SS_TIDAL_CORRIDOR 25
+#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25
+#define MAP_GROUP_SS_TIDAL_ROOMS 25
+
+//--------------------------------------------------
+// Map Group 26
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SAFARI_ZONE_NORTHWEST,
+ MAP_ID_SAFARI_ZONE_NORTHEAST,
+ MAP_ID_SAFARI_ZONE_SOUTHWEST,
+ MAP_ID_SAFARI_ZONE_SOUTHEAST,
+ MAP_ID_BATTLE_TOWER_OUTSIDE,
+ MAP_ID_BATTLE_TOWER_LOBBY,
+ MAP_ID_BATTLE_TOWER_ELEVATOR,
+ MAP_ID_BATTLE_TOWER_CORRIDOR,
+ MAP_ID_BATTLE_TOWER_BATTLE_ROOM,
+ MAP_ID_SOUTHERN_ISLAND_EXTERIOR,
+ MAP_ID_SOUTHERN_ISLAND_INTERIOR,
+ MAP_ID_SAFARI_ZONE_REST_HOUSE,
+};
+
+#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26
+#define MAP_GROUP_BATTLE_TOWER_OUTSIDE 26
+#define MAP_GROUP_BATTLE_TOWER_LOBBY 26
+#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26
+#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26
+#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26
+#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26
+#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26
+#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26
+
+//--------------------------------------------------
+// Map Group 27
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_PROTOTYPE,
+ MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_PROTOTYPE 27
+#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27
+
+//--------------------------------------------------
+// Map Group 28
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE109_SEASHORE_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28
+
+//--------------------------------------------------
+// Map Group 29
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE,
+ MAP_ID_ROUTE110_TRICK_HOUSE_END,
+ MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29
+
+//--------------------------------------------------
+// Map Group 30
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE113_GLASS_WORKSHOP,
+};
+
+#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30
+
+//--------------------------------------------------
+// Map Group 31
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31
+
+//--------------------------------------------------
+// Map Group 32
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F,
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F,
+ MAP_ID_ROUTE119_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32
+#define MAP_GROUP_ROUTE119_HOUSE 32
+
+//--------------------------------------------------
+// Map Group 33
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33
+
+#endif // GUARD_MAP_CONSTANTS_H
diff --git a/include/map_object_constants.h b/include/map_object_constants.h
new file mode 100644
index 000000000..440b6e97e
--- /dev/null
+++ b/include/map_object_constants.h
@@ -0,0 +1,226 @@
+#ifndef GUARD_MAP_OBJECT_CONSTANTS_H
+#define GUARD_MAP_OBJECT_CONSTANTS_H
+
+enum
+{
+ MAP_OBJ_GFX_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_BRENDAN_SURFING,
+ MAP_OBJ_GFX_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_QUINTY_PLUMP,
+ MAP_OBJ_GFX_LITTLE_BOY_1,
+ MAP_OBJ_GFX_LITTLE_GIRL_1,
+ MAP_OBJ_GFX_BOY_1,
+ MAP_OBJ_GFX_GIRL_1,
+ MAP_OBJ_GFX_BOY_2,
+ MAP_OBJ_GFX_GIRL_2,
+ MAP_OBJ_GFX_LITTLE_BOY_2,
+ MAP_OBJ_GFX_LITTLE_GIRL_2,
+ MAP_OBJ_GFX_BOY_3,
+ MAP_OBJ_GFX_GIRL_3,
+ MAP_OBJ_GFX_BOY_4,
+ MAP_OBJ_GFX_WOMAN_1,
+ MAP_OBJ_GFX_FAT_MAN,
+ MAP_OBJ_GFX_WOMAN_2,
+ MAP_OBJ_GFX_MAN_1,
+ MAP_OBJ_GFX_WOMAN_3,
+ MAP_OBJ_GFX_OLD_MAN_1,
+ MAP_OBJ_GFX_OLD_WOMAN_1,
+ MAP_OBJ_GFX_MAN_2,
+ MAP_OBJ_GFX_WOMAN_4,
+ MAP_OBJ_GFX_MAN_3,
+ MAP_OBJ_GFX_WOMAN_5,
+ MAP_OBJ_GFX_COOK,
+ MAP_OBJ_GFX_WOMAN_6,
+ MAP_OBJ_GFX_OLD_MAN_2,
+ MAP_OBJ_GFX_OLD_WOMAN_2,
+ MAP_OBJ_GFX_CAMPER,
+ MAP_OBJ_GFX_PICNICKER,
+ MAP_OBJ_GFX_MAN_4,
+ MAP_OBJ_GFX_WOMAN_7,
+ MAP_OBJ_GFX_YOUNGSTER,
+ MAP_OBJ_GFX_BUG_CATCHER,
+ MAP_OBJ_GFX_PSYCHIC_M,
+ MAP_OBJ_GFX_SCHOOL_KID_M,
+ MAP_OBJ_GFX_MANIAC,
+ MAP_OBJ_GFX_HEX_MANIAC,
+ MAP_OBJ_GFX_WOMAN_8,
+ MAP_OBJ_GFX_SWIMMER_M,
+ MAP_OBJ_GFX_SWIMMER_F,
+ MAP_OBJ_GFX_BLACK_BELT,
+ MAP_OBJ_GFX_BEAUTY,
+ MAP_OBJ_GFX_SCIENTIST_1,
+ MAP_OBJ_GFX_LASS,
+ MAP_OBJ_GFX_GENTLEMAN,
+ MAP_OBJ_GFX_SAILOR,
+ MAP_OBJ_GFX_FISHERMAN,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ MAP_OBJ_GFX_TUBER_F,
+ MAP_OBJ_GFX_TUBER_M,
+ MAP_OBJ_GFX_HIKER,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_F,
+ MAP_OBJ_GFX_NURSE,
+ MAP_OBJ_GFX_ITEM_BALL,
+ MAP_OBJ_GFX_BERRY_TREE,
+ MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES,
+ MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES,
+ MAP_OBJ_GFX_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_PROF_BIRCH,
+ MAP_OBJ_GFX_MAN_5,
+ MAP_OBJ_GFX_MAN_6,
+ MAP_OBJ_GFX_REPORTER_M,
+ MAP_OBJ_GFX_REPORTER_F,
+ MAP_OBJ_GFX_BARD,
+ MAP_OBJ_GFX_HIPSTER,
+ MAP_OBJ_GFX_TRADER,
+ MAP_OBJ_GFX_STORYTELLER,
+ MAP_OBJ_GFX_GIDDY,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2,
+ MAP_OBJ_GFX_UNUSED_NATU_DOLL,
+ MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL,
+ MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL,
+ MAP_OBJ_GFX_UNUSED_WOOPER_DOLL,
+ MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL,
+ MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL,
+ MAP_OBJ_GFX_CUTTABLE_TREE,
+ MAP_OBJ_GFX_MART_EMPLOYEE,
+ MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN,
+ MAP_OBJ_GFX_TEALA,
+ MAP_OBJ_GFX_BREAKABLE_ROCK,
+ MAP_OBJ_GFX_PUSHABLE_BOULDER,
+ MAP_OBJ_GFX_MR_BRINEYS_BOAT,
+ MAP_OBJ_GFX_MAY_NORMAL,
+ MAP_OBJ_GFX_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_MAY_SURFING,
+ MAP_OBJ_GFX_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_TRUCK,
+ MAP_OBJ_GFX_MACHOKE_CARRYING_BOX,
+ MAP_OBJ_GFX_MACHOKE_FACING_AWAY,
+ MAP_OBJ_GFX_BIRCHS_BAG,
+ MAP_OBJ_GFX_POOCHYENA,
+ MAP_OBJ_GFX_ARTIST,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_RIVAL_MAY_NORMAL,
+ MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_SURFING,
+ MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_CAMERAMAN,
+ MAP_OBJ_GFX_BRENDAN_UNDERWATER,
+ MAP_OBJ_GFX_MAY_UNDERWATER,
+ MAP_OBJ_GFX_MOVING_BOX,
+ MAP_OBJ_GFX_CABLE_CAR,
+ MAP_OBJ_GFX_SCIENTIST_2,
+ MAP_OBJ_GFX_MAN_7,
+ MAP_OBJ_GFX_AQUA_MEMBER_M,
+ MAP_OBJ_GFX_AQUA_MEMBER_F,
+ MAP_OBJ_GFX_MAGMA_MEMBER_M,
+ MAP_OBJ_GFX_MAGMA_MEMBER_F,
+ MAP_OBJ_GFX_SIDNEY,
+ MAP_OBJ_GFX_PHOEBE,
+ MAP_OBJ_GFX_GLACIA,
+ MAP_OBJ_GFX_DRAKE,
+ MAP_OBJ_GFX_ROXANNE,
+ MAP_OBJ_GFX_BRAWLY,
+ MAP_OBJ_GFX_WATTSON,
+ MAP_OBJ_GFX_FLANNERY,
+ MAP_OBJ_GFX_NORMAN,
+ MAP_OBJ_GFX_WINONA,
+ MAP_OBJ_GFX_LIZA,
+ MAP_OBJ_GFX_TATE,
+ MAP_OBJ_GFX_WALLACE,
+ MAP_OBJ_GFX_STEVEN,
+ MAP_OBJ_GFX_WALLY,
+ MAP_OBJ_GFX_LITTLE_BOY_3,
+ MAP_OBJ_GFX_BRENDAN_FISHING,
+ MAP_OBJ_GFX_MAY_FISHING,
+ MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN,
+ MAP_OBJ_GFX_SS_TIDAL,
+ MAP_OBJ_GFX_SUBMARINE_SHADOW,
+ MAP_OBJ_GFX_PICHU_DOLL,
+ MAP_OBJ_GFX_PIKACHU_DOLL,
+ MAP_OBJ_GFX_MARILL_DOLL,
+ MAP_OBJ_GFX_TOGEPI_DOLL,
+ MAP_OBJ_GFX_CYNDAQUIL_DOLL,
+ MAP_OBJ_GFX_CHIKORITA_DOLL,
+ MAP_OBJ_GFX_TOTODILE_DOLL,
+ MAP_OBJ_GFX_JIGGLYPUFF_DOLL,
+ MAP_OBJ_GFX_MEOWTH_DOLL,
+ MAP_OBJ_GFX_CLEFAIRY_DOLL,
+ MAP_OBJ_GFX_DITTO_DOLL,
+ MAP_OBJ_GFX_SMOOCHUM_DOLL,
+ MAP_OBJ_GFX_TREECKO_DOLL,
+ MAP_OBJ_GFX_TORCHIC_DOLL,
+ MAP_OBJ_GFX_MUDKIP_DOLL,
+ MAP_OBJ_GFX_DUSKULL_DOLL,
+ MAP_OBJ_GFX_WYNAUT_DOLL,
+ MAP_OBJ_GFX_BALTOY_DOLL,
+ MAP_OBJ_GFX_KECLEON_DOLL,
+ MAP_OBJ_GFX_AZURILL_DOLL,
+ MAP_OBJ_GFX_SKITTY_DOLL,
+ MAP_OBJ_GFX_SWABLU_DOLL,
+ MAP_OBJ_GFX_GULPIN_DOLL,
+ MAP_OBJ_GFX_LOTAD_DOLL,
+ MAP_OBJ_GFX_SEEDOT_DOLL,
+ MAP_OBJ_GFX_PIKA_CUSHION,
+ MAP_OBJ_GFX_ROUND_CUSHION,
+ MAP_OBJ_GFX_KISS_CUSHION,
+ MAP_OBJ_GFX_ZIGZAG_CUSHION,
+ MAP_OBJ_GFX_SPIN_CUSHION,
+ MAP_OBJ_GFX_DIAMOND_CUSHION,
+ MAP_OBJ_GFX_BALL_CUSHION,
+ MAP_OBJ_GFX_GRASS_CUSHION,
+ MAP_OBJ_GFX_FIRE_CUSHION,
+ MAP_OBJ_GFX_WATER_CUSHION,
+ MAP_OBJ_GFX_BIG_SNORLAX_DOLL,
+ MAP_OBJ_GFX_BIG_RHYDON_DOLL,
+ MAP_OBJ_GFX_BIG_LAPRAS_DOLL,
+ MAP_OBJ_GFX_BIG_VENUSAUR_DOLL,
+ MAP_OBJ_GFX_BIG_CHARIZARD_DOLL,
+ MAP_OBJ_GFX_BIG_BLASTOISE_DOLL,
+ MAP_OBJ_GFX_BIG_WAILMER_DOLL,
+ MAP_OBJ_GFX_BIG_REGIROCK_DOLL,
+ MAP_OBJ_GFX_BIG_REGICE_DOLL,
+ MAP_OBJ_GFX_BIG_REGISTEEL_DOLL,
+ MAP_OBJ_GFX_LATIAS,
+ MAP_OBJ_GFX_LATIOS,
+ MAP_OBJ_GFX_BOY_5,
+ MAP_OBJ_GFX_CONTEST_JUDGE,
+ MAP_OBJ_GFX_BRENDAN_WATERING,
+ MAP_OBJ_GFX_MAY_WATERING,
+ MAP_OBJ_GFX_BRENDAN_DECORATING,
+ MAP_OBJ_GFX_MAY_DECORATING,
+ MAP_OBJ_GFX_ARCHIE,
+ MAP_OBJ_GFX_MAXIE,
+ MAP_OBJ_GFX_KYOGRE_1,
+ MAP_OBJ_GFX_GROUDON_1,
+ MAP_OBJ_GFX_FOSSIL,
+ MAP_OBJ_GFX_REGIROCK,
+ MAP_OBJ_GFX_REGICE,
+ MAP_OBJ_GFX_REGISTEEL,
+ MAP_OBJ_GFX_SKITTY,
+ MAP_OBJ_GFX_KECLEON_1,
+ MAP_OBJ_GFX_KYOGRE_2,
+ MAP_OBJ_GFX_GROUDON_2,
+ MAP_OBJ_GFX_RAYQUAZA,
+ MAP_OBJ_GFX_ZIGZAGOON,
+ MAP_OBJ_GFX_PIKACHU,
+ MAP_OBJ_GFX_AZUMARILL,
+ MAP_OBJ_GFX_WINGULL,
+ MAP_OBJ_GFX_KECLEON_2,
+ MAP_OBJ_GFX_TUBER_M_SWIMMING,
+ MAP_OBJ_GFX_AZURILL,
+ MAP_OBJ_GFX_MOM,
+ MAP_OBJ_GFX_LINK_BRENDAN,
+ MAP_OBJ_GFX_LINK_MAY,
+};
+
+#endif // GUARD_MAP_OBJECT_CONSTANTS_H \ No newline at end of file
diff --git a/include/matsuda_debug_menu.h b/include/matsuda_debug_menu.h
new file mode 100644
index 000000000..5df53d688
--- /dev/null
+++ b/include/matsuda_debug_menu.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_MATSUDADEBUG_H
+#define GUARD_MATSUDADEBUG_H
+
+#define BIT(n) (1 << (n))
+
+void sub_80AB184(void);
+void sub_80AA280(u8);
+void sub_80AA5E8(u8);
+void sub_80AA658(u8);
+
+#endif
diff --git a/include/menu.h b/include/menu.h
index 0e4860791..c3dcbc969 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -58,7 +58,7 @@ void sub_8072B80(u8 *, u8, u8, u8 *);
void sub_8072BD8(u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
u8 *sub_8072C44(u8 *, s32, u8, u8);
-u8 *sub_8072C74(u8 *, u8 *, u8, u8);
+u8 *sub_8072C74(u8 *, const u8 *, u8, u8);
u8 sub_8072CA4(u8 *s);
u8 sub_8072CBC(void);
void sub_8072CD4(u8 *, u8 *, u8 *);
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index e7b4adfbd..f4250f07b 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -72,7 +72,7 @@ bool8 MetatileBehavior_IsPuddle(u8);
bool8 MetatileBehavior_IsTallGrass(u8);
bool8 MetatileBehavior_IsLongGrass(u8);
bool8 MetatileBehavior_IsBerryTreeSoil(u8);
-bool8 MetatileBehavior_IsAsh(u8);
+bool8 MetatileBehavior_IsAshGrass(u8);
bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8);
bool8 MetatileBehavior_IsBridge(u8);
u8 sub_8057450(u8);
@@ -103,7 +103,7 @@ bool8 sub_80576DC(u8);
bool8 MetatileBehavior_IsPacifidlogLog(u8);
bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8);
bool8 MetatileBehavior_IsRegionMap(u8);
-bool8 MetatileBehavior_IsClosedSootpolisGymDoor(u8);
+bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8);
bool8 MetatileBehavior_IsRoulette(u8);
bool8 MetatileBehavior_IsPokeblockFeeder(u8);
bool8 MetatileBehavior_0xBB(u8);
@@ -123,7 +123,7 @@ bool8 MetatileBehavior_IsVerticalRail(u8);
bool8 MetatileBehavior_IsHorizontalRail(u8);
bool8 MetatileBehavior_IsSeaweed(u8);
bool8 MetatileBehavior_IsRunningDisallowed(u8);
-bool8 sub_80578F8(u8);
+bool8 MetatileBehavior_IsCuttableGrass(u8);
bool8 sub_805791C(u8);
bool8 MetatileBehavior_IsPictureBookShelf(u8);
bool8 MetatileBehavior_IsBookShelf(u8);
diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h
index ea705054e..1241fbb81 100644
--- a/include/metatile_behaviors.h
+++ b/include/metatile_behaviors.h
@@ -32,7 +32,7 @@
#define MB_ICE 0x20
#define MB_SAND 0x21
#define MB_SEAWEED 0x22
-#define MB_ASH 0x24
+#define MB_ASHGRASS 0x24
#define MB_25 0x25
#define MB_THIN_ICE 0x26
#define MB_CRACKED_ICE 0x27
diff --git a/include/moves.h b/include/moves.h
new file mode 100644
index 000000000..e3b6d3113
--- /dev/null
+++ b/include/moves.h
@@ -0,0 +1,363 @@
+#ifndef GUARD_MOVES_H
+#define GUARD_MOVES_H
+
+enum
+{
+ MOVE_NONE,
+ MOVE_POUND,
+ MOVE_KARATE_CHOP,
+ MOVE_DOUBLE_SLAP,
+ MOVE_COMET_PUNCH,
+ MOVE_MEGA_PUNCH,
+ MOVE_PAY_DAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_SCRATCH,
+ MOVE_VICE_GRIP,
+ MOVE_GUILLOTINE,
+ MOVE_RAZOR_WIND,
+ MOVE_SWORDS_DANCE,
+ MOVE_CUT,
+ MOVE_GUST,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_FLY,
+ MOVE_BIND,
+ MOVE_SLAM,
+ MOVE_VINE_WHIP,
+ MOVE_STOMP,
+ MOVE_DOUBLE_KICK,
+ MOVE_MEGA_KICK,
+ MOVE_JUMP_KICK,
+ MOVE_ROLLING_KICK,
+ MOVE_SAND_ATTACK,
+ MOVE_HEADBUTT,
+ MOVE_HORN_ATTACK,
+ MOVE_FURY_ATTACK,
+ MOVE_HORN_DRILL,
+ MOVE_TACKLE,
+ MOVE_BODY_SLAM,
+ MOVE_WRAP,
+ MOVE_TAKE_DOWN,
+ MOVE_THRASH,
+ MOVE_DOUBLE_EDGE,
+ MOVE_TAIL_WHIP,
+ MOVE_POISON_STING,
+ MOVE_TWINEEDLE,
+ MOVE_PIN_MISSILE,
+ MOVE_LEER,
+ MOVE_BITE,
+ MOVE_GROWL,
+ MOVE_ROAR,
+ MOVE_SING,
+ MOVE_SUPERSONIC,
+ MOVE_SONIC_BOOM,
+ MOVE_DISABLE,
+ MOVE_ACID,
+ MOVE_EMBER,
+ MOVE_FLAMETHROWER,
+ MOVE_MIST,
+ MOVE_WATER_GUN,
+ MOVE_HYDRO_PUMP,
+ MOVE_SURF,
+ MOVE_ICE_BEAM,
+ MOVE_BLIZZARD,
+ MOVE_PSYBEAM,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_HYPER_BEAM,
+ MOVE_PECK,
+ MOVE_DRILL_PECK,
+ MOVE_SUBMISSION,
+ MOVE_LOW_KICK,
+ MOVE_COUNTER,
+ MOVE_SEISMIC_TOSS,
+ MOVE_STRENGTH,
+ MOVE_ABSORB,
+ MOVE_MEGA_DRAIN,
+ MOVE_LEECH_SEED,
+ MOVE_GROWTH,
+ MOVE_RAZOR_LEAF,
+ MOVE_SOLAR_BEAM,
+ MOVE_POISON_POWDER,
+ MOVE_STUN_SPORE,
+ MOVE_SLEEP_POWDER,
+ MOVE_PETAL_DANCE,
+ MOVE_STRING_SHOT,
+ MOVE_DRAGON_RAGE,
+ MOVE_FIRE_SPIN,
+ MOVE_THUNDER_SHOCK,
+ MOVE_THUNDERBOLT,
+ MOVE_THUNDER_WAVE,
+ MOVE_THUNDER,
+ MOVE_ROCK_THROW,
+ MOVE_EARTHQUAKE,
+ MOVE_FISSURE,
+ MOVE_DIG,
+ MOVE_TOXIC,
+ MOVE_CONFUSION,
+ MOVE_PSYCHIC,
+ MOVE_HYPNOSIS,
+ MOVE_MEDITATE,
+ MOVE_AGILITY,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAGE,
+ MOVE_TELEPORT,
+ MOVE_NIGHT_SHADE,
+ MOVE_MIMIC,
+ MOVE_SCREECH,
+ MOVE_DOUBLE_TEAM,
+ MOVE_RECOVER,
+ MOVE_HARDEN,
+ MOVE_MINIMIZE,
+ MOVE_SMOKESCREEN,
+ MOVE_CONFUSE_RAY,
+ MOVE_WITHDRAW,
+ MOVE_DEFENSE_CURL,
+ MOVE_BARRIER,
+ MOVE_LIGHT_SCREEN,
+ MOVE_HAZE,
+ MOVE_REFLECT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BIDE,
+ MOVE_METRONOME,
+ MOVE_MIRROR_MOVE,
+ MOVE_SELF_DESTRUCT,
+ MOVE_EGG_BOMB,
+ MOVE_LICK,
+ MOVE_SMOG,
+ MOVE_SLUDGE,
+ MOVE_BONE_CLUB,
+ MOVE_FIRE_BLAST,
+ MOVE_WATERFALL,
+ MOVE_CLAMP,
+ MOVE_SWIFT,
+ MOVE_SKULL_BASH,
+ MOVE_SPIKE_CANNON,
+ MOVE_CONSTRICT,
+ MOVE_AMNESIA,
+ MOVE_KINESIS,
+ MOVE_SOFT_BOILED,
+ MOVE_HI_JUMP_KICK,
+ MOVE_GLARE,
+ MOVE_DREAM_EATER,
+ MOVE_POISON_GAS,
+ MOVE_BARRAGE,
+ MOVE_LEECH_LIFE,
+ MOVE_LOVELY_KISS,
+ MOVE_SKY_ATTACK,
+ MOVE_TRANSFORM,
+ MOVE_BUBBLE,
+ MOVE_DIZZY_PUNCH,
+ MOVE_SPORE,
+ MOVE_FLASH,
+ MOVE_PSYWAVE,
+ MOVE_SPLASH,
+ MOVE_ACID_ARMOR,
+ MOVE_CRABHAMMER,
+ MOVE_EXPLOSION,
+ MOVE_FURY_SWIPES,
+ MOVE_BONEMERANG,
+ MOVE_REST,
+ MOVE_ROCK_SLIDE,
+ MOVE_HYPER_FANG,
+ MOVE_SHARPEN,
+ MOVE_CONVERSION,
+ MOVE_TRI_ATTACK,
+ MOVE_SUPER_FANG,
+ MOVE_SLASH,
+ MOVE_SUBSTITUTE,
+ MOVE_STRUGGLE,
+ MOVE_SKETCH,
+ MOVE_TRIPLE_KICK,
+ MOVE_THIEF,
+ MOVE_SPIDER_WEB,
+ MOVE_MIND_READER,
+ MOVE_NIGHTMARE,
+ MOVE_FLAME_WHEEL,
+ MOVE_SNORE,
+ MOVE_CURSE,
+ MOVE_FLAIL,
+ MOVE_CONVERSION_2,
+ MOVE_AEROBLAST,
+ MOVE_COTTON_SPORE,
+ MOVE_REVERSAL,
+ MOVE_SPITE,
+ MOVE_POWDER_SNOW,
+ MOVE_PROTECT,
+ MOVE_MACH_PUNCH,
+ MOVE_SCARY_FACE,
+ MOVE_FAINT_ATTACK,
+ MOVE_SWEET_KISS,
+ MOVE_BELLY_DRUM,
+ MOVE_SLUDGE_BOMB,
+ MOVE_MUD_SLAP,
+ MOVE_OCTAZOOKA,
+ MOVE_SPIKES,
+ MOVE_ZAP_CANNON,
+ MOVE_FORESIGHT,
+ MOVE_DESTINY_BOND,
+ MOVE_PERISH_SONG,
+ MOVE_ICY_WIND,
+ MOVE_DETECT,
+ MOVE_BONE_RUSH,
+ MOVE_LOCK_ON,
+ MOVE_OUTRAGE,
+ MOVE_SANDSTORM,
+ MOVE_GIGA_DRAIN,
+ MOVE_ENDURE,
+ MOVE_CHARM,
+ MOVE_ROLLOUT,
+ MOVE_FALSE_SWIPE,
+ MOVE_SWAGGER,
+ MOVE_MILK_DRINK,
+ MOVE_SPARK,
+ MOVE_FURY_CUTTER,
+ MOVE_STEEL_WING,
+ MOVE_MEAN_LOOK,
+ MOVE_ATTRACT,
+ MOVE_SLEEP_TALK,
+ MOVE_HEAL_BELL,
+ MOVE_RETURN,
+ MOVE_PRESENT,
+ MOVE_FRUSTRATION,
+ MOVE_SAFEGUARD,
+ MOVE_PAIN_SPLIT,
+ MOVE_SACRED_FIRE,
+ MOVE_MAGNITUDE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_MEGAHORN,
+ MOVE_DRAGON_BREATH,
+ MOVE_BATON_PASS,
+ MOVE_ENCORE,
+ MOVE_PURSUIT,
+ MOVE_RAPID_SPIN,
+ MOVE_SWEET_SCENT,
+ MOVE_IRON_TAIL,
+ MOVE_METAL_CLAW,
+ MOVE_VITAL_THROW,
+ MOVE_MORNING_SUN,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_HIDDEN_POWER,
+ MOVE_CROSS_CHOP,
+ MOVE_TWISTER,
+ MOVE_RAIN_DANCE,
+ MOVE_SUNNY_DAY,
+ MOVE_CRUNCH,
+ MOVE_MIRROR_COAT,
+ MOVE_PSYCH_UP,
+ MOVE_EXTREME_SPEED,
+ MOVE_ANCIENT_POWER,
+ MOVE_SHADOW_BALL,
+ MOVE_FUTURE_SIGHT,
+ MOVE_ROCK_SMASH,
+ MOVE_WHIRLPOOL,
+ MOVE_BEAT_UP,
+ MOVE_FAKE_OUT,
+ MOVE_UPROAR,
+ MOVE_STOCKPILE,
+ MOVE_SPIT_UP,
+ MOVE_SWALLOW,
+ MOVE_HEAT_WAVE,
+ MOVE_HAIL,
+ MOVE_TORMENT,
+ MOVE_FLATTER,
+ MOVE_WILL_O_WISP,
+ MOVE_MEMENTO,
+ MOVE_FACADE,
+ MOVE_FOCUS_PUNCH,
+ MOVE_SMELLING_SALT,
+ MOVE_FOLLOW_ME,
+ MOVE_NATURE_POWER,
+ MOVE_CHARGE,
+ MOVE_TAUNT,
+ MOVE_HELPING_HAND,
+ MOVE_TRICK,
+ MOVE_ROLE_PLAY,
+ MOVE_WISH,
+ MOVE_ASSIST,
+ MOVE_INGRAIN,
+ MOVE_SUPERPOWER,
+ MOVE_MAGIC_COAT,
+ MOVE_RECYCLE,
+ MOVE_REVENGE,
+ MOVE_BRICK_BREAK,
+ MOVE_YAWN,
+ MOVE_KNOCK_OFF,
+ MOVE_ENDEAVOR,
+ MOVE_ERUPTION,
+ MOVE_SKILL_SWAP,
+ MOVE_IMPRISON,
+ MOVE_REFRESH,
+ MOVE_GRUDGE,
+ MOVE_SNATCH,
+ MOVE_SECRET_POWER,
+ MOVE_DIVE,
+ MOVE_ARM_THRUST,
+ MOVE_CAMOUFLAGE,
+ MOVE_TAIL_GLOW,
+ MOVE_LUSTER_PURGE,
+ MOVE_MIST_BALL,
+ MOVE_FEATHER_DANCE,
+ MOVE_TEETER_DANCE,
+ MOVE_BLAZE_KICK,
+ MOVE_MUD_SPORT,
+ MOVE_ICE_BALL,
+ MOVE_NEEDLE_ARM,
+ MOVE_SLACK_OFF,
+ MOVE_HYPER_VOICE,
+ MOVE_POISON_FANG,
+ MOVE_CRUSH_CLAW,
+ MOVE_BLAST_BURN,
+ MOVE_HYDRO_CANNON,
+ MOVE_METEOR_MASH,
+ MOVE_ASTONISH,
+ MOVE_WEATHER_BALL,
+ MOVE_AROMATHERAPY,
+ MOVE_FAKE_TEARS,
+ MOVE_AIR_CUTTER,
+ MOVE_OVERHEAT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_ROCK_TOMB,
+ MOVE_SILVER_WIND,
+ MOVE_METAL_SOUND,
+ MOVE_GRASS_WHISTLE,
+ MOVE_TICKLE,
+ MOVE_COSMIC_POWER,
+ MOVE_WATER_SPOUT,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXTRASENSORY,
+ MOVE_SKY_UPPERCUT,
+ MOVE_SAND_TOMB,
+ MOVE_SHEER_COLD,
+ MOVE_MUDDY_WATER,
+ MOVE_BULLET_SEED,
+ MOVE_AERIAL_ACE,
+ MOVE_ICICLE_SPEAR,
+ MOVE_IRON_DEFENSE,
+ MOVE_BLOCK,
+ MOVE_HOWL,
+ MOVE_DRAGON_CLAW,
+ MOVE_FRENZY_PLANT,
+ MOVE_BULK_UP,
+ MOVE_BOUNCE,
+ MOVE_MUD_SHOT,
+ MOVE_POISON_TAIL,
+ MOVE_COVET,
+ MOVE_VOLT_TACKLE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_WATER_SPORT,
+ MOVE_CALM_MIND,
+ MOVE_LEAF_BLADE,
+ MOVE_DRAGON_DANCE,
+ MOVE_ROCK_BLAST,
+ MOVE_SHOCK_WAVE,
+ MOVE_WATER_PULSE,
+ MOVE_DOOM_DESIRE,
+ MOVE_PSYCHO_BOOST,
+};
+
+#endif // GUARD_MOVES_H \ No newline at end of file
diff --git a/include/name_string_util.h b/include/name_string_util.h
new file mode 100644
index 000000000..110f8cc22
--- /dev/null
+++ b/include/name_string_util.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_NAMESTRINGUTIL_H
+#define GUARD_NAMESTRINGUTIL_H
+
+void PadNameString(u8 *a1, u8 a2);
+void SanitizeNameString(u8 *a1);
+
+#endif
diff --git a/include/naming_screen.h b/include/naming_screen.h
new file mode 100644
index 000000000..b6b464538
--- /dev/null
+++ b/include/naming_screen.h
@@ -0,0 +1,83 @@
+#ifndef GUARD_NAMINGSCREEN_H
+#define GUARD_NAMINGSCREEN_H
+
+#define KBEVENT_NONE 0
+#define KBEVENT_PRESSED_A 5
+#define KBEVENT_PRESSED_B 6
+#define KBEVENT_PRESSED_SELECT 8
+#define KBEVENT_PRESSED_START 9
+
+enum
+{
+ NAMING_SCREEN_TEMPLATE_PLAYER_NAME,
+ NAMING_SCREEN_TEMPLATE_BOX_NAME,
+ NAMING_SCREEN_TEMPLATE_MON_NAME,
+};
+
+struct NamingScreenTemplate
+{
+ u8 unk0;
+ u8 maxChars;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4; //mode?
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ const u8 *title;
+};
+
+struct NamingScreenData
+{
+ /*0x00*/ u8 state;
+ /*0x01*/ u8 templateNum;
+ /*0x02*/ u16 unk2;
+ /*0x04*/ u16 bg1vOffset;
+ /*0x06*/ u16 bg2vOffset;
+ /*0x08*/ u16 unk8;
+ /*0x0A*/ u16 unkA;
+ /*0x0C*/ u8 unkC;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 currentPage;
+ /*0x0F*/ u8 cursorSpriteId;
+ /*0x10*/ u8 unk10;
+ /*0x11*/ u8 textBuffer[0x10];
+ /*0x21*/ u8 filler21[0x13];
+ const struct NamingScreenTemplate *template;
+ /*0x38*/ u8 *destBuffer;
+ /*0x3C*/ u16 unk3C; //savedKeyRepeatStartDelay
+ /*0x3E*/ u16 unk3E;
+ /*0x40*/ u16 unk40;
+ /*0x42*/ u32 unk42;
+ /*0x46*/ MainCallback returnCallback;
+};
+
+enum
+{
+ PAGE_UPPER,
+ PAGE_LOWER,
+ PAGE_OTHERS,
+};
+
+enum
+{
+ MAIN_STATE_BEGIN_FADE_IN,
+ MAIN_STATE_WAIT_FADE_IN,
+ MAIN_STATE_HANDLE_INPUT,
+ MAIN_STATE_MOVE_TO_OK_BUTTON,
+ MAIN_STATE_START_PAGE_SWAP,
+ MAIN_STATE_WAIT_PAGE_SWAP,
+ MAIN_STATE_6,
+ MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE,
+ MAIN_STATE_BEGIN_FADE_OUT,
+};
+
+enum
+{
+ INPUT_STATE_DISABLED,
+ INPUT_STATE_ENABLED,
+};
+
+void DoNamingScreen(u8 r0, u8 *r1, u16 r2, u16 r3, u32 s0, MainCallback s4);
+
+#endif
diff --git a/include/opponent_constants.h b/include/opponent_constants.h
new file mode 100644
index 000000000..1829facaa
--- /dev/null
+++ b/include/opponent_constants.h
@@ -0,0 +1,702 @@
+#ifndef GUARD_OPPONENT_CONSTANTS_H
+#define GUARD_OPPONENT_CONSTANTS_H
+
+enum
+{
+ OPPONENT_NONE,
+ OPPONENT_ARCHIE_1,
+ OPPONENT_GRUNT_1,
+ OPPONENT_GRUNT_2,
+ OPPONENT_GRUNT_3,
+ OPPONENT_GRUNT_4,
+ OPPONENT_GRUNT_5,
+ OPPONENT_GRUNT_6,
+ OPPONENT_GRUNT_7,
+ OPPONENT_GRUNT_8,
+ OPPONENT_GRUNT_9,
+ OPPONENT_GRUNT_10,
+ OPPONENT_GRUNT_11,
+ OPPONENT_GRUNT_12,
+ OPPONENT_GRUNT_13,
+ OPPONENT_GRUNT_14,
+ OPPONENT_GRUNT_15,
+ OPPONENT_GRUNT_16,
+ OPPONENT_GRUNT_17,
+ OPPONENT_GRUNT_18,
+ OPPONENT_GRUNT_19,
+ OPPONENT_GRUNT_20,
+ OPPONENT_GRUNT_21,
+ OPPONENT_GRUNT_22,
+ OPPONENT_GRUNT_23,
+ OPPONENT_GRUNT_24,
+ OPPONENT_GRUNT_25,
+ OPPONENT_GRUNT_26,
+ OPPONENT_GRUNT_27,
+ OPPONENT_ANONYMOUS_1,
+ OPPONENT_MATT_1,
+ OPPONENT_MATT_2,
+ OPPONENT_SHELLY_1,
+ OPPONENT_SHELLY_2,
+ OPPONENT_ARCHIE_2,
+ OPPONENT_ARCHIE_3,
+ OPPONENT_DAISY,
+ OPPONENT_ROSE_1,
+ OPPONENT_LILY,
+ OPPONENT_VIOLET,
+ OPPONENT_ROSE_2,
+ OPPONENT_ROSE_3,
+ OPPONENT_ROSE_4,
+ OPPONENT_ROSE_5,
+ OPPONENT_DUSTY_1,
+ OPPONENT_CHIP,
+ OPPONENT_FOSTER,
+ OPPONENT_DUSTY_2,
+ OPPONENT_DUSTY_3,
+ OPPONENT_DUSTY_4,
+ OPPONENT_DUSTY_5,
+ OPPONENT_GABBY_AND_TY_1,
+ OPPONENT_GABBY_AND_TY_2,
+ OPPONENT_GABBY_AND_TY_3,
+ OPPONENT_GABBY_AND_TY_4,
+ OPPONENT_GABBY_AND_TY_5,
+ OPPONENT_GABBY_AND_TY_6,
+ OPPONENT_LOLA_1,
+ OPPONENT_CARMEN,
+ OPPONENT_GWEN,
+ OPPONENT_LOLA_2,
+ OPPONENT_LOLA_3,
+ OPPONENT_LOLA_4,
+ OPPONENT_LOLA_5,
+ OPPONENT_RICKY_1,
+ OPPONENT_SIMON,
+ OPPONENT_CHARLIE,
+ OPPONENT_RICKY_2,
+ OPPONENT_RICKY_3,
+ OPPONENT_RICKY_4,
+ OPPONENT_RICKY_5,
+ OPPONENT_RANDALL,
+ OPPONENT_PARKER,
+ OPPONENT_GEORGE,
+ OPPONENT_BERKE,
+ OPPONENT_CLYDE,
+ OPPONENT_VINCENT,
+ OPPONENT_LEROY,
+ OPPONENT_WILTON_1,
+ OPPONENT_EDGAR,
+ OPPONENT_ALBERT,
+ OPPONENT_SAMUEL,
+ OPPONENT_VITO,
+ OPPONENT_OWEN,
+ OPPONENT_WILTON_2,
+ OPPONENT_WILTON_3,
+ OPPONENT_WILTON_4,
+ OPPONENT_WILTON_5,
+ OPPONENT_WARREN,
+ OPPONENT_MARY,
+ OPPONENT_LORI,
+ OPPONENT_JODY,
+ OPPONENT_WENDY,
+ OPPONENT_ELAINE,
+ OPPONENT_BROOKE_1,
+ OPPONENT_JENNIFER,
+ OPPONENT_HOPE,
+ OPPONENT_SHANNON,
+ OPPONENT_MICHELLE,
+ OPPONENT_CAROLINE,
+ OPPONENT_JULIE,
+ OPPONENT_BROOKE_2,
+ OPPONENT_BROOKE_3,
+ OPPONENT_BROOKE_4,
+ OPPONENT_BROOKE_5,
+ OPPONENT_PATRICIA,
+ OPPONENT_KINDRA,
+ OPPONENT_TAMMY,
+ OPPONENT_VALERIE_1,
+ OPPONENT_TASHA,
+ OPPONENT_VALERIE_2,
+ OPPONENT_VALERIE_3,
+ OPPONENT_VALERIE_4,
+ OPPONENT_VALERIE_5,
+ OPPONENT_CINDY_1,
+ OPPONENT_ANONYMOUS_2,
+ OPPONENT_BRIANNA_1,
+ OPPONENT_CINDY_2,
+ OPPONENT_BRIANNA_2,
+ OPPONENT_ANETTE,
+ OPPONENT_CINDY_3,
+ OPPONENT_CINDY_4,
+ OPPONENT_CINDY_5,
+ OPPONENT_CINDY_6,
+ OPPONENT_MELISSA,
+ OPPONENT_SHEILA,
+ OPPONENT_SHIRLEY,
+ OPPONENT_JESSICA_1,
+ OPPONENT_CONNIE,
+ OPPONENT_BRIDGET,
+ OPPONENT_OLIVIA,
+ OPPONENT_TIFFANY,
+ OPPONENT_JESSICA_2,
+ OPPONENT_JESSICA_3,
+ OPPONENT_JESSICA_4,
+ OPPONENT_JESSICA_5,
+ OPPONENT_WINSTON_1,
+ OPPONENT_ANONYMOUS_3,
+ OPPONENT_GARRET,
+ OPPONENT_WINSTON_2,
+ OPPONENT_WINSTON_3,
+ OPPONENT_WINSTON_4,
+ OPPONENT_WINSTON_5,
+ OPPONENT_STEVE_1,
+ OPPONENT_CHRIS,
+ OPPONENT_MARK,
+ OPPONENT_KENN,
+ OPPONENT_STEVE_2,
+ OPPONENT_STEVE_3,
+ OPPONENT_STEVE_4,
+ OPPONENT_STEVE_5,
+ OPPONENT_LUIS,
+ OPPONENT_AUSTIN,
+ OPPONENT_DOUGLAS,
+ OPPONENT_DARRIN,
+ OPPONENT_TONY_1,
+ OPPONENT_JEROME,
+ OPPONENT_MATTHEW,
+ OPPONENT_DAVID,
+ OPPONENT_SPENCER,
+ OPPONENT_ROLAND,
+ OPPONENT_CODY,
+ OPPONENT_STAN,
+ OPPONENT_BARRY,
+ OPPONENT_DEAN,
+ OPPONENT_RODNEY,
+ OPPONENT_RICHARD,
+ OPPONENT_HERMAN,
+ OPPONENT_ANONYMOUS_4,
+ OPPONENT_GILBERT,
+ OPPONENT_FRANKLIN,
+ OPPONENT_DANNY,
+ OPPONENT_JACK,
+ OPPONENT_DUDLEY,
+ OPPONENT_CHAD,
+ OPPONENT_TONY_2,
+ OPPONENT_TONY_3,
+ OPPONENT_TONY_4,
+ OPPONENT_TONY_5,
+ OPPONENT_HIDEKI,
+ OPPONENT_HITOSHI,
+ OPPONENT_KIYO,
+ OPPONENT_KOICHI,
+ OPPONENT_NOB_1,
+ OPPONENT_NOB_2,
+ OPPONENT_NOB_3,
+ OPPONENT_NOB_4,
+ OPPONENT_NOB_5,
+ OPPONENT_YUJI,
+ OPPONENT_DAISUKE,
+ OPPONENT_ATSUSHI,
+ OPPONENT_KIRK,
+ OPPONENT_SCOTT,
+ OPPONENT_HARVEY,
+ OPPONENT_SHAWN,
+ OPPONENT_RANDY,
+ OPPONENT_DALTON_1,
+ OPPONENT_DALTON_2,
+ OPPONENT_DALTON_3,
+ OPPONENT_DALTON_4,
+ OPPONENT_DALTON_5,
+ OPPONENT_COLE,
+ OPPONENT_FLINT,
+ OPPONENT_AXLE,
+ OPPONENT_JAKE,
+ OPPONENT_ANDY,
+ OPPONENT_BERNIE_1,
+ OPPONENT_BERNIE_2,
+ OPPONENT_BERNIE_3,
+ OPPONENT_BERNIE_4,
+ OPPONENT_BERNIE_5,
+ OPPONENT_DREW,
+ OPPONENT_CLIFF,
+ OPPONENT_LARRY,
+ OPPONENT_SHANE,
+ OPPONENT_JUSTIN,
+ OPPONENT_ETHAN_1,
+ OPPONENT_JEFF,
+ OPPONENT_TRAVIS,
+ OPPONENT_ETHAN_2,
+ OPPONENT_ETHAN_3,
+ OPPONENT_ETHAN_4,
+ OPPONENT_ETHAN_5,
+ OPPONENT_BRENT,
+ OPPONENT_DONALD,
+ OPPONENT_TAYLOR,
+ OPPONENT_BRANDON_1,
+ OPPONENT_DEREK,
+ OPPONENT_BRANDON_2,
+ OPPONENT_BRANDON_3,
+ OPPONENT_BRANDON_4,
+ OPPONENT_BRANDON_5,
+ OPPONENT_EDWARD,
+ OPPONENT_PRESTON,
+ OPPONENT_VIRGIL,
+ OPPONENT_FRITZ,
+ OPPONENT_WILLIAM,
+ OPPONENT_JOSHUA,
+ OPPONENT_CAMERON_1,
+ OPPONENT_CAMERON_2,
+ OPPONENT_CAMERON_3,
+ OPPONENT_CAMERON_4,
+ OPPONENT_CAMERON_5,
+ OPPONENT_JACLYN,
+ OPPONENT_HANNAH,
+ OPPONENT_SAMANTHA,
+ OPPONENT_MAURA,
+ OPPONENT_KAYLA,
+ OPPONENT_ALEXIS,
+ OPPONENT_JACKI_1,
+ OPPONENT_JACKI_2,
+ OPPONENT_JACKI_3,
+ OPPONENT_JACKI_4,
+ OPPONENT_JACKI_5,
+ OPPONENT_WALTER_1,
+ OPPONENT_TUCKER,
+ OPPONENT_THOMAS,
+ OPPONENT_WALTER_2,
+ OPPONENT_WALTER_3,
+ OPPONENT_WALTER_4,
+ OPPONENT_WALTER_5,
+ OPPONENT_SIDNEY,
+ OPPONENT_PHOEBE,
+ OPPONENT_GLACIA,
+ OPPONENT_DRAKE,
+ OPPONENT_ROXANNE,
+ OPPONENT_BRAWLY,
+ OPPONENT_WATTSON,
+ OPPONENT_FLANNERY,
+ OPPONENT_NORMAN,
+ OPPONENT_WINONA,
+ OPPONENT_TATE_AND_LIZA,
+ OPPONENT_WALLACE,
+ OPPONENT_JERRY_1,
+ OPPONENT_TED,
+ OPPONENT_PAUL,
+ OPPONENT_JERRY_2,
+ OPPONENT_JERRY_3,
+ OPPONENT_JERRY_4,
+ OPPONENT_JERRY_5,
+ OPPONENT_KAREN_1,
+ OPPONENT_GEORGIA,
+ OPPONENT_KAREN_2,
+ OPPONENT_KAREN_3,
+ OPPONENT_KAREN_4,
+ OPPONENT_KAREN_5,
+ OPPONENT_KATE_AND_JOY,
+ OPPONENT_ANNA_AND_MEG_1,
+ OPPONENT_ANNA_AND_MEG_2,
+ OPPONENT_ANNA_AND_MEG_3,
+ OPPONENT_ANNA_AND_MEG_4,
+ OPPONENT_ANNA_AND_MEG_5,
+ OPPONENT_VICTOR,
+ OPPONENT_MIGUEL_1,
+ OPPONENT_COLTON,
+ OPPONENT_MIGUEL_2,
+ OPPONENT_MIGUEL_3,
+ OPPONENT_MIGUEL_4,
+ OPPONENT_MIGUEL_5,
+ OPPONENT_VICTORIA,
+ OPPONENT_VANESSA,
+ OPPONENT_MARISSA,
+ OPPONENT_ISABEL_1,
+ OPPONENT_ISABEL_2,
+ OPPONENT_ISABEL_3,
+ OPPONENT_ISABEL_4,
+ OPPONENT_ISABEL_5,
+ OPPONENT_TIMOTHY_1,
+ OPPONENT_TIMOTHY_2,
+ OPPONENT_TIMOTHY_3,
+ OPPONENT_TIMOTHY_4,
+ OPPONENT_TIMOTHY_5,
+ OPPONENT_VICKY,
+ OPPONENT_SHELBY_1,
+ OPPONENT_SHELBY_2,
+ OPPONENT_SHELBY_3,
+ OPPONENT_SHELBY_4,
+ OPPONENT_SHELBY_5,
+ OPPONENT_CALVIN_1,
+ OPPONENT_BILLY,
+ OPPONENT_JOSH,
+ OPPONENT_TOMMY,
+ OPPONENT_JOEY,
+ OPPONENT_BEN,
+ OPPONENT_ANONYMOUS_5,
+ OPPONENT_KEVIN,
+ OPPONENT_NEAL,
+ OPPONENT_DILLON,
+ OPPONENT_CALVIN_2,
+ OPPONENT_CALVIN_3,
+ OPPONENT_CALVIN_4,
+ OPPONENT_CALVIN_5,
+ OPPONENT_EDDIE,
+ OPPONENT_ALLEN,
+ OPPONENT_TIMMY,
+ OPPONENT_STEVEN,
+ OPPONENT_ANDREW,
+ OPPONENT_IVAN,
+ OPPONENT_CLAUDE,
+ OPPONENT_ELLIOT_1,
+ OPPONENT_NED,
+ OPPONENT_DALE,
+ OPPONENT_NOLAN,
+ OPPONENT_BARNY,
+ OPPONENT_WADE,
+ OPPONENT_CARTER,
+ OPPONENT_ELLIOT_2,
+ OPPONENT_ELLIOT_3,
+ OPPONENT_ELLIOT_4,
+ OPPONENT_ELLIOT_5,
+ OPPONENT_RONALD,
+ OPPONENT_JACOB,
+ OPPONENT_ANTHONY,
+ OPPONENT_BENJAMIN_1,
+ OPPONENT_BENJAMIN_2,
+ OPPONENT_BENJAMIN_3,
+ OPPONENT_BENJAMIN_4,
+ OPPONENT_BENJAMIN_5,
+ OPPONENT_ABIGAIL_1,
+ OPPONENT_JASMINE,
+ OPPONENT_ABIGAIL_2,
+ OPPONENT_ABIGAIL_3,
+ OPPONENT_ABIGAIL_4,
+ OPPONENT_ABIGAIL_5,
+ OPPONENT_DYLAN_1,
+ OPPONENT_DYLAN_2,
+ OPPONENT_DYLAN_3,
+ OPPONENT_DYLAN_4,
+ OPPONENT_DYLAN_5,
+ OPPONENT_MARIA_1,
+ OPPONENT_MARIA_2,
+ OPPONENT_MARIA_3,
+ OPPONENT_MARIA_4,
+ OPPONENT_MARIA_5,
+ OPPONENT_CALEB,
+ OPPONENT_ANONYMOUS_6,
+ OPPONENT_ISAIAH_1,
+ OPPONENT_ANONYMOUS_7,
+ OPPONENT_CHASE,
+ OPPONENT_ISAIAH_2,
+ OPPONENT_ISAIAH_3,
+ OPPONENT_ISAIAH_4,
+ OPPONENT_ISAIAH_5,
+ OPPONENT_ANONYMOUS_8,
+ OPPONENT_CONNOR,
+ OPPONENT_ANONYMOUS_9,
+ OPPONENT_KATELYN_1,
+ OPPONENT_ALLISON,
+ OPPONENT_KATELYN_2,
+ OPPONENT_KATELYN_3,
+ OPPONENT_KATELYN_4,
+ OPPONENT_KATELYN_5,
+ OPPONENT_NICOLAS_1,
+ OPPONENT_NICOLAS_2,
+ OPPONENT_NICOLAS_3,
+ OPPONENT_NICOLAS_4,
+ OPPONENT_NICOLAS_5,
+ OPPONENT_AARON,
+ OPPONENT_PERRY,
+ OPPONENT_HUGH,
+ OPPONENT_PHIL,
+ OPPONENT_JARED,
+ OPPONENT_ANONYMOUS_10,
+ OPPONENT_TANNER,
+ OPPONENT_WILL,
+ OPPONENT_COLIN,
+ OPPONENT_ROBERT_1,
+ OPPONENT_BENNY,
+ OPPONENT_CHESTER,
+ OPPONENT_ROBERT_2,
+ OPPONENT_ROBERT_3,
+ OPPONENT_ROBERT_4,
+ OPPONENT_ROBERT_5,
+ OPPONENT_ALEX,
+ OPPONENT_BECK,
+ OPPONENT_YASU,
+ OPPONENT_TAKASHI,
+ OPPONENT_MAKOTO,
+ OPPONENT_HIDEO_1,
+ OPPONENT_LAO_1,
+ OPPONENT_LUNG,
+ OPPONENT_LAO_2,
+ OPPONENT_LAO_3,
+ OPPONENT_LAO_4,
+ OPPONENT_LAO_5,
+ OPPONENT_TESSA,
+ OPPONENT_LAURA,
+ OPPONENT_CYNDY_1,
+ OPPONENT_CORA,
+ OPPONENT_JILL,
+ OPPONENT_CYNDY_2,
+ OPPONENT_CYNDY_3,
+ OPPONENT_CYNDY_4,
+ OPPONENT_CYNDY_5,
+ OPPONENT_MADELINE_1,
+ OPPONENT_CLARISSA,
+ OPPONENT_ANGELICA,
+ OPPONENT_MADELINE_2,
+ OPPONENT_MADELINE_3,
+ OPPONENT_MADELINE_4,
+ OPPONENT_MADELINE_5,
+ OPPONENT_BEVERLY,
+ OPPONENT_DAWN,
+ OPPONENT_NICOLE,
+ OPPONENT_DENISE,
+ OPPONENT_BETH,
+ OPPONENT_TARA,
+ OPPONENT_MISSY,
+ OPPONENT_ALICE,
+ OPPONENT_JENNY_1,
+ OPPONENT_GRACE,
+ OPPONENT_TANYA,
+ OPPONENT_SHARON,
+ OPPONENT_NIKKI,
+ OPPONENT_BRENDA,
+ OPPONENT_KATIE,
+ OPPONENT_SUSIE,
+ OPPONENT_KARA,
+ OPPONENT_DANA,
+ OPPONENT_ERIN,
+ OPPONENT_DEBRA,
+ OPPONENT_LINDA,
+ OPPONENT_KAYLEE,
+ OPPONENT_LAUREL,
+ OPPONENT_DARCY,
+ OPPONENT_JENNY_2,
+ OPPONENT_JENNY_3,
+ OPPONENT_JENNY_4,
+ OPPONENT_JENNY_5,
+ OPPONENT_HEIDI,
+ OPPONENT_BECKY,
+ OPPONENT_CAROL,
+ OPPONENT_NANCY,
+ OPPONENT_MARTHA,
+ OPPONENT_DIANA_1,
+ OPPONENT_NINA,
+ OPPONENT_IRENE,
+ OPPONENT_DIANA_2,
+ OPPONENT_DIANA_3,
+ OPPONENT_DIANA_4,
+ OPPONENT_DIANA_5,
+ OPPONENT_AMY_AND_LIV_1,
+ OPPONENT_AMY_AND_LIV_2,
+ OPPONENT_GINA_AND_MIA_1,
+ OPPONENT_MIU_AND_YUKI,
+ OPPONENT_AMY_AND_LIV_3,
+ OPPONENT_GINA_AND_MIA_2,
+ OPPONENT_AMY_AND_LIV_4,
+ OPPONENT_AMY_AND_LIV_5,
+ OPPONENT_AMY_AND_LIV_6,
+ OPPONENT_HUEY,
+ OPPONENT_EDMOND,
+ OPPONENT_ERNEST_1,
+ OPPONENT_DWAYNE,
+ OPPONENT_PHILLIP,
+ OPPONENT_LEONARD,
+ OPPONENT_DUNCAN,
+ OPPONENT_ERNEST_2,
+ OPPONENT_ERNEST_3,
+ OPPONENT_ERNEST_4,
+ OPPONENT_ERNEST_5,
+ OPPONENT_ANONYMOUS_11,
+ OPPONENT_ANONYMOUS_12,
+ OPPONENT_ANONYMOUS_13,
+ OPPONENT_SONNY,
+ OPPONENT_DONOVAN,
+ OPPONENT_GERALD,
+ OPPONENT_KELVIN,
+ OPPONENT_KODY,
+ OPPONENT_TEVIN,
+ OPPONENT_DAMON,
+ OPPONENT_PABLO,
+ OPPONENT_EDWIN_1,
+ OPPONENT_HECTOR_1,
+ OPPONENT_HECTOR_2,
+ OPPONENT_EDWIN_2,
+ OPPONENT_EDWIN_3,
+ OPPONENT_EDWIN_4,
+ OPPONENT_EDWIN_5,
+ OPPONENT_WALLY_1,
+ OPPONENT_BRENDAN_1,
+ OPPONENT_BRENDAN_2,
+ OPPONENT_BRENDAN_3,
+ OPPONENT_BRENDAN_4,
+ OPPONENT_BRENDAN_5,
+ OPPONENT_BRENDAN_6,
+ OPPONENT_BRENDAN_7,
+ OPPONENT_BRENDAN_8,
+ OPPONENT_BRENDAN_9,
+ OPPONENT_MAY_1,
+ OPPONENT_MAY_2,
+ OPPONENT_MAY_3,
+ OPPONENT_MAY_4,
+ OPPONENT_MAY_5,
+ OPPONENT_MAY_6,
+ OPPONENT_MAY_7,
+ OPPONENT_MAY_8,
+ OPPONENT_MAY_9,
+ OPPONENT_ISAAC_1,
+ OPPONENT_RILEY,
+ OPPONENT_AIDAN,
+ OPPONENT_ISAAC_2,
+ OPPONENT_ISAAC_3,
+ OPPONENT_ISAAC_4,
+ OPPONENT_ISAAC_5,
+ OPPONENT_LYDIA_1,
+ OPPONENT_ALEXIA,
+ OPPONENT_DANIELLE,
+ OPPONENT_LYDIA_2,
+ OPPONENT_LYDIA_3,
+ OPPONENT_LYDIA_4,
+ OPPONENT_LYDIA_5,
+ OPPONENT_JACKSON_1,
+ OPPONENT_CARLOS,
+ OPPONENT_SEBASTIAN,
+ OPPONENT_JACKSON_2,
+ OPPONENT_JACKSON_3,
+ OPPONENT_JACKSON_4,
+ OPPONENT_JACKSON_5,
+ OPPONENT_CATHERINE_1,
+ OPPONENT_JENNA,
+ OPPONENT_SOPHIA,
+ OPPONENT_CATHERINE_2,
+ OPPONENT_CATHERINE_3,
+ OPPONENT_CATHERINE_4,
+ OPPONENT_CATHERINE_5,
+ OPPONENT_MAXIE_1,
+ OPPONENT_GRUNT_28,
+ OPPONENT_GRUNT_29,
+ OPPONENT_GRUNT_30,
+ OPPONENT_GRUNT_31,
+ OPPONENT_GRUNT_32,
+ OPPONENT_GRUNT_33,
+ OPPONENT_GRUNT_34,
+ OPPONENT_GRUNT_35,
+ OPPONENT_GRUNT_36,
+ OPPONENT_GRUNT_37,
+ OPPONENT_GRUNT_38,
+ OPPONENT_GRUNT_39,
+ OPPONENT_GRUNT_40,
+ OPPONENT_GRUNT_41,
+ OPPONENT_GRUNT_42,
+ OPPONENT_GRUNT_43,
+ OPPONENT_GRUNT_44,
+ OPPONENT_GRUNT_45,
+ OPPONENT_GRUNT_46,
+ OPPONENT_GRUNT_47,
+ OPPONENT_GRUNT_48,
+ OPPONENT_GRUNT_49,
+ OPPONENT_GRUNT_50,
+ OPPONENT_GRUNT_51,
+ OPPONENT_GRUNT_52,
+ OPPONENT_GRUNT_53,
+ OPPONENT_GRUNT_54,
+ OPPONENT_ANONYMOUS_14,
+ OPPONENT_ANONYMOUS_15,
+ OPPONENT_TABITHA_1,
+ OPPONENT_TABITHA_2,
+ OPPONENT_ANONYMOUS_16,
+ OPPONENT_COURTNEY_1,
+ OPPONENT_COURTNEY_2,
+ OPPONENT_MAXIE_2,
+ OPPONENT_MAXIE_3,
+ OPPONENT_TIANA,
+ OPPONENT_HALEY_1,
+ OPPONENT_JANICE,
+ OPPONENT_VIVI,
+ OPPONENT_HALEY_2,
+ OPPONENT_HALEY_3,
+ OPPONENT_HALEY_4,
+ OPPONENT_HALEY_5,
+ OPPONENT_SALLY,
+ OPPONENT_ROBIN,
+ OPPONENT_ANDREA,
+ OPPONENT_CRISSY,
+ OPPONENT_RICK,
+ OPPONENT_LYLE,
+ OPPONENT_JOSE,
+ OPPONENT_DOUG,
+ OPPONENT_GREG,
+ OPPONENT_KENT,
+ OPPONENT_JAMES_1,
+ OPPONENT_JAMES_2,
+ OPPONENT_JAMES_3,
+ OPPONENT_JAMES_4,
+ OPPONENT_JAMES_5,
+ OPPONENT_BRICE,
+ OPPONENT_TRENT_1,
+ OPPONENT_LENNY,
+ OPPONENT_LUCAS_1,
+ OPPONENT_ALAN,
+ OPPONENT_CLARK,
+ OPPONENT_ERIC,
+ OPPONENT_LUCAS_2,
+ OPPONENT_MIKE_1,
+ OPPONENT_MIKE_2,
+ OPPONENT_TRENT_2,
+ OPPONENT_TRENT_3,
+ OPPONENT_TRENT_4,
+ OPPONENT_TRENT_5,
+ OPPONENT_DEZ_AND_LUKE,
+ OPPONENT_LEA_AND_JED,
+ OPPONENT_LOIS_AND_HAL_1,
+ OPPONENT_LOIS_AND_HAL_2,
+ OPPONENT_LOIS_AND_HAL_3,
+ OPPONENT_LOIS_AND_HAL_4,
+ OPPONENT_LOIS_AND_HAL_5,
+ OPPONENT_JOHANNA,
+ OPPONENT_ZANE,
+ OPPONENT_VIVIAN,
+ OPPONENT_SADIE,
+ OPPONENT_HIDEO_2,
+ OPPONENT_KEIGO,
+ OPPONENT_TSUNAO,
+ OPPONENT_TERRELL,
+ OPPONENT_KYLEE,
+ OPPONENT_WALLY_2,
+ OPPONENT_WALLY_3,
+ OPPONENT_WALLY_4,
+ OPPONENT_WALLY_5,
+ OPPONENT_WALLY_6,
+ OPPONENT_BRENDAN_10,
+ OPPONENT_BRENDAN_11,
+ OPPONENT_BRENDAN_12,
+ OPPONENT_MAY_10,
+ OPPONENT_MAY_11,
+ OPPONENT_MAY_12,
+ OPPONENT_JONAH,
+ OPPONENT_HENRY,
+ OPPONENT_ROGER,
+ OPPONENT_ALEXA,
+ OPPONENT_RUBEN,
+ OPPONENT_KOJI,
+ OPPONENT_WAYNE,
+ OPPONENT_BYRON,
+ OPPONENT_REED,
+ OPPONENT_TISHA,
+ OPPONENT_TORI_AND_TIA,
+ OPPONENT_KIM_AND_IRIS,
+ OPPONENT_TYRA_AND_IVY,
+ OPPONENT_MEL_AND_PAUL,
+ OPPONENT_JOHN_AND_JAY_1,
+ OPPONENT_JOHN_AND_JAY_2,
+ OPPONENT_JOHN_AND_JAY_3,
+ OPPONENT_JOHN_AND_JAY_4,
+ OPPONENT_JOHN_AND_JAY_5,
+ OPPONENT_RELI_AND_IAN,
+ OPPONENT_RITA_AND_SAM_1,
+ OPPONENT_RITA_AND_SAM_2,
+ OPPONENT_RITA_AND_SAM_3,
+ OPPONENT_RITA_AND_SAM_4,
+ OPPONENT_RITA_AND_SAM_5,
+ OPPONENT_LISA_AND_RAY,
+ OPPONENT_EUGENE,
+};
+
+#endif // GUARD_OPPONENT_CONSTANTS_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 1ac4e8c33..fded1ec65 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -5,54 +5,54 @@
struct PokedexListItem
{
- u16 dexNum;
- u16 seen:1;
- u16 owned:1;
+ u16 dexNum;
+ u16 seen:1;
+ u16 owned:1;
};
struct PokedexView
{
- struct PokedexListItem unk0[386];
- u16 unk608;
- u8 unk60A_1:1;
- u8 unk60A_2:1;
- u8 unk60B;
- u16 unk60C;
- u16 selectedPokemon;
- u16 unk610;
- u16 dexMode; //National or Hoenn
- u16 unk614;
- u16 dexOrder;
- u16 unk618;
- u16 unk61A;
- u16 unk61C;
- u16 unk61E[4];
- u16 unk626; //sprite id of selected Pokemon
- u16 unk628;
- u16 unk62A;
- u8 unk62C;
- u8 unk62D;
- u8 unk62E;
- u8 unk62F;
- s16 unk630;
- s16 unk632;
- u16 unk634;
- u16 unk636;
- u16 unk638;
- u16 unk63A[4];
- u8 filler642[8];
- u8 unk64A;
- u8 unk64B;
- u8 unk64C_1:1;
- u8 selectedScreen;
- u8 unk64E;
- u8 unk64F;
- u8 menuIsOpen; //menuIsOpen
- u8 unk651;
- u16 menuCursorPos; //Menu cursor position
- s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
- u8 unk656[8];
- u8 unk65E[8];
+ struct PokedexListItem unk0[386];
+ u16 unk608;
+ u8 unk60A_1:1;
+ u8 unk60A_2:1;
+ u8 unk60B;
+ u16 unk60C;
+ u16 selectedPokemon;
+ u16 unk610;
+ u16 dexMode; //National or Hoenn
+ u16 unk614;
+ u16 dexOrder;
+ u16 unk618;
+ u16 unk61A;
+ u16 unk61C;
+ u16 unk61E[4];
+ u16 unk626; //sprite id of selected Pokemon
+ u16 unk628;
+ u16 unk62A;
+ u8 unk62C;
+ u8 unk62D;
+ u8 unk62E;
+ u8 unk62F;
+ s16 unk630;
+ s16 unk632;
+ u16 unk634;
+ u16 unk636;
+ u16 unk638;
+ u16 unk63A[4];
+ u8 filler642[8];
+ u8 unk64A;
+ u8 unk64B;
+ u8 unk64C_1:1;
+ u8 selectedScreen;
+ u8 unk64E;
+ u8 unk64F;
+ u8 menuIsOpen; //menuIsOpen
+ u8 unk651;
+ u16 menuCursorPos; //Menu cursor position
+ s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
+ u8 unk656[8];
+ u8 unk65E[8];
};
void sub_808C02C(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 10eb05757..3987bada6 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -370,8 +370,8 @@ struct BattleMove
struct PokemonStorage
{
- u8 currentBox;
- struct BoxPokemon boxes[14][30];
+ /* 0x00 */ u8 currentBox;
+ /* 0x01 */ struct BoxPokemon boxes[14][30];
u8 boxNames[14][9];
u8 unkArray[14];
};
diff --git a/include/rom4.h b/include/rom4.h
index 44819cbee..5aae277a6 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -9,7 +9,8 @@ struct UnkPlayerStruct
u8 player_field_1;
};
-struct LinkPlayerMapObject {
+struct LinkPlayerMapObject
+{
u8 active;
u8 linkPlayerId;
u8 mapObjId;
@@ -18,8 +19,8 @@ struct LinkPlayerMapObject {
// sub_8052F5C
// flag_var_implications_of_teleport_
-// new_game
-// sub_8053014
+void new_game(void);
+void sub_8053014(void);
void sub_8053050(void);
// sub_805308C
void ResetGameStats(void);
@@ -35,21 +36,21 @@ void update_saveblock1_field_object_movement_behavior(u8, u8);
// warp_shift
// warp_set
// warp_data_is_not_neg_1
-// get_mapheader_by_bank_and_number
+struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum);
// warp1_get_mapheader
// set_current_map_header_from_sav1_save_old_name
// sub_805338C
// sub_80533CC
void warp_in(void);
void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-// warp1_set_2
+void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
// sub_8053538
void sub_8053570(void);
void sub_8053588(u8);
-// sub_80535C4
+void sub_80535C4(s16 a1, s16 a2);
void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
// sub_8053678
void sub_8053690(s8, s8, s8, s8, s8);
@@ -62,8 +63,8 @@ void sub_8053720(s16, s16);
void gpu_sync_bg_hide();
// sub_8053818
// sub_8053850
-// sub_80538B0
-// sub_80538D0
+bool8 sub_80538B0(u16 x, u16 y);
+bool8 sub_80538D0(u16 x, u16 y);
// sub_80538F0
// sub_8053994
void player_avatar_init_params_reset(void);
@@ -83,7 +84,7 @@ void sub_8053D14(u16);
// sav1_map_get_music
// warp1_target_get_music
// call_map_music_set_to_zero
-// sub_8053E90
+void sub_8053E90(void);
void sav1_set_battle_music_maybe(u16);
void sav1_reset_battle_music_maybe(void);
void sub_8053F0C(void);
@@ -101,7 +102,7 @@ u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
u8 sav1_map_get_light_level(void);
// get_map_light_from_warp0
bool8 is_light_level_1_2_3_5_or_6(u8 a1);
-// is_light_level_1_2_3_or_6
+bool8 is_light_level_1_2_3_or_6(u8 a1);
u8 is_light_level_8_or_9(u8);
// unref_sub_8054260
u8 sav1_map_get_name();
diff --git a/include/rom6.h b/include/rom6.h
new file mode 100644
index 000000000..e7a3ba48e
--- /dev/null
+++ b/include/rom6.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_ROM6_H
+#define GUARD_ROM6_H
+
+bool8 npc_before_player_of_type(u8);
+u8 oei_task_add(void);
+
+#endif
diff --git a/include/save.h b/include/save.h
index 976af77c6..b9d4121ec 100644
--- a/include/save.h
+++ b/include/save.h
@@ -3,47 +3,72 @@
struct SaveSectionLocation
{
- void *data;
- u16 size;
+ void *data;
+ u16 size;
};
struct SaveSection
{
- u8 data[0xFF4];
- u16 id;
- u16 checksum;
- u32 unknown;
- u32 counter;
-};
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 security;
+ u32 counter;
+}; // size is 0x1000
+// headless save section?
struct UnkSaveSection
{
- u8 data[0xFF4];
- u32 unknown;
+ u8 data[0xFF4];
+ u32 security;
+}; // size is 0xFF8
+
+// Ruby/Sapphire's save data is Flash 128K, which is 32 save sectors.
+#define NUM_SECTORS 32 // defined in agb_flash but not in a header
+
+#define UNKNOWN_CHECK_VALUE 0x8012025
+
+// SetDamagedSectorBits states
+enum
+{
+ ENABLE,
+ DISABLE,
+ CHECK // unused
+};
+
+// Do save types
+enum
+{
+ NORMAL_SAVE,
+ LINK_SAVE,
+ EREADER_SAVE, // mossdeep event
+ HOF_SAVE,
+ DIFFERENT_FILE_SAVE,
+ HOF_DELETE_SAVE // unused
};
void ClearSaveData(void);
-void sub_81251B8(void);
-bool32 sub_81251D4(u8 op, u8 bit);
-u8 save_write_to_flash(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81252D8(u16, struct SaveSectionLocation *);
-u8 sub_81253C8(u8 sector, u8 *data, u16 size);
-u8 sub_8125440(u8, u8 *);
-u32 sub_812546C(struct SaveSectionLocation *a1);
-u32 sub_81254C8(struct SaveSectionLocation *a1);
-u8 sub_812550C(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_812556C(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81255B8(u16, struct SaveSectionLocation *);
-u8 sub_8125758(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81257F0(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_812587C(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81258BC(u16, struct SaveSectionLocation *);
-u8 sub_8125974(struct SaveSectionLocation *);
+void ResetSaveCounters(void);
+bool32 ManipulateSectorBits(u8 op, u8 bit);
+u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *a2);
+u8 HandleWriteSector(u16, const struct SaveSectionLocation *);
+u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
+u8 TryWriteSector(u8, u8 *);
+u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location);
+u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location);
+u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_81255B8(u16, const struct SaveSectionLocation *location);
+u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_81258BC(u16, const struct SaveSectionLocation *location);
+u8 sub_8125974(const struct SaveSectionLocation *location);
u8 sub_8125B88(u8 a1, u8 *data, u16 size);
u8 sub_8125BF8(u8, struct SaveSection *);
-u16 sub_8125C10(void *, u16);
-u8 sub_8125C3C(u8 a1);
-u8 sub_8125D44(u8 a1);
+u16 CalculateChecksum(void *, u16);
+u8 HandleSavingData(u8 saveType);
+u8 TrySavingData(u8 saveType);
u8 sub_8125D80(void);
bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
diff --git a/include/save_menu_util.h b/include/save_menu_util.h
index 560a39d89..cf1d3f929 100644
--- a/include/save_menu_util.h
+++ b/include/save_menu_util.h
@@ -2,8 +2,8 @@
#define GUARD_SAVE_MENU_UTIL_H
void HandleDrawSaveWindowInfo(s16 left, s16 top);
-void sub_80946C8(u16 left, u16 top);
-u8 sub_809473C(void);
+void HandleCloseSaveWindow(u16 left, u16 top);
+u8 IsResizeSaveWindowEnabled(void);
void PrintSavePlayerName(s16 x, s16 y);
void PrintSaveMapName(s16 x, s16 y);
void PrintSaveBadges(s16 x, s16 y);
diff --git a/include/script_menu.h b/include/script_menu.h
new file mode 100644
index 000000000..7a504556e
--- /dev/null
+++ b/include/script_menu.h
@@ -0,0 +1,31 @@
+#ifndef GUARD_SCRIPTMENU_H
+#define GUARD_SCRIPTMENU_H
+
+struct MultichoiceListStruct
+{
+ struct MenuAction *list;
+ u8 count;
+};
+
+bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4);
+bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
+u16 GetStringWidthInTilesForScriptMenu(const u8 *str);
+void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8);
+void sub_80B5230(u8, u8, u8, u8, u8, u8);
+void sub_80B52B4(u8);
+bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4);
+void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8);
+bool8 yes_no_box(u8 var1, u8 var2);
+bool8 IsScriptActive(void); // unused
+void task_yes_no_maybe(u8);
+bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
+void sub_80B5684(u8);
+bool8 TryCreatePCMenu(void);
+void CreatePCMenu(void);
+void sub_80B5838(void);
+void task_picbox(u8 taskId);
+bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3);
+void *picbox_close(void);
+bool8 sub_80B59AC(void);
+
+#endif
diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h
new file mode 100644
index 000000000..6d4e689b5
--- /dev/null
+++ b/include/script_pokemon_80C4.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_SCRIPTPOKE80C4_H
+#define GUARD_SCRIPTPOKE80C4_H
+
+struct MonCoords
+{
+ u8 x, y;
+};
+
+void sub_80C5190(u8);
+void sub_80C5580(void);
+void SetBattleTowerPlayerParty(void);
+void ReducePlayerPartyToThree(void);
+
+u8 sub_80C4D50(void);
+void ShowContestWinner(void);
+void HealPlayerParty();
+u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
+u8 ScriptGiveEgg(u16);
+void ScriptWildBattle(u16, u8, u16);
+void ScriptSetMonMoveSlot(u8, u16, u8);
+
+#endif
diff --git a/include/script_pokemon_80F9.h b/include/script_pokemon_80F9.h
new file mode 100644
index 000000000..d65c99c15
--- /dev/null
+++ b/include/script_pokemon_80F9.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_SCRIPTPOKE80F9_H
+#define GUARD_SCRIPTPOKE80F9_H
+
+struct UnknownStruct2018000
+{
+ u8 filler0[0x8];
+ u8 unk8;
+};
+
+extern struct UnknownStruct2018000 unk_2018000;
+
+void sub_80F9A8C(u8);
+void sub_80F9C00(void);
+void sub_80F9E1C(void);
+void sub_80F99CC(void);
+
+#endif
diff --git a/include/songs.h b/include/songs.h
index c77bad515..01ecf9fe0 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -359,16 +359,16 @@ enum
BGM_DAIGO,
BGM_THANKFOR,
BGM_END,
- BGM_BATTLE27,
- BGM_BATTLE31,
- BGM_BATTLE20,
- BGM_BATTLE32,
- BGM_BATTLE33,
- BGM_BATTLE36,
- BGM_BATTLE34,
- BGM_BATTLE35,
- BGM_BATTLE38,
- BGM_BATTLE30,
+ BGM_BATTLE27, // wild
+ BGM_BATTLE31, // aqua/magma grunt
+ BGM_BATTLE20, // trainer
+ BGM_BATTLE32, // gym leader
+ BGM_BATTLE33, // champion
+ BGM_BATTLE36, // regi
+ BGM_BATTLE34, // weather trio
+ BGM_BATTLE35, // rival
+ BGM_BATTLE38, // elite four
+ BGM_BATTLE30, // aqua/magma leader
};
#endif // GUARD_SONGS_H
diff --git a/include/sound.h b/include/sound.h
index 1a5161ca8..283b2b1f9 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -35,10 +35,10 @@ bool8 IsCryPlayingOrClearCrySongs(void);
bool8 IsCryPlaying(void);
void PlayBGM(u16 songNum);
void PlaySE(u16 songNum);
-void PlaySE12WithPanning(u16 songNum, u8 pan);
-void PlaySE1WithPanning(u16 songNum, u8 pan);
-void PlaySE2WithPanning(u16 songNum, u8 pan);
-void SE12PanpotControl(u8 pan);
+void PlaySE12WithPanning(u16 songNum, s8 pan);
+void PlaySE1WithPanning(u16 songNum, s8 pan);
+void PlaySE2WithPanning(u16 songNum, s8 pan);
+void SE12PanpotControl(s8 pan);
bool8 IsSEPlaying(void);
bool8 IsBGMPlaying(void);
bool8 IsSpecialSEPlaying(void);
diff --git a/include/species.h b/include/species.h
index d0cd7f664..e33481afd 100644
--- a/include/species.h
+++ b/include/species.h
@@ -2,449 +2,449 @@
#define GUARD_SPECIES_H
enum {
- SPECIES_NONE, // 0x000
- SPECIES_BULBASAUR, // 0x001
- SPECIES_IVYSAUR, // 0x002
- SPECIES_VENUSAUR, // 0x003
- SPECIES_CHARMANDER, // 0x004
- SPECIES_CHARMELEON, // 0x005
- SPECIES_CHARIZARD, // 0x006
- SPECIES_SQUIRTLE, // 0x007
- SPECIES_WARTORTLE, // 0x008
- SPECIES_BLASTOISE, // 0x009
- SPECIES_CATERPIE, // 0x00a
- SPECIES_METAPOD, // 0x00b
- SPECIES_BUTTERFREE, // 0x00c
- SPECIES_WEEDLE, // 0x00d
- SPECIES_KAKUNA, // 0x00e
- SPECIES_BEEDRILL, // 0x00f
- SPECIES_PIDGEY, // 0x010
- SPECIES_PIDGEOTTO, // 0x011
- SPECIES_PIDGEOT, // 0x012
- SPECIES_RATTATA, // 0x013
- SPECIES_RATICATE, // 0x014
- SPECIES_SPEAROW, // 0x015
- SPECIES_FEAROW, // 0x016
- SPECIES_EKANS, // 0x017
- SPECIES_ARBOK, // 0x018
- SPECIES_PIKACHU, // 0x019
- SPECIES_RAICHU, // 0x01a
- SPECIES_SANDSHREW, // 0x01b
- SPECIES_SANDSLASH, // 0x01c
- SPECIES_NIDORAN_F, // 0x01d
- SPECIES_NIDORINA, // 0x01e
- SPECIES_NIDOQUEEN, // 0x01f
- SPECIES_NIDORAN_M, // 0x020
- SPECIES_NIDORINO, // 0x021
- SPECIES_NIDOKING, // 0x022
- SPECIES_CLEFAIRY, // 0x023
- SPECIES_CLEFABLE, // 0x024
- SPECIES_VULPIX, // 0x025
- SPECIES_NINETALES, // 0x026
- SPECIES_JIGGLYPUFF, // 0x027
- SPECIES_WIGGLYTUFF, // 0x028
- SPECIES_ZUBAT, // 0x029
- SPECIES_GOLBAT, // 0x02a
- SPECIES_ODDISH, // 0x02b
- SPECIES_GLOOM, // 0x02c
- SPECIES_VILEPLUME, // 0x02d
- SPECIES_PARAS, // 0x02e
- SPECIES_PARASECT, // 0x02f
- SPECIES_VENONAT, // 0x030
- SPECIES_VENOMOTH, // 0x031
- SPECIES_DIGLETT, // 0x032
- SPECIES_DUGTRIO, // 0x033
- SPECIES_MEOWTH, // 0x034
- SPECIES_PERSIAN, // 0x035
- SPECIES_PSYDUCK, // 0x036
- SPECIES_GOLDUCK, // 0x037
- SPECIES_MANKEY, // 0x038
- SPECIES_PRIMEAPE, // 0x039
- SPECIES_GROWLITHE, // 0x03a
- SPECIES_ARCANINE, // 0x03b
- SPECIES_POLIWAG, // 0x03c
- SPECIES_POLIWHIRL, // 0x03d
- SPECIES_POLIWRATH, // 0x03e
- SPECIES_ABRA, // 0x03f
- SPECIES_KADABRA, // 0x040
- SPECIES_ALAKAZAM, // 0x041
- SPECIES_MACHOP, // 0x042
- SPECIES_MACHOKE, // 0x043
- SPECIES_MACHAMP, // 0x044
- SPECIES_BELLSPROUT, // 0x045
- SPECIES_WEEPINBELL, // 0x046
- SPECIES_VICTREEBEL, // 0x047
- SPECIES_TENTACOOL, // 0x048
- SPECIES_TENTACRUEL, // 0x049
- SPECIES_GEODUDE, // 0x04a
- SPECIES_GRAVELER, // 0x04b
- SPECIES_GOLEM, // 0x04c
- SPECIES_PONYTA, // 0x04d
- SPECIES_RAPIDASH, // 0x04e
- SPECIES_SLOWPOKE, // 0x04f
- SPECIES_SLOWBRO, // 0x050
- SPECIES_MAGNEMITE, // 0x051
- SPECIES_MAGNETON, // 0x052
- SPECIES_FARFETCHD, // 0x053
- SPECIES_DODUO, // 0x054
- SPECIES_DODRIO, // 0x055
- SPECIES_SEEL, // 0x056
- SPECIES_DEWGONG, // 0x057
- SPECIES_GRIMER, // 0x058
- SPECIES_MUK, // 0x059
- SPECIES_SHELLDER, // 0x05a
- SPECIES_CLOYSTER, // 0x05b
- SPECIES_GASTLY, // 0x05c
- SPECIES_HAUNTER, // 0x05d
- SPECIES_GENGAR, // 0x05e
- SPECIES_ONIX, // 0x05f
- SPECIES_DROWZEE, // 0x060
- SPECIES_HYPNO, // 0x061
- SPECIES_KRABBY, // 0x062
- SPECIES_KINGLER, // 0x063
- SPECIES_VOLTORB, // 0x064
- SPECIES_ELECTRODE, // 0x065
- SPECIES_EXEGGCUTE, // 0x066
- SPECIES_EXEGGUTOR, // 0x067
- SPECIES_CUBONE, // 0x068
- SPECIES_MAROWAK, // 0x069
- SPECIES_HITMONLEE, // 0x06a
- SPECIES_HITMONCHAN, // 0x06b
- SPECIES_LICKITUNG, // 0x06c
- SPECIES_KOFFING, // 0x06d
- SPECIES_WEEZING, // 0x06e
- SPECIES_RHYHORN, // 0x06f
- SPECIES_RHYDON, // 0x070
- SPECIES_CHANSEY, // 0x071
- SPECIES_TANGELA, // 0x072
- SPECIES_KANGASKHAN, // 0x073
- SPECIES_HORSEA, // 0x074
- SPECIES_SEADRA, // 0x075
- SPECIES_GOLDEEN, // 0x076
- SPECIES_SEAKING, // 0x077
- SPECIES_STARYU, // 0x078
- SPECIES_STARMIE, // 0x079
- SPECIES_MR_MIME, // 0x07a
- SPECIES_SCYTHER, // 0x07b
- SPECIES_JYNX, // 0x07c
- SPECIES_ELECTABUZZ, // 0x07d
- SPECIES_MAGMAR, // 0x07e
- SPECIES_PINSIR, // 0x07f
- SPECIES_TAUROS, // 0x080
- SPECIES_MAGIKARP, // 0x081
- SPECIES_GYARADOS, // 0x082
- SPECIES_LAPRAS, // 0x083
- SPECIES_DITTO, // 0x084
- SPECIES_EEVEE, // 0x085
- SPECIES_VAPOREON, // 0x086
- SPECIES_JOLTEON, // 0x087
- SPECIES_FLAREON, // 0x088
- SPECIES_PORYGON, // 0x089
- SPECIES_OMANYTE, // 0x08a
- SPECIES_OMASTAR, // 0x08b
- SPECIES_KABUTO, // 0x08c
- SPECIES_KABUTOPS, // 0x08d
- SPECIES_AERODACTYL, // 0x08e
- SPECIES_SNORLAX, // 0x08f
- SPECIES_ARTICUNO, // 0x090
- SPECIES_ZAPDOS, // 0x091
- SPECIES_MOLTRES, // 0x092
- SPECIES_DRATINI, // 0x093
- SPECIES_DRAGONAIR, // 0x094
- SPECIES_DRAGONITE, // 0x095
- SPECIES_MEWTWO, // 0x096
- SPECIES_MEW, // 0x097
- SPECIES_CHIKORITA, // 0x098
- SPECIES_BAYLEEF, // 0x099
- SPECIES_MEGANIUM, // 0x09a
- SPECIES_CYNDAQUIL, // 0x09b
- SPECIES_QUILAVA, // 0x09c
- SPECIES_TYPHLOSION, // 0x09d
- SPECIES_TOTODILE, // 0x09e
- SPECIES_CROCONAW, // 0x09f
- SPECIES_FERALIGATR, // 0x0a0
- SPECIES_SENTRET, // 0x0a1
- SPECIES_FURRET, // 0x0a2
- SPECIES_HOOTHOOT, // 0x0a3
- SPECIES_NOCTOWL, // 0x0a4
- SPECIES_LEDYBA, // 0x0a5
- SPECIES_LEDIAN, // 0x0a6
- SPECIES_SPINARAK, // 0x0a7
- SPECIES_ARIADOS, // 0x0a8
- SPECIES_CROBAT, // 0x0a9
- SPECIES_CHINCHOU, // 0x0aa
- SPECIES_LANTURN, // 0x0ab
- SPECIES_PICHU, // 0x0ac
- SPECIES_CLEFFA, // 0x0ad
- SPECIES_IGGLYBUFF, // 0x0ae
- SPECIES_TOGEPI, // 0x0af
- SPECIES_TOGETIC, // 0x0b0
- SPECIES_NATU, // 0x0b1
- SPECIES_XATU, // 0x0b2
- SPECIES_MAREEP, // 0x0b3
- SPECIES_FLAAFFY, // 0x0b4
- SPECIES_AMPHAROS, // 0x0b5
- SPECIES_BELLOSSOM, // 0x0b6
- SPECIES_MARILL, // 0x0b7
- SPECIES_AZUMARILL, // 0x0b8
- SPECIES_SUDOWOODO, // 0x0b9
- SPECIES_POLITOED, // 0x0ba
- SPECIES_HOPPIP, // 0x0bb
- SPECIES_SKIPLOOM, // 0x0bc
- SPECIES_JUMPLUFF, // 0x0bd
- SPECIES_AIPOM, // 0x0be
- SPECIES_SUNKERN, // 0x0bf
- SPECIES_SUNFLORA, // 0x0c0
- SPECIES_YANMA, // 0x0c1
- SPECIES_WOOPER, // 0x0c2
- SPECIES_QUAGSIRE, // 0x0c3
- SPECIES_ESPEON, // 0x0c4
- SPECIES_UMBREON, // 0x0c5
- SPECIES_MURKROW, // 0x0c6
- SPECIES_SLOWKING, // 0x0c7
- SPECIES_MISDREAVUS, // 0x0c8
- SPECIES_UNOWN, // 0x0c9
- SPECIES_WOBBUFFET, // 0x0ca
- SPECIES_GIRAFARIG, // 0x0cb
- SPECIES_PINECO, // 0x0cc
- SPECIES_FORRETRESS, // 0x0cd
- SPECIES_DUNSPARCE, // 0x0ce
- SPECIES_GLIGAR, // 0x0cf
- SPECIES_STEELIX, // 0x0d0
- SPECIES_SNUBBULL, // 0x0d1
- SPECIES_GRANBULL, // 0x0d2
- SPECIES_QWILFISH, // 0x0d3
- SPECIES_SCIZOR, // 0x0d4
- SPECIES_SHUCKLE, // 0x0d5
- SPECIES_HERACROSS, // 0x0d6
- SPECIES_SNEASEL, // 0x0d7
- SPECIES_TEDDIURSA, // 0x0d8
- SPECIES_URSARING, // 0x0d9
- SPECIES_SLUGMA, // 0x0da
- SPECIES_MAGCARGO, // 0x0db
- SPECIES_SWINUB, // 0x0dc
- SPECIES_PILOSWINE, // 0x0dd
- SPECIES_CORSOLA, // 0x0de
- SPECIES_REMORAID, // 0x0df
- SPECIES_OCTILLERY, // 0x0e0
- SPECIES_DELIBIRD, // 0x0e1
- SPECIES_MANTINE, // 0x0e2
- SPECIES_SKARMORY, // 0x0e3
- SPECIES_HOUNDOUR, // 0x0e4
- SPECIES_HOUNDOOM, // 0x0e5
- SPECIES_KINGDRA, // 0x0e6
- SPECIES_PHANPY, // 0x0e7
- SPECIES_DONPHAN, // 0x0e8
- SPECIES_PORYGON2, // 0x0e9
- SPECIES_STANTLER, // 0x0ea
- SPECIES_SMEARGLE, // 0x0eb
- SPECIES_TYROGUE, // 0x0ec
- SPECIES_HITMONTOP, // 0x0ed
- SPECIES_SMOOCHUM, // 0x0ee
- SPECIES_ELEKID, // 0x0ef
- SPECIES_MAGBY, // 0x0f0
- SPECIES_MILTANK, // 0x0f1
- SPECIES_BLISSEY, // 0x0f2
- SPECIES_RAIKOU, // 0x0f3
- SPECIES_ENTEI, // 0x0f4
- SPECIES_SUICUNE, // 0x0f5
- SPECIES_LARVITAR, // 0x0f6
- SPECIES_PUPITAR, // 0x0f7
- SPECIES_TYRANITAR, // 0x0f8
- SPECIES_LUGIA, // 0x0f9
- SPECIES_HO_OH, // 0x0fa
- SPECIES_CELEBI, // 0x0fb
+ SPECIES_NONE, // 0x000
+ SPECIES_BULBASAUR, // 0x001
+ SPECIES_IVYSAUR, // 0x002
+ SPECIES_VENUSAUR, // 0x003
+ SPECIES_CHARMANDER, // 0x004
+ SPECIES_CHARMELEON, // 0x005
+ SPECIES_CHARIZARD, // 0x006
+ SPECIES_SQUIRTLE, // 0x007
+ SPECIES_WARTORTLE, // 0x008
+ SPECIES_BLASTOISE, // 0x009
+ SPECIES_CATERPIE, // 0x00a
+ SPECIES_METAPOD, // 0x00b
+ SPECIES_BUTTERFREE, // 0x00c
+ SPECIES_WEEDLE, // 0x00d
+ SPECIES_KAKUNA, // 0x00e
+ SPECIES_BEEDRILL, // 0x00f
+ SPECIES_PIDGEY, // 0x010
+ SPECIES_PIDGEOTTO, // 0x011
+ SPECIES_PIDGEOT, // 0x012
+ SPECIES_RATTATA, // 0x013
+ SPECIES_RATICATE, // 0x014
+ SPECIES_SPEAROW, // 0x015
+ SPECIES_FEAROW, // 0x016
+ SPECIES_EKANS, // 0x017
+ SPECIES_ARBOK, // 0x018
+ SPECIES_PIKACHU, // 0x019
+ SPECIES_RAICHU, // 0x01a
+ SPECIES_SANDSHREW, // 0x01b
+ SPECIES_SANDSLASH, // 0x01c
+ SPECIES_NIDORAN_F, // 0x01d
+ SPECIES_NIDORINA, // 0x01e
+ SPECIES_NIDOQUEEN, // 0x01f
+ SPECIES_NIDORAN_M, // 0x020
+ SPECIES_NIDORINO, // 0x021
+ SPECIES_NIDOKING, // 0x022
+ SPECIES_CLEFAIRY, // 0x023
+ SPECIES_CLEFABLE, // 0x024
+ SPECIES_VULPIX, // 0x025
+ SPECIES_NINETALES, // 0x026
+ SPECIES_JIGGLYPUFF, // 0x027
+ SPECIES_WIGGLYTUFF, // 0x028
+ SPECIES_ZUBAT, // 0x029
+ SPECIES_GOLBAT, // 0x02a
+ SPECIES_ODDISH, // 0x02b
+ SPECIES_GLOOM, // 0x02c
+ SPECIES_VILEPLUME, // 0x02d
+ SPECIES_PARAS, // 0x02e
+ SPECIES_PARASECT, // 0x02f
+ SPECIES_VENONAT, // 0x030
+ SPECIES_VENOMOTH, // 0x031
+ SPECIES_DIGLETT, // 0x032
+ SPECIES_DUGTRIO, // 0x033
+ SPECIES_MEOWTH, // 0x034
+ SPECIES_PERSIAN, // 0x035
+ SPECIES_PSYDUCK, // 0x036
+ SPECIES_GOLDUCK, // 0x037
+ SPECIES_MANKEY, // 0x038
+ SPECIES_PRIMEAPE, // 0x039
+ SPECIES_GROWLITHE, // 0x03a
+ SPECIES_ARCANINE, // 0x03b
+ SPECIES_POLIWAG, // 0x03c
+ SPECIES_POLIWHIRL, // 0x03d
+ SPECIES_POLIWRATH, // 0x03e
+ SPECIES_ABRA, // 0x03f
+ SPECIES_KADABRA, // 0x040
+ SPECIES_ALAKAZAM, // 0x041
+ SPECIES_MACHOP, // 0x042
+ SPECIES_MACHOKE, // 0x043
+ SPECIES_MACHAMP, // 0x044
+ SPECIES_BELLSPROUT, // 0x045
+ SPECIES_WEEPINBELL, // 0x046
+ SPECIES_VICTREEBEL, // 0x047
+ SPECIES_TENTACOOL, // 0x048
+ SPECIES_TENTACRUEL, // 0x049
+ SPECIES_GEODUDE, // 0x04a
+ SPECIES_GRAVELER, // 0x04b
+ SPECIES_GOLEM, // 0x04c
+ SPECIES_PONYTA, // 0x04d
+ SPECIES_RAPIDASH, // 0x04e
+ SPECIES_SLOWPOKE, // 0x04f
+ SPECIES_SLOWBRO, // 0x050
+ SPECIES_MAGNEMITE, // 0x051
+ SPECIES_MAGNETON, // 0x052
+ SPECIES_FARFETCHD, // 0x053
+ SPECIES_DODUO, // 0x054
+ SPECIES_DODRIO, // 0x055
+ SPECIES_SEEL, // 0x056
+ SPECIES_DEWGONG, // 0x057
+ SPECIES_GRIMER, // 0x058
+ SPECIES_MUK, // 0x059
+ SPECIES_SHELLDER, // 0x05a
+ SPECIES_CLOYSTER, // 0x05b
+ SPECIES_GASTLY, // 0x05c
+ SPECIES_HAUNTER, // 0x05d
+ SPECIES_GENGAR, // 0x05e
+ SPECIES_ONIX, // 0x05f
+ SPECIES_DROWZEE, // 0x060
+ SPECIES_HYPNO, // 0x061
+ SPECIES_KRABBY, // 0x062
+ SPECIES_KINGLER, // 0x063
+ SPECIES_VOLTORB, // 0x064
+ SPECIES_ELECTRODE, // 0x065
+ SPECIES_EXEGGCUTE, // 0x066
+ SPECIES_EXEGGUTOR, // 0x067
+ SPECIES_CUBONE, // 0x068
+ SPECIES_MAROWAK, // 0x069
+ SPECIES_HITMONLEE, // 0x06a
+ SPECIES_HITMONCHAN, // 0x06b
+ SPECIES_LICKITUNG, // 0x06c
+ SPECIES_KOFFING, // 0x06d
+ SPECIES_WEEZING, // 0x06e
+ SPECIES_RHYHORN, // 0x06f
+ SPECIES_RHYDON, // 0x070
+ SPECIES_CHANSEY, // 0x071
+ SPECIES_TANGELA, // 0x072
+ SPECIES_KANGASKHAN, // 0x073
+ SPECIES_HORSEA, // 0x074
+ SPECIES_SEADRA, // 0x075
+ SPECIES_GOLDEEN, // 0x076
+ SPECIES_SEAKING, // 0x077
+ SPECIES_STARYU, // 0x078
+ SPECIES_STARMIE, // 0x079
+ SPECIES_MR_MIME, // 0x07a
+ SPECIES_SCYTHER, // 0x07b
+ SPECIES_JYNX, // 0x07c
+ SPECIES_ELECTABUZZ, // 0x07d
+ SPECIES_MAGMAR, // 0x07e
+ SPECIES_PINSIR, // 0x07f
+ SPECIES_TAUROS, // 0x080
+ SPECIES_MAGIKARP, // 0x081
+ SPECIES_GYARADOS, // 0x082
+ SPECIES_LAPRAS, // 0x083
+ SPECIES_DITTO, // 0x084
+ SPECIES_EEVEE, // 0x085
+ SPECIES_VAPOREON, // 0x086
+ SPECIES_JOLTEON, // 0x087
+ SPECIES_FLAREON, // 0x088
+ SPECIES_PORYGON, // 0x089
+ SPECIES_OMANYTE, // 0x08a
+ SPECIES_OMASTAR, // 0x08b
+ SPECIES_KABUTO, // 0x08c
+ SPECIES_KABUTOPS, // 0x08d
+ SPECIES_AERODACTYL, // 0x08e
+ SPECIES_SNORLAX, // 0x08f
+ SPECIES_ARTICUNO, // 0x090
+ SPECIES_ZAPDOS, // 0x091
+ SPECIES_MOLTRES, // 0x092
+ SPECIES_DRATINI, // 0x093
+ SPECIES_DRAGONAIR, // 0x094
+ SPECIES_DRAGONITE, // 0x095
+ SPECIES_MEWTWO, // 0x096
+ SPECIES_MEW, // 0x097
+ SPECIES_CHIKORITA, // 0x098
+ SPECIES_BAYLEEF, // 0x099
+ SPECIES_MEGANIUM, // 0x09a
+ SPECIES_CYNDAQUIL, // 0x09b
+ SPECIES_QUILAVA, // 0x09c
+ SPECIES_TYPHLOSION, // 0x09d
+ SPECIES_TOTODILE, // 0x09e
+ SPECIES_CROCONAW, // 0x09f
+ SPECIES_FERALIGATR, // 0x0a0
+ SPECIES_SENTRET, // 0x0a1
+ SPECIES_FURRET, // 0x0a2
+ SPECIES_HOOTHOOT, // 0x0a3
+ SPECIES_NOCTOWL, // 0x0a4
+ SPECIES_LEDYBA, // 0x0a5
+ SPECIES_LEDIAN, // 0x0a6
+ SPECIES_SPINARAK, // 0x0a7
+ SPECIES_ARIADOS, // 0x0a8
+ SPECIES_CROBAT, // 0x0a9
+ SPECIES_CHINCHOU, // 0x0aa
+ SPECIES_LANTURN, // 0x0ab
+ SPECIES_PICHU, // 0x0ac
+ SPECIES_CLEFFA, // 0x0ad
+ SPECIES_IGGLYBUFF, // 0x0ae
+ SPECIES_TOGEPI, // 0x0af
+ SPECIES_TOGETIC, // 0x0b0
+ SPECIES_NATU, // 0x0b1
+ SPECIES_XATU, // 0x0b2
+ SPECIES_MAREEP, // 0x0b3
+ SPECIES_FLAAFFY, // 0x0b4
+ SPECIES_AMPHAROS, // 0x0b5
+ SPECIES_BELLOSSOM, // 0x0b6
+ SPECIES_MARILL, // 0x0b7
+ SPECIES_AZUMARILL, // 0x0b8
+ SPECIES_SUDOWOODO, // 0x0b9
+ SPECIES_POLITOED, // 0x0ba
+ SPECIES_HOPPIP, // 0x0bb
+ SPECIES_SKIPLOOM, // 0x0bc
+ SPECIES_JUMPLUFF, // 0x0bd
+ SPECIES_AIPOM, // 0x0be
+ SPECIES_SUNKERN, // 0x0bf
+ SPECIES_SUNFLORA, // 0x0c0
+ SPECIES_YANMA, // 0x0c1
+ SPECIES_WOOPER, // 0x0c2
+ SPECIES_QUAGSIRE, // 0x0c3
+ SPECIES_ESPEON, // 0x0c4
+ SPECIES_UMBREON, // 0x0c5
+ SPECIES_MURKROW, // 0x0c6
+ SPECIES_SLOWKING, // 0x0c7
+ SPECIES_MISDREAVUS, // 0x0c8
+ SPECIES_UNOWN, // 0x0c9
+ SPECIES_WOBBUFFET, // 0x0ca
+ SPECIES_GIRAFARIG, // 0x0cb
+ SPECIES_PINECO, // 0x0cc
+ SPECIES_FORRETRESS, // 0x0cd
+ SPECIES_DUNSPARCE, // 0x0ce
+ SPECIES_GLIGAR, // 0x0cf
+ SPECIES_STEELIX, // 0x0d0
+ SPECIES_SNUBBULL, // 0x0d1
+ SPECIES_GRANBULL, // 0x0d2
+ SPECIES_QWILFISH, // 0x0d3
+ SPECIES_SCIZOR, // 0x0d4
+ SPECIES_SHUCKLE, // 0x0d5
+ SPECIES_HERACROSS, // 0x0d6
+ SPECIES_SNEASEL, // 0x0d7
+ SPECIES_TEDDIURSA, // 0x0d8
+ SPECIES_URSARING, // 0x0d9
+ SPECIES_SLUGMA, // 0x0da
+ SPECIES_MAGCARGO, // 0x0db
+ SPECIES_SWINUB, // 0x0dc
+ SPECIES_PILOSWINE, // 0x0dd
+ SPECIES_CORSOLA, // 0x0de
+ SPECIES_REMORAID, // 0x0df
+ SPECIES_OCTILLERY, // 0x0e0
+ SPECIES_DELIBIRD, // 0x0e1
+ SPECIES_MANTINE, // 0x0e2
+ SPECIES_SKARMORY, // 0x0e3
+ SPECIES_HOUNDOUR, // 0x0e4
+ SPECIES_HOUNDOOM, // 0x0e5
+ SPECIES_KINGDRA, // 0x0e6
+ SPECIES_PHANPY, // 0x0e7
+ SPECIES_DONPHAN, // 0x0e8
+ SPECIES_PORYGON2, // 0x0e9
+ SPECIES_STANTLER, // 0x0ea
+ SPECIES_SMEARGLE, // 0x0eb
+ SPECIES_TYROGUE, // 0x0ec
+ SPECIES_HITMONTOP, // 0x0ed
+ SPECIES_SMOOCHUM, // 0x0ee
+ SPECIES_ELEKID, // 0x0ef
+ SPECIES_MAGBY, // 0x0f0
+ SPECIES_MILTANK, // 0x0f1
+ SPECIES_BLISSEY, // 0x0f2
+ SPECIES_RAIKOU, // 0x0f3
+ SPECIES_ENTEI, // 0x0f4
+ SPECIES_SUICUNE, // 0x0f5
+ SPECIES_LARVITAR, // 0x0f6
+ SPECIES_PUPITAR, // 0x0f7
+ SPECIES_TYRANITAR, // 0x0f8
+ SPECIES_LUGIA, // 0x0f9
+ SPECIES_HO_OH, // 0x0fa
+ SPECIES_CELEBI, // 0x0fb
- SPECIES_OLD_UNOWN_B,
- SPECIES_OLD_UNOWN_C,
- SPECIES_OLD_UNOWN_D,
- SPECIES_OLD_UNOWN_E,
- SPECIES_OLD_UNOWN_F,
- SPECIES_OLD_UNOWN_G,
- SPECIES_OLD_UNOWN_H,
- SPECIES_OLD_UNOWN_I,
- SPECIES_OLD_UNOWN_J,
- SPECIES_OLD_UNOWN_K,
- SPECIES_OLD_UNOWN_L,
- SPECIES_OLD_UNOWN_M,
- SPECIES_OLD_UNOWN_N,
- SPECIES_OLD_UNOWN_O,
- SPECIES_OLD_UNOWN_P,
- SPECIES_OLD_UNOWN_Q,
- SPECIES_OLD_UNOWN_R,
- SPECIES_OLD_UNOWN_S,
- SPECIES_OLD_UNOWN_T,
- SPECIES_OLD_UNOWN_U,
- SPECIES_OLD_UNOWN_V,
- SPECIES_OLD_UNOWN_W,
- SPECIES_OLD_UNOWN_X,
- SPECIES_OLD_UNOWN_Y,
- SPECIES_OLD_UNOWN_Z,
+ SPECIES_OLD_UNOWN_B,
+ SPECIES_OLD_UNOWN_C,
+ SPECIES_OLD_UNOWN_D,
+ SPECIES_OLD_UNOWN_E,
+ SPECIES_OLD_UNOWN_F,
+ SPECIES_OLD_UNOWN_G,
+ SPECIES_OLD_UNOWN_H,
+ SPECIES_OLD_UNOWN_I,
+ SPECIES_OLD_UNOWN_J,
+ SPECIES_OLD_UNOWN_K,
+ SPECIES_OLD_UNOWN_L,
+ SPECIES_OLD_UNOWN_M,
+ SPECIES_OLD_UNOWN_N,
+ SPECIES_OLD_UNOWN_O,
+ SPECIES_OLD_UNOWN_P,
+ SPECIES_OLD_UNOWN_Q,
+ SPECIES_OLD_UNOWN_R,
+ SPECIES_OLD_UNOWN_S,
+ SPECIES_OLD_UNOWN_T,
+ SPECIES_OLD_UNOWN_U,
+ SPECIES_OLD_UNOWN_V,
+ SPECIES_OLD_UNOWN_W,
+ SPECIES_OLD_UNOWN_X,
+ SPECIES_OLD_UNOWN_Y,
+ SPECIES_OLD_UNOWN_Z,
- SPECIES_TREECKO, // 0x115
- SPECIES_GROVYLE, // 0x116
- SPECIES_SCEPTILE, // 0x117
- SPECIES_TORCHIC, // 0x118
- SPECIES_COMBUSKEN, // 0x119
- SPECIES_BLAZIKEN, // 0x11a
- SPECIES_MUDKIP, // 0x11b
- SPECIES_MARSHTOMP, // 0x11c
- SPECIES_SWAMPERT, // 0x11d
- SPECIES_POOCHYENA, // 0x11e
- SPECIES_MIGHTYENA, // 0x11f
- SPECIES_ZIGZAGOON, // 0x120
- SPECIES_LINOONE, // 0x121
- SPECIES_WURMPLE, // 0x122
- SPECIES_SILCOON, // 0x123
- SPECIES_BEAUTIFLY, // 0x124
- SPECIES_CASCOON, // 0x125
- SPECIES_DUSTOX, // 0x126
- SPECIES_LOTAD, // 0x127
- SPECIES_LOMBRE, // 0x128
- SPECIES_LUDICOLO, // 0x129
- SPECIES_SEEDOT, // 0x12a
- SPECIES_NUZLEAF, // 0x12b
- SPECIES_SHIFTRY, // 0x12c
- SPECIES_NINCADA, // 0x12d
- SPECIES_NINJASK, // 0x12e
- SPECIES_SHEDINJA, // 0x12f
- SPECIES_TAILLOW, // 0x130
- SPECIES_SWELLOW, // 0x131
- SPECIES_SHROOMISH, // 0x132
- SPECIES_BRELOOM, // 0x133
- SPECIES_SPINDA, // 0x134
- SPECIES_WINGULL, // 0x135
- SPECIES_PELIPPER, // 0x136
- SPECIES_SURSKIT, // 0x137
- SPECIES_MASQUERAIN, // 0x138
- SPECIES_WAILMER, // 0x139
- SPECIES_WAILORD, // 0x13a
- SPECIES_SKITTY, // 0x13b
- SPECIES_DELCATTY, // 0x13c
- SPECIES_KECLEON, // 0x13d
- SPECIES_BALTOY, // 0x13e
- SPECIES_CLAYDOL, // 0x13f
- SPECIES_NOSEPASS, // 0x140
- SPECIES_TORKOAL, // 0x141
- SPECIES_SABLEYE, // 0x142
- SPECIES_BARBOACH, // 0x143
- SPECIES_WHISCASH, // 0x144
- SPECIES_LUVDISC, // 0x145
- SPECIES_CORPHISH, // 0x146
- SPECIES_CRAWDAUNT, // 0x147
- SPECIES_FEEBAS, // 0x148
- SPECIES_MILOTIC, // 0x149
- SPECIES_CARVANHA, // 0x14a
- SPECIES_SHARPEDO, // 0x14b
- SPECIES_TRAPINCH, // 0x14c
- SPECIES_VIBRAVA, // 0x14d
- SPECIES_FLYGON, // 0x14e
- SPECIES_MAKUHITA, // 0x14f
- SPECIES_HARIYAMA, // 0x150
- SPECIES_ELECTRIKE, // 0x151
- SPECIES_MANECTRIC, // 0x152
- SPECIES_NUMEL, // 0x153
- SPECIES_CAMERUPT, // 0x154
- SPECIES_SPHEAL, // 0x155
- SPECIES_SEALEO, // 0x156
- SPECIES_WALREIN, // 0x157
- SPECIES_CACNEA, // 0x158
- SPECIES_CACTURNE, // 0x159
- SPECIES_SNORUNT, // 0x15a
- SPECIES_GLALIE, // 0x15b
- SPECIES_LUNATONE, // 0x15c
- SPECIES_SOLROCK, // 0x15d
- SPECIES_AZURILL, // 0x15e
- SPECIES_SPOINK, // 0x15f
- SPECIES_GRUMPIG, // 0x160
- SPECIES_PLUSLE, // 0x161
- SPECIES_MINUN, // 0x162
- SPECIES_MAWILE, // 0x163
- SPECIES_MEDITITE, // 0x164
- SPECIES_MEDICHAM, // 0x165
- SPECIES_SWABLU, // 0x166
- SPECIES_ALTARIA, // 0x167
- SPECIES_WYNAUT, // 0x168
- SPECIES_DUSKULL, // 0x169
- SPECIES_DUSCLOPS, // 0x16a
- SPECIES_ROSELIA, // 0x16b
- SPECIES_SLAKOTH, // 0x16c
- SPECIES_VIGOROTH, // 0x16d
- SPECIES_SLAKING, // 0x16e
- SPECIES_GULPIN, // 0x16f
- SPECIES_SWALOT, // 0x170
- SPECIES_TROPIUS, // 0x171
- SPECIES_WHISMUR, // 0x172
- SPECIES_LOUDRED, // 0x173
- SPECIES_EXPLOUD, // 0x174
- SPECIES_CLAMPERL, // 0x175
- SPECIES_HUNTAIL, // 0x176
- SPECIES_GOREBYSS, // 0x177
- SPECIES_ABSOL, // 0x178
- SPECIES_SHUPPET, // 0x179
- SPECIES_BANETTE, // 0x17a
- SPECIES_SEVIPER, // 0x17b
- SPECIES_ZANGOOSE, // 0x17c
- SPECIES_RELICANTH, // 0x17d
- SPECIES_ARON, // 0x17e
- SPECIES_LAIRON, // 0x17f
- SPECIES_AGGRON, // 0x180
- SPECIES_CASTFORM, // 0x181
- SPECIES_VOLBEAT, // 0x182
- SPECIES_ILLUMISE, // 0x183
- SPECIES_LILEEP, // 0x184
- SPECIES_CRADILY, // 0x185
- SPECIES_ANORITH, // 0x186
- SPECIES_ARMALDO, // 0x187
- SPECIES_RALTS, // 0x188
- SPECIES_KIRLIA, // 0x189
- SPECIES_GARDEVOIR, // 0x18a
- SPECIES_BAGON, // 0x18b
- SPECIES_SHELGON, // 0x18c
- SPECIES_SALAMENCE, // 0x18d
- SPECIES_BELDUM, // 0x18e
- SPECIES_METANG, // 0x18f
- SPECIES_METAGROSS, // 0x190
- SPECIES_REGIROCK, // 0x191
- SPECIES_REGICE, // 0x192
- SPECIES_REGISTEEL, // 0x193
- SPECIES_KYOGRE, // 0x194
- SPECIES_GROUDON, // 0x195
- SPECIES_RAYQUAZA, // 0x196
- SPECIES_LATIAS, // 0x197
- SPECIES_LATIOS, // 0x198
- SPECIES_JIRACHI, // 0x199
- SPECIES_DEOXYS, // 0x19a
- SPECIES_CHIMECHO, // 0x19b
- SPECIES_EGG, // 0x19c
+ SPECIES_TREECKO, // 0x115
+ SPECIES_GROVYLE, // 0x116
+ SPECIES_SCEPTILE, // 0x117
+ SPECIES_TORCHIC, // 0x118
+ SPECIES_COMBUSKEN, // 0x119
+ SPECIES_BLAZIKEN, // 0x11a
+ SPECIES_MUDKIP, // 0x11b
+ SPECIES_MARSHTOMP, // 0x11c
+ SPECIES_SWAMPERT, // 0x11d
+ SPECIES_POOCHYENA, // 0x11e
+ SPECIES_MIGHTYENA, // 0x11f
+ SPECIES_ZIGZAGOON, // 0x120
+ SPECIES_LINOONE, // 0x121
+ SPECIES_WURMPLE, // 0x122
+ SPECIES_SILCOON, // 0x123
+ SPECIES_BEAUTIFLY, // 0x124
+ SPECIES_CASCOON, // 0x125
+ SPECIES_DUSTOX, // 0x126
+ SPECIES_LOTAD, // 0x127
+ SPECIES_LOMBRE, // 0x128
+ SPECIES_LUDICOLO, // 0x129
+ SPECIES_SEEDOT, // 0x12a
+ SPECIES_NUZLEAF, // 0x12b
+ SPECIES_SHIFTRY, // 0x12c
+ SPECIES_NINCADA, // 0x12d
+ SPECIES_NINJASK, // 0x12e
+ SPECIES_SHEDINJA, // 0x12f
+ SPECIES_TAILLOW, // 0x130
+ SPECIES_SWELLOW, // 0x131
+ SPECIES_SHROOMISH, // 0x132
+ SPECIES_BRELOOM, // 0x133
+ SPECIES_SPINDA, // 0x134
+ SPECIES_WINGULL, // 0x135
+ SPECIES_PELIPPER, // 0x136
+ SPECIES_SURSKIT, // 0x137
+ SPECIES_MASQUERAIN, // 0x138
+ SPECIES_WAILMER, // 0x139
+ SPECIES_WAILORD, // 0x13a
+ SPECIES_SKITTY, // 0x13b
+ SPECIES_DELCATTY, // 0x13c
+ SPECIES_KECLEON, // 0x13d
+ SPECIES_BALTOY, // 0x13e
+ SPECIES_CLAYDOL, // 0x13f
+ SPECIES_NOSEPASS, // 0x140
+ SPECIES_TORKOAL, // 0x141
+ SPECIES_SABLEYE, // 0x142
+ SPECIES_BARBOACH, // 0x143
+ SPECIES_WHISCASH, // 0x144
+ SPECIES_LUVDISC, // 0x145
+ SPECIES_CORPHISH, // 0x146
+ SPECIES_CRAWDAUNT, // 0x147
+ SPECIES_FEEBAS, // 0x148
+ SPECIES_MILOTIC, // 0x149
+ SPECIES_CARVANHA, // 0x14a
+ SPECIES_SHARPEDO, // 0x14b
+ SPECIES_TRAPINCH, // 0x14c
+ SPECIES_VIBRAVA, // 0x14d
+ SPECIES_FLYGON, // 0x14e
+ SPECIES_MAKUHITA, // 0x14f
+ SPECIES_HARIYAMA, // 0x150
+ SPECIES_ELECTRIKE, // 0x151
+ SPECIES_MANECTRIC, // 0x152
+ SPECIES_NUMEL, // 0x153
+ SPECIES_CAMERUPT, // 0x154
+ SPECIES_SPHEAL, // 0x155
+ SPECIES_SEALEO, // 0x156
+ SPECIES_WALREIN, // 0x157
+ SPECIES_CACNEA, // 0x158
+ SPECIES_CACTURNE, // 0x159
+ SPECIES_SNORUNT, // 0x15a
+ SPECIES_GLALIE, // 0x15b
+ SPECIES_LUNATONE, // 0x15c
+ SPECIES_SOLROCK, // 0x15d
+ SPECIES_AZURILL, // 0x15e
+ SPECIES_SPOINK, // 0x15f
+ SPECIES_GRUMPIG, // 0x160
+ SPECIES_PLUSLE, // 0x161
+ SPECIES_MINUN, // 0x162
+ SPECIES_MAWILE, // 0x163
+ SPECIES_MEDITITE, // 0x164
+ SPECIES_MEDICHAM, // 0x165
+ SPECIES_SWABLU, // 0x166
+ SPECIES_ALTARIA, // 0x167
+ SPECIES_WYNAUT, // 0x168
+ SPECIES_DUSKULL, // 0x169
+ SPECIES_DUSCLOPS, // 0x16a
+ SPECIES_ROSELIA, // 0x16b
+ SPECIES_SLAKOTH, // 0x16c
+ SPECIES_VIGOROTH, // 0x16d
+ SPECIES_SLAKING, // 0x16e
+ SPECIES_GULPIN, // 0x16f
+ SPECIES_SWALOT, // 0x170
+ SPECIES_TROPIUS, // 0x171
+ SPECIES_WHISMUR, // 0x172
+ SPECIES_LOUDRED, // 0x173
+ SPECIES_EXPLOUD, // 0x174
+ SPECIES_CLAMPERL, // 0x175
+ SPECIES_HUNTAIL, // 0x176
+ SPECIES_GOREBYSS, // 0x177
+ SPECIES_ABSOL, // 0x178
+ SPECIES_SHUPPET, // 0x179
+ SPECIES_BANETTE, // 0x17a
+ SPECIES_SEVIPER, // 0x17b
+ SPECIES_ZANGOOSE, // 0x17c
+ SPECIES_RELICANTH, // 0x17d
+ SPECIES_ARON, // 0x17e
+ SPECIES_LAIRON, // 0x17f
+ SPECIES_AGGRON, // 0x180
+ SPECIES_CASTFORM, // 0x181
+ SPECIES_VOLBEAT, // 0x182
+ SPECIES_ILLUMISE, // 0x183
+ SPECIES_LILEEP, // 0x184
+ SPECIES_CRADILY, // 0x185
+ SPECIES_ANORITH, // 0x186
+ SPECIES_ARMALDO, // 0x187
+ SPECIES_RALTS, // 0x188
+ SPECIES_KIRLIA, // 0x189
+ SPECIES_GARDEVOIR, // 0x18a
+ SPECIES_BAGON, // 0x18b
+ SPECIES_SHELGON, // 0x18c
+ SPECIES_SALAMENCE, // 0x18d
+ SPECIES_BELDUM, // 0x18e
+ SPECIES_METANG, // 0x18f
+ SPECIES_METAGROSS, // 0x190
+ SPECIES_REGIROCK, // 0x191
+ SPECIES_REGICE, // 0x192
+ SPECIES_REGISTEEL, // 0x193
+ SPECIES_KYOGRE, // 0x194
+ SPECIES_GROUDON, // 0x195
+ SPECIES_RAYQUAZA, // 0x196
+ SPECIES_LATIAS, // 0x197
+ SPECIES_LATIOS, // 0x198
+ SPECIES_JIRACHI, // 0x199
+ SPECIES_DEOXYS, // 0x19a
+ SPECIES_CHIMECHO, // 0x19b
+ SPECIES_EGG, // 0x19c
- SPECIES_UNOWN_B,
- SPECIES_UNOWN_C,
- SPECIES_UNOWN_D,
- SPECIES_UNOWN_E,
- SPECIES_UNOWN_F,
- SPECIES_UNOWN_G,
- SPECIES_UNOWN_H,
- SPECIES_UNOWN_I,
- SPECIES_UNOWN_J,
- SPECIES_UNOWN_K,
- SPECIES_UNOWN_L,
- SPECIES_UNOWN_M,
- SPECIES_UNOWN_N,
- SPECIES_UNOWN_O,
- SPECIES_UNOWN_P,
- SPECIES_UNOWN_Q,
- SPECIES_UNOWN_R,
- SPECIES_UNOWN_S,
- SPECIES_UNOWN_T,
- SPECIES_UNOWN_U,
- SPECIES_UNOWN_V,
- SPECIES_UNOWN_W,
- SPECIES_UNOWN_X,
- SPECIES_UNOWN_Y,
- SPECIES_UNOWN_Z,
- SPECIES_UNOWN_EMARK,
- SPECIES_UNOWN_QMARK,
+ SPECIES_UNOWN_B,
+ SPECIES_UNOWN_C,
+ SPECIES_UNOWN_D,
+ SPECIES_UNOWN_E,
+ SPECIES_UNOWN_F,
+ SPECIES_UNOWN_G,
+ SPECIES_UNOWN_H,
+ SPECIES_UNOWN_I,
+ SPECIES_UNOWN_J,
+ SPECIES_UNOWN_K,
+ SPECIES_UNOWN_L,
+ SPECIES_UNOWN_M,
+ SPECIES_UNOWN_N,
+ SPECIES_UNOWN_O,
+ SPECIES_UNOWN_P,
+ SPECIES_UNOWN_Q,
+ SPECIES_UNOWN_R,
+ SPECIES_UNOWN_S,
+ SPECIES_UNOWN_T,
+ SPECIES_UNOWN_U,
+ SPECIES_UNOWN_V,
+ SPECIES_UNOWN_W,
+ SPECIES_UNOWN_X,
+ SPECIES_UNOWN_Y,
+ SPECIES_UNOWN_Z,
+ SPECIES_UNOWN_EMARK,
+ SPECIES_UNOWN_QMARK,
};
#define NUM_SPECIES SPECIES_EGG
diff --git a/include/sprite.h b/include/sprite.h
index 13d94e9f3..42620c9e9 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -5,7 +5,7 @@
struct SpriteSheet
{
- u8 *data;
+ const u8 *data;
u16 size;
u16 tag;
};
@@ -18,7 +18,7 @@ struct SpriteFrameImage
struct SpritePalette
{
- u16 *data;
+ const u16 *data;
u16 tag;
};
@@ -45,6 +45,9 @@ struct AnimJumpCmd
u32 target:6;
};
+// The first halfword of this union specifies the type of command.
+// If it -2, then it is a jump command. If it is -1, then it is the end of the script.
+// Otherwise, it is the imageValue for a frame command.
union AnimCmd
{
s16 type;
@@ -53,6 +56,13 @@ union AnimCmd
struct AnimJumpCmd jump;
};
+#define ANIMCMD_FRAME(...) \
+ {.frame = {__VA_ARGS__}}
+#define ANIMCMD_JUMP(_target) \
+ {.jump = {.type = -2, .target = _target}}
+#define ANIMCMD_END \
+ {.type = -1}
+
struct AffineAnimFrameCmd
{
s16 xScale;
@@ -81,6 +91,11 @@ union AffineAnimCmd
struct AffineAnimJumpCmd jump;
};
+#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
+ {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
+#define AFFINEANIMCMD_END \
+ {.type = 0x7FFF}
+
struct AffineAnimState
{
u8 animNum;
@@ -121,21 +136,21 @@ struct SpriteTemplate
{
u16 tileTag;
u16 paletteTag;
- struct OamData *oam;
- union AnimCmd **anims;
+ const struct OamData *oam;
+ const union AnimCmd *const *anims;
struct SpriteFrameImage *images;
- union AffineAnimCmd **affineAnims;
+ const union AffineAnimCmd *const *affineAnims;
void (*callback)(struct Sprite *);
};
struct Sprite
{
/*0x00*/ struct OamData oam;
- /*0x08*/ union AnimCmd **anims;
- /*0x0C*/ struct SpriteFrameImage *images;
- /*0x10*/ union AffineAnimCmd **affineAnims;
+ /*0x08*/ const union AnimCmd *const *anims;
+ /*0x0C*/ const struct SpriteFrameImage *images;
+ /*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
- /*0x18*/ struct SubspriteTable *subspriteTables;
+ /*0x18*/ const struct SubspriteTable *subspriteTables;
/*0x1C*/ void (*callback)(struct Sprite *);
/*0x20*/ struct Coords16 pos1;
@@ -185,6 +200,10 @@ struct Sprite
/*0x43*/ u8 subpriority;
};
+extern const struct OamData gDummyOamData;
+extern const union AnimCmd *const gDummySpriteAnimTable[];
+extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
@@ -194,7 +213,7 @@ void ResetSpriteData(void);
void AnimateSprites(void);
void BuildOamBuffer(void);
u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
-u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, u16 x, u16 y, u8 subpriority);
+u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
u8 CreateInvisibleSprite(void (*callback)(struct Sprite *));
u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
void DestroySprite(struct Sprite *sprite);
@@ -204,7 +223,7 @@ void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d);
void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode);
void SpriteCallbackDummy(struct Sprite *sprite);
void ProcessSpriteCopyRequests(void);
-void RequestSpriteCopy(u8 *src, u8 *dest, u16 size);
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size);
void FreeSpriteTiles(struct Sprite *sprite);
void FreeSpritePalette(struct Sprite *sprite);
void FreeSpriteOamMatrix(struct Sprite *sprite);
@@ -223,18 +242,18 @@ u8 AllocOamMatrix(void);
void FreeOamMatrix(u8 matrixNum);
void InitSpriteAffineAnim(struct Sprite *sprite);
void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation);
-u16 LoadSpriteSheet(struct SpriteSheet *sheet);
-void LoadSpriteSheets(struct SpriteSheet *sheets);
+u16 LoadSpriteSheet(const struct SpriteSheet *sheet);
+void LoadSpriteSheets(const struct SpriteSheet *sheets);
u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet);
void AllocTilesForSpriteSheets(struct SpriteSheet *sheets);
-void LoadTilesForSpriteSheet(struct SpriteSheet *sheet);
+void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet);
void LoadTilesForSpriteSheets(struct SpriteSheet *sheets);
void FreeSpriteTilesByTag(u16 tag);
void FreeSpriteTileRanges(void);
u16 GetSpriteTileStartByTag(u16 tag);
u16 GetSpriteTileTagByTileStart(u16 start);
-void RequestSpriteSheetCopy(struct SpriteSheet *sheet);
-u16 LoadSpriteSheetDeferred(struct SpriteSheet *sheet);
+void RequestSpriteSheetCopy(const struct SpriteSheet *sheet);
+u16 LoadSpriteSheetDeferred(const struct SpriteSheet *sheet);
void FreeAllSpritePalettes(void);
u8 LoadSpritePalette(const struct SpritePalette *palette);
void LoadSpritePalettes(const struct SpritePalette *palettes);
@@ -242,11 +261,13 @@ u8 AllocSpritePalette(u16 tag);
u8 IndexOfSpritePaletteTag(u16 tag);
u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum);
void FreeSpritePaletteByTag(u16 tag);
-void SetSubspriteTables(struct Sprite *sprite, struct SubspriteTable *subspriteTables);
+void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables);
bool8 AddSpriteToOamBuffer(struct Sprite *object, u8 *oamIndex);
bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u8 *oamIndex);
void CopyToSprites(u8 *src);
void CopyFromSprites(u8 *dest);
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
+extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+
#endif // GUARD_SPRITE_H
diff --git a/include/starter_choose.h b/include/starter_choose.h
index 4a7e0514c..008d1b14e 100644
--- a/include/starter_choose.h
+++ b/include/starter_choose.h
@@ -5,9 +5,5 @@
u16 GetStarterPokemon(u16);
void CB2_ChooseStarter(void);
-void nullsub_72(struct Sprite *sprite);
-void sub_810A62C(struct Sprite *sprite);
-void sub_810A68C(struct Sprite *sprite);
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/strings.h b/include/strings.h
new file mode 100644
index 000000000..89a78e478
--- /dev/null
+++ b/include/strings.h
@@ -0,0 +1,905 @@
+#ifndef GUARD_STRINGS_H
+#define GUARD_STRINGS_H
+
+// placeholder strings
+extern const u8 gExpandedPlaceholder_Empty[];
+extern const u8 gExpandedPlaceholder_Kun[];
+extern const u8 gExpandedPlaceholder_Chan[];
+extern const u8 gExpandedPlaceholder_Sapphire[];
+extern const u8 gExpandedPlaceholder_Ruby[];
+extern const u8 gExpandedPlaceholder_Aqua[];
+extern const u8 gExpandedPlaceholder_Magma[];
+extern const u8 gExpandedPlaceholder_Archie[];
+extern const u8 gExpandedPlaceholder_Maxie[];
+extern const u8 gExpandedPlaceholder_Kyogre[];
+extern const u8 gExpandedPlaceholder_Groudon[];
+extern const u8 gExpandedPlaceholder_Brendan[];
+extern const u8 gExpandedPlaceholder_May[];
+
+// system text
+extern const u8 gSystemText_Egg[];
+extern const u8 gSystemText_Pokemon2[];
+
+// main menu text
+extern const u8 gMainMenuString_NewGame[];
+extern const u8 gMainMenuString_Continue[];
+extern const u8 gMainMenuString_Option[];
+extern const u8 gMainMenuString_MysteryEvents[];
+
+// system text 2
+extern const u8 SystemText_UpdatingSaveExternal[];
+extern const u8 SystemText_SaveUpdated[];
+extern const u8 SystemText_SaveUpdatedExchangeBackup[];
+extern const u8 SystemText_SaveNotUpdated[];
+
+// save file text
+extern const u8 gSaveFileCorruptMessage[];
+extern const u8 gSaveFileDeletedMessage[];
+
+// system text 3
+extern const u8 gBoardNotInstalledMessage[];
+extern const u8 gBatteryDryMessage[];
+
+// main menu text 2
+extern const u8 gMainMenuString_Player[];
+extern const u8 gMainMenuString_Pokedex[];
+extern const u8 gMainMenuString_Time[];
+extern const u8 gMainMenuString_Badges[];
+
+// birch text
+extern const u8 gBirchText_Boy[];
+extern const u8 gBirchText_Girl[];
+extern const u8 gBirchText_NewName[];
+
+extern const u8 gDefaultBoyName1[];
+extern const u8 gDefaultBoyName2[];
+extern const u8 gDefaultBoyName3[];
+extern const u8 gDefaultBoyName4[];
+
+extern const u8 gDefaultGirlName1[];
+extern const u8 gDefaultGirlName2[];
+extern const u8 gDefaultGirlName3[];
+extern const u8 gDefaultGirlName4[];
+
+extern const u8 gSystemText_IntroWeCall[];
+extern const u8 gSystemText_NewPara[];
+
+extern const u8 gDexText_UnknownPoke[];
+extern const u8 gDexText_UnknownHeight[];
+extern const u8 gDexText_UnknownWeight[];
+extern const u8 gDexText_CryOf[];
+extern const u8 gDexText_SizeComparedTo[];
+extern const u8 gDexText_RegisterComplete[];
+extern const u8 gDexText_Searching[];
+extern const u8 gDexText_SearchComplete[];
+extern const u8 gDexText_NoMatching[];
+
+extern const u8 DexText_SearchForPoke[];
+extern const u8 DexText_SwitchDex[];
+extern const u8 DexText_ReturnToDex[];
+extern const u8 DexText_SelectDexMode[];
+extern const u8 DexText_SelectDexList[];
+extern const u8 DexText_ListByABC[];
+extern const u8 DexText_ListByColor[];
+extern const u8 DexText_ListByType[];
+extern const u8 DexText_ExecuteSearchSwitch[];
+extern const u8 DexText_HoennDex[];
+extern const u8 DexText_NationalDex[];
+extern const u8 DexText_NumericalMode[];
+extern const u8 DexText_ABCMode[];
+extern const u8 DexText_HeaviestMode[];
+extern const u8 DexText_LightestMode[];
+extern const u8 DexText_TallestMode[];
+extern const u8 DexText_SmallestMode[];
+extern const u8 DexText_ABC[];
+extern const u8 DexText_DEF[];
+extern const u8 DexText_GHI[];
+extern const u8 DexText_JKL[];
+extern const u8 DexText_MNO[];
+extern const u8 DexText_PQR[];
+extern const u8 DexText_STU[];
+extern const u8 DexText_VWX[];
+extern const u8 DexText_YZ[];
+extern const u8 DexText_Red[];
+extern const u8 DexText_Blue[];
+extern const u8 DexText_Yellow[];
+extern const u8 DexText_Green[];
+extern const u8 DexText_Black[];
+extern const u8 DexText_Brown[];
+extern const u8 DexText_Purple[];
+extern const u8 DexText_Gray[];
+extern const u8 DexText_White[];
+extern const u8 DexText_Pink[];
+extern const u8 DexText_HoennDex2[];
+extern const u8 DexText_NationalDex2[];
+extern const u8 DexText_ListByNumber[];
+extern const u8 DexText_ListByABC2[];
+extern const u8 DexText_ListByHeavyToLightest[];
+extern const u8 DexText_ListByLightToHeaviest[];
+extern const u8 DexText_ListByTallToSmallest[];
+extern const u8 DexText_ListBySmallToTallest[];
+extern const u8 DexText_Terminator5[];
+extern const u8 DexText_DontSpecify[];
+extern const u8 DexText_None[];
+extern const u8 DexText_RightPointingTriangle[];
+extern const u8 DexText_Terminator6[];
+
+extern const u8 gMenuText_WelcomeToHOFAndDexRating[];
+extern const u8 gMenuText_HOFSaving[];
+extern const u8 gMenuText_HOFCorrupt[];
+extern const u8 gMenuText_HOFNumber[];
+extern const u8 gMenuText_HOFCongratulations[];
+
+extern const u8 gOtherText_Number2[];
+extern const u8 gOtherText_Level3[];
+extern const u8 gOtherText_IDNumber[];
+extern const u8 gOtherText_Name[];
+extern const u8 gOtherText_IDNumber2[];
+extern const u8 gOtherText_BirchInTrouble[];
+extern const u8 gOtherText_DoYouChoosePoke[];
+extern const u8 gOtherText_Poke[];
+
+extern const u8 gSystemText_SaveErrorExchangeBackup[];
+extern const u8 gOtherText_FlyToWhere[];
+
+extern const u8 OtherText_Use[];
+extern const u8 OtherText_Toss[];
+extern const u8 OtherText_Register[];
+extern const u8 OtherText_Give2[];
+extern const u8 OtherText_CheckTag[];
+extern const u8 OtherText_Confirm[];
+extern const u8 gOtherText_Walk[];
+
+extern const u8 gUnknownText_Exit[];
+extern const u8 gOtherText_CancelNoTerminator[];
+extern const u8 gOtherText_CancelWithTerminator[];
+
+extern const u8 OtherText_Item[];
+extern const u8 OtherText_Mail[];
+extern const u8 OtherText_Take2[];
+extern const u8 OtherText_Store[];
+
+extern const u8 gOtherText_Check[];
+extern const u8 gOtherText_None[];
+
+extern const u8 gOtherText_ThreeQuestions2[];
+
+extern const u8 gOtherText_FiveQuestionsAndSlash[];
+
+extern const u8 gOtherText_OneDash[];
+extern const u8 gOtherText_TwoDashes[];
+extern const u8 gOtherText_ThreeDashes2[];
+extern const u8 gOtherText_MaleSymbol2[];
+extern const u8 gOtherText_FemaleSymbolAndLv[];
+extern const u8 gOtherText_TallPlusAndRightArrow[];
+extern const u8 gMenuText_GoBackToPrev[];
+extern const u8 gOtherText_WhatWillYouDo[];
+
+extern const u8 gOtherText_xString1[];
+extern const u8 gOtherText_Berry2[];
+extern const u8 gOtherText_Coins2[];
+extern const u8 gOtherText_CloseBag[];
+
+extern const u8 OtherText_TheField3[];
+extern const u8 OtherText_TheBattle[];
+extern const u8 OtherText_ThePokeList[];
+extern const u8 OtherText_TheShop[];
+extern const u8 OtherText_TheField[];
+extern const u8 OtherText_TheField2[];
+extern const u8 OtherText_ThePC[];
+
+extern const struct TextStruct gUnknown_0840E740[];
+
+extern const u8 gOtherText_ReturnTo[];
+extern const u8 gOtherText_WhatWillYouDo2[];
+extern const u8 gOtherText_CantWriteMail[];
+extern const u8 gOtherText_NoPokemon[];
+extern const u8 gOtherText_SwitchWhichItem[];
+extern const u8 gOtherText_CantBeHeld[];
+extern const u8 gOtherText_CantBeHeldHere[];
+extern const u8 gOtherText_HowManyToDeposit[];
+extern const u8 gOtherText_DepositedItems[];
+extern const u8 gOtherText_NoRoomForItems[];
+extern const u8 gOtherText_CantStoreSomeoneItem[];
+extern const u8 gOtherText_TooImportant[];
+extern const u8 gOtherText_HowManyToToss[];
+extern const u8 gOtherText_ThrewAwayItem[];
+extern const u8 gOtherText_OkayToThrowAwayPrompt[];
+extern const u8 gOtherText_DadsAdvice[];
+extern const u8 gOtherText_CantGetOffBike[];
+extern const u8 gOtherText_ItemfinderResponding[];
+extern const u8 gOtherText_ItemfinderItemUnderfoot[];
+extern const u8 gOtherText_NoResponse[];
+extern const u8 gOtherText_Coins3[];
+extern const u8 gOtherText_BootedTM[];
+extern const u8 gOtherText_BootedHM[];
+extern const u8 gOtherText_ContainsMove[];
+extern const u8 gOtherText_UsedItem[];
+extern const u8 gOtherText_RepelLingers[];
+extern const u8 gOtherText_UsedFlute[];
+extern const u8 gOtherText_UsedRepel[];
+extern const u8 gOtherText_BoxIsFull[];
+extern const u8 gOtherText_Size[];
+extern const u8 gOtherText_Firm[];
+
+extern const u8 gContestStatsText_Unknown1[];
+
+extern const u8 ContestStatsText_VerySoft[];
+extern const u8 ContestStatsText_Soft[];
+extern const u8 ContestStatsText_Hard[];
+extern const u8 ContestStatsText_VeryHard[];
+extern const u8 ContestStatsText_SuperHard[];
+
+extern const u8 ContestStatsText_RedPokeBlock[];
+extern const u8 ContestStatsText_BluePokeBlock[];
+extern const u8 ContestStatsText_PinkPokeBlock[];
+extern const u8 ContestStatsText_GreenPokeBlock[];
+extern const u8 ContestStatsText_YellowPokeBlock[];
+extern const u8 ContestStatsText_PurplePokeBlock[];
+extern const u8 ContestStatsText_IndigoPokeBlock[];
+extern const u8 ContestStatsText_BrownPokeBlock[];
+extern const u8 ContestStatsText_LiteBluePokeBlock[];
+extern const u8 ContestStatsText_OlivePokeBlock[];
+extern const u8 ContestStatsText_GrayPokeBlock[];
+extern const u8 ContestStatsText_BlackPokeBlock[];
+extern const u8 ContestStatsText_WhitePokeBlock[];
+extern const u8 ContestStatsText_GoldPokeBlock[];
+
+extern const u8 gContestStatsText_Spicy[];
+extern const u8 gContestStatsText_Dry[];
+extern const u8 gContestStatsText_Sweet[];
+extern const u8 gContestStatsText_Bitter[];
+extern const u8 gContestStatsText_Sour[];
+
+extern const u8 gContestStatsText_StowCase[];
+extern const u8 gContestStatsText_ThrowAwayPrompt[];
+extern const u8 gContestStatsText_WasThrownAway[];
+extern const u8 gContestStatsText_NormallyAte[];
+extern const u8 gContestStatsText_HappilyAte[];
+extern const u8 gContestStatsText_DisdainfullyAte[];
+
+extern const u8 MartText_Buy[];
+extern const u8 MartText_Sell[];
+extern const u8 MartText_Quit2[];
+
+extern const u8 gOtherText_QuitShopping[];
+
+extern const u8 gOtherText_HowManyYouWant[];
+extern const u8 gOtherText_ThatWillBe[];
+extern const u8 gOtherText_ThatWillBe2[];
+extern const u8 gOtherText_ThatWillBe3[];
+extern const u8 gOtherText_HereYouGo[];
+extern const u8 gOtherText_HereYouGo2[];
+extern const u8 gOtherText_HereYouGo3[];
+extern const u8 gOtherText_NotEnoughMoney[];
+extern const u8 gOtherText_NoRoomFor[];
+extern const u8 gOtherText_SpaceForIsFull[];
+extern const u8 gOtherText_AnythingElse[];
+extern const u8 gOtherText_CanIHelpYou[];
+extern const u8 gOtherText_FreePremierBall[];
+extern const u8 gOtherText_CantBuyThat[];
+extern const u8 gOtherText_HowManyToSell[];
+extern const u8 gOtherText_CanPay[];
+extern const u8 gOtherText_SoldItem[];
+
+extern const u8 OtherText_Money[];
+extern const u8 OtherText_Shift[];
+extern const u8 OtherText_SendOut[];
+extern const u8 OtherText_Switch2[];
+extern const u8 OtherText_Summary[];
+extern const u8 OtherText_Moves[];
+extern const u8 OtherText_Enter2[];
+extern const u8 OtherText_NoEntry[];
+extern const u8 OtherText_Take[];
+extern const u8 OtherText_Read2[];
+
+extern const u8 gOtherText_Hp2[];
+extern const u8 gOtherText_SpAtk2[];
+extern const u8 gOtherText_SpDef2[];
+extern const u8 gOtherText_WontHaveAnyEffect[];
+
+extern const u8 gOtherText_CantUseOnPoke[];
+
+extern const u8 gOtherText_CantBeSwitched[];
+extern const u8 gOtherText_AlreadyBattle[];
+extern const u8 gOtherText_AlreadySelected[];
+extern const u8 gOtherText_NoEnergyLeft[];
+extern const u8 gOtherText_CantSwitchPokeWithYours[];
+extern const u8 gOtherText_EGGCantBattle[];
+extern const u8 gOtherText_CantBeUsedBadge[];
+extern const u8 gOtherText_NoMoreThreePoke[];
+extern const u8 gOtherText_SendRemovedMailPrompt[];
+extern const u8 gOtherText_MailWasSent[];
+extern const u8 gOtherText_MailboxIsFull[];
+extern const u8 gOtherText_MailRemovedMessageLost[];
+extern const u8 gOtherText_MailMustBeRemoved[];
+extern const u8 gOtherText_WasGivenToHold[];
+extern const u8 gOtherText_AlreadyHolding[];
+extern const u8 gOtherText_NotHoldingAnything[];
+extern const u8 gOtherText_ReceivedTheThingFrom[];
+extern const u8 gOtherText_MailTaken[];
+extern const u8 gOtherText_TakenAndReplaced[];
+extern const u8 gOtherText_PokeHoldingItemCantMail[];
+extern const u8 gOtherText_MailTransferredMailbox[];
+extern const u8 gOtherText_BagFullCannotRemoveItem[];
+extern const u8 gOtherText_LearnedMove[];
+extern const u8 gOtherText_NotCompatible[];
+extern const u8 gOtherText_WantsToLearn[];
+extern const u8 gOtherText_StopTryingTo[];
+extern const u8 gOtherText_DidNotLearnMove2[];
+extern const u8 gOtherText_WhichMoveToForget2[];
+extern const u8 gOtherText_ForgetMove123_2[];
+extern const u8 gOtherText_AlreadyKnows[];
+extern const u8 gOtherText_HPRestoredBy[];
+extern const u8 gOtherText_CuredPoisoning[];
+extern const u8 gOtherText_CuredParalysis[];
+extern const u8 gOtherText_WokeUp[];
+extern const u8 gOtherText_BurnHealed[];
+extern const u8 gOtherText_ThawedOut[];
+extern const u8 gOtherText_PPRestored[];
+extern const u8 gOtherText_RegainedHealth[];
+extern const u8 gOtherText_BecameHealthy[];
+extern const u8 gOtherText_PPIncreased[];
+extern const u8 gOtherText_ElevatedTo[];
+extern const u8 gOtherText_WasRaised[];
+extern const u8 gOtherText_SnapConfusion[];
+extern const u8 gOtherText_GotOverLove[];
+extern const u8 OtherText_ChoosePoke[];
+extern const u8 OtherText_MovePokeTo[];
+extern const u8 OtherText_TeachWhat[];
+extern const u8 OtherText_UseWhat[];
+extern const u8 OtherText_GiveWhat[];
+extern const u8 OtherText_DoWhat[];
+extern const u8 OtherText_NothingToCut[];
+extern const u8 OtherText_CantSurf[];
+extern const u8 OtherText_AlreadySurfing[];
+extern const u8 OtherText_CantUseThatHere[];
+extern const u8 OtherText_RestoreWhatMove[];
+extern const u8 OtherText_BoostPP[];
+extern const u8 OtherText_DoWhatWithItem[];
+extern const u8 OtherText_NoPokeForBattle[];
+extern const u8 OtherText_ChoosePoke2[];
+extern const u8 OtherText_NotEnoughHP[];
+extern const u8 OtherText_ThreePokeNeeded[];
+extern const u8 OtherText_PokeCantBeSame[];
+extern const u8 OtherText_NoIdenticalHoldItems[];
+extern const u8 OtherText_TeachWhichPoke[];
+extern const u8 gOtherText_Attack[];
+extern const u8 gOtherText_Defense[];
+extern const u8 gOtherText_SpAtk[];
+extern const u8 gOtherText_SpDef[];
+extern const u8 gOtherText_Speed[];
+extern const u8 gOtherText_HP[];
+extern const u8 gOtherText_Terminator18[];
+extern const u8 gOtherText_OriginalTrainer[];
+extern const u8 gOtherText_Type2[];
+extern const u8 gOtherText_Power2[];
+extern const u8 gOtherText_Accuracy2[];
+extern const u8 gOtherText_Appeal2[];
+extern const u8 gOtherText_Jam2[];
+extern const u8 gOtherText_Status[];
+extern const u8 gOtherText_ExpPoints[];
+extern const u8 gOtherText_NextLv[];
+extern const u8 gOtherText_Ribbons00[];
+
+extern const u8 OtherText_Event[];
+extern const u8 OtherText_Switch[];
+extern const u8 OtherText_PokeInfo[];
+extern const u8 OtherText_PokeSkills[];
+extern const u8 OtherText_BattleMoves[];
+extern const u8 OtherText_ContestMoves[];
+extern const u8 OtherText_Info[];
+
+extern const u8 gOtherText_EggLongTime[];
+extern const u8 gOtherText_EggSomeTime[];
+extern const u8 gOtherText_EggSoon[];
+extern const u8 gOtherText_EggAbout[];
+extern const u8 gOtherText_CantForgetHMs[];
+extern const u8 gOtherText_PlayersBase[];
+extern const u8 gOtherText_OkayToDeleteFromRegistry[];
+extern const u8 gOtherText_RegisteredDataDeleted[];
+
+extern const u8 gSecretBaseText_NoRegistry[];
+extern const u8 SecretBaseText_DelRegist[];
+extern const u8 SecretBaseText_Decorate[];
+extern const u8 SecretBaseText_PutAway[];
+extern const u8 SecretBaseText_Toss[];
+extern const u8 SecretBaseText_PutOutDecor[];
+extern const u8 SecretBaseText_StoreChosenDecor[];
+extern const u8 SecretBaseText_ThrowAwayDecor[];
+extern const u8 gSecretBaseText_NoDecors[];
+extern const u8 SecretBaseText_Desk[];
+extern const u8 SecretBaseText_Chair[];
+extern const u8 SecretBaseText_Plant[];
+extern const u8 SecretBaseText_Ornament[];
+extern const u8 SecretBaseText_Mat[];
+extern const u8 SecretBaseText_Poster[];
+extern const u8 SecretBaseText_Doll[];
+extern const u8 SecretBaseText_Cushion[];
+extern const u8 gSecretBaseText_GoldRank[];
+extern const u8 gSecretBaseText_SilverRank[];
+extern const u8 gSecretBaseText_PlaceItHere[];
+extern const u8 gSecretBaseText_CantBePlacedHere[];
+extern const u8 gSecretBaseText_CancelDecorating[];
+extern const u8 gSecretBaseText_InUseAlready[];
+extern const u8 gSecretBaseText_NoMoreDecor[];
+extern const u8 gSecretBaseText_NoMoreDecor2[];
+extern const u8 gSecretBaseText_DecorCantPlace[];
+extern const u8 gSecretBaseText_DecorInUse[];
+extern const u8 gSecretBaseText_WillBeDiscarded[];
+extern const u8 gSecretBaseText_DecorThrownAway[];
+extern const u8 gSecretBaseText_StopPuttingAwayDecor[];
+extern const u8 gSecretBaseText_NoDecor[];
+extern const u8 gSecretBaseText_ReturnDecor[];
+extern const u8 gSecretBaseText_DecorReturned[];
+extern const u8 gSecretBaseText_NoDecorInUse[];
+extern const u8 SecretBaseText_Tristan[];
+extern const u8 SecretBaseText_Philip[];
+extern const u8 SecretBaseText_Dennis[];
+extern const u8 SecretBaseText_Roberto[];
+extern const u8 SecretBaseText_TurnOff[];
+extern const u8 SecretBaseText_Decoration[];
+extern const u8 SecretBaseText_ItemStorage[];
+
+extern const u8 gPCText_Mailbox[];
+extern const u8 PCText_DepositItem[];
+extern const u8 PCText_WithdrawItem[];
+extern const u8 PCText_TossItem[];
+extern const u8 PCText_StoreItems[];
+extern const u8 PCText_TakeOutItems[];
+extern const u8 PCText_ThrowAwayItems[];
+
+extern const u8 gOtherText_NoItems[];
+extern const u8 gOtherText_NoMoreRoom[];
+extern const u8 gOtherText_HowManyToWithdraw[];
+extern const u8 gOtherText_WithdrewThing[];
+extern const u8 OtherText_Read[];
+extern const u8 gOtherText_MoveToBag[];
+extern const u8 OtherText_Give[];
+extern const u8 gOtherText_NoMailHere[];
+extern const u8 gOtherText_WhatWillYouDoMail[];
+extern const u8 gOtherText_MessageWillBeLost[];
+extern const u8 gOtherText_BagIsFull[];
+extern const u8 gOtherText_MailWasReturned[];
+extern const u8 gOtherText_Dad[];
+extern const u8 gOtherText_Mom[];
+extern const u8 gOtherText_Wallace[];
+extern const u8 gOtherText_Steven[];
+extern const u8 gOtherText_Brawly[];
+extern const u8 gOtherText_Winona[];
+extern const u8 gOtherText_Phoebe[];
+extern const u8 gOtherText_Glacia[];
+extern const u8 gContestText_ContestWinner[];
+extern const u8 gOtherText_Unknown1[];
+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 OtherText_Petalburg[];
+extern const u8 OtherText_Slateport[];
+extern const u8 OtherText_Littleroot[];
+extern const u8 OtherText_Lilycove[];
+extern const u8 OtherText_Dewford[];
+extern const u8 OtherText_Enter[];
+extern const u8 OtherText_Info3[];
+extern const u8 OtherText_WhatsAContest[];
+extern const u8 OtherText_TypesOfContest[];
+extern const u8 OtherText_Ranks[];
+extern const u8 OtherText_Judging[];
+extern const u8 OtherText_CoolContest[];
+extern const u8 OtherText_BeautyContest[];
+extern const u8 OtherText_CuteContest[];
+extern const u8 OtherText_SmartContest[];
+extern const u8 OtherText_ToughContest[];
+extern const u8 OtherText_Decoration[];
+extern const u8 OtherText_PackUp[];
+extern const u8 OtherText_Count[];
+extern const u8 OtherText_Registry[];
+extern const u8 OtherText_Information[];
+extern const u8 OtherText_Mach[];
+extern const u8 OtherText_Acro[];
+extern const u8 OtherText_Poison[];
+extern const u8 OtherText_Paralysis[];
+extern const u8 OtherText_Sleep[];
+extern const u8 OtherText_Burn[];
+extern const u8 OtherText_Frozen[];
+extern const u8 OtherText_Quit[];
+extern const u8 OtherText_SawIt[];
+extern const u8 OtherText_NotYet[];
+extern const u8 OtherText_Yes[];
+extern const u8 OtherText_No[];
+extern const u8 OtherText_Info2[];
+extern const u8 OtherText_SingleBattle[];
+extern const u8 OtherText_DoubleBattle[];
+extern const u8 OtherText_MultiBattle[];
+extern const u8 OtherText_MrBriney[];
+extern const u8 OtherText_MakeAChallenge[];
+extern const u8 OtherText_ObtainInformation[];
+extern const u8 OtherText_Lv50_2[];
+extern const u8 OtherText_Lv100_2[];
+extern const u8 OtherText_Zigzagoon[];
+extern const u8 OtherText_Nincada[];
+extern const u8 OtherText_Poochyena[];
+extern const u8 OtherText_Nincada2[];
+extern const u8 OtherText_Lotad[];
+extern const u8 OtherText_Roselia[];
+extern const u8 OtherText_Shroomish[];
+extern const u8 OtherText_Nincada3[];
+extern const u8 OtherText_Surskit[];
+extern const u8 OtherText_Treecko[];
+extern const u8 OtherText_Torchic[];
+extern const u8 OtherText_Mudkip[];
+extern const u8 OtherText_Seedot[];
+extern const u8 OtherText_Shroomish2[];
+extern const u8 OtherText_Spinda[];
+extern const u8 OtherText_Shroomish3[];
+extern const u8 OtherText_Zigzagoon2[];
+extern const u8 OtherText_Wurmple[];
+extern const u8 OtherText_PokeBall[];
+extern const u8 OtherText_SuperPotion[];
+extern const u8 OtherText_SamePrice[];
+extern const u8 OtherText_Yen135[];
+extern const u8 OtherText_Yen155[];
+extern const u8 OtherText_Yen175[];
+extern const u8 OtherText_CostMore[];
+extern const u8 OtherText_CostLess[];
+extern const u8 OtherText_SamePrice2[];
+extern const u8 OtherText_MaleSymbol[];
+extern const u8 OtherText_FemaleSymbol[];
+extern const u8 OtherText_Neither[];
+extern const u8 OtherText_Males[];
+extern const u8 OtherText_Females[];
+extern const u8 OtherText_SameNumber[];
+extern const u8 OtherText_Male[];
+extern const u8 OtherText_Female[];
+extern const u8 OtherText_ItDepends[];
+extern const u8 OtherText_Six2[];
+extern const u8 OtherText_Eight2[];
+extern const u8 OtherText_Ten[];
+extern const u8 OtherText_One[];
+extern const u8 OtherText_Two[];
+extern const u8 OtherText_Three[];
+extern const u8 OtherText_Six[];
+extern const u8 OtherText_Seven[];
+extern const u8 OtherText_Eight[];
+extern const u8 OtherText_FreshWater[];
+extern const u8 OtherText_SodaPop[];
+extern const u8 OtherText_Lemonade[];
+extern const u8 OtherText_HowToRide[];
+extern const u8 OtherText_HowToTurn[];
+extern const u8 OtherText_SandySlopes[];
+extern const u8 OtherText_Wheelies[];
+extern const u8 OtherText_BunnyHops[];
+extern const u8 OtherText_Jumping[];
+extern const u8 OtherText_Satisfied[];
+extern const u8 OtherText_Dissatisfied[];
+extern const u8 OtherText_Deepseatooth[];
+extern const u8 OtherText_Deepseascale[];
+extern const u8 OtherText_BlueFlute2[];
+extern const u8 OtherText_YellowFlute2[];
+extern const u8 OtherText_RedFlute2[];
+extern const u8 OtherText_WhiteFlute2[];
+extern const u8 OtherText_BlackFlute2[];
+extern const u8 OtherText_GlassChair[];
+extern const u8 OtherText_GlassDesk[];
+extern const u8 OtherText_TreeckoDoll[];
+extern const u8 OtherText_TorchicDoll[];
+extern const u8 OtherText_MudkipDoll[];
+extern const u8 OtherText_50Coins[];
+extern const u8 OtherText_500Coins[];
+extern const u8 OtherText_Excellent[];
+extern const u8 OtherText_NotSoHot[];
+extern const u8 OtherText_RedShard[];
+extern const u8 OtherText_YellowShard[];
+extern const u8 OtherText_BlueShard[];
+extern const u8 OtherText_GreenShard[];
+extern const u8 OtherText_BattleTower[];
+extern const u8 OtherText_Right[];
+extern const u8 OtherText_Left[];
+extern const u8 OtherText_TM32[];
+extern const u8 OtherText_TM29[];
+extern const u8 OtherText_TM35[];
+extern const u8 OtherText_TM24[];
+extern const u8 OtherText_TM13[];
+extern const u8 OtherText_1F_2[];
+extern const u8 OtherText_2F_2[];
+extern const u8 OtherText_3F_2[];
+extern const u8 OtherText_4F_2[];
+extern const u8 OtherText_5F_2[];
+extern const u8 OtherText_Cool2[];
+extern const u8 OtherText_Beauty3[];
+extern const u8 OtherText_Cute2[];
+extern const u8 OtherText_Smart2[];
+extern const u8 OtherText_Tough2[];
+extern const u8 OtherText_Normal[];
+extern const u8 OtherText_Super[];
+extern const u8 OtherText_Hyper[];
+extern const u8 OtherText_Master[];
+extern const u8 OtherText_Cool3[];
+extern const u8 OtherText_Beauty4[];
+extern const u8 OtherText_Cute3[];
+extern const u8 OtherText_Smart3[];
+extern const u8 OtherText_Tough3[];
+extern const u8 OtherText_Items[];
+extern const u8 OtherText_KeyItems[];
+extern const u8 OtherText_Balls[];
+extern const u8 OtherText_TMsHMs[];
+extern const u8 OtherText_Berries[];
+
+extern const u8 gPCText_SomeonesPC[];
+extern const u8 gPCText_LanettesPC[];
+extern const u8 gPCText_PlayersPC[];
+extern const u8 gPCText_HallOfFame[];
+extern const u8 gPCText_LogOff[];
+
+extern const u8 gOtherText_99Times[];
+extern const u8 gOtherText_1Minute[];
+extern const u8 gOtherText_Seconds[];
+extern const u8 gOtherText_Times[];
+extern const u8 gOtherText_BigGuy[];
+extern const u8 gOtherText_BigGirl[];
+extern const u8 gOtherText_Son[];
+extern const u8 gOtherText_Daughter[];
+extern const u8 OtherText_BlueFlute[];
+extern const u8 OtherText_YellowFlute[];
+extern const u8 OtherText_RedFlute[];
+extern const u8 OtherText_WhiteFlute[];
+extern const u8 OtherText_BlackFlute[];
+extern const u8 OtherText_PrettyChair[];
+extern const u8 OtherText_PrettyDesk[];
+extern const u8 OtherText_1F[];
+extern const u8 OtherText_2F[];
+extern const u8 OtherText_3F[];
+extern const u8 OtherText_4F[];
+extern const u8 OtherText_5F[];
+extern const u8 OtherText_6F[];
+extern const u8 OtherText_7F[];
+extern const u8 OtherText_8F[];
+extern const u8 OtherText_9F[];
+extern const u8 OtherText_10F[];
+extern const u8 OtherText_11F[];
+extern const u8 OtherText_B1F[];
+extern const u8 OtherText_B2F[];
+extern const u8 OtherText_B3F[];
+extern const u8 OtherText_B4F[];
+extern const u8 OtherText_Rooftop[];
+
+extern const u8 gOtherText_NowOn[];
+
+extern const u8 gPCText_Cancel[];
+
+extern const u8 PCText_ExitBox[];
+extern const u8 PCText_WhatYouDo[];
+extern const u8 PCText_PickATheme[];
+extern const u8 PCText_PickAWallpaper[];
+extern const u8 PCText_IsSelected[];
+extern const u8 PCText_JumpToWhichBox[];
+extern const u8 PCText_DepositInWhichBox[];
+extern const u8 PCText_WasDeposited[];
+extern const u8 PCText_BoxIsFull[];
+extern const u8 PCText_ReleasePoke[];
+extern const u8 PCText_WasReleased[];
+extern const u8 PCText_ByeBye[];
+extern const u8 PCText_MarkPoke[];
+extern const u8 PCText_LastPoke[];
+extern const u8 PCText_PartyFull[];
+extern const u8 PCText_HoldingPoke[];
+extern const u8 PCText_WhichOneWillTake[];
+extern const u8 PCText_CantReleaseEgg[];
+extern const u8 PCText_ContinueBox[];
+extern const u8 PCText_CameBack[];
+extern const u8 PCText_Worried[];
+extern const u8 PCText_Surprise[];
+extern const u8 PCText_PleaseRemoveMail[];
+extern const u8 PCText_Cancel2[];
+extern const u8 PCText_Deposit[];
+extern const u8 PCText_Withdraw[];
+extern const u8 PCText_Switch[];
+extern const u8 PCText_Move[];
+extern const u8 PCText_Place[];
+extern const u8 PCText_Summary[];
+extern const u8 PCText_Release[];
+extern const u8 PCText_Mark[];
+extern const u8 PCText_Name[];
+extern const u8 PCText_Jump[];
+extern const u8 PCText_Wallpaper[];
+extern const u8 PCText_Scenery1[];
+extern const u8 PCText_Scenery2[];
+extern const u8 PCText_Scenery3[];
+extern const u8 PCText_Etc[];
+extern const u8 PCText_Forest[];
+extern const u8 PCText_City[];
+extern const u8 PCText_Desert[];
+extern const u8 PCText_Savanna[];
+extern const u8 PCText_Crag[];
+extern const u8 PCText_Volcano[];
+extern const u8 PCText_Snow[];
+extern const u8 PCText_Cave[];
+extern const u8 PCText_Beach[];
+extern const u8 PCText_Seafloor[];
+extern const u8 PCText_River[];
+extern const u8 PCText_Sky[];
+extern const u8 PCText_Polka[];
+extern const u8 PCText_PokeCenter[];
+extern const u8 PCText_Machine[];
+extern const u8 PCText_Plain[];
+extern const u8 PCText_WhatDoYouWant[];
+extern const u8 PCText_WithdrawPoke[];
+extern const u8 PCText_DepositPoke[];
+extern const u8 PCText_MovePoke[];
+extern const u8 PCText_SeeYa[];
+extern const u8 PCText_MovePokeToParty[];
+extern const u8 PCText_StorePokeInBox[];
+extern const u8 PCText_OrganizeBoxesParty[];
+extern const u8 PCText_ReturnToPrevMenu[];
+
+extern const u8 gPCText_OnlyOne[];
+extern const u8 gPCText_PartyFull2[];
+extern const u8 gPCText_BOX[];
+
+// pokenav
+extern const u8 PCText_CheckMap[];
+extern const u8 PCText_CheckPoke[];
+extern const u8 PCText_CheckTrainer[];
+extern const u8 PCText_CheckRibbons[];
+extern const u8 PCText_PutAwayNav[];
+extern const u8 PCText_NoRibbonWin[];
+extern const u8 PCText_NoTrainers[];
+extern const u8 PCText_CheckParty[];
+extern const u8 PCText_CheckPokeAll[];
+extern const u8 PCText_ReturnToNav[];
+extern const u8 PCText_FindCool[];
+extern const u8 PCText_FindBeauty[];
+extern const u8 PCText_FindCute[];
+extern const u8 PCText_FindSmart[];
+extern const u8 PCText_FindTough[];
+extern const u8 PCText_ReturnToCondition[];
+
+extern const u8 gOtherText_NumberRegistered[];
+extern const u8 gOtherText_NumberBattles[];
+extern const u8 gOtherText_Strategy[];
+extern const u8 gOtherText_TrainersPokemon[];
+extern const u8 gOtherText_SelfIntroduction[];
+extern const u8 gOtherText_Nature2[];
+extern const u8 gOtherText_InParty[];
+extern const u8 gOtherText_Number[];
+extern const u8 gOtherText_Ribbons[];
+extern const u8 OtherText_MakeProfilePage1[];
+extern const u8 OtherText_MakeProfilePage2[];
+extern const u8 OtherText_MakeMessagePage1[];
+extern const u8 OtherText_MakeMessagePage2[];
+extern const u8 OtherText_DescribeFeelingsPage1[];
+extern const u8 OtherText_DescribeFeelingsPage2[];
+extern const u8 OtherText_WithFourPhrases[];
+extern const u8 OtherText_CombineNinePhrasesPage1[];
+extern const u8 OtherText_CombineNinePhrasesPage2[];
+extern const u8 OtherText_ImproveBardSongPage1[];
+extern const u8 OtherText_ImproveBardSongPage2[];
+extern const u8 OtherText_YourProfile[];
+extern const u8 OtherText_YourFeelingBattle[];
+extern const u8 OtherText_SetWinMessage[];
+extern const u8 OtherText_SetLossMessage[];
+extern const u8 OtherText_TheAnswer[];
+extern const u8 OtherText_MailMessage[];
+extern const u8 OtherText_MailSalutation[];
+extern const u8 OtherText_NewSong[];
+extern const u8 OtherText_CombineTwoPhrasesPage1[];
+extern const u8 OtherText_CombineTwoPhrasesPage2[];
+extern const u8 OtherText_ConfirmTrendyPage1[];
+extern const u8 OtherText_ConfirmTrendyPage2[];
+extern const u8 OtherText_HipsterPage1[];
+extern const u8 OtherText_HipsterPage2[];
+
+extern const u8 gOtherText_TextDeletedConfirmPage1[];
+extern const u8 gOtherText_TextDeletedConfirmPage2[];
+extern const u8 gOtherText_QuitEditing[];
+extern const u8 gOtherText_EditedTextNoSavePage1[];
+extern const u8 gOtherText_EditedTextNoSavePage2[];
+extern const u8 gOtherText_EnterAPhraseOrWord[];
+extern const u8 gOtherText_TextNoDelete[];
+extern const u8 gOtherText_OnlyOnePhrase[];
+extern const u8 gOtherText_OriginalSongRestored[];
+extern const u8 gOtherText_TrendyAlready[];
+extern const u8 gOtherText_CombineTwoPhrases[];
+extern const u8 gOtherText_QuitGivingInfo[];
+extern const u8 gOtherText_StopGivingMail[];
+extern const u8 gOtherText_Profile[];
+extern const u8 gOtherText_AtBattleStart[];
+extern const u8 gOtherText_UponWinningBattle[];
+extern const u8 gOtherText_UponLosingBattle[];
+
+// mauville_old_man?
+extern const u8 gOtherText_TheBardsSong[];
+extern const u8 gOtherText_WhatsHipHappening[];
+extern const u8 gOtherText_Interview[];
+extern const u8 gOtherText_GoodSaying[];
+extern const u8 OtherText_SoPretty[];
+extern const u8 OtherText_SoDarling[];
+extern const u8 OtherText_SoRelaxed[];
+extern const u8 OtherText_SoSunny[];
+extern const u8 OtherText_SoDesirable[];
+extern const u8 OtherText_SoExciting[];
+extern const u8 OtherText_SoAmusing[];
+extern const u8 OtherText_SoMagical[];
+
+extern const u8 gOtherText_Is[];
+extern const u8 gOtherText_DontYouAgree[];
+
+extern const u8 OtherText_WantVacationNicePlace[];
+extern const u8 OtherText_BoughtCrayonsIsNice[];
+extern const u8 OtherText_IfWeCouldFloat[];
+extern const u8 OtherText_SandWashesAwayMakeSad[];
+extern const u8 OtherText_WhatsBottomSeaLike[];
+extern const u8 OtherText_SeeSettingSun[];
+extern const u8 OtherText_LyingInGreenGrass[];
+extern const u8 OtherText_SecretBasesWonderful[];
+
+extern const u8 OtherText_PokeLeague[];
+extern const u8 OtherText_PokeCenter[];
+
+extern const u8 gOtherText_GetsAPokeBlock[];
+
+extern const u8 OtherText_Coolness[];
+extern const u8 OtherText_Beauty[];
+extern const u8 OtherText_Cuteness[];
+extern const u8 OtherText_Smartness[];
+extern const u8 OtherText_Toughness[];
+
+extern const u8 gOtherText_WasEnhanced[];
+extern const u8 gOtherText_NothingChanged[];
+extern const u8 gOtherText_WontEat[];
+
+extern const u8 gSystemText_SaveFailedBackupCheck[];
+extern const u8 gSystemText_BackupDamagedGameContinue[];
+extern const u8 gSystemText_GameplayEnded[];
+extern const u8 gSystemText_CheckCompleteSaveAttempt[];
+extern const u8 gSystemText_SaveCompletedGameEnd[];
+extern const u8 gSystemText_SaveCompletedPressA[];
+
+extern const u8 gOtherText_Ferry[];
+extern const u8 gOtherText_SecretBase[];
+extern const u8 gOtherText_Hideout[];
+
+extern const u8 gSystemText_ResetRTCPrompt[];
+extern const u8 gSystemText_PresentTime[];
+extern const u8 gSystemText_PreviousTime[];
+extern const u8 gSystemText_PleaseResetTime[];
+extern const u8 gSystemText_ClockResetDataSave[];
+extern const u8 gSystemText_SaveCompleted[];
+extern const u8 gSystemText_SaveFailed[];
+extern const u8 gSystemText_NoSaveFileNoTime[];
+extern const u8 gSystemText_ClockAdjustmentUsable[];
+extern const u8 gSystemText_Saving[];
+
+#endif
diff --git a/include/text.h b/include/text.h
index 99d346a23..4f52e3cdd 100644
--- a/include/text.h
+++ b/include/text.h
@@ -134,6 +134,13 @@ extern const struct WindowConfig gWindowConfig_81E725C;
extern const struct WindowConfig gWindowConfig_81E7278;
extern const struct WindowConfig gWindowConfig_81E7294;
+extern u16 gBGTilemapBuffers[4][0x400];
+
+extern u8 gStringVar1[];
+extern u8 gStringVar2[];
+extern u8 gStringVar3[];
+extern u8 gStringVar4[];
+
void LoadFontDefaultPalette(const struct WindowConfig *winConfig);
void SetUpWindowConfig(const struct WindowConfig *winConfig);
u16 InitWindowTileData(struct Window *win, u16 startOffset);
diff --git a/include/text_window.h b/include/text_window.h
index 6df3f7d33..afd645540 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -5,8 +5,8 @@
struct FrameGraphics
{
- u8 *tiles;
- u16 *palette;
+ u8 *tiles;
+ u16 *palette;
};
u16 SetTextWindowBaseTileNum(u16 baseTileNum);
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 7269c0b20..bd0c808dd 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -2,30 +2,30 @@
#define GUARD_TRAINER_CARD_H
struct TrainerCard {
- /*0x00*/ u8 gender;
- /*0x01*/ u8 stars;
- /*0x02*/ bool8 hasPokedex;
- /*0x03*/ bool8 var_3;
- /*0x04*/ bool8 var_4;
- /*0x05*/ u8 var_5;
- /*0x06*/ u16 firstHallOfFameA;
- /*0x08*/ u16 firstHallOfFameB;
- /*0x0A*/ u16 firstHallOfFameC;
- /*0x0C*/ u16 pokedexSeen;
- /*0x0E*/ u16 trainerId;
- /*0x10*/ u16 playTimeHours;
- /*0x12*/ u16 playTimeMinutes;
- /*0x14*/ u16 linkBattleWins;
- /*0x16*/ u16 linkBattleLosses;
- /*0x18*/ u16 battleTowerWins;
- /*0x1A*/ u16 battleTowerLosses;
- /*0x1C*/ u16 contestsWithFriends;
- /*0x1E*/ u16 pokeblocksWithFriends;
- /*0x20*/ u16 pokemonTrades;
- /*0x22*/ u16 var_22;
- /*0x24*/ u32 money;
- /*0x28*/ u16 var_28[4];
- /*0x30*/ u8 playerName[8];
+ /*0x00*/ u8 gender;
+ /*0x01*/ u8 stars;
+ /*0x02*/ bool8 hasPokedex;
+ /*0x03*/ bool8 var_3;
+ /*0x04*/ bool8 var_4;
+ /*0x05*/ u8 var_5;
+ /*0x06*/ u16 firstHallOfFameA;
+ /*0x08*/ u16 firstHallOfFameB;
+ /*0x0A*/ u16 firstHallOfFameC;
+ /*0x0C*/ u16 pokedexSeen;
+ /*0x0E*/ u16 trainerId;
+ /*0x10*/ u16 playTimeHours;
+ /*0x12*/ u16 playTimeMinutes;
+ /*0x14*/ u16 linkBattleWins;
+ /*0x16*/ u16 linkBattleLosses;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerLosses;
+ /*0x1C*/ u16 contestsWithFriends;
+ /*0x1E*/ u16 pokeblocksWithFriends;
+ /*0x20*/ u16 pokemonTrades;
+ /*0x22*/ u16 var_22;
+ /*0x24*/ u32 money;
+ /*0x28*/ u16 var_28[4];
+ /*0x30*/ u8 playerName[8];
};
void sub_8093110(void (*)(void));
diff --git a/include/trainer_see.h b/include/trainer_see.h
index e4d1fe270..dd04912e7 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -30,5 +30,7 @@ void sub_80846E4(u8 taskId);
void sub_8084794(u32 var);
void sub_80847C8(void);
void sub_80847D8(u8);
+void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
+void objc_exclamation_mark_probably(struct Sprite *sprite);
#endif // GUARD_TRAINER_SEE_H
diff --git a/include/vars.h b/include/vars.h
index 4661bbd52..3fc71dc15 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,24 +1,28 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_RECYCLE_GOODS 0x4020
+#define VAR_REPEL_STEP_COUNT 0x4021
-#define VAR_FIRST_POKE 0x4023
-#define VAR_MIRAGE_RND_H 0x4024
-#define VAR_MIRAGE_RND_L 0x4025
+#define VAR_FIRST_POKE 0x4023
+#define VAR_MIRAGE_RND_H 0x4024
+#define VAR_MIRAGE_RND_L 0x4025
-#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_HAPPINESS_STEP_COUNTER 0x402A
+#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_RESET_RTC_ENABLE 0x402C
-#define VAR_DAYS 0x4040
+#define VAR_DAYS 0x4040
-#define VAR_POKELOT_PRIZE 0x4045
-#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SHROOMISH_SIZE_RECORD 0x4047
+#define VAR_POKELOT_PRIZE 0x4045
+#define VAR_NATIONAL_DEX 0x4046
+#define VAR_SHROOMISH_SIZE_RECORD 0x4047
-#define VAR_POKELOT_RND1 0x404B
-#define VAR_POKELOT_RND2 0x404C
+#define VAR_POKELOT_RND1 0x404B
+#define VAR_POKELOT_RND2 0x404C
-#define VAR_BARBOACH_SIZE_RECORD 0x404F
+#define VAR_BARBOACH_SIZE_RECORD 0x404F
+
+#define VAR_PORTHOLE 0x40B4
#endif // GUARD_VARS_H
diff --git a/include/wallclock.h b/include/wallclock.h
index c869e3941..794f456be 100644
--- a/include/wallclock.h
+++ b/include/wallclock.h
@@ -6,9 +6,4 @@
void CB2_StartWallClock(void);
void CB2_ViewWallClock(void);
-void sub_810B05C(struct Sprite *sprite);
-void sub_810B0F4(struct Sprite *sprite);
-void sub_810B18C(struct Sprite *sprite);
-void sub_810B230(struct Sprite *sprite);
-
#endif // GUARD_WALLCLOCK_H
diff --git a/ld_script.txt b/ld_script.txt
index ec17f60e2..2be635d7a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -46,7 +46,7 @@ SECTIONS {
src/link.o(.text);
src/rtc.o(.text);
src/main_menu.o(.text);
- asm/rom3.o(.text);
+ src/rom3.o(.text);
src/decompress.o(.text);
asm/rom_800D42C.o(.text);
src/rom_800D42C.o(.text);
@@ -61,7 +61,7 @@ SECTIONS {
src/rng.o(.text);
asm/util.o(.text);
src/blend_palette.o(.text);
- src/daycare.o(.text);
+ src/daycare.o(.text);
asm/daycare.o(.text);
asm/egg_hatch.o(.text);
asm/rom_804373C.o(.text);
@@ -78,6 +78,7 @@ SECTIONS {
src/field_camera.o(.text);
src/field_door.o(.text);
src/field_player_avatar.o(.text);
+ src/field_map_obj.o(.text);
asm/field_map_obj.o(.text);
src/field_ground_effect.o(.text);
asm/field_ground_effect.o(.text);
@@ -88,7 +89,6 @@ SECTIONS {
src/script.o(.text);
src/scrcmd.o(.text);
src/field_control_avatar.o(.text);
- asm/field_control_avatar.o(.text);
src/event_data.o(.text);
src/coord_event_weather.o(.text);
asm/field_tasks.o(.text);
@@ -106,7 +106,7 @@ SECTIONS {
src/tileset_anim.o(.text);
src/palette.o(.text);
src/sound.o(.text);
- asm/battle_anim.o(.text);
+ src/battle_anim.o(.text);
asm/rom_8077ABC.o(.text);
src/task.o(.text);
asm/rom5.o(.text);
@@ -114,6 +114,7 @@ SECTIONS {
src/title_screen.o(.text);
src/weather.o(.text);
asm/weather.o(.text);
+ src/rom_8080874.o(.text);
asm/rom_8080874.o(.text);
src/battle_setup.o(.text);
asm/cable_club.o(.text);
@@ -129,26 +130,28 @@ SECTIONS {
asm/pokedex.o(.text);
src/trainer_card.o(.text);
src/save_menu_util.o(.text);
+ src/rom_8094928.o(.text);
asm/rom_8094928.o(.text);
- asm/battle_party_menu.o(.text);
+ src/battle_party_menu.o(.text);
asm/pokemon_storage_system.o(.text);
asm/pokemon_icon.o(.text);
asm/pokemon_summary_screen.o(.text);
src/pokemon_summary_screen.o(.text);
asm/pokemon_summary_screen.o(.text_80A0958);
- asm/script_movement.o(.text);
- asm/fldeff_cut.o(.text);
+ src/script_movement.o(.text);
+ src/fldeff_cut.o(.text);
asm/mail_data.o(.text);
- asm/map_name_popup.o(.text);
+ src/map_name_popup.o(.text);
asm/item_menu.o(.text);
src/battle_anim_80A7E7C.o(.text);
src/item.o(.text);
src/matsuda_debug_menu.o(.text);
asm/contest.o(.text);
+ src/shop.o(.text);
asm/shop.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
- asm/naming_screen.o(.text);
+ src/naming_screen.o(.text);
src/money.o(.text);
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
@@ -164,7 +167,7 @@ SECTIONS {
asm/tv.o(.text_80C1C5C);
src/tv.o(.text_d);
asm/contest_link_80C2020.o(.text);
- asm/script_pokemon_util_80C4BF0.o(.text);
+ src/script_pokemon_util_80C4BF0.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
asm/fldeff_80C5CD4.o(.text);
@@ -175,14 +178,15 @@ SECTIONS {
src/item_use.o(.text);
asm/item_use.o(.text);
asm/battle_anim_80CA710.o(.text);
- asm/bike.o(.text);
+ src/bike.o(.text);
asm/easy_chat.o(.text);
asm/pokenav.o(.text);
asm/mon_markings.o(.text);
+ src/mauville_old_man.o(.text);
asm/mauville_old_man.o(.text);
src/mail.o(.text);
asm/menu_helpers.o(.text);
- asm/script_pokemon_util_80F99CC.o(.text);
+ src/script_pokemon_util_80F99CC.o(.text);
src/dewford_trend.o(.text);
src/heal_location.o(.text);
asm/region_map.o(.text);
@@ -193,11 +197,10 @@ SECTIONS {
asm/slot_machine.o(.text);
src/contest_painting.o(.text);
src/battle_ai.o(.text);
- asm/battle_ai.o(.text);
asm/trader.o(.text);
src/starter_choose.o(.text);
src/wallclock.o(.text);
- asm/rom6.o(.text);
+ src/rom6.o(.text);
asm/pokeblock.o(.text);
asm/rom_810CBB4.o(.text);
asm/battle_records.o(.text);
@@ -209,6 +212,7 @@ SECTIONS {
src/landmark.o(.text);
src/fldeff_strength.o(.text);
asm/battle_transition.o(.text);
+ src/battle_811DA74.o(.text);
asm/battle_811DA74.o(.text);
asm/battle_message.o(.text);
asm/choose_party.o(.text);
@@ -225,25 +229,24 @@ SECTIONS {
src/player_pc.o(.text);
asm/player_pc.o(.text);
src/intro.o(.text);
- asm/field_region_map.o(.text);
+ src/field_region_map.o(.text);
asm/battle_anim_813F0F4.o(.text);
asm/hall_of_fame.o(.text);
src/credits.o(.text);
- asm/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
src/berry_tag_screen.o(.text);
src/mystery_event_menu.o(.text);
src/save_failed_screen.o(.text);
- asm/braille_puzzles.o(.text);
+ src/braille_puzzles.o(.text);
asm/pokeblock_feed.o(.text);
src/clear_save_data_menu.o(.text);
asm/intro_credits_graphics.o(.text);
asm/evolution_graphics.o(.text);
src/bard_music.o(.text);
- asm/fldeff_teleport.o(.text);
- asm/unknown_debug_menu.o(.text);
- asm/name_string_util.o(.text);
+ src/fldeff_teleport.o(.text);
+ src/unknown_debug_menu.o(.text);
+ src/name_string_util.o(.text);
src/menu_cursor.o(.text);
} =0
@@ -310,9 +313,11 @@ SECTIONS {
data/tilesets.o(.rodata);
data/maps.o(.rodata);
src/fieldmap.o(.rodata);
- data/metatile_behavior.o(.rodata);
+ src/metatile_behavior.o(.rodata);
data/field_door.o(.rodata);
+ src/field_player_avatar.o(.rodata);
data/field_player_avatar.o(.rodata);
+ src/field_map_obj.o(.rodata);
data/field_map_obj.o(.rodata);
src/field_ground_effect.o(.rodata);
data/field_ground_effect.o(.rodata);
@@ -330,25 +335,27 @@ SECTIONS {
src/palette.o(.rodata);
src/sound.o(.rodata);
data/battle_anim.o(.rodata);
+ src/battle_anim.o(.rodata);
data/rom_8077ABC.o(.rodata);
data/map_events.o(.rodata);
data/data_8393054.o(.rodata);
data/task.o(.rodata);
data/battle_anim_807B69C.o(.rodata);
- data/title_screen.o(.rodata);
+ src/title_screen.o(.rodata);
data/weather.o(.rodata);
data/rom_8080874.o(.rodata);
- data/battle_setup.o(.rodata);
+ src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
data/trainer_see.o(.rodata);
+ src/wild_encounter.o(.rodata);
data/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
data/pokemon_menu.o(.rodata);
data/option_menu.o(.rodata);
data/pokedex.o(.rodata);
data/trainer_card.o(.rodata);
- data/battle_party_menu.o(.rodata);
+ src/battle_party_menu.o(.rodata);
data/pokemon_storage_system.o(.rodata);
data/pokemon_icon.o(.rodata);
data/pokemon_summary_screen.o(.rodata);
@@ -359,8 +366,9 @@ SECTIONS {
data/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
data/shop.o(.rodata);
- data/berry.o(.rodata);
- data/script_menu.o(.rodata);
+ src/berry.o(.rodata);
+ src/script_menu.o(.rodata);
+ src/naming_screen.o(.rodata);
data/naming_screen.o(.rodata);
data/money.o(.rodata);
data/contest_effect.o(.rodata);
@@ -371,27 +379,28 @@ SECTIONS {
data/contest_link_80C2020.o(.rodata);
src/pokemon_size_record.o(.rodata);
data/fldeff_80C5CD4.o(.rodata);
+ src/field_special_scene.o(.rodata);
data/field_special_scene.o(.rodata);
data/rotating_gate.o(.rodata);
data/item_use.o(.rodata);
data/battle_anim_80CA710.o(.rodata);
- data/bike.o(.rodata);
+ src/bike.o(.rodata);
data/easy_chat.o(.rodata);
data/pokenav.o(.rodata);
data/mon_markings.o(.rodata);
data/mauville_old_man.o(.rodata);
data/mail.o(.rodata);
data/menu_helpers.o(.rodata);
- data/heal_location.o(.rodata);
+ src/heal_location.o(.rodata);
data/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
data/decoration.o(.rodata);
data/slot_machine.o(.rodata);
- data/contest_painting.o(.rodata);
- data/battle_ai.o(.rodata);
+ src/contest_painting.o(.rodata);
+ src/battle_ai.o(.rodata);
data/trader.o(.rodata);
- data/starter_choose.o(.rodata);
- data/wallclock.o(.rodata);
+ src/starter_choose.o(.rodata);
+ src/wallclock.o(.rodata);
data/pokeblock.o(.rodata);
data/rom_810CBB4.o(.rodata);
data/pokedex_area_screen.o(.rodata);
@@ -404,21 +413,21 @@ SECTIONS {
data/battle_message.o(.rodata);
data/choose_party.o(.rodata);
data/cable_car.o(.rodata);
- data/save.o(.rodata);
+ src/save.o(.rodata);
data/field_effect_helpers.o(.rodata);
data/contest_ai.o(.rodata);
data/rom_81258BC.o(.rodata);
data/player_pc.o(.rodata);
- data/intro.o(.rodata);
+ src/intro.o(.rodata);
data/battle_anim_813F0F4.o(.rodata);
data/hall_of_fame.o(.rodata);
+ src/credits.o(.rodata);
data/credits.o(.rodata);
src/lottery_corner.o(.rodata);
- data/diploma.o(.rodata);
- data/strings.o(.rodata);
+ src/diploma.o(.rodata);
+ src/strings.o(.rodata);
data/berry_tag_screen.o(.rodata);
src/save_failed_screen.o(.rodata);
- data/save_failed_screen.o(.rodata);
data/pokeblock_feed.o(.rodata);
data/intro_credits_graphics.o(.rodata);
data/evolution_graphics.o(.rodata);
diff --git a/shared_syms.txt b/shared_syms.txt
index d695f8899..ca008972f 100644
--- a/shared_syms.txt
+++ b/shared_syms.txt
@@ -1,4 +1,3 @@
-battle_2000000 = 0x2000000;
unk_2000000 = 0x2000000;
ewram = 0x2000000;
@@ -13,9 +12,10 @@ unk_2015de0 = 0x2015de0;
unk_2015e00 = 0x2015e00;
unk_2016000 = 0x2016000;
+unk_201606C = 0x201606C;
+
unk_20160BC = 0x20160BC;
-gAIThinkingSpace = 0x2016800;
unk_2016A00 = 0x2016A00;
unk_2016C00 = 0x2016C00;
@@ -33,3 +33,4 @@ unk_201C000 = 0x201C000;
gHallOfFame = 0x201E000;
unk_201f800 = 0x201F800;
+gCutGrassSpriteArray = 0x201FFF0;
diff --git a/src/agb_flash.c b/src/agb_flash.c
index 34fb4e84a..340d469a7 100644
--- a/src/agb_flash.c
+++ b/src/agb_flash.c
@@ -217,7 +217,7 @@ u32 VerifyFlashSector(u16 sectorNum, u8 *src)
tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift);
size = gFlash->sector.size;
- return verifyFlashSector_Core(src, tgt, size);
+ return verifyFlashSector_Core(src, tgt, size); // return 0 if verified.
}
u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
@@ -256,12 +256,12 @@ u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
return verifyFlashSector_Core(src, tgt, n);
}
-u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src)
+u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src) // 3rd is unused
{
u8 i;
u32 result;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < 3; i++) // 3 attempts
{
result = ProgramFlashSector(sectorNum, src);
if (result != 0)
@@ -272,7 +272,7 @@ u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src)
break;
}
- return result;
+ return result; // return 0 if verified and programmed.
}
u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n)
diff --git a/src/bard_music.c b/src/bard_music.c
index ee70f5319..43c2923d2 100644
--- a/src/bard_music.c
+++ b/src/bard_music.c
@@ -48,7 +48,7 @@ static s16 sub_814A2B8(u32 arg0, u32 arg1)
struct BardSound *sub_814A2D0(u16 arg0, u16 arg1)
{
struct BardSound *sounds = gBardMusicTable[arg0];
-
+
return &sounds[arg1];
}
@@ -57,28 +57,28 @@ s32 sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2)
s32 i;
s32 j;
s32 thirty;
-
+
for (i = 0; i < 6; i++)
{
dest->var18[i].var00 = src[i].var00;
if (src[i].var00 != 0xFF)
{
s32 r1 = src[i].var01 +gUnknown_084170F4[src[i].var00];
-
+
dest->var18[i].var02 = r1;
dest->var18[i].var06 = src[i].var04;
dest->var04 += r1;
}
}
-
+
for (j = 0, thirty = 30; j < i; j++)
dest->var18[j].var04 = sub_814A2B8(thirty + arg2, j);
-
+
dest->var00++;
dest->var01 = 0;
dest->var02 = 0;
dest->var03 = 0;
dest->var0A = 0;
-
+
//warning: no return statement in function returning non-void
}
diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c
new file mode 100644
index 000000000..1ceb129fe
--- /dev/null
+++ b/src/battle_811DA74.c
@@ -0,0 +1,713 @@
+#include "global.h"
+#include "asm.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "text.h"
+
+struct UnknownStruct1
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2[0x1FE];
+};
+
+struct UnknownStruct2
+{
+ u8 unk0;
+ u8 unk1;
+ u8 filler2[7];
+ u8 unk9;
+ u8 fillerA[2];
+};
+
+//Possibly PokemonSubstruct1
+struct UnknownStruct3
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+extern u32 gBitTable[];
+extern u16 gBattleTypeFlags;
+
+extern u8 gUnknown_02023A60[][0x200];
+extern u8 gUnknown_02024A60;
+extern u32 gUnknown_02024A64;
+extern u16 gUnknown_02024A6A[];
+extern u8 gUnknown_02024BE0[];
+extern u8 gUnknown_02024E6D;
+extern struct Window gUnknown_03004210;
+extern MainCallback gUnknown_030042D0;
+extern void (*gUnknown_03004330[])(void);
+extern u8 gUnknown_03004340[];
+extern u8 gUnknown_0300434C[];
+extern void (*const gUnknown_083FE4F4[])(void);
+
+extern u8 unk_2000000[];
+
+#define EWRAM_17800 ((u8 *)(unk_2000000 + 0x17800))
+#define EWRAM_17810 ((struct UnknownStruct2 *)(unk_2000000 + 0x17810))
+
+extern void nullsub_10();
+extern void sub_8045A5C();
+extern void sub_804777C();
+extern void sub_8043DFC();
+extern s16 sub_8045C78();
+extern void sub_80440EC();
+extern void sub_80324F8();
+extern void nullsub_9(u16);
+extern void sub_8043DB0();
+extern void move_anim_start_t4();
+extern void c3_0802FDF4(u8);
+extern void sub_8031F88();
+extern void sub_8141828();
+extern void c2_8011A1C(void);
+extern void sub_800832C();
+extern void dp01_prepare_buffer_wireless_probably();
+extern void dp01_build_cmdbuf_x1D_1D_numargs_varargs(int, u16, void *);
+
+void sub_811DA94(void);
+void sub_811E0A0(void);
+void dp01_tbl3_exec_completed(void);
+u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *b);
+void sub_811EC68(u8);
+
+void nullsub_74(void)
+{
+}
+
+void sub_811DA78(void)
+{
+ gUnknown_03004330[gUnknown_02024A60] = sub_811DA94;
+}
+
+void sub_811DA94(void)
+{
+ if (gUnknown_02024A64 & gBitTable[gUnknown_02024A60])
+ {
+ if (gUnknown_02023A60[gUnknown_02024A60][0] <= 0x38)
+ gUnknown_083FE4F4[gUnknown_02023A60[gUnknown_02024A60][0]]();
+ else
+ dp01_tbl3_exec_completed();
+ }
+}
+
+void sub_811DAE4(void)
+{
+ if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy)
+ dp01_tbl3_exec_completed();
+}
+
+void sub_811DB1C(void)
+{
+ if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy)
+ {
+ nullsub_10(0);
+ FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ dp01_tbl3_exec_completed();
+ }
+}
+
+void sub_811DB84(void)
+{
+ if ((--EWRAM_17810[gUnknown_02024A60].unk9) == 0xFF)
+ {
+ EWRAM_17810[gUnknown_02024A60].unk9 = 0;
+ dp01_tbl3_exec_completed();
+ }
+}
+
+void sub_811DBC0(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & 0x40)))
+ {
+ if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy
+ && gSprites[gUnknown_03004340[gUnknown_02024A60 ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+ if (r6)
+ {
+ EWRAM_17810[gUnknown_02024A60].unk9 = 3;
+ gUnknown_03004330[gUnknown_02024A60] = sub_811DB84;
+ }
+}
+
+void sub_811DCA0(void)
+{
+ u8 r2;
+
+ if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 8))
+ {
+ r2 = EWRAM_17810[gUnknown_02024A60 ^ 2].unk0 & 8;
+ if (!r2 && (++EWRAM_17810[gUnknown_02024A60].unk9) != 1)
+ {
+ EWRAM_17810[gUnknown_02024A60].unk9 = r2;
+ if (IsDoubleBattle() && !(gBattleTypeFlags & 0x40))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60 ^ 2]]);
+ sub_8045A5C(gUnknown_03004340[gUnknown_02024A60 ^ 2], &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]], 0);
+ sub_804777C(gUnknown_02024A60 ^ 2);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60 ^ 2]);
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]);
+ sub_8045A5C(gUnknown_03004340[gUnknown_02024A60], &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], 0);
+ sub_804777C(gUnknown_02024A60);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]);
+ (s8)EWRAM_17810[4].unk9 &= ~1;
+ gUnknown_03004330[gUnknown_02024A60] = sub_811DBC0;
+ }
+ }
+}
+
+void sub_811DDE8(void)
+{
+ if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].animEnded
+ && gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos2.x == 0)
+ dp01_tbl3_exec_completed();
+}
+
+void bx_t3_healthbar_update(void)
+{
+ s16 r4;
+
+ r4 = sub_8045C78(gUnknown_02024A60, gUnknown_03004340[gUnknown_02024A60], 0, 0);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]);
+ if (r4 != -1)
+ {
+ sub_80440EC(gUnknown_03004340[gUnknown_02024A60], r4, 0);
+ }
+ else
+ {
+ sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60);
+ dp01_tbl3_exec_completed();
+ }
+}
+
+void sub_811DE98(void)
+{
+ if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos1.y + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos2.y > 160)
+ {
+ nullsub_9(GetMonData(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES));
+ FreeOamMatrix(gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.matrixNum);
+ DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]);
+ dp01_tbl3_exec_completed();
+ }
+}
+
+void sub_811DF34(void)
+{
+ if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40))
+ {
+ FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]);
+ dp01_tbl3_exec_completed();
+ }
+}
+
+void sub_811DFA0(void)
+{
+ if (gUnknown_03004210.state == 0)
+ dp01_tbl3_exec_completed();
+}
+
+void bx_blink_t3(void)
+{
+ u8 spriteId = gUnknown_02024BE0[gUnknown_02024A60];
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gUnknown_02024E6D = 0;
+ dp01_tbl3_exec_completed();
+ }
+ else
+ {
+ if ((gSprites[spriteId].data1 % 4) == 0)
+ {
+ gSprites[spriteId].invisible ^= 1;
+ }
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_811E034(void)
+{
+ if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy)
+ {
+ if (EWRAM_17800[gUnknown_02024A60 * 4] & 4)
+ move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 6);
+ gUnknown_03004330[gUnknown_02024A60] = sub_811E0A0;
+ }
+}
+
+void sub_811E0A0(void)
+{
+ if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40))
+ dp01_tbl3_exec_completed();
+}
+
+void sub_811E0CC(void)
+{
+ if (EWRAM_17810[gUnknown_02024A60].unk1 & 1)
+ {
+ EWRAM_17810[gUnknown_02024A60].unk0 &= 0x7F;
+ (s8)EWRAM_17810[gUnknown_02024A60].unk1 &= ~1;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ CreateTask(c3_0802FDF4, 10);
+ sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60);
+ StartSpriteAnim(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], 0);
+ sub_8045A5C(gUnknown_03004340[gUnknown_02024A60], &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], 0);
+ sub_804777C(gUnknown_02024A60);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]);
+ sub_8031F88(gUnknown_02024A60);
+ gUnknown_03004330[gUnknown_02024A60] = sub_811E034;
+ }
+}
+
+void sub_811E1BC(void)
+{
+ if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x88))
+ sub_8141828(gUnknown_02024A60, &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]]);
+ if (gSprites[gUnknown_0300434C[gUnknown_02024A60]].callback == SpriteCallbackDummy
+ && !(EWRAM_17810[gUnknown_02024A60].unk0 & 8))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]);
+ gUnknown_03004330[gUnknown_02024A60] = sub_811E0CC;
+ }
+}
+
+void sub_811E258(void)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ m4aSongNumStop(0x5A);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gUnknown_030042D0;
+ SetMainCallback2(c2_8011A1C);
+ }
+}
+
+void sub_811E29C(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gBattleTypeFlags & 2)
+ {
+ sub_800832C();
+ gUnknown_03004330[gUnknown_02024A60] = sub_811E258;
+ }
+ else
+ {
+ m4aSongNumStop(0x5A);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gUnknown_030042D0;
+ SetMainCallback2(gMain.savedCallback);
+ }
+ }
+}
+
+void dp01_tbl3_exec_completed(void)
+{
+ u8 multiplayerId;
+
+ gUnknown_03004330[gUnknown_02024A60] = sub_811DA94;
+ if (gBattleTypeFlags & 2)
+ {
+ multiplayerId = GetMultiplayerId();
+ dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId);
+ gUnknown_02023A60[gUnknown_02024A60][0] = 0x38;
+ }
+ else
+ {
+ gUnknown_02024A64 &= ~gBitTable[gUnknown_02024A60];
+ }
+}
+
+void sub_811E38C(void)
+{
+ if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x10))
+ dp01_tbl3_exec_completed();
+}
+
+void sub_811E3B8(void)
+{
+ if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x20))
+ dp01_tbl3_exec_completed();
+}
+
+void dp01t_00_3_getattr(void)
+{
+ u8 unk[256];
+ int r6 = 0;
+ s32 i;
+
+ if (gUnknown_02023A60[gUnknown_02024A60][2] == 0)
+ {
+ r6 = dp01_getattr_by_ch1_for_player_pokemon(gUnknown_02024A6A[gUnknown_02024A60], unk);
+ }
+ else
+ {
+ u8 r4 = gUnknown_02023A60[gUnknown_02024A60][2];
+
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ r6 += dp01_getattr_by_ch1_for_player_pokemon(i, unk + r6);
+ r4 >>= 1;
+ }
+ }
+ dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, unk);
+ dp01_tbl3_exec_completed();
+}
+
+u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
+{
+ struct BattlePokemon battlePokemon;
+ struct UnknownStruct3 moveData;
+ u8 nickname[20];
+ u8 *src;
+ s16 data16;
+ u32 data32;
+ s32 size = 0;
+
+ switch (gUnknown_02023A60[gUnknown_02024A60][1])
+ {
+ case 0:
+ battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ for (size = 0; size < 4; size++)
+ {
+ battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
+ battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
+ battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
+ StringCopy10(battlePokemon.nickname, nickname);
+ GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
+ src = (u8 *)&battlePokemon;
+ for (size = 0; size < sizeof(battlePokemon); size++)
+ buffer[size] = src[size];
+ break;
+ case 1:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 2:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 3:
+ for (size = 0; size < 4; size++)
+ {
+ moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ src = (u8 *)&moveData;
+ for (size = 0; size < sizeof(moveData); size++)
+ buffer[size] = src[size];
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data16 = GetMonData(&gPlayerParty[a], gUnknown_02023A60[gUnknown_02024A60][1] + MON_DATA_CHECKSUM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 8:
+ for (size = 0; size < 4; size++)
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ size++;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ buffer[0] = GetMonData(&gPlayerParty[a], gUnknown_02023A60[gUnknown_02024A60][1] + MON_DATA_MARKINGS);
+ size = 1;
+ break;
+ case 17:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 18:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 19:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
+ size = 1;
+ break;
+ case 20:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
+ size = 1;
+ break;
+ case 21:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
+ size = 1;
+ break;
+ case 22:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV);
+ size = 1;
+ break;
+ case 23:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
+ size = 1;
+ break;
+ case 24:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
+ size = 1;
+ break;
+ case 25:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ size = 1;
+ break;
+ case 26:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
+ size = 1;
+ break;
+ case 27:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
+ size = 1;
+ break;
+ case 28:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
+ size = 1;
+ break;
+ case 29:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
+ size = 1;
+ break;
+ case 30:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
+ size = 1;
+ break;
+ case 31:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 6;
+ break;
+ case 32:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ size = 1;
+ break;
+ case 33:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ size = 1;
+ break;
+ case 34:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ size = 1;
+ break;
+ case 35:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ size = 1;
+ break;
+ case 36:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ size = 1;
+ break;
+ case 37:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 1;
+ break;
+ case 38:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 39:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 40:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 41:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ size = 1;
+ break;
+ case 42:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 43:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 44:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 45:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 46:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 47:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 48:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 49:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
+ size = 1;
+ break;
+ case 50:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
+ size = 1;
+ break;
+ case 51:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
+ size = 1;
+ break;
+ case 52:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
+ size = 1;
+ break;
+ case 53:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
+ size = 1;
+ break;
+ case 54:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
+ size = 1;
+ break;
+ case 55:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
+ size = 1;
+ break;
+ case 56:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
+ size = 1;
+ break;
+ case 57:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
+ size = 1;
+ break;
+ case 58:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
+ size = 1;
+ break;
+ case 59:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
+ size = 1;
+ break;
+ }
+ return size;
+}
+
+void sub_811EC04(void)
+{
+ dp01_tbl3_exec_completed();
+}
+
+void sub_811EC10(void)
+{
+ u8 i;
+ u8 r4;
+
+ if (gUnknown_02023A60[gUnknown_02024A60][2] == 0)
+ {
+ sub_811EC68(gUnknown_02024A6A[gUnknown_02024A60]);
+ }
+ else
+ {
+ r4 = gUnknown_02023A60[gUnknown_02024A60][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ sub_811EC68(i);
+ r4 >>= 1;
+ }
+ }
+ dp01_tbl3_exec_completed();
+}
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 7c9b7f17e..07f319e40 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -1,38 +1,35 @@
#include "global.h"
-#include "battle.h"
+#include "abilities.h"
#include "asm.h"
+#include "battle.h"
+#include "battle_move_effects.h"
+#include "item.h"
#include "pokemon.h"
#include "rng.h"
-#include "abilities.h"
#include "species.h"
+#include "moves.h"
+#include "battle_ai.h"
-#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
-#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
-#define AIScriptRead8(ptr) ((ptr)[0])
-#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
-
-enum
-{
- TARGET,
- USER
-};
+extern void sub_801CAF8(u8, u8);
extern void move_effectiveness_something(u16, u8, u8);
extern u16 gBattleTypeFlags;
+extern u16 gBattleWeather;
extern u8 gUnknown_02024A60;
extern u8 gUnknown_02024A6A[][2];
extern u16 gUnknown_02024BE6;
-extern u32 gUnknown_02024BEC;
-extern u8 gUnknown_02024C07; // something player?
-extern u8 gUnknown_02024C08; // something opponent?
+extern int gBattleMoveDamage;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0C;
-extern u8 gUnknown_02024C68;
+extern u8 gBattleMoveFlags;
extern u16 gUnknown_02024DEC;
extern u16 gUnknown_02024C34[];
extern u32 gUnknown_02024ACC[];
extern u32 gUnknown_02024C98[];
extern u16 gUnknown_02024C7A[];
+extern struct BattlePokemon gBattleMons[];
extern struct BattlePokemon gUnknown_02024A8C[];
extern u8 gUnknown_030042E0[];
extern u8 gCritMultiplier;
@@ -40,10 +37,8 @@ extern u16 gTrainerBattleOpponent;
extern u32 gBitTable[];
extern u8 *BattleAIs[];
extern struct Trainer gTrainers[];
-extern struct BattlePokemon gBattleMons[];
extern struct BattleMove gBattleMoves[];
extern struct BaseStats gBaseStats[];
-extern void (*gBattleAICmdTable[])(void);
/*
gAIScriptPtr is a pointer to the next battle AI cmd command to read.
@@ -54,46 +49,240 @@ AI scripts.
*/
extern u8 *gAIScriptPtr;
-struct UnknownStruct1
+static void BattleAICmd_if_random_less_than(void);
+static void BattleAICmd_if_random_greater_than(void);
+static void BattleAICmd_if_random_equal(void);
+static void BattleAICmd_if_random_not_equal(void);
+static void BattleAICmd_score(void);
+static void BattleAICmd_if_hp_less_than(void);
+static void BattleAICmd_if_hp_more_than(void);
+static void BattleAICmd_if_hp_equal(void);
+static void BattleAICmd_if_hp_not_equal(void);
+static void BattleAICmd_if_status(void);
+static void BattleAICmd_if_not_status(void);
+static void BattleAICmd_if_status2(void);
+static void BattleAICmd_if_not_status2(void);
+static void BattleAICmd_if_status3(void);
+static void BattleAICmd_if_not_status3(void);
+static void BattleAICmd_if_status4(void);
+static void BattleAICmd_if_not_status4(void);
+static void BattleAICmd_if_less_than(void);
+static void BattleAICmd_if_more_than(void);
+static void BattleAICmd_if_equal(void);
+static void BattleAICmd_if_not_equal(void);
+static void BattleAICmd_if_less_than_32(void);
+static void BattleAICmd_if_more_than_32(void);
+static void BattleAICmd_if_equal_32(void);
+static void BattleAICmd_if_not_equal_32(void);
+static void BattleAICmd_if_move(void);
+static void BattleAICmd_if_not_move(void);
+static void BattleAICmd_if_in_bytes(void);
+static void BattleAICmd_if_not_in_bytes(void);
+static void BattleAICmd_if_in_words(void);
+static void BattleAICmd_if_not_in_words(void);
+static void BattleAICmd_if_user_can_damage(void);
+static void BattleAICmd_if_user_cant_damage(void);
+static void BattleAICmd_get_turn_count(void);
+static void BattleAICmd_get_type(void);
+static void BattleAICmd_get_move_power(void);
+static void BattleAICmd_is_most_powerful_move(void);
+static void BattleAICmd_get_move(void);
+static void BattleAICmd_if_arg_equal(void);
+static void BattleAICmd_if_arg_not_equal(void);
+static void BattleAICmd_if_would_go_first(void);
+static void BattleAICmd_if_would_not_go_first(void);
+static void BattleAICmd_nullsub_2A(void);
+static void BattleAICmd_nullsub_2B(void);
+static void BattleAICmd_count_alive_pokemon(void);
+static void BattleAICmd_get_considered_move(void);
+static void BattleAICmd_get_considered_move_effect(void);
+static void BattleAICmd_get_ability(void);
+static void BattleAICmd_get_highest_possible_damage(void);
+static void BattleAICmd_if_damage_bonus(void);
+static void BattleAICmd_nullsub_32(void);
+static void BattleAICmd_nullsub_33(void);
+static void BattleAICmd_if_status_in_party(void);
+static void BattleAICmd_if_status_not_in_party(void);
+static void BattleAICmd_get_weather(void);
+static void BattleAICmd_if_effect(void);
+static void BattleAICmd_if_not_effect(void);
+static void BattleAICmd_if_stat_level_less_than(void);
+static void BattleAICmd_if_stat_level_more_than(void);
+static void BattleAICmd_if_stat_level_equal(void);
+static void BattleAICmd_if_stat_level_not_equal(void);
+static void BattleAICmd_if_can_faint(void);
+static void BattleAICmd_if_cant_faint(void);
+static void BattleAICmd_if_has_move(void);
+static void BattleAICmd_if_dont_have_move(void);
+static void BattleAICmd_if_move_effect(void);
+static void BattleAICmd_if_not_move_effect(void);
+static void BattleAICmd_if_last_move_did_damage(void);
+static void BattleAICmd_if_encored(void);
+static void BattleAICmd_flee(void);
+static void BattleAICmd_if_random_100(void);
+static void BattleAICmd_watch(void);
+static void BattleAICmd_get_hold_effect(void);
+static void BattleAICmd_get_gender(void);
+static void BattleAICmd_is_first_turn(void);
+static void BattleAICmd_get_stockpile_count(void);
+static void BattleAICmd_is_double_battle(void);
+static void BattleAICmd_get_item(void);
+static void BattleAICmd_get_move_type_from_result(void);
+static void BattleAICmd_get_move_power_from_result(void);
+static void BattleAICmd_get_move_effect_from_result(void);
+static void BattleAICmd_get_protect_count(void);
+static void BattleAICmd_nullsub_52(void);
+static void BattleAICmd_nullsub_53(void);
+static void BattleAICmd_nullsub_54(void);
+static void BattleAICmd_nullsub_55(void);
+static void BattleAICmd_nullsub_56(void);
+static void BattleAICmd_nullsub_57(void);
+static void BattleAICmd_call(void);
+static void BattleAICmd_jump(void);
+static void BattleAICmd_end(void);
+static void BattleAICmd_if_level_compare(void);
+static void BattleAICmd_if_taunted(void);
+static void BattleAICmd_if_not_taunted(void);
+
+typedef void (*BattleAICmdFunc)(void);
+
+static const BattleAICmdFunc sBattleAICmdTable[] =
{
-/* 0x00 */ u16 unk0[2][8];
-/* 0x20 */ u8 unk20[2];
-/* 0x22 */ u8 unk22[2];
-/* 0x24 */ u16 items[4];
-/* 0x2C */ u8 unk8;
+ BattleAICmd_if_random_less_than,
+ BattleAICmd_if_random_greater_than,
+ BattleAICmd_if_random_equal,
+ BattleAICmd_if_random_not_equal,
+ BattleAICmd_score,
+ BattleAICmd_if_hp_less_than,
+ BattleAICmd_if_hp_more_than,
+ BattleAICmd_if_hp_equal,
+ BattleAICmd_if_hp_not_equal,
+ BattleAICmd_if_status,
+ BattleAICmd_if_not_status,
+ BattleAICmd_if_status2,
+ BattleAICmd_if_not_status2,
+ BattleAICmd_if_status3,
+ BattleAICmd_if_not_status3,
+ BattleAICmd_if_status4,
+ BattleAICmd_if_not_status4,
+ BattleAICmd_if_less_than,
+ BattleAICmd_if_more_than,
+ BattleAICmd_if_equal,
+ BattleAICmd_if_not_equal,
+ BattleAICmd_if_less_than_32,
+ BattleAICmd_if_more_than_32,
+ BattleAICmd_if_equal_32,
+ BattleAICmd_if_not_equal_32,
+ BattleAICmd_if_move,
+ BattleAICmd_if_not_move,
+ BattleAICmd_if_in_bytes,
+ BattleAICmd_if_not_in_bytes,
+ BattleAICmd_if_in_words,
+ BattleAICmd_if_not_in_words,
+ BattleAICmd_if_user_can_damage,
+ BattleAICmd_if_user_cant_damage,
+ BattleAICmd_get_turn_count,
+ BattleAICmd_get_type,
+ BattleAICmd_get_move_power,
+ BattleAICmd_is_most_powerful_move,
+ BattleAICmd_get_move,
+ BattleAICmd_if_arg_equal,
+ BattleAICmd_if_arg_not_equal,
+ BattleAICmd_if_would_go_first,
+ BattleAICmd_if_would_not_go_first,
+ BattleAICmd_nullsub_2A,
+ BattleAICmd_nullsub_2B,
+ BattleAICmd_count_alive_pokemon,
+ BattleAICmd_get_considered_move,
+ BattleAICmd_get_considered_move_effect,
+ BattleAICmd_get_ability,
+ BattleAICmd_get_highest_possible_damage,
+ BattleAICmd_if_damage_bonus,
+ BattleAICmd_nullsub_32,
+ BattleAICmd_nullsub_33,
+ BattleAICmd_if_status_in_party,
+ BattleAICmd_if_status_not_in_party,
+ BattleAICmd_get_weather,
+ BattleAICmd_if_effect,
+ BattleAICmd_if_not_effect,
+ BattleAICmd_if_stat_level_less_than,
+ BattleAICmd_if_stat_level_more_than,
+ BattleAICmd_if_stat_level_equal,
+ BattleAICmd_if_stat_level_not_equal,
+ BattleAICmd_if_can_faint,
+ BattleAICmd_if_cant_faint,
+ BattleAICmd_if_has_move,
+ BattleAICmd_if_dont_have_move,
+ BattleAICmd_if_move_effect,
+ BattleAICmd_if_not_move_effect,
+ BattleAICmd_if_last_move_did_damage,
+ BattleAICmd_if_encored,
+ BattleAICmd_flee,
+ BattleAICmd_if_random_100,
+ BattleAICmd_watch,
+ BattleAICmd_get_hold_effect,
+ BattleAICmd_get_gender,
+ BattleAICmd_is_first_turn,
+ BattleAICmd_get_stockpile_count,
+ BattleAICmd_is_double_battle,
+ BattleAICmd_get_item,
+ BattleAICmd_get_move_type_from_result,
+ BattleAICmd_get_move_power_from_result,
+ BattleAICmd_get_move_effect_from_result,
+ BattleAICmd_get_protect_count,
+ BattleAICmd_nullsub_52,
+ BattleAICmd_nullsub_53,
+ BattleAICmd_nullsub_54,
+ BattleAICmd_nullsub_55,
+ BattleAICmd_nullsub_56,
+ BattleAICmd_nullsub_57,
+ BattleAICmd_call,
+ BattleAICmd_jump,
+ BattleAICmd_end,
+ BattleAICmd_if_level_compare,
+ BattleAICmd_if_taunted,
+ BattleAICmd_if_not_taunted,
};
-struct UnknownStruct3
+#ifdef NONMATCHING
+static
+#endif
+const u16 sDiscouragedPowerfulMoveEffects[] =
{
- u8 filler0[0x20];
- u8 unk20;
+ EFFECT_EXPLOSION,
+ EFFECT_DREAM_EATER,
+ EFFECT_RAZOR_WIND,
+ EFFECT_SKY_ATTACK,
+ EFFECT_RECHARGE,
+ EFFECT_SKULL_BASH,
+ EFFECT_SOLARBEAM,
+ EFFECT_SPIT_UP,
+ EFFECT_FOCUS_PUNCH,
+ EFFECT_SUPERPOWER,
+ EFFECT_ERUPTION,
+ EFFECT_OVERHEAT,
+ 0xFFFF
};
-extern struct UnknownStruct1 unk_2016A00;
-extern struct UnknownStruct3 unk_2016C00;
-
-void BattleAI_SetupAIData(void);
-void BattleAI_DoAIProcessing(void);
-void sub_810745C(void);
-
// if the AI is a Link battle, safari, battle tower, or ereader, it will ignore considering item uses.
void BattleAI_HandleItemUseBeforeAISetup(void)
{
s32 i;
- u8 *data = (u8 *)&unk_2016A00;
+ u8 *data = (u8 *)UNK_2016A00_STRUCT;
- for (i = 0; (u32)i < 48; i++)
+ for (i = 0; (u32)i < sizeof(struct UnknownStruct1); i++)
data[i] = 0;
+
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 0x400
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_TRAINER_ITEMS; i++)
{
if (gTrainers[gTrainerBattleOpponent].items[i] != 0)
{
- unk_2016A00.items[unk_2016A00.unk8] = gTrainers[gTrainerBattleOpponent].items[i];
- unk_2016A00.unk8++;
+ UNK_2016A00_STRUCT->items[UNK_2016A00_STRUCT->numOfItems] = gTrainers[gTrainerBattleOpponent].items[i];
+ UNK_2016A00_STRUCT->numOfItems++;
}
}
}
@@ -104,130 +293,136 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
void BattleAI_SetupAIData(void)
{
s32 i;
- u8 *data = (u8 *)&gAIThinkingSpace;
+ u8 *data = (u8 *)AI_THINKING_STRUCT;
u8 r7;
- // clear AI data and set default move score to 100.
- for(i = 0; (u32)i < 28; i++)
+ // clear AI data and set default move score to 100. strange that they didn't use memset here.
+ for (i = 0; (u32)i < sizeof(struct AI_ThinkingStruct); i++)
data[i] = 0;
- for(i = 0; i < 4; i++)
- gAIThinkingSpace.score[i] = 100;
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ AI_THINKING_STRUCT->score[i] = 100;
r7 = sub_8015A98(gUnknown_02024A60, 0, 0xFF);
- for(i = 0; i < 4; i++)
+ // probably sets up the moves to consider and ignores non-valid moves such as NO_MOVE or glitch moves.
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
- u16 rand;
+ if (gBitTable[i] & r7)
+ AI_THINKING_STRUCT->score[i] = 0;
- if(gBitTable[i] & r7)
- gAIThinkingSpace.score[i] = 0;
- rand = Random();
- gAIThinkingSpace.unk18[i] = 100 - (rand & 0xF);
+ AI_THINKING_STRUCT->simulatedRNG[i] = 100 - (Random() % 16);
}
- unk_2016C00.unk20 = 0;
- gUnknown_02024C07 = gUnknown_02024A60;
+ // clear AI stack.
+ AI_STACK->size = 0;
+ gPlayerMonIndex = gUnknown_02024A60;
- if(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- gUnknown_02024C08 = Random() & 2;
+ gEnemyMonIndex = Random() & 2; // just pick somebody to target.
- if(gUnknown_02024C0C & gBitTable[gUnknown_02024C08])
- gUnknown_02024C08 ^= 2;
+ if (gUnknown_02024C0C & gBitTable[gEnemyMonIndex])
+ gEnemyMonIndex ^= 2;
}
else
- gUnknown_02024C08 = gUnknown_02024A60 ^ 1;
+ gEnemyMonIndex = gUnknown_02024A60 ^ 1;
// special AI flag cases.
- if(gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- gAIThinkingSpace.aiFlags = 0x40000000;
- else if(gBattleTypeFlags & BATTLE_TYPE_ROAMER)
- gAIThinkingSpace.aiFlags = 0x20000000;
- else if(gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
- gAIThinkingSpace.aiFlags = 0x80000000;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ AI_THINKING_STRUCT->aiFlags = 0x40000000;
+ else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
+ AI_THINKING_STRUCT->aiFlags = 0x20000000;
+ else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
+ AI_THINKING_STRUCT->aiFlags = 0x80000000;
else // otherwise, just set aiFlags to whatever flags the trainer has set in their data.
- gAIThinkingSpace.aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
+ AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
}
u8 BattleAI_GetAIActionToUse(void)
{
- u8 arr1[4];
- u8 arr2[4];
- u8 r5;
+ u8 currentMoveArray[MAX_MON_MOVES];
+ u8 consideredMoveArray[MAX_MON_MOVES];
+ u8 numOfBestMoves;
s32 i;
sub_810745C();
- while(gAIThinkingSpace.aiFlags != 0)
+ while (AI_THINKING_STRUCT->aiFlags != 0)
{
- if(gAIThinkingSpace.aiFlags & 1)
+ if (AI_THINKING_STRUCT->aiFlags & 1)
{
- gAIThinkingSpace.unk0 = 0;
+ AI_THINKING_STRUCT->aiState = AIState_SettingUp;
BattleAI_DoAIProcessing();
}
- gAIThinkingSpace.aiFlags >>= 1;
- gAIThinkingSpace.aiLogicId++;
- gAIThinkingSpace.moveConsidered = 0;
+ AI_THINKING_STRUCT->aiFlags >>= 1;
+ AI_THINKING_STRUCT->aiLogicId++;
+ AI_THINKING_STRUCT->movesetIndex = 0;
}
- if(gAIThinkingSpace.unk10 & 2)
+
+ // special flee or watch cases for safari.
+ if (AI_THINKING_STRUCT->aiAction & (AI_ACTION_FLEE)) // flee
return 4;
- if(gAIThinkingSpace.unk10 & 4)
+ if (AI_THINKING_STRUCT->aiAction & (AI_ACTION_WATCH)) // watch
return 5;
- r5 = 1;
- arr1[0] = gAIThinkingSpace.score[0];
- arr2[0] = 0;
- for(i = 1; i < 4; i++)
+
+ numOfBestMoves = 1;
+ currentMoveArray[0] = AI_THINKING_STRUCT->score[0];
+ consideredMoveArray[0] = 0;
+
+ for (i = 1; i < MAX_MON_MOVES; i++)
{
- if(arr1[0] < (s8)gAIThinkingSpace.score[i])
+ if (currentMoveArray[0] < AI_THINKING_STRUCT->score[i])
{
- r5 = 1;
- arr1[0] = gAIThinkingSpace.score[i];
- arr2[0] = i;
+ numOfBestMoves = 1;
+ currentMoveArray[0] = AI_THINKING_STRUCT->score[i];
+ consideredMoveArray[0] = i;
}
- if(arr1[0] == (s8)gAIThinkingSpace.score[i])
+ if (currentMoveArray[0] == AI_THINKING_STRUCT->score[i])
{
- arr1[r5] = gAIThinkingSpace.score[i];
- arr2[r5++] = i;
+ currentMoveArray[numOfBestMoves] = AI_THINKING_STRUCT->score[i];
+ consideredMoveArray[numOfBestMoves++] = i;
}
}
- return arr2[Random() % r5];
+
+ return consideredMoveArray[Random() % numOfBestMoves]; // break any ties that exist.
}
void BattleAI_DoAIProcessing(void)
{
- while(gAIThinkingSpace.unk0 != 2)
+ while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing)
{
- switch(gAIThinkingSpace.unk0)
+ switch (AI_THINKING_STRUCT->aiState)
{
- case 3: //Needed to match.
+ case AIState_DoNotProcess: //Needed to match.
break;
- case 0:
- gAIScriptPtr = BattleAIs[gAIThinkingSpace.aiLogicId];
- if(gBattleMons[gUnknown_02024C07].pp[gAIThinkingSpace.moveConsidered] == 0)
+ case AIState_SettingUp:
+ gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr.
+ if (gBattleMons[gPlayerMonIndex].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
- gAIThinkingSpace.unk2 = 0;
+ AI_THINKING_STRUCT->moveConsidered = MOVE_NONE; // don't consider a move you have 0 PP for, idiot.
}
else
{
- gAIThinkingSpace.unk2 = gBattleMons[gUnknown_02024C07].moves[gAIThinkingSpace.moveConsidered];
+ AI_THINKING_STRUCT->moveConsidered = gBattleMons[gPlayerMonIndex].moves[AI_THINKING_STRUCT->movesetIndex];
}
- gAIThinkingSpace.unk0++;
+ AI_THINKING_STRUCT->aiState++;
break;
- case 1:
- if(gAIThinkingSpace.unk2 != 0)
- gBattleAICmdTable[*(u8 *)gAIScriptPtr](); // run AI command.
+ case AIState_Processing:
+ if (AI_THINKING_STRUCT->moveConsidered != MOVE_NONE)
+ sBattleAICmdTable[*(u8 *)gAIScriptPtr](); // run AI command.
else
{
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] = 0;
- gAIThinkingSpace.unk10 |= 1;
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0; // definitely do not consider any move that has 0 PP.
+ AI_THINKING_STRUCT->aiAction |= AI_ACTION_DONE;
}
- if(gAIThinkingSpace.unk10 & 1)
+ if (AI_THINKING_STRUCT->aiAction & AI_ACTION_DONE)
{
- gAIThinkingSpace.moveConsidered++;
- if(gAIThinkingSpace.moveConsidered < 4 && !(gAIThinkingSpace.unk10 & 8))
- gAIThinkingSpace.unk0 = 0;
+ AI_THINKING_STRUCT->movesetIndex++;
+ if (AI_THINKING_STRUCT->movesetIndex < MAX_MON_MOVES && (AI_THINKING_STRUCT->aiAction & AI_ACTION_DO_NOT_ATTACK) == 0)
+ AI_THINKING_STRUCT->aiState = AIState_SettingUp; // as long as their are more moves to process, keep setting this to setup state.
else
- gAIThinkingSpace.unk0++;
- gAIThinkingSpace.unk10 &= 0xFE;
+ AI_THINKING_STRUCT->aiState++; // done processing.
+ AI_THINKING_STRUCT->aiAction &= (AI_ACTION_FLEE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK |
+ AI_ACTION_UNK5 | AI_ACTION_UNK6 | AI_ACTION_UNK7 | AI_ACTION_UNK8); // disable AI_ACTION_DONE.
}
break;
}
@@ -238,12 +433,11 @@ void sub_810745C(void)
{
s32 i;
- for(i = 0; i < 8; i++)
+ for (i = 0; i < 8; i++)
{
- // this is the same as dividing it by 2, but for some reason, >> 1 is needed to match the asm.
- if(unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] == 0)
+ if (UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i] == 0)
{
- unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] = gUnknown_02024C34[gUnknown_02024C08];
+ UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i] = gUnknown_02024C34[gEnemyMonIndex];
return;
}
}
@@ -253,507 +447,558 @@ void unref_sub_81074A0(u8 a)
{
s32 i;
- for(i = 0; i < 8; i++)
- unk_2016A00.unk0[a / 2][i] = 0;
+ for (i = 0; i < 8; i++)
+ UNK_2016A00_STRUCT->movesUsed[a / 2][i] = 0;
}
void sub_81074C4(u8 a, u8 b)
{
- if(battle_side_get_owner(a) == 0)
- unk_2016A00.unk20[battle_get_per_side_status(a) & 1] = b;
+ if (battle_side_get_owner(a) == 0)
+ UNK_2016A00_STRUCT->unk20[battle_get_per_side_status(a) & 1] = b;
}
void sub_81074F8(u8 a, u8 b)
{
- if(battle_side_get_owner(a) == 0)
- unk_2016A00.unk22[battle_get_per_side_status(a) & 1] = b;
+ if (battle_side_get_owner(a) == 0)
+ UNK_2016A00_STRUCT->unk22[battle_get_per_side_status(a) & 1] = b;
}
-void BattleAICmd_if_random(void)
+static void BattleAICmd_if_random_less_than(void)
{
- u16 random = Random();
-
- if (!(random % 256 >= gAIScriptPtr[1])) // roll a random value. is it less than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (Random() % 256 < gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_not_random(void)
+static void BattleAICmd_if_random_greater_than(void)
{
- u16 random = Random();
-
- if (!(random % 256 <= gAIScriptPtr[1])) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (Random() % 256 > gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_random_1(void) // if RNG Value equal to
+static void BattleAICmd_if_random_equal(void)
{
- u16 random = Random();
-
- if (random % 256 == gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (Random() % 256 == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_not_random_1(void) // if RNG value not equal to
+static void BattleAICmd_if_random_not_equal(void)
{
- u16 random = Random();
-
- if (random % 256 != gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (Random() % 256 != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_score(void)
+static void BattleAICmd_score(void)
{
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
- if(gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] < 0) // if the score is negative, flatten it to 0.
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] = 0;
+ if (AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] < 0) // if the score is negative, flatten it to 0.
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0;
gAIScriptPtr += 2; // AI return.
}
-void BattleAICmd_if_hp_less_than(void)
+static void BattleAICmd_if_hp_less_than(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) < gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) < gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-void BattleAICmd_if_hp_more_than(void)
+static void BattleAICmd_if_hp_more_than(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) > gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) > gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-void BattleAICmd_if_hp_equal(void)
+static void BattleAICmd_if_hp_equal(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) == gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) == gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-void BattleAICmd_if_hp_not_equal(void)
+static void BattleAICmd_if_hp_not_equal(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) != gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) != gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-void BattleAICmd_if_status(void)
+static void BattleAICmd_if_status(void)
{
- u16 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (gBattleMons[var].status1 & temp)
+ if ((gBattleMons[index].status1 & arg) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status(void)
+static void BattleAICmd_if_not_status(void)
{
- u16 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gBattleMons[var].status1 & temp))
+ if ((gBattleMons[index].status1 & arg) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status2(void)
+static void BattleAICmd_if_status2(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (gBattleMons[var].status2 & temp)
+ if ((gBattleMons[index].status2 & arg) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status2(void)
+static void BattleAICmd_if_not_status2(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gBattleMons[var].status2 & temp))
+ if ((gBattleMons[index].status2 & arg) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status3(void)
+static void BattleAICmd_if_status3(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if ( gUnknown_02024C98[var] & temp )
+ if ((gUnknown_02024C98[index] & arg) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status3(void)
+static void BattleAICmd_if_not_status3(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gUnknown_02024C98[var] & temp))
+ if ((gUnknown_02024C98[index] & arg) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status4(void)
+static void BattleAICmd_if_status4(void)
{
- u8 var;
- u32 temp;
- u32 temp2;
+ u16 index;
+ u32 arg1, arg2;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = battle_get_per_side_status(var) & 1;
- temp2 = AIScriptRead32(gAIScriptPtr + 2);
+ arg1 = battle_get_per_side_status(index) & 1;
+ arg2 = AIScriptRead32(gAIScriptPtr + 2);
- if ( gUnknown_02024C7A[temp] & temp2 )
+ if ((gUnknown_02024C7A[arg1] & arg2) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status4(void)
+static void BattleAICmd_if_not_status4(void)
{
- u8 var;
- u32 temp;
- u32 temp2;
+ u16 index;
+ u32 arg1, arg2;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = battle_get_per_side_status(var) & 1;
- temp2 = AIScriptRead32(gAIScriptPtr + 2);
+ arg1 = battle_get_per_side_status(index) & 1;
+ arg2 = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gUnknown_02024C7A[temp] & temp2))
+ if ((gUnknown_02024C7A[arg1] & arg2) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_less_than(void)
+static void BattleAICmd_if_less_than(void)
{
- if (gAIThinkingSpace.unk8 < gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult < gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_more_than(void)
+static void BattleAICmd_if_more_than(void)
{
- if (gAIThinkingSpace.unk8 > gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult > gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_equal(void)
+static void BattleAICmd_if_equal(void)
{
- if (gAIThinkingSpace.unk8 == gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_not_equal(void)
+static void BattleAICmd_if_not_equal(void)
{
- if (gAIThinkingSpace.unk8 != gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_less_than_32(void)
+static void BattleAICmd_if_less_than_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 < *temp)
+ if (AI_THINKING_STRUCT->funcResult < *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
}
-void BattleAICmd_if_more_than_32(void)
+static void BattleAICmd_if_more_than_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 > *temp)
+ if (AI_THINKING_STRUCT->funcResult > *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
}
-void BattleAICmd_if_equal_32(void)
+static void BattleAICmd_if_equal_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 == *temp)
+ if (AI_THINKING_STRUCT->funcResult == *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
}
-void BattleAICmd_if_not_equal_32(void)
+static void BattleAICmd_if_not_equal_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 != *temp)
+ if (AI_THINKING_STRUCT->funcResult != *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
}
-void BattleAICmd_if_move(void)
+static void BattleAICmd_if_move(void)
{
u16 move = AIScriptRead16(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk2 == move)
+ if (AI_THINKING_STRUCT->moveConsidered == move)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-void BattleAICmd_if_not_move(void)
+static void BattleAICmd_if_not_move(void)
{
u16 move = AIScriptRead16(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk2 != move)
+ if (AI_THINKING_STRUCT->moveConsidered != move)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-void BattleAICmd_if_in_bytes(void)
+static void BattleAICmd_if_in_bytes(void)
{
u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
- while(*ptr != 0xFF)
- {
- if(gAIThinkingSpace.unk8 == *ptr)
- {
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
- return;
- }
- ptr++;
- }
- gAIScriptPtr += 9;
+ while (*ptr != 0xFF)
+ {
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ return;
+ }
+ ptr++;
+ }
+ gAIScriptPtr += 9;
}
-void BattleAICmd_if_not_in_bytes(void)
+static void BattleAICmd_if_not_in_bytes(void)
{
u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
- while(*ptr != 0xFF)
- {
- if(gAIThinkingSpace.unk8 == *ptr)
- {
- gAIScriptPtr += 9;
- return;
- }
- ptr++;
- }
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ while (*ptr != 0xFF)
+ {
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
+ {
+ gAIScriptPtr += 9;
+ return;
+ }
+ ptr++;
+ }
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
}
-void BattleAICmd_if_in_words(void)
+static void BattleAICmd_if_in_words(void)
{
u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
- while(*ptr != 0xFFFF)
- {
- if(gAIThinkingSpace.unk8 == *ptr)
- {
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
- return;
- }
- ptr++;
- }
- gAIScriptPtr += 9;
+ while (*ptr != 0xFFFF)
+ {
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ return;
+ }
+ ptr++;
+ }
+ gAIScriptPtr += 9;
}
-void BattleAICmd_if_not_in_words(void)
+static void BattleAICmd_if_not_in_words(void)
{
u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
- while(*ptr != 0xFFFF)
- {
- if(gAIThinkingSpace.unk8 == *ptr)
- {
- gAIScriptPtr += 9;
- return;
- }
- ptr++;
- }
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ while (*ptr != 0xFFFF)
+ {
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
+ {
+ gAIScriptPtr += 9;
+ return;
+ }
+ ptr++;
+ }
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
}
-void BattleAICmd_if_user_can_damage(void)
+static void BattleAICmd_if_user_can_damage(void)
{
- s32 i;
+ s32 i;
- for(i = 0; i < 4; i++)
- {
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0
- && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].power != 0)
- break;
- }
- if(i == 4)
- gAIScriptPtr += 5;
- else
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0
+ && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power != 0)
+ break;
+ }
+ if (i == MAX_MON_MOVES)
+ gAIScriptPtr += 5;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-void BattleAICmd_if_user_cant_damage(void)
+static void BattleAICmd_if_user_cant_damage(void)
{
- s32 i;
+ s32 i;
- for(i = 0; i < 4; i++)
- {
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0
- && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].power != 0)
- break;
- }
- if(i != 4)
- gAIScriptPtr += 5;
- else
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0
+ && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power != 0)
+ break;
+ }
+ if (i != MAX_MON_MOVES)
+ gAIScriptPtr += 5;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-void BattleAICmd_unk_21(void)
+static void BattleAICmd_get_turn_count(void)
{
- gAIThinkingSpace.unk8 = gUnknown_030042E0[19];
+ AI_THINKING_STRUCT->funcResult = gUnknown_030042E0[19];
gAIScriptPtr += 1;
}
-void BattleAICmd_get_type(void)
+static void BattleAICmd_get_type(void)
{
- u8 typeVar = gAIScriptPtr[1];
-
- switch(typeVar)
+ switch (gAIScriptPtr[1])
{
- case 1:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C07].type1;
- break;
- case 0:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C08].type1;
- break;
- case 3:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C07].type2;
- break;
- case 2:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C08].type2;
- break;
- case 4:
- gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].type;
- break;
+ case 1: // player primary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gPlayerMonIndex].type1;
+ break;
+ case 0: // enemy primary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gEnemyMonIndex].type1;
+ break;
+ case 3: // player secondary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gPlayerMonIndex].type2;
+ break;
+ case 2: // enemy secondary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gEnemyMonIndex].type2;
+ break;
+ case 4: // type of move being pointed to
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
+ break;
}
gAIScriptPtr += 2;
}
-void BattleAICmd_unk_23(void)
+static void BattleAICmd_get_move_power(void)
{
- gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].power;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power;
gAIScriptPtr += 1;
}
+#ifdef NONMATCHING
+static void BattleAICmd_is_most_powerful_move(void)
+{
+ int i, j;
+ s32 damages[MAX_MON_MOVES];
+
+ for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
+ break;
+
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
+ {
+ gUnknown_02024DEC = 0;
+ unk_2000000[0x1601C] = 0; // why is this a manual array?
+ unk_2000000[0x1601F] = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ for (j = 0; sDiscouragedPowerfulMoveEffects[j] != 0xFFFF; j++)
+ { // _08108276
+ if (gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == sDiscouragedPowerfulMoveEffects[j])
+ break;
+ }
+
+ // _081082BA
+ if (gBattleMons[gPlayerMonIndex].moves[i]
+ && sDiscouragedPowerfulMoveEffects[j] == 0xFFFF
+ && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power > 1)
+ {
+ gUnknown_02024BE6 = gBattleMons[gPlayerMonIndex].moves[i];
+ sub_801CAF8(gPlayerMonIndex, gEnemyMonIndex);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
+ damages[i] = (gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[i]) / 100;
+
+ if (damages[i] == 0) // moves always do at least 1 damage.
+ damages[i] = 1;
+ }
+ else
+ {
+ damages[i] = 0;
+ }
+ }
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ if (damages[i] > damages[AI_THINKING_STRUCT->movesetIndex])
+ break;
+
+ if (i == MAX_MON_MOVES)
+ AI_THINKING_STRUCT->funcResult = 2;
+ else
+ AI_THINKING_STRUCT->funcResult = 1;
+ }
+ else
+ {
+ AI_THINKING_STRUCT->funcResult = 0;
+ }
+
+ gAIScriptPtr += 1;
+}
+#else
__attribute__((naked))
-void BattleAICmd_unk_24(void)
+static void BattleAICmd_is_most_powerful_move(void)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -763,7 +1008,7 @@ void BattleAICmd_unk_24(void)
push {r5-r7}\n\
sub sp, 0x14\n\
movs r3, 0\n\
- ldr r0, _08108328 @ =gUnknown_083F62BC\n\
+ ldr r0, _08108328 @ =sDiscouragedPowerfulMoveEffects\n\
ldrh r1, [r0]\n\
ldr r4, _0810832C @ =0x0000ffff\n\
ldr r6, _08108330 @ =gBattleMoves\n\
@@ -776,7 +1021,7 @@ void BattleAICmd_unk_24(void)
lsls r0, 2\n\
adds r0, r6\n\
ldrb r2, [r0]\n\
- ldr r1, _08108328 @ =gUnknown_083F62BC\n\
+ ldr r1, _08108328 @ =sDiscouragedPowerfulMoveEffects\n\
_0810821E:\n\
ldrh r0, [r1]\n\
cmp r2, r0\n\
@@ -798,7 +1043,7 @@ _0810822E:\n\
b _081083B2\n\
_08108240:\n\
lsls r0, r3, 1\n\
- ldr r1, _08108328 @ =gUnknown_083F62BC\n\
+ ldr r1, _08108328 @ =sDiscouragedPowerfulMoveEffects\n\
adds r0, r1\n\
ldrh r3, [r0]\n\
ldr r0, _0810832C @ =0x0000ffff\n\
@@ -816,20 +1061,20 @@ _08108250:\n\
adds r0, r5, r2\n\
movs r2, 0x1\n\
strb r2, [r0]\n\
- ldr r0, _08108340 @ =gUnknown_02024C68\n\
+ ldr r0, _08108340 @ =gBattleMoveFlags\n\
strb r1, [r0]\n\
ldr r0, _08108344 @ =gCritMultiplier\n\
strb r2, [r0]\n\
movs r6, 0\n\
mov r9, r3\n\
- ldr r0, _08108328 @ =gUnknown_083F62BC\n\
+ ldr r0, _08108328 @ =sDiscouragedPowerfulMoveEffects\n\
ldrh r0, [r0]\n\
str r0, [sp, 0x10]\n\
_08108276:\n\
movs r3, 0\n\
ldr r5, _08108348 @ =gBattleMons\n\
lsls r4, r6, 1\n\
- ldr r7, _0810834C @ =gUnknown_02024C07\n\
+ ldr r7, _0810834C @ =gPlayerMonIndex\n\
lsls r1, r6, 2\n\
mov r8, r1\n\
adds r2, r6, 0x1\n\
@@ -851,7 +1096,7 @@ _08108276:\n\
lsls r0, 2\n\
adds r0, r2\n\
ldrb r2, [r0]\n\
- ldr r1, _08108328 @ =gUnknown_083F62BC\n\
+ ldr r1, _08108328 @ =sDiscouragedPowerfulMoveEffects\n\
_081082AA:\n\
ldrh r0, [r1]\n\
cmp r2, r0\n\
@@ -873,7 +1118,7 @@ _081082BA:\n\
cmp r0, 0\n\
beq _0810835C\n\
lsls r0, r3, 1\n\
- ldr r2, _08108328 @ =gUnknown_083F62BC\n\
+ ldr r2, _08108328 @ =sDiscouragedPowerfulMoveEffects\n\
adds r0, r2\n\
ldrh r0, [r0]\n\
cmp r0, r9\n\
@@ -890,7 +1135,7 @@ _081082BA:\n\
ldr r5, _08108350 @ =gUnknown_02024BE6\n\
strh r2, [r5]\n\
ldrb r0, [r7]\n\
- ldr r4, _08108354 @ =gUnknown_02024C08\n\
+ ldr r4, _08108354 @ =gEnemyMonIndex\n\
ldrb r1, [r4]\n\
bl sub_801CAF8\n\
ldrh r0, [r5]\n\
@@ -899,7 +1144,7 @@ _081082BA:\n\
bl move_effectiveness_something\n\
mov r4, sp\n\
add r4, r8\n\
- ldr r2, _08108358 @ =gUnknown_02024BEC\n\
+ ldr r2, _08108358 @ =gBattleMoveDamage\n\
ldr r0, _08108334 @ =0x02016800\n\
adds r0, 0x18\n\
adds r0, r6, r0\n\
@@ -915,19 +1160,19 @@ _081082BA:\n\
str r0, [r4]\n\
b _08108364\n\
.align 2, 0\n\
-_08108328: .4byte gUnknown_083F62BC\n\
+_08108328: .4byte sDiscouragedPowerfulMoveEffects\n\
_0810832C: .4byte 0x0000ffff\n\
_08108330: .4byte gBattleMoves\n\
_08108334: .4byte 0x02016800\n\
_08108338: .4byte gUnknown_02024DEC\n\
_0810833C: .4byte 0xfffff81c\n\
-_08108340: .4byte gUnknown_02024C68\n\
+_08108340: .4byte gBattleMoveFlags\n\
_08108344: .4byte gCritMultiplier\n\
_08108348: .4byte gBattleMons\n\
-_0810834C: .4byte gUnknown_02024C07\n\
+_0810834C: .4byte gPlayerMonIndex\n\
_08108350: .4byte gUnknown_02024BE6\n\
-_08108354: .4byte gUnknown_02024C08\n\
-_08108358: .4byte gUnknown_02024BEC\n\
+_08108354: .4byte gEnemyMonIndex\n\
+_08108358: .4byte gBattleMoveDamage\n\
_0810835C:\n\
mov r1, sp\n\
add r1, r8\n\
@@ -995,69 +1240,71 @@ _081083B8:\n\
_081083D0: .4byte gAIScriptPtr\n\
.syntax divided\n");
}
+#endif // NONMATCHING
-void BattleAICmd_get_move(void)
+static void BattleAICmd_get_move(void)
{
if (gAIScriptPtr[1] == USER)
- gAIThinkingSpace.unk8 = gUnknown_02024C34[gUnknown_02024C07];
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024C34[gPlayerMonIndex];
else
- gAIThinkingSpace.unk8 = gUnknown_02024C34[gUnknown_02024C08];
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024C34[gEnemyMonIndex];
gAIScriptPtr += 2;
}
-void BattleAICmd_if_type(void)
+static void BattleAICmd_if_arg_equal(void)
{
- if ( gAIScriptPtr[1] == gAIThinkingSpace.unk8 )
+ if (gAIScriptPtr[1] == AI_THINKING_STRUCT->funcResult)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_unk_27(void) // if_not_type
+static void BattleAICmd_if_arg_not_equal(void)
{
- if ( gAIScriptPtr[1] != gAIThinkingSpace.unk8 )
+ if (gAIScriptPtr[1] != AI_THINKING_STRUCT->funcResult)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_would_go_first(void)
+static void BattleAICmd_if_would_go_first(void)
{
- if ( b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) == gAIScriptPtr[1] )
+ if (b_first_side(gPlayerMonIndex, gEnemyMonIndex, 1) == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_would_not_go_first(void)
+static void BattleAICmd_if_would_not_go_first(void)
{
- if ( b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) != gAIScriptPtr[1] )
+ if (b_first_side(gPlayerMonIndex, gEnemyMonIndex, 1) != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_unk_2A(void)
-{}
+static void BattleAICmd_nullsub_2A(void)
+{
+}
-void BattleAICmd_unk_2B(void)
-{}
+static void BattleAICmd_nullsub_2B(void)
+{
+}
-void BattleAICmd_count_alive_pokemon(void)
+static void BattleAICmd_count_alive_pokemon(void)
{
- u8 index;
struct Pokemon *party;
- struct AI_ThinkingStruct *ai = &battle_2000000.ai;
int i;
+ u8 index;
u8 var, var2;
- ai->unk8 = 0;
+ AI_THINKING_STRUCT->funcResult = 0;
if (gAIScriptPtr[1] == USER)
- index = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- index = gUnknown_02024C08;
+ index = gEnemyMonIndex;
if (battle_side_get_owner(index) == 0)
party = gPlayerParty;
@@ -1079,277 +1326,228 @@ void BattleAICmd_count_alive_pokemon(void)
for (i = 0; i < 6; i++)
{
- struct AI_ThinkingStruct *ai2 = &battle_2000000.ai;
if (i != var && i != var2
&& GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
{
- ai2->unk8++;
+ AI_THINKING_STRUCT->funcResult++;
}
}
gAIScriptPtr += 2;
}
-void BattleAICmd_unk_2D(void)
+static void BattleAICmd_get_considered_move(void)
{
- gAIThinkingSpace.unk8 = gAIThinkingSpace.unk2;
+ AI_THINKING_STRUCT->funcResult = AI_THINKING_STRUCT->moveConsidered;
gAIScriptPtr += 1;
}
-void BattleAICmd_unk_2E(void)
+static void BattleAICmd_get_considered_move_effect(void)
{
- gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].effect;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_ability(void)
+static void BattleAICmd_get_ability(void)
{
- u8 var;
+ u8 index;
- if(gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if(battle_side_get_owner(var) == TARGET)
+ if (battle_side_get_owner(index) == TARGET)
{
- u16 unk = battle_get_per_side_status(var) & 1;
+ u16 unk = battle_get_per_side_status(index) & 1;
- if(unk_2016A00.unk20[unk] != 0)
+ if (UNK_2016A00_STRUCT->unk20[unk] != 0)
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 512))->unk8 = unk_2016A00.unk20[unk];
+ AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk20[unk];
gAIScriptPtr += 2;
return;
}
// abilities that prevent fleeing.
- if(gBattleMons[var].ability == ABILITY_SHADOW_TAG || gBattleMons[var].ability == ABILITY_MAGNET_PULL || gBattleMons[var].ability == ABILITY_ARENA_TRAP)
+ if (gBattleMons[index].ability == ABILITY_SHADOW_TAG
+ || gBattleMons[index].ability == ABILITY_MAGNET_PULL
+ || gBattleMons[index].ability == ABILITY_ARENA_TRAP)
{
- gAIThinkingSpace.unk8 = gBattleMons[var].ability;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[index].ability;
gAIScriptPtr += 2;
return;
}
- if(gBaseStats[gBattleMons[var].species].ability1 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[index].species].ability1 != ABILITY_NONE)
{
- if(gBaseStats[gBattleMons[var].species].ability2 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[index].species].ability2 != ABILITY_NONE)
{
- // AI is guessing what ability?
- if(Random() & 1)
+ // AI has no knowledge of opponent, so it guesses which ability.
+ if (Random() % 2)
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->unk8 = gBaseStats[gBattleMons[var].species].ability1;
- gAIScriptPtr += 2;
- return;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1;
}
else
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->unk8 = gBaseStats[gBattleMons[var].species].ability2;
- gAIScriptPtr += 2;
- return;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability2;
}
}
else
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->unk8 = gBaseStats[gBattleMons[var].species].ability1; // it's definitely ability 1.
- gAIScriptPtr += 2;
- return;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1; // it's definitely ability 1.
}
}
else
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->unk8 = gBaseStats[gBattleMons[var].species].ability2; // AI cant actually reach this part since every mon has at least 1 ability.
- gAIScriptPtr += 2;
- return;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability2; // AI cant actually reach this part since every mon has at least 1 ability.
}
}
else
{
// The AI knows its own ability.
- gAIThinkingSpace.unk8 = gBattleMons[var].ability;
- gAIScriptPtr += 2;
- return;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[index].ability;
}
+ gAIScriptPtr += 2;
}
-void BattleAICmd_unk_30(void)
+static void BattleAICmd_get_highest_possible_damage(void)
{
s32 i;
- struct AI_ThinkingStruct *ai;
- struct AI_ThinkingStruct *ai2;
gUnknown_02024DEC = 0;
- battle_2000000.unk.unk1 = 0;
- battle_2000000.unk.unk4 = 1;
- gUnknown_02024C68 = 0;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
+ gBattleMoveFlags = 0;
gCritMultiplier = 1;
- ai = &battle_2000000.ai;
- ai->unk8 = 0;
+ AI_THINKING_STRUCT->funcResult = 0;
- for(i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
- gUnknown_02024BEC = 40;
- gUnknown_02024BE6 = gBattleMons[gUnknown_02024C07].moves[i];
+ gBattleMoveDamage = 40;
+ gUnknown_02024BE6 = gBattleMons[gPlayerMonIndex].moves[i];
if (gUnknown_02024BE6)
{
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
// reduce by 1/3.
- if (gUnknown_02024BEC == 120)
- gUnknown_02024BEC = 80;
- if(gUnknown_02024BEC == 240)
- gUnknown_02024BEC = 160;
- if(gUnknown_02024BEC == 30)
- gUnknown_02024BEC = 20;
- if(gUnknown_02024BEC == 15)
- gUnknown_02024BEC = 10;
-
- if(gUnknown_02024C68 & 8)
- gUnknown_02024BEC = 0;
-
- ai2 = &battle_2000000.ai;
- if (ai2->unk8 < gUnknown_02024BEC)
- ai2->unk8 = gUnknown_02024BEC;
+ if (gBattleMoveDamage == 120)
+ gBattleMoveDamage = 80;
+ if (gBattleMoveDamage == 240)
+ gBattleMoveDamage = 160;
+ if (gBattleMoveDamage == 30)
+ gBattleMoveDamage = 20;
+ if (gBattleMoveDamage == 15)
+ gBattleMoveDamage = 10;
+
+ if (gBattleMoveFlags & 8) // if it's a status move, it wont do anything.
+ gBattleMoveDamage = 0;
+
+ if (AI_THINKING_STRUCT->funcResult < gBattleMoveDamage)
+ AI_THINKING_STRUCT->funcResult = gBattleMoveDamage;
}
}
gAIScriptPtr += 1;
}
-// same function as above but no for loop.
-__attribute__((naked))
-void BattleAICmd_if_damage_bonus(void)
+static void BattleAICmd_if_damage_bonus(void)
{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r0, _08108928 @ =gUnknown_02024DEC\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- ldr r2, _0810892C @ =0x02000000\n\
- ldr r3, _08108930 @ =0x0001601c\n\
- adds r0, r2, r3\n\
- strb r1, [r0]\n\
- adds r3, 0x3\n\
- adds r0, r2, r3\n\
- movs r3, 0x1\n\
- strb r3, [r0]\n\
- ldr r5, _08108934 @ =gUnknown_02024C68\n\
- strb r1, [r5]\n\
- ldr r0, _08108938 @ =gCritMultiplier\n\
- strb r3, [r0]\n\
- ldr r4, _0810893C @ =gUnknown_02024BEC\n\
- movs r0, 0x28\n\
- str r0, [r4]\n\
- ldr r1, _08108940 @ =gUnknown_02024BE6\n\
- movs r0, 0xB4\n\
- lsls r0, 9\n\
- adds r2, r0\n\
- ldrh r0, [r2, 0x2]\n\
- strh r0, [r1]\n\
- ldrh r0, [r1]\n\
- ldr r1, _08108944 @ =gUnknown_02024C07\n\
- ldrb r1, [r1]\n\
- ldr r2, _08108948 @ =gUnknown_02024C08\n\
- ldrb r2, [r2]\n\
- bl move_effectiveness_something\n\
- ldr r0, [r4]\n\
- cmp r0, 0x78\n\
- bne _081088D6\n\
- movs r0, 0x50\n\
- str r0, [r4]\n\
-_081088D6:\n\
- ldr r0, [r4]\n\
- cmp r0, 0xF0\n\
- bne _081088E0\n\
- movs r0, 0xA0\n\
- str r0, [r4]\n\
-_081088E0:\n\
- ldr r0, [r4]\n\
- cmp r0, 0x1E\n\
- bne _081088EA\n\
- movs r0, 0x14\n\
- str r0, [r4]\n\
-_081088EA:\n\
- ldr r0, [r4]\n\
- cmp r0, 0xF\n\
- bne _081088F4\n\
- movs r0, 0xA\n\
- str r0, [r4]\n\
-_081088F4:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08108902\n\
- movs r0, 0\n\
- str r0, [r4]\n\
-_08108902:\n\
- ldrb r0, [r4]\n\
- ldr r3, _0810894C @ =gAIScriptPtr\n\
- ldr r2, [r3]\n\
- ldrb r1, [r2, 0x1]\n\
- cmp r0, r1\n\
- bne _08108950\n\
- ldrb r1, [r2, 0x2]\n\
- ldrb r0, [r2, 0x3]\n\
- lsls r0, 8\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x4]\n\
- lsls r0, 16\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x5]\n\
- lsls r0, 24\n\
- orrs r1, r0\n\
- str r1, [r3]\n\
- b _08108954\n\
- .align 2, 0\n\
-_08108928: .4byte gUnknown_02024DEC\n\
-_0810892C: .4byte 0x02000000\n\
-_08108930: .4byte 0x0001601c\n\
-_08108934: .4byte gUnknown_02024C68\n\
-_08108938: .4byte gCritMultiplier\n\
-_0810893C: .4byte gUnknown_02024BEC\n\
-_08108940: .4byte gUnknown_02024BE6\n\
-_08108944: .4byte gUnknown_02024C07\n\
-_08108948: .4byte gUnknown_02024C08\n\
-_0810894C: .4byte gAIScriptPtr\n\
-_08108950:\n\
- adds r0, r2, 0x6\n\
- str r0, [r3]\n\
-_08108954:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ u8 damageVar;
+
+ gUnknown_02024DEC = 0;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+
+ gBattleMoveDamage = 40;
+ gUnknown_02024BE6 = AI_THINKING_STRUCT->moveConsidered;
+
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
+
+ if (gBattleMoveDamage == 120)
+ gBattleMoveDamage = 80;
+ if (gBattleMoveDamage == 240)
+ gBattleMoveDamage = 160;
+ if (gBattleMoveDamage == 30)
+ gBattleMoveDamage = 20;
+ if (gBattleMoveDamage == 15)
+ gBattleMoveDamage = 10;
+
+ if (gBattleMoveFlags & 8)
+ gBattleMoveDamage = 0;
+
+ // store gBattleMoveDamage in a u8 variable because gAIScriptPtr[1] is a u8.
+ damageVar = gBattleMoveDamage;
+
+ if (damageVar == gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
-void BattleAICmd_unk_32(void)
-{}
+static void BattleAICmd_nullsub_32(void)
+{
+}
-void BattleAICmd_unk_33(void)
-{}
+static void BattleAICmd_nullsub_33(void)
+{
+}
-void BattleAICmd_if_status_in_party(void)
+static void BattleAICmd_if_status_in_party(void)
{
struct Pokemon *party;
+ struct Pokemon *partyPtr;
int i;
u32 statusToCompareTo;
- if (gAIScriptPtr[1] == USER)
+ // for whatever reason, game freak put the party pointer into 2 variables instead of 1. it's possible at some point the switch encompassed the whole function and used each respective variable creating largely duplicate code.
+ switch (gAIScriptPtr[1])
{
- party = gEnemyParty;
+ case 1:
+ party = partyPtr = gEnemyParty;
+ break;
+ default:
+ party = partyPtr = gPlayerParty;
+ break;
}
- else if (0)
+
+ statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
+
+ for (i = 0; i < 6; i++)
{
- // what is going on here?
- follow_jump:
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- return;
+ u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
+ u16 hp = GetMonData(&party[i], MON_DATA_HP);
+ u32 status = GetMonData(&party[i], MON_DATA_STATUS);
+
+ if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6); // WHAT. why is this being merged into the above switch
+ return;
+ }
}
- else
+
+ gAIScriptPtr += 10;
+}
+
+// bugged, doesnt return properly. also unused
+static void BattleAICmd_if_status_not_in_party(void)
+{
+ struct Pokemon *party;
+ struct Pokemon *partyPtr;
+ int i;
+ u32 statusToCompareTo;
+
+ switch (gAIScriptPtr[1])
{
- party = gPlayerParty;
+ case 1:
+ party = partyPtr = gEnemyParty;
+ break;
+ default:
+ party = partyPtr = gPlayerParty;
+ break;
}
statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
@@ -1360,9 +1558,590 @@ void BattleAICmd_if_status_in_party(void)
u16 hp = GetMonData(&party[i], MON_DATA_HP);
u32 status = GetMonData(&party[i], MON_DATA_STATUS);
+ // everytime the status is found, the AI's logic jumps further and further past its intended destination. this results in a broken AI macro and is probably why it is unused.
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
- goto follow_jump;
+ gAIScriptPtr += 10; // doesnt return?
}
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+}
- gAIScriptPtr += 10;
+static void BattleAICmd_get_weather(void)
+{
+ if (gBattleWeather & 7)
+ AI_THINKING_STRUCT->funcResult = WEATHER_RAIN;
+ if (gBattleWeather & 0x18)
+ AI_THINKING_STRUCT->funcResult = WEATHER_SANDSTORM;
+ if (gBattleWeather & 0x60)
+ AI_THINKING_STRUCT->funcResult = WEATHER_SUN;
+ if (gBattleWeather & 0x80)
+ AI_THINKING_STRUCT->funcResult = WEATHER_HAIL;
+
+ gAIScriptPtr += 1;
+}
+
+static void BattleAICmd_if_effect(void)
+{
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void BattleAICmd_if_not_effect(void)
+{
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect != gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void BattleAICmd_if_stat_level_less_than(void)
+{
+ u32 party;
+
+ if (gAIScriptPtr[1] == USER)
+ party = gPlayerMonIndex;
+ else
+ party = gEnemyMonIndex;
+
+ if (gBattleMons[party].statStages[gAIScriptPtr[2]] < gAIScriptPtr[3])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void BattleAICmd_if_stat_level_more_than(void)
+{
+ u32 party;
+
+ if (gAIScriptPtr[1] == USER)
+ party = gPlayerMonIndex;
+ else
+ party = gEnemyMonIndex;
+
+ if (gBattleMons[party].statStages[gAIScriptPtr[2]] > gAIScriptPtr[3])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void BattleAICmd_if_stat_level_equal(void)
+{
+ u32 party;
+
+ if (gAIScriptPtr[1] == USER)
+ party = gPlayerMonIndex;
+ else
+ party = gEnemyMonIndex;
+
+ if (gBattleMons[party].statStages[gAIScriptPtr[2]] == gAIScriptPtr[3])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void BattleAICmd_if_stat_level_not_equal(void)
+{
+ u32 party;
+
+ if (gAIScriptPtr[1] == USER)
+ party = gPlayerMonIndex;
+ else
+ party = gEnemyMonIndex;
+
+ if (gBattleMons[party].statStages[gAIScriptPtr[2]] != gAIScriptPtr[3])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void BattleAICmd_if_can_faint(void)
+{
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
+ {
+ gAIScriptPtr += 5;
+ return;
+ }
+
+ gUnknown_02024DEC = 0;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+ gUnknown_02024BE6 = AI_THINKING_STRUCT->moveConsidered;
+ sub_801CAF8(gPlayerMonIndex, gEnemyMonIndex);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
+
+ gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
+
+ // moves always do at least 1 damage.
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ if (gBattleMons[gEnemyMonIndex].hp <= gBattleMoveDamage)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void BattleAICmd_if_cant_faint(void)
+{
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
+ {
+ gAIScriptPtr += 5;
+ return;
+ }
+
+ gUnknown_02024DEC = 0;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+ gUnknown_02024BE6 = AI_THINKING_STRUCT->moveConsidered;
+ sub_801CAF8(gPlayerMonIndex, gEnemyMonIndex);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
+
+ gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
+
+ // this macro is missing the damage 0 = 1 assumption.
+
+ if (gBattleMons[gEnemyMonIndex].hp > gBattleMoveDamage)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void BattleAICmd_if_has_move(void)
+{
+ int i;
+ u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
+
+ switch (gAIScriptPtr[1])
+ {
+ case 1:
+ case 3:
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] == *temp_ptr)
+ break;
+ }
+ if (i == MAX_MON_MOVES)
+ gAIScriptPtr += 8;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ break;
+ case 0:
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ if (UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i] == *temp_ptr)
+ break;
+ }
+ if (i == 8)
+ gAIScriptPtr += 8;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ break;
+ }
+}
+
+static void BattleAICmd_if_dont_have_move(void)
+{
+ int i;
+ u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
+
+ switch (gAIScriptPtr[1])
+ {
+ case 1:
+ case 3:
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] == *temp_ptr)
+ break;
+ }
+ if (i != MAX_MON_MOVES)
+ gAIScriptPtr += 8;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ break;
+ case 0:
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ if (UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i] == *temp_ptr)
+ break;
+ }
+ if (i != 8)
+ gAIScriptPtr += 8;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
+ break;
+ }
+}
+
+static void BattleAICmd_if_move_effect(void)
+{
+ int i;
+
+ switch (gAIScriptPtr[1])
+ {
+ case 1:
+ case 3:
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == gAIScriptPtr[2])
+ break;
+ }
+ if (i != MAX_MON_MOVES)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+ break;
+ case 0:
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i]].effect == gAIScriptPtr[2])
+ break;
+ }
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ }
+}
+
+static void BattleAICmd_if_not_move_effect(void)
+{
+ int i;
+
+ switch (gAIScriptPtr[1])
+ {
+ case 1:
+ case 3:
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == gAIScriptPtr[2])
+ break;
+ }
+ if (i != MAX_MON_MOVES)
+ gAIScriptPtr += 7;
+ else
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ break;
+ case 0:
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ if (UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i] != 0 && gBattleMoves[UNK_2016A00_STRUCT->movesUsed[gEnemyMonIndex >> 1][i]].effect == gAIScriptPtr[2])
+ break;
+ }
+ gAIScriptPtr += 7;
+ }
+}
+
+static void BattleAICmd_if_last_move_did_damage(void)
+{
+ u8 index;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ if (gAIScriptPtr[2] == 0)
+ {
+ if (gUnknown_02024CA8[index].unk4 == 0)
+ {
+ gAIScriptPtr += 7;
+ return;
+ }
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ return;
+ }
+ else if (gAIScriptPtr[2] != 1) // ignore the macro if its not 0 or 1.
+ {
+ gAIScriptPtr += 7;
+ return;
+ }
+ else if (gUnknown_02024CA8[index].unk6 != 0)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ return;
+ }
+ gAIScriptPtr += 7;
+}
+
+static void BattleAICmd_if_encored(void)
+{
+ switch (gAIScriptPtr[1])
+ {
+ case 0: // _08109348
+ if (gUnknown_02024CA8[gUnknown_02024A60].unk4 == AI_THINKING_STRUCT->moveConsidered)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ return;
+ }
+ gAIScriptPtr += 6;
+ return;
+ case 1: // _08109370
+ if (gUnknown_02024CA8[gUnknown_02024A60].unk6 == AI_THINKING_STRUCT->moveConsidered)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ return;
+ }
+ gAIScriptPtr += 6;
+ return;
+ default:
+ gAIScriptPtr += 6;
+ return;
+ }
+}
+
+static void BattleAICmd_flee(void)
+{
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); // what matters is AI_ACTION_FLEE being enabled.
+}
+
+static void BattleAICmd_if_random_100(void)
+{
+ u8 safariFleeRate = BATTLE_STRUCT->safariFleeRate * 5; // safari flee rate, from 0-20
+
+ if ((u8)(Random() % 100) < safariFleeRate)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void BattleAICmd_watch(void)
+{
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); // what matters is AI_ACTION_WATCH being enabled.
+}
+
+static void BattleAICmd_get_hold_effect(void)
+{
+ u8 index;
+ u16 status;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ if (battle_side_get_owner(index) == 0)
+ {
+ status = (battle_get_per_side_status(index) & 1);
+ AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk22[status];
+ }
+ else
+ AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[index].item);
+
+ gAIScriptPtr += 2;
+}
+
+static void BattleAICmd_get_gender(void)
+{
+ u8 index;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[index].species, gBattleMons[index].personality);
+
+ gAIScriptPtr += 2;
+}
+
+static void BattleAICmd_is_first_turn(void)
+{
+ u8 index;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024CA8[index].unk16;
+
+ gAIScriptPtr += 2;
+}
+
+static void BattleAICmd_get_stockpile_count(void)
+{
+ u8 index;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024CA8[index].unk9;
+
+ gAIScriptPtr += 2;
+}
+
+static void BattleAICmd_is_double_battle(void)
+{
+ AI_THINKING_STRUCT->funcResult = gBattleTypeFlags & BATTLE_TYPE_DOUBLE;
+
+ gAIScriptPtr += 1;
+}
+
+static void BattleAICmd_get_item(void)
+{
+ u8 index;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ // this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this.
+ AI_THINKING_STRUCT->funcResult = unk_2000000[0x160CC + (index * 2)];
+
+ gAIScriptPtr += 2;
+}
+
+static void BattleAICmd_get_move_type_from_result(void)
+{
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].type;
+
+ gAIScriptPtr += 1;
+}
+
+static void BattleAICmd_get_move_power_from_result(void)
+{
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].power;
+
+ gAIScriptPtr += 1;
+}
+
+static void BattleAICmd_get_move_effect_from_result(void)
+{
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].effect;
+
+ gAIScriptPtr += 1;
+}
+
+static void BattleAICmd_get_protect_count(void)
+{
+ u8 index;
+
+ if (gAIScriptPtr[1] == USER)
+ index = gPlayerMonIndex;
+ else
+ index = gEnemyMonIndex;
+
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024CA8[index].unk8;
+
+ gAIScriptPtr += 2;
+}
+
+static void BattleAICmd_nullsub_52(void)
+{
+}
+
+static void BattleAICmd_nullsub_53(void)
+{
+}
+
+static void BattleAICmd_nullsub_54(void)
+{
+}
+
+static void BattleAICmd_nullsub_55(void)
+{
+}
+
+static void BattleAICmd_nullsub_56(void)
+{
+}
+
+static void BattleAICmd_nullsub_57(void)
+{
+}
+
+static void BattleAICmd_call(void)
+{
+ AIStackPushVar(gAIScriptPtr + 5);
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+}
+
+static void BattleAICmd_jump(void)
+{
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+}
+
+static void BattleAICmd_end(void)
+{
+ if (AIStackPop() == FALSE)
+ AI_THINKING_STRUCT->aiAction |= AI_ACTION_DONE;
+}
+
+static void BattleAICmd_if_level_compare(void)
+{
+ switch (gAIScriptPtr[1])
+ {
+ case 0: // greater than
+ if (gBattleMons[gPlayerMonIndex].level > gBattleMons[gEnemyMonIndex].level)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ return;
+ }
+ gAIScriptPtr += 6;
+ return;
+ case 1: // less than
+ if (gBattleMons[gPlayerMonIndex].level < gBattleMons[gEnemyMonIndex].level)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ return;
+ }
+ gAIScriptPtr += 6;
+ return;
+ case 2: // equal
+ if (gBattleMons[gPlayerMonIndex].level == gBattleMons[gEnemyMonIndex].level)
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ return;
+ }
+ gAIScriptPtr += 6;
+ return;
+ }
+}
+
+static void BattleAICmd_if_taunted(void)
+{
+ if (gUnknown_02024CA8[gEnemyMonIndex].taunt != 0)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void BattleAICmd_if_not_taunted(void)
+{
+ if (gUnknown_02024CA8[gEnemyMonIndex].taunt == 0)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+void AIStackPushVar(u8 *var)
+{
+ AI_STACK->ptr[AI_STACK->size++] = var;
+}
+
+// unused
+void AIStackPushAIPtr(void)
+{
+ AI_STACK->ptr[AI_STACK->size++] = gAIScriptPtr;
+}
+
+bool8 AIStackPop(void)
+{
+ if (AI_STACK->size != 0)
+ {
+ --AI_STACK->size;
+ gAIScriptPtr = AI_STACK->ptr[AI_STACK->size];
+ return TRUE;
+ }
+ else
+ return FALSE;
}
diff --git a/src/battle_anim.c b/src/battle_anim.c
new file mode 100644
index 000000000..c381f4f87
--- /dev/null
+++ b/src/battle_anim.c
@@ -0,0 +1,2257 @@
+#include "global.h"
+#include "asm.h"
+#include "decompress.h"
+#include "m4a.h"
+#include "palette.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "battle_anim.h"
+
+extern u8 unk_2000000[];
+extern u16 gUnknown_02024A6A[4];
+extern u8 gUnknown_02024BE0[];
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
+EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL;
+EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL;
+EWRAM_DATA void (*gUnknown_0202F7AC)(void) = NULL;
+EWRAM_DATA s8 gUnknown_0202F7B0 = 0;
+EWRAM_DATA u8 gUnknown_0202F7B1 = 0;
+EWRAM_DATA u8 gUnknown_0202F7B2 = 0;
+EWRAM_DATA u8 gUnknown_0202F7B3 = 0;
+EWRAM_DATA u32 gUnknown_0202F7B4 = 0;
+EWRAM_DATA u32 gUnknown_0202F7B8 = 0;
+EWRAM_DATA u16 gUnknown_0202F7BC = 0;
+EWRAM_DATA u8 gUnknown_0202F7BE = 0;
+EWRAM_DATA u16 gUnknown_0202F7C0 = 0;
+EWRAM_DATA u8 gUnknown_0202F7C2[2] = {0};
+EWRAM_DATA u8 gUnknown_0202F7C4 = 0;
+EWRAM_DATA u8 gUnknown_0202F7C5 = 0;
+EWRAM_DATA u16 gUnknown_0202F7C6 = 0;
+EWRAM_DATA u8 gUnknown_0202F7C8 = 0;
+EWRAM_DATA u8 gUnknown_0202F7C9 = 0;
+EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0};
+EWRAM_DATA u8 gUnknown_0202F7D2 = 0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_03004200;
+extern u16 gUnknown_03004240;
+extern u16 gUnknown_03004244;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_030042C4;
+extern u16 gUnknown_03004AF0;
+extern u16 gUnknown_03004B10[8];
+extern s16 gBattleAnimArgs[8];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+
+extern const u16 gUnknown_081C7160[];
+extern const u8 *const gBattleAnims_Moves[];
+extern const struct SpriteSheet gBattleAnimPicTable[];
+extern const struct SpritePalette gBattleAnimPaletteTable[];
+extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
+
+extern void sub_8079E24();
+extern void sub_8043EB4();
+extern u8 sub_8079E90();
+extern u8 sub_8077ABC();
+extern u8 sub_8078874(u8);
+extern void sub_8078914();
+extern u8 sub_80AEB1C();
+extern void sub_80E4EF8(int, int, int, int, u16, u8, int);
+extern void sub_800D238();
+extern u8 sub_80789BC();
+extern void sub_80AB2AC(void);
+extern void sub_800D7B8(void);
+extern u8 obj_id_for_side_relative_to_move();
+extern u8 battle_get_per_side_status_permutated();
+
+static void sub_80759D0(void);
+static void ScriptCmd_loadsprite(void);
+static void ScriptCmd_unloadsprite(void);
+static void ScriptCmd_sprite(void);
+static void ScriptCmd_createtask(void);
+static void ScriptCmd_delay(void);
+static void ScriptCmd_wait(void);
+static void ScriptCmd_hang1(void);
+static void ScriptCmd_hang2(void);
+static void ScriptCmd_end(void);
+static void ScriptCmd_playse(void);
+static void ScriptCmd_monbg(void);
+static void sub_8076380(void);
+static void task_pA_ma0A_obj_to_bg_pal(u8);
+static void ScriptCmd_clearmonbg(void);
+static void sub_807672C(u8);
+static void ScriptCmd_monbg_22(void);
+static void ScriptCmd_clearmonbg_23(void);
+static void sub_80769A4(u8);
+static void ScriptCmd_setalpha(void);
+static void ScriptCmd_setbldcnt(void);
+static void ScriptCmd_blendoff(void);
+static void ScriptCmd_call(void);
+static void ScriptCmd_return(void);
+static void ScriptCmd_setvar(void);
+static void ScriptCmd_ifelse(void);
+static void ScriptCmd_jumpif(void);
+static void ScriptCmd_jump(void);
+static void ScriptCmd_fadetobg(void);
+static void ScriptCmd_fadetobg_25(void);
+static void task_p5_load_battle_screen_elements(u8);
+static void sub_8076DB8(u16);
+static void dp01t_11_3_message_for_player_only(void);
+static void ScriptCmd_restorebg(void);
+static void ScriptCmd_waitbgfadeout(void);
+static void ScriptCmd_waitbgfadein(void);
+static void ScriptCmd_changebg(void);
+static void ScriptCmd_panse_19(void);
+static void ScriptCmd_setpan(void);
+static void ScriptCmd_panse_1B(void);
+static void c3_08073CEC(u8);
+static void ScriptCmd_panse_26(void);
+static void ScriptCmd_panse_27(void);
+static void ScriptCmd_panse_1C(void);
+static void sub_80774FC(u8);
+static void ScriptCmd_panse_1D(void);
+static void sub_80775CC(u8);
+static void ScriptCmd_createtask_1F(void);
+static void ScriptCmd_waitsound(void);
+static void ScriptCmd_jumpvareq(void);
+static void ScriptCmd_jumpunkcond(void);
+static void ScriptCmd_monbgprio_28(void);
+static void ScriptCmd_monbgprio_29(void);
+static void ScriptCmd_monbgprio_2A(void);
+static void ScriptCmd_invisible(void);
+static void ScriptCmd_visible(void);
+static void ScriptCmd_doublebattle_2D(void);
+static void ScriptCmd_doublebattle_2E(void);
+static void ScriptCmd_stopsound(void);
+
+static void (*const sScriptCmdTable[])(void) = {
+ ScriptCmd_loadsprite,
+ ScriptCmd_unloadsprite,
+ ScriptCmd_sprite,
+ ScriptCmd_createtask,
+ ScriptCmd_delay,
+ ScriptCmd_wait,
+ ScriptCmd_hang1,
+ ScriptCmd_hang2,
+ ScriptCmd_end,
+ ScriptCmd_playse,
+ ScriptCmd_monbg,
+ ScriptCmd_clearmonbg,
+ ScriptCmd_setalpha,
+ ScriptCmd_blendoff,
+ ScriptCmd_call,
+ ScriptCmd_return,
+ ScriptCmd_setvar,
+ ScriptCmd_ifelse,
+ ScriptCmd_jumpif,
+ ScriptCmd_jump,
+ ScriptCmd_fadetobg,
+ ScriptCmd_restorebg,
+ ScriptCmd_waitbgfadeout,
+ ScriptCmd_waitbgfadein,
+ ScriptCmd_changebg,
+ ScriptCmd_panse_19,
+ ScriptCmd_setpan,
+ ScriptCmd_panse_1B,
+ ScriptCmd_panse_1C,
+ ScriptCmd_panse_1D,
+ ScriptCmd_setbldcnt,
+ ScriptCmd_createtask_1F,
+ ScriptCmd_waitsound,
+ ScriptCmd_jumpvareq,
+ ScriptCmd_monbg_22,
+ ScriptCmd_clearmonbg_23,
+ ScriptCmd_jumpunkcond,
+ ScriptCmd_fadetobg_25,
+ ScriptCmd_panse_26,
+ ScriptCmd_panse_27,
+ ScriptCmd_monbgprio_28,
+ ScriptCmd_monbgprio_29,
+ ScriptCmd_monbgprio_2A,
+ ScriptCmd_invisible,
+ ScriptCmd_visible,
+ ScriptCmd_doublebattle_2D,
+ ScriptCmd_doublebattle_2E,
+ ScriptCmd_stopsound,
+};
+
+void battle_anim_clear_some_data(void)
+{
+ s32 i;
+
+ gUnknown_0202F7B0 = 0;
+ gUnknown_0202F7B1 = 0;
+ gUnknown_0202F7B2 = 0;
+ gUnknown_0202F7B3 = 0;
+ gUnknown_0202F7B4 = 0;
+ gUnknown_0202F7B8 = 0;
+ gUnknown_0202F7BC = 0;
+ gUnknown_0202F7BE = 0;
+ for (i = 0; i < 8; i++)
+ gUnknown_03004B10[i] |= 0xFFFF;
+ for (i = 0; i < 8; i++)
+ gBattleAnimArgs[i] = 0;
+ gUnknown_0202F7C2[0] = 0xFF;
+ gUnknown_0202F7C2[1] = -1;
+ gUnknown_0202F7C4 = 0;
+ gUnknown_0202F7C5 = 0;
+ gUnknown_0202F7C6 = 0;
+ gUnknown_0202F7C8 = 0;
+ gUnknown_0202F7C9 = 0;
+ gUnknown_0202F7D2 = 0;
+}
+
+void move_anim_start_t1(u16 a)
+{
+ gUnknown_0202F7C8 = gPlayerMonIndex;
+ gUnknown_0202F7C9 = gEnemyMonIndex;
+ move_something(gBattleAnims_Moves, a, 1);
+}
+
+void move_something(const u8 *const moveAnims[], u16 b, u8 c)
+{
+ s32 i;
+
+ if (sub_8076BE0() == 0)
+ {
+ sub_8079E24();
+ sub_8043EB4(0);
+ for (i = 0; i < 4; i++)
+ {
+ if (battle_side_get_owner(i) != 0)
+ gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gUnknown_02024A6A[i]], 11);
+ else
+ gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gUnknown_02024A6A[i]], 11);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ gUnknown_0202F7CA[i] = EWRAM_19348;
+ }
+ if (c == 0)
+ gUnknown_0202F7C6 = 0;
+ else
+ gUnknown_0202F7C6 = b;
+ for (i = 0; i < 8; i++)
+ gBattleAnimArgs[i] = 0;
+ gUnknown_0202F7C2[0] = 0xFF;
+ gUnknown_0202F7C2[1] = -1;
+ gBattleAnimScriptPtr = moveAnims[b];
+ gUnknown_0202F7B1 = 1;
+ gUnknown_0202F7B0 = 0;
+ gUnknown_0202F7AC = sub_80759D0;
+ for (i = 0; i < 8; i++)
+ gUnknown_03004B10[i] |= 0xFFFF;
+ if (c != 0)
+ {
+ for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++)
+ {
+ if (b == gUnknown_081C7160[i])
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128);
+ break;
+ }
+ }
+ }
+ gUnknown_030042C4 = 0;
+ gUnknown_03004240 = 0;
+ gUnknown_03004200 = 0;
+ gUnknown_03004244 = 0;
+}
+
+void move_anim_8072740(struct Sprite *sprite)
+{
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ gUnknown_0202F7B2--;
+}
+
+void move_anim_task_del(u8 taskId)
+{
+ DestroyTask(taskId);
+ gUnknown_0202F7B2--;
+}
+
+void move_anim_related_task_del(u8 taskId)
+{
+ DestroyTask(taskId);
+ gUnknown_0202F7B3--;
+}
+
+static void sub_8075940(u16 a)
+{
+ s32 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (gUnknown_03004B10[i] == 0xFFFF)
+ {
+ gUnknown_03004B10[i] = a;
+ return;
+ }
+ }
+}
+
+static void sub_8075970(u16 a)
+{
+ s32 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (gUnknown_03004B10[i] == a)
+ {
+ gUnknown_03004B10[i] |= 0xFFFF;
+ return;
+ }
+ }
+}
+
+static void move_anim_waiter(void)
+{
+ if (gUnknown_0202F7B0 <= 0)
+ {
+ gUnknown_0202F7AC = sub_80759D0;
+ gUnknown_0202F7B0 = 0;
+ }
+ else
+ {
+ gUnknown_0202F7B0--;
+ }
+}
+
+static void sub_80759D0(void)
+{
+ do
+ {
+ sScriptCmdTable[SCRIPT_READ_8(gBattleAnimScriptPtr)]();
+ } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0);
+}
+
+static void ScriptCmd_loadsprite(void)
+{
+ u16 r4;
+
+ gBattleAnimScriptPtr++;
+ r4 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[r4 - 10000]);
+ gBattleAnimScriptPtr += 2;
+ sub_8075940(r4 - 10000);
+ gUnknown_0202F7B0 = 1;
+ gUnknown_0202F7AC = move_anim_waiter;
+}
+
+static void ScriptCmd_unloadsprite(void)
+{
+ u16 r4;
+
+ gBattleAnimScriptPtr++;
+ r4 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag);
+ FreeSpritePaletteByTag(gBattleAnimPicTable[r4 - 10000].tag);
+ gBattleAnimScriptPtr += 2;
+ sub_8075970(r4 - 10000);
+}
+
+#ifdef NONMATCHING
+static void ScriptCmd_sprite(void)
+{
+ s32 i;
+ struct SpriteTemplate *r7;
+ u8 r4;
+ u8 r0;
+ u8 _r0;
+ u16 r6;
+ u8 r2;
+ s8 r1;
+
+ gBattleAnimScriptPtr++;
+ r7 = (struct SpriteTemplate *)(SCRIPT_READ_32(gBattleAnimScriptPtr));
+ gBattleAnimScriptPtr += 4;
+ r4 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ for (i = 0; i < r0; i++)
+ {
+ gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr += 2;
+ }
+ if (r4 & 0x80)
+ {
+ r4 ^= 0x80;
+ if (r4 > 0x3F)
+ r4 -= 0x40;
+ else
+ r4 = -r4;
+ _r0 = sub_8079E90(gUnknown_0202F7C9);
+ r1 = r4;
+
+ }
+ else
+ {
+ //_08075B44
+ if (r4 > 0x3F)
+ r4 -= 0x40;
+ else
+ r4 = -r4;
+ _r0 = sub_8079E90(gUnknown_0202F7C8);
+ r1 = r4;
+ }
+ r6 = _r0 + r1;
+ if ((s16)r6 < 3)
+ r6 = 3;
+
+ r4 = sub_8077ABC(gUnknown_0202F7C9, 2);
+ r2 = sub_8077ABC(gUnknown_0202F7C9, 3);
+ CreateSpriteAndAnimate(r7, r4, r2, r6);
+ gUnknown_0202F7B2++;
+}
+#else
+__attribute__((naked))
+static void ScriptCmd_sprite(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r5, _08075B2C @ =gBattleAnimScriptPtr\n\
+ ldr r1, [r5]\n\
+ adds r3, r1, 0x1\n\
+ str r3, [r5]\n\
+ ldrb r2, [r1, 0x1]\n\
+ ldrb r0, [r3, 0x1]\n\
+ lsls r0, 8\n\
+ adds r2, r0\n\
+ ldrb r0, [r3, 0x2]\n\
+ lsls r0, 16\n\
+ adds r2, r0\n\
+ ldrb r0, [r3, 0x3]\n\
+ lsls r0, 24\n\
+ adds r7, r2, r0\n\
+ adds r0, r1, 0x5\n\
+ str r0, [r5]\n\
+ ldrb r4, [r1, 0x5]\n\
+ adds r0, r1, 0x6\n\
+ str r0, [r5]\n\
+ ldrb r0, [r1, 0x6]\n\
+ adds r1, 0x7\n\
+ str r1, [r5]\n\
+ cmp r0, 0\n\
+ beq _08075B14\n\
+ adds r6, r5, 0\n\
+ ldr r5, _08075B30 @ =gBattleAnimArgs\n\
+ adds r3, r0, 0\n\
+_08075AFC:\n\
+ ldr r2, [r6]\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r2, 0x1]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ strh r1, [r5]\n\
+ adds r2, 0x2\n\
+ str r2, [r6]\n\
+ adds r5, 0x2\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bne _08075AFC\n\
+_08075B14:\n\
+ movs r0, 0x80\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _08075B44\n\
+ movs r0, 0x80\n\
+ eors r4, r0\n\
+ cmp r4, 0x3F\n\
+ bls _08075B34\n\
+ adds r0, r4, 0\n\
+ subs r0, 0x40\n\
+ b _08075B36\n\
+ .align 2, 0\n\
+_08075B2C: .4byte gBattleAnimScriptPtr\n\
+_08075B30: .4byte gBattleAnimArgs\n\
+_08075B34:\n\
+ negs r0, r4\n\
+_08075B36:\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldr r0, _08075B40 @ =gUnknown_0202F7C9\n\
+ b _08075B56\n\
+ .align 2, 0\n\
+_08075B40: .4byte gUnknown_0202F7C9\n\
+_08075B44:\n\
+ cmp r4, 0x3F\n\
+ bls _08075B4E\n\
+ adds r0, r4, 0\n\
+ subs r0, 0x40\n\
+ b _08075B50\n\
+_08075B4E:\n\
+ negs r0, r4\n\
+_08075B50:\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldr r0, _08075BAC @ =gUnknown_0202F7C8\n\
+_08075B56:\n\
+ ldrb r0, [r0]\n\
+ bl sub_8079E90\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r4, 24\n\
+ asrs r1, 24\n\
+ adds r0, r1\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r0, r6, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ bgt _08075B74\n\
+ movs r6, 0x3\n\
+_08075B74:\n\
+ ldr r5, _08075BB0 @ =gUnknown_0202F7C9\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x2\n\
+ bl sub_8077ABC\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x3\n\
+ bl sub_8077ABC\n\
+ adds r2, r0, 0\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, r6, 24\n\
+ lsrs r3, 24\n\
+ adds r0, r7, 0\n\
+ adds r1, r4, 0\n\
+ bl CreateSpriteAndAnimate\n\
+ ldr r1, _08075BB4 @ =gUnknown_0202F7B2\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08075BAC: .4byte gUnknown_0202F7C8\n\
+_08075BB0: .4byte gUnknown_0202F7C9\n\
+_08075BB4: .4byte gUnknown_0202F7B2\n\
+ .syntax divided\n");
+}
+#endif
+
+static void ScriptCmd_createtask(void)
+{
+ TaskFunc taskFunc;
+ u8 taskPriority;
+ u8 taskId;
+ u8 numArgs;
+ s32 i;
+
+ gBattleAnimScriptPtr++;
+ taskFunc = (TaskFunc)SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr += 4;
+ taskPriority = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ numArgs = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ for (i = 0; i < numArgs; i++)
+ {
+ gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr += 2;
+ }
+ taskId = CreateTask(taskFunc, taskPriority);
+ taskFunc(taskId);
+ gUnknown_0202F7B2++;
+}
+
+static void ScriptCmd_delay(void)
+{
+ gBattleAnimScriptPtr++;
+ gUnknown_0202F7B0 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ if (gUnknown_0202F7B0 == 0)
+ gUnknown_0202F7B0 = -1;
+ gBattleAnimScriptPtr++;
+ gUnknown_0202F7AC = move_anim_waiter;
+}
+
+static void ScriptCmd_wait(void)
+{
+ if (gUnknown_0202F7B2 == 0)
+ {
+ gBattleAnimScriptPtr++;
+ gUnknown_0202F7B0 = 0;
+ }
+ else
+ {
+ gUnknown_0202F7B0 = 1;
+ }
+}
+
+static void ScriptCmd_hang1(void)
+{
+}
+
+static void ScriptCmd_hang2(void)
+{
+}
+
+static void ScriptCmd_end(void)
+{
+ s32 i;
+ int zero = 0;
+
+ if (gUnknown_0202F7B2 != 0 || gUnknown_0202F7B3 != 0
+ || gUnknown_0202F7C2[0] != 0xFF || gUnknown_0202F7C2[1] != 0xFF)
+ {
+ gUnknown_03004AF0 = 0;
+ gUnknown_0202F7B0 = 1;
+ return;
+ }
+
+ if (IsSEPlaying())
+ {
+ gUnknown_03004AF0++;
+ if (gUnknown_03004AF0 <= 0x5A)
+ {
+ gUnknown_0202F7B0 = 1;
+ return;
+ }
+ else
+ {
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ }
+ }
+ gUnknown_03004AF0 = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (gUnknown_03004B10[i] != 0xFFFF)
+ {
+ FreeSpriteTilesByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag);
+ FreeSpritePaletteByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag);
+ gUnknown_03004B10[i] |= 0xFFFF;
+ }
+ }
+ if (zero == 0)
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ if (sub_8076BE0() == 0)
+ {
+ sub_8079E24();
+ sub_8043EB4(1);
+ }
+ gUnknown_0202F7B1 = 0;
+ }
+}
+
+static void ScriptCmd_playse(void)
+{
+ gBattleAnimScriptPtr++;
+ PlaySE(SCRIPT_READ_16(gBattleAnimScriptPtr));
+ gBattleAnimScriptPtr += 2;
+}
+
+static void ScriptCmd_monbg(void)
+{
+ u8 r6;
+ u8 r5;
+ u8 r0;
+ u8 r7;
+ u16 r4;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r6 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ if (r6 == 0)
+ r6 = 2;
+ else if (r6 == 1)
+ r6 = 3;
+ if (r6 == 0 || r6 == 2)
+ r5 = gUnknown_0202F7C8;
+ else
+ r5 = gUnknown_0202F7C9;
+ if (b_side_obj__get_some_boolean(r5))
+ {
+ r0 = battle_get_per_side_status(r5);
+ r0 += 0xFF;
+ if (r0 <= 1 || sub_8076BE0() != 0)
+ r7 = 0;
+ else
+ r7 = 1;
+ sub_8076034(r5, r7);
+ r4 = gUnknown_02024BE0[r5];
+ taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
+ gTasks[taskId].data[0] = r4;
+ gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
+ gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
+ if (r7 == 0)
+ {
+ gTasks[taskId].data[3] = gUnknown_030042C0;
+ gTasks[taskId].data[4] = gUnknown_030041B4;
+ }
+ else
+ {
+ gTasks[taskId].data[3] = gUnknown_03004288;
+ gTasks[taskId].data[4] = gUnknown_03004280;
+ }
+ gTasks[taskId].data[5] = r7;
+ gTasks[taskId].data[6] = r5;
+ gUnknown_0202F7C2[0] = taskId;
+
+ }
+ r5 ^= 2;
+ if (r6 > 1 && b_side_obj__get_some_boolean(r5))
+ {
+ r0 = battle_get_per_side_status(r5);
+ r0 += 0xFF;
+ if (r0 <= 1 || sub_8076BE0() != 0)
+ r7 = 0;
+ else
+ r7 = 1;
+ sub_8076034(r5, r7);
+ r4 = gUnknown_02024BE0[r5];
+ taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
+ gTasks[taskId].data[0] = r4;
+ gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
+ gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
+ if (r7 == 0)
+ {
+ gTasks[taskId].data[3] = gUnknown_030042C0;
+ gTasks[taskId].data[4] = gUnknown_030041B4;
+ }
+ else
+ {
+ gTasks[taskId].data[3] = gUnknown_03004288;
+ gTasks[taskId].data[4] = gUnknown_03004280;
+ }
+ gTasks[taskId].data[5] = r7;
+ gTasks[taskId].data[6] = r5;
+ gUnknown_0202F7C2[1] = taskId;
+ }
+ gBattleAnimScriptPtr++;
+}
+
+#ifdef NONMATCHING
+bool8 b_side_obj__get_some_boolean(u8 a)
+{
+ if (sub_8076BE0() != 0)
+ {
+ if (a == gUnknown_0202F7C8)
+ return TRUE;
+ else
+ return FALSE;
+ }
+ if (sub_8078874(a) == 0)
+ return FALSE;
+ if (sub_8076BE0() != 0)
+ return TRUE;
+ if ((EWRAM_17800[a].unk0 & 1) == 0)
+ return TRUE;
+ if (gSprites[gUnknown_02024BE0[a]].invisible)
+ return FALSE;
+ return TRUE;
+}
+#else
+__attribute__((naked))
+bool8 b_side_obj__get_some_boolean(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ adds r5, r4, 0\n\
+ bl sub_8076BE0\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08075FDC\n\
+ ldr r0, _08075FD8 @ =gUnknown_0202F7C8\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ beq _0807601C\n\
+ b _0807602C\n\
+ .align 2, 0\n\
+_08075FD8: .4byte gUnknown_0202F7C8\n\
+_08075FDC:\n\
+ adds r0, r4, 0\n\
+ bl sub_8078874\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0807602C\n\
+ bl sub_8076BE0\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0807601C\n\
+ lsls r0, r5, 2\n\
+ ldr r1, _08076020 @ =0x02017800\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0807601C\n\
+ ldr r2, _08076024 @ =gSprites\n\
+ ldr r0, _08076028 @ =gUnknown_02024BE0\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ adds r0, 0x3E\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 29\n\
+ cmp r0, 0\n\
+ blt _0807602C\n\
+_0807601C:\n\
+ movs r0, 0x1\n\
+ b _0807602E\n\
+ .align 2, 0\n\
+_08076020: .4byte 0x02017800\n\
+_08076024: .4byte gSprites\n\
+_08076028: .4byte gUnknown_02024BE0\n\
+_0807602C:\n\
+ movs r0, 0\n\
+_0807602E:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8076034(u8 a, u8 b)
+{
+ volatile u8 pointlessZero;
+ u16 *addr2;
+ u8 spriteId;
+
+ if (b == 0)
+ {
+ struct UnknownStruct2 s;
+ u8 *addr;
+ u32 size;
+ u8 r2;
+ u16 *addr3;
+
+ sub_8078914(&s);
+ addr = s.unk0;
+ size = 0x2000;
+ while (1)
+ {
+ DmaFill32(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill32(3, 0, addr, size);
+ break;
+ }
+ }
+ pointlessZero = 0;
+ pointlessZero = 0;
+ addr2 = (void *)s.unk4;
+ DmaFill16(3, 0xFF, addr2, 0x1000);
+
+ REG_BG1CNT_BITFIELD.priority = 2;
+ REG_BG1CNT_BITFIELD.screenSize = 1;
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
+
+ spriteId = gUnknown_02024BE0[a];
+ gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
+ if (sub_8076BE0() != 0 && sub_80AEB1C(EWRAM_19348) != 0)
+ gUnknown_030042C0--;
+ gUnknown_030041B4 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
+ gSprites[gUnknown_02024BE0[a]].invisible = TRUE;
+
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+
+ LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32);
+ addr3 = (u16 *)PLTT + s.unk8 * 16;
+ DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32);
+
+ if (sub_8076BE0() != 0)
+ r2 = 0;
+ else
+ r2 = battle_get_per_side_status(a);
+ sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
+ if (sub_8076BE0() != 0)
+ sub_8076380();
+ }
+ else
+ {
+ u8 *addr;
+ u32 size;
+ u16 *addr3;
+
+ addr = (void *)(VRAM + 0x6000);
+ size = 0x2000;
+ while (1)
+ {
+ DmaFill32(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill32(3, 0, addr, size);
+ break;
+ }
+ }
+ pointlessZero = 0;
+ pointlessZero = 0;
+ addr2 = (void *)(VRAM + 0xF000);
+ DmaFill32(3, 0, addr2, 0x800);
+
+ REG_BG2CNT_BITFIELD.priority = 2;
+ REG_BG2CNT_BITFIELD.screenSize = 1;
+ REG_BG2CNT_BITFIELD.areaOverflowMode = 0;
+
+ spriteId = gUnknown_02024BE0[a];
+ gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
+ gUnknown_03004280 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
+ gSprites[gUnknown_02024BE0[a]].invisible = TRUE;
+
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+
+ LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32);
+ addr3 = (void *)(PLTT + 0x120);
+ DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32);
+
+ sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
+ }
+}
+
+static void sub_8076380(void)
+{
+ int i;
+ int j;
+ struct UnknownStruct2 s;
+ u16 *ptr;
+
+ if (sub_80AEB1C(EWRAM_19348) != 0)
+ {
+ sub_8078914(&s);
+ ptr = s.unk4;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ u16 temp = ptr[j + i * 32];
+
+ ptr[j + i * 32] = ptr[7 - j + i * 32];
+ ptr[7 - j + i * 32] = temp;
+ }
+ }
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ ptr[j + i * 32] ^= 0x400;
+ }
+ }
+}
+
+void sub_80763FC(u16 a, u16 *b, u32 c, u8 d)
+{
+ u8 i;
+ u8 j;
+ u32 r9;
+
+ if (d == 0)
+ r9 = 32;
+ else
+ r9 = 64;
+ a <<= 12;
+ for (i = 0; i < r9; i++)
+ {
+ for (j = 0; j < 32; j++)
+ b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c;
+ }
+}
+
+void sub_8076464(u8 a)
+{
+ u8 *addr;
+ u32 size;
+ volatile u8 pointlessZero;
+ struct UnknownStruct2 s;
+
+ sub_8078914(&s);
+ if (a == 0 || sub_8076BE0() != 0)
+ {
+ u16 *addr2;
+
+ addr = s.unk0;
+ size = 0x2000;
+ while (1)
+ {
+ DmaFill32(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill32(3, 0, addr, size);
+ break;
+ }
+ }
+ pointlessZero = 0;
+ pointlessZero = 0;
+ addr2 = s.unk4;
+ DmaFill32(3, 0, addr2, 0x800);
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ }
+ else
+ {
+ u16 *addr2;
+
+ addr = (void *)(VRAM + 0x6000);
+ size = 0x2000;
+ while (1)
+ {
+ DmaFill32(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill32(3, 0, addr, size);
+ break;
+ }
+ }
+ pointlessZero = 0;
+ pointlessZero = 0;
+ addr2 = (void *)(VRAM + 0xF000);
+ DmaFill32(3, 0, addr2, 0x800);
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ }
+}
+
+static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
+{
+ u8 r4;
+ u8 r6;
+ s16 r3;
+ s16 r2;
+ struct UnknownStruct2 s;
+
+ r4 = gTasks[taskId].data[0];
+ r6 = gTasks[taskId].data[6];
+ sub_8078914(&s);
+ r3 = gTasks[taskId].data[1] - (gSprites[r4].pos1.x + gSprites[r4].pos2.x);
+ r2 = gTasks[taskId].data[2] - (gSprites[r4].pos1.y + gSprites[r4].pos2.y);
+ if (gTasks[taskId].data[5] == 0)
+ {
+ u16 *src;
+ u16 *dst;
+
+ gUnknown_030042C0 = r3 + gTasks[taskId].data[3];
+ gUnknown_030041B4 = r2 + gTasks[taskId].data[4];
+ src = gPlttBufferFaded + 0x100 + r6 * 16;
+ dst = gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256;
+ DmaCopy32(3, src, dst, 32);
+ }
+ else
+ {
+ u16 *src;
+ u16 *dst;
+
+ gUnknown_03004288 = r3 + gTasks[taskId].data[3];
+ gUnknown_03004280 = r2 + gTasks[taskId].data[4];
+ src = gPlttBufferFaded + 0x100 + r6 * 16;
+ dst = gPlttBufferFaded + 0x100 - 112;
+ DmaCopy32(3, src, dst, 32);
+ }
+}
+
+static void ScriptCmd_clearmonbg(void)
+{
+ u8 r4;
+ u8 r5;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r4 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ if (r4 == 0)
+ r4 = 2;
+ else if (r4 == 1)
+ r4 = 3;
+ if (r4 == 0 || r4 == 2)
+ r5 = gUnknown_0202F7C8;
+ else
+ r5 = gUnknown_0202F7C9;
+ if (gUnknown_0202F7C2[0] != 0xFF)
+ gSprites[gUnknown_02024BE0[r5]].invisible = FALSE;
+ if (r4 > 1 && gUnknown_0202F7C2[1] != 0xFF)
+ gSprites[gUnknown_02024BE0[r5 ^ 2]].invisible = FALSE;
+ else
+ r4 = 0;
+ taskId = CreateTask(sub_807672C, 5);
+ gTasks[taskId].data[0] = r4;
+ gTasks[taskId].data[2] = r5;
+ gBattleAnimScriptPtr++;
+}
+
+static void sub_807672C(u8 taskId)
+{
+ u8 var;
+ u8 r4;
+
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] != 1)
+ {
+ var = battle_get_per_side_status(gTasks[taskId].data[2]);
+ var += 0xFF;
+ if (var <= 1 || sub_8076BE0() != 0)
+ r4 = 0;
+ else
+ r4 = 1;
+ if (gUnknown_0202F7C2[0] != 0xFF)
+ {
+ sub_8076464(r4);
+ DestroyTask(gUnknown_0202F7C2[0]);
+ gUnknown_0202F7C2[0] = 0xFF;
+ }
+ if (gTasks[taskId].data[0] > 1)
+ {
+ sub_8076464(r4 ^ 1);
+ DestroyTask(gUnknown_0202F7C2[1]);
+ gUnknown_0202F7C2[1] = 0xFF;
+ }
+ DestroyTask(taskId);
+ }
+}
+
+static void ScriptCmd_monbg_22(void)
+{
+ u8 r5;
+ u8 r4;
+ u8 r0;
+ u8 r1;
+
+ gBattleAnimScriptPtr++;
+ r5 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ if (r5 == 0)
+ r5 = 2;
+ else if (r5 == 1)
+ r5 = 3;
+ if (r5 == 0 || r5 == 2)
+ r4 = gUnknown_0202F7C8;
+ else
+ r4 = gUnknown_0202F7C9;
+ if (b_side_obj__get_some_boolean(r4))
+ {
+ r0 = battle_get_per_side_status(r4);
+ r0 += 0xFF;
+ if (r0 <= 1 || sub_8076BE0() != 0)
+ r1 = 0;
+ else
+ r1 = 1;
+ sub_8076034(r4, r1);
+ gSprites[gUnknown_02024BE0[r4]].invisible = FALSE;
+ }
+ r4 ^= 2;
+ if (r5 > 1 && b_side_obj__get_some_boolean(r4))
+ {
+ r0 = battle_get_per_side_status(r4);
+ r0 += 0xFF;
+ if (r0 <= 1 || sub_8076BE0() != 0)
+ r1 = 0;
+ else
+ r1 = 1;
+ sub_8076034(r4, r1);
+ gSprites[gUnknown_02024BE0[r4]].invisible = FALSE;
+ }
+ gBattleAnimScriptPtr++;
+}
+
+static void ScriptCmd_clearmonbg_23(void)
+{
+ u8 r5;
+ u8 r6;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r5 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ if (r5 == 0)
+ r5 = 2;
+ else if (r5 == 1)
+ r5 = 3;
+ if (r5 == 0 || r5 == 2)
+ r6 = gUnknown_0202F7C8;
+ else
+ r6 = gUnknown_0202F7C9;
+ if (b_side_obj__get_some_boolean(r6))
+ gSprites[gUnknown_02024BE0[r6]].invisible = FALSE;
+ if (r5 > 1 && b_side_obj__get_some_boolean(r6 ^ 2))
+ gSprites[gUnknown_02024BE0[r6 ^ 2]].invisible = FALSE;
+ else
+ r5 = 0;
+ taskId = CreateTask(sub_80769A4, 5);
+ gTasks[taskId].data[0] = r5;
+ gTasks[taskId].data[2] = r6;
+ gBattleAnimScriptPtr++;
+}
+
+static void sub_80769A4(u8 taskId)
+{
+ u8 r0;
+ u8 r4;
+ u8 r5;
+
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] != 1)
+ {
+ r4 = gTasks[taskId].data[2];
+ r0 = battle_get_per_side_status(r4);
+ r0 += 0xFF;
+ if (r0 <= 1 || sub_8076BE0() != 0)
+ r5 = 0;
+ else
+ r5 = 1;
+ if (b_side_obj__get_some_boolean(r4))
+ sub_8076464(r5);
+ if (gTasks[taskId].data[0] > 1 && b_side_obj__get_some_boolean(r4 ^ 2))
+ sub_8076464(r5 ^ 1);
+ DestroyTask(taskId);
+ }
+}
+
+static void ScriptCmd_setalpha(void)
+{
+ u16 r3;
+ u16 r1;
+
+ gBattleAnimScriptPtr++;
+ r3 = *(gBattleAnimScriptPtr++);
+ r1 = *(gBattleAnimScriptPtr++) << 8;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = r3 | r1;
+}
+
+static void ScriptCmd_setbldcnt(void)
+{
+ u16 r3;
+ u16 r1;
+
+ gBattleAnimScriptPtr++;
+ r3 = *(gBattleAnimScriptPtr++);
+ r1 = *(gBattleAnimScriptPtr++) << 8;
+ REG_BLDCNT = r3 | r1;
+}
+
+static void ScriptCmd_blendoff(void)
+{
+ gBattleAnimScriptPtr++;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+}
+
+static void ScriptCmd_call(void)
+{
+ u32 addr;
+
+ gBattleAnimScriptPtr++;
+ gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4;
+ addr = SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr = (u8 *)addr;
+}
+
+static void ScriptCmd_return(void)
+{
+ gBattleAnimScriptPtr = gBattleAnimScriptRetAddr;
+}
+
+static void ScriptCmd_setvar(void)
+{
+ const u8 *addr = gBattleAnimScriptPtr;
+ u16 r4;
+ u8 r2;
+
+ gBattleAnimScriptPtr++;
+ r2 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ r4 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr = addr + 4;
+ gBattleAnimArgs[r2] = r4;
+}
+
+static void ScriptCmd_ifelse(void)
+{
+ u32 addr;
+
+ gBattleAnimScriptPtr++;
+ if (gUnknown_0202F7C4 & 1)
+ gBattleAnimScriptPtr += 4;
+ addr = SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr = (u8 *)addr;
+}
+
+static void ScriptCmd_jumpif(void)
+{
+ u8 r1;
+ u32 addr;
+
+ gBattleAnimScriptPtr++;
+ r1 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ if (r1 == gUnknown_0202F7C4)
+ {
+ addr = SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr = (u8 *)addr;
+ }
+ else
+ {
+ gBattleAnimScriptPtr += 4;
+ }
+}
+
+static void ScriptCmd_jump(void)
+{
+ u32 addr;
+
+ gBattleAnimScriptPtr++;
+ addr = SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr = (u8 *)addr;
+}
+
+//IsContest, maybe
+bool8 sub_8076BE0(void)
+{
+ if (!gMain.inBattle)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void ScriptCmd_fadetobg(void)
+{
+ u8 r4;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r4 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ taskId = CreateTask(task_p5_load_battle_screen_elements, 5);
+ gTasks[taskId].data[0] = r4;
+ gUnknown_0202F7C5 = 1;
+}
+
+static void ScriptCmd_fadetobg_25(void)
+{
+ u8 r8;
+ u8 r7;
+ u8 r6;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r8 = gBattleAnimScriptPtr[0];
+ r7 = gBattleAnimScriptPtr[1];
+ r6 = gBattleAnimScriptPtr[2];
+ gBattleAnimScriptPtr += 3;
+ taskId = CreateTask(task_p5_load_battle_screen_elements, 5);
+ if (sub_8076BE0() != 0)
+ gTasks[taskId].data[0] = r6;
+ else if (battle_side_get_owner(gUnknown_0202F7C9) == 0)
+ gTasks[taskId].data[0] = r7;
+ else
+ gTasks[taskId].data[0] = r8;
+ gUnknown_0202F7C5 = 1;
+}
+
+static void task_p5_load_battle_screen_elements(u8 taskId)
+{
+ if (gTasks[taskId].data[10] == 0)
+ {
+ BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0);
+ gTasks[taskId].data[10]++;
+ return;
+ }
+ if (gPaletteFade.active)
+ return;
+ if (gTasks[taskId].data[10] == 1)
+ {
+ gTasks[taskId].data[10]++;
+ gUnknown_0202F7C5 = 2;
+ }
+ else if (gTasks[taskId].data[10] == 2)
+ {
+ s16 data0 = (u16)gTasks[taskId].data[0];
+
+ if (data0 == -1)
+ dp01t_11_3_message_for_player_only();
+ else
+ sub_8076DB8(data0);
+ BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1);
+ gTasks[taskId].data[10]++;
+ return;
+ }
+ if (gPaletteFade.active)
+ return;
+ if (gTasks[taskId].data[10] == 3)
+ {
+ DestroyTask(taskId);
+ gUnknown_0202F7C5 = 0;
+ }
+}
+
+static void sub_8076DB8(u16 a)
+{
+ if (sub_8076BE0())
+ {
+ void *tilemap = gBattleAnimBackgroundTable[a].tilemap;
+ void *dmaSrc;
+ void *dmaDest;
+
+ sub_800D238(tilemap, sub_8076BE0() ? EWRAM_14800 : EWRAM_18000);
+ sub_80763FC(sub_80789BC(), sub_8076BE0() ? EWRAM_14800 : EWRAM_18000, 0x100, 0);
+ dmaSrc = sub_8076BE0() ? EWRAM_14800 : EWRAM_18000;
+ dmaDest = (void *)(VRAM + 0xD000);
+ DmaCopy32(3, dmaSrc, dmaDest, 0x800);
+ LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x2000));
+ LoadCompressedPalette(gBattleAnimBackgroundTable[a].palette, sub_80789BC() * 16, 32);
+ }
+ else
+ {
+ LZDecompressVram(gBattleAnimBackgroundTable[a].tilemap, (void *)(VRAM + 0xD000));
+ LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x8000));
+ LoadCompressedPalette(gBattleAnimBackgroundTable[a].palette, 32, 32);
+ }
+}
+
+static void dp01t_11_3_message_for_player_only(void)
+{
+ if (sub_8076BE0())
+ sub_80AB2AC();
+ else
+ sub_800D7B8();
+}
+
+static void ScriptCmd_restorebg(void)
+{
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ taskId = CreateTask(task_p5_load_battle_screen_elements, 5);
+ gTasks[taskId].data[0] = 0xFFFF;
+ gUnknown_0202F7C5 = 1;
+}
+
+static void ScriptCmd_waitbgfadeout(void)
+{
+ if (gUnknown_0202F7C5 == 2)
+ {
+ gBattleAnimScriptPtr++;
+ gUnknown_0202F7B0 = 0;
+ }
+ else
+ {
+ gUnknown_0202F7B0 = 1;
+ }
+}
+
+static void ScriptCmd_waitbgfadein(void)
+{
+ if (gUnknown_0202F7C5 == 0)
+ {
+ gBattleAnimScriptPtr++;
+ gUnknown_0202F7B0 = 0;
+ }
+ else
+ {
+ gUnknown_0202F7B0 = 1;
+ }
+}
+
+static void ScriptCmd_changebg(void)
+{
+ gBattleAnimScriptPtr++;
+ sub_8076DB8(SCRIPT_READ_8(gBattleAnimScriptPtr));
+ gBattleAnimScriptPtr++;
+}
+
+//Weird control flow
+/*
+s8 sub_8076F98(s8 a)
+{
+ if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10))
+ {
+ a = battle_side_get_owner(gUnknown_0202F7C8) ? 0xC0 : 0x3F;
+ }
+ //_08076FDC
+ else
+ {
+ if (sub_8076BE0())
+ {
+ if (gUnknown_0202F7C8 == gUnknown_0202F7C9 && gUnknown_0202F7C8 == 2
+ && a == 0x3F)
+ {
+ //jump to _0807707A
+ if (a < -0x40)
+ a = 0xC0;
+ return a;
+ }
+ }
+ //_08077004
+ else
+ {
+ if (battle_side_get_owner(gUnknown_0202F7C8) == 0)
+ {
+ if (battle_side_get_owner(gUnknown_0202F7C9) == 0)
+ }
+ //_08077042
+ else
+ {
+
+ }
+ //_0807706C
+ }
+ }
+ //_0807706E
+}
+*/
+__attribute__((naked))
+s8 sub_8076F98(s8 a)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ bl sub_8076BE0\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08076FDC\n\
+ ldr r0, _08076FD4 @ =gUnknown_0202F7C8\n\
+ ldrb r2, [r0]\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ ldr r1, _08076FD8 @ =0x02017810\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08076FDC\n\
+ adds r0, r2, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ movs r4, 0xC0\n\
+ cmp r0, 0\n\
+ beq _0807706E\n\
+ movs r4, 0x3F\n\
+ b _0807706E\n\
+ .align 2, 0\n\
+_08076FD4: .4byte gUnknown_0202F7C8\n\
+_08076FD8: .4byte 0x02017810\n\
+_08076FDC:\n\
+ bl sub_8076BE0\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08077004\n\
+ ldr r0, _08076FFC @ =gUnknown_0202F7C8\n\
+ ldr r1, _08077000 @ =gUnknown_0202F7C9\n\
+ ldrb r0, [r0]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bne _08077068\n\
+ cmp r0, 0x2\n\
+ bne _08077068\n\
+ cmp r4, 0x3F\n\
+ beq _0807707A\n\
+ b _08077068\n\
+ .align 2, 0\n\
+_08076FFC: .4byte gUnknown_0202F7C8\n\
+_08077000: .4byte gUnknown_0202F7C9\n\
+_08077004:\n\
+ ldr r0, _0807702C @ =gUnknown_0202F7C8\n\
+ ldrb r0, [r0]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08077042\n\
+ ldr r0, _08077030 @ =gUnknown_0202F7C9\n\
+ ldrb r0, [r0]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0807706E\n\
+ lsls r0, r4, 24\n\
+ asrs r1, r0, 24\n\
+ cmp r1, 0x3F\n\
+ bne _08077034\n\
+ movs r4, 0xC0\n\
+ b _0807706E\n\
+ .align 2, 0\n\
+_0807702C: .4byte gUnknown_0202F7C8\n\
+_08077030: .4byte gUnknown_0202F7C9\n\
+_08077034:\n\
+ movs r0, 0x40\n\
+ negs r0, r0\n\
+ cmp r1, r0\n\
+ beq _0807706E\n\
+ negs r0, r1\n\
+ lsls r0, 24\n\
+ b _0807706C\n\
+_08077042:\n\
+ ldr r0, _08077064 @ =gUnknown_0202F7C9\n\
+ ldrb r0, [r0]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _08077068\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ movs r1, 0x40\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ bne _0807706E\n\
+ movs r4, 0x3F\n\
+ b _0807706E\n\
+ .align 2, 0\n\
+_08077064: .4byte gUnknown_0202F7C9\n\
+_08077068:\n\
+ lsls r0, r4, 24\n\
+ negs r0, r0\n\
+_0807706C:\n\
+ lsrs r4, r0, 24\n\
+_0807706E:\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3F\n\
+ ble _0807707A\n\
+ movs r4, 0x3F\n\
+ b _08077088\n\
+_0807707A:\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ movs r1, 0x40\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ bge _08077088\n\
+ movs r4, 0xC0\n\
+_08077088:\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+s8 sub_8077094(s8 a)
+{
+ if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10))
+ {
+ if (battle_side_get_owner(gUnknown_0202F7C8) != 0)
+ a = 0x3F;
+ else
+ a = 0xC0;
+ }
+ else
+ {
+ if (battle_side_get_owner(gUnknown_0202F7C8) != 0 || sub_8076BE0() != 0)
+ a = -a;
+ }
+ return a;
+}
+
+s16 sub_8077104(s16 a)
+{
+ s16 var = a;
+
+ if (var > 63)
+ var = 63;
+ else if (var < -64)
+ var = -64;
+ return var;
+}
+
+s16 sub_807712C(s16 a, s16 b, s16 c)
+{
+ u16 var;
+
+ if (a < b)
+ var = ((c < 0) ? -c : c);
+ else if (a > b)
+ var = -((c < 0) ? -c : c);
+ else
+ var = 0;
+ return var;
+}
+
+static void ScriptCmd_panse_19(void)
+{
+ u16 r4;
+ s8 r0;
+
+ gBattleAnimScriptPtr++;
+ r4 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2);
+ PlaySE12WithPanning(r4, sub_8076F98(r0));
+ gBattleAnimScriptPtr += 3;
+}
+
+static void ScriptCmd_setpan(void)
+{
+ s8 r0;
+
+ gBattleAnimScriptPtr++;
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ SE12PanpotControl(sub_8076F98(r0));
+ gBattleAnimScriptPtr++;
+}
+
+static void ScriptCmd_panse_1B(void)
+{
+ u16 songNum;
+ s8 r0;
+ s8 r4;
+ s8 r6;
+ u8 r7;
+ s8 panning;
+ s8 r8;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ songNum = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2);
+ r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3);
+ r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4);
+ r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 5);
+ panning = sub_8076F98(r0);
+ r8 = sub_8076F98(r4);
+ r4 = sub_807712C(panning, r8, r6);
+ taskId = CreateTask(c3_08073CEC, 1);
+ gTasks[taskId].data[0] = panning;
+ gTasks[taskId].data[1] = r8;
+ gTasks[taskId].data[2] = r4;
+ gTasks[taskId].data[3] = r7;
+ gTasks[taskId].data[4] = panning;
+ PlaySE12WithPanning(songNum, panning);
+ gUnknown_0202F7B3++;
+ gBattleAnimScriptPtr += 6;
+}
+
+#ifdef NONMATCHING
+static void c3_08073CEC(u8 taskId)
+{
+ u16 r7 = 0;
+ s16 r0;
+ s16 r6;
+ s16 r3;
+ s16 r4;
+ int foo;
+
+ r0 = gTasks[taskId].data[8];
+ gTasks[taskId].data[8]++;
+ if (r0 >= gTasks[taskId].data[3])
+ {
+ gTasks[taskId].data[8] = r7;
+ r6 = gTasks[taskId].data[0];
+ r3 = gTasks[taskId].data[1];
+ foo = gTasks[taskId].data[4] + gTasks[taskId].data[2];
+ r4 = foo;
+ gTasks[taskId].data[4] = r4;
+ if (gTasks[taskId].data[2] == 0)
+ {
+ r4 = r3;
+ DestroyTask(taskId);
+ gUnknown_0202F7B3--;
+ }
+ //_080772D8
+ else
+ {
+ if (r6 < r3)
+ {
+ if (r4 < r3)
+ goto check;
+ DestroyTask(taskId);
+ gUnknown_0202F7B3--;
+ }
+ else
+ {
+ if (r4 <= r3)
+ r7 = 1;
+ check:
+ if (r7 != 0)
+ {
+ DestroyTask(taskId);
+ gUnknown_0202F7B3--;
+ }
+ }
+ }
+ //_080772F8
+ SE12PanpotControl(r4);
+ }
+ //_08077314
+}
+#else
+__attribute__((naked))
+static void c3_08073CEC(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r7, 0\n\
+ ldr r1, _080772D4 @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r2, r0, r1\n\
+ ldrh r0, [r2, 0x18]\n\
+ adds r1, r0, 0x1\n\
+ strh r1, [r2, 0x18]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ movs r3, 0xE\n\
+ ldrsh r1, [r2, r3]\n\
+ cmp r0, r1\n\
+ blt _08077314\n\
+ strh r7, [r2, 0x18]\n\
+ ldrh r6, [r2, 0x8]\n\
+ ldrh r3, [r2, 0xA]\n\
+ movs r4, 0x10\n\
+ ldrsh r0, [r2, r4]\n\
+ movs r4, 0xC\n\
+ ldrsh r1, [r2, r4]\n\
+ adds r0, r1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ strh r4, [r2, 0x10]\n\
+ cmp r1, 0\n\
+ bne _080772D8\n\
+ lsls r2, r3, 16\n\
+ b _080772FC\n\
+ .align 2, 0\n\
+_080772D4: .4byte gTasks\n\
+_080772D8:\n\
+ lsls r1, r6, 16\n\
+ lsls r0, r3, 16\n\
+ asrs r3, r0, 16\n\
+ adds r2, r0, 0\n\
+ cmp r1, r2\n\
+ bge _080772EE\n\
+ lsls r0, r4, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r3\n\
+ blt _080772F8\n\
+ b _080772FC\n\
+_080772EE:\n\
+ lsls r0, r4, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r3\n\
+ bgt _080772F8\n\
+ movs r7, 0x1\n\
+_080772F8:\n\
+ cmp r7, 0\n\
+ beq _0807730C\n\
+_080772FC:\n\
+ lsrs r4, r2, 16\n\
+ adds r0, r5, 0\n\
+ bl DestroyTask\n\
+ ldr r1, _0807731C @ =gUnknown_0202F7B3\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0x1\n\
+ strb r0, [r1]\n\
+_0807730C:\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ bl SE12PanpotControl\n\
+_08077314:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0807731C: .4byte gUnknown_0202F7B3\n\
+ .syntax divided\n");
+}
+#endif
+
+static void ScriptCmd_panse_26(void)
+{
+ u16 r8;
+ s8 r4;
+ s8 r5;
+ s8 r6;
+ u8 r10;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r8 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2);
+ r5 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3);
+ r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4);
+ r10 = SCRIPT_READ_8(gBattleAnimScriptPtr + 5);
+ taskId = CreateTask(c3_08073CEC, 1);
+ gTasks[taskId].data[0] = r4;
+ gTasks[taskId].data[1] = r5;
+ gTasks[taskId].data[2] = r6;
+ gTasks[taskId].data[3] = r10;
+ gTasks[taskId].data[4] = r4;
+ PlaySE12WithPanning(r8, r4);
+ gUnknown_0202F7B3++;
+ gBattleAnimScriptPtr += 6;
+}
+
+static void ScriptCmd_panse_27(void)
+{
+ u16 r9;
+ u8 r4;
+ u8 r8;
+ u8 r7;
+ u8 r0;
+ s8 r6;
+ s8 r5;
+ s8 r4_2;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r9 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2);
+ r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3);
+ r8 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4);
+ r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 5);
+ r6 = sub_8077094(r0);
+ r5 = sub_8077094(r4);
+ r4_2 = sub_8077094(r8);
+ taskId = CreateTask(c3_08073CEC, 1);
+ gTasks[taskId].data[0] = r6;
+ gTasks[taskId].data[1] = r5;
+ gTasks[taskId].data[2] = r4_2;
+ gTasks[taskId].data[3] = r7;
+ gTasks[taskId].data[4] = r6;
+ PlaySE12WithPanning(r9, r6);
+ gUnknown_0202F7B3++;
+ gBattleAnimScriptPtr += 6;
+}
+
+static void ScriptCmd_panse_1C(void)
+{
+ u16 r5;
+ u8 r0;
+ u8 r8;
+ u8 r9;
+ s8 r4;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r5 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2);
+ r8 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3);
+ r9 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4);
+ r4 = sub_8076F98(r0);
+ taskId = CreateTask(sub_80774FC, 1);
+ gTasks[taskId].data[0] = r5;
+ gTasks[taskId].data[1] = r4;
+ gTasks[taskId].data[2] = r8;
+ gTasks[taskId].data[3] = r9;
+ gTasks[taskId].data[8] = r8;
+ gTasks[taskId].func(taskId);
+ gUnknown_0202F7B3++;
+ gBattleAnimScriptPtr += 5;
+}
+
+static void sub_80774FC(u8 taskId)
+{
+ s16 data8;
+ u16 r0;
+ s8 r1;
+ u8 r4;
+
+ data8 = gTasks[taskId].data[8];
+ gTasks[taskId].data[8]++;
+ if (data8 >= gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[8] = 0;
+ r0 = gTasks[taskId].data[0];
+ r1 = gTasks[taskId].data[1];
+ gTasks[taskId].data[3]--;
+ r4 = gTasks[taskId].data[3];
+ PlaySE12WithPanning(r0, r1);
+ if (r4 == 0)
+ {
+ DestroyTask(taskId);
+ gUnknown_0202F7B3--;
+ }
+ }
+}
+
+static void ScriptCmd_panse_1D(void)
+{
+ u16 r5;
+ u8 r0;
+ u8 r8;
+ s8 r4;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ r5 = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2);
+ r8 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3);
+ r4 = sub_8076F98(r0);
+ taskId = CreateTask(sub_80775CC, 1);
+ gTasks[taskId].data[0] = r5;
+ gTasks[taskId].data[1] = r4;
+ gTasks[taskId].data[2] = r8;
+ gUnknown_0202F7B3++;
+ gBattleAnimScriptPtr += 4;
+}
+
+static void sub_80775CC(u8 taskId)
+{
+ s16 r0;
+
+ r0 = gTasks[taskId].data[2];
+ gTasks[taskId].data[2]--;
+ if (r0 <= 0)
+ {
+ PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ DestroyTask(taskId);
+ gUnknown_0202F7B3--;
+ }
+}
+
+static void ScriptCmd_createtask_1F(void)
+{
+ TaskFunc func;
+ u8 numArgs;
+ int i;
+ u8 taskId;
+
+ gBattleAnimScriptPtr++;
+ func = (TaskFunc)SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr += 4;
+ numArgs = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr++;
+ for (i = 0; i < numArgs; i++)
+ {
+ gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr += 2;
+ }
+ taskId = CreateTask(func, 1);
+ func(taskId);
+ gUnknown_0202F7B3++;
+}
+
+static void ScriptCmd_waitsound(void)
+{
+ if (gUnknown_0202F7B3 != 0)
+ {
+ gUnknown_03004AF0 = 0;
+ gUnknown_0202F7B0 = 1;
+ }
+ else if (IsSEPlaying())
+ {
+ gUnknown_03004AF0++;
+ if (gUnknown_03004AF0 > 0x5A)
+ {
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ gUnknown_03004AF0 = 0;
+ }
+ else
+ {
+ gUnknown_0202F7B0 = 1;
+ }
+ }
+ else
+ {
+ gUnknown_03004AF0 = 0;
+ gBattleAnimScriptPtr++;
+ gUnknown_0202F7B0 = 0;
+ }
+}
+
+static void ScriptCmd_jumpvareq(void)
+{
+ u8 r2;
+ s16 r1;
+ u8 *addr;
+
+ gBattleAnimScriptPtr++;
+ r2 = SCRIPT_READ_8(gBattleAnimScriptPtr);
+ r1 = SCRIPT_READ_16(gBattleAnimScriptPtr + 1);
+ if (r1 == gBattleAnimArgs[r2])
+ {
+ addr = (u8 *)SCRIPT_READ_32(gBattleAnimScriptPtr + 3);
+ gBattleAnimScriptPtr = addr;
+ }
+ else
+ {
+ gBattleAnimScriptPtr += 7;
+ }
+}
+
+static void ScriptCmd_jumpunkcond(void)
+{
+ u8 *addr;
+
+ gBattleAnimScriptPtr++;
+ if (sub_8076BE0())
+ {
+ addr = (u8 *)SCRIPT_READ_32(gBattleAnimScriptPtr);
+ gBattleAnimScriptPtr = addr;
+ }
+ else
+ {
+ gBattleAnimScriptPtr += 4;
+ }
+}
+
+static void ScriptCmd_monbgprio_28(void)
+{
+ u8 r2;
+ u8 r0;
+ u8 r4;
+
+ r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1);
+ gBattleAnimScriptPtr += 2;
+ if (r2 != 0)
+ r0 = gUnknown_0202F7C9;
+ else
+ r0 = gUnknown_0202F7C8;
+ r4 = battle_get_per_side_status(r0);
+ if (!sub_8076BE0() && (r4 == 0 || r4 == 3))
+ {
+ REG_BG1CNT_BITFIELD.priority = 1;
+ REG_BG2CNT_BITFIELD.priority = 2;
+ }
+}
+
+static void ScriptCmd_monbgprio_29(void)
+{
+ gBattleAnimScriptPtr++;
+ if (!sub_8076BE0())
+ {
+ REG_BG1CNT_BITFIELD.priority = 1;
+ REG_BG2CNT_BITFIELD.priority = 2;
+ }
+}
+
+static void ScriptCmd_monbgprio_2A(void)
+{
+ u8 r6;
+ u8 r4;
+ u8 r0;
+
+ r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1);
+ gBattleAnimScriptPtr += 2;
+ if (battle_side_get_owner(gUnknown_0202F7C8) != battle_side_get_owner(gUnknown_0202F7C9))
+ {
+ if (r6 != 0)
+ r0 = gUnknown_0202F7C9;
+ else
+ r0 = gUnknown_0202F7C8;
+ r4 = battle_get_per_side_status(r0);
+ if (!sub_8076BE0() && (r4 == 0 || r4 == 3))
+ {
+ REG_BG1CNT_BITFIELD.priority = 1;
+ REG_BG2CNT_BITFIELD.priority = 2;
+ }
+ }
+}
+
+static void ScriptCmd_invisible(void)
+{
+ u8 r0;
+ u8 spriteId;
+
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1);
+ spriteId = obj_id_for_side_relative_to_move(r0);
+ if (spriteId != 0xFF)
+ {
+ gSprites[spriteId].invisible = TRUE;
+ }
+ gBattleAnimScriptPtr += 2;
+}
+
+static void ScriptCmd_visible(void)
+{
+ u8 r0;
+ u8 spriteId;
+
+ r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1);
+ spriteId = obj_id_for_side_relative_to_move(r0);
+ if (spriteId != 0xFF)
+ {
+ gSprites[spriteId].invisible = FALSE;
+ }
+ gBattleAnimScriptPtr += 2;
+}
+
+static void ScriptCmd_doublebattle_2D(void)
+{
+ u8 r7;
+ u8 r4;
+ u8 spriteId;
+
+ r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1);
+ gBattleAnimScriptPtr += 2;
+ if (!sub_8076BE0() && IsDoubleBattle()
+ && battle_side_get_owner(gUnknown_0202F7C8) == battle_side_get_owner(gUnknown_0202F7C9))
+ {
+ if (r7 == 0)
+ {
+ r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C8);
+ spriteId = obj_id_for_side_relative_to_move(0);
+ }
+ else
+ {
+ r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C9);
+ spriteId = obj_id_for_side_relative_to_move(1);
+ }
+ if (spriteId != 0xFF)
+ {
+ gSprites[spriteId].invisible = FALSE;
+ if (r4 == 2)
+ gSprites[spriteId].oam.priority = 3;
+ if (r4 == 1)
+ sub_8076464(0);
+ else
+ sub_8076464(1);
+ }
+ }
+}
+
+static void ScriptCmd_doublebattle_2E(void)
+{
+ u8 r7;
+ u8 r4;
+ u8 spriteId;
+
+ r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1);
+ gBattleAnimScriptPtr += 2;
+ if (!sub_8076BE0() && IsDoubleBattle()
+ && battle_side_get_owner(gUnknown_0202F7C8) == battle_side_get_owner(gUnknown_0202F7C9))
+ {
+ if (r7 == 0)
+ {
+ r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C8);
+ spriteId = obj_id_for_side_relative_to_move(0);
+ }
+ else
+ {
+ r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C9);
+ spriteId = obj_id_for_side_relative_to_move(1);
+ }
+ if (spriteId != 0xFF && r4 == 2)
+ {
+ gSprites[spriteId].oam.priority = 2;
+ }
+ }
+}
+
+static void ScriptCmd_stopsound(void)
+{
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ gBattleAnimScriptPtr++;
+}
diff --git a/src/battle_anim_80A7E7C.c b/src/battle_anim_80A7E7C.c
index 2c7a10be5..474d268a0 100644
--- a/src/battle_anim_80A7E7C.c
+++ b/src/battle_anim_80A7E7C.c
@@ -1,7 +1,8 @@
#include "global.h"
-#include "task.h"
#include "sprite.h"
+#include "task.h"
#include "trig.h"
+#include "battle_anim.h"
#define TASK gTasks[task]
#define SPRITE gSprites[TASK.data[0]]
@@ -16,10 +17,9 @@ extern u8 gUnknown_0202F7C9;
extern u8 obj_id_for_side_relative_to_move(u8 side);
extern void move_anim_task_del(u8 task);
-extern bool8 b_side_obj__get_some_boolean(u8 side);
extern u8 battle_get_side_with_given_state(u8 state);
extern u8 battle_side_get_owner(u8 side);
-extern void oamt_set_x3A_32(struct Sprite *sprite, void (*callback)(struct Sprite*));
+extern void oamt_set_x3A_32(struct Sprite *sprite, void(*callback)(struct Sprite*));
extern void sub_8078458(struct Sprite *sprite);
extern void move_anim_8072740(struct Sprite *sprite);
extern void sub_8078A5C(struct Sprite *sprite);
@@ -27,7 +27,6 @@ extern void sub_80784A8(struct Sprite *sprite);
extern void sub_8078E70(u8 sprite, u8);
extern void obj_id_set_rotscale(u8 sprite, int, int, u16);
extern void sub_8078F40(u8 sprite);
-extern bool8 sub_8076BE0();
extern void sub_8078F9C(u8 sprite);
static void sub_80A7EF0(u8 task);
@@ -46,732 +45,910 @@ static void sub_80A8D8C(u8 task);
void sub_80A8FD8(u8 task);
static void sub_80A913C(u8 taskId);
-void sub_80A7E7C(u8 task) {
- u8 sprite;
- sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- if (sprite == 0xff) {
- move_anim_task_del(task);
- return;
- }
- gSprites[sprite].pos2.x = gBattleAnimArgs[1];
- gSprites[sprite].pos2.y = gBattleAnimArgs[2];
- TASK.data[0] = sprite;
- TASK.data[1] = gBattleAnimArgs[3];
- TASK.data[2] = gBattleAnimArgs[4];
- TASK.data[3] = gBattleAnimArgs[4];
- TASK.data[4] = gBattleAnimArgs[1];
- TASK.data[5] = gBattleAnimArgs[2];
- TASK.func = sub_80A7EF0;
- sub_80A7EF0(task);
-}
-
-static void sub_80A7EF0(u8 task) {
- if (TASK.data[3] == 0) {
- if (SPRITE.pos2.x == 0) {
- SPRITE.pos2.x = TASK.data[4];
- } else {
- SPRITE.pos2.x = 0;
- }
- if (SPRITE.pos2.y == 0) {
- SPRITE.pos2.y = TASK.data[5];
- } else {
- SPRITE.pos2.y = 0;
- }
- TASK.data[3] = TASK.data[2];
- if (--TASK.data[1] == 0) {
- SPRITE.pos2.x = 0;
- SPRITE.pos2.y = 0;
- move_anim_task_del(task);
- return;
- }
- } else {
- TASK.data[3]--;
- }
-}
-
-
-void sub_80A7FA0(u8 task) {
- u8 sprite;
- bool8 r6;
- u8 side;
- r6 = 0;
- if (gBattleAnimArgs[0] < 4) {
- sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- if (sprite == 0xff) {
- move_anim_task_del(task);
- return;
- }
- } else if (gBattleAnimArgs[0] != 8) {
- switch (gBattleAnimArgs[0]) {
- case 4:
- side = battle_get_side_with_given_state(0);
- break;
- case 5:
- side = battle_get_side_with_given_state(2);
- break;
- case 6:
- side = battle_get_side_with_given_state(1);
- break;
- case 7:
- default:
- side = battle_get_side_with_given_state(3);
- break;
- }
- if (b_side_obj__get_some_boolean(side) == FALSE) {
- r6 = 1;
- }
- sprite = gUnknown_02024BE0[side];
- } else {
- sprite = gUnknown_02024BE0[gUnknown_0202F7C8];
- }
- if (r6) {
- move_anim_task_del(task);
- return;
- }
- gSprites[sprite].pos2.x = gBattleAnimArgs[1];
- gSprites[sprite].pos2.y = gBattleAnimArgs[2];
- TASK.data[0] = sprite;
- TASK.data[1] = gBattleAnimArgs[3];
- TASK.data[2] = gBattleAnimArgs[4];
- TASK.data[3] = gBattleAnimArgs[4];
- TASK.data[4] = gBattleAnimArgs[1];
- TASK.data[5] = gBattleAnimArgs[2];
- TASK.func = sub_80A808C;
- sub_80A808C(task);
-}
-
-static void sub_80A808C(u8 task) {
- if (TASK.data[3] == 0) {
- if (SPRITE.pos2.x == TASK.data[4]) {
- SPRITE.pos2.x = -TASK.data[4];
- } else {
- SPRITE.pos2.x = TASK.data[4];
- }
- if (SPRITE.pos2.y == TASK.data[5]) {
- SPRITE.pos2.y = -TASK.data[5];
- } else {
- SPRITE.pos2.y = TASK.data[5];
- }
- TASK.data[3] = TASK.data[2];
- if (--TASK.data[1] == 0) {
- SPRITE.pos2.x = 0;
- SPRITE.pos2.y = 0;
- move_anim_task_del(task);
- return;
- }
- } else {
- TASK.data[3]--;
- }
-}
-
-void sub_80A8154(u8 task) {
- u8 sprite;
- sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- if (sprite == 0xff) {
- move_anim_task_del(task);
- return;
- }
- gSprites[sprite].pos2.x += gBattleAnimArgs[1];
- gSprites[sprite].pos2.y += gBattleAnimArgs[2];
- TASK.data[0] = sprite;
- TASK.data[1] = 0;
- TASK.data[2] = gBattleAnimArgs[3];
- TASK.data[3] = 0;
- TASK.data[4] = gBattleAnimArgs[4];
- TASK.data[5] = gBattleAnimArgs[1] * 2;
- TASK.data[6] = gBattleAnimArgs[2] * 2;
- TASK.func = sub_80A81D8;
- sub_80A81D8(task);
-}
-
-static void sub_80A81D8(u8 task) {
- if (TASK.data[3] == 0) {
- if (TASK.data[1] & 1) {
- SPRITE.pos2.x += TASK.data[5];
- SPRITE.pos2.y += TASK.data[6];
- } else {
- SPRITE.pos2.x -= TASK.data[5];
- SPRITE.pos2.y -= TASK.data[6];
- }
- TASK.data[3] = TASK.data[4];
- if (++TASK.data[1] >= TASK.data[2]) {
- if (TASK.data[1] & 1) {
- SPRITE.pos2.x += TASK.data[5] / 2;
- SPRITE.pos2.y += TASK.data[6] / 2;
- } else {
- SPRITE.pos2.x -= TASK.data[5] / 2;
- SPRITE.pos2.y -= TASK.data[6] / 2;
- }
- move_anim_task_del(task);
- return;
- }
- } else {
- TASK.data[3]--;
- }
-}
-
-void sub_80A8314(u8 task) {
- u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- gSprites[sprite].pos2.x = gBattleAnimArgs[1];
- TASK.data[0] = sprite;
- TASK.data[1] = gBattleAnimArgs[1];
- TASK.data[2] = gBattleAnimArgs[2];
- TASK.data[3] = gBattleAnimArgs[3];
- TASK.data[4] = gBattleAnimArgs[4];
- TASK.func = sub_80A8374;
- sub_80A8374(task);
-}
-
-static void sub_80A8374(u8 task) {
- s16 x;
- u8 sprite;
- sprite = TASK.data[0];
- x = TASK.data[1];
- if (TASK.data[2] == TASK.data[8]++) {
- TASK.data[8] = 0;
- if (gSprites[sprite].pos2.x == x) {
- x = -x;
- }
- gSprites[sprite].pos2.x += x;
- }
- TASK.data[1] = x;
- TASK.data[9] += TASK.data[3];
- gSprites[sprite].pos2.y = TASK.data[9] >> 8;
- if (--TASK.data[4] == 0) {
- move_anim_task_del(task);
- return;
- }
-}
-
-void sub_80A8408(u8 task) {
- u8 i;
- u8 sprite;
- u8 v1;
- v1 = 1;
- sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- if (gBattleAnimArgs[4] > 5) {
- gBattleAnimArgs[4] = 5;
- }
- for (i = 0; i < gBattleAnimArgs[4]; i++) {
- v1 <<= 1;
- }
- TASK.data[0] = sprite;
- TASK.data[1] = gBattleAnimArgs[1];
- TASK.data[2] = gBattleAnimArgs[2];
- TASK.data[3] = gBattleAnimArgs[3];
- TASK.data[4] = v1;
- TASK.func = sub_80A8488;
- sub_80A8488(task);
-}
-
-static void sub_80A8488(u8 task) {
- u8 sprite;
- sprite = TASK.data[0];
- gSprites[sprite].pos2.x = Sin(TASK.data[5], TASK.data[1]);
- gSprites[sprite].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
- gSprites[sprite].pos2.y += TASK.data[2];
- TASK.data[5] += TASK.data[4];
- TASK.data[5] &= 0xff;
- if (TASK.data[5] == 0) {
- TASK.data[3]--;
- }
- if (TASK.data[3] == 0) {
- gSprites[sprite].pos2.x = 0;
- gSprites[sprite].pos2.y = 0;
- move_anim_task_del(task);
- return;
- }
-}
-
-void sub_80A8500(u8 task) {
- if (battle_side_get_owner(gUnknown_0202F7C8)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
- sub_80A8408(task);
-}
-
-void sub_80A8530(struct Sprite *sprite) {
- sprite->invisible = TRUE;
- if (battle_side_get_owner(gUnknown_0202F7C8)) {
- sprite->data1 = -gBattleAnimArgs[1];
- } else {
- sprite->data1 = gBattleAnimArgs[1];
- }
- sprite->data0 = gBattleAnimArgs[0];
- sprite->data2 = 0;
- sprite->data3 = gUnknown_02024BE0[gUnknown_0202F7C8];
- sprite->data4 = gBattleAnimArgs[0];
- oamt_set_x3A_32(sprite, sub_80A85A4);
- sprite->callback = sub_8078458;
-}
-
-static void sub_80A85A4(struct Sprite *sprite) {
- sprite->data0 = sprite->data4;
- sprite->data1 = -sprite->data1;
- sprite->callback = sub_8078458;
- oamt_set_x3A_32(sprite, move_anim_8072740);
-}
-
-void sub_80A85C8(struct Sprite *sprite) {
- u8 spriteId;
- sprite->invisible = TRUE;
- spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
- sprite->data0 = gBattleAnimArgs[0];
- sprite->data1 = 0;
- sprite->data2 = gBattleAnimArgs[1];
- sprite->data3 = spriteId;
- sprite->data4 = gBattleAnimArgs[0];
- oamt_set_x3A_32(sprite, sub_80A8614);
- sprite->callback = sub_8078458;
-}
-
-void sub_80A8614(struct Sprite *sprite) {
- sprite->data0 = sprite->data4;
- sprite->data2 = -sprite->data2;
- sprite->callback = sub_8078458;
- oamt_set_x3A_32(sprite, move_anim_8072740);
-}
-
-void sub_80A8638(struct Sprite *sprite) {
- int something;
- int spriteId;
- if (!gBattleAnimArgs[0]) {
- spriteId = gUnknown_02024BE0[gUnknown_0202F7C8];
- } else {
- spriteId = gUnknown_02024BE0[gUnknown_0202F7C9];
- }
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- sprite->data2 = gSprites[spriteId].pos1.x;
- sprite->data3 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
- sprite->data4 = gSprites[spriteId].pos1.y;
- something = 0;
- sub_8078A5C(sprite);
- sprite->data3 = something;
- sprite->data4 = something;
- sprite->data5 = gSprites[spriteId].pos2.x;
- sprite->data6 = gSprites[spriteId].pos2.y;
- sprite->invisible = TRUE;
- if (gBattleAnimArgs[1] == 1) {
- sprite->data2 = something;
- } else if (gBattleAnimArgs[1] == 2) {
- sprite->data1 = something;
- }
- sprite->data7 = gBattleAnimArgs[1];
- sprite->data7 |= spriteId << 8;
- sprite->callback = sub_80A86F4;
-}
-
-static void sub_80A86F4(struct Sprite *sprite) {
- s8 spriteId;
- u8 lo;
- struct Sprite *sprite2;
- lo = sprite->data7 & 0xff;
- spriteId = sprite->data7 >> 8;
- sprite2 = &gSprites[spriteId];
- if (sprite->data0 == 0) {
- if (lo < 2) {
- sprite2->pos2.x = 0;
- }
- if (lo == 2 || lo == 0) {
- sprite2->pos2.y = 0;
- }
- move_anim_8072740(sprite);
- } else {
- sprite->data0--;
- sprite->data3 += sprite->data1;
- sprite->data4 += sprite->data2;
- sprite2->pos2.x = (s8)(sprite->data3 >> 8) + sprite->data5;
- sprite2->pos2.y = (s8)(sprite->data4 >> 8) + sprite->data6;
- }
-}
-
-void sub_80A8764(struct Sprite *sprite) {
- u8 v1;
- u8 spriteId;
- if (!gBattleAnimArgs[0]) {
- v1 = gUnknown_0202F7C8;
- } else {
- v1 = gUnknown_0202F7C9;
- }
- spriteId = gUnknown_02024BE0[v1];
- if (battle_side_get_owner(v1)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- if (gBattleAnimArgs[3] == 1) {
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- }
- }
- sprite->data0 = gBattleAnimArgs[4];
- sprite->data1 = gSprites[spriteId].pos1.x;
- sprite->data2 = gSprites[spriteId].pos1.x + gBattleAnimArgs[1];
- sprite->data3 = gSprites[spriteId].pos1.y;
- sprite->data4 = gSprites[spriteId].pos1.y + gBattleAnimArgs[2];
- sub_8078A5C(sprite);
- sprite->data3 = 0;
- sprite->data4 = 0;
- sprite->data5 = spriteId;
- sprite->invisible = TRUE;
- oamt_set_x3A_32(sprite, move_anim_8072740);
- sprite->callback = sub_80784A8;
-}
-
-void sub_80A8818(struct Sprite *sprite) {
- u8 spriteId;
- u8 v1;
- sprite->invisible = TRUE;
- if (!gBattleAnimArgs[0]) {
- v1 = gUnknown_0202F7C8;
- } else {
- v1 = gUnknown_0202F7C9;
- }
- spriteId = gUnknown_02024BE0[v1];
- if (battle_side_get_owner(v1)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- if (gBattleAnimArgs[3] == 1) {
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- }
- }
- sprite->data0 = gBattleAnimArgs[4];
- sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- sprite->data2 = sprite->data1 + gBattleAnimArgs[1];
- sprite->data3 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
- sprite->data4 = sprite->data3 + gBattleAnimArgs[2];
- sub_8078A5C(sprite);
- sprite->data3 = gSprites[spriteId].pos2.x << 8;
- sprite->data4 = gSprites[spriteId].pos2.y << 8;
- sprite->data5 = spriteId;
- sprite->data6 = gBattleAnimArgs[5];
- if (!gBattleAnimArgs[5]) {
- oamt_set_x3A_32(sprite, move_anim_8072740);
- } else {
- oamt_set_x3A_32(sprite, sub_80A88F0);
- }
- sprite->callback = sub_80784A8;
-}
-
-
-static void sub_80A88F0(struct Sprite *sprite) {
- gSprites[sprite->data5].pos2.x = 0;
- gSprites[sprite->data5].pos2.y = 0;
- move_anim_8072740(sprite);
-}
-
-void sub_80A8920(u8 task) {
- s16 r7;
- r7 = 0x8000 / gBattleAnimArgs[3];
- if (battle_side_get_owner(gUnknown_0202F7C8)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- gBattleAnimArgs[5] = -gBattleAnimArgs[5];
- }
- TASK.data[0] = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- TASK.data[1] = (gBattleAnimArgs[1] << 8) / gBattleAnimArgs[3];
- TASK.data[2] = gBattleAnimArgs[2];
- TASK.data[3] = gBattleAnimArgs[3];
- TASK.data[4] = gBattleAnimArgs[4];
- TASK.data[5] = (gBattleAnimArgs[5] << 8) / gBattleAnimArgs[6];
- TASK.data[6] = gBattleAnimArgs[6];
- TASK.data[7] = r7;
- TASK.func = sub_80A89B4;
-}
-
-static void sub_80A89B4(u8 task) {
- u8 spriteId;
- spriteId = TASK.data[0];
- TASK.data[11] += TASK.data[1];
- gSprites[spriteId].pos2.x = TASK.data[11] >> 8;
- gSprites[spriteId].pos2.y = Sin((u8)(TASK.data[10] >> 8), TASK.data[2]);
- TASK.data[10] += TASK.data[7];
- if (--TASK.data[3] == 0) {
- TASK.func = sub_80A8A18;
- }
-}
-
-static void sub_80A8A18(u8 task) {
- u8 spriteId;
- if (TASK.data[4] > 0) {
- TASK.data[4]--;
- } else {
- spriteId = TASK.data[0];
- TASK.data[12] += TASK.data[5];
- gSprites[spriteId].pos2.x = (TASK.data[12] >> 8) + (TASK.data[11] >> 8);
- if (--TASK.data[6] == 0) {
- move_anim_task_del(task);
- return;
- }
- }
+void sub_80A7E7C(u8 task)
+{
+ u8 sprite;
+ sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ if (sprite == 0xff)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ gSprites[sprite].pos2.x = gBattleAnimArgs[1];
+ gSprites[sprite].pos2.y = gBattleAnimArgs[2];
+ TASK.data[0] = sprite;
+ TASK.data[1] = gBattleAnimArgs[3];
+ TASK.data[2] = gBattleAnimArgs[4];
+ TASK.data[3] = gBattleAnimArgs[4];
+ TASK.data[4] = gBattleAnimArgs[1];
+ TASK.data[5] = gBattleAnimArgs[2];
+ TASK.func = sub_80A7EF0;
+ sub_80A7EF0(task);
+}
+
+static void sub_80A7EF0(u8 task)
+{
+ if (TASK.data[3] == 0)
+ {
+ if (SPRITE.pos2.x == 0)
+ {
+ SPRITE.pos2.x = TASK.data[4];
+ }
+ else
+ {
+ SPRITE.pos2.x = 0;
+ }
+ if (SPRITE.pos2.y == 0)
+ {
+ SPRITE.pos2.y = TASK.data[5];
+ }
+ else
+ {
+ SPRITE.pos2.y = 0;
+ }
+ TASK.data[3] = TASK.data[2];
+ if (--TASK.data[1] == 0)
+ {
+ SPRITE.pos2.x = 0;
+ SPRITE.pos2.y = 0;
+ move_anim_task_del(task);
+ return;
+ }
+ }
+ else
+ {
+ TASK.data[3]--;
+ }
+}
+
+
+void sub_80A7FA0(u8 task)
+{
+ u8 sprite;
+ bool8 r6;
+ u8 side;
+ r6 = 0;
+ if (gBattleAnimArgs[0] < 4)
+ {
+ sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ if (sprite == 0xff)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ }
+ else if (gBattleAnimArgs[0] != 8)
+ {
+ switch (gBattleAnimArgs[0])
+ {
+ case 4:
+ side = battle_get_side_with_given_state(0);
+ break;
+ case 5:
+ side = battle_get_side_with_given_state(2);
+ break;
+ case 6:
+ side = battle_get_side_with_given_state(1);
+ break;
+ case 7:
+ default:
+ side = battle_get_side_with_given_state(3);
+ break;
+ }
+ if (b_side_obj__get_some_boolean(side) == FALSE)
+ {
+ r6 = 1;
+ }
+ sprite = gUnknown_02024BE0[side];
+ }
+ else
+ {
+ sprite = gUnknown_02024BE0[gUnknown_0202F7C8];
+ }
+ if (r6)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ gSprites[sprite].pos2.x = gBattleAnimArgs[1];
+ gSprites[sprite].pos2.y = gBattleAnimArgs[2];
+ TASK.data[0] = sprite;
+ TASK.data[1] = gBattleAnimArgs[3];
+ TASK.data[2] = gBattleAnimArgs[4];
+ TASK.data[3] = gBattleAnimArgs[4];
+ TASK.data[4] = gBattleAnimArgs[1];
+ TASK.data[5] = gBattleAnimArgs[2];
+ TASK.func = sub_80A808C;
+ sub_80A808C(task);
+}
+
+static void sub_80A808C(u8 task)
+{
+ if (TASK.data[3] == 0)
+ {
+ if (SPRITE.pos2.x == TASK.data[4])
+ {
+ SPRITE.pos2.x = -TASK.data[4];
+ }
+ else
+ {
+ SPRITE.pos2.x = TASK.data[4];
+ }
+ if (SPRITE.pos2.y == TASK.data[5])
+ {
+ SPRITE.pos2.y = -TASK.data[5];
+ }
+ else
+ {
+ SPRITE.pos2.y = TASK.data[5];
+ }
+ TASK.data[3] = TASK.data[2];
+ if (--TASK.data[1] == 0)
+ {
+ SPRITE.pos2.x = 0;
+ SPRITE.pos2.y = 0;
+ move_anim_task_del(task);
+ return;
+ }
+ }
+ else
+ {
+ TASK.data[3]--;
+ }
+}
+
+void sub_80A8154(u8 task)
+{
+ u8 sprite;
+ sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ if (sprite == 0xff)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ gSprites[sprite].pos2.x += gBattleAnimArgs[1];
+ gSprites[sprite].pos2.y += gBattleAnimArgs[2];
+ TASK.data[0] = sprite;
+ TASK.data[1] = 0;
+ TASK.data[2] = gBattleAnimArgs[3];
+ TASK.data[3] = 0;
+ TASK.data[4] = gBattleAnimArgs[4];
+ TASK.data[5] = gBattleAnimArgs[1] * 2;
+ TASK.data[6] = gBattleAnimArgs[2] * 2;
+ TASK.func = sub_80A81D8;
+ sub_80A81D8(task);
+}
+
+static void sub_80A81D8(u8 task)
+{
+ if (TASK.data[3] == 0)
+ {
+ if (TASK.data[1] & 1)
+ {
+ SPRITE.pos2.x += TASK.data[5];
+ SPRITE.pos2.y += TASK.data[6];
+ }
+ else
+ {
+ SPRITE.pos2.x -= TASK.data[5];
+ SPRITE.pos2.y -= TASK.data[6];
+ }
+ TASK.data[3] = TASK.data[4];
+ if (++TASK.data[1] >= TASK.data[2])
+ {
+ if (TASK.data[1] & 1)
+ {
+ SPRITE.pos2.x += TASK.data[5] / 2;
+ SPRITE.pos2.y += TASK.data[6] / 2;
+ }
+ else
+ {
+ SPRITE.pos2.x -= TASK.data[5] / 2;
+ SPRITE.pos2.y -= TASK.data[6] / 2;
+ }
+ move_anim_task_del(task);
+ return;
+ }
+ }
+ else
+ {
+ TASK.data[3]--;
+ }
+}
+
+void sub_80A8314(u8 task)
+{
+ u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ gSprites[sprite].pos2.x = gBattleAnimArgs[1];
+ TASK.data[0] = sprite;
+ TASK.data[1] = gBattleAnimArgs[1];
+ TASK.data[2] = gBattleAnimArgs[2];
+ TASK.data[3] = gBattleAnimArgs[3];
+ TASK.data[4] = gBattleAnimArgs[4];
+ TASK.func = sub_80A8374;
+ sub_80A8374(task);
+}
+
+static void sub_80A8374(u8 task)
+{
+ s16 x;
+ u8 sprite;
+ sprite = TASK.data[0];
+ x = TASK.data[1];
+ if (TASK.data[2] == TASK.data[8]++)
+ {
+ TASK.data[8] = 0;
+ if (gSprites[sprite].pos2.x == x)
+ {
+ x = -x;
+ }
+ gSprites[sprite].pos2.x += x;
+ }
+ TASK.data[1] = x;
+ TASK.data[9] += TASK.data[3];
+ gSprites[sprite].pos2.y = TASK.data[9] >> 8;
+ if (--TASK.data[4] == 0)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+}
+
+void sub_80A8408(u8 task)
+{
+ u8 i;
+ u8 sprite;
+ u8 v1;
+ v1 = 1;
+ sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ if (gBattleAnimArgs[4] > 5)
+ {
+ gBattleAnimArgs[4] = 5;
+ }
+ for (i = 0; i < gBattleAnimArgs[4]; i++)
+ {
+ v1 <<= 1;
+ }
+ TASK.data[0] = sprite;
+ TASK.data[1] = gBattleAnimArgs[1];
+ TASK.data[2] = gBattleAnimArgs[2];
+ TASK.data[3] = gBattleAnimArgs[3];
+ TASK.data[4] = v1;
+ TASK.func = sub_80A8488;
+ sub_80A8488(task);
+}
+
+static void sub_80A8488(u8 task)
+{
+ u8 sprite;
+ sprite = TASK.data[0];
+ gSprites[sprite].pos2.x = Sin(TASK.data[5], TASK.data[1]);
+ gSprites[sprite].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
+ gSprites[sprite].pos2.y += TASK.data[2];
+ TASK.data[5] += TASK.data[4];
+ TASK.data[5] &= 0xff;
+ if (TASK.data[5] == 0)
+ {
+ TASK.data[3]--;
+ }
+ if (TASK.data[3] == 0)
+ {
+ gSprites[sprite].pos2.x = 0;
+ gSprites[sprite].pos2.y = 0;
+ move_anim_task_del(task);
+ return;
+ }
+}
+
+void sub_80A8500(u8 task)
+{
+ if (battle_side_get_owner(gUnknown_0202F7C8))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ sub_80A8408(task);
+}
+
+void sub_80A8530(struct Sprite *sprite)
+{
+ sprite->invisible = TRUE;
+ if (battle_side_get_owner(gUnknown_0202F7C8))
+ {
+ sprite->data1 = -gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->data1 = gBattleAnimArgs[1];
+ }
+ sprite->data0 = gBattleAnimArgs[0];
+ sprite->data2 = 0;
+ sprite->data3 = gUnknown_02024BE0[gUnknown_0202F7C8];
+ sprite->data4 = gBattleAnimArgs[0];
+ oamt_set_x3A_32(sprite, sub_80A85A4);
+ sprite->callback = sub_8078458;
+}
+
+static void sub_80A85A4(struct Sprite *sprite)
+{
+ sprite->data0 = sprite->data4;
+ sprite->data1 = -sprite->data1;
+ sprite->callback = sub_8078458;
+ oamt_set_x3A_32(sprite, move_anim_8072740);
+}
+
+void sub_80A85C8(struct Sprite *sprite)
+{
+ u8 spriteId;
+ sprite->invisible = TRUE;
+ spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
+ sprite->data0 = gBattleAnimArgs[0];
+ sprite->data1 = 0;
+ sprite->data2 = gBattleAnimArgs[1];
+ sprite->data3 = spriteId;
+ sprite->data4 = gBattleAnimArgs[0];
+ oamt_set_x3A_32(sprite, sub_80A8614);
+ sprite->callback = sub_8078458;
+}
+
+void sub_80A8614(struct Sprite *sprite)
+{
+ sprite->data0 = sprite->data4;
+ sprite->data2 = -sprite->data2;
+ sprite->callback = sub_8078458;
+ oamt_set_x3A_32(sprite, move_anim_8072740);
+}
+
+void sub_80A8638(struct Sprite *sprite)
+{
+ int something;
+ int spriteId;
+ if (!gBattleAnimArgs[0])
+ {
+ spriteId = gUnknown_02024BE0[gUnknown_0202F7C8];
+ }
+ else
+ {
+ spriteId = gUnknown_02024BE0[gUnknown_0202F7C9];
+ }
+ sprite->data0 = gBattleAnimArgs[2];
+ sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ sprite->data2 = gSprites[spriteId].pos1.x;
+ sprite->data3 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
+ sprite->data4 = gSprites[spriteId].pos1.y;
+ something = 0;
+ sub_8078A5C(sprite);
+ sprite->data3 = something;
+ sprite->data4 = something;
+ sprite->data5 = gSprites[spriteId].pos2.x;
+ sprite->data6 = gSprites[spriteId].pos2.y;
+ sprite->invisible = TRUE;
+ if (gBattleAnimArgs[1] == 1)
+ {
+ sprite->data2 = something;
+ }
+ else if (gBattleAnimArgs[1] == 2)
+ {
+ sprite->data1 = something;
+ }
+ sprite->data7 = gBattleAnimArgs[1];
+ sprite->data7 |= spriteId << 8;
+ sprite->callback = sub_80A86F4;
+}
+
+static void sub_80A86F4(struct Sprite *sprite)
+{
+ s8 spriteId;
+ u8 lo;
+ struct Sprite *sprite2;
+ lo = sprite->data7 & 0xff;
+ spriteId = sprite->data7 >> 8;
+ sprite2 = &gSprites[spriteId];
+ if (sprite->data0 == 0)
+ {
+ if (lo < 2)
+ {
+ sprite2->pos2.x = 0;
+ }
+ if (lo == 2 || lo == 0)
+ {
+ sprite2->pos2.y = 0;
+ }
+ move_anim_8072740(sprite);
+ }
+ else
+ {
+ sprite->data0--;
+ sprite->data3 += sprite->data1;
+ sprite->data4 += sprite->data2;
+ sprite2->pos2.x = (s8)(sprite->data3 >> 8) + sprite->data5;
+ sprite2->pos2.y = (s8)(sprite->data4 >> 8) + sprite->data6;
+ }
+}
+
+void sub_80A8764(struct Sprite *sprite)
+{
+ u8 v1;
+ u8 spriteId;
+ if (!gBattleAnimArgs[0])
+ {
+ v1 = gUnknown_0202F7C8;
+ }
+ else
+ {
+ v1 = gUnknown_0202F7C9;
+ }
+ spriteId = gUnknown_02024BE0[v1];
+ if (battle_side_get_owner(v1))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ if (gBattleAnimArgs[3] == 1)
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ }
+ sprite->data0 = gBattleAnimArgs[4];
+ sprite->data1 = gSprites[spriteId].pos1.x;
+ sprite->data2 = gSprites[spriteId].pos1.x + gBattleAnimArgs[1];
+ sprite->data3 = gSprites[spriteId].pos1.y;
+ sprite->data4 = gSprites[spriteId].pos1.y + gBattleAnimArgs[2];
+ sub_8078A5C(sprite);
+ sprite->data3 = 0;
+ sprite->data4 = 0;
+ sprite->data5 = spriteId;
+ sprite->invisible = TRUE;
+ oamt_set_x3A_32(sprite, move_anim_8072740);
+ sprite->callback = sub_80784A8;
+}
+
+void sub_80A8818(struct Sprite *sprite)
+{
+ u8 spriteId;
+ u8 v1;
+ sprite->invisible = TRUE;
+ if (!gBattleAnimArgs[0])
+ {
+ v1 = gUnknown_0202F7C8;
+ }
+ else
+ {
+ v1 = gUnknown_0202F7C9;
+ }
+ spriteId = gUnknown_02024BE0[v1];
+ if (battle_side_get_owner(v1))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ if (gBattleAnimArgs[3] == 1)
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ }
+ sprite->data0 = gBattleAnimArgs[4];
+ sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ sprite->data2 = sprite->data1 + gBattleAnimArgs[1];
+ sprite->data3 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
+ sprite->data4 = sprite->data3 + gBattleAnimArgs[2];
+ sub_8078A5C(sprite);
+ sprite->data3 = gSprites[spriteId].pos2.x << 8;
+ sprite->data4 = gSprites[spriteId].pos2.y << 8;
+ sprite->data5 = spriteId;
+ sprite->data6 = gBattleAnimArgs[5];
+ if (!gBattleAnimArgs[5])
+ {
+ oamt_set_x3A_32(sprite, move_anim_8072740);
+ }
+ else
+ {
+ oamt_set_x3A_32(sprite, sub_80A88F0);
+ }
+ sprite->callback = sub_80784A8;
+}
+
+
+static void sub_80A88F0(struct Sprite *sprite)
+{
+ gSprites[sprite->data5].pos2.x = 0;
+ gSprites[sprite->data5].pos2.y = 0;
+ move_anim_8072740(sprite);
+}
+
+void sub_80A8920(u8 task)
+{
+ s16 r7;
+ r7 = 0x8000 / gBattleAnimArgs[3];
+ if (battle_side_get_owner(gUnknown_0202F7C8))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[5] = -gBattleAnimArgs[5];
+ }
+ TASK.data[0] = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ TASK.data[1] = (gBattleAnimArgs[1] << 8) / gBattleAnimArgs[3];
+ TASK.data[2] = gBattleAnimArgs[2];
+ TASK.data[3] = gBattleAnimArgs[3];
+ TASK.data[4] = gBattleAnimArgs[4];
+ TASK.data[5] = (gBattleAnimArgs[5] << 8) / gBattleAnimArgs[6];
+ TASK.data[6] = gBattleAnimArgs[6];
+ TASK.data[7] = r7;
+ TASK.func = sub_80A89B4;
+}
+
+static void sub_80A89B4(u8 task)
+{
+ u8 spriteId;
+ spriteId = TASK.data[0];
+ TASK.data[11] += TASK.data[1];
+ gSprites[spriteId].pos2.x = TASK.data[11] >> 8;
+ gSprites[spriteId].pos2.y = Sin((u8)(TASK.data[10] >> 8), TASK.data[2]);
+ TASK.data[10] += TASK.data[7];
+ if (--TASK.data[3] == 0)
+ {
+ TASK.func = sub_80A8A18;
+ }
+}
+
+static void sub_80A8A18(u8 task)
+{
+ u8 spriteId;
+ if (TASK.data[4] > 0)
+ {
+ TASK.data[4]--;
+ }
+ else
+ {
+ spriteId = TASK.data[0];
+ TASK.data[12] += TASK.data[5];
+ gSprites[spriteId].pos2.x = (TASK.data[12] >> 8) + (TASK.data[11] >> 8);
+ if (--TASK.data[6] == 0)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ }
}
static void sub_80A8B3C(u8 task);
-void sub_80A8A80(u8 task) {
- u8 spriteId;
- switch (gBattleAnimArgs[0]) {
- case 0:
- case 1:
- spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
- break;
- case 2:
- if (!b_side_obj__get_some_boolean(gUnknown_0202F7C8 ^ 2)) {
- move_anim_task_del(task);
- return;
- }
- spriteId = gUnknown_02024BE0[gUnknown_0202F7C8 ^ 2];
- break;
- case 3:
- if (!b_side_obj__get_some_boolean(gUnknown_0202F7C9 ^ 2)) {
- move_anim_task_del(task);
- return;
- }
- spriteId = gUnknown_02024BE0[gUnknown_0202F7C9 ^ 2];
- break;
- default:
- move_anim_task_del(task);
- return;
- }
- TASK.data[0] = spriteId;
- if (battle_side_get_owner(gUnknown_0202F7C9)) {
- TASK.data[1] = gBattleAnimArgs[1];
- } else {
- TASK.data[1] = -gBattleAnimArgs[1];
- }
- TASK.func = sub_80A8B3C;
-}
-
-static void sub_80A8B3C(u8 task) {
- u8 spriteId = TASK.data[0];
- gSprites[spriteId].pos2.x += TASK.data[1];
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u) {
- move_anim_task_del(task);
- return;
- }
-}
-
-void sub_80A8B88(u8 task) {
- u8 spriteId;
- if (battle_side_get_owner(gUnknown_0202F7C8)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
- spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[4]);
- TASK.data[0] = gBattleAnimArgs[0];
- TASK.data[1] = gBattleAnimArgs[1];
- TASK.data[2] = gBattleAnimArgs[2];
- TASK.data[3] = gBattleAnimArgs[3];
- TASK.data[4] = spriteId;
- if (gBattleAnimArgs[4] == 0) {
- TASK.data[5] = gUnknown_0202F7C8;
- } else {
- TASK.data[5] = gUnknown_0202F7C9;
- }
- TASK.data[12] = 1;
- TASK.func = sub_80A8C0C;
-}
-
-static void sub_80A8C0C(u8 task) {
- s16 y;
- u8 spriteId;
- int index;
- u16 val;
- spriteId = TASK.data[4];
- val = TASK.data[10] + TASK.data[2];
- TASK.data[10] = val;
- index = val >> 8;
- y = Sin(index, TASK.data[1]);
- if (TASK.data[0] == 0) {
- gSprites[spriteId].pos2.x = y;
- } else {
- if (battle_side_get_owner(TASK.data[5]) == 0) {
- gSprites[spriteId].pos2.y = (y >= 0) ? y : -y;
- } else {
- gSprites[spriteId].pos2.y = (y >= 0) ? -y : y;
- }
- }
- if (((index >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1))
- || ((index < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0))) {
- TASK.data[11] ^= 1;
- TASK.data[12] ^= 1;
- if (--TASK.data[3] == 0) {
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
- move_anim_task_del(task);
- return;
- }
- }
-}
-
-void sub_80A8D34(u8 task) {
- u8 spriteId;
- spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[3]);
- sub_8078E70(spriteId, gBattleAnimArgs[4]);
- TASK.data[0] = gBattleAnimArgs[0];
- TASK.data[1] = gBattleAnimArgs[1];
- TASK.data[2] = gBattleAnimArgs[2];
- TASK.data[3] = gBattleAnimArgs[2];
- TASK.data[4] = spriteId;
- TASK.data[10] = 0x100;
- TASK.data[11] = 0x100;
- TASK.func = sub_80A8D8C;
-}
-
-static void sub_80A8D8C(u8 task) {
- u8 spriteId;
- TASK.data[10] += TASK.data[0];
- TASK.data[11] += TASK.data[1];
- spriteId = TASK.data[4];
- obj_id_set_rotscale(spriteId, TASK.data[10], TASK.data[11], 0);
- if (--TASK.data[2] == 0) {
- if (TASK.data[3] > 0) {
- TASK.data[0] = -TASK.data[0];
- TASK.data[1] = -TASK.data[1];
- TASK.data[2] = TASK.data[3];
- TASK.data[3] = 0;
- } else {
- sub_8078F40(spriteId);
- move_anim_task_del(task);
- return;
- }
- }
-}
-
-void sub_80A8E04(u8 task) {
- u8 spriteId;
- spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
- sub_8078E70(spriteId, 0);
- TASK.data[1] = 0;
- TASK.data[2] = gBattleAnimArgs[0];
- if (gBattleAnimArgs[3] != 1) {
- TASK.data[3] = 0;
- } else {
- TASK.data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
- }
- TASK.data[4] = gBattleAnimArgs[1];
- TASK.data[5] = spriteId;
- TASK.data[6] = gBattleAnimArgs[3];
- if (sub_8076BE0()) {
- TASK.data[7] = 1;
- } else {
- if (gBattleAnimArgs[2] == 0) {
- TASK.data[7] = !battle_side_get_owner(gUnknown_0202F7C8);
- } else {
- TASK.data[7] = !battle_side_get_owner(gUnknown_0202F7C9);
- }
- }
- if (TASK.data[7]) {
- if (!sub_8076BE0()) {
- TASK.data[3] *= -1;
- TASK.data[4] *= -1;
- }
- }
- TASK.func = sub_80A8FD8;
-}
-
-void sub_80A8EFC(u8 task) {
- u8 spriteId;
- spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
- sub_8078E70(spriteId, 0);
- TASK.data[1] = 0;
- TASK.data[2] = gBattleAnimArgs[0];
- if (gBattleAnimArgs[2] == 0) {
- if (battle_side_get_owner(gUnknown_0202F7C8)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
- } else {
- if (battle_side_get_owner(gUnknown_0202F7C9)) {
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
- }
- if (gBattleAnimArgs[3] != 1) {
- TASK.data[3] = 0;
- } else {
- TASK.data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
- }
- TASK.data[4] = gBattleAnimArgs[1];
- TASK.data[5] = spriteId;
- TASK.data[6] = gBattleAnimArgs[3];
- TASK.data[7] = 1;
- TASK.data[3] *= -1;
- TASK.data[4] *= -1;
- TASK.func = sub_80A8FD8;
-}
-
-void sub_80A8FD8(u8 task) {
- TASK.data[3] += TASK.data[4];
- obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]);
- if (TASK.data[7]) {
- sub_8078F9C(TASK.data[5]);
- }
- if (++TASK.data[1] >= TASK.data[2]) {
- switch (TASK.data[6]) {
- case 1:
- sub_8078F40(TASK.data[5]);
- case 0:
- default:
- move_anim_task_del(task);
- return;
- case 2:
- TASK.data[1] = 0;
- TASK.data[4] *= -1;
- TASK.data[6] = 1;
- break;
- }
- }
-}
-
-void sub_80A9058(u8 task) {
- if (!gBattleAnimArgs[0]) {
- TASK.data[15] = gUnknown_0202F7BC / 12;
- if (TASK.data[15] < 1) {
- TASK.data[15] = 1;
- }
- if (TASK.data[15] > 16) {
- TASK.data[15] = 16;
- }
- } else {
- TASK.data[15] = gUnknown_0202F7B8 / 12;
- if (TASK.data[15] < 1) {
- TASK.data[15] = 1;
- }
- if (TASK.data[15] > 16) {
- TASK.data[15] = 16;
- }
- }
- TASK.data[14] = TASK.data[15] / 2;
- TASK.data[13] = TASK.data[14] + (TASK.data[15] & 1);
- TASK.data[12] = 0;
- TASK.data[10] = gBattleAnimArgs[3];
- TASK.data[11] = gBattleAnimArgs[4];
- TASK.data[7] = obj_id_for_side_relative_to_move(1);
- TASK.data[8] = gSprites[TASK.data[7]].pos2.x;
- TASK.data[9] = gSprites[TASK.data[7]].pos2.y;
- TASK.data[0] = 0;
- TASK.data[1] = gBattleAnimArgs[1];
- TASK.data[2] = gBattleAnimArgs[2];
- TASK.func = sub_80A913C;
-}
-
-static void sub_80A913C(u8 taskId) {
- struct Task *task = &gTasks[taskId];
- if (++task->data[0] > task->data[1]) {
- task->data[0] = 0;
- task->data[12] = (task->data[12] + 1) & 1;
- if (task->data[10]) {
- if (task->data[12]) {
- gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
- } else {
- gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
- }
- }
- if (task->data[11]) {
- if (task->data[12]) {
- gSprites[task->data[7]].pos2.y = task->data[15];
- } else {
- gSprites[task->data[7]].pos2.y = 0;
- }
- }
- if (!--task->data[2]) {
- gSprites[task->data[7]].pos2.x = 0;
- gSprites[task->data[7]].pos2.y = 0;
- move_anim_task_del(taskId);
- return;
- }
- }
+void sub_80A8A80(u8 task)
+{
+ u8 spriteId;
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ case 1:
+ spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
+ break;
+ case 2:
+ if (!b_side_obj__get_some_boolean(gUnknown_0202F7C8 ^ 2))
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ spriteId = gUnknown_02024BE0[gUnknown_0202F7C8 ^ 2];
+ break;
+ case 3:
+ if (!b_side_obj__get_some_boolean(gUnknown_0202F7C9 ^ 2))
+ {
+ move_anim_task_del(task);
+ return;
+ }
+ spriteId = gUnknown_02024BE0[gUnknown_0202F7C9 ^ 2];
+ break;
+ default:
+ move_anim_task_del(task);
+ return;
+ }
+ TASK.data[0] = spriteId;
+ if (battle_side_get_owner(gUnknown_0202F7C9))
+ {
+ TASK.data[1] = gBattleAnimArgs[1];
+ }
+ else
+ {
+ TASK.data[1] = -gBattleAnimArgs[1];
+ }
+ TASK.func = sub_80A8B3C;
+}
+
+static void sub_80A8B3C(u8 task)
+{
+ u8 spriteId = TASK.data[0];
+ gSprites[spriteId].pos2.x += TASK.data[1];
+ if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u)
+ {
+ move_anim_task_del(task);
+ return;
+ }
+}
+
+void sub_80A8B88(u8 task)
+{
+ u8 spriteId;
+ if (battle_side_get_owner(gUnknown_0202F7C8))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[4]);
+ TASK.data[0] = gBattleAnimArgs[0];
+ TASK.data[1] = gBattleAnimArgs[1];
+ TASK.data[2] = gBattleAnimArgs[2];
+ TASK.data[3] = gBattleAnimArgs[3];
+ TASK.data[4] = spriteId;
+ if (gBattleAnimArgs[4] == 0)
+ {
+ TASK.data[5] = gUnknown_0202F7C8;
+ }
+ else
+ {
+ TASK.data[5] = gUnknown_0202F7C9;
+ }
+ TASK.data[12] = 1;
+ TASK.func = sub_80A8C0C;
+}
+
+static void sub_80A8C0C(u8 task)
+{
+ s16 y;
+ u8 spriteId;
+ int index;
+ u16 val;
+ spriteId = TASK.data[4];
+ val = TASK.data[10] + TASK.data[2];
+ TASK.data[10] = val;
+ index = val >> 8;
+ y = Sin(index, TASK.data[1]);
+ if (TASK.data[0] == 0)
+ {
+ gSprites[spriteId].pos2.x = y;
+ }
+ else
+ {
+ if (battle_side_get_owner(TASK.data[5]) == 0)
+ {
+ gSprites[spriteId].pos2.y = (y >= 0) ? y : -y;
+ }
+ else
+ {
+ gSprites[spriteId].pos2.y = (y >= 0) ? -y : y;
+ }
+ }
+ if (((index >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1))
+ || ((index < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0)))
+ {
+ TASK.data[11] ^= 1;
+ TASK.data[12] ^= 1;
+ if (--TASK.data[3] == 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ move_anim_task_del(task);
+ return;
+ }
+ }
+}
+
+void sub_80A8D34(u8 task)
+{
+ u8 spriteId;
+ spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[3]);
+ sub_8078E70(spriteId, gBattleAnimArgs[4]);
+ TASK.data[0] = gBattleAnimArgs[0];
+ TASK.data[1] = gBattleAnimArgs[1];
+ TASK.data[2] = gBattleAnimArgs[2];
+ TASK.data[3] = gBattleAnimArgs[2];
+ TASK.data[4] = spriteId;
+ TASK.data[10] = 0x100;
+ TASK.data[11] = 0x100;
+ TASK.func = sub_80A8D8C;
+}
+
+static void sub_80A8D8C(u8 task)
+{
+ u8 spriteId;
+ TASK.data[10] += TASK.data[0];
+ TASK.data[11] += TASK.data[1];
+ spriteId = TASK.data[4];
+ obj_id_set_rotscale(spriteId, TASK.data[10], TASK.data[11], 0);
+ if (--TASK.data[2] == 0)
+ {
+ if (TASK.data[3] > 0)
+ {
+ TASK.data[0] = -TASK.data[0];
+ TASK.data[1] = -TASK.data[1];
+ TASK.data[2] = TASK.data[3];
+ TASK.data[3] = 0;
+ }
+ else
+ {
+ sub_8078F40(spriteId);
+ move_anim_task_del(task);
+ return;
+ }
+ }
+}
+
+void sub_80A8E04(u8 task)
+{
+ u8 spriteId;
+ spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
+ sub_8078E70(spriteId, 0);
+ TASK.data[1] = 0;
+ TASK.data[2] = gBattleAnimArgs[0];
+ if (gBattleAnimArgs[3] != 1)
+ {
+ TASK.data[3] = 0;
+ }
+ else
+ {
+ TASK.data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
+ }
+ TASK.data[4] = gBattleAnimArgs[1];
+ TASK.data[5] = spriteId;
+ TASK.data[6] = gBattleAnimArgs[3];
+ if (sub_8076BE0())
+ {
+ TASK.data[7] = 1;
+ }
+ else
+ {
+ if (gBattleAnimArgs[2] == 0)
+ {
+ TASK.data[7] = !battle_side_get_owner(gUnknown_0202F7C8);
+ }
+ else
+ {
+ TASK.data[7] = !battle_side_get_owner(gUnknown_0202F7C9);
+ }
+ }
+ if (TASK.data[7])
+ {
+ if (!sub_8076BE0())
+ {
+ TASK.data[3] *= -1;
+ TASK.data[4] *= -1;
+ }
+ }
+ TASK.func = sub_80A8FD8;
+}
+
+void sub_80A8EFC(u8 task)
+{
+ u8 spriteId;
+ spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
+ sub_8078E70(spriteId, 0);
+ TASK.data[1] = 0;
+ TASK.data[2] = gBattleAnimArgs[0];
+ if (gBattleAnimArgs[2] == 0)
+ {
+ if (battle_side_get_owner(gUnknown_0202F7C8))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ }
+ else
+ {
+ if (battle_side_get_owner(gUnknown_0202F7C9))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ }
+ if (gBattleAnimArgs[3] != 1)
+ {
+ TASK.data[3] = 0;
+ }
+ else
+ {
+ TASK.data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
+ }
+ TASK.data[4] = gBattleAnimArgs[1];
+ TASK.data[5] = spriteId;
+ TASK.data[6] = gBattleAnimArgs[3];
+ TASK.data[7] = 1;
+ TASK.data[3] *= -1;
+ TASK.data[4] *= -1;
+ TASK.func = sub_80A8FD8;
+}
+
+void sub_80A8FD8(u8 task)
+{
+ TASK.data[3] += TASK.data[4];
+ obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]);
+ if (TASK.data[7])
+ {
+ sub_8078F9C(TASK.data[5]);
+ }
+ if (++TASK.data[1] >= TASK.data[2])
+ {
+ switch (TASK.data[6])
+ {
+ case 1:
+ sub_8078F40(TASK.data[5]);
+ case 0:
+ default:
+ move_anim_task_del(task);
+ return;
+ case 2:
+ TASK.data[1] = 0;
+ TASK.data[4] *= -1;
+ TASK.data[6] = 1;
+ break;
+ }
+ }
+}
+
+void sub_80A9058(u8 task)
+{
+ if (!gBattleAnimArgs[0])
+ {
+ TASK.data[15] = gUnknown_0202F7BC / 12;
+ if (TASK.data[15] < 1)
+ {
+ TASK.data[15] = 1;
+ }
+ if (TASK.data[15] > 16)
+ {
+ TASK.data[15] = 16;
+ }
+ }
+ else
+ {
+ TASK.data[15] = gUnknown_0202F7B8 / 12;
+ if (TASK.data[15] < 1)
+ {
+ TASK.data[15] = 1;
+ }
+ if (TASK.data[15] > 16)
+ {
+ TASK.data[15] = 16;
+ }
+ }
+ TASK.data[14] = TASK.data[15] / 2;
+ TASK.data[13] = TASK.data[14] + (TASK.data[15] & 1);
+ TASK.data[12] = 0;
+ TASK.data[10] = gBattleAnimArgs[3];
+ TASK.data[11] = gBattleAnimArgs[4];
+ TASK.data[7] = obj_id_for_side_relative_to_move(1);
+ TASK.data[8] = gSprites[TASK.data[7]].pos2.x;
+ TASK.data[9] = gSprites[TASK.data[7]].pos2.y;
+ TASK.data[0] = 0;
+ TASK.data[1] = gBattleAnimArgs[1];
+ TASK.data[2] = gBattleAnimArgs[2];
+ TASK.func = sub_80A913C;
+}
+
+static void sub_80A913C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (++task->data[0] > task->data[1])
+ {
+ task->data[0] = 0;
+ task->data[12] = (task->data[12] + 1) & 1;
+ if (task->data[10])
+ {
+ if (task->data[12])
+ {
+ gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
+ }
+ else
+ {
+ gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
+ }
+ }
+ if (task->data[11])
+ {
+ if (task->data[12])
+ {
+ gSprites[task->data[7]].pos2.y = task->data[15];
+ }
+ else
+ {
+ gSprites[task->data[7]].pos2.y = 0;
+ }
+ }
+ if (!--task->data[2])
+ {
+ gSprites[task->data[7]].pos2.x = 0;
+ gSprites[task->data[7]].pos2.y = 0;
+ move_anim_task_del(taskId);
+ return;
+ }
+ }
}
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
new file mode 100644
index 000000000..2d47f4e7d
--- /dev/null
+++ b/src/battle_party_menu.c
@@ -0,0 +1,483 @@
+#include "global.h"
+#include "asm.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "battle_party_menu.h"
+
+extern u8 IsLinkDoubleBattle(void);
+extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
+extern void LoadHeldItemIconGraphics(void);
+extern void CreateHeldItemIcons_806DC34();
+extern u8 sub_806BD58(u8, u8);
+extern void PartyMenuPrintMonsLevelOrStatus(void);
+extern void PrintPartyMenuMonNicknames(void);
+extern void PartyMenuTryPrintMonsHP(void);
+extern void nullsub_13(void);
+extern void PartyMenuDrawHPBars(void);
+extern u8 sub_806B58C(u8);
+extern u8 GetItemEffectType();
+extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
+extern u16 sub_806BD80();
+extern u8 sub_806CA38();
+extern void sub_806D5A4(void);
+extern void sub_802E414(void);
+extern void sub_8094D60(void);
+extern void sub_80A6DCC(void);
+extern void sub_806AF4C();
+extern u8 sub_80F9344(void);
+extern u8 sub_806B124(void);
+extern void sub_806C994();
+extern void sub_806BF74();
+extern void sub_806AEDC(void);
+extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8);
+extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(u8), int);
+extern void sub_806E7D0(u8, const struct PartyPopupMenu *);
+extern u8 *sub_8040D08();
+extern void sub_806E834();
+extern u8 sub_8094C20();
+extern void sub_8040B8C(void);
+extern u8 pokemon_order_func(u8);
+extern void sub_8094C98(u8, u8);
+extern void sub_806E6F0();
+extern void sub_806D538();
+
+extern u16 gScriptItemId;
+extern u8 gPlayerPartyCount;
+extern u8 gUnknown_02024A68;
+extern u16 gUnknown_02024A6A[];
+extern u8 gUnknown_02024E6C;
+extern u8 gUnknown_0202E8F4;
+extern u8 gUnknown_0202E8F5;
+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);
+static void Task_80952E4(u8);
+static void Task_8095330(u8);
+static void Task_809538C(void);
+static void Task_HandlePopupMenuInput(u8);
+static void Task_BattlePartyMenuSummary(u8 taskId);
+static void Task_BattlePartyMenuShift(u8 taskId);
+static void Task_BattlePartyMenuCancel(u8 taskId);
+
+static const struct PartyMenuItem sBattlePartyMenuActions[] =
+{
+ {OtherText_Summary, Task_BattlePartyMenuSummary},
+ {gOtherText_CancelNoTerminator, Task_BattlePartyMenuCancel},
+ {OtherText_Shift, Task_BattlePartyMenuShift},
+ {OtherText_SendOut, Task_BattlePartyMenuShift},
+};
+static const u8 Unknown_83B5FEC[] = {2, 0, 1}; //SHIFT, SUMMARY, CANCEL
+static const u8 Unknown_83B5FEF[] = {3, 0, 1}; //SEND OUT, SUMMARY, CANCEL
+static const u8 Unknown_83B5FF2[] = {0, 1}; //SUMMARY, CANCEL
+static const struct PartyPopupMenu sBattlePartyPopupMenus[] =
+{
+ {ARRAY_COUNT(Unknown_83B5FEC), 9, Unknown_83B5FEC},
+ {ARRAY_COUNT(Unknown_83B5FEF), 9, Unknown_83B5FEF},
+ {ARRAY_COUNT(Unknown_83B5FF2), 9, Unknown_83B5FF2},
+};
+
+int SetUpBattlePartyMenu(void)
+{
+ switch (EWRAM_1B000.unk264)
+ {
+ case 0:
+ //TODO: try to get rid of this duplicate code
+ if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (EWRAM_1B000.unk266 != 6)
+ {
+ TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
+ EWRAM_1B000.unk266++;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264++;
+ }
+ }
+ else
+ {
+ if (EWRAM_1B000.unk266 < 6)
+ {
+ 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 = 0;
+ EWRAM_1B000.unk264++;
+ }
+ else
+ EWRAM_1B000.unk266++;
+ break;
+ case 4:
+ PartyMenuPrintMonsLevelOrStatus();
+ EWRAM_1B000.unk264++;
+ break;
+ case 5:
+ PrintPartyMenuMonNicknames();
+ EWRAM_1B000.unk264++;
+ break;
+ case 6:
+ PartyMenuTryPrintMonsHP();
+ EWRAM_1B000.unk264++;
+ break;
+ case 7:
+ nullsub_13();
+ EWRAM_1B000.unk264++;
+ break;
+ case 8:
+ PartyMenuDrawHPBars();
+ EWRAM_1B000.unk264++;
+ break;
+ case 9:
+ if (sub_806B58C(EWRAM_1B000.unk266) == 1)
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264++;
+ }
+ else
+ EWRAM_1B000.unk266++;
+ break;
+ case 10:
+ if (gUnknown_02038473 == 3)
+ {
+ if (GetItemEffectType(gScriptItemId) == 10)
+ EWRAM_1B000.unk259 = 0xFF;
+ else
+ EWRAM_1B000.unk259 = 3;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_8095050(u8 a, u8 b)
+{
+ if (!GetMonData(&gPlayerParty[b], MON_DATA_IS_EGG))
+ {
+ if (gUnknown_02038473 == 1)
+ {
+ gTasks[EWRAM_1B000.unk260].data[4] = 1;
+ gTasks[EWRAM_1B000.unk260].data[5] = 1;
+ }
+ else
+ {
+ gTasks[EWRAM_1B000.unk260].data[4] = 0;
+ gTasks[EWRAM_1B000.unk260].data[5] = 0;
+ }
+ }
+ else
+ {
+ gTasks[EWRAM_1B000.unk260].data[4] = 2;
+ gTasks[EWRAM_1B000.unk260].data[5] = 2;
+ }
+ sub_806E750(gTasks[a].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, 0);
+}
+
+void SetUpBattlePokemonMenu(u8 a)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_02038473 == 3 && GetItemEffectType(gScriptItemId) == 10)
+ {
+ gUnknown_03004AE4(a, gScriptItemId, Task_80952E4);
+ return;
+ }
+
+ switch (sub_806BD80(a))
+ {
+ case 1:
+ if (gUnknown_02038473 == 3)
+ {
+ if (GetMonData(&gPlayerParty[sub_806CA38(a)], MON_DATA_IS_EGG))
+ PlaySE(SE_HAZURE);
+ else
+ {
+ sub_806D5A4();
+ gUnknown_03004AE4(a, gScriptItemId, Task_80952E4);
+ }
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ GetMonNickname(&gPlayerParty[sub_806CA38(a)], gStringVar1);
+ sub_8095050(a, sub_806CA38(a));
+ SetTaskFuncWithFollowupFunc(a, Task_HandlePopupMenuInput, SetUpBattlePokemonMenu);
+ }
+ break;
+ case 2:
+ if (gUnknown_02038473 == 1)
+ PlaySE(SE_HAZURE);
+ else
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_02038473 == 3)
+ {
+ gUnknown_0202E8F4 = 0;
+ gTasks[a].func = Task_80952E4;
+ }
+ else
+ {
+ gUnknown_0202E8F4 = 0;
+ gTasks[a].func = Task_809527C;
+ }
+ }
+ break;
+ }
+ }
+}
+
+static void Task_809527C(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_80952B4;
+}
+
+static void Task_80952B4(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_8094D60();
+ DestroyTask(taskId);
+ SetMainCallback2(sub_802E414);
+ }
+}
+
+static void Task_80952E4(u8 taskId)
+{
+ if (gUnknown_0202E8F4 != 0)
+ Task_809527C(taskId);
+ else
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_8095330;
+ }
+}
+
+static void Task_8095330(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_8094D60();
+ DestroyTask(taskId);
+ sub_80A6DCC();
+ }
+}
+
+static void Task_809535C(u8 taskId)
+{
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ sub_806AF4C(1, 0xFF, SetUpBattlePokemonMenu, 5);
+ SetMainCallback2(Task_809538C);
+}
+
+static void Task_809538C(void)
+{
+ do
+ {
+ if (sub_806B124() == 1)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1);
+ sub_8095050(EWRAM_1B000.unk260, gUnknown_020384F0);
+ SetTaskFuncWithFollowupFunc(EWRAM_1B000.unk260, Task_HandlePopupMenuInput, SetUpBattlePokemonMenu);
+ SetMainCallback2(sub_806AEDC);
+ return;
+ }
+ } while (sub_80F9344() != 1);
+}
+
+static void Task_HandlePopupMenuInput(u8 taskId)
+{
+ TaskFunc func;
+
+ if (!gPaletteFade.active)
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(-1);
+ return;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(1);
+ return;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4],
+ sBattlePartyPopupMenus,
+ sBattlePartyMenuActions,
+ GetMenuCursorPos());
+ func(taskId);
+ return;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ Task_BattlePartyMenuCancel(taskId);
+ return;
+ }
+ }
+}
+
+static void Task_80954C0(u8 taskId)
+{
+ if (gUnknown_0202E8F6 == 0)
+ Task_BattlePartyMenuCancel(taskId);
+}
+
+static void Task_ShowSummaryScreen(u8 taskId)
+{
+ u8 partySelection = sub_806CA38(taskId);
+
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ EWRAM_1B000.unk262 = 1;
+ ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, 4);
+ }
+}
+
+static void Task_BattlePartyMenuSummary(u8 taskId)
+{
+ sub_806CA38(taskId); //an unused variable was probably set with this.
+ gTasks[taskId].func = Task_ShowSummaryScreen;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+static void Task_BattlePartyMenuShift(u8 taskId)
+{
+ u8 partySelection;
+ u8 i;
+ u8 r4;
+
+ sub_806E7D0(gTasks[taskId].data[4], sBattlePartyPopupMenus);
+ partySelection = sub_806CA38(taskId);
+ if (IsLinkDoubleBattle() == TRUE && (partySelection == 1 || partySelection == 4 || partySelection == 5))
+ {
+ sub_806D5A4();
+ StringCopy(gStringVar1, sub_8040D08());
+ StringExpandPlaceholders(gStringVar4, gOtherText_CantSwitchPokeWithYours);
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ if (GetMonData(&gPlayerParty[partySelection], MON_DATA_HP) == 0)
+ {
+ sub_806D5A4();
+ GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_NoEnergyLeft);
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (battle_side_get_owner(i) == 0
+ && sub_8094C20(partySelection) == gUnknown_02024A6A[i])
+ {
+ sub_806D5A4();
+ GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyBattle);
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ }
+ if (GetMonData(&gPlayerParty[partySelection], MON_DATA_IS_EGG))
+ {
+ sub_806D5A4();
+ StringExpandPlaceholders(gStringVar4, gOtherText_EGGCantBattle);
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ if (sub_8094C20(partySelection) == EWRAM_1609D)
+ {
+ sub_806D5A4();
+ GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_AlreadySelected);
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ if (gUnknown_02038473 == 4)
+ {
+ sub_806D5A4();
+ sub_8040B8C();
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ if (gUnknown_02038473 == 2)
+ {
+ u8 r0;
+ u8 r4 = gUnknown_02024E6C;
+
+ sub_806D5A4();
+ r0 = pokemon_order_func(gUnknown_02024A6A[r4]);
+ GetMonNickname(&gPlayerParty[r0], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_CantBeSwitched);
+ sub_806E834(gStringVar4, 0);
+ gTasks[taskId].func = Task_80954C0;
+ return;
+ }
+ gUnknown_0202E8F5 = sub_8094C20(partySelection);
+ gUnknown_0202E8F4 = 1;
+ r4 = pokemon_order_func(gUnknown_02024A6A[gUnknown_02024E6C]);
+ sub_8094C98(r4, partySelection);
+ sub_806E6F0(&gPlayerParty[r4], &gPlayerParty[partySelection]);
+ gTasks[taskId].func = Task_809527C;
+}
+
+static void Task_BattlePartyMenuCancel(u8 taskId)
+{
+ sub_8072DEC();
+ sub_806E7D0(gTasks[taskId].data[4], sBattlePartyPopupMenus);
+ gTasks[taskId].data[4] = gTasks[taskId].data[5];
+ sub_806D538(0, 0);
+ SwitchTaskToFollowupFunc(taskId);
+}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 1c3e8e836..c9839bb87 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -1,80 +1,34 @@
#include "global.h"
#include "battle_setup.h"
#include "asm.h"
-#include "safari_zone.h"
-#include "weather.h"
-#include "palette.h"
-#include "field_player_avatar.h"
-#include "rom4.h"
#include "battle.h"
+#include "event_data.h"
+#include "field_message_box.h"
+#include "field_player_avatar.h"
#include "main.h"
-#include "species.h"
+#include "metatile_behavior.h"
+#include "palette.h"
+#include "rng.h"
+#include "rom4.h"
+#include "safari_zone.h"
+#include "script.h"
#include "songs.h"
#include "sound.h"
-#include "task.h"
+#include "species.h"
+#include "starter_choose.h"
#include "string_util.h"
-#include "rng.h"
-#include "event_data.h"
-#include "script.h"
-#include "field_message_box.h"
+#include "task.h"
+#include "text.h"
#include "trainer.h"
-#include "starter_choose.h"
-#include "metatile_behavior.h"
-
-#define NUM_TRAINER_EYE_TRAINERS 56
-#define TRAINER_REMATCH_STEPS 255
+#include "weather.h"
+#include "map_constants.h"
+#include "opponent_constants.h"
+#include "script_pokemon_80C4.h"
+#include "field_map_obj_helpers.h"
+#include "field_control_avatar.h"
extern u16 gScriptResult;
-// IV + LEVEL + SPECIES
-struct TrainerPartyMember0
-{
- u16 iv;
- u8 level;
- u16 species;
-};
-
-// IV + LEVEL + SPECIES + MOVES
-struct TrainerPartyMember1
-{
- u16 iv;
- u8 level;
- u16 species;
- u16 moves[4];
-};
-
-// IV + LEVEL + SPECIES + ITEMS
-struct TrainerPartyMember2
-{
- u16 iv;
- u8 level;
- u16 species;
- u16 heldItem;
-};
-
-// IV + LEVEL + SPECIES + ITEMS + MOVES
-struct TrainerPartyMember3
-{
- u16 iv;
- u8 level;
- u16 species;
- u16 heldItem;
- u16 moves[4];
-};
-
-struct TrainerBattleSpec
-{
- void *ptr;
- u8 ptrType;
-};
-
-struct TrainerEyeTrainer
-{
- u16 trainerNums[5];
- u16 mapGroup;
- u16 mapNum;
-};
-
extern void (*gUnknown_0300485C)(void);
extern struct Pokemon gEnemyParty[];
@@ -91,14 +45,11 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
-extern struct TrainerEyeTrainer gTrainerEyeTrainers[];
-
extern u8 gOtherText_CancelWithTerminator[];
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
extern u8 gUnknown_02024D26;
-extern u16 gBadgeFlags[];
extern struct MapObject gMapObjects[];
@@ -111,16 +62,367 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_0[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_1[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_2[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_3[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_4[];
-extern u8 gStringVar4[];
+static const u8 gBattleTransitionTable_Wild[][2] =
+{
+ {8, 9},
+ {5, 10},
+ {0, 10},
+ {7, 6},
+};
+static const u8 gBattleTransitionTable_Trainer[][2] =
+{
+ {4, 11},
+ {2, 3},
+ {0, 10},
+ {1, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 5},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
-extern u8 gBattleTransitionTable_Wild[][2];
-extern u8 gBattleTransitionTable_Trainer[][2];
+const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
+{
+ {
+ {OPPONENT_ROSE_1, OPPONENT_ROSE_2, OPPONENT_ROSE_3, OPPONENT_ROSE_4, OPPONENT_ROSE_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_DUSTY_1, OPPONENT_DUSTY_2, OPPONENT_DUSTY_3, OPPONENT_DUSTY_4, OPPONENT_DUSTY_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_LOLA_1, OPPONENT_LOLA_2, OPPONENT_LOLA_3, OPPONENT_LOLA_4, OPPONENT_LOLA_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RICKY_1, OPPONENT_RICKY_2, OPPONENT_RICKY_3, OPPONENT_RICKY_4, OPPONENT_RICKY_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RITA_AND_SAM_1, OPPONENT_RITA_AND_SAM_2, OPPONENT_RITA_AND_SAM_3, OPPONENT_RITA_AND_SAM_4, OPPONENT_RITA_AND_SAM_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_BROOKE_1, OPPONENT_BROOKE_2, OPPONENT_BROOKE_3, OPPONENT_BROOKE_4, OPPONENT_BROOKE_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_WILTON_1, OPPONENT_WILTON_2, OPPONENT_WILTON_3, OPPONENT_WILTON_4, OPPONENT_WILTON_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_VALERIE_1, OPPONENT_VALERIE_2, OPPONENT_VALERIE_3, OPPONENT_VALERIE_4, OPPONENT_VALERIE_5},
+ MAP_GROUP_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_6F,
+ },
+ {
+ {OPPONENT_CINDY_1, OPPONENT_CINDY_3, OPPONENT_CINDY_4, OPPONENT_CINDY_5, OPPONENT_CINDY_6},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JESSICA_1, OPPONENT_JESSICA_2, OPPONENT_JESSICA_3, OPPONENT_JESSICA_4, OPPONENT_JESSICA_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_WINSTON_1, OPPONENT_WINSTON_2, OPPONENT_WINSTON_3, OPPONENT_WINSTON_4, OPPONENT_WINSTON_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_STEVE_1, OPPONENT_STEVE_2, OPPONENT_STEVE_3, OPPONENT_STEVE_4, OPPONENT_STEVE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_TONY_1, OPPONENT_TONY_2, OPPONENT_TONY_3, OPPONENT_TONY_4, OPPONENT_TONY_5},
+ MAP_GROUP_ROUTE107,
+ MAP_ID_ROUTE107,
+ },
+ {
+ {OPPONENT_NOB_1, OPPONENT_NOB_2, OPPONENT_NOB_3, OPPONENT_NOB_4, OPPONENT_NOB_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_DALTON_1, OPPONENT_DALTON_2, OPPONENT_DALTON_3, OPPONENT_DALTON_4, OPPONENT_DALTON_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_BERNIE_1, OPPONENT_BERNIE_2, OPPONENT_BERNIE_3, OPPONENT_BERNIE_4, OPPONENT_BERNIE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_ETHAN_1, OPPONENT_ETHAN_2, OPPONENT_ETHAN_3, OPPONENT_ETHAN_4, OPPONENT_ETHAN_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_JOHN_AND_JAY_1, OPPONENT_JOHN_AND_JAY_2, OPPONENT_JOHN_AND_JAY_3, OPPONENT_JOHN_AND_JAY_4, OPPONENT_JOHN_AND_JAY_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_BRANDON_1, OPPONENT_BRANDON_2, OPPONENT_BRANDON_3, OPPONENT_BRANDON_4, OPPONENT_BRANDON_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_CAMERON_1, OPPONENT_CAMERON_2, OPPONENT_CAMERON_3, OPPONENT_CAMERON_4, OPPONENT_CAMERON_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_JACKI_1, OPPONENT_JACKI_2, OPPONENT_JACKI_3, OPPONENT_JACKI_4, OPPONENT_JACKI_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_WALTER_1, OPPONENT_WALTER_2, OPPONENT_WALTER_3, OPPONENT_WALTER_4, OPPONENT_WALTER_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_KAREN_1, OPPONENT_KAREN_2, OPPONENT_KAREN_3, OPPONENT_KAREN_4, OPPONENT_KAREN_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_JERRY_1, OPPONENT_JERRY_2, OPPONENT_JERRY_3, OPPONENT_JERRY_4, OPPONENT_JERRY_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_ANNA_AND_MEG_1, OPPONENT_ANNA_AND_MEG_2, OPPONENT_ANNA_AND_MEG_3, OPPONENT_ANNA_AND_MEG_4, OPPONENT_ANNA_AND_MEG_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISABEL_1, OPPONENT_ISABEL_2, OPPONENT_ISABEL_3, OPPONENT_ISABEL_4, OPPONENT_ISABEL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_MIGUEL_1, OPPONENT_MIGUEL_2, OPPONENT_MIGUEL_3, OPPONENT_MIGUEL_4, OPPONENT_MIGUEL_5},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_TIMOTHY_1, OPPONENT_TIMOTHY_2, OPPONENT_TIMOTHY_3, OPPONENT_TIMOTHY_4, OPPONENT_TIMOTHY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_SHELBY_1, OPPONENT_SHELBY_2, OPPONENT_SHELBY_3, OPPONENT_SHELBY_4, OPPONENT_SHELBY_5},
+ MAP_GROUP_MT_CHIMNEY,
+ MAP_ID_MT_CHIMNEY,
+ },
+ {
+ {OPPONENT_CALVIN_1, OPPONENT_CALVIN_2, OPPONENT_CALVIN_3, OPPONENT_CALVIN_4, OPPONENT_CALVIN_5},
+ MAP_GROUP_ROUTE102,
+ MAP_ID_ROUTE102,
+ },
+ {
+ {OPPONENT_ELLIOT_1, OPPONENT_ELLIOT_2, OPPONENT_ELLIOT_3, OPPONENT_ELLIOT_4, OPPONENT_ELLIOT_5},
+ MAP_GROUP_ROUTE106,
+ MAP_ID_ROUTE106,
+ },
+ {
+ {OPPONENT_ABIGAIL_1, OPPONENT_ABIGAIL_2, OPPONENT_ABIGAIL_3, OPPONENT_ABIGAIL_4, OPPONENT_ABIGAIL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_BENJAMIN_1, OPPONENT_BENJAMIN_2, OPPONENT_BENJAMIN_3, OPPONENT_BENJAMIN_4, OPPONENT_BENJAMIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_ISAIAH_1, OPPONENT_ISAIAH_2, OPPONENT_ISAIAH_3, OPPONENT_ISAIAH_4, OPPONENT_ISAIAH_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_KATELYN_1, OPPONENT_KATELYN_2, OPPONENT_KATELYN_3, OPPONENT_KATELYN_4, OPPONENT_KATELYN_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_MARIA_1, OPPONENT_MARIA_2, OPPONENT_MARIA_3, OPPONENT_MARIA_4, OPPONENT_MARIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_DYLAN_1, OPPONENT_DYLAN_2, OPPONENT_DYLAN_3, OPPONENT_DYLAN_4, OPPONENT_DYLAN_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_NICOLAS_1, OPPONENT_NICOLAS_2, OPPONENT_NICOLAS_3, OPPONENT_NICOLAS_4, OPPONENT_NICOLAS_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_ROBERT_1, OPPONENT_ROBERT_2, OPPONENT_ROBERT_3, OPPONENT_ROBERT_4, OPPONENT_ROBERT_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_LAO_1, OPPONENT_LAO_2, OPPONENT_LAO_3, OPPONENT_LAO_4, OPPONENT_LAO_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_CYNDY_1, OPPONENT_CYNDY_2, OPPONENT_CYNDY_3, OPPONENT_CYNDY_4, OPPONENT_CYNDY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_MADELINE_1, OPPONENT_MADELINE_2, OPPONENT_MADELINE_3, OPPONENT_MADELINE_4, OPPONENT_MADELINE_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_JENNY_1, OPPONENT_JENNY_2, OPPONENT_JENNY_3, OPPONENT_JENNY_4, OPPONENT_JENNY_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_DIANA_1, OPPONENT_DIANA_2, OPPONENT_DIANA_3, OPPONENT_DIANA_4, OPPONENT_DIANA_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_AMY_AND_LIV_1, OPPONENT_AMY_AND_LIV_2, OPPONENT_AMY_AND_LIV_4, OPPONENT_AMY_AND_LIV_5, OPPONENT_AMY_AND_LIV_6},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_ERNEST_1, OPPONENT_ERNEST_2, OPPONENT_ERNEST_3, OPPONENT_ERNEST_4, OPPONENT_ERNEST_5},
+ MAP_GROUP_ROUTE125,
+ MAP_ID_ROUTE125,
+ },
+ {
+ {OPPONENT_EDWIN_1, OPPONENT_EDWIN_2, OPPONENT_EDWIN_3, OPPONENT_EDWIN_4, OPPONENT_EDWIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_LYDIA_1, OPPONENT_LYDIA_2, OPPONENT_LYDIA_3, OPPONENT_LYDIA_4, OPPONENT_LYDIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISAAC_1, OPPONENT_ISAAC_2, OPPONENT_ISAAC_3, OPPONENT_ISAAC_4, OPPONENT_ISAAC_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_CATHERINE_1, OPPONENT_CATHERINE_2, OPPONENT_CATHERINE_3, OPPONENT_CATHERINE_4, OPPONENT_CATHERINE_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_JACKSON_1, OPPONENT_JACKSON_2, OPPONENT_JACKSON_3, OPPONENT_JACKSON_4, OPPONENT_JACKSON_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_HALEY_1, OPPONENT_HALEY_2, OPPONENT_HALEY_3, OPPONENT_HALEY_4, OPPONENT_HALEY_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JAMES_1, OPPONENT_JAMES_2, OPPONENT_JAMES_3, OPPONENT_JAMES_4, OPPONENT_JAMES_5},
+ MAP_GROUP_PETALBURG_WOODS,
+ MAP_ID_PETALBURG_WOODS,
+ },
+ {
+ {OPPONENT_TRENT_1, OPPONENT_TRENT_2, OPPONENT_TRENT_3, OPPONENT_TRENT_4, OPPONENT_TRENT_5},
+ MAP_GROUP_ROUTE112,
+ MAP_ID_ROUTE112,
+ },
+ {
+ {OPPONENT_LOIS_AND_HAL_1, OPPONENT_LOIS_AND_HAL_2, OPPONENT_LOIS_AND_HAL_3, OPPONENT_LOIS_AND_HAL_4, OPPONENT_LOIS_AND_HAL_5},
+ MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ },
+ {
+ {OPPONENT_WALLY_3, OPPONENT_WALLY_4, OPPONENT_WALLY_5, OPPONENT_WALLY_6, OPPONENT_NONE},
+ MAP_GROUP_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_1F,
+ },
+};
+
+static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET};
void task01_battle_start(u8 taskId)
{
@@ -387,7 +689,7 @@ u16 GetSumOfPartyMonLevel(u8 numMons)
for (i = 0; i < 6; i++)
{
u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
-
+
if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
{
sum += GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
@@ -593,7 +895,7 @@ void sub_80822BC(void)
gTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(struct TrainerBattleSpec *specs, u8 *data)
+void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data)
{
while (1)
{
@@ -807,7 +1109,7 @@ u8 *sub_8082700(void)
return gUnknown_081C6C02;
}
-void sub_8082718()
+void sub_8082718(void)
{
ShowFieldMessage(sub_8082880());
}
@@ -903,7 +1205,7 @@ u8 *sub_8082880(void)
return SanitizeString(gTrainerCannotBattleSpeech);
}
-s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
@@ -915,7 +1217,7 @@ s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
s32 j;
@@ -931,7 +1233,7 @@ s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
int i;
bool32 ret = FALSE;
@@ -956,7 +1258,7 @@ bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return ret;
}
-s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -968,7 +1270,7 @@ s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -980,7 +1282,7 @@ s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -990,7 +1292,7 @@ bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -1000,10 +1302,10 @@ bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
int i;
- struct TrainerEyeTrainer *trainer;
+ const struct TrainerEyeTrainer *trainer;
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
if (trainerEyeIndex == -1)
@@ -1019,7 +1321,7 @@ u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return trainer->trainerNums[4];
}
-void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -1027,7 +1329,7 @@ void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
gSaveBlock1.trainerRematches[trainerEyeIndex] = 0;
}
-bool8 sub_8082B10(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -1044,7 +1346,7 @@ bool32 sub_8082B44(void)
for (i = 0; i < 8; i++)
{
- if (FlagGet(gBadgeFlags[i]) == TRUE)
+ if (FlagGet(sBadgeFlags[i]) == TRUE)
{
badgeCount++;
if (badgeCount >= 5)
diff --git a/src/berry.c b/src/berry.c
index 84db22a27..e81c7a5ff 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -2,17 +2,799 @@
#include "berry.h"
#include "asm.h"
#include "item.h"
+#include "items.h"
#include "main.h"
-#include "text.h"
#include "rng.h"
-#include "items.h"
+#include "text.h"
+#include "field_control_avatar.h"
+
+#define BERRY_NAME_LENGTH 6
#define FIRST_BERRY ITEM_CHERI_BERRY
#define LAST_BERRY ITEM_ENIGMA_BERRY
-extern struct Berry gBerries[];
+const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers.");
+const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy.");
+const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are");
+const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over.");
+const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious.");
+const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care.");
+const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,");
+const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter.");
+const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich");
+const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour.");
+const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others.");
+const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier.");
+const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors.");
+const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day.");
+const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color");
+const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun.");
+const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving");
+const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES.");
+const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large");
+const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor.");
+const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,");
+const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances.");
+const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy");
+const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it.");
+const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows.");
+const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier.");
+const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its");
+const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light.");
+const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour.");
+const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow.");
+const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy.");
+const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours.");
+const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but");
+const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten.");
+const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh");
+const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet.");
+const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a");
+const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour.");
+const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold.");
+const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour.");
+const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,");
+const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES.");
+const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root.");
+const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower.");
+const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in");
+const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall.");
+const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and");
+const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious.");
+const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round");
+const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour.");
+const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy.");
+const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow.");
+const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not");
+const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity.");
+const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have");
+const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor.");
+const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with");
+const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter.");
+const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it");
+const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days.");
+const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy.");
+const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance.");
+const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere.");
+const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere.");
+const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20");
+const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet.");
+const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so");
+const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is.");
+const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but");
+const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow.");
+const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea.");
+const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land.");
+const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky.");
+const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things.");
+const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling");
+const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used.");
+const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY.");
+const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy.");
+const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the");
+const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage.");
+const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY.");
+const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars.");
+
+const struct Berry gBerries[] =
+{
+ {
+ .name = _("CHERI"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 20,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Cheri,
+ .description2 = gBerryDescriptionPart2_Cheri,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("CHESTO"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 80,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Chesto,
+ .description2 = gBerryDescriptionPart2_Chesto,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("PECHA"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 40,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Pecha,
+ .description2 = gBerryDescriptionPart2_Pecha,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("RAWST"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 32,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Rawst,
+ .description2 = gBerryDescriptionPart2_Rawst,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("ASPEAR"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 50,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Aspear,
+ .description2 = gBerryDescriptionPart2_Aspear,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 25,
+ },
+ {
+ .name = _("LEPPA"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 28,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Leppa,
+ .description2 = gBerryDescriptionPart2_Leppa,
+ .stageDuration = 4,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("ORAN"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 35,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Oran,
+ .description2 = gBerryDescriptionPart2_Oran,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("PERSIM"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 47,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Persim,
+ .description2 = gBerryDescriptionPart2_Persim,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("LUM"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 34,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Lum,
+ .description2 = gBerryDescriptionPart2_Lum,
+ .stageDuration = 12,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("SITRUS"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 95,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Sitrus,
+ .description2 = gBerryDescriptionPart2_Sitrus,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("FIGY"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 100,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Figy,
+ .description2 = gBerryDescriptionPart2_Figy,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("WIKI"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 115,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Wiki,
+ .description2 = gBerryDescriptionPart2_Wiki,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("MAGO"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 126,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Mago,
+ .description2 = gBerryDescriptionPart2_Mago,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("AGUAV"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 64,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Aguav,
+ .description2 = gBerryDescriptionPart2_Aguav,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("IAPAPA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 223,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Iapapa,
+ .description2 = gBerryDescriptionPart2_Iapapa,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 25,
+ },
+ {
+ .name = _("RAZZ"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 120,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Razz,
+ .description2 = gBerryDescriptionPart2_Razz,
+ .stageDuration = 1,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("BLUK"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 108,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Bluk,
+ .description2 = gBerryDescriptionPart2_Bluk,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("NANAB"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 77,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Nanab,
+ .description2 = gBerryDescriptionPart2_Nanab,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("WEPEAR"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 74,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Wepear,
+ .description2 = gBerryDescriptionPart2_Wepear,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("PINAP"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 80,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Pinap,
+ .description2 = gBerryDescriptionPart2_Pinap,
+ .stageDuration = 1,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("POMEG"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 135,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Pomeg,
+ .description2 = gBerryDescriptionPart2_Pomeg,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("KELPSY"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 150,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Kelpsy,
+ .description2 = gBerryDescriptionPart2_Kelpsy,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("QUALOT"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 110,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Qualot,
+ .description2 = gBerryDescriptionPart2_Qualot,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("HONDEW"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 162,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Hondew,
+ .description2 = gBerryDescriptionPart2_Hondew,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("GREPA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 149,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Grepa,
+ .description2 = gBerryDescriptionPart2_Grepa,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("TAMATO"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 200,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Tamato,
+ .description2 = gBerryDescriptionPart2_Tamato,
+ .stageDuration = 6,
+ .spicy = 20,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("CORNN"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 75,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Cornn,
+ .description2 = gBerryDescriptionPart2_Cornn,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 20,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("MAGOST"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 140,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Magost,
+ .description2 = gBerryDescriptionPart2_Magost,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 20,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("RABUTA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 226,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Rabuta,
+ .description2 = gBerryDescriptionPart2_Rabuta,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 20,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("NOMEL"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 285,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Nomel,
+ .description2 = gBerryDescriptionPart2_Nomel,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 20,
+ .smoothness = 30,
+ },
+ {
+ .name = _("SPELON"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 133,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Spelon,
+ .description2 = gBerryDescriptionPart2_Spelon,
+ .stageDuration = 18,
+ .spicy = 40,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("PAMTRE"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 244,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Pamtre,
+ .description2 = gBerryDescriptionPart2_Pamtre,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("WATMEL"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 250,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Watmel,
+ .description2 = gBerryDescriptionPart2_Watmel,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("DURIN"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 280,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Durin,
+ .description2 = gBerryDescriptionPart2_Durin,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 10,
+ .smoothness = 70,
+ },
+ {
+ .name = _("BELUE"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 300,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Belue,
+ .description2 = gBerryDescriptionPart2_Belue,
+ .stageDuration = 18,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 70,
+ },
+ {
+ .name = _("LIECHI"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 111,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Liechi,
+ .description2 = gBerryDescriptionPart2_Liechi,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 80,
+ },
+ {
+ .name = _("GANLON"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 33,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Ganlon,
+ .description2 = gBerryDescriptionPart2_Ganlon,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 0,
+ .smoothness = 80,
+ },
+ {
+ .name = _("SALAC"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 95,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Salac,
+ .description2 = gBerryDescriptionPart2_Salac,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 80,
+ },
+ {
+ .name = _("PETAYA"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 237,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Petaya,
+ .description2 = gBerryDescriptionPart2_Petaya,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 0,
+ .smoothness = 80,
+ },
+ {
+ .name = _("APICOT"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 75,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Apicot,
+ .description2 = gBerryDescriptionPart2_Apicot,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 80,
+ },
+ {
+ .name = _("LANSAT"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 97,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Lansat,
+ .description2 = gBerryDescriptionPart2_Lansat,
+ .stageDuration = 24,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("STARF"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 153,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Starf,
+ .description2 = gBerryDescriptionPart2_Starf,
+ .stageDuration = 24,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("ENIGMA"),
+ .firmness = BERRY_FIRMNESS_UNKNOWN,
+ .size = 0,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Enigma,
+ .description2 = gBerryDescriptionPart2_Enigma,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 40,
+ .sweet = 40,
+ .bitter = 40,
+ .sour = 40,
+ .smoothness = 40,
+ },
+};
+
+const struct BerryTree gBlankBerryTree = {0};
+
extern u8 BerryTreeScript;
-extern struct BerryTree gBlankBerryTree;
extern u16 gScriptItemId;
extern u16 gScriptLastTalked;
extern u16 gSpecialVar_0x8004;
@@ -29,7 +811,7 @@ void SetEnigmaBerry(u8 *src)
{
u32 i;
u8 *dest = (u8*)&gSaveBlock1.enigmaBerry;
-
+
for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++)
dest[i] = src[i];
@@ -39,8 +821,8 @@ void SetEnigmaBerry(u8 *src)
u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
- u8 *description1;
- u8 *description2;
+ const u8 *description1;
+ const u8 *description2;
u32 i;
u32 checksum;
u8 *dest;
@@ -74,7 +856,7 @@ bool32 IsEnigmaBerryValid(void)
return TRUE;
}
-struct Berry *GetBerryInfo(u8 berry)
+const struct Berry *GetBerryInfo(u8 berry)
{
if (berry == 0x2B && IsEnigmaBerryValid())
return &gSaveBlock1.enigmaBerry.berry;
@@ -94,7 +876,7 @@ struct BerryTree *GetBerryTreeInfo(u8 id)
bool32 FieldObjectInteractionWaterBerryTree(void)
{
struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject));
-
+
switch (tree->stage)
{
case 1:
@@ -137,8 +919,8 @@ void ClearBerryTrees(void)
int i;
struct SaveBlock1 *saveBlock1 = &gSaveBlock1;
struct BerryTree berryTree = gBlankBerryTree;
-
- for (i = 0; i < 128; i++)
+
+ for (i = 0; i < (u8)ARRAY_COUNT(saveBlock1->berryTrees); i++) // casting to u8 fixes a mismatched signed compare. what
saveBlock1->berryTrees[i] = berryTree;
}
@@ -175,8 +957,8 @@ void BerryTreeTimeUpdate(int time)
{
int i;
struct BerryTree *tree;
-
- for (i = 0; i < 128; i++)
+
+ for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.berryTrees); i++)
{
tree = &gSaveBlock1.berryTrees[i];
@@ -189,7 +971,7 @@ void BerryTreeTimeUpdate(int time)
else
{
int time2 = time;
-
+
while (time2 != 0)
{
if (tree->secondsUntilNextStage > time2)
@@ -212,7 +994,7 @@ void BerryTreeTimeUpdate(int time)
void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle)
{
struct BerryTree *tree = GetBerryTreeInfo(id);
-
+
*tree = gBlankBerryTree;
tree->berry = berry;
tree->secondsUntilNextStage = GetStageDurationByBerryType(berry);
@@ -246,7 +1028,7 @@ u8 GetStageByBerryTreeId(u8 id)
u8 ItemIdToBerryType(u16 item)
{
u16 berry = item - FIRST_BERRY;
-
+
if (berry > LAST_BERRY - FIRST_BERRY)
return 1;
else
@@ -256,7 +1038,7 @@ u8 ItemIdToBerryType(u16 item)
u16 BerryTypeToItemId(u16 berry)
{
u16 item = berry - 1;
-
+
if (item > LAST_BERRY - FIRST_BERRY)
return FIRST_BERRY;
else
@@ -265,8 +1047,8 @@ u16 BerryTypeToItemId(u16 berry)
void GetBerryNameByBerryType(u8 berry, u8 *string)
{
- memcpy(string, GetBerryInfo(berry)->name, 6);
- string[6] = EOS;
+ memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_LENGTH);
+ string[BERRY_NAME_LENGTH] = EOS;
}
void ResetBerryTreeSparkleFlag(u8 id)
@@ -277,7 +1059,7 @@ void ResetBerryTreeSparkleFlag(u8 id)
u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree)
{
u8 count = 0;
-
+
if (tree->watered1)
count++;
if (tree->watered2)
@@ -300,7 +1082,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
u32 randMax;
u32 rand;
u32 extraYield;
-
+
if (water == 0)
return min;
else
@@ -308,7 +1090,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
randMin = (max - min) * (water - 1);
randMax = (max - min) * (water);
rand = randMin + Random() % (randMax - randMin + 1);
-
+
if ((rand & 3) > 1)
extraYield = rand / 4 + 1;
else
@@ -319,10 +1101,10 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
u8 CalcBerryYield(struct BerryTree *tree)
{
- struct Berry *berry = GetBerryInfo(tree->berry);
+ const struct Berry *berry = GetBerryInfo(tree->berry);
u8 min = berry->minYield;
u8 max = berry->maxYield;
-
+
return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree));
}
@@ -343,7 +1125,7 @@ void FieldObjectInteractionGetBerryTreeData(void)
u8 unk;
u8 group;
u8 num;
-
+
id = FieldObjectGetBerryTreeId(gSelectedMapObject);
berry = GetBerryTypeByBerryTreeId(id);
ResetBerryTreeSparkleFlag(id);
@@ -367,7 +1149,7 @@ void sub_80B4EE4(void)
void FieldObjectInteractionPlantBerryTree(void)
{
u8 berry = ItemIdToBerryType(gScriptItemId);
-
+
PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE);
FieldObjectInteractionGetBerryTreeData();
}
@@ -376,7 +1158,7 @@ void FieldObjectInteractionPickBerryTree(void)
{
u8 id = FieldObjectGetBerryTreeId(gSelectedMapObject);
u8 berry = GetBerryTypeByBerryTreeId(id);
-
+
gSpecialVar_0x8004 = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id));
}
@@ -406,7 +1188,7 @@ void ResetBerryTreeSparkleFlags(void)
top = cam_top + 3;
right = cam_left + 14;
bottom = top + 8;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.mapObjects); i++)
{
if (gMapObjects[i].active && gMapObjects[i].animPattern == 12)
{
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 164e2cfc2..103f0a85e 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -3,6 +3,7 @@
#include "asm.h"
#include "berry.h"
#include "decompress.h"
+#include "items.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
@@ -13,7 +14,6 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "items.h"
#define OFFSET_7B (123)
#define FIRST_BERRY ITEM_CHERI_BERRY
@@ -30,7 +30,6 @@ struct BerryTagStatus
};
extern struct Struct2000000 unk_2000000;
-extern u16 gBGTilemapBuffers[4][0x400];
extern u8 gUnknown_0203932C;
extern struct BerryTagStatus gUnknown_0203932E;
extern u16 gScriptItemId;
@@ -63,8 +62,8 @@ static void sub_8146600(u8 berry);
// static void sub_81466A0(void);
static void sub_81466E8(u8 taskId, s8 direction);
// static void sub_8146798(u8 berry);
-// static void sub_8146810(u8 berry);
-// static void sub_81468BC(void);
+static void sub_8146810(s8 berry);
+static void sub_81468BC(void);
static void sub_8146014(void)
{
@@ -192,42 +191,42 @@ bool8 sub_81462B8(void)
switch (unk_2000000.var_1FFFF)
{
- case 0:
- LZDecompressVram(gBerryCheck_Gfx, (void *) VRAM);
- unk_2000000.var_1FFFF += 1;
- break;
- case 1:
- LZDecompressVram(gUnknown_08E788E4, (void *) VRAM + 0x2800);
- unk_2000000.var_1FFFF += 1;
- break;
- case 2:
- LZDecompressVram(gUnknown_08E78A84, (void *) VRAM + 0x3000);
- unk_2000000.var_1FFFF += 1;
- break;
- case 3:
- for (i = 0; i < 0x400; i++)
- {
- if (gSaveBlock2.playerGender == MALE)
- gBGTilemapBuffers[2][i] = 0x4042;
- else
- gBGTilemapBuffers[2][i] = 0x5042;
- }
- addr = (void *)(VRAM + 0x3800);
- DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800);
- unk_2000000.var_1FFFF += 1;
- break;
- case 4:
- LoadCompressedPalette(gBerryCheck_Pal, 0, 96 * 2);
- unk_2000000.var_1FFFF += 1;
- break;
- case 5:
- LoadCompressedObjectPic(&gUnknown_083C1F74);
- unk_2000000.var_1FFFF += 1;
- break;
- case 6:
- LoadCompressedObjectPalette(&gUnknown_083C1F7C);
- unk_2000000.var_1FFFF = 0;
- return TRUE;
+ case 0:
+ LZDecompressVram(gBerryCheck_Gfx, (void *)VRAM);
+ unk_2000000.var_1FFFF += 1;
+ break;
+ case 1:
+ LZDecompressVram(gUnknown_08E788E4, (void *)VRAM + 0x2800);
+ unk_2000000.var_1FFFF += 1;
+ break;
+ case 2:
+ LZDecompressVram(gUnknown_08E78A84, (void *)VRAM + 0x3000);
+ unk_2000000.var_1FFFF += 1;
+ break;
+ case 3:
+ for (i = 0; i < 0x400; i++)
+ {
+ if (gSaveBlock2.playerGender == MALE)
+ gBGTilemapBuffers[2][i] = 0x4042;
+ else
+ gBGTilemapBuffers[2][i] = 0x5042;
+ }
+ addr = (void *)(VRAM + 0x3800);
+ DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800);
+ unk_2000000.var_1FFFF += 1;
+ break;
+ case 4:
+ LoadCompressedPalette(gBerryCheck_Pal, 0, 96 * 2);
+ unk_2000000.var_1FFFF += 1;
+ break;
+ case 5:
+ LoadCompressedObjectPic(&gUnknown_083C1F74);
+ unk_2000000.var_1FFFF += 1;
+ break;
+ case 6:
+ LoadCompressedObjectPalette(&gUnknown_083C1F7C);
+ unk_2000000.var_1FFFF = 0;
+ return TRUE;
}
return FALSE;
@@ -266,7 +265,7 @@ static void sub_8146480(u8 taskid)
static void sub_81464E4(void)
{
- struct Berry *berryInfo;
+ const struct Berry *berryInfo;
u32 size;
s32 sizeMajor;
s32 sizeMinor;
@@ -307,10 +306,10 @@ static void sub_81464E4(void)
static void sub_8146600(u8 berry)
{
- struct Berry *berryInfo;
+ const struct Berry *berryInfo;
u16 i;
- berryInfo = GetBerryInfo(berry +1);
+ berryInfo = GetBerryInfo(berry + 1);
for (i = 0; i < 5; i++)
gUnknown_0203932E.circles[i] = (u16)gUnknown_0203932E.circles[i] | 0xFFFF;
@@ -342,257 +341,214 @@ void sub_81466A0(void)
}
__attribute__((naked))
-static void sub_81466E8(u8 taskId, s8 direction) {
+static void sub_81466E8(u8 taskId, s8 direction)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- ldr r1, _08146748 @ =gTasks + 0x8\n\
- adds r6, r0, r1\n\
- ldr r4, _0814674C @ =gUnknown_03005D10\n\
- movs r0, 0xC\n\
- adds r0, r4\n\
- mov r8, r0\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r4, 0xC]\n\
- adds r1, r0\n\
- cmp r1, 0\n\
- bne _08146718\n\
- lsls r0, r2, 24\n\
- cmp r0, 0\n\
- blt _0814678C\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ ldr r1, _08146748 @ =gTasks + 0x8\n\
+ adds r6, r0, r1\n\
+ ldr r4, _0814674C @ =gUnknown_03005D10\n\
+ movs r0, 0xC\n\
+ adds r0, r4\n\
+ mov r8, r0\n\
+ ldrb r1, [r0, 0x1]\n\
+ ldrb r0, [r4, 0xC]\n\
+ adds r1, r0\n\
+ cmp r1, 0\n\
+ bne _08146718\n\
+ lsls r0, r2, 24\n\
+ cmp r0, 0\n\
+ blt _0814678C\n\
_08146718:\n\
- adds r0, r1, 0x1\n\
- lsls r5, r2, 24\n\
- mov r1, r8\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r0, r1\n\
- bne _08146728\n\
- cmp r5, 0\n\
- bgt _0814678C\n\
+ adds r0, r1, 0x1\n\
+ lsls r5, r2, 24\n\
+ mov r1, r8\n\
+ ldrb r1, [r1, 0x2]\n\
+ cmp r0, r1\n\
+ bne _08146728\n\
+ cmp r5, 0\n\
+ bgt _0814678C\n\
_08146728:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- mov r2, r8\n\
- ldrb r3, [r2, 0x1]\n\
- ldrb r4, [r4, 0xC]\n\
- mov r12, r4\n\
- adds r0, r3, r4\n\
- asrs r2, r5, 24\n\
- adds r1, r0, r2\n\
- cmp r1, 0\n\
- bge _08146750\n\
- negs r0, r0\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
- .align 2, 0\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ mov r2, r8\n\
+ ldrb r3, [r2, 0x1]\n\
+ ldrb r4, [r4, 0xC]\n\
+ mov r12, r4\n\
+ adds r0, r3, r4\n\
+ asrs r2, r5, 24\n\
+ adds r1, r0, r2\n\
+ cmp r1, 0\n\
+ bge _08146750\n\
+ negs r0, r0\n\
+ strh r0, [r6, 0x2]\n\
+ b _08146766\n\
+ .align 2, 0\n\
_08146748: .4byte gTasks + 0x8\n\
_0814674C: .4byte gUnknown_03005D10\n\
_08146750:\n\
- mov r4, r8\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r1, r0\n\
- blt _08146764\n\
- subs r0, r3\n\
- mov r1, r12\n\
- subs r0, r1\n\
- subs r0, 0x1\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
+ mov r4, r8\n\
+ ldrb r0, [r4, 0x2]\n\
+ cmp r1, r0\n\
+ blt _08146764\n\
+ subs r0, r3\n\
+ mov r1, r12\n\
+ subs r0, r1\n\
+ subs r0, 0x1\n\
+ strh r0, [r6, 0x2]\n\
+ b _08146766\n\
_08146764:\n\
- strh r2, [r6, 0x2]\n\
+ strh r2, [r6, 0x2]\n\
_08146766:\n\
- ldr r0, _08146780 @ =gTasks\n\
- lsls r1, r7, 2\n\
- adds r1, r7\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08146784 @ =sub_8146798\n\
- str r0, [r1]\n\
- cmp r5, 0\n\
- bge _08146788\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- adds r0, r2, 0\n\
- b _0814678A\n\
- .align 2, 0\n\
+ ldr r0, _08146780 @ =gTasks\n\
+ lsls r1, r7, 2\n\
+ adds r1, r7\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, _08146784 @ =sub_8146798\n\
+ str r0, [r1]\n\
+ cmp r5, 0\n\
+ bge _08146788\n\
+ movs r2, 0x10\n\
+ negs r2, r2\n\
+ adds r0, r2, 0\n\
+ b _0814678A\n\
+ .align 2, 0\n\
_08146780: .4byte gTasks\n\
_08146784: .4byte sub_8146798\n\
_08146788:\n\
- movs r0, 0x10\n\
+ movs r0, 0x10\n\
_0814678A:\n\
- strh r0, [r6]\n\
+ strh r0, [r6]\n\
_0814678C:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
-__attribute__((naked))
-void sub_8146798(u8 berry) {
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- ldr r1, _08146800 @ =gTasks + 0x8\n\
- adds r0, r1\n\
- ldr r2, _08146804 @ =gUnknown_030041B4\n\
- ldrh r1, [r0]\n\
- ldrh r5, [r2]\n\
- adds r3, r1, r5\n\
- movs r1, 0xFF\n\
- ands r3, r1\n\
- strh r3, [r2]\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- cmp r0, 0\n\
- ble _081467C2\n\
- cmp r3, 0x90\n\
- beq _081467CA\n\
-_081467C2:\n\
- cmp r0, 0\n\
- bge _081467E0\n\
- cmp r3, 0x70\n\
- bne _081467E0\n\
-_081467CA:\n\
- ldr r0, _08146808 @ =gTasks\n\
- lsls r1, r4, 2\n\
- adds r1, r4\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- movs r0, 0xA\n\
- ldrsb r0, [r1, r0]\n\
- bl sub_8146810\n\
- bl sub_81468BC\n\
-_081467E0:\n\
- ldr r0, _08146804 @ =gUnknown_030041B4\n\
- ldrh r2, [r0]\n\
- cmp r2, 0\n\
- bne _081467FA\n\
- ldr r0, _08146808 @ =gTasks\n\
- lsls r1, r4, 2\n\
- adds r1, r4\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- strh r2, [r1, 0x8]\n\
- strh r2, [r1, 0xA]\n\
- ldr r0, _0814680C @ =sub_8146480\n\
- str r0, [r1]\n\
-_081467FA:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08146800: .4byte gTasks + 0x8\n\
-_08146804: .4byte gUnknown_030041B4\n\
-_08146808: .4byte gTasks\n\
-_0814680C: .4byte sub_8146480\n\
- .syntax divided\n");
+void sub_8146798(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+
+ gUnknown_030041B4 = (gUnknown_030041B4 + taskData[0]) & 0xFF;
+ if ((taskData[0] > 0 && gUnknown_030041B4 == 144)
+ || (taskData[0] < 0 && gUnknown_030041B4 == 112))
+ {
+ sub_8146810(gTasks[taskId].data[1]);
+ sub_81468BC();
+ }
+ if (gUnknown_030041B4 == 0)
+ {
+ gTasks[taskId].data[0] = gUnknown_030041B4;
+ gTasks[taskId].data[1] = gUnknown_030041B4;
+ gTasks[taskId].func = sub_8146480;
+ }
}
__attribute__((naked))
-void sub_8146810(u8 berry) {
+static void sub_8146810(s8 berry)
+{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r4, r3, 0\n\
- lsls r0, r3, 24\n\
- asrs r1, r0, 24\n\
- cmp r1, 0\n\
- ble _08146848\n\
- ldr r0, _08146840 @ =gUnknown_03005D10\n\
- adds r4, r0, 0\n\
- adds r4, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0x7\n\
- ble _08146844\n\
- adds r0, r3, 0\n\
- adds r0, 0xF9\n\
- adds r0, r2, r0\n\
- ldrb r1, [r4, 0x1]\n\
- adds r0, r1\n\
- strb r0, [r4, 0x1]\n\
- movs r0, 0x7\n\
- b _0814686E\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ adds r4, r3, 0\n\
+ lsls r0, r3, 24\n\
+ asrs r1, r0, 24\n\
+ cmp r1, 0\n\
+ ble _08146848\n\
+ ldr r0, _08146840 @ =gUnknown_03005D10\n\
+ adds r4, r0, 0\n\
+ adds r4, 0xC\n\
+ ldrb r2, [r0, 0xC]\n\
+ adds r1, r2, r1\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0x7\n\
+ ble _08146844\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xF9\n\
+ adds r0, r2, r0\n\
+ ldrb r1, [r4, 0x1]\n\
+ adds r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ movs r0, 0x7\n\
+ b _0814686E\n\
+ .align 2, 0\n\
_08146840: .4byte gUnknown_03005D10\n\
_08146844:\n\
- adds r0, r2, r3\n\
- b _0814686E\n\
+ adds r0, r2, r3\n\
+ b _0814686E\n\
_08146848:\n\
- ldr r0, _08146868 @ =gUnknown_03005D10\n\
- adds r5, r0, 0\n\
- adds r5, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- bge _0814686C\n\
- adds r0, r2, r3\n\
- ldrb r1, [r5, 0x1]\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strb r0, [r5, 0x1]\n\
- strb r1, [r6, 0xC]\n\
- b _08146870\n\
- .align 2, 0\n\
+ ldr r0, _08146868 @ =gUnknown_03005D10\n\
+ adds r5, r0, 0\n\
+ adds r5, 0xC\n\
+ ldrb r2, [r0, 0xC]\n\
+ adds r1, r2, r1\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0\n\
+ bge _0814686C\n\
+ adds r0, r2, r3\n\
+ ldrb r1, [r5, 0x1]\n\
+ adds r0, r1\n\
+ movs r1, 0\n\
+ strb r0, [r5, 0x1]\n\
+ strb r1, [r6, 0xC]\n\
+ b _08146870\n\
+ .align 2, 0\n\
_08146868: .4byte gUnknown_03005D10\n\
_0814686C:\n\
- adds r0, r2, r4\n\
+ adds r0, r2, r4\n\
_0814686E:\n\
- strb r0, [r6, 0xC]\n\
+ strb r0, [r6, 0xC]\n\
_08146870:\n\
- ldr r2, _081468AC @ =gScriptItemId\n\
- movs r0, 0x3\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r0]\n\
- adds r1, r0\n\
- ldr r0, _081468B0 @ =gUnknown_03005D24\n\
- ldr r0, [r0]\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- ldr r0, _081468B4 @ =gUnknown_0203932C\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _081468B8 @ =gSprites\n\
- adds r0, r1\n\
- bl DestroySprite\n\
- bl sub_81466A0\n\
- bl sub_80A7DD4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldr r2, _081468AC @ =gScriptItemId\n\
+ movs r0, 0x3\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0, 0x1]\n\
+ ldrb r0, [r0]\n\
+ adds r1, r0\n\
+ ldr r0, _081468B0 @ =gUnknown_03005D24\n\
+ ldr r0, [r0]\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r2]\n\
+ ldr r0, _081468B4 @ =gUnknown_0203932C\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _081468B8 @ =gSprites\n\
+ adds r0, r1\n\
+ bl DestroySprite\n\
+ bl sub_81466A0\n\
+ bl sub_80A7DD4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081468AC: .4byte gScriptItemId\n\
_081468B0: .4byte gUnknown_03005D24\n\
_081468B4: .4byte gUnknown_0203932C\n\
_081468B8: .4byte gSprites\n\
- .syntax divided\n");
+ .syntax divided\n");
}
-void sub_81468BC(void) {
+static void sub_81468BC(void)
+{
MenuZeroFillWindowRect(0, 4, 29, 19);
sub_81464E4();
diff --git a/src/bike.c b/src/bike.c
new file mode 100644
index 000000000..7693c7539
--- /dev/null
+++ b/src/bike.c
@@ -0,0 +1,1015 @@
+#include "global.h"
+#include "global.fieldmap.h"
+#include "flags.h"
+#include "asm.h"
+#include "field_map_obj.h"
+#include "field_player_avatar.h"
+#include "metatile_behavior.h"
+#include "songs.h"
+#include "sound.h"
+#include "rom4.h"
+#include "bike.h"
+
+extern u8 sub_80608A4(u8);
+
+extern u8 gUnknown_02039250;
+extern u8 gUnknown_02039251;
+extern u8 gUnknown_0202E854;
+extern u8 gUnknown_0202E86C[];
+extern u8 gUnknown_0202E874[];
+
+static void MovePlayerOnMachBike(u8, u16, u16);
+static u8 GetMachBikeTransition(u8 *);
+static void MachBikeTransition_FaceDirection(u8);
+static void MachBikeTransition_80E517C(u8);
+static void MachBikeTransition_80E51C4(u8);
+static void MachBikeTransition_80E5270(u8);
+static void MovePlayerOnAcroBike(u8, u16, u16);
+static u8 CheckMovementInputAcroBike(u8 *, u16, u16);
+static u8 AcroBikeHandleInputNormal(u8 *, u16, u16);
+static u8 AcroBikeHandleInputTurning(u8 *, u16, u16);
+static u8 AcroBikeHandleInputWheelieStanding(u8 *, u16, u16);
+static u8 AcroBikeHandleInputBunnyHop(u8 *, u16, u16);
+static u8 AcroBikeHandleInputWheelieMoving(u8 *, u16, u16);
+static u8 AcroBikeHandleInputState5(u8 *, u16, u16);
+static u8 AcroBikeHandleInputState6(u8 *, u16, u16);
+static void AcroBikeTransition_FaceDirection(u8);
+static void AcroBikeTransition_80E5708(u8);
+static void AcroBikeTransition_80E5744(u8);
+static void AcroBikeTransition_NormalToWheelie(u8);
+static void AcroBikeTransition_80E57F8(u8);
+static void AcroBikeTransition_80E5834(u8);
+static void AcroBikeTransition_80E5870(u8);
+static void AcroBikeTransition_80E58AC(u8);
+static void AcroBikeTransition_80E5920(u8);
+static void AcroBikeTransition_80E5990(u8);
+static void AcroBikeTransition_80E59A0(u8);
+static void AcroBikeTransition_80E5A30(u8);
+static void AcroBikeTransition_80E5AC0(u8);
+static void sub_80E5B60(u16, u16);
+static u8 sub_80E5C2C(void);
+static void sub_80E5C7C(u8);
+static void sub_80E5CB8(u8);
+static u8 sub_80E5CF4(u16);
+static u8 get_some_collision(u8);
+static u8 sub_80E5DA0(struct MapObject *, s16, s16, u8, u8);
+static bool8 IsRunningDisallowedByMetatile(u8);
+static void sub_80E5E4C();
+static u8 CanBikeFaceDirOnMetatile(u8, u8);
+static bool8 sub_80E5EC0(u8, u8);
+static void sub_80E6024(void);
+
+static void (*const sMachBikeTransitions[])(u8) =
+{
+ MachBikeTransition_FaceDirection,
+ MachBikeTransition_80E517C,
+ MachBikeTransition_80E51C4,
+ MachBikeTransition_80E5270,
+};
+
+static void (*const gUnknown_083DB5A4[])(u8) =
+{
+ PlayerGoSpeed0,
+ sub_80593C4,
+ sub_80593F4,
+};
+
+static void (*const sAcroBikeTransitions[])(u8) =
+{
+ AcroBikeTransition_FaceDirection,
+ AcroBikeTransition_80E5708,
+ AcroBikeTransition_80E5744,
+ AcroBikeTransition_NormalToWheelie,
+ AcroBikeTransition_80E57F8,
+ AcroBikeTransition_80E5834,
+ AcroBikeTransition_80E5870,
+ AcroBikeTransition_80E58AC,
+ AcroBikeTransition_80E5920,
+ AcroBikeTransition_80E5990,
+ AcroBikeTransition_80E59A0,
+ AcroBikeTransition_80E5A30,
+ AcroBikeTransition_80E5AC0,
+};
+
+static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) =
+{
+ AcroBikeHandleInputNormal,
+ AcroBikeHandleInputTurning,
+ AcroBikeHandleInputWheelieStanding,
+ AcroBikeHandleInputBunnyHop,
+ AcroBikeHandleInputWheelieMoving,
+ AcroBikeHandleInputState5,
+ AcroBikeHandleInputState6,
+};
+
+const u16 gMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST};
+static const u8 Unknown_3DB606[] = {4, 0};
+
+static const struct UnknownStruct1 gUnknown_083DB608[] =
+{
+ {1, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 1},
+ {2, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 2},
+ {3, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 3},
+ {4, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 4},
+};
+
+void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
+ MovePlayerOnMachBike(direction, newKeys, heldKeys);
+ else
+ MovePlayerOnAcroBike(direction, newKeys, heldKeys);
+}
+
+static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ sMachBikeTransitions[GetMachBikeTransition(&direction)](direction);
+}
+
+static u8 GetMachBikeTransition(u8 *ptr)
+{
+ u8 direction = player_get_direction_upper_nybble();
+
+ if (*ptr == 0)
+ {
+ *ptr = direction;
+ if (gPlayerAvatar.unkB == 0)
+ {
+ gPlayerAvatar.running2 = 0;
+ return 0;
+ }
+ gPlayerAvatar.running2 = 2;
+ return 3;
+ }
+
+ if (*ptr != direction && gPlayerAvatar.running2 != 2)
+ {
+ if (gPlayerAvatar.unkB != 0)
+ {
+ *ptr = direction;
+ gPlayerAvatar.running2 = 2;
+ return 3;
+ }
+ gPlayerAvatar.running2 = 1;
+ return 1;
+ }
+ else
+ {
+ gPlayerAvatar.running2 = 2;
+ return 2;
+ }
+}
+
+static void MachBikeTransition_FaceDirection(u8 direction)
+{
+ PlayerFaceDirection(direction);
+ sub_80E6024();
+}
+
+static void MachBikeTransition_80E517C(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E))
+ {
+ PlayerTurnInPlace(direction);
+ sub_80E6024();
+ }
+ else
+ {
+ MachBikeTransition_FaceDirection(playerMapObj->mapobj_unk_18);
+ }
+}
+
+static void MachBikeTransition_80E51C4(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 collision;
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ {
+ if (gPlayerAvatar.unkB)
+ MachBikeTransition_80E5270(playerMapObj->placeholder18);
+ else
+ MachBikeTransition_FaceDirection(playerMapObj->placeholder18);
+ }
+ else
+ {
+ collision = get_some_collision(direction);
+ if (collision > 0 && collision < 12)
+ {
+ if (collision == COLLISION_LEDGE_JUMP)
+ {
+ PlayerJumpLedge(direction);
+ }
+ else
+ {
+ sub_80E6024();
+ if (collision < 5 || collision > 8)
+ PlayerOnBikeCollide(direction);
+ }
+ }
+ else
+ {
+ gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](direction);
+ gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // same as dividing by 2, but compiler is insistent on >> 1
+ if (gPlayerAvatar.bikeFrameCounter < 2) // do not go faster than the last element in the mach bike array
+ gPlayerAvatar.bikeFrameCounter++;
+ }
+ }
+}
+
+static void MachBikeTransition_80E5270(u8 var)
+{
+ u8 collision;
+
+ if (gPlayerAvatar.unkB != 0)
+ gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.unkB;
+
+ collision = get_some_collision(var);
+
+ if (collision > 0 && collision < 12)
+ {
+ if (collision == COLLISION_LEDGE_JUMP)
+ {
+ PlayerJumpLedge(var);
+ }
+ else
+ {
+ sub_80E6024();
+ if (collision < 5 || collision > 8)
+ PlayerOnBikeCollide(var);
+ }
+ }
+ else
+ {
+ gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](var);
+ }
+}
+
+static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys)
+{
+ sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection);
+}
+
+static u8 CheckMovementInputAcroBike(u8 *newDirection, u16 newKeys, u16 heldKeys)
+{
+ return sAcroBikeInputHandlers[gPlayerAvatar.acroBikeState](newDirection, newKeys, heldKeys);
+}
+
+static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys)
+{
+ u8 direction = player_get_direction_upper_nybble();
+
+ gPlayerAvatar.bikeFrameCounter = 0;
+ if (*newDirection == DIR_NONE)
+ {
+ if (newKeys & B_BUTTON)
+ {
+ //We're standing still with the B button held.
+ //Do a wheelie.
+ *newDirection = direction;
+ gPlayerAvatar.running2 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ return ACRO_TRANS_NORMAL_TO_WHEELIE;
+ }
+ else
+ {
+ *newDirection = direction;
+ gPlayerAvatar.running2 = 0;
+ return ACRO_TRANS_FACE_DIRECTION;
+ }
+ }
+ if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.unkB == 0)
+ {
+ gPlayerAvatar.unkB++;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING;
+ return 11;
+ }
+ if (*newDirection != direction && gPlayerAvatar.running2 != 2)
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING;
+ gPlayerAvatar.unk9 = *newDirection;
+ gPlayerAvatar.running2 = 0;
+ return CheckMovementInputAcroBike(newDirection, newKeys, heldKeys);
+ }
+ gPlayerAvatar.running2 = 2;
+ return 2;
+}
+
+static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys)
+{
+ u8 direction;
+
+ *newDirection = gPlayerAvatar.unk9;
+ gPlayerAvatar.bikeFrameCounter++;
+
+ //Wait 6 frames before actually changing direction
+ if (gPlayerAvatar.bikeFrameCounter > 6)
+ {
+ gPlayerAvatar.running2 = 1;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ sub_80E6024();
+ return 1;
+ }
+ direction = player_get_direction_upper_nybble();
+ if (*newDirection == sub_80E5C2C())
+ {
+ sub_80E6024();
+ gPlayerAvatar.unkB = 1;
+ if (*newDirection == GetOppositeDirection(direction))
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_6;
+ return 9;
+ }
+ else
+ {
+ gPlayerAvatar.running2 = 2;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_5;
+ return 8;
+ }
+ }
+ *newDirection = direction;
+ return 0;
+}
+
+static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys)
+{
+ u8 direction;
+ struct MapObject *playerMapObj;
+
+ direction = player_get_direction_upper_nybble();
+ playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ gPlayerAvatar.running2 = 0;
+
+ if (heldKeys & B_BUTTON)
+ gPlayerAvatar.bikeFrameCounter++;
+ else
+ {
+ //B button was released.
+ gPlayerAvatar.bikeFrameCounter = 0;
+ if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ {
+ //Go back to normal on flat ground
+ *ptr = direction;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ sub_80E6024();
+ return 4;
+ }
+ }
+ if (gPlayerAvatar.bikeFrameCounter >= 40)
+ {
+ *ptr = direction;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_BUNNY_HOP;
+ sub_80E6024();
+ return 6;
+ }
+ if (*ptr == direction)
+ {
+ gPlayerAvatar.running2 = 2;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING;
+ sub_80E6024();
+ return 10;
+ }
+ if (*ptr == 0)
+ {
+ *ptr = direction;
+ return 5;
+ }
+ gPlayerAvatar.running2 = 1;
+ return 5;
+}
+
+static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys)
+{
+ u8 direction;
+ struct MapObject *playerMapObj;
+
+ direction = player_get_direction_upper_nybble();
+ playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ if (!(heldKeys & B_BUTTON))
+ {
+ //B button was released
+ sub_80E6024();
+ if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ {
+ //Do a standing wheelie on a bumpy slope
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
+ }
+ else
+ {
+ //Go back to normal on flat ground
+ *ptr = direction;
+ gPlayerAvatar.running2 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ return 4;
+ }
+ }
+
+ //B Button is still held
+
+ if (*ptr == DIR_NONE)
+ {
+ *ptr = direction;
+ gPlayerAvatar.running2 = 0;
+ return 6;
+ }
+ if (*ptr != direction && gPlayerAvatar.running2 != 2)
+ {
+ gPlayerAvatar.running2 = 1;
+ return 6;
+ }
+ gPlayerAvatar.running2 = 2;
+ return 7;
+}
+
+static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys)
+{
+ u8 direction;
+ struct MapObject *playerMapObj;
+
+ direction = player_get_direction_lower_nybble();
+ playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ if (!(heldKeys & B_BUTTON))
+ {
+ sub_80E6024();
+ if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ if (*ptr == 0)
+ {
+ *ptr = direction;
+ gPlayerAvatar.running2 = 0;
+ return 4;
+ }
+ if (*ptr != direction && gPlayerAvatar.running2 != 2)
+ {
+ gPlayerAvatar.running2 = 0;
+ return 4;
+ }
+ gPlayerAvatar.running2 = 2;
+ return 12;
+ }
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
+ }
+ if (*ptr == 0)
+ {
+ *ptr = direction;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ gPlayerAvatar.running2 = 0;
+ sub_80E6024();
+ return 5;
+ }
+ if (direction != *ptr && gPlayerAvatar.running2 != 2)
+ {
+ gPlayerAvatar.running2 = 0;
+ return 5;
+ }
+ gPlayerAvatar.running2 = 2;
+ return 10;
+}
+
+static u8 AcroBikeHandleInputState5(u8 *ptr, u16 newKeys, u16 heldKeys)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ playerMapObj->mapobj_bit_9 = 0;
+ FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
+}
+
+static u8 AcroBikeHandleInputState6(u8 *ptr, u16 newKeys, u16 heldKeys)
+{
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
+}
+
+static void AcroBikeTransition_FaceDirection(u8 direction)
+{
+ PlayerFaceDirection(direction);
+}
+
+static void AcroBikeTransition_80E5708(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ direction = playerMapObj->placeholder18;
+ PlayerFaceDirection(direction);
+}
+
+static void AcroBikeTransition_80E5744(u8 direction)
+{
+ u8 collision;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ {
+ AcroBikeTransition_FaceDirection(playerMapObj->placeholder18);
+ return;
+ }
+ collision = get_some_collision(direction);
+ if (collision > 0 && collision < 12)
+ {
+ if (collision == COLLISION_LEDGE_JUMP)
+ PlayerJumpLedge(direction);
+ else if (collision < 5 || collision > 8)
+ PlayerOnBikeCollide(direction);
+ }
+ else
+ {
+ npc_use_some_d2s(direction);
+ }
+}
+
+static void AcroBikeTransition_NormalToWheelie(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ direction = playerMapObj->placeholder18;
+ PlayerStartWheelie(direction);
+}
+
+static void AcroBikeTransition_80E57F8(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ direction = playerMapObj->placeholder18;
+ sub_8059534(direction);
+}
+
+static void AcroBikeTransition_80E5834(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ direction = playerMapObj->placeholder18;
+ sub_8059504(direction);
+}
+
+static void AcroBikeTransition_80E5870(u8 direction)
+{
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ direction = playerMapObj->placeholder18;
+ sub_805954C(direction);
+}
+
+static void AcroBikeTransition_80E58AC(u8 direction)
+{
+ u8 var;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ {
+ AcroBikeTransition_80E5870(playerMapObj->placeholder18);
+ return;
+ }
+ var = get_some_collision(direction);
+ //TODO: Try to get rid of this goto
+ if (var == 0 || var == 9)
+ {
+ goto derp;
+ }
+ else if (var == 6)
+ {
+ sub_8059594(direction);
+ }
+ else if (var < 5 || var > 8)
+ {
+ if (var <= 11)
+ {
+ AcroBikeTransition_80E5870(direction);
+ }
+ else
+ {
+ derp:
+ sub_8059570(direction);
+ }
+ }
+}
+
+static void AcroBikeTransition_80E5920(u8 direction)
+{
+ u8 var;
+ struct MapObject *playerMapObj;
+
+ var = get_some_collision(direction);
+ if (var != 0)
+ {
+ if (var == 7)
+ return;
+ if (var < 10)
+ {
+ AcroBikeTransition_80E5708(direction);
+ return;
+ }
+ if (sub_80E5EC0(var, direction) == 0)
+ {
+ AcroBikeTransition_80E5708(direction);
+ return;
+ }
+ }
+ playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ PlaySE(SE_JITE_PYOKO);
+ playerMapObj->mapobj_bit_9 = 1;
+ PlayerSetAnimId(sub_80608A4(direction), 2);
+}
+
+static void AcroBikeTransition_80E5990(u8 direction)
+{
+ sub_80595B8(direction);
+}
+
+static void AcroBikeTransition_80E59A0(u8 direction)
+{
+ u8 var;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ {
+ sub_8059504(playerMapObj->placeholder18);
+ return;
+ }
+ var = get_some_collision(direction);
+ if (var > 0 && var < 12)
+ {
+ if (var == 6)
+ {
+ sub_8059594(direction);
+ }
+ else if (var == 9)
+ {
+ sub_8059504(direction);
+ }
+ else if (var <= 4)
+ {
+ if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ sub_8059504(direction);
+ else
+ sub_80595DC(direction); //hit wall?
+ }
+ return;
+ }
+ sub_8059618(direction);
+ gPlayerAvatar.running2 = 2;
+}
+
+static void AcroBikeTransition_80E5A30(u8 direction)
+{
+ u8 var;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ {
+ PlayerStartWheelie(playerMapObj->placeholder18);
+ return;
+ }
+ var = get_some_collision(direction);
+ if (var > 0 && var < 12)
+ {
+ if (var == 6)
+ {
+ sub_8059594(direction);
+ }
+ else if (var == 9)
+ {
+ sub_8059504(direction);
+ }
+ else if (var <= 4)
+ {
+ if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ sub_8059504(direction);
+ else
+ sub_80595DC(direction); //hit wall?
+ }
+ return;
+ }
+ sub_8059600(direction);
+ gPlayerAvatar.running2 = 2;
+}
+
+static void AcroBikeTransition_80E5AC0(u8 direction)
+{
+ u8 var;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ {
+ sub_8059534(playerMapObj->placeholder18);
+ return;
+ }
+ var = get_some_collision(direction);
+ if (var > 0 && var < 12)
+ {
+ if (var == 6)
+ PlayerJumpLedge(direction);
+ else if (var < 5 || var > 8)
+ sub_8059534(direction);
+ return;
+ }
+ sub_8059630(direction);
+}
+
+void sub_80E5B38(u16 a, u16 b)
+{
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ sub_80E5B60(a, b);
+}
+
+static void sub_80E5B60(u16 unused, u16 b)
+{
+ u8 var;
+
+ var = sub_80E5CF4(b);
+ if (var == (gPlayerAvatar.unkC & 0xF))
+ {
+ if (gPlayerAvatar.unk14[0] < 0xFF)
+ gPlayerAvatar.unk14[0]++;
+ }
+ else
+ {
+ sub_80E5C7C(var);
+ gPlayerAvatar.unkB = 0;
+ }
+
+ var = b & 0xF;
+ if (var == (gPlayerAvatar.unk10 & 0xF))
+ {
+ if (gPlayerAvatar.unk1C[0] < 0xFF)
+ gPlayerAvatar.unk1C[0]++;
+ }
+ else
+ {
+ sub_80E5CB8(var);
+ gPlayerAvatar.unkB = 0;
+ }
+}
+
+static bool8 sub_80E5BC8(const u8 *a, const u8 *b)
+{
+ u8 i;
+
+ for (i = 0; a[i] != 0; i++)
+ {
+ if (gUnknown_0202E86C[i] > a[i])
+ return FALSE;
+ }
+ for (i = 0; b[i] != 0; i++)
+ {
+ if (gUnknown_0202E874[i] > b[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static u8 sub_80E5C2C(void)
+{
+ u32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ const struct UnknownStruct1 *s = &gUnknown_083DB608[i];
+ u32 r1 = gPlayerAvatar.unkC;
+ u32 r2 = gPlayerAvatar.unk10;
+
+ r1 &= s->unk8;
+ r2 &= s->unkC;
+ if (r1 == s->unk0 && r2 == s->unk4 && sub_80E5BC8(s->unk10, s->unk14))
+ return s->unk18;
+ }
+ return 0;
+}
+
+static void sub_80E5C7C(u8 a)
+{
+ u8 i;
+
+ gPlayerAvatar.unkC = (gPlayerAvatar.unkC << 4) | (a & 0xF);
+
+ for (i = 7; i != 0; i--)
+ gPlayerAvatar.unk14[i] = gPlayerAvatar.unk14[i - 1];
+ gPlayerAvatar.unk14[0] = 1;
+}
+
+static void sub_80E5CB8(u8 a)
+{
+ u8 i;
+
+ gPlayerAvatar.unk10 = (gPlayerAvatar.unk10 << 4) | (a & 0xF);
+
+ for (i = 7; i != 0; i--)
+ gPlayerAvatar.unk1C[i] = gPlayerAvatar.unk1C[i - 1];
+ gPlayerAvatar.unk1C[0] = 1;
+}
+
+static u8 sub_80E5CF4(u16 a)
+{
+ if (a & 0x40)
+ return 2;
+ if (a & 0x80)
+ return 1;
+ if (a & 0x20)
+ return 3;
+ if (a & 0x10)
+ return 4;
+ return 0;
+}
+
+static u8 get_some_collision(u8 direction)
+{
+ s16 x;
+ s16 y;
+ u8 metatitleBehavior;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ x = playerMapObj->coords2.x;
+ y = playerMapObj->coords2.y;
+ MoveCoords(direction, &x, &y);
+ metatitleBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ return sub_80E5DA0(playerMapObj, x, y, direction, metatitleBehavior);
+}
+
+static u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
+{
+ u8 collision = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior);
+
+ if (collision > 4)
+ return collision;
+
+ if (collision == 0 && IsRunningDisallowedByMetatile(metatitleBehavior))
+ collision = 2;
+
+ if (collision)
+ sub_80E5E4C();
+
+ return collision;
+}
+
+bool8 IsRunningDisallowed(u8 tile)
+{
+ if (IsRunningDisallowedByMetatile(tile) != FALSE || gMapHeader.mapType == MAP_TYPE_INDOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 IsRunningDisallowedByMetatile(u8 tile)
+{
+ if (MetatileBehavior_IsRunningDisallowed(tile))
+ return TRUE;
+ if (MetatileBehavior_IsFortreeBridge(tile) && (PlayerGetZCoord() & 1) == 0)
+ return TRUE;
+ return FALSE;
+}
+
+static void sub_80E5E4C(void)
+{
+ if (gUnknown_02039250 != 0 && gUnknown_02039251 < 100)
+ gUnknown_02039251++;
+}
+
+static bool8 CanBikeFaceDirOnMetatile(u8 direction, u8 tile)
+{
+ if (direction == DIR_EAST || direction == DIR_WEST)
+ {
+ //Bike cannot face east or west on a vertical rail
+ if (MetatileBehavior_IsIsolatedVerticalRail(tile)
+ || MetatileBehavior_IsVerticalRail(tile))
+ return FALSE;
+ }
+ else
+ {
+ //Bike cannot face north or south on a horizontal rail
+ if (MetatileBehavior_IsIsolatedHorizontalRail(tile)
+ || MetatileBehavior_IsHorizontalRail(tile))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_80E5EC0(u8 var1, u8 direction)
+{
+ if (direction == DIR_NORTH || direction == DIR_SOUTH)
+ {
+ if (var1 == 10 || var1 == 12)
+ return FALSE;
+ }
+ else if (var1 == 11 || var1 == 13)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 IsBikingDisallowedByPlayer(void)
+{
+ s16 x, y;
+ u8 tileBehavior;
+
+ if (!(gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_4)))
+ {
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (!IsRunningDisallowedByMetatile(tileBehavior))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 player_should_look_direction_be_enforced_upon_movement(void)
+{
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) != FALSE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void GetOnOffBike(u8 var)
+{
+ gUnknown_0202E854 = 0;
+
+ if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ {
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
+ sav1_reset_battle_music_maybe();
+ sub_8053E90();
+ }
+ else
+ {
+ SetPlayerAvatarTransitionFlags(var);
+ sav1_set_battle_music_maybe(BGM_CYCLING);
+ sub_8053FB0(BGM_CYCLING);
+ }
+}
+
+void BikeClearState(int var1, int var2)
+{
+ u8 i;
+
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ gPlayerAvatar.unk9 = 0;
+ gPlayerAvatar.bikeFrameCounter = 0;
+ gPlayerAvatar.unkB = 0;
+ gPlayerAvatar.unkC = var1;
+ gPlayerAvatar.unk10 = var2;
+
+ for (i = 0; i < 8; i++)
+ gPlayerAvatar.unk14[i] = 0;
+
+ for (i = 0; i < 8; i++)
+ gPlayerAvatar.unk1C[i] = 0;
+}
+
+void sub_80E6010(u8 var)
+{
+ gPlayerAvatar.bikeFrameCounter = var;
+ gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // lazy way of multiplying by 1.5.
+}
+
+static void sub_80E6024(void)
+{
+ gPlayerAvatar.bikeFrameCounter = 0;
+ gPlayerAvatar.unkB = 0;
+}
+
+s16 GetPlayerSpeed(void)
+{
+ // because the player pressed a direction, it won't ever return a speed of 0 since this function returns the player's current speed.
+ s16 machSpeeds[3];
+
+ memcpy(machSpeeds, gMachBikeSpeeds, sizeof(machSpeeds));
+
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
+ return machSpeeds[gPlayerAvatar.bikeFrameCounter];
+ else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ return SPEED_FASTER;
+ else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH))
+ return SPEED_FAST;
+ else
+ return SPEED_NORMAL;
+}
+
+void sub_80E6084(void)
+{
+ s16 x, y;
+ u8 tileBehavior;
+
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ {
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsBumpySlope(tileBehavior))
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ sub_8059C94(player_get_direction_upper_nybble());
+ }
+ }
+}
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
new file mode 100644
index 000000000..94643691c
--- /dev/null
+++ b/src/braille_puzzles.c
@@ -0,0 +1,259 @@
+#include "global.h"
+#include "asm.h"
+#include "event_data.h"
+#include "field_camera.h"
+#include "field_effect.h"
+#include "flags.h"
+#include "map_obj_lock.h"
+#include "menu.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "species.h"
+#include "task.h"
+#include "text.h"
+#include "braille_puzzles.h"
+#include "rom6.h"
+
+extern u8 gPlayerPartyCount;
+extern u8 gLastFieldPokeMenuOpened;
+
+extern u32 gUnknown_0202FF84[];
+
+extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script
+
+bool8 ShouldDoBrailleDigEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_DIG) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x47))
+ {
+ if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3)
+ return TRUE;
+ else if (gSaveBlock1.pos.x == 9 && gSaveBlock1.pos.y == 3)
+ return TRUE;
+ else if (gSaveBlock1.pos.x == 11 && gSaveBlock1.pos.y == 3)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void DoBrailleDigEffect(void)
+{
+ MapGridSetMetatileIdAt(16, 8, 554);
+ MapGridSetMetatileIdAt(17, 8, 555);
+ MapGridSetMetatileIdAt(18, 8, 556);
+ MapGridSetMetatileIdAt(16, 9, 3634);
+ MapGridSetMetatileIdAt(17, 9, 563);
+ MapGridSetMetatileIdAt(18, 9, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_DIG);
+ ScriptContext2_Disable();
+}
+
+bool8 CheckRelicanthWailord(void)
+{
+ if (GetMonData(&gPlayerParty, MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH)
+ {
+ CalculatePlayerPartyCount();
+
+ if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 ShouldDoBrailleStrengthEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x6))
+ {
+ if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
+ return TRUE;
+ else if (gSaveBlock1.pos.x == 9 && gSaveBlock1.pos.y == 23)
+ return TRUE;
+ else if (gSaveBlock1.pos.x == 11 && gSaveBlock1.pos.y == 23)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void DoBrailleStrengthEffect(void)
+{
+ FieldEffectActiveListRemove(0x28);
+ MapGridSetMetatileIdAt(14, 26, 554);
+ MapGridSetMetatileIdAt(15, 26, 555);
+ MapGridSetMetatileIdAt(16, 26, 556);
+ MapGridSetMetatileIdAt(14, 27, 3634);
+ MapGridSetMetatileIdAt(15, 27, 563);
+ MapGridSetMetatileIdAt(16, 27, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_STRENGTH);
+ ScriptContext2_Disable();
+}
+
+bool8 ShouldDoBrailleFlyEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x44))
+ {
+ if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void DoBrailleFlyEffect(void)
+{
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(0x3C);
+}
+
+bool8 FldEff_UseFlyAncientTomb(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
+ return FALSE;
+}
+
+void UseFlyAncientTomb_Callback(void)
+{
+ FieldEffectActiveListRemove(0x3C);
+ UseFlyAncientTomb_Finish();
+}
+
+void UseFlyAncientTomb_Finish(void)
+{
+ MapGridSetMetatileIdAt(14, 26, 554);
+ MapGridSetMetatileIdAt(15, 26, 555);
+ MapGridSetMetatileIdAt(16, 26, 556);
+ MapGridSetMetatileIdAt(14, 27, 3634);
+ MapGridSetMetatileIdAt(15, 27, 563);
+ MapGridSetMetatileIdAt(16, 27, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_FLY);
+ ScriptContext2_Disable();
+}
+
+void DoBrailleWait(void)
+{
+ if (!FlagGet(SYS_BRAILLE_WAIT))
+ CreateTask(Task_BrailleWait, 0x50);
+}
+
+void Task_BrailleWait(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ 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();
+ 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;
+ }
+ 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;
+ }
+}
+
+bool32 BrailleWait_CheckButtonPress(void)
+{
+ u16 var = 0xFF;
+
+ if (gSaveBlock2.optionsButtonMode == 1)
+ var |= 0x300;
+ if (gSaveBlock2.optionsButtonMode == 2)
+ var |= 0x200;
+
+ if ((var & gMain.newKeys) != FALSE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void DoSealedChamberShakingEffect1(void)
+{
+ u8 taskId = CreateTask(SealedChamberShakingEffect, 0x9);
+
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 2;
+ gTasks[taskId].data[5] = 5;
+ gTasks[taskId].data[6] = 50;
+ SetCameraPanningCallback(0);
+}
+
+void DoSealedChamberShakingEffect2(void)
+{
+ u8 taskId = CreateTask(SealedChamberShakingEffect, 0x9);
+
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 3;
+ gTasks[taskId].data[5] = 5;
+ gTasks[taskId].data[6] = 2;
+ SetCameraPanningCallback(0);
+}
+
+void SealedChamberShakingEffect(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[1]++;
+
+ if (!(task->data[1] % task->data[5]))
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ task->data[4] = -task->data[4];
+ SetCameraPanning(0, task->data[4]);
+ if (task->data[2] == task->data[6])
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ InstallCameraPanAheadCallback();
+ }
+ }
+}
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 86446e588..293e2f24d 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -1,17 +1,17 @@
#include "global.h"
-#include "text.h"
-#include "string_util.h"
-#include "pokemon.h"
-#include "species.h"
-#include "main.h"
-#include "sprite.h"
-#include "berry.h"
-#include "item.h"
#include "abilities.h"
-#include "hold_effects.h"
-#include "event_data.h"
#include "battle.h"
+#include "berry.h"
+#include "event_data.h"
+#include "hold_effects.h"
+#include "item.h"
#include "items.h"
+#include "main.h"
+#include "pokemon.h"
+#include "species.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "text.h"
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[6];
@@ -292,10 +292,10 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
damage /= 2;
- // are effects of weather negated with cloud nine or air lock?
+ // are effects of weather negated with cloud nine or air lock?
if (!sub_8018324(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !sub_8018324(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
{
- // rain?
+ // rain?
if (gBattleWeather & 1)
{
if (type == TYPE_FIRE)
@@ -307,7 +307,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
// does lack of sun half solar beam damage?
if ((gBattleWeather & 0x9F) && gUnknown_02024BE6 == 76)
damage /= 2;
-
+
// sunny?
if (gBattleWeather & 0x60)
{
@@ -330,328 +330,328 @@ __attribute__((naked))
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x2C\n\
- adds r7, r0, 0\n\
- str r1, [sp, 0x4]\n\
- str r2, [sp, 0x8]\n\
- ldr r0, [sp, 0x4C]\n\
- ldr r1, [sp, 0x50]\n\
- ldr r2, [sp, 0x54]\n\
- ldr r4, [sp, 0x58]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0xC]\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x10]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r5, 0\n\
- cmp r3, 0\n\
- bne _0803BA80\n\
- ldr r2, _0803BA78 @ =gBattleMovePower\n\
- ldr r1, _0803BA7C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x1]\n\
- strh r0, [r2]\n\
- b _0803BA84\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x2C\n\
+ adds r7, r0, 0\n\
+ str r1, [sp, 0x4]\n\
+ str r2, [sp, 0x8]\n\
+ ldr r0, [sp, 0x4C]\n\
+ ldr r1, [sp, 0x50]\n\
+ ldr r2, [sp, 0x54]\n\
+ ldr r4, [sp, 0x58]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0xC]\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ lsls r1, 24\n\
+ lsrs r6, r1, 24\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x10]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r5, 0\n\
+ cmp r3, 0\n\
+ bne _0803BA80\n\
+ ldr r2, _0803BA78 @ =gBattleMovePower\n\
+ ldr r1, _0803BA7C @ =gBattleMoves\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x1]\n\
+ strh r0, [r2]\n\
+ b _0803BA84\n\
+ .align 2, 0\n\
_0803BA78: .4byte gBattleMovePower\n\
_0803BA7C: .4byte gBattleMoves\n\
_0803BA80:\n\
- ldr r0, _0803BA9C @ =gBattleMovePower\n\
- strh r3, [r0]\n\
+ ldr r0, _0803BA9C @ =gBattleMovePower\n\
+ strh r3, [r0]\n\
_0803BA84:\n\
- cmp r6, 0\n\
- bne _0803BAA4\n\
- ldr r1, _0803BAA0 @ =gBattleMoves\n\
- ldr r6, [sp, 0x8]\n\
- lsls r0, r6, 1\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- mov r9, r0\n\
- b _0803BAAE\n\
- .align 2, 0\n\
+ cmp r6, 0\n\
+ bne _0803BAA4\n\
+ ldr r1, _0803BAA0 @ =gBattleMoves\n\
+ ldr r6, [sp, 0x8]\n\
+ lsls r0, r6, 1\n\
+ adds r0, r6\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ mov r9, r0\n\
+ b _0803BAAE\n\
+ .align 2, 0\n\
_0803BA9C: .4byte gBattleMovePower\n\
_0803BAA0: .4byte gBattleMoves\n\
_0803BAA4:\n\
- movs r0, 0x3F\n\
- mov r9, r0\n\
- mov r1, r9\n\
- ands r1, r6\n\
- mov r9, r1\n\
+ movs r0, 0x3F\n\
+ mov r9, r0\n\
+ mov r1, r9\n\
+ ands r1, r6\n\
+ mov r9, r1\n\
_0803BAAE:\n\
- ldrh r6, [r7, 0x2]\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2, 0x4]\n\
- str r2, [sp, 0x14]\n\
- ldrh r3, [r7, 0x8]\n\
- mov r8, r3\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- str r0, [sp, 0x18]\n\
- ldrh r0, [r7, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BAE0\n\
- ldr r1, _0803BADC @ =gEnigmaBerries\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 3\n\
- subs r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x7]\n\
- mov r10, r3\n\
- ldrb r0, [r0, 0x1A]\n\
- b _0803BAF6\n\
- .align 2, 0\n\
+ ldrh r6, [r7, 0x2]\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r2, [r2, 0x4]\n\
+ str r2, [sp, 0x14]\n\
+ ldrh r3, [r7, 0x8]\n\
+ mov r8, r3\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ str r0, [sp, 0x18]\n\
+ ldrh r0, [r7, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _0803BAE0\n\
+ ldr r1, _0803BADC @ =gEnigmaBerries\n\
+ ldr r2, [sp, 0x10]\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r3, [r0, 0x7]\n\
+ mov r10, r3\n\
+ ldrb r0, [r0, 0x1A]\n\
+ b _0803BAF6\n\
+ .align 2, 0\n\
_0803BADC: .4byte gEnigmaBerries\n\
_0803BAE0:\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
+ ldrh r0, [r7, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldrh r0, [r7, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
_0803BAF6:\n\
- str r0, [sp, 0x20]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BB26\n\
- ldr r1, _0803BB10 @ =gEnigmaBerries\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x7]\n\
- str r0, [sp, 0x1C]\n\
- b _0803BB3C\n\
- .align 2, 0\n\
+ str r0, [sp, 0x20]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _0803BB26\n\
+ ldr r1, _0803BB10 @ =gEnigmaBerries\n\
+ lsls r0, r4, 3\n\
+ subs r0, r4\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x7]\n\
+ str r0, [sp, 0x1C]\n\
+ b _0803BB3C\n\
+ .align 2, 0\n\
_0803BB10: .4byte gEnigmaBerries\n\
_0803BB14:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0803BCDC\n\
+ ldr r0, [sp, 0x20]\n\
+ adds r0, 0x64\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ b _0803BCDC\n\
_0803BB26:\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r0, [r2, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r0, [r3, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r0, [r2, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x1C]\n\
+ ldr r3, [sp, 0x4]\n\
+ ldrh r0, [r3, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
_0803BB3C:\n\
- adds r0, r7, 0\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- str r0, [sp, 0x24]\n\
- cmp r1, 0x25\n\
- beq _0803BB4C\n\
- cmp r1, 0x4A\n\
- bne _0803BB50\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ str r0, [sp, 0x24]\n\
+ cmp r1, 0x25\n\
+ beq _0803BB4C\n\
+ cmp r1, 0x4A\n\
+ bne _0803BB50\n\
_0803BB4C:\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
+ lsls r0, r6, 17\n\
+ lsrs r6, r0, 16\n\
_0803BB50:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB5E\n\
- b _0803BC78\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BB5E\n\
+ b _0803BC78\n\
_0803BB5E:\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC4 @ =0x00000807\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, [sp, 0x10]\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BB98\n\
- movs r0, 0x6E\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BB98\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BB98\n\
+ ldr r0, _0803BCC4 @ =0x00000807\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BB98\n\
+ ldr r0, [sp, 0x10]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BB98\n\
+ movs r0, 0x6E\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BB98:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC8 @ =0x0000080b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- adds r0, r4, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BBE2\n\
- movs r0, 0x6E\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BBE2\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BBE2\n\
+ ldr r0, _0803BCC8 @ =0x0000080b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BBE2\n\
+ adds r0, r4, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BBE2\n\
+ movs r0, 0x6E\n\
+ ldr r1, [sp, 0x14]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BBE2:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, [sp, 0x10]\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC2E\n\
- movs r0, 0x6E\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BC2E\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BC2E\n\
+ ldr r0, _0803BCCC @ =0x0000080d\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BC2E\n\
+ ldr r0, [sp, 0x10]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BC2E\n\
+ movs r0, 0x6E\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BC2E:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- adds r0, r4, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x6E\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BC78\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BC78\n\
+ ldr r0, _0803BCCC @ =0x0000080d\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BC78\n\
+ adds r0, r4, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x6E\n\
+ ldr r3, [sp, 0x18]\n\
+ muls r0, r3\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BC78:\n\
- movs r2, 0\n\
- ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x28]\n\
- adds r3, r4, 0\n\
+ movs r2, 0\n\
+ ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x20\n\
+ str r0, [sp, 0x28]\n\
+ adds r3, r4, 0\n\
_0803BC84:\n\
- lsls r1, r2, 1\n\
- ldrb r0, [r3]\n\
- cmp r10, r0\n\
- bne _0803BCD4\n\
- adds r0, r4, 0x1\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- cmp r9, r0\n\
- bne _0803BCD4\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bhi _0803BC9E\n\
- b _0803BB14\n\
+ lsls r1, r2, 1\n\
+ ldrb r0, [r3]\n\
+ cmp r10, r0\n\
+ bne _0803BCD4\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r9, r0\n\
+ bne _0803BCD4\n\
+ mov r1, r9\n\
+ cmp r1, 0x8\n\
+ bhi _0803BC9E\n\
+ b _0803BB14\n\
_0803BC9E:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- b _0803BCDC\n\
- .align 2, 0\n\
+ ldr r0, [sp, 0x20]\n\
+ adds r0, 0x64\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ b _0803BCDC\n\
+ .align 2, 0\n\
_0803BCB8: .4byte gBattleTypeFlags\n\
_0803BCBC: .4byte 0x00000902\n\
_0803BCC0: .4byte gTrainerBattleOpponent\n\
@@ -660,398 +660,398 @@ _0803BCC8: .4byte 0x0000080b\n\
_0803BCCC: .4byte 0x0000080d\n\
_0803BCD0: .4byte gHoldEffectToType\n\
_0803BCD4:\n\
- adds r3, 0x2\n\
- adds r2, 0x1\n\
- cmp r2, 0x10\n\
- bls _0803BC84\n\
+ adds r3, 0x2\n\
+ adds r2, 0x1\n\
+ cmp r2, 0x10\n\
+ bls _0803BC84\n\
_0803BCDC:\n\
- mov r3, r10\n\
- cmp r3, 0x1D\n\
- bne _0803BCF0\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ mov r3, r10\n\
+ cmp r3, 0x1D\n\
+ bne _0803BCF0\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BCF0:\n\
- mov r0, r10\n\
- cmp r0, 0x22\n\
- bne _0803BD28\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD28\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldrh r2, [r7]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD28\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r0, r10\n\
+ cmp r0, 0x22\n\
+ bne _0803BD28\n\
+ ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BD28\n\
+ ldr r1, _0803BFE0 @ =0xfffffe69\n\
+ adds r0, r1, 0\n\
+ ldrh r2, [r7]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BD28\n\
+ movs r0, 0x96\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BD28:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x22\n\
- bne _0803BD60\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD60\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD60\n\
- movs r0, 0x96\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r0, [sp, 0x1C]\n\
+ cmp r0, 0x22\n\
+ bne _0803BD60\n\
+ ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BD60\n\
+ ldr r1, _0803BFE0 @ =0xfffffe69\n\
+ adds r0, r1, 0\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r2, [r2]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BD60\n\
+ movs r0, 0x96\n\
+ ldr r3, [sp, 0x18]\n\
+ muls r0, r3\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BD60:\n\
- mov r0, r10\n\
- cmp r0, 0x23\n\
- bne _0803BD76\n\
- ldrh r1, [r7]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD76\n\
- mov r1, r8\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r0, r10\n\
+ cmp r0, 0x23\n\
+ bne _0803BD76\n\
+ ldrh r1, [r7]\n\
+ ldr r0, _0803BFE4 @ =0x00000175\n\
+ cmp r1, r0\n\
+ bne _0803BD76\n\
+ mov r1, r8\n\
+ lsls r0, r1, 17\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BD76:\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0x24\n\
- bne _0803BD8E\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r1, [r3]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD8E\n\
- ldr r1, [sp, 0x18]\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r2, [sp, 0x1C]\n\
+ cmp r2, 0x24\n\
+ bne _0803BD8E\n\
+ ldr r3, [sp, 0x4]\n\
+ ldrh r1, [r3]\n\
+ ldr r0, _0803BFE4 @ =0x00000175\n\
+ cmp r1, r0\n\
+ bne _0803BD8E\n\
+ ldr r1, [sp, 0x18]\n\
+ lsls r0, r1, 17\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BD8E:\n\
- mov r2, r10\n\
- cmp r2, 0x2D\n\
- bne _0803BDA2\n\
- ldrh r0, [r7]\n\
- cmp r0, 0x19\n\
- bne _0803BDA2\n\
- mov r3, r8\n\
- lsls r0, r3, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r2, r10\n\
+ cmp r2, 0x2D\n\
+ bne _0803BDA2\n\
+ ldrh r0, [r7]\n\
+ cmp r0, 0x19\n\
+ bne _0803BDA2\n\
+ mov r3, r8\n\
+ lsls r0, r3, 17\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BDA2:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x40\n\
- bne _0803BDB8\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1]\n\
- cmp r0, 0x84\n\
- bne _0803BDB8\n\
- ldr r2, [sp, 0x14]\n\
- lsls r0, r2, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r0, [sp, 0x1C]\n\
+ cmp r0, 0x40\n\
+ bne _0803BDB8\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0x84\n\
+ bne _0803BDB8\n\
+ ldr r2, [sp, 0x14]\n\
+ lsls r0, r2, 17\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BDB8:\n\
- mov r3, r10\n\
- cmp r3, 0x41\n\
- bne _0803BDCE\n\
- ldrh r0, [r7]\n\
- subs r0, 0x68\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BDCE\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
+ mov r3, r10\n\
+ cmp r3, 0x41\n\
+ bne _0803BDCE\n\
+ ldrh r0, [r7]\n\
+ subs r0, 0x68\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BDCE\n\
+ lsls r0, r6, 17\n\
+ lsrs r6, r0, 16\n\
_0803BDCE:\n\
- ldr r1, [sp, 0x28]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x2F\n\
- bne _0803BDE6\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- beq _0803BDE0\n\
- cmp r2, 0xF\n\
- bne _0803BDE6\n\
+ ldr r1, [sp, 0x28]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x2F\n\
+ bne _0803BDE6\n\
+ mov r2, r9\n\
+ cmp r2, 0xA\n\
+ beq _0803BDE0\n\
+ cmp r2, 0xF\n\
+ bne _0803BDE6\n\
_0803BDE0:\n\
- mov r3, r8\n\
- lsrs r3, 1\n\
- mov r8, r3\n\
+ mov r3, r8\n\
+ lsrs r3, 1\n\
+ mov r8, r3\n\
_0803BDE6:\n\
- ldr r0, [sp, 0x24]\n\
- ldrb r4, [r0]\n\
- cmp r4, 0x37\n\
- bne _0803BDFC\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ ldr r0, [sp, 0x24]\n\
+ ldrb r4, [r0]\n\
+ cmp r4, 0x37\n\
+ bne _0803BDFC\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BDFC:\n\
- cmp r4, 0x39\n\
- bne _0803BE2A\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x3A\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE2A\n\
- movs r0, 0x96\n\
- mov r1, r8\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ cmp r4, 0x39\n\
+ bne _0803BE2A\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x3A\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BE2A\n\
+ movs r0, 0x96\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BE2A:\n\
- ldr r2, [sp, 0x24]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3A\n\
- bne _0803BE5C\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x39\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE5C\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ ldr r2, [sp, 0x24]\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3A\n\
+ bne _0803BE5C\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x39\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BE5C\n\
+ movs r0, 0x96\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BE5C:\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- bne _0803BE78\n\
- ldr r0, [r7, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE78\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x3E\n\
+ bne _0803BE78\n\
+ ldr r0, [r7, 0x4C]\n\
+ cmp r0, 0\n\
+ beq _0803BE78\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BE78:\n\
- ldr r2, [sp, 0x28]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3F\n\
- bne _0803BE9A\n\
- ldr r3, [sp, 0x4]\n\
- ldr r0, [r3, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE9A\n\
- movs r0, 0x96\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r2, [sp, 0x28]\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3F\n\
+ bne _0803BE9A\n\
+ ldr r3, [sp, 0x4]\n\
+ ldr r0, [r3, 0x4C]\n\
+ cmp r0, 0\n\
+ beq _0803BE9A\n\
+ movs r0, 0x96\n\
+ ldr r1, [sp, 0x14]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BE9A:\n\
- mov r2, r9\n\
- cmp r2, 0xD\n\
- bne _0803BEBE\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFD\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEBE\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
+ mov r2, r9\n\
+ cmp r2, 0xD\n\
+ bne _0803BEBE\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0xFD\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BEBE\n\
+ ldr r1, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r0, [r1]\n\
+ lsrs r0, 1\n\
+ strh r0, [r1]\n\
_0803BEBE:\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803BEE2\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFE\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEE2\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ bne _0803BEE2\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0xFE\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BEE2\n\
+ ldr r1, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r0, [r1]\n\
+ lsrs r0, 1\n\
+ strh r0, [r1]\n\
_0803BEE2:\n\
- mov r0, r9\n\
- cmp r0, 0xC\n\
- bne _0803BF12\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x41\n\
- bne _0803BF12\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF12\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r0, r9\n\
+ cmp r0, 0xC\n\
+ bne _0803BF12\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x41\n\
+ bne _0803BF12\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF12\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF12:\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- bne _0803BF42\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x42\n\
- bne _0803BF42\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF42\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r2, r9\n\
+ cmp r2, 0xA\n\
+ bne _0803BF42\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x42\n\
+ bne _0803BF42\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF42\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF42:\n\
- mov r0, r9\n\
- cmp r0, 0xB\n\
- bne _0803BF72\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x43\n\
- bne _0803BF72\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF72\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r0, r9\n\
+ cmp r0, 0xB\n\
+ bne _0803BF72\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x43\n\
+ bne _0803BF72\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF72\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF72:\n\
- mov r2, r9\n\
- cmp r2, 0x6\n\
- bne _0803BFA2\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x44\n\
- bne _0803BFA2\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BFA2\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r2, r9\n\
+ cmp r2, 0x6\n\
+ bne _0803BFA2\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x44\n\
+ bne _0803BFA2\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BFA2\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BFA2:\n\
- ldr r2, _0803BFEC @ =gBattleMoves\n\
- ldr r0, _0803BFF0 @ =gUnknown_02024BE6\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- bne _0803BFBC\n\
- ldr r0, [sp, 0x14]\n\
- lsrs r0, 1\n\
- str r0, [sp, 0x14]\n\
+ ldr r2, _0803BFEC @ =gBattleMoves\n\
+ ldr r0, _0803BFF0 @ =gUnknown_02024BE6\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7\n\
+ bne _0803BFBC\n\
+ ldr r0, [sp, 0x14]\n\
+ lsrs r0, 1\n\
+ str r0, [sp, 0x14]\n\
_0803BFBC:\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bls _0803BFC4\n\
- b _0803C122\n\
+ mov r1, r9\n\
+ cmp r1, 0x8\n\
+ bls _0803BFC4\n\
+ b _0803C122\n\
_0803BFC4:\n\
- ldr r0, _0803BFF4 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C000\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803BFFC\n\
- ldr r2, _0803BFF8 @ =gStatStageRatios\n\
- b _0803C006\n\
- .align 2, 0\n\
+ ldr r0, _0803BFF4 @ =gCritMultiplier\n\
+ ldrb r1, [r0]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0x2\n\
+ bne _0803C000\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r7, r0]\n\
+ cmp r0, 0x6\n\
+ ble _0803BFFC\n\
+ ldr r2, _0803BFF8 @ =gStatStageRatios\n\
+ b _0803C006\n\
+ .align 2, 0\n\
_0803BFDC: .4byte gBattleTypeFlags\n\
_0803BFE0: .4byte 0xfffffe69\n\
_0803BFE4: .4byte 0x00000175\n\
@@ -1061,427 +1061,427 @@ _0803BFF0: .4byte gUnknown_02024BE6\n\
_0803BFF4: .4byte gCritMultiplier\n\
_0803BFF8: .4byte gStatStageRatios\n\
_0803BFFC:\n\
- adds r5, r6, 0\n\
- b _0803C01E\n\
+ adds r5, r6, 0\n\
+ b _0803C01E\n\
_0803C000:\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
+ ldr r2, _0803C050 @ =gStatStageRatios\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r7, r0]\n\
_0803C006:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- adds r5, r6, 0\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ adds r5, r6, 0\n\
+ muls r5, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C01E:\n\
- ldr r0, _0803C054 @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C05C\n\
- ldr r2, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r2, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C058\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- ldr r3, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r3, r0]\n\
- b _0803C064\n\
- .align 2, 0\n\
+ ldr r0, _0803C054 @ =gBattleMovePower\n\
+ ldrh r0, [r0]\n\
+ muls r5, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __divsi3\n\
+ adds r0, 0x2\n\
+ muls r5, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bne _0803C05C\n\
+ ldr r2, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r2, r0]\n\
+ cmp r0, 0x5\n\
+ bgt _0803C058\n\
+ ldr r2, _0803C050 @ =gStatStageRatios\n\
+ ldr r3, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r3, r0]\n\
+ b _0803C064\n\
+ .align 2, 0\n\
_0803C050: .4byte gStatStageRatios\n\
_0803C054: .4byte gBattleMovePower\n\
_0803C058:\n\
- ldr r3, [sp, 0x14]\n\
- b _0803C07E\n\
+ ldr r3, [sp, 0x14]\n\
+ b _0803C07E\n\
_0803C05C:\n\
- ldr r2, _0803C0DC @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r1, r0]\n\
+ ldr r2, _0803C0DC @ =gStatStageRatios\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r1, r0]\n\
_0803C064:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x14]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ ldr r6, [sp, 0x14]\n\
+ adds r3, r6, 0\n\
+ muls r3, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r3, 0\n\
+ bl __divsi3\n\
+ adds r3, r0, 0\n\
_0803C07E:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- ldr r0, [r7, 0x4C]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C0A8\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- beq _0803C0A8\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ ldr r0, [r7, 0x4C]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C0A8\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x3E\n\
+ beq _0803C0A8\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C0A8:\n\
- movs r0, 0x1\n\
- ldr r2, [sp, 0xC]\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803C0EA\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C0EA\n\
- ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C0E4\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C0E4\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C0EA\n\
- .align 2, 0\n\
+ movs r0, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0803C0EA\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ bne _0803C0EA\n\
+ ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0803C0E4\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C0E4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ lsls r5, r0, 1\n\
+ b _0803C0EA\n\
+ .align 2, 0\n\
_0803C0DC: .4byte gStatStageRatios\n\
_0803C0E0: .4byte gBattleTypeFlags\n\
_0803C0E4:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C0EA:\n\
- ldr r0, _0803C148 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C11C\n\
- ldr r0, _0803C14C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C11C\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C11C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldr r0, _0803C148 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C11C\n\
+ ldr r0, _0803C14C @ =gBattleMoves\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _0803C11C\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C11C\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C11C:\n\
- cmp r5, 0\n\
- bne _0803C122\n\
- movs r5, 0x1\n\
+ cmp r5, 0\n\
+ bne _0803C122\n\
+ movs r5, 0x1\n\
_0803C122:\n\
- mov r6, r9\n\
- cmp r6, 0x9\n\
- bne _0803C12A\n\
- movs r5, 0\n\
+ mov r6, r9\n\
+ cmp r6, 0x9\n\
+ bne _0803C12A\n\
+ movs r5, 0\n\
_0803C12A:\n\
- mov r0, r9\n\
- cmp r0, 0x9\n\
- bhi _0803C132\n\
- b _0803C330\n\
+ mov r0, r9\n\
+ cmp r0, 0x9\n\
+ bhi _0803C132\n\
+ b _0803C330\n\
_0803C132:\n\
- ldr r0, _0803C150 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C15C\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803C158\n\
- ldr r2, _0803C154 @ =gStatStageRatios\n\
- b _0803C162\n\
- .align 2, 0\n\
+ ldr r0, _0803C150 @ =gCritMultiplier\n\
+ ldrb r1, [r0]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0x2\n\
+ bne _0803C15C\n\
+ movs r0, 0x1C\n\
+ ldrsb r0, [r7, r0]\n\
+ cmp r0, 0x6\n\
+ ble _0803C158\n\
+ ldr r2, _0803C154 @ =gStatStageRatios\n\
+ b _0803C162\n\
+ .align 2, 0\n\
_0803C148: .4byte gBattleTypeFlags\n\
_0803C14C: .4byte gBattleMoves\n\
_0803C150: .4byte gCritMultiplier\n\
_0803C154: .4byte gStatStageRatios\n\
_0803C158:\n\
- mov r5, r8\n\
- b _0803C17A\n\
+ mov r5, r8\n\
+ b _0803C17A\n\
_0803C15C:\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
+ ldr r2, _0803C1A8 @ =gStatStageRatios\n\
+ movs r0, 0x1C\n\
+ ldrsb r0, [r7, r0]\n\
_0803C162:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- mov r5, r8\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ mov r5, r8\n\
+ muls r5, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C17A:\n\
- ldr r0, _0803C1AC @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C1B4\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C1B0\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- b _0803C1BC\n\
- .align 2, 0\n\
+ ldr r0, _0803C1AC @ =gBattleMovePower\n\
+ ldrh r0, [r0]\n\
+ muls r5, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __divsi3\n\
+ adds r0, 0x2\n\
+ muls r5, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bne _0803C1B4\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1D\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x5\n\
+ bgt _0803C1B0\n\
+ ldr r2, _0803C1A8 @ =gStatStageRatios\n\
+ b _0803C1BC\n\
+ .align 2, 0\n\
_0803C1A8: .4byte gStatStageRatios\n\
_0803C1AC: .4byte gBattleMovePower\n\
_0803C1B0:\n\
- ldr r3, [sp, 0x18]\n\
- b _0803C1D6\n\
+ ldr r3, [sp, 0x18]\n\
+ b _0803C1D6\n\
_0803C1B4:\n\
- ldr r2, _0803C21C @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
+ ldr r2, _0803C21C @ =gStatStageRatios\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1D\n\
+ ldrsb r0, [r1, r0]\n\
_0803C1BC:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x18]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ ldr r6, [sp, 0x18]\n\
+ adds r3, r6, 0\n\
+ muls r3, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r3, 0\n\
+ bl __divsi3\n\
+ adds r3, r0, 0\n\
_0803C1D6:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r0, 0x2\n\
- ldr r1, [sp, 0xC]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C22A\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C22A\n\
- ldr r0, _0803C220 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C224\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C224\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C22A\n\
- .align 2, 0\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r0, 0x2\n\
+ ldr r1, [sp, 0xC]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C22A\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ bne _0803C22A\n\
+ ldr r0, _0803C220 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0803C224\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C224\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ lsls r5, r0, 1\n\
+ b _0803C22A\n\
+ .align 2, 0\n\
_0803C21C: .4byte gStatStageRatios\n\
_0803C220: .4byte gBattleTypeFlags\n\
_0803C224:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C22A:\n\
- ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C25C\n\
- ldr r0, _0803C2A8 @ =gBattleMoves\n\
- ldr r2, [sp, 0x8]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C25C\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C25C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C25C\n\
+ ldr r0, _0803C2A8 @ =gBattleMoves\n\
+ ldr r2, [sp, 0x8]\n\
+ lsls r1, r2, 1\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _0803C25C\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C25C\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C25C:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- ldr r2, _0803C2AC @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- adds r4, r2, 0\n\
- cmp r0, 0\n\
- beq _0803C2C4\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- beq _0803C2B0\n\
- cmp r3, 0xB\n\
- beq _0803C2B8\n\
- b _0803C2C4\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803C30C\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803C30C\n\
+ ldr r2, _0803C2AC @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ adds r4, r2, 0\n\
+ cmp r0, 0\n\
+ beq _0803C2C4\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ beq _0803C2B0\n\
+ cmp r3, 0xB\n\
+ beq _0803C2B8\n\
+ b _0803C2C4\n\
+ .align 2, 0\n\
_0803C2A4: .4byte gBattleTypeFlags\n\
_0803C2A8: .4byte gBattleMoves\n\
_0803C2AC: .4byte gBattleWeather\n\
_0803C2B0:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
- b _0803C2C4\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
+ b _0803C2C4\n\
_0803C2B8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C2C4:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x9F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C2DC\n\
- ldr r0, _0803C2F4 @ =gUnknown_02024BE6\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x4C\n\
- bne _0803C2DC\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x9F\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C2DC\n\
+ ldr r0, _0803C2F4 @ =gUnknown_02024BE6\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0x4C\n\
+ bne _0803C2DC\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C2DC:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x60\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C30C\n\
- mov r6, r9\n\
- cmp r6, 0xA\n\
- beq _0803C2F8\n\
- cmp r6, 0xB\n\
- beq _0803C306\n\
- b _0803C30C\n\
- .align 2, 0\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x60\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C30C\n\
+ mov r6, r9\n\
+ cmp r6, 0xA\n\
+ beq _0803C2F8\n\
+ cmp r6, 0xB\n\
+ beq _0803C306\n\
+ b _0803C30C\n\
+ .align 2, 0\n\
_0803C2F4: .4byte gUnknown_02024BE6\n\
_0803C2F8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- b _0803C30C\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ b _0803C30C\n\
_0803C306:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C30C:\n\
- ldr r1, _0803C344 @ =0x02017100\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C330\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803C330\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ ldr r1, _0803C344 @ =0x02017100\n\
+ ldr r2, [sp, 0x10]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C330\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ bne _0803C330\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C330:\n\
- adds r0, r5, 0x2\n\
- add sp, 0x2C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ adds r0, r5, 0x2\n\
+ add sp, 0x2C\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_0803C344: .4byte 0x02017100\n\
- .syntax divided");
+ .syntax divided");
}
#endif
diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c
index 198dce340..6b0cc821a 100644
--- a/src/clear_save_data_menu.c
+++ b/src/clear_save_data_menu.c
@@ -1,13 +1,13 @@
#include "global.h"
#include "clear_save_data_menu.h"
-#include "save.h"
-#include "task.h"
-#include "songs.h"
-#include "menu.h"
#include "main.h"
-#include "sprite.h"
+#include "menu.h"
#include "palette.h"
+#include "save.h"
+#include "songs.h"
#include "sound.h"
+#include "sprite.h"
+#include "task.h"
extern u8 gSystemText_ClearAllSaveDataPrompt[];
extern u8 gSystemText_ClearingData[];
diff --git a/src/clock.c b/src/clock.c
index e660abdd3..fd9e6915a 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -1,11 +1,12 @@
#include "global.h"
-#include "main.h"
-#include "rtc.h"
+#include "berry.h"
#include "event_data.h"
#include "lottery_corner.h"
-#include "berry.h"
+#include "main.h"
#include "rom4.h"
+#include "rtc.h"
#include "wallclock.h"
+#include "clock.h"
extern void sub_80FA220(u16);
extern void sub_80BE8C4(u16);
diff --git a/src/coins.c b/src/coins.c
index ad4f5fc34..193ea249e 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -29,13 +29,13 @@ void PrintCoins(s32 a, u8 b, u8 c, u8 d)
u8 *ptr;
u8 r1;
u8 foo;
-
+
ConvertIntToDecimalString(string, a);
r1 = (b * 6 + 0x21 - 8 * (b + 2));
c = c - r1 / 8;
foo = r1 % 8;
ptr = gStringVar1;
- if(foo)
+ if (foo)
{
ptr[0] = 0xFC;
ptr[1] = 0x11;
@@ -58,16 +58,16 @@ u16 GetCoins(void)
bool8 GiveCoins(u16 coins)
{
u32 newCoins;
-
- if(GetCoins() >= MAX_COINS)
+
+ if (GetCoins() >= MAX_COINS)
return FALSE;
newCoins = coins + gSaveBlock1.coins;
- if(gSaveBlock1.coins > (u16)newCoins)
+ if (gSaveBlock1.coins > (u16)newCoins)
gSaveBlock1.coins = MAX_COINS;
else
{
gSaveBlock1.coins = newCoins;
- if((u16)newCoins > MAX_COINS)
+ if ((u16)newCoins > MAX_COINS)
gSaveBlock1.coins = MAX_COINS;
}
return TRUE;
@@ -75,7 +75,7 @@ bool8 GiveCoins(u16 coins)
bool8 TakeCoins(u16 coins)
{
- if(GetCoins() >= coins)
+ if (GetCoins() >= coins)
{
gSaveBlock1.coins -= coins;
return TRUE;
diff --git a/src/contest_painting.c b/src/contest_painting.c
index b6cdda034..41f6afabf 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -8,121 +8,131 @@
#include "sprite.h"
#include "string_util.h"
#include "text.h"
-
-#define MOSAIC_BIT_BG_HSIZE (0)
-#define MOSAIC_BIT_BG_VSIZE (4)
-#define MOSAIC_BIT_OBJ_HSIZE (8)
-#define MOSAIC_BIT_OBJ_VSIZE (12)
-
-enum
-{
- CONTEST_COOL,
- CONTEST_BEAUTY,
- CONTEST_CUTE,
- CONTEST_SMART,
- CONTEST_TOUGH,
-};
-
-enum
-{
- CONTESTRESULT_COOL = 9,
- CONTESTRESULT_BEAUTY = 13,
- CONTESTRESULT_CUTE = 2,
- CONTESTRESULT_SMART = 36,
- CONTESTRESULT_TOUGH = 6,
-};
-
-struct Unk2015E00
-{
- u16 unk2015e00[128][32];
- u16 unk2017e00[0];
-};
-
-struct ContestEntry
-{
- /*0x00*/ u8 var0;
- /*0x04*/ u32 var4;
- /*0x08*/ u16 var8;
- /*0x0A*/ u8 contestType;
- /*0x0B*/ u8 pokemon_name[POKEMON_NAME_LENGTH];
- /*0x15*/ u8 pad15;
- /*0x16*/ u8 trainer_name[OT_NAME_LENGTH];
-};
-
-struct Unk3000756
-{
- /*0x00*/ u8 var_0;
-};
-
-struct LabelPair
-{
- u8 (*prefix)[];
- u8 (*suffix)[];
-};
-
-struct Unk03005E20
-{
- u8 var_0;
- u8 pad1[3];
- u16 (*var_4)[][32];
- u16 (*var_8)[];
- u8 pad0C[4];
- u32 var_10;
- u16 var_14;
- u16 var_16;
- u8 var_18;
- u8 var_19;
- u8 var_1A;
- u8 var_1B;
- u8 var_1C;
- u8 var_1D;
- u8 var_1E;
- u8 var_1F;
-};
+#include "contest_painting.h"
extern u8 unk_2000000[];
-extern struct ContestEntry unk_2015de0;
-extern struct Unk2015E00 unk_2015e00;
extern u8 gUnknown_03000750;
extern u16 gUnknown_03000752;
extern u16 gUnknown_03000754;
-extern struct Unk3000756 gUnknown_03000756;
extern u16 (*gUnknown_03005E10)[][32];
-extern struct Unk03005E20 gUnknown_03005E20;
extern u8 gUnknown_03005E40[];
-extern struct ContestEntry *gUnknown_03005E8C;
extern u16 (*gUnknown_03005E90)[];
+extern struct ContestEntry unk_2015de0;
+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 u16 gPictureFramePalettes[];
-
-extern u8 gPictureFrameTiles_0[];
-extern u8 gPictureFrameTiles_1[];
-extern u8 gPictureFrameTiles_2[];
-extern u8 gPictureFrameTiles_3[];
-extern u8 gPictureFrameTiles_4[];
-extern u8 gPictureFrameTiles_5[];
-
-extern u8 gPictureFrameTilemap_0[];
-extern u8 gPictureFrameTilemap_1[];
-extern u8 gPictureFrameTilemap_2[];
-extern u8 gPictureFrameTilemap_3[];
-extern u8 gPictureFrameTilemap_4[];
-extern u8 gPictureFrameTilemap_5[];
-
-extern u8 *gUnknown_083F60AC[];
-extern struct LabelPair gUnknown_083F60C0[];
-extern struct OamData gOamData_83F6138;
-extern u16 gUnknown_083F6140[];
-
-extern u8 gContestText_ContestWinner[];
-extern u8 gOtherText_Unknown1[];
+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] =
+{
+ INCBIN_U16("graphics/picture_frame/bg0.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg1.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg2.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg3.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg4.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg5.gbapal"),
+ {0},
+ {0},
+};
+const u8 emptySpace[8 * 32] = {0};
+const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
+const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
+const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
+const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
+const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
+const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
+const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
+const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
+const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
+const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
+const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
+const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
+const u8 *const gUnknown_083F60AC[] =
+{
+ OtherText_Cool,
+ OtherText_Beauty2,
+ OtherText_Cute,
+ OtherText_Smart,
+ OtherText_Tough,
+};
+const struct LabelPair gUnknown_083F60C0[] =
+{
+ {OtherText_NonstopSuperCool, OtherText_Terminator6},
+ {OtherText_GoodLookingPoke, OtherText_Terminator7},
+ {OtherText_MarvelousGreat, OtherText_Terminator8},
+ {OtherText_CenturyLastVenus, OtherText_Terminator9},
+ {OtherText_Terminator10, OtherText_DazzlingSmile},
+ {OtherText_PokeCenterIdol, OtherText_Terminator11},
+ {OtherText_LovelyAndSweet, OtherText_Terminator12},
+ {OtherText_ThePretty, OtherText_WinningPortrait},
+ {OtherText_GiveUsWink, OtherText_Terminator13},
+ {OtherText_SmartnessMaestro, OtherText_Terminator15},
+ {OtherText_ChosenPokeAmong, OtherText_Terminator15},
+ {OtherText_TheExcellent, OtherText_ItsMomentOfElegance},
+ {OtherText_PowerfullyMuscular, OtherText_Terminator16},
+ {OtherText_StrongErEst, OtherText_Terminator17},
+ {OtherText_MightyTough, OtherText_Exclamation},
+};
+const struct OamData gOamData_83F6138 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 1,
+ .bpp = 1,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+const u16 gUnknown_083F6140[] = {0, 0};
static void ShowContestPainting();
static void CB2_HoldContestPainting(void);
@@ -144,29 +154,29 @@ __attribute__((naked))
void sub_8106630(u32 arg0)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r2, _0810665C @ =0x02015de0\n\
- subs r4, r2, 0x2\n\
- subs r5, r2, 0x1\n\
- ldr r3, _08106660 @ =gSaveBlock1\n\
- subs r0, 0x1\n\
- lsls r1, r0, 5\n\
- adds r1, r3\n\
- ldr r3, _08106664 @ =0x00002dfc\n\
- adds r1, r3\n\
- ldm r1!, {r3,r6,r7}\n\
- stm r2!, {r3,r6,r7}\n\
- ldm r1!, {r3,r6,r7}\n\
- stm r2!, {r3,r6,r7}\n\
- ldm r1!, {r6,r7}\n\
- stm r2!, {r6,r7}\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- strb r0, [r5]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ ldr r2, _0810665C @ =0x02015de0\n\
+ subs r4, r2, 0x2\n\
+ subs r5, r2, 0x1\n\
+ ldr r3, _08106660 @ =gSaveBlock1\n\
+ subs r0, 0x1\n\
+ lsls r1, r0, 5\n\
+ adds r1, r3\n\
+ ldr r3, _08106664 @ =0x00002dfc\n\
+ adds r1, r3\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r6,r7}\n\
+ stm r2!, {r6,r7}\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ strb r0, [r5]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0810665C: .4byte 0x02015de0\n\
_08106660: .4byte gSaveBlock1\n\
_08106664: .4byte 0x00002dfc\n\
@@ -194,7 +204,7 @@ static void ShowContestPainting(void)
{
u8 *addr;
size_t size;
-
+
ResetPaletteFade();
addr = (void *)VRAM;
size = 0x18000;
@@ -261,7 +271,7 @@ static void HoldContestPainting(void)
if ((gMain.newKeys & 1) || (gMain.newKeys & 2))
{
u8 two = 2; //needed to make the asm match
-
+
gUnknown_03000750 = two;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
}
@@ -312,9 +322,9 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
}
else
{
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].prefix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].prefix);
ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].suffix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].suffix);
xPos = 3;
yPos = 14;
@@ -379,88 +389,93 @@ struct MonCoords
};
#ifdef NONMATCHING
-static void sub_8106AC4(u16 species, u8 arg1) {
+static void sub_8106AC4(u16 species, u8 arg1)
+{
void *pal;
// Unsure what gUnknown_03005E8C->var0 is supposed to be.
pal = species_and_otid_get_pal(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0);
LZDecompressVram(pal, gUnknown_03005E90);
- if (arg1 == 1) {
+ if (arg1 == 1)
+ {
HandleLoadSpecialPokePic(
- &gMonFrontPicTable[species],
- gMonFrontPicCoords[species].x,
- gMonFrontPicCoords[species].y,
- 0x2000000,
- gUnknown_081FAF4C[1],
- species,
- (u32) gUnknown_03005E8C->var0
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].x,
+ gMonFrontPicCoords[species].y,
+ 0x2000000,
+ gUnknown_081FAF4C[1],
+ species,
+ (u32)gUnknown_03005E8C->var0
);
sub_8106B90(gUnknown_081FAF4C[1], gUnknown_03005E90, gUnknown_03005E10);
- } else {
+ }
+ else
+ {
HandleLoadSpecialPokePic(
- &gMonBackPicTable[species],
- gMonBackPicCoords[species].x,
- gMonBackPicCoords[species].y,
- 0x2000000,
- gUnknown_081FAF4C[0],
- species,
- (u32) gUnknown_03005E8C->var0
+ &gMonBackPicTable[species],
+ gMonBackPicCoords[species].x,
+ gMonBackPicCoords[species].y,
+ 0x2000000,
+ gUnknown_081FAF4C[0],
+ species,
+ (u32)gUnknown_03005E8C->var0
);
sub_8106B90(gUnknown_081FAF4C[0], gUnknown_03005E90, gUnknown_03005E10);
}
}
#else
__attribute__((naked))
-static void sub_8106AC4(u16 arg0, u8 arg2) {
+static void sub_8106AC4(u16 arg0, u8 arg2)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0xC\n\
- adds r4, r1, 0\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
- ldr r0, [r7]\n\
- ldr r1, [r0, 0x4]\n\
- ldr r2, [r0]\n\
- adds r0, r6, 0\n\
- bl species_and_otid_get_pal\n\
- ldr r1, _08106B2C @ =gUnknown_03005E90\n\
- mov r8, r1\n\
- ldr r1, [r1]\n\
- bl LZDecompressVram\n\
- cmp r4, 0\n\
- bne _08106B40\n\
- lsls r0, r6, 3\n\
- ldr r1, _08106B30 @ =gMonFrontPicTable\n\
- adds r0, r1\n\
- ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
- ldr r5, [r4, 0x4]\n\
- str r5, [sp]\n\
- str r6, [sp, 0x4]\n\
- ldr r4, [r7]\n\
- ldr r4, [r4]\n\
- str r4, [sp, 0x8]\n\
- bl HandleLoadSpecialPokePic\n\
- mov r2, r8\n\
- ldr r1, [r2]\n\
- ldr r0, _08106B3C @ =gUnknown_03005E10\n\
- ldr r2, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_8106B90\n\
- b _08106B74\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ adds r4, r1, 0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
+ ldr r0, [r7]\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r2, [r0]\n\
+ adds r0, r6, 0\n\
+ bl species_and_otid_get_pal\n\
+ ldr r1, _08106B2C @ =gUnknown_03005E90\n\
+ mov r8, r1\n\
+ ldr r1, [r1]\n\
+ bl LZDecompressVram\n\
+ cmp r4, 0\n\
+ bne _08106B40\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B30 @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4, 0x4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r2, r8\n\
+ ldr r1, [r2]\n\
+ ldr r0, _08106B3C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
+ b _08106B74\n\
+ .align 2, 0\n\
_08106B28: .4byte gUnknown_03005E8C\n\
_08106B2C: .4byte gUnknown_03005E90\n\
_08106B30: .4byte gMonFrontPicTable\n\
@@ -468,38 +483,38 @@ _08106B34: .4byte gMonFrontPicCoords\n\
_08106B38: .4byte gUnknown_081FAF4C\n\
_08106B3C: .4byte gUnknown_03005E10\n\
_08106B40:\n\
- lsls r0, r6, 3\n\
- ldr r1, _08106B80 @ =gMonBackPicTable\n\
- adds r0, r1\n\
- ldr r1, _08106B84 @ =gMonBackPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
- ldr r5, [r4]\n\
- str r5, [sp]\n\
- str r6, [sp, 0x4]\n\
- ldr r4, [r7]\n\
- ldr r4, [r4]\n\
- str r4, [sp, 0x8]\n\
- bl HandleLoadSpecialPokePic\n\
- mov r0, r8\n\
- ldr r1, [r0]\n\
- ldr r0, _08106B8C @ =gUnknown_03005E10\n\
- ldr r2, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_8106B90\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B80 @ =gMonBackPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B84 @ =gMonBackPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r0, r8\n\
+ ldr r1, [r0]\n\
+ ldr r0, _08106B8C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
_08106B74:\n\
- add sp, 0xC\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08106B80: .4byte gMonBackPicTable\n\
_08106B84: .4byte gMonBackPicCoords\n\
_08106B88: .4byte gUnknown_081FAF4C\n\
@@ -515,7 +530,7 @@ void sub_8106B90(u8 a[][8][8][4], u16 b[], u16 c[][8][8][8])
u16 j;
u16 k;
u16 l;
-
+
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
@@ -527,7 +542,7 @@ void sub_8106B90(u8 a[][8][8][4], u16 b[], u16 c[][8][8][8])
//u8 *arr = a[i][j][k];
//u8 r1 = arr[l / 2];
u8 r1 = a[i][j][k][l / 2];
-
+
if (l & 1)
r1 /= 16;
else
@@ -547,102 +562,102 @@ __attribute__((naked))
void sub_8106B90()
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- mov r10, r0\n\
- mov r9, r1\n\
- str r2, [sp]\n\
- movs r0, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ mov r10, r0\n\
+ mov r9, r1\n\
+ str r2, [sp]\n\
+ movs r0, 0\n\
_08106BA4:\n\
- movs r3, 0\n\
- adds r1, r0, 0x1\n\
- str r1, [sp, 0x4]\n\
- lsls r0, 3\n\
- str r0, [sp, 0x8]\n\
+ movs r3, 0\n\
+ adds r1, r0, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0x8]\n\
_08106BAE:\n\
- movs r1, 0\n\
- adds r2, r3, 0x1\n\
- mov r8, r2\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r3\n\
- lsls r0, 5\n\
- mov r12, r0\n\
- lsls r4, r3, 3\n\
+ movs r1, 0\n\
+ adds r2, r3, 0x1\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r3\n\
+ lsls r0, 5\n\
+ mov r12, r0\n\
+ lsls r4, r3, 3\n\
_08106BBE:\n\
- movs r3, 0\n\
- lsls r0, r1, 2\n\
- adds r6, r1, 0x1\n\
- mov r2, r12\n\
- adds r5, r2, r0\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r1\n\
- lsls r0, 7\n\
- ldr r1, [sp]\n\
- adds r2, r0, r1\n\
+ movs r3, 0\n\
+ lsls r0, r1, 2\n\
+ adds r6, r1, 0x1\n\
+ mov r2, r12\n\
+ adds r5, r2, r0\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r1\n\
+ lsls r0, 7\n\
+ ldr r1, [sp]\n\
+ adds r2, r0, r1\n\
_08106BD2:\n\
- lsrs r0, r3, 1\n\
- adds r0, r5, r0\n\
- add r0, r10\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _08106BE6\n\
- lsrs r1, 4\n\
- b _08106BEA\n\
+ lsrs r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ add r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08106BE6\n\
+ lsrs r1, 4\n\
+ b _08106BEA\n\
_08106BE6:\n\
- movs r0, 0xF\n\
- ands r1, r0\n\
+ movs r0, 0xF\n\
+ ands r1, r0\n\
_08106BEA:\n\
- cmp r1, 0\n\
- bne _08106BFC\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- movs r7, 0x80\n\
- lsls r7, 8\n\
- adds r1, r7, 0\n\
- b _08106C08\n\
+ cmp r1, 0\n\
+ bne _08106BFC\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ movs r7, 0x80\n\
+ lsls r7, 8\n\
+ adds r1, r7, 0\n\
+ b _08106C08\n\
_08106BFC:\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- lsls r1, 1\n\
- add r1, r9\n\
- ldrh r1, [r1]\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ ldrh r1, [r1]\n\
_08106C08:\n\
- strh r1, [r0]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _08106BD2\n\
- lsls r0, r6, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0x7\n\
- bls _08106BBE\n\
- mov r1, r8\n\
- lsls r0, r1, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _08106BAE\n\
- ldr r2, [sp, 0x4]\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x7\n\
- bls _08106BA4\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ strh r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BD2\n\
+ lsls r0, r6, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x7\n\
+ bls _08106BBE\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BAE\n\
+ ldr r2, [sp, 0x4]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x7\n\
+ bls _08106BA4\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
@@ -650,38 +665,38 @@ _08106C08:\n\
static void sub_8106C40(u8 arg0, u8 arg1)
{
u8 x, y;
-
- LoadPalette(gPictureFramePalettes, 0, 128 * 2);
+
+ LoadPalette(gPictureFramePalettes, 0, sizeof(gPictureFramePalettes));
if (arg1 == 1)
{
switch (gUnknown_03005E8C->contestType / 3)
{
case CONTEST_COOL:
- RLUnCompVram(gPictureFrameTiles_0, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
RLUnCompWram(gPictureFrameTilemap_0, gUnknown_03005E10);
break;
case CONTEST_BEAUTY:
- RLUnCompVram(gPictureFrameTiles_1, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
RLUnCompWram(gPictureFrameTilemap_1, gUnknown_03005E10);
break;
case CONTEST_CUTE:
- RLUnCompVram(gPictureFrameTiles_2, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
RLUnCompWram(gPictureFrameTilemap_2, gUnknown_03005E10);
break;
case CONTEST_SMART:
- RLUnCompVram(gPictureFrameTiles_3, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
RLUnCompWram(gPictureFrameTilemap_3, gUnknown_03005E10);
break;
case CONTEST_TOUGH:
- RLUnCompVram(gPictureFrameTiles_4, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
RLUnCompWram(gPictureFrameTilemap_4, gUnknown_03005E10);
break;
}
-
- #define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)])
-
+
+#define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)])
+
// Set the background
- for (y = 0; y < 20; y++)
+ for (y = 0; y < 20; y++)
{
for (x = 0; x < 32; x++)
VRAM_PICTURE_DATA(x, y) = 0x1015;
@@ -697,37 +712,37 @@ static void sub_8106C40(u8 arg0, u8 arg1)
// Re-set the entire top row to the first top frame part
for (x = 0; x < 16; x++)
VRAM_PICTURE_DATA(x + 7, 2) = (*gUnknown_03005E10)[2][7];
-
- #undef VRAM_PICTURE_DATA
+
+#undef VRAM_PICTURE_DATA
}
else if (arg0 < 8)
{
- RLUnCompVram(gPictureFrameTiles_5, (void *) VRAM);
- RLUnCompVram(gPictureFrameTilemap_5, (void *) (VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000));
}
else
{
switch (gUnknown_03005E8C->contestType / 3)
{
case CONTEST_COOL:
- RLUnCompVram(gPictureFrameTiles_0, (void *) VRAM);
- RLUnCompVram(gPictureFrameTilemap_0, (void *) (VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_0, (void *)(VRAM + 0x6000));
break;
case CONTEST_BEAUTY:
- RLUnCompVram(gPictureFrameTiles_1, (void *) VRAM);
- RLUnCompVram(gPictureFrameTilemap_1, (void *) (VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_1, (void *)(VRAM + 0x6000));
break;
case CONTEST_CUTE:
- RLUnCompVram(gPictureFrameTiles_2, (void *) VRAM);
- RLUnCompVram(gPictureFrameTilemap_2, (void *) (VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_2, (void *)(VRAM + 0x6000));
break;
case CONTEST_SMART:
- RLUnCompVram(gPictureFrameTiles_3, (void *) VRAM);
- RLUnCompVram(gPictureFrameTilemap_3, (void *) (VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_3, (void *)(VRAM + 0x6000));
break;
case CONTEST_TOUGH:
- RLUnCompVram(gPictureFrameTiles_4, (void *) VRAM);
- RLUnCompVram(gPictureFrameTilemap_4, (void *) (VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_4, (void *)(VRAM + 0x6000));
break;
}
}
@@ -739,14 +754,14 @@ static void sub_8106E98(u8 arg0)
#ifndef NONMATCHING
asm(""::"r"(arg0));
#endif
-
+
gMain.oamBuffer[0] = gOamData_83F6138;
gMain.oamBuffer[0].tileNum = 0;
-
+
#ifndef NONMATCHING
if (arg0) arg0 = gMain.oamBuffer[0].tileNum;
#endif
-
+
gMain.oamBuffer[0].x = 88;
gMain.oamBuffer[0].y = 24;
}
diff --git a/src/credits.c b/src/credits.c
index 665279f8e..7685a033d 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1,15 +1,30 @@
#include "global.h"
+#include "asm.h"
+#include "decompress.h"
#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "songs.h"
#include "sound.h"
-#include "sprite.h"
-#include "task.h"
-#include "text.h"
-enum {
+asm(".set REG_BASE, 0x4000000");
+asm(".set OFFSET_REG_BLDCNT, 0x50");
+asm(".set OFFSET_REG_BLDALPHA, 0x52");
+asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT");
+asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA");
+
+u32 NationalPokedexNumToSpecies(u16 nationalNum);
+
+struct MonCoords
+{
+ u8 x, y;
+};
+
+extern void *species_and_otid_get_pal(u32, u16, u16);
+
+enum
+{
PAGE_TITLE,
PAGE_DIRECTOR,
PAGE_ART_DIRECTOR,
@@ -71,11 +86,15 @@ enum {
#define COLOR_DARK_GREEN 0x1967
#define COLOR_LIGHT_GREEN 0x328D
-enum {
+enum
+{
TDA_0 = 0,
TDA_TASK_C_ID = 1,
+ TDA_TASK_E_ID = 2,
TDA_TASK_D_ID = 3,
TDA_4 = 4,
+ TDA_PLAYER_CYCLIST = 5,
+ TDA_RIVAL_CYCLIST = 6,
TDA_7 = 7, // Has something to do with the bike scene
TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown
TDA_12 = 12,
@@ -90,30 +109,45 @@ enum {
TDB_3 = 3,
TDC_0 = 0,
-
- TDD_0 = 0,
- TDD_1 = 1,
+ TDC_1 = 1,
+ TDC_2 = 2,
+ TDC_3 = 3,
+ TDC_4 = 4,
+ TDC_5 = 5,
+
+ TDD_STATE = 0,
+ TDD_TASK_A_ID = 1,
TDD_2 = 2,
-};
+ TDD_3 = 3,
-struct Unk201C000 {
- u8 pad_00[0x88];
- u16 var_88;
- u16 var_8A;
- u16 var_8C;
+ TDE_0 = 0,
+ TDE_1 = 1,
+ TDE_TASK_A_ID = 2,
};
-struct HallOfFame {
- u8 sheet0[0x800];
- u8 sheet1[0x800];
- u8 sheet2[0x800];
+struct Unk201C000
+{
+ u16 unk0[8];
+ u8 pad_10[0x78];
+ u16 unk88;
+ u16 unk8A;
+ u16 unk8C;
+ u16 unk8E;
};
-struct CreditsEntry {
+struct CreditsEntry
+{
u8 var_0;
u8 *text;
};
+extern u8 unk_2000000[];
+
+#define EWRAM_1F800 ((u16 *)(unk_2000000 + 0x1F800))
+#define HALL_OF_FAME_SHEET_0 ((u8 *)(unk_2000000 + 0x1E000))
+#define HALL_OF_FAME_SHEET_1 ((u8 *)(unk_2000000 + 0x1E800))
+#define HALL_OF_FAME_SHEET_2 ((u8 *)(unk_2000000 + 0x1F000))
+
extern struct Unk201C000 unk_201C000;
extern struct HallOfFame gHallOfFame;
@@ -121,30 +155,62 @@ extern u8 unk_201e800[0x800];
extern u8 unk_201f000[0x800];
extern u16 unk_201f800[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+
extern s16 gUnknown_02039320;
extern u16 gUnknown_02039322; // TASK A
extern u8 gUnknown_02039324;
extern u8 gUnknown_02039325;
-extern u16 gUnknown_0203935C;
+extern u16 gUnknown_02039358;
+extern u16 gUnknown_0203935A;
+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 gBirchBagTilemap[];
+extern u8 gBirchGrassTilemap[];
extern u8 gBirchHelpGfx[];
-// data/credits
-extern u16 gUnknown_0840B7BC[32];
-extern u16 gUnknown_0840B7FC[32];
+// data/hall_of_fame
+extern void *gUnknown_0840B5A0[];
+
+// data/credits
+const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal");
+const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp");
+extern u8 gUnknown_0840B83C[];
+extern u8 gUnknown_0840B84B[];
+extern u8 gUnknown_0840B85A[];
+extern u8 gUnknown_0840B869[];
+extern u8 gUnknown_0840B878[];
extern struct CreditsEntry *gCreditsEntryPointerTable[][5];
+extern u8 gUnknown_0840CA00[][2];
extern struct SpriteSheet gUnknown_0840CAA0;
extern struct SpritePalette gUnknown_0840CAB0;
+extern const union AnimCmd *const gSpriteAnimTable_0840CA54[];
+extern const union AnimCmd *const gSpriteAnimTable_0840CA94[];
+extern struct SpriteTemplate gSpriteTemplate_840CAEC;
+
+// data/intro_credits_graphics
+extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
+extern const struct SpriteSheet gIntro2MaySpriteSheet;
+extern const struct SpriteSheet gIntro2BicycleSpriteSheet;
+extern const struct SpritePalette gIntro2SpritePalettes[];
+extern const struct SpriteSheet gUnknown_08416E24;
+extern const struct SpriteSheet gUnknown_08416E34;
+
+// graphics
+extern u8 gCreditsCopyrightEnd_Gfx[];
+extern u16 gIntroCopyright_Pal[16];
static void task_a_8143B38(u8 taskIdA);
-void task_a_8143B68(u8 taskIdA);
+static void task_a_8143B68(u8 taskIdA);
static void task_a_8143BFC(u8 taskIdA);
-static void task_a_080C9BFC(u8 taskIdA);
+static void task_a_80C9BFC(u8 taskIdA);
static void task_a_8143CC0(u8 taskIdA);
static void task_a_8143D04(u8 taskIdA);
static void task_a_8143EBC(u8 taskIdA);
@@ -157,21 +223,25 @@ static void task_a_8144114(u8 taskIdA);
static void sub_8144130(void);
static void task_b_81441B8(u8 taskIdB);
static u8 sub_8144454(u8 page, u8 taskIdA);
-
-void task_d_8144514(u8 taskIdD);
-u8 sub_8144ECC(u8 data, u8 taskIdA);
-void sub_81450AC(u8 taskIdA);
+static void task_d_8144514(u8 taskIdD);
+static bool8 sub_8144ECC(u8 data, u8 taskIdA);
+static void sub_81450AC(u8 taskIdA);
void sub_8145128(u16, u16, u16);
-void sub_81452D0(int, int);
+static void sub_81452D0(u16 arg0, u16 arg1);
+static void spritecb_player_8145378(struct Sprite *sprite);
+static void spritecb_rival_8145420(struct Sprite *sprite);
+u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3);
void sub_81458DC(void);
-static void vblank_8143948(void) {
+static void vblank_8143948(void)
+{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void sub_814395C(void) {
+static void sub_814395C(void)
+{
RunTasks();
AnimateSprites();
BuildOamBuffer();
@@ -200,7 +270,8 @@ static void sub_814395C(void) {
gUnknown_02039325 = 1;
}
-void sub_81439D0(void) {
+void sub_81439D0(void)
+{
u8 taskIdA;
s16 taskIdC;
u8 taskIdB;
@@ -234,7 +305,7 @@ void sub_81439D0(void) {
InitMenuWindow(&gWindowConfig_81E7208);
LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC));
- CpuCopy16(&gUnknown_0840B7FC, (void *) (VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC));
+ CpuCopy16(&gUnknown_0840B7FC, (void *)(VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC));
REG_BG0VOFS = 0xFFFC;
@@ -245,7 +316,6 @@ void sub_81439D0(void) {
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
-
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -262,14 +332,15 @@ void sub_81439D0(void) {
sub_81458DC();
- c000->var_88 = 0;
- c000->var_8A = 0;
- c000->var_8C = 0;
+ c000->unk88 = 0;
+ c000->unk8A = 0;
+ c000->unk8C = 0;
gUnknown_02039322 = taskIdA;
}
-void task_a_8143B38(u8 taskIdA) {
+static void task_a_8143B38(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -278,7 +349,8 @@ void task_a_8143B38(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143B68;
}
-void task_a_8143B68(u8 taskIdA) {
+static void task_a_8143B68(u8 taskIdA)
+{
u16 data11;
if (gTasks[taskIdA].data[TDA_4])
@@ -312,7 +384,8 @@ void task_a_8143B68(u8 taskIdA) {
}
}
-static void task_a_8143BFC(u8 taskIdA) {
+static void task_a_8143BFC(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -320,10 +393,11 @@ static void task_a_8143BFC(u8 taskIdA) {
REG_DISPCNT = 0;
sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_080C9BFC;
+ gTasks[taskIdA].func = task_a_80C9BFC;
}
-static void task_a_080C9BFC(u8 taskIdA) {
+static void task_a_80C9BFC(u8 taskIdA)
+{
u16 backup;
SetVBlankCallback(NULL);
@@ -345,7 +419,8 @@ static void task_a_080C9BFC(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143B38;
}
-static void task_a_8143CC0(u8 taskIdA) {
+static void task_a_8143CC0(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -356,36 +431,33 @@ static void task_a_8143CC0(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143D04;
}
-#ifdef NONMATCHING
-static void task_a_8143D04(u8 taskIdA) {
- switch (gMain.state) {
+void task_a_8143D04(u8 taskIdA)
+{
+ switch (gMain.state)
+ {
default:
- case 0: {
+ case 0:
+ {
u16 i;
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM);
- LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800));
- LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2);
-
- for (i = 0; i < 0x800; i++) {
- gHallOfFame.sheet0[i] = 0x11;
- }
-
- for (i = 0; i < 0x800; i++) {
- gHallOfFame.sheet1[i] = 0x22;
- }
-
- for (i = 0; i < 0x800; i++) {
- gHallOfFame.sheet2[i] = 0x33;
- }
-
- unk_201f800[0] = 0;
- unk_201f800[1] = 0x53FF; // light yellow
- unk_201f800[2] = 0x529F; // light red
- unk_201f800[3] = 0x7E94; // light blue
+ LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
+ LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LoadPalette(gBirchBagGrassPal + 1, 1, 31 * 2);
+
+ for (i = 0; i < 0x800; i++)
+ HALL_OF_FAME_SHEET_0[i] = 0x11;
+ for (i = 0; i < 0x800; i++)
+ HALL_OF_FAME_SHEET_1[i] = 0x22;
+ for (i = 0; i < 0x800; i++)
+ HALL_OF_FAME_SHEET_2[i] = 0x33;
+
+ EWRAM_1F800[0] = 0;
+ EWRAM_1F800[1] = 0x53FF; // light yellow
+ EWRAM_1F800[2] = 0x529F; // light red
+ EWRAM_1F800[3] = 0x7E94; // light blue
LoadSpriteSheet(&gUnknown_0840CAA0);
LoadSpritePalette(&gUnknown_0840CAB0);
@@ -393,11 +465,10 @@ static void task_a_8143D04(u8 taskIdA) {
gMain.state += 1;
break;
}
-
- case 1: {
+ case 1:
gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0);
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_0] = 1;
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_1] = taskIdA;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA;
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7];
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
@@ -411,210 +482,10 @@ static void task_a_8143D04(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143B38;
break;
}
- }
}
-#else
-__attribute__((naked))
-static void task_a_8143D04(u8 taskId) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x4\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r0, _08143DC8 @ =gMain\n\
- ldr r1, _08143DCC @ =0x0000043c\n\
- adds r1, r0\n\
- mov r8, r1\n\
- ldrb r7, [r1]\n\
- cmp r7, 0\n\
- beq _08143D24\n\
- cmp r7, 0x1\n\
- beq _08143E0C\n\
-_08143D24:\n\
- bl ResetSpriteData\n\
- bl FreeAllSpritePalettes\n\
- ldr r1, _08143DD0 @ =gReservedSpritePaletteCount\n\
- movs r0, 0x8\n\
- strb r0, [r1]\n\
- ldr r0, _08143DD4 @ =gBirchHelpGfx\n\
- movs r1, 0xC0\n\
- lsls r1, 19\n\
- bl LZ77UnCompVram\n\
- ldr r0, _08143DD8 @ =gBirchGrassTilemap\n\
- ldr r1, _08143DDC @ =0x06003800\n\
- bl LZ77UnCompVram\n\
- ldr r0, _08143DE0 @ =gBirchBagGrassPal + 2\n\
- movs r1, 0x1\n\
- movs r2, 0x3E\n\
- bl LoadPalette\n\
- movs r1, 0\n\
- ldr r4, _08143DE4 @ =0x0201e000\n\
- movs r3, 0x11\n\
- ldr r2, _08143DE8 @ =0x000007ff\n\
-_08143D56:\n\
- adds r0, r1, r4\n\
- strb r3, [r0]\n\
- adds r0, r1, 0x1\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, r2\n\
- bls _08143D56\n\
- movs r1, 0\n\
- ldr r2, _08143DEC @ =0x0201f800\n\
- ldr r6, _08143DF0 @ =gUnknown_0840CAA0\n\
- ldr r0, _08143DF4 @ =0xfffff000\n\
- adds r5, r2, r0\n\
- movs r4, 0x22\n\
- ldr r3, _08143DE8 @ =0x000007ff\n\
-_08143D72:\n\
- adds r0, r1, r5\n\
- strb r4, [r0]\n\
- adds r0, r1, 0x1\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, r3\n\
- bls _08143D72\n\
- movs r1, 0\n\
- ldr r5, _08143DF8 @ =0x0201f000\n\
- movs r4, 0x33\n\
- ldr r3, _08143DE8 @ =0x000007ff\n\
-_08143D88:\n\
- adds r0, r1, r5\n\
- strb r4, [r0]\n\
- adds r0, r1, 0x1\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, r3\n\
- bls _08143D88\n\
- movs r0, 0\n\
- strh r0, [r2]\n\
- ldr r1, _08143DFC @ =0x000053ff\n\
- adds r0, r1, 0\n\
- strh r0, [r2, 0x2]\n\
- ldr r1, _08143E00 @ =0x0000529f\n\
- adds r0, r1, 0\n\
- strh r0, [r2, 0x4]\n\
- ldr r1, _08143E04 @ =0x00007e94\n\
- adds r0, r1, 0\n\
- strh r0, [r2, 0x6]\n\
- adds r0, r6, 0\n\
- bl LoadSpriteSheet\n\
- ldr r0, _08143E08 @ =gUnknown_0840CAB0\n\
- bl LoadSpritePalette\n\
- ldr r1, _08143DC8 @ =gMain\n\
- ldr r2, _08143DCC @ =0x0000043c\n\
- adds r1, r2\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- b _08143E90\n\
- .align 2, 0\n\
-_08143DC8: .4byte gMain\n\
-_08143DCC: .4byte 0x0000043c\n\
-_08143DD0: .4byte gReservedSpritePaletteCount\n\
-_08143DD4: .4byte gBirchHelpGfx\n\
-_08143DD8: .4byte gBirchGrassTilemap\n\
-_08143DDC: .4byte 0x06003800\n\
-_08143DE0: .4byte gBirchBagGrassPal + 2\n\
-_08143DE4: .4byte 0x0201e000\n\
-_08143DE8: .4byte 0x000007ff\n\
-_08143DEC: .4byte 0x0201f800\n\
-_08143DF0: .4byte gUnknown_0840CAA0\n\
-_08143DF4: .4byte 0xfffff000\n\
-_08143DF8: .4byte 0x0201f000\n\
-_08143DFC: .4byte 0x000053ff\n\
-_08143E00: .4byte 0x0000529f\n\
-_08143E04: .4byte 0x00007e94\n\
-_08143E08: .4byte gUnknown_0840CAB0\n\
-_08143E0C:\n\
- ldr r0, _08143EA0 @ =task_d_8144514\n\
- movs r1, 0\n\
- bl CreateTask\n\
- ldr r2, _08143EA4 @ =gTasks\n\
- lsls r4, r6, 2\n\
- adds r4, r6\n\
- lsls r4, 3\n\
- adds r4, r2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- movs r1, 0\n\
- mov r9, r1\n\
- movs r5, 0\n\
- strh r0, [r4, 0xE]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r4, r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- strh r7, [r0, 0x8]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r4, r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- strh r6, [r0, 0xA]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r4, r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- ldrh r1, [r4, 0x16]\n\
- strh r1, [r0, 0xC]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r5, [sp]\n\
- movs r1, 0\n\
- movs r2, 0x10\n\
- movs r3, 0\n\
- bl BeginNormalPaletteFade\n\
- ldr r0, _08143EA8 @ =REG_BG3HOFS\n\
- strh r5, [r0]\n\
- ldr r1, _08143EAC @ =REG_BG3VOFS\n\
- movs r0, 0x20\n\
- strh r0, [r1]\n\
- subs r1, 0x10\n\
- ldr r2, _08143EB0 @ =0x00000703\n\
- adds r0, r2, 0\n\
- strh r0, [r1]\n\
- subs r1, 0xE\n\
- movs r2, 0xCA\n\
- lsls r2, 5\n\
- adds r0, r2, 0\n\
- strh r0, [r1]\n\
- mov r1, r9\n\
- mov r0, r8\n\
- strb r1, [r0]\n\
- ldr r0, _08143EB4 @ =gUnknown_0203935C\n\
- strh r5, [r0]\n\
- ldr r0, _08143EB8 @ =sub_8143B38\n\
- str r0, [r4]\n\
-_08143E90:\n\
- add sp, 0x4\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08143EA0: .4byte task_d_8144514\n\
-_08143EA4: .4byte gTasks\n\
-_08143EA8: .4byte 0x4000000 + 0x1c\n\
-_08143EAC: .4byte 0x4000000 + 0x1e\n\
-_08143EB0: .4byte 0x00000703\n\
-_08143EB4: .4byte gUnknown_0203935C\n\
-_08143EB8: .4byte task_a_8143B38\n\
- .syntax divided\n");
-}
-#endif
-static void task_a_8143EBC(u8 taskIdA) {
+static void task_a_8143EBC(u8 taskIdA)
+{
if (gTasks[taskIdA].data[TDA_12])
{
gTasks[taskIdA].data[TDA_12] -= 1;
@@ -625,7 +496,8 @@ static void task_a_8143EBC(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143F04;
}
-static void task_a_8143F04(u8 taskIdA) {
+static void task_a_8143F04(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -635,7 +507,8 @@ static void task_a_8143F04(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143F3C;
}
-static void task_a_8143F3C(u8 taskIdA) {
+static void task_a_8143F3C(u8 taskIdA)
+{
u16 backup;
sub_8144130();
@@ -657,7 +530,8 @@ static void task_a_8143F3C(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143FDC;
}
-static void task_a_8143FDC(u8 taskIdA) {
+static void task_a_8143FDC(u8 taskIdA)
+{
if (gTasks[taskIdA].data[TDA_0])
{
gTasks[taskIdA].data[TDA_0] -= 1;
@@ -668,7 +542,8 @@ static void task_a_8143FDC(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8144024;
}
-static void task_a_8144024(u8 taskIdA) {
+static void task_a_8144024(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -681,7 +556,8 @@ static void task_a_8144024(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8144080;
}
-static void task_a_8144080(u8 taskIdA) {
+static void task_a_8144080(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -716,7 +592,8 @@ static void task_a_8144080(u8 taskIdA) {
gTasks[taskIdA].data[TDA_0] -= 1;
}
-static void task_a_8144114(u8 taskIdA) {
+static void task_a_8144114(u8 taskIdA)
+{
if (gPaletteFade.active)
{
return;
@@ -725,7 +602,8 @@ static void task_a_8144114(u8 taskIdA) {
SoftReset(0xFF);
}
-static void sub_8144130(void) {
+static void sub_8144130(void)
+{
REG_DISPCNT = 0;
REG_BG3HOFS = 0;
@@ -741,12 +619,13 @@ static void sub_8144130(void) {
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);
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
}
-static void task_b_81441B8(u8 taskIdB) {
+static void task_b_81441B8(u8 taskIdB)
+{
u16 i;
switch (gTasks[taskIdB].data[TDB_0])
@@ -788,7 +667,7 @@ static void task_b_81441B8(u8 taskIdB) {
for (i = 0; i < 5; i++)
{
sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0,
- 9 + i * 2, 240);
+ 9 + i * 2, 240);
}
gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1;
@@ -834,7 +713,7 @@ static void task_b_81441B8(u8 taskIdB) {
return;
}
- if (sub_8144454((u8) gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8) gTasks[taskIdB].data[TDB_TASK_A_ID]))
+ if (sub_8144454((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
{
gTasks[taskIdB].data[TDB_0] += 1;
return;
@@ -872,7 +751,8 @@ static void task_b_81441B8(u8 taskIdB) {
#define LAST_PAGE (PAGE_TEXT_EDITOR)
-static u8 sub_8144454(u8 page, u8 taskIdA) {
+static u8 sub_8144454(u8 page, u8 taskIdA)
+{
// Starts with bike + ocean + morning
if (page == PAGE_PROGRAMMERS_1)
@@ -935,3 +815,1669 @@ static u8 sub_8144454(u8 page, u8 taskIdA) {
return FALSE;
}
+
+#define UNK_DEFINE_44 (0x44)
+
+#define EWRAM_1C000 (*(struct Unk201C000 *)(unk_2000000 + 0x1C000))
+
+static void task_d_8144514(u8 taskIdD)
+{
+ struct Unk201C000 *r6 = &EWRAM_1C000;
+ u8 r2;
+
+ switch (gTasks[taskIdD].data[TDD_STATE])
+ {
+ case 0:
+ break;
+ case 1:
+ if (r6->unk8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0)
+ break;
+ gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0;
+ gTasks[taskIdD].data[TDD_STATE]++;
+ break;
+ case 2:
+ if (r6->unk88 == UNK_DEFINE_44 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68)
+ break;
+ r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A);
+ if (r6->unk8C < r6->unk8E - 1)
+ {
+ r6->unk8C++;
+ gSprites[r2].data3 = 50;
+ }
+ else
+ {
+ r6->unk8C = 0;
+ gSprites[r2].data3 = 512;
+ }
+ r6->unk88++;
+ if (r6->unk8A == 2)
+ r6->unk8A = 0;
+ else
+ r6->unk8A++;
+ gTasks[taskIdD].data[TDD_3] = 50;
+ gTasks[taskIdD].data[TDD_STATE]++;
+ break;
+ case 3:
+ if (gTasks[taskIdD].data[TDD_3] != 0)
+ gTasks[taskIdD].data[TDD_3]--;
+ else
+ gTasks[taskIdD].data[TDD_STATE] = 1;
+ break;
+ }
+}
+
+__attribute__((naked))
+void task_c_8144664(u8 taskIdC)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0814468C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0x32\n\
+ bls _08144680\n\
+ b _0814492C\n\
+_08144680:\n\
+ lsls r0, 2\n\
+ ldr r1, _08144690 @ =_08144694\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0814468C: .4byte gTasks\n\
+_08144690: .4byte _08144694\n\
+ .align 2, 0\n\
+_08144694:\n\
+ .4byte _08144760\n\
+ .4byte _08144784\n\
+ .4byte _081447D8\n\
+ .4byte _081447F0\n\
+ .4byte _0814482C\n\
+ .4byte _08144850\n\
+ .4byte _0814489C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448A8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448C8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448EC\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _08144920\n\
+_08144760:\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ ldr r1, _08144780 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _081447A8\n\
+ .align 2, 0\n\
+_08144780: .4byte gUnknown_0203935A\n\
+_08144784:\n\
+ ldr r7, _081447B0 @ =gUnknown_0203935A\n\
+ movs r3, 0\n\
+ ldrsh r4, [r7, r3]\n\
+ cmp r4, 0\n\
+ beq _081447B4\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ strh r0, [r7]\n\
+_081447A8:\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_081447B0: .4byte gUnknown_0203935A\n\
+_081447B4:\n\
+ ldr r3, _081447D4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ strh r2, [r0, 0x2E]\n\
+ strh r4, [r1, 0x12]\n\
+ b _08144848\n\
+ .align 2, 0\n\
+_081447D4: .4byte gSprites\n\
+_081447D8:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x12]\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0x3F\n\
+ bgt _08144848\n\
+ adds r0, r2, 0x1\n\
+ strh r0, [r1, 0x12]\n\
+ b _08144866\n\
+_081447F0:\n\
+ ldr r3, _08144828 @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x78\n\
+ strh r0, [r2, 0x10]\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_08144828: .4byte gSprites\n\
+_0814482C:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x10]\n\
+ movs r3, 0x10\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0\n\
+ beq _08144844\n\
+ subs r0, r2, 0x1\n\
+ strh r0, [r1, 0x10]\n\
+ b _0814492C\n\
+_08144844:\n\
+ movs r0, 0x40\n\
+ strh r0, [r1, 0x12]\n\
+_08144848:\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
+_08144850:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r4, r0, r6\n\
+ ldrh r1, [r4, 0x12]\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ ble _0814487C\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+_08144866:\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0x14\n\
+ bl Sin\n\
+ ldr r1, _08144878 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_08144878: .4byte gUnknown_0203935A\n\
+_0814487C:\n\
+ ldr r2, _08144898 @ =gSprites\n\
+ movs r3, 0xC\n\
+ ldrsh r1, [r4, r3]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_08144898: .4byte gSprites\n\
+_0814489C:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0x32\n\
+ b _0814492A\n\
+_081448A8:\n\
+ ldr r3, _081448C4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xE\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ b _081448E0\n\
+ .align 2, 0\n\
+_081448C4: .4byte gSprites\n\
+_081448C8:\n\
+ ldr r3, _081448E8 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x4\n\
+_081448E0:\n\
+ strh r2, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_081448E8: .4byte gSprites\n\
+_081448EC:\n\
+ ldr r3, _0814491C @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x5\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_0814491C: .4byte gSprites\n\
+_08144920:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0\n\
+_0814492A:\n\
+ strh r1, [r0, 0x8]\n\
+_0814492C:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+#define UNK_DEF_1F3 (499)
+
+void task_e_8144934(u8 taskIdE)
+{
+ s16 taskIdC;
+
+ switch (gTasks[taskIdE].data[TDE_0])
+ {
+ default:
+ case 0:
+ if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ {
+
+ if (gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_B_ID]].data[TDB_CURRENT_PAGE] == PAGE_ART_DIRECTOR)
+ {
+ gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 20;
+ gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ }
+ }
+
+ sub_8149020(0);
+ break;
+
+ case 1:
+ sub_8149020(0);
+ break;
+
+ case 2:
+ if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ {
+ taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID];
+
+ // Floor to multiple of 128
+ if ((gTasks[taskIdC].data[TDC_5] & -128) == 640)
+ {
+ gTasks[taskIdC].data[TDC_0] = 1;
+ gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ }
+ }
+ sub_8149020(1);
+ break;
+
+ case 3:
+ if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ {
+
+ if (gTasks[taskIdE].data[TDE_1] == UNK_DEF_1F3)
+ {
+ gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 10;
+ gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ }
+ else
+ {
+ gTasks[taskIdE].data[TDE_1] += 1;
+ }
+ }
+
+ sub_8149020(1);
+ break;
+
+ case 4:
+ sub_8149020(2);
+ break;
+ }
+}
+
+#define UNK_DEFINE_45 (0x45)
+
+static void sub_8144A68(u8 data, u8 taskIdA)
+{
+ switch (data)
+ {
+ case 0:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
+ break;
+
+ case 1:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
+ break;
+
+ case 2:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
+ break;
+
+ case 3:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
+ break;
+
+ case 4:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(2, 0x2000, 0x200, 8);
+ break;
+ }
+
+ gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(task_e_8144934, 0);
+ gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA;
+
+ gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(task_c_8144664, 0);
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST];
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST];
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0;
+
+ if (data == 2)
+ {
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45;
+ }
+}
+
+static bool8 sub_8144ECC(u8 data, u8 taskIdA)
+{
+ u8 spriteId;
+
+ switch (gMain.state)
+ {
+ default:
+ case 0:
+ REG_DISPCNT = 0;
+ REG_BG3HOFS = 8;
+ REG_BG3VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gMain.state = 1;
+ break;
+
+ case 1:
+ gUnknown_02039358 = 34;
+ gUnknown_0203935A = 0;
+ sub_8148CB0(data);
+ gMain.state += 1;
+ break;
+
+ case 2:
+ if (gSaveBlock2.playerGender == MALE)
+ {
+ LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet);
+ LoadCompressedObjectPic(&gUnknown_08416E34);
+ LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadSpritePalettes(gIntro2SpritePalettes);
+
+ spriteId = intro_create_brendan_sprite(120, 46);
+ gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_player_8145378;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA54;
+
+ spriteId = intro_create_may_sprite(272, 46);
+ gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_rival_8145420;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
+ }
+ else
+ {
+ LoadCompressedObjectPic(&gIntro2MaySpriteSheet);
+ LoadCompressedObjectPic(&gUnknown_08416E24);
+ LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadSpritePalettes(gIntro2SpritePalettes);
+
+ spriteId = intro_create_may_sprite(120, 46);
+ gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_player_8145378;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA54;
+
+ spriteId = intro_create_brendan_sprite(272, 46);
+ gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_rival_8145420;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
+ };
+
+ gMain.state += 1;
+ break;
+
+ case 3:
+ sub_8144A68(data, taskIdA);
+ sub_8148E90(data);
+ gMain.state = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_81450AC(u8 taskIdA)
+{
+ if (gTasks[taskIdA].data[TDA_0] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_0]);
+ gTasks[taskIdA].data[TDA_0] = 0;
+ }
+
+ if (gTasks[taskIdA].data[TDA_TASK_C_ID] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_TASK_C_ID]);
+ gTasks[taskIdA].data[TDA_TASK_C_ID] = 0;
+ }
+
+ if (gTasks[taskIdA].data[TDA_TASK_E_ID] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_TASK_E_ID]);
+ gTasks[taskIdA].data[TDA_TASK_E_ID] = 0;
+ }
+
+ if (gTasks[taskIdA].data[TDA_TASK_D_ID] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_TASK_D_ID]);
+ gTasks[taskIdA].data[TDA_TASK_D_ID] = 0;
+ }
+
+ gUnknown_0203935C = 1;
+}
+
+__attribute__((naked))
+void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r3, r0, 0\n\
+ adds r4, r2, 0\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ lsls r4, 16\n\
+ lsrs r5, r4, 16\n\
+ ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
+ movs r6, 0xC0\n\
+ lsls r6, 19\n\
+ adds r3, r6\n\
+ adds r1, r3, 0\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ lsrs r4, 20\n\
+ lsls r4, 28\n\
+ lsrs r4, 16\n\
+ movs r2, 0\n\
+ adds r1, r4, 0x1\n\
+ ldr r3, _081451F4 @ =0x000003ff\n\
+_0814515E:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r6\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r3\n\
+ bls _0814515E\n\
+ movs r2, 0\n\
+ adds r0, r4, 0x2\n\
+ adds r6, r4, 0\n\
+ adds r6, 0x17\n\
+ movs r1, 0x2B\n\
+ adds r1, r4\n\
+ mov r12, r1\n\
+ adds r4, 0x42\n\
+ ldr r5, _081451F8 @ =0x060001c8\n\
+ adds r3, r0, 0\n\
+_08145184:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x14\n\
+ bls _08145184\n\
+ movs r2, 0\n\
+ ldr r5, _081451FC @ =0x06000248\n\
+ adds r3, r6, 0\n\
+_0814519E:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x13\n\
+ bls _0814519E\n\
+ movs r2, 0\n\
+ ldr r5, _08145200 @ =0x060002c8\n\
+ mov r3, r12\n\
+_081451B8:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x16\n\
+ bls _081451B8\n\
+ movs r2, 0\n\
+ ldr r3, _08145204 @ =0x06000348\n\
+_081451D0:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r3\n\
+ adds r1, r2, r4\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0xB\n\
+ bls _081451D0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\
+_081451F0: .4byte gIntroCopyright_Pal\n\
+_081451F4: .4byte 0x000003ff\n\
+_081451F8: .4byte 0x060001c8\n\
+_081451FC: .4byte 0x06000248\n\
+_08145200: .4byte 0x060002c8\n\
+_08145204: .4byte 0x06000348\n\
+ .syntax divided\n");
+}
+
+u16 sub_8145208(u8 arg0)
+{
+
+ u16 out = (arg0 & 0x3F) + 80;
+
+ if (arg0 == 0xFF)
+ {
+ return 1;
+ }
+
+ if (arg0 & (1 << 7))
+ {
+ out |= 0x800;
+ }
+
+ if (arg0 & (1 << 6))
+ {
+ out |= 0x400;
+ }
+
+ return out;
+}
+
+__attribute__((naked))
+void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r10, r1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x4]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0x8]\n\
+ lsls r0, 16\n\
+ lsrs r0, 20\n\
+ lsls r0, 28\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
+_0814527A:\n\
+ movs r4, 0\n\
+ lsls r7, r5, 1\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r5\n\
+ adds r2, r5, 0x1\n\
+ mov r8, r2\n\
+ lsls r0, 6\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r6, r0, r1\n\
+_0814528C:\n\
+ adds r0, r7, r5\n\
+ adds r0, r4\n\
+ ldr r2, [sp]\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ bl sub_8145208\n\
+ mov r2, r10\n\
+ adds r1, r2, r4\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ adds r1, r2\n\
+ add r0, r9\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x2\n\
+ bls _0814528C\n\
+ mov r1, r8\n\
+ lsls r0, r1, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x4\n\
+ bls _0814527A\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+static void sub_81452D0(u16 arg0, u16 arg1)
+{
+ u16 i;
+ u16 foo = arg1 / 16;
+ u16 bar = foo * 4096;
+
+ for (i = 0; i < 0x400; i++)
+ ((u16 *)(VRAM + arg0))[i] = bar + 1;
+
+ sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B84B, 7, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B85A, 11, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B85A, 16, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B869, 20, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B878, 24, 7, arg0, arg1);
+}
+
+static void spritecb_player_8145378(struct Sprite *sprite)
+{
+ if (gUnknown_0203935C != 0)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ switch (sprite->data0)
+ {
+ case 0:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ break;
+
+ case 1:
+ StartSpriteAnimIfDifferent(sprite, 1);
+ if (sprite->pos1.x > -32)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+
+ case 2:
+ StartSpriteAnimIfDifferent(sprite, 2);
+ break;
+
+ case 3:
+ StartSpriteAnimIfDifferent(sprite, 3);
+ break;
+
+ case 4:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ if (sprite->pos1.x > 120)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+
+ case 5:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ if (sprite->pos1.x > -32)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+ }
+}
+
+static void spritecb_rival_8145420(struct Sprite *sprite)
+{
+ if (gUnknown_0203935C != 0)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->pos2.y = 0;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ break;
+
+ case 1:
+ if (sprite->pos1.x > 200)
+ {
+ StartSpriteAnimIfDifferent(sprite, 1);
+ }
+ else
+ {
+ StartSpriteAnimIfDifferent(sprite, 2);
+ }
+
+ if (sprite->pos1.x > -32)
+ {
+ sprite->pos1.x -= 2;
+ }
+
+ sprite->pos2.y = -gUnknown_0203935A;
+ break;
+
+ case 2:
+ sprite->data7 += 1;
+ StartSpriteAnimIfDifferent(sprite, 0);
+
+ if ((sprite->data7 & 3) == 0)
+ {
+ sprite->pos1.x += 1;
+ }
+ break;
+
+ case 3:
+ StartSpriteAnimIfDifferent(sprite, 0);
+
+ if (sprite->pos1.x > -32)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+
+
+ }
+}
+
+__attribute__((naked))
+void spritecb_81454E0(struct Sprite *sprite)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ adds r5, r0, 0\n\
+ ldr r0, _081454F8 @ =gUnknown_0203935C\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ beq _081454FC\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
+ b _081456A6\n\
+ .align 2, 0\n\
+_081454F8: .4byte gUnknown_0203935C\n\
+_081454FC:\n\
+ ldrh r0, [r5, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x3C]\n\
+ movs r2, 0x2E\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xA\n\
+ bhi _08145544\n\
+ lsls r0, 2\n\
+ ldr r1, _08145514 @ =_08145518\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08145514: .4byte _08145518\n\
+ .align 2, 0\n\
+_08145518:\n\
+ .4byte _08145544\n\
+ .4byte _0814559E\n\
+ .4byte _08145620\n\
+ .4byte _08145660\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145696\n\
+_08145544:\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0x4\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x30\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x1F\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r5, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x3]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ movs r1, 0x10\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+_0814559E:\n\
+ ldrh r1, [r5, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _081455D4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x32\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ b _081455DA\n\
+_081455D4:\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+_081455DA:\n\
+ movs r2, 0x30\n\
+ ldrsh r1, [r5, r2]\n\
+ cmp r1, 0x2\n\
+ beq _081456A6\n\
+ cmp r1, 0x2\n\
+ bgt _081455EC\n\
+ cmp r1, 0x1\n\
+ beq _081455F2\n\
+ b _081456A6\n\
+_081455EC:\n\
+ cmp r1, 0x3\n\
+ beq _0814560A\n\
+ b _081456A6\n\
+_081455F2:\n\
+ ldrh r1, [r5, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08145602\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
+_08145602:\n\
+ ldrh r0, [r5, 0x20]\n\
+ subs r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
+_0814560A:\n\
+ ldrh r0, [r5, 0x3C]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08145618\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
+_08145618:\n\
+ ldrh r0, [r5, 0x20]\n\
+ adds r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
+_08145620:\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145630\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r5, 0x34]\n\
+ b _081456A6\n\
+_08145630:\n\
+ ldr r1, _0814565C @ =REG_BLDCNT\n\
+ movs r2, 0xF4\n\
+ lsls r2, 4\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ movs r0, 0x10\n\
+ strh r0, [r1]\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x34]\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
+_0814565C: .4byte REG_BLDCNT\n\
+_08145660:\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145684\n\
+ subs r1, 0x1\n\
+ strh r1, [r5, 0x34]\n\
+ ldr r3, _08145680 @ =REG_BLDALPHA\n\
+ movs r0, 0x34\n\
+ ldrsh r2, [r5, r0]\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ strh r1, [r3]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
+_08145680: .4byte REG_BLDALPHA\n\
+_08145684:\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0xA\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+_08145696:\n\
+ ldr r0, _081456B0 @ =REG_BLDCNT\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
+_081456A6:\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_081456B0: .4byte REG_BLDCNT\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
+{
+ u32 species;
+ u32 personality;
+ void *palette;
+ u8 spriteId;
+ u8 spriteId2;
+
+ species = NationalPokedexNumToSpecies(nationalNum);
+ switch (species)
+ {
+ case SPECIES_UNOWN:
+ personality = gSaveBlock2.pokedex.unownPersonality;
+ break;
+
+ case SPECIES_SPINDA:
+ personality = gSaveBlock2.pokedex.spindaPersonality;
+ break;
+
+ default:
+ personality = 0;
+ break;
+ }
+
+ LoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].x,
+ gMonFrontPicCoords[species].y,
+ 0x2000000,
+ gUnknown_0840B5A0[arg3],
+ species,
+ personality,
+ 1
+ );
+
+ palette = species_and_otid_get_pal(species, 0, 0xFFFF);
+ LoadCompressedPalette(palette, 0x100 + (arg3 * 16), 0x20);
+ sub_8143648(arg3, arg3);
+
+ spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ gSprites[spriteId].oam.paletteNum = arg3;
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].data1 = arg3 + 1;
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].callback = spritecb_81454E0;
+
+ spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1);
+ gSprites[spriteId2].data0 = spriteId;
+
+ StartSpriteAnimIfDifferent(&gSprites[spriteId2], arg3);
+
+ return spriteId;
+}
+#else
+__attribute__((naked))
+u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ str r2, [sp, 0x10]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ mov r9, r3\n\
+ adds r0, r6, 0\n\
+ bl NationalPokedexNumToSpecies\n\
+ adds r6, r0, 0\n\
+ cmp r6, 0xC9\n\
+ beq _081456F8\n\
+ movs r0, 0x9A\n\
+ lsls r0, 1\n\
+ cmp r6, r0\n\
+ beq _081456EE\n\
+ movs r7, 0\n\
+ b _081456FC\n\
+_081456EE:\n\
+ ldr r0, _081456F4 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x20]\n\
+ b _081456FC\n\
+ .align 2, 0\n\
+_081456F4: .4byte gSaveBlock2\n\
+_081456F8:\n\
+ ldr r0, _081457E8 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x1C]\n\
+_081456FC:\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _081457EC @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
+ mov r8, r4\n\
+ mov r5, r9\n\
+ lsls r4, r5, 2\n\
+ add r4, r8\n\
+ ldr r4, [r4]\n\
+ str r4, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r4, 0x1\n\
+ str r4, [sp, 0xC]\n\
+ bl LoadSpecialPokePic\n\
+ ldr r2, _081457F8 @ =0x0000ffff\n\
+ adds r0, r6, 0\n\
+ movs r1, 0\n\
+ bl species_and_otid_get_pal\n\
+ lsls r5, 4\n\
+ mov r8, r5\n\
+ movs r1, 0x80\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+ mov r7, r9\n\
+ lsls r6, r7, 24\n\
+ lsrs r6, 24\n\
+ mov r0, r9\n\
+ adds r1, r6, 0\n\
+ bl sub_8143648\n\
+ ldr r0, _081457FC @ =gUnknown_02024E8C\n\
+ mov r2, r10\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ ldr r3, [sp, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r5, _08145800 @ =gSprites\n\
+ lsls r2, r4, 4\n\
+ adds r2, r4\n\
+ lsls r2, 2\n\
+ adds r3, r2, r5\n\
+ ldrb r1, [r3, 0x5]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ mov r7, r8\n\
+ orrs r0, r7\n\
+ movs r1, 0xD\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x5]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x30]\n\
+ movs r0, 0x3E\n\
+ adds r0, r3\n\
+ mov r8, r0\n\
+ ldrb r0, [r0]\n\
+ orrs r0, r1\n\
+ mov r1, r8\n\
+ strb r0, [r1]\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x1C\n\
+ adds r2, r0\n\
+ ldr r0, _08145804 @ =spritecb_81454E0\n\
+ str r0, [r2]\n\
+ ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
+ movs r2, 0x20\n\
+ ldrsh r1, [r3, r2]\n\
+ movs r7, 0x22\n\
+ ldrsh r2, [r3, r7]\n\
+ movs r3, 0x1\n\
+ bl CreateSprite\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ strh r4, [r0, 0x2E]\n\
+ adds r1, r6, 0\n\
+ bl StartSpriteAnimIfDifferent\n\
+ adds r0, r4, 0\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_081457E8: .4byte gSaveBlock2\n\
+_081457EC: .4byte gMonFrontPicTable\n\
+_081457F0: .4byte gMonFrontPicCoords\n\
+_081457F4: .4byte gUnknown_0840B5A0\n\
+_081457F8: .4byte 0x0000ffff\n\
+_081457FC: .4byte gUnknown_02024E8C\n\
+_08145800: .4byte gSprites\n\
+_08145804: .4byte spritecb_81454E0\n\
+_08145808: .4byte gSpriteTemplate_840CAEC\n\
+ .syntax divided\n");
+}
+#endif
+
+void spritecb_814580C(struct Sprite *sprite)
+{
+ if (gSprites[sprite->data0].data0 == 10 || gUnknown_0203935C)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ sprite->invisible = gSprites[sprite->data0].invisible;
+ sprite->oam.objMode = gSprites[sprite->data0].oam.objMode;
+ sprite->oam.affineMode = gSprites[sprite->data0].oam.affineMode;
+ sprite->oam.matrixNum = gSprites[sprite->data0].oam.matrixNum;
+ sprite->pos1.x = gSprites[sprite->data0].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+}
+
+__attribute__((naked))
+void sub_81458DC(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r7, _0814597C @ =0x0201c000\n\
+ ldr r0, _08145980 @ =0x00004023\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl GetStarterPokemon\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl SpeciesToNationalPokedexNum\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ movs r4, 0x1\n\
+ movs r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ mov r8, r0\n\
+_0814590E:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_8090D90\n\
+ lsls r0, 24\n\
+ adds r6, r7, 0\n\
+ adds r6, 0x90\n\
+ cmp r0, 0\n\
+ beq _0814592C\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ strh r4, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+_0814592C:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r8\n\
+ bls _0814590E\n\
+ adds r4, r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ lsls r1, r4, 16\n\
+ mov r9, r1\n\
+ movs r2, 0x8E\n\
+ adds r2, r7\n\
+ mov r8, r2\n\
+ adds r1, r7, 0\n\
+ adds r1, 0x86\n\
+ str r1, [sp]\n\
+ cmp r4, r0\n\
+ bhi _08145964\n\
+ adds r1, r6, 0\n\
+ movs r3, 0\n\
+ adds r2, r0, 0\n\
+_08145954:\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1, r0\n\
+ strh r3, [r0]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r2\n\
+ bls _08145954\n\
+_08145964:\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r0, r7, r2\n\
+ strh r5, [r0]\n\
+ mov r1, r9\n\
+ lsrs r0, r1, 16\n\
+ cmp r0, 0x43\n\
+ bhi _08145988\n\
+ mov r2, r8\n\
+ strh r5, [r2]\n\
+ b _0814598E\n\
+ .align 2, 0\n\
+_0814597C: .4byte 0x0201c000\n\
+_08145980: .4byte 0x00004023\n\
+_08145984: .4byte 0x00000181\n\
+_08145988:\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+_0814598E:\n\
+ movs r5, 0\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r4, r7, r2\n\
+ mov r9, r5\n\
+ b _0814599E\n\
+_0814599A:\n\
+ cmp r5, 0x43\n\
+ bhi _081459EE\n\
+_0814599E:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldrh r1, [r4]\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r3, r6, r0\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ mov r0, r9\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r2, r0\n\
+ beq _081459E8\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ mov r1, r9\n\
+ strh r1, [r0]\n\
+_081459E8:\n\
+ ldrh r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _0814599A\n\
+_081459EE:\n\
+ mov r2, r8\n\
+ ldrh r0, [r2]\n\
+ cmp r0, 0x43\n\
+ bhi _08145A26\n\
+ adds r5, r0, 0\n\
+ movs r2, 0\n\
+ cmp r5, 0x43\n\
+ bhi _08145A5C\n\
+ mov r3, r8\n\
+_08145A00:\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ ldrh r0, [r3]\n\
+ cmp r2, r0\n\
+ bne _08145A1A\n\
+ movs r2, 0\n\
+_08145A1A:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x43\n\
+ bls _08145A00\n\
+ b _08145A5C\n\
+_08145A26:\n\
+ movs r4, 0\n\
+ ldrh r0, [r7]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
+_08145A2E:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
+ cmp r4, 0x43\n\
+ bls _08145A2E\n\
+_08145A42:\n\
+ mov r1, r8\n\
+ ldrh r0, [r1]\n\
+ subs r0, 0x1\n\
+ cmp r4, r0\n\
+ bge _08145A5C\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldr r2, [sp]\n\
+ ldrh r1, [r2]\n\
+ strh r1, [r0]\n\
+ mov r0, r10\n\
+ strh r0, [r2]\n\
+ b _08145A62\n\
+_08145A5C:\n\
+ mov r2, r10\n\
+ ldr r1, [sp]\n\
+ strh r2, [r1]\n\
+_08145A62:\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
diff --git a/src/daycare.c b/src/daycare.c
index 23f0305d8..1729efb2a 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -4,30 +4,28 @@
u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest)
{
- s8 nickname[POKEMON_NAME_LENGTH * 2];
+ s8 nickname[POKEMON_NAME_LENGTH * 2];
- GetMonData(mon, MON_DATA_NICKNAME, nickname);
- return StringCopy10(dest, nickname);
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
}
u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest)
{
- s8 nickname[POKEMON_NAME_LENGTH * 2];
+ s8 nickname[POKEMON_NAME_LENGTH * 2];
- GetBoxMonData(mon, MON_DATA_NICKNAME, nickname);
- return StringCopy10(dest, nickname);
+ GetBoxMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
}
u8 daycare_count_pokemon(struct BoxPokemon *daycare_data)
{
- u8 i, count;
- count = 0;
+ u8 i, count;
+ count = 0;
- for(i = 0;i <= 1;i++) {
- if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) {
- count++;
- }
- }
+ for (i = 0; i <= 1; i++)
+ if (GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0)
+ count++;
- return count;
+ return count;
}
diff --git a/src/decompress.c b/src/decompress.c
index 8f573fecb..fb91ebd67 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -1,7 +1,8 @@
#include "global.h"
#include "decompress.h"
-#include "species.h"
#include "asm.h"
+#include "species.h"
+#include "text.h"
#define WRAM 0x02000000
@@ -22,7 +23,7 @@ void LZDecompressVram(const void *src, void *dest)
void LoadCompressedObjectPic(const struct SpriteSheet *a)
{
struct SpriteSheet spriteSheet;
-
+
LZ77UnCompWram(a->data, (void *)WRAM);
spriteSheet.data = (void *)WRAM;
spriteSheet.size = a->size;
@@ -33,7 +34,7 @@ void LoadCompressedObjectPic(const struct SpriteSheet *a)
void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer)
{
struct SpriteSheet spriteSheet;
-
+
LZ77UnCompWram(a->data, buffer);
spriteSheet.data = buffer;
spriteSheet.size = a->size;
@@ -44,7 +45,7 @@ void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *bu
void LoadCompressedObjectPalette(const struct SpritePalette *a)
{
struct SpritePalette spritePalette;
-
+
LZ77UnCompWram(a->data, (void *)WRAM);
spritePalette.data = (void *)WRAM;
spritePalette.tag = a->tag;
@@ -54,7 +55,7 @@ void LoadCompressedObjectPalette(const struct SpritePalette *a)
void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer)
{
struct SpritePalette spritePalette;
-
+
LZ77UnCompWram(a->data, buffer);
spritePalette.data = buffer;
spritePalette.tag = a->tag;
@@ -72,8 +73,8 @@ void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d,
void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g)
{
u32 frontOrBack;
-
- // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
+
+ // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
if (dest == gUnknown_081FAF4C[0] || dest == gUnknown_081FAF4C[2])
frontOrBack = 0; // backPic
else
@@ -85,12 +86,12 @@ void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32
void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 frontOrBack)
{
u8 frontOrBack8 = frontOrBack;
-
+
if (species == SPECIES_UNOWN)
{
u16 i = (((g & 0x3000000) >> 18) | ((g & 0x30000) >> 12) | ((g & 0x300) >> 6) | (g & 3)) % 0x1C;
-
- // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
+
+ // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
if (i == 0)
i = SPECIES_UNOWN;
else
diff --git a/src/decoration.c b/src/decoration.c
index cf137799a..279a7568b 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -12,14 +12,15 @@ void sub_80FEC94(u8 arg0);
void sub_80FECB8(u8 arg0);
void sub_80FECE0(u8 arg0);
-void sub_80FE7EC(u8 arg0) {
+void sub_80FE7EC(u8 arg0)
+{
sub_8072DEC();
MenuZeroFillWindowRect(0, 0, 29, 19);
sub_80FEC94(arg0);
sub_80FECB8(gUnknown_020388F6);
- MenuDrawTextWindow(15, 12, 29, 19);
+ MenuDrawTextWindow(15, 12, 29, 19);
sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4);
InitMenu(0, 1, 2, gUnknown_020388F3 + 1, gUnknown_020388F2, 13);
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index d534a9990..b2a8e81da 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -1,23 +1,32 @@
#include "global.h"
#include "asm.h"
+#include "event_data.h"
#include "link.h"
#include "rng.h"
-#include "event_data.h"
+#include "text.h"
+#include "dewford_trend.h"
+
+extern u8 unk_2000000[];
-extern struct EasyChatPair unk_2007800[5];
-extern struct EasyChatPair unk_2007900[5];
extern u16 gScriptResult;
extern u16 gSpecialVar_0x8004;
+static void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c);
+static bool8 sub_80FA670(struct EasyChatPair *a, struct EasyChatPair *b, u8 c);
+static void sub_80FA740(struct EasyChatPair *s);
+static bool8 SB1ContainsWords(u16 *a);
+static bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2);
+static s16 sub_80FA828(struct EasyChatPair *a, u16 b);
+
void sub_80FA17C(void)
{
u16 i;
- for(i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++)
{
gSaveBlock1.easyChatPairs[i].words[0] = sub_80EB72C(10);
- if(Random() & 1)
+ if (Random() & 1)
gSaveBlock1.easyChatPairs[i].words[1] = sub_80EB72C(12);
else
gSaveBlock1.easyChatPairs[i].words[1] = sub_80EB72C(13);
@@ -35,22 +44,22 @@ void sub_80FA220(u16 a)
u32 sp0;
u32 sp4;
- if(a != 0)
+ if (a != 0)
{
sp0 = a * 5;
- for(i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++)
{
//_080FA24A
u32 r2 = sp0;
u32 r4;
- if(gSaveBlock1.easyChatPairs[i].unk1_6 == 0)
+ if (gSaveBlock1.easyChatPairs[i].unk1_6 == 0)
{
- if(gSaveBlock1.easyChatPairs[i].unk0_0 >= r2)
+ if (gSaveBlock1.easyChatPairs[i].unk0_0 >= r2)
{
gSaveBlock1.easyChatPairs[i].unk0_0 -= r2;
- if(gSaveBlock1.easyChatPairs[i].unk0_0 == 0)
+ if (gSaveBlock1.easyChatPairs[i].unk0_0 == 0)
gSaveBlock1.easyChatPairs[i].unk1_6 = 1;
continue;
}
@@ -60,18 +69,18 @@ void sub_80FA220(u16 a)
}
//_080FA2A0
r4 = gSaveBlock1.easyChatPairs[i].unk0_0 + r2;
- if(r4 > gSaveBlock1.easyChatPairs[i].unk0_7)
+ if (r4 > gSaveBlock1.easyChatPairs[i].unk0_7)
{
sp4 = r4 % gSaveBlock1.easyChatPairs[i].unk0_7;
r4 = r4 / gSaveBlock1.easyChatPairs[i].unk0_7;
- if(r4 == 0)
+ if (r4 == 0)
gSaveBlock1.easyChatPairs[i].unk1_6 = 1;
else
gSaveBlock1.easyChatPairs[i].unk1_6 = 0;
- if(gSaveBlock1.easyChatPairs[i].unk1_6)
+ if (gSaveBlock1.easyChatPairs[i].unk1_6)
{
gSaveBlock1.easyChatPairs[i].unk0_0 += sp4;
continue;
@@ -83,7 +92,7 @@ void sub_80FA220(u16 a)
//_080FA310
gSaveBlock1.easyChatPairs[i].unk0_0 = r4;
- if(gSaveBlock1.easyChatPairs[i].unk0_0 == gSaveBlock1.easyChatPairs[i].unk0_7)
+ if (gSaveBlock1.easyChatPairs[i].unk0_0 == gSaveBlock1.easyChatPairs[i].unk0_7)
gSaveBlock1.easyChatPairs[i].unk1_6 = 0;
}
sub_80FA46C(gSaveBlock1.easyChatPairs, 5, 0);
@@ -96,173 +105,173 @@ __attribute__((naked))
void sub_80FA220(u16 a)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0\n\
- bne _080FA236\n\
- b _080FA34E\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0\n\
+ bne _080FA236\n\
+ b _080FA34E\n\
_080FA236:\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- mov r10, r0\n\
- movs r1, 0x7F\n\
- mov r9, r1\n\
- movs r2, 0x80\n\
- negs r2, r2\n\
- mov r8, r2\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ movs r1, 0x7F\n\
+ mov r9, r1\n\
+ movs r2, 0x80\n\
+ negs r2, r2\n\
+ mov r8, r2\n\
_080FA24A:\n\
- ldr r2, [sp]\n\
- mov r4, r10\n\
- lsls r0, r4, 3\n\
- ldr r1, _080FA28C @ =gSaveBlock1 + 0x2DD4\n\
- adds r5, r0, r1\n\
- ldrb r6, [r5, 0x1]\n\
- movs r0, 0x40\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- bne _080FA2A0\n\
- ldrb r4, [r5]\n\
- lsls r3, r4, 25\n\
- lsrs r1, r3, 25\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bcc _080FA290\n\
- adds r0, r1, 0\n\
- subs r0, r2\n\
- mov r2, r9\n\
- ands r0, r2\n\
- mov r1, r8\n\
- ands r1, r4\n\
- orrs r1, r0\n\
- strb r1, [r5]\n\
- movs r0, 0x7F\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _080FA336\n\
- movs r0, 0x40\n\
- orrs r0, r6\n\
- b _080FA334\n\
- .align 2, 0\n\
+ ldr r2, [sp]\n\
+ mov r4, r10\n\
+ lsls r0, r4, 3\n\
+ ldr r1, _080FA28C @ =gSaveBlock1 + 0x2DD4\n\
+ adds r5, r0, r1\n\
+ ldrb r6, [r5, 0x1]\n\
+ movs r0, 0x40\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ bne _080FA2A0\n\
+ ldrb r4, [r5]\n\
+ lsls r3, r4, 25\n\
+ lsrs r1, r3, 25\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bcc _080FA290\n\
+ adds r0, r1, 0\n\
+ subs r0, r2\n\
+ mov r2, r9\n\
+ ands r0, r2\n\
+ mov r1, r8\n\
+ ands r1, r4\n\
+ orrs r1, r0\n\
+ strb r1, [r5]\n\
+ movs r0, 0x7F\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _080FA336\n\
+ movs r0, 0x40\n\
+ orrs r0, r6\n\
+ b _080FA334\n\
+ .align 2, 0\n\
_080FA28C: .4byte gSaveBlock1 + 0x2DD4\n\
_080FA290:\n\
- lsrs r0, r3, 25\n\
- subs r2, r0\n\
- mov r0, r8\n\
- ands r0, r4\n\
- strb r0, [r5]\n\
- movs r0, 0x40\n\
- orrs r0, r6\n\
- strb r0, [r5, 0x1]\n\
+ lsrs r0, r3, 25\n\
+ subs r2, r0\n\
+ mov r0, r8\n\
+ ands r0, r4\n\
+ strb r0, [r5]\n\
+ movs r0, 0x40\n\
+ orrs r0, r6\n\
+ strb r0, [r5, 0x1]\n\
_080FA2A0:\n\
- ldrb r7, [r5]\n\
- lsls r0, r7, 25\n\
- lsrs r0, 25\n\
- adds r4, r0, r2\n\
- ldrh r0, [r5]\n\
- lsls r6, r0, 18\n\
- lsls r0, r4, 16\n\
- lsrs r0, 16\n\
- lsrs r1, r6, 25\n\
- cmp r0, r1\n\
- bls _080FA310\n\
- adds r0, r4, 0\n\
- bl __umodsi3\n\
- adds r3, r0, 0\n\
- lsrs r1, r6, 25\n\
- adds r0, r4, 0\n\
- str r3, [sp, 0x4]\n\
- bl __udivsi3\n\
- adds r4, r0, 0\n\
- movs r0, 0x1\n\
- eors r4, r0\n\
- ands r4, r0\n\
- lsls r2, r4, 6\n\
- ldrb r0, [r5, 0x1]\n\
- movs r4, 0x41\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r0, r1\n\
- orrs r0, r2\n\
- strb r0, [r5, 0x1]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- ldr r3, [sp, 0x4]\n\
- cmp r0, 0\n\
- beq _080FA2FA\n\
- adds r1, r3, 0\n\
- mov r0, r9\n\
- ands r1, r0\n\
- mov r0, r8\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r5]\n\
- b _080FA336\n\
+ ldrb r7, [r5]\n\
+ lsls r0, r7, 25\n\
+ lsrs r0, 25\n\
+ adds r4, r0, r2\n\
+ ldrh r0, [r5]\n\
+ lsls r6, r0, 18\n\
+ lsls r0, r4, 16\n\
+ lsrs r0, 16\n\
+ lsrs r1, r6, 25\n\
+ cmp r0, r1\n\
+ bls _080FA310\n\
+ adds r0, r4, 0\n\
+ bl __umodsi3\n\
+ adds r3, r0, 0\n\
+ lsrs r1, r6, 25\n\
+ adds r0, r4, 0\n\
+ str r3, [sp, 0x4]\n\
+ bl __udivsi3\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x1\n\
+ eors r4, r0\n\
+ ands r4, r0\n\
+ lsls r2, r4, 6\n\
+ ldrb r0, [r5, 0x1]\n\
+ movs r4, 0x41\n\
+ negs r4, r4\n\
+ adds r1, r4, 0\n\
+ ands r0, r1\n\
+ orrs r0, r2\n\
+ strb r0, [r5, 0x1]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ ldr r3, [sp, 0x4]\n\
+ cmp r0, 0\n\
+ beq _080FA2FA\n\
+ adds r1, r3, 0\n\
+ mov r0, r9\n\
+ ands r1, r0\n\
+ mov r0, r8\n\
+ ands r0, r7\n\
+ orrs r0, r1\n\
+ strb r0, [r5]\n\
+ b _080FA336\n\
_080FA2FA:\n\
- ldrh r0, [r5]\n\
- lsls r0, 18\n\
- lsrs r0, 25\n\
- subs r0, r3\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r8\n\
- ands r1, r7\n\
- orrs r1, r0\n\
- strb r1, [r5]\n\
- b _080FA336\n\
+ ldrh r0, [r5]\n\
+ lsls r0, 18\n\
+ lsrs r0, 25\n\
+ subs r0, r3\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ mov r1, r8\n\
+ ands r1, r7\n\
+ orrs r1, r0\n\
+ strb r1, [r5]\n\
+ b _080FA336\n\
_080FA310:\n\
- mov r2, r9\n\
- ands r4, r2\n\
- mov r0, r8\n\
- ands r0, r7\n\
- orrs r0, r4\n\
- strb r0, [r5]\n\
- lsls r0, 25\n\
- ldrh r1, [r5]\n\
- lsls r1, 18\n\
- lsrs r0, 25\n\
- lsrs r1, 25\n\
- cmp r0, r1\n\
- bne _080FA336\n\
- ldrb r0, [r5, 0x1]\n\
- movs r4, 0x41\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r0, r1\n\
+ mov r2, r9\n\
+ ands r4, r2\n\
+ mov r0, r8\n\
+ ands r0, r7\n\
+ orrs r0, r4\n\
+ strb r0, [r5]\n\
+ lsls r0, 25\n\
+ ldrh r1, [r5]\n\
+ lsls r1, 18\n\
+ lsrs r0, 25\n\
+ lsrs r1, 25\n\
+ cmp r0, r1\n\
+ bne _080FA336\n\
+ ldrb r0, [r5, 0x1]\n\
+ movs r4, 0x41\n\
+ negs r4, r4\n\
+ adds r1, r4, 0\n\
+ ands r0, r1\n\
_080FA334:\n\
- strb r0, [r5, 0x1]\n\
+ strb r0, [r5, 0x1]\n\
_080FA336:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- cmp r0, 0x4\n\
- bls _080FA24A\n\
- ldr r0, _080FA360 @ =gSaveBlock1 + 0x2DD4\n\
- movs r1, 0x5\n\
- movs r2, 0\n\
- bl sub_80FA46C\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ cmp r0, 0x4\n\
+ bls _080FA24A\n\
+ ldr r0, _080FA360 @ =gSaveBlock1 + 0x2DD4\n\
+ movs r1, 0x5\n\
+ movs r2, 0\n\
+ bl sub_80FA46C\n\
_080FA34E:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080FA360: .4byte gSaveBlock1 + 0x2DD4\n\
- .syntax divided\n");
+ .syntax divided\n");
}
#endif
@@ -271,12 +280,12 @@ bool8 sub_80FA364(u16 *a)
struct EasyChatPair s = {0};
u16 i;
- if(!SB1ContainsWords(a))
+ if (!SB1ContainsWords(a))
{
- if(!FlagGet(SYS_POPWORD_INPUT))
+ if (!FlagGet(SYS_POPWORD_INPUT))
{
FlagSet(SYS_POPWORD_INPUT);
- if(!FlagGet(SYS_MIX_RECORD))
+ if (!FlagGet(SYS_MIX_RECORD))
{
gSaveBlock1.easyChatPairs[0].words[0] = a[0];
gSaveBlock1.easyChatPairs[0].words[1] = a[1];
@@ -290,13 +299,13 @@ bool8 sub_80FA364(u16 *a)
s.unk1_6 = 1;
sub_80FA740(&s);
- for(i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++)
{
- if(sub_80FA670(&s, &gSaveBlock1.easyChatPairs[i], 0))
+ if (sub_80FA670(&s, &gSaveBlock1.easyChatPairs[i], 0))
{
u16 r3 = 4;
- while(r3 > i)
+ while (r3 > i)
{
gSaveBlock1.easyChatPairs[r3] = gSaveBlock1.easyChatPairs[r3 - 1];
r3--;
@@ -311,17 +320,17 @@ bool8 sub_80FA364(u16 *a)
return 0;
}
-void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c)
+static void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c)
{
u16 h;
- for(h = 0; h < b; h++)
+ for (h = 0; h < b; h++)
{
u16 i;
- for(i = h + 1; i < b; i++)
+ for (i = h + 1; i < b; i++)
{
- if(sub_80FA670(&s[i], &s[h], c))
+ if (sub_80FA670(&s[i], &s[h], c))
{
struct EasyChatPair temp;
@@ -333,8 +342,7 @@ void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c)
}
}
-#ifdef NONMATCHING
-void sub_80FA4E4(u8 *a, u32 b)
+void sub_80FA4E4(void *a, u32 b, u8 unused)
{
u16 i;
u16 j;
@@ -343,165 +351,37 @@ void sub_80FA4E4(u8 *a, u32 b)
struct EasyChatPair *dst;
u16 players = GetLinkPlayerCount();
- for(i = 0; i < players; i++)
- memcpy(&unk_2007800[i * 5], a + i * b, 40);
-
- //_080FA520
-
- src = unk_2007800;
- //dst = unk_2007900
- dst = (u8 *)src + 0x100; //ToDo: Get this part to match
-
+ for (i = 0; i < players; i++)
+ memcpy(&ARRAY_2007800[i * 5], (u8 *)a + i * b, 40);
+ src = ARRAY_2007800;
+ dst = ARRAY_2007900;
r7 = 0;
- //_080FA530
- for(i = 0; i < players; i++)
+ for (i = 0; i < players; i++)
{
- for(j = 0; j < 5; j++)
+ for (j = 0; j < 5; j++)
{
s16 foo = sub_80FA828(src, r7);
- if(foo < 0)
+ if (foo < 0)
{
*(dst++) = *src;
r7++;
}
- //_080FA558
else
{
- if(unk_2007900[foo].unk0_0 < src->unk0_0)
+ if (ARRAY_2007900[foo].unk0_0 < src->unk0_0)
{
- unk_2007900[foo] = *src;
+ ARRAY_2007900[foo] = *src;
}
}
- //_080FA572
src++;
}
}
- //_080FA588
- sub_80FA46C(unk_2007900, r7, 2);
- src = unk_2007900;
+ sub_80FA46C(ARRAY_2007900, r7, 2);
+ src = ARRAY_2007900;
dst = gSaveBlock1.easyChatPairs;
- for(i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++)
*(dst++) = *(src++);
}
-#else
-__attribute__((naked))
-void sub_80FA4E4(struct EasyChatPair *a, u32 b, u8 c)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0x4\n\
- adds r6, r0, 0\n\
- adds r5, r1, 0\n\
- bl GetLinkPlayerCount\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- movs r4, 0\n\
- cmp r4, r8\n\
- bcs _080FA520\n\
-_080FA500:\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- ldr r1, _080FA554 @ =0x02007800\n\
- adds r0, r1\n\
- adds r1, r4, 0\n\
- muls r1, r5\n\
- adds r1, r6, r1\n\
- movs r2, 0x28\n\
- bl memcpy\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r8\n\
- bcc _080FA500\n\
-_080FA520:\n\
- ldr r5, _080FA554 @ =0x02007800\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- adds r3, r5, r0\n\
- movs r7, 0\n\
- movs r4, 0\n\
- cmp r4, r8\n\
- bcs _080FA588\n\
-_080FA530:\n\
- movs r6, 0\n\
-_080FA532:\n\
- adds r0, r5, 0\n\
- adds r1, r7, 0\n\
- str r3, [sp]\n\
- bl sub_80FA828\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- ldr r3, [sp]\n\
- cmp r0, 0\n\
- bge _080FA558\n\
- ldr r0, [r5]\n\
- ldr r1, [r5, 0x4]\n\
- stm r3!, {r0,r1}\n\
- adds r0, r7, 0x1\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- b _080FA572\n\
- .align 2, 0\n\
-_080FA554: .4byte 0x02007800\n\
-_080FA558:\n\
- lsls r1, r0, 3\n\
- ldr r0, _080FA5B4 @ =0x02007900\n\
- adds r2, r1, r0\n\
- ldrb r1, [r2]\n\
- lsls r1, 25\n\
- ldrb r0, [r5]\n\
- lsls r0, 25\n\
- cmp r1, r0\n\
- bcs _080FA572\n\
- ldr r0, [r5]\n\
- ldr r1, [r5, 0x4]\n\
- str r0, [r2]\n\
- str r1, [r2, 0x4]\n\
-_080FA572:\n\
- adds r5, 0x8\n\
- adds r0, r6, 0x1\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- cmp r6, 0x4\n\
- bls _080FA532\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r8\n\
- bcc _080FA530\n\
-_080FA588:\n\
- ldr r4, _080FA5B4 @ =0x02007900\n\
- adds r0, r4, 0\n\
- adds r1, r7, 0\n\
- movs r2, 0x2\n\
- bl sub_80FA46C\n\
- adds r5, r4, 0\n\
- ldr r3, _080FA5B8 @ =gSaveBlock1 + 0x2DD4\n\
- movs r4, 0\n\
-_080FA59A:\n\
- ldm r5!, {r0,r1}\n\
- stm r3!, {r0,r1}\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, 0x4\n\
- bls _080FA59A\n\
- add sp, 0x4\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080FA5B4: .4byte 0x02007900\n\
-_080FA5B8: .4byte gSaveBlock1 + 0x2DD4\n\
- .syntax divided\n");
-}
-#endif
void sub_80FA5BC(void)
{
@@ -528,65 +408,65 @@ void sub_80FA648(void)
gScriptResult = (gSaveBlock1.easyChatPairs[0].words[0] + gSaveBlock1.easyChatPairs[0].words[1]) & 7;
}
-bool8 sub_80FA670(struct EasyChatPair *a, struct EasyChatPair *b, u8 c)
+static bool8 sub_80FA670(struct EasyChatPair *a, struct EasyChatPair *b, u8 c)
{
- switch(c)
+ switch (c)
{
case 0:
- if(a->unk0_0 > b->unk0_0)
+ if (a->unk0_0 > b->unk0_0)
return 1;
- if(a->unk0_0 < b->unk0_0)
+ if (a->unk0_0 < b->unk0_0)
return 0;
- if(a->unk0_7 > b->unk0_7)
+ if (a->unk0_7 > b->unk0_7)
return 1;
- if(a->unk0_7 < b->unk0_7)
+ if (a->unk0_7 < b->unk0_7)
return 0;
break;
case 1:
- if(a->unk0_7 > b->unk0_7)
+ if (a->unk0_7 > b->unk0_7)
return 1;
- if(a->unk0_7 < b->unk0_7)
+ if (a->unk0_7 < b->unk0_7)
return 0;
- if(a->unk0_0 > b->unk0_0)
+ if (a->unk0_0 > b->unk0_0)
return 1;
- if(a->unk0_0 < b->unk0_0)
+ if (a->unk0_0 < b->unk0_0)
return 0;
break;
case 2:
- if(a->unk0_0 > b->unk0_0)
+ if (a->unk0_0 > b->unk0_0)
return 1;
- if(a->unk0_0 < b->unk0_0)
+ if (a->unk0_0 < b->unk0_0)
return 0;
- if(a->unk0_7 > b->unk0_7)
+ if (a->unk0_7 > b->unk0_7)
return 1;
- if(a->unk0_7 < b->unk0_7)
+ if (a->unk0_7 < b->unk0_7)
return 0;
- if(a->unk2 > b->unk2)
+ if (a->unk2 > b->unk2)
return 1;
- if(a->unk2 < b->unk2)
+ if (a->unk2 < b->unk2)
return 0;
- if(a->words[0] > b->words[0])
+ if (a->words[0] > b->words[0])
return 1;
- if(a->words[0] < b->words[0])
+ if (a->words[0] < b->words[0])
return 0;
- if(a->words[1] > b->words[1])
+ if (a->words[1] > b->words[1])
return 1;
- if(a->words[1] < b->words[1])
+ if (a->words[1] < b->words[1])
return 0;
return 1;
}
return Random() & 1;
}
-void sub_80FA740(struct EasyChatPair *s)
+static void sub_80FA740(struct EasyChatPair *s)
{
u16 r4;
r4 = Random() % 98;
- if(r4 > 50)
+ if (r4 > 50)
{
r4 = Random() % 98;
- if(r4 > 80)
+ if (r4 > 80)
r4 = Random() % 98;
}
s->unk0_7 = r4 + 30;
@@ -594,38 +474,38 @@ void sub_80FA740(struct EasyChatPair *s)
s->unk2 = Random();
}
-bool8 SB1ContainsWords(u16 *a)
+static bool8 SB1ContainsWords(u16 *a)
{
u16 i;
- for(i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++)
{
- if(IsEasyChatPairEqual(a, gSaveBlock1.easyChatPairs[i].words) != 0)
+ if (IsEasyChatPairEqual(a, gSaveBlock1.easyChatPairs[i].words) != 0)
return TRUE;
}
return FALSE;
}
-bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2)
+static bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2)
{
u16 i;
- for(i = 0; i < 2; i++)
+ for (i = 0; i < 2; i++)
{
- if(*(words1++) != *(words2++))
+ if (*(words1++) != *(words2++))
return FALSE;
}
return TRUE;
}
-s16 sub_80FA828(struct EasyChatPair *a, u16 b)
+static s16 sub_80FA828(struct EasyChatPair *a, u16 b)
{
s16 i;
- struct EasyChatPair *s = unk_2007900;
+ struct EasyChatPair *s = ARRAY_2007900;
- for(i = 0; i < b; i++)
+ for (i = 0; i < b; i++)
{
- if(IsEasyChatPairEqual(a->words, s->words))
+ if (IsEasyChatPairEqual(a->words, s->words))
return i;
s++;
}
diff --git a/src/diploma.c b/src/diploma.c
index 8fabe3a2f..649f4a33d 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -10,10 +10,6 @@
#include "task.h"
#include "text.h"
-extern u8 gDiplomaTiles[];
-extern u8 gDiplomaTilemap[];
-extern u8 gDiplomaPalettes[];
-extern u8 gStringVar1[];
extern u8 gOtherText_NationalDex[];
extern u8 gOtherText_HoennDex[];
extern u8 gOtherText_DiplomaCertificationGameFreak[];
@@ -25,6 +21,15 @@ static void Task_DiplomaWaitForKeyPress(u8);
static void Task_DiplomaFadeOut(u8);
static void DisplayDiplomaText(void);
+static const u16 gDiplomaPalettes[][16] =
+{
+ INCBIN_U16("graphics/misc/diploma_national.gbapal"),
+ INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"),
+};
+
+static const u8 gDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz");
+static const u8 gDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz");
+
static void VBlankCB(void)
{
LoadOam();
@@ -35,9 +40,9 @@ static void VBlankCB(void)
void sub_8145D88(void)
{
u32 savedIme;
-
+
SetVBlankCallback(NULL);
-
+
REG_DISPCNT = 0;
REG_BG3CNT = 0;
REG_BG2CNT = 0;
@@ -51,14 +56,14 @@ void sub_8145D88(void)
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(gDiplomaTiles, (void *)VRAM);
LZ77UnCompVram(gDiplomaTilemap, (void *)(VRAM + 0x3000));
-
+
remove_some_task();
ResetTasks();
ResetSpriteData();
@@ -69,22 +74,22 @@ void sub_8145D88(void)
InitMenuWindow(&gWindowConfig_81E6CE4);
DisplayDiplomaText();
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
-
+
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = savedIme;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
-
+
SetVBlankCallback(VBlankCB);
SetMainCallback2(MainCB2);
-
+
REG_BLDCNT = 0;
REG_BLDALPHA = 0;
REG_BLDY = 0;
REG_BG3CNT = 0x4603;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
-
+
CreateTask(Task_DiplomaFadeIn, 0);
}
@@ -98,13 +103,13 @@ static void MainCB2(void)
static void Task_DiplomaFadeIn(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
gTasks[taskId].func = Task_DiplomaWaitForKeyPress;
}
static void Task_DiplomaWaitForKeyPress(u8 taskId)
{
- if(gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].func = Task_DiplomaFadeOut;
@@ -113,7 +118,7 @@ static void Task_DiplomaWaitForKeyPress(u8 taskId)
static void Task_DiplomaFadeOut(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
DestroyTask(taskId);
SetMainCallback2(sub_80546F0);
@@ -122,7 +127,7 @@ static void Task_DiplomaFadeOut(u8 taskId)
static void DisplayDiplomaText(void)
{
- if(sub_8090FF4())
+ if (sub_8090FF4())
{
REG_BG3HOFS = 256;
StringCopy(gStringVar1, gOtherText_NationalDex);
diff --git a/src/event_data.c b/src/event_data.c
index b1c0632ec..c6aecf13c 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -2,29 +2,34 @@
#include "event_data.h"
#include "pokedex.h"
-extern u8 gUnknown_0202E8E2[];
+#define TEMP_FLAGS_SIZE 0x4
+#define TEMP_UPPER_FLAGS_SIZE 0x8
+#define TEMP_VARS_SIZE 0x20
+
+extern u8 gUnknown_0202E8E2[16];
extern u16 *gSpecialVars[];
void InitEventData(void)
{
memset(gSaveBlock1.flags, 0, sizeof(gSaveBlock1.flags));
memset(gSaveBlock1.vars, 0, sizeof(gSaveBlock1.vars));
- memset(gUnknown_0202E8E2, 0, 16);
+ memset(gUnknown_0202E8E2, 0, sizeof(gUnknown_0202E8E2));
}
void ClearTempFieldEventData(void)
{
- memset(gSaveBlock1.flags, 0, 4);
- memset(gSaveBlock1.vars, 0, 32);
+ memset(gSaveBlock1.flags, 0, TEMP_FLAGS_SIZE);
+ memset(gSaveBlock1.vars, 0, TEMP_VARS_SIZE);
FlagReset(SYS_ENC_UP_ITEM);
FlagReset(SYS_ENC_DOWN_ITEM);
FlagReset(SYS_USE_STRENGTH);
FlagReset(SYS_CTRL_OBJ_DELETE);
}
+// probably had different flag splits at one point.
void ClearUpperFlags(void)
{
- memset(gSaveBlock1.flags + 0x118, 0, 8);
+ memset(gSaveBlock1.flags + 0x118, 0, TEMP_UPPER_FLAGS_SIZE);
}
void DisableNationalPokedex(void)
diff --git a/src/field_camera.c b/src/field_camera.c
index c55d8e2a3..442bc095b 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -1,14 +1,12 @@
#include "global.h"
#include "field_camera.h"
#include "asm.h"
+#include "asm_fieldmap.h"
#include "berry.h"
#include "field_player_avatar.h"
-#include "asm_fieldmap.h"
#include "sprite.h"
#include "text.h"
-extern u16 gBGTilemapBuffers[4][0x400];
-
extern u8 gUnknown_0202E854;
@@ -91,8 +89,8 @@ void sub_8057A58(void)
*gBGVOffsetRegs[2] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
*gBGHOffsetRegs[3] = gUnknown_03000590.unk0 + gUnknown_03000598;
*gBGVOffsetRegs[3] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
-
- if(gUnknown_03000590.unk4)
+
+ if (gUnknown_03000590.unk4)
{
DmaCopy16(3, gBGTilemapBuffers[1], (void *)(VRAM + 0xE800), 0x800);
DmaCopy16(3, gBGTilemapBuffers[2], (void *)(VRAM + 0xE000), 0x800);
@@ -119,17 +117,17 @@ static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData)
u8 j;
u32 r6;
u8 temp;
-
- for(i = 0; i < 32; i += 2)
+
+ for (i = 0; i < 32; i += 2)
{
temp = gUnknown_03000590.unk3 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
r6 = temp * 32;
- for(j = 0; j < 32; j += 2)
+ for (j = 0; j < 32; j += 2)
{
temp = gUnknown_03000590.unk2 + j;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, r6 + temp, x + j / 2, y + i / 2);
}
@@ -139,14 +137,14 @@ static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData)
static void RedrawMapSlicesForCameraUpdate(struct UnknownStruct *a, int x, int y)
{
struct MapData *mapData = gMapHeader.mapData;
-
- if(x > 0)
+
+ if (x > 0)
RedrawMapSliceWest(a, mapData);
- if(x < 0)
+ if (x < 0)
RedrawMapSliceEast(a, mapData);
- if(y > 0)
+ if (y > 0)
RedrawMapSliceNorth(a, mapData);
- if(y < 0)
+ if (y < 0)
RedrawMapSliceSouth(a, mapData);
a->unk4 = TRUE;
}
@@ -156,15 +154,15 @@ static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData
u8 i;
u8 temp;
u32 r7;
-
+
temp = a->unk3 + 28;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
r7 = temp * 32;
- for(i = 0; i < 32; i += 2)
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk2 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y + 14);
}
@@ -175,11 +173,11 @@ static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData
u8 i;
u8 temp;
u32 r7 = a->unk3 * 32;
-
- for(i = 0; i < 32; i += 2)
+
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk2 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y);
}
@@ -190,11 +188,11 @@ static void RedrawMapSliceEast(struct UnknownStruct *a, struct MapData *mapData)
u8 i;
u8 temp;
u32 r6 = a->unk2;
-
- for(i = 0; i < 32; i += 2)
+
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk3 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, temp * 32 + r6, gSaveBlock1.pos.x, gSaveBlock1.pos.y + i / 2);
}
@@ -205,13 +203,13 @@ static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData)
u8 i;
u8 temp;
u8 r5 = a->unk2 + 28;
-
- if(r5 >= 32)
+
+ if (r5 >= 32)
r5 -= 32;
- for(i = 0; i < 32; i += 2)
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk3 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, temp * 32 + r5, gSaveBlock1.pos.x + 14, gSaveBlock1.pos.y + i / 2);
}
@@ -220,8 +218,8 @@ static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData)
void CurrentMapDrawMetatileAt(int a, int b)
{
int offset = MapPosToBgTilemapOffset(&gUnknown_03000590, a, b);
-
- if(offset >= 0)
+
+ if (offset >= 0)
{
DrawMetatileAt(gMapHeader.mapData, offset, a, b);
gUnknown_03000590.unk4 = TRUE;
@@ -231,8 +229,8 @@ void CurrentMapDrawMetatileAt(int a, int b)
void DrawDoorMetatileAt(int x, int y, u16 *arr)
{
int offset = MapPosToBgTilemapOffset(&gUnknown_03000590, x, y);
-
- if(offset >= 0)
+
+ if (offset >= 0)
{
DrawMetatile(1, arr, offset);
gUnknown_03000590.unk4 = TRUE;
@@ -243,10 +241,10 @@ static void DrawMetatileAt(struct MapData *mapData, u16 b, int c, int d)
{
u16 metatileId = MapGridGetMetatileIdAt(c, d);
u16 *metatiles;
-
- if(metatileId > 1024)
+
+ if (metatileId > 1024)
metatileId = 0;
- if(metatileId < 512)
+ if (metatileId < 512)
metatiles = mapData->primaryTileset->metatiles;
else
{
@@ -258,19 +256,19 @@ static void DrawMetatileAt(struct MapData *mapData, u16 b, int c, int d)
static void DrawMetatile(s32 a, u16 *b, u16 c)
{
- switch(a)
+ 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];
@@ -281,12 +279,12 @@ static void DrawMetatile(s32 a, u16 *b, u16 c)
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;
@@ -297,12 +295,12 @@ static void DrawMetatile(s32 a, u16 *b, u16 c)
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];
@@ -315,25 +313,25 @@ static s32 MapPosToBgTilemapOffset(struct UnknownStruct *a, s32 x, s32 y)
{
x -= gSaveBlock1.pos.x;
x *= 2;
- if(x >= 32 || x < 0)
+ if (x >= 32 || x < 0)
return -1;
x = x + a->unk2;
- if(x >= 32)
+ if (x >= 32)
x -= 32;
-
+
y = (y - gSaveBlock1.pos.y) * 2;
- if(y >= 32 || y < 0)
+ if (y >= 32 || y < 0)
return -1;
y = y + a->unk3;
- if(y >= 32)
+ if (y >= 32)
y -= 32;
-
+
return y * 32 + x;
}
static void CameraUpdateCallback(struct CameraSomething *a)
{
- if(a->unk4 != 0)
+ if (a->unk4 != 0)
{
a->unk8 = gSprites[a->unk4].data2;
a->unkC = gSprites[a->unk4].data3;
@@ -352,7 +350,7 @@ void ResetCameraUpdateInfo(void)
u32 InitCameraUpdateCallback(u8 a)
{
- if(gUnknown_03004880.unk4 != 0)
+ if (gUnknown_03004880.unk4 != 0)
DestroySprite(&gSprites[gUnknown_03004880.unk4]);
gUnknown_03004880.unk4 = AddCameraObject(a);
gUnknown_03004880.callback = CameraUpdateCallback;
@@ -367,8 +365,8 @@ void CameraUpdate(void)
int r1;
int r7;
int r8;
-
- if(gUnknown_03004880.callback != NULL)
+
+ if (gUnknown_03004880.callback != NULL)
gUnknown_03004880.callback(&gUnknown_03004880);
r7 = gUnknown_03004880.unk8;
r8 = gUnknown_03004880.unkC;
@@ -376,43 +374,43 @@ void CameraUpdate(void)
deltaY = 0;
r1 = gUnknown_03004880.unk10;
r0 = gUnknown_03004880.unk14;
-
-
- if(r1 == 0 && r7 != 0)
+
+
+ if (r1 == 0 && r7 != 0)
{
- if(r7 > 0)
+ if (r7 > 0)
deltaX = 1;
else
deltaX = -1;
}
- if(r0 == 0 && r8 != 0)
+ if (r0 == 0 && r8 != 0)
{
- if(r8 > 0)
+ if (r8 > 0)
deltaY = 1;
else
deltaY = -1;
}
- if(r1 != 0 && r1 == -r7)
+ if (r1 != 0 && r1 == -r7)
{
- if(r7 > 0)
+ if (r7 > 0)
deltaX = 1;
else
deltaX = -1;
}
- if(r0 != 0 && r0 == -r8)
+ if (r0 != 0 && r0 == -r8)
{
- if(r8 > 0)
+ if (r8 > 0)
deltaX = 1;
else
deltaX = -1;
}
-
+
gUnknown_03004880.unk10 += r7;
- gUnknown_03004880.unk10 = gUnknown_03004880.unk10 - 16 * (gUnknown_03004880.unk10 / 16);
+ gUnknown_03004880.unk10 = gUnknown_03004880.unk10 - 16 * (gUnknown_03004880.unk10 / 16);
gUnknown_03004880.unk14 += r8;
gUnknown_03004880.unk14 = gUnknown_03004880.unk14 - 16 * (gUnknown_03004880.unk14 / 16);
-
- if(deltaX != 0 || deltaY != 0)
+
+ if (deltaX != 0 || deltaY != 0)
{
CameraMove(deltaX, deltaY);
UpdateFieldObjectsForCameraUpdate(deltaX, deltaY);
@@ -421,7 +419,7 @@ void CameraUpdate(void)
tilemap_move_something(&gUnknown_03000590, deltaX * 2, deltaY * 2);
RedrawMapSlicesForCameraUpdate(&gUnknown_03000590, deltaX * 2, deltaY * 2);
}
-
+
coords8_add(&gUnknown_03000590, r7, r8);
gUnknown_0300489C -= r7;
gUnknown_03004898 -= r8;
@@ -467,7 +465,7 @@ void UpdateCameraPanning(void)
static void CameraPanningCB_PanAhead(void)
{
u8 var;
-
+
if (gUnknown_0202E854 == 0)
{
InstallCameraPanAheadCallback();
@@ -484,7 +482,7 @@ static void CameraPanningCB_PanAhead(void)
{
gUnknown_0300059C = 0;
}
-
+
var = player_get_direction_upper_nybble();
if (var == 2)
{
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 495327b9b..9bff65004 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -1,112 +1,179 @@
#include "global.h"
#include "asm.h"
+#include "battle_setup.h"
+#include "event_data.h"
#include "field_player_avatar.h"
+#include "flags.h"
#include "metatile_behavior.h"
#include "rom4.h"
+#include "safari_zone.h"
#include "script.h"
+#include "songs.h"
#include "sound.h"
#include "trainer_see.h"
+#include "vars.h"
+#include "wild_encounter.h"
+#include "bike.h"
+#include "field_control_avatar.h"
+struct Coords32
+{
+ s32 x;
+ s32 y;
+};
+
+extern const struct Coords32 gUnknown_0821664C[];
+extern u16 gScriptLastTalked;
+extern u16 gScriptFacing;
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u8 gUnknown_0202E8C0;
+extern u16 gUnknown_0202E8C2;
+
+//scripts
+extern u8 gUnknown_081A2C51[];
extern u8 gUnknown_0815281E[];
extern u8 gUnknown_08152C39[];
extern u8 gUnknown_0815F36C[];
extern u8 gUnknown_0815F43A[];
extern u8 gUnknown_081A0009[];
+extern u8 gUnknown_081C6C02[];
+extern u8 HiddenItemScript[];
+extern u8 Event_TV[];
+extern u8 gUnknown_081A0009[];
+extern u8 ClosedSootopolisGymDoorScript[];
+extern u8 gUnknown_081A4363[];
+extern u8 gUnknown_081C346A[];
+extern u8 gUnknown_081616E1[];
+extern u8 Event_WorldMap[];
+extern u8 Event_RunningShoesManual[];
+extern u8 PictureBookShelfScript[];
+extern u8 BookshelfScript[];
+extern u8 PokemonCenterBookshelfScript[];
+extern u8 VaseScript[];
+extern u8 TrashCanScript[];
+extern u8 ShopShelfScript[];
+extern u8 BlueprintScript[];
+extern u8 gUnknown_0815F36C[];
+extern u8 gUnknown_0815F43A[];
+extern u8 gUnknown_0815F523[];
+extern u8 gUnknown_0815F528[];
+extern u8 UseSurfScript[];
+extern u8 UseWaterfallScript[];
+extern u8 CannotUseWaterfallScript[];
+extern u8 UseDiveScript[];
+extern u8 UnderwaterUseDiveScript[];
+extern u8 GraniteCave_B1F_EventScript_1C6BC5[];
+extern u8 gUnknown_081A14B8[];
+extern u8 Event_EggHatch[];
+extern u8 gUnknown_0815FD0D[];
+extern u8 gUnknown_081C6BDE[];
+
+static void player_get_pos_to_and_height(struct MapPosition *);
+static void player_get_next_pos_and_height(struct MapPosition *);
+static u16 cur_mapdata_block_role_at_player_pos(int);
+static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c);
+static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c);
+static u8 *sub_8068364(struct MapPosition *, u8, u8);
+static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *, u8, u8 c);
+static u8 *sub_8068500(struct MapPosition *, u8, u8);
+static u8 *TryGetFieldMoveScript(struct MapPosition *, u8, u8);
+static bool32 sub_8068770(void);
+static bool32 sub_80687A4(void);
+static bool8 sub_80687E4(struct MapPosition *, u16, u16);
+bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *);
+bool8 sub_8068870(u16 a);
+bool8 sub_8068894(void);
+static void happiness_algorithm_step(void);
+static bool8 overworld_poison_step(void);
+static bool8 is_it_battle_time_3(u16);
+static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8);
+bool8 sub_8068A64(struct MapPosition *, u16);
+static bool8 sub_8068B30(u16);
+static bool8 is_non_stair_warp_tile(u16, u8);
+static s8 map_warp_check_packed(struct MapHeader *, struct MapPosition *);
+static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *);
+static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
+static s8 map_warp_check(struct MapHeader *, u16, u16, u8);
+static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8);
+static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);
+u8 sub_8068F18(void);
+
+extern u8 mapheader_run_first_tag2_script_list_match(void);
+extern void sub_8071310(void);
+extern int sub_80A6D1C(void);
+extern u8 sub_80BC050();
+extern u8 sub_80422A0(void);
+extern s32 overworld_poison(void);
+extern void sub_8080E88();
+extern void walkrun_find_lowest_active_bit_in_bitfield(void);
+extern void sub_8080F2C(u8);
+extern void sub_8080F48(void);
+extern void sub_8080F58(void);
+extern void sub_80BC038();
+extern void DoCoordEventWeather(u8);
-__attribute__((naked))
-void sub_8067EEC(struct UnkInputStruct *s)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- movs r1, 0x2\n\
- negs r1, r1\n\
- movs r3, 0x3\n\
- negs r3, r3\n\
- movs r4, 0x5\n\
- negs r4, r4\n\
- movs r5, 0x9\n\
- negs r5, r5\n\
- movs r2, 0\n\
- strb r2, [r0]\n\
- ldrb r2, [r0, 0x1]\n\
- ands r1, r2\n\
- ands r1, r3\n\
- ands r1, r4\n\
- ands r1, r5\n\
- strb r1, [r0, 0x1]\n\
- movs r1, 0\n\
- strb r1, [r0, 0x2]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-
-extern u16 cur_mapdata_block_role_at_player_pos(int);
-
-void process_overworld_input(struct UnkInputStruct *pStruct, u16 keys, u16 heldKeys)
+void FieldClearPlayerInput(struct FieldInput *input)
+{
+ input->pressedAButton = 0;
+ input->input_field_0_1 = 0;
+ input->pressedStartButton = 0;
+ input->pressedSelectButton = 0;
+ input->input_field_0_4 = 0;
+ input->input_field_0_5 = 0;
+ input->input_field_0_6 = 0;
+ input->pressedBButton = 0;
+ input->input_field_1_0 = 0;
+ input->input_field_1_1 = 0;
+ input->input_field_1_2 = 0;
+ input->input_field_1_3 = 0;
+ input->dpadDirection = 0;
+}
+
+void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
{
u8 r6 = gPlayerAvatar.running1;
u8 r9 = gPlayerAvatar.running2;
- bool8 r7 = MetatileBehavior_IsMoveTile(cur_mapdata_block_role_at_player_pos(r9));
-
- if ((r6 == 2 && r7 == FALSE) || r6 == 0)
+ bool8 forcedMove = MetatileBehavior_IsMoveTile(cur_mapdata_block_role_at_player_pos(r9));
+
+ if ((r6 == 2 && forcedMove == FALSE) || r6 == 0)
{
- if (sub_80E6034() != 4)
+ if (GetPlayerSpeed() != 4)
{
- if (keys & START_BUTTON)
- pStruct->input_field_0_2 = TRUE;
- if (keys & SELECT_BUTTON)
- pStruct->input_field_0_3 = TRUE;
- if (keys & A_BUTTON)
- pStruct->input_field_0_0 = TRUE;
- if (keys & B_BUTTON)
- pStruct->input_field_0_7 = TRUE;
+ if (newKeys & START_BUTTON)
+ input->pressedStartButton = TRUE;
+ if (newKeys & SELECT_BUTTON)
+ input->pressedSelectButton = TRUE;
+ if (newKeys & A_BUTTON)
+ input->pressedAButton = TRUE;
+ if (newKeys & B_BUTTON)
+ input->pressedBButton = TRUE;
}
if (heldKeys & (DPAD_UP | DPAD_DOWN | DPAD_LEFT | DPAD_RIGHT))
{
- pStruct->input_field_0_4 = TRUE;
- pStruct->input_field_0_5 = TRUE;
+ input->input_field_0_4 = TRUE;
+ input->input_field_0_5 = TRUE;
}
}
- if (r7 == FALSE)
+ if (forcedMove == FALSE)
{
if (r6 == 2 && r9 == 2)
- pStruct->input_field_0_6 = TRUE;
- if (r7 == FALSE && r6 == 2)
- pStruct->input_field_0_1 = TRUE;
+ input->input_field_0_6 = TRUE;
+ if (forcedMove == FALSE && r6 == 2)
+ input->input_field_0_1 = TRUE;
}
if (heldKeys & DPAD_UP)
- pStruct->input_field_2 = 2;
+ input->dpadDirection = DIR_NORTH;
else if (heldKeys & DPAD_DOWN)
- pStruct->input_field_2 = 1;
+ input->dpadDirection = DIR_SOUTH;
else if (heldKeys & DPAD_LEFT)
- pStruct->input_field_2 = 3;
+ input->dpadDirection = DIR_WEST;
else if (heldKeys & DPAD_RIGHT)
- pStruct->input_field_2 = 4;
+ input->dpadDirection = DIR_EAST;
}
-struct MapPosition
-{
- s16 x;
- s16 y;
- u8 height;
-};
-
-void player_get_pos_to_and_height(struct MapPosition *);
-extern u8 mapheader_run_first_tag2_script_list_match(void);
-extern int sub_80687A4(void);
-extern u8 sub_80687E4();
-extern u8 is_it_battle_time_3();
-extern u8 mapheader_run_first_tag2_script_list_match_conditionally();
-void player_get_next_pos_and_height(struct MapPosition *);
-u8 sub_80681F0(struct MapPosition *position, u16 b, u8 c);
-extern u8 map_warp_consider_2_to_inside();
-extern int sub_8068770(void);
-extern void sub_8071310(void);
-extern int sub_80A6D1C(void);
-
-int sub_8068024(struct UnkInputStruct *s)
+int sub_8068024(struct FieldInput *input)
{
struct MapPosition position;
u8 r6;
@@ -116,57 +183,56 @@ int sub_8068024(struct UnkInputStruct *s)
player_get_pos_to_and_height(&position);
r4 = MapGridGetMetatileBehaviorAt(position.x, position.y);
if (CheckTrainers() == TRUE)
- return 1;
+ return TRUE;
if (mapheader_run_first_tag2_script_list_match() == 1)
- return 1;
- if (s->input_field_0_7 && sub_80687A4() == 1)
- return 1;
- if (s->input_field_0_6)
+ return TRUE;
+ if (input->pressedBButton && sub_80687A4() == 1)
+ return TRUE;
+ if (input->input_field_0_6)
{
IncrementGameStat(5);
if (sub_80687E4(&position, r4, r6) == 1)
- return 1;
+ return TRUE;
}
- if (s->input_field_0_1 && is_it_battle_time_3(r4) == 1)
- return 1;
- if (s->input_field_0_4 && s->input_field_2 == r6)
+ if (input->input_field_0_1 && is_it_battle_time_3(r4) == 1)
+ return TRUE;
+ if (input->input_field_0_4 && input->dpadDirection == r6)
{
if (mapheader_run_first_tag2_script_list_match_conditionally(&position, r4, r6) == 1)
- return 1;
+ return TRUE;
}
player_get_next_pos_and_height(&position);
r4 = MapGridGetMetatileBehaviorAt(position.x, position.y);
- if (s->input_field_0_0 && sub_80681F0(&position, r4, r6) == 1)
- return 1;
- if (s->input_field_0_5 && s->input_field_2 == r6)
+ if (input->pressedAButton && sub_80681F0(&position, r4, r6) == 1)
+ return TRUE;
+ if (input->input_field_0_5 && input->dpadDirection == r6)
{
if (map_warp_consider_2_to_inside(&position, r4, r6) == 1)
- return 1;
+ return TRUE;
}
- if (s->input_field_0_0 && sub_8068770() == 1)
- return 1;
- if (s->input_field_0_2)
+ if (input->pressedAButton && sub_8068770() == 1)
+ return TRUE;
+ if (input->pressedStartButton)
{
- PlaySE(6);
+ PlaySE(SE_WIN_OPEN);
sub_8071310();
- return 1;
+ return TRUE;
}
- //_08068154
- if (s->input_field_0_3 && sub_80A6D1C() == 1)
- return 1;
+ if (input->pressedSelectButton && sub_80A6D1C() == 1)
+ return TRUE;
return FALSE;
}
-void player_get_pos_to_and_height(struct MapPosition *position)
+static void player_get_pos_to_and_height(struct MapPosition *position)
{
PlayerGetDestCoords(&position->x, &position->y);
position->height = PlayerGetZCoord();
}
-void player_get_next_pos_and_height(struct MapPosition *position)
+static void player_get_next_pos_and_height(struct MapPosition *position)
{
s16 x, y;
-
+
GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y);
PlayerGetDestCoords(&x, &y);
if (MapGridGetZCoordAt(x, y) != 0)
@@ -175,43 +241,36 @@ void player_get_next_pos_and_height(struct MapPosition *position)
position->height = 0;
}
-u16 cur_mapdata_block_role_at_player_pos(int unused)
+static u16 cur_mapdata_block_role_at_player_pos(int unused)
{
s16 x, y;
-
+
PlayerGetDestCoords(&x, &y);
return MapGridGetMetatileBehaviorAt(x, y);
}
-u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c);
-
-u8 sub_80681F0(struct MapPosition *position, u16 b, u8 c)
+static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c)
{
u8 *script = TryGetScriptOnPressingA(position, b, c);
-
+
if (script == NULL)
return FALSE;
-
+
if (script != gUnknown_0815281E
&& script != gUnknown_08152C39
&& script != gUnknown_0815F36C
&& script != gUnknown_0815F43A
&& script != gUnknown_081A0009)
PlaySE(5);
-
+
ScriptContext1_SetupScript(script);
return TRUE;
}
-u8 *sub_8068364();
-u8 *TryGetInvisibleMapObjectScript();
-u8 *sub_8068500();
-u8 *TryGetFieldMoveScript();
-
-u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c)
+static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c)
{
u8 *script;
-
+
script = sub_8068364(position, b, c);
if (script != NULL)
return script;
@@ -224,6 +283,605 @@ u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c)
script = TryGetFieldMoveScript(position, b, c);
if (script != NULL)
return script;
-
+
return NULL;
}
+
+u8 *sub_80682A8(struct MapPosition *position, u8 unused, u8 c)
+{
+ u8 r3;
+ s32 i;
+
+ if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y)))
+ r3 = GetFieldObjectIdByXYZ(position->x, position->y, position->height);
+ else
+ r3 = GetFieldObjectIdByXYZ(position->x + gUnknown_0821664C[c].x, position->y + gUnknown_0821664C[c].y, position->height);
+ if (r3 == 16 || gMapObjects[r3].localId == 0xFF)
+ return NULL;
+ for (i = 0; i < 4; i++)
+ {
+ if (gLinkPlayerMapObjects[i].active == TRUE && gLinkPlayerMapObjects[i].mapObjId == r3)
+ return NULL;
+ }
+ gSelectedMapObject = r3;
+ gScriptLastTalked = gMapObjects[r3].localId;
+ gScriptFacing = c;
+ return GetFieldObjectScriptPointerByFieldObjectId(r3);
+}
+
+static u8 *sub_8068364(struct MapPosition *position, u8 b, u8 c)
+{
+ u8 r3;
+ u8 *script;
+
+ r3 = GetFieldObjectIdByXYZ(position->x, position->y, position->height);
+ if (r3 == 16 || gMapObjects[r3].localId == 0xFF)
+ {
+ if (MetatileBehavior_IsCounter(b) != TRUE)
+ return NULL;
+ r3 = GetFieldObjectIdByXYZ(position->x + gUnknown_0821664C[c].x, position->y + gUnknown_0821664C[c].y, position->height);
+ if (r3 == 16 || gMapObjects[r3].localId == 0xFF)
+ return NULL;
+ }
+ //_080683E8
+ gSelectedMapObject = r3;
+ gScriptLastTalked = gMapObjects[r3].localId;
+ gScriptFacing = c;
+ script = GetFieldObjectScriptPointerByFieldObjectId(r3);
+ script = GetRamScript(gScriptLastTalked, script);
+ return script;
+}
+
+static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unused, u8 c)
+{
+ struct BgEvent *bgEvent = FindInvisibleMapObjectByPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+
+ if (bgEvent == NULL)
+ return NULL;
+ if (bgEvent->bgUnion.script == NULL)
+ 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;
+ }
+ return NULL;
+ }
+ return bgEvent->bgUnion.script;
+}
+
+static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c)
+{
+ s8 height;
+
+ if (MetatileBehavior_IsPlayerFacingTVScreen(b, c) == TRUE)
+ return Event_TV;
+ if (MetatileBehavior_IsPC(b) == TRUE)
+ return gUnknown_081A0009;
+ if (MetatileBehavior_IsClosedSootopolisGymDoor(b) == TRUE)
+ return ClosedSootopolisGymDoorScript;
+ if (is_tile_x84(b) == TRUE)
+ return gUnknown_081A4363;
+ if (MetatileBehavior_IsPokeblockFeeder(b) == TRUE)
+ return gUnknown_081C346A;
+ if (MetatileBehavior_IsTrickHousePuzzleDoor(b) == TRUE)
+ return gUnknown_081616E1;
+ if (MetatileBehavior_IsRegionMap(b) == TRUE)
+ return Event_WorldMap;
+ if (sub_805791C(b) == TRUE)
+ return Event_RunningShoesManual;
+ if (MetatileBehavior_IsPictureBookShelf(b) == TRUE)
+ return PictureBookShelfScript;
+ if (MetatileBehavior_IsBookShelf(b) == TRUE)
+ return BookshelfScript;
+ if (MetatileBehavior_IsPokeCenterBookShelf(b) == TRUE)
+ return PokemonCenterBookshelfScript;
+ if (MetatileBehavior_IsVase(b) == TRUE)
+ return VaseScript;
+ if (MetatileBehavior_IsTrashCan(b) == TRUE)
+ return TrashCanScript;
+ if (MetatileBehavior_IsShopShelf(b) == TRUE)
+ return ShopShelfScript;
+ if (MetatileBehavior_IsBlueprint(b) == TRUE)
+ return BlueprintScript;
+ height = position->height;
+ if (height == MapGridGetZCoordAt(position->x, position->y))
+ {
+ if (MetatileBehavior_IsSecretBasePC(b) == TRUE)
+ return gUnknown_0815F36C;
+ if (sub_805724C(b) == TRUE)
+ return gUnknown_0815F43A;
+ if (sub_8057364(b) == TRUE)
+ return gUnknown_0815F523;
+ if (sub_8057378(b) == TRUE)
+ return gUnknown_0815F528;
+ }
+ return NULL;
+}
+
+static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2)
+{
+ if (FlagGet(BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
+ return UseSurfScript;
+ if (MetatileBehavior_IsWaterfall(b) == TRUE)
+ {
+ if (FlagGet(BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE)
+ return UseWaterfallScript;
+ else
+ return CannotUseWaterfallScript;
+ }
+ return NULL;
+}
+
+static bool32 sub_8068770(void)
+{
+ if (FlagGet(BADGE07_GET) && sub_8068F18() == 2)
+ {
+ ScriptContext1_SetupScript(UseDiveScript);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_80687A4(void)
+{
+ if (FlagGet(BADGE07_GET) && gMapHeader.mapType == 5 && sub_8068F18() == 1)
+ {
+ ScriptContext1_SetupScript(UnderwaterUseDiveScript);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused)
+{
+ if (mapheader_trigger_activate_at__run_now(position) == TRUE)
+ return TRUE;
+ if (sub_8068A64(position, b) == TRUE)
+ return TRUE;
+ if (sub_8068870(b) == TRUE)
+ return TRUE;
+ if (sub_8068894() == TRUE)
+ return TRUE;
+ if (UpdateRepelCounter() == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *position)
+{
+ u8 *script = mapheader_trigger_activate_at(&gMapHeader, position->x - 7, position->y - 7, position->height);
+
+ if (script == NULL)
+ return FALSE;
+ ScriptContext1_SetupScript(script);
+ return TRUE;
+}
+
+//can be u8, u16, or u32
+bool8 sub_8068870(u16 a)
+{
+ if (MetatileBehavior_IsCrackedFloorHole(a))
+ {
+ ScriptContext1_SetupScript(GraniteCave_B1F_EventScript_1C6BC5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8068894(void)
+{
+ sub_8082B78();
+ happiness_algorithm_step();
+ if (overworld_poison_step() == TRUE)
+ {
+ ScriptContext1_SetupScript(gUnknown_081A14B8);
+ return TRUE;
+ }
+ if (sub_80422A0())
+ {
+ IncrementGameStat(13);
+ ScriptContext1_SetupScript(Event_EggHatch);
+ return TRUE;
+ }
+ if (SafariZoneTakeStep() == TRUE)
+ return TRUE;
+ if (sub_810D9B0(1) == TRUE)
+ {
+ ScriptContext1_SetupScript(gUnknown_0815FD0D);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void unref_sub_80688F8(void)
+{
+ VarSet(VAR_HAPPINESS_STEP_COUNTER, 0);
+}
+
+static void happiness_algorithm_step(void)
+{
+ u16 *ptr = GetVarPointer(VAR_HAPPINESS_STEP_COUNTER);
+ int i;
+
+ (*ptr)++;
+ (*ptr) %= 128;
+ if (*ptr == 0)
+ {
+ struct Pokemon *pkmn = gPlayerParty;
+
+ for (i = 5; i >= 0; i--)
+ {
+ AdjustFriendship(pkmn, 5);
+ pkmn++;
+ }
+ }
+}
+
+void overworld_poison_timer_set(void)
+{
+ VarSet(VAR_POISON_STEP_COUNTER, 0);
+}
+
+static bool8 overworld_poison_step(void)
+{
+ u16 *ptr;
+
+ if (gMapHeader.mapType != 9)
+ {
+ ptr = GetVarPointer(VAR_POISON_STEP_COUNTER);
+ (*ptr)++;
+ (*ptr) %= 4;
+ if (*ptr == 0)
+ {
+ switch (overworld_poison())
+ {
+ case 0:
+ return FALSE;
+ case 1:
+ return FALSE;
+ case 2:
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+void prev_quest_postbuffer_cursor_backup_reset(void)
+{
+ gUnknown_0202E8C0 = 0;
+}
+
+static bool8 is_it_battle_time_3(u16 a)
+{
+ if (gUnknown_0202E8C0 < 4)
+ {
+ gUnknown_0202E8C0++;
+ gUnknown_0202E8C2 = a;
+ return FALSE;
+ }
+ if (StandardWildEncounter(a, gUnknown_0202E8C2) == TRUE)
+ {
+ gUnknown_0202E8C0 = 0;
+ gUnknown_0202E8C2 = a;
+ return TRUE;
+ }
+ else
+ {
+ gUnknown_0202E8C2 = a;
+ return FALSE;
+ }
+}
+
+static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c)
+{
+ s8 r6 = map_warp_check_packed(&gMapHeader, position);
+
+ if (is_non_stair_warp_tile(b, c) == TRUE && r6 != -1)
+ {
+ walkrun_find_lowest_active_bit_in_bitfield();
+ sub_8068C30(&gMapHeader, r6, position);
+ sub_8080E88();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8068A64(struct MapPosition *position, u16 b)
+{
+ s8 r4 = map_warp_check_packed(&gMapHeader, position);
+
+ if (r4 != -1 && sub_8068B30(b) == TRUE)
+ {
+ walkrun_find_lowest_active_bit_in_bitfield();
+ sub_8068C30(&gMapHeader, r4, position);
+ if (MetatileBehavior_IsEscalator(b) == TRUE)
+ {
+ sub_8080F2C(b);
+ return TRUE;
+ }
+ if (MetatileBehavior_IsLavaridgeB1FWarp(b) == TRUE)
+ {
+ sub_8080F48();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsLavaridge1FWarp(b) == TRUE)
+ {
+ sub_8080F58();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsAquaHideoutWarp(b) == TRUE)
+ {
+ sub_8080F68();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsMtPyreHole(b) == TRUE)
+ {
+ ScriptContext1_SetupScript(gUnknown_081C6BDE);
+ return TRUE;
+ }
+ sub_8080E88();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8068B30(u16 a)
+{
+ if (MetatileBehavior_IsWarpDoor(a) != TRUE
+ && MetatileBehavior_IsLadder(a) != TRUE
+ && MetatileBehavior_IsEscalator(a) != TRUE
+ && MetatileBehavior_IsNonAnimDoor(a) != TRUE
+ && MetatileBehavior_IsLavaridgeB1FWarp(a) != TRUE
+ && MetatileBehavior_IsLavaridge1FWarp(a) != TRUE
+ && MetatileBehavior_IsAquaHideoutWarp(a) != TRUE
+ && MetatileBehavior_IsMtPyreHole(a) != TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+static bool8 is_non_stair_warp_tile(u16 a, u8 b)
+{
+ switch (b)
+ {
+ case 2:
+ return MetatileBehavior_IsNorthArrowWarp(a);
+ case 1:
+ return MetatileBehavior_IsSouthArrowWarp(a);
+ case 3:
+ return MetatileBehavior_IsWestArrowWarp(a);
+ case 4:
+ return MetatileBehavior_IsEastArrowWarp(a);
+ }
+ return FALSE;
+}
+
+static s8 map_warp_check_packed(struct MapHeader *mapHeader, struct MapPosition *position)
+{
+ return map_warp_check(mapHeader, position->x - 7, position->y - 7, position->height);
+}
+
+static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *position)
+{
+ struct WarpEvent *warpEvent = &gMapHeader.events->warps[b];
+
+ if (warpEvent->mapNum == 0x7F)
+ {
+ copy_saved_warp2_bank_and_enter_x_to_warp1(warpEvent->mapGroup);
+ }
+ else
+ {
+ struct MapHeader *mapHeader;
+
+ warp1_set_2(warpEvent->unk7, warpEvent->mapNum, warpEvent->mapGroup);
+ sub_80535C4(position->x, position->y);
+ mapHeader = get_mapheader_by_bank_and_number(warpEvent->unk7, warpEvent->mapNum);
+ if (mapHeader->events->warps[warpEvent->mapGroup].mapNum == 0x7F)
+ saved_warp2_set(mapHeader->events->warps[b].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, b);
+ }
+}
+
+static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c)
+{
+ s8 r4;
+
+ if (c == 2)
+ {
+ if (sub_80571C0(b) == TRUE)
+ {
+ sub_80BC038(position, gMapHeader.events);
+ return TRUE;
+ }
+ if (MetatileBehavior_IsWarpDoor(b) == TRUE)
+ {
+ r4 = map_warp_check_packed(&gMapHeader, position);
+ if (r4 != -1 && sub_8068B30(b) == TRUE)
+ {
+ walkrun_find_lowest_active_bit_in_bitfield();
+ sub_8068C30(&gMapHeader, r4, position);
+ sub_8080EF0();
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+{
+ s32 i;
+ struct WarpEvent *warpEvent = mapHeader->events->warps;
+ u8 warpCount = mapHeader->events->warpCount;
+
+ for (i = 0; i < warpCount; i++, warpEvent++)
+ {
+ if ((u16)warpEvent->x == b && (u16)warpEvent->y == c)
+ {
+ if ((u8)warpEvent->warpId == d || (u8)warpEvent->warpId == 0)
+ return i;
+ }
+ }
+ return -1;
+}
+
+static u8 *trigger_activate(struct CoordEvent *coordEvent)
+{
+ if (coordEvent != NULL)
+ {
+ if (coordEvent->script == NULL)
+ {
+ DoCoordEventWeather(coordEvent->trigger);
+ return NULL;
+ }
+ if (coordEvent->trigger == 0)
+ {
+ ScriptContext2_RunNewScript(coordEvent->script);
+ return NULL;
+ }
+ if (VarGet(coordEvent->trigger) == (u8)coordEvent->index)
+ return coordEvent->script;
+ }
+ return NULL;
+}
+
+static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+{
+ s32 i;
+ struct CoordEvent *coordEvents = mapHeader->events->coordEvents;
+ u8 coordEventCount = mapHeader->events->coordEventCount;
+ u8 *script;
+
+ for (i = 0; i < coordEventCount; i++)
+ {
+ if ((u16)coordEvents[i].x == b && (u16)coordEvents[i].y == c)
+ {
+ if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0)
+ {
+ script = trigger_activate(&coordEvents[i]);
+ if (script != NULL)
+ return script;
+ }
+ }
+ }
+ return NULL;
+}
+
+u8 *sub_8068E24(struct MapPosition *position)
+{
+ return mapheader_trigger_activate_at(&gMapHeader, position->x - 7, position->y - 7, position->height);
+}
+
+static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+{
+ u8 i;
+ struct BgEvent *bgEvents = mapHeader->events->bgEvents;
+ u8 bgEventCount = mapHeader->events->bgEventCount;
+
+ for (i = 0; i < bgEventCount; i++)
+ {
+ if ((u16)bgEvents[i].x == b && (u16)bgEvents[i].y == c)
+ {
+ if (bgEvents[i].unk4 == d || bgEvents[i].unk4 == 0)
+ return &bgEvents[i];
+ }
+ }
+ return NULL;
+}
+
+int dive_warp(struct MapPosition *position, u16 b)
+{
+ if (gMapHeader.mapType == 5 && sub_805750C(b) == 0)
+ {
+ if (sub_80538B0(position->x - 7, position->y - 7))
+ {
+ walkrun_find_lowest_active_bit_in_bitfield();
+ sp13E_warp_to_last_warp();
+ PlaySE(SE_W291);
+ return TRUE;
+ }
+ }
+ else if (sub_80574EC(b) == TRUE)
+ {
+ if (sub_80538D0(position->x - 7, position->y - 7))
+ {
+ walkrun_find_lowest_active_bit_in_bitfield();
+ sp13E_warp_to_last_warp();
+ PlaySE(SE_W291);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+u8 sub_8068F18(void)
+{
+ s16 x, y;
+ u8 r5;
+
+ PlayerGetDestCoords(&x, &y);
+ r5 = MapGridGetMetatileBehaviorAt(x, y);
+ if (gMapHeader.mapType == 5 && sub_805750C(r5) == 0)
+ {
+ if (sub_80538B0(x - 7, y - 7) == TRUE)
+ return 1;
+ }
+ else if (sub_80574EC(r5) == TRUE)
+ {
+ if (sub_80538D0(x - 7, y - 7) == TRUE)
+ return 2;
+ }
+ return 0;
+}
+
+u8 *GetFieldObjectScriptPointerForComparison(void)
+{
+ u8 r4;
+ struct MapPosition position;
+
+ r4 = player_get_direction_upper_nybble();
+ player_get_next_pos_and_height(&position);
+ return sub_8068364(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), r4);
+}
+
+int sub_8068FEC(void)
+{
+ struct MapPosition position;
+
+ player_get_direction_upper_nybble(); //unnecessary
+ player_get_pos_to_and_height(&position);
+ MapGridGetMetatileBehaviorAt(position.x, position.y); //unnecessary
+ sub_8068C30(&gMapHeader, map_warp_check_packed(&gMapHeader, &position), &position);
+ return 0;
+}
diff --git a/src/field_door.c b/src/field_door.c
index 85a5965a0..4b1390d11 100644
--- a/src/field_door.c
+++ b/src/field_door.c
@@ -1,22 +1,9 @@
#include "global.h"
#include "asm.h"
-#include "task.h"
#include "field_camera.h"
#include "metatile_behavior.h"
-
-struct DoorGraphics
-{
- u16 metatileNum;
- u8 unk2;
- void *tiles;
- void *palette;
-};
-
-struct DoorAnimFrame
-{
- u8 time;
- u16 offset;
-};
+#include "task.h"
+#include "field_door.h"
extern struct DoorAnimFrame gDoorOpenAnimFrames[];
extern struct DoorAnimFrame gDoorCloseAnimFrames[];
@@ -31,7 +18,7 @@ static void door_build_blockdef(u16 *a, u16 b, u8 *c)
{
int i;
u16 unk;
-
+
for (i = 0; i < 4; i++)
{
unk = *(c++) << 12;
@@ -47,7 +34,7 @@ static void door_build_blockdef(u16 *a, u16 b, u8 *c)
static void DrawCurrentDoorAnimFrame(u32 x, u32 y, u8 *c)
{
u16 arr[8];
-
+
door_build_blockdef(arr, 0x3F8, c);
DrawDoorMetatileAt(x, y - 1, arr);
door_build_blockdef(arr, 0x3FC, c + 4);
@@ -103,7 +90,7 @@ static void Task_AnimateDoor(u8 taskId)
u16 *taskData = gTasks[taskId].data;
struct DoorAnimFrame *frames = (struct DoorAnimFrame *)(taskData[TD_FRAMELIST] << 16 | taskData[TD_FRAMELIST + 1]);
struct DoorGraphics *gfx = (struct DoorGraphics *)(taskData[TD_GFX] << 16 | taskData[TD_GFX + 1]);
-
+
if (sub_8058464(gfx, frames, taskData) == FALSE)
DestroyTask(taskId);
}
@@ -134,16 +121,16 @@ static s8 StartDoorAnimationTask(struct DoorGraphics *gfx, struct DoorAnimFrame
{
u8 taskId = CreateTask(Task_AnimateDoor, 0x50);
s16 *taskData = gTasks[taskId].data;
-
+
taskData[TD_X] = x;
taskData[TD_Y] = y;
-
+
taskData[TD_FRAMELIST + 1] = (u32)frames;
taskData[TD_FRAMELIST] = (u32)frames >> 16;
-
+
taskData[TD_GFX + 1] = (u32)gfx;
taskData[TD_GFX] = (u32)gfx >> 16;
-
+
return taskId;
}
}
diff --git a/src/field_effect.c b/src/field_effect.c
index fe586fcb6..b0c028c8d 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -1,7 +1,8 @@
#include "global.h"
#include "field_effect.h"
-#include "weather.h"
#include "sprite.h"
+#include "text.h"
+#include "weather.h"
typedef bool8 (*FldEffCmd)(u8 **, u32 *);
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
new file mode 100644
index 000000000..e56ea9787
--- /dev/null
+++ b/src/field_map_obj.c
@@ -0,0 +1,1549 @@
+#include "global.h"
+#include "asm.h"
+#include "berry.h"
+#include "event_data.h"
+#include "field_map_obj.h"
+#include "field_player_avatar.h"
+#include "palette.h"
+#include "rom4.h"
+#include "sprite.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 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 RemoveFieldObjectInternal(struct MapObject *);
+u16 GetFieldObjectFlagIdByFieldObjectId(u8);
+void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables);
+struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8);
+void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
+void sub_805BDF8(u16);
+u8 sub_805BE58(const struct SpritePalette *);
+u8 FindFieldObjectPaletteIndexByTag(u16);
+
+struct PairedPalettes
+{
+ u16 tag;
+ u16 *data;
+};
+
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
+extern u8 gReservedSpritePaletteCount;
+extern struct Camera gUnknown_0202E844;
+extern u8 gUnknown_030005A4;
+extern u16 gUnknown_030005A6;
+extern const u8 gUnknown_0836DBBC[];
+extern const u8 gUnknown_0836DC09[];
+extern void (*const gUnknown_0836DA88[])(struct Sprite *);
+extern const u8 *const gBerryTreeGraphicsIdTablePointers[];
+extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[];
+extern const u8 *const gBerryTreePaletteSlotTablePointers[];
+extern const struct MapObjectGraphicsInfo *const gMapObjectGraphicsInfoPointers[];
+extern const struct SpritePalette gUnknown_0837377C[];
+extern const struct PairedPalettes gUnknown_08373874[];
+extern const struct PairedPalettes gUnknown_083738E4[];
+extern const struct SpriteTemplate gSpriteTemplate_830FD24;
+extern const u16 *const gUnknown_0837399C[];
+
+void npc_clear_ids_and_state(struct MapObject *mapObj)
+{
+ memset(mapObj, 0, sizeof(struct MapObject));
+ mapObj->localId = 0xFF;
+ mapObj->mapNum = 0xFF;
+ mapObj->mapGroup = 0xFF;
+ mapObj->mapobj_unk_1C = 0xFF;
+}
+
+void npcs_clear_ids_and_state(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ npc_clear_ids_and_state(&gMapObjects[i]);
+}
+
+void sub_805AA98(void)
+{
+ strange_npc_table_clear();
+ npcs_clear_ids_and_state();
+ ClearPlayerAvatarInfo();
+ sub_805AAB0();
+}
+
+void sub_805AAB0(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F);
+
+ gSprites[spriteId].oam.affineMode = 1;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], 0);
+ gSprites[spriteId].invisible = 1;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F);
+
+ gSprites[spriteId].oam.affineMode = 1;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], 1);
+ gSprites[spriteId].invisible = 1;
+}
+
+u8 sub_805AB54(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (!gMapObjects[i].active)
+ break;
+ }
+ return i;
+}
+
+u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ if (localId <= 0xFE)
+ return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup);
+ else
+ return GetFieldObjectIdByLocalId(localId);
+}
+
+bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 *mapObjectId)
+{
+ *mapObjectId = GetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup);
+ if (*mapObjectId == 16)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 GetFieldObjectIdByXY(s16 x, s16 y)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (gMapObjects[i].active && gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
+ break;
+ }
+ return i;
+}
+
+u8 GetFieldObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (gMapObjects[i].active && gMapObjects[i].localId == localId && gMapObjects[i].mapNum == mapNum && gMapObjects[i].mapGroup == mapGroup)
+ return i;
+ }
+ return 16;
+}
+
+u8 GetFieldObjectIdByLocalId(u8 localId)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (gMapObjects[i].active && gMapObjects[i].localId == localId)
+ return i;
+ }
+ return 16;
+}
+
+#ifdef NONMATCHING
+u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
+{
+ struct MapObject2 *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
+ u8 var;
+ u16 r3;
+ u16 r2;
+
+ //asm("nop"::"r"(b));
+ if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
+ return 16;
+ //_0805ACCE
+ mapObj = (struct MapObject2 *)&gMapObjects[var];
+ npc_clear_ids_and_state((struct MapObject *)mapObj);
+ r3 = template->x + 7;
+ r2 = template->y + 7;
+ mapObj->active = TRUE;
+ mapObj->mapobj_bit_2 = TRUE;
+ mapObj->graphicsId = template->graphicsId;
+ mapObj->animPattern = template->movementType;
+ mapObj->localId = template->localId;
+ mapObj->mapNum = b;
+ mapObj->mapGroup = c;
+ mapObj->coords1.x = r3;
+ mapObj->coords1.y = r2;
+ mapObj->coords2.x = r3;
+ mapObj->coords2.y = r2;
+ mapObj->coords3.x = r3;
+ mapObj->coords3.y = r2;
+ mapObj->mapobj_unk_0B_0 = template->elevation;
+ mapObj->elevation = template->elevation;
+ mapObj->mapobj_unk_19 = template->unkA_0;
+ mapObj->mapobj_unk_19b = template->unkA_4;
+ mapObj->trainerType = template->unkC;
+ mapObj->trainerRange_berryTreeId = template->unkE;
+ mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType];
+ FieldObjectSetDirection((struct MapObject *)mapObj, mapObj->mapobj_unk_20);
+ FieldObjectHandleDynamicGraphicsId(mapObj);
+ //asm("":::"r5","r6");
+ if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
+ {
+ if (mapObj->mapobj_unk_19 == 0)
+ mapObj->mapobj_unk_19++;
+ if (mapObj->mapobj_unk_19b == 0)
+ mapObj->mapobj_unk_19b++;
+ }
+ return var;
+}
+#else
+__attribute__((naked))
+u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x4\n\
+ adds r5, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r6, r1, 24\n\
+ lsls r2, 24\n\
+ lsrs r7, r2, 24\n\
+ ldrb r0, [r5]\n\
+ adds r1, r6, 0\n\
+ adds r2, r7, 0\n\
+ mov r3, sp\n\
+ bl GetAvailableFieldObjectSlot\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0805ACCE\n\
+ movs r0, 0x10\n\
+ b _0805ADC2\n\
+_0805ACCE:\n\
+ mov r0, sp\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _0805ADD0 @ =gMapObjects\n\
+ adds r4, r0, r1\n\
+ adds r0, r4, 0\n\
+ bl npc_clear_ids_and_state\n\
+ ldrh r3, [r5, 0x4]\n\
+ adds r3, 0x7\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ ldrh r2, [r5, 0x6]\n\
+ adds r2, 0x7\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r5, 0x1]\n\
+ strb r0, [r4, 0x5]\n\
+ ldrb r0, [r5, 0x9]\n\
+ strb r0, [r4, 0x6]\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r4, 0x8]\n\
+ strb r6, [r4, 0x9]\n\
+ strb r7, [r4, 0xA]\n\
+ strh r3, [r4, 0xC]\n\
+ strh r2, [r4, 0xE]\n\
+ strh r3, [r4, 0x10]\n\
+ strh r2, [r4, 0x12]\n\
+ strh r3, [r4, 0x14]\n\
+ strh r2, [r4, 0x16]\n\
+ ldrb r0, [r5, 0x8]\n\
+ movs r7, 0xF\n\
+ adds r1, r7, 0\n\
+ ands r1, r0\n\
+ ldrb r2, [r4, 0xB]\n\
+ movs r0, 0x10\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0xB]\n\
+ ldrb r1, [r5, 0x8]\n\
+ lsls r1, 4\n\
+ ands r0, r7\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0xB]\n\
+ ldrb r1, [r5, 0xA]\n\
+ lsls r1, 28\n\
+ movs r0, 0xF\n\
+ mov r9, r0\n\
+ lsrs r1, 28\n\
+ ldrb r2, [r4, 0x19]\n\
+ mov r0, r8\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x19]\n\
+ ldrb r1, [r5, 0xA]\n\
+ lsrs r1, 4\n\
+ lsls r1, 4\n\
+ ands r0, r7\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x19]\n\
+ ldrh r0, [r5, 0xC]\n\
+ strb r0, [r4, 0x7]\n\
+ ldrh r0, [r5, 0xE]\n\
+ strb r0, [r4, 0x1D]\n\
+ ldr r1, _0805ADD4 @ =gUnknown_0836DC09\n\
+ ldrb r0, [r5, 0x9]\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ strb r1, [r0]\n\
+ ldrb r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl FieldObjectSetDirection\n\
+ adds r0, r4, 0\n\
+ bl FieldObjectHandleDynamicGraphicsId\n\
+ ldr r1, _0805ADD8 @ =gUnknown_0836DBBC\n\
+ ldrb r0, [r4, 0x6]\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0805ADBE\n\
+ ldrb r2, [r4, 0x19]\n\
+ adds r0, r7, 0\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _0805ADA6\n\
+ lsls r0, r2, 28\n\
+ lsrs r0, 28\n\
+ adds r0, 0x1\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0x19]\n\
+_0805ADA6:\n\
+ ldrb r2, [r4, 0x19]\n\
+ movs r0, 0xF0\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _0805ADBE\n\
+ lsrs r1, r2, 4\n\
+ adds r1, 0x1\n\
+ lsls r1, 4\n\
+ adds r0, r7, 0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x19]\n\
+_0805ADBE:\n\
+ mov r0, sp\n\
+ ldrb r0, [r0]\n\
+_0805ADC2:\n\
+ add sp, 0x4\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_0805ADD0: .4byte gMapObjects\n\
+_0805ADD4: .4byte gUnknown_0836DC09\n\
+_0805ADD8: .4byte gUnknown_0836DBBC\n\
+ .syntax divided\n");
+}
+#endif
+
+u8 sub_805ADDC(u8 localId)
+{
+ u8 objectCount;
+ u8 i;
+
+ if (gMapHeader.events == NULL)
+ return 16;
+ objectCount = gMapHeader.events->mapObjectCount;
+ for (i = 0; i < objectCount; i++)
+ {
+ struct MapObjectTemplate *template = &gSaveBlock1.mapObjectTemplates[i];
+
+ if (template->localId == localId && !FlagGet(template->flagId))
+ return InitFieldObjectStateFromTemplate(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ }
+ return 16;
+}
+
+u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d)
+{
+ u8 i = 0;
+
+ for (i = 0; i < 16 && gMapObjects[i].active; i++)
+ {
+ if (gMapObjects[i].localId == a && gMapObjects[i].mapNum == b && gMapObjects[i].mapGroup == c)
+ return 1;
+ }
+ if (i >= 16)
+ return 1;
+ *d = i;
+ for (; i < 16; i++)
+ {
+ if (gMapObjects[i].active && gMapObjects[i].localId == a && gMapObjects[i].mapNum == b && gMapObjects[i].mapGroup == c)
+ return 1;
+ }
+ return 0;
+}
+
+void RemoveFieldObject(struct MapObject *mapObject)
+{
+ mapObject->active = FALSE;
+ RemoveFieldObjectInternal(mapObject);
+}
+
+void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ return;
+ FlagSet(GetFieldObjectFlagIdByFieldObjectId(mapObjectId));
+ RemoveFieldObject(&gMapObjects[mapObjectId]);
+}
+
+void RemoveFieldObjectInternal(struct MapObject *mapObject)
+{
+ struct SpriteFrameImage image;
+ const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+
+ image.size = gfxInfo->size;
+ gSprites[mapObject->spriteId].images = &image;
+ DestroySprite(&gSprites[mapObject->spriteId]);
+}
+
+void npc_hide_all_but_player(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (i != gPlayerAvatar.mapObjectId)
+ RemoveFieldObject(&gMapObjects[i]);
+ }
+}
+
+u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
+{
+ u8 mapObjectId;
+ u8 spriteId;
+ const struct MapObjectGraphicsInfo *gfxInfo;
+ struct MapObject *mapObject;
+ struct Sprite *sprite;
+
+ mapObjectId = InitFieldObjectStateFromTemplate(mapObjTemplate, c, d);
+ if (mapObjectId == 16)
+ return 16;
+
+ mapObject = &gMapObjects[mapObjectId];
+ gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (gfxInfo->paletteSlot == 0)
+ npc_load_two_palettes__no_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ else if (gfxInfo->paletteSlot == 10)
+ npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ if (mapObject->animPattern == 0x4C)
+ mapObject->mapobj_bit_13 = TRUE;
+
+#ifdef NONMATCHING
+ sprTemplate->paletteTag = 0xFFFF;
+#else
+ *(u16 *)&sprTemplate->paletteTag = 0xFFFF;
+#endif
+ spriteId = CreateSprite(sprTemplate, 0, 0, 0);
+ if (spriteId == 64)
+ {
+ gMapObjects[mapObjectId].active = FALSE;
+ return 16;
+ }
+ sprite = &gSprites[spriteId];
+ sub_8060388(e + mapObject->coords2.x, f + mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
+ sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->oam.paletteNum = gfxInfo->paletteSlot;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data0 = mapObjectId;
+ mapObject->spriteId = spriteId;
+ mapObject->mapobj_bit_12 = gfxInfo->inanimate;
+ if (!mapObject->mapobj_bit_12)
+ StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
+ SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
+ sub_80634D0(mapObject, sprite);
+ return mapObjectId;
+}
+
+u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e)
+{
+ struct SpriteTemplate spriteTemplate;
+ struct SubspriteTable *subspriteTables = NULL;
+ struct SpriteFrameImage spriteFrameImage;
+ const struct MapObjectGraphicsInfo *gfxInfo;
+ u8 mapObjectId;
+
+ gfxInfo = GetFieldObjectGraphicsInfo(mapObjTemplate->graphicsId);
+ MakeObjectTemplateFromFieldObjectTemplate(mapObjTemplate, &spriteTemplate, &subspriteTables);
+ spriteFrameImage.size = gfxInfo->size;
+ spriteTemplate.images = &spriteFrameImage;
+ mapObjectId = sub_805AFCC(mapObjTemplate, &spriteTemplate, b, c, d, e);
+ if (mapObjectId == 16)
+ return 16;
+ gSprites[gMapObjects[mapObjectId].spriteId].images = gfxInfo->images;
+ if (subspriteTables != NULL)
+ SetSubspriteTables(&gSprites[gMapObjects[mapObjectId].spriteId], subspriteTables);
+ return mapObjectId;
+}
+
+u8 SpawnSpecialFieldObject(struct MapObjectTemplate *mapObjTemplate)
+{
+ s16 x;
+ s16 y;
+
+ GetFieldObjectMovingCameraOffset(&x, &y);
+ return SpawnFieldObject(mapObjTemplate, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y);
+}
+
+u8 SpawnSpecialFieldObjectParametrized(u8 a, u8 b, u8 c, s16 d, s16 e, u8 f)
+{
+ struct MapObjectTemplate mapObjTemplate;
+
+ d -= 7;
+ e -= 7;
+ mapObjTemplate.localId = c;
+ mapObjTemplate.graphicsId = a;
+ mapObjTemplate.unk2 = 0;
+ mapObjTemplate.x = d;
+ mapObjTemplate.y = e;
+ mapObjTemplate.elevation = f;
+ mapObjTemplate.movementType = b;
+ mapObjTemplate.unkA_0 = 0;
+ mapObjTemplate.unkA_4 = 0;
+ mapObjTemplate.unkC = 0;
+ mapObjTemplate.unkE = 0;
+ return SpawnSpecialFieldObject(&mapObjTemplate);
+}
+
+u8 show_sprite(u8 a, u8 b, u8 c)
+{
+ struct MapObjectTemplate *r5;
+ s16 x;
+ s16 y;
+
+ r5 = GetFieldObjectTemplateByLocalIdAndMap(a, b, c);
+ if (r5 == NULL)
+ return 16;
+ GetFieldObjectMovingCameraOffset(&x, &y);
+ return SpawnFieldObject(r5, b, c, x, y);
+}
+
+void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables)
+{
+ const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
+
+ sprTemplate->tileTag = gfxInfo->tileTag;
+ sprTemplate->paletteTag = gfxInfo->paletteTag1;
+ sprTemplate->oam = gfxInfo->oam;
+ sprTemplate->anims = gfxInfo->anims;
+ sprTemplate->images = gfxInfo->images;
+ sprTemplate->affineAnims = gfxInfo->affineAnims;
+ sprTemplate->callback = callback;
+ *subspriteTables = gfxInfo->subspriteTables;
+}
+
+void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables)
+{
+ MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, gUnknown_0836DA88[callbackIndex], sprTemplate, subspriteTables);
+}
+
+void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables)
+{
+ MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObjTemplate->graphicsId, mapObjTemplate->movementType, sprTemplate, subspriteTables);
+}
+
+u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c, s16 d, u8 subpriority)
+{
+ struct SpriteTemplate spriteTemplate;
+ struct SubspriteTable *subspriteTables;
+ u8 spriteId;
+
+ MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, callback, &spriteTemplate, &subspriteTables);
+ if (spriteTemplate.paletteTag != 0xFFFF)
+ sub_805BDF8(spriteTemplate.paletteTag);
+ spriteId = CreateSprite(&spriteTemplate, c, d, subpriority);
+ if (spriteId != 64 && subspriteTables != NULL)
+ {
+ SetSubspriteTables(&gSprites[spriteId], subspriteTables);
+ gSprites[spriteId].subspriteMode = 2;
+ }
+ return spriteId;
+}
+
+extern void sub_8064970(struct Sprite *);
+extern void sub_8060470();
+extern void InitObjectPriorityByZCoord();
+
+u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f)
+{
+ const struct MapObjectGraphicsInfo *gfxInfo;
+ struct SpriteTemplate spriteTemplate;
+ struct SubspriteTable *subspriteTables;
+ u8 spriteId;
+
+ gfxInfo = GetFieldObjectGraphicsInfo(a);
+ MakeObjectTemplateFromFieldObjectGraphicsInfo(a, sub_8064970, &spriteTemplate, &subspriteTables);
+#ifdef NONMATCHING
+ spriteTemplate.paletteTag = 0xFFFF;
+#else
+ *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
+#endif
+ c += 7;
+ d += 7;
+ sub_8060470(&c, &d, 8, 16);
+ spriteId = CreateSpriteAtEnd(&spriteTemplate, c, d, 0);
+ if (spriteId != 64)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+
+ sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
+ sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
+ sprite->pos1.y += sprite->centerToCornerVecY;
+ sprite->oam.paletteNum = gfxInfo->paletteSlot;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data0 = b;
+ sprite->data1 = e;
+ if (gfxInfo->paletteSlot == 10)
+ npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ if (subspriteTables != NULL)
+ {
+ SetSubspriteTables(sprite, subspriteTables);
+ sprite->subspriteMode = 2;
+ }
+ InitObjectPriorityByZCoord(sprite, e);
+ SetObjectSubpriorityByZCoord(e, sprite, 1);
+ StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(f));
+ }
+ return spriteId;
+}
+
+void sub_805B55C(s16 a, s16 b)
+{
+ u8 i;
+
+ if (gMapHeader.events != NULL)
+ {
+ s16 r9 = gSaveBlock1.pos.x - 2;
+ s16 sp8 = gSaveBlock1.pos.x + 17;
+ s16 r10 = gSaveBlock1.pos.y;
+ s16 spC = gSaveBlock1.pos.y + 16;
+ u8 objectCount = gMapHeader.events->mapObjectCount;
+
+ for (i = 0; i < objectCount; i++)
+ {
+ struct MapObjectTemplate *template = &gSaveBlock1.mapObjectTemplates[i];
+ s16 foo = template->x + 7;
+ s16 bar = template->y + 7;
+
+ if (r10 <= bar && spC >= bar && r9 <= foo && sp8 >= foo
+ && !FlagGet(template->flagId))
+ SpawnFieldObject(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, a, b);
+ }
+ }
+}
+
+void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject);
+
+void RemoveFieldObjectsOutsideView(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 16; i++)
+ {
+ bool8 isActiveLinkPlayer;
+
+ for (j = 0, isActiveLinkPlayer = 0; j < 4; j++)
+ {
+ if (gLinkPlayerMapObjects[j].active && i == gLinkPlayerMapObjects[j].mapObjId)
+ isActiveLinkPlayer = TRUE;
+ }
+ if (!isActiveLinkPlayer)
+ {
+ struct MapObject *mapObject = &gMapObjects[i];
+
+ if (mapObject->active && !mapObject->mapobj_bit_16)
+ RemoveFieldObjectIfOutsideView(mapObject);
+ }
+ }
+}
+
+void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
+{
+ s16 r7 = gSaveBlock1.pos.x - 2;
+ s16 r5 = gSaveBlock1.pos.x + 17;
+ s16 r4 = gSaveBlock1.pos.y;
+ s16 r6 = gSaveBlock1.pos.y + 16;
+
+ if (mapObject->coords2.x >= r7 && mapObject->coords2.x <= r5
+ && mapObject->coords2.y >= r4 && mapObject->coords2.y <= r6)
+ return;
+ if (mapObject->coords1.x >= r7 && mapObject->coords1.x <= r5
+ && mapObject->coords1.y >= r4 && mapObject->coords1.y <= r6)
+ return;
+ RemoveFieldObject(mapObject);
+}
+
+void sub_805B75C(u8, s16, s16);
+
+void sub_805B710(u16 a, u16 b)
+{
+ u8 i;
+
+ ClearPlayerAvatarInfo();
+ for (i = 0; i < 16; i++)
+ {
+ if (gMapObjects[i].active)
+ sub_805B75C(i, a, b);
+ }
+ sub_805AAB0();
+}
+
+extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
+extern void sub_805B914(struct MapObject *);
+
+void sub_805B75C(u8 a, s16 b, s16 c)
+{
+ struct SpriteTemplate sp0;
+ struct SpriteFrameImage sp18;
+ struct SubspriteTable *subspriteTables;
+ const struct MapObjectGraphicsInfo *gfxInfo;
+ struct MapObject *mapObject;
+ u8 spriteId;
+
+ #define i spriteId
+ for (i = 0; i < 4; i++)
+ {
+ if (gLinkPlayerMapObjects[i].active && a == gLinkPlayerMapObjects[i].mapObjId)
+ return;
+ }
+ #undef i
+
+ mapObject = &gMapObjects[a];
+ asm("":::"r5");
+ subspriteTables = NULL;
+ gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sp18.size = gfxInfo->size;
+ MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObject->graphicsId, mapObject->animPattern, &sp0, &subspriteTables);
+ sp0.images = &sp18;
+ *(u16 *)&sp0.paletteTag = 0xFFFF;
+ if (gfxInfo->paletteSlot == 0)
+ npc_load_two_palettes__no_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ if (gfxInfo->paletteSlot > 9)
+ npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ *(u16 *)&sp0.paletteTag = 0xFFFF;
+ spriteId = CreateSprite(&sp0, 0, 0, 0);
+ if (spriteId != 64)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+
+ sub_8060388(b + mapObject->coords2.x, c + mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
+ sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->images = gfxInfo->images;
+ if (mapObject->animPattern == 11)
+ {
+ SetPlayerAvatarFieldObjectIdAndObjectId(a, spriteId);
+ mapObject->mapobj_unk_1B = sub_8126B54();
+ }
+ if (subspriteTables != NULL)
+ SetSubspriteTables(sprite, subspriteTables);
+ sprite->oam.paletteNum = gfxInfo->paletteSlot;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data0 = a;
+ mapObject->spriteId = spriteId;
+ if (!mapObject->mapobj_bit_12 && mapObject->animPattern != 11)
+ StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
+ sub_805B914(mapObject);
+ SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
+ }
+}
+
+void sub_805B914(struct MapObject *mapObject)
+{
+ mapObject->mapobj_bit_1 = FALSE;
+ mapObject->mapobj_bit_2 = TRUE;
+ mapObject->mapobj_bit_22 = FALSE;
+ mapObject->mapobj_bit_17 = FALSE;
+ mapObject->mapobj_bit_18 = FALSE;
+ mapObject->mapobj_bit_19 = FALSE;
+ mapObject->mapobj_bit_20 = FALSE;
+ mapObject->mapobj_bit_21 = FALSE;
+ FieldObjectClearAnim(mapObject);
+}
+
+void SetPlayerAvatarFieldObjectIdAndObjectId(u8 mapObjectId, u8 spriteId)
+{
+ gPlayerAvatar.mapObjectId = mapObjectId;
+ gPlayerAvatar.spriteId = spriteId;
+ gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gMapObjects[mapObjectId].graphicsId);
+ SetPlayerAvatarExtraStateTransition(gMapObjects[mapObjectId].graphicsId, 0x20);
+}
+
+void sub_805B980(struct MapObject *mapObject, u8 graphicsId)
+{
+ const struct MapObjectGraphicsInfo *gfxInfo;
+ struct Sprite *sprite;
+
+ gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
+ sprite = &gSprites[mapObject->spriteId];
+ if (gfxInfo->paletteSlot == 0)
+ pal_patch_for_npc(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ if (gfxInfo->paletteSlot == 10)
+ npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ sprite->oam.shape = gfxInfo->oam->shape;
+ sprite->oam.size = gfxInfo->oam->size;
+ sprite->images = gfxInfo->images;
+ sprite->anims = gfxInfo->anims;
+ sprite->subspriteTables = gfxInfo->subspriteTables;
+ sprite->oam.paletteNum = gfxInfo->paletteSlot;
+ mapObject->mapobj_bit_12 = gfxInfo->inanimate;
+ mapObject->graphicsId = graphicsId;
+ sub_80603CC(mapObject->coords2.x, mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
+ sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ if (mapObject->mapobj_bit_15)
+ CameraObjectReset1();
+}
+
+void unref_sub_805BA80(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
+{
+ u8 mapObjectId;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ sub_805B980(&gMapObjects[mapObjectId], graphicsId);
+}
+
+void FieldObjectTurn(struct MapObject *mapObject, u8 direction)
+{
+ FieldObjectSetDirection(mapObject, direction);
+ if (!mapObject->mapobj_bit_12)
+ {
+ StartSpriteAnim(&gSprites[mapObject->spriteId], FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
+ SeekSpriteAnim(&gSprites[mapObject->spriteId], 0);
+ }
+}
+
+void FieldObjectTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction)
+{
+ u8 mapObjectId;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ FieldObjectTurn(&gMapObjects[mapObjectId], direction);
+}
+
+void unref_TurnPlayer(struct PlayerAvatar *player, u8 direction)
+{
+ FieldObjectTurn(&gMapObjects[player->mapObjectId], direction);
+}
+
+void get_berry_tree_graphics(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 treeStage;
+ u8 treeId;
+
+ mapObject->mapobj_bit_13 = TRUE;
+ sprite->invisible = TRUE;
+ treeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
+ if (treeStage != 0)
+ {
+ mapObject->mapobj_bit_13 = FALSE;
+ sprite->invisible = FALSE;
+ treeId = GetBerryTypeByBerryTreeId(mapObject->trainerRange_berryTreeId) - 1;
+ treeStage--;
+ if (treeId > 0x2B)
+ treeId = 0;
+ sub_805B980(mapObject, gBerryTreeGraphicsIdTablePointers[treeId][treeStage]);
+ sprite->images = gBerryTreePicTablePointers[treeId];
+ sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[treeId][treeStage];
+ StartSpriteAnim(sprite, treeStage);
+ }
+}
+
+const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8 graphicsId)
+{
+ if (graphicsId > 0xEF)
+ graphicsId = VarGetFieldObjectGraphicsId(graphicsId + 16);
+ if (graphicsId > 0xD9)
+ graphicsId = 5;
+ return gMapObjectGraphicsInfoPointers[graphicsId];
+}
+
+void FieldObjectHandleDynamicGraphicsId(struct MapObject *mapObject)
+{
+ if (mapObject->graphicsId > 0xEF)
+ mapObject->graphicsId = VarGetFieldObjectGraphicsId(mapObject->graphicsId + 16);
+}
+
+void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGroup, u8 d)
+{
+ u8 mapObjectId;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ gMapObjects[mapObjectId].mapobj_bit_13 = d;
+}
+
+void FieldObjectGetLocalIdAndMap(struct MapObject *mapObject, u8 *localId, u8 *mapNum, u8 *mapGroup)
+{
+ *localId = mapObject->localId;
+ *mapNum = mapObject->mapNum;
+ *mapGroup = mapObject->mapGroup;
+}
+
+void sub_805BCC0(s16 x, s16 y)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapObjectId = GetFieldObjectIdByXY(x, y);
+ if (mapObjectId != 16)
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ mapObject->mapobj_bit_2 = TRUE;
+ }
+}
+
+void sub_805BCF0(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ struct Sprite *sprite;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ sprite = &gSprites[mapObject->spriteId];
+ mapObject->mapobj_bit_26 = TRUE;
+ sprite->subpriority = subpriority;
+ }
+}
+
+void sub_805BD48(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ mapObject->mapobj_bit_26 = FALSE;
+ mapObject->mapobj_bit_2 = TRUE;
+ }
+}
+
+void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ u8 mapObjectId;
+ struct Sprite *sprite;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ sprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ sprite->pos2.x = x;
+ sprite->pos2.y = y;
+ }
+}
+
+void gpu_pal_allocator_reset__manage_upper_four(void)
+{
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 12;
+}
+
+void sub_805BDF8(u16 tag)
+{
+ u16 paletteIndex = FindFieldObjectPaletteIndexByTag(tag);
+
+ if (paletteIndex != 0x11FF) //always happens. FindFieldObjectPaletteIndexByTag returns u8
+ sub_805BE58(&gUnknown_0837377C[paletteIndex]);
+}
+
+void unref_sub_805BE24(u16 *arr)
+{
+ u8 i;
+
+ for (i = 0; arr[i] != 0x11FF; i++)
+ sub_805BDF8(arr[i]);
+}
+
+u8 sub_805BE58(const struct SpritePalette *palette)
+{
+ if (IndexOfSpritePaletteTag(palette->tag) != 0xFF)
+ return 0xFF;
+ else
+ return LoadSpritePalette(palette);
+}
+
+void pal_patch_for_npc(u16 a, u16 b)
+{
+ u8 var = b;
+ u8 paletteIndex = FindFieldObjectPaletteIndexByTag(a);
+
+ LoadPalette(gUnknown_0837377C[paletteIndex].data, var * 16 + 0x100, 0x20);
+}
+
+void pal_patch_for_npc_range(const u16 *arr, u8 b, u8 c)
+{
+ for (; b < c; arr++, b++)
+ pal_patch_for_npc(*arr, b);
+}
+
+u8 FindFieldObjectPaletteIndexByTag(u16 tag)
+{
+ u8 i;
+
+ for (i = 0; gUnknown_0837377C[i].tag != 0x11FF; i++)
+ {
+ if (gUnknown_0837377C[i].tag == tag)
+ return i;
+ }
+ return 0xFF;
+}
+
+const u8 gUnknown_0830FD14[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
+
+void npc_load_two_palettes__no_record(u16 a, u8 b)
+{
+ u8 i;
+
+ pal_patch_for_npc(a, b);
+ for (i = 0; gUnknown_08373874[i].tag != 0x11FF; i++)
+ {
+ if (gUnknown_08373874[i].tag == a)
+ {
+ pal_patch_for_npc(gUnknown_08373874[i].data[gUnknown_030005A4], gUnknown_0830FD14[b]);
+ break;
+ }
+ }
+}
+
+void npc_load_two_palettes__and_record(u16 a, u8 b)
+{
+ u8 i;
+
+ gUnknown_030005A6 = a;
+ pal_patch_for_npc(a, b);
+ for (i = 0; gUnknown_083738E4[i].tag != 0x11FF; i++)
+ {
+ if (gUnknown_083738E4[i].tag == a)
+ {
+ pal_patch_for_npc(gUnknown_083738E4[i].data[gUnknown_030005A4], gUnknown_0830FD14[b]);
+ break;
+ }
+ }
+}
+
+void unref_sub_805C014(struct MapObject *mapObject, s16 x, s16 y)
+{
+ mapObject->coords3.x = mapObject->coords2.x;
+ mapObject->coords3.y = mapObject->coords2.y;
+ mapObject->coords2.x += x;
+ mapObject->coords2.y += y;
+}
+
+void npc_coords_shift(struct MapObject *mapObject, s16 x, s16 y)
+{
+ mapObject->coords3.x = mapObject->coords2.x;
+ mapObject->coords3.y = mapObject->coords2.y;
+ mapObject->coords2.x = x;
+ mapObject->coords2.y = y;
+}
+
+void npc_coords_set(struct MapObject *mapObject, s16 x, s16 y)
+{
+ mapObject->coords3.x = x;
+ mapObject->coords3.y = y;
+ mapObject->coords2.x = x;
+ mapObject->coords2.y = y;
+}
+
+void sub_805C058(struct MapObject *mapObject, s16 x, s16 y)
+{
+ struct Sprite *sprite = &gSprites[mapObject->spriteId];
+ const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+
+ npc_coords_set(mapObject, x, y);
+ sub_80603CC(mapObject->coords2.x, mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
+ sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sub_805B914(mapObject);
+ if (mapObject->mapobj_bit_15)
+ CameraObjectReset1();
+}
+
+void sub_805C0F8(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ u8 mapObjectId;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ x += 7;
+ y += 7;
+ sub_805C058(&gMapObjects[mapObjectId], x, y);
+ }
+}
+
+void npc_coords_shift_still(struct MapObject *mapObject)
+{
+ npc_coords_shift(mapObject, mapObject->coords2.x, mapObject->coords2.y);
+}
+
+void UpdateFieldObjectCoordsForCameraUpdate(void)
+{
+ u8 i;
+ s16 deltaX;
+ s16 deltaY;
+
+#ifndef NONMATCHING
+ asm(""::"r"(i)); //makes the compiler store i in r3
+#endif
+
+ if (gUnknown_0202E844.field_0)
+ {
+ for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++)
+ {
+ struct MapObject *mapObject = &gMapObjects[i];
+
+ if (mapObject->active)
+ {
+ mapObject->coords1.x -= deltaX;
+ mapObject->coords1.y -= deltaY;
+ mapObject->coords2.x -= deltaX;
+ mapObject->coords2.y -= deltaY;
+ mapObject->coords3.x -= deltaX;
+ mapObject->coords3.y -= deltaY;
+ }
+ }
+ }
+}
+
+bool8 FieldObjectDoesZCoordMatch(struct MapObject *, u8);
+
+u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (gMapObjects[i].active && gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y
+ && FieldObjectDoesZCoordMatch(&gMapObjects[i], z))
+ return i;
+ }
+ return 16;
+}
+
+bool8 FieldObjectDoesZCoordMatch(struct MapObject *mapObject, u8 z)
+{
+ if (mapObject->mapobj_unk_0B_0 != 0 && z != 0
+ && mapObject->mapobj_unk_0B_0 != z)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y)
+{
+ UpdateFieldObjectCoordsForCameraUpdate();
+ sub_805B55C(x, y);
+ RemoveFieldObjectsOutsideView();
+}
+
+void ObjectCB_CameraObject(struct Sprite *sprite);
+const struct SpriteTemplate gSpriteTemplate_830FD24 =
+{
+ .tileTag = 0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = ObjectCB_CameraObject,
+};
+
+u8 AddCameraObject(u8 a)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_830FD24, 0, 0, 4);
+
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].data0 = a;
+ return spriteId;
+}
+
+void CameraObject_0(struct Sprite *);
+void CameraObject_1(struct Sprite *);
+void CameraObject_2(struct Sprite *);
+
+void ObjectCB_CameraObject(struct Sprite *sprite)
+{
+ void (*const cameraObjectFuncs[])(struct Sprite *) =
+ {
+ CameraObject_0,
+ CameraObject_1,
+ CameraObject_2,
+ };
+
+ cameraObjectFuncs[sprite->data1](sprite);
+}
+
+void CameraObject_0(struct Sprite *sprite)
+{
+ sprite->pos1.x = gSprites[sprite->data0].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+ sprite->invisible = TRUE;
+ sprite->data1 = 1;
+ CameraObject_1(sprite);
+}
+
+void CameraObject_1(struct Sprite *sprite)
+{
+ s16 x = gSprites[sprite->data0].pos1.x;
+ s16 y = gSprites[sprite->data0].pos1.y;
+
+ sprite->data2 = x - sprite->pos1.x;
+ sprite->data3 = y - sprite->pos1.y;
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+}
+
+void CameraObject_2(struct Sprite *sprite)
+{
+ sprite->pos1.x = gSprites[sprite->data0].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+ sprite->data2 = 0;
+ sprite->data3 = 0;
+}
+
+struct Sprite *FindCameraObject(void)
+{
+ u8 i;
+
+ for (i = 0; i < 64; i++)
+ {
+ if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject)
+ return &gSprites[i];
+ }
+ return NULL;
+}
+
+void CameraObjectReset1(void)
+{
+ struct Sprite *cameraSprite = FindCameraObject();
+
+ if (cameraSprite != NULL)
+ {
+ cameraSprite->data1 = 0;
+ cameraSprite->callback(cameraSprite);
+ }
+}
+
+void CameraObjectSetFollowedObjectId(u8 state)
+{
+ struct Sprite *cameraSprite = FindCameraObject();
+
+ if (cameraSprite != NULL)
+ {
+ cameraSprite->data0 = state;
+ CameraObjectReset1();
+ }
+}
+
+u8 CameraObjectGetFollowedObjectId(void)
+{
+ struct Sprite *cameraSprite = FindCameraObject();
+
+ if (cameraSprite == NULL)
+ return 64;
+ else
+ return cameraSprite->data0;
+}
+
+void CameraObjectReset2(void)
+{
+ struct Sprite *cameraSprite = FindCameraObject();
+
+ cameraSprite->data1 = 2;
+}
+
+u8 unref_sub_805C43C(struct Sprite *src, s16 x, s16 y, u8 subpriority)
+{
+ u8 i;
+
+ for (i = 0; i < 64; i++)
+ {
+ if (!gSprites[i].inUse)
+ {
+ gSprites[i] = *src;
+ gSprites[i].pos1.x = x;
+ gSprites[i].pos1.y = y;
+ gSprites[i].subpriority = subpriority;
+ break;
+ }
+ }
+ return i;
+}
+
+u8 obj_unfreeze(struct Sprite *src, s16 x, s16 y, u8 subpriority)
+{
+ s16 i;
+
+ for (i = 63; i > -1; i--)
+ {
+ if (!gSprites[i].inUse)
+ {
+ gSprites[i] = *src;
+ gSprites[i].pos1.x = x;
+ gSprites[i].pos1.y = y;
+ gSprites[i].subpriority = subpriority;
+ return i;
+ }
+ }
+ return 64;
+}
+
+void FieldObjectSetDirection(struct MapObject *mapObject, u8 direction)
+{
+ mapObject->mapobj_unk_20 = mapObject->mapobj_unk_18;
+ if (!mapObject->mapobj_bit_9)
+ {
+ s8 _direction = direction; //needed for the asm to match
+ mapObject->mapobj_unk_18 = _direction;
+ }
+ mapObject->placeholder18 = direction;
+}
+
+u8 *GetFieldObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ struct MapObjectTemplate *template = GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
+
+ return template->script;
+}
+
+u8 *GetFieldObjectScriptPointerByFieldObjectId(u8 mapObjectId)
+{
+ return GetFieldObjectScriptPointerByLocalIdAndMap(gMapObjects[mapObjectId].localId, gMapObjects[mapObjectId].mapNum, gMapObjects[mapObjectId].mapGroup);
+}
+
+u16 GetFieldObjectFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ struct MapObjectTemplate *template = GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
+
+ return template->flagId;
+}
+
+u16 GetFieldObjectFlagIdByFieldObjectId(u8 mapObjectId)
+{
+ return GetFieldObjectFlagIdByLocalIdAndMap(gMapObjects[mapObjectId].localId, gMapObjects[mapObjectId].mapNum, gMapObjects[mapObjectId].mapGroup);
+}
+
+u8 unref_sub_805C5D0(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ return 0xFF;
+ else
+ return gMapObjects[mapObjectId].trainerType;
+}
+
+u8 unref_sub_805C60C(u8 mapObjectId)
+{
+ return gMapObjects[mapObjectId].trainerType;
+}
+
+u8 unref_sub_805C624(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ return 0xFF;
+ else
+ return gMapObjects[mapObjectId].trainerRange_berryTreeId;
+}
+
+u8 FieldObjectGetBerryTreeId(u8 mapObjectId)
+{
+ return gMapObjects[mapObjectId].trainerRange_berryTreeId;
+}
+
+struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8, struct MapObjectTemplate *, u8);
+
+struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ if (gSaveBlock1.location.mapNum == mapNum && gSaveBlock1.location.mapGroup == mapGroup)
+ return FindFieldObjectTemplateInArrayByLocalId(localId, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount);
+ else
+ {
+ struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+
+ return FindFieldObjectTemplateInArrayByLocalId(localId, mapHeader->events->mapObjects, mapHeader->events->mapObjectCount);
+ }
+}
+
+struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8 localId, struct MapObjectTemplate *templates, u8 count)
+{
+ u8 i;
+
+ for (i = 0; i < count; i++)
+ {
+ if (templates[i].localId == localId)
+ return &templates[i];
+ }
+ return NULL;
+}
+
+struct MapObjectTemplate *sub_805C700(struct MapObject *mapObject)
+{
+ s32 i;
+
+ if (mapObject->mapNum != gSaveBlock1.location.mapNum
+ || mapObject->mapGroup != gSaveBlock1.location.mapGroup)
+ return NULL;
+
+ for (i = 0; i < 64; i++)
+ {
+ if (mapObject->localId == gSaveBlock1.mapObjectTemplates[i].localId)
+ return &gSaveBlock1.mapObjectTemplates[i];
+ }
+ return NULL;
+}
+
+void sub_805C754(struct MapObject *mapObject)
+{
+ struct MapObjectTemplate *template = sub_805C700(mapObject);
+
+ if (template != NULL)
+ {
+ template->x = mapObject->coords2.x - 7;
+ template->y = mapObject->coords2.y - 7;
+ }
+}
+
+void sub_805C774(struct MapObject *mapObject, u8 movementType)
+{
+ struct MapObjectTemplate *template = sub_805C700(mapObject);
+
+ if (template != NULL)
+ template->movementType = movementType;
+}
+
+void sub_805C78C(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ sub_805C754(&gMapObjects[mapObjectId]);
+}
+
+void sub_805C7C4(u8 a)
+{
+ gpu_pal_allocator_reset__manage_upper_four();
+ gUnknown_030005A6 = 0x11FF;
+ gUnknown_030005A4 = a;
+ pal_patch_for_npc_range(gUnknown_0837399C[gUnknown_030005A4], 0, 10);
+}
+
+u16 npc_paltag_by_palslot(u8 a)
+{
+ u8 i;
+
+ if (a < 10)
+ return gUnknown_0837399C[gUnknown_030005A4][a];
+
+ for (i = 0; gUnknown_083738E4[i].tag != 0x11FF; i++)
+ {
+ if (gUnknown_083738E4[i].tag == gUnknown_030005A6)
+ {
+ return gUnknown_083738E4[i].data[gUnknown_030005A4];
+ }
+ }
+ return 0x11FF;
+}
+
+u32 sub_805C8A8(void);
+
+void sub_805C884(struct Sprite *sprite)
+{
+ meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8);
+}
+
+u32 sub_805C8A8(void)
+{
+ return 0;
+}
+
+u32 sub_805C8D0(struct MapObject *, struct Sprite *);
+
+void sub_805C8AC(struct Sprite *sprite)
+{
+ meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0);
+}
+
+extern u8 (*const gUnknown_08375224[])();
+
+u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ return gUnknown_08375224[sprite->data1](mapObject, sprite);
+}
+
+void npc_reset();
+
+u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject);
+ sprite->data1 = 1;
+ return 1;
+}
+
+extern void FieldObjectSetRegularAnim();
+
+u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 6e835d744..afc3c680c 100644
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "asm.h"
-#include "sprite.h"
#include "asm_fieldmap.h"
#include "field_effect.h"
+#include "sprite.h"
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
@@ -311,7 +311,7 @@ void DoShadowFieldEffect(struct MapObject *mapObject)
void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
{
- struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
gUnknown_0202FF84[0] = sprite->pos1.x;
gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
gUnknown_0202FF84[2] = 151;
diff --git a/src/field_message_box.c b/src/field_message_box.c
index a7d1a2fd8..2a5f90d15 100644
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -1,9 +1,9 @@
#include "global.h"
+#include "field_message_box.h"
+#include "string_util.h"
+#include "task.h"
#include "text.h"
#include "text_window.h"
-#include "task.h"
-#include "string_util.h"
-#include "field_message_box.h"
extern struct Window gFieldMessageBoxWindow;
extern u16 gMenuTextWindowContentTileOffset;
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index fdd5ae5c5..53bbf013b 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1,56 +1,30 @@
#include "global.h"
#include "field_player_avatar.h"
#include "asm.h"
-#include "field_map_obj.h"
-#include "rom4.h"
+#include "asm_fieldmap.h"
#include "event_data.h"
+#include "field_effect.h"
+#include "field_map_obj.h"
#include "main.h"
#include "menu.h"
+#include "metatile_behavior.h"
#include "rng.h"
+#include "rom4.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
#include "task.h"
-#include "field_effect.h"
#include "wild_encounter.h"
-#include "asm_fieldmap.h"
-#include "metatile_behavior.h"
+#include "map_object_constants.h"
+#include "bike.h"
+#include "field_map_obj_helpers.h"
extern u8 gOtherText_OhABite[];
extern u8 gOtherText_PokeOnHook[];
extern u8 gOtherText_NotEvenANibble[];
extern u8 gOtherText_ItGotAway[];
-extern struct
-{
- s32 x;
- s32 y;
- u32 unk8;
- u32 unkC;
-} gUnknown_0202FF84;
-
-extern bool8 (*gUnknown_0830FB58[])(u8);
-extern u8 (*gUnknown_0830FBA0[])(void);
-extern void (*gUnknown_0830FBEC[])(u8, u16);
-extern bool8 (*gUnknown_0830FBF8[])(u8);
-extern u8 gUnknown_0830FC0C[];
-extern void (*gUnknown_0830FC14[])(struct MapObject *);
-extern bool8 (*gUnknown_0830FC34[])(u8);
-extern u8 gUnknown_0830FC44[][2];
-extern u8 gUnknown_0830FC54[][2];
-extern u8 gUnknown_0830FC64[2][5][2];
-extern bool8 (*gUnknown_0830FC78[])(u8); //Duplicate of gUnknown_0830FC34
-extern u8 (*gUnknown_0830FC88[])(struct Task *, struct MapObject *, struct MapObject *);
-extern u8 (*gUnknown_0830FC94[])(struct Task *, struct MapObject *);
-extern u8 (*gUnknown_0830FC98[])(struct Task *, struct MapObject *);
-extern u8 gUnknown_0830FCA8[];
-extern u8 gUnknown_0830FCAC[];
-extern u8 (*gUnknown_0830FCB4[])(struct Task *);
-extern s16 gUnknown_0830FCF4[];
-extern s16 gUnknown_0830FCFA[];
-extern u8 gUnknown_0830FD00[];
-extern s16 gUnknown_0830FD02[];
-extern s16 gUnknown_0830FD08[];
+extern u32 gUnknown_0202FF84[];
//Functions
static u32 sub_80587D8(void);
@@ -60,14 +34,41 @@ static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
static void PlayerAllowForcedMovementIfMovingSameDirection(void);
static u8 TryDoMetatileBehaviorForcedMovement(void);
static u8 GetForcedMovementByMetatileBehavior(void);
+u8 ForcedMovement_None(void);
+u8 ForcedMovement_Slip(void);
+u8 sub_8058AAC(void);
+u8 sub_8058AC4(void);
+u8 sub_8058ADC(void);
+u8 sub_8058AF4(void);
+u8 sub_8058B0C(void);
+u8 sub_8058B24(void);
+u8 sub_8058B3C(void);
+u8 sub_8058B54(void);
+u8 ForcedMovement_SlideSouth(void);
+u8 ForcedMovement_SlideNorth(void);
+u8 ForcedMovement_SlideWest(void);
+u8 ForcedMovement_SlideEast(void);
+u8 sub_8058C04(void);
+u8 sub_8058C10(void);
+u8 ForcedMovement_MuddySlope(void);
static void MovePlayerNotOnBike(u8 a, u16 b);
static u8 CheckMovementInputNotOnBike(u8 a);
+void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys);
+void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys);
+void sub_8058D0C(u8 direction, u16 heldKeys);
static u8 CheckForPlayerAvatarCollision(u8 a);
static u8 sub_8058EF0(s16 a, s16 b, u8 c);
static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c);
static u8 sub_8058F6C(s16 a, s16 b, u8 c);
static void check_acro_bike_metatile(int unused1, int unused2, u8 c, u8 *d);
static void DoPlayerAvatarTransition(void);
+void nullsub_49(struct MapObject *a);
+void PlayerAvatarTransition_Normal(struct MapObject *a);
+void PlayerAvatarTransition_MachBike(struct MapObject *a);
+void PlayerAvatarTransition_AcroBike(struct MapObject *a);
+void PlayerAvatarTransition_Surfing(struct MapObject *a);
+void PlayerAvatarTransition_Underwater(struct MapObject *a);
+void sub_80591F4(struct MapObject *a);
static bool8 player_is_anim_in_certain_ranges(void);
static bool8 sub_80592A4(void);
static bool8 PlayerIsAnimActive(void);
@@ -76,8 +77,175 @@ static void PlayerNotOnBikeCollide(u8 a);
static void PlayCollisionSoundIfNotFacingWarp(u8 a);
static void sub_8059D60(struct MapObject *a);
static void StartStrengthAnim(u8 a, u8 b);
+u8 sub_8059E84(struct Task *task, struct MapObject *b, struct MapObject *c);
+u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c);
+u8 sub_8059F40(struct Task *task, struct MapObject *b, struct MapObject *c);
static void sub_8059F94(void);
+u8 sub_805A000(struct Task *task, struct MapObject *mapObject);
static void sub_805A06C(void);
+u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject);
+u8 sub_805A100(struct Task *task, struct MapObject *mapObject);
+u8 sub_805A178(struct Task *task, struct MapObject *mapObject);
+u8 sub_805A1B8(struct Task *task, struct MapObject *mapObject);
+u8 Fishing1(struct Task *task);
+u8 Fishing2(struct Task *task);
+u8 Fishing3(struct Task *task);
+u8 Fishing4(struct Task *task);
+u8 Fishing5(struct Task *task);
+u8 Fishing6(struct Task *task);
+u8 Fishing7(struct Task *task);
+u8 Fishing8(struct Task *task);
+u8 Fishing9(struct Task *task);
+u8 Fishing10(struct Task *task);
+u8 Fishing11(struct Task *task);
+u8 Fishing12(struct Task *task);
+u8 Fishing13(struct Task *task);
+u8 Fishing14(struct Task *task);
+u8 Fishing15(struct Task *task);
+u8 Fishing16(struct Task *task);
+
+static bool8 (*const gUnknown_0830FB58[])(u8) =
+{
+ MetatileBehavior_IsTrickHouseSlipperyFloor,
+ MetatileBehavior_IsIce_2,
+ MetatileBehavior_IsWalkSouth,
+ MetatileBehavior_IsWalkNorth,
+ MetatileBehavior_IsWalkWest,
+ MetatileBehavior_IsWalkEast,
+ MetatileBehavior_IsSouthwardCurrent,
+ MetatileBehavior_IsNorthwardCurrent,
+ MetatileBehavior_IsWestwardCurrent,
+ MetatileBehavior_IsEastwardCurrent,
+ MetatileBehavior_IsSlideSouth,
+ MetatileBehavior_IsSlideNorth,
+ MetatileBehavior_IsSlideWest,
+ MetatileBehavior_IsSlideEast,
+ MetatileBehavior_IsWaterfall,
+ MetatileBehavior_0xBB,
+ MetatileBehavior_0xBC,
+ MetatileBehavior_IsMuddySlope,
+};
+static u8 (*const gUnknown_0830FBA0[])(void) =
+{
+ ForcedMovement_None,
+ ForcedMovement_Slip,
+ ForcedMovement_Slip,
+ sub_8058AAC,
+ sub_8058AC4,
+ sub_8058ADC,
+ sub_8058AF4,
+ sub_8058B0C,
+ sub_8058B24,
+ sub_8058B3C,
+ sub_8058B54,
+ ForcedMovement_SlideSouth,
+ ForcedMovement_SlideNorth,
+ ForcedMovement_SlideWest,
+ ForcedMovement_SlideEast,
+ sub_8058B0C,
+ sub_8058C04,
+ sub_8058C10,
+ ForcedMovement_MuddySlope,
+};
+static void (*const gUnknown_0830FBEC[])(u8, u16) =
+{
+ PlayerNotOnBikeNotMoving,
+ PlayerNotOnBikeTurningInPlace,
+ sub_8058D0C,
+};
+static bool8 (*const gUnknown_0830FBF8[])(u8) =
+{
+ MetatileBehavior_IsBumpySlope,
+ MetatileBehavior_IsIsolatedVerticalRail,
+ MetatileBehavior_IsIsolatedHorizontalRail,
+ MetatileBehavior_IsVerticalRail,
+ MetatileBehavior_IsHorizontalRail,
+};
+static const u8 gUnknown_0830FC0C[] = {9, 10, 11, 12, 13};
+static void (*const gUnknown_0830FC14[])(struct MapObject *) =
+{
+ PlayerAvatarTransition_Normal,
+ PlayerAvatarTransition_MachBike,
+ PlayerAvatarTransition_AcroBike,
+ PlayerAvatarTransition_Surfing,
+ PlayerAvatarTransition_Underwater,
+ sub_80591F4,
+ nullsub_49,
+ nullsub_49,
+};
+static bool8 (*const gUnknown_0830FC34[])(u8) =
+{
+ MetatileBehavior_IsSouthArrowWarp,
+ MetatileBehavior_IsNorthArrowWarp,
+ MetatileBehavior_IsWestArrowWarp,
+ MetatileBehavior_IsEastArrowWarp,
+};
+static const u8 sRivalAvatarGfxIds[][2] =
+{
+ {MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, MAP_OBJ_GFX_RIVAL_MAY_NORMAL},
+ {MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE},
+ {MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE},
+ {MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, MAP_OBJ_GFX_RIVAL_MAY_SURFING},
+ {MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER},
+ {MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE},
+ {MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING},
+ {MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING},
+};
+static const u8 sPlayerAvatarGfxIds[][2] =
+{
+ {MAP_OBJ_GFX_BRENDAN_NORMAL, MAP_OBJ_GFX_MAY_NORMAL},
+ {MAP_OBJ_GFX_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_MAY_MACH_BIKE},
+ {MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_MAY_ACRO_BIKE},
+ {MAP_OBJ_GFX_BRENDAN_SURFING, MAP_OBJ_GFX_MAY_SURFING},
+ {MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER},
+ {MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_MAY_FIELD_MOVE},
+ {MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING},
+ {MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING},
+};
+static const u8 gUnknown_0830FC64[2][5][2] =
+{
+ //male
+ {
+ {MAP_OBJ_GFX_BRENDAN_NORMAL, 1},
+ {MAP_OBJ_GFX_BRENDAN_MACH_BIKE, 2},
+ {MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, 4},
+ {MAP_OBJ_GFX_BRENDAN_SURFING, 8},
+ {MAP_OBJ_GFX_BRENDAN_UNDERWATER, 16},
+ },
+ //female
+ {
+ {MAP_OBJ_GFX_MAY_NORMAL, 1},
+ {MAP_OBJ_GFX_MAY_MACH_BIKE, 2},
+ {MAP_OBJ_GFX_MAY_ACRO_BIKE, 4},
+ {MAP_OBJ_GFX_MAY_SURFING, 8},
+ {MAP_OBJ_GFX_MAY_UNDERWATER, 16},
+ }
+};
+static bool8 (*const gUnknown_0830FC78[])(u8) = //Duplicate of gUnknown_0830FC34
+{
+ MetatileBehavior_IsSouthArrowWarp,
+ MetatileBehavior_IsNorthArrowWarp,
+ MetatileBehavior_IsWestArrowWarp,
+ MetatileBehavior_IsEastArrowWarp,
+};
+static u8 (*const gUnknown_0830FC88[])(struct Task *, struct MapObject *, struct MapObject *) =
+{
+ sub_8059E84,
+ sub_8059EA4,
+ sub_8059F40,
+};
+static u8 (*const gUnknown_0830FC94[])(struct Task *, struct MapObject *) =
+{
+ sub_805A000,
+};
+static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) =
+{
+ sub_805A0D8,
+ sub_805A100,
+ sub_805A178,
+ sub_805A1B8,
+};
+
void sub_80587B4(struct Sprite *sprite)
{
@@ -89,37 +257,37 @@ static u32 sub_80587D8(void)
return 0;
}
-void player_step(u8 a, u16 b, u16 c)
+void player_step(u8 direction, u16 newKeys, u16 heldKeys)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
sub_8059D60(playerMapObj);
if (gPlayerAvatar.unk6 == 0)
{
- sub_80E5B38(b, c);
- if (sub_8058854(playerMapObj, a) == 0)
+ sub_80E5B38(newKeys, heldKeys);
+ if (!sub_8058854(playerMapObj, direction))
{
npc_clear_strange_bits(playerMapObj);
DoPlayerAvatarTransition();
if (TryDoMetatileBehaviorForcedMovement() == 0)
{
- MovePlayerAvatarUsingKeypadInput(a, b, c);
+ MovePlayerAvatarUsingKeypadInput(direction, newKeys, heldKeys);
PlayerAllowForcedMovementIfMovingSameDirection();
}
}
}
}
-static bool8 sub_8058854(struct MapObject *a, u8 b)
+static bool8 sub_8058854(struct MapObject *playerMapObj, u8 direction)
{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(a)
- && !FieldObjectClearAnimIfSpecialAnimFinished(a))
+ if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerMapObj)
+ && !FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj))
{
- u8 specialAnim = FieldObjectGetSpecialAnim(a);
-
- if (specialAnim > 24 && specialAnim < 29 && b != 0 && a->placeholder18 != b)
+ u8 specialAnim = FieldObjectGetSpecialAnim(playerMapObj);
+
+ if (specialAnim > 24 && specialAnim < 29 && direction != DIR_NONE && playerMapObj->placeholder18 != direction)
{
- FieldObjectClearAnim(a);
+ FieldObjectClearAnim(playerMapObj);
return FALSE;
}
else
@@ -138,13 +306,13 @@ static void npc_clear_strange_bits(struct MapObject *a)
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH;
}
-static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c)
+static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys)
{
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
|| (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE))
- MovePlayerOnBike(a, b, c);
+ MovePlayerOnBike(direction, newKeys, heldKeys);
else
- MovePlayerNotOnBike(a, c);
+ MovePlayerNotOnBike(direction, heldKeys);
}
static void PlayerAllowForcedMovementIfMovingSameDirection(void)
@@ -161,11 +329,11 @@ static u8 TryDoMetatileBehaviorForcedMovement(void)
static u8 GetForcedMovementByMetatileBehavior(void)
{
u8 i;
-
+
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_5))
{
u8 r5 = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E;
-
+
for (i = 0; i < 18; i++)
{
if (gUnknown_0830FB58[i](r5))
@@ -180,7 +348,7 @@ u8 ForcedMovement_None(void)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
playerMapObj->mapobj_bit_9 = 0;
playerMapObj->mapobj_bit_11 = 1;
FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
@@ -189,23 +357,23 @@ u8 ForcedMovement_None(void)
return 0;
}
-static u8 DoForcedMovement(u8 a, void (*b)(u8))
+static u8 DoForcedMovement(u8 direction, void (*b)(u8))
{
struct PlayerAvatar *playerAvatar = &gPlayerAvatar;
- u8 r7 = CheckForPlayerAvatarCollision(a);
-
+ u8 collisionType = CheckForPlayerAvatarCollision(direction);
+
playerAvatar->flags |= PLAYER_AVATAR_FLAG_6;
- if (r7 != 0)
+ if (collisionType != 0)
{
ForcedMovement_None();
- if (r7 <= 4)
+ if (collisionType <= 4)
{
return 0;
}
else
{
- if (r7 == 6)
- PlayerJumpLedge(a);
+ if (collisionType == COLLISION_LEDGE_JUMP)
+ PlayerJumpLedge(direction);
playerAvatar->flags |= PLAYER_AVATAR_FLAG_6;
playerAvatar->running2 = 2;
return 1;
@@ -214,7 +382,7 @@ static u8 DoForcedMovement(u8 a, void (*b)(u8))
else
{
playerAvatar->running2 = 2;
- b(a);
+ b(direction);
return 1;
}
}
@@ -222,7 +390,7 @@ static u8 DoForcedMovement(u8 a, void (*b)(u8))
static u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
playerMapObj->mapobj_bit_10 = 1;
return DoForcedMovement(playerMapObj->placeholder18, a);
}
@@ -272,13 +440,13 @@ u8 sub_8058B54(void)
return DoForcedMovement(4, npc_use_some_d2s);
}
-static u8 ForcedMovement_Slide(u8 a, void (*b)(u8))
+static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
playerMapObj->mapobj_bit_10 = 1;
playerMapObj->mapobj_bit_9 = 1;
- return DoForcedMovement(a, b);
+ return DoForcedMovement(direction, b);
}
u8 ForcedMovement_SlideSouth(void)
@@ -316,8 +484,8 @@ u8 sub_8058C10(void)
u8 ForcedMovement_MuddySlope(void)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
- if (playerMapObj->placeholder18 != 2 || sub_80E6034() <= 3)
+
+ if (playerMapObj->placeholder18 != 2 || GetPlayerSpeed() <= 3)
{
sub_80E6010(0);
playerMapObj->mapobj_bit_9 = 1;
@@ -329,19 +497,19 @@ u8 ForcedMovement_MuddySlope(void)
}
}
-static void MovePlayerNotOnBike(u8 a, u16 b)
+static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
- gUnknown_0830FBEC[CheckMovementInputNotOnBike(a)](a, b);
+ gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
-static u8 CheckMovementInputNotOnBike(u8 a)
+static u8 CheckMovementInputNotOnBike(u8 direction)
{
- if (a == 0)
+ if (direction == DIR_NONE)
{
gPlayerAvatar.running2 = 0;
return 0;
}
- else if (a != player_get_direction_upper_nybble() && gPlayerAvatar.running2 != 2)
+ else if (direction != player_get_direction_upper_nybble() && gPlayerAvatar.running2 != 2)
{
gPlayerAvatar.running2 = 1;
return 1;
@@ -353,81 +521,81 @@ static u8 CheckMovementInputNotOnBike(u8 a)
}
}
-void PlayerNotOnBikeNotMoving(u8 a, u16 b)
+void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys)
{
PlayerFaceDirection(player_get_direction_lower_nybble());
}
-void PlayerNotOnBikeTurningInPlace(u8 a, u16 b)
+void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys)
{
- PlayerTurnInPlace(a);
+ PlayerTurnInPlace(direction);
}
-void sub_8058D0C(u8 a, u16 b)
+void sub_8058D0C(u8 direction, u16 heldKeys)
{
- u8 r1 = CheckForPlayerAvatarCollision(a);
-
+ u8 r1 = CheckForPlayerAvatarCollision(direction);
+
switch (r1)
{
case 6:
- PlayerJumpLedge(a);
+ PlayerJumpLedge(direction);
return;
default:
if (r1 > 8 || r1 < 5)
- PlayerNotOnBikeCollide(a);
+ PlayerNotOnBikeCollide(direction);
return;
case 0:
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
- sub_80593C4(a);
+ sub_80593C4(direction);
return;
}
- if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (b & 2) && FlagGet(SYS_B_DASH)
- && sub_80E5DEC(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0)
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(SYS_B_DASH)
+ && IsRunningDisallowed(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0)
{
- sub_805940C(a);
+ sub_805940C(direction);
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH;
}
else
{
- PlayerGoSpeed0(a);
+ PlayerGoSpeed0(direction);
}
}
}
-static u8 CheckForPlayerAvatarCollision(u8 a)
+static u8 CheckForPlayerAvatarCollision(u8 direction)
{
s16 x, y;
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
x = playerMapObj->coords2.x;
y = playerMapObj->coords2.y;
- MoveCoords(a, &x, &y);
- return CheckForFieldObjectCollision(playerMapObj, x, y, a, MapGridGetMetatileBehaviorAt(x, y));
+ MoveCoords(direction, &x, &y);
+ return CheckForFieldObjectCollision(playerMapObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
}
-u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e)
+u8 CheckForFieldObjectCollision(struct MapObject *a, s16 x, s16 y, u8 direction, u8 e)
{
- u8 sp0;
-
- sp0 = npc_block_way(a, b, c, d);
- if (sp0 == 3 && sub_8058EF0(b, c, d))
+ u8 collision;
+
+ collision = npc_block_way(a, x, y, direction);
+ if (collision == 3 && sub_8058EF0(x, y, direction))
return 5;
- if (ShouldJumpLedge(b, c, d))
+ if (ShouldJumpLedge(x, y, direction))
{
IncrementGameStat(0x2B);
- return 6;
+ return COLLISION_LEDGE_JUMP;
}
- if (sp0 == 4 && sub_8058F6C(b, c, d))
+ if (collision == 4 && sub_8058F6C(x, y, direction))
return 7;
-
- if (sp0 == 0)
+
+ if (collision == 0)
{
- if (CheckForRotatingGatePuzzleCollision(d, b, c))
+ if (CheckForRotatingGatePuzzleCollision(direction, x, y))
return 8;
- check_acro_bike_metatile(b, c, e, &sp0);
+ check_acro_bike_metatile(x, y, e, &collision);
}
- return sp0;
+ return collision;
}
static u8 sub_8058EF0(s16 a, s16 b, u8 c)
@@ -458,7 +626,7 @@ static u8 sub_8058F6C(s16 a, s16 b, u8 c)
if (FlagGet(SYS_USE_STRENGTH))
{
u8 mapObjectId = GetFieldObjectIdByXY(a, b);
-
+
if (mapObjectId != 16)
{
if (gMapObjects[mapObjectId].graphicsId == 0x57)
@@ -481,7 +649,7 @@ static u8 sub_8058F6C(s16 a, s16 b, u8 c)
static void check_acro_bike_metatile(int unused1, int unused2, u8 c, u8 *d)
{
u8 i;
-
+
for (i = 0; i < 5; i++)
{
if (gUnknown_0830FBF8[i](c))
@@ -502,7 +670,7 @@ static void DoPlayerAvatarTransition(void)
{
u8 i;
u32 flags = gPlayerAvatar.bike;
-
+
if (flags != 0)
{
for (i = 0; i < 8; i++, flags >>= 1)
@@ -515,7 +683,7 @@ static void DoPlayerAvatarTransition(void)
#else
if (flags & 1)
{
- register void (**funcs)(struct MapObject *) asm("r0") = gUnknown_0830FC14;
+ register void (*const *funcs)(struct MapObject *) asm("r0") = gUnknown_0830FC14;
funcs[i](&gMapObjects[gPlayerAvatar.mapObjectId]);
}
#endif
@@ -540,7 +708,7 @@ void PlayerAvatarTransition_MachBike(struct MapObject *a)
sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(1));
FieldObjectTurn(a, a->placeholder18);
SetPlayerAvatarStateMask(2);
- sub_80E5FCC(0, 0);
+ BikeClearState(0, 0);
}
void PlayerAvatarTransition_AcroBike(struct MapObject *a)
@@ -548,20 +716,20 @@ void PlayerAvatarTransition_AcroBike(struct MapObject *a)
sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(2));
FieldObjectTurn(a, a->placeholder18);
SetPlayerAvatarStateMask(4);
- sub_80E5FCC(0, 0);
+ BikeClearState(0, 0);
sub_80E6084();
}
void PlayerAvatarTransition_Surfing(struct MapObject *a)
{
u8 unk;
-
+
sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectTurn(a, a->placeholder18);
SetPlayerAvatarStateMask(8);
- gUnknown_0202FF84.x = a->coords2.x;
- gUnknown_0202FF84.y = a->coords2.y;
- gUnknown_0202FF84.unk8 = gPlayerAvatar.mapObjectId;
+ gUnknown_0202FF84[0] = a->coords2.x;
+ gUnknown_0202FF84[1] = a->coords2.y;
+ gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
unk = FieldEffectStart(8);
a->mapobj_unk_1A = unk;
sub_8127ED0(unk, 1);
@@ -601,7 +769,7 @@ void sub_8059204(void)
static bool8 player_is_anim_in_certain_ranges(void)
{
u8 unk = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C;
-
+
if (unk < 4
|| (unk >= 16 && unk < 0x15)
|| (unk >= 25 && unk < 41)
@@ -632,12 +800,12 @@ static bool8 PlayerCheckIfAnimFinishedOrInactive(void)
static void player_set_x22(u8 a)
{
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_22 = a;
+ gMapObjects[gPlayerAvatar.mapObjectId].animId = a;
}
u8 player_get_x22(void)
{
- return gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_22;
+ return gMapObjects[gPlayerAvatar.mapObjectId].animId;
}
static void sub_8059348(u8 a)
@@ -645,66 +813,66 @@ static void sub_8059348(u8 a)
FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], a);
}
-void player_npc_set_state_and_x22_etc(u8 a, u8 b)
+void PlayerSetAnimId(u8 animId, u8 b)
{
if (!PlayerIsAnimActive())
{
player_set_x22(b);
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], a);
+ FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], animId);
}
}
void PlayerGoSpeed0(u8 a)
{
- player_npc_set_state_and_x22_etc(GetGoSpeed0AnimId(a), 2);
+ PlayerSetAnimId(GetGoSpeed0AnimId(a), 2);
}
void sub_80593C4(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_8060744(a), 2);
+ PlayerSetAnimId(sub_8060744(a), 2);
}
void npc_use_some_d2s(u8 a)
{
- player_npc_set_state_and_x22_etc(d2s_08064034(a), 2);
+ PlayerSetAnimId(d2s_08064034(a), 2);
}
void sub_80593F4(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_806079C(a), 2);
+ PlayerSetAnimId(sub_806079C(a), 2);
}
void sub_805940C(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_80607F4(a), 2);
+ PlayerSetAnimId(sub_80607F4(a), 2);
}
void PlayerOnBikeCollide(u8 a)
{
PlayCollisionSoundIfNotFacingWarp(a);
- player_npc_set_state_and_x22_etc(GetStepInPlaceDelay16AnimId(a), 2);
+ PlayerSetAnimId(GetStepInPlaceDelay16AnimId(a), 2);
}
static void PlayerNotOnBikeCollide(u8 a)
{
PlayCollisionSoundIfNotFacingWarp(a);
- player_npc_set_state_and_x22_etc(GetStepInPlaceDelay32AnimId(a), 2);
+ PlayerSetAnimId(GetStepInPlaceDelay32AnimId(a), 2);
}
-void PlayerFaceDirection(u8 a)
+void PlayerFaceDirection(u8 direction)
{
- player_npc_set_state_and_x22_etc(GetFaceDirectionAnimId(a), 1);
+ PlayerSetAnimId(GetFaceDirectionAnimId(direction), 1);
}
-void PlayerTurnInPlace(u8 a)
+void PlayerTurnInPlace(u8 direction)
{
- player_npc_set_state_and_x22_etc(GetStepInPlaceDelay8AnimId(a), 1);
+ PlayerSetAnimId(GetStepInPlaceDelay8AnimId(direction), 1);
}
-void PlayerJumpLedge(u8 a)
+void PlayerJumpLedge(u8 direction)
{
PlaySE(SE_DANSA);
- player_npc_set_state_and_x22_etc(GetJumpLedgeAnimId(a), 8);
+ PlayerSetAnimId(GetJumpLedgeAnimId(direction), 8);
}
void sub_80594C0(void)
@@ -718,69 +886,70 @@ void sub_80594C0(void)
void sub_8059504(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_80609D8(a), 1);
+ PlayerSetAnimId(sub_80609D8(a), 1);
}
-void sub_805951C(u8 a)
+//normal to wheelie
+void PlayerStartWheelie(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_8060A04(a), 1);
+ PlayerSetAnimId(sub_8060A04(a), 1);
}
void sub_8059534(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_8060A30(a), 1);
+ PlayerSetAnimId(sub_8060A30(a), 1);
}
void sub_805954C(u8 a)
{
PlaySE(SE_JITE_PYOKO);
- player_npc_set_state_and_x22_etc(sub_8060A5C(a), 1);
+ PlayerSetAnimId(sub_8060A5C(a), 1);
}
void sub_8059570(u8 a)
{
PlaySE(SE_JITE_PYOKO);
- player_npc_set_state_and_x22_etc(sub_8060A88(a), 2);
+ PlayerSetAnimId(sub_8060A88(a), 2);
}
void sub_8059594(u8 a)
{
PlaySE(SE_JITE_PYOKO);
- player_npc_set_state_and_x22_etc(sub_8060AB4(a), 8);
+ PlayerSetAnimId(sub_8060AB4(a), 8);
}
-void sub_80595B8(u8 a)
+void sub_80595B8(u8 direction)
{
PlaySE(SE_JITE_PYOKO);
- player_npc_set_state_and_x22_etc(sub_8060878(a), 1);
+ PlayerSetAnimId(sub_8060878(direction), 1);
}
-void sub_80595DC(u8 a)
+void sub_80595DC(u8 direction)
{
PlaySE(SE_WALL_HIT);
- player_npc_set_state_and_x22_etc(sub_8060AE0(a), 2);
+ PlayerSetAnimId(sub_8060AE0(direction), 2);
}
void sub_8059600(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_8060B0C(a), 2);
+ PlayerSetAnimId(sub_8060B0C(a), 2);
}
void sub_8059618(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_8060B38(a), 2);
+ PlayerSetAnimId(sub_8060B38(a), 2);
}
void sub_8059630(u8 a)
{
- player_npc_set_state_and_x22_etc(sub_8060B64(a), 2);
+ PlayerSetAnimId(sub_8060B64(a), 2);
}
static void PlayCollisionSoundIfNotFacingWarp(u8 a)
{
s16 x, y;
u8 unk = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E;
-
+
if (!gUnknown_0830FC34[a - 1](unk))
{
if (a == 2)
@@ -850,7 +1019,7 @@ void sub_80597E8(void)
void sub_80597F4(void)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
npc_clear_strange_bits(playerMapObj);
FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
@@ -860,51 +1029,51 @@ void sub_80597F4(void)
}
}
-u8 sub_805983C(u8 a, u8 b)
+u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender)
{
- return gUnknown_0830FC44[a][b];
+ return sRivalAvatarGfxIds[state][gender];
}
-static u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 a, u8 b)
+static u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender)
{
- return gUnknown_0830FC54[a][b];
+ return sPlayerAvatarGfxIds[state][gender];
}
-u8 GetPlayerAvatarGraphicsIdByStateId(u8 a)
+u8 GetPlayerAvatarGraphicsIdByStateId(u8 state)
{
- return GetPlayerAvatarGraphicsIdByStateIdAndGender(a, gPlayerAvatar.gender);
+ return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender);
}
-u8 unref_sub_8059888(u8 a)
+u8 unref_GetRivalAvatarGenderByGraphcsId(u8 gfxId)
{
- switch (a)
+ switch (gfxId)
{
- case 0x69:
- case 0x6A:
- case 0x6B:
- case 0x6C:
- case 0x6D:
- case 0x70:
- case 0x8A:
- case 0xC0:
+ case MAP_OBJ_GFX_RIVAL_MAY_NORMAL:
+ case MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE:
+ case MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE:
+ case MAP_OBJ_GFX_RIVAL_MAY_SURFING:
+ case MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE:
+ case MAP_OBJ_GFX_MAY_UNDERWATER:
+ case MAP_OBJ_GFX_MAY_FISHING:
+ case MAP_OBJ_GFX_MAY_WATERING:
return FEMALE;
default:
return MALE;
}
}
-u8 GetPlayerAvatarGenderByGraphicsId(u8 a)
+u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId)
{
- switch (a)
+ switch (gfxId)
{
- case 0x59:
- case 0x5A:
- case 0x5B:
- case 0x5C:
- case 0x5D:
- case 0x70:
- case 0x8A:
- case 0xC0:
+ case MAP_OBJ_GFX_MAY_NORMAL:
+ case MAP_OBJ_GFX_MAY_MACH_BIKE:
+ case MAP_OBJ_GFX_MAY_ACRO_BIKE:
+ case MAP_OBJ_GFX_MAY_SURFING:
+ case MAP_OBJ_GFX_MAY_FIELD_MOVE:
+ case MAP_OBJ_GFX_MAY_UNDERWATER:
+ case MAP_OBJ_GFX_MAY_FISHING:
+ case MAP_OBJ_GFX_MAY_WATERING:
return FEMALE;
default:
return MALE;
@@ -914,7 +1083,7 @@ u8 GetPlayerAvatarGenderByGraphicsId(u8 a)
bool8 PartyHasMonWithSurf(void)
{
u8 i;
-
+
if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
{
for (i = 0; i < 6; i++)
@@ -930,7 +1099,7 @@ bool8 PartyHasMonWithSurf(void)
bool8 IsPlayerSurfingNorth(void)
{
- if (player_get_direction_upper_nybble() == 2 && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ if (player_get_direction_upper_nybble() == DIR_NORTH && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
return TRUE;
else
return FALSE;
@@ -941,7 +1110,7 @@ bool8 IsPlayerFacingSurfableFishableWater(void)
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
s16 x = playerMapObj->coords2.x;
s16 y = playerMapObj->coords2.y;
-
+
MoveCoords(playerMapObj->mapobj_unk_18, &x, &y);
if (npc_block_way(playerMapObj, x, y, playerMapObj->mapobj_unk_18) == 3 && PlayerGetZCoord() == 3
&& MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y)))
@@ -953,7 +1122,7 @@ bool8 IsPlayerFacingSurfableFishableWater(void)
void ClearPlayerAvatarInfo(void)
{
//TODO: 0x24 should be the size of gPlayerAvatar
- memset(&gPlayerAvatar, 0, 0x24);
+ memset(&gPlayerAvatar, 0, sizeof(struct PlayerAvatar));
}
void SetPlayerAvatarStateMask(u8 a)
@@ -965,7 +1134,7 @@ void SetPlayerAvatarStateMask(u8 a)
static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 a, u8 gender)
{
u8 i;
-
+
for (i = 0; i < 5; i++)
{
if (gUnknown_0830FC64[gender][i][0] == a)
@@ -978,7 +1147,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
{
u8 i;
u8 r5 = gPlayerAvatar.flags;
-
+
for (i = 0; i < 5; i++)
{
if (gUnknown_0830FC64[gPlayerAvatar.gender][i][1] & r5)
@@ -990,40 +1159,40 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
void SetPlayerAvatarExtraStateTransition(u8 a, u8 b)
{
u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(a, gPlayerAvatar.gender);
-
+
gPlayerAvatar.bike |= unk | b;
DoPlayerAvatarTransition();
}
-void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d)
+void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
{
- struct UnknownStruct_FPA s;
+ struct MapObjectTemplate playerMapObjTemplate;
u8 mapObjectId;
struct MapObject *mapObject;
-
- s.unk0 = 0xFF;
- s.unk1 = GetPlayerAvatarGraphicsIdByStateIdAndGender(0, d);
- s.unk4 = a - 7;
- s.unk6 = b - 7;
- s.unk8 = 0;
- s.unk9 = 11;
- s.unkA_0 = 0;
- s.unkA_4 = 0;
- s.unkC = 0;
- s.unkE = 0;
- s.unk10 = 0;
- s.unk14 = 0;
- mapObjectId = SpawnSpecialFieldObject(&s);
+
+ playerMapObjTemplate.localId = 0xFF;
+ playerMapObjTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(0, gender);
+ playerMapObjTemplate.x = x - 7;
+ playerMapObjTemplate.y = y - 7;
+ playerMapObjTemplate.elevation = 0;
+ playerMapObjTemplate.movementType = 11;
+ playerMapObjTemplate.unkA_0 = 0;
+ playerMapObjTemplate.unkA_4 = 0;
+ playerMapObjTemplate.unkC = 0;
+ playerMapObjTemplate.unkE = 0;
+ playerMapObjTemplate.script = NULL;
+ playerMapObjTemplate.flagId = 0;
+ mapObjectId = SpawnSpecialFieldObject(&playerMapObjTemplate);
mapObject = &gMapObjects[mapObjectId];
mapObject->mapobj_bit_16 = 1;
mapObject->mapobj_unk_1B = sub_8126B54();
- FieldObjectTurn(mapObject, c);
+ FieldObjectTurn(mapObject, direction);
ClearPlayerAvatarInfo();
gPlayerAvatar.running2 = 0;
gPlayerAvatar.running1 = 0;
gPlayerAvatar.mapObjectId = mapObjectId;
gPlayerAvatar.spriteId = mapObject->spriteId;
- gPlayerAvatar.gender = d;
+ gPlayerAvatar.gender = gender;
SetPlayerAvatarStateMask(0x21);
}
@@ -1065,7 +1234,7 @@ static void sub_8059D60(struct MapObject *a)
s16 y;
u8 r6;
u8 r8 = a->mapobj_unk_1E;
-
+
for (x = 0, r6 = 1; x < 4; x++, r6++)
{
if (gUnknown_0830FC78[x](r8) && r6 == a->placeholder18)
@@ -1087,7 +1256,7 @@ static void sub_8059E2C(u8 taskId);
static void StartStrengthAnim(u8 a, u8 b)
{
u8 taskId = CreateTask(sub_8059E2C, 0xFF);
-
+
gTasks[taskId].data[1] = a;
gTasks[taskId].data[2] = b;
sub_8059E2C(taskId);
@@ -1118,10 +1287,10 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c)
FieldObjectClearAnimIfSpecialAnimFinished(c);
FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2]));
FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2]));
- gUnknown_0202FF84.x = c->coords2.x;
- gUnknown_0202FF84.y = c->coords2.y;
- gUnknown_0202FF84.unk8 = c->elevation;
- gUnknown_0202FF84.unkC = gSprites[c->spriteId].oam.priority;
+ gUnknown_0202FF84[0] = c->coords2.x;
+ gUnknown_0202FF84[1] = c->coords2.y;
+ gUnknown_0202FF84[2] = c->elevation;
+ gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority;
FieldEffectStart(10);
PlaySE(SE_W070);
task->data[0]++;
@@ -1150,7 +1319,7 @@ static void sub_8059FB4(u8 taskId);
static void sub_8059F94(void)
{
u8 taskId = CreateTask(sub_8059FB4, 0xFF);
-
+
sub_8059FB4(taskId);
}
@@ -1185,7 +1354,7 @@ static void sub_805A08C(u8 taskId);
static void sub_805A06C(void)
{
u8 taskId = CreateTask(sub_805A08C, 0xFF);
-
+
sub_805A08C(taskId);
}
@@ -1207,13 +1376,12 @@ u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject)
u8 sub_805A100(struct Task *task, struct MapObject *mapObject)
{
- u8 directions[4];
-
- memcpy(directions, gUnknown_0830FCA8, sizeof(directions));
+ u8 directions[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
{
u8 direction;
-
+
FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(direction = directions[mapObject->placeholder18 - 1]));
if (direction == (u8)task->data[1])
task->data[2]++;
@@ -1226,9 +1394,8 @@ u8 sub_805A100(struct Task *task, struct MapObject *mapObject)
u8 sub_805A178(struct Task *task, struct MapObject *mapObject)
{
- u8 arr[5];
-
- memcpy(arr, gUnknown_0830FCAC, sizeof(arr));
+ const u8 arr[] = {16, 16, 17, 18, 19};
+
if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
{
FieldObjectSetSpecialAnim(mapObject, arr[task->data[2]]);
@@ -1257,7 +1424,7 @@ static void sub_805A2D0(u8 taskId);
void sub_805A20C(u8 a)
{
u8 taskId;
-
+
ScriptContext2_Enable();
sav1_reset_battle_music_maybe();
sub_8053F84();
@@ -1272,7 +1439,7 @@ void sub_805A20C(u8 a)
static void taskFF_0805D1D4(u8 taskId)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerMapObj))
{
if (!FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj))
@@ -1286,7 +1453,7 @@ static void taskFF_0805D1D4(u8 taskId)
static void sub_805A2D0(u8 taskId)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
if (FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj))
{
sub_805B980(playerMapObj, GetPlayerAvatarGraphicsIdByStateId(0));
@@ -1300,13 +1467,33 @@ static void sub_805A2D0(u8 taskId)
/* Fishing */
+static u8 (*const gUnknown_0830FCB4[])(struct Task *) =
+{
+ Fishing1,
+ Fishing2,
+ Fishing3,
+ Fishing4,
+ Fishing5,
+ Fishing6,
+ Fishing7,
+ Fishing8,
+ Fishing9,
+ Fishing10,
+ Fishing11,
+ Fishing12,
+ Fishing13,
+ Fishing14,
+ Fishing15,
+ Fishing16,
+};
+
static void Task_Fishing(u8 taskId);
static void sub_805A954(void);
void StartFishing(u8 a)
{
u8 taskId = CreateTask(Task_Fishing, 0xFF);
-
+
gTasks[taskId].data[15] = a;
Task_Fishing(taskId);
}
@@ -1327,12 +1514,10 @@ u8 Fishing1(struct Task *task)
u8 Fishing2(struct Task *task)
{
- s16 arr1[3];
- s16 arr2[3];
struct MapObject *playerMapObj;
-
- memcpy(arr1, gUnknown_0830FCF4, sizeof(arr1));
- memcpy(arr2, gUnknown_0830FCFA, sizeof(arr2));
+ const s16 arr1[] = {1, 1, 1};
+ const s16 arr2[] = {1, 3, 6};
+
task->data[12] = 0;
task->data[13] = arr1[task->data[15]] + (Random() % arr2[task->data[15]]);
task->data[14] = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId;
@@ -1356,7 +1541,7 @@ u8 Fishing3(struct Task *task)
u8 Fishing4(struct Task *task)
{
u32 randVal;
-
+
MenuDisplayMessageBox();
task->data[0]++;
task->data[1] = 0;
@@ -1373,9 +1558,8 @@ u8 Fishing4(struct Task *task)
u8 Fishing5(struct Task *task)
{
- u8 dot[2];
-
- memcpy(dot, gUnknown_0830FD00, sizeof(dot));
+ const u8 dot[] = _("·");
+
sub_805A954();
task->data[1]++;
if (gMain.newKeys & A_BUTTON)
@@ -1429,9 +1613,8 @@ u8 Fishing7(struct Task *task)
u8 Fishing8(struct Task *task)
{
- s16 arr[3];
-
- memcpy(arr, gUnknown_0830FD02, sizeof(arr));
+ const s16 arr[3] = {36, 33, 30};
+
sub_805A954();
task->data[1]++;
if (task->data[1] >= arr[task->data[15]])
@@ -1443,9 +1626,13 @@ u8 Fishing8(struct Task *task)
u8 Fishing9(struct Task *task)
{
- s16 arr[3][2];
-
- memcpy(arr, gUnknown_0830FD08, sizeof(arr));
+ const s16 arr[][2] =
+ {
+ {0, 0},
+ {40, 10},
+ {70, 30}
+ };
+
sub_805A954();
task->data[0]++;
if (task->data[12] < task->data[13])
@@ -1455,7 +1642,7 @@ u8 Fishing9(struct Task *task)
else if (task->data[12] < 2)
{
s16 randVal = Random() % 100;
-
+
if (arr[task->data[15]][task->data[12]] > randVal)
task->data[0] = 3;
}
@@ -1482,7 +1669,7 @@ u8 Fishing11(struct Task *task)
if (MenuUpdateWindowText())
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
sub_805B980(playerMapObj, task->data[14]);
FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
@@ -1540,7 +1727,7 @@ u8 Fishing15(struct Task *task)
if (gSprites[gPlayerAvatar.spriteId].animEnded)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
+
sub_805B980(playerMapObj, task->data[14]);
FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
@@ -1571,7 +1758,7 @@ static void sub_805A954(void)
struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId];
u8 animCmdIndex;
u8 animType;
-
+
AnimateSprite(playerSprite);
playerSprite->pos2.x = 0;
playerSprite->pos2.y = 0;
diff --git a/src/field_poison.c b/src/field_poison.c
index 9b21ac5f3..8e49080b0 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -5,6 +5,7 @@
#include "script.h"
#include "string_util.h"
#include "task.h"
+#include "text.h"
extern struct Pokemon gPlayerParty[6];
extern u16 gScriptResult;
@@ -14,7 +15,7 @@ bool32 CheckMonIsValid(struct Pokemon *pkmn)
{
// UB: Too few arguments for function 'GetMonData'
u16 species2 = GetMonData(pkmn, MON_DATA_SPECIES2);
-
+
if (species2 == 0 || species2 == 0x19C)
return FALSE;
else
@@ -25,7 +26,7 @@ bool32 AllMonsFainted(void)
{
struct Pokemon *pkmn = &gPlayerParty[0];
int i;
-
+
for (i = 0; i < 6; i++, pkmn++)
{
// UB: Too few arguments for function 'GetMonData'
@@ -39,7 +40,7 @@ void MonFaintFromPoisonOnField(u8 partyMember)
{
struct Pokemon *pkmn = &gPlayerParty[partyMember];
u32 val = 0;
-
+
AdjustFriendship(pkmn, 7);
SetMonData(pkmn, MON_DATA_STATUS, (u8*)&val);
GetMonData(pkmn, MON_DATA_NICKNAME, gStringVar1);
@@ -49,7 +50,7 @@ void MonFaintFromPoisonOnField(u8 partyMember)
bool32 CheckMonFaintedFromPoison(u8 partyMember)
{
struct Pokemon *pkmn = &gPlayerParty[partyMember];
-
+
// UB: Too few arguments for function 'GetMonData'
if (CheckMonIsValid(pkmn) && GetMonData(pkmn, MON_DATA_HP) == 0
&& pokemon_ailments_get_primary(GetMonData(pkmn, MON_DATA_STATUS)) == 1)
@@ -68,7 +69,7 @@ enum
void Task_WhiteOut(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
-
+
switch (taskData[TD_STATE])
{
case 0: //Check if Pokemon have fainted due to poison
@@ -106,36 +107,36 @@ void ExecuteWhiteOut(void)
ScriptContext1_Stop();
}
-u8 overworld_poison(void)
+s32 overworld_poison(void)
{
struct Pokemon *pkmn = &gPlayerParty[0];
u32 numPoisoned = 0;
u32 numFainting = 0;
int i;
-
- for(i = 0; i < 6; i++)
+
+ for (i = 0; i < 6; i++)
{
u32 hp;
-
+
// UB: Too few arguments for function 'GetMonData'
if (GetMonData(pkmn, MON_DATA_SANITY_BIT2) != 0
&& pokemon_ailments_get_primary(GetMonData(pkmn, MON_DATA_STATUS)) == 1)
{
hp = GetMonData(pkmn, MON_DATA_HP);
- if(hp != 0)
+ if (hp != 0)
hp--;
- if(hp == 0)
+ if (hp == 0)
numFainting++; //Pokemon will now faint due to poison
SetMonData(pkmn, MON_DATA_HP, (u8 *)&hp);
numPoisoned++;
}
pkmn++;
}
- if(numFainting != 0 || numPoisoned != 0)
+ if (numFainting != 0 || numPoisoned != 0)
DoFieldPoisonEffect();
- if(numFainting != 0)
+ if (numFainting != 0)
return 2;
- if(numPoisoned != 0)
+ if (numPoisoned != 0)
return 1;
return 0;
}
diff --git a/src/field_region_map.c b/src/field_region_map.c
new file mode 100644
index 000000000..db12eb6a5
--- /dev/null
+++ b/src/field_region_map.c
@@ -0,0 +1,134 @@
+#include "global.h"
+#include "asm.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "sprite.h"
+#include "text.h"
+
+extern void sub_80FA8EC(u32, u8);
+extern void sub_80FAB10(void);
+extern u8 sub_80FAB60(void);
+extern void sub_80FBCF0(u32, u8);
+extern void sub_80FBB3C(u16, u16);
+
+struct RegionMapStruct
+{
+ u8 str[0x16];
+ u8 unk16;
+ u8 filler[0x869];
+};
+
+struct UnkStruct
+{
+ MainCallback callback;
+ u8 filler[4];
+ struct RegionMapStruct unk8;
+ u16 unk888;
+};
+
+extern struct UnkStruct unk_2000000;
+
+extern u8 gOtherText_Hoenn[];
+
+void CB2_FieldInitRegionMap(void);
+void CB2_FieldRegionMap(void);
+void VBlankCB_FieldRegionMap(void);
+void sub_813EFDC(void);
+void sub_813F0C8(void);
+
+void FieldInitRegionMap(MainCallback callback)
+{
+ SetVBlankCallback(NULL);
+ unk_2000000.unk888 = 0;
+ unk_2000000.callback = callback;
+ SetMainCallback2(CB2_FieldInitRegionMap);
+}
+
+void CB2_FieldInitRegionMap(void)
+{
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ sub_80FA8EC((u32)&unk_2000000.unk8, 0);
+ sub_80FBCF0(0, 0);
+ sub_80FBB3C(1, 1);
+ SetUpWindowConfig(&gWindowConfig_81E709C);
+ InitMenuWindow(&gWindowConfig_81E709C);
+ MenuZeroFillScreen();
+ REG_BG0CNT = 7936;
+ MenuDrawTextWindow(21, 0, 29, 3);
+ sub_8072BD8(gOtherText_Hoenn, 0x16, 1, 0x38);
+ MenuDrawTextWindow(16, 16, 29, 19);
+ sub_813F0C8();
+ SetMainCallback2(CB2_FieldRegionMap);
+ SetVBlankCallback(VBlankCB_FieldRegionMap);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+}
+
+void VBlankCB_FieldRegionMap(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_FieldRegionMap(void)
+{
+ sub_813EFDC();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_813EFDC(void)
+{
+ switch (unk_2000000.unk888)
+ {
+ case 0:
+ REG_DISPCNT = 5441;
+ unk_2000000.unk888++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ unk_2000000.unk888++;
+ break;
+ case 2:
+ switch (sub_80FAB60())
+ {
+ case 3:
+ sub_813F0C8();
+ break;
+ case 4:
+ case 5:
+ unk_2000000.unk888++;
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ unk_2000000.unk888++;
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ sub_80FAB10();
+ SetMainCallback2(unk_2000000.callback);
+ }
+ break;
+ }
+}
+
+void sub_813F0C8(void)
+{
+ MenuFillWindowRectWithBlankTile(17, 17, 28, 18);
+ if (unk_2000000.unk8.unk16)
+ MenuPrint(unk_2000000.unk8.str, 17, 17);
+}
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 80a1727d8..fe7daea0a 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -1,15 +1,26 @@
#include "global.h"
#include "field_special_scene.h"
#include "asm.h"
+#include "event_data.h"
+#include "field_camera.h"
#include "palette.h"
-#include "task.h"
+#include "rom4.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
-#include "field_camera.h"
-#include "rom4.h"
-#include "event_data.h"
#include "sprite.h"
+#include "task.h"
+
+#define SECONDS(value) ((signed) (60.0 * value + 0.5))
+
+// porthole states
+enum
+{
+ INIT_PORTHOLE,
+ IDLE_CHECK,
+ EXECUTE_MOVEMENT,
+ EXIT_PORTHOLE,
+};
extern s8 gTruckCamera_HorizontalTable[];
@@ -44,20 +55,18 @@ void Task_Truck1(u8 taskId)
u8 mapNum, mapGroup;
register s16 zero asm("r4");
- box1 = GetTruckBoxMovement(data[0] + 30) * 4; // box 1 happens 30 frames earlier than the other 2.
+ box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3, box1 + 3);
- box2 = GetTruckBoxMovement(data[0]) * 2;
+ box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 0, box2 - 3);
- box3 = GetTruckBoxMovement(data[0]) * 4;
+ box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
mapNum = gSaveBlock1.location.mapNum;
mapGroup = gSaveBlock1.location.mapGroup;
zero = 0;
sub_805BD90(3, mapNum, mapGroup, -3, box3);
- data[0]++;
-
- if (data[0] == 0x7530) // timer?
- data[0] = zero;
+ if (++data[0] == SECONDS(500)) // this will never run
+ data[0] = zero; // reset the timer if it gets stuck.
cameraYpan = GetTruckCameraBobbingY(data[0]);
SetCameraPanning(0, cameraYpan);
@@ -142,7 +151,7 @@ void Task_HandleTruckSequence(u8 taskId)
*/
case 0:
data[1]++;
- if (data[1] == 90)
+ if (data[1] == SECONDS(1.5))
{
SetCameraPanningCallback(0);
data[1] = 0; // reset the timer.
@@ -153,7 +162,7 @@ void Task_HandleTruckSequence(u8 taskId)
break;
case 1:
data[1]++;
- if (data[1] == 150)
+ if (data[1] == SECONDS(2.5))
{
pal_fill_black();
data[1] = 0;
@@ -162,7 +171,7 @@ void Task_HandleTruckSequence(u8 taskId)
break;
case 2:
data[1]++;
- if(!gPaletteFade.active && data[1] > 300)
+ if (!gPaletteFade.active && data[1] > SECONDS(5))
{
data[1] = 0;
DestroyTask(data[2]);
@@ -241,22 +250,22 @@ bool8 sub_80C7754(void)
}
}
-void sub_80C77A0(u8 taskId)
+void Task_HandlePorthole(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *var = GetVarPointer(0x40B4);
+ u16 *var = GetVarPointer(VAR_PORTHOLE);
struct WarpData *location = &gSaveBlock1.location;
switch (data[0])
{
- case 0:
+ case INIT_PORTHOLE: // finish fading before making porthole finish.
if (!gPaletteFade.active)
{
data[1] = 0;
- data[0] = 2;
+ data[0] = EXECUTE_MOVEMENT; // execute movement before checking if should be exited. strange?
}
break;
- case 1:
+ case IDLE_CHECK: // idle and move.
if (gMain.newKeys & A_BUTTON)
data[1] = 1;
if (!sub_80A212C(0xFF, location->mapNum, location->mapGroup))
@@ -271,25 +280,25 @@ void sub_80C77A0(u8 taskId)
return;
}
data[0] = 2;
- case 2:
+ case EXECUTE_MOVEMENT: // execute movement.
if (data[1])
{
- data[0] = 3;
+ data[0] = EXIT_PORTHOLE; // exit porthole.
return;
}
-
- if (*var == 2)
+ // run this once.
+ if (*var == 2) // which direction?
{
exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F);
- data[0] = 1;
+ data[0] = IDLE_CHECK; // run case 1.
}
else
{
exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961);
- data[0] = 1;
+ data[0] = IDLE_CHECK; // run case 1.
}
break;
- case 3:
+ case EXIT_PORTHOLE: // exit porthole.
FlagReset(0x4001);
FlagReset(0x4000);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
@@ -320,7 +329,7 @@ void sub_80C791C(void)
sub_80C78A0();
gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE;
pal_fill_black();
- CreateTask(sub_80C77A0, 80);
+ CreateTask(Task_HandlePorthole, 80);
ScriptContext2_Enable();
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 4dcfbe30b..b34a51bdc 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "palette.h"
+#include "fieldmap.h"
struct BackupMapData
{
@@ -16,22 +17,18 @@ extern void sub_8056670();
extern void UpdateTVScreensOnMap();
extern void sub_80538F0(u8 mapGroup, u8 mapNum);
-struct Camera {
- bool8 field_0:1;
- s32 x;
- s32 y;
-};
-
-struct ConnectionFlags {
- u8 south:1;
- u8 north:1;
- u8 west:1;
- u8 east:1;
+struct ConnectionFlags
+{
+ u8 south:1;
+ u8 north:1;
+ u8 west:1;
+ u8 east:1;
};
-struct Coords32 {
- s32 x;
- s32 y;
+struct Coords32
+{
+ s32 x;
+ s32 y;
};
extern const struct Coords32 gUnknown_0821664C[];
@@ -56,754 +53,927 @@ struct MapConnection *sub_8056A64(u8 direction, int x, int y);
bool8 sub_8056ABC(u8 direction, int x, int y, struct MapConnection *connection);
bool8 sub_8056B20(int x, int src_width, int dest_width, int offset);
-struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection) {
- return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum);
-}
-
-void not_trainer_hill_battle_pyramid(void) {
- mapheader_copy_mapdata_with_padding(&gMapHeader);
- sub_80BB970(gMapHeader.events);
- mapheader_run_script_with_tag_x1();
-}
-
-void sub_8055FC0(void) {
- mapheader_copy_mapdata_with_padding(&gMapHeader);
- sub_80BBCCC(0);
- sub_80BB970(gMapHeader.events);
- sub_8056670();
- mapheader_run_script_with_tag_x1();
- UpdateTVScreensOnMap(gUnknown_03004870.width, gUnknown_03004870.height);
-}
-
-void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader) {
- struct MapData *mapData;
- int width;
- int height;
- mapData = mapHeader->mapData;
- CpuFastFill16(0x03ff, gUnknown_02029828, sizeof(gUnknown_02029828));
- gUnknown_03004870.map = gUnknown_02029828;
- width = mapData->width + 15;
- gUnknown_03004870.width = width;
- height = mapData->height + 14;
- gUnknown_03004870.height = height;
- if (width * height <= 0x2800) {
- map_copy_with_padding(mapData->map, mapData->width, mapData->height);
- sub_80560AC(mapHeader);
- }
-}
-
-void map_copy_with_padding(u16 *map, u16 width, u16 height) {
- u16 *dest;
- int y;
- dest = gUnknown_03004870.map;
- dest += gUnknown_03004870.width * 7 + 7;
- for (y = 0; y < height; y++) {
- CpuCopy16(map, dest, width * 2);
- dest += width + 0xf;
- map += width;
- }
-}
-
-void sub_80560AC(struct MapHeader *mapHeader) {
- int i;
- struct MapConnection *connection;
- struct MapHeader *cMap;
- u32 offset;
- int count;
- count = mapHeader->connections->count;
- connection = mapHeader->connections->connections;
- gUnknown_0202E850 = sDummyConnectionFlags;
- for (i = 0; i < count; i++, connection++) {
- cMap = mapconnection_get_mapheader(connection);
- offset = connection->offset;
- switch (connection->direction) {
- case CONNECTION_SOUTH:
- fillSouthConnection(mapHeader, cMap, offset);
- gUnknown_0202E850.south = 1;
- break;
- case CONNECTION_NORTH:
- fillNorthConnection(mapHeader, cMap, offset);
- gUnknown_0202E850.north = 1;
- break;
- case CONNECTION_WEST:
- fillWestConnection(mapHeader, cMap, offset);
- gUnknown_0202E850.west = 1;
- break;
- case CONNECTION_EAST:
- fillEastConnection(mapHeader, cMap, offset);
- gUnknown_0202E850.east = 1;
- break;
- }
- }
-}
-
-void sub_8056134(int x, int y, struct MapHeader *mapHeader, int x2, int y2, int width, int height) {
- int i;
- u16 *src;
- u16 *dest;
- int mapWidth;
-
- mapWidth = mapHeader->mapData->width;
- src = &mapHeader->mapData->map[mapWidth * y2 + x2];
- dest = &gUnknown_03004870.map[gUnknown_03004870.width * y + x];
-
- for (i = 0; i < height; i++) {
- CpuCopy16(src, dest, width * 2);
- dest += gUnknown_03004870.width;
- src += mapWidth;
- }
-}
-
-void fillSouthConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset) {
- int x, y;
- int x2;
- int width;
- int cWidth;
-
- if (connectedMapHeader) {
- cWidth = connectedMapHeader->mapData->width;
- x = offset + 7;
- y = mapHeader->mapData->height + 7;
- if (x < 0) {
- x2 = -x;
- x += cWidth;
- if (x < gUnknown_03004870.width) {
- width = x;
- } else {
- width = gUnknown_03004870.width;
- }
- x = 0;
- } else {
- x2 = 0;
- if (x + cWidth < gUnknown_03004870.width) {
- width = cWidth;
- } else {
- width = gUnknown_03004870.width - x;
- }
- }
- sub_8056134(
- x, y,
- connectedMapHeader,
- x2, /*y2*/ 0,
- width, /*height*/ 7);
- }
-}
-
-void fillNorthConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset) {
- int x;
- int x2, y2;
- int width;
- int cWidth, cHeight;
-
- if (connectedMapHeader) {
- cWidth = connectedMapHeader->mapData->width;
- cHeight = connectedMapHeader->mapData->height;
- x = offset + 7;
- y2 = cHeight - 7;
- if (x < 0) {
- x2 = -x;
- x += cWidth;
- if (x < gUnknown_03004870.width) {
- width = x;
- } else {
- width = gUnknown_03004870.width;
- }
- x = 0;
- } else {
- x2 = 0;
- if (x + cWidth < gUnknown_03004870.width) {
- width = cWidth;
- } else {
- width = gUnknown_03004870.width - x;
- }
- }
-
- sub_8056134(
- x, /*y*/ 0,
- connectedMapHeader,
- x2, y2,
- width, /*height*/ 7);
-
- }
-}
-
-
-void fillWestConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset) {
- int y;
- int x2, y2;
- int height;
- int cWidth, cHeight;
- if (connectedMapHeader) {
- cWidth = connectedMapHeader->mapData->width;
- cHeight = connectedMapHeader->mapData->height;
- y = offset + 7;
- x2 = cWidth - 7;
- if (y < 0) {
- y2 = -y;
- if (y + cHeight < gUnknown_03004870.height) {
- height = y + cHeight;
- } else {
- height = gUnknown_03004870.height;
- }
- y = 0;
- } else {
- y2 = 0;
- if (y + cHeight < gUnknown_03004870.height) {
- height = cHeight;
- } else {
- height = gUnknown_03004870.height - y;
- }
- }
-
- sub_8056134(
- /*x*/ 0, y,
- connectedMapHeader,
- x2, y2,
- /*width*/ 7, height);
- }
-}
-
-void fillEastConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset) {
- int x, y;
- int y2;
- int height;
- int cHeight;
- if (connectedMapHeader) {
- cHeight = connectedMapHeader->mapData->height;
- x = mapHeader->mapData->width + 7;
- y = offset + 7;
- if (y < 0) {
- y2 = -y;
- if (y + cHeight < gUnknown_03004870.height) {
- height = y + cHeight;
- } else {
- height = gUnknown_03004870.height;
- }
- y = 0;
- } else {
- y2 = 0;
- if (y + cHeight < gUnknown_03004870.height) {
- height = cHeight;
- } else {
- height = gUnknown_03004870.height - y;
- }
- }
-
- sub_8056134(
- x, y,
- connectedMapHeader,
- /*x2*/ 0, y2,
- /*width*/ 8, height);
- }
-}
-
-union Block {
- struct {
- u16 block:10;
- u16 collision:2;
- u16 elevation:4;
- } block;
- u16 value;
+struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection)
+{
+ return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum);
+}
+
+void not_trainer_hill_battle_pyramid(void)
+{
+ mapheader_copy_mapdata_with_padding(&gMapHeader);
+ sub_80BB970(gMapHeader.events);
+ mapheader_run_script_with_tag_x1();
+}
+
+void sub_8055FC0(void)
+{
+ mapheader_copy_mapdata_with_padding(&gMapHeader);
+ sub_80BBCCC(0);
+ sub_80BB970(gMapHeader.events);
+ sub_8056670();
+ mapheader_run_script_with_tag_x1();
+ UpdateTVScreensOnMap(gUnknown_03004870.width, gUnknown_03004870.height);
+}
+
+void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader)
+{
+ struct MapData *mapData;
+ int width;
+ int height;
+ mapData = mapHeader->mapData;
+ CpuFastFill16(0x03ff, gUnknown_02029828, sizeof(gUnknown_02029828));
+ gUnknown_03004870.map = gUnknown_02029828;
+ width = mapData->width + 15;
+ gUnknown_03004870.width = width;
+ height = mapData->height + 14;
+ gUnknown_03004870.height = height;
+ if (width * height <= 0x2800)
+ {
+ map_copy_with_padding(mapData->map, mapData->width, mapData->height);
+ sub_80560AC(mapHeader);
+ }
+}
+
+void map_copy_with_padding(u16 *map, u16 width, u16 height)
+{
+ u16 *dest;
+ int y;
+ dest = gUnknown_03004870.map;
+ dest += gUnknown_03004870.width * 7 + 7;
+ for (y = 0; y < height; y++)
+ {
+ CpuCopy16(map, dest, width * 2);
+ dest += width + 0xf;
+ map += width;
+ }
+}
+
+void sub_80560AC(struct MapHeader *mapHeader)
+{
+ int i;
+ struct MapConnection *connection;
+ struct MapHeader *cMap;
+ u32 offset;
+ int count;
+ count = mapHeader->connections->count;
+ connection = mapHeader->connections->connections;
+ gUnknown_0202E850 = sDummyConnectionFlags;
+ for (i = 0; i < count; i++, connection++)
+ {
+ cMap = mapconnection_get_mapheader(connection);
+ offset = connection->offset;
+ switch (connection->direction)
+ {
+ case CONNECTION_SOUTH:
+ fillSouthConnection(mapHeader, cMap, offset);
+ gUnknown_0202E850.south = 1;
+ break;
+ case CONNECTION_NORTH:
+ fillNorthConnection(mapHeader, cMap, offset);
+ gUnknown_0202E850.north = 1;
+ break;
+ case CONNECTION_WEST:
+ fillWestConnection(mapHeader, cMap, offset);
+ gUnknown_0202E850.west = 1;
+ break;
+ case CONNECTION_EAST:
+ fillEastConnection(mapHeader, cMap, offset);
+ gUnknown_0202E850.east = 1;
+ break;
+ }
+ }
+}
+
+void sub_8056134(int x, int y, struct MapHeader *mapHeader, int x2, int y2, int width, int height)
+{
+ int i;
+ u16 *src;
+ u16 *dest;
+ int mapWidth;
+
+ mapWidth = mapHeader->mapData->width;
+ src = &mapHeader->mapData->map[mapWidth * y2 + x2];
+ dest = &gUnknown_03004870.map[gUnknown_03004870.width * y + x];
+
+ for (i = 0; i < height; i++)
+ {
+ CpuCopy16(src, dest, width * 2);
+ dest += gUnknown_03004870.width;
+ src += mapWidth;
+ }
+}
+
+void fillSouthConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset)
+{
+ int x, y;
+ int x2;
+ int width;
+ int cWidth;
+
+ if (connectedMapHeader)
+ {
+ cWidth = connectedMapHeader->mapData->width;
+ x = offset + 7;
+ y = mapHeader->mapData->height + 7;
+ if (x < 0)
+ {
+ x2 = -x;
+ x += cWidth;
+ if (x < gUnknown_03004870.width)
+ {
+ width = x;
+ }
+ else
+ {
+ width = gUnknown_03004870.width;
+ }
+ x = 0;
+ }
+ else
+ {
+ x2 = 0;
+ if (x + cWidth < gUnknown_03004870.width)
+ {
+ width = cWidth;
+ }
+ else
+ {
+ width = gUnknown_03004870.width - x;
+ }
+ }
+ sub_8056134(
+ x, y,
+ connectedMapHeader,
+ x2, /*y2*/ 0,
+ width, /*height*/ 7);
+ }
+}
+
+void fillNorthConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset)
+{
+ int x;
+ int x2, y2;
+ int width;
+ int cWidth, cHeight;
+
+ if (connectedMapHeader)
+ {
+ cWidth = connectedMapHeader->mapData->width;
+ cHeight = connectedMapHeader->mapData->height;
+ x = offset + 7;
+ y2 = cHeight - 7;
+ if (x < 0)
+ {
+ x2 = -x;
+ x += cWidth;
+ if (x < gUnknown_03004870.width)
+ {
+ width = x;
+ }
+ else
+ {
+ width = gUnknown_03004870.width;
+ }
+ x = 0;
+ }
+ else
+ {
+ x2 = 0;
+ if (x + cWidth < gUnknown_03004870.width)
+ {
+ width = cWidth;
+ }
+ else
+ {
+ width = gUnknown_03004870.width - x;
+ }
+ }
+
+ sub_8056134(
+ x, /*y*/ 0,
+ connectedMapHeader,
+ x2, y2,
+ width, /*height*/ 7);
+
+ }
+}
+
+
+void fillWestConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset)
+{
+ int y;
+ int x2, y2;
+ int height;
+ int cWidth, cHeight;
+ if (connectedMapHeader)
+ {
+ cWidth = connectedMapHeader->mapData->width;
+ cHeight = connectedMapHeader->mapData->height;
+ y = offset + 7;
+ x2 = cWidth - 7;
+ if (y < 0)
+ {
+ y2 = -y;
+ if (y + cHeight < gUnknown_03004870.height)
+ {
+ height = y + cHeight;
+ }
+ else
+ {
+ height = gUnknown_03004870.height;
+ }
+ y = 0;
+ }
+ else
+ {
+ y2 = 0;
+ if (y + cHeight < gUnknown_03004870.height)
+ {
+ height = cHeight;
+ }
+ else
+ {
+ height = gUnknown_03004870.height - y;
+ }
+ }
+
+ sub_8056134(
+ /*x*/ 0, y,
+ connectedMapHeader,
+ x2, y2,
+ /*width*/ 7, height);
+ }
+}
+
+void fillEastConnection(struct MapHeader *mapHeader, struct MapHeader *connectedMapHeader, s32 offset)
+{
+ int x, y;
+ int y2;
+ int height;
+ int cHeight;
+ if (connectedMapHeader)
+ {
+ cHeight = connectedMapHeader->mapData->height;
+ x = mapHeader->mapData->width + 7;
+ y = offset + 7;
+ if (y < 0)
+ {
+ y2 = -y;
+ if (y + cHeight < gUnknown_03004870.height)
+ {
+ height = y + cHeight;
+ }
+ else
+ {
+ height = gUnknown_03004870.height;
+ }
+ y = 0;
+ }
+ else
+ {
+ y2 = 0;
+ if (y + cHeight < gUnknown_03004870.height)
+ {
+ height = cHeight;
+ }
+ else
+ {
+ height = gUnknown_03004870.height - y;
+ }
+ }
+
+ sub_8056134(
+ x, y,
+ connectedMapHeader,
+ /*x2*/ 0, y2,
+ /*width*/ 8, height);
+ }
+}
+
+union Block
+{
+ struct
+ {
+ u16 block:10;
+ u16 collision:2;
+ u16 elevation:4;
+ } block;
+ u16 value;
};
-u16 MapGridGetZCoordAt(int x, int y) {
- u16 block;
- int i;
- u16 *border;
-
- if (x >= 0 && x < gUnknown_03004870.width
- && y >= 0 && y < gUnknown_03004870.height) {
- block = gUnknown_03004870.map[x + gUnknown_03004870.width * y];
- } else {
- border = gMapHeader.mapData->border;
- i = (x + 1) & 1;
- i += ((y + 1) & 1) * 2;
- block = gMapHeader.mapData->border[i];
- block |= 0xc00;
- }
- if (block == 0x3ff) {
- return 0;
- }
- return block >> 12;
-}
-
-u16 MapGridIsImpassableAt(int x, int y) {
- u16 block;
- int i;
- u16 *border;
-
- if (x >= 0 && x < gUnknown_03004870.width
- && y >= 0 && y < gUnknown_03004870.height) {
- block = gUnknown_03004870.map[x + gUnknown_03004870.width * y];
- } else {
- border = gMapHeader.mapData->border;
- i = (x + 1) & 1;
- i += ((y + 1) & 1) * 2;
- block = gMapHeader.mapData->border[i];
- block |= 0xc00;
- }
- if (block == 0x3ff) {
- return 1;
- }
- return (block & 0xc00) >> 10;
-}
-
-u16 MapGridGetMetatileIdAt(int x, int y) {
- u16 block;
- int i;
- int j;
- struct MapData *mapData;
- u16 *border;
- u16 block2;
-
- if (x >= 0 && x < gUnknown_03004870.width
- && y >= 0 && y < gUnknown_03004870.height) {
- block = gUnknown_03004870.map[x + gUnknown_03004870.width * y];
- } else {
- mapData = gMapHeader.mapData;
- i = (x + 1) & 1;
- i += ((y + 1) & 1) * 2;
- block = mapData->border[i] | 0xc00;
- }
- if (block == 0x3ff) {
- border = gMapHeader.mapData->border;
- j = (x + 1) & 1;
- j += ((y + 1) & 1) * 2;
- block2 = gMapHeader.mapData->border[j];
- block2 |= 0xc00;
- return block2 & block;
- }
- return block & 0x3ff;
-}
-
-u32 MapGridGetMetatileBehaviorAt(int x, int y) {
- u16 metatile;
- metatile = MapGridGetMetatileIdAt(x, y);
- return GetBehaviorByMetatileId(metatile) & 0xff;
-}
-
-u16 MapGridGetMetatileLayerTypeAt(int x, int y) {
- u16 metatile;
- metatile = MapGridGetMetatileIdAt(x, y);
- return (GetBehaviorByMetatileId(metatile) & 0xf000) >> 12;
-}
-
-void MapGridSetMetatileIdAt(int x, int y, u16 metatile) {
- int i;
- if (x >= 0 && x < gUnknown_03004870.width
- && y >= 0 && y < gUnknown_03004870.height) {
- i = x + y * gUnknown_03004870.width;
- gUnknown_03004870.map[i] = (gUnknown_03004870.map[i] & 0xf000) | (metatile & 0xfff);
- }
-}
-
-void MapGridSetMetatileEntryAt(int x, int y, u16 metatile) {
- int i;
- if (x >= 0 && x < gUnknown_03004870.width
- && y >= 0 && y < gUnknown_03004870.height) {
- i = x + gUnknown_03004870.width * y;
- gUnknown_03004870.map[i] = metatile;
- }
-}
-
-u32 GetBehaviorByMetatileId(u16 metatile) {
- u16 *attributes;
- if (metatile <= 0x1ff) {
- attributes = gMapHeader.mapData->primaryTileset->metatileAttributes;
- return attributes[metatile];
- } else if (metatile <= 0x3ff) {
- attributes = gMapHeader.mapData->secondaryTileset->metatileAttributes;
- return attributes[metatile - 0x200];
- } else {
- return 0xff;
- }
-}
-
-void save_serialize_map(void) {
- int i, j;
- int x, y;
- u16 *mapView;
- int width;
- mapView = gSaveBlock1.mapView;
- width = gUnknown_03004870.width;
- x = gSaveBlock1.pos.x;
- y = gSaveBlock1.pos.y;
- for (i = y; i < y + 14; i++)
- for (j = x; j < x + 15; j++) {
- *mapView++ = gUnknown_02029828[width * i + j];
- }
-}
-
-int sub_8056618(void) {
- u16 i;
- u32 r2;
- r2 = 0;
- for (i = 0; i < 0x200; i++) {
- r2 |= gSaveBlock1.mapView[i];
- }
- if (r2 == 0) {
- return 1;
- }
- return 0;
-}
-
-void sav2_mapdata_clear(void) {
- CpuFill16(0, gSaveBlock1.mapView, sizeof(gSaveBlock1.mapView));
-}
-
-void sub_8056670(void) {
- int i, j;
- int x, y;
- u16 *mapView;
- int width;
- mapView = gSaveBlock1.mapView;
- if (!sub_8056618()) {
- width = gUnknown_03004870.width;
- x = gSaveBlock1.pos.x;
- y = gSaveBlock1.pos.y;
- for (i = y; i < y + 14; i++)
- for (j = x; j < x + 15; j++) {
- gUnknown_02029828[width * i + j] = *mapView++;
- }
- sav2_mapdata_clear();
- }
-}
-
-void sub_80566F0(u8 a1) {
- u16 *mapView;
- int width;
- int x0, y0;
- int x2, y2;
- u16 *src, *dest;
- int srci, desti;
- int r9, r8;
- int x, y;
- int i, j;
- mapView = gSaveBlock1.mapView;
- width = gUnknown_03004870.width;
- r9 = 0;
- r8 = 0;
- x0 = gSaveBlock1.pos.x;
- y0 = gSaveBlock1.pos.y;
- x2 = 15;
- y2 = 14;
- switch (a1) {
- case CONNECTION_NORTH:
- y0 += 1;
- y2 = 13;
- break;
- case CONNECTION_SOUTH:
- r8 = 1;
- y2 = 13;
- break;
- case CONNECTION_WEST:
- x0 += 1;
- x2 = 14;
- break;
- case CONNECTION_EAST:
- r9 = 1;
- x2 = 14;
- break;
- }
- for (y = 0; y < y2; y++) {
- i = 0;
- j = 0;
- for (x = 0; x < x2; x++) {
- desti = width * (y + y0);
- srci = (y + r8) * 15 + r9;
- src = &mapView[srci + i];
- dest = &gUnknown_02029828[x0 + desti + j];
- *dest = *src;
- i++;
- j++;
- }
- }
- sav2_mapdata_clear();
-}
-
-int GetMapBorderIdAt(int x, int y) {
- struct MapData *mapData;
- u16 block, block2;
- int i, j;
- if (x >= 0 && x < gUnknown_03004870.width
- && y >= 0 && y < gUnknown_03004870.height) {
- i = gUnknown_03004870.width;
- i *= y;
- block = gUnknown_03004870.map[x + i];
- if (block == 0x3ff) {
- goto fail;
- }
- } else {
- mapData = gMapHeader.mapData;
- j = (x + 1) & 1;
- j += ((y + 1) & 1) * 2;
- block2 = 0xc00 | mapData->border[j];
- if (block2 == 0x3ff) {
- goto fail;
- }
- }
- goto success;
+u16 MapGridGetZCoordAt(int x, int y)
+{
+ u16 block;
+ int i;
+ u16 *border;
+
+ if (x >= 0 && x < gUnknown_03004870.width
+ && y >= 0 && y < gUnknown_03004870.height)
+ {
+ block = gUnknown_03004870.map[x + gUnknown_03004870.width * y];
+ }
+ else
+ {
+ border = gMapHeader.mapData->border;
+ i = (x + 1) & 1;
+ i += ((y + 1) & 1) * 2;
+ block = gMapHeader.mapData->border[i];
+ block |= 0xc00;
+ }
+ if (block == 0x3ff)
+ {
+ return 0;
+ }
+ return block >> 12;
+}
+
+u16 MapGridIsImpassableAt(int x, int y)
+{
+ u16 block;
+ int i;
+ u16 *border;
+
+ if (x >= 0 && x < gUnknown_03004870.width
+ && y >= 0 && y < gUnknown_03004870.height)
+ {
+ block = gUnknown_03004870.map[x + gUnknown_03004870.width * y];
+ }
+ else
+ {
+ border = gMapHeader.mapData->border;
+ i = (x + 1) & 1;
+ i += ((y + 1) & 1) * 2;
+ block = gMapHeader.mapData->border[i];
+ block |= 0xc00;
+ }
+ if (block == 0x3ff)
+ {
+ return 1;
+ }
+ return (block & 0xc00) >> 10;
+}
+
+u16 MapGridGetMetatileIdAt(int x, int y)
+{
+ u16 block;
+ int i;
+ int j;
+ struct MapData *mapData;
+ u16 *border;
+ u16 block2;
+
+ if (x >= 0 && x < gUnknown_03004870.width
+ && y >= 0 && y < gUnknown_03004870.height)
+ {
+ block = gUnknown_03004870.map[x + gUnknown_03004870.width * y];
+ }
+ else
+ {
+ mapData = gMapHeader.mapData;
+ i = (x + 1) & 1;
+ i += ((y + 1) & 1) * 2;
+ block = mapData->border[i] | 0xc00;
+ }
+ if (block == 0x3ff)
+ {
+ border = gMapHeader.mapData->border;
+ j = (x + 1) & 1;
+ j += ((y + 1) & 1) * 2;
+ block2 = gMapHeader.mapData->border[j];
+ block2 |= 0xc00;
+ return block2 & block;
+ }
+ return block & 0x3ff;
+}
+
+u32 MapGridGetMetatileBehaviorAt(int x, int y)
+{
+ u16 metatile;
+ metatile = MapGridGetMetatileIdAt(x, y);
+ return GetBehaviorByMetatileId(metatile) & 0xff;
+}
+
+u16 MapGridGetMetatileLayerTypeAt(int x, int y)
+{
+ u16 metatile;
+ metatile = MapGridGetMetatileIdAt(x, y);
+ return (GetBehaviorByMetatileId(metatile) & 0xf000) >> 12;
+}
+
+void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
+{
+ int i;
+ if (x >= 0 && x < gUnknown_03004870.width
+ && y >= 0 && y < gUnknown_03004870.height)
+ {
+ i = x + y * gUnknown_03004870.width;
+ gUnknown_03004870.map[i] = (gUnknown_03004870.map[i] & 0xf000) | (metatile & 0xfff);
+ }
+}
+
+void MapGridSetMetatileEntryAt(int x, int y, u16 metatile)
+{
+ int i;
+ if (x >= 0 && x < gUnknown_03004870.width
+ && y >= 0 && y < gUnknown_03004870.height)
+ {
+ i = x + gUnknown_03004870.width * y;
+ gUnknown_03004870.map[i] = metatile;
+ }
+}
+
+u32 GetBehaviorByMetatileId(u16 metatile)
+{
+ u16 *attributes;
+ if (metatile <= 0x1ff)
+ {
+ attributes = gMapHeader.mapData->primaryTileset->metatileAttributes;
+ return attributes[metatile];
+ }
+ else if (metatile <= 0x3ff)
+ {
+ attributes = gMapHeader.mapData->secondaryTileset->metatileAttributes;
+ return attributes[metatile - 0x200];
+ }
+ else
+ {
+ return 0xff;
+ }
+}
+
+void save_serialize_map(void)
+{
+ int i, j;
+ int x, y;
+ u16 *mapView;
+ int width;
+ mapView = gSaveBlock1.mapView;
+ width = gUnknown_03004870.width;
+ x = gSaveBlock1.pos.x;
+ y = gSaveBlock1.pos.y;
+ for (i = y; i < y + 14; i++)
+ {
+ for (j = x; j < x + 15; j++)
+ {
+ *mapView++ = gUnknown_02029828[width * i + j];
+ }
+ }
+}
+
+int sub_8056618(void)
+{
+ u16 i;
+ u32 r2;
+ r2 = 0;
+ for (i = 0; i < 0x200; i++)
+ {
+ r2 |= gSaveBlock1.mapView[i];
+ }
+ if (r2 == 0)
+ {
+ return 1;
+ }
+ return 0;
+}
+
+void sav2_mapdata_clear(void)
+{
+ CpuFill16(0, gSaveBlock1.mapView, sizeof(gSaveBlock1.mapView));
+}
+
+void sub_8056670(void)
+{
+ int i, j;
+ int x, y;
+ u16 *mapView;
+ int width;
+ mapView = gSaveBlock1.mapView;
+ if (!sub_8056618())
+ {
+ width = gUnknown_03004870.width;
+ x = gSaveBlock1.pos.x;
+ y = gSaveBlock1.pos.y;
+ for (i = y; i < y + 14; i++)
+ {
+ for (j = x; j < x + 15; j++)
+ {
+ gUnknown_02029828[width * i + j] = *mapView++;
+ }
+ }
+ sav2_mapdata_clear();
+ }
+}
+
+void sub_80566F0(u8 a1)
+{
+ u16 *mapView;
+ int width;
+ int x0, y0;
+ int x2, y2;
+ u16 *src, *dest;
+ int srci, desti;
+ int r9, r8;
+ int x, y;
+ int i, j;
+ mapView = gSaveBlock1.mapView;
+ width = gUnknown_03004870.width;
+ r9 = 0;
+ r8 = 0;
+ x0 = gSaveBlock1.pos.x;
+ y0 = gSaveBlock1.pos.y;
+ x2 = 15;
+ y2 = 14;
+ switch (a1)
+ {
+ case CONNECTION_NORTH:
+ y0 += 1;
+ y2 = 13;
+ break;
+ case CONNECTION_SOUTH:
+ r8 = 1;
+ y2 = 13;
+ break;
+ case CONNECTION_WEST:
+ x0 += 1;
+ x2 = 14;
+ break;
+ case CONNECTION_EAST:
+ r9 = 1;
+ x2 = 14;
+ break;
+ }
+ for (y = 0; y < y2; y++)
+ {
+ i = 0;
+ j = 0;
+ for (x = 0; x < x2; x++)
+ {
+ desti = width * (y + y0);
+ srci = (y + r8) * 15 + r9;
+ src = &mapView[srci + i];
+ dest = &gUnknown_02029828[x0 + desti + j];
+ *dest = *src;
+ i++;
+ j++;
+ }
+ }
+ sav2_mapdata_clear();
+}
+
+int GetMapBorderIdAt(int x, int y)
+{
+ struct MapData *mapData;
+ u16 block, block2;
+ int i, j;
+ if (x >= 0 && x < gUnknown_03004870.width
+ && y >= 0 && y < gUnknown_03004870.height)
+ {
+ i = gUnknown_03004870.width;
+ i *= y;
+ block = gUnknown_03004870.map[x + i];
+ if (block == 0x3ff)
+ {
+ goto fail;
+ }
+ }
+ else
+ {
+ mapData = gMapHeader.mapData;
+ j = (x + 1) & 1;
+ j += ((y + 1) & 1) * 2;
+ block2 = 0xc00 | mapData->border[j];
+ if (block2 == 0x3ff)
+ {
+ goto fail;
+ }
+ }
+ goto success;
fail:
- return -1;
+ return -1;
success:
- if (x >= (gUnknown_03004870.width - 8)) {
- if (!gUnknown_0202E850.east) {
- return -1;
- }
- return CONNECTION_EAST;
- } else if (x < 7) {
- if (!gUnknown_0202E850.west) {
- return -1;
- }
- return CONNECTION_WEST;
- } else if (y >= (gUnknown_03004870.height - 7)) {
- if (!gUnknown_0202E850.south) {
- return -1;
- }
- return CONNECTION_SOUTH;
- } else if (y < 7) {
- if (!gUnknown_0202E850.north) {
- return -1;
- }
- return CONNECTION_NORTH;
- } else {
- return 0;
- }
-}
-
-int GetPostCameraMoveMapBorderId(int x, int y) {
- return GetMapBorderIdAt(gSaveBlock1.pos.x + 7 + x, gSaveBlock1.pos.y + 7 + y);
-}
-
-int CanCameraMoveInDirection(int direction) {
- int x, y;
- x = gSaveBlock1.pos.x + 7 + gUnknown_0821664C[direction].x;
- y = gSaveBlock1.pos.y + 7 + gUnknown_0821664C[direction].y;
- if (GetMapBorderIdAt(x, y) == -1) {
- return 0;
- }
- return 1;
-}
-
-void sub_8056918(struct MapConnection *connection, int direction, int x, int y) {
- struct MapHeader *mapHeader;
- mapHeader = mapconnection_get_mapheader(connection);
- switch (direction) {
- case CONNECTION_EAST:
- gSaveBlock1.pos.x = -x;
- gSaveBlock1.pos.y -= connection->offset;
- break;
- case CONNECTION_WEST:
- gSaveBlock1.pos.x = mapHeader->mapData->width;
- gSaveBlock1.pos.y -= connection->offset;
- break;
- case CONNECTION_SOUTH:
- gSaveBlock1.pos.x -= connection->offset;
- gSaveBlock1.pos.y = -y;
- break;
- case CONNECTION_NORTH:
- gSaveBlock1.pos.x -= connection->offset;
- gSaveBlock1.pos.y = mapHeader->mapData->height;
- break;
- }
-}
-
-bool8 CameraMove(int x, int y) {
- unsigned int direction;
- struct MapConnection *connection;
- int old_x, old_y;
- gUnknown_0202E844.field_0 = FALSE;
- direction = GetPostCameraMoveMapBorderId(x, y);
- if (direction + 1 <= 1) {
- gSaveBlock1.pos.x += x;
- gSaveBlock1.pos.y += y;
- } else {
- save_serialize_map();
- old_x = gSaveBlock1.pos.x;
- old_y = gSaveBlock1.pos.y;
- connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y);
- sub_8056918(connection, direction, x, y);
- sub_80538F0(connection->mapGroup, connection->mapNum);
- gUnknown_0202E844.field_0 = TRUE;
- gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x;
- gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y;
- gSaveBlock1.pos.x += x;
- gSaveBlock1.pos.y += y;
- sub_80566F0(direction);
- }
- return gUnknown_0202E844.field_0;
-}
-
-struct MapConnection *sub_8056A64(u8 direction, int x, int y) {
- int count;
- struct MapConnection *connection;
- int i;
- count = gMapHeader.connections->count;
- connection = gMapHeader.connections->connections;
- for (i = 0; i < count; i++, connection++) {
- if (connection->direction == direction) {
- if (sub_8056ABC(direction, x, y, connection) == TRUE) {
- return connection;
- }
- }
- }
- return NULL;
-}
-
-bool8 sub_8056ABC(u8 direction, int x, int y, struct MapConnection *connection) {
- struct MapHeader *mapHeader;
- mapHeader = mapconnection_get_mapheader(connection);
- switch (direction) {
- case CONNECTION_SOUTH:
- case CONNECTION_NORTH:
- return sub_8056B20(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset);
- case CONNECTION_WEST:
- case CONNECTION_EAST:
- return sub_8056B20(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset);
- }
- return FALSE;
-}
-
-bool8 sub_8056B20(int x, int src_width, int dest_width, int offset) {
- int offset2;
- offset2 = offset;
- if (offset2 < 0) {
- offset2 = 0;
- }
- if (dest_width + offset < src_width) {
- src_width = dest_width + offset;
- }
- if (offset2 <= x && x <= src_width) {
- return TRUE;
- }
- return FALSE;
-}
-
-int sub_8056B4C(int x, int width) {
- if (x >= 0 && x < width) {
- return TRUE;
- }
- return FALSE;
-}
-
-int sub_8056B60(struct MapConnection *connection, int x, int y) {
- struct MapHeader *mapHeader;
- mapHeader = mapconnection_get_mapheader(connection);
- switch (connection->direction) {
- case CONNECTION_SOUTH:
- case CONNECTION_NORTH:
- return sub_8056B4C(x - connection->offset, mapHeader->mapData->width);
- case CONNECTION_WEST:
- case CONNECTION_EAST:
- return sub_8056B4C(y - connection->offset, mapHeader->mapData->height);
- }
- return FALSE;
-}
-
-struct MapConnection *sub_8056BA0(s16 x, s16 y) {
- int count;
- struct MapConnection *connection;
- int i;
- u8 direction;
- if (!gMapHeader.connections) {
- return NULL;
- } else {
- count = gMapHeader.connections->count;
- connection = gMapHeader.connections->connections;
- for (i = 0; i < count; i++, connection++) {
- direction = connection->direction;
- if (
- (direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE)
- || (direction == CONNECTION_NORTH && y > 6)
- || (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7)
- || (direction == CONNECTION_WEST && x > 6)
- || (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7)
- ) {
- continue;
- }
- if (sub_8056B60(connection, x - 7, y - 7) == TRUE) {
- return connection;
- }
- }
- }
- return NULL;
-}
-
-void sub_8056C50(u16 x, u16 y) {
- gSaveBlock1.pos.x = x - 7;
- gSaveBlock1.pos.y = y - 7;
-}
-
-void sav1_camera_get_focus_coords(u16 *x, u16 *y) {
- *x = gSaveBlock1.pos.x + 7;
- *y = gSaveBlock1.pos.y + 7;
-}
-
-void unref_sub_8056C7C(u16 x, u16 y) {
- gSaveBlock1.pos.x = x;
- gSaveBlock1.pos.y = y;
-}
-
-void GetCameraCoords(u16 *x, u16 *y) {
- *x = gSaveBlock1.pos.x;
- *y = gSaveBlock1.pos.y;
-}
-
-void sub_8056C98(struct Tileset *tileset, void *src) {
- if (tileset) {
- if (!tileset->isCompressed) {
- CpuFastSet(tileset->tiles, src, 0x1000);
- } else {
- LZ77UnCompVram(tileset->tiles, src);
- }
- }
-}
-
-void sub_8056CBC(struct Tileset *tileset, int offset, int size) {
- u16 black;
- if (tileset) {
- if (tileset->isSecondary == FALSE) {
- black = 0;
- LoadPalette(&black, offset, 2);
- LoadPalette(tileset->palettes + 2, offset + 1, size - 2);
- } else if (tileset->isSecondary == TRUE) {
- LoadPalette(tileset->palettes + 0xc0, offset, size);
- } else {
- LZ77UnCompVram(tileset->palettes, (void*)0x2000000);
- LoadPalette((void*)0x2000000, offset, size);
- }
- }
-}
-
-void sub_8056D28(struct MapData *mapData) {
- void *src = (void*)(BG_VRAM);
- sub_8056C98(mapData->primaryTileset, src);
-}
-
-void sub_8056D38(struct MapData *mapData) {
- void *src = (void*)(BG_VRAM + 0x4000);
- sub_8056C98(mapData->secondaryTileset, src);
-}
-
-void apply_map_tileset1_palette(struct MapData *mapData) {
- sub_8056CBC(mapData->primaryTileset, 0, 0xc0);
-}
-
-void apply_map_tileset2_palette(struct MapData *mapData) {
- sub_8056CBC(mapData->secondaryTileset, 0x60, 0xc0);
-}
-
-void copy_map_tileset1_tileset2_to_vram(struct MapData *mapData) {
- if (mapData) {
- sub_8056D28(mapData);
- sub_8056D38(mapData);
- }
+ if (x >= (gUnknown_03004870.width - 8))
+ {
+ if (!gUnknown_0202E850.east)
+ {
+ return -1;
+ }
+ return CONNECTION_EAST;
+ }
+ else if (x < 7)
+ {
+ if (!gUnknown_0202E850.west)
+ {
+ return -1;
+ }
+ return CONNECTION_WEST;
+ }
+ else if (y >= (gUnknown_03004870.height - 7))
+ {
+ if (!gUnknown_0202E850.south)
+ {
+ return -1;
+ }
+ return CONNECTION_SOUTH;
+ }
+ else if (y < 7)
+ {
+ if (!gUnknown_0202E850.north)
+ {
+ return -1;
+ }
+ return CONNECTION_NORTH;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int GetPostCameraMoveMapBorderId(int x, int y)
+{
+ return GetMapBorderIdAt(gSaveBlock1.pos.x + 7 + x, gSaveBlock1.pos.y + 7 + y);
+}
+
+int CanCameraMoveInDirection(int direction)
+{
+ int x, y;
+ x = gSaveBlock1.pos.x + 7 + gUnknown_0821664C[direction].x;
+ y = gSaveBlock1.pos.y + 7 + gUnknown_0821664C[direction].y;
+ if (GetMapBorderIdAt(x, y) == -1)
+ {
+ return 0;
+ }
+ return 1;
+}
+
+void sub_8056918(struct MapConnection *connection, int direction, int x, int y)
+{
+ struct MapHeader *mapHeader;
+ mapHeader = mapconnection_get_mapheader(connection);
+ switch (direction)
+ {
+ case CONNECTION_EAST:
+ gSaveBlock1.pos.x = -x;
+ gSaveBlock1.pos.y -= connection->offset;
+ break;
+ case CONNECTION_WEST:
+ gSaveBlock1.pos.x = mapHeader->mapData->width;
+ gSaveBlock1.pos.y -= connection->offset;
+ break;
+ case CONNECTION_SOUTH:
+ gSaveBlock1.pos.x -= connection->offset;
+ gSaveBlock1.pos.y = -y;
+ break;
+ case CONNECTION_NORTH:
+ gSaveBlock1.pos.x -= connection->offset;
+ gSaveBlock1.pos.y = mapHeader->mapData->height;
+ break;
+ }
+}
+
+bool8 CameraMove(int x, int y)
+{
+ unsigned int direction;
+ struct MapConnection *connection;
+ int old_x, old_y;
+ gUnknown_0202E844.field_0 = FALSE;
+ direction = GetPostCameraMoveMapBorderId(x, y);
+ if (direction + 1 <= 1)
+ {
+ gSaveBlock1.pos.x += x;
+ gSaveBlock1.pos.y += y;
+ }
+ else
+ {
+ save_serialize_map();
+ old_x = gSaveBlock1.pos.x;
+ old_y = gSaveBlock1.pos.y;
+ connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y);
+ sub_8056918(connection, direction, x, y);
+ sub_80538F0(connection->mapGroup, connection->mapNum);
+ gUnknown_0202E844.field_0 = TRUE;
+ gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x;
+ gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y;
+ gSaveBlock1.pos.x += x;
+ gSaveBlock1.pos.y += y;
+ sub_80566F0(direction);
+ }
+ return gUnknown_0202E844.field_0;
+}
+
+struct MapConnection *sub_8056A64(u8 direction, int x, int y)
+{
+ int count;
+ struct MapConnection *connection;
+ int i;
+ count = gMapHeader.connections->count;
+ connection = gMapHeader.connections->connections;
+ for (i = 0; i < count; i++, connection++)
+ {
+ if (connection->direction == direction)
+ {
+ if (sub_8056ABC(direction, x, y, connection) == TRUE)
+ {
+ return connection;
+ }
+ }
+ }
+ return NULL;
+}
+
+bool8 sub_8056ABC(u8 direction, int x, int y, struct MapConnection *connection)
+{
+ struct MapHeader *mapHeader;
+ mapHeader = mapconnection_get_mapheader(connection);
+ switch (direction)
+ {
+ case CONNECTION_SOUTH:
+ case CONNECTION_NORTH:
+ return sub_8056B20(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset);
+ case CONNECTION_WEST:
+ case CONNECTION_EAST:
+ return sub_8056B20(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset);
+ }
+ return FALSE;
+}
+
+bool8 sub_8056B20(int x, int src_width, int dest_width, int offset)
+{
+ int offset2;
+ offset2 = offset;
+ if (offset2 < 0)
+ {
+ offset2 = 0;
+ }
+ if (dest_width + offset < src_width)
+ {
+ src_width = dest_width + offset;
+ }
+ if (offset2 <= x && x <= src_width)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int sub_8056B4C(int x, int width)
+{
+ if (x >= 0 && x < width)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int sub_8056B60(struct MapConnection *connection, int x, int y)
+{
+ struct MapHeader *mapHeader;
+ mapHeader = mapconnection_get_mapheader(connection);
+ switch (connection->direction)
+ {
+ case CONNECTION_SOUTH:
+ case CONNECTION_NORTH:
+ return sub_8056B4C(x - connection->offset, mapHeader->mapData->width);
+ case CONNECTION_WEST:
+ case CONNECTION_EAST:
+ return sub_8056B4C(y - connection->offset, mapHeader->mapData->height);
+ }
+ return FALSE;
+}
+
+struct MapConnection *sub_8056BA0(s16 x, s16 y)
+{
+ int count;
+ struct MapConnection *connection;
+ int i;
+ u8 direction;
+ if (!gMapHeader.connections)
+ {
+ return NULL;
+ }
+ else
+ {
+ count = gMapHeader.connections->count;
+ connection = gMapHeader.connections->connections;
+ for (i = 0; i < count; i++, connection++)
+ {
+ direction = connection->direction;
+ if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE)
+ || (direction == CONNECTION_NORTH && y > 6)
+ || (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7)
+ || (direction == CONNECTION_WEST && x > 6)
+ || (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7))
+ {
+ continue;
+ }
+ if (sub_8056B60(connection, x - 7, y - 7) == TRUE)
+ {
+ return connection;
+ }
+ }
+ }
+ return NULL;
+}
+
+void sub_8056C50(u16 x, u16 y)
+{
+ gSaveBlock1.pos.x = x - 7;
+ gSaveBlock1.pos.y = y - 7;
+}
+
+void sav1_camera_get_focus_coords(u16 *x, u16 *y)
+{
+ *x = gSaveBlock1.pos.x + 7;
+ *y = gSaveBlock1.pos.y + 7;
}
-
-void apply_map_tileset1_tileset2_palette(struct MapData *mapData) {
- if (mapData) {
- apply_map_tileset1_palette(mapData);
- apply_map_tileset2_palette(mapData);
- }
+
+void unref_sub_8056C7C(u16 x, u16 y)
+{
+ gSaveBlock1.pos.x = x;
+ gSaveBlock1.pos.y = y;
+}
+
+void GetCameraCoords(u16 *x, u16 *y)
+{
+ *x = gSaveBlock1.pos.x;
+ *y = gSaveBlock1.pos.y;
+}
+
+void sub_8056C98(struct Tileset *tileset, void *src)
+{
+ if (tileset)
+ {
+ if (!tileset->isCompressed)
+ {
+ CpuFastSet(tileset->tiles, src, 0x1000);
+ }
+ else
+ {
+ LZ77UnCompVram(tileset->tiles, src);
+ }
+ }
+}
+
+void sub_8056CBC(struct Tileset *tileset, int offset, int size)
+{
+ u16 black;
+ if (tileset)
+ {
+ if (tileset->isSecondary == FALSE)
+ {
+ black = 0;
+ LoadPalette(&black, offset, 2);
+ LoadPalette(tileset->palettes + 2, offset + 1, size - 2);
+ }
+ else if (tileset->isSecondary == TRUE)
+ {
+ LoadPalette(tileset->palettes + 0xc0, offset, size);
+ }
+ else
+ {
+ LZ77UnCompVram(tileset->palettes, (void*)0x2000000);
+ LoadPalette((void*)0x2000000, offset, size);
+ }
+ }
+}
+
+void sub_8056D28(struct MapData *mapData)
+{
+ void *src = (void*)(BG_VRAM);
+ sub_8056C98(mapData->primaryTileset, src);
+}
+
+void sub_8056D38(struct MapData *mapData)
+{
+ void *src = (void*)(BG_VRAM + 0x4000);
+ sub_8056C98(mapData->secondaryTileset, src);
+}
+
+void apply_map_tileset1_palette(struct MapData *mapData)
+{
+ sub_8056CBC(mapData->primaryTileset, 0, 0xc0);
+}
+
+void apply_map_tileset2_palette(struct MapData *mapData)
+{
+ sub_8056CBC(mapData->secondaryTileset, 0x60, 0xc0);
+}
+
+void copy_map_tileset1_tileset2_to_vram(struct MapData *mapData)
+{
+ if (mapData)
+ {
+ sub_8056D28(mapData);
+ sub_8056D38(mapData);
+ }
+}
+
+void apply_map_tileset1_tileset2_palette(struct MapData *mapData)
+{
+ if (mapData)
+ {
+ apply_map_tileset1_palette(mapData);
+ apply_map_tileset2_palette(mapData);
+ }
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
new file mode 100644
index 000000000..f432027ab
--- /dev/null
+++ b/src/fldeff_cut.c
@@ -0,0 +1,300 @@
+#include "global.h"
+#include "asm.h"
+#include "metatile_behavior.h"
+#include "metatile_behaviors.h"
+#include "field_player_avatar.h"
+#include "field_effect.h"
+#include "rom4.h"
+#include "script.h"
+#include "rom6.h"
+#include "sound.h"
+#include "field_camera.h"
+#include "sprite.h"
+#include "songs.h"
+#include "trig.h"
+#include "map_obj_lock.h"
+
+extern u8 gCutGrassSpriteArray[8]; // seems to be an array of 8 sprite IDs
+
+extern void (*gUnknown_0300485C)(void);
+extern void (*gUnknown_03005CE4)(void);
+
+extern struct SpriteTemplate gSpriteTemplate_CutGrass;
+
+extern struct MapPosition gUnknown_0203923C;
+
+extern u8 gLastFieldPokeMenuOpened;
+extern u32 gUnknown_0202FF84[];
+
+extern u8 UseCutScript;
+
+extern void sub_808AB90(void); // unknown args
+extern void sub_805BCC0(s16 x, s16 y);
+
+void sub_80A2634(void);
+void sub_80A25E8(void);
+void sub_80A2684(void);
+void sub_80A27A8(s16, s16);
+void sub_80A28F4(s16, s16);
+void objc_8097BBC(struct Sprite *sprite);
+void sub_80A2AB8(void);
+void sub_80A2B00(void); // unknown args
+
+bool8 SetUpFieldMove_Cut(void)
+{
+ s16 x, y;
+ u8 i, j;
+ u8 tileBehavior;
+
+ if(npc_before_player_of_type(0x52) == TRUE) // is in front of tree?
+ {
+ gUnknown_0300485C = sub_808AB90;
+ gUnknown_03005CE4 = sub_80A2634;
+ return TRUE;
+ }
+ else // is in ash or grass to cut?
+ {
+ PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ for(i = 0; i < 3; i++)
+ {
+ y = i - 1 + gUnknown_0203923C.y;
+ for(j = 0; j < 3; j++)
+ {
+ x = j - 1 + gUnknown_0203923C.x;
+ if(MapGridGetZCoordAt(x, y) == (s8)gUnknown_0203923C.height)
+ {
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
+ || MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
+ {
+ gUnknown_0300485C = sub_808AB90;
+ gUnknown_03005CE4 = sub_80A25E8;
+ return TRUE;
+ }
+ }
+ }
+ }
+ return FALSE; // do not use cut
+ }
+}
+
+void sub_80A25E8(void)
+{
+ FieldEffectStart(1);
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+}
+
+bool8 FldEff_UseCutOnGrass(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_80A2684 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80A2684;
+ IncrementGameStat(0x12);
+ return FALSE;
+}
+
+void sub_80A2634(void)
+{
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(&UseCutScript);
+}
+
+bool8 FldEff_UseCutOnTree(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_80A2B00 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80A2B00;
+ IncrementGameStat(0x12);
+ return FALSE;
+}
+
+void sub_80A2684(void)
+{
+ FieldEffectActiveListRemove(1);
+ FieldEffectStart(0x3A);
+}
+
+bool8 FldEff_CutGrass(void)
+{
+ s16 x, y;
+ u8 tileBehavior;
+ u8 i, j; // not in for loop?
+
+ for(i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); i < 3; i++)
+ {
+ y = i - 1 + gUnknown_0203923C.y;
+ for(j = 0; j < 3; j++)
+ {
+ x = j - 1 + gUnknown_0203923C.x;
+ if(MapGridGetZCoordAt(x, y) == (s8)gUnknown_0203923C.height)
+ {
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if(MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
+ {
+ sub_80A27A8(x, y);
+ sub_805BCC0(x, y);
+ }
+ }
+ }
+ }
+ sub_80A28F4(gUnknown_0203923C.x - 1, gUnknown_0203923C.y - 2);
+ DrawWholeMapView();
+
+ // populate sprite ID array
+ for(i = 0; i < 8; i++)
+ {
+ gCutGrassSpriteArray[i] = CreateSprite((struct SpriteTemplate *)&gSpriteTemplate_CutGrass,
+ gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0);
+ gSprites[gCutGrassSpriteArray[i]].data2 = 32 * i;
+ }
+ return 0;
+}
+
+// set map grid metatile depending on x, y
+// TODO: enum for metatile IDs
+void sub_80A27A8(s16 x, s16 y)
+{
+ int metatileId = MapGridGetMetatileIdAt(x, 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;
+ }
+}
+
+s32 sub_80A28A0(s16 x, s16 y)
+{
+ u16 metatileId = MapGridGetMetatileIdAt(x, y);
+
+ if(metatileId == 1)
+ return 1;
+ else if(metatileId == 633)
+ return 2;
+ else if(metatileId == 634)
+ return 3;
+ else if(metatileId == 635)
+ return 4;
+ else
+ return 0;
+}
+
+void sub_80A28F4(s16 x, s16 y)
+{
+ s16 i;
+ u16 lowerY = y + 3;
+
+ for(i = 0; i < 3; i++)
+ {
+ u16 currentX = x + i;
+ s16 currentXsigned = x + i;
+ if(MapGridGetMetatileIdAt(currentXsigned, y) == 21)
+ {
+ 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;
+ }
+ }
+ if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY) == 1)
+ {
+ if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x208)
+ MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x1);
+ if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x281)
+ MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x279);
+ if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x282)
+ MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x27A);
+ if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x283)
+ MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x27B);
+ }
+ }
+}
+
+void sub_80A2A48(struct Sprite *sprite)
+{
+ sprite->data0 = 8;
+ sprite->data1 = 0;
+ sprite->data3 = 0;
+ sprite->callback = (void *)objc_8097BBC;
+}
+
+void objc_8097BBC(struct Sprite *sprite)
+{
+ u16 tempdata;
+ u16 tempdata2;
+
+ sprite->pos2.x = Sin(sprite->data2, sprite->data0);
+ sprite->pos2.y = Cos(sprite->data2, sprite->data0);
+
+ sprite->data2 = (sprite->data2 + 8) & 0xFF;
+ sprite->data0 += ((tempdata2 = sprite->data3) << 16 >> 18) + 1; // what?
+ sprite->data3 = tempdata2 + 1;
+
+ tempdata = sprite->data1;
+ if((s16)tempdata != 28) // done rotating the grass, execute clean up function
+ sprite->data1++;
+ else
+ sprite->callback = (void *)sub_80A2AB8;
+}
+
+void sub_80A2AB8(void)
+{
+ u8 i;
+
+ for(i = 1; i < 8; i++)
+ {
+ DestroySprite(&gSprites[gCutGrassSpriteArray[i]]);
+ }
+
+ FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], 0x3A);
+ sub_8064E2C();
+ ScriptContext2_Disable();
+}
+
+void sub_80A2B00(void)
+{
+ PlaySE(0x80);
+ FieldEffectActiveListRemove(2);
+ EnableBothScriptContexts();
+}
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index 4da04326a..e7e7473d0 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -1,17 +1,20 @@
#include "global.h"
-#include "field_effect.h"
#include "asm.h"
+#include "field_effect.h"
#include "pokemon.h"
#include "script.h"
#include "task.h"
+#include "text.h"
+#include "braille_puzzles.h"
+#include "rom6.h"
static void sub_811AA18(void);
static void sub_811AA38(void);
static void sub_811AA9C(void);
-extern u32 gUnknown_0202FF84;
+extern u32 gUnknown_0202FF84[];
-extern u8 gUnknown_03005CE0;
+extern u8 gLastFieldPokeMenuOpened;
extern u16 gScriptResult;
extern void (*gUnknown_0300485C)(void);
extern void (*gUnknown_03005CE4)(void);
@@ -22,7 +25,7 @@ bool8 SetUpFieldMove_Strength(void)
{
if (ShouldDoBrailleStrengthEffect())
{
- gScriptResult = gUnknown_03005CE0;
+ gScriptResult = gLastFieldPokeMenuOpened;
gUnknown_0300485C = sub_808AB90;
gUnknown_03005CE4 = sub_811AA38;
}
@@ -30,7 +33,7 @@ bool8 SetUpFieldMove_Strength(void)
{
if (npc_before_player_of_type(87) != TRUE)
return 0;
- gScriptResult = gUnknown_03005CE0;
+ gScriptResult = gLastFieldPokeMenuOpened;
gUnknown_0300485C = sub_808AB90;
gUnknown_03005CE4 = sub_811AA18;
}
@@ -40,13 +43,13 @@ bool8 SetUpFieldMove_Strength(void)
static void sub_811AA18(void)
{
- gUnknown_0202FF84 = gUnknown_03005CE0;
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
ScriptContext1_SetupScript(UseStrengthScript);
}
static void sub_811AA38(void)
{
- gUnknown_0202FF84 = gUnknown_03005CE0;
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(40);
}
@@ -56,7 +59,7 @@ bool8 FldEff_UseStrength(void)
gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16;
gTasks[taskId].data[9] = (u32)sub_811AA9C;
- GetMonNickname(&gPlayerParty[gUnknown_0202FF84], gStringVar1);
+ GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1);
return FALSE;
}
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
new file mode 100644
index 000000000..0e6933649
--- /dev/null
+++ b/src/fldeff_teleport.c
@@ -0,0 +1,51 @@
+#include "global.h"
+#include "asm.h"
+#include "field_effect.h"
+#include "field_player_avatar.h"
+#include "rom4.h"
+#include "rom6.h"
+
+extern void sub_8087BA8(void);
+
+extern u32 gUnknown_0202FF84[];
+
+extern void (*gUnknown_0300485C)(void);
+extern u8 gLastFieldPokeMenuOpened;
+extern void (*gUnknown_03005CE4)(void);
+
+void hm_teleport_run_dp02scr(void);
+void sub_814A404(void);
+
+bool8 SetUpFieldMove_Teleport(void)
+{
+ if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE)
+ {
+ gUnknown_0300485C = sub_808AB90;
+ gUnknown_03005CE4 = hm_teleport_run_dp02scr;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void hm_teleport_run_dp02scr(void)
+{
+ new_game();
+ FieldEffectStart(63);
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+}
+
+bool8 FldEff_UseTeleport(void)
+{
+ u8 taskId = oei_task_add();
+ gTasks[taskId].data[8] = (u32)sub_814A404 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_814A404;
+ SetPlayerAvatarTransitionFlags(1);
+ return 0;
+}
+
+void sub_814A404(void)
+{
+ FieldEffectActiveListRemove(63);
+ sub_8087BA8();
+}
diff --git a/src/heal_location.c b/src/heal_location.c
index 13bb125b6..42bc18567 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,17 +1,42 @@
#include "global.h"
#include "heal_location.h"
+#include "map_constants.h"
#define NUM_HEAL_LOCATIONS 22
-extern const struct HealLocation gHealLocations[];
+static const struct HealLocation sHealLocations[] =
+{
+ {MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 20, 17},
+ {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 19, 20},
+ {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 22, 6},
+ {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 16, 39},
+ {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 5, 7},
+ {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 24, 15},
+ {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 28, 17},
+ {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 43, 32},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 27, 49},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 5, 9},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 14, 9},
+ {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 6, 17},
+ {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 2, 11},
+ {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 9, 7},
+ {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 14, 8},
+ {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 16, 4},
+ {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 8, 16},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 18, 6},
+ {MAP_GROUP_BATTLE_TOWER_OUTSIDE, MAP_ID_BATTLE_TOWER_OUTSIDE, 14, 9},
+ {MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR, MAP_ID_SOUTHERN_ISLAND_EXTERIOR, 15, 20},
+};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
u32 i;
-
+
for (i = 0; i < NUM_HEAL_LOCATIONS; i++)
{
- if(gHealLocations[i].group == mapGroup && gHealLocations[i].map == mapNum)
+ if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
return i + 1;
}
return 0;
@@ -20,11 +45,11 @@ u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
const struct HealLocation *GetHealLocationByMap(u16 mapGroup, u16 mapNum)
{
u32 index = GetHealLocationIndexByMap(mapGroup, mapNum);
-
+
if (index == 0)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
const struct HealLocation *GetHealLocation(u32 index)
@@ -34,5 +59,5 @@ const struct HealLocation *GetHealLocation(u32 index)
else if (index > NUM_HEAL_LOCATIONS)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
diff --git a/src/intro.c b/src/intro.c
index 544d8b64f..fd0a3316e 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -1,21 +1,21 @@
#include "global.h"
#include "intro.h"
#include "asm.h"
+#include "decompress.h"
#include "gba/m4a_internal.h"
-#include "m4a.h"
#include "libgncmultiboot.h"
-#include "save.h"
-#include "decompress.h"
-#include "title_screen.h"
-#include "new_game.h"
#include "link.h"
+#include "m4a.h"
#include "main.h"
+#include "new_game.h"
#include "palette.h"
#include "rng.h"
+#include "save.h"
#include "songs.h"
#include "sound.h"
#include "species.h"
#include "task.h"
+#include "title_screen.h"
#include "trig.h"
extern void *species_and_otid_get_pal(/*TODO: arg types*/);
@@ -33,9 +33,8 @@ extern u16 gUnknown_02039318;
extern u16 gUnknown_0203931A;
extern u16 gUnknown_02039358;
extern u16 gUnknown_0203935A;
-
extern u32 gIntroFrameCounter;
-extern struct GcmbStruct gUnknown_03005EE0;
+extern struct GcmbStruct gMultibootProgramStruct;
extern u16 gSaveFileStatus;
extern u8 gReservedSpritePaletteCount;
extern struct SpriteSheet gMonFrontPicTable[];
@@ -45,64 +44,735 @@ extern struct MonCoords gMonBackPicCoords[];
extern struct SpriteSheet gTrainerBackPicTable[];
extern struct MonCoords gTrainerBackPicCoords[];
extern struct SpritePalette gTrainerBackPicPaletteTable[];
-
-extern const u16 gIntro1BGPals[];
-extern const u8 gIntro1BG0_Tilemap[];
-extern const u8 gIntro1BG1_Tilemap[];
-extern const u8 gIntro1BG2_Tilemap[];
-extern const u8 gIntro1BG3_Tilemap[];
-extern const u8 gIntro1BGLeavesGfx[];
-extern const u8 gIntro3PokeballPal[];
-extern const u8 gIntro3Pokeball_Tilemap[];
-extern const u8 gIntro3Pokeball_Gfx[];
-extern const u16 gIntro3Streaks_Pal[];
-extern const u8 gIntro3Streaks_Gfx[];
-extern const u8 gIntro3Streaks_Tilemap[];
-extern union AnimCmd *gUnknown_0840AE80[];
-extern const struct SpriteTemplate gSpriteTemplate_840AFF0;
-extern const struct SpriteSheet gUnknown_0840B008;
-extern const struct SpriteSheet gUnknown_0840B018;
-extern const struct SpritePalette gUnknown_0840B028[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1F4;
-extern const struct SpriteSheet gIntro3PokeballGfx_Table;
-extern const struct SpriteSheet gIntro3MiscGfx_Table;
-extern const struct SpritePalette gInterfacePokeballPal_Table;
-extern const struct SpritePalette gIntro3MiscPal_Table[];
+extern const u8 gInterfaceGfx_PokeBall[];
+extern const u16 gInterfacePal_PokeBall[];
extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
extern const struct SpriteSheet gIntro2MaySpriteSheet;
extern const struct SpriteSheet gIntro2BicycleSpriteSheet;
extern const struct SpriteSheet gIntro2LatiosSpriteSheet;
extern const struct SpriteSheet gIntro2LatiasSpriteSheet;
extern const struct SpritePalette gIntro2SpritePalettes[];
-
-extern const struct SpriteTemplate gSpriteTemplate_840AE20;
-
extern const u8 gIntroCopyright_Gfx[];
extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
-
extern const u16 gUnknown_08393E64[];
-extern const s16 gUnknown_0840AF50[][2];
-extern const s16 gUnknown_0840AF74[][2];
-extern const struct SpriteTemplate gSpriteTemplate_840AF94;
-extern const struct SpriteTemplate gSpriteTemplate_840AFAC;
-extern const struct SpriteTemplate gSpriteTemplate_840AFC4;
-extern union AnimCmd *gUnknown_0840B064[];
-extern const struct SpriteTemplate gSpriteTemplate_840B084;
-extern const struct SpriteTemplate gSpriteTemplate_840B0B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B0DC;
-extern const struct SpriteTemplate gSpriteTemplate_840B0F4;
-extern const struct SpriteTemplate gSpriteTemplate_840B124;
-extern const struct SpriteTemplate gSpriteTemplate_840B150;
-extern const u8 gUnknown_0840B168[];
-extern const struct SpriteTemplate gSpriteTemplate_840B170;
-extern const u16 gUnknown_0840B188[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B1C8;
-extern void *gUnknown_0840B5A0[];
-
+extern void *const gUnknown_0840B5A0[];
extern const s16 gSineTable[];
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+static const u16 Palette_406340[] = INCBIN_U16("graphics/intro/unknown1.gbapal");
+static const u16 Palette_406360[] = INCBIN_U16("graphics/intro/unknown2.gbapal");
+static const u8 gIntroTiles[] = INCBIN_U8("graphics/intro/intro.4bpp.lz");
+static const u16 gIntro1BGPals[][16] =
+{
+ INCBIN_U16("graphics/intro/intro1_bgpal1.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal2.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal3.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal4.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal5.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal6.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal7.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal8.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal9.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal10.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal11.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal12.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal13.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal14.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal15.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal16.gbapal"),
+};
+static const u8 gIntro1BG0_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg0_map.bin.lz");
+static const u8 gIntro1BG1_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg1_map.bin.lz");
+static const u8 gIntro1BG2_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg2_map.bin.lz");
+static const u8 gIntro1BG3_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg3_map.bin.lz");
+static const u8 gIntro1BGLeavesGfx[] = INCBIN_U8("graphics/intro/introgfx.4bpp.lz");
+static const u16 gIntro3PokeballPal[] = INCBIN_U16("graphics/intro/intro3_pokeball.gbapal");
+static const u8 gIntro3Pokeball_Tilemap[] = INCBIN_U8("graphics/intro/intro3_pokeball_map.bin.lz");
+static const u8 gIntro3Pokeball_Gfx[] = INCBIN_U8("graphics/intro/intro3_pokeball.8bpp.lz");
+static const u16 gIntro3Streaks_Pal[] = INCBIN_U16("graphics/intro/intro3_streaks.gbapal");
+static const u8 gIntro3Streaks_Gfx[] = INCBIN_U8("graphics/intro/intro3_streaks.4bpp.lz");
+static const u8 gIntro3Streaks_Tilemap[] = INCBIN_U8("graphics/intro/intro3_streaks_map.bin.lz");
+static const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
+static const u16 gIntro3Misc2Palette[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
+static const u8 gIntro3MiscTiles[] = INCBIN_U8("graphics/intro/intro3_misc.4bpp.lz");
+static const u16 gIntro1EonPalette[] = INCBIN_U16("graphics/intro/intro1_eon.gbapal");
+static const u8 gIntro1EonTiles[] = INCBIN_U8("graphics/intro/intro1_eon.4bpp.lz");
+static const struct OamData gOamData_840ADE8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840ADF0[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840ADF8[] =
+{
+ ANIMCMD_FRAME(24, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AE00[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AE08[] =
+{
+ ANIMCMD_FRAME(48, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AE10[] =
+{
+ gSpriteAnim_840ADF0,
+ gSpriteAnim_840ADF8,
+ gSpriteAnim_840AE00,
+ gSpriteAnim_840AE08,
+};
+static void sub_813D208(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AE20 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2000,
+ .oam = &gOamData_840ADE8,
+ .anims = gSpriteAnimTable_840AE10,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D208,
+};
+static const union AnimCmd Unknown_40AE38[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(128, 4),
+ ANIMCMD_FRAME(192, 4),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd Unknown_40AE4C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(64, 8),
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_FRAME(192, 8),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd Unknown_40AE60[] =
+{
+ ANIMCMD_FRAME(256, 4),
+ ANIMCMD_FRAME(0x140, 4),
+ ANIMCMD_FRAME(0x180, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd Unknown_40AE70[] =
+{
+ ANIMCMD_FRAME(0x180, 16),
+ ANIMCMD_FRAME(0x140, 16),
+ ANIMCMD_FRAME(256, 16),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gUnknown_0840AE80[] =
+{
+ Unknown_40AE38,
+ Unknown_40AE4C,
+ Unknown_40AE60,
+ Unknown_40AE70,
+};
+static const struct OamData gOamData_840AE90 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_840AE98 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_840AEA0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 2,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840AEA8[] =
+{
+ ANIMCMD_FRAME(80, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEB0[] =
+{
+ ANIMCMD_FRAME(84, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEB8[] =
+{
+ ANIMCMD_FRAME(88, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEC0[] =
+{
+ ANIMCMD_FRAME(92, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEC8[] =
+{
+ ANIMCMD_FRAME(96, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AED0[] =
+{
+ ANIMCMD_FRAME(100, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AED8[] =
+{
+ ANIMCMD_FRAME(104, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEE0[] =
+{
+ ANIMCMD_FRAME(112, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEE8[] =
+{
+ ANIMCMD_FRAME(113, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEF0[] =
+{
+ ANIMCMD_FRAME(114, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEF8[] =
+{
+ ANIMCMD_FRAME(115, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF00[] =
+{
+ ANIMCMD_FRAME(116, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF08[] =
+{
+ ANIMCMD_FRAME(117, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF10[] =
+{
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF18[] =
+{
+ gSpriteAnim_840AEA8,
+ gSpriteAnim_840AEB0,
+ gSpriteAnim_840AEB8,
+ gSpriteAnim_840AEC0,
+ gSpriteAnim_840AEC8,
+ gSpriteAnim_840AED0,
+ gSpriteAnim_840AED8,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF34[] =
+{
+ gSpriteAnim_840AEE0,
+ gSpriteAnim_840AEE8,
+ gSpriteAnim_840AEF0,
+ gSpriteAnim_840AEF8,
+ gSpriteAnim_840AF00,
+ gSpriteAnim_840AF08,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF4C[] =
+{
+ gSpriteAnim_840AF10,
+};
+static const s16 gUnknown_0840AF50[][2] =
+{
+ {0, -72},
+ {1, -56},
+ {2, -40},
+ {3, -24},
+ {4, 8},
+ {5, 24},
+ {3, 40},
+ {1, 56},
+ {6, 72},
+};
+static const s16 gUnknown_0840AF74[][2] =
+{
+ {0, -28},
+ {1, -20},
+ {2, -12},
+ {3, -4},
+ {2, 4},
+ {4, 12},
+ {5, 20},
+ {3, 28},
+};
+static void sub_813D908(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AF94 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AE90,
+ .anims = gSpriteAnimTable_840AF18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct SpriteTemplate gSpriteTemplate_840AFAC =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AE98,
+ .anims = gSpriteAnimTable_840AF34,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct SpriteTemplate gSpriteTemplate_840AFC4 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AEA0,
+ .anims = gSpriteAnimTable_840AF4C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct OamData gOamData_840AFDC =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840AFE4[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840AFEC[] =
+{
+ gSpriteAnim_840AFE4,
+};
+static void sub_813DA64(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AFF0 =
+{
+ .tileTag = 2002,
+ .paletteTag = 2002,
+ .oam = &gOamData_840AFDC,
+ .anims = gSpriteAnimTable_840AFEC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813DA64,
+};
+const struct SpriteSheet gUnknown_0840B008[] =
+{
+ {gIntroTiles, 0x1400, 2000},
+ {NULL},
+};
+const struct SpriteSheet gUnknown_0840B018[] =
+{
+ {gIntro1EonTiles, 0x400, 2002},
+ {NULL},
+};
+const struct SpritePalette gUnknown_0840B028[] =
+{
+ {Palette_406340, 2000},
+ {Palette_406360, 2001},
+ {gIntro1EonPalette, 2002},
+ {NULL},
+};
+static const union AnimCmd gUnknown_0840B048[] =
+{
+ ANIMCMD_FRAME(3, 0),
+ ANIMCMD_END,
+};
+static const union AnimCmd gUnknown_0840B050[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gUnknown_0840B058[] =
+{
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gUnknown_0840B064[] =
+{
+ gUnknown_0840B048,
+ gUnknown_0840B050,
+ gUnknown_0840B058,
+};
+static const struct OamData gOamData_840B070 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B078[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B080[] =
+{
+ gSpriteAnim_840B078,
+};
+static void sub_813E30C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B084 =
+{
+ .tileTag = 2002,
+ .paletteTag = 2002,
+ .oam = &gOamData_840B070,
+ .anims = gSpriteAnimTable_840B080,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E30C,
+};
+static const struct OamData gOamData_840B09C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B0A4[] =
+{
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B0AC[] =
+{
+ gSpriteAnim_840B0A4,
+};
+static void sub_813E4B8(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B09C,
+ .anims = gSpriteAnimTable_840B0AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E4B8,
+};
+static const struct OamData gOamData_840B0C8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B0D0[] =
+{
+ ANIMCMD_FRAME(14, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B0D8[] =
+{
+ gSpriteAnim_840B0D0,
+};
+static void sub_813E5E0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0DC =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B0C8,
+ .anims = gSpriteAnimTable_840B0D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E5E0,
+};
+static void sub_813E6C0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B0C8,
+ .anims = gSpriteAnimTable_840B0D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E6C0,
+};
+static const struct OamData gOamData_840B10C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B114[] =
+{
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840B120[] =
+{
+ gSpriteAnim_840B114,
+};
+static void sub_813E804(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B124 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B10C,
+ .anims = gSpriteAnimTable_840B120,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E804,
+};
+static const struct OamData gOamData_840B13C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B144[] =
+{
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B14C[] =
+{
+ gSpriteAnim_840B144,
+};
+static void sub_813E980(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B150 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E980,
+};
+static const u8 gUnknown_0840B168[] = {0xE6, 0xEB, 0xE4, 0xEA, 0xE5, 0xE9, 0xE7, 0xE8};
+static void sub_813EA60(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B170 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EA60,
+};
+static const u16 gUnknown_0840B188[] = {0x200, 0x1C0, 0x180, 0x140, 0x100, 0xE0, 0xC0, 0xA0, 0x80, 0x80};
+static const struct OamData gOamData_840B19C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1A4[] =
+{
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1AC[] =
+{
+ gSpriteAnim_840B1A4,
+};
+static void sub_813EBBC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EBBC,
+};
+static void sub_813EC90(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1C8 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EC90,
+};
+static const struct OamData gOamData_840B1E0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1E8[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1F0[] =
+{
+ gSpriteAnim_840B1E8,
+};
+static void sub_813EDFC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B1E0,
+ .anims = gSpriteAnimTable_840B1F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EDFC,
+};
+const struct SpriteSheet gIntro3PokeballGfx_Table[] =
+{
+ {gInterfaceGfx_PokeBall, 0x100, 2002},
+ {NULL},
+};
+const struct SpriteSheet gIntro3MiscGfx_Table[] =
+{
+ {gIntro3MiscTiles, 0xa00, 2003},
+ {NULL},
+};
+const struct SpritePalette gInterfacePokeballPal_Table[] =
+{
+ {gInterfacePal_PokeBall, 2002},
+ {NULL},
+};
+const struct SpritePalette gIntro3MiscPal_Table[] =
+{
+ {gIntro3Misc1Palette, 2003},
+ {gIntro3Misc2Palette, 2004},
+ {NULL},
+};
+const u32 unusedData = 0x02000000;
+
static void MainCB2_EndIntro(void);
static void Task_IntroLoadPart1Graphics(u8);
static void Task_IntroFadeIn(u8);
@@ -129,18 +799,18 @@ static void sub_813CCE8(u8);
static u16 sub_813CE88(u16, s16, s16, u16, u8);
static u8 sub_813CFA8(u16, u16, u16, u16);
static void sub_813D084(u8);
-void sub_813D220(struct Sprite *);
-void sub_813D368(struct Sprite *);
-void sub_813D414(struct Sprite *);
-void SpriteCB_WaterDropFall(struct Sprite *);
+static void sub_813D220(struct Sprite *);
+static void sub_813D368(struct Sprite *);
+static void sub_813D414(struct Sprite *);
+static void SpriteCB_WaterDropFall(struct Sprite *);
static u8 CreateWaterDrop(s16, s16, u16, u16, u16, u8);
-void sub_813D788(struct Sprite *);
-void sub_813D880(struct Sprite *);
+static void sub_813D788(struct Sprite *);
+static void sub_813D880(struct Sprite *);
static u8 CreateGameFreakLogo(s16, s16, u8);
-void sub_813DB9C(struct Sprite *);
-void sub_813DE70(struct Sprite *);
-void sub_813E10C(struct Sprite *);
-void sub_813E210(struct Sprite *);
+static void sub_813DB9C(struct Sprite *);
+static void sub_813DE70(struct Sprite *);
+static void sub_813E10C(struct Sprite *);
+static void sub_813E210(struct Sprite *);
static void sub_813E580(u16, u16);
static void sub_813E7C0(u8);
static void sub_813E930(u8);
@@ -181,7 +851,7 @@ static void LoadCopyrightGraphics(u16 a1, u16 a2, u16 a3)
static void SerialCb_CopyrightScreen(void)
{
- GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_03005EE0);
+ GameCubeMultiBoot_HandleSerialInterrupt(&gMultibootProgramStruct);
}
static u8 SetUpCopyrightScreen(void)
@@ -209,7 +879,11 @@ static u8 SetUpCopyrightScreen(void)
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
- REG_BG0CNT = 1792;
+ REG_BG0CNT = BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(7)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
ime = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -218,15 +892,15 @@ static u8 SetUpCopyrightScreen(void)
SetVBlankCallback(VBlankCB_Intro);
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON;
SetSerialCallback(SerialCb_CopyrightScreen);
- GameCubeMultiBoot_Init(&gUnknown_03005EE0);
+ GameCubeMultiBoot_Init(&gMultibootProgramStruct);
default:
UpdatePaletteFade();
gMain.state++;
- GameCubeMultiBoot_Main(&gUnknown_03005EE0);
+ GameCubeMultiBoot_Main(&gMultibootProgramStruct);
break;
case 140:
- GameCubeMultiBoot_Main(&gUnknown_03005EE0);
- if (gUnknown_03005EE0.gcmb_field_2 != 1)
+ GameCubeMultiBoot_Main(&gMultibootProgramStruct);
+ if (gMultibootProgramStruct.gcmb_field_2 != 1)
{
BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0, 0x10, 0);
gMain.state++;
@@ -237,9 +911,9 @@ static u8 SetUpCopyrightScreen(void)
break;
CreateTask(Task_IntroLoadPart1Graphics, 0);
SetMainCallback2(MainCB2_Intro);
- if (gUnknown_03005EE0.gcmb_field_2)
+ if (gMultibootProgramStruct.gcmb_field_2)
{
- GameCubeMultiBoot_ExecuteProgram(&gUnknown_03005EE0);
+ GameCubeMultiBoot_ExecuteProgram(&gMultibootProgramStruct);
}
else
{
@@ -257,7 +931,7 @@ void c2_copyright_1(void)
if (!SetUpCopyrightScreen())
{
sub_8052E4C();
- sub_81251B8();
+ ResetSaveCounters();
sub_8125EC8(0);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
ClearSav2();
@@ -288,13 +962,13 @@ static void Task_IntroLoadPart1Graphics(u8 taskId)
DmaClear16(3, VRAM + 0xA800, 0x800);
LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(VRAM + 0xB000));
DmaClear16(3, VRAM + 0xB800, 0x800);
- LoadPalette(gIntro1BGPals, 0, 0x200);
- REG_BG3CNT = 0x9603;
- REG_BG2CNT = 0x9402;
- REG_BG1CNT = 0x9201;
- REG_BG0CNT = 0x9000;
- LoadCompressedObjectPic(&gUnknown_0840B008);
- LoadCompressedObjectPic(&gUnknown_0840B018);
+ LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals));
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(16) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ LoadCompressedObjectPic(&gUnknown_0840B008[0]);
+ LoadCompressedObjectPic(&gUnknown_0840B018[0]);
LoadSpritePalettes(gUnknown_0840B028);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E);
@@ -323,19 +997,19 @@ static void Task_IntroWaterDrops(u8 taskId)
//start moving rock
if (gIntroFrameCounter == 76)
gSprites[gTasks[taskId].data[0]].data0 = 1;
-
+
//drop rock
if (gIntroFrameCounter == 251)
gSprites[gTasks[taskId].data[0]].data0 = 2;
-
+
if (gIntroFrameCounter == 368)
CreateWaterDrop(48, 0, 0x400, 5, 0x70, TRUE);
if (gIntroFrameCounter == 384)
CreateWaterDrop(200, 60, 0x400, 9, 0x80, TRUE);
-
+
if (gIntroFrameCounter == 560)
CreateGameFreakLogo(DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, CreateTask(sub_813CCE8, 0));
-
+
if (gIntroFrameCounter > 739)
{
gTasks[taskId].data[1] = 0x50;
@@ -353,7 +1027,7 @@ static void Task_IntroScrollDownAndShowEon(u8 taskId)
if (gIntroFrameCounter < 904)
{
s32 r2;
-
+
//slide backgrounds downward
r2 = (gTasks[taskId].data[1] << 16) + (u16)gTasks[taskId].data[2] - 0xC000;
gTasks[taskId].data[1] = r2 >> 16;
@@ -367,12 +1041,12 @@ static void Task_IntroScrollDownAndShowEon(u8 taskId)
gTasks[taskId].data[5] = r2 >> 16;
gTasks[taskId].data[6] = r2;
REG_BG0VOFS = gTasks[taskId].data[5];
-
+
//show Lati@s sprite
if (gIntroFrameCounter == 880)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_840AFF0, 200, 160, 10);
-
+
gSprites[spriteId].invisible = 1;
}
}
@@ -412,7 +1086,7 @@ static void Task_IntroLoadPart2Graphics(u8 taskId)
static void Task_IntroStartBikeRide(u8 taskId)
{
u8 spriteId;
-
+
if (gUnknown_02039318 == 0)
LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet);
else
@@ -454,7 +1128,7 @@ static void Task_IntroHandleBikeAndEonMovement(u8 taskId)
{
s16 a;
u16 sine;
-
+
if (gIntroFrameCounter > 1823)
{
BeginNormalPaletteFade(0xFFFFFFFF, 16, 0, 16, 0xFFFF);
@@ -472,7 +1146,7 @@ static void Task_IntroHandleBikeAndEonMovement(u8 taskId)
gSprites[gTasks[taskId].data[1]].data0 = 3;
if (gIntroFrameCounter == 1727)
gSprites[gTasks[taskId].data[1]].data0 = 4;
-
+
//TODO: Clean this up
a = (((u16)gTasks[taskId].data[3] << 16) >> 18) & 0x7F;
sine = Sin(a, 48);
@@ -509,7 +1183,7 @@ static void Task_IntroLoadPart3Graphics(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x4883;
+ REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_256COLOR | BGCNT_AFF256x256;
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
gTasks[taskId].func = Task_IntroSpinAndZoomPokeball;
gIntroFrameCounter = 0;
@@ -545,7 +1219,7 @@ static void Task_IntroLoadPart3Streaks(u8 taskId)
{
u16 i;
void *vram;
-
+
intro_reset_and_hide_bgs();
for (i = 0; i < 32; i++)
{
@@ -574,9 +1248,9 @@ static void Task_IntroLoadPart3Streaks(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gIntro3PokeballGfx_Table);
- LoadCompressedObjectPic(&gIntro3MiscGfx_Table);
- LoadCompressedObjectPalette(&gInterfacePokeballPal_Table);
+ LoadCompressedObjectPic(&gIntro3PokeballGfx_Table[0]);
+ LoadCompressedObjectPic(&gIntro3MiscGfx_Table[0]);
+ LoadCompressedObjectPalette(&gInterfacePokeballPal_Table[0]);
LoadSpritePalettes(gIntro3MiscPal_Table);
gTasks[taskId].func = task_intro_14;
}
@@ -587,8 +1261,16 @@ static void task_intro_14(u8 taskId)
REG_WIN0V = 0xA0;
REG_WININ = 0x1C;
REG_WINOUT = 0x1D;
- REG_BG3CNT = 0x603;
- REG_BG0CNT = 0x700;
+ REG_BG3CNT = BGCNT_PRIORITY(3)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(6)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
+ REG_BG0CNT = BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(7)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
gTasks[taskId].data[15] = CreateTask(task_intro_20, 0);
gTasks[gTasks[taskId].data[15]].data[0] = 0;
@@ -599,11 +1281,11 @@ static void task_intro_14(u8 taskId)
static void task_intro_15(u8 taskId)
{
u16 foo = gTasks[taskId].data[0];
-
+
if (gTasks[taskId].data[0] != 32)
{
u32 bar; //needed to match for some reason
-
+
gTasks[taskId].data[0] += 4;
REG_WIN0V = (gTasks[taskId].data[0] * 256) - (bar = foo - 0x9C);
}
@@ -628,7 +1310,7 @@ static void task_intro_17(u8 taskId)
static void Task_IntroPokemonBattle(u8 taskId)
{
u8 spriteId;
-
+
if (gIntroFrameCounter == 80)
{
spriteId = sub_813CE88(SPECIES_SHARPEDO, 0xF0, 0xA0, 5, 1);
@@ -742,18 +1424,21 @@ static void task_intro_19(u8 taskId)
static void task_intro_20(u8 taskId)
{
+#define BG2_FLAGS (BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256)
+#define DISPCNT_FLAGS (DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON)
+
gTasks[taskId].data[15]++;
switch (gTasks[taskId].data[0])
{
case 0:
- REG_DISPCNT = 0x3940;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
REG_BG2CNT = 0;
gTasks[taskId].data[0] = 0xFF;
break;
case 2:
BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[0] = 20;
@@ -766,8 +1451,8 @@ static void task_intro_20(u8 taskId)
break;
case 3:
BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[0] = 0x1E;
@@ -780,8 +1465,8 @@ static void task_intro_20(u8 taskId)
break;
case 4:
BeginNormalPaletteFade(1, 5, 0, 0x10, 0x37F7);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 8;
@@ -798,6 +1483,9 @@ static void task_intro_20(u8 taskId)
case 0xFF: //needed to prevent jump table optimization
break;
}
+
+#undef BG2_FLAGS
+#undef DISPCNT_FLAGS
}
static void intro_reset_and_hide_bgs(void)
@@ -834,7 +1522,7 @@ static void sub_813CCE8(u8 taskId)
{
u32 foo;
u32 bar asm("r2");
-
+
gTasks[taskId].data[1]--;
//tail merge at _0813CDC2
foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0);
@@ -865,7 +1553,7 @@ static void sub_813CCE8(u8 taskId)
{
u32 foo;
u32 bar asm("r2");
-
+
gTasks[taskId].data[1]++;
//_0813CDC2
foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0);
@@ -1077,7 +1765,7 @@ void sub_813CE30(u16 scrX, u16 scrY, u16 zoom, u16 alpha)
{
struct BgAffineSrcData src;
struct BgAffineDstData dest;
-
+
src.texX = 0x8000;
src.texY = 0x8000;
src.scrX = scrX;
@@ -1098,7 +1786,7 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front)
{
void *pal;
u8 spriteId;
-
+
if (front)
LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1);
else
@@ -1115,7 +1803,7 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front)
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);
LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + d * 0x10, 0x20);
sub_8143680(d, d);
@@ -1129,7 +1817,7 @@ static u8 sub_813CFA8(u16 a, u16 b, u16 c, u16 d)
static void sub_813D084(u8 a)
{
u16 color;
-
+
switch (a)
{
default:
@@ -1147,10 +1835,10 @@ static void sub_813D084(u8 a)
gPlttBufferFaded[241] = color;
}
-void sub_813D0CC(struct Sprite *sprite)
+static void sub_813D0CC(struct Sprite *sprite)
{
u8 r0;
-
+
if (sprite->data2 >= 192)
{
if (sprite->data3 != 0)
@@ -1174,7 +1862,7 @@ void sub_813D0CC(struct Sprite *sprite)
}
}
-void sub_813D158(struct Sprite *sprite)
+static void sub_813D158(struct Sprite *sprite)
{
if (gSprites[sprite->data7].data7 != 0)
{
@@ -1198,13 +1886,13 @@ void sub_813D158(struct Sprite *sprite)
}
}
-void sub_813D208(struct Sprite *sprite)
+static void sub_813D208(struct Sprite *sprite)
{
if (sprite->data0 != 0)
sprite->callback = sub_813D220;
}
-void sub_813D220(struct Sprite *sprite)
+static void sub_813D220(struct Sprite *sprite)
{
if (sprite->pos1.x <= 116)
{
@@ -1229,7 +1917,7 @@ void sub_813D220(struct Sprite *sprite)
s16 var3;
s16 var4;
s16 temp;
-
+
data4 = sprite->data4;
sin1 = gSineTable[(u8)data4];
sin2 = gSineTable[(u8)(data4 + 64)];
@@ -1253,7 +1941,7 @@ void sub_813D220(struct Sprite *sprite)
}
}
-void sub_813D368(struct Sprite *sprite)
+static void sub_813D368(struct Sprite *sprite)
{
SetOamMatrix(sprite->data1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
SetOamMatrix(sprite->data1 + 1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
@@ -1261,7 +1949,7 @@ void sub_813D368(struct Sprite *sprite)
if (sprite->data4 != 64)
{
u16 data4;
-
+
sprite->data4 -= 8;
data4 = sprite->data4;
sprite->pos2.x = gSineTable[(u8)(data4 + 64)] / 64;
@@ -1274,12 +1962,12 @@ void sub_813D368(struct Sprite *sprite)
}
}
-void sub_813D414(struct Sprite *sprite)
+static void sub_813D414(struct Sprite *sprite)
{
if (sprite->data0 != 2)
{
s16 r2;
-
+
sprite->data4 += 8;
r2 = gSineTable[(u8)sprite->data4] / 16 + 64;
sprite->pos2.x = gSineTable[(u8)(r2 + 64)] / 64;
@@ -1291,7 +1979,7 @@ void sub_813D414(struct Sprite *sprite)
}
}
-void SpriteCB_WaterDropFall(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1314,7 +2002,7 @@ void SpriteCB_WaterDropFall(struct Sprite *sprite)
}
//Duplicate function
-void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1340,7 +2028,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
{
u8 spriteId;
u8 oldSpriteId;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840AE20, x, y, 0);
gSprites[spriteId].data0 = 0;
gSprites[spriteId].data7 = 0;
@@ -1358,7 +2046,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
else
gSprites[spriteId].callback = SpriteCB_WaterDropFall_2;
oldSpriteId = spriteId;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840AE20, x, y, 0);
gSprites[spriteId].data7 = oldSpriteId;
gSprites[spriteId].data1 = d + 1;
@@ -1366,7 +2054,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
gSprites[spriteId].oam.matrixNum = d + 1;
CalcCenterToCornerVec(&gSprites[spriteId], 0, 2, 2);
gSprites[spriteId].callback = sub_813D158;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840AE20, x, y, 0);
gSprites[spriteId].data7 = oldSpriteId;
gSprites[spriteId].data1 = d + 2;
@@ -1375,15 +2063,15 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
gSprites[spriteId].oam.matrixNum = d + 2;
CalcCenterToCornerVec(&gSprites[spriteId], 0, 2, 2);
gSprites[spriteId].callback = sub_813D158;
-
+
SetOamMatrix(d, c + 32, 0, 0, c + 32);
SetOamMatrix(d + 1, c + 32, 0, 0, c + 32);
SetOamMatrix(d + 2, c + 32, 0, 0, 2 * (c + 32));
-
+
return oldSpriteId;
}
-void sub_813D788(struct Sprite *sprite)
+static void sub_813D788(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1435,7 +2123,7 @@ void sub_813D788(struct Sprite *sprite)
}
}
-void sub_813D880(struct Sprite *sprite)
+static void sub_813D880(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1462,7 +2150,7 @@ void sub_813D880(struct Sprite *sprite)
sprite->data1 += 4;
}
-void sub_813D908(struct Sprite *sprite)
+static void sub_813D908(struct Sprite *sprite)
{
if (gTasks[sprite->data0].data[0] == 0)
{
@@ -1482,7 +2170,7 @@ static u8 CreateGameFreakLogo(s16 a, s16 b, u8 c)
{
u8 spriteId;
u16 i;
-
+
for (i = 0; i < 9; i++)
{
spriteId = CreateSprite(&gSpriteTemplate_840AF94, gUnknown_0840AF50[i][1] + a, b - 4, 0);
@@ -1497,16 +2185,16 @@ static u8 CreateGameFreakLogo(s16 a, s16 b, u8 c)
}
spriteId = CreateSprite(&gSpriteTemplate_840AFC4, 120, b - 4, 0);
gSprites[spriteId].data0 = c;
-
+
return spriteId;
}
#ifdef NONMATCHING
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
sprite->data7++;
-
- switch(sprite->data0)
+
+ switch (sprite->data0)
{
case 0:
default:
@@ -1527,7 +2215,7 @@ void sub_813DA64(struct Sprite *sprite)
s16 foo;
s16 r5;
s16 r2;
-
+
//_0813DAC0
if (sprite->data3 < 0x50)
{
@@ -1543,9 +2231,9 @@ void sub_813DA64(struct Sprite *sprite)
foo = sin1 * sprite->data1 / 256;
r5 = -r3 * sprite->data1 / 256;
r2 = r3 * sprite->data1 / 256;
-
+
SetOamMatrix(1, r6, r2, r5, foo);
-
+
if (sprite->data1 < 0x100)
sprite->data1 += 8;
else
@@ -1563,178 +2251,178 @@ void sub_813DA64(struct Sprite *sprite)
}
#else
__attribute__((naked))
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- ldrh r0, [r4, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x3C]\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- beq _0813DA7C\n\
- cmp r0, 0x1\n\
- beq _0813DAC0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ ldrh r0, [r4, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x3C]\n\
+ movs r1, 0x2E\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ beq _0813DA7C\n\
+ cmp r0, 0x1\n\
+ beq _0813DAC0\n\
_0813DA7C:\n\
- ldrb r0, [r4, 0x1]\n\
- movs r1, 0x3\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x1]\n\
- ldrb r1, [r4, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x3]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x3\n\
- movs r3, 0x3\n\
- bl CalcCenterToCornerVec\n\
- adds r2, r4, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x2E]\n\
- movs r0, 0x80\n\
- strh r0, [r4, 0x30]\n\
- ldr r0, _0813DABC @ =0x0000ffe8\n\
- strh r0, [r4, 0x32]\n\
- movs r0, 0\n\
- b _0813DB92\n\
- .align 2, 0\n\
+ ldrb r0, [r4, 0x1]\n\
+ movs r1, 0x3\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x2\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x3]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x3\n\
+ movs r3, 0x3\n\
+ bl CalcCenterToCornerVec\n\
+ adds r2, r4, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x2E]\n\
+ movs r0, 0x80\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, _0813DABC @ =0x0000ffe8\n\
+ strh r0, [r4, 0x32]\n\
+ movs r0, 0\n\
+ b _0813DB92\n\
+ .align 2, 0\n\
_0813DABC: .4byte 0x0000ffe8\n\
_0813DAC0:\n\
- ldrh r1, [r4, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x4F\n\
- bgt _0813DAF8\n\
- lsls r0, r1, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x78\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x26]\n\
- ldrh r0, [r4, 0x34]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x8C\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x24]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x40\n\
- ble _0813DAF8\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0xC\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x5]\n\
+ ldrh r1, [r4, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x4F\n\
+ bgt _0813DAF8\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x78\n\
+ bl Sin\n\
+ negs r0, r0\n\
+ strh r0, [r4, 0x26]\n\
+ ldrh r0, [r4, 0x34]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x8C\n\
+ bl Sin\n\
+ negs r0, r0\n\
+ strh r0, [r4, 0x24]\n\
+ movs r1, 0x34\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x40\n\
+ ble _0813DAF8\n\
+ ldrb r0, [r4, 0x5]\n\
+ movs r1, 0xC\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x5]\n\
_0813DAF8:\n\
- ldr r2, _0813DB60 @ =gSineTable\n\
- ldrh r1, [r4, 0x32]\n\
- lsls r0, r1, 24\n\
- lsrs r0, 23\n\
- adds r0, r2\n\
- ldrh r3, [r0]\n\
- adds r1, 0x40\n\
- lsls r1, 24\n\
- lsrs r1, 23\n\
- adds r1, r2\n\
- movs r2, 0\n\
- ldrsh r0, [r1, r2]\n\
- movs r1, 0x30\n\
- ldrsh r2, [r4, r1]\n\
- adds r1, r0, 0\n\
- muls r1, r2\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _0813DB20\n\
- adds r0, 0xFF\n\
+ ldr r2, _0813DB60 @ =gSineTable\n\
+ ldrh r1, [r4, 0x32]\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 23\n\
+ adds r0, r2\n\
+ ldrh r3, [r0]\n\
+ adds r1, 0x40\n\
+ lsls r1, 24\n\
+ lsrs r1, 23\n\
+ adds r1, r2\n\
+ movs r2, 0\n\
+ ldrsh r0, [r1, r2]\n\
+ movs r1, 0x30\n\
+ ldrsh r2, [r4, r1]\n\
+ adds r1, r0, 0\n\
+ muls r1, r2\n\
+ adds r0, r1, 0\n\
+ cmp r1, 0\n\
+ bge _0813DB20\n\
+ adds r0, 0xFF\n\
_0813DB20:\n\
- lsls r0, 8\n\
- lsrs r6, r0, 16\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- negs r0, r3\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB32\n\
- adds r0, 0xFF\n\
+ lsls r0, 8\n\
+ lsrs r6, r0, 16\n\
+ lsls r0, r3, 16\n\
+ asrs r3, r0, 16\n\
+ negs r0, r3\n\
+ muls r0, r2\n\
+ cmp r0, 0\n\
+ bge _0813DB32\n\
+ adds r0, 0xFF\n\
_0813DB32:\n\
- lsls r0, 8\n\
- lsrs r5, r0, 16\n\
- adds r0, r3, 0\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB40\n\
- adds r0, 0xFF\n\
+ lsls r0, 8\n\
+ lsrs r5, r0, 16\n\
+ adds r0, r3, 0\n\
+ muls r0, r2\n\
+ cmp r0, 0\n\
+ bge _0813DB40\n\
+ adds r0, 0xFF\n\
_0813DB40:\n\
- lsls r0, 8\n\
- lsrs r2, r0, 16\n\
- adds r1, r6, 0\n\
- adds r3, r5, 0\n\
- str r1, [sp]\n\
- movs r0, 0x1\n\
- bl SetOamMatrix\n\
- ldrh r1, [r4, 0x30]\n\
- movs r2, 0x30\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0xFF\n\
- bgt _0813DB64\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- b _0813DB68\n\
- .align 2, 0\n\
+ lsls r0, 8\n\
+ lsrs r2, r0, 16\n\
+ adds r1, r6, 0\n\
+ adds r3, r5, 0\n\
+ str r1, [sp]\n\
+ movs r0, 0x1\n\
+ bl SetOamMatrix\n\
+ ldrh r1, [r4, 0x30]\n\
+ movs r2, 0x30\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _0813DB64\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ b _0813DB68\n\
+ .align 2, 0\n\
_0813DB60: .4byte gSineTable\n\
_0813DB64:\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
_0813DB68:\n\
- strh r0, [r4, 0x30]\n\
- ldrh r1, [r4, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x17\n\
- bgt _0813DB78\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x32]\n\
+ strh r0, [r4, 0x30]\n\
+ ldrh r1, [r4, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x17\n\
+ bgt _0813DB78\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r4, 0x32]\n\
_0813DB78:\n\
- ldrh r2, [r4, 0x34]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x3F\n\
- bgt _0813DB86\n\
- adds r0, r2, 0x2\n\
- b _0813DB92\n\
+ ldrh r2, [r4, 0x34]\n\
+ movs r1, 0x34\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x3F\n\
+ bgt _0813DB86\n\
+ adds r0, r2, 0x2\n\
+ b _0813DB92\n\
_0813DB86:\n\
- ldrh r1, [r4, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0813DB94\n\
- adds r0, r2, 0x1\n\
+ ldrh r1, [r4, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0813DB94\n\
+ adds r0, r2, 0x1\n\
_0813DB92:\n\
- strh r0, [r4, 0x34]\n\
+ strh r0, [r4, 0x34]\n\
_0813DB94:\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
-void sub_813DB9C(struct Sprite *sprite)
+static void sub_813DB9C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1789,7 +2477,7 @@ void sub_813DB9C(struct Sprite *sprite)
&& sprite->pos1.x + sprite->pos2.x > -64)
{
u16 r2;
-
+
sprite->pos2.y = -(sprite->data4 * sprite->data4) / 8;
if (sprite->data2 != 0)
sprite->pos2.x += sprite->data4;
@@ -1806,11 +2494,11 @@ void sub_813DB9C(struct Sprite *sprite)
else
{
DestroySprite(sprite);
- }
+ }
}
}
-void sub_813DD58(struct Sprite *sprite)
+static void sub_813DD58(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1853,7 +2541,7 @@ void sub_813DD58(struct Sprite *sprite)
}
}
-void sub_813DE70(struct Sprite *sprite)
+static void sub_813DE70(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1894,7 +2582,7 @@ void sub_813DE70(struct Sprite *sprite)
case 4:
{
s16 r4, r5;
-
+
r5 = gSprites[sprite->data6].pos1.x + gSprites[sprite->data6].pos2.x;
r4 = gSprites[sprite->data6].pos1.y + gSprites[sprite->data6].pos2.y;
DestroySprite(&gSprites[sprite->data6]);
@@ -1904,7 +2592,7 @@ void sub_813DE70(struct Sprite *sprite)
gSprites[sprite->data6].data1 = 1;
gSprites[sprite->data6].data2 = 1;
sub_813E580(r5, r4);
-
+
r5 = gSprites[sprite->data7].pos1.x + gSprites[sprite->data7].pos2.x;
r4 = gSprites[sprite->data7].pos1.y + gSprites[sprite->data7].pos2.y;
DestroySprite(&gSprites[sprite->data7]);
@@ -1914,7 +2602,7 @@ void sub_813DE70(struct Sprite *sprite)
gSprites[sprite->data7].data1 = 2;
gSprites[sprite->data7].data2 = 0;
sub_813E580(r5, r4);
-
+
BeginNormalPaletteFade(0xFF0000, 0, 16, 16, RGB(31, 23, 31));
sprite->data0 = 1;
break;
@@ -1931,7 +2619,7 @@ void sub_813DE70(struct Sprite *sprite)
}
}
-void sub_813E10C(struct Sprite *sprite)
+static void sub_813E10C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1999,7 +2687,7 @@ void sub_813E10C(struct Sprite *sprite)
}
}
-void sub_813E210(struct Sprite *sprite)
+static void sub_813E210(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2067,10 +2755,10 @@ void sub_813E210(struct Sprite *sprite)
}
}
-void sub_813E30C(struct Sprite *sprite)
+static void sub_813E30C(struct Sprite *sprite)
{
u16 r4, r1;
-
+
sprite->data7++;
switch (sprite->data0)
{
@@ -2122,12 +2810,12 @@ void sub_813E30C(struct Sprite *sprite)
}
}
-void sub_813E4B8(struct Sprite *sprite)
+static void sub_813E4B8(struct Sprite *sprite)
{
u16 r4;
u16 r2;
u16 r1;
-
+
sprite->data7++;
if (sprite->data7 & 1)
sprite->invisible = FALSE;
@@ -2157,7 +2845,7 @@ static void sub_813E580(u16 x, u16 y)
{
u8 i;
u8 spriteId;
-
+
for (i = 0; i < 8; i++)
{
spriteId = CreateSprite(&gSpriteTemplate_840B0B0, x, y, 0);
@@ -2168,7 +2856,7 @@ static void sub_813E580(u16 x, u16 y)
}
}
-void sub_813E5E0(struct Sprite *sprite)
+static void sub_813E5E0(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2190,13 +2878,13 @@ void sub_813E5E0(struct Sprite *sprite)
}
}
-void sub_813E6C0(struct Sprite *sprite)
+static void sub_813E6C0(struct Sprite *sprite)
{
u8 spriteId;
u8 i;
s16 var1;
s16 var2;
-
+
if (gUnknown_0203931A != 0)
{
DestroySprite(sprite);
@@ -2215,7 +2903,7 @@ void sub_813E6C0(struct Sprite *sprite)
//Make redundant copies of these variables to get the asm to match
s16 _var1 = var1;
s16 _var2 = var2;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840B0DC, _var1, _var2, r3);
if (spriteId != 64)
{
@@ -2235,7 +2923,7 @@ void sub_813E6C0(struct Sprite *sprite)
static void sub_813E7C0(u8 a)
{
u8 spriteId;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840B0F4, 0, 0, 0);
if (spriteId != 64)
{
@@ -2246,7 +2934,7 @@ static void sub_813E7C0(u8 a)
}
}
-void sub_813E804(struct Sprite *sprite)
+static void sub_813E804(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2275,7 +2963,7 @@ static void sub_813E930(u8 a)
{
u8 i;
u8 spriteId;
-
+
for (i = 0; i < 8; i++)
{
spriteId = CreateSprite(&gSpriteTemplate_840B124, gSprites[a].pos1.x, gSprites[a].pos1.y, 0);
@@ -2287,7 +2975,7 @@ static void sub_813E930(u8 a)
}
}
-void sub_813E980(struct Sprite *sprite)
+static void sub_813E980(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2297,7 +2985,7 @@ void sub_813E980(struct Sprite *sprite)
{
u8 r0;
u16 matrixNum;
-
+
sprite->invisible = gSprites[sprite->data0].invisible;
sprite->data7++;
sprite->data6 += 8;
@@ -2313,12 +3001,12 @@ void sub_813E980(struct Sprite *sprite)
}
}
-void sub_813EA60(struct Sprite *sprite)
+static void sub_813EA60(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
u8 spriteId;
-
+
if (gUnknown_0203931A != 0)
{
DestroySprite(sprite);
@@ -2355,7 +3043,7 @@ static void InitIntroTorchicAttackAnim(u8 a)
{
u8 spriteId;
u8 i;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840B170, 0, 0, 0);
if (spriteId != 64)
{
@@ -2370,8 +3058,8 @@ static void InitIntroTorchicAttackAnim(u8 a)
}
}
-void sub_813EBBC(struct Sprite *sprite)
-{
+static void sub_813EBBC(struct Sprite *sprite)
+{
if (gUnknown_0203931A != 0)
{
DestroySprite(sprite);
@@ -2390,13 +3078,13 @@ void sub_813EBBC(struct Sprite *sprite)
}
}
-void sub_813EC90(struct Sprite *sprite)
+static void sub_813EC90(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
u8 spriteId;
u16 foo;
-
+
if (gUnknown_0203931A != 0)
{
DestroySprite(sprite);
@@ -2438,7 +3126,7 @@ void sub_813EC90(struct Sprite *sprite)
static void InitIntroMudkipAttackAnim(u8 a)
{
u8 spriteId;
-
+
spriteId = CreateSprite(&gSpriteTemplate_840B1C8, 0, 0, 0);
if (spriteId != 64)
{
@@ -2449,10 +3137,10 @@ static void InitIntroMudkipAttackAnim(u8 a)
}
}
-void sub_813EDFC(struct Sprite *sprite)
+static void sub_813EDFC(struct Sprite *sprite)
{
u16 foo;
-
+
//I'm not sure why a switch statement was used here.
//if (sprite->data0 != 1) would have been more appropriate.
switch (sprite->data0)
diff --git a/src/item.c b/src/item.c
index 3f74b5925..656563ad4 100644
--- a/src/item.c
+++ b/src/item.c
@@ -61,7 +61,7 @@ void CopyItemName(u16 itemId, u8 *string)
s8 CountUsedBagPocketSlots(u8 pocket)
{
u8 i;
-
+
for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
if (gBagPockets[pocket].itemSlots[i].itemId == 0)
@@ -73,7 +73,7 @@ s8 CountUsedBagPocketSlots(u8 pocket)
bool8 IsBagPocketNonEmpty(u8 pocket)
{
u8 i;
-
+
for (i = 0; i < gBagPockets[pocket - 1].capacity; i++)
{
if (gBagPockets[pocket - 1].itemSlots[i].itemId != 0)
@@ -86,7 +86,7 @@ bool8 CheckBagHasItem(u16 itemId, u16 count)
{
u8 i;
u8 pocket;
-
+
if (ItemId_GetPocket(itemId) == 0)
return FALSE;
pocket = ItemId_GetPocket(itemId) - 1;
@@ -112,7 +112,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
u8 i;
u8 pocket;
u16 slotCapacity;
-
+
if (ItemId_GetPocket(itemId) == 0)
return FALSE;
pocket = ItemId_GetPocket(itemId) - 1;
@@ -120,7 +120,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
slotCapacity = 99;
else
slotCapacity = 999;
-
+
//Check space in any existing item slots that already contain this item
for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
@@ -135,7 +135,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
return TRUE;
}
}
-
+
//Check space in empty item slots
if (count > 0)
{
@@ -152,7 +152,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
if (count > 0)
return FALSE; //No more item slots. The bag is full
}
-
+
return TRUE;
}
@@ -162,7 +162,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
u8 pocket;
u16 slotCapacity;
struct ItemSlot newItems[64];
-
+
if (ItemId_GetPocket(itemId) == 0)
return FALSE;
pocket = ItemId_GetPocket(itemId) - 1;
@@ -172,7 +172,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
slotCapacity = 99;
else
slotCapacity = 999;
-
+
//Use any item slots that already contain this item
for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
@@ -193,7 +193,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
goto copy_items;
}
}
-
+
//Put any remaining items into new item slots.
if (count > 0)
{
@@ -214,7 +214,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
if (count > 0)
return FALSE; //No more empty item slots. The bag is full.
}
-
+
copy_items:
//Copy pocket back into the bag.
memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot));
@@ -226,11 +226,11 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
u8 i;
u8 pocket;
u16 totalQuantity = 0;
-
+
if (ItemId_GetPocket(itemId) == 0 || itemId == 0)
return FALSE;
pocket = ItemId_GetPocket(itemId) - 1;
-
+
for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
@@ -238,7 +238,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
}
if (totalQuantity < count)
return FALSE; //We don't have enough of the item
-
+
if (gBagPockets[pocket].capacity > gUnknown_02038560
&& gBagPockets[pocket].itemSlots[gUnknown_02038560].itemId == itemId)
{
@@ -257,7 +257,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
if (count == 0)
return TRUE;
}
-
+
for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
@@ -289,7 +289,7 @@ u8 GetPocketByItemId(u16 itemId)
void ClearItemSlots(struct ItemSlot *itemSlots, u8 b)
{
u16 i;
-
+
for (i = 0; i < b; i++)
{
itemSlots[i].itemId = 0;
@@ -300,7 +300,7 @@ void ClearItemSlots(struct ItemSlot *itemSlots, u8 b)
static s32 FindFreePCItemSlot(void)
{
s8 i;
-
+
for (i = 0; i < 50; i++)
{
if (gSaveBlock1.pcItems[i].itemId == 0)
@@ -313,7 +313,7 @@ u8 CountUsedPCItemSlots(void)
{
u8 usedSlots = 0;
u8 i;
-
+
for (i = 0; i < 50; i++)
{
if (gSaveBlock1.pcItems[i].itemId != 0)
@@ -325,7 +325,7 @@ u8 CountUsedPCItemSlots(void)
bool8 CheckPCHasItem(u16 itemId, u16 count)
{
u8 i;
-
+
for (i = 0; i < 50; i++)
{
if (gSaveBlock1.pcItems[i].itemId == itemId && gSaveBlock1.pcItems[i].quantity >= count)
@@ -339,10 +339,10 @@ bool8 AddPCItem(u16 itemId, u16 count)
u8 i;
s8 freeSlot;
struct ItemSlot newItems[50];
-
+
//Copy PC items
memcpy(newItems, gSaveBlock1.pcItems, sizeof(newItems));
-
+
//Use any item slots that already contain this item
for (i = 0; i < 50; i++)
{
@@ -363,7 +363,7 @@ bool8 AddPCItem(u16 itemId, u16 count)
}
}
}
-
+
//Put any remaining items into a new item slot.
if (count > 0)
{
@@ -373,7 +373,7 @@ bool8 AddPCItem(u16 itemId, u16 count)
newItems[freeSlot].itemId = itemId;
newItems[freeSlot].quantity = count;
}
-
+
//Copy items back to the PC
memcpy(gSaveBlock1.pcItems, newItems, sizeof(gSaveBlock1.pcItems));
return TRUE;
@@ -393,7 +393,7 @@ static void CompactPCItems(void)
{
u16 i;
u16 j;
-
+
for (i = 0; i < 49; i++)
{
for (j = i + 1; j <= 49; j++)
@@ -410,7 +410,7 @@ static void CompactPCItems(void)
void SwapRegisteredBike(void)
{
- switch(gSaveBlock1.registeredItem)
+ switch (gSaveBlock1.registeredItem)
{
case 0x103:
gSaveBlock1.registeredItem = 0x110;
@@ -464,7 +464,7 @@ bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
u32 r5 = c + 1;
u8 *description = gItems[SanitizeItemId(itemId)].description;
u8 *str = a;
-
+
for (;;)
{
if (*description == 0xFF || *description == 0xFE)
diff --git a/src/item_use.c b/src/item_use.c
index 557705460..b68b72b26 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -1,21 +1,22 @@
#include "global.h"
-#include "task.h"
-#include "item.h"
-#include "palette.h"
-#include "weather.h"
-#include "string_util.h"
-#include "menu.h"
-#include "mail.h"
#include "asm.h"
-#include "rom4.h"
-#include "metatile_behavior.h"
-#include "field_player_avatar.h"
#include "event_data.h"
+#include "field_player_avatar.h"
+#include "field_player_avatar.h"
+#include "item.h"
+#include "mail.h"
#include "map_obj_lock.h"
+#include "menu.h"
+#include "metatile_behavior.h"
+#include "palette.h"
+#include "rom4.h"
#include "script.h"
-#include "field_player_avatar.h"
-#include "sound.h"
#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "task.h"
+#include "weather.h"
+#include "fieldmap.h"
extern void (* const gExitToOverworldFuncList[])();
extern void (* gUnknown_03005D00)(u8);
@@ -38,6 +39,7 @@ extern u8 GetPlayerDirectionTowardsHiddenItem(s16, s16);
extern void SetPlayerDirectionTowardsItem(u8);
extern void DisplayItemRespondingMessageAndExitItemfinder(u8);
extern void RotatePlayerAndExitItemfinder(u8);
+extern void sub_80C9838(u8, s16, s16);
extern u8 gOtherText_DadsAdvice[];
extern u8 gOtherText_CantGetOffBike[];
@@ -47,15 +49,16 @@ extern u8 gItemFinderDirections[];
extern u16 gScriptItemId;
-bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int);
+bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId);
void RunItemfinderResults(u8);
void ExitItemfinder(u8);
+void sub_80C9720(u8);
void ExecuteSwitchToOverworldFromItemUse(u8 taskId)
{
u8 taskData;
- if(gScriptItemId == 0xAF)
+ if (gScriptItemId == 0xAF)
taskData = gTasks[taskId].data[15] - 1;
else
taskData = ItemId_GetType(gScriptItemId) - 1;
@@ -67,119 +70,119 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId)
void ItemMenu_ConfirmNormalFade(u8 var)
{
- ExecuteSwitchToOverworldFromItemUse(var);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ ExecuteSwitchToOverworldFromItemUse(var);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
}
void ItemMenu_ConfirmComplexFade(u8 var)
{
- ExecuteSwitchToOverworldFromItemUse(var);
- fade_screen(1, 0);
+ ExecuteSwitchToOverworldFromItemUse(var);
+ fade_screen(1, 0);
}
void SetUpItemUseOnFieldCallback(u8 taskId)
{
- if(gTasks[taskId].data[2] != 1)
- {
- gUnknown_0300485C = (void *)ExecuteItemUseFromBlackPalette;
- ItemMenu_ConfirmNormalFade(taskId);
- }
- else
- gUnknown_03005D00(taskId);
+ if (gTasks[taskId].data[2] != 1)
+ {
+ gUnknown_0300485C = (void *)ExecuteItemUseFromBlackPalette;
+ ItemMenu_ConfirmNormalFade(taskId);
+ }
+ else
+ gUnknown_03005D00(taskId);
}
-void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *var3)
+void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text)
{
- StringExpandPlaceholders(gStringVar4, var3);
-
- 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;
- }
+ StringExpandPlaceholders(gStringVar4, 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;
+ }
}
void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 playerMenuStatus)
{
- HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice);
+ HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice);
}
void DisplayCantGetOffBikeItemMessage(u8 var1, u8 playerMenuStatus)
{
- HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike);
+ HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike);
}
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
{
- if(ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM)
- return 1;
- else if(ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone)
- return 2;
- else
- return 0;
+ if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM)
+ return 1;
+ else if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone)
+ return 2;
+ else
+ return 0;
}
void ItemMenu_ReadMail(u8 taskId)
{
- struct MailStruct mailStruct;
+ struct MailStruct mailStruct;
- if(!gPaletteFade.active)
- {
- mailStruct.itemId = gScriptItemId;
- HandleReadMail(&mailStruct, sub_80A5D04, 0);
- DestroyTask(taskId);
- }
+ if (!gPaletteFade.active)
+ {
+ mailStruct.itemId = gScriptItemId;
+ HandleReadMail(&mailStruct, sub_80A5D04, 0);
+ DestroyTask(taskId);
+ }
}
void ItemUseOutOfBattle_Mail(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gTasks[taskId].func = ItemMenu_ReadMail;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = ItemMenu_ReadMail;
}
void ItemUseOutOfBattle_Bike(u8 taskId)
{
- s16 x, y;
- u8 tileBehavior;
-
- PlayerGetDestCoords(&x, &y);
- tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
-
- if(FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road?
- || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE
- || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE
- || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE
- || MetatileBehavior_IsIsolatedHorizontalRail(tileBehavior) == TRUE)
- {
- DisplayCantGetOffBikeItemMessage(taskId, gTasks[taskId].data[2]);
- }
- else
- {
- if(IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE)
- {
- gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike;
- SetUpItemUseOnFieldCallback(taskId);
- }
- else
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]);
- }
+ s16 x, y;
+ u8 tileBehavior;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road?
+ || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE
+ || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE
+ || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE
+ || MetatileBehavior_IsIsolatedHorizontalRail(tileBehavior) == TRUE)
+ {
+ DisplayCantGetOffBikeItemMessage(taskId, gTasks[taskId].data[2]);
+ }
+ else
+ {
+ if (IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE)
+ {
+ gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike;
+ SetUpItemUseOnFieldCallback(taskId);
+ }
+ else
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]);
+ }
}
void ItemUseOnFieldCB_Bike(u8 taskId)
{
- if(ItemId_GetSecondaryId(gScriptItemId) == 0)
- GetOnOffBike(2);
- if(ItemId_GetSecondaryId(gScriptItemId) == 1)
- GetOnOffBike(4);
-
- sub_8064E2C();
- ScriptContext2_Disable();
- DestroyTask(taskId);
+ if (ItemId_GetSecondaryId(gScriptItemId) == 0)
+ GetOnOffBike(2);
+ if (ItemId_GetSecondaryId(gScriptItemId) == 1)
+ GetOnOffBike(4);
+
+ sub_8064E2C();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
}
bool32 CanFish(void)
@@ -214,31 +217,31 @@ bool32 CanFish(void)
void ItemUseOutOfBattle_Rod(u8 taskId)
{
- if(CanFish() == TRUE)
- {
- gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod;
- SetUpItemUseOnFieldCallback(taskId);
- }
- else
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]);
+ if (CanFish() == TRUE)
+ {
+ gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod;
+ SetUpItemUseOnFieldCallback(taskId);
+ }
+ else
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]);
}
void ItemUseOnFieldCB_Rod(u8 taskId)
{
- StartFishing(ItemId_GetSecondaryId(gScriptItemId));
- DestroyTask(taskId);
+ StartFishing(ItemId_GetSecondaryId(gScriptItemId));
+ DestroyTask(taskId);
}
void ItemUseOutOfBattle_Itemfinder(u8 var)
{
- IncrementGameStat(0x27);
- gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder;
- SetUpItemUseOnFieldCallback(var);
+ IncrementGameStat(0x27);
+ gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder;
+ SetUpItemUseOnFieldCallback(var);
}
void ItemUseOnFieldCB_Itemfinder(u8 taskId)
{
- if(ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE)
+ if (ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE)
gTasks[taskId].func = RunItemfinderResults;
else
DisplayItemMessageOnField(taskId, gOtherText_NoResponse, ExitItemfinder, 0);
@@ -247,16 +250,16 @@ void ItemUseOnFieldCB_Itemfinder(u8 taskId)
void RunItemfinderResults(u8 taskId)
{
u8 playerDir;
- u8 playerDirToItem;
+ u8 playerDirToItem;
u8 i;
s16 *data = gTasks[taskId].data;
- if(!data[3])
+ if (!data[3])
{
- if(data[4] == 4)
+ if (data[4] == 4)
{
playerDirToItem = GetPlayerDirectionTowardsHiddenItem(data[0], data[1]);
- if(playerDirToItem)
+ if (playerDirToItem)
{
SetPlayerDirectionTowardsItem(gItemFinderDirections[playerDirToItem - 1]);
gTasks[taskId].func = DisplayItemRespondingMessageAndExitItemfinder;
@@ -265,7 +268,7 @@ void RunItemfinderResults(u8 taskId)
{
playerDir = player_get_direction_lower_nybble();
- // rotate player clockwise depending on current direction.
+ // rotate player clockwise depending on current direction.
for (i = 0; i < 4; i++)
if (playerDir == gItemFinderDirections[i])
data[5] = (i + 1) & 3;
@@ -274,7 +277,7 @@ void RunItemfinderResults(u8 taskId)
data[3] = 0;
data[2] = 0;
}
- return;
+ return;
}
PlaySE(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder.
data[4]++;
@@ -284,131 +287,102 @@ void RunItemfinderResults(u8 taskId)
void ExitItemfinder(u8 taskId)
{
- MenuZeroFillWindowRect(0, 14, 29, 19);
- sub_8064E2C();
- ScriptContext2_Disable();
- DestroyTask(taskId);
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ sub_8064E2C();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
}
-// too much struct math.
-__attribute__((naked))
-bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int var)
+bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- mov r4, sp\n\
- adds r4, 0x2\n\
- mov r0, sp\n\
- adds r1, r4, 0\n\
- bl PlayerGetDestCoords\n\
- ldr r1, _080C9618 @ =gTasks\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strh r1, [r0, 0xC]\n\
- movs r3, 0\n\
- mov r9, r4\n\
- ldrb r0, [r5, 0x3]\n\
- cmp r3, r0\n\
- bge _080C95FC\n\
- subs r1, 0x5\n\
- mov r8, r1\n\
-_080C9580:\n\
- lsls r3, 16\n\
- asrs r1, r3, 16\n\
- ldr r2, [r5, 0x10]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r4, r0, 2\n\
- adds r1, r4, r2\n\
- ldrb r0, [r1, 0x5]\n\
- adds r7, r3, 0\n\
- cmp r0, 0x7\n\
- bne _080C95EC\n\
- movs r2, 0x96\n\
- lsls r2, 2\n\
- adds r0, r2, 0\n\
- ldrh r1, [r1, 0xA]\n\
- adds r0, r1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080C95EC\n\
- ldr r1, [r5, 0x10]\n\
- adds r1, r4, r1\n\
- ldrh r2, [r1]\n\
- adds r2, 0x7\n\
- mov r0, sp\n\
- ldrh r0, [r0]\n\
- subs r2, r0\n\
- ldrh r0, [r1, 0x2]\n\
- adds r0, 0x7\n\
- mov r3, r9\n\
- ldrh r1, [r3]\n\
- subs r0, r1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- lsls r2, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0xE0\n\
- lsls r3, 11\n\
- adds r2, r3\n\
- lsrs r2, 16\n\
- cmp r2, 0xE\n\
- bhi _080C95EC\n\
- lsls r0, 16\n\
- asrs r2, r0, 16\n\
- cmp r2, r8\n\
- blt _080C95EC\n\
- cmp r2, 0x5\n\
- bgt _080C95EC\n\
- adds r0, r6, 0\n\
- bl sub_80C9838\n\
-_080C95EC:\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r7, r1\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- ldrb r2, [r5, 0x3]\n\
- cmp r0, r2\n\
- blt _080C9580\n\
-_080C95FC:\n\
- adds r0, r6, 0\n\
- bl sub_80C9720\n\
- ldr r0, _080C9618 @ =gTasks\n\
- lsls r1, r6, 2\n\
- adds r1, r6\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- movs r3, 0xC\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0x1\n\
- beq _080C961C\n\
- movs r0, 0\n\
- b _080C961E\n\
- .align 2, 0\n\
-_080C9618: .4byte gTasks\n\
-_080C961C:\n\
- movs r0, 0x1\n\
-_080C961E:\n\
- add sp, 0x4\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided");
+ int distanceX, distanceY;
+ u16 x, y;
+ s16 newDistanceX, newDistanceY, i;
+
+ PlayerGetDestCoords(&x, &y);
+ gTasks[taskId].data[2] = FALSE;
+
+ for (i = 0; i < events->bgEventCount; i++)
+ {
+ if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ {
+ // do a distance lookup of each item so long as the index remains less than the objects on the current map.
+ distanceX = (u16)events -> bgEvents[i].x + 7;
+ newDistanceX = distanceX - x;
+ distanceY = (u16)events -> bgEvents[i].y + 7;
+ newDistanceY = distanceY - y;
+
+ // is item in range?
+ if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6))
+ sub_80C9838(taskId, newDistanceX, newDistanceY); // send coordinates of the item relative to the player
+ }
+ }
+ sub_80C9720(taskId);
+
+ // hidden item detected?
+ if(gTasks[taskId].data[2] == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y)
+{
+ u8 bgEventCount = events->bgEventCount;
+ struct BgEvent *bgEvent = events->bgEvents;
+ int i;
+
+ for(i = 0; i < bgEventCount; i++)
+ {
+ if(bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
+ {
+ if(!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ return TRUE;
+ else
+ return FALSE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 sub_80C9688(struct MapConnection *connection, int x, int y)
+{
+ struct MapHeader *mapHeader;
+ u16 localX, localY;
+ u32 localOffset;
+ s32 localLength;
+
+ mapHeader = mapconnection_get_mapheader(connection);
+
+ 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;
+ }
+ return HiddenItemAtPos(mapHeader->events, localX, localY);
}
diff --git a/src/libc.c b/src/libc.c
index 370981878..920673e3e 100644
--- a/src/libc.c
+++ b/src/libc.c
@@ -19,13 +19,13 @@ void *memcpy(void *dst0, const void *src0, size_t len0)
// If the size is small, or either src or dst is unaligned,
// then go to the byte copy loop. This should be rare.
- if(len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst)))
+ if (len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst)))
{
aligned_dst = (long *)dst;
aligned_src = (long *)src;
// Copy 4X long words at a time if possible.
- while(len >= 16)
+ while (len >= 16)
{
*aligned_dst++ = *aligned_src++;
*aligned_dst++ = *aligned_src++;
@@ -35,7 +35,7 @@ void *memcpy(void *dst0, const void *src0, size_t len0)
}
// Copy one long word at a time if possible
- while(len >= 4)
+ while (len >= 4)
{
*aligned_dst++ = *aligned_src++;
len -= 4;
@@ -46,7 +46,7 @@ void *memcpy(void *dst0, const void *src0, size_t len0)
}
// Pick up any remaining bytes with a byte copier.
- while(len--)
+ while (len--)
*dst++ = *src++;
return dst0;
@@ -62,7 +62,7 @@ void *memset(void *m, int c, size_t n)
// If the size is small or m is unaligned,
// then go to the byte copy loop. This should be rare.
- if(n >= LBLOCKSIZE && !UNALIGNED(m))
+ if (n >= LBLOCKSIZE && !UNALIGNED(m))
{
// We know that n is large and m is word-aligned.
aligned_addr = (unsigned long *)m;
@@ -70,7 +70,7 @@ void *memset(void *m, int c, size_t n)
// Store C into each char sized location in buffer so that
// we can set large blocks quickly.
c &= 0xFF;
- if(LBLOCKSIZE == 4)
+ if (LBLOCKSIZE == 4)
{
buffer = (c << 8) | c;
buffer |= (buffer << 16);
@@ -78,11 +78,11 @@ void *memset(void *m, int c, size_t n)
else
{
buffer = 0;
- for(i = 0; i < LBLOCKSIZE; i++)
+ for (i = 0; i < LBLOCKSIZE; i++)
buffer = (buffer << 8) | c;
}
- while(n >= LBLOCKSIZE * 4)
+ while (n >= LBLOCKSIZE * 4)
{
*aligned_addr++ = buffer;
*aligned_addr++ = buffer;
@@ -90,7 +90,7 @@ void *memset(void *m, int c, size_t n)
*aligned_addr++ = buffer;
n -= LBLOCKSIZE * 4;
}
- while(n >= LBLOCKSIZE)
+ while (n >= LBLOCKSIZE)
{
*aligned_addr++ = buffer;
n -= LBLOCKSIZE;
@@ -100,7 +100,7 @@ void *memset(void *m, int c, size_t n)
}
// Pick up the remainder with a bytewise loop.
- while(n--)
+ while (n--)
*s++ = (char)c;
return m;
@@ -112,16 +112,16 @@ int strcmp(const char *s1, const char *s2)
unsigned long *a2;
// If s1 or s2 are unaligned, then skip this and compare bytes.
- if(!(UNALIGNED(s1) | UNALIGNED(s2)))
+ if (!(UNALIGNED(s1) | UNALIGNED(s2)))
{
// Compare them a word at a time.
a1 = (unsigned long *)s1;
a2 = (unsigned long *)s2;
- while(*a1 == *a2)
+ while (*a1 == *a2)
{
// If *a1 == *a2, and we find a null in *a1,
// then the strings must be equal, so return zero.
- if(CONTAINSNULL(*a1))
+ if (CONTAINSNULL(*a1))
return 0;
a1++;
@@ -133,7 +133,7 @@ int strcmp(const char *s1, const char *s2)
}
// Check the remaining few bytes.
- while(*s1 != '\0' && *s1 == *s2)
+ while (*s1 != '\0' && *s1 == *s2)
{
s1++;
s2++;
diff --git a/src/link.c b/src/link.c
index 7b4625bfd..783f6aecd 100644
--- a/src/link.c
+++ b/src/link.c
@@ -1,17 +1,17 @@
#include "global.h"
#include "link.h"
#include "asm.h"
+#include "battle.h"
#include "main.h"
-#include "task.h"
-#include "text.h"
-#include "sprite.h"
-#include "songs.h"
+#include "menu.h"
#include "palette.h"
#include "rng.h"
-#include "menu.h"
-#include "sound.h"
#include "save.h"
-#include "battle.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "text.h"
#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
@@ -155,21 +155,21 @@ EWRAM_DATA u32 gFiller_20238B8 = {0};
EWRAM_DATA u32 dword_20238BC = {0};
EWRAM_DATA bool8 gLinkOpen = {0};
-#include "link/digit_palette.h"
-#include "link/digit_tiles.h"
+static const u16 sLinkTestDigitPalette[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal");
+static const u32 sLinkTestDigitTiles[] = INCBIN_U32("graphics/interface/link_test_digits.4bpp");
static const u8 sDebugMessages[7][12] =
{
- _"せつぞく ちゅうです",
- _"せつぞく できません",
- _"かくにん ちゅうです",
- _"かくにん できました",
- _"かくにん できません",
- _"かくにん を かくにん",
- _"かくにん は しっぱい",
+ _("せつぞく ちゅうです"),
+ _("せつぞく できません"),
+ _("かくにん ちゅうです"),
+ _("かくにん できました"),
+ _("かくにん できません"),
+ _("かくにん を かくにん"),
+ _("かくにん は しっぱい"),
};
-static const u8 sColorCodes[] = _"{HIGHLIGHT TRANSPARENT}{COLOR WHITE2}";
+static const u8 sColorCodes[] = _("{HIGHLIGHT TRANSPARENT}{COLOR WHITE2}");
static const u32 sBlockRequestLookupTable[5 * 2] =
{
@@ -180,11 +180,11 @@ static const u32 sBlockRequestLookupTable[5 * 2] =
(u32)gBlockSendBuffer, 40,
};
-static const u8 sTestString[] = _"テストな";
+static const u8 sTestString[] = _("テストな");
ALIGNED(4) static const u8 sMagic[] = "GameFreak inc.";
-ALIGNED(4) static const u8 sEmptyString[] = _"";
+ALIGNED(4) static const u8 sEmptyString[] = _("");
void Task_DestroySelf(u8 taskId)
{
@@ -402,7 +402,7 @@ static void LinkTestProcessKeyInput(void)
if (gMain.newKeys & START_BUTTON)
SetSuppressLinkErrorMessage(TRUE);
if (gMain.newKeys & R_BUTTON)
- sub_8125D44(1);
+ TrySavingData(LINK_SAVE);
if (gMain.newKeys & SELECT_BUTTON)
sub_800832C();
if (gLinkTestDebugValuesEnabled)
@@ -475,8 +475,8 @@ static void ProcessRecvCmds(u8 unusedParam)
case 0x2222:
InitLocalLinkPlayer();
localLinkPlayerBlock.linkPlayer = localLinkPlayer;
- memcpy(localLinkPlayerBlock.magic1, sMagic, 15);
- memcpy(localLinkPlayerBlock.magic2, sMagic, 15);
+ memcpy(localLinkPlayerBlock.magic1, sMagic, sizeof(localLinkPlayerBlock.magic1) - 1);
+ memcpy(localLinkPlayerBlock.magic2, sMagic, sizeof(localLinkPlayerBlock.magic2) - 1);
InitBlockSend(&localLinkPlayerBlock, sizeof(localLinkPlayerBlock));
break;
case 0x5555:
diff --git a/src/load_save.c b/src/load_save.c
index 5babb843e..0add1b0e3 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "gba/flash_internal.h"
#include "load_save.h"
#include "asm.h"
#include "main.h"
@@ -6,7 +7,8 @@
#include "rom4.h"
extern u8 gPlayerPartyCount;
-extern u32 gUnknown_3004820;
+
+bool32 gFlashMemoryPresent;
struct LoadedSaveData
{
@@ -22,13 +24,13 @@ extern struct LoadedSaveData gLoadedSaveData[];
void CheckForFlashMemory(void)
{
- if(!IdentifyFlash())
+ if (!IdentifyFlash())
{
- gUnknown_3004820 = 1;
+ gFlashMemoryPresent = TRUE;
InitFlashTimer();
}
else
- gUnknown_3004820 = 0;
+ gFlashMemoryPresent = FALSE;
}
bool32 GetSecretBase2Field_9(void)
@@ -80,16 +82,16 @@ void LoadPlayerParty(void)
static void SaveMapObjects(void)
{
int i;
-
- for(i = 0; i < 16; i++)
+
+ for (i = 0; i < 16; i++)
gSaveBlock1.mapObjects[i] = gMapObjects[i];
}
static void LoadMapObjects(void)
{
int i;
-
- for(i = 0; i < 16; i++)
+
+ for (i = 0; i < 16; i++)
gMapObjects[i] = gSaveBlock1.mapObjects[i];
}
@@ -110,27 +112,27 @@ void LoadPlayerBag(void)
int i;
// load player items.
- for(i = 0; i < 20; i++)
+ for (i = 0; i < 20; i++)
gLoadedSaveData->items[i] = gSaveBlock1.bagPocket_Items[i];
// load player key items.
- for(i = 0; i < 20; i++)
+ for (i = 0; i < 20; i++)
gLoadedSaveData->keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i];
// load player pokeballs.
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
gLoadedSaveData->pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i];
// load player TMs and HMs.
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
gLoadedSaveData->TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i];
// load player berries.
- for(i = 0; i < 46; i++)
+ for (i = 0; i < 46; i++)
gLoadedSaveData->berries[i] = gSaveBlock1.bagPocket_Berries[i];
// load mail.
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
gLoadedSaveData->mail[i] = gSaveBlock1.mail[i];
}
@@ -139,26 +141,26 @@ void SavePlayerBag(void)
int i;
// save player items.
- for(i = 0; i < 20; i++)
+ for (i = 0; i < 20; i++)
gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData->items[i];
// save player key items.
- for(i = 0; i < 20; i++)
+ for (i = 0; i < 20; i++)
gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData->keyItems[i];
// save player pokeballs.
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData->pokeBalls[i];
// save player TMs and HMs.
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData->TMsHMs[i];
// save player berries.
- for(i = 0; i < 46; i++)
+ for (i = 0; i < 46; i++)
gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData->berries[i];
// save mail.
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
gSaveBlock1.mail[i] = gLoadedSaveData->mail[i];
}
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index c18aeef48..66e1238ef 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -1,10 +1,11 @@
#include "global.h"
#include "lottery_corner.h"
-#include "rng.h"
-#include "string_util.h"
#include "event_data.h"
-#include "species.h"
#include "items.h"
+#include "rng.h"
+#include "species.h"
+#include "string_util.h"
+#include "text.h"
extern u16 gScriptResult;
extern u16 gSpecialVar_0x8004;
@@ -36,11 +37,11 @@ void ResetLotteryCorner(void)
void SetRandomLotteryNumber(u16 i)
{
u32 var = Random();
-
- while(--i != 0xFFFF)
+
+ while (--i != 0xFFFF)
var = var * 1103515245 + 12345;
- SetLotteryNumber(var);
+ SetLotteryNumber(var);
}
void RetrieveLotteryNumber(void)
@@ -55,24 +56,24 @@ void PickLotteryCornerTicket(void)
u16 j;
u32 box;
u32 slot;
-
+
gSpecialVar_0x8004 = 0;
slot = 0;
box = 0;
- for(i = 0; i < 6; i++)
+ for (i = 0; i < 6; i++)
{
struct Pokemon *pkmn = &gPlayerParty[i];
-
+
// UB: Too few arguments for function GetMonData
- if(GetMonData(pkmn, MON_DATA_SPECIES) != SPECIES_NONE)
+ if (GetMonData(pkmn, MON_DATA_SPECIES) != SPECIES_NONE)
{
// do not calculate ticket values for eggs.
- if(!GetMonData(pkmn, MON_DATA_IS_EGG))
+ if (!GetMonData(pkmn, MON_DATA_IS_EGG))
{
u32 otId = GetMonData(pkmn, MON_DATA_OT_ID);
u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId);
-
- if(numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1)
+
+ if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1)
{
gSpecialVar_0x8004 = numMatchingDigits - 1;
box = 14;
@@ -83,23 +84,23 @@ void PickLotteryCornerTicket(void)
else // pokemon are always arranged from populated spots first to unpopulated, so the moment a NONE species is found, that's the end of the list.
break;
}
-
+
// player has 14 boxes.
- for(i = 0; i < 14; i++)
+ for (i = 0; i < 14; i++)
{
// player has 30 slots per box.
- for(j = 0; j < 30; j++)
+ for (j = 0; j < 30; j++)
{
struct BoxPokemon *pkmn = &gPokemonStorage.boxes[i][j];
-
+
// UB: Too few arguments for function GetMonData
- if(GetBoxMonData(pkmn, MON_DATA_SPECIES) != SPECIES_NONE &&
+ if (GetBoxMonData(pkmn, MON_DATA_SPECIES) != SPECIES_NONE &&
!GetBoxMonData(pkmn, MON_DATA_IS_EGG))
{
u32 otId = GetBoxMonData(pkmn, MON_DATA_OT_ID);
u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId);
-
- if(numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1)
+
+ if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1)
{
gSpecialVar_0x8004 = numMatchingDigits - 1;
box = i;
@@ -108,12 +109,12 @@ void PickLotteryCornerTicket(void)
}
}
}
-
- if(gSpecialVar_0x8004 != 0)
+
+ if (gSpecialVar_0x8004 != 0)
{
gSpecialVar_0x8005 = sLotteryPrizes[gSpecialVar_0x8004 - 1];
-
- if(box == 14)
+
+ if (box == 14)
{
gSpecialVar_0x8006 = 0;
GetMonData(&gPlayerParty[slot], MON_DATA_NICKNAME, gStringVar1);
@@ -131,13 +132,13 @@ static u8 GetMatchingDigits(u16 winNumber, u16 otId)
{
u8 i;
u8 matchingDigits = 0;
-
- for(i = 0; i < 5; i++)
+
+ for (i = 0; i < 5; i++)
{
sWinNumberDigit = winNumber % 10;
sOtIdDigit = otId % 10;
-
- if(sWinNumberDigit == sOtIdDigit)
+
+ if (sWinNumberDigit == sOtIdDigit)
{
winNumber = winNumber / 10;
otId = otId / 10;
@@ -163,7 +164,7 @@ u32 GetLotteryNumber(void)
{
u16 highNum = VarGet(VAR_POKELOT_RND1);
u16 lowNum = VarGet(VAR_POKELOT_RND2);
-
+
return (lowNum << 16) | highNum;
}
diff --git a/src/mail.c b/src/mail.c
index 6cff514a1..97c8dab5b 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "mail.h"
#include "asm.h"
+#include "items.h"
#include "menu.h"
#include "palette.h"
#include "rom4.h"
@@ -8,7 +9,7 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "items.h"
+#include "name_string_util.h"
struct UnkMailStruct
{
@@ -17,7 +18,8 @@ struct UnkMailStruct
u8 unk_0_4:4;
};
-struct MailLayout {
+struct MailLayout
+{
u8 var0;
u8 var1;
u8 var2;
@@ -26,28 +28,30 @@ struct MailLayout {
struct UnkMailStruct *var4;
};
-struct Unk2000000 {
- /* 0x00 */ u8 words[8][27];
- /* 0xEC */ u8 varD8[20];
- /* 0xEC */ MainCallback varEC;
- /* 0xF0 */ MainCallback varF0;
- /* 0xFF */ struct MailStruct *varF4;
- /* 0xF8 */ u8 varF8;
- /* 0xF9 */ u8 varF9;
- /* 0xFA */ u8 varFA;
- /* 0xFB */ u8 varFB;
- /* 0xFC */ u8 varFC;
+struct Unk2000000
+{
+ /* 0x00*/ u8 words[8][27];
+ /* 0xEC*/ u8 varD8[20];
+ /* 0xEC*/ MainCallback varEC;
+ /* 0xF0*/ MainCallback varF0;
+ /* 0xFF*/ struct MailStruct *varF4;
+ /* 0xF8*/ u8 varF8;
+ /* 0xF9*/ u8 varF9;
+ /* 0xFA*/ u8 varFA;
+ /* 0xFB*/ u8 varFB;
+ /* 0xFC*/ u8 varFC;
u8 padFD[1];
- /* 0xFE */ u8 varFE;
- /* 0xFF */ u8 varFF;
- /* 0x100 */ u8 var100;
+ /* 0xFE*/ u8 varFE;
+ /* 0xFF*/ u8 varFF;
+ /*0x100*/ u8 var100;
u8 pad101[3];
- /* 0x104 */ MainCallback var104;
- /* 0x108 */ MainCallback var108;
- /* 0x10C */ struct MailLayout *var10C;
+ /*0x104*/ MainCallback var104;
+ /*0x108*/ MainCallback var108;
+ /*0x10C*/ struct MailLayout *var10C;
};
-struct MailGraphics {
+struct MailGraphics
+{
u16 (*palette)[];
u8 (*tiles)[];
u8 (*tileMap)[];
@@ -78,7 +82,8 @@ static void sub_80F8F78(void);
static void sub_80F8FB4(void);
#ifdef NONMATCHING
-void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) {
+void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
+{
u16 mailDesign;
u8 buffer[4];
u8 local1;
@@ -87,44 +92,52 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) {
// Compiler uses [sub 1], while asm uses [ptr + FE]
unk_2000000.varFE = 1;
- unk_2000000.var104 = (MainCallback) sub_80EB3FC;
- unk_2000000.var108 = (MainCallback) ConvertEasyChatWordsToString;
+ unk_2000000.var104 = (MainCallback)sub_80EB3FC;
+ unk_2000000.var108 = (MainCallback)ConvertEasyChatWordsToString;
mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
- if (mailDesign <= 11) {
+ if (mailDesign <= 11)
+ {
unk_2000000.varFA = arg0->itemId - ITEM_ORANGE_MAIL;
- } else {
+ }
+ else
+ {
unk_2000000.varFA = 0;
arg2 = FALSE;
}
- switch (unk_2000000.var100) {
- case 0:
- default:
- unk_2000000.var10C = &gUnknown_083E5730[unk_2000000.varFA];
- break;
+ switch (unk_2000000.var100)
+ {
+ case 0:
+ default:
+ unk_2000000.var10C = &gUnknown_083E5730[unk_2000000.varFA];
+ break;
- case 1:
- unk_2000000.var10C = &gUnknown_083E57A4[unk_2000000.varFA];
- break;
+ case 1:
+ unk_2000000.var10C = &gUnknown_083E57A4[unk_2000000.varFA];
+ break;
}
- if (((sub_80A2D64(arg0->species, buffer) << 16) +0xFFFF0000) <= (410 << 16)) {
- switch (unk_2000000.varFA) {
- case 6:
- unk_2000000.varFB = 1;
- break;
+ if (((sub_80A2D64(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16))
+ {
+ switch (unk_2000000.varFA)
+ {
+ case 6:
+ unk_2000000.varFB = 1;
+ break;
- case 9:
- unk_2000000.varFB = 2;
- break;
+ case 9:
+ unk_2000000.varFB = 2;
+ break;
- default:
- unk_2000000.varFB = 0;
- break;
+ default:
+ unk_2000000.varFB = 0;
+ break;
}
- } else {
+ }
+ else
+ {
unk_2000000.varFB = 0;
}
@@ -137,146 +150,147 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) {
}
#else
__attribute__((naked))
-void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) {
+void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
+{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- adds r6, r1, 0\n\
- lsls r2, 24\n\
- lsrs r5, r2, 24\n\
- ldr r2, _080F8958 @ =0x02000000\n\
- adds r1, r2, 0\n\
- adds r1, 0xFF\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- adds r0, 0xFE\n\
- adds r1, r2, r0\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x82\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F895C @ =sub_80EB3FC\n\
- str r0, [r1]\n\
- movs r0, 0x84\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
- str r0, [r1]\n\
- ldrh r1, [r4, 0x20]\n\
- adds r0, r1, 0\n\
- subs r0, 0x79\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xB\n\
- bhi _080F8964\n\
- subs r1, 0x79\n\
- adds r0, r2, 0\n\
- adds r0, 0xFA\n\
- strb r1, [r0]\n\
- b _080F896E\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ adds r6, r1, 0\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ ldr r2, _080F8958 @ =0x02000000\n\
+ adds r1, r2, 0\n\
+ adds r1, 0xFF\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ adds r0, 0xFE\n\
+ adds r1, r2, r0\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0x82\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, _080F895C @ =sub_80EB3FC\n\
+ str r0, [r1]\n\
+ movs r0, 0x84\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
+ str r0, [r1]\n\
+ ldrh r1, [r4, 0x20]\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bhi _080F8964\n\
+ subs r1, 0x79\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xFA\n\
+ strb r1, [r0]\n\
+ b _080F896E\n\
+ .align 2, 0\n\
_080F8958: .4byte 0x02000000\n\
_080F895C: .4byte sub_80EB3FC\n\
_080F8960: .4byte ConvertEasyChatWordsToString\n\
_080F8964:\n\
- adds r1, r2, 0\n\
- adds r1, 0xFA\n\
- movs r0, 0\n\
- strb r0, [r1]\n\
- movs r5, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0xFA\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ movs r5, 0\n\
_080F896E:\n\
- ldr r1, _080F8994 @ =0x02000000\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080F8980\n\
- cmp r0, 0x1\n\
- beq _080F899C\n\
+ ldr r1, _080F8994 @ =0x02000000\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080F8980\n\
+ cmp r0, 0x1\n\
+ beq _080F899C\n\
_080F8980:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F8998 @ =gUnknown_083E5730\n\
- b _080F89AC\n\
- .align 2, 0\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xFA\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ ldr r1, _080F8998 @ =gUnknown_083E5730\n\
+ b _080F89AC\n\
+ .align 2, 0\n\
_080F8994: .4byte 0x02000000\n\
_080F8998: .4byte gUnknown_083E5730\n\
_080F899C:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xFA\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
_080F89AC:\n\
- adds r0, r1\n\
- str r0, [r2]\n\
- ldrh r0, [r4, 0x1E]\n\
- mov r1, sp\n\
- bl sub_80A2D64\n\
- lsls r0, 16\n\
- ldr r1, _080F89E0 @ =0xffff0000\n\
- adds r0, r1\n\
- movs r1, 0xCD\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _080F89F8\n\
- ldr r0, _080F89E4 @ =0x02000000\n\
- adds r1, r0, 0\n\
- adds r1, 0xFA\n\
- ldrb r2, [r1]\n\
- adds r1, r0, 0\n\
- cmp r2, 0x6\n\
- beq _080F89E8\n\
- cmp r2, 0x9\n\
- beq _080F89F0\n\
- b _080F89FA\n\
- .align 2, 0\n\
+ adds r0, r1\n\
+ str r0, [r2]\n\
+ ldrh r0, [r4, 0x1E]\n\
+ mov r1, sp\n\
+ bl sub_80A2D64\n\
+ lsls r0, 16\n\
+ ldr r1, _080F89E0 @ =0xffff0000\n\
+ adds r0, r1\n\
+ movs r1, 0xCD\n\
+ lsls r1, 17\n\
+ cmp r0, r1\n\
+ bhi _080F89F8\n\
+ ldr r0, _080F89E4 @ =0x02000000\n\
+ adds r1, r0, 0\n\
+ adds r1, 0xFA\n\
+ ldrb r2, [r1]\n\
+ adds r1, r0, 0\n\
+ cmp r2, 0x6\n\
+ beq _080F89E8\n\
+ cmp r2, 0x9\n\
+ beq _080F89F0\n\
+ b _080F89FA\n\
+ .align 2, 0\n\
_080F89DC: .4byte gUnknown_083E57A4\n\
_080F89E0: .4byte 0xffff0000\n\
_080F89E4: .4byte 0x02000000\n\
_080F89E8:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x1\n\
- b _080F8A00\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0x1\n\
+ b _080F8A00\n\
_080F89F0:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x2\n\
- b _080F8A00\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0x2\n\
+ b _080F8A00\n\
_080F89F8:\n\
- ldr r1, _080F8A20 @ =0x02000000\n\
+ ldr r1, _080F8A20 @ =0x02000000\n\
_080F89FA:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0\n\
_080F8A00:\n\
- strb r0, [r2]\n\
- adds r0, r1, 0\n\
- adds r0, 0xF4\n\
- str r4, [r0]\n\
- subs r0, 0x8\n\
- str r6, [r0]\n\
- adds r0, 0xC\n\
- strb r5, [r0]\n\
- ldr r0, _080F8A24 @ =sub_80F8D50\n\
- bl SetMainCallback2\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strb r0, [r2]\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xF4\n\
+ str r4, [r0]\n\
+ subs r0, 0x8\n\
+ str r6, [r0]\n\
+ adds r0, 0xC\n\
+ strb r5, [r0]\n\
+ ldr r0, _080F8A24 @ =sub_80F8D50\n\
+ bl SetMainCallback2\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080F8A20: .4byte 0x02000000\n\
_080F8A24: .4byte sub_80F8D50\n\
.syntax divided\n");
@@ -287,150 +301,162 @@ _080F8A24: .4byte sub_80F8D50\n\
#define RETURN_UP_STATE break
#define RETURN_SKIP_STATE return FALSE
-static u8 sub_80F8A28(void) {
- switch (gMain.state) {
- case 0:
- SetVBlankCallback(NULL);
- remove_some_task();
- REG_DISPCNT = 0;
- RETURN_UP_STATE;
-
- case 1: CpuFill16(0, (void *) OAM, OAM_SIZE);
- RETURN_UP_STATE;
-
- case 2:
- ResetPaletteFade();
- RETURN_UP_STATE;
-
- case 3:
- ResetTasks();
- RETURN_UP_STATE;
-
- case 4:
- ResetSpriteData();
- RETURN_UP_STATE;
-
- case 5:
- FreeAllSpritePalettes();
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG2HOFS = 0;
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 0;
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- RETURN_UP_STATE;
-
- case 6:
- SetUpWindowConfig(&gWindowConfig_81E6DFC);
- RETURN_UP_STATE;
-
- case 7:
- MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC);
- RETURN_UP_STATE;
+static u8 sub_80F8A28(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ remove_some_task();
+ REG_DISPCNT = 0;
+ RETURN_UP_STATE;
+
+ case 1: CpuFill16(0, (void *)OAM, OAM_SIZE);
+ RETURN_UP_STATE;
+
+ case 2:
+ ResetPaletteFade();
+ RETURN_UP_STATE;
+
+ case 3:
+ ResetTasks();
+ RETURN_UP_STATE;
+
+ case 4:
+ ResetSpriteData();
+ RETURN_UP_STATE;
+
+ case 5:
+ FreeAllSpritePalettes();
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ RETURN_UP_STATE;
+
+ case 6:
+ SetUpWindowConfig(&gWindowConfig_81E6DFC);
+ RETURN_UP_STATE;
+
+ case 7:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC);
+ RETURN_UP_STATE;
+
+ case 8:
+ if (MultistepInitMenuWindowContinue() == 0)
+ {
+ return FALSE;
+ }
+ RETURN_UP_STATE;
- case 8:
- if (MultistepInitMenuWindowContinue() == 0) {
- return FALSE;
- }
- RETURN_UP_STATE;
+ case 9:
+ MenuZeroFillScreen();
+ RETURN_UP_STATE;
- case 9:
- MenuZeroFillScreen();
- RETURN_UP_STATE;
+ case 10: CpuFill16(1, (void *)(VRAM + 0x4800), 0x800);
+ RETURN_UP_STATE;
- case 10: CpuFill16(1, (void *) (VRAM + 0x4800), 0x800);
- RETURN_UP_STATE;
+ case 11:
+ LoadPalette(gMailGraphicsTable[unk_2000000.varFA].palette, 0, 16 * 2);
+ RETURN_UP_STATE;
- case 11:
- LoadPalette(gMailGraphicsTable[unk_2000000.varFA].palette, 0, 16 * 2);
- RETURN_UP_STATE;
+ case 12:
+ LZ77UnCompVram(gMailGraphicsTable[unk_2000000.varFA].tileMap, (void *)(VRAM + 0x4000));
+ RETURN_UP_STATE;
- case 12:
- LZ77UnCompVram(gMailGraphicsTable[unk_2000000.varFA].tileMap, (void *) (VRAM + 0x4000));
- RETURN_UP_STATE;
+ case 13:
+ LZ77UnCompVram(gMailGraphicsTable[unk_2000000.varFA].tiles, (void *)(VRAM));
- case 13:
- LZ77UnCompVram(gMailGraphicsTable[unk_2000000.varFA].tiles, (void *) (VRAM));
+ gPlttBufferUnfaded[241] = gMailGraphicsTable[unk_2000000.varFA].color10;
+ gPlttBufferUnfaded[248] = gMailGraphicsTable[unk_2000000.varFA].color12;
+ gPlttBufferUnfaded[10] = gUnknown_083E562C[gSaveBlock2.playerGender][0];
+ gPlttBufferUnfaded[11] = gUnknown_083E562C[gSaveBlock2.playerGender][1];
+ RETURN_UP_STATE;
- gPlttBufferUnfaded[241] = gMailGraphicsTable[unk_2000000.varFA].color10;
- gPlttBufferUnfaded[248] = gMailGraphicsTable[unk_2000000.varFA].color12;
- gPlttBufferUnfaded[10] = gUnknown_083E562C[gSaveBlock2.playerGender][0];
- gPlttBufferUnfaded[11] = gUnknown_083E562C[gSaveBlock2.playerGender][1];
- RETURN_UP_STATE;
+ case 14:
+ if (unk_2000000.varF8 != 0)
+ {
+ sub_80F8DA0();
+ }
+ RETURN_UP_STATE;
- case 14:
- if (unk_2000000.varF8 != 0) {
- sub_80F8DA0();
- }
- RETURN_UP_STATE;
+ case 15:
+ if (unk_2000000.varF8 != 0)
+ {
+ sub_80F8E80();
+ }
- case 15:
- if (unk_2000000.varF8 != 0) {
- sub_80F8E80();
- }
+ SetVBlankCallback(sub_80F8F18);
+ gPaletteFade.bufferTransferDisabled = 1;
+ RETURN_UP_STATE;
- SetVBlankCallback(sub_80F8F18);
- gPaletteFade.bufferTransferDisabled = 1;
- RETURN_UP_STATE;
+ case 16:
+ {
+ u16 local1;
- case 16: {
- u16 local1;
+ local1 = sub_809D4A8(unk_2000000.varF4->species);
- local1 = sub_809D4A8(unk_2000000.varF4->species);
+ switch (unk_2000000.varFB)
+ {
+ case 1:
+ sub_809D580(local1);
+ unk_2000000.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
+ break;
- switch (unk_2000000.varFB) {
- case 1:
- sub_809D580(local1);
- unk_2000000.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
- break;
+ case 2:
+ sub_809D580(local1);
+ unk_2000000.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
+ break;
+ }
+ RETURN_UP_STATE;
+ }
- case 2:
- sub_809D580(local1);
- unk_2000000.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
- break;
- }
+ case 17:
+ if (sub_8055870() != TRUE)
+ {
RETURN_UP_STATE;
}
-
- case 17:
- if (sub_8055870() != TRUE) {
- RETURN_UP_STATE;
- }
- RETURN_SKIP_STATE;
-
- case 18:
- REG_BG0CNT = 0x9F08;
- REG_BG1CNT = 0x0801;
- REG_BG2CNT = 0x0902;
- REG_BLDCNT = 0;
- REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
- gPaletteFade.bufferTransferDisabled = 0;
- unk_2000000.varF0 = sub_80F8F58;
- return TRUE;
-
- default:
- return FALSE;
+ RETURN_SKIP_STATE;
+
+ case 18:
+ REG_BG0CNT = 0x9F08;
+ REG_BG1CNT = 0x0801;
+ REG_BG2CNT = 0x0902;
+ REG_BLDCNT = 0;
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gPaletteFade.bufferTransferDisabled = 0;
+ unk_2000000.varF0 = sub_80F8F58;
+ return TRUE;
+
+ default:
+ return FALSE;
}
gMain.state += 1;
return FALSE;
}
-void sub_80F8D50(void) {
- do {
- if (sub_80F8A28() == 1) {
+void sub_80F8D50(void)
+{
+ do
+ {
+ if (sub_80F8A28() == 1)
+ {
SetMainCallback2(sub_80F8F2C);
return;
}
} while (sub_80F9344() != 1);
}
-u8 *sub_80F8D7C(u8 *dest, u8 *src) {
+u8 *sub_80F8D7C(u8 *dest, u8 *src)
+{
u16 length;
StringCopy(dest, src);
@@ -442,24 +468,28 @@ u8 *sub_80F8D7C(u8 *dest, u8 *src) {
}
#ifdef NONMATCHING
-static void sub_80F8DA0(void) {
+static void sub_80F8DA0(void)
+{
u8 local0;
local0 = unk_2000000.var10C->var0;
// No idea what's happening in this loop.
- if (local0 <= 0) {
+ if (local0 <= 0)
+ {
u8 i;
u8 i2 = 0;
- for (i = 0; i < unk_2000000.var10C->var0; i++) {
+ for (i = 0; i < unk_2000000.var10C->var0; i++)
+ {
ConvertEasyChatWordsToString(unk_2000000.words[i], &unk_2000000.varF4->words[i2],
- ((*unk_2000000.var10C->var4)[i] << 28) >> 30, 1);
+ ((*unk_2000000.var10C->var4)[i] << 28) >> 30, 1);
i2 += ((*unk_2000000.var10C->var4)[i] << 28) >> 30;
}
}
- if (unk_2000000.var100 == 0) {
+ if (unk_2000000.var100 == 0)
+ {
u8 *ptr;
u16 length;
@@ -469,7 +499,9 @@ static void sub_80F8DA0(void) {
length = StringLength(unk_2000000.varD8);
unk_2000000.varF9 = unk_2000000.var10C->var2 - length;
- } else {
+ }
+ else
+ {
u8 *ptr;
ptr = StringCopy(unk_2000000.varD8, gOtherText_From);
@@ -480,129 +512,134 @@ static void sub_80F8DA0(void) {
}
#else
__attribute__((naked))
-static void sub_80F8DA0(void) {
+static void sub_80F8DA0(void)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- movs r6, 0\n\
- movs r5, 0\n\
- ldr r2, _080F8E3C @ =0x02000000\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, [r1]\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- bcs _080F8E04\n\
- mov r8, r2\n\
- adds r7, r1, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ ldr r2, _080F8E3C @ =0x02000000\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, [r1]\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ bcs _080F8E04\n\
+ mov r8, r2\n\
+ adds r7, r1, 0\n\
_080F8DBE:\n\
- lsls r0, r5, 3\n\
- subs r0, r5\n\
- lsls r0, 2\n\
- subs r0, r5\n\
- add r0, r8\n\
- mov r1, r8\n\
- adds r1, 0xF4\n\
- lsls r2, r6, 1\n\
- ldr r1, [r1]\n\
- adds r1, r2\n\
- ldr r2, [r7]\n\
- ldr r2, [r2, 0x4]\n\
- lsls r4, r5, 2\n\
- adds r2, r4, r2\n\
- ldr r2, [r2]\n\
- lsls r2, 28\n\
- lsrs r2, 30\n\
- movs r3, 0x1\n\
- bl ConvertEasyChatWordsToString\n\
- ldr r1, [r7]\n\
- ldr r0, [r1, 0x4]\n\
- adds r4, r0\n\
- ldr r0, [r4]\n\
- lsls r0, 28\n\
- lsrs r0, 30\n\
- adds r0, r6, r0\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldrb r1, [r1]\n\
- cmp r5, r1\n\
- bcc _080F8DBE\n\
+ lsls r0, r5, 3\n\
+ subs r0, r5\n\
+ lsls r0, 2\n\
+ subs r0, r5\n\
+ add r0, r8\n\
+ mov r1, r8\n\
+ adds r1, 0xF4\n\
+ lsls r2, r6, 1\n\
+ ldr r1, [r1]\n\
+ adds r1, r2\n\
+ ldr r2, [r7]\n\
+ ldr r2, [r2, 0x4]\n\
+ lsls r4, r5, 2\n\
+ adds r2, r4, r2\n\
+ ldr r2, [r2]\n\
+ lsls r2, 28\n\
+ lsrs r2, 30\n\
+ movs r3, 0x1\n\
+ bl ConvertEasyChatWordsToString\n\
+ ldr r1, [r7]\n\
+ ldr r0, [r1, 0x4]\n\
+ adds r4, r0\n\
+ ldr r0, [r4]\n\
+ lsls r0, 28\n\
+ lsrs r0, 30\n\
+ adds r0, r6, r0\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r1, [r1]\n\
+ cmp r5, r1\n\
+ bcc _080F8DBE\n\
_080F8E04:\n\
- ldr r2, _080F8E40 @ =0x020000d8\n\
- adds r4, r2, 0\n\
- subs r4, 0xD8\n\
- adds r0, r2, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080F8E48\n\
- ldr r1, [r2, 0x1C]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- adds r2, r0, 0\n\
- ldr r1, _080F8E44 @ =gOtherText_From\n\
- bl StringCopy\n\
- ldr r0, _080F8E40 @ =0x020000d8\n\
- bl StringLength\n\
- movs r2, 0x86\n\
- lsls r2, 1\n\
- adds r1, r4, r2\n\
- ldr r1, [r1]\n\
- ldrb r1, [r1, 0x2]\n\
- subs r1, r0\n\
- b _080F8E6A\n\
- .align 2, 0\n\
+ ldr r2, _080F8E40 @ =0x020000d8\n\
+ adds r4, r2, 0\n\
+ subs r4, 0xD8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x28\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080F8E48\n\
+ ldr r1, [r2, 0x1C]\n\
+ adds r1, 0x12\n\
+ adds r0, r2, 0\n\
+ bl sub_80F8D7C\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F8E44 @ =gOtherText_From\n\
+ bl StringCopy\n\
+ ldr r0, _080F8E40 @ =0x020000d8\n\
+ bl StringLength\n\
+ movs r2, 0x86\n\
+ lsls r2, 1\n\
+ adds r1, r4, r2\n\
+ ldr r1, [r1]\n\
+ ldrb r1, [r1, 0x2]\n\
+ subs r1, r0\n\
+ b _080F8E6A\n\
+ .align 2, 0\n\
_080F8E3C: .4byte 0x02000000\n\
_080F8E40: .4byte 0x020000d8\n\
_080F8E44: .4byte gOtherText_From\n\
_080F8E48:\n\
- ldr r1, _080F8E7C @ =gOtherText_From\n\
- adds r0, r2, 0\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- adds r0, r4, 0\n\
- adds r0, 0xF4\n\
- ldr r1, [r0]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- movs r1, 0x86\n\
- lsls r1, 1\n\
- adds r0, r4, r1\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x2]\n\
+ ldr r1, _080F8E7C @ =gOtherText_From\n\
+ adds r0, r2, 0\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xF4\n\
+ ldr r1, [r0]\n\
+ adds r1, 0x12\n\
+ adds r0, r2, 0\n\
+ bl sub_80F8D7C\n\
+ movs r1, 0x86\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x2]\n\
_080F8E6A:\n\
- adds r0, r4, 0\n\
- adds r0, 0xF9\n\
- strb r1, [r0]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xF9\n\
+ strb r1, [r0]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080F8E7C: .4byte gOtherText_From\n\
.syntax divided\n");
}
#endif
-static void sub_80F8E80(void) {
+static void sub_80F8E80(void)
+{
u16 pos;
u8 x;
u8 y = 0;
- for (pos = 0; pos < unk_2000000.var10C->var0; pos++) {
- if (unk_2000000.words[pos][0] == 0xFF) {
+ for (pos = 0; pos < unk_2000000.var10C->var0; pos++)
+ {
+ if (unk_2000000.words[pos][0] == 0xFF)
+ {
continue;
}
- if (unk_2000000.words[pos][0] == 0x00) {
+ if (unk_2000000.words[pos][0] == 0x00)
+ {
continue;
}
@@ -615,14 +652,17 @@ static void sub_80F8E80(void) {
MenuPrint(unk_2000000.varD8, unk_2000000.varF9, unk_2000000.var10C->var1);
}
-static void sub_80F8F18(void) {
+static void sub_80F8F18(void)
+{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void sub_80F8F2C(void) {
- if(unk_2000000.varFB != 0) {
+static void sub_80F8F2C(void)
+{
+ if (unk_2000000.varFB != 0)
+ {
AnimateSprites();
BuildOamBuffer();
}
@@ -630,38 +670,45 @@ static void sub_80F8F2C(void) {
unk_2000000.varF0();
}
-static void sub_80F8F58(void) {
+static void sub_80F8F58(void)
+{
u8 local0;
local0 = UpdatePaletteFade();
- if(local0 == 0) {
+ if (local0 == 0)
+ {
unk_2000000.varF0 = sub_80F8F78;
}
}
-static void sub_80F8F78(void) {
- if (gMain.newKeys & (A_BUTTON | B_BUTTON)) {
+static void sub_80F8F78(void)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
unk_2000000.varF0 = sub_80F8FB4;
}
}
-static void sub_80F8FB4(void) {
+static void sub_80F8FB4(void)
+{
u16 local1;
- if (UpdatePaletteFade()) {
+ if (UpdatePaletteFade())
+ {
return;
}
SetMainCallback2(unk_2000000.varEC);
- switch (unk_2000000.varFB) {
- case 2:
- case 1:
- local1 = sub_809D4A8(unk_2000000.varF4->species);
- sub_809D608(local1);
-
- sub_809D510(&gSprites[unk_2000000.varFC]);
- break;
+ switch (unk_2000000.varFB)
+ {
+ case 2:
+ case 1:
+ local1 = sub_809D4A8(unk_2000000.varF4->species);
+ sub_809D608(local1);
+
+ sub_809D510(&gSprites[unk_2000000.varFC]);
+ break;
}
memset(&unk_2000000, 0, 0x110);
diff --git a/src/main.c b/src/main.c
index 76ac3d6d9..0e93fb89f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -15,7 +15,6 @@
#include "sound.h"
extern struct SoundInfo gSoundInfo;
-extern u32 gUnknown_3004820;
extern u32 IntrMain[];
static void VBlankIntr(void);
@@ -93,8 +92,8 @@ void AgbMain()
gSoftResetDisabled = FALSE;
- if (gUnknown_3004820 != 1)
- SetMainCallback2(0);
+ if (gFlashMemoryPresent != TRUE)
+ SetMainCallback2(NULL);
gUnknown_3001764 = 0;
diff --git a/src/main_menu.c b/src/main_menu.c
index 7adbda096..3c8df52d4 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -2,6 +2,7 @@
#include "main_menu.h"
#include "asm.h"
#include "decompress.h"
+#include "event_data.h"
#include "menu.h"
#include "mystery_event_menu.h"
#include "option_menu.h"
@@ -16,7 +17,7 @@
#include "task.h"
#include "text.h"
#include "title_screen.h"
-#include "event_data.h"
+#include "naming_screen.h"
#define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24))
@@ -69,9 +70,7 @@ extern const u8 gUnknown_081E7834[];
extern const u8 gUnknown_081E796C[];
extern const u8 gSystemText_NewPara[];
-extern u8 gSpriteAffineAnimTable_81E79AC[];
-
-extern u8 gStringVar4[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
extern u8 unk_2000000[];
@@ -1083,7 +1082,7 @@ static void Task_NewGameSpeech22(u8 taskId)
if (!gPaletteFade.active)
{
SetPresetPlayerName(1);
- DoNamingScreen(0, &gSaveBlock2, gSaveBlock2.playerGender, 0, 0, CB_ContinueNewGameSpeechPart2);
+ DoNamingScreen(0, gSaveBlock2.playerName, gSaveBlock2.playerGender, 0, 0, CB_ContinueNewGameSpeechPart2);
}
}
@@ -1258,7 +1257,7 @@ static void Task_NewGameSpeech30(u8 taskId)
spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
gSprites[spriteId].oam.affineMode = 1;
- gSprites[spriteId].affineAnims = (union AffineAnimCmd **)gSpriteAffineAnimTable_81E79AC;
+ gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
gSprites[spriteId].callback = ShrinkPlayerSprite;
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
new file mode 100644
index 000000000..c10a3f9de
--- /dev/null
+++ b/src/map_name_popup.c
@@ -0,0 +1,106 @@
+#include "global.h"
+#include "asm.h"
+#include "event_data.h"
+#include "menu.h"
+#include "task.h"
+
+EWRAM_DATA static u8 sTaskId = 0;
+
+static void Task_MapNamePopup(u8);
+static void DrawMapNamePopup(void);
+
+bool8 unref_sub_80A2F44(void)
+{
+ CloseMenu();
+ ShowMapNamePopup();
+ return 1;
+}
+
+void ShowMapNamePopup(void)
+{
+ if (FlagGet(0x4000) != TRUE)
+ {
+ if (!FuncIsActiveTask(Task_MapNamePopup))
+ {
+ sTaskId = CreateTask(Task_MapNamePopup, 90);
+ REG_BG0VOFS = 32;
+ DrawMapNamePopup();
+ gTasks[sTaskId].data[0] = 0;
+ gTasks[sTaskId].data[2] = 32;
+ }
+ else
+ {
+ if (gTasks[sTaskId].data[0] != 2)
+ gTasks[sTaskId].data[0] = 2;
+ gTasks[sTaskId].data[3] = 1;
+ }
+ }
+}
+
+void Task_MapNamePopup(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[2] -= 2;
+ if (task->data[2] <= 0 )
+ {
+ task->data[0] = 1;
+ gTasks[sTaskId].data[1] = 0;
+ }
+ break;
+ case 1:
+ task->data[1]++;
+ if (task->data[1] > 120 )
+ {
+ task->data[1] = 0;
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ task->data[2] += 2;
+ if (task->data[2] > 31)
+ {
+ if (task->data[3])
+ {
+ DrawMapNamePopup();
+ task->data[0] = 0;
+ task->data[3] = 0;
+ }
+ else
+ {
+ task->data[0] = 4;
+ return;
+ }
+ }
+ break;
+ case 4:
+ HideMapNamePopup();
+ return;
+ }
+
+ REG_BG0VOFS = task->data[2];
+}
+
+void HideMapNamePopup(void)
+{
+ if (FuncIsActiveTask(Task_MapNamePopup))
+ {
+ MenuLoadTextWindowGraphics();
+ MenuZeroFillWindowRect(0, 0, 13, 3);
+ REG_BG0VOFS = 0;
+ DestroyTask(sTaskId);
+ }
+}
+
+void DrawMapNamePopup(void)
+{
+ u8 name[20];
+
+ MenuLoadTextWindowGraphics_OverrideFrameType(0);
+ sub_80FBFB4(name, gMapHeader.name, 0);
+ MenuDrawTextWindow(0, 0, 13, 3);
+ sub_8072BD8(name, 1, 1, 0x60);
+}
diff --git a/src/map_obj_lock.c b/src/map_obj_lock.c
index b1e7bb3df..e500deca0 100644
--- a/src/map_obj_lock.c
+++ b/src/map_obj_lock.c
@@ -3,6 +3,7 @@
#include "asm.h"
#include "field_player_avatar.h"
#include "task.h"
+#include "field_map_obj_helpers.h"
extern u16 gScriptFacing;
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c
index 131369e91..6177d9edb 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/matsuda_debug_menu.c
@@ -10,8 +10,8 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-
-#define BIT(n) (1 << (n))
+#include "contest.h"
+#include "matsuda_debug_menu.h"
extern u8 gUnknown_0203856C;
extern u8 gUnknown_0203857D[][64];
@@ -63,24 +63,6 @@ extern u8* gMatsudaDebugMenuTextList2[];
extern u8* gMatsudaDebugMenuTextList3[];
extern u8 gMatsudaDebugMenuContestTopLeft[][2];
-struct ContestPokemon
-{
- /* 0x00 */ u16 species;
- /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH];
- /* 0x0D */ u8 trainerName[8];
- /* 0x15 */ u8 filler15[9];
- /* 0x1E */ u16 moves[4]; // moves
- /* 0x26 */ u8 cool; // cool
- /* 0x27 */ u8 beauty; // beauty
- /* 0x28 */ u8 cute; // cute
- /* 0x29 */ u8 smart; // smart
- /* 0x2A */ u8 tough; // tough
- /* 0x2B */ u8 sheen; // sheen
- /* 0x2C */ u8 filler2C[20];
-};
-
-extern struct ContestPokemon gContestMons[];
-
extern bool8 gReceivedRemoteLinkPlayers;
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
@@ -103,7 +85,6 @@ static void sub_80AA10C(void);
static void sub_80AA5BC(u8);
static void sub_80AA614(u8, u8);
static void sub_80AAD08(struct Sprite *, s8);
-extern void sub_80AB184(void);
extern void sub_80AB47C(void);
extern int sub_80B2A7C(u8); //Don't know return type size
@@ -120,8 +101,8 @@ u8 unref_sub_80A9B28(void)
static bool8 sub_80A9B78(void)
{
s8 choice = ProcessMenuInput();
-
- switch(choice)
+
+ switch (choice)
{
case -2:
return FALSE;
@@ -143,11 +124,11 @@ s8 MatsudaDebugMenu_ContestResults(void)
static void sub_80A9BE4(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
DestroyTask(taskId);
- if(!(gIsLinkContest & 1))
+ if (!(gIsLinkContest & 1))
sub_80AF668();
sub_80C2358();
@@ -171,7 +152,7 @@ s8 MatsudaDebugMenu_CommTest(void)
{
u8 newTaskId;
u8 newTaskId2;
-
+
newTaskId = CreateTask(sub_80A9E3C, 0);
SetTaskFuncWithFollowupFunc(newTaskId, sub_80A9E3C, sub_80A9C98);
newTaskId2 = CreateTask(sub_80A9E04, 1);
@@ -198,7 +179,7 @@ static void sub_80A9CDC(u8 taskId)
static void sub_80A9CF8(u8 taskId)
{
- if(gReceivedRemoteLinkPlayers == FALSE)
+ if (gReceivedRemoteLinkPlayers == FALSE)
{
DestroyTask(gTasks[taskId].data[10]);
DestroyTask(taskId);
@@ -217,7 +198,7 @@ static void sub_80A9D58(u8 taskId)
int i;
u8 dest[4];
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
dest[i] = gTasks[taskId].data[5 + i];
gUnknown_0203869B = sub_80C4B34(dest);
@@ -240,17 +221,17 @@ static void sub_80A9DD8(u8 taskId)
static void sub_80A9E04(u8 taskId)
{
- if(gMain.newKeys == 2)
+ if (gMain.newKeys == 2)
gTasks[(u8)gTasks[taskId].data[10]].func = sub_80A9D30;
}
static void sub_80A9E3C(u8 taskId)
{
u8 i;
-
+
OpenLink();
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
gBlockRecvBuffer[i][0] = 255;
gTasks[taskId].data[0] = 0;
@@ -261,15 +242,15 @@ static void sub_80A9E80(u8 taskId)
{
TaskFunc func;
- if(gTasks[taskId].data[0] < 10)
+ if (gTasks[taskId].data[0] < 10)
gTasks[taskId].data[0]++;
else
{
- if(GetLinkPlayerCount_2() > 3)
+ if (GetLinkPlayerCount_2() > 3)
{
gTasks[taskId].data[0] = 0;
-
- if(IsLinkMaster())
+
+ if (IsLinkMaster())
{
func = sub_80A9ED8;
gTasks[taskId].func = (TaskFunc)func;
@@ -286,7 +267,7 @@ static void sub_80A9E80(u8 taskId)
static void sub_80A9ED8(u8 taskId)
{
gTasks[taskId].data[0] = gTasks[taskId].data[0] + 1;
- if((gTasks[taskId].data[0]) == 101)
+ if ((gTasks[taskId].data[0]) == 101)
{
sub_8007F4C();
gTasks[taskId].data[0] = 0;
@@ -296,10 +277,10 @@ static void sub_80A9ED8(u8 taskId)
static void sub_80A9F10(u8 taskId)
{
- if(gReceivedRemoteLinkPlayers)
+ if (gReceivedRemoteLinkPlayers)
{
gContestPlayerMonIndex = GetMultiplayerId();
- if(GetLinkPlayerCount() == 4)
+ if (GetLinkPlayerCount() == 4)
{
gIsLinkContest = 1;
SwitchTaskToFollowupFunc(taskId);
@@ -334,18 +315,18 @@ static void sub_80A9FE4(void)
u8 *addr;
u32 i;
u8 ptr[5];
-
+
memcpy(ptr, gMatsudaDebugMenu_UnknownByteArray, 5);
addr = (void *)VRAM;
i = VRAM_SIZE;
- while(1)
+ while (1)
{
DmaFill32(3, 0, addr, 0x1000);
addr += 0x1000;
i -= 0x1000;
- if(i <= 0x1000)
+ if (i <= 0x1000)
{
DmaFill32(3, 0, addr, i);
break;
@@ -361,7 +342,7 @@ static void sub_80AA064(void)
BuildOamBuffer();
RunTasks();
UpdatePaletteFade();
- if(gMain.newKeys == 4)
+ if (gMain.newKeys == 4)
SetMainCallback2(sub_805469C);
}
@@ -395,21 +376,21 @@ static void sub_80AA10C(void)
ResetSpriteData();
ResetTasks();
FreeAllSpritePalettes();
- sub_80A9FE4();
+ sub_80A9FE4();
SetVBlankCallback(sub_80AA090);
SetMainCallback2(sub_80AA064);
gPaletteFade.bufferTransferDisabled = 0;
gUnknown_02038694 = 0;
- if(!(gContestMons[0].nickname[0]))
+ if (!(gContestMons[0].nickname[0]))
sub_80AE398(0, 0);
sub_80AE098(gUnknown_02038694);
- for(i = 0; i < 6; i++)
+ for (i = 0; i < 6; i++)
{
- sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList1[i],
- (0xA * i + 0x2A), gMatsudaDebugMenuContestTopLeft[i][0],
+ sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList1[i],
+ (0xA * i + 0x2A), gMatsudaDebugMenuContestTopLeft[i][0],
gMatsudaDebugMenuContestTopLeft[i][1]);
}
@@ -431,7 +412,7 @@ static void sub_80AA10C(void)
gSprites[spriteId].data3 = zero; // only this assignment of zero is necessary. other replacements of 0 with zero do not change the asm, compiler will treat it the same.
}
-void sub_80AA280(u8 var)
+void sub_80AA280(u8 var) // no?
{
u8 i;
@@ -439,9 +420,9 @@ void sub_80AA280(u8 var)
StringCopy(unk_2000000, gMatsudaDebugMenu_StartText);
StringAppend(unk_2000000, &gUnknown_0203857D[var][0]);
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
{
- if(var == i)
+ if (var == i)
{
sub_8003460(&gMenuWindow, unk_2000000, (10 * i + 2), gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]);
}
@@ -499,49 +480,49 @@ static void sub_80AA4F0(u8 var1, u8 var2)
static void sub_80AA5BC(u8 var)
{
- sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12);
+ sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12);
}
void sub_80AA5E8(u8 var)
{
- sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4);
+ sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4);
}
static void sub_80AA614(u8 var1, u8 var2)
{
- u16 var = sub_80AE770(var1, var2);
+ u16 var = sub_80AE770(var1, var2);
- ConvertIntToDecimalStringN(unk_2000000, var, STR_CONV_MODE_RIGHT_ALIGN, 3);
- sub_8003460(&gMenuWindow, unk_2000000, 0xE2, 3, 0xC);
+ ConvertIntToDecimalStringN(unk_2000000, var, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ sub_8003460(&gMenuWindow, unk_2000000, 0xE2, 3, 0xC);
}
void sub_80AA658(u8 var)
{
- u8 i;
+ u8 i;
- sub_80AA340(var);
- sub_80AA388(var);
- sub_80AA3D0(var);
- sub_80AA418(var);
- sub_80AA460(var);
- sub_80AA4A8(var);
+ sub_80AA340(var);
+ sub_80AA388(var);
+ sub_80AA3D0(var);
+ sub_80AA418(var);
+ sub_80AA460(var);
+ sub_80AA4A8(var);
- for(i = 0; i < 4; i++)
- sub_80AA4F0(var, i);
+ for (i = 0; i < 4; i++)
+ sub_80AA4F0(var, i);
}
void SetDebugMonForContest(void)
{
- SetMonData(&gPlayerParty[0], MON_DATA_COOL, &gContestMons[gContestPlayerMonIndex].cool);
- SetMonData(&gPlayerParty[0], MON_DATA_CUTE, &gContestMons[gContestPlayerMonIndex].cute);
- SetMonData(&gPlayerParty[0], MON_DATA_BEAUTY, &gContestMons[gContestPlayerMonIndex].beauty);
- SetMonData(&gPlayerParty[0], MON_DATA_SMART, &gContestMons[gContestPlayerMonIndex].smart);
- SetMonData(&gPlayerParty[0], MON_DATA_TOUGH, &gContestMons[gContestPlayerMonIndex].tough);
- SetMonData(&gPlayerParty[0], MON_DATA_SHEEN, &gContestMons[gContestPlayerMonIndex].sheen);
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[0]);
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[1]);
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[2]);
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[3]);
+ SetMonData(&gPlayerParty[0], MON_DATA_COOL, &gContestMons[gContestPlayerMonIndex].cool);
+ SetMonData(&gPlayerParty[0], MON_DATA_CUTE, &gContestMons[gContestPlayerMonIndex].cute);
+ SetMonData(&gPlayerParty[0], MON_DATA_BEAUTY, &gContestMons[gContestPlayerMonIndex].beauty);
+ SetMonData(&gPlayerParty[0], MON_DATA_SMART, &gContestMons[gContestPlayerMonIndex].smart);
+ SetMonData(&gPlayerParty[0], MON_DATA_TOUGH, &gContestMons[gContestPlayerMonIndex].tough);
+ SetMonData(&gPlayerParty[0], MON_DATA_SHEEN, &gContestMons[gContestPlayerMonIndex].sheen);
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[0]);
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[1]);
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[2]);
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[3]);
}
void sub_80AA754(struct Sprite *sprite)
@@ -590,32 +571,32 @@ void sub_80AA754(struct Sprite *sprite)
static void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2)
{
- if(var1 == 1)
- {
- sprite->data2 = var2;
- sub_80AA280(var2);
- sub_80AA658(sprite->data2);
- }
+ if (var1 == 1)
+ {
+ sprite->data2 = var2;
+ sub_80AA280(var2);
+ sub_80AA658(sprite->data2);
+ }
}
void sub_80AA8C8(struct Sprite *sprite, s8 var1)
{
- sub_80AA8A0(sprite, var1, 0);
+ sub_80AA8A0(sprite, var1, 0);
}
void sub_80AA8D8(struct Sprite *sprite, s8 var1)
{
- sub_80AA8A0(sprite, var1, 1);
+ sub_80AA8A0(sprite, var1, 1);
}
void sub_80AA8E8(struct Sprite *sprite, s8 var1)
{
- sub_80AA8A0(sprite, var1, 2);
+ sub_80AA8A0(sprite, var1, 2);
}
void sub_80AA8F8(struct Sprite *sprite, s8 var1)
{
- sub_80AA8A0(sprite, var1, 3);
+ sub_80AA8A0(sprite, var1, 3);
}
static u8 sub_80AA908(u32 a1, u8 a2, s8 a3) // first param is unused.
@@ -634,48 +615,48 @@ void sub_80AA930(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].cool = sub_80AA908(val, gContestMons[sprite->data2].cool, var2);
- sub_80AA340(sprite->data2);
+ gContestMons[sprite->data2].cool = sub_80AA908(val, gContestMons[sprite->data2].cool, var2);
+ sub_80AA340(sprite->data2);
}
void sub_80AA974(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].cute = sub_80AA908(val, gContestMons[sprite->data2].cute, var2);
- sub_80AA388(sprite->data2);
+ gContestMons[sprite->data2].cute = sub_80AA908(val, gContestMons[sprite->data2].cute, var2);
+ sub_80AA388(sprite->data2);
}
void sub_80AA9B8(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].beauty = sub_80AA908(val, gContestMons[sprite->data2].beauty, var2);
- sub_80AA3D0(sprite->data2);
+ gContestMons[sprite->data2].beauty = sub_80AA908(val, gContestMons[sprite->data2].beauty, var2);
+ sub_80AA3D0(sprite->data2);
}
void sub_80AA9FC(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].smart = sub_80AA908(val, gContestMons[sprite->data2].smart, var2);
- sub_80AA418(sprite->data2);
+ gContestMons[sprite->data2].smart = sub_80AA908(val, gContestMons[sprite->data2].smart, var2);
+ sub_80AA418(sprite->data2);
}
void sub_80AAA40(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].tough = sub_80AA908(val, gContestMons[sprite->data2].tough, var2);
- sub_80AA460(sprite->data2);
+ gContestMons[sprite->data2].tough = sub_80AA908(val, gContestMons[sprite->data2].tough, var2);
+ sub_80AA460(sprite->data2);
}
void sub_80AAA84(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].sheen = sub_80AA908(val, gContestMons[sprite->data2].sheen, var2);
- sub_80AA4A8(sprite->data2);
+ gContestMons[sprite->data2].sheen = sub_80AA908(val, gContestMons[sprite->data2].sheen, var2);
+ sub_80AA4A8(sprite->data2);
}
// a similar function is at 0x80AA908, however, it apparently returns the wrong type (u8 vs u16).
@@ -695,39 +676,39 @@ void sub_80AAAF0(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].moves[0] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[0], var2);
- sub_80AA4F0(sprite->data2, 0);
+ gContestMons[sprite->data2].moves[0] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[0], var2);
+ sub_80AA4F0(sprite->data2, 0);
}
void sub_80AAB30(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].moves[1] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[1], var2);
- sub_80AA4F0(sprite->data2, 1);
+ gContestMons[sprite->data2].moves[1] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[1], var2);
+ sub_80AA4F0(sprite->data2, 1);
}
void sub_80AAB70(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].moves[2] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[2], var2);
- sub_80AA4F0(sprite->data2, 2);
+ gContestMons[sprite->data2].moves[2] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[2], var2);
+ sub_80AA4F0(sprite->data2, 2);
}
void sub_80AABB0(struct Sprite *sprite, u8 var2)
{
u8 val = sprite->data2;
- gContestMons[sprite->data2].moves[3] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[3], var2);
- sub_80AA4F0(sprite->data2, 3);
+ gContestMons[sprite->data2].moves[3] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[3], var2);
+ sub_80AA4F0(sprite->data2, 3);
}
void sub_80AABF0(struct Sprite *sprite, s8 var2)
{
s8 a = (var2 > 0) ? 1 : -1;
s8 r4 = sprite->data3 + a;
-
+
if (r4 < 0)
r4 = 0;
else if (r4 > 4)
@@ -781,7 +762,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2)
if (var2 == 1)
{
int i;
-
+
SetDebugMonForContest();
for (i = 0; i < 4; i++)
gUnknown_02038670[i] = sub_80AE770(i, gScriptContestCategory);
@@ -799,22 +780,22 @@ void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
//u32 sp44;
//u32 sp48;
u32 sp58;
-
+
gMain.state = 0;
-
+
r5 = d + 1;
//Could also be DmaClear32
DmaFill32(3, 0, (u8 *)VRAM + 0x18000 - r5 * 256, 0x100);
-
+
r7 = StringLength(string);
if (r7 > 8)
r7 = 8;
sp58 = d * 2;
-
+
//More stuff
-
+
r7_2 = 0x7C - sp58;
-
+
}
*/
@@ -1000,7 +981,7 @@ void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d)
{
u8 string[12];
u8 offset = 0;
-
+
if (a < 0)
{
string[0] = 0xAE;
@@ -1013,19 +994,22 @@ void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d)
void sub_80AAF30(void)
{
s32 i;
-
+
gUnknown_0203856C = 1;
gContestPlayerMonIndex = 3;
sub_80AE098(0);
+
for (i = 3; i > -1; i--)
gUnknown_02038690[i] = 3 - i;
+
for (i = 0; i < 3; i++)
{
gUnknown_02038670[i] = 0;
gUnknown_02038680[i] = 0;
gUnknown_02038678[i] = 0;
- memcpy(&gContestMons[i], &gContestMons[3], 0x40);
+ memcpy(&gContestMons[i], &gContestMons[3], sizeof(struct ContestPokemon));
}
+
gUnknown_02038670[3] = 0x12C;
gUnknown_02038680[3] = 0x190;
gUnknown_02038678[3] = 0x190;
@@ -1044,7 +1028,7 @@ int MatsudaDebugMenu_SetHighScore(void)
int MatsudaDebugMenu_ResetHighScore(void)
{
s32 i;
-
+
gUnknown_0203856C = 0;
for (i = 0; i < 4; i++)
{
@@ -1060,7 +1044,7 @@ int MatsudaDebugMenu_ResetHighScore(void)
int MatsudaDebugMenu_SetArtMuseumItems(void)
{
s32 i;
-
+
gContestPlayerMonIndex = 3;
sub_80AE098(0);
for (i = 3; i > -1; i--)
@@ -1076,7 +1060,7 @@ void unref_sub_80AB084(u8 *text)
u16 savedIme;
u8 *addr;
size_t size;
-
+
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
REG_BG1HOFS = 0;
@@ -1090,7 +1074,7 @@ void unref_sub_80AB084(u8 *text)
REG_WIN1H = 0;
REG_WIN1V = 0;
REG_DISPCNT = 0x1F40;
-
+
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -1099,15 +1083,15 @@ void unref_sub_80AB084(u8 *text)
ResetTasks();
ResetSpriteData();
SetMainCallback2(sub_80AB184);
-
+
addr = (void *)VRAM;
size = 0x18000;
- while(1)
+ while (1)
{
DmaFill32(3, 0, addr, 0x1000);
addr += 0x1000;
size -= 0x1000;
- if(size <= 0x1000)
+ if (size <= 0x1000)
{
DmaFill32(3, 0, addr, size);
break;
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
new file mode 100644
index 000000000..c01a51091
--- /dev/null
+++ b/src/mauville_old_man.c
@@ -0,0 +1,406 @@
+#include "global.h"
+#include "string_util.h"
+#include "menu.h"
+#include "script.h"
+#include "asm.h"
+#include "rng.h"
+
+extern u16 gScriptResult;
+extern u16 gSpecialVar_0x8004;
+
+extern void sub_80F83F8(void);
+extern void sub_81099CC(void);
+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[];
+
+extern u16 gUnknown_083E537C[];
+
+void sub_80F7A34(void)
+{
+ u16 i;
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ oldMan->oldMan1.unk_2D94 = 0;
+ oldMan->oldMan1.unk_2DBD = 0;
+
+ for(i = 0; i < 6; i++)
+ oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i];
+}
+
+void sub_80F7A6C(void)
+{
+ struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1;
+
+ bard->unk_2D94 = 1;
+ bard->unk_2D95 = 0;
+}
+
+void sub_80F7A7C(void)
+{
+ sub_80F83F8();
+}
+
+void sub_80F7A88(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ oldMan->oldMan1.unk_2D94 = 4;
+ oldMan->oldMan1.unk_2D95 = 0;
+}
+
+void sub_80F7A98(void)
+{
+ sub_81099CC();
+}
+
+void SetMauvilleOldMan(void)
+{
+ u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2;
+
+ 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;
+ }
+ sub_80F83D0();
+}
+
+u8 GetCurrentMauvilleOldMan(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ return oldMan->oldMan1.unk_2D94;
+}
+
+void sub_80F7B14(void)
+{
+ gScriptResult = GetCurrentMauvilleOldMan();
+}
+
+void sub_80F7B2C(void)
+{
+ u16 *scriptPtr = &gScriptResult; // why??
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ *scriptPtr = oldMan->oldMan1.unk_2DBD;
+}
+
+void sub_80F7B40(void)
+{
+ u16 i;
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+ //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct;
+
+ StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName);
+
+ for(i = 0; i < 4; i++)
+ oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i];
+
+ for(i = 0; i < 6; i++)
+ oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i];
+
+ oldMan->oldMan1.unk_2DBD = 1;
+}
+
+// too mathy
+__attribute__((naked))
+void sub_80F7BA0(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r1, _080F7C48 @ =gSaveBlock1 + 0x2D94\n\
+ ldr r0, _080F7C4C @ =gSpecialVar_0x8004\n\
+ ldrh r0, [r0]\n\
+ adds r5, r1, 0\n\
+ adds r5, 0xE\n\
+ cmp r0, 0\n\
+ bne _080F7BB2\n\
+ adds r5, r1, 0x2\n\
+_080F7BB2:\n\
+ ldr r2, _080F7C50 @ =gStringVar4\n\
+ adds r4, r2, 0\n\
+ movs r6, 0\n\
+_080F7BB8:\n\
+ ldrh r1, [r5]\n\
+ adds r5, 0x2\n\
+ adds r0, r2, 0\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ adds r7, r6, 0x1\n\
+ cmp r2, r4\n\
+ beq _080F7BDA\n\
+ movs r1, 0x37\n\
+_080F7BCC:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080F7BD4\n\
+ strb r1, [r4]\n\
+_080F7BD4:\n\
+ adds r4, 0x1\n\
+ cmp r2, r4\n\
+ bne _080F7BCC\n\
+_080F7BDA:\n\
+ adds r4, 0x1\n\
+ movs r0, 0\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+ ldrh r1, [r5]\n\
+ adds r5, 0x2\n\
+ adds r0, r2, 0\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ cmp r2, r4\n\
+ beq _080F7C02\n\
+ movs r1, 0x37\n\
+_080F7BF4:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080F7BFC\n\
+ strb r1, [r4]\n\
+_080F7BFC:\n\
+ adds r4, 0x1\n\
+ cmp r2, r4\n\
+ bne _080F7BF4\n\
+_080F7C02:\n\
+ adds r4, 0x1\n\
+ movs r0, 0xFE\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+ ldrh r1, [r5]\n\
+ adds r5, 0x2\n\
+ adds r0, r2, 0\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ cmp r2, r4\n\
+ beq _080F7C2A\n\
+ movs r1, 0x37\n\
+_080F7C1C:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080F7C24\n\
+ strb r1, [r4]\n\
+_080F7C24:\n\
+ adds r4, 0x1\n\
+ cmp r2, r4\n\
+ bne _080F7C1C\n\
+_080F7C2A:\n\
+ cmp r6, 0\n\
+ bne _080F7C3A\n\
+ movs r0, 0xFC\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+ movs r0, 0xF\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+_080F7C3A:\n\
+ lsls r0, r7, 16\n\
+ lsrs r6, r0, 16\n\
+ cmp r6, 0x1\n\
+ bls _080F7BB8\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F7C48: .4byte gSaveBlock1 + 0x2D94\n\
+_080F7C4C: .4byte gSpecialVar_0x8004\n\
+_080F7C50: .4byte gStringVar4\n\
+ .syntax divided");
+}
+
+void sub_80F7C54(void)
+{
+ sub_80F7F80(gSpecialVar_0x8004);
+ MenuDisplayMessageBox();
+ ScriptContext1_Stop();
+}
+
+void sub_80F7C70(void)
+{
+ u16 *scriptPtr = &gScriptResult; // again??
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ *scriptPtr = oldMan->oldMan1.unk_2D95;
+}
+
+void sub_80F7C84(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ oldMan->oldMan1.unk_2D95 = 1;
+}
+
+void sub_80F7C90(void)
+{
+ u16 var = sub_80EB8EC();
+
+ if(var == 0xFFFF)
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ sub_80EB3FC(gStringVar1, var);
+ gScriptResult = TRUE;
+ }
+}
+
+void sub_80F7CC8(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ if(oldMan->oldMan1.unk_2D95 == 10)
+ {
+ gScriptResult = FALSE;
+ oldMan->oldMan1.unk_2D95 = 0;
+ }
+ else
+ gScriptResult = TRUE;
+}
+
+// someone fix this
+#ifdef NONMATCHING
+void sub_80F7CF4(void)
+{
+ u8 *stringPtr;
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ if(oldMan->oldMan2.unk1 == 0)
+ sub_80F7DC0();
+
+ if(oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1] != 0xFFFF) // is not the last element of the array?
+ {
+ u16 random = 7 % Random(); // this is a little bit closer, but the compiler prefers an AND instead of division. i assume its because the compiler wants to avoid division by zero, however using an & causes this order to not be close anymore.
+ sub_80EB3FC(gStringVar4, oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1]);
+ stringPtr = StringCopy(gStringVar4, gOtherText_Is);
+ stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]);
+ StringCopy(stringPtr, gOtherText_DontYouAgree);
+ }
+ else
+ {
+ StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->oldMan2.mauvilleOldMan_ecArray2[oldMan->oldMan2.unk2++]]);
+ }
+ if(!(Random() % 10))
+ oldMan->oldMan2.unk1 = 10;
+ else
+ oldMan->oldMan2.unk1++;
+
+ gScriptResult = TRUE;
+}
+#else
+__attribute__((naked))
+void sub_80F7CF4(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r5, _080F7D50 @ =gSaveBlock1 + 0x2D94\n\
+ ldrb r0, [r5, 0x1]\n\
+ cmp r0, 0\n\
+ bne _080F7D02\n\
+ bl sub_80F7DC0\n\
+_080F7D02:\n\
+ ldrb r0, [r5, 0x1]\n\
+ lsls r0, 1\n\
+ adds r6, r5, 0x4\n\
+ adds r0, r6\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _080F7D54 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ beq _080F7D68\n\
+ bl Random\n\
+ adds r4, r0, 0\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ movs r0, 0x7\n\
+ ands r4, r0\n\
+ ldr r0, _080F7D58 @ =gStringVar4\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ ldrh r1, [r1]\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F7D5C @ =gOtherText_Is\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ ldr r0, _080F7D60 @ =gUnknown_083E5388\n\
+ lsls r4, 2\n\
+ adds r4, r0\n\
+ ldr r1, [r4]\n\
+ adds r0, r2, 0\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F7D64 @ =gOtherText_DontYouAgree\n\
+ bl StringCopy\n\
+ b _080F7D88\n\
+ .align 2, 0\n\
+_080F7D50: .4byte gSaveBlock1 + 0x2D94\n\
+_080F7D54: .4byte 0x0000ffff\n\
+_080F7D58: .4byte gStringVar4\n\
+_080F7D5C: .4byte gOtherText_Is\n\
+_080F7D60: .4byte gUnknown_083E5388\n\
+_080F7D64: .4byte gOtherText_DontYouAgree\n\
+_080F7D68:\n\
+ ldr r0, _080F7DA0 @ =gStringVar4\n\
+ ldr r3, _080F7DA4 @ =gUnknown_083E53A8\n\
+ ldrb r1, [r5, 0x2]\n\
+ adds r2, r1, 0x1\n\
+ strb r2, [r5, 0x2]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x18\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ lsls r1, 2\n\
+ adds r1, r3\n\
+ ldr r1, [r1]\n\
+ bl StringCopy\n\
+_080F7D88:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080F7DA8\n\
+ movs r0, 0xA\n\
+ b _080F7DAC\n\
+ .align 2, 0\n\
+_080F7DA0: .4byte gStringVar4\n\
+_080F7DA4: .4byte gUnknown_083E53A8\n\
+_080F7DA8:\n\
+ ldrb r0, [r5, 0x1]\n\
+ adds r0, 0x1\n\
+_080F7DAC:\n\
+ strb r0, [r5, 0x1]\n\
+ ldr r1, _080F7DBC @ =gScriptResult\n\
+ movs r0, 0x1\n\
+ strh r0, [r1]\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F7DBC: .4byte gScriptResult\n\
+ .syntax divided");
+}
+#endif
diff --git a/src/menu.c b/src/menu.c
index ee9376079..ba98ff057 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1,13 +1,13 @@
#include "global.h"
#include "menu.h"
#include "main.h"
-#include "text.h"
-#include "songs.h"
-#include "text_window.h"
-#include "sound.h"
-#include "menu_cursor.h"
#include "map_obj_lock.h"
+#include "menu_cursor.h"
#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "text.h"
+#include "text_window.h"
struct Menu
{
@@ -654,7 +654,7 @@ u8 *sub_8072C44(u8 *a1, s32 a2, u8 a3, u8 a4)
return AlignInt2(gMenuWindowPtr, a1, a2, a3, a4);
}
-u8 *sub_8072C74(u8 *a1, u8 *a2, u8 a3, u8 a4)
+u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4)
{
return AlignString(gMenuWindowPtr, a1, a2, a3, a4);
}
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index 201c6c4d8..fa28332df 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -1,24 +1,24 @@
#include "global.h"
#include "menu_cursor.h"
-#include "sprite.h"
#include "palette.h"
+#include "sprite.h"
-extern struct SpriteSheet gUnknown_0842F140[];
-extern struct SpriteSheet gUnknown_0842F1C0[];
-extern struct SpritePalette gUnknown_0842F240;
-extern struct SpritePalette gUnknown_0842F248;
-extern struct SpriteTemplate gSpriteTemplate_842F250[];
-extern struct SpriteTemplate gSpriteTemplate_842F298[];
+extern const struct SpriteSheet gUnknown_0842F140[];
+extern const struct SpriteSheet gUnknown_0842F1C0[];
+extern const struct SpritePalette gUnknown_0842F240;
+extern const struct SpritePalette gUnknown_0842F248;
+extern const struct SpriteTemplate gSpriteTemplate_842F250[];
+extern const struct SpriteTemplate gSpriteTemplate_842F298[];
-extern struct Subsprite *gUnknown_0842F5BC[];
+extern struct Subsprite *const gUnknown_0842F5BC[];
-extern struct SubspriteTable gSubspriteTables_842F5C0[];
-extern struct SubspriteTable gSubspriteTables_842F6C0[];
-extern struct SubspriteTable gUnknown_0842F758[];
+extern const struct SubspriteTable gSubspriteTables_842F5C0[];
+extern const struct SubspriteTable gSubspriteTables_842F6C0[];
+extern const struct SubspriteTable gUnknown_0842F758[];
-extern struct Subsprite gUnknown_0842F780;
-extern struct Subsprite gUnknown_0842F788;
-extern struct Subsprite gUnknown_0842F790;
+extern const struct Subsprite gUnknown_0842F780;
+extern const struct Subsprite gUnknown_0842F788;
+extern const struct Subsprite gUnknown_0842F790;
extern u16 gUnknown_0203A360[];
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index b78e76e10..a7fb5abef 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -1,7 +1,251 @@
#include "global.h"
#include "metatile_behaviors.h"
-extern u8 gUnknown_08308E2C[];
+#define TILE_ATTRIBUTES(three, two, one) (((one) ? 1 : 0) | ((two) ? 2 : 0) | ((three) ? 4 : 0))
+
+static const u8 sTileBitAttributes[] =
+{
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE)
+};
bool8 MetatileBehavior_IsWaterfall(u8);
@@ -13,7 +257,7 @@ bool8 MetatileBehavior_IsATile(u8 var)
bool8 MetatileBehavior_IsEncounterTile(u8 var)
{
- if((gUnknown_08308E2C[var] & 1) != 0)
+ if ((sTileBitAttributes[var] & 1) != 0)
return TRUE;
else
return FALSE;
@@ -21,7 +265,7 @@ bool8 MetatileBehavior_IsEncounterTile(u8 var)
bool8 MetatileBehavior_IsJumpEast(u8 var)
{
- if(var == MB_JUMP_EAST)
+ if (var == MB_JUMP_EAST)
return TRUE;
else
return FALSE;
@@ -29,7 +273,7 @@ bool8 MetatileBehavior_IsJumpEast(u8 var)
bool8 MetatileBehavior_IsJumpWest(u8 var)
{
- if(var == MB_JUMP_WEST)
+ if (var == MB_JUMP_WEST)
return TRUE;
else
return FALSE;
@@ -37,7 +281,7 @@ bool8 MetatileBehavior_IsJumpWest(u8 var)
bool8 MetatileBehavior_IsJumpNorth(u8 var)
{
- if(var == MB_JUMP_NORTH)
+ if (var == MB_JUMP_NORTH)
return TRUE;
else
return FALSE;
@@ -45,7 +289,7 @@ bool8 MetatileBehavior_IsJumpNorth(u8 var)
bool8 MetatileBehavior_IsJumpSouth(u8 var)
{
- if(var == MB_JUMP_SOUTH)
+ if (var == MB_JUMP_SOUTH)
return TRUE;
else
return FALSE;
@@ -53,7 +297,7 @@ bool8 MetatileBehavior_IsJumpSouth(u8 var)
bool8 MetatileBehavior_IsPokeGrass(u8 var)
{
- if(var == MB_TALL_GRASS || var == MB_LONG_GRASS)
+ if (var == MB_TALL_GRASS || var == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
@@ -61,7 +305,7 @@ bool8 MetatileBehavior_IsPokeGrass(u8 var)
bool8 MetatileBehavior_IsSandOrDeepSand(u8 var)
{
- if(var == MB_SAND || var == MB_DEEP_SAND)
+ if (var == MB_SAND || var == MB_DEEP_SAND)
return TRUE;
else
return FALSE;
@@ -69,7 +313,7 @@ bool8 MetatileBehavior_IsSandOrDeepSand(u8 var)
bool8 MetatileBehavior_IsDeepSand(u8 var)
{
- if(var == MB_DEEP_SAND)
+ if (var == MB_DEEP_SAND)
return TRUE;
else
return FALSE;
@@ -77,7 +321,7 @@ bool8 MetatileBehavior_IsDeepSand(u8 var)
bool8 MetatileBehavior_IsReflective(u8 var)
{
- if(var == MB_POND_WATER || var == MB_PUDDLE || var == MB_1A || var == MB_ICE || var == MB_SOOTOPOLIS_DEEP_WATER || var == MB_REFLECTION_UNDER_BRIDGE)
+ if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_1A || var == MB_ICE || var == MB_SOOTOPOLIS_DEEP_WATER || var == MB_REFLECTION_UNDER_BRIDGE)
return TRUE;
else
return FALSE;
@@ -85,7 +329,7 @@ bool8 MetatileBehavior_IsReflective(u8 var)
bool8 MetatileBehavior_IsIce(u8 var)
{
- if(var == MB_ICE)
+ if (var == MB_ICE)
return TRUE;
else
return FALSE;
@@ -93,7 +337,7 @@ bool8 MetatileBehavior_IsIce(u8 var)
bool8 MetatileBehavior_IsWarpDoor(u8 var)
{
- if(var == MB_ANIMATED_DOOR)
+ if (var == MB_ANIMATED_DOOR)
return TRUE;
else
return FALSE;
@@ -101,7 +345,7 @@ bool8 MetatileBehavior_IsWarpDoor(u8 var)
bool8 MetatileBehavior_IsDoor(u8 var)
{
- if(var == MB_8D || var == MB_ANIMATED_DOOR)
+ if (var == MB_8D || var == MB_ANIMATED_DOOR)
return TRUE;
else
return FALSE;
@@ -109,7 +353,7 @@ bool8 MetatileBehavior_IsDoor(u8 var)
bool8 MetatileBehavior_IsEscalator(u8 var)
{
- if(var == MB_UP_ESCALATOR || var == MB_DOWN_ESCALATOR)
+ if (var == MB_UP_ESCALATOR || var == MB_DOWN_ESCALATOR)
return TRUE;
else
return FALSE;
@@ -117,7 +361,7 @@ bool8 MetatileBehavior_IsEscalator(u8 var)
bool8 unref_sub_8056EE0(u8 var)
{
- if(var == MB_04)
+ if (var == MB_04)
return TRUE;
else
return FALSE;
@@ -125,7 +369,7 @@ bool8 unref_sub_8056EE0(u8 var)
bool8 MetatileBehavior_IsLadder(u8 var)
{
- if(var == MB_LADDER)
+ if (var == MB_LADDER)
return TRUE;
else
return FALSE;
@@ -133,7 +377,7 @@ bool8 MetatileBehavior_IsLadder(u8 var)
bool8 MetatileBehavior_IsNonAnimDoor(u8 var)
{
- if(var == MB_NON_ANIMATED_DOOR || var == MB_WATER_DOOR || var == MB_DEEP_SOUTH_WARP)
+ if (var == MB_NON_ANIMATED_DOOR || var == MB_WATER_DOOR || var == MB_DEEP_SOUTH_WARP)
return TRUE;
else
return FALSE;
@@ -141,7 +385,7 @@ bool8 MetatileBehavior_IsNonAnimDoor(u8 var)
bool8 MetatileBehavior_IsDeepSouthWarp(u8 var)
{
- if(var == MB_DEEP_SOUTH_WARP)
+ if (var == MB_DEEP_SOUTH_WARP)
return TRUE;
else
return FALSE;
@@ -149,7 +393,7 @@ bool8 MetatileBehavior_IsDeepSouthWarp(u8 var)
bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 var)
{
- if((gUnknown_08308E2C[var] & 2) != 0)
+ if ((sTileBitAttributes[var] & 2) != 0)
return TRUE;
else
return FALSE;
@@ -157,7 +401,7 @@ bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 var)
bool8 MetatileBehavior_IsEastArrowWarp(u8 var)
{
- if(var == MB_EAST_ARROW_WARP)
+ if (var == MB_EAST_ARROW_WARP)
return TRUE;
else
return FALSE;
@@ -165,7 +409,7 @@ bool8 MetatileBehavior_IsEastArrowWarp(u8 var)
bool8 MetatileBehavior_IsWestArrowWarp(u8 var)
{
- if(var == MB_WEST_ARROW_WARP)
+ if (var == MB_WEST_ARROW_WARP)
return TRUE;
else
return FALSE;
@@ -173,7 +417,7 @@ bool8 MetatileBehavior_IsWestArrowWarp(u8 var)
bool8 MetatileBehavior_IsNorthArrowWarp(u8 var)
{
- if(var == MB_NORTH_ARROW_WARP || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
+ if (var == MB_NORTH_ARROW_WARP || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
return TRUE;
else
return FALSE;
@@ -181,7 +425,7 @@ bool8 MetatileBehavior_IsNorthArrowWarp(u8 var)
bool8 MetatileBehavior_IsSouthArrowWarp(u8 var)
{
- if(var == MB_SOUTH_ARROW_WARP || var == MB_WATER_SOUTH_ARROW_WARP || var == MB_SHOAL_CAVE_ENTRANCE)
+ if (var == MB_SOUTH_ARROW_WARP || var == MB_WATER_SOUTH_ARROW_WARP || var == MB_SHOAL_CAVE_ENTRANCE)
return TRUE;
else
return FALSE;
@@ -192,7 +436,7 @@ bool8 MetatileBehavior_IsArrowWarp(u8 var)
{
u8 var2 = 0;
- if(MetatileBehavior_IsEastArrowWarp(var)
+ if (MetatileBehavior_IsEastArrowWarp(var)
|| MetatileBehavior_IsWestArrowWarp(var)
|| MetatileBehavior_IsNorthArrowWarp(var)
|| MetatileBehavior_IsSouthArrowWarp(var))
@@ -204,7 +448,7 @@ bool8 MetatileBehavior_IsArrowWarp(u8 var)
bool8 MetatileBehavior_IsMoveTile(u8 var)
{
- if((var >= MB_WALK_EAST && var <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR) || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT)
+ if ((var >= MB_WALK_EAST && var <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR) || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT)
|| var == MB_MUDDY_SLOPE || var == MB_CRACKED_FLOOR || var == MB_WATERFALL || var == MB_ICE || var == MB_BB || var == MB_BC)
return TRUE;
else
@@ -213,7 +457,7 @@ bool8 MetatileBehavior_IsMoveTile(u8 var)
bool8 MetatileBehavior_IsIce_2(u8 var)
{
- if(var == MB_ICE)
+ if (var == MB_ICE)
return TRUE;
else
return FALSE;
@@ -221,7 +465,7 @@ bool8 MetatileBehavior_IsIce_2(u8 var)
bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 var)
{
- if(var == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
+ if (var == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
return TRUE;
else
return FALSE;
@@ -229,7 +473,7 @@ bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 var)
bool8 MetatileBehavior_0x05(u8 var)
{
- if(var == MB_05)
+ if (var == MB_05)
return TRUE;
else
return FALSE;
@@ -237,7 +481,7 @@ bool8 MetatileBehavior_0x05(u8 var)
bool8 MetatileBehavior_IsWalkNorth(u8 var)
{
- if(var == MB_WALK_NORTH)
+ if (var == MB_WALK_NORTH)
return TRUE;
else
return FALSE;
@@ -245,7 +489,7 @@ bool8 MetatileBehavior_IsWalkNorth(u8 var)
bool8 MetatileBehavior_IsWalkSouth(u8 var)
{
- if(var == MB_WALK_SOUTH)
+ if (var == MB_WALK_SOUTH)
return TRUE;
else
return FALSE;
@@ -253,7 +497,7 @@ bool8 MetatileBehavior_IsWalkSouth(u8 var)
bool8 MetatileBehavior_IsWalkWest(u8 var)
{
- if(var == MB_WALK_WEST)
+ if (var == MB_WALK_WEST)
return TRUE;
else
return FALSE;
@@ -261,7 +505,7 @@ bool8 MetatileBehavior_IsWalkWest(u8 var)
bool8 MetatileBehavior_IsWalkEast(u8 var)
{
- if(var == MB_WALK_EAST)
+ if (var == MB_WALK_EAST)
return TRUE;
else
return FALSE;
@@ -269,7 +513,7 @@ bool8 MetatileBehavior_IsWalkEast(u8 var)
bool8 MetatileBehavior_IsNorthwardCurrent(u8 var)
{
- if(var == MB_NORTHWARD_CURRENT)
+ if (var == MB_NORTHWARD_CURRENT)
return TRUE;
else
return FALSE;
@@ -277,7 +521,7 @@ bool8 MetatileBehavior_IsNorthwardCurrent(u8 var)
bool8 MetatileBehavior_IsSouthwardCurrent(u8 var)
{
- if(var == MB_SOUTHWARD_CURRENT)
+ if (var == MB_SOUTHWARD_CURRENT)
return TRUE;
else
return FALSE;
@@ -285,7 +529,7 @@ bool8 MetatileBehavior_IsSouthwardCurrent(u8 var)
bool8 MetatileBehavior_IsWestwardCurrent(u8 var)
{
- if(var == MB_WESTWARD_CURRENT)
+ if (var == MB_WESTWARD_CURRENT)
return TRUE;
else
return FALSE;
@@ -293,7 +537,7 @@ bool8 MetatileBehavior_IsWestwardCurrent(u8 var)
bool8 MetatileBehavior_IsEastwardCurrent(u8 var)
{
- if(var == MB_EASTWARD_CURRENT)
+ if (var == MB_EASTWARD_CURRENT)
return TRUE;
else
return FALSE;
@@ -301,7 +545,7 @@ bool8 MetatileBehavior_IsEastwardCurrent(u8 var)
bool8 MetatileBehavior_IsSlideNorth(u8 var)
{
- if(var == MB_SLIDE_NORTH)
+ if (var == MB_SLIDE_NORTH)
return TRUE;
else
return FALSE;
@@ -309,7 +553,7 @@ bool8 MetatileBehavior_IsSlideNorth(u8 var)
bool8 MetatileBehavior_IsSlideSouth(u8 var)
{
- if(var == MB_SLIDE_SOUTH)
+ if (var == MB_SLIDE_SOUTH)
return TRUE;
else
return FALSE;
@@ -317,7 +561,7 @@ bool8 MetatileBehavior_IsSlideSouth(u8 var)
bool8 MetatileBehavior_IsSlideWest(u8 var)
{
- if(var == MB_SLIDE_WEST)
+ if (var == MB_SLIDE_WEST)
return TRUE;
else
return FALSE;
@@ -325,7 +569,7 @@ bool8 MetatileBehavior_IsSlideWest(u8 var)
bool8 MetatileBehavior_IsSlideEast(u8 var)
{
- if(var == MB_SLIDE_EAST)
+ if (var == MB_SLIDE_EAST)
return TRUE;
else
return FALSE;
@@ -333,7 +577,7 @@ bool8 MetatileBehavior_IsSlideEast(u8 var)
bool8 MetatileBehavior_IsCounter(u8 var)
{
- if(var == MB_COUNTER)
+ if (var == MB_COUNTER)
return TRUE;
else
return FALSE;
@@ -341,9 +585,9 @@ bool8 MetatileBehavior_IsCounter(u8 var)
bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir)
{
- if(playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
+ if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
return FALSE;
- else if(tile == MB_TELEVISION) // is the player's north tile a TV?
+ else if (tile == MB_TELEVISION) // is the player's north tile a TV?
return TRUE;
else
return FALSE;
@@ -351,7 +595,7 @@ bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir)
bool8 MetatileBehavior_IsPC(u8 var)
{
- if(var == MB_PC)
+ if (var == MB_PC)
return TRUE;
else
return FALSE;
@@ -359,7 +603,7 @@ bool8 MetatileBehavior_IsPC(u8 var)
bool8 is_tile_x84(u8 var)
{
- if(var == MB_84)
+ if (var == MB_84)
return TRUE;
else
return FALSE;
@@ -367,7 +611,7 @@ bool8 is_tile_x84(u8 var)
bool8 sub_80571C0(u8 var)
{
- if(var == MB_91 || var == MB_93 || var == MB_95 || var == MB_97
+ if (var == MB_91 || var == MB_93 || var == MB_95 || var == MB_97
|| var == MB_99 || var == MB_9B || var == MB_9D)
return TRUE;
else
@@ -376,7 +620,7 @@ bool8 sub_80571C0(u8 var)
bool8 MetatileBehavior_IsSecretBaseCave(u8 var)
{
- if(var == MB_SECRET_BASE_SPOT_RED_CAVE || var == MB_SECRET_BASE_SPOT_BROWN_CAVE || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE || var == MB_SECRET_BASE_SPOT_BLUE_CAVE)
+ if (var == MB_SECRET_BASE_SPOT_RED_CAVE || var == MB_SECRET_BASE_SPOT_BROWN_CAVE || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE || var == MB_SECRET_BASE_SPOT_BLUE_CAVE)
return TRUE;
else
return FALSE;
@@ -384,7 +628,7 @@ bool8 MetatileBehavior_IsSecretBaseCave(u8 var)
bool8 MetatileBehavior_IsSecretBaseTree(u8 var)
{
- if(var == MB_SECRET_BASE_SPOT_TREE_1 || var == MB_SECRET_BASE_SPOT_TREE_2)
+ if (var == MB_SECRET_BASE_SPOT_TREE_1 || var == MB_SECRET_BASE_SPOT_TREE_2)
return TRUE;
else
return FALSE;
@@ -392,7 +636,7 @@ bool8 MetatileBehavior_IsSecretBaseTree(u8 var)
bool8 MetatileBehavior_IsSecretBaseShrub(u8 var)
{
- if(var == MB_SECRET_BASE_SPOT_SHRUB)
+ if (var == MB_SECRET_BASE_SPOT_SHRUB)
return TRUE;
else
return FALSE;
@@ -400,7 +644,7 @@ bool8 MetatileBehavior_IsSecretBaseShrub(u8 var)
bool8 MetatileBehavior_IsSecretBasePC(u8 var)
{
- if(var == MB_SECRET_BASE_PC)
+ if (var == MB_SECRET_BASE_PC)
return TRUE;
else
return FALSE;
@@ -408,7 +652,7 @@ bool8 MetatileBehavior_IsSecretBasePC(u8 var)
bool8 sub_805724C(u8 var)
{
- if(var == MB_B1)
+ if (var == MB_B1)
return TRUE;
else
return FALSE;
@@ -416,7 +660,7 @@ bool8 sub_805724C(u8 var)
bool8 unref_sub_8057260(u8 var)
{
- if(var == MB_B2)
+ if (var == MB_B2)
return TRUE;
else
return FALSE;
@@ -424,7 +668,7 @@ bool8 unref_sub_8057260(u8 var)
bool8 sub_8057274(u8 var)
{
- if(var == MB_B3)
+ if (var == MB_B3)
return TRUE;
else
return FALSE;
@@ -432,7 +676,7 @@ bool8 sub_8057274(u8 var)
bool8 sub_8057288(u8 var)
{
- if(var == MB_B9)
+ if (var == MB_B9)
return TRUE;
else
return FALSE;
@@ -440,7 +684,7 @@ bool8 sub_8057288(u8 var)
bool8 sub_805729C(u8 var)
{
- if(var == MB_NORMAL)
+ if (var == MB_NORMAL)
return TRUE;
else
return FALSE;
@@ -448,7 +692,7 @@ bool8 sub_805729C(u8 var)
bool8 sub_80572B0(u8 var)
{
- if(var == MB_B7)
+ if (var == MB_B7)
return TRUE;
else
return FALSE;
@@ -456,7 +700,7 @@ bool8 sub_80572B0(u8 var)
bool8 unref_sub_80572C4(u8 var)
{
- if(var == MB_B2)
+ if (var == MB_B2)
return TRUE;
else
return FALSE;
@@ -464,7 +708,7 @@ bool8 unref_sub_80572C4(u8 var)
bool8 sub_80572D8(u8 var)
{
- if(var == MB_B5)
+ if (var == MB_B5)
return TRUE;
else
return FALSE;
@@ -472,7 +716,7 @@ bool8 sub_80572D8(u8 var)
bool8 sub_80572EC(u8 var)
{
- if(var == MB_C3)
+ if (var == MB_C3)
return TRUE;
else
return FALSE;
@@ -480,7 +724,7 @@ bool8 sub_80572EC(u8 var)
bool8 sub_8057300(u8 var)
{
- if(var == MB_C2)
+ if (var == MB_C2)
return TRUE;
else
return FALSE;
@@ -488,7 +732,7 @@ bool8 sub_8057300(u8 var)
bool8 sub_8057314(u8 var)
{
- if(var == MB_B8)
+ if (var == MB_B8)
return TRUE;
else
return FALSE;
@@ -496,7 +740,7 @@ bool8 sub_8057314(u8 var)
bool8 sub_8057328(u8 var)
{
- if(var == MB_BE)
+ if (var == MB_BE)
return TRUE;
else
return FALSE;
@@ -504,7 +748,7 @@ bool8 sub_8057328(u8 var)
bool8 sub_805733C(u8 var)
{
- if(var == MB_BD)
+ if (var == MB_BD)
return TRUE;
else
return FALSE;
@@ -512,7 +756,7 @@ bool8 sub_805733C(u8 var)
bool8 sub_8057350(u8 var)
{
- if(var == MB_BA)
+ if (var == MB_BA)
return TRUE;
else
return FALSE;
@@ -520,7 +764,7 @@ bool8 sub_8057350(u8 var)
bool8 sub_8057364(u8 var)
{
- if(var == MB_BF)
+ if (var == MB_BF)
return TRUE;
else
return FALSE;
@@ -528,7 +772,7 @@ bool8 sub_8057364(u8 var)
bool8 sub_8057378(u8 var)
{
- if(var == MB_C4)
+ if (var == MB_C4)
return TRUE;
else
return FALSE;
@@ -536,7 +780,7 @@ bool8 sub_8057378(u8 var)
bool8 sub_805738C(u8 var)
{
- if(var == MB_C5)
+ if (var == MB_C5)
return TRUE;
else
return FALSE;
@@ -544,7 +788,7 @@ bool8 sub_805738C(u8 var)
bool8 MetatileBehavior_HasRipples(u8 var)
{
- if(var == MB_POND_WATER || var == MB_PUDDLE || var == MB_SOOTOPOLIS_DEEP_WATER)
+ if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_SOOTOPOLIS_DEEP_WATER)
return TRUE;
else
return FALSE;
@@ -552,7 +796,7 @@ bool8 MetatileBehavior_HasRipples(u8 var)
bool8 MetatileBehavior_IsPuddle(u8 var)
{
- if(var == MB_PUDDLE)
+ if (var == MB_PUDDLE)
return TRUE;
else
return FALSE;
@@ -560,7 +804,7 @@ bool8 MetatileBehavior_IsPuddle(u8 var)
bool8 MetatileBehavior_IsTallGrass(u8 var)
{
- if(var == MB_TALL_GRASS)
+ if (var == MB_TALL_GRASS)
return TRUE;
else
return FALSE;
@@ -568,7 +812,7 @@ bool8 MetatileBehavior_IsTallGrass(u8 var)
bool8 MetatileBehavior_IsLongGrass(u8 var)
{
- if(var == MB_LONG_GRASS)
+ if (var == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
@@ -576,15 +820,15 @@ bool8 MetatileBehavior_IsLongGrass(u8 var)
bool8 MetatileBehavior_IsBerryTreeSoil(u8 var)
{
- if(var == MB_BERRY_TREE_SOIL)
+ if (var == MB_BERRY_TREE_SOIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsAsh(u8 var)
+bool8 MetatileBehavior_IsAshGrass(u8 var)
{
- if(var == MB_ASH)
+ if (var == MB_ASHGRASS)
return TRUE;
else
return FALSE;
@@ -592,7 +836,7 @@ bool8 MetatileBehavior_IsAsh(u8 var)
bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8 var)
{
- if(var == MB_25)
+ if (var == MB_25)
return TRUE;
else
return FALSE;
@@ -600,7 +844,7 @@ bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8 var)
bool8 MetatileBehavior_IsBridge(u8 var)
{
- if(var >= MB_WARP_OR_BRIDGE && var <= MB_ROUTE120_NORTH_BRIDGE_2)
+ if (var >= MB_WARP_OR_BRIDGE && var <= MB_ROUTE120_NORTH_BRIDGE_2)
return TRUE;
else
return FALSE;
@@ -610,7 +854,7 @@ u8 sub_8057450(u8 var)
{
u8 result = var - MB_WARP_OR_BRIDGE;
- if(result > 3)
+ if (result > 3)
result = 0;
return result;
@@ -618,7 +862,7 @@ u8 sub_8057450(u8 var)
bool8 MetatileBehavior_IsLandWildEncounter(u8 var)
{
- if(MetatileBehavior_IsSurfableWaterOrUnderwater(var) == FALSE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == FALSE && MetatileBehavior_IsEncounterTile(var) == TRUE)
return TRUE;
else
return FALSE;
@@ -626,7 +870,7 @@ bool8 MetatileBehavior_IsLandWildEncounter(u8 var)
bool8 MetatileBehavior_IsWaterWildEncounter(u8 var)
{
- if(MetatileBehavior_IsSurfableWaterOrUnderwater(var) == TRUE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == TRUE && MetatileBehavior_IsEncounterTile(var) == TRUE)
return TRUE;
else
return FALSE;
@@ -634,7 +878,7 @@ bool8 MetatileBehavior_IsWaterWildEncounter(u8 var)
bool8 sub_80574C4(u8 var)
{
- if(var == MB_0B)
+ if (var == MB_0B)
return TRUE;
else
return FALSE;
@@ -642,15 +886,15 @@ bool8 sub_80574C4(u8 var)
bool8 sub_80574D8(u8 var)
{
- if(var == MB_MOUNTAIN_TOP)
+ if (var == MB_MOUNTAIN_TOP)
return TRUE;
else
- return FALSE;
+ return FALSE;
}
bool8 sub_80574EC(u8 var)
{
- if(var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER)
+ if (var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER)
return TRUE;
else
return FALSE;
@@ -658,7 +902,7 @@ bool8 sub_80574EC(u8 var)
bool8 sub_805750C(u8 var)
{
- if(var == MB_NO_SURFACING || var == MB_SEAWEED_NO_SURFACING)
+ if (var == MB_NO_SURFACING || var == MB_SEAWEED_NO_SURFACING)
return TRUE;
else
return FALSE;
@@ -666,7 +910,7 @@ bool8 sub_805750C(u8 var)
bool8 MetatileBehavior_IsShallowFlowingWater(u8 var)
{
- if(var == MB_SHALLOW_WATER || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP || var == MB_SHOAL_CAVE_ENTRANCE)
+ if (var == MB_SHALLOW_WATER || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP || var == MB_SHOAL_CAVE_ENTRANCE)
return TRUE;
else
return FALSE;
@@ -674,7 +918,7 @@ bool8 MetatileBehavior_IsShallowFlowingWater(u8 var)
bool8 MetatileBehavior_IsThinIce(u8 var)
{
- if(var == MB_THIN_ICE)
+ if (var == MB_THIN_ICE)
return TRUE;
else
return FALSE;
@@ -682,7 +926,7 @@ bool8 MetatileBehavior_IsThinIce(u8 var)
bool8 MetatileBehavior_IsCrackedIce(u8 var)
{
- if(var == MB_CRACKED_ICE)
+ if (var == MB_CRACKED_ICE)
return TRUE;
else
return FALSE;
@@ -690,7 +934,7 @@ bool8 MetatileBehavior_IsCrackedIce(u8 var)
bool8 sub_8057568(u8 var)
{
- if(var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER)
+ if (var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER)
return TRUE;
else
return FALSE;
@@ -698,7 +942,7 @@ bool8 sub_8057568(u8 var)
bool8 unref_sub_8057584(u8 var)
{
- if(var == MB_18 || var == MB_1A)
+ if (var == MB_18 || var == MB_1A)
return TRUE;
else
return FALSE;
@@ -706,7 +950,7 @@ bool8 unref_sub_8057584(u8 var)
bool8 sub_805759C(u8 var)
{
- if(MetatileBehavior_IsSurfableWaterOrUnderwater(var) && MetatileBehavior_IsWaterfall(var) == FALSE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) && MetatileBehavior_IsWaterfall(var) == FALSE)
return TRUE;
else
return FALSE;
@@ -714,7 +958,7 @@ bool8 sub_805759C(u8 var)
bool8 MetatileBehavior_IsEastBlocked(u8 var)
{
- if(var == MB_IMPASSABLE_EAST || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_SOUTHEAST || var == MB_C1 || var == MB_BE)
+ if (var == MB_IMPASSABLE_EAST || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_SOUTHEAST || var == MB_C1 || var == MB_BE)
return TRUE;
else
return FALSE;
@@ -722,7 +966,7 @@ bool8 MetatileBehavior_IsEastBlocked(u8 var)
bool8 MetatileBehavior_IsWestBlocked(u8 var)
{
- if(var == MB_IMPASSABLE_WEST || var == MB_IMPASSABLE_NORTHWEST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_C1 || var == MB_BE)
+ if (var == MB_IMPASSABLE_WEST || var == MB_IMPASSABLE_NORTHWEST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_C1 || var == MB_BE)
return TRUE;
else
return FALSE;
@@ -730,7 +974,7 @@ bool8 MetatileBehavior_IsWestBlocked(u8 var)
bool8 MetatileBehavior_IsNorthBlocked(u8 var)
{
- if(var == MB_IMPASSABLE_NORTH || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_NORTHWEST || var == MB_BED)
+ if (var == MB_IMPASSABLE_NORTH || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_NORTHWEST || var == MB_BED)
return TRUE;
else
return FALSE;
@@ -738,7 +982,7 @@ bool8 MetatileBehavior_IsNorthBlocked(u8 var)
bool8 MetatileBehavior_IsSouthBlocked(u8 var)
{
- if(var == MB_IMPASSABLE_SOUTH || var == MB_IMPASSABLE_SOUTHEAST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_BED)
+ if (var == MB_IMPASSABLE_SOUTH || var == MB_IMPASSABLE_SOUTHEAST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_BED)
return TRUE;
else
return FALSE;
@@ -746,7 +990,7 @@ bool8 MetatileBehavior_IsSouthBlocked(u8 var)
bool8 MetatileBehavior_IsShortGrass(u8 var)
{
- if(var == MB_SHORT_GRASS)
+ if (var == MB_SHORT_GRASS)
return TRUE;
else
return FALSE;
@@ -754,7 +998,7 @@ bool8 MetatileBehavior_IsShortGrass(u8 var)
bool8 MetatileBehavior_IsHotSprings(u8 var)
{
- if(var == MB_HOT_SPRINGS)
+ if (var == MB_HOT_SPRINGS)
return TRUE;
else
return FALSE;
@@ -762,7 +1006,7 @@ bool8 MetatileBehavior_IsHotSprings(u8 var)
bool8 MetatileBehavior_IsWaterfall(u8 var)
{
- if(var == MB_WATERFALL)
+ if (var == MB_WATERFALL)
return TRUE;
else
return FALSE;
@@ -770,7 +1014,7 @@ bool8 MetatileBehavior_IsWaterfall(u8 var)
bool8 MetatileBehavior_IsFortreeBridge(u8 var)
{
- if(var == MB_FORTREE_BRIDGE)
+ if (var == MB_FORTREE_BRIDGE)
return TRUE;
else
return FALSE;
@@ -778,7 +1022,7 @@ bool8 MetatileBehavior_IsFortreeBridge(u8 var)
bool8 sub_80576A0(u8 var)
{
- if(var == MB_PACIFIDLOG_VERTICAL_LOG_1)
+ if (var == MB_PACIFIDLOG_VERTICAL_LOG_1)
return TRUE;
else
return FALSE;
@@ -786,7 +1030,7 @@ bool8 sub_80576A0(u8 var)
bool8 sub_80576B4(u8 var)
{
- if(var == MB_PACIFIDLOG_VERTICAL_LOG_2)
+ if (var == MB_PACIFIDLOG_VERTICAL_LOG_2)
return TRUE;
else
return FALSE;
@@ -794,7 +1038,7 @@ bool8 sub_80576B4(u8 var)
bool8 sub_80576C8(u8 var)
{
- if(var == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
+ if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
return TRUE;
else
return FALSE;
@@ -802,7 +1046,7 @@ bool8 sub_80576C8(u8 var)
bool8 sub_80576DC(u8 var)
{
- if(var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
else
return FALSE;
@@ -810,7 +1054,7 @@ bool8 sub_80576DC(u8 var)
bool8 MetatileBehavior_IsPacifidlogLog(u8 var)
{
- if(var >= MB_PACIFIDLOG_VERTICAL_LOG_1 && var <= MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ if (var >= MB_PACIFIDLOG_VERTICAL_LOG_1 && var <= MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
else
return FALSE;
@@ -818,7 +1062,7 @@ bool8 MetatileBehavior_IsPacifidlogLog(u8 var)
bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 var)
{
- if(var == MB_TRICK_HOUSE_PUZZLE_DOOR)
+ if (var == MB_TRICK_HOUSE_PUZZLE_DOOR)
return TRUE;
else
return FALSE;
@@ -826,15 +1070,15 @@ bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 var)
bool8 MetatileBehavior_IsRegionMap(u8 var)
{
- if(var == MB_REGION_MAP)
+ if (var == MB_REGION_MAP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsClosedSootpolisGymDoor(u8 var)
+bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8 var)
{
- if(var == MB_CLOSED_SOOTOPOLIS_GYM_DOOR)
+ if (var == MB_CLOSED_SOOTOPOLIS_GYM_DOOR)
return TRUE;
else
return FALSE;
@@ -842,7 +1086,7 @@ bool8 MetatileBehavior_IsClosedSootpolisGymDoor(u8 var)
bool8 MetatileBehavior_IsRoulette(u8 var)
{
- if(var == MB_ROULETTE)
+ if (var == MB_ROULETTE)
return TRUE;
else
return FALSE;
@@ -850,7 +1094,7 @@ bool8 MetatileBehavior_IsRoulette(u8 var)
bool8 MetatileBehavior_IsPokeblockFeeder(u8 var)
{
- if(var == MB_POKEBLOCK_FEEDER)
+ if (var == MB_POKEBLOCK_FEEDER)
return TRUE;
else
return FALSE;
@@ -858,7 +1102,7 @@ bool8 MetatileBehavior_IsPokeblockFeeder(u8 var)
bool8 MetatileBehavior_0xBB(u8 var)
{
- if(var == MB_BB)
+ if (var == MB_BB)
return TRUE;
else
return FALSE;
@@ -866,7 +1110,7 @@ bool8 MetatileBehavior_0xBB(u8 var)
bool8 MetatileBehavior_0xBC(u8 var)
{
- if(var == MB_BC)
+ if (var == MB_BC)
return TRUE;
else
return FALSE;
@@ -874,7 +1118,7 @@ bool8 MetatileBehavior_0xBC(u8 var)
bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 var)
{
- if(var == MB_LAVARIDGE_GYM_B1F_WARP)
+ if (var == MB_LAVARIDGE_GYM_B1F_WARP)
return TRUE;
else
return FALSE;
@@ -882,7 +1126,7 @@ bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 var)
bool8 MetatileBehavior_IsLavaridge1FWarp(u8 var)
{
- if(var == MB_LAVARIDGE_GYM_1F_WARP)
+ if (var == MB_LAVARIDGE_GYM_1F_WARP)
return TRUE;
else
return FALSE;
@@ -890,7 +1134,7 @@ bool8 MetatileBehavior_IsLavaridge1FWarp(u8 var)
bool8 MetatileBehavior_IsAquaHideoutWarp(u8 var)
{
- if(var == MB_AQUA_HIDEOUT_WARP)
+ if (var == MB_AQUA_HIDEOUT_WARP)
return TRUE;
else
return FALSE;
@@ -898,7 +1142,7 @@ bool8 MetatileBehavior_IsAquaHideoutWarp(u8 var)
bool8 MetatileBehavior_IsSurfableFishableWater(u8 var)
{
- if(var == MB_POND_WATER || var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT))
+ if (var == MB_POND_WATER || var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT))
return TRUE;
else
return FALSE;
@@ -906,7 +1150,7 @@ bool8 MetatileBehavior_IsSurfableFishableWater(u8 var)
bool8 MetatileBehavior_IsMtPyreHole(u8 var)
{
- if(var == MB_MT_PYRE_HOLE)
+ if (var == MB_MT_PYRE_HOLE)
return TRUE;
else
return FALSE;
@@ -914,7 +1158,7 @@ bool8 MetatileBehavior_IsMtPyreHole(u8 var)
bool8 MetatileBehavior_IsCrackedFloorHole(u8 var)
{
- if(var == MB_CRACKED_FLOOR_HOLE)
+ if (var == MB_CRACKED_FLOOR_HOLE)
return TRUE;
else
return FALSE;
@@ -922,7 +1166,7 @@ bool8 MetatileBehavior_IsCrackedFloorHole(u8 var)
bool8 MetatileBehavior_IsCrackedFloor(u8 var)
{
- if(var == MB_CRACKED_FLOOR)
+ if (var == MB_CRACKED_FLOOR)
return TRUE;
else
return FALSE;
@@ -930,7 +1174,7 @@ bool8 MetatileBehavior_IsCrackedFloor(u8 var)
bool8 MetatileBehavior_IsMuddySlope(u8 var)
{
- if(var == MB_MUDDY_SLOPE)
+ if (var == MB_MUDDY_SLOPE)
return TRUE;
else
return FALSE;
@@ -938,7 +1182,7 @@ bool8 MetatileBehavior_IsMuddySlope(u8 var)
bool8 MetatileBehavior_IsBumpySlope(u8 var)
{
- if(var == MB_BUMPY_SLOPE)
+ if (var == MB_BUMPY_SLOPE)
return TRUE;
else
return FALSE;
@@ -946,7 +1190,7 @@ bool8 MetatileBehavior_IsBumpySlope(u8 var)
bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 var)
{
- if(var == MB_ISOLATED_VERTICAL_RAIL)
+ if (var == MB_ISOLATED_VERTICAL_RAIL)
return TRUE;
else
return FALSE;
@@ -954,7 +1198,7 @@ bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 var)
bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 var)
{
- if(var == MB_ISOLATED_HORIZONTAL_RAIL)
+ if (var == MB_ISOLATED_HORIZONTAL_RAIL)
return TRUE;
else
return FALSE;
@@ -962,7 +1206,7 @@ bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 var)
bool8 MetatileBehavior_IsVerticalRail(u8 var)
{
- if(var == MB_VERTICAL_RAIL)
+ if (var == MB_VERTICAL_RAIL)
return TRUE;
else
return FALSE;
@@ -970,7 +1214,7 @@ bool8 MetatileBehavior_IsVerticalRail(u8 var)
bool8 MetatileBehavior_IsHorizontalRail(u8 var)
{
- if(var == MB_HORIZONTAL_RAIL)
+ if (var == MB_HORIZONTAL_RAIL)
return TRUE;
else
return FALSE;
@@ -978,7 +1222,7 @@ bool8 MetatileBehavior_IsHorizontalRail(u8 var)
bool8 MetatileBehavior_IsSeaweed(u8 var)
{
- if(var == MB_SEAWEED || var == MB_SEAWEED_NO_SURFACING)
+ if (var == MB_SEAWEED || var == MB_SEAWEED_NO_SURFACING)
return TRUE;
else
return FALSE;
@@ -986,15 +1230,15 @@ bool8 MetatileBehavior_IsSeaweed(u8 var)
bool8 MetatileBehavior_IsRunningDisallowed(u8 var)
{
- if(var == MB_NO_RUNNING || var == MB_LONG_GRASS || var == MB_HOT_SPRINGS || MetatileBehavior_IsPacifidlogLog(var) != FALSE)
+ if (var == MB_NO_RUNNING || var == MB_LONG_GRASS || var == MB_HOT_SPRINGS || MetatileBehavior_IsPacifidlogLog(var) != FALSE)
return TRUE;
else
return FALSE;
}
-bool8 sub_80578F8(u8 var)
+bool8 MetatileBehavior_IsCuttableGrass(u8 var)
{
- if(var == MB_TALL_GRASS || var == MB_LONG_GRASS || var == MB_ASH || var == MB_LONG_GRASS_SOUTH_EDGE)
+ if (var == MB_TALL_GRASS || var == MB_LONG_GRASS || var == MB_ASHGRASS || var == MB_LONG_GRASS_SOUTH_EDGE)
return TRUE;
else
return FALSE;
@@ -1002,7 +1246,7 @@ bool8 sub_80578F8(u8 var)
bool8 sub_805791C(u8 var)
{
- if(var == MB_8E)
+ if (var == MB_8E)
return TRUE;
else
return FALSE;
@@ -1010,7 +1254,7 @@ bool8 sub_805791C(u8 var)
bool8 MetatileBehavior_IsPictureBookShelf(u8 var)
{
- if(var == MB_PICTURE_BOOK_SHELF)
+ if (var == MB_PICTURE_BOOK_SHELF)
return TRUE;
else
return FALSE;
@@ -1018,7 +1262,7 @@ bool8 MetatileBehavior_IsPictureBookShelf(u8 var)
bool8 MetatileBehavior_IsBookShelf(u8 var)
{
- if(var == MB_BOOKSHELF)
+ if (var == MB_BOOKSHELF)
return TRUE;
else
return FALSE;
@@ -1026,7 +1270,7 @@ bool8 MetatileBehavior_IsBookShelf(u8 var)
bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 var)
{
- if(var == MB_POKEMON_CENTER_BOOKSHELF)
+ if (var == MB_POKEMON_CENTER_BOOKSHELF)
return TRUE;
else
return FALSE;
@@ -1034,7 +1278,7 @@ bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 var)
bool8 MetatileBehavior_IsVase(u8 var)
{
- if(var == MB_VASE)
+ if (var == MB_VASE)
return TRUE;
else
return FALSE;
@@ -1042,7 +1286,7 @@ bool8 MetatileBehavior_IsVase(u8 var)
bool8 MetatileBehavior_IsTrashCan(u8 var)
{
- if(var == MB_TRASH_CAN)
+ if (var == MB_TRASH_CAN)
return TRUE;
else
return FALSE;
@@ -1050,7 +1294,7 @@ bool8 MetatileBehavior_IsTrashCan(u8 var)
bool8 MetatileBehavior_IsShopShelf(u8 var)
{
- if(var == MB_SHOP_SHELF)
+ if (var == MB_SHOP_SHELF)
return TRUE;
else
return FALSE;
@@ -1058,7 +1302,7 @@ bool8 MetatileBehavior_IsShopShelf(u8 var)
bool8 MetatileBehavior_IsBlueprint(u8 var)
{
- if(var == MB_BLUEPRINT)
+ if (var == MB_BLUEPRINT)
return TRUE;
else
return FALSE;
diff --git a/src/money.c b/src/money.c
index 2a59cab50..e73ee506a 100644
--- a/src/money.c
+++ b/src/money.c
@@ -14,51 +14,74 @@ extern const struct SpriteSheet gUnknown_083CF584;
extern const struct SpritePalette gUnknown_083CF58C;
extern const struct SpriteTemplate gSpriteTemplate_83CF56C;
-bool8 IsEnoughMoney(u32 budget, u32 cost) {
- if (budget >= cost) {
+bool8 IsEnoughMoney(u32 budget, u32 cost)
+{
+ if (budget >= cost)
+ {
return TRUE;
}
return FALSE;
}
-void sub_80B79B8(u32 *arg0, u32 arg1) {
- if (*arg0 > *arg0 + arg1) {
+void sub_80B79B8(u32 *arg0, u32 arg1)
+{
+ if (*arg0 > *arg0 + arg1)
+ {
*arg0 = 999999;
return;
}
*arg0 = *arg0 + arg1;
- if (*arg0 > 999999) {
+ if (*arg0 > 999999)
+ {
*arg0 = 999999;
}
}
-void sub_80B79E0(u32 *arg0, u32 arg1) {
- if (*arg0 < arg1) {
+void sub_80B79E0(u32 *arg0, u32 arg1)
+{
+ if (*arg0 < arg1)
+ {
*arg0 = 0;
- } else {
+ }
+ else
+ {
*arg0 = *arg0 - arg1;
}
}
-void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) {
+void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
+{
u8 width;
u8 i;
- if (arg1 > 999999) {
+ if (arg1 > 999999)
+ {
width = 7;
- } else if (arg1 > 99999) {
+ }
+ else if (arg1 > 99999)
+ {
width = 6;
- } else if (arg1 > 10000) {
+ }
+ else if (arg1 > 10000)
+ {
width = 5;
- } else if (arg1 > 999) {
+ }
+ else if (arg1 > 999)
+ {
width = 4;
- } else if (arg1 > 99) {
+ }
+ else if (arg1 > 99)
+ {
width = 3;
- } else if (arg1 > 9) {
+ }
+ else if (arg1 > 9)
+ {
width = 2;
- } else {
+ }
+ else
+ {
width = 1;
}
@@ -67,7 +90,8 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) {
buffer[2] = 0x06;
buffer += 3;
- for (i = 0; i < arg2 - width; i++) {
+ for (i = 0; i < arg2 - width; i++)
+ {
buffer[0] = CHAR_SPACE;
buffer += 1;
}
@@ -83,7 +107,8 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2) {
buffer[3] = EOS;
}
-void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y) {
+void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y)
+{
u8 buffer[16];
u8 stringWidth;
@@ -99,7 +124,8 @@ void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y) {
}
}
-void sub_80B7AEC(u32 arg0, u8 left, u8 top) {
+void sub_80B7AEC(u32 arg0, u8 left, u8 top)
+{
u8 buffer[32];
u8 *ptr;
@@ -119,7 +145,8 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) {
}
__attribute__((naked))
-void sub_80B7B34(void) {
+void sub_80B7B34(void)
+{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
mov r7, r9\n\
@@ -211,11 +238,13 @@ _080B7BE8: .4byte 0x0600f840\n\
.syntax divided\n");
}
-void sub_80B7BEC(u32 arg0, u8 x, u8 y) {
+void sub_80B7BEC(u32 arg0, u8 x, u8 y)
+{
sub_80B7A94(arg0, 6, x + 6, y + 1);
}
-void sub_80B7C14(u32 arg0, u8 x, u8 y) {
+void sub_80B7C14(u32 arg0, u8 x, u8 y)
+{
MenuDrawTextWindow(x, y, x + 13, y + 3);
sub_80B7BEC(arg0, x, y);
@@ -225,16 +254,19 @@ void sub_80B7C14(u32 arg0, u8 x, u8 y) {
gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0);
}
-void RemoveMoneyLabelObject(u8 x, u8 y) {
+void RemoveMoneyLabelObject(u8 x, u8 y)
+{
DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]);
FreeSpritePaletteByTag(SPRITE_TAG_MONEY);
MenuZeroFillWindowRect(x, y, x + 13, y + 3);
}
-bool8 sub_80B7CE8(void) {
+bool8 sub_80B7CE8(void)
+{
return IsEnoughMoney(gSaveBlock1.money, gSpecialVar_0x8005);
}
-void sub_80B7D0C(void) {
+void sub_80B7D0C(void)
+{
sub_80B79E0(&gSaveBlock1.money, gSpecialVar_0x8005);
}
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index 645aecc9e..9f586dcb9 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "mori_debug_menu.h"
#include "asm.h"
-#include "start_menu.h"
-#include "menu.h"
+#include "link.h"
#include "main.h"
+#include "menu.h"
+#include "start_menu.h"
#include "string_util.h"
-#include "link.h"
#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
@@ -49,7 +49,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
u8 localPtr[52];
u16 monData;
u16 var;
-
+
monData = GetMonData(gPlayerParty, 11, ptr);
var = sub_8041870(monData);
StringCopy(localPtr, gSpeciesNames[monData]);
@@ -85,14 +85,14 @@ s8 MoriDebugMenu_1000Steps(void)
{
sub_8041790(1000);
CloseMenu();
- return 1;
+ return 1;
}
s8 MoriDebugMenu_10000Steps(void)
{
sub_8041790(10000);
CloseMenu();
- return 1;
+ return 1;
}
s8 MoriDebugMenu_MoveTutor(void)
@@ -106,7 +106,7 @@ s8 MoriDebugMenu_BreedEgg(void)
{
u8 loopCounter;
- for(loopCounter = 0; loopCounter <= 5; loopCounter++)
+ for (loopCounter = 0; loopCounter <= 5; loopCounter++)
{
//UB: Too few arguments for function 'GetMonData'
if ( GetMonData(&gPlayerParty[loopCounter], MON_DATA_IS_EGG) )
@@ -130,10 +130,10 @@ s8 MoriDebugMenu_LongName(void)
s8 MoriDebugMenu_PokeblockCase(void)
{
s32 loopCounter;
-
- for(loopCounter = 0; loopCounter <= 39; loopCounter++)
+
+ for (loopCounter = 0; loopCounter <= 39; loopCounter++)
sub_810CA6C((u8)loopCounter);
-
+
CloseMenu();
return 1;
}
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 09523ff40..693b28948 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -1,17 +1,17 @@
#include "global.h"
-#include "sprite.h"
-#include "menu.h"
+#include "mystery_event_menu.h"
+#include "asm.h"
#include "link.h"
-#include "text.h"
#include "main.h"
+#include "menu.h"
#include "palette.h"
-#include "task.h"
-#include "string_util.h"
+#include "save.h"
#include "songs.h"
#include "sound.h"
-#include "save.h"
-#include "asm.h"
-#include "mystery_event_menu.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
extern u8 unk_2000000[];
extern u8 gUnknown_02039338;
@@ -295,7 +295,7 @@ static void CB2_MysteryEventMenu(void)
unkVal = sub_812613C(unk_2000000);
CpuFill32(0, unk_2000000, 0x7D4);
if (!GetEventLoadMessage(gStringVar4, unkVal))
- sub_8125D44(0);
+ TrySavingData(NORMAL_SAVE);
gMain.state++;
break;
case 12:
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 4aa3784d7..515a0722f 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "script.h"
#include "string_util.h"
+#include "text.h"
#ifdef SAPPHIRE
#define UNK_MASK 0x100
diff --git a/src/name_string_util.c b/src/name_string_util.c
new file mode 100644
index 000000000..a1812d5e9
--- /dev/null
+++ b/src/name_string_util.c
@@ -0,0 +1,39 @@
+#include "global.h"
+#include "string_util.h"
+#include "text.h"
+
+void PadNameString(u8 *a1, u8 a2)
+{
+ u8 i;
+
+ StripExtCtrlCodes(a1);
+ i = StringLength(a1);
+
+ if (a2 == 0xFC)
+ {
+ while (i < 6)
+ {
+ a1[i] = 0xFC;
+ a1[i + 1] = 7;
+ i += 2;
+ }
+ }
+ else
+ {
+ while (i < 6)
+ {
+ a1[i] = a2;
+ i++;
+ }
+ }
+
+ a1[i] = EOS;
+}
+
+void SanitizeNameString(u8 *a1)
+{
+ if (StringLength(a1) < 6)
+ ConvertInternationalString(a1, 1);
+ else
+ StripExtCtrlCodes(a1);
+}
diff --git a/src/naming_screen.c b/src/naming_screen.c
new file mode 100644
index 000000000..54a796264
--- /dev/null
+++ b/src/naming_screen.c
@@ -0,0 +1,2008 @@
+#include "global.h"
+#include "asm.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "trig.h"
+#include "naming_screen.h"
+
+extern u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
+extern u8 CreateMonIcon();
+extern void sub_809D51C(void);
+extern void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
+
+extern u16 gKeyRepeatStartDelay;
+
+extern u8 unk_2000000[];
+
+#define namingScreenData (*(struct NamingScreenData *)(unk_2000000))
+
+const u32 gSpriteImage_83CE094[] = INCBIN_U32("graphics/naming_screen/pc_icon/0.4bpp");
+const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.4bpp");
+
+//Some unused pointer, perhaps.
+asm(".section .rodata\n\
+@ XXX: what is this?\n\
+ .align 2\n\
+ .4byte 0x2000000\n");
+
+extern u16 *const gUnknown_083CE28C[];
+extern const struct SubspriteTable gSubspriteTables_83CE558[];
+extern const struct SubspriteTable gSubspriteTables_83CE560[];
+extern const struct SubspriteTable gSubspriteTables_83CE578[];
+extern const struct SubspriteTable gSubspriteTables_83CE580[];
+extern const struct SpriteTemplate gSpriteTemplate_83CE5C8;
+extern const struct SpriteTemplate gSpriteTemplate_83CE5E0;
+extern const struct SpriteTemplate gSpriteTemplate_83CE5F8;
+extern const struct SpriteTemplate gSpriteTemplate_83CE610;
+extern const struct SpriteTemplate gSpriteTemplate_83CE628;
+extern const struct SpriteTemplate gSpriteTemplate_83CE640;
+extern const struct SpriteTemplate gSpriteTemplate_83CE658;
+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[];
+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);
+static void StoreNamingScreenParameters(u8, u8 *, u16, u16, u32, MainCallback);
+static void NamingScreen_TurnOffScreen(void);
+static void NamingScreen_Init(void);
+static void NamingScreen_ClearVram(void);
+static void NamingScreen_ClearOam(void);
+static void NamingScreen_SetUpVideoRegs(void);
+static void NamingScreen_SetUpWindow(void);
+static void NamingScreen_ResetObjects(void);
+static void sub_80B5DFC(void);
+static void sub_80B5E20(void);
+static void sub_80B5E3C(void);
+static void NamingScreen_InitDisplayMode(void);
+static void Task_DoNothing(u8);
+static void sub_80B7558(void);
+static void sub_80B753C(void);
+static void sub_80B7680(void);
+static void sub_80B75C4(void);
+static void sub_80B7794(void);
+static void sub_80B78A8(void);
+static void sub_80B7960(void);
+static void CursorInit(void);
+static void sub_80B6A80(void);
+static void sub_80B6CA8(void);
+static void sub_80B6D04(void);
+static void sub_80B6E44(void);
+static void InputInit(void);
+static void sub_80B6438(void);
+static void sub_80B5E50(void);
+static void Task_NamingScreenMain(u8);
+static void SetInputState(u8);
+static void sub_80B68D8(u8);
+static bool8 HandleKeyboardEvent(void);
+static bool8 IsCursorAnimFinished(void);
+static void MoveCursorToOKButton(void);
+static void sub_80B6B14(void);
+static void StartPageSwapAnim(void);
+static void sub_80B6888(u8);
+static void sub_80B6460(u8, u8, u8);
+static bool8 IsPageSwapAnimNotInProgress(void);
+static void sub_80B7614(void);
+static void GetCursorPos(s16 *, s16 *);
+static void SetCursorPos(s16, s16);
+static void sub_80B77F8(void);
+static void sub_80B74B0(void);
+static void DisplaySentToPCMessage(void);
+static u8 GetKeyRoleAtCursorPos(void);
+static u8 sub_80B61C8(void);
+static void DeleteTextCharacter(void);
+static void sub_80B7090(void);
+static u8 GetInputEvent(void);
+static bool8 sub_80B7004(void);
+static void sub_80B6914(void);
+static void Task_HandlePageSwapAnim(u8);
+static void sub_80B6C48(u8, struct Sprite *, struct Sprite *);
+static u8 GetTextCaretPosition(void);
+static u8 GetCharAtKeyboardPos(s16, s16);
+static bool8 sub_80B7104(void);
+static bool8 sub_80B713C(void);
+static void AddTextCharacter(u8);
+static bool8 sub_80B7198(u8);
+static bool8 sub_80B7264(u8);
+static void sub_80B7370(u8, u8);
+static void sub_80B73CC(u8, u8);
+static bool8 sub_80B71E4(u8);
+static void sub_80B7474(u8, u8);
+static void sub_80B72A4(u8, u8);
+static bool8 sub_80B720C(u8);
+static void sub_80B7568(void);
+static void sub_80B75B0(void);
+static void sub_80B7698(u16 *, const u16 *);
+static void sub_80B76E0();
+static void nullsub_20(u8, u8);
+static void PrintKeyboardCharacters(u8);
+
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+{
+ StoreNamingScreenParameters(templateNum, destBuffer, c, d, e, returnCallback);
+ SetMainCallback2(C2_NamingScreen);
+}
+
+static void C2_NamingScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ NamingScreen_TurnOffScreen();
+ NamingScreen_Init();
+ gMain.state++;
+ break;
+ case 1:
+ NamingScreen_ClearVram();
+ gMain.state++;
+ break;
+ case 2:
+ NamingScreen_ClearOam();
+ gMain.state++;
+ break;
+ case 3:
+ NamingScreen_SetUpVideoRegs();
+ gMain.state++;
+ break;
+ case 4:
+ NamingScreen_SetUpWindow();
+ gMain.state++;
+ break;
+ case 5:
+ NamingScreen_ResetObjects();
+ gMain.state++;
+ break;
+ case 6:
+ sub_80B5DFC();
+ gMain.state++;
+ break;
+ case 7:
+ sub_80B5E20();
+ sub_80B5E3C();
+ NamingScreen_InitDisplayMode();
+ SetMainCallback2(sub_80B5AA0);
+ break;
+ }
+}
+
+static void sub_80B5AA0(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_NamingScreen(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ REG_BG1VOFS = namingScreenData.bg1vOffset;
+ REG_BG2VOFS = namingScreenData.bg2vOffset;
+ REG_BG1CNT &= 0xFFFC;
+ REG_BG1CNT |= namingScreenData.unk8;
+ REG_BG2CNT &= 0xFFFC;
+ REG_BG2CNT |= namingScreenData.unkA;
+}
+
+static void StoreNamingScreenParameters(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+{
+ struct Task *task;
+
+ //Create a task that does nothing, and use it as a temporary space to store parameters
+ task = &gTasks[CreateTask(Task_DoNothing, 0xFF)];
+ task->data[0] = templateNum;
+ task->data[1] = c;
+ task->data[2] = d;
+ task->data[3] = e >> 16;
+ task->data[4] = e;
+ StoreWordInTwoHalfwords(&task->data[5], (u32)destBuffer);
+ StoreWordInTwoHalfwords(&task->data[7], (u32)returnCallback);
+}
+
+static void GetNamingScreenParameters(void)
+{
+ u8 taskId;
+ struct Task *task;
+
+ taskId = FindTaskIdByFunc(Task_DoNothing);
+ task = &gTasks[taskId];
+ namingScreenData.templateNum = task->data[0];
+ namingScreenData.unk3E = task->data[1];
+ namingScreenData.unk40 = task->data[2];
+ namingScreenData.unk42 = (task->data[3] << 16) | (u16)task->data[4];
+ LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&namingScreenData.destBuffer);
+ LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&namingScreenData.returnCallback);
+ DestroyTask(taskId);
+}
+
+static void Task_DoNothing(u8 taskId)
+{
+}
+
+static void NamingScreen_TurnOffScreen(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ REG_DISPCNT = 0;
+}
+
+static void NamingScreen_InitDisplayMode(void)
+{
+ u16 savedIme;
+
+ SetVBlankCallback(VBlankCB_NamingScreen);
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
+}
+
+static void NamingScreen_ClearVram(void)
+{
+ u8 *addr = (void *)VRAM;
+ u32 size = 0x10000;
+
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, addr, size);
+ break;
+ }
+ }
+}
+
+static void NamingScreen_ClearOam(void)
+{
+ DmaClear16(3, (void *)OAM, 0x400);
+}
+
+static void NamingScreen_SetUpVideoRegs(void)
+{
+ REG_BG0CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG3CNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG0CNT = 0x1F00;
+ REG_BG1CNT = 0x1C01;
+ REG_BG2CNT = 0x1D0A;
+ REG_BG3CNT = 0x1E03;
+ REG_BLDCNT = 0x640;
+ REG_BLDALPHA = 0x80C;
+}
+
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[]; //forward declaration
+
+static void NamingScreen_Init(void)
+{
+ GetNamingScreenParameters();
+ namingScreenData.state = 0;
+ namingScreenData.bg1vOffset = 0;
+ namingScreenData.bg2vOffset = 0;
+ namingScreenData.unk8 = 1;
+ namingScreenData.unkA = 2;
+ namingScreenData.unkC = 0;
+ namingScreenData.unkD = 1;
+ namingScreenData.template = sNamingScreenTemplates[namingScreenData.templateNum];
+ namingScreenData.currentPage = namingScreenData.template->unk4;
+ namingScreenData.unk2 = 14 - namingScreenData.template->maxChars / 2;
+ namingScreenData.unk3C = gKeyRepeatStartDelay;
+ memset(namingScreenData.textBuffer, 0xFF, sizeof(namingScreenData.textBuffer));
+ if (namingScreenData.template->unk0 != 0)
+ StringCopy(namingScreenData.textBuffer, namingScreenData.destBuffer);
+ gKeyRepeatStartDelay = 16;
+}
+
+static void NamingScreen_SetUpWindow(void)
+{
+ SetUpWindowConfig(&gWindowConfig_81E6E88);
+ InitMenuWindow(&gWindowConfig_81E6E88);
+}
+
+static void NamingScreen_ResetObjects(void)
+{
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+}
+
+static void sub_80B5DFC(void)
+{
+ sub_80B7558();
+ sub_80B753C();
+ sub_80B7680();
+ sub_80B75C4();
+ sub_80B7794();
+ sub_80B78A8();
+ sub_80B7960();
+}
+
+static void sub_80B5E20(void)
+{
+ CursorInit();
+ sub_80B6A80();
+ sub_80B6CA8();
+ sub_80B6D04();
+ sub_80B6E44();
+}
+
+static void sub_80B5E3C(void)
+{
+ InputInit();
+ sub_80B6438();
+ sub_80B5E50();
+}
+
+//--------------------------------------------------
+// Naming screen main
+//--------------------------------------------------
+
+static bool8 MainState_BeginFadeIn(struct Task *);
+static bool8 MainState_WaitFadeIn(struct Task *);
+static bool8 MainState_HandleInput(struct Task *);
+static bool8 MainState_MoveToOKButton(struct Task *);
+static bool8 MainState_StartPageSwap(struct Task *);
+static bool8 MainState_WaitPageSwap(struct Task *);
+static bool8 MainState_6(struct Task *);
+static bool8 MainState_UpdateSentToPCMessage(struct Task *);
+static bool8 MainState_BeginFadeInOut(struct Task *);
+static bool8 MainState_WaitFadeOutAndExit(struct Task *);
+
+static bool8 (*const sMainStateFuncs[])(struct Task *) =
+{
+ MainState_BeginFadeIn,
+ MainState_WaitFadeIn,
+ MainState_HandleInput,
+ MainState_MoveToOKButton,
+ MainState_StartPageSwap,
+ MainState_WaitPageSwap,
+ MainState_6,
+ MainState_UpdateSentToPCMessage,
+ MainState_BeginFadeInOut,
+ MainState_WaitFadeOutAndExit,
+};
+
+static void sub_80B5E50(void)
+{
+ u8 taskId;
+
+ taskId = CreateTask(Task_NamingScreenMain, 2);
+ Task_NamingScreenMain(taskId);
+}
+
+static void Task_NamingScreenMain(u8 taskId)
+{
+ while (sMainStateFuncs[namingScreenData.state](&gTasks[taskId]) != 0)
+ ;
+}
+
+static bool8 MainState_BeginFadeIn(struct Task *task)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ namingScreenData.state++;
+ return 0;
+}
+
+static bool8 MainState_WaitFadeIn(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ SetInputState(INPUT_STATE_ENABLED);
+ sub_80B68D8(1);
+ namingScreenData.state++;
+ }
+ return FALSE;
+}
+
+static bool8 MainState_HandleInput(struct Task *task)
+{
+ return HandleKeyboardEvent();
+}
+
+static bool8 MainState_MoveToOKButton(struct Task *task)
+{
+ if (IsCursorAnimFinished())
+ {
+ SetInputState(INPUT_STATE_ENABLED);
+ MoveCursorToOKButton();
+ namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
+ }
+ return FALSE;
+}
+
+static bool8 MainState_StartPageSwap(struct Task *task)
+{
+ SetInputState(INPUT_STATE_DISABLED);
+ sub_80B6B14();
+ StartPageSwapAnim();
+ sub_80B6888(1);
+ sub_80B6460(0, 0, 1);
+ PlaySE(SE_WIN_OPEN);
+ namingScreenData.state = MAIN_STATE_WAIT_PAGE_SWAP;
+ return FALSE;
+}
+
+static bool8 MainState_WaitPageSwap(struct Task *task)
+{
+ s16 cursorX;
+ s16 cursorY;
+
+ if (IsPageSwapAnimNotInProgress())
+ {
+ namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
+ namingScreenData.currentPage++;
+ namingScreenData.currentPage %= 3;
+ sub_80B7614();
+ sub_80B77F8();
+ SetInputState(INPUT_STATE_ENABLED);
+ GetCursorPos(&cursorX, &cursorY);
+ if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ cursorX = 5;
+ SetCursorPos(cursorX, cursorY);
+ sub_80B6888(0);
+ }
+ return FALSE;
+}
+
+static bool8 MainState_6(struct Task *task)
+{
+ sub_80B74B0();
+ SetInputState(INPUT_STATE_DISABLED);
+ sub_80B68D8(0);
+ sub_80B6460(3, 0, 1);
+ gKeyRepeatStartDelay = namingScreenData.unk3C;
+ if (namingScreenData.templateNum == NAMING_SCREEN_TEMPLATE_MON_NAME
+ && CalculatePlayerPartyCount() >= 6)
+ {
+ DisplaySentToPCMessage();
+ namingScreenData.state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE;
+ return FALSE;
+ }
+ else
+ {
+ namingScreenData.state = MAIN_STATE_BEGIN_FADE_OUT;
+ return TRUE; //Exit the naming screen
+ }
+}
+
+static bool8 MainState_UpdateSentToPCMessage(struct Task *task)
+{
+ if (MenuUpdateWindowText())
+ namingScreenData.state++;
+ return FALSE;
+}
+
+static bool8 MainState_BeginFadeInOut(struct Task *task)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ namingScreenData.state++;
+ return FALSE;
+}
+
+static bool8 MainState_WaitFadeOutAndExit(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ SetMainCallback2(namingScreenData.returnCallback);
+ return FALSE;
+}
+
+//--------------------------------------------------
+// Keyboard handling
+//--------------------------------------------------
+
+enum
+{
+ KEY_ROLE_CHAR,
+ KEY_ROLE_PAGE,
+ KEY_ROLE_BACKSPACE,
+ KEY_ROLE_OK,
+};
+
+
+static bool8 KeyboardKeyHandler_Character(u8);
+static bool8 KeyboardKeyHandler_Page(u8);
+static bool8 KeyboardKeyHandler_Backspace(u8);
+static bool8 KeyboardKeyHandler_OK(u8);
+
+static bool8 (*const sKeyboardKeyHandlers[])(u8) =
+{
+ KeyboardKeyHandler_Character,
+ KeyboardKeyHandler_Page,
+ KeyboardKeyHandler_Backspace,
+ KeyboardKeyHandler_OK,
+};
+
+static bool8 HandleKeyboardEvent(void)
+{
+ u8 event = GetInputEvent();
+ u8 keyRole = GetKeyRoleAtCursorPos();
+
+ if (event == KBEVENT_PRESSED_SELECT)
+ return sub_80B61C8();
+ else if (event == KBEVENT_PRESSED_B)
+ {
+ DeleteTextCharacter();
+ return FALSE;
+ }
+ else if (event == 7)
+ {
+ sub_80B7090();
+ return FALSE;
+ }
+ return sKeyboardKeyHandlers[keyRole](event);
+}
+
+static bool8 KeyboardKeyHandler_Character(u8 event)
+{
+ sub_80B6460(3, 0, 0);
+ if (event == KBEVENT_PRESSED_A)
+ {
+ u8 var = sub_80B7004();
+
+ sub_80B6914();
+ if (var)
+ {
+ SetInputState(INPUT_STATE_DISABLED);
+ namingScreenData.state = MAIN_STATE_MOVE_TO_OK_BUTTON;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 KeyboardKeyHandler_Page(u8 event)
+{
+ sub_80B6460(0, 1, 0);
+ if (event == KBEVENT_PRESSED_A)
+ return sub_80B61C8();
+ else
+ return FALSE;
+}
+
+static bool8 KeyboardKeyHandler_Backspace(u8 event)
+{
+ sub_80B6460(1, 1, 0);
+ if (event == KBEVENT_PRESSED_A)
+ DeleteTextCharacter();
+ return FALSE;
+}
+
+static bool8 KeyboardKeyHandler_OK(u8 event)
+{
+ sub_80B6460(2, 1, 0);
+ if (event == KBEVENT_PRESSED_A)
+ {
+ PlaySE(SE_SELECT);
+ namingScreenData.state = MAIN_STATE_6;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B61C8(void)
+{
+ namingScreenData.state = MAIN_STATE_START_PAGE_SWAP;
+ return TRUE;
+}
+
+//--------------------------------------------------
+// Input handling
+//--------------------------------------------------
+
+enum
+{
+ FNKEY_CASE,
+ FNKEY_BACK,
+ FNKEY_OK,
+};
+
+#define tState data[0]
+#define tKeyboardEvent data[1]
+#define tKbFunctionKey data[2]
+
+static void InputState_Disabled(struct Task *);
+static void InputState_Enabled(struct Task *);
+
+static void (*const sInputStateFuncs[])(struct Task *) =
+{
+ InputState_Disabled,
+ InputState_Enabled,
+};
+
+static void Task_HandleInput(u8);
+static void HandleDpadMovement(struct Task *);
+
+static void InputInit(void)
+{
+ CreateTask(Task_HandleInput, 1);
+}
+
+static u8 GetInputEvent(void)
+{
+ u8 taskId = FindTaskIdByFunc(Task_HandleInput);
+
+ return gTasks[taskId].tKeyboardEvent;
+}
+
+static void SetInputState(u8 state)
+{
+ u8 taskId = FindTaskIdByFunc(Task_HandleInput);
+
+ gTasks[taskId].tState = state;
+}
+
+static void Task_HandleInput(u8 taskId)
+{
+ sInputStateFuncs[gTasks[taskId].tState](&gTasks[taskId]);
+}
+
+static void InputState_Disabled(struct Task *task)
+{
+ task->tKeyboardEvent = 0;
+}
+
+static void InputState_Enabled(struct Task *task)
+{
+ task->tKeyboardEvent = 0;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ task->tKeyboardEvent = KBEVENT_PRESSED_A;
+ return;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ task->tKeyboardEvent = KBEVENT_PRESSED_B;
+ return;
+ }
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ task->tKeyboardEvent = KBEVENT_PRESSED_SELECT;
+ return;
+ }
+ if (gMain.newKeys & START_BUTTON)
+ {
+ task->tKeyboardEvent = KBEVENT_PRESSED_START;
+ MoveCursorToOKButton();
+ return;
+ }
+ HandleDpadMovement(task);
+}
+
+static const s16 sDpadDeltaX[] =
+{
+ 0, //none
+ 0, //up
+ 0, //down
+ -1, //left
+ 1 //right
+};
+
+static const s16 sDpadDeltaY[] =
+{
+ 0, //none
+ -1, //up
+ 1, //down
+ 0, //left
+ 0 //right
+};
+
+static const s16 s4RowTo3RowTableY[] = {0, 1, 1, 2};
+static const s16 gUnknown_083CE274[] = {0, 0, 3, 0};
+
+static void HandleDpadMovement(struct Task *task)
+{
+ s16 cursorX;
+ s16 cursorY;
+ u16 dpadDir;
+ s16 prevCursorX;
+
+ GetCursorPos(&cursorX, &cursorY);
+ dpadDir = 0;
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ dpadDir = 1;
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ dpadDir = 2;
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ dpadDir = 3;
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ dpadDir = 4;
+
+ //Get new cursor position
+ prevCursorX = cursorX;
+ cursorX += sDpadDeltaX[dpadDir];
+ cursorY += sDpadDeltaY[dpadDir];
+
+ //Wrap cursor position in the X direction
+ if (cursorX < 0)
+ cursorX = 8;
+ if (cursorX > 8)
+ cursorX = 0;
+
+ //Handle cursor movement in X direction
+ if (sDpadDeltaX[dpadDir] != 0)
+ {
+ //The "others" page only has 5 columns
+ if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ {
+ if (sDpadDeltaX[dpadDir] > 0)
+ cursorX = 8;
+ else
+ cursorX = 5;
+ }
+
+ if (cursorX == 8)
+ {
+ //We are now on the last column
+ task->tKbFunctionKey = cursorY;
+ cursorY = s4RowTo3RowTableY[cursorY];
+ }
+ else if (prevCursorX == 8)
+ {
+ if (cursorY == 1)
+ cursorY = task->tKbFunctionKey;
+ else
+ cursorY = gUnknown_083CE274[cursorY];
+ }
+ }
+
+ if (cursorX == 8)
+ {
+ //There are only 3 keys on the last column, unlike the others,
+ //so wrap Y accordingly
+ if (cursorY < 0)
+ cursorY = 2;
+ if (cursorY > 2)
+ cursorY = 0;
+ if (cursorY == 0)
+ task->tKbFunctionKey = FNKEY_BACK;
+ else if (cursorY == 2)
+ task->tKbFunctionKey = FNKEY_OK;
+ }
+ else
+ {
+ if (cursorY < 0)
+ cursorY = 3;
+ if (cursorY > 3)
+ cursorY = 0;
+ }
+ SetCursorPos(cursorX, cursorY);
+}
+
+#undef tState
+#undef tKeyboardEvent
+#undef tKbFunctionKey
+
+//--------------------------------------------------
+//
+//--------------------------------------------------
+
+static void Task_80B64D4(u8);
+static u16 sub_80B654C(u8);
+static void sub_80B65AC(u8);
+static void sub_80B65D4(struct Task *, u8, u8);
+
+static void sub_80B6438(void)
+{
+ u8 taskId;
+
+ taskId = CreateTask(Task_80B64D4, 3);
+ gTasks[taskId].data[0] = 3;
+}
+
+static void sub_80B6460(u8 a, u8 b, u8 c)
+{
+ struct Task *task = &gTasks[FindTaskIdByFunc(Task_80B64D4)];
+
+ if (a == task->data[0] && c == 0)
+ {
+ task->data[1] = b;
+ task->data[2] = 1;
+ return;
+ }
+ if (a == 3 && task->data[1] == 0 && c == 0)
+ return;
+ if (task->data[0] != 3)
+ sub_80B65AC(task->data[0]);
+ sub_80B65D4(task, a, b);
+}
+
+static void Task_80B64D4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[0] == 3 || task->data[2] == 0)
+ return;
+ MultiplyInvertedPaletteRGBComponents(sub_80B654C(task->data[0]), task->data[3], task->data[3], task->data[3]);
+ if (task->data[5] != 0)
+ {
+ task->data[5]--;
+ if (task->data[5] != 0)
+ return;
+ }
+ task->data[5] = 2;
+ task->data[3] += task->data[4];
+ if (task->data[3] == 16)
+ task->data[4] = -task->data[4];
+ else if (task->data[3] == 0)
+ {
+ task->data[2] = task->data[1];
+ task->data[4] = -task->data[4];
+ }
+}
+
+static u16 sub_80B654C(u8 a)
+{
+ const u16 arr[] =
+ {
+ IndexOfSpritePaletteTag(4) * 16 + 0x10E,
+ IndexOfSpritePaletteTag(6) * 16 + 0x10C,
+ IndexOfSpritePaletteTag(6) * 16 + 0x10E,
+ };
+
+ return arr[a];
+}
+
+static void sub_80B65AC(u8 a)
+{
+ u16 index = sub_80B654C(a);
+
+ gPlttBufferFaded[index] = gPlttBufferUnfaded[index];
+}
+
+static void sub_80B65D4(struct Task *task, u8 b, u8 c)
+{
+ task->data[0] = b;
+ task->data[1] = c;
+ task->data[2] = 1;
+ task->data[3] = 15;
+ task->data[4] = 1;
+ task->data[5] = 0;
+}
+
+//--------------------------------------------------
+// Page Swap
+//--------------------------------------------------
+
+#define tState data[0]
+#define tFrameCount data[1]
+
+static bool8 PageSwapAnimState_Init(struct Task *);
+static bool8 PageSwapAnimState_1(struct Task *);
+static bool8 PageSwapAnimState_2(struct Task *);
+static bool8 PageSwapAnimState_Done(struct Task *);
+
+static bool8 (*const sPageSwapAnimStateFuncs[])(struct Task *) =
+{
+ PageSwapAnimState_Init,
+ PageSwapAnimState_1,
+ PageSwapAnimState_2,
+ PageSwapAnimState_Done,
+};
+
+static void StartPageSwapAnim(void)
+{
+ u8 taskId;
+
+ taskId = CreateTask(Task_HandlePageSwapAnim, 0);
+ Task_HandlePageSwapAnim(taskId);
+}
+
+static bool8 IsPageSwapAnimNotInProgress(void)
+{
+ if (FindTaskIdByFunc(Task_HandlePageSwapAnim) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void Task_HandlePageSwapAnim(u8 taskId)
+{
+ while (sPageSwapAnimStateFuncs[gTasks[taskId].tState](&gTasks[taskId]) != 0)
+ ;
+}
+
+static bool8 PageSwapAnimState_Init(struct Task *task)
+{
+ namingScreenData.bg1vOffset = 0;
+ namingScreenData.bg2vOffset = 0;
+ task->tState++;
+ return 0;
+}
+
+static bool8 PageSwapAnimState_1(struct Task *task)
+{
+ u16 *const arr[] =
+ {
+ &namingScreenData.bg2vOffset,
+ &namingScreenData.bg1vOffset
+ };
+
+ task->tFrameCount += 4;
+ *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 64)
+ {
+ u8 temp = namingScreenData.unk8; //Why u8 and not u16?
+
+ namingScreenData.unk8 = namingScreenData.unkA;
+ namingScreenData.unkA = temp;
+ task->tState++;
+ }
+ return 0;
+}
+
+static bool8 PageSwapAnimState_2(struct Task *task)
+{
+ u16 *const arr[] = {&namingScreenData.bg2vOffset, &namingScreenData.bg1vOffset};
+
+ task->tFrameCount += 4;
+ *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 128)
+ {
+ u8 temp = namingScreenData.unkC;
+
+ namingScreenData.unkC = namingScreenData.unkD;
+ namingScreenData.unkD = temp;
+ task->tState++;
+ }
+ return 0;
+}
+
+static bool8 PageSwapAnimState_Done(struct Task *task)
+{
+ DestroyTask(FindTaskIdByFunc(Task_HandlePageSwapAnim));
+ return 0;
+}
+
+#undef tState
+#undef tFrameCount
+
+//--------------------------------------------------
+// Cursor
+//--------------------------------------------------
+
+static void CursorInit(void)
+{
+ namingScreenData.cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
+ gSprites[namingScreenData.cursorSpriteId].oam.priority = 1;
+ gSprites[namingScreenData.cursorSpriteId].oam.objMode = 1;
+ gSprites[namingScreenData.cursorSpriteId].data6 = 1;
+ gSprites[namingScreenData.cursorSpriteId].data6 = 2;
+ SetCursorPos(0, 0);
+}
+
+static const u8 sKeyboardSymbolPositions[][9] =
+{
+ {1, 3, 5, 8, 10, 12, 14, 17, 19}, //Upper page
+ {1, 3, 5, 8, 10, 12, 14, 17, 19}, //Lower page
+ {1, 4, 7, 10, 13, 16, 16, 16, 19}, //Others page
+};
+
+static u8 CursorColToKeyboardCol(s16 x)
+{
+ return sKeyboardSymbolPositions[namingScreenData.currentPage][x];
+}
+
+static void SetCursorPos(s16 x, s16 y)
+{
+ struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
+
+ cursorSprite->pos1.x = CursorColToKeyboardCol(x) * 8 + 27;
+ cursorSprite->pos1.y = y * 16 + 80;
+ cursorSprite->data2 = cursorSprite->data0;
+ cursorSprite->data3 = cursorSprite->data1;
+ cursorSprite->data0 = x;
+ cursorSprite->data1 = y;
+}
+
+static void GetCursorPos(s16 *x, s16 *y)
+{
+ struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
+
+ *x = cursorSprite->data0;
+ *y = cursorSprite->data1;
+}
+
+static void MoveCursorToOKButton(void)
+{
+ SetCursorPos(8, 2);
+}
+
+static void sub_80B6888(u8 a)
+{
+ gSprites[namingScreenData.cursorSpriteId].data4 &= -256;
+ gSprites[namingScreenData.cursorSpriteId].data4 |= a;
+ StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 0);
+}
+
+static void sub_80B68D8(u8 a)
+{
+ gSprites[namingScreenData.cursorSpriteId].data4 &= 0xFF;
+ gSprites[namingScreenData.cursorSpriteId].data4 |= a << 8;
+}
+
+static void sub_80B6914(void)
+{
+ StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 1);
+}
+
+static bool8 IsCursorAnimFinished(void)
+{
+ return gSprites[namingScreenData.cursorSpriteId].animEnded;
+}
+
+static u8 GetKeyRoleAtCursorPos(void)
+{
+ const u8 keyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK};
+ s16 cursorX;
+ s16 cursorY;
+
+ GetCursorPos(&cursorX, &cursorY);
+ if (cursorX < 8)
+ return KEY_ROLE_CHAR;
+ else
+ return keyRoles[cursorY];
+}
+
+void sub_80B6998(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ StartSpriteAnim(sprite, 0);
+ sprite->invisible = (sprite->data4 & 0xFF);
+ if (sprite->data0 == 8)
+ sprite->invisible = TRUE;
+ if (sprite->invisible || (sprite->data4 & 0xFF00) == 0
+ || sprite->data0 != sprite->data2 || sprite->data1 != sprite->data3)
+ {
+ sprite->data5 = 0;
+ sprite->data6 = 1;
+ sprite->data7 = 2;
+ }
+ sprite->data7--;
+ if (sprite->data7 == 0)
+ {
+ sprite->data5 += sprite->data6;
+ if (sprite->data5 == 16 || sprite->data5 == 0)
+ sprite->data6 = -sprite->data6;
+ sprite->data7 = 2;
+ }
+ if ((sprite->data4 & 0xFF00) != 0)
+ {
+ s8 gb = sprite->data5;
+ s8 r = sprite->data5 >> 1;
+ u16 index = IndexOfSpritePaletteTag(5) * 16 + 0x0101;
+
+ MultiplyInvertedPaletteRGBComponents(index, r, gb, gb);
+ }
+}
+
+static void sub_80B6A80(void)
+{
+ u8 spriteId1;
+ u8 spriteId2;
+ u8 spriteId3;
+
+ spriteId1 = CreateSprite(&gSpriteTemplate_83CE5C8, 0xCC, 0x50, 0);
+ namingScreenData.unk10 = spriteId1;
+ SetSubspriteTables(&gSprites[spriteId1], gSubspriteTables_83CE558);
+
+ spriteId2 = CreateSprite(&gSpriteTemplate_83CE5F8, 0xCC, 0x4C, 1);
+ gSprites[spriteId1].data6 = spriteId2;
+ SetSubspriteTables(&gSprites[spriteId2], gSubspriteTables_83CE560);
+
+ spriteId3 = CreateSprite(&gSpriteTemplate_83CE5E0, 0xCC, 0x4B, 2);
+ gSprites[spriteId3].oam.priority = 1;
+ gSprites[spriteId1].data7 = spriteId3;
+}
+
+static void sub_80B6B14(void)
+{
+ struct Sprite *sprite = &gSprites[namingScreenData.unk10];
+
+ sprite->data0 = 2;
+ sprite->data1 = namingScreenData.currentPage;
+}
+
+static u8 sub_80B6B5C(struct Sprite *);
+static u8 sub_80B6B98(struct Sprite *);
+static u8 sub_80B6B9C(struct Sprite *);
+static u8 sub_80B6C08(struct Sprite *);
+
+static u8 (*const gUnknown_083CE2B4[])(struct Sprite *) =
+{
+ sub_80B6B5C,
+ sub_80B6B98,
+ sub_80B6B9C,
+ sub_80B6C08,
+};
+
+void sub_80B6B34(struct Sprite *sprite)
+{
+ while (gUnknown_083CE2B4[sprite->data0](sprite) != 0)
+ ;
+}
+
+static u8 sub_80B6B5C(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data6];
+ struct Sprite *sprite2 = &gSprites[sprite->data7];
+
+ sub_80B6C48(namingScreenData.currentPage, sprite1, sprite2);
+ sprite->data0++;
+ return 0;
+}
+
+static u8 sub_80B6B98(struct Sprite *sprite)
+{
+ return 0;
+}
+
+static u8 sub_80B6B9C(struct Sprite *sprite)
+{
+ struct Sprite *r4 = &gSprites[sprite->data6];
+ struct Sprite *r5 = &gSprites[sprite->data7];
+
+ r4->pos2.y++;
+ if (r4->pos2.y > 7)
+ {
+ sprite->data0++;
+ r4->pos2.y = -4;
+ r4->invisible = TRUE;
+ sub_80B6C48(((u8)sprite->data1 + 1) % 3, r4, r5);
+ }
+ return 0;
+}
+
+static u8 sub_80B6C08(struct Sprite *sprite)
+{
+ struct Sprite *r2 = &gSprites[sprite->data6];
+
+ r2->invisible = FALSE;
+ r2->pos2.y++;
+ if (r2->pos2.y >= 0)
+ {
+ r2->pos2.y = 0;
+ sprite->data0 = 1;
+ }
+ return 0;
+}
+
+static const u16 gUnknown_083CE2C4[] = {1, 3, 2};
+static const u16 gUnknown_083CE2CA[] = {4, 6, 5};
+
+static void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
+{
+ c->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083CE2C4[a]);
+ b->sheetTileStart = GetSpriteTileStartByTag(gUnknown_083CE2CA[a]);
+ b->subspriteTableNum = a;
+}
+
+//
+
+static void sub_80B6CA8(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83CE610, 0xCC, 0x6C, 0);
+ SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83CE578);
+
+ spriteId = CreateSprite(&gSpriteTemplate_83CE628, 0xCC, 0x84, 0);
+ SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83CE578);
+}
+
+static void sub_80B6D04(void)
+{
+ u8 spriteId;
+ s16 r1;
+ u8 i;
+
+ r1 = (namingScreenData.unk2 - 1) * 8 + 4;
+ spriteId = CreateSprite(&gSpriteTemplate_83CE658, r1, 0x28, 0);
+ gSprites[spriteId].oam.priority = 3;
+ r1 = namingScreenData.unk2 * 8 + 4;
+ for (i = 0; i < namingScreenData.template->maxChars; i++, r1 += 8)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83CE670, r1, 0x2C, 0);
+ gSprites[spriteId].oam.priority = 3;
+ gSprites[spriteId].data0 = i;
+ }
+}
+
+void sub_80B6D9C(struct Sprite *sprite)
+{
+ const s16 arr[] = {0, -4, -2, -1};
+
+ if (sprite->data0 == 0 || --sprite->data0 == 0)
+ {
+ sprite->data0 = 8;
+ sprite->data1 = (sprite->data1 + 1) & 3;
+ }
+ sprite->pos2.x = arr[sprite->data1];
+}
+
+void sub_80B6DE8(struct Sprite *sprite)
+{
+ const s16 arr[] = {2, 3, 2, 1};
+ u8 var;
+
+ var = GetTextCaretPosition();
+ if (var != (u8)sprite->data0)
+ {
+ sprite->pos2.y = 0;
+ sprite->data1 = 0;
+ sprite->data2 = 0;
+ }
+ else
+ {
+ sprite->pos2.y = arr[sprite->data1];
+ sprite->data2++;
+ if (sprite->data2 > 8)
+ {
+ sprite->data1 = (sprite->data1 + 1) & 3;
+ sprite->data2 = 0;
+ }
+ }
+}
+
+//
+
+static void nullsub_40(void);
+static void sub_80B6E68(void);
+static void sub_80B6EBC(void);
+static void sub_80B6EFC(void);
+
+static void (*const gUnknown_083CE2E0[])(void) =
+{
+ nullsub_40,
+ sub_80B6E68,
+ sub_80B6EBC,
+ sub_80B6EFC,
+};
+
+static void sub_80B6E44(void)
+{
+ gUnknown_083CE2E0[namingScreenData.template->unk2]();
+}
+
+static void nullsub_40(void)
+{
+}
+
+static void sub_80B6E68(void)
+{
+ u8 rivalGfxId;
+ u8 spriteId;
+
+ rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, namingScreenData.unk3E);
+ spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x18, 0);
+ gSprites[spriteId].oam.priority = 3;
+ StartSpriteAnim(&gSprites[spriteId], 4);
+}
+
+static void sub_80B6EBC(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83CE688, 0x34, 0x18, 0);
+ SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83CE580);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+static void sub_80B6EFC(void)
+{
+ u8 spriteId;
+
+ sub_809D51C();
+ spriteId = CreateMonIcon(namingScreenData.unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenData.unk42);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+static u8 GetTextCaretPosition(void)
+{
+ u8 i;
+
+ for (i = 0; i < namingScreenData.template->maxChars; i++)
+ {
+ if (namingScreenData.textBuffer[i] == EOS)
+ return i;
+ }
+ return namingScreenData.template->maxChars - 1;
+}
+
+static u8 GetPreviousTextCaretPosition(void)
+{
+ s8 i;
+
+ for (i = namingScreenData.template->maxChars - 1; i > 0; i--)
+ {
+ if (namingScreenData.textBuffer[i] != EOS)
+ return i;
+ }
+ return 0;
+}
+
+static void DeleteTextCharacter(void)
+{
+ u8 index;
+ u8 var2;
+
+ index = GetPreviousTextCaretPosition();
+ namingScreenData.textBuffer[index] = 0;
+ sub_80B7960();
+ namingScreenData.textBuffer[index] = EOS;
+ var2 = GetKeyRoleAtCursorPos();
+ if (var2 == 0 || var2 == 2)
+ sub_80B6460(1, 0, 1);
+ PlaySE(SE_BOWA);
+}
+
+static bool8 sub_80B7004(void)
+{
+ s16 x;
+ s16 y;
+ u8 ch;
+ bool8 r4;
+
+ GetCursorPos(&x, &y);
+ x = CursorColToKeyboardCol(x);
+ ch = GetCharAtKeyboardPos(x, y);
+ r4 = 1;
+ if (ch == 0xFF)
+ r4 = sub_80B7104();
+ else if (ch == 0xFE)
+ r4 = sub_80B713C();
+ else
+ AddTextCharacter(ch);
+ sub_80B7960();
+ PlaySE(SE_SELECT);
+ if (r4)
+ {
+ if (GetPreviousTextCaretPosition() == namingScreenData.template->maxChars - 1)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_80B7090(void) // DoInput?
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B7198(r4))
+ {
+ if (sub_80B7264(r4))
+ sub_80B7370(r4, r5);
+ else
+ sub_80B73CC(r4, r5);
+ }
+ else
+ {
+ if (sub_80B71E4(r4))
+ sub_80B7474(r4, r5);
+ else
+ sub_80B72A4(r4, r5);
+ }
+ sub_80B7960();
+ PlaySE(SE_SELECT);
+}
+
+static bool8 sub_80B7104(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B720C(r4))
+ {
+ sub_80B72A4(r4, r5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80B713C(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B7264(r4))
+ {
+ sub_80B7370(r4, r5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void AddTextCharacter(u8 ch)
+{
+ u8 index = GetTextCaretPosition();
+
+ namingScreenData.textBuffer[index] = ch;
+}
+
+static bool8 sub_80B7198(u8 a)
+{
+ if ((a >= 55 && a <= 74)
+ || (a >= 135 && a <= 139)
+ || (a >= 140 && a <= 144)
+ || (a >= 145 && a <= 149)
+ || (a >= 150 && a <= 154))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B71E4(u8 a)
+{
+ if ((a >= 75 && a <= 79)
+ || (a >= 155 && a <= 159))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B720C(u8 a)
+{
+ if ((a >= 6 && a <= 20)
+ || (a >= 26 && a <= 30)
+ || (a >= 75 && a <= 79)
+ || (a >= 86 && a <= 100)
+ || (a >= 106 && a <= 110)
+ || (a >= 155 && a <= 159))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B7264(u8 a)
+{
+ if ((a >= 26 && a <= 30)
+ || (a >= 70 && a <= 74)
+ || (a >= 106 && a <= 110)
+ || (a >= 150 && a <= 154))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_80B72A4(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 6 && a <= 10)
+ chr = a + 0x31;
+ else if (a >= 11 && a <= 15)
+ chr = a + 0x31;
+ else if (a >= 16 && a <= 20)
+ chr = a + 0x31;
+ else if (a >= 26 && a <= 30)
+ chr = a + 0x2C;
+ else if (a >= 75 && a <= 79)
+ chr = a + 0xFB;
+ else if (a >= 86 && a <= 90)
+ chr = a + 0x31;
+ else if (a >= 91 && a <= 95)
+ chr = a + 0x31;
+ else if (a >= 96 && a <= 100)
+ chr = a + 0x31;
+ else if (a >= 106 && a <= 110)
+ chr = a + 0x2C;
+ else if (a >= 155 && a <= 159)
+ chr = a + 0xFB;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B7370(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 26 && a <= 30)
+ chr = a + 0x31;
+ else if (a >= 70 && a <= 74)
+ chr = a + 5;
+ else if (a >= 106 && a <= 110)
+ chr = a + 0x31;
+ else if (a >= 150 && a <= 154)
+ chr = a + 5;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B73CC(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 55 && a <= 59)
+ chr = a + 0xCF;
+ else if (a >= 60 && a <= 64)
+ chr = a + 0xCF;
+ else if (a >= 65 && a <= 69)
+ chr = a + 0xCF;
+ else if (a >= 70 && a <= 74)
+ chr = a + 0xD4;
+ else if (a >= 135 && a <= 139)
+ chr = a + 0xCF;
+ else if (a >= 140 && a <= 144)
+ chr = a + 0xCF;
+ else if (a >= 145 && a <= 149)
+ chr = a + 0xCF;
+ else if (a >= 150 && a <= 154)
+ chr = a + 0xD4;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B7474(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 75 && a <= 79)
+ chr = a + 0xCF;
+ else if (a >= 155 && a <= 159)
+ chr = a + 0xCF;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B74B0(void)
+{
+ u8 i;
+
+ for (i = 0; i < namingScreenData.template->maxChars; i++)
+ {
+ if (namingScreenData.textBuffer[i] != 0 && namingScreenData.textBuffer[i] != 0xFF)
+ {
+ StringCopyN(namingScreenData.destBuffer, namingScreenData.textBuffer, namingScreenData.template->maxChars + 1);
+ break;
+ }
+ }
+}
+
+static void DisplaySentToPCMessage(void)
+{
+ StringCopy(gStringVar1, namingScreenData.destBuffer);
+ StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC);
+ BasicInitMenuWindow(&gWindowConfig_81E6E88);
+ MenuDisplayMessageBox();
+ sub_8072044(gStringVar4);
+}
+
+static void sub_80B753C(void)
+{
+ LoadSpriteSheets(gUnknown_083CE6A0);
+ LoadSpritePalettes(gUnknown_083CE708);
+}
+
+static void sub_80B7558(void)
+{
+ sub_80B7568();
+ sub_80B75B0();
+}
+
+static void sub_80B7568(void)
+{
+ const void *src;
+ void *dst;
+
+ src = gNamingScreenMenu_Gfx;
+ dst = (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32);
+ DmaCopy16(3, src, dst, 0x800);
+
+ src = gNamingScreenMenu_Gfx;
+ dst = (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32);
+ DmaCopy16(3, src, dst, 0x800);
+}
+
+static void sub_80B75B0(void)
+{
+ LoadPalette(gNamingScreenPalettes, 0, 0x80);
+}
+
+static void sub_80B7650(u16 *);
+static void sub_80B7660(u16 *);
+static void sub_80B7670(u16 *);
+
+static void (*const gUnknown_083CE2F0[][2])(u16 *) =
+{
+ {sub_80B7660, sub_80B7650},
+ {sub_80B7650, sub_80B7670},
+ {sub_80B7670, sub_80B7660},
+};
+
+static void sub_80B75C4(void)
+{
+ u16 *const arr[] =
+ {
+ (u16 *)(VRAM + 0xE000),
+ (u16 *)(VRAM + 0xE800),
+ };
+
+ gUnknown_083CE2F0[namingScreenData.currentPage][0](arr[namingScreenData.unkC]);
+ gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+}
+
+static void sub_80B7614(void)
+{
+ u16 *const arr[] =
+ {
+ (u16 *)(VRAM + 0xE000),
+ (u16 *)(VRAM + 0xE800),
+ };
+
+ gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+}
+
+static void sub_80B7650(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CE748);
+}
+
+static void sub_80B7660(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CEBF8);
+}
+
+static void sub_80B7670(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CF0A8);
+}
+
+static void sub_80B7680(void)
+{
+ sub_80B76E0(VRAM + 0xF000, gUnknown_08E86258);
+}
+
+static void sub_80B7698(u16 *vramBuffer, const u16 *src)
+{
+ s16 i;
+ s16 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, src++)
+ {
+ vramBuffer[i * 32 + j] = *src + gMenuMessageBoxContentTileOffset;
+ }
+ }
+}
+
+static void sub_80B76E0(u16 *vramBuffer, const u16 *src)
+{
+ s16 i;
+ s16 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, src++)
+ {
+ vramBuffer[i * 32 + j] = *src + gMenuMessageBoxContentTileOffset;
+ }
+ src += 2;
+ }
+}
+
+static void sub_80B772C(void)
+{
+ nullsub_20(namingScreenData.currentPage, namingScreenData.unkC);
+}
+
+static void sub_80B7740(void)
+{
+ nullsub_20((namingScreenData.currentPage + 1) % 3, namingScreenData.unkD);
+}
+
+static void nullsub_20(u8 a, u8 b)
+{
+}
+
+static void sub_80B7838(void);
+static void sub_80B7844(void);
+static void sub_80B7850(void);
+
+static void (*const gUnknown_083CE310[][2])(void) =
+{
+ sub_80B7844,
+ sub_80B7838,
+ sub_80B7838,
+ sub_80B7850,
+ sub_80B7850,
+ sub_80B7844,
+};
+
+static const struct WindowConfig *const gUnknown_083CE328[][2][2] =
+{
+ {
+ {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8},
+ {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0},
+ },
+ {
+ {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0},
+ {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30},
+ },
+ {
+ {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30},
+ {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8},
+ },
+};
+
+static void nullsub_61(void);
+static void sub_80B78F8(void);
+
+static void (*const gUnknown_083CE358[])(void) =
+{
+ nullsub_61,
+ nullsub_61,
+ sub_80B78F8,
+ sub_80B78F8,
+};
+
+static void nullsub_62(void);
+static void sub_80B7924(void);
+
+static void (*const gUnknown_083CE368[])(void) =
+{
+ nullsub_62,
+ sub_80B7924,
+};
+
+static const u8 sKeyboardCharacters[][4][20]; //forward declaration
+
+static u8 GetCharAtKeyboardPos(s16 a, s16 b)
+{
+ return sKeyboardCharacters[namingScreenData.currentPage][b][a];
+}
+
+static void sub_80B7794(void)
+{
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][0][namingScreenData.unkC]);
+ gUnknown_083CE310[namingScreenData.currentPage][0]();
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
+ gUnknown_083CE310[namingScreenData.currentPage][1]();
+ sub_80B772C();
+ sub_80B7740();
+}
+
+static void sub_80B77F8(void)
+{
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
+ gUnknown_083CE310[namingScreenData.currentPage][1]();
+ sub_80B7740();
+}
+
+static void sub_80B7838(void)
+{
+ PrintKeyboardCharacters(1);
+}
+
+static void sub_80B7844(void)
+{
+ PrintKeyboardCharacters(0);
+}
+
+static void sub_80B7850(void)
+{
+ PrintKeyboardCharacters(2);
+}
+
+static void PrintKeyboardCharacters(u8 page) //print letters on page
+{
+ s16 i;
+ s16 r5;
+
+ for (i = 0, r5 = 9; i < 4; i++, r5 += 2)
+ MenuPrint(sKeyboardCharacters[page][i], 3, r5);
+}
+
+static void sub_80B78A8(void)
+{
+ BasicInitMenuWindow(&gWindowConfig_81E6F4C);
+ gUnknown_083CE358[namingScreenData.templateNum]();
+ gUnknown_083CE368[namingScreenData.template->unk3]();
+ MenuPrint(namingScreenData.template->title, 9, 2);
+}
+
+static void nullsub_61(void)
+{
+}
+
+static void sub_80B78F8(void)
+{
+ StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenData.unk3E]);
+}
+
+static void nullsub_62(void)
+{
+}
+
+static void sub_80B7924(void)
+{
+ u8 genderSymbol[2] = _("♂");
+
+ if ((s16)namingScreenData.unk40 != MON_GENDERLESS)
+ {
+ if ((s16)namingScreenData.unk40 == MON_FEMALE)
+ genderSymbol[0] = 0xB6; //female symbol
+ MenuPrint(genderSymbol, 0x14, 4);
+ }
+}
+
+static void sub_80B7960(void)
+{
+ u8 *string = gStringVar1;
+
+ string[0] = 0xFC;
+ string[1] = 0x14;
+ string[2] = 8;
+ string[3] = 0xFC;
+ string[4] = 0x11;
+ string[5] = 1;
+ string += 6;
+ StringCopy(string, namingScreenData.textBuffer);
+ BasicInitMenuWindow(&gWindowConfig_81E6F4C);
+ MenuPrint(gStringVar1, namingScreenData.unk2, 4);
+}
+
+//--------------------------------------------------
+// Forward-declared variables
+//--------------------------------------------------
+
+static const struct NamingScreenTemplate playerNamingScreenTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 7,
+ .unk2 = 1,
+ .unk3 = 0,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_YourName,
+};
+
+static const struct NamingScreenTemplate pcBoxNamingTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 8,
+ .unk2 = 2,
+ .unk3 = 0,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_BoxName,
+};
+
+static const struct NamingScreenTemplate monNamingScreenTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 10,
+ .unk2 = 3,
+ .unk3 = 1,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_PokeName,
+};
+
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[] =
+{
+ &playerNamingScreenTemplate,
+ &pcBoxNamingTemplate,
+ &monNamingScreenTemplate,
+ &monNamingScreenTemplate,
+};
+
+static const u8 sKeyboardCharacters[][4][20] =
+{
+ {
+ _(" A B C D E F . "),
+ _(" G H I J K L , "),
+ _(" M N O P Q R S "),
+ _(" T U V W X Y Z "),
+ },
+ {
+ _(" a b c d e f . "),
+ _(" g h i j k l , "),
+ _(" m n o p q r s "),
+ _(" t u v w x y z "),
+ },
+ {
+ _(" 0 1 2 3 4 "),
+ _(" 5 6 7 8 9 "),
+ _(" ! ? ♂ ♀ / - "),
+ _(" … “ ” ‘ ’ "),
+ },
+};
+
+const struct OamData gOamData_83CE498 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gOamData_83CE4A0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gOamData_83CE4A8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+//TODO: dump sprite data
diff --git a/src/new_game.c b/src/new_game.c
index 4f93e4e3c..82a26b52b 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -2,17 +2,18 @@
#include "new_game.h"
#include "asm.h"
#include "berry.h"
+#include "event_data.h"
+#include "lottery_corner.h"
#include "play_time.h"
-#include "pokemon_size_record.h"
-#include "script.h"
-#include "rom4.h"
#include "pokedex.h"
-#include "lottery_corner.h"
+#include "pokemon_size_record.h"
#include "rng.h"
+#include "rom4.h"
#include "rtc.h"
-#include "event_data.h"
+#include "script.h"
+#include "dewford_trend.h"
-extern u8 gUnknown_020297EC;
+extern u8 gDifferentSaveFile;
extern u8 gPlayerPartyCount;
extern u8 gUnknown_03005CE8;
@@ -22,8 +23,9 @@ extern u8 gUnknown_0819FA81[];
const struct SB1_2EFC_Struct gUnknown_08216604 =
{
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0x0000,
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
@@ -70,9 +72,10 @@ void ClearPokedexFlags(void)
void sub_8052DA8(void)
{
s32 i;
+
sub_80B2D1C();
for (i = 0; i < 5; i++)
- gSaveBlock1.sb1_2EFC_struct[i] = gUnknown_08216604;
+ gSaveBlock1.sbStruct.unkSB1.sb1_2EFC_struct[i] = gUnknown_08216604;
}
void sub_8052DE4(void)
@@ -94,7 +97,7 @@ void ClearSav2(void)
void sub_8052E4C(void)
{
- gUnknown_020297EC = 0;
+ gDifferentSaveFile = 0;
sub_808C0A0();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
@@ -103,9 +106,10 @@ void sub_8052E4C(void)
void NewGameInitData(void)
{
- if (!gSaveFileStatus || gSaveFileStatus == 2)
+ if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
RtcReset();
- gUnknown_020297EC = 1;
+
+ gDifferentSaveFile = 1;
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
sub_808C02C();
@@ -139,7 +143,7 @@ void NewGameInitData(void)
sub_810C994();
sub_8133F80();
sub_80E6764();
- sub_80F7AA4();
+ SetMauvilleOldMan();
sub_80FA17C();
sub_810FA54();
ResetLotteryCorner();
diff --git a/src/option_menu.c b/src/option_menu.c
index f597429c1..613012972 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -91,14 +91,14 @@ static void VBlankCB(void)
void CB2_InitOptionMenu(void)
{
- switch(gMain.state)
+ switch (gMain.state)
{
default:
case 0:
{
u8 *addr;
u32 size;
-
+
SetVBlankCallback(NULL);
REG_DISPCNT = 0;
REG_BG2CNT = 0;
@@ -112,12 +112,12 @@ void CB2_InitOptionMenu(void)
REG_BG0VOFS = 0;
addr = (u8 *)VRAM;
size = 0x18000;
- while(1)
+ while (1)
{
DmaFill16(3, 0, addr, 0x1000);
addr += 0x1000;
size -= 0x1000;
- if(size <= 0x1000)
+ if (size <= 0x1000)
{
DmaFill16(3, 0, addr, size);
break;
@@ -144,7 +144,7 @@ void CB2_InitOptionMenu(void)
gMain.state++;
break;
case 4:
- if(!MultistepInitMenuWindowContinue())
+ if (!MultistepInitMenuWindowContinue())
return;
gMain.state++;
break;
@@ -160,7 +160,7 @@ void CB2_InitOptionMenu(void)
case 7:
{
u16 savedIme;
-
+
REG_WIN0H = 0;
REG_WIN0V = 0;
REG_WIN1H = 0;
@@ -184,7 +184,7 @@ void CB2_InitOptionMenu(void)
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;
@@ -192,10 +192,10 @@ void CB2_InitOptionMenu(void)
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);
@@ -204,17 +204,17 @@ void CB2_InitOptionMenu(void)
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;
@@ -227,7 +227,7 @@ void CB2_InitOptionMenu(void)
static void Task_OptionMenuFadeIn(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gTasks[taskId].func = Task_OptionMenuProcessInput;
}
@@ -235,26 +235,26 @@ static void Task_OptionMenuFadeIn(u8 taskId)
static void Task_OptionMenuProcessInput(u8 taskId)
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
- if(gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL)
+ if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL)
gTasks[taskId].func = Task_OptionMenuSave;
}
- else if(gMain.newKeys & B_BUTTON)
+ else if (gMain.newKeys & B_BUTTON)
{
gTasks[taskId].func = Task_OptionMenuSave;
}
- else if(gMain.newKeys & DPAD_UP)
+ else if (gMain.newKeys & DPAD_UP)
{
- if(gTasks[taskId].data[TD_MENUSELECTION] > 0)
+ if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
gTasks[taskId].data[TD_MENUSELECTION]--;
else
gTasks[taskId].data[TD_MENUSELECTION] = 6;
HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
}
- else if(gMain.newKeys & DPAD_DOWN)
+ else if (gMain.newKeys & DPAD_DOWN)
{
- if(gTasks[taskId].data[TD_MENUSELECTION] <= 5)
+ if (gTasks[taskId].data[TD_MENUSELECTION] <= 5)
gTasks[taskId].data[TD_MENUSELECTION]++;
else
gTasks[taskId].data[TD_MENUSELECTION] = 0;
@@ -262,7 +262,7 @@ static void Task_OptionMenuProcessInput(u8 taskId)
}
else
{
- switch(gTasks[taskId].data[TD_MENUSELECTION])
+ switch (gTasks[taskId].data[TD_MENUSELECTION])
{
case MENUITEM_TEXTSPEED:
gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]);
@@ -300,14 +300,14 @@ static void Task_OptionMenuSave(u8 taskId)
gSaveBlock2.optionsSound = gTasks[taskId].data[TD_SOUND];
gSaveBlock2.optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE];
gSaveBlock2.optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE];
-
+
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].func = Task_OptionMenuFadeOut;
}
static void Task_OptionMenuFadeOut(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
DestroyTask(taskId);
SetMainCallback2(gMain.savedCallback);
@@ -327,10 +327,10 @@ static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style)
{
u8 dst[16];
u16 i;
-
- for(i = 0; *text != EOS && i <= 14; i++)
+
+ for (i = 0; *text != EOS && i <= 14; i++)
dst[i] = *(text++);
-
+
dst[2] = style;
dst[i] = EOS;
MenuPrint_PixelCoords(dst, x, y, 1);
@@ -338,16 +338,16 @@ static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style)
static u8 TextSpeed_ProcessInput(u8 selection)
{
- if(gMain.newKeys & DPAD_RIGHT)
+ if (gMain.newKeys & DPAD_RIGHT)
{
- if(selection <= 1)
+ if (selection <= 1)
selection++;
else
selection = 0;
}
- if(gMain.newKeys & DPAD_LEFT)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if(selection != 0)
+ if (selection != 0)
selection--;
else
selection = 2;
@@ -358,12 +358,12 @@ static u8 TextSpeed_ProcessInput(u8 selection)
static void TextSpeed_DrawChoices(u8 selection)
{
u8 styles[3];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[2] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_Slow, 120, 40, styles[0]);
DrawOptionMenuChoice(gSystemText_Mid, 155, 40, styles[1]);
DrawOptionMenuChoice(gSystemText_Fast, 184, 40, styles[2]);
@@ -371,7 +371,7 @@ static void TextSpeed_DrawChoices(u8 selection)
static u8 BattleScene_ProcessInput(u8 selection)
{
- if(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
selection ^= 1;
return selection;
}
@@ -379,18 +379,18 @@ static u8 BattleScene_ProcessInput(u8 selection)
static void BattleScene_DrawChoices(u8 selection)
{
u8 styles[2];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_On, 120, 56, styles[0]);
DrawOptionMenuChoice(gSystemText_Off, 190, 56, styles[1]);
}
static u8 BattleStyle_ProcessInput(u8 selection)
{
- if(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
selection ^= 1;
return selection;
}
@@ -398,18 +398,18 @@ static u8 BattleStyle_ProcessInput(u8 selection)
static void BattleStyle_DrawChoices(u8 selection)
{
u8 styles[2];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_Shift, 120, 72, styles[0]);
DrawOptionMenuChoice(gSystemText_Set, 190, 72, styles[1]);
}
static u8 Sound_ProcessInput(u8 selection)
{
- if(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
{
selection ^= 1;
SetPokemonCryStereo(selection);
@@ -420,28 +420,28 @@ static u8 Sound_ProcessInput(u8 selection)
static void Sound_DrawChoices(u8 selection)
{
u8 styles[3];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_Mono, 120, 88, styles[0]);
DrawOptionMenuChoice(gSystemText_Stereo, 172, 88, styles[1]);
}
static u8 FrameType_ProcessInput(u8 selection)
{
- if(gMain.newKeys & DPAD_RIGHT)
+ if (gMain.newKeys & DPAD_RIGHT)
{
- if(selection <= 18)
+ if (selection <= 18)
selection++;
else
selection = 0;
MenuLoadTextWindowGraphics_OverrideFrameType(selection);
}
- if(gMain.newKeys & DPAD_LEFT)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if(selection != 0)
+ if (selection != 0)
selection--;
else
selection = 19;
@@ -457,12 +457,12 @@ static void FrameType_DrawChoices(u8 selection)
u8 text[8];
u8 n = selection + 1;
u16 i;
-
- for(i = 0; gSystemText_Terminator[i] != EOS && i <= 5; i++)
+
+ for (i = 0; gSystemText_Terminator[i] != EOS && i <= 5; i++)
text[i] = gSystemText_Terminator[i];
-
+
//Convert number to decimal string
- if(n / 10 != 0)
+ if (n / 10 != 0)
{
text[i] = n / 10 + CHAR_0;
i++;
@@ -476,7 +476,7 @@ static void FrameType_DrawChoices(u8 selection)
text[i] = CHAR_SPACE;
i++;
}
-
+
text[i] = EOS;
MenuPrint(gSystemText_Type, 15, 15);
MenuPrint(text, 18, 15);
@@ -484,16 +484,16 @@ static void FrameType_DrawChoices(u8 selection)
static u8 ButtonMode_ProcessInput(u8 selection)
{
- if(gMain.newKeys & DPAD_RIGHT)
+ if (gMain.newKeys & DPAD_RIGHT)
{
- if(selection <= 1)
+ if (selection <= 1)
selection++;
else
selection = 0;
}
- if(gMain.newKeys & DPAD_LEFT)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if(selection != 0)
+ if (selection != 0)
selection--;
else
selection = 2;
@@ -504,12 +504,12 @@ static u8 ButtonMode_ProcessInput(u8 selection)
static void ButtonMode_DrawChoices(u8 selection)
{
u8 styles[3];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[2] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_Normal, 120, 104, styles[0]);
DrawOptionMenuChoice(gSystemText_LR, 166, 104, styles[1]);
DrawOptionMenuChoice(gSystemText_LA, 188, 104, styles[2]);
diff --git a/src/party_menu.c b/src/party_menu.c
index ce1b0f32a..d473eae6d 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -8,28 +8,29 @@
#define DATA_COUNT (6)
-struct Unk201C000 {
- /* 0x00 */ struct Pokemon *pokemon;
- /* 0x04 */ u8 var04;
- /* 0x05 */ u8 var05;
- /* 0x06 */ u16 var06;
- u8 pad_08[10];
- /* 0x12 */ u16 var12;
+struct Unk201C000
+{
+ /*0x00*/ struct Pokemon *pokemon;
+ /*0x04*/ u8 var04;
+ /*0x05*/ u8 var05;
+ /*0x06*/ u16 var06;
+ u8 pad_08[10];
+ /*0x12*/ u16 var12;
};
-struct Unk201B260 {
- /* 0x00 */ u8 var00;
- /* 0x01 */ u8 var01;
- u8 pad_02[2];
- /* 0x04 */ s16 var04[DATA_COUNT * 2];
- u8 pad_1C[2];
- /* 0x1E */ u16 var1E;
- /* 0x20 */ u16 var20;
+struct Unk201B260
+{
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ u8 pad_02[2];
+ /*0x04*/ s16 var04[DATA_COUNT * 2];
+ u8 pad_1C[2];
+ /*0x1E*/ u16 var1E;
+ /*0x20*/ u16 var20;
};
extern struct Unk201B260 unk_201B260;
extern struct Unk201C000 unk_201C000;
-extern u8 gStringVar1[];
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F6;
@@ -45,7 +46,8 @@ void PartyMenuUpdateLevelOrStatus(struct Pokemon *, u8);
u8 ExecuteTableBasedItemEffect__(u8 u8, u16 u16, int i);
void sub_80701DC(u8 taskId);
-u8 sub_806E834(u8 *message, u8 arg1) {
+u8 sub_806E834(u8 *message, u8 arg1)
+{
u8 taskId;
gUnknown_0202E8F6 = 1;
@@ -59,14 +61,17 @@ u8 sub_806E834(u8 *message, u8 arg1) {
return taskId;
}
-static void sub_806E884(u8 taskId) {
- if (MenuUpdateWindowText() == 0) {
+static void sub_806E884(u8 taskId)
+{
+ if (MenuUpdateWindowText() == 0)
+ {
return;
}
gUnknown_0202E8F6 = 0;
- if (gTasks[taskId].data[0] == 0) {
+ if (gTasks[taskId].data[0] == 0)
+ {
MenuZeroFillWindowRect(3, 14, 26, 19);
}
@@ -76,13 +81,15 @@ static void sub_806E884(u8 taskId) {
asm(".section .text_b");
#ifdef NONMATCHING
-void sub_8070088(u8 taskId) {
+void sub_8070088(u8 taskId)
+{
u8 dummyTaskId;
struct Task *task2;
gTasks[taskId].func = TaskDummy;
- if (GetMonData(&gPlayerParty[unk_201C000.var04], MON_DATA_SPECIES) == 0) {
+ if (GetMonData(&gPlayerParty[unk_201C000.var04], MON_DATA_SPECIES) == 0)
+ {
gTasks[taskId].func = sub_80701DC;
return;
}
@@ -93,7 +100,8 @@ void sub_8070088(u8 taskId) {
task2->data[10] = GetMonData(unk_201C000.pokemon, MON_DATA_MAX_HP);
task2->data[11] = GetMonData(unk_201C000.pokemon, MON_DATA_HP);
- if (ExecuteTableBasedItemEffect__(unk_201C000.var05, unk_201C000.var06, 0)) {
+ if (ExecuteTableBasedItemEffect__(unk_201C000.var05, unk_201C000.var06, 0))
+ {
DestroyTask(dummyTaskId);
gTasks[taskId].func = sub_80701DC;
return;
@@ -108,7 +116,7 @@ void sub_8070088(u8 taskId) {
unk_201B260.var01 = 2; // u8
task2->data[12] = GetMonData(unk_201C000.pokemon, MON_DATA_HP) - task2->data[11];
- task2->data[14]= 1;
+ task2->data[14] = 1;
unk_201B260.var1E = 1; // u16
unk_201B260.var20 = 1; // u16
@@ -117,151 +125,152 @@ void sub_8070088(u8 taskId) {
}
#else
__attribute__((naked))
-void sub_8070088(void) {
+void sub_8070088(void)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r1, _08070120 @ =gTasks\n\
- mov r10, r1\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- mov r2, r10\n\
- adds r7, r1, r2\n\
- ldr r5, _08070124 @ =TaskDummy\n\
- str r5, [r7]\n\
- ldr r4, _08070128 @ =0x0201c000\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0x64\n\
- mov r9, r1\n\
- mov r2, r9\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- ldr r1, _0807012C @ =gPlayerParty\n\
- mov r8, r1\n\
- add r0, r8\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _08070118\n\
- adds r0, r5, 0\n\
- movs r1, 0x5\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- str r0, [sp]\n\
- mov r0, r10\n\
- adds r0, 0x8\n\
- ldr r2, [sp]\n\
- adds r6, r2, r0\n\
- ldrb r0, [r4, 0x5]\n\
- mov r1, r9\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- add r0, r8\n\
- str r0, [r4]\n\
- movs r1, 0x3A\n\
- bl GetMonData\n\
- strh r0, [r6, 0x14]\n\
- ldr r0, [r4]\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- strh r0, [r6, 0x16]\n\
- ldrb r0, [r4, 0x5]\n\
- ldrh r1, [r4, 0x6]\n\
- movs r2, 0\n\
- bl ExecuteTableBasedItemEffect__\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08070134\n\
- adds r0, r5, 0\n\
- bl DestroyTask\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r1, _08070120 @ =gTasks\n\
+ mov r10, r1\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ mov r2, r10\n\
+ adds r7, r1, r2\n\
+ ldr r5, _08070124 @ =TaskDummy\n\
+ str r5, [r7]\n\
+ ldr r4, _08070128 @ =0x0201c000\n\
+ ldrb r0, [r4, 0x5]\n\
+ movs r1, 0x64\n\
+ mov r9, r1\n\
+ mov r2, r9\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ ldr r1, _0807012C @ =gPlayerParty\n\
+ mov r8, r1\n\
+ add r0, r8\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08070118\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x5\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ str r0, [sp]\n\
+ mov r0, r10\n\
+ adds r0, 0x8\n\
+ ldr r2, [sp]\n\
+ adds r6, r2, r0\n\
+ ldrb r0, [r4, 0x5]\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r0, r8\n\
+ str r0, [r4]\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ strh r0, [r6, 0x14]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ strh r0, [r6, 0x16]\n\
+ ldrb r0, [r4, 0x5]\n\
+ ldrh r1, [r4, 0x6]\n\
+ movs r2, 0\n\
+ bl ExecuteTableBasedItemEffect__\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08070134\n\
+ adds r0, r5, 0\n\
+ bl DestroyTask\n\
_08070118:\n\
- ldr r0, _08070130 @ =sub_80701DC\n\
- str r0, [r7]\n\
- b _080701B0\n\
- .align 2, 0\n\
+ ldr r0, _08070130 @ =sub_80701DC\n\
+ str r0, [r7]\n\
+ b _080701B0\n\
+ .align 2, 0\n\
_08070120: .4byte gTasks\n\
_08070124: .4byte TaskDummy\n\
_08070128: .4byte 0x0201c000\n\
_0807012C: .4byte gPlayerParty\n\
_08070130: .4byte sub_80701DC\n\
_08070134:\n\
- ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- movs r1, 0xE\n\
- movs r2, 0x1A\n\
- movs r3, 0x13\n\
- bl MenuZeroFillWindowRect\n\
- movs r0, 0x1\n\
- bl PlaySE\n\
- ldr r0, [r4]\n\
- ldrb r1, [r4, 0x5]\n\
- bl PartyMenuUpdateLevelOrStatus\n\
- bl IsDoubleBattle\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldrb r1, [r4, 0x5]\n\
- lsls r1, 1\n\
- adds r0, r1\n\
- ldr r1, _080701C4 @ =gUnknown_083769A8\n\
- adds r0, r1\n\
- movs r1, 0x9\n\
- bl task_pc_turn_off\n\
- ldr r2, _080701C8 @ =0xfffff261\n\
- adds r1, r4, r2\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- ldrh r1, [r6, 0x16]\n\
- subs r0, r1\n\
- strh r0, [r6, 0x18]\n\
- movs r0, 0x1\n\
- strh r0, [r6, 0x1C]\n\
- ldr r1, _080701CC @ =0xfffff27e\n\
- adds r0, r4, r1\n\
- movs r1, 0x1\n\
- strh r1, [r0]\n\
- ldr r2, _080701D0 @ =0xfffff280\n\
- adds r0, r4, r2\n\
- strh r1, [r0]\n\
- ldrh r1, [r6, 0x16]\n\
- adds r2, 0x2\n\
- adds r0, r4, r2\n\
- strh r1, [r0]\n\
- ldr r0, _080701D4 @ =0xffff8000\n\
- str r0, [r4, 0xC]\n\
- ldr r1, [sp]\n\
- add r1, r10\n\
- ldr r0, _080701D8 @ =sub_806F8AC\n\
- str r0, [r1]\n\
+ ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ movs r1, 0xE\n\
+ movs r2, 0x1A\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+ movs r0, 0x1\n\
+ bl PlaySE\n\
+ ldr r0, [r4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ bl PartyMenuUpdateLevelOrStatus\n\
+ bl IsDoubleBattle\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldrb r1, [r4, 0x5]\n\
+ lsls r1, 1\n\
+ adds r0, r1\n\
+ ldr r1, _080701C4 @ =gUnknown_083769A8\n\
+ adds r0, r1\n\
+ movs r1, 0x9\n\
+ bl task_pc_turn_off\n\
+ ldr r2, _080701C8 @ =0xfffff261\n\
+ adds r1, r4, r2\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ ldrh r1, [r6, 0x16]\n\
+ subs r0, r1\n\
+ strh r0, [r6, 0x18]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0x1C]\n\
+ ldr r1, _080701CC @ =0xfffff27e\n\
+ adds r0, r4, r1\n\
+ movs r1, 0x1\n\
+ strh r1, [r0]\n\
+ ldr r2, _080701D0 @ =0xfffff280\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ ldrh r1, [r6, 0x16]\n\
+ adds r2, 0x2\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ ldr r0, _080701D4 @ =0xffff8000\n\
+ str r0, [r4, 0xC]\n\
+ ldr r1, [sp]\n\
+ add r1, r10\n\
+ ldr r0, _080701D8 @ =sub_806F8AC\n\
+ str r0, [r1]\n\
_080701B0:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080701C0: .4byte gUnknown_0202E8F4\n\
_080701C4: .4byte gUnknown_083769A8\n\
_080701C8: .4byte 0xfffff261\n\
@@ -276,12 +285,14 @@ _080701D8: .4byte sub_806F8AC\n\
asm(".section .text_c");
-void sub_8070848(u8 taskId) {
+void sub_8070848(u8 taskId)
+{
u8 i;
MenuDrawTextWindow(11, 0, 29, 7);
- for (i = 0; i < DATA_COUNT; i++) {
+ for (i = 0; i < DATA_COUNT; i++)
+ {
u8 x;
u8 y;
u32 stat;
@@ -300,9 +311,12 @@ void sub_8070848(u8 taskId) {
MenuPrint_PixelCoords(gUnknown_08376D04[i], (x + 1) * 8, y * 8, 1);
- if (i == 2) {
+ if (i == 2)
+ {
MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0);
- } else {
+ }
+ else
+ {
MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1);
}
diff --git a/src/player_pc.c b/src/player_pc.c
index 822e2108e..6ea169713 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -1,14 +1,14 @@
#include "global.h"
+#include "asm.h"
#include "item.h"
-#include "task.h"
-#include "menu.h"
-#include "sound.h"
#include "main.h"
-#include "script.h"
+#include "menu.h"
#include "palette.h"
-#include "weather.h"
-#include "asm.h"
+#include "script.h"
+#include "sound.h"
#include "string_util.h"
+#include "task.h"
+#include "weather.h"
extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);
extern void ItemStorageMenuProcessInput(u8);
@@ -65,7 +65,7 @@ void NewGameInitPCItems(void)
while (gNewGamePCItems[i * 2] && (gNewGamePCItems + 1)[i * 2])
{
- if(AddPCItem(gNewGamePCItems[i * 2], (gNewGamePCItems + 1)[i * 2]) != 1)
+ if (AddPCItem(gNewGamePCItems[i * 2], (gNewGamePCItems + 1)[i * 2]) != 1)
break;
i++;
}
@@ -73,746 +73,746 @@ void NewGameInitPCItems(void)
void BedroomPC(void)
{
- u8 taskId;
-
- gUnknown_02039314 = gUnknown_084062B8;
- gUnknown_030007B4 = 4;
- taskId = CreateTask(TaskDummy, 0);
- DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);
+ u8 taskId;
+
+ gUnknown_02039314 = gUnknown_084062B8;
+ gUnknown_030007B4 = 4;
+ taskId = CreateTask(TaskDummy, 0);
+ DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);
}
void PlayerPC(void)
{
- u8 taskId;
-
- gUnknown_02039314 = gUnknown_084062BC;
- gUnknown_030007B4 = 3;
- taskId = CreateTask(TaskDummy, 0);
- DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);
+ u8 taskId;
+
+ gUnknown_02039314 = gUnknown_084062BC;
+ gUnknown_030007B4 = 3;
+ taskId = CreateTask(TaskDummy, 0);
+ DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);
}
void InitPlayerPCMenu(u8 taskId)
{
- MenuDrawTextWindow(0, 0, 10, gUnknown_030007B4 * 2 + 1);
- PrintMenuItemsReordered(1, 1, gUnknown_030007B4, gUnknown_08406298, gUnknown_02039314);
- InitMenu(0, 1, 1, gUnknown_030007B4, 0, 9);
- gTasks[taskId].func = PlayerPCProcessMenuInput;
+ MenuDrawTextWindow(0, 0, 10, gUnknown_030007B4 * 2 + 1);
+ PrintMenuItemsReordered(1, 1, gUnknown_030007B4, gUnknown_08406298, gUnknown_02039314);
+ InitMenu(0, 1, 1, gUnknown_030007B4, 0, 9);
+ gTasks[taskId].func = PlayerPCProcessMenuInput;
}
void PlayerPCProcessMenuInput(u8 taskId)
{
- if(gMain.newAndRepeatedKeys & 0x40)
- {
- PlaySE(5);
- MoveMenuCursor(-1);
- }
- else if(gMain.newAndRepeatedKeys & 0x80)
- {
- PlaySE(5);
- MoveMenuCursor(1);
- }
- else if(gMain.newKeys & 0x1)
- {
- sub_8072DEC();
- PlaySE(5);
- gUnknown_08406298[gUnknown_02039314[GetMenuCursorPos()]].func(taskId);
- }
- else if(gMain.newKeys & 0x2)
- {
- sub_8072DEC();
- PlaySE(5);
- gUnknown_08406298[gUnknown_030007B4[gUnknown_02039314 - 1]].func(taskId);
- }
+ if (gMain.newAndRepeatedKeys & 0x40)
+ {
+ PlaySE(5);
+ MoveMenuCursor(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & 0x80)
+ {
+ PlaySE(5);
+ MoveMenuCursor(1);
+ }
+ else if (gMain.newKeys & 0x1)
+ {
+ sub_8072DEC();
+ PlaySE(5);
+ gUnknown_08406298[gUnknown_02039314[GetMenuCursorPos()]].func(taskId);
+ }
+ else if (gMain.newKeys & 0x2)
+ {
+ sub_8072DEC();
+ PlaySE(5);
+ gUnknown_08406298[gUnknown_030007B4[gUnknown_02039314 - 1]].func(taskId);
+ }
}
void ReshowPlayerPC(u8 var)
{
- DisplayItemMessageOnField(var, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);
+ DisplayItemMessageOnField(var, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);
}
void PlayerPC_ItemStorage(u8 taskId)
{
- InitItemStorageMenu(0);
- gTasks[taskId].func = ItemStorageMenuProcessInput;
+ InitItemStorageMenu(0);
+ gTasks[taskId].func = ItemStorageMenuProcessInput;
}
void PlayerPC_Mailbox(u8 taskId)
{
- MenuZeroFillWindowRect(0, 0, 10, 9);
- unk_201FE00[3] = sub_813AF3C();
- if(!unk_201FE00[3])
- DisplayItemMessageOnField(taskId, gOtherText_NoMailHere, ReshowPlayerPC, 0);
- else
- {
- unk_201FE00[0] = 0;
- unk_201FE00[2] = 0;
- sub_813AF78();
- sub_813A240(taskId);
- sub_813B108(taskId);
- gTasks[taskId].func = sub_813B174;
- }
+ MenuZeroFillWindowRect(0, 0, 10, 9);
+ unk_201FE00[3] = sub_813AF3C();
+ if (!unk_201FE00[3])
+ DisplayItemMessageOnField(taskId, gOtherText_NoMailHere, ReshowPlayerPC, 0);
+ else
+ {
+ unk_201FE00[0] = 0;
+ unk_201FE00[2] = 0;
+ sub_813AF78();
+ sub_813A240(taskId);
+ sub_813B108(taskId);
+ gTasks[taskId].func = sub_813B174;
+ }
}
void PlayerPC_Decoration(u8 var)
{
- MenuZeroFillWindowRect(0, 0, 10, 9);
- DoPlayerPCDecoration(var);
+ MenuZeroFillWindowRect(0, 0, 10, 9);
+ DoPlayerPCDecoration(var);
}
void PlayerPC_TurnOff(u8 taskId)
{
- if(gUnknown_030007B4 == 4)
- {
- MenuZeroFillWindowRect(0, 0, 0x1D, 0x13);
- if(!gSaveBlock2.playerGender)
- ScriptContext1_SetupScript(&gUnknown_08152850); // male
- else
- ScriptContext1_SetupScript(&gUnknown_08152C75); // female
- }
- else
- {
- MenuZeroFillWindowRect(0, 0, 10, 9);
- EnableBothScriptContexts();
- }
- DestroyTask(taskId);
+ if (gUnknown_030007B4 == 4)
+ {
+ MenuZeroFillWindowRect(0, 0, 0x1D, 0x13);
+ if (!gSaveBlock2.playerGender)
+ ScriptContext1_SetupScript(&gUnknown_08152850); // male
+ else
+ ScriptContext1_SetupScript(&gUnknown_08152C75); // female
+ }
+ else
+ {
+ MenuZeroFillWindowRect(0, 0, 10, 9);
+ EnableBothScriptContexts();
+ }
+ DestroyTask(taskId);
}
void InitItemStorageMenu(u8 var)
{
- MenuZeroFillWindowRect(0, 0, 10, 9);
- MenuDrawTextWindow(0, 0, 11, 9);
- PrintMenuItems(1, 1, 4, gUnknown_084062C0);
- InitMenu(0, 1, 1, 4, var, 10);
- ItemStorageMenuPrint((u8 *)gUnknown_08406288[var]);
+ MenuZeroFillWindowRect(0, 0, 10, 9);
+ MenuDrawTextWindow(0, 0, 11, 9);
+ PrintMenuItems(1, 1, 4, gUnknown_084062C0);
+ InitMenu(0, 1, 1, 4, var, 10);
+ ItemStorageMenuPrint((u8 *)gUnknown_08406288[var]);
}
void ItemStorageMenuPrint(u8 *textPtr)
{
- MenuFillWindowRectWithBlankTile(2, 15, 27, 18);
- MenuPrint(textPtr, 2, 15);
+ MenuFillWindowRectWithBlankTile(2, 15, 27, 18);
+ MenuPrint(textPtr, 2, 15);
}
void ItemStorageMenuProcessInput(u8 var)
{
- if(gMain.newAndRepeatedKeys & 0x40)
- {
- PlaySE(5);
- MoveMenuCursor(-1);
- ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]);
- }
- else if(gMain.newAndRepeatedKeys & 0x80)
- {
- PlaySE(5);
- MoveMenuCursor(1);
- ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]);
- }
- else if(gMain.newKeys & 0x1)
- {
- PlaySE(5);
- gUnknown_084062C0[GetMenuCursorPos()].func(var);
- }
- else if(gMain.newKeys & 0x2)
- {
- sub_8072DEC();
- PlaySE(5);
- gUnknown_084062C0[3].func(var);
- }
+ if (gMain.newAndRepeatedKeys & 0x40)
+ {
+ PlaySE(5);
+ MoveMenuCursor(-1);
+ ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]);
+ }
+ else if (gMain.newAndRepeatedKeys & 0x80)
+ {
+ PlaySE(5);
+ MoveMenuCursor(1);
+ ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]);
+ }
+ else if (gMain.newKeys & 0x1)
+ {
+ PlaySE(5);
+ gUnknown_084062C0[GetMenuCursorPos()].func(var);
+ }
+ else if (gMain.newKeys & 0x2)
+ {
+ sub_8072DEC();
+ PlaySE(5);
+ gUnknown_084062C0[3].func(var);
+ }
}
void Task_ItemStorage_Deposit(u8 taskId)
{
- if(!gPaletteFade.active)
- {
- sub_80A6A30();
- DestroyTask(taskId);
- }
+ if (!gPaletteFade.active)
+ {
+ sub_80A6A30();
+ DestroyTask(taskId);
+ }
}
void ItemStorage_Deposit(u8 taskId)
{
- gTasks[taskId].func = Task_ItemStorage_Deposit;
- fade_screen(1, 0);
+ gTasks[taskId].func = Task_ItemStorage_Deposit;
+ fade_screen(1, 0);
}
void sub_813A0C8(u8 taskId)
{
- if(sub_807D770() == 1)
- gTasks[taskId].func = ItemStorageMenuProcessInput;
+ if (sub_807D770() == 1)
+ gTasks[taskId].func = ItemStorageMenuProcessInput;
}
void sub_813A0F8(void)
{
- MenuDisplayMessageBox();
- InitItemStorageMenu(1);
- CreateTask(sub_813A0C8, 0);
- pal_fill_black();
+ MenuDisplayMessageBox();
+ InitItemStorageMenu(1);
+ CreateTask(sub_813A0C8, 0);
+ pal_fill_black();
}
void ItemStorage_Withdraw(u8 taskId)
{
- u8 var;
- u16 * data = gTasks[taskId].data;
-
- sub_8072DEC();
- MenuZeroFillWindowRect(0, 0, 11, 9);
- var = CountUsedPCItemSlots();
- data[2] = var;
-
- if(var)
- {
- MenuZeroFillWindowRect(0, 14, 29, 19);
- data[6] = 0;
- data[0] = 0;
- data[1] = 0;
- sub_813A240(taskId);
- sub_813AE6C(taskId, 0);
- gTasks[taskId].func = sub_813A280;
- }
- else
- DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0);
+ u8 var;
+ u16 * data = gTasks[taskId].data;
+
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 11, 9);
+ var = CountUsedPCItemSlots();
+ data[2] = var;
+
+ if (var)
+ {
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ data[6] = 0;
+ data[0] = 0;
+ data[1] = 0;
+ sub_813A240(taskId);
+ sub_813AE6C(taskId, 0);
+ gTasks[taskId].func = sub_813A280;
+ }
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0);
}
void ItemStorage_Toss(u8 taskId)
{
- u8 var;
- u16 * data = gTasks[taskId].data;
-
- sub_8072DEC();
- MenuZeroFillWindowRect(0, 0, 11, 9);
- var = CountUsedPCItemSlots();
- data[2] = var;
-
- if(var)
- {
- MenuZeroFillWindowRect(0, 14, 29, 19);
- data[6] = 2;
- data[0] = 0;
- data[1] = 0;
- sub_813A240(taskId);
- sub_813AE6C(taskId, 2);
- gTasks[taskId].func = sub_813A280;
- }
- else
- DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0);
+ u8 var;
+ u16 * data = gTasks[taskId].data;
+
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 11, 9);
+ var = CountUsedPCItemSlots();
+ data[2] = var;
+
+ if (var)
+ {
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ data[6] = 2;
+ data[0] = 0;
+ data[1] = 0;
+ sub_813A240(taskId);
+ sub_813AE6C(taskId, 2);
+ gTasks[taskId].func = sub_813A280;
+ }
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0);
}
void ItemStorage_Exit(u8 var)
{
- sub_8072DEC();
- MenuZeroFillWindowRect(0, 0, 11, 9);
- ReshowPlayerPC(var);
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 11, 9);
+ ReshowPlayerPC(var);
}
void sub_813A240(u8 taskId)
{
- s16 *data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
- if (data[2] > 7)
- data[4] = 8;
- else
- data[4] = data[2] + 1;
+ if (data[2] > 7)
+ data[4] = 8;
+ else
+ data[4] = data[2] + 1;
- if(unk_201FE00[3] > 7)
- unk_201FE00[1] = 8;
- else
- unk_201FE00[1] = unk_201FE00[3] + 1;
+ if (unk_201FE00[3] > 7)
+ unk_201FE00[1] = 8;
+ else
+ unk_201FE00[1] = unk_201FE00[3] + 1;
}
#ifdef NONMATCHING
void sub_813A280(u8 taskId)
{
- s16 *data = gTasks[taskId].data;
-
- if(gMain.newAndRepeatedKeys & 0x40)
- {
- if(data[0])
- {
- PlaySE(5);
- data[0] = MoveMenuCursor(-1);
- if(!data[9])
- {
- if(data[1] + data[0] == data[2])
- {
- sub_813AD58(0xFFFF);
- return;
- }
- sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId);
- }
- return;
- }
- if(!data[1])
- return;
- PlaySE(5);
- sub_813AE0C(taskId);
- if(data[9])
- MoveMenuCursor(0);
- return;
- }
- if(!(gMain.newAndRepeatedKeys & 0x80))
- {
- if(gMain.newKeys & 0x4)
- {
- if(!data[9])
- {
- if(data[0] + data[1] != data[2])
- {
- PlaySE(5);
- data[9] = 1;
- data[8] = data[0] + data[1];
- sub_813AD58(0xFFF7);
- }
- sub_813ABE8(taskId);
- return;
- }
- PlaySE(5);
- sub_813AA30(taskId, 0);
- sub_813AE0C(taskId);
- return;
- }
- if(gMain.newKeys & 0x1)
- {
- PlaySE(5);
- if(data[9])
- {
- sub_813AA30(taskId, 0);
- sub_813AE0C(taskId);
- return;
- }
- if(data[1] + data[0] != data[2])
- {
- sub_813A4B4(taskId);
- return;
- }
- }
- else
- {
- if(!(gMain.newKeys & 0x2))
- return;
- PlaySE(5);
- if(data[9])
- {
- sub_813AA30(taskId, 1);
- sub_813AE0C(taskId);
- return;
- }
- sub_8072DEC();
- }
- sub_813A468(taskId);
- return;
- }
- if(data[0] == data[4] - 1)
- {
- if(data[1] + data[0] == data[2])
- return;
- PlaySE(5);
- data[1]++;
- sub_813AE0C(taskId);
- if(data[9])
- MoveMenuCursor(0);
- return;
- }
- PlaySE(5);
- data[0] = MoveMenuCursor(1);
- if(!data[9])
- {
- if(data[1] + data[0] != data[2])
- {
- sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId);
- return;
- }
- sub_813AD58(0xFFFF);
- }
+ s16 *data = gTasks[taskId].data;
+
+ if (gMain.newAndRepeatedKeys & 0x40)
+ {
+ if (data[0])
+ {
+ PlaySE(5);
+ data[0] = MoveMenuCursor(-1);
+ if (!data[9])
+ {
+ if (data[1] + data[0] == data[2])
+ {
+ sub_813AD58(0xFFFF);
+ return;
+ }
+ sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId);
+ }
+ return;
+ }
+ if (!data[1])
+ return;
+ PlaySE(5);
+ sub_813AE0C(taskId);
+ if (data[9])
+ MoveMenuCursor(0);
+ return;
+ }
+ if (!(gMain.newAndRepeatedKeys & 0x80))
+ {
+ if (gMain.newKeys & 0x4)
+ {
+ if (!data[9])
+ {
+ if (data[0] + data[1] != data[2])
+ {
+ PlaySE(5);
+ data[9] = 1;
+ data[8] = data[0] + data[1];
+ sub_813AD58(0xFFF7);
+ }
+ sub_813ABE8(taskId);
+ return;
+ }
+ PlaySE(5);
+ sub_813AA30(taskId, 0);
+ sub_813AE0C(taskId);
+ return;
+ }
+ if (gMain.newKeys & 0x1)
+ {
+ PlaySE(5);
+ if (data[9])
+ {
+ sub_813AA30(taskId, 0);
+ sub_813AE0C(taskId);
+ return;
+ }
+ if (data[1] + data[0] != data[2])
+ {
+ sub_813A4B4(taskId);
+ return;
+ }
+ }
+ else
+ {
+ if (!(gMain.newKeys & 0x2))
+ return;
+ PlaySE(5);
+ if (data[9])
+ {
+ sub_813AA30(taskId, 1);
+ sub_813AE0C(taskId);
+ return;
+ }
+ sub_8072DEC();
+ }
+ sub_813A468(taskId);
+ return;
+ }
+ if (data[0] == data[4] - 1)
+ {
+ if (data[1] + data[0] == data[2])
+ return;
+ PlaySE(5);
+ data[1]++;
+ sub_813AE0C(taskId);
+ if (data[9])
+ MoveMenuCursor(0);
+ return;
+ }
+ PlaySE(5);
+ data[0] = MoveMenuCursor(1);
+ if (!data[9])
+ {
+ if (data[1] + data[0] != data[2])
+ {
+ sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId);
+ return;
+ }
+ sub_813AD58(0xFFFF);
+ }
}
#else
__attribute__((naked))
void sub_813A280(u8 taskId)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- adds r6, r5, 0\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- ldr r1, _0813A2DC @ =gTasks + 0x8\n\
- adds r4, r0, r1\n\
- ldr r2, _0813A2E0 @ =gMain\n\
- ldrh r1, [r2, 0x30]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0813A306\n\
- movs r1, 0\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- beq _0813A2E4\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- bl MoveMenuCursor\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- strh r0, [r4]\n\
- ldrh r1, [r4, 0x2]\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- beq _0813A2CC\n\
- b _0813A460\n\
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ adds r6, r5, 0\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ ldr r1, _0813A2DC @ =gTasks + 0x8\n\
+ adds r4, r0, r1\n\
+ ldr r2, _0813A2E0 @ =gMain\n\
+ ldrh r1, [r2, 0x30]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0813A306\n\
+ movs r1, 0\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ beq _0813A2E4\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ bl MoveMenuCursor\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ strh r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ beq _0813A2CC\n\
+ b _0813A460\n\
_0813A2CC:\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- movs r2, 0x4\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- beq _0813A34C\n\
- b _0813A358\n\
- .align 2, 0\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ movs r2, 0x4\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r1, r0\n\
+ beq _0813A34C\n\
+ b _0813A358\n\
+ .align 2, 0\n\
_0813A2DC: .4byte gTasks + 0x8\n\
_0813A2E0: .4byte gMain\n\
_0813A2E4:\n\
- movs r1, 0x2\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- bne _0813A2EE\n\
- b _0813A460\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ bne _0813A2EE\n\
+ b _0813A460\n\
_0813A2EE:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- ldrh r0, [r4, 0x2]\n\
- subs r0, 0x1\n\
- strh r0, [r4, 0x2]\n\
- adds r0, r5, 0\n\
- bl sub_813AE0C\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- b _0813A394\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ ldrh r0, [r4, 0x2]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4, 0x2]\n\
+ adds r0, r5, 0\n\
+ bl sub_813AE0C\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ b _0813A394\n\
_0813A306:\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0813A3A0\n\
- movs r0, 0\n\
- ldrsh r1, [r4, r0]\n\
- movs r2, 0x8\n\
- ldrsh r0, [r4, r2]\n\
- subs r0, 0x1\n\
- cmp r1, r0\n\
- beq _0813A370\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- bl MoveMenuCursor\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- strh r0, [r4]\n\
- ldrh r1, [r4, 0x2]\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- beq _0813A340\n\
- b _0813A460\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0813A3A0\n\
+ movs r0, 0\n\
+ ldrsh r1, [r4, r0]\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r4, r2]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ beq _0813A370\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ bl MoveMenuCursor\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ strh r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ beq _0813A340\n\
+ b _0813A460\n\
_0813A340:\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- movs r2, 0x4\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- bne _0813A358\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ movs r2, 0x4\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r1, r0\n\
+ bne _0813A358\n\
_0813A34C:\n\
- ldr r0, _0813A354 @ =0x0000ffff\n\
- bl sub_813AD58\n\
- b _0813A460\n\
- .align 2, 0\n\
+ ldr r0, _0813A354 @ =0x0000ffff\n\
+ bl sub_813AD58\n\
+ b _0813A460\n\
+ .align 2, 0\n\
_0813A354: .4byte 0x0000ffff\n\
_0813A358:\n\
- ldr r0, _0813A36C @ =gSaveBlock1\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- movs r0, 0x93\n\
- lsls r0, 3\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- bl sub_813AD58\n\
- b _0813A460\n\
- .align 2, 0\n\
+ ldr r0, _0813A36C @ =gSaveBlock1\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0x93\n\
+ lsls r0, 3\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ bl sub_813AD58\n\
+ b _0813A460\n\
+ .align 2, 0\n\
_0813A36C: .4byte gSaveBlock1\n\
_0813A370:\n\
- movs r2, 0x2\n\
- ldrsh r0, [r4, r2]\n\
- adds r0, r1\n\
- movs r2, 0x4\n\
- ldrsh r1, [r4, r2]\n\
- cmp r0, r1\n\
- beq _0813A460\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- ldrh r0, [r4, 0x2]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x2]\n\
- adds r0, r5, 0\n\
- bl sub_813AE0C\n\
- movs r1, 0x12\n\
- ldrsh r0, [r4, r1]\n\
+ movs r2, 0x2\n\
+ ldrsh r0, [r4, r2]\n\
+ adds r0, r1\n\
+ movs r2, 0x4\n\
+ ldrsh r1, [r4, r2]\n\
+ cmp r0, r1\n\
+ beq _0813A460\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ ldrh r0, [r4, 0x2]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x2]\n\
+ adds r0, r5, 0\n\
+ bl sub_813AE0C\n\
+ movs r1, 0x12\n\
+ ldrsh r0, [r4, r1]\n\
_0813A394:\n\
- cmp r0, 0\n\
- beq _0813A460\n\
- movs r0, 0\n\
- bl MoveMenuCursor\n\
- b _0813A460\n\
+ cmp r0, 0\n\
+ beq _0813A460\n\
+ movs r0, 0\n\
+ bl MoveMenuCursor\n\
+ b _0813A460\n\
_0813A3A0:\n\
- ldrh r1, [r2, 0x2E]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0813A3F0\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- bne _0813A3E8\n\
- movs r1, 0\n\
- ldrsh r0, [r4, r1]\n\
- movs r2, 0x2\n\
- ldrsh r1, [r4, r2]\n\
- adds r0, r1\n\
- movs r2, 0x4\n\
- ldrsh r1, [r4, r2]\n\
- cmp r0, r1\n\
- beq _0813A3DC\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- ldrh r0, [r4]\n\
- ldrh r1, [r4, 0x2]\n\
- adds r0, r1\n\
- strh r0, [r4, 0x10]\n\
- ldr r0, _0813A3E4 @ =0x0000fff7\n\
- bl sub_813AD58\n\
+ ldrh r1, [r2, 0x2E]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0813A3F0\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ bne _0813A3E8\n\
+ movs r1, 0\n\
+ ldrsh r0, [r4, r1]\n\
+ movs r2, 0x2\n\
+ ldrsh r1, [r4, r2]\n\
+ adds r0, r1\n\
+ movs r2, 0x4\n\
+ ldrsh r1, [r4, r2]\n\
+ cmp r0, r1\n\
+ beq _0813A3DC\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ ldrh r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r4, 0x10]\n\
+ ldr r0, _0813A3E4 @ =0x0000fff7\n\
+ bl sub_813AD58\n\
_0813A3DC:\n\
- adds r0, r5, 0\n\
- bl sub_813ABE8\n\
- b _0813A460\n\
- .align 2, 0\n\
+ adds r0, r5, 0\n\
+ bl sub_813ABE8\n\
+ b _0813A460\n\
+ .align 2, 0\n\
_0813A3E4: .4byte 0x0000fff7\n\
_0813A3E8:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- b _0813A420\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ b _0813A420\n\
_0813A3F0:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0813A430\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- bne _0813A420\n\
- movs r1, 0x2\n\
- ldrsh r0, [r4, r1]\n\
- movs r2, 0\n\
- ldrsh r1, [r4, r2]\n\
- adds r0, r1\n\
- movs r2, 0x4\n\
- ldrsh r1, [r4, r2]\n\
- cmp r0, r1\n\
- beq _0813A44A\n\
- adds r0, r5, 0\n\
- bl sub_813A4B4\n\
- b _0813A460\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0813A430\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ bne _0813A420\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r4, r1]\n\
+ movs r2, 0\n\
+ ldrsh r1, [r4, r2]\n\
+ adds r0, r1\n\
+ movs r2, 0x4\n\
+ ldrsh r1, [r4, r2]\n\
+ cmp r0, r1\n\
+ beq _0813A44A\n\
+ adds r0, r5, 0\n\
+ bl sub_813A4B4\n\
+ b _0813A460\n\
_0813A420:\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl sub_813AA30\n\
- adds r0, r5, 0\n\
- bl sub_813AE0C\n\
- b _0813A460\n\
+ adds r0, r5, 0\n\
+ movs r1, 0\n\
+ bl sub_813AA30\n\
+ adds r0, r5, 0\n\
+ bl sub_813AE0C\n\
+ b _0813A460\n\
_0813A430:\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0813A460\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r1, 0x12\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- bne _0813A452\n\
- bl sub_8072DEC\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0813A460\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r1, 0x12\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ bne _0813A452\n\
+ bl sub_8072DEC\n\
_0813A44A:\n\
- adds r0, r5, 0\n\
- bl sub_813A468\n\
- b _0813A460\n\
+ adds r0, r5, 0\n\
+ bl sub_813A468\n\
+ b _0813A460\n\
_0813A452:\n\
- adds r0, r6, 0\n\
- movs r1, 0x1\n\
- bl sub_813AA30\n\
- adds r0, r6, 0\n\
- bl sub_813AE0C\n\
+ adds r0, r6, 0\n\
+ movs r1, 0x1\n\
+ bl sub_813AA30\n\
+ adds r0, r6, 0\n\
+ bl sub_813AE0C\n\
_0813A460:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided");
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
}
#endif
void sub_813A468(u8 taskId)
{
- BuyMenuFreeMemory();
- DestroyVerticalScrollIndicator(0);
- DestroyVerticalScrollIndicator(1);
- MenuZeroFillWindowRect(0, 0, 29, 19);
- MenuDisplayMessageBox();
- InitItemStorageMenu(gTasks[taskId].data[6]);
- gTasks[taskId].func = ItemStorageMenuProcessInput;
+ BuyMenuFreeMemory();
+ DestroyVerticalScrollIndicator(0);
+ DestroyVerticalScrollIndicator(1);
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ MenuDisplayMessageBox();
+ InitItemStorageMenu(gTasks[taskId].data[6]);
+ gTasks[taskId].func = ItemStorageMenuProcessInput;
}
#ifdef NONMATCHING
void sub_813A4B4(u8 taskId)
{
- u16 *data = gTasks[taskId].data;
- u16 var = data[2] + data[0];
-
- sub_80F996C(0);
- sub_80F996C(1);
-
- if(data[6])
- {
- if(gSaveBlock1.pcItems[var].itemId == 1)
- {
- data[3] = 1;
- sub_813A794(taskId);
- return;
- }
- sub_813AD58(0xFFF7);
- data[3] = 1;
- MenuDrawTextWindow(6, 8, 13, 11);
- sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3);
- gTasks[taskId].func = sub_813A584;
- return;
- }
- if(gSaveBlock1.pcItems[var].itemId != 1)
- {
- sub_813AD58(0xFFF7);
- data[3] = 1;
- MenuDrawTextWindow(6, 8, 13, 11);
- sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3);
- gTasks[taskId].func = sub_813A584;
- return;
- }
- data[3] = 1;
- sub_813A6FC(taskId);
+ u16 *data = gTasks[taskId].data;
+ u16 var = data[2] + data[0];
+
+ sub_80F996C(0);
+ sub_80F996C(1);
+
+ if (data[6])
+ {
+ if (gSaveBlock1.pcItems[var].itemId == 1)
+ {
+ data[3] = 1;
+ sub_813A794(taskId);
+ return;
+ }
+ sub_813AD58(0xFFF7);
+ data[3] = 1;
+ MenuDrawTextWindow(6, 8, 13, 11);
+ sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3);
+ gTasks[taskId].func = sub_813A584;
+ return;
+ }
+ if (gSaveBlock1.pcItems[var].itemId != 1)
+ {
+ sub_813AD58(0xFFF7);
+ data[3] = 1;
+ MenuDrawTextWindow(6, 8, 13, 11);
+ sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3);
+ gTasks[taskId].func = sub_813A584;
+ return;
+ }
+ data[3] = 1;
+ sub_813A6FC(taskId);
}
#else
__attribute__((naked))
void sub_813A4B4(u8 taskId)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r0, 3\n\
- ldr r1, _0813A500 @ =gTasks + 0x8\n\
- adds r4, r0, r1\n\
- ldrb r0, [r4, 0x2]\n\
- ldrb r1, [r4]\n\
- adds r0, r1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r0, 0\n\
- bl sub_80F996C\n\
- movs r0, 0x1\n\
- bl sub_80F996C\n\
- movs r1, 0xC\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- bne _0813A518\n\
- ldr r1, _0813A504 @ =gSaveBlock1\n\
- lsls r0, r5, 2\n\
- adds r0, r1\n\
- ldr r1, _0813A508 @ =0x0000049a\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x1\n\
- bne _0813A50C\n\
- strh r0, [r4, 0x6]\n\
- adds r0, r6, 0\n\
- bl sub_813A6FC\n\
- b _0813A570\n\
- .align 2, 0\n\
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r0, 3\n\
+ ldr r1, _0813A500 @ =gTasks + 0x8\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4]\n\
+ adds r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r0, 0\n\
+ bl sub_80F996C\n\
+ movs r0, 0x1\n\
+ bl sub_80F996C\n\
+ movs r1, 0xC\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ bne _0813A518\n\
+ ldr r1, _0813A504 @ =gSaveBlock1\n\
+ lsls r0, r5, 2\n\
+ adds r0, r1\n\
+ ldr r1, _0813A508 @ =0x0000049a\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _0813A50C\n\
+ strh r0, [r4, 0x6]\n\
+ adds r0, r6, 0\n\
+ bl sub_813A6FC\n\
+ b _0813A570\n\
+ .align 2, 0\n\
_0813A500: .4byte gTasks + 0x8\n\
_0813A504: .4byte gSaveBlock1\n\
_0813A508: .4byte 0x0000049a\n\
_0813A50C:\n\
- ldr r0, _0813A514 @ =0x0000fffe\n\
- bl sub_813AD58\n\
- b _0813A542\n\
- .align 2, 0\n\
+ ldr r0, _0813A514 @ =0x0000fffe\n\
+ bl sub_813AD58\n\
+ b _0813A542\n\
+ .align 2, 0\n\
_0813A514: .4byte 0x0000fffe\n\
_0813A518:\n\
- ldr r1, _0813A534 @ =gSaveBlock1\n\
- lsls r0, r5, 2\n\
- adds r0, r1\n\
- ldr r1, _0813A538 @ =0x0000049a\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x1\n\
- bne _0813A53C\n\
- strh r0, [r4, 0x6]\n\
- adds r0, r6, 0\n\
- bl sub_813A794\n\
- b _0813A570\n\
- .align 2, 0\n\
+ ldr r1, _0813A534 @ =gSaveBlock1\n\
+ lsls r0, r5, 2\n\
+ adds r0, r1\n\
+ ldr r1, _0813A538 @ =0x0000049a\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _0813A53C\n\
+ strh r0, [r4, 0x6]\n\
+ adds r0, r6, 0\n\
+ bl sub_813A794\n\
+ b _0813A570\n\
+ .align 2, 0\n\
_0813A534: .4byte gSaveBlock1\n\
_0813A538: .4byte 0x0000049a\n\
_0813A53C:\n\
- ldr r0, _0813A578 @ =0x0000fffc\n\
- bl sub_813AD58\n\
+ ldr r0, _0813A578 @ =0x0000fffc\n\
+ bl sub_813AD58\n\
_0813A542:\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x6]\n\
- movs r0, 0x6\n\
- movs r1, 0x8\n\
- movs r2, 0xD\n\
- movs r3, 0xB\n\
- bl MenuDrawTextWindow\n\
- ldrh r0, [r4, 0x6]\n\
- movs r1, 0x3\n\
- str r1, [sp]\n\
- movs r1, 0x1\n\
- movs r2, 0x8\n\
- movs r3, 0x9\n\
- bl sub_80A418C\n\
- ldr r1, _0813A57C @ =gTasks\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _0813A580 @ =sub_813A584\n\
- str r1, [r0]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x6]\n\
+ movs r0, 0x6\n\
+ movs r1, 0x8\n\
+ movs r2, 0xD\n\
+ movs r3, 0xB\n\
+ bl MenuDrawTextWindow\n\
+ ldrh r0, [r4, 0x6]\n\
+ movs r1, 0x3\n\
+ str r1, [sp]\n\
+ movs r1, 0x1\n\
+ movs r2, 0x8\n\
+ movs r3, 0x9\n\
+ bl sub_80A418C\n\
+ ldr r1, _0813A57C @ =gTasks\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _0813A580 @ =sub_813A584\n\
+ str r1, [r0]\n\
_0813A570:\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0813A578: .4byte 0x0000fffc\n\
_0813A57C: .4byte gTasks\n\
_0813A580: .4byte sub_813A584\n\
- .syntax divided");
+ .syntax divided");
}
#endif
diff --git a/src/pokedex.c b/src/pokedex.c
index 48e3a57aa..bd6125f7c 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -1,18 +1,18 @@
#include "global.h"
#include "pokedex.h"
#include "asm.h"
+#include "decompress.h"
+#include "event_data.h"
#include "gba/m4a_internal.h"
-#include "string_util.h"
#include "m4a.h"
-#include "decompress.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "rng.h"
#include "songs.h"
#include "sound.h"
+#include "string_util.h"
#include "task.h"
-#include "event_data.h"
// I'm #define-ing these just for now so I can keep using the old unkXXX member names
#define unk60E selectedPokemon
@@ -134,7 +134,7 @@ void DestroyCryMeterNeedleSprite();
void sub_808C02C(void)
{
u16 i;
-
+
gUnknown_0202FFB8 = 0;
gUnknown_0202FFBA = 0x40;
gUnknown_03005CE8 = 0;
@@ -146,7 +146,7 @@ void sub_808C02C(void)
gSaveBlock2.pokedex.spindaPersonality = 0;
gSaveBlock2.pokedex.unknown3 = 0;
DisableNationalPokedex();
- for(i = 0; i <= 51; i++)
+ for (i = 0; i <= 51; i++)
{
gSaveBlock2.pokedex.owned[i] = 0;
gSaveBlock2.pokedex.seen[i] = 0;
@@ -171,8 +171,8 @@ void sub_808C0B8(void)
void ClearPokedexView(struct PokedexView *pokedexView)
{
u16 i;
-
- for(i = 0; i <= 385; i++)
+
+ for (i = 0; i <= 385; i++)
{
pokedexView->unk0[i].dexNum |= 0xFFFF;
pokedexView->unk0[i].seen = 0;
@@ -190,7 +190,7 @@ void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk618 = 0;
pokedexView->unk61A = 0;
pokedexView->unk61C = 0;
- for(i = 0; i <= 3; i++)
+ for (i = 0; i <= 3; i++)
pokedexView->unk61E[i] |= 0xFFFF;
pokedexView->unk628 = 0;
pokedexView->unk62A = 0;
@@ -203,7 +203,7 @@ void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk634 = 0;
pokedexView->unk636 = 0;
pokedexView->unk638 = 0;
- for(i = 0; i <= 3; i++)
+ for (i = 0; i <= 3; i++)
pokedexView->unk63A[i] = 0;
pokedexView->unk64A = 0;
pokedexView->unk64B = 0;
@@ -213,32 +213,32 @@ void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->menuIsOpen = 0;
pokedexView->menuCursorPos = 0;
pokedexView->menuY = 0;
- for(i = 0; i <= 7; i++)
+ for (i = 0; i <= 7; i++)
pokedexView->unk656[i] = 0;
- for(i = 0; i <= 7; i++)
+ for (i = 0; i <= 7; i++)
pokedexView->unk65E[i] = 0;
}
void CB2_InitPokedex(void)
{
- switch(gMain.state)
+ switch (gMain.state)
{
case 0:
default:
{
u8 *addr;
u32 size;
-
+
SetVBlankCallback(NULL);
sub_8091060(0);
addr = (u8 *)VRAM;
size = VRAM_SIZE;
- while(1)
+ while (1)
{
DmaFill16(3, 0, addr, 0x1000);
addr += 0x1000;
size -= 0x1000;
- if(size <= 0x1000)
+ if (size <= 0x1000)
{
DmaFill16(3, 0, addr, size);
break;
@@ -261,7 +261,7 @@ void CB2_InitPokedex(void)
gMain.state++;
break;
case 2:
- switch(Random() & 3)
+ switch (Random() & 3)
{
case 0:
default:
@@ -280,14 +280,14 @@ void CB2_InitPokedex(void)
ClearPokedexView(gPokedexView);
CreateTask(Task_PokedexShowMainScreen, 0);
gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1;
- if(!IsNationalPokedexEnabled())
+ 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())
+ if (!IsNationalPokedexEnabled())
{
gPokedexView->unk61A = GetHoennPokedexCount(0);
gPokedexView->unk61C = GetHoennPokedexCount(1);
@@ -303,7 +303,7 @@ void CB2_InitPokedex(void)
case 3:
{
u16 savedIme;
-
+
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= 1;
@@ -321,7 +321,7 @@ u8 unref_sub_808C540(void (*func)(u8))
{
u16 savedIme;
u8 taskId;
-
+
SetVBlankCallback(NULL);
sub_8091060(0x200);
remove_some_task();
@@ -334,7 +334,7 @@ u8 unref_sub_808C540(void (*func)(u8))
REG_DISPSTAT |= 0x8;
SetVBlankCallback(sub_808C0B8);
SetMainCallback2(MainCB);
- if(!gPokedexView->unk64B)
+ if (!gPokedexView->unk64B)
taskId = CreateTask(sub_808CAE4, 0);
else
taskId = CreateTask(sub_808D198, 0);
@@ -353,7 +353,7 @@ void MainCB(void)
void Task_PokedexShowMainScreen(u8 taskId)
{
gPokedexView->unk64C_1 = 0;
- if(sub_808D344(0))
+ if (sub_808D344(0))
{
gTasks[taskId].func = Task_PokedexMainScreen;
}
@@ -363,13 +363,13 @@ void Task_PokedexShowMainScreen(u8 taskId)
void Task_PokedexMainScreen(u8 taskId)
{
REG_BG0VOFS = gPokedexView->menuY;
-
+
//If menu is open, slide it down, off screen
- if(gPokedexView->menuY)
+ if (gPokedexView->menuY)
gPokedexView->menuY -= 8;
else
{
- if((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
{
sub_808E6BC();
BeginNormalPaletteFade(
@@ -379,7 +379,7 @@ void Task_PokedexMainScreen(u8 taskId)
gTasks[taskId].func = sub_808CA64;
PlaySE(SE_PIN);
}
- else if(gMain.newKeys & START_BUTTON)
+ else if (gMain.newKeys & START_BUTTON)
{
//Open menu
gPokedexView->menuY = 0;
@@ -388,7 +388,7 @@ void Task_PokedexMainScreen(u8 taskId)
gTasks[taskId].func = Task_PokedexMainScreenMenu;
PlaySE(SE_SELECT);
}
- else if(gMain.newKeys & SELECT_BUTTON)
+ else if (gMain.newKeys & SELECT_BUTTON)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
@@ -401,7 +401,7 @@ void Task_PokedexMainScreen(u8 taskId)
gTasks[taskId].func = sub_808CB8C;
PlaySE(SE_PC_LOGON);
}
- else if(gMain.newKeys & B_BUTTON)
+ else if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].func = Task_ClosePokedex;
@@ -411,7 +411,7 @@ void Task_PokedexMainScreen(u8 taskId)
{
//Handle D-pad
gPokedexView->selectedPokemon = sub_808E48C(gPokedexView->selectedPokemon, 0xE);
- if(gPokedexView->unk62E)
+ if (gPokedexView->unk62E)
gTasks[taskId].func = sub_808C898;
}
}
@@ -419,7 +419,7 @@ void Task_PokedexMainScreen(u8 taskId)
void sub_808C898(u8 taskId)
{
- if(sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
+ if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
{
gTasks[taskId].func = Task_PokedexMainScreen;
}
@@ -429,15 +429,15 @@ void sub_808C898(u8 taskId)
void Task_PokedexMainScreenMenu(u8 taskId)
{
REG_BG0VOFS = gPokedexView->menuY;
-
+
//If menu is not open, slide it up, on screen
- if(gPokedexView->menuY != 80)
+ if (gPokedexView->menuY != 80)
gPokedexView->menuY += 8;
else
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
- switch(gPokedexView->menuCursorPos)
+ switch (gPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
@@ -464,20 +464,20 @@ void Task_PokedexMainScreenMenu(u8 taskId)
break;
}
}
-
+
//Exit menu when Start or B is pressed
- if(gMain.newKeys & (START_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
gPokedexView->menuIsOpen = 0;
gTasks[taskId].func = Task_PokedexMainScreen;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos != 0)
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos != 0)
{
gPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 2)
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 2)
{
gPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
@@ -487,7 +487,7 @@ void Task_PokedexMainScreenMenu(u8 taskId)
void sub_808CA64(u8 taskId)
{
- if(gSprites[gPokedexView->unk626].pos1.x == 0x30 &&
+ if (gSprites[gPokedexView->unk626].pos1.x == 0x30 &&
gSprites[gPokedexView->unk626].pos1.y == 0x38)
{
gPokedexView->unk64B = gPokedexView->unk64A;
@@ -498,9 +498,9 @@ void sub_808CA64(u8 taskId)
void sub_808CAE4(u8 taskId)
{
- if(gTasks[gTasks[taskId].data[0]].isActive)
+ if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if(gPokedexView->unk64A == 1 &&
+ if (gPokedexView->unk64A == 1 &&
!sub_808F250(gTasks[taskId].data[0]) &&
sub_808E71C())
{
@@ -518,10 +518,10 @@ void sub_808CAE4(u8 taskId)
void sub_808CB8C(u8 taskId)
{
bool8 isActive = gTasks[gTasks[taskId].data[0]].isActive;
-
- if(!isActive)
+
+ if (!isActive)
{
- if(gPokedexView->unk64F)
+ if (gPokedexView->unk64F)
{
gPokedexView->selectedPokemon = isActive;
gPokedexView->unk62C = 0x40;
@@ -532,7 +532,7 @@ void sub_808CB8C(u8 taskId)
gPokedexView->unk62C = gPokedexView->unk62A;
gPokedexView->selectedPokemon = gPokedexView->unk610;
gPokedexView->dexMode = gPokedexView->unk614;
- if(!IsNationalPokedexEnabled())
+ if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
gPokedexView->dexOrder = gPokedexView->unk618;
gTasks[taskId].func = Task_PokedexShowMainScreen;
@@ -542,10 +542,10 @@ void sub_808CB8C(u8 taskId)
void Task_ClosePokedex(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gSaveBlock2.pokedex.unknown1 = gPokedexView->dexMode;
- if(!IsNationalPokedexEnabled())
+ if (!IsNationalPokedexEnabled())
gSaveBlock2.pokedex.unknown1 = 0;
gSaveBlock2.pokedex.order = gPokedexView->dexOrder;
DestroyTask(taskId);
@@ -557,22 +557,22 @@ void Task_ClosePokedex(u8 taskId)
void sub_808CCC4(u8 taskId)
{
gPokedexView->unk64C_1 = 1;
- if(sub_808D344(3))
+ if (sub_808D344(3))
gTasks[taskId].func = Task_PokedexResultsScreen;
}
void Task_PokedexResultsScreen(u8 taskId)
{
REG_BG0VOFS = gPokedexView->menuY;
-
- if(gPokedexView->menuY)
+
+ if (gPokedexView->menuY)
gPokedexView->menuY -= 8;
else
{
- if((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
{
u32 a;
-
+
sub_808E6BC();
a = (1 << (gSprites[gPokedexView->unk626].oam.paletteNum + 16));
gSprites[gPokedexView->unk626].callback = sub_808EDB8;
@@ -580,7 +580,7 @@ void Task_PokedexResultsScreen(u8 taskId)
gTasks[taskId].func = sub_808D118;
PlaySE(SE_PIN);
}
- else if(gMain.newKeys & START_BUTTON)
+ else if (gMain.newKeys & START_BUTTON)
{
gPokedexView->menuY = 0;
gPokedexView->menuIsOpen = 1;
@@ -588,7 +588,7 @@ void Task_PokedexResultsScreen(u8 taskId)
gTasks[taskId].func = Task_PokedexResultsScreenMenu;
PlaySE(SE_SELECT);
}
- else if(gMain.newKeys & SELECT_BUTTON)
+ else if (gMain.newKeys & SELECT_BUTTON)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].data[0] = sub_8091E3C();
@@ -596,7 +596,7 @@ void Task_PokedexResultsScreen(u8 taskId)
gTasks[taskId].func = sub_808CB8C;
PlaySE(SE_PC_LOGON);
}
- else if(gMain.newKeys & B_BUTTON)
+ else if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen;
@@ -604,9 +604,9 @@ void Task_PokedexResultsScreen(u8 taskId)
}
else
{
- //Handle D-pad
+ //Handle D-pad
gPokedexView->selectedPokemon = sub_808E48C(gPokedexView->selectedPokemon, 0xE);
- if(gPokedexView->unk62E)
+ if (gPokedexView->unk62E)
gTasks[taskId].func = sub_808CEF8;
}
}
@@ -614,21 +614,21 @@ void Task_PokedexResultsScreen(u8 taskId)
void sub_808CEF8(u8 taskId)
{
- if(sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
+ if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
gTasks[taskId].func = Task_PokedexResultsScreen;
}
void Task_PokedexResultsScreenMenu(u8 taskId)
{
REG_BG0VOFS = gPokedexView->menuY;
-
- if(gPokedexView->menuY != 0x60)
+
+ if (gPokedexView->menuY != 0x60)
gPokedexView->menuY += 8;
else
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
- switch(gPokedexView->menuCursorPos)
+ switch (gPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
@@ -660,20 +660,20 @@ void Task_PokedexResultsScreenMenu(u8 taskId)
break;
}
}
-
+
//Exit menu when Start or B is pressed
- if(gMain.newKeys & (START_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
gPokedexView->menuIsOpen = 0;
gTasks[taskId].func = Task_PokedexResultsScreen;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos)
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos)
{
gPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 3)
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 3)
{
gPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
@@ -683,7 +683,7 @@ void Task_PokedexResultsScreenMenu(u8 taskId)
void sub_808D118(u8 taskId)
{
- if(gSprites[gPokedexView->unk626].pos1.x == 0x30 &&
+ if (gSprites[gPokedexView->unk626].pos1.x == 0x30 &&
gSprites[gPokedexView->unk626].pos1.y == 0x38)
{
gPokedexView->unk64B = gPokedexView->unk64A;
@@ -694,9 +694,9 @@ void sub_808D118(u8 taskId)
void sub_808D198(u8 taskId)
{
- if(gTasks[gTasks[taskId].data[0]].isActive)
+ if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if(gPokedexView->unk64A == 1 &&
+ if (gPokedexView->unk64A == 1 &&
!sub_808F250(gTasks[taskId].data[0]) &&
sub_808E71C())
{
@@ -711,12 +711,12 @@ void sub_808D198(u8 taskId)
void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gPokedexView->unk62C = gPokedexView->unk62A;
gPokedexView->selectedPokemon = gPokedexView->unk610;
gPokedexView->dexMode = gPokedexView->unk614;
- if(!IsNationalPokedexEnabled())
+ if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
gPokedexView->dexOrder = gPokedexView->unk618;
gTasks[taskId].func = Task_PokedexShowMainScreen;
@@ -725,12 +725,12 @@ void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId)
void Task_PokedexResultsScreenExitPokedex(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gPokedexView->unk62C = gPokedexView->unk62A;
gPokedexView->selectedPokemon = gPokedexView->unk610;
gPokedexView->dexMode = gPokedexView->unk614;
- if(!IsNationalPokedexEnabled())
+ if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
gPokedexView->dexOrder = gPokedexView->unk618;
gTasks[taskId].func = Task_ClosePokedex;
@@ -740,11 +740,11 @@ void Task_PokedexResultsScreenExitPokedex(u8 taskId)
bool8 sub_808D344(u8 a)
{
- switch(gMain.state)
+ switch (gMain.state)
{
case 0:
default:
- if(gPaletteFade.active)
+ if (gPaletteFade.active)
return 0;
//_0808D39E
SetVBlankCallback(NULL);
@@ -755,12 +755,12 @@ bool8 sub_808D344(u8 a)
LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800));
LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800));
DmaClear16(3, VRAM + 0x6000, 0x500);
- if(a == 0)
+ if (a == 0)
LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500));
else
LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500));
ResetPaletteFade();
- if(a == 0)
+ if (a == 0)
gPokedexView->unk64C_1 = 0;
else
gPokedexView->unk64C_1 = 1;
@@ -783,7 +783,7 @@ bool8 sub_808D344(u8 a)
gMain.state++;
break;
case 3:
- if(a == 0)
+ if (a == 0)
SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
gPokedexView->menuIsOpen = 0;
@@ -812,7 +812,7 @@ bool8 sub_808D344(u8 a)
gMain.state++;
break;
case 6:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gMain.state = 0;
return 1;
@@ -825,9 +825,9 @@ bool8 sub_808D344(u8 a)
void sub_808D640(void)
{
- if(gPokedexView->unk64C_1)
+ if (gPokedexView->unk64C_1)
LoadPalette(gUnknown_0839F67C + 0x2, 1, 0xBE);
- else if(!IsNationalPokedexEnabled())
+ else if (!IsNationalPokedexEnabled())
LoadPalette(gPokedexMenu_Pal + 0x2, 1, 0xBE);
else
LoadPalette(gUnknown_0839F73C + 0x2, 1, 0xBE);
@@ -837,10 +837,10 @@ void SortPokedex(u8 dexMode, u8 sortMode)
{
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
s16 i;
-
+
gPokedexView->unk60C = 0;
-
- switch(dexMode)
+
+ switch (dexMode)
{
default:
case DEX_MODE_HOENN:
@@ -848,7 +848,7 @@ void SortPokedex(u8 dexMode, u8 sortMode)
vars[1] = 1;
break;
case DEX_MODE_NATIONAL:
- if(IsNationalPokedexEnabled())
+ if (IsNationalPokedexEnabled())
{
vars[0] = 386;
vars[1] = 0;
@@ -860,20 +860,20 @@ void SortPokedex(u8 dexMode, u8 sortMode)
}
break;
}
-
- switch(sortMode)
+
+ switch (sortMode)
{
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)
+ if (gPokedexView->unk0[i].seen)
gPokedexView->unk60C = i + 1;
}
}
@@ -883,18 +883,18 @@ void SortPokedex(u8 dexMode, u8 sortMode)
s16 r5;
r10 = r5 = i = 0;
- for(i = 0; i < vars[0]; i++)
+ for (i = 0; i < vars[0]; i++)
{
vars[2] = i + 1;
- if(sub_8090D90(vars[2], 0))
+ if (sub_8090D90(vars[2], 0))
r10 = 1;
- if(r10)
+ 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)
+ if (gPokedexView->unk0[r5].seen)
gPokedexView->unk60C = r5 + 1;
r5++;
}
@@ -903,11 +903,11 @@ void SortPokedex(u8 dexMode, u8 sortMode)
break;
}
case 1:
- for(i = 0; i < 411; i++)
+ for (i = 0; i < 411; i++)
{
vars[2] = gPokedexOrder_Alphabetical[i];
-
- if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0))
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0))
{
gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
@@ -917,11 +917,11 @@ void SortPokedex(u8 dexMode, u8 sortMode)
}
break;
case 2:
- for(i = 385; i >= 0; i--)
+ for (i = 385; i >= 0; i--)
{
vars[2] = gPokedexOrder_Weight[i];
-
- if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
@@ -931,11 +931,11 @@ void SortPokedex(u8 dexMode, u8 sortMode)
}
break;
case 3:
- for(i = 0; i < 386; i++)
+ for (i = 0; i < 386; i++)
{
vars[2] = gPokedexOrder_Weight[i];
-
- if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
@@ -945,11 +945,11 @@ void SortPokedex(u8 dexMode, u8 sortMode)
}
break;
case 4:
- for(i = 385; i >=0; i--)
+ for (i = 385; i >=0; i--)
{
vars[2] = gPokedexOrder_Height[i];
-
- if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
@@ -959,11 +959,11 @@ void SortPokedex(u8 dexMode, u8 sortMode)
}
break;
case 5:
- for(i = 0; i < 386; i++)
+ for (i = 0; i < 386; i++)
{
vars[2] = gPokedexOrder_Height[i];
-
- if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
@@ -971,9 +971,9 @@ void SortPokedex(u8 dexMode, u8 sortMode)
gPokedexView->unk60C++;
}
}
- break;
+ break;
}
- for(i = gPokedexView->unk60C; i < 386; i++)
+ for (i = gPokedexView->unk60C; i < 386; i++)
{
gPokedexView->unk0[i].dexNum |= 0xFFFF;
gPokedexView->unk0[i].seen = 0;
@@ -983,22 +983,22 @@ void SortPokedex(u8 dexMode, u8 sortMode)
void sub_808DBE8(u8 a, u16 b, u16 c)
{
- switch(a)
+ switch (a)
{
case 0:
default:
{
u16 i;
s16 _b = b - 5;
-
- for(i = 0; i <= 10; i++)
+
+ for (i = 0; i <= 10; i++)
{
- if((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ 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)
+ if (gPokedexView->unk0[_b].seen)
{
sub_808DEB0(_b, 0x12, i * 2, c);
sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c);
@@ -1018,13 +1018,13 @@ void sub_808DBE8(u8 a, u16 b, u16 c)
case 1:
{
s16 _b = b - 5;
-
- if((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+
+ if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
sub_808E090(0x11, gPokedexView->unk630 * 2, c);
else
{
sub_808E090(0x11, gPokedexView->unk630 * 2, c);
- if(gPokedexView->unk0[_b].seen)
+ if (gPokedexView->unk0[_b].seen)
{
sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c);
@@ -1043,15 +1043,15 @@ void sub_808DBE8(u8 a, u16 b, u16 c)
{
s16 _b = b + 5;
u16 r2 = gPokedexView->unk630 + 10;
-
- if(r2 > 15)
+
+ if (r2 > 15)
r2 -= 16;
- if((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ 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)
+ if (gPokedexView->unk0[_b].seen)
{
sub_808DEB0(_b, 0x12, r2 * 2, c);
sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c);
@@ -1074,8 +1074,8 @@ void sub_808DEB0(u16 a, u8 b, u8 c, u16 d)
u8 text[4];
u16 unk[2];
u16 r7 = gPokedexView->unk0[a].dexNum;
-
- if(gPokedexView->dexMode == DEX_MODE_HOENN)
+
+ if (gPokedexView->dexMode == DEX_MODE_HOENN)
r7 = NationalToHoennOrder(r7);
unk[0] = 0x3FC;
unk[1] = 0x3FD;
@@ -1091,8 +1091,8 @@ void sub_808DEB0(u16 a, u8 b, u8 c, u16 d)
void sub_808DF88(u16 a, u8 b, u8 c, u16 d)
{
u16 unk[2];
-
- if(a)
+
+ if (a)
{
unk[0] = 0x3FE;
unk[1] = 0x3FF;
@@ -1113,19 +1113,19 @@ u8 sub_808DFE4(u16 a, u8 b, u8 c)
u8 text[10];
u8 i;
u32 species;
-
- for(i = 0; i < 10; i++)
+
+ for (i = 0; i < 10; i++)
text[i] = 0;
text[i] = EOS;
species = NationalPokedexNumToSpecies(a);
- if(species)
+ if (species)
{
- for(i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++)
+ for (i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++)
text[i] = gSpeciesNames[species][i];
}
else
{
- for(i = 0; i < 10; i++)
+ for (i = 0; i < 10; i++)
text[i] = 0xAE;
}
MenuPrint_PixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0);
@@ -1230,8 +1230,8 @@ _0808E070:\n\
void sub_808E090(u8 a, u8 b, u16 c)
{
u8 i;
-
- for(i = 0; i < 12; i++)
+
+ for (i = 0; i < 12; i++)
{
*(u16 *)(VRAM + c * 0x800 + b * 64 + (a + i) * 2) = 0;
*(u16 *)(VRAM + 0x40 + c * 0x800 + b * 64 + (a + i) * 2) = 0;
@@ -1243,28 +1243,28 @@ void sub_808E0CC(u16 a, u16 b)
u8 i;
u16 unk;
u8 spriteId;
-
- for(i = 0; i < 4; i++)
+
+ for (i = 0; i < 4; i++)
gPokedexView->unk61E[i] |= 0xFFFF;
gPokedexView->unk626 = 0xFFFF;
sub_808DBE8(0, a, b);
REG_BG2VOFS = gPokedexView->unk62D;
unk = sub_808E888(a - 1);
- if(unk != 0xFFFF)
+ if (unk != 0xFFFF)
{
spriteId = sub_808E8C8(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = -32;
}
unk = sub_808E888(a);
- if(unk != 0xFFFF)
+ if (unk != 0xFFFF)
{
spriteId = sub_808E8C8(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = 0;
}
unk = sub_808E888(a + 1);
- if(unk != 0xFFFF)
+ if (unk != 0xFFFF)
{
spriteId = sub_808E8C8(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_808EE28;
@@ -1278,16 +1278,16 @@ bool8 sub_808E208(u8 a, u8 b, u8 c)
{
u16 i;
u8 foo;
-
- if(gPokedexView->unk62E)
+
+ if (gPokedexView->unk62E)
{
gPokedexView->unk62E--;
- switch(a)
+ switch (a)
{
case 1:
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
{
- if(gPokedexView->unk61E[i] != 0xFFFF)
+ if (gPokedexView->unk61E[i] != 0xFFFF)
gSprites[gPokedexView->unk61E[i]].data5 += b;
}
foo = 16 * (c - gPokedexView->unk62E) / c;
@@ -1295,9 +1295,9 @@ bool8 sub_808E208(u8 a, u8 b, u8 c)
gPokedexView->unk62C -= gPokedexView->unk628;
break;
case 2:
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
{
- if(gPokedexView->unk61E[i] != 0xFFFF)
+ if (gPokedexView->unk61E[i] != 0xFFFF)
gSprites[gPokedexView->unk61E[i]].data5 -= b;
}
foo = 16 * (c - gPokedexView->unk62E) / c;
@@ -1319,20 +1319,20 @@ void sub_808E398(u8 a, u16 b)
{
u16 unk;
u8 spriteId;
-
+
gPokedexView->unk632 = gPokedexView->unk630;
- switch(a)
+ switch (a)
{
case 1:
{
unk = sub_808E888(b - 1);
- if(unk != 0xFFFF)
+ if (unk != 0xFFFF)
{
spriteId = sub_808E8C8(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = 0xFFC0;
}
- if(gPokedexView->unk630 > 0)
+ if (gPokedexView->unk630 > 0)
gPokedexView->unk630--;
else
gPokedexView->unk630 = 0xF;
@@ -1341,13 +1341,13 @@ void sub_808E398(u8 a, u16 b)
case 2:
{
unk = sub_808E888(b + 1);
- if(unk != 0xFFFF)
+ if (unk != 0xFFFF)
{
spriteId = sub_808E8C8(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = 0x40;
}
- if(gPokedexView->unk630 <= 0xE)
+ if (gPokedexView->unk630 <= 0xE)
gPokedexView->unk630++;
else
gPokedexView->unk630 = 0;
@@ -1362,28 +1362,28 @@ u16 sub_808E48C(u16 a, u16 b)
u8 r3;
u8 r5;
u32 r10 = 0;
- if(!(gMain.heldKeys & 0x40) || a == 0)
+ if (!(gMain.heldKeys & 0x40) || a == 0)
{
u8 i;
u16 r6;
-
+
//_0808E4B6
- if(gMain.heldKeys & 0x80)
+ if (gMain.heldKeys & 0x80)
{
- if(a < gPokedexView->unk60C - 1)
+ if (a < gPokedexView->unk60C - 1)
goto _0808E5C4;
}
//_0808E4CE
-
- if((gMain.newKeys & 0x20) && a != 0)
+
+ if ((gMain.newKeys & 0x20) && a != 0)
{
r6 = a;
//_0808E4E0
- for(i = 0; i < 7; i++)
+ for (i = 0; i < 7; i++)
{
a = sub_8091818(1, a, 0, gPokedexView->unk60C - 1);
}
-
+
gPokedexView->unk62C += (a - r6) * 16;
sub_808E82C();
sub_808E0CC(a, 0xE);
@@ -1391,27 +1391,27 @@ u16 sub_808E48C(u16 a, u16 b)
goto _0808E5A2;
}
//_0808E53C
- if(!(gMain.newKeys & 0x10) || a >= gPokedexView->unk60C - 1)
+ if (!(gMain.newKeys & 0x10) || a >= gPokedexView->unk60C - 1)
goto _0808E5A2;
-
+
r6 = a;
- for(i = 0; i < 7; i++)
+ for (i = 0; i < 7; i++)
{
a = sub_8091818(0, a, 0, gPokedexView->unk60C - 1);
}
-
+
gPokedexView->unk62C += (a - r6) * 16;
sub_808E82C();
sub_808E0CC(a, 0xE);
PlaySE(SE_Z_PAGE);
goto _0808E5A2;
-
+
_0808E5A2:
- if(r10 != 0)
+ if (r10 != 0)
goto _0808E628;
gPokedexView->unk638 = r10;
return a;
-
+
_0808E5C4:
r10 = 2;
a = sub_8091818(0, a, 0, gPokedexView->unk60C - 1);
@@ -1432,7 +1432,7 @@ u16 sub_808E48C(u16 a, u16 b)
}
//_0808E60E
goto _0808E5A2;
-
+
_0808E628:
r5 = gUnknown_083A05EC[gPokedexView->unk638 / 4];
r3 = gUnknown_083A05F1[gPokedexView->unk638 / 4];
@@ -1442,7 +1442,7 @@ u16 sub_808E48C(u16 a, u16 b)
gPokedexView->unk62F = r10;
gPokedexView->unk628 = r5;
sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636);
- if(gPokedexView->unk638 <= 0xB)
+ if (gPokedexView->unk638 <= 0xB)
gPokedexView->unk638++;
return a;
}
@@ -1719,12 +1719,12 @@ _0808E6B8: .4byte 0x0000062f\n\
void sub_808E6BC(void)
{
u16 i;
-
- for(i = 0; i < 4; i++)
+
+ for (i = 0; i < 4; i++)
{
u16 spriteId = gPokedexView->unk61E[i];
-
- if(gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
+
+ if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
gPokedexView->unk626 = spriteId;
}
}
@@ -1733,22 +1733,22 @@ u8 sub_808E71C(void)
{
u16 r2;
u16 r4 = gPokedexView->selectedPokemon;
-
- if((gMain.newKeys & DPAD_UP) && r4)
+
+ if ((gMain.newKeys & DPAD_UP) && r4)
{
r2 = r4;
- while(r2 != 0)
+ while (r2 != 0)
{
r2 = sub_8091818(1, r2, 0, gPokedexView->unk60C - 1);
-
- if(gPokedexView->unk0[r2].seen)
+
+ if (gPokedexView->unk0[r2].seen)
{
r4 = r2;
break;
}
}
-
- if(gPokedexView->selectedPokemon == r4)
+
+ if (gPokedexView->selectedPokemon == r4)
return 0;
else
{
@@ -1757,21 +1757,21 @@ u8 sub_808E71C(void)
return 1;
}
}
- else if((gMain.newKeys & DPAD_DOWN) && r4 < gPokedexView->unk60C - 1)
+ else if ((gMain.newKeys & DPAD_DOWN) && r4 < gPokedexView->unk60C - 1)
{
r2 = r4;
- while(r2 < gPokedexView->unk60C - 1)
+ while (r2 < gPokedexView->unk60C - 1)
{
r2 = sub_8091818(0, r2, 0, gPokedexView->unk60C - 1);
-
- if(gPokedexView->unk0[r2].seen)
+
+ if (gPokedexView->unk0[r2].seen)
{
r4 = r2;
break;
}
}
-
- if(gPokedexView->selectedPokemon == r4)
+
+ if (gPokedexView->selectedPokemon == r4)
return 0;
else
{
@@ -1786,10 +1786,10 @@ u8 sub_808E71C(void)
u8 sub_808E82C(void)
{
u16 i;
-
- for(i = 0; i < 4; i++)
+
+ for (i = 0; i < 4; i++)
{
- if(gPokedexView->unk61E[i] != 0xFFFF)
+ if (gPokedexView->unk61E[i] != 0xFFFF)
{
DestroySprite(&gSprites[gPokedexView->unk61E[i]]);
gPokedexView->unk61E[i] |= 0xFFFF;
@@ -1800,9 +1800,9 @@ u8 sub_808E82C(void)
u16 sub_808E888(u16 a1)
{
- if(a1 > 385 || gPokedexView->unk0[a1].dexNum == 0xFFFF)
+ if (a1 > 385 || gPokedexView->unk0[a1].dexNum == 0xFFFF)
return 0xFFFF;
- else if(gPokedexView->unk0[a1].seen)
+ else if (gPokedexView->unk0[a1].seen)
return gPokedexView->unk0[a1].dexNum;
else
return 0;
@@ -1811,13 +1811,13 @@ u16 sub_808E888(u16 a1)
u32 sub_808E8C8(u16 a, u16 b, u16 c)
{
u8 i;
-
- for(i = 0; i < 4; i++)
+
+ for (i = 0; i < 4; i++)
{
- if(gPokedexView->unk61E[i] == 0xFFFF)
+ if (gPokedexView->unk61E[i] == 0xFFFF)
{
u8 spriteId = sub_80918EC(a, (s16)b, (s16)c, i);
-
+
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.priority = 3;
gSprites[spriteId].data0 = 0;
@@ -1834,88 +1834,88 @@ void sub_808E978(u8 a)
{
u8 spriteId;
u16 r5;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A053C, 0xB8, 4, 0);
gSprites[spriteId].data1 = 0;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A053C, 0xB8, 0x9C, 0);
gSprites[spriteId].data1 = 1;
gSprites[spriteId].vFlip = 1;
-
+
CreateSprite(&gSpriteTemplate_83A0524, 0xEA, 0x14, 0);
CreateSprite(&gSpriteTemplate_83A0554, 0x10, 0x8A, 0);
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x30, 0x8A, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x10, 0x9E, 0);
StartSpriteAnim(&gSprites[spriteId], 2);
gSprites[spriteId].data2 = 0x80;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x30, 0x9E, 0);
StartSpriteAnim(&gSprites[spriteId], 1);
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 0x50, 2);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 30;
gSprites[spriteId].data0 = 0x1E;
gSprites[spriteId].data1 = 0;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 0x50, 2);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 31;
gSprites[spriteId].data0 = 0x1F;
gSprites[spriteId].data1 = 0x80;
-
- if(a == 0)
+
+ if (a == 0)
{
u32 _a;
-
+
CreateSprite(&gSpriteTemplate_83A0584, 0x20, 0x28, 1);
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A0584, 0x20, 0x48, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
_a = 0;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x30, 1);
r5 = gPokedexView->unk61A / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
- if(r5 != 0)
+ if (r5 != 0)
_a = 1;
else
gSprites[spriteId].invisible = 1;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x30, 1);
r5 = (gPokedexView->unk61A % 100) / 10;
- if(r5 != 0 || _a != 0)
+ if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = 1;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x30, 1);
r5 = (gPokedexView->unk61A % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
_a = 0;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x50, 1);
r5 = gPokedexView->unk61C / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
- if(r5 != 0)
+ if (r5 != 0)
_a = 1;
else
gSprites[spriteId].invisible = 1;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x50, 1);
r5 = (gPokedexView->unk61C % 100) / 10;
- if(r5 != 0 || _a != 0)
+ if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = 1;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x50, 1);
r5 = (gPokedexView->unk61C % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
-
+
spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 0x8C, 0x60, 1);
gSprites[spriteId].invisible = 1;
}
@@ -1932,7 +1932,7 @@ void nullsub_58(struct Sprite *sprite)
void sub_808ED94(struct Sprite *sprite)
{
- if(gPokedexView->unk64A != 0)
+ if (gPokedexView->unk64A != 0)
DestroySprite(sprite);
}
@@ -1943,15 +1943,15 @@ void sub_808EDB8(struct Sprite *sprite)
sprite->oam.affineMode = 0;
sprite->pos2.x = 0;
sprite->pos2.y = 0;
- if(sprite->pos1.x != 0x30 || sprite->pos1.y != 0x38)
+ if (sprite->pos1.x != 0x30 || sprite->pos1.y != 0x38)
{
- if(sprite->pos1.x > 0x30)
+ if (sprite->pos1.x > 0x30)
sprite->pos1.x--;
- if(sprite->pos1.x < 0x30)
+ if (sprite->pos1.x < 0x30)
sprite->pos1.x++;
- if(sprite->pos1.y > 0x38)
+ if (sprite->pos1.y > 0x38)
sprite->pos1.y--;
- if(sprite->pos1.y <0x38)
+ if (sprite->pos1.y <0x38)
sprite->pos1.y++;
}
//_0808EE1C
@@ -1962,8 +1962,8 @@ void sub_808EDB8(struct Sprite *sprite)
void sub_808EE28(struct Sprite *sprite)
{
u8 data1 = sprite->data1;
-
- if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+
+ if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
{
DestroySprite(sprite);
gPokedexView->unk61E[data1] = 0xFFFF;
@@ -1972,16 +1972,16 @@ void sub_808EE28(struct Sprite *sprite)
{
//_0808EE58
s32 var;
-
+
sprite->pos2.y = gSineTable[(u8)sprite->data5] * 76 / 256;
var = 0x10000 / gSineTable[sprite->data5 + 0x40];
- if((u32)var > 0xFFFF)
+ if ((u32)var > 0xFFFF)
var = 0xFFFF;
SetOamMatrix(sprite->data1 + 1, 0x100, 0, 0, var);
sprite->oam.matrixNum = data1 + 1;
-
+
//ToDo: clean up these inequalities
- if((u16)(sprite->data5 + 0x3F) <= 0x7E)
+ if ((u16)(sprite->data5 + 0x3F) <= 0x7E)
{
sprite->invisible = 0;
sprite->data0 = 1;
@@ -1991,7 +1991,7 @@ void sub_808EE28(struct Sprite *sprite)
sprite->invisible = 1;
}
//_0808EEF8
- if((u16)(sprite->data5 + 0x3F) > 0x7E && sprite->data0 != 0)
+ if ((u16)(sprite->data5 + 0x3F) > 0x7E && sprite->data0 != 0)
{
DestroySprite(sprite);
gPokedexView->unk61E[data1] = 0xFFFF;
@@ -2002,7 +2002,7 @@ void sub_808EE28(struct Sprite *sprite)
void sub_808EF38(struct Sprite *sprite)
{
- if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
sprite->pos2.y = gPokedexView->selectedPokemon * 120 / (gPokedexView->unk60C - 1);
@@ -2010,15 +2010,15 @@ void sub_808EF38(struct Sprite *sprite)
void sub_808EF8C(struct Sprite *sprite)
{
- if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
{
u8 r0;
-
- if(sprite->data1 != 0)
- {
- if(gPokedexView->selectedPokemon == gPokedexView->unk60C - 1)
+
+ if (sprite->data1 != 0)
+ {
+ if (gPokedexView->selectedPokemon == gPokedexView->unk60C - 1)
sprite->invisible = 1;
else
sprite->invisible = 0;
@@ -2026,7 +2026,7 @@ void sub_808EF8C(struct Sprite *sprite)
}
else
{
- if(gPokedexView->selectedPokemon == 0)
+ if (gPokedexView->selectedPokemon == 0)
sprite->invisible = 1;
else
sprite->invisible = 0;
@@ -2034,7 +2034,7 @@ void sub_808EF8C(struct Sprite *sprite)
}
sprite->pos2.y = gSineTable[r0] / 64;
sprite->data2 = sprite->data2 + 8;
- if(gPokedexView->menuIsOpen == 0 && gPokedexView->menuY == 0 && sprite->invisible == 0)
+ if (gPokedexView->menuIsOpen == 0 && gPokedexView->menuY == 0 && sprite->invisible == 0)
sprite->invisible = 0;
else
sprite->invisible = 1;
@@ -2043,26 +2043,26 @@ void sub_808EF8C(struct Sprite *sprite)
void sub_808F08C(struct Sprite *sprite)
{
- if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
}
#ifdef NONMATCHING
void sub_808F0B4(struct Sprite *sprite)
{
- if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
{
s16 r3;
-
+
u8 unk = gPokedexView->unk62C + sprite->data1;
u16 foo = gSineTable[unk];
//u8 unk2 = sprite->data0;
//u16 bar = gSineTable[unk + 0x40];
-
+
SetOamMatrix(sprite->data0, foo, gSineTable[unk + 0x40], (-(u16)foo) >> 16, gSineTable[unk + 0x40]);
-
+
r3 = gSineTable[sprite->data1 + gPokedexView->unk62C];
sprite->pos2.x = gSineTable[sprite->data1 + gPokedexView->unk62C + 0x40] * 5 / 256;
sprite->pos2.y = r3 * 40 / 256;
@@ -2168,13 +2168,13 @@ _0808F164: .4byte gSineTable\n\
void sub_808F168(struct Sprite *sprite)
{
- if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
{
u16 r1 = gPokedexView->unk64A == 0 ? 0x50 : 0x60;
-
- if(gPokedexView->menuIsOpen != 0 && gPokedexView->menuY == r1)
+
+ if (gPokedexView->menuIsOpen != 0 && gPokedexView->menuY == r1)
{
sprite->invisible = 0;
sprite->pos2.y = gPokedexView->menuCursorPos * 16;
@@ -2189,7 +2189,7 @@ void sub_808F168(struct Sprite *sprite)
u8 sub_808F210(struct PokedexListItem *item, u8 b)
{
u8 taskId;
-
+
gUnknown_0202FFBC = item;
taskId = CreateTask(Task_InitPageScreenMultistep, 0);
gTasks[taskId].data[0] = 0;
@@ -2202,7 +2202,7 @@ u8 sub_808F210(struct PokedexListItem *item, u8 b)
bool8 sub_808F250(u8 taskId)
{
- if(gTasks[taskId].data[0] == 0 && gTasks[taskId].func == Task_PageScreenProcessInput)
+ if (gTasks[taskId].data[0] == 0 && gTasks[taskId].func == Task_PageScreenProcessInput)
return 0;
else
return 1;
@@ -2220,22 +2220,22 @@ u8 sub_808F284(struct PokedexListItem *item, u8 b)
void Task_InitPageScreenMultistep(u8 taskId)
{
- switch(gMain.state)
+ switch (gMain.state)
{
case 0:
default:
- if(!gPaletteFade.active)
+ 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)
+ if (gTasks[taskId].data[1] != 0)
r2 += 0x1000;
- if(gTasks[taskId].data[2] != 0)
+ if (gTasks[taskId].data[2] != 0)
r2 |= 0x200;
sub_8091060(r2);
gMain.state = 1;
@@ -2259,7 +2259,7 @@ void Task_InitPageScreenMultistep(u8 taskId)
gMain.state++;
break;
case 4:
- if(gPokedexView->dexMode == DEX_MODE_HOENN)
+ if (gPokedexView->dexMode == DEX_MODE_HOENN)
sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3);
else
sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3);
@@ -2268,7 +2268,7 @@ void Task_InitPageScreenMultistep(u8 taskId)
MenuPrint(gDexText_UnknownPoke, 11, 5);
MenuPrint(gDexText_UnknownHeight, 16, 7);
MenuPrint(gDexText_UnknownWeight, 16, 9);
- if(gUnknown_0202FFBC->owned)
+ if (gUnknown_0202FFBC->owned)
{
sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5);
sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7);
@@ -2285,7 +2285,7 @@ void Task_InitPageScreenMultistep(u8 taskId)
gMain.state++;
break;
case 5:
- if(gTasks[taskId].data[1] == 0)
+ if (gTasks[taskId].data[1] == 0)
{
//_0808F540
gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
@@ -2296,10 +2296,10 @@ void Task_InitPageScreenMultistep(u8 taskId)
case 6:
{
u32 r3 = 0;
-
- if(gTasks[taskId].data[2] != 0)
+
+ if (gTasks[taskId].data[2] != 0)
r3 = 0x14;
- if(gTasks[taskId].data[1] != 0)
+ if (gTasks[taskId].data[1] != 0)
{
r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10));
}
@@ -2318,10 +2318,10 @@ void Task_InitPageScreenMultistep(u8 taskId)
gMain.state++;
break;
case 8:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gMain.state++;
- if(gTasks[taskId].data[3] == 0)
+ if (gTasks[taskId].data[3] == 0)
{
StopCryAndClearCrySongs();
PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA);
@@ -2331,7 +2331,7 @@ void Task_InitPageScreenMultistep(u8 taskId)
}
break;
case 9:
- if(!IsCryPlayingOrClearCrySongs())
+ if (!IsCryPlayingOrClearCrySongs())
gMain.state++;
break;
case 10:
@@ -2408,13 +2408,13 @@ void Task_PageScreenProcessInput(u8 taskId)
void sub_808F888(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
gTasks[taskId].func = Task_InitPageScreenMultistep;
}
void Task_ClosePageScreen(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
DestroyTask(taskId);
}
@@ -2453,15 +2453,15 @@ void Task_InitAreaScreenMultistep(u8 taskId)
void Task_AreaScreenProcessInput(u8 taskId)
{
- if(gPokedexView->unk64F != 0)
+ if (gPokedexView->unk64F != 0)
gTasks[taskId].func = sub_808FA00;
}
void sub_808FA00(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- switch(gPokedexView->unk64F)
+ switch (gPokedexView->unk64F)
{
case 1:
default:
@@ -2476,11 +2476,11 @@ void sub_808FA00(u8 taskId)
void Task_InitCryScreenMultistep(u8 taskId)
{
- switch(gMain.state)
+ switch (gMain.state)
{
case 0:
default:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
m4aMPlayStop(&gMPlay_BGM);
gPokedexView->unk64A = 6;
@@ -2523,29 +2523,29 @@ void Task_InitCryScreenMultistep(u8 taskId)
case 6:
{
struct CryRelatedStruct sp8;
-
+
sp8.unk0 = 0x4020;
sp8.unk2 = 0x1F;
sp8.unk3 = 8;
sp8.unk5 = 0x1E;
sp8.unk4 = 0xC;
- if(sub_8119E3C(&sp8, 0) != 0)
+ if (sub_8119E3C(&sp8, 0) != 0)
{
gMain.state++;
gUnknown_03005E98 = 0;
}
break;
- }
+ }
case 7:
{
struct CryRelatedStruct sp10;
-
+
sp10.unk0 = 0x3000;
sp10.unk2 = 0xE;
sp10.unk3 = 9;
sp10.unk4 = 0x12;
sp10.unk5 = 3;
- if(ShowPokedexCryScreen(&sp10, 1) != 0)
+ if (ShowPokedexCryScreen(&sp10, 1) != 0)
{
gMain.state++;
}
@@ -2577,12 +2577,12 @@ void Task_InitCryScreenMultistep(u8 taskId)
void Task_CryScreenProcessInput(u8 taskId)
{
sub_8119F88(0);
-
+
if (IsCryPlaying())
sub_8090040(1);
else
sub_8090040(0);
-
+
if (gMain.newKeys & A_BUTTON)
{
sub_8090040(1);
@@ -2627,10 +2627,10 @@ void Task_CryScreenProcessInput(u8 taskId)
void sub_808FFBC(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
DestroyCryMeterNeedleSprite();
- switch(gPokedexView->unk64F)
+ switch (gPokedexView->unk64F)
{
default:
case 1:
@@ -2648,8 +2648,8 @@ void sub_808FFBC(u8 taskId)
void sub_8090040(u8 a)
{
u16 unk;
-
- if(a != 0)
+
+ if (a != 0)
unk = 0x392;
else
unk = 0x2AF;
@@ -2659,12 +2659,12 @@ void sub_8090040(u8 a)
void Task_InitSizeScreenMultistep(u8 taskId)
{
u8 spriteId;
-
- switch(gMain.state)
+
+ switch (gMain.state)
{
default:
case 0:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gPokedexView->unk64A = 7;
gUnknown_03005CEC = gMain.vblankCallback;
@@ -2688,7 +2688,7 @@ void Task_InitSizeScreenMultistep(u8 taskId)
case 3:
{
u8 string[40]; //I hope this is the correct size
-
+
SetUpWindowConfig(&gWindowConfig_81E702C);
InitMenuWindow(&gWindowConfig_81E702C);
string[0] = EOS;
@@ -2736,7 +2736,7 @@ void Task_InitSizeScreenMultistep(u8 taskId)
gMain.state++;
break;
case 9:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gPokedexView->unk64F = 0;
gMain.state = 0;
@@ -2748,7 +2748,7 @@ void Task_InitSizeScreenMultistep(u8 taskId)
void Task_SizeScreenProcessInput(u8 taskId)
{
- if(gMain.newKeys & B_BUTTON)
+ if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
gPokedexView->unk64F = 1;
@@ -2756,7 +2756,7 @@ void Task_SizeScreenProcessInput(u8 taskId)
PlaySE(SE_PC_OFF);
}
//_08090430
- else if((gMain.newKeys & DPAD_LEFT)
+ else if ((gMain.newKeys & DPAD_LEFT)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
@@ -2768,9 +2768,9 @@ void Task_SizeScreenProcessInput(u8 taskId)
void sub_8090498(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- switch(gPokedexView->unk64F)
+ switch (gPokedexView->unk64F)
{
default:
case 1:
@@ -2802,16 +2802,16 @@ void sub_8090584(u8 a, u16 b)
u8 j; //r3
u32 r6;
register u8 r7;
-
- for(i = 0; i < 4; i++)
+
+ for (i = 0; i < 4; i++)
{
r7 = i * 5 + 1;
r6 = 0x4000;
-
- if(i == a)
+
+ if (i == a)
r6 = 0x2000;
-
- for(j = 0; j < 5; j++)
+
+ for (j = 0; j < 5; j++)
{
u32 r0 = b * 0x800 + (r7 + j) * 2;
u8 *ptr;
@@ -2823,11 +2823,11 @@ void sub_8090584(u8 a, u16 b)
}
}
r6 = 0x4000;
- for(j = 0; j < 5; j++)
+ for (j = 0; j < 5; j++)
{
u32 r0 = b * 0x800 + j * 2;
u8 *ptr;
-
+
ptr = VRAM + 0x32;
*(u16 *)(ptr + r0) = *(u16 *)(ptr + r0) & 0xFFF | r6;
ptr = VRAM + 0x72;
@@ -2946,32 +2946,32 @@ void sub_8090644(u8 a, u16 b)
{
u8 i;
u8 j;
-
- for(i = 0; i < 4; i++)
+
+ for (i = 0; i < 4; i++)
{
u8 r8 = i * 5 + 1;
u32 r5;
-
- if(i == a || i == 0)
+
+ if (i == a || i == 0)
r5 = 0x2000;
- else if(a != 0)
+ else if (a != 0)
r5 = 0x4000;
-
- for(j = 0; j < 5; j++)
+
+ for (j = 0; j < 5; j++)
{
u16 (*vramData)[0x400];
-
+
vramData = (u16 (*)[])VRAM;
vramData[b][r8 + j] = vramData[b][r8 + j] & 0xFFF | r5;
vramData = (u16 (*)[])(VRAM + 0x40);
vramData[b][r8 + j] = vramData[b][r8 + j] & 0xFFF | r5;
}
}
-
- for(j = 0; j < 5; j++)
+
+ for (j = 0; j < 5; j++)
{
u16 (*vramData)[0x400];
-
+
vramData = (u16 (*)[])(VRAM + 0x32);
vramData[b][j] = vramData[b][j] & 0xFFF | 0x4000;
vramData = (u16 (*)[])(VRAM + 0x72);
@@ -3093,7 +3093,7 @@ _08090708: .4byte 0x06000072\n\
u8 sub_809070C(u16 dexNum, u32 b, u32 c)
{
u8 taskId = CreateTask(sub_8090750, 0);
-
+
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = dexNum;
gTasks[taskId].data[12] = b;
@@ -3107,12 +3107,12 @@ u8 sub_809070C(u16 dexNum, u32 b, u32 c)
void sub_8090750(u8 taskId)
{
u16 dexNum = gTasks[taskId].data[1];
-
- switch(gTasks[taskId].data[0])
+
+ switch (gTasks[taskId].data[0])
{
default:
case 0:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gUnknown_03005CEC = gMain.vblankCallback;
SetVBlankCallback(NULL);
@@ -3123,10 +3123,10 @@ void sub_8090750(u8 taskId)
case 1:
{
u16 i;
-
+
LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000));
LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
- for(i = 0; i < 0x280; i++)
+ for (i = 0; i < 0x280; i++)
((u16 *)(VRAM + 0x7800))[i] += 0x2000;
sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
ResetPaletteFade();
@@ -3142,7 +3142,7 @@ void sub_8090750(u8 taskId)
break;
case 3:
sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0);
- if(!IsNationalPokedexEnabled())
+ if (!IsNationalPokedexEnabled())
sub_8091154(NationalToHoennOrder(dexNum), 13, 3);
else
sub_8091154(dexNum, 13, 3);
@@ -3160,7 +3160,7 @@ void sub_8090750(u8 taskId)
case 4:
{
u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
-
+
gSprites[spriteId].oam.priority = 0;
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
SetVBlankCallback(gUnknown_03005CEC);
@@ -3177,7 +3177,7 @@ void sub_8090750(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 6:
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayCry1(NationalPokedexNumToSpecies(dexNum), 0);
gTasks[taskId].data[2] = 0;
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index b8735fbc4..1c11449c3 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -1,14 +1,14 @@
#include "global.h"
#include "asm.h"
-#include "text.h"
-#include "string_util.h"
+#include "items.h"
+#include "main.h"
#include "pokemon.h"
+#include "rng.h"
#include "rom4.h"
#include "species.h"
-#include "main.h"
-#include "rng.h"
#include "sprite.h"
-#include "items.h"
+#include "string_util.h"
+#include "text.h"
//Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index f6bd432c7..9030fe096 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -1,13 +1,13 @@
#include "global.h"
#include "asm.h"
-#include "text.h"
-#include "string_util.h"
+#include "event_data.h"
+#include "main.h"
#include "pokemon.h"
#include "rng.h"
#include "species.h"
-#include "main.h"
#include "sprite.h"
-#include "event_data.h"
+#include "string_util.h"
+#include "text.h"
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[6];
@@ -22,8 +22,8 @@ extern u8 gUnknown_02024A60;
extern struct BattlePokemon gBattleMons[4];
extern u16 gUnknown_02024BE6;
extern u8 byte_2024C06;
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0C;
extern u8 gXXX_CritRelated;
extern u16 gBattleWeather;
@@ -39,10 +39,11 @@ 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 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[];
@@ -68,14 +69,14 @@ u8 sub_803C348(u8 a1)
case 1:
for (i = 0; i < 4; i++)
{
- if (battle_side_get_owner(i) == battle_side_get_owner(gUnknown_02024C07) && !(gUnknown_02024C0C & gBitTable[i]))
+ if (battle_side_get_owner(i) == battle_side_get_owner(gPlayerMonIndex) && !(gUnknown_02024C0C & gBitTable[i]))
retVal++;
}
break;
case 2:
for (i = 0; i < 4; i++)
{
- if (battle_side_get_owner(i) == battle_side_get_owner(gUnknown_02024C08) && !(gUnknown_02024C0C & gBitTable[i]))
+ if (battle_side_get_owner(i) == battle_side_get_owner(gEnemyMonIndex) && !(gUnknown_02024C0C & gBitTable[i]))
retVal++;
}
break;
@@ -133,72 +134,73 @@ u8 sub_803C434(u8 a1)
}
#else
__attribute__((naked))
-u8 sub_803C434(u8 a1) {
+u8 sub_803C434(u8 a1)
+{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl battle_get_per_side_status\n\
- movs r1, 0x1\n\
- movs r6, 0x1\n\
- adds r4, r6, 0\n\
- ands r4, r0\n\
- eors r4, r1\n\
- adds r5, r4, 0\n\
- ldr r0, _0803C45C\n\
- ldrh r1, [r0]\n\
- adds r0, r6, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803C460\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl battle_get_per_side_status\n\
+ movs r1, 0x1\n\
+ movs r6, 0x1\n\
+ adds r4, r6, 0\n\
+ ands r4, r0\n\
+ eors r4, r1\n\
+ adds r5, r4, 0\n\
+ ldr r0, _0803C45C\n\
+ ldrh r1, [r0]\n\
+ adds r0, r6, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803C460\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
+ .align 2, 0\n\
_0803C45C: .4byte gBattleTypeFlags\n\
_0803C460:\n\
- movs r0, 0\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bls _0803C484\n\
- bl Random\n\
- adds r1, r6, 0\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C480\n\
- movs r0, 0x2\n\
- eors r0, r4\n\
- b _0803C4AA\n\
+ movs r0, 0\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bls _0803C484\n\
+ bl Random\n\
+ adds r1, r6, 0\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0803C480\n\
+ movs r0, 0x2\n\
+ eors r0, r4\n\
+ b _0803C4AA\n\
_0803C480:\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
_0803C484:\n\
- ldr r0, _0803C49C\n\
- ldrb r1, [r0]\n\
- ldr r2, _0803C4A0\n\
- lsls r0, r4, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C4A4\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
+ ldr r0, _0803C49C\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _0803C4A0\n\
+ lsls r0, r4, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0803C4A4\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
+ .align 2, 0\n\
_0803C49C: .4byte gUnknown_02024C0C\n\
_0803C4A0: .4byte gBitTable\n\
_0803C4A4:\n\
- movs r0, 0x2\n\
- eors r5, r0\n\
- adds r0, r5, 0\n\
+ movs r0, 0x2\n\
+ eors r5, r0\n\
+ adds r0, r5, 0\n\
_0803C4AA:\n\
- bl battle_get_side_with_given_state\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
+ bl battle_get_side_with_given_state\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
#endif
@@ -247,7 +249,7 @@ void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
{
gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
gUnknown_02024E8C.paletteTag = species;
- gUnknown_02024E8C.anims = (union AnimCmd **)gSpriteAnimTable_81E7C64;
+ gUnknown_02024E8C.anims = (const union AnimCmd *const *)gSpriteAnimTable_81E7C64; //Why do I have to cast this?
}
void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2)
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index cf172b122..5f186292f 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -1,16 +1,16 @@
#include "global.h"
#include "asm.h"
-#include "text.h"
-#include "string_util.h"
+#include "event_data.h"
+#include "item.h"
+#include "items.h"
+#include "main.h"
#include "pokemon.h"
#include "rng.h"
+#include "rtc.h"
#include "species.h"
-#include "main.h"
#include "sprite.h"
-#include "event_data.h"
-#include "rtc.h"
-#include "item.h"
-#include "items.h"
+#include "string_util.h"
+#include "text.h"
#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220
#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220
@@ -58,8 +58,8 @@ extern u16 gSpeciesIdToCryId[];
extern u8 gUnknown_030041C0[];
extern u8 gUnknown_03004290[];
extern u8 gUnknown_020238CC[];
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0B;
extern u8 gUnknown_02024E6C;
@@ -203,7 +203,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
void sub_803F324(int stat)
{
- gUnknown_02024C08 = gUnknown_02024E6C;
+ gEnemyMonIndex = gUnknown_02024E6C;
StringCopy(gUnknown_030041C0, gUnknown_08400F58[gUnknown_082082F8[stat]]);
StringCopy(gUnknown_03004290, gUnknown_083FFDB3);
get_battle_strings_(gUnknown_083FFDD3);
@@ -244,7 +244,7 @@ u8 *sub_803F378(u16 itemId)
}
else
{
- gUnknown_02024C07 = gUnknown_02024E6C;
+ gPlayerMonIndex = gUnknown_02024E6C;
get_battle_strings_(gUnknown_083FEE92);
}
}
@@ -252,7 +252,7 @@ u8 *sub_803F378(u16 itemId)
if (itemEffect[3] & 0x80)
{
- gUnknown_02024C07 = gUnknown_02024E6C;
+ gPlayerMonIndex = gUnknown_02024E6C;
get_battle_strings_(gUnknown_083FEE5D);
}
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 6cf3411a9..6540858c1 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,8 +1,9 @@
#include "global.h"
#include "pokemon_size_record.h"
-#include "string_util.h"
-#include "species.h"
#include "event_data.h"
+#include "species.h"
+#include "string_util.h"
+#include "text.h"
extern u16 SpeciesToNationalPokedexNum(u16);
extern u16 GetPokedexHeightWeight(u16, u8);
@@ -60,9 +61,9 @@ static u8 TranslateBigMonSizeTableIndex(u16 a)
{
u8 i;
- for(i = 1; i < 15; i++)
+ for (i = 1; i < 15; i++)
{
- if(a < sBigMonSizeTable[i].unk4)
+ if (a < sBigMonSizeTable[i].unk4)
return i - 1;
}
return i;
@@ -87,7 +88,7 @@ static u32 GetMonSize(u16 species, u16 b)
static void FormatMonSizeRecord(u8 *string, u32 size)
{
- u8 decimalPoint[] = _".";
+ u8 decimalPoint[] = _(".");
//Convert size from centimeters to inches
size = (double)(size * 10) / (CM_PER_INCH * 10);
@@ -98,7 +99,7 @@ static void FormatMonSizeRecord(u8 *string, u32 size)
static u8 CompareMonSize(u16 species, u16 *sizeRecord)
{
- if(gScriptResult == 0xFF)
+ if (gScriptResult == 0xFF)
{
return 0;
}
@@ -107,7 +108,7 @@ static u8 CompareMonSize(u16 species, u16 *sizeRecord)
struct Pokemon *pkmn = &gPlayerParty[gScriptResult];
// UB: Too few arguments for function 'GetMonData'
- if(GetMonData(pkmn, MON_DATA_IS_EGG) == TRUE || GetMonData(pkmn, MON_DATA_SPECIES) != species)
+ if (GetMonData(pkmn, MON_DATA_IS_EGG) == TRUE || GetMonData(pkmn, MON_DATA_SPECIES) != species)
{
return 1;
}
@@ -121,7 +122,7 @@ static u8 CompareMonSize(u16 species, u16 *sizeRecord)
newSize = GetMonSize(species, sizeParams);
oldSize = GetMonSize(species, *sizeRecord);
FormatMonSizeRecord(gStringVar2, newSize);
- if(newSize <= oldSize)
+ if (newSize <= oldSize)
{
return 2;
}
@@ -141,7 +142,7 @@ static void GetMonSizeRecordInfo(u16 species, u16 *sizeRecord)
FormatMonSizeRecord(gStringVar3, size);
StringCopy(gStringVar1, gSpeciesNames[species]);
- if(*sizeRecord == 0x8100)
+ if (*sizeRecord == 0x8100)
StringCopy(gStringVar2, gOtherText_Marco);
else
StringCopy(gStringVar2, gSaveBlock2.playerName);
@@ -192,20 +193,20 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId)
u8 data = 1;
u8 arr[] = { 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E };
- if(index < 11 && ribbonId < 65)
+ if (index < 11 && ribbonId < 65)
{
gSaveBlock1.giftRibbons[index] = ribbonId;
- for(i = 0; i < 6; i++)
+ for (i = 0; i < 6; i++)
{
struct Pokemon *pkmn = &gPlayerParty[i];
- if(GetMonData(pkmn, MON_DATA_SPECIES) != 0 && GetMonData(pkmn, MON_DATA_SANITY_BIT3) == 0)
+ if (GetMonData(pkmn, MON_DATA_SPECIES) != 0 && GetMonData(pkmn, MON_DATA_SANITY_BIT3) == 0)
{
SetMonData(pkmn, arr[index], &data);
gotRibbon = TRUE;
}
}
- if(gotRibbon)
+ if (gotRibbon)
FlagSet(SYS_RIBBON_GET);
}
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index b6b24b9d7..5f96512f0 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -1,12 +1,9 @@
#include "global.h"
#include "asm.h"
+#include "link.h"
#include "menu.h"
#include "pokemon.h"
#include "string_util.h"
-#include "link.h"
-
-extern u8 gStringVar1[];
-extern u8 gStringVar4[];
extern struct Pokemon *unk_2018000;
@@ -93,7 +90,8 @@ void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 t
MenuPrint(gOtherText_EggDayCare, left, top);
}
-void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 top) {
+void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 top)
+{
u8 locationMet;
u8 gameMet;
u8 *ptr = gStringVar4;
@@ -101,16 +99,19 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14);
- if (nature != NATURE_BOLD && nature != NATURE_GENTLE) {
+ if (nature != NATURE_BOLD && nature != NATURE_GENTLE)
+ {
ptr = StringCopy(ptr, gOtherText_Terminator4);
}
ptr = StringCopy(ptr, gOtherText_Nature);
- if (PokemonSummaryScreen_CheckOT(pokemon) == TRUE) {
+ if (PokemonSummaryScreen_CheckOT(pokemon) == TRUE)
+ {
locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION);
- if (GetMonData(pokemon, MON_DATA_MET_LEVEL) == 0) {
+ if (GetMonData(pokemon, MON_DATA_MET_LEVEL) == 0)
+ {
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, 5);
*ptr = CHAR_NEWLINE;
ptr++;
@@ -118,12 +119,16 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
CopyLocationName(gStringVar1, locationMet);
ptr = sub_80A1E9C(ptr, gStringVar1, 14);
StringCopy(ptr, gOtherText_Egg2);
- } else if (locationMet >= 88) {
+ }
+ else if (locationMet >= 88)
+ {
*ptr = CHAR_NEWLINE;
ptr++;
StringCopy(ptr, gOtherText_ObtainedInTrade);
- } else {
+ }
+ else
+ {
u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL);
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet);
@@ -134,17 +139,23 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
ptr = sub_80A1E9C(ptr, gStringVar1, 14);
StringCopy(ptr, gOtherText_Met);
}
- } else {
+ }
+ else
+ {
gameMet = GetMonData(pokemon, MON_DATA_MET_GAME);
- if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD)) {
+ if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD))
+ {
*ptr = CHAR_NEWLINE;
ptr++;
StringCopy(ptr, gOtherText_ObtainedInTrade);
- } else {
+ }
+ else
+ {
locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION);
- if (locationMet == 0xFF) {
+ if (locationMet == 0xFF)
+ {
u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL);
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet);
@@ -152,12 +163,16 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
ptr++;
StringCopy(ptr, gOtherText_FatefulEncounter);
- } else if (locationMet >= 88) {
+ }
+ else if (locationMet >= 88)
+ {
*ptr = CHAR_NEWLINE;
ptr++;
StringCopy(ptr, gOtherText_ObtainedInTrade);
- } else {
+ }
+ else
+ {
u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL);
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet);
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 12b87b2b1..57a6790f1 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "record_mixing.h"
#include "asm.h"
+#include "event_data.h"
#include "link.h"
#include "menu.h"
#include "rom4.h"
@@ -9,7 +10,7 @@
#include "sound.h"
#include "string_util.h"
#include "task.h"
-#include "event_data.h"
+#include "dewford_trend.h"
extern void *recordMixingSecretBases;
extern void *recordMixingTvShows;
@@ -59,7 +60,7 @@ void sub_80B92AC(void)
{
sub_80BC300();
sub_80C045C();
-
+
memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases));
memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows));
memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40);
@@ -70,8 +71,8 @@ void sub_80B92AC(void)
sub_8041324(gSaveBlock1.filler_2F9C, gUnknown_02038738);
memcpy(unk_2018000.filler10AC, gUnknown_083D0280, 0x78);
memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4);
-
- if(GetMultiplayerId() == 0)
+
+ if (GetMultiplayerId() == 0)
unk_2018000.filler11C8[0] = sub_8126338();
}
#else
@@ -80,84 +81,84 @@ void sub_80B92AC(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- bl sub_80BC300\n\
- bl sub_80C045C\n\
- ldr r6, _080B9364 @ =0x02018000\n\
- ldr r0, _080B9368 @ =recordMixingSecretBases\n\
- ldr r1, [r0]\n\
- movs r2, 0xC8\n\
- lsls r2, 4\n\
- adds r0, r6, 0\n\
- bl memcpy\n\
- movs r1, 0xC8\n\
- lsls r1, 4\n\
- adds r0, r6, r1\n\
- ldr r1, _080B936C @ =recordMixingTvShows\n\
- ldr r1, [r1]\n\
- movs r2, 0xE1\n\
- lsls r2, 2\n\
- bl memcpy\n\
- ldr r2, _080B9370 @ =0x00001004\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9374 @ =gUnknown_083D0274\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r1, _080B9378 @ =0x00001044\n\
- adds r0, r6, r1\n\
- ldr r1, _080B937C @ =gUnknown_083D0278\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r2, _080B9380 @ =0x00001084\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
- ldr r1, [r1]\n\
- movs r2, 0x28\n\
- bl memcpy\n\
- ldr r5, _080B9388 @ =gUnknown_02038738\n\
- ldr r4, _080B938C @ =gSaveBlock1\n\
- ldr r0, _080B9390 @ =0x0000303c\n\
- adds r1, r4, r0\n\
- adds r0, r5, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r2, _080B9394 @ =0x00003074\n\
- adds r1, r4, r2\n\
- adds r0, r5, 0\n\
- adds r0, 0x38\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r0, _080B9398 @ =0x00002f9c\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- adds r1, r5, 0\n\
- bl sub_8041324\n\
- ldr r1, _080B939C @ =0x000010ac\n\
- adds r0, r6, r1\n\
- ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
- ldr r1, [r1]\n\
- movs r2, 0x78\n\
- bl memcpy\n\
- ldr r2, _080B93A4 @ =0x00001124\n\
- adds r0, r6, r2\n\
- ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
- ldr r1, [r1]\n\
- movs r2, 0xA4\n\
- bl memcpy\n\
- bl GetMultiplayerId\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080B935C\n\
- bl sub_8126338\n\
- ldr r2, _080B93AC @ =0x000011c8\n\
- adds r1, r6, r2\n\
- strh r0, [r1]\n\
+ bl sub_80BC300\n\
+ bl sub_80C045C\n\
+ ldr r6, _080B9364 @ =0x02018000\n\
+ ldr r0, _080B9368 @ =recordMixingSecretBases\n\
+ ldr r1, [r0]\n\
+ movs r2, 0xC8\n\
+ lsls r2, 4\n\
+ adds r0, r6, 0\n\
+ bl memcpy\n\
+ movs r1, 0xC8\n\
+ lsls r1, 4\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B936C @ =recordMixingTvShows\n\
+ ldr r1, [r1]\n\
+ movs r2, 0xE1\n\
+ lsls r2, 2\n\
+ bl memcpy\n\
+ ldr r2, _080B9370 @ =0x00001004\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B9374 @ =gUnknown_083D0274\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x40\n\
+ bl memcpy\n\
+ ldr r1, _080B9378 @ =0x00001044\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B937C @ =gUnknown_083D0278\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x40\n\
+ bl memcpy\n\
+ ldr r2, _080B9380 @ =0x00001084\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x28\n\
+ bl memcpy\n\
+ ldr r5, _080B9388 @ =gUnknown_02038738\n\
+ ldr r4, _080B938C @ =gSaveBlock1\n\
+ ldr r0, _080B9390 @ =0x0000303c\n\
+ adds r1, r4, r0\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r2, _080B9394 @ =0x00003074\n\
+ adds r1, r4, r2\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x38\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r0, _080B9398 @ =0x00002f9c\n\
+ adds r4, r0\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_8041324\n\
+ ldr r1, _080B939C @ =0x000010ac\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x78\n\
+ bl memcpy\n\
+ ldr r2, _080B93A4 @ =0x00001124\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
+ ldr r1, [r1]\n\
+ movs r2, 0xA4\n\
+ bl memcpy\n\
+ bl GetMultiplayerId\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080B935C\n\
+ bl sub_8126338\n\
+ ldr r2, _080B93AC @ =0x000011c8\n\
+ adds r1, r6, r2\n\
+ strh r0, [r1]\n\
_080B935C:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080B9364: .4byte 0x02018000\n\
_080B9368: .4byte recordMixingSecretBases\n\
_080B936C: .4byte recordMixingTvShows\n\
@@ -199,7 +200,7 @@ void sub_80B93B0(u32 a)
void sub_80B9450(u8 taskId)
{
gTasks[taskId].data[0]++;
- if(gTasks[taskId].data[0] == 50)
+ if (gTasks[taskId].data[0] == 50)
{
PlaySE(SE_W213);
gTasks[taskId].data[0] = 0;
@@ -211,8 +212,8 @@ void sub_80B9450(u8 taskId)
void sub_80B9484(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
-
- switch(taskData[TD_STATE])
+
+ switch (taskData[TD_STATE])
{
case 0:
sub_8007270(gSpecialVar_0x8005);
@@ -225,7 +226,7 @@ void sub_80B9484(u8 taskId)
taskData[15] = CreateTask(sub_80B9450, 0x51);
break;
case 1:
- if(!gTasks[taskData[10]].isActive)
+ if (!gTasks[taskData[10]].isActive)
{
taskData[TD_STATE] = 2;
FlagSet(SYS_MIX_RECORD);
@@ -239,7 +240,7 @@ void sub_80B9484(u8 taskId)
PlaySE(SE_W226);
break;
case 3:
- if(!gTasks[taskData[10]].isActive)
+ if (!gTasks[taskData[10]].isActive)
{
taskData[TD_STATE] = 4;
taskData[10] = sub_8083664();
@@ -250,11 +251,11 @@ void sub_80B9484(u8 taskId)
break;
case 4:
taskData[8]++;
- if(taskData[8] > 60)
+ if (taskData[8] > 60)
taskData[TD_STATE] = 5;
break;
case 5:
- if(!gTasks[taskData[10]].isActive)
+ if (!gTasks[taskData[10]].isActive)
{
sub_8055588();
MenuZeroFillScreen();
@@ -268,8 +269,8 @@ void sub_80B9484(u8 taskId)
void sub_80B95F0(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
- switch(task->data[TD_STATE])
+
+ switch (task->data[TD_STATE])
{
case 0:
sub_80B9A78();
@@ -281,7 +282,7 @@ void sub_80B95F0(u8 taskId)
break;
case 100:
task->data[12]++;
- if(task->data[12] > 20)
+ if (task->data[12] > 20)
{
task->data[12] = 0;
task->data[TD_STATE] = 101;
@@ -290,10 +291,10 @@ void sub_80B95F0(u8 taskId)
case 101:
{
u8 players = GetLinkPlayerCount_2();
-
- if(IsLinkMaster() == 1)
+
+ if (IsLinkMaster() == 1)
{
- if(players == sub_800820C())
+ if (players == sub_800820C())
{
PlaySE(0x15);
task->data[TD_STATE] = 201;
@@ -308,9 +309,9 @@ void sub_80B95F0(u8 taskId)
break;
}
case 201:
- if(sub_800820C() == GetLinkPlayerCount_2())
+ if (sub_800820C() == GetLinkPlayerCount_2())
{
- if(++task->data[12] > GetLinkPlayerCount_2() * 30)
+ if (++task->data[12] > GetLinkPlayerCount_2() * 30)
{
sub_8007F4C();
task->data[TD_STATE] = 1;
@@ -318,19 +319,19 @@ void sub_80B95F0(u8 taskId)
}
break;
case 301:
- if(sub_800820C() == GetLinkPlayerCount_2())
+ if (sub_800820C() == GetLinkPlayerCount_2())
task->data[TD_STATE] = 1;
break;
case 400:
task->data[12]++;
- if(task->data[12] > 20)
+ if (task->data[12] > 20)
{
task->data[TD_STATE] = 1;
task->data[12] = 0;
}
break;
case 1:
- if(gReceivedRemoteLinkPlayers)
+ if (gReceivedRemoteLinkPlayers)
{
ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2);
task->data[TD_STATE] = 5;
@@ -339,7 +340,7 @@ void sub_80B95F0(u8 taskId)
case 2:
{
u8 subTaskId;
-
+
task->data[6] = GetLinkPlayerCount_2();
task->data[TD_STATE] = 0;
task->data[5] = GetMultiplayerId_();
@@ -354,7 +355,7 @@ void sub_80B95F0(u8 taskId)
}
case 5:
task->data[10]++;
- if(task->data[10] > 60)
+ if (task->data[10] > 60)
{
task->data[10] = 0;
task->data[TD_STATE] = 2;
@@ -366,19 +367,19 @@ void sub_80B95F0(u8 taskId)
void sub_80B97DC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
- switch(task->data[TD_STATE])
+
+ 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];
-
+
memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
task->data[TD_STATE]++;
break;
}
case 1:
- if(GetMultiplayerId() == 0)
+ if (GetMultiplayerId() == 0)
sub_8007E9C(1);
task->data[TD_STATE]++;
break;
@@ -386,13 +387,13 @@ void sub_80B97DC(u8 taskId)
break;
case 3:
task->data[4]++;
- if((u16)task->data[4] == 24)
+ 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)
+ if (!gTasks[task->data[10]].isActive)
task->func = sub_80B9A1C;
}
}
@@ -402,31 +403,31 @@ void Task_CopyRecvBuffer(u8 taskId)
struct Task *task = &gTasks[taskId];
s32 recvStatus = GetBlockReceivedStatus();
u32 sp8 = 0;
-
- if(recvStatus == sub_8008198())
+
+ if (recvStatus == sub_8008198())
{
u8 player;
-
- for(player = 0; player < GetLinkPlayerCount(); player++)
+
+ for (player = 0; player < GetLinkPlayerCount(); player++)
{
//_080B98D4
u8 *ptr;
void *src;
u8 *dst;
-
- if((recvStatus >> player) & 1)
+
+ if ((recvStatus >> player) & 1)
{
ptr = LoadPtrFromTaskData(&task->data[5]);
dst = ptr + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords);
src = GetPlayerRecvBuffer(player);
- if((u32)(task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords))
+ if ((u32)(task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords))
memcpy(dst, src, sizeof(struct PlayerRecords) - task->data[player + 1] * BUFFER_CHUNK_SIZE);
else
memcpy(dst, src, BUFFER_CHUNK_SIZE);
//_080B993C
ResetBlockReceivedFlag(player);
task->data[player + 1]++;
- if((u16)task->data[player + 1] == 0x18)
+ if ((u16)task->data[player + 1] == 0x18)
sp8 = (u8)(sp8 + 1);
}
}
@@ -434,24 +435,24 @@ void Task_CopyRecvBuffer(u8 taskId)
gTasks[task->data[0]].data[0]++;
}
//_080B998A
- if(sp8 == GetLinkPlayerCount())
+ if (sp8 == GetLinkPlayerCount())
DestroyTask(taskId);
}
void sub_80B99B4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
- if(!gTasks[task->data[10]].isActive)
+
+ if (!gTasks[task->data[10]].isActive)
DestroyTask(taskId);
}
void sub_80B99E8(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
+
task->func = sub_80B99B4;
- if(gUnknown_03000718 == 1)
+ if (gUnknown_03000718 == 1)
sub_80B93B0(task->data[5]);
}
@@ -492,21 +493,21 @@ void sub_80B9A88(u8 *a)
u32 i;
u32 id;
u32 players = GetLinkPlayerCount();
-
- switch(players)
+
+ switch (players)
{
case 2:
- for(i = 0; i < 2; i++)
+ for (i = 0; i < 2; i++)
a[i] = gUnknown_083D0288[i];
break;
case 3:
id = GetLinkPlayerTrainerId(0) % 2;
- for(i = 0; i < 3; i++)
+ for (i = 0; i < 3; i++)
a[i] = gUnknown_083D028A[id][i];
break;
case 4:
id = GetLinkPlayerTrainerId(0) % 9;
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
a[i] = gUnknown_083D0290[id][i];
break;
default:
@@ -518,7 +519,7 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index)
{
u8 arr[4];
u8 *ptr;
-
+
sub_80B9A88(arr);
//Probably not how it was originally written, but this matches.
memcpy(a + index * size, (ptr = gUnknown_083D0278), 0x40);
@@ -551,70 +552,70 @@ void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- mov r6, r10\n\
- mov r5, r9\n\
- mov r4, r8\n\
- push {r4-r6}\n\
- sub sp, 0x38\n\
- mov r8, r0\n\
- mov r10, r1\n\
- mov r9, r2\n\
- adds r4, r3, 0\n\
- ldr r5, [sp, 0x54]\n\
- lsls r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsrs r4, 23\n\
- add r4, r9\n\
- ldrb r0, [r4]\n\
- mov r6, r10\n\
- muls r6, r0\n\
- add r6, r8\n\
- ldrb r0, [r4, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- adds r1, r6, r1\n\
- mov r0, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- lsls r5, 1\n\
- add r5, r9\n\
- ldrb r0, [r5]\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- add r8, r0\n\
- ldrb r1, [r4, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- adds r6, r0\n\
- ldrb r0, [r5, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- add r1, r8\n\
- adds r0, r6, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- add r8, r0\n\
- mov r0, r8\n\
- mov r1, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- add sp, 0x38\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ mov r6, r10\n\
+ mov r5, r9\n\
+ mov r4, r8\n\
+ push {r4-r6}\n\
+ sub sp, 0x38\n\
+ mov r8, r0\n\
+ mov r10, r1\n\
+ mov r9, r2\n\
+ adds r4, r3, 0\n\
+ ldr r5, [sp, 0x54]\n\
+ lsls r4, 24\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ lsrs r4, 23\n\
+ add r4, r9\n\
+ ldrb r0, [r4]\n\
+ mov r6, r10\n\
+ muls r6, r0\n\
+ add r6, r8\n\
+ ldrb r0, [r4, 0x1]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r6, r1\n\
+ mov r0, sp\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ lsls r5, 1\n\
+ add r5, r9\n\
+ ldrb r0, [r5]\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r8, r0\n\
+ ldrb r1, [r4, 0x1]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 3\n\
+ adds r6, r0\n\
+ ldrb r0, [r5, 0x1]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 3\n\
+ add r1, r8\n\
+ adds r0, r6, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 3\n\
+ add r8, r0\n\
+ mov r0, r8\n\
+ mov r1, sp\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ add sp, 0x38\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
@@ -623,8 +624,8 @@ u8 sub_80B9C4C(u8 *a)
{
int i;
u8 r2 = 0;
-
- for(i = 0; i < 0x100; i++)
+
+ for (i = 0; i < 0x100; i++)
r2 += a[i];
return r2;
}
@@ -647,7 +648,7 @@ struct UnkStruct1
u32 unk48;
u32 unk4C;
u32 unk50;
-
+
};
/*
@@ -657,7 +658,7 @@ extern void sub_80B9C6C(void *a, u32 b, u8 c, void *d)
struct UnkStruct1 s;
u16 r8;
u16 r3;
-
+
s.unk2C = a;
s.unk30 = b;
s.unk38 = d;
@@ -666,15 +667,15 @@ extern void sub_80B9C6C(void *a, u32 b, u8 c, void *d)
SeedRng(gLinkPlayers[0].trainerId);
r8 = GetLinkPlayerCount();
r3 = 0;
-
+
s.unk4C = 12;
-
- while(r3 < 4)
+
+ while (r3 < 4)
{
s.unk4[r3] |= 0xFF;
s.unk8[r3] = 0;
-
+
s.unk1C[r3][0] = 0;
s.unk1C[r3][1] = 0;
r3++;
@@ -683,19 +684,19 @@ extern void sub_80B9C6C(void *a, u32 b, u8 c, void *d)
r3 = 0;
s.unk50 = r8 << 16;
s.unk48 = s.unk30 * s.unk34;
-
- if(s.unk3C < r8)
+
+ if (s.unk3C < r8)
{
do //_080B9D00
{
u32 *r6 = (u32 *)(s.unk2C + s.unk30 * r3);
- if(r6[0x1C] != 0 && r6[0x1C] > 0)
+ if (r6[0x1C] != 0 && r6[0x1C] > 0)
{
-
+
}
//_080B9D3C
}
- while(r3 < r8);
+ while (r3 < r8);
}
//_080B9D46
}
diff --git a/src/rom3.c b/src/rom3.c
new file mode 100644
index 000000000..2d00b647f
--- /dev/null
+++ b/src/rom3.c
@@ -0,0 +1,1408 @@
+#include "global.h"
+#include "asm.h"
+#include "battle.h"
+#include "items.h"
+#include "link.h"
+#include "pokemon.h"
+#include "species.h"
+#include "task.h"
+
+extern u8 unk_2000000[];
+
+#define EWRAM_14000 ((u8 *)(unk_2000000 + 0x14000))
+#define EWRAM_15000 ((u8 *)(unk_2000000 + 0x15000))
+
+extern u16 gBattleTypeFlags;
+extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
+extern const u32 gBitTable[];
+extern u16 gBattleWeather;
+extern const struct BattleMove gBattleMoves[];
+extern struct BattlePokemon gBattleMons[];
+
+extern u8 gUnknown_020238C4;
+extern u8 gUnknown_020238C5;
+extern u8 gUnknown_020238C6;
+extern u32 gUnknown_020239FC;
+extern u8 gUnknown_02023A60[][0x200];
+extern u8 gUnknown_02024260[][0x200];
+extern u8 gUnknown_02024A60;
+extern u32 gUnknown_02024A64;
+extern u8 gUnknown_02024A68;
+extern u16 gUnknown_02024A6A[];
+extern u8 gUnknown_02024A72[];
+extern u16 gUnknown_02024BE6;
+extern u16 gUnknown_02024BE8;
+extern u16 gUnknown_02024C04;
+extern u8 byte_2024C06;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
+extern u8 gUnknown_02024C0A;
+extern u8 gUnknown_02024C0B;
+extern u8 gUnknown_02024C0C;
+extern u8 gUnknown_02024C0E;
+extern u8 gUnknown_02024C78;
+extern u8 gUnknown_02024D26;
+extern u8 gUnknown_02024E60[];
+extern u8 gUnknown_02024E64[];
+extern u8 gUnknown_03004040[];
+extern u8 gUnknown_030041C0[];
+extern u8 gUnknown_03004290[];
+extern u8 gUnknown_030042B0[];
+extern void (*gUnknown_030042D4)(void);
+extern void (*gUnknown_03004330[])(void);
+
+extern void sub_800BF28(void);
+extern void sub_8083C50(u8);
+extern void nullsub_41(void);
+extern void nullsub_91(void);
+extern void battle_anim_clear_some_data(void);
+extern void sub_8040710(void);
+extern void BattleAI_HandleItemUseBeforeAISetup(void);
+extern void sub_8094978(u8, int);
+extern void sub_800BA78(void);
+extern void sub_800B9A8(void);
+extern void sub_800BD54(void);
+extern void sub_8010800(void);
+extern void sub_812B468(void);
+extern void sub_8137224(void);
+extern void sub_802BF74(void);
+extern void sub_8032AE0(void);
+extern void sub_8037510(void);
+extern void sub_811DA78(void);
+extern void dp01_prepare_buffer_wireless_probably(u8 a, u16, u8 *c);
+extern void sub_800C1A8(u8);
+extern void sub_800C47C(u8);
+extern void sub_8007F4C(void);
+extern u8 sub_8007ECC(void);
+extern void sub_80155A4();
+extern u8 sub_8018324();
+
+void sub_800B858(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ OpenLink();
+ CreateTask(sub_8083C50, 0);
+ sub_800BF28();
+ }
+}
+
+void setup_poochyena_battle(void)
+{
+ s32 i;
+
+ gUnknown_030042D4 = nullsub_41;
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_03004330[i] = nullsub_91;
+ gUnknown_02024A72[i] = 0xFF;
+ gUnknown_02024E60[i] = 0;
+ gUnknown_02024E64[i] = 0;
+ }
+ sub_800B858();
+ gUnknown_02024A64 = 0;
+ battle_anim_clear_some_data();
+ sub_8040710();
+ BattleAI_HandleItemUseBeforeAISetup();
+ if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
+ {
+ ZeroEnemyPartyMons();
+ CreateMon(&gEnemyParty[0], SPECIES_POOCHYENA, 2, 32, 0, 0, 0, 0);
+ i = ITEM_NONE;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, (u8 *)&i);
+ }
+ gUnknown_020239FC = 0;
+ gUnknown_02024C78 = 0;
+}
+
+void sub_800B950(void)
+{
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ sub_800BA78();
+ else
+ sub_800B9A8();
+ sub_800BD54();
+ if (!(gBattleTypeFlags & BATTLE_TYPE_40))
+ {
+ for (i = 0; i < gUnknown_02024A68; i++)
+ sub_8094978(i, 0);
+ }
+}
+
+void sub_800B9A8(void)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gUnknown_030042D4 = sub_8010800;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ gUnknown_03004330[0] = sub_812B468;
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ gUnknown_03004330[0] = sub_8137224;
+ else
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8032AE0;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_02024A68 = 2;
+ }
+ else
+ {
+ gUnknown_030042D4 = sub_8010800;
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8032AE0;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_03004330[2] = sub_802BF74;
+ gUnknown_02024A72[2] = 2;
+ gUnknown_03004330[3] = sub_8032AE0;
+ gUnknown_02024A72[3] = 3;
+ gUnknown_02024A68 = 4;
+ }
+}
+
+void sub_800BA78(void)
+{
+ u8 multiplayerId;
+ int i;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gUnknown_030042D4 = sub_8010800;
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8037510;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_02024A68 = 2;
+ }
+ else
+ {
+ gUnknown_03004330[1] = sub_802BF74;
+ gUnknown_02024A72[1] = 0;
+ gUnknown_03004330[0] = sub_8037510;
+ gUnknown_02024A72[0] = 1;
+ gUnknown_02024A68 = 2;
+ }
+ return;
+ }
+ if ((gBattleTypeFlags & (BATTLE_TYPE_40 | BATTLE_TYPE_DOUBLE)) == BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gUnknown_030042D4 = sub_8010800;
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8037510;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_03004330[2] = sub_802BF74;
+ gUnknown_02024A72[2] = 2;
+ gUnknown_03004330[3] = sub_8037510;
+ gUnknown_02024A72[3] = 3;
+ gUnknown_02024A68 = 4;
+ }
+ else
+ {
+ gUnknown_03004330[1] = sub_802BF74;
+ gUnknown_02024A72[1] = 0;
+ gUnknown_03004330[0] = sub_8037510;
+ gUnknown_02024A72[0] = 1;
+ gUnknown_03004330[3] = sub_802BF74;
+ gUnknown_02024A72[3] = 2;
+ gUnknown_03004330[2] = sub_8037510;
+ gUnknown_02024A72[2] = 3;
+ gUnknown_02024A68 = 4;
+
+ }
+ return;
+ }
+ multiplayerId = GetMultiplayerId();
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ gUnknown_030042D4 = sub_8010800;
+ for (i = 0; i < 4; i++)
+ {
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ sub_8094978(gLinkPlayers[i].lp_field_18, 0);
+ break;
+ case 1:
+ case 2:
+ sub_8094978(gLinkPlayers[i].lp_field_18, 1);
+ break;
+ }
+
+ if (i == multiplayerId)
+ {
+ gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_802BF74;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 0;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 2;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1))
+ || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1)))
+ {
+ gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_811DA78;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 0;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 2;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_8037510;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 1;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 3;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ }
+ }
+ gUnknown_02024A68 = 4;
+}
+
+void sub_800BD54(void)
+{
+ int i;
+ int j;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_40))
+ {
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ for (j = 0; j < 6; j++)
+ {
+ if (i < 2)
+ {
+ if (!(gUnknown_02024A72[i] & 1))
+ {
+ if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != 0
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0)
+ {
+ gUnknown_02024A6A[i] = j;
+ break;
+ }
+ }
+ else
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0)
+ {
+ gUnknown_02024A6A[i] = j;
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (!(gUnknown_02024A72[i] & 1))
+ {
+ if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != 0 //Probably a typo by Game Freak. The rest use SPECIES2
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0
+ && gUnknown_02024A6A[i - 2] != j)
+ {
+ gUnknown_02024A6A[i] = j;
+ break;
+ }
+ }
+ else
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0
+ && gUnknown_02024A6A[i - 2] != j)
+ {
+ gUnknown_02024A6A[i] = j;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void dp01_prepare_buffer(u8 a, u8 *b, u16 c)
+{
+ int i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ dp01_prepare_buffer_wireless_probably(a, c, b);
+ }
+ else
+ {
+ switch (a)
+ {
+ case 0:
+ for (i = 0; i < c; i++)
+ {
+ gUnknown_02023A60[gUnknown_02024A60][i] = *b;
+ b++;
+ }
+ break;
+ case 1:
+ for (i = 0; i < c; i++)
+ {
+ gUnknown_02024260[gUnknown_02024A60][i] = *b;
+ b++;
+ }
+ break;
+ }
+ }
+}
+
+void sub_800BF28(void)
+{
+ gUnknown_020238C4 = CreateTask(sub_800C1A8, 0);
+ gTasks[gUnknown_020238C4].data[11] = 0;
+ gTasks[gUnknown_020238C4].data[12] = 0;
+ gTasks[gUnknown_020238C4].data[13] = 0;
+ gTasks[gUnknown_020238C4].data[14] = 0;
+ gTasks[gUnknown_020238C4].data[15] = 0;
+ gUnknown_020238C5 = CreateTask(sub_800C47C, 0);
+ gTasks[gUnknown_020238C5].data[12] = 0;
+ gTasks[gUnknown_020238C5].data[13] = 0;
+ gTasks[gUnknown_020238C5].data[14] = 0;
+ gTasks[gUnknown_020238C5].data[15] = 0;
+ gUnknown_020238C6 = 0;
+ CpuFill16(0, EWRAM_14000, 0x2000);
+}
+
+void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
+{
+ s32 r9;
+ int i;
+
+ r9 = b - b % 4 + 4;
+ if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000)
+ {
+ gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14];
+ gTasks[gUnknown_020238C4].data[14] = 0;
+ }
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14000] = a;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14001] = gUnknown_02024A60;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14002] = gPlayerMonIndex;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14003] = gEnemyMonIndex;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14004] = r9;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gUnknown_02024C0C;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14007] = gUnknown_02024C0A;
+ for (i = 0; i < b; i++)
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = c[i];
+ gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8;
+}
+
+void sub_800C1A8(u8 taskId)
+{
+ u16 var;
+
+ switch (gTasks[taskId].data[11])
+ {
+ case 0:
+ gTasks[taskId].data[10] = 100;
+ gTasks[taskId].data[11]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10]--;
+ if (gTasks[taskId].data[10] == 0)
+ gTasks[taskId].data[11]++;
+ break;
+ case 2:
+ GetLinkPlayerCount_2();
+ if (IsLinkMaster())
+ {
+ sub_8007F4C();
+ gTasks[taskId].data[11]++;
+ break;
+ }
+ gTasks[taskId].data[11]++;
+ break;
+ case 3:
+ if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
+ {
+ if (gTasks[taskId].data[13] == 0)
+ {
+ if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
+ && gTasks[taskId].data[15] == gTasks[taskId].data[12])
+ {
+ gTasks[taskId].data[12] = 0;
+ gTasks[taskId].data[15] = 0;
+ }
+ var = (unk_2000000[gTasks[taskId].data[15] + 0x14004] | (unk_2000000[gTasks[taskId].data[15] + 0x14005] << 8)) + 8;
+ SendBlock(bitmask_all_link_players_but_self(), &unk_2000000[gTasks[taskId].data[15] + 0x14000], var);
+ gTasks[taskId].data[11]++;
+ }
+ else
+ {
+ gTasks[taskId].data[13]--;
+ break;
+ }
+ }
+ break;
+ case 4:
+ if (sub_8007ECC())
+ {
+ var = unk_2000000[gTasks[taskId].data[15] + 0x14004] | (unk_2000000[gTasks[taskId].data[15] + 0x14005] << 8);
+ gTasks[taskId].data[13] = 1;
+ gTasks[taskId].data[15] = gTasks[taskId].data[15] + var + 8;
+ gTasks[taskId].data[11] = 3;
+ }
+ break;
+ case 5:
+ gTasks[taskId].data[13]--;
+ if (gTasks[taskId].data[13] == 0)
+ {
+ gTasks[taskId].data[13] = 1;
+ gTasks[taskId].data[11] = 3;
+ }
+ break;
+ }
+}
+
+//fix me
+void sub_800C35C(void)
+{
+ u8 i; //r4
+ s32 j; //r2
+ u16 r6; //r6
+ u8 *recvBuffer; //r3
+ u8 *dest; //r5
+ u8 *src; //r4
+
+ if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & 0x20) && gLinkPlayers[0].linkType == 0x2211)
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (GetBlockReceivedStatus() & gBitTable[i])
+ {
+ ResetBlockReceivedFlag(i);
+ recvBuffer = (u8 *)&gBlockRecvBuffer[i];
+#ifndef NONMATCHING
+ asm("");
+ recvBuffer = (u8 *)&gBlockRecvBuffer[i];
+#endif
+ r6 = gBlockRecvBuffer[i][2];
+ if (gTasks[gUnknown_020238C5].data[14] + 9 + r6 > 0x1000)
+ {
+ gTasks[gUnknown_020238C5].data[12] = gTasks[gUnknown_020238C5].data[14];
+ gTasks[gUnknown_020238C5].data[14] = 0;
+ }
+ //_0800C402
+ dest = EWRAM_15000 + gTasks[gUnknown_020238C5].data[14];
+ src = recvBuffer;
+ for (j = 0; j < r6 + 8; j++)
+ dest[j] = src[j];
+ gTasks[gUnknown_020238C5].data[14] = gTasks[gUnknown_020238C5].data[14] + r6 + 8;
+ }
+ //_0800C446
+ }
+ }
+}
+
+void sub_800C47C(u8 taskId)
+{
+ u16 r7;
+ u8 r4;
+ u8 r2;
+
+ if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
+ {
+ if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
+ && gTasks[taskId].data[15] == gTasks[taskId].data[12])
+ {
+ gTasks[taskId].data[12] = 0;
+ gTasks[taskId].data[15] = 0;
+ }
+ r4 = unk_2000000[0x15000 + gTasks[taskId].data[15] + 1];
+ r7 = unk_2000000[0x15000 + gTasks[taskId].data[15] + 4] | (unk_2000000[0x15000 + gTasks[taskId].data[15] + 5] << 8);
+ switch (unk_2000000[0x15000 + gTasks[taskId].data[15] + 0])
+ {
+ case 0:
+ if (gUnknown_02024A64 & gBitTable[r4])
+ return;
+ memcpy(gUnknown_02023A60[r4], &unk_2000000[0x15000 + gTasks[taskId].data[15] + 8], r7);
+ sub_80155A4(r4);
+ if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ {
+ gPlayerMonIndex = unk_2000000[0x15000 + gTasks[taskId].data[15] + 2];
+ gEnemyMonIndex = unk_2000000[0x15000 + gTasks[taskId].data[15] + 3];
+ gUnknown_02024C0C = unk_2000000[0x15000 + gTasks[taskId].data[15] + 6];
+ gUnknown_02024C0A = unk_2000000[0x15000 + gTasks[taskId].data[15] + 7];
+ }
+ break;
+ case 1:
+ memcpy(gUnknown_02024260[r4], &unk_2000000[0x15000 + gTasks[taskId].data[15] + 8], r7);
+ break;
+ case 2:
+ r2 = unk_2000000[0x15000 + gTasks[taskId].data[15] + 8];
+ gUnknown_02024A64 &= ~(gBitTable[r4] << (r2 * 4));
+ break;
+ }
+ gTasks[taskId].data[15] = gTasks[taskId].data[15] + r7 + 8;
+ }
+}
+
+void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c)
+{
+ gUnknown_03004040[0] = 0;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = 0;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c)
+{
+ gUnknown_03004040[0] = 1;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = 0;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e)
+{
+ int i;
+
+ gUnknown_03004040[0] = 2;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ for (i = 0; i < d; i++)
+ gUnknown_03004040[3 + i] = *(e++);
+ dp01_prepare_buffer(a, gUnknown_03004040, d + 3);
+}
+
+void unref_sub_800C6A4(u8 a, int b, u8 c, u8 *d)
+{
+ int i;
+
+ gUnknown_03004040[0] = 3;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ for (i = 0; i < c; i++)
+ gUnknown_03004040[3 + i] = *(d++);
+ dp01_prepare_buffer(a, gUnknown_03004040, c + 3);
+}
+
+void dp01_build_cmdbuf_x04_4_4_4(u8 a)
+{
+ gUnknown_03004040[0] = 4;
+ gUnknown_03004040[1] = 4;
+ gUnknown_03004040[2] = 4;
+ gUnknown_03004040[3] = 4;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void sub_800C704(u8 a, int b, int c)
+{
+ gUnknown_03004040[0] = 5;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = 5;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x06_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 6;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void dp01_build_cmdbuf_x07_7_7_7(u8 a)
+{
+ gUnknown_03004040[0] = 7;
+ gUnknown_03004040[1] = 7;
+ gUnknown_03004040[2] = 7;
+ gUnknown_03004040[3] = 7;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x08_8_8_8(u8 a)
+{
+ gUnknown_03004040[0] = 8;
+ gUnknown_03004040[1] = 8;
+ gUnknown_03004040[2] = 8;
+ gUnknown_03004040[3] = 8;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x09_9_9_9(u8 a)
+{
+ gUnknown_03004040[0] = 9;
+ gUnknown_03004040[1] = 9;
+ gUnknown_03004040[2] = 9;
+ gUnknown_03004040[3] = 9;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x0A_A_A_A(u8 a)
+{
+ gUnknown_03004040[0] = 10;
+ gUnknown_03004040[1] = 10;
+ gUnknown_03004040[2] = 10;
+ gUnknown_03004040[3] = 10;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x0B_B_B_B(u8 a)
+{
+ gUnknown_03004040[0] = 11;
+ gUnknown_03004040[1] = 11;
+ gUnknown_03004040[2] = 11;
+ gUnknown_03004040[3] = 11;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
+{
+ gUnknown_03004040[0] = 12;
+ gUnknown_03004040[1] = 12;
+ gUnknown_03004040[2] = 12;
+ gUnknown_03004040[3] = 12;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x0D_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 13;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void unref_sub_800C828(u8 a, u8 b, u8 *c)
+{
+ int i;
+
+ gUnknown_03004040[0] = 14;
+ gUnknown_03004040[1] = b;
+ for (i = 0; i < b * 3; i++)
+ gUnknown_03004040[2 + i] = *(c++);
+ dp01_prepare_buffer(a, gUnknown_03004040, b * 3 + 2);
+}
+
+void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, int e, u8 f, u8 *g)
+{
+ gUnknown_03004040[0] = 15;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ gUnknown_03004040[3] = c;
+ gUnknown_03004040[4] = d;
+ gUnknown_03004040[5] = (d & 0xFF00) >> 8;
+ gUnknown_03004040[6] = e;
+ gUnknown_03004040[7] = (e & 0x0000FF00) >> 8;
+ gUnknown_03004040[8] = (e & 0x00FF0000) >> 16;
+ gUnknown_03004040[9] = (e & 0xFF000000) >> 24;
+ gUnknown_03004040[10] = f;
+ gUnknown_03004040[11] = gUnknown_02024C0E;
+ if (sub_8018324(14, 0, 13, 0, 0) == 0 && sub_8018324(14, 0, 0x4D, 0, 0) == 0)
+ {
+ gUnknown_03004040[12] = gBattleWeather;
+ gUnknown_03004040[13] = (gBattleWeather & 0xFF00) >> 8;
+ }
+ else
+ {
+ gUnknown_03004040[12] = 0;
+ gUnknown_03004040[13] = 0;
+ }
+ gUnknown_03004040[14] = 0;
+ gUnknown_03004040[15] = 0;
+ memcpy(&gUnknown_03004040[16], g, 0x1C);
+ dp01_prepare_buffer(a, gUnknown_03004040, 0x2C);
+}
+
+#ifdef NONMATCHING
+void dp01_build_cmdbuf_x10_TODO(u8 a, u16 b)
+{
+ int i;
+ //u16 *r12;
+
+ gUnknown_03004040[0] = 16;
+ gUnknown_03004040[1] = gUnknown_02024D26;
+ gUnknown_03004040[2] = b;
+ gUnknown_03004040[3] = (b & 0xFF00) >> 8;
+
+ *((u16 *)&gUnknown_03004040[4]) = gUnknown_02024BE6;
+ *((u16 *)&gUnknown_03004040[6]) = gUnknown_02024BE8;
+ *((u16 *)&gUnknown_03004040[8]) = gUnknown_02024C04;
+
+ gUnknown_03004040[10] = byte_2024C06;
+ gUnknown_03004040[11] = unk_2000000[0x16000 + 3];
+ gUnknown_03004040[12] = unk_2000000[0x16000 + 0x5E];
+ gUnknown_03004040[13] = unk_2000000[0x16000 + 0xC1];
+ gUnknown_03004040[14] = gUnknown_02024C0B;
+ gUnknown_03004040[15] = gBattleMoves[gUnknown_02024BE6].type;
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_03004040[16 + i] = gBattleMons[i].ability;
+ }
+ for (i = 0; i < 16; i++)
+ {
+ gUnknown_03004040[20 + i] = gUnknown_030041C0[i];
+ gUnknown_03004040[36 + i] = gUnknown_03004290[i];
+ gUnknown_03004040[52 + i] = gUnknown_030042B0[i];
+ }
+ dp01_prepare_buffer(a, gUnknown_03004040, 0x44);
+}
+#else
+__attribute__((naked))
+void dp01_build_cmdbuf_x10_TODO(u8 a, u16 b)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ ldr r2, _0800CA2C @ =gUnknown_03004040\n\
+ movs r0, 0x10\n\
+ strb r0, [r2]\n\
+ ldr r0, _0800CA30 @ =gUnknown_02024D26\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2, 0x1]\n\
+ strb r1, [r2, 0x2]\n\
+ lsrs r1, 8\n\
+ strb r1, [r2, 0x3]\n\
+ adds r0, r2, 0x4\n\
+ mov r12, r0\n\
+ ldr r4, _0800CA34 @ =gUnknown_02024BE6\n\
+ ldrh r0, [r4]\n\
+ strh r0, [r2, 0x4]\n\
+ ldr r0, _0800CA38 @ =gUnknown_02024BE8\n\
+ ldrh r0, [r0]\n\
+ mov r1, r12\n\
+ strh r0, [r1, 0x2]\n\
+ ldr r0, _0800CA3C @ =gUnknown_02024C04\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, 0x4]\n\
+ ldr r0, _0800CA40 @ =byte_2024C06\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1, 0x6]\n\
+ ldr r1, _0800CA44 @ =0x02000000\n\
+ ldr r3, _0800CA48 @ =0x00016003\n\
+ adds r0, r1, r3\n\
+ ldrb r0, [r0]\n\
+ mov r7, r12\n\
+ strb r0, [r7, 0x7]\n\
+ adds r3, 0x5B\n\
+ adds r0, r1, r3\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r7, 0x8]\n\
+ ldr r7, _0800CA4C @ =0x000160c1\n\
+ adds r1, r7\n\
+ ldrb r0, [r1]\n\
+ mov r1, r12\n\
+ strb r0, [r1, 0x9]\n\
+ ldr r0, _0800CA50 @ =gUnknown_02024C0B\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1, 0xA]\n\
+ ldr r3, _0800CA54 @ =gBattleMoves\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldrb r0, [r0, 0x2]\n\
+ mov r3, r12\n\
+ strb r0, [r3, 0xB]\n\
+ movs r3, 0\n\
+ mov r9, r2\n\
+ ldr r7, _0800CA58 @ =gUnknown_030042B0\n\
+ mov r8, r7\n\
+ adds r2, 0x10\n\
+ ldr r0, _0800CA5C @ =gBattleMons\n\
+ adds r4, r0, 0\n\
+ adds r4, 0x20\n\
+_0800C9D2:\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r4]\n\
+ strb r0, [r1]\n\
+ adds r4, 0x58\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x3\n\
+ ble _0800C9D2\n\
+ movs r3, 0\n\
+ mov r5, r12\n\
+ adds r5, 0x10\n\
+ mov r4, r12\n\
+ adds r4, 0x20\n\
+ ldr r6, _0800CA60 @ =gUnknown_03004290\n\
+ mov r2, r12\n\
+ adds r2, 0x30\n\
+_0800C9F0:\n\
+ adds r1, r5, r3\n\
+ ldr r7, _0800CA64 @ =gUnknown_030041C0\n\
+ adds r0, r3, r7\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r1, r4, r3\n\
+ adds r0, r3, r6\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r1, r2, r3\n\
+ mov r7, r8\n\
+ adds r0, r3, r7\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r3, 0x1\n\
+ cmp r3, 0xF\n\
+ ble _0800C9F0\n\
+ mov r0, r10\n\
+ mov r1, r9\n\
+ movs r2, 0x44\n\
+ bl dp01_prepare_buffer\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0800CA2C: .4byte gUnknown_03004040\n\
+_0800CA30: .4byte gUnknown_02024D26\n\
+_0800CA34: .4byte gUnknown_02024BE6\n\
+_0800CA38: .4byte gUnknown_02024BE8\n\
+_0800CA3C: .4byte gUnknown_02024C04\n\
+_0800CA40: .4byte byte_2024C06\n\
+_0800CA44: .4byte 0x02000000\n\
+_0800CA48: .4byte 0x00016003\n\
+_0800CA4C: .4byte 0x000160c1\n\
+_0800CA50: .4byte gUnknown_02024C0B\n\
+_0800CA54: .4byte gBattleMoves\n\
+_0800CA58: .4byte gUnknown_030042B0\n\
+_0800CA5C: .4byte gBattleMons\n\
+_0800CA60: .4byte gUnknown_03004290\n\
+_0800CA64: .4byte gUnknown_030041C0\n\
+ .syntax divided\n");
+}
+#endif
+
+__attribute__((naked))
+void dp01_build_cmdbuf_x11_TODO()
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ ldr r2, _0800CB28 @ =gUnknown_03004040\n\
+ movs r0, 0x11\n\
+ strb r0, [r2]\n\
+ strb r0, [r2, 0x1]\n\
+ strb r1, [r2, 0x2]\n\
+ lsrs r1, 8\n\
+ strb r1, [r2, 0x3]\n\
+ adds r0, r2, 0x4\n\
+ mov r12, r0\n\
+ ldr r0, _0800CB2C @ =gUnknown_02024BE6\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r2, 0x4]\n\
+ ldr r0, _0800CB30 @ =gUnknown_02024BE8\n\
+ ldrh r0, [r0]\n\
+ mov r1, r12\n\
+ strh r0, [r1, 0x2]\n\
+ ldr r0, _0800CB34 @ =gUnknown_02024C04\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, 0x4]\n\
+ ldr r0, _0800CB38 @ =byte_2024C06\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1, 0x6]\n\
+ ldr r0, _0800CB3C @ =0x02000000\n\
+ ldr r3, _0800CB40 @ =0x00016003\n\
+ adds r1, r0, r3\n\
+ ldrb r1, [r1]\n\
+ mov r7, r12\n\
+ strb r1, [r7, 0x7]\n\
+ ldr r1, _0800CB44 @ =0x0001605e\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r7, 0x8]\n\
+ movs r3, 0\n\
+ mov r9, r2\n\
+ ldr r7, _0800CB48 @ =gUnknown_030042B0\n\
+ mov r8, r7\n\
+ mov r4, r9\n\
+ adds r4, 0x10\n\
+ ldr r0, _0800CB4C @ =gBattleMons\n\
+ adds r2, r0, 0\n\
+ adds r2, 0x20\n\
+_0800CACE:\n\
+ adds r1, r4, r3\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1]\n\
+ adds r2, 0x58\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x3\n\
+ ble _0800CACE\n\
+ movs r3, 0\n\
+ mov r5, r12\n\
+ adds r5, 0x10\n\
+ mov r4, r12\n\
+ adds r4, 0x20\n\
+ ldr r6, _0800CB50 @ =gUnknown_03004290\n\
+ mov r2, r12\n\
+ adds r2, 0x30\n\
+_0800CAEC:\n\
+ adds r1, r5, r3\n\
+ ldr r7, _0800CB54 @ =gUnknown_030041C0\n\
+ adds r0, r3, r7\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r1, r4, r3\n\
+ adds r0, r3, r6\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r1, r2, r3\n\
+ mov r7, r8\n\
+ adds r0, r3, r7\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r3, 0x1\n\
+ cmp r3, 0xF\n\
+ ble _0800CAEC\n\
+ mov r0, r10\n\
+ mov r1, r9\n\
+ movs r2, 0x44\n\
+ bl dp01_prepare_buffer\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0800CB28: .4byte gUnknown_03004040\n\
+_0800CB2C: .4byte gUnknown_02024BE6\n\
+_0800CB30: .4byte gUnknown_02024BE8\n\
+_0800CB34: .4byte gUnknown_02024C04\n\
+_0800CB38: .4byte byte_2024C06\n\
+_0800CB3C: .4byte 0x02000000\n\
+_0800CB40: .4byte 0x00016003\n\
+_0800CB44: .4byte 0x0001605e\n\
+_0800CB48: .4byte gUnknown_030042B0\n\
+_0800CB4C: .4byte gBattleMons\n\
+_0800CB50: .4byte gUnknown_03004290\n\
+_0800CB54: .4byte gUnknown_030041C0\n\
+ .syntax divided\n");
+}
+
+void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c)
+{
+ gUnknown_03004040[0] = 18;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = (c & 0xFF00) >> 8;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void unref_sub_800CB84(u8 a, int b)
+{
+ gUnknown_03004040[0] = 19;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void sub_800CBA4(u8 a, int b, int c, u8 *d)
+{
+ u32 i;
+
+ gUnknown_03004040[0] = 20;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = 0;
+ for (i = 0; i < 20; i++)
+ gUnknown_03004040[4 + i] = d[i];
+ dp01_prepare_buffer(a, gUnknown_03004040, 24);
+}
+
+void sub_800CBE0(u8 a, u8 *b)
+{
+ int i;
+
+ gUnknown_03004040[0] = 21;
+ for (i = 0; i < 3; i++)
+ gUnknown_03004040[1 + i] = b[i];
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, int b, int c, int d, u8 *e)
+{
+ int i;
+
+ gUnknown_03004040[0] = 22;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = d;
+ for (i = 0; i < 3; i++)
+ gUnknown_03004040[4 + i] = e[i];
+ dp01_prepare_buffer(a, gUnknown_03004040, 8); //but only 7 bytes were written
+}
+
+void dp01_build_cmdbuf_x17_17_17_17(u8 a)
+{
+ gUnknown_03004040[0] = 23;
+ gUnknown_03004040[1] = 23;
+ gUnknown_03004040[2] = 23;
+ gUnknown_03004040[3] = 23;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x18_0_aa_health_bar_update(u8 a, s16 b)
+{
+ gUnknown_03004040[0] = 24;
+ gUnknown_03004040[1] = 0;
+ gUnknown_03004040[2] = b;
+ gUnknown_03004040[3] = (b & 0xFF00) >> 8;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x19_a_bb(u8 a, int b, s16 c)
+{
+ gUnknown_03004040[0] = 25;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = (c & 0xFF00) >> 8;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x1A_aaaa_bbbb(u8 a, u32 b, u32 c)
+{
+ gUnknown_03004040[0] = 26;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0x0000FF00) >> 8;
+ gUnknown_03004040[3] = (b & 0x00FF0000) >> 16;
+ gUnknown_03004040[4] = (b & 0xFF000000) >> 24;
+ gUnknown_03004040[5] = c;
+ gUnknown_03004040[6] = (c & 0x0000FF00) >> 8;
+ gUnknown_03004040[7] = (c & 0x00FF0000) >> 16;
+ gUnknown_03004040[8] = (c & 0xFF000000) >> 24;
+ dp01_prepare_buffer(a, gUnknown_03004040, 9);
+}
+
+void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c)
+{
+ gUnknown_03004040[0] = 27;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = (c & 0x0000FF00) >> 8;
+ gUnknown_03004040[4] = (c & 0x00FF0000) >> 16;
+ gUnknown_03004040[5] = (c & 0xFF000000) >> 24;
+ dp01_prepare_buffer(a, gUnknown_03004040, 6);
+}
+
+void dp01_build_cmdbuf_x1C_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 28;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
+{
+ int i;
+
+ gUnknown_03004040[0] = 29;
+ gUnknown_03004040[1] = 29;
+ gUnknown_03004040[2] = b;
+ gUnknown_03004040[3] = (b & 0xFF00) >> 8;
+ for (i = 0; i < b; i++)
+ gUnknown_03004040[4 + i] = *(c++);
+ dp01_prepare_buffer(a, gUnknown_03004040, b + 4);
+}
+
+void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
+{
+ int i;
+
+ gUnknown_03004040[0] = 30;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0x0000FF00) >> 8;
+ gUnknown_03004040[3] = (b & 0x00FF0000) >> 16;
+ gUnknown_03004040[4] = (b & 0xFF000000) >> 24;
+ gUnknown_03004040[5] = c;
+ gUnknown_03004040[6] = (c & 0xFF00) >> 8;
+ for (i = 0; i < c; i++)
+ gUnknown_03004040[7 + i] = *(d++);
+ dp01_prepare_buffer(a, gUnknown_03004040, c + 7);
+}
+
+void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
+{
+ int i;
+
+ gUnknown_03004040[0] = 31;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ for (i = 0; i < b; i++)
+ gUnknown_03004040[3 + i] = *(c++);
+ dp01_prepare_buffer(a, gUnknown_03004040, b + 3);
+}
+
+void unref_sub_800CE84(u8 a, u16 b, u8 *c)
+{
+ int i;
+
+ gUnknown_03004040[0] = 32;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ for (i = 0; i < b; i++)
+ gUnknown_03004040[3 + i] = *(c++);
+ dp01_prepare_buffer(a, gUnknown_03004040, b + 3);
+}
+
+void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c)
+{
+ gUnknown_03004040[0] = 33;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = (c & 0xFF00) >> 8;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, int b, u8 *c)
+{
+ int i;
+
+ gUnknown_03004040[0] = 34;
+ gUnknown_03004040[1] = b;
+ for (i = 0; i < 3; i++)
+ gUnknown_03004040[2 + i] = c[i];
+ dp01_prepare_buffer(a, gUnknown_03004040, 5);
+}
+
+void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b)
+{
+ gUnknown_03004040[0] = 35;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ gUnknown_03004040[3] = 0;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b)
+{
+ gUnknown_03004040[0] = 36;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ gUnknown_03004040[3] = 0;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x25_25_25_25(u8 a)
+{
+ gUnknown_03004040[0] = 37;
+ gUnknown_03004040[1] = 37;
+ gUnknown_03004040[2] = 37;
+ gUnknown_03004040[3] = 37;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x26_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 38;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void dp01_build_cmdbuf_x27_27_27_27(u8 a)
+{
+ gUnknown_03004040[0] = 39;
+ gUnknown_03004040[1] = 39;
+ gUnknown_03004040[2] = 39;
+ gUnknown_03004040[3] = 39;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x28_28_28_28(u8 a)
+{
+ gUnknown_03004040[0] = 40;
+ gUnknown_03004040[1] = 40;
+ gUnknown_03004040[2] = 40;
+ gUnknown_03004040[3] = 40;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x29_29_29_29(u8 a)
+{
+ gUnknown_03004040[0] = 41;
+ gUnknown_03004040[1] = 41;
+ gUnknown_03004040[2] = 41;
+ gUnknown_03004040[3] = 41;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a)
+{
+ gUnknown_03004040[0] = 42;
+ gUnknown_03004040[1] = 42;
+ gUnknown_03004040[2] = 42;
+ gUnknown_03004040[3] = 42;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x2B_aa_0(u8 a, u16 b)
+{
+ gUnknown_03004040[0] = 43;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ gUnknown_03004040[3] = 0;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void sub_800D074(u8 a, u16 b)
+{
+ gUnknown_03004040[0] = 44;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = (b & 0xFF00) >> 8;
+ gUnknown_03004040[3] = 0;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x2D_2D_2D_2D(u8 a)
+{
+ gUnknown_03004040[0] = 45;
+ gUnknown_03004040[1] = 45;
+ gUnknown_03004040[2] = 45;
+ gUnknown_03004040[3] = 45;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x2E_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 46;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a)
+{
+ gUnknown_03004040[0] = 47;
+ gUnknown_03004040[1] = 47;
+ gUnknown_03004040[2] = 47;
+ gUnknown_03004040[3] = 47;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
+{
+ int i;
+
+ gUnknown_03004040[0] = 48;
+ gUnknown_03004040[1] = c & 0x7F;
+ gUnknown_03004040[2] = (c & 0x80) >> 7;
+ gUnknown_03004040[3] = 48;
+ for (i = 0; i < 48; i++)
+ gUnknown_03004040[4 + i] = b[i];
+ dp01_prepare_buffer(a, gUnknown_03004040, 52);
+}
+
+void dp01_build_cmdbuf_x31_31_31_31(u8 a)
+{
+ gUnknown_03004040[0] = 49;
+ gUnknown_03004040[1] = 49;
+ gUnknown_03004040[2] = 49;
+ gUnknown_03004040[3] = 49;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x32_32_32_32(u8 a)
+{
+ gUnknown_03004040[0] = 50;
+ gUnknown_03004040[1] = 50;
+ gUnknown_03004040[2] = 50;
+ gUnknown_03004040[3] = 50;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b)
+{
+ gUnknown_03004040[0] = 51;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = 51;
+ gUnknown_03004040[3] = 51;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c)
+{
+ gUnknown_03004040[0] = 52;
+ gUnknown_03004040[1] = b;
+ gUnknown_03004040[2] = c;
+ gUnknown_03004040[3] = (c & 0xFF00) >> 8;
+ dp01_prepare_buffer(a, gUnknown_03004040, 4);
+}
+
+void sub_800D1D8(u8 a, int b)
+{
+ gUnknown_03004040[0] = 53;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void dp01_build_cmdbuf_x38_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 54;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
+
+void dp01_build_cmdbuf_x37_a(u8 a, int b)
+{
+ gUnknown_03004040[0] = 55;
+ gUnknown_03004040[1] = b;
+ dp01_prepare_buffer(a, gUnknown_03004040, 2);
+}
diff --git a/src/rom4.c b/src/rom4.c
index 3f383b690..9d7fec115 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -4,17 +4,19 @@
#include "asm_fieldmap.h"
#include "battle_setup.h"
#include "berry.h"
+#include "event_data.h"
#include "field_camera.h"
#include "field_effect.h"
#include "field_map_obj.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
-#include "event_data.h"
+#include "field_special_scene.h"
#include "heal_location.h"
#include "link.h"
#include "load_save.h"
#include "main.h"
#include "menu.h"
+#include "metatile_behavior.h"
#include "new_game.h"
#include "palette.h"
#include "play_time.h"
@@ -26,10 +28,12 @@
#include "start_menu.h"
#include "task.h"
#include "tileset_anim.h"
-#include "field_special_scene.h"
#include "weather.h"
#include "wild_encounter.h"
-#include "metatile_behavior.h"
+#include "script_pokemon_80C4.h"
+#include "clock.h"
+#include "field_map_obj_helpers.h"
+#include "field_control_avatar.h"
#ifdef SAPPHIRE
#define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain
@@ -55,7 +59,7 @@ extern struct WarpData gUnknown_02029808;
extern struct UnkPlayerStruct gUnknown_02029810;
extern u16 gUnknown_02029814;
extern bool8 gUnknown_02029816;
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern u8 gUnknown_03000580[];
extern u16 (*gUnknown_03000584)(u32);
@@ -104,7 +108,6 @@ extern const struct WarpData gDummyWarpData;
extern s32 gUnknown_0839ACE8;
extern u32 gUnknown_08216694[];
-
void DoWhiteOut(void)
{
ScriptContext2_RunNewScript(EventScript_LeagueWhiteOut);
@@ -391,7 +394,7 @@ void sub_8053588(u8 a1)
warp_set(&gSaveBlock1.warp3, warp->group, warp->map, -1, warp->x, warp->y);
}
-void sub_80535C4(u16 a1, u16 a2)
+void sub_80535C4(s16 a1, s16 a2)
{
u8 v4 = sav1_map_get_light_level();
u8 v5 = get_map_light_level_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
@@ -466,16 +469,10 @@ struct MapConnection *sub_8053818(u8 dir)
if (connection == NULL)
return NULL;
-
- i = 0;
-
- while (i < count)
- {
- if (connection->direction == dir)
+
+ for(i = 0; i < count; i++, connection++)
+ if (connection->direction == dir)
return connection;
- i++;
- connection++;
- }
return NULL;
}
@@ -539,7 +536,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum)
DoCurrentWeather();
ResetFieldTasksArgs();
mapheader_run_script_with_tag_x5();
- AddMapNamePopUpWindowTask();
+ ShowMapNamePopup();
}
void sub_8053994(u32 a1)
@@ -667,15 +664,15 @@ bool32 IsBikingAllowedByMap(void)
return FALSE;
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
return FALSE;
-
+
// is player in SeafloorCavern_Room9?
if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 36)
return FALSE;
-
+
// is player in CaveOfOrigin_B4F?
if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 42)
return FALSE;
-
+
return TRUE;
}
@@ -1020,20 +1017,21 @@ bool32 is_c1_link_related_active(void)
void c1_overworld_normal(u16 newKeys, u16 heldKeys)
{
- struct UnkInputStruct inputStruct;
+ struct FieldInput inputStruct;
+
sub_8059204();
- sub_8067EEC(&inputStruct);
- process_overworld_input(&inputStruct, newKeys, heldKeys);
+ FieldClearPlayerInput(&inputStruct);
+ FieldGetPlayerInput(&inputStruct, newKeys, heldKeys);
if (!ScriptContext2_IsEnabled())
{
if (sub_8068024(&inputStruct) == 1)
{
ScriptContext2_Enable();
- HideMapNamePopUpWindow();
+ HideMapNamePopup();
}
else
{
- player_step(inputStruct.input_field_2, newKeys, heldKeys);
+ player_step(inputStruct.dpadDirection, newKeys, heldKeys);
}
}
}
@@ -1254,7 +1252,7 @@ void sub_80546F0(void)
void sub_805470C(void)
{
if (gMapHeader.flags == 1 && sub_80BBB24() == 1)
- AddMapNamePopUpWindowTask();
+ ShowMapNamePopup();
sub_8080B60();
}
@@ -1449,7 +1447,7 @@ bool32 sub_805493C(u8 *a1, u32 a2)
break;
case 11:
if (gMapHeader.flags == 1 && sub_80BBB24() == 1)
- AddMapNamePopUpWindowTask();
+ ShowMapNamePopup();
(*a1)++;
break;
case 12:
@@ -1572,12 +1570,12 @@ void sub_8054BA8(void)
addr = (void *)VRAM;
size = 0x18000;
- while(1)
+ while (1)
{
DmaFill16(3, 0, addr, 0x1000);
addr += 0x1000;
size -= 0x1000;
- if(size <= 0x1000)
+ if (size <= 0x1000)
{
DmaFill16(3, 0, addr, size);
break;
@@ -2099,7 +2097,7 @@ void sub_80555B0(int linkPlayerId, int a2, struct UnkStruct_8054FF8 *a3)
sub_8055B08(linkPlayerId, &x, &y);
a3->sub.x = x;
a3->sub.y = y;
- a3->sub.field_8 = sub_8055B50(linkPlayerId);
+ a3->sub.height = sub_8055B50(linkPlayerId);
a3->field_C = MapGridGetMetatileBehaviorAt(x, y);
}
@@ -2141,7 +2139,7 @@ bool32 sub_8055660(struct UnkStruct_8054FF8 *a1)
u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
{
- struct UnkStruct_8054FF8_Substruct unkStruct;
+ struct MapPosition unkStruct;
u8 linkPlayerId;
if (a1->c && a1->c != 2)
@@ -2150,7 +2148,7 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
unkStruct = a1->sub;
unkStruct.x += gUnknown_0821664C[a1->d].x;
unkStruct.y += gUnknown_0821664C[a1->d].y;
- unkStruct.field_8 = 0;
+ unkStruct.height = 0;
linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y);
if (linkPlayerId != 4)
@@ -2161,8 +2159,8 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
return TradeRoom_TooBusyToNotice;
if (!sub_8083BF4(linkPlayerId))
return TradeRoom_ReadTrainerCard1;
- else
- return TradeRoom_ReadTrainerCard2;
+ else
+ return TradeRoom_ReadTrainerCard2;
}
return sub_80682A8(&unkStruct, a1->field_C, a1->d);
@@ -2303,7 +2301,7 @@ void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj)
void strange_npc_table_clear(void)
{
- memset(gLinkPlayerMapObjects, 0, 16);
+ memset(gLinkPlayerMapObjects, 0, sizeof(gLinkPlayerMapObjects));
}
void ZeroMapObject(struct MapObject *mapObj)
@@ -2541,7 +2539,7 @@ void CreateLinkPlayerSprite(u8 linkPlayerId)
if (linkPlayerMapObj->active)
{
- u8 val = sub_805983C(0, mapObj->mapobj_bit_1);
+ u8 val = GetRivalAvatarGraphicsIdByStateIdAndGender(0, mapObj->mapobj_bit_1);
mapObj->spriteId = AddPseudoFieldObject(val, SpriteCB_LinkPlayer, 0, 0, 0);
sprite = &gSprites[mapObj->spriteId];
sprite->coordOffsetEnabled = TRUE;
diff --git a/src/rom6.c b/src/rom6.c
new file mode 100644
index 000000000..037516489
--- /dev/null
+++ b/src/rom6.c
@@ -0,0 +1,204 @@
+#include "global.h"
+#include "asm.h"
+#include "field_effect.h"
+#include "field_player_avatar.h"
+#include "rom4.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "rom6.h"
+#include "braille_puzzles.h"
+
+extern u16 gScriptLastTalked;
+extern u32 gUnknown_0202FF84[];
+extern struct MapPosition gUnknown_0203923C;
+extern void (*gUnknown_0300485C)(void);
+extern u8 gLastFieldPokeMenuOpened;
+extern void (*gUnknown_03005CE4)(void);
+extern u8 UseRockSmashScript[];
+
+extern void sub_808AB90(void);
+extern void task08_080A1C44(u8);
+extern u8 sub_80CA1C8(void);
+
+static void task08_080C9820(u8);
+static void sub_810B3DC(u8);
+static void sub_810B428(u8);
+static void sub_810B4CC(u8);
+static void sub_810B53C(void);
+static void sub_810B58C(void);
+static void sub_810B5D8(void);
+static void sub_810B634(void);
+
+bool8 npc_before_player_of_type(u8 a)
+{
+ u8 mapObjId;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ gUnknown_0203923C.height = PlayerGetZCoord();
+ mapObjId = GetFieldObjectIdByXYZ(gUnknown_0203923C.x, gUnknown_0203923C.y, gUnknown_0203923C.height);
+ if (gMapObjects[mapObjId].graphicsId != a)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gScriptLastTalked = gMapObjects[mapObjId].localId;
+ return TRUE;
+ }
+}
+
+u8 oei_task_add(void)
+{
+ GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ return CreateTask(task08_080C9820, 8);
+}
+
+static void task08_080C9820(u8 taskId)
+{
+ u8 mapObjId;
+
+ ScriptContext2_Enable();
+ gPlayerAvatar.unk6 = 1;
+ mapObjId = gPlayerAvatar.mapObjectId;
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId])
+ || FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
+ {
+ if (gMapHeader.mapType == 5)
+ {
+ FieldEffectStart(0x3B);
+ gTasks[taskId].func = sub_810B428;
+ }
+ else
+ {
+ sub_8059BF4();
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 0x39);
+ gTasks[taskId].func = sub_810B3DC;
+ }
+ }
+}
+
+static void sub_810B3DC(u8 taskId)
+{
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE)
+ {
+ FieldEffectStart(0x3B);
+ gTasks[taskId].func = sub_810B428;
+ }
+}
+
+static void sub_810B428(u8 taskId)
+{
+ if (!FieldEffectActiveListContains(6))
+ {
+ gUnknown_0202FF84[1] = player_get_direction_lower_nybble();
+ if (gUnknown_0202FF84[1] == 1)
+ gUnknown_0202FF84[2] = 0;
+ if (gUnknown_0202FF84[1] == 2)
+ gUnknown_0202FF84[2] = 1;
+ if (gUnknown_0202FF84[1] == 3)
+ gUnknown_0202FF84[2] = 2;
+ if (gUnknown_0202FF84[1] == 4)
+ gUnknown_0202FF84[2] = 3;
+ sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]);
+ FieldEffectActiveListRemove(6);
+ gTasks[taskId].func = sub_810B4CC;
+ }
+}
+
+static void sub_810B4CC(u8 taskId)
+{
+ void (*func)(void) = (void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]);
+
+ func();
+ gPlayerAvatar.unk6 = 0;
+ DestroyTask(taskId);
+}
+
+bool8 SetUpFieldMove_RockSmash(void)
+{
+ if (npc_before_player_of_type(0x56) == TRUE)
+ {
+ gUnknown_0300485C = sub_808AB90;
+ gUnknown_03005CE4 = sub_810B53C;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_810B53C(void)
+{
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(UseRockSmashScript);
+}
+
+int FldEff_RockSmash(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_810B58C >> 16;
+ gTasks[taskId].data[9] = (u32)sub_810B58C;
+ IncrementGameStat(0x13);
+ return 0;
+}
+
+static void sub_810B58C(void)
+{
+ PlaySE(SE_W088);
+ FieldEffectActiveListRemove(0x25);
+ EnableBothScriptContexts();
+}
+
+int SetUpFieldMove_Dig(void)
+{
+ if (sub_80CA1C8() == TRUE)
+ {
+ gUnknown_0300485C = sub_808AB90;
+ gUnknown_03005CE4 = sub_810B5D8;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_810B5D8(void)
+{
+ sub_8053014();
+ FieldEffectStart(0x26);
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+}
+
+int FldEff_UseDig(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_810B634 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_810B634;
+ if (!ShouldDoBrailleDigEffect())
+ SetPlayerAvatarTransitionFlags(1);
+ return 0;
+}
+
+static void sub_810B634(void)
+{
+ u8 taskId;
+
+ FieldEffectActiveListRemove(0x26);
+ if (ShouldDoBrailleDigEffect())
+ {
+ DoBrailleDigEffect();
+ }
+ else
+ {
+ taskId = CreateTask(task08_080A1C44, 8);
+ gTasks[taskId].data[0] = 0;
+ }
+}
diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c
index e9c816818..7b572ba73 100644
--- a/src/rom_800D42C.c
+++ b/src/rom_800D42C.c
@@ -26,42 +26,50 @@ extern u8 BattleText_Tie[];
#define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X)
#define PRINT_MESSAGE_RIGHT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, RIGHT_MESSAGE_X)
-void sub_800DC24(void) {
+void sub_800DC24(void)
+{
- if (gUnknown_02024D26 == 3) {
+ if (gUnknown_02024D26 == 3)
+ {
PRINT_MESSAGE(BattleText_Tie, 160, CENTER_MESSAGE_X);
return;
}
- if (gBattleTypeFlags & BATTLE_TYPE_40) {
+ if (gBattleTypeFlags & BATTLE_TYPE_40)
+ {
// Double battle?
- if (gUnknown_02024D26 == 1) {
+ if (gUnknown_02024D26 == 1)
+ {
// lp_field_18 = player position?
- switch (gLinkPlayers[battle_2000000.linkPlayerIndex].lp_field_18) {
- case 0:
- case 2: PRINT_MESSAGE_LEFT(BattleText_Win, 160);
- PRINT_MESSAGE_RIGHT(BattleText_Loss, 168);
- return;
-
- case 1:
- case 3: PRINT_MESSAGE_RIGHT(BattleText_Win, 160)
- PRINT_MESSAGE_LEFT(BattleText_Loss, 168)
- return;
+ switch (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18)
+ {
+ case 0:
+ case 2: PRINT_MESSAGE_LEFT(BattleText_Win, 160);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, 168);
+ return;
+
+ case 1:
+ case 3: PRINT_MESSAGE_RIGHT(BattleText_Win, 160)
+ PRINT_MESSAGE_LEFT(BattleText_Loss, 168)
+ return;
}
- } else {
-
- switch (gLinkPlayers[battle_2000000.linkPlayerIndex].lp_field_18) {
- case 1:
- case 3: PRINT_MESSAGE_LEFT(BattleText_Win, 160);
- PRINT_MESSAGE_RIGHT(BattleText_Loss, 168);
- return;
-
- case 0:
- case 2: PRINT_MESSAGE_RIGHT(BattleText_Win, 160);
- PRINT_MESSAGE_LEFT(BattleText_Loss, 168);
- return;
+ }
+ else
+ {
+
+ switch (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18)
+ {
+ case 1:
+ case 3: PRINT_MESSAGE_LEFT(BattleText_Win, 160);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, 168);
+ return;
+
+ case 0:
+ case 2: PRINT_MESSAGE_RIGHT(BattleText_Win, 160);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, 168);
+ return;
}
}
@@ -69,19 +77,28 @@ void sub_800DC24(void) {
}
- if (gUnknown_02024D26 == 1) {
- if (gLinkPlayers[battle_2000000.linkPlayerIndex].lp_field_18 != 0) {
+ if (gUnknown_02024D26 == 1)
+ {
+ if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 != 0)
+ {
PRINT_MESSAGE_RIGHT(BattleText_Win, 160);
PRINT_MESSAGE_LEFT(BattleText_Loss, 168);
- } else {
+ }
+ else
+ {
PRINT_MESSAGE_LEFT(BattleText_Win, 160);
PRINT_MESSAGE_RIGHT(BattleText_Loss, 168);
}
- } else {
- if (gLinkPlayers[battle_2000000.linkPlayerIndex].lp_field_18 != 0) {
+ }
+ else
+ {
+ if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 != 0)
+ {
PRINT_MESSAGE_LEFT(BattleText_Win, 160);
PRINT_MESSAGE_RIGHT(BattleText_Loss, 168);
- } else {
+ }
+ else
+ {
PRINT_MESSAGE_RIGHT(BattleText_Win, 160);
PRINT_MESSAGE_LEFT(BattleText_Loss, 168);
}
diff --git a/src/rom_8080874.c b/src/rom_8080874.c
new file mode 100644
index 000000000..261ed46c9
--- /dev/null
+++ b/src/rom_8080874.c
@@ -0,0 +1,97 @@
+#include "global.h"
+#include "gba/syscall.h"
+#include "global.fieldmap.h"
+#include "script.h"
+#include "task.h"
+#include "weather.h"
+
+void palette_bg_fill_white(void);
+void palette_bg_fill_black(void);
+void pal_fill_black(void);
+void task0A_asap_script_env_2_enable_and_set_ctx_running(u8);
+
+extern u8 get_map_light_from_warp0(void);
+extern u8 sav1_map_get_light_level(void);
+extern u8 fade_type_for_given_maplight_pair(u8, u8);
+extern u16 gPlttBufferFaded[];
+extern struct MapHeader * warp1_get_mapheader(void);
+extern void sub_8059B88(u8);
+extern void sub_8053E90(void);
+
+extern u8 sub_810CDB8(u8, u8);
+extern int sub_8080E70(void);
+
+void palette_bg_fill_white(void)
+{
+ u32 source_color = 0x7fff7fff;
+ CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
+}
+
+void palette_bg_fill_black(void)
+{
+ u32 source_color = 0;
+ CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
+}
+
+void pal_fill_for_map_transition(void)
+{
+ u8 map_light = get_map_light_from_warp0();
+ switch (fade_type_for_given_maplight_pair(map_light, sav1_map_get_light_level()))
+ {
+ case 0:
+ fade_screen(0, 0);
+ palette_bg_fill_black();
+ break;
+ case 1:
+ fade_screen(2, 0);
+ palette_bg_fill_white();
+ }
+}
+
+void pal_fill_black(void)
+{
+ fade_screen(0, 0);
+ palette_bg_fill_black();
+}
+
+void fade_8080918(void)
+{
+ u8 light_level = sav1_map_get_light_level();
+ switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType))
+ {
+ case 0:
+ fade_screen(1, 0);
+ break;
+ case 1:
+ fade_screen(3, 0);
+ }
+}
+
+void sub_8080958(u8 arg)
+{
+ sub_8059B88(!arg);
+}
+
+void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
+{
+ if (sub_8080E70() == 1)
+ {
+ DestroyTask(taskID);
+ EnableBothScriptContexts();
+ }
+}
+
+void sub_8080990(void)
+{
+ ScriptContext2_Enable();
+ sub_8053E90();
+ pal_fill_black();
+ CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
+}
+
+void sub_80809B0(void)
+{
+ ScriptContext2_Enable();
+ pal_fill_black();
+ CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
+}
diff --git a/src/rom_8094928.c b/src/rom_8094928.c
new file mode 100644
index 000000000..74daec64d
--- /dev/null
+++ b/src/rom_8094928.c
@@ -0,0 +1,135 @@
+#include "global.h"
+#include "pokemon.h"
+
+#define UNK_201606C_ARRAY (unk_2000000 + 0x1606C) // lazy define but whatever.
+
+extern u8 unk_2000000[];
+
+extern struct PokemonStorage gPokemonStorage;
+extern u8 IsLinkDoubleBattle(void);
+extern u8 IsDoubleBattle(void);
+extern u8 battle_get_side_with_given_state(u8);
+extern u8 battle_side_get_owner(u8);
+void sub_8094998(u8[3], u8);
+void sub_8094A74(u8[3], u8, u32);
+
+extern u8 gUnknown_02038470[3];
+extern u8 sub_803FBBC(void);
+extern u16 gUnknown_02024A6A[];
+
+void unref_sub_8094928(struct PokemonStorage *ptr)
+{
+ *ptr = gPokemonStorage;
+}
+
+void unref_sub_8094940(struct PokemonStorage *ptr)
+{
+ gPokemonStorage = *ptr;
+}
+
+void sub_8094958(void)
+{
+ sub_8094998(gUnknown_02038470, sub_803FBBC());
+}
+
+void sub_8094978(u8 arg1, u8 arg2)
+{
+ sub_8094A74((UNK_201606C_ARRAY) + arg1 * 3, arg2, arg1);
+}
+
+void sub_8094998(u8 arg[3], u8 player_number)
+{
+ int i;
+ u32 pos;
+ u8 temp[6];
+ if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (player_number)
+ {
+ *arg = 0x30;
+ arg[1] = 0x45;
+ arg[2] = 0x12;
+ }
+ else
+ {
+ *arg = 0x03;
+ arg[1] = 0x12;
+ arg[2] = 0x45;
+ }
+ }
+ else
+ {
+ if (!IsDoubleBattle())
+ {
+ pos = 1;
+ *temp = gUnknown_02024A6A[battle_get_side_with_given_state(0)];
+ for (i = 0; i <= 5; i++)
+ if (i != *temp)
+ temp[pos++] = i;
+ }
+ else
+ {
+ pos = 2;
+ *temp = gUnknown_02024A6A[battle_get_side_with_given_state(0)];
+ temp[1] = gUnknown_02024A6A[battle_get_side_with_given_state(2)];
+ for (i = 0; i <= 5; i++)
+ if ((i != *temp) && (i != temp[1]))
+ temp[pos++] = i;
+ }
+ for (i = 0; i <= 2; i++)
+ arg[i] = (temp[i << 1] << 4) | temp[(i << 1) + 1];
+ }
+}
+
+void sub_8094A74(u8 arg[3], u8 player_number, u32 arg3)
+{
+ int i, j;
+ u8 temp[6];
+ if (!battle_side_get_owner(arg3))
+ {
+ i = battle_get_side_with_given_state(0);
+ j = battle_get_side_with_given_state(2);
+ }
+ else
+ {
+ i = battle_get_side_with_given_state(1);
+ j = battle_get_side_with_given_state(3);
+ }
+ if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (player_number)
+ {
+ *arg = 0x30;
+ arg[1] = 0x45;
+ arg[2] = 0x12;
+ }
+ else
+ {
+ *arg = 0x03;
+ arg[1] = 0x12;
+ arg[2] = 0x45;
+ }
+ }
+ else
+ {
+ if (!IsDoubleBattle())
+ {
+ int pos = 1;
+ *temp = gUnknown_02024A6A[i];
+ for (i = 0; i <= 5; i++)
+ if (i != *temp)
+ temp[pos++] = i;
+ }
+ else
+ {
+ int pos = 2;
+ *temp = gUnknown_02024A6A[i];
+ temp[1] = gUnknown_02024A6A[j];
+ for (i = 0; i <= 5; i++)
+ if ((i != *temp) && (i != temp[1]))
+ temp[pos++] = i;
+ }
+ for (i = 0; i <= 2; i++)
+ arg[i] = (temp[i << 1] << 4) | temp[(i << 1) + 1];
+ }
+}
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 08bfbefbf..8c2b63469 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -1,12 +1,13 @@
#include "global.h"
#include "safari_zone.h"
#include "asm.h"
-#include "field_player_avatar.h"
#include "event_data.h"
+#include "field_player_avatar.h"
#include "main.h"
+#include "rom4.h"
#include "script.h"
#include "string_util.h"
-#include "rom4.h"
+#include "text.h"
struct PokeblockFeeder
{
diff --git a/src/save.c b/src/save.c
index 49db679f8..b5934e231 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1,60 +1,83 @@
#include "global.h"
+#include "gba/flash_internal.h"
+#include "gba/gba.h"
#include "save.h"
#include "asm.h"
-#include "gba/gba.h"
#include "load_save.h"
#include "rom4.h"
-#include "gba/flash_internal.h"
#include "save_failed_screen.h"
-extern struct SaveSection unk_2000000;
+extern u32 gLastSaveSectorStatus; // used but in an unferenced function, so unused
+extern u16 gLastWrittenSector;
+extern u32 gLastSaveCounter;
+extern u16 gLastKnownGoodSector;
+extern u32 gDamagedSaveSectors;
+extern u32 gSaveCounter;
+extern struct SaveSection unk_2000000; // slow save RAM
+extern struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
+extern u16 gUnknown_03005EB4;
+extern u16 gSaveFileStatus;
+extern u32 gGameContinueCallback;
-extern u32 gUnknown_02039284;
+extern struct PokemonStorage gPokemonStorage;
+extern struct HallOfFame gHallOfFame;
-extern u32 gUnknown_3004820;
+const struct SaveSectionLocation gSaveSectionLocations[] =
+{
+ {((u8 *) &gSaveBlock2), 0x890},
+ {((u8 *) &gSaveBlock1) + 0xF80 * 0, 0xF80},
+ {((u8 *) &gSaveBlock1) + 0xF80 * 1, 0xF80},
+ {((u8 *) &gSaveBlock1) + 0xF80 * 2, 0xF80},
+ {((u8 *) &gSaveBlock1) + 0xF80 * 3, 0xC40},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 0, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 1, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 2, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 3, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 4, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 5, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 6, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 7, 0xF80},
+ {((u8 *) &gPokemonStorage) + 0xF80 * 8, 0x7D0}
+};
-extern u16 gUnknown_03005E9C;
-extern u32 gUnknown_03005EA0;
-extern u16 gUnknown_03005EA4;
-extern u32 gUnknown_03005EA8;
-extern u32 gUnknown_03005EAC;
-extern struct SaveSection *gUnknown_03005EB0;
-extern u16 gUnknown_03005EB4;
-extern u16 gSaveFileStatus;
-extern u32 gUnknown_03005EBC;
+const struct SaveSectionLocation gHallOfFameSaveSectionLocations[] =
+{
+ {((u8 *) &gHallOfFame) + 0xF80 * 0, 0xF80},
+ {((u8 *) &gHallOfFame) + 0xF80 * 1, 0xF80}
+};
-extern struct SaveSectionLocation gSaveSectionLocations[];
-extern struct SaveSectionLocation gHallOfFameSaveSectionLocations[];
-extern u8 gUnknown_08401E24[];
+const u8 gFlashSectors[] = { 0x1E, 0x1F };
void ClearSaveData(void)
{
u16 i;
- for (i = 0; i < 32; i++)
+
+ for (i = 0; i < NUM_SECTORS; i++)
EraseFlashSector(i);
}
-void sub_81251B8(void)
+// ResetSaveCounters
+void ResetSaveCounters(void)
{
- gUnknown_03005EAC = 0;
- gUnknown_03005E9C = 0;
- gUnknown_03005EA8 = 0;
+ gSaveCounter = 0;
+ gLastWrittenSector = 0;
+ gDamagedSaveSectors = 0;
}
-bool32 sub_81251D4(u8 op, u8 bit)
+bool32 SetDamagedSectorBits(u8 op, u8 bit)
{
bool32 retVal = FALSE;
switch (op)
{
- case 0:
- gUnknown_03005EA8 |= 1 << bit;
+ case ENABLE:
+ gDamagedSaveSectors |= (1 << bit);
break;
- case 1:
- gUnknown_03005EA8 &= ~(1 << bit);
+ case DISABLE:
+ gDamagedSaveSectors &= ~(1 << bit);
break;
- case 2:
- if (gUnknown_03005EA8 & (1 << bit))
+ case CHECK: // unused
+ if (gDamagedSaveSectors & (1 << bit))
retVal = TRUE;
break;
}
@@ -62,67 +85,70 @@ bool32 sub_81251D4(u8 op, u8 bit)
return retVal;
}
-u8 save_write_to_flash(u16 a1, struct SaveSectionLocation *a2)
+u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
{
u32 retVal;
u16 i;
- gUnknown_03005EB0 = &unk_2000000;
+ gFastSaveSection = &unk_2000000;
- if (a1 != 0xFFFF)
+ if (a1 != 0xFFFF) // for link
{
- retVal = sub_81252D8(a1, a2);
+ retVal = HandleWriteSector(a1, location);
}
else
{
- gUnknown_03005EA4 = gUnknown_03005E9C;
- gUnknown_03005EA0 = gUnknown_03005EAC;
- gUnknown_03005E9C++;
- gUnknown_03005E9C = gUnknown_03005E9C % 14;
- gUnknown_03005EAC++;
+ gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write.
+ gLastSaveCounter = gSaveCounter;
+ gLastWrittenSector++;
+ gLastWrittenSector = gLastWrittenSector % 14;
+ gSaveCounter++;
retVal = 1;
+
for (i = 0; i < 14; i++)
- sub_81252D8(i, a2);
- if (gUnknown_03005EA8)
+ HandleWriteSector(i, location);
+
+ if (gDamagedSaveSectors != 0) // skip the damaged sector.
{
retVal = 0xFF;
- gUnknown_03005E9C = gUnknown_03005EA4;
- gUnknown_03005EAC = gUnknown_03005EA0;
+ gLastWrittenSector = gLastKnownGoodSector;
+ gSaveCounter = gLastSaveCounter;
}
}
return retVal;
}
-u8 sub_81252D8(u16 a1, struct SaveSectionLocation *a2)
+u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
{
u16 i;
u16 sector;
u8 *data;
u16 size;
- sector = a1 + gUnknown_03005E9C;
+ sector = a1 + gLastWrittenSector;
sector %= 14;
- sector += 14 * (gUnknown_03005EAC % 2);
+ sector += 14 * (gSaveCounter % 2);
- data = a2[a1].data;
- size = a2[a1].size;
+ data = location[a1].data;
+ size = location[a1].size;
+ // clear save section.
for (i = 0; i < sizeof(struct SaveSection); i++)
- ((char *)gUnknown_03005EB0)[i] = 0;
+ ((char *)gFastSaveSection)[i] = 0;
- gUnknown_03005EB0->id = a1;
- gUnknown_03005EB0->unknown = 0x8012025;
- gUnknown_03005EB0->counter = gUnknown_03005EAC;
+ gFastSaveSection->id = a1;
+ gFastSaveSection->security = UNKNOWN_CHECK_VALUE;
+ gFastSaveSection->counter = gSaveCounter;
for (i = 0; i < size; i++)
- gUnknown_03005EB0->data[i] = data[i];
+ gFastSaveSection->data[i] = data[i];
- gUnknown_03005EB0->checksum = sub_8125C10(data, size);
- return sub_8125440(sector, gUnknown_03005EB0->data);
+ gFastSaveSection->checksum = CalculateChecksum(data, size);
+ return TryWriteSector(sector, gFastSaveSection->data);
}
-u8 sub_81253C8(u8 sector, u8 *data, u16 size)
+u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size)
{
u16 i;
struct SaveSection *section = &unk_2000000;
@@ -130,66 +156,66 @@ u8 sub_81253C8(u8 sector, u8 *data, u16 size)
for (i = 0; i < sizeof(struct SaveSection); i++)
((char *)section)[i] = 0;
- section->unknown = 0x8012025;
+ section->security = UNKNOWN_CHECK_VALUE;
for (i = 0; i < size; i++)
section->data[i] = data[i];
- section->id = sub_8125C10(data, size); // id instead of checksum?
- return sub_8125440(sector, section->data);
+ section->id = CalculateChecksum(data, size); // though this appears to be incorrect, it might be some sector checksum instead of a whole save checksum and only appears to be relevent to HOF data, if used.
+ return TryWriteSector(sector, section->data);
}
-u8 sub_8125440(u8 sector, u8 *data)
+u8 TryWriteSector(u8 sector, u8 *data)
{
- if (ProgramFlashSectorAndVerify(sector, data))
+ if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged?
{
- sub_81251D4(0, sector);
+ SetDamagedSectorBits(ENABLE, sector); // set damaged sector bits.
return 0xFF;
}
else
{
- sub_81251D4(1, sector);
+ SetDamagedSectorBits(DISABLE, sector); // unset damaged sector bits. it's safe now.
return 1;
}
}
-u32 sub_812546C(struct SaveSectionLocation *a1)
+u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location) // location is unused
{
- gUnknown_03005EB0 = &unk_2000000;
- gUnknown_03005EA4 = gUnknown_03005E9C;
- gUnknown_03005EA0 = gUnknown_03005EAC;
- gUnknown_03005E9C++;
- gUnknown_03005E9C = gUnknown_03005E9C % 14;
- gUnknown_03005EAC++;
+ gFastSaveSection = &unk_2000000;
+ gLastKnownGoodSector = gLastWrittenSector;
+ gLastSaveCounter = gSaveCounter;
+ gLastWrittenSector++;
+ gLastWrittenSector = gLastWrittenSector % 14;
+ gSaveCounter++;
gUnknown_03005EB4 = 0;
- gUnknown_03005EA8 = 0;
+ gDamagedSaveSectors = 0;
return 0;
}
-u32 sub_81254C8(struct SaveSectionLocation *a1)
+u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ever called once, and gSaveBlock2 is passed to this function. location is unused
{
- gUnknown_03005EB0 = &unk_2000000;
- gUnknown_03005EA4 = gUnknown_03005E9C;
- gUnknown_03005EA0 = gUnknown_03005EAC;
+ gFastSaveSection = &unk_2000000;
+ gLastKnownGoodSector = gLastWrittenSector;
+ gLastSaveCounter = gSaveCounter;
gUnknown_03005EB4 = 0;
- gUnknown_03005EA8 = 0;
+ gDamagedSaveSectors = 0;
return 0;
}
-u8 sub_812550C(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location)
{
u8 retVal;
if (gUnknown_03005EB4 < a1 - 1)
{
retVal = 1;
- sub_81252D8(gUnknown_03005EB4, a2);
+ HandleWriteSector(gUnknown_03005EB4, location);
gUnknown_03005EB4++;
- if (gUnknown_03005EA8)
+ if (gDamagedSaveSectors)
{
retVal = 0xFF;
- gUnknown_03005E9C = gUnknown_03005EA4;
- gUnknown_03005EAC = gUnknown_03005EA0;
+ gLastWrittenSector = gLastKnownGoodSector;
+ gSaveCounter = gLastSaveCounter;
}
}
else
@@ -200,20 +226,22 @@ u8 sub_812550C(u16 a1, struct SaveSectionLocation *a2)
return retVal;
}
-u8 sub_812556C(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location)
{
u8 retVal = 1;
- sub_81255B8(a1 - 1, a2);
- if (gUnknown_03005EA8)
+
+ sub_81255B8(a1 - 1, location);
+
+ if (gDamagedSaveSectors)
{
retVal = 0xFF;
- gUnknown_03005E9C = gUnknown_03005EA4;
- gUnknown_03005EAC = gUnknown_03005EA0;
+ gLastWrittenSector = gLastKnownGoodSector;
+ gSaveCounter = gLastSaveCounter;
}
return retVal;
}
-u8 sub_81255B8(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
{
u16 i;
u16 sector;
@@ -221,32 +249,35 @@ u8 sub_81255B8(u16 a1, struct SaveSectionLocation *a2)
u16 size;
u8 status;
- sector = a1 + gUnknown_03005E9C;
+ sector = a1 + gLastWrittenSector;
sector %= 14;
- sector += 14 * (gUnknown_03005EAC % 2);
+ sector += 14 * (gSaveCounter % 2);
- data = a2[a1].data;
- size = a2[a1].size;
+ data = location[a1].data;
+ size = location[a1].size;
+ // clear temp save section.
for (i = 0; i < sizeof(struct SaveSection); i++)
- ((char *)gUnknown_03005EB0)[i] = 0;
+ ((char *)gFastSaveSection)[i] = 0;
- gUnknown_03005EB0->id = a1;
- gUnknown_03005EB0->unknown = 0x8012025;
- gUnknown_03005EB0->counter = gUnknown_03005EAC;
+ gFastSaveSection->id = a1;
+ gFastSaveSection->security = UNKNOWN_CHECK_VALUE;
+ gFastSaveSection->counter = gSaveCounter;
+ // set temp section's data.
for (i = 0; i < size; i++)
- gUnknown_03005EB0->data[i] = data[i];
+ gFastSaveSection->data[i] = data[i];
- gUnknown_03005EB0->checksum = sub_8125C10(data, size);
+ // calculate checksum.
+ gFastSaveSection->checksum = CalculateChecksum(data, size);
EraseFlashSector(sector);
status = 1;
- for (i = 0; i < 0xFF8; i++)
+ for (i = 0; i < sizeof(struct UnkSaveSection); i++)
{
- if (ProgramFlashByte(sector, i, ((u8 *)gUnknown_03005EB0)[i]))
+ if (ProgramFlashByte(sector, i, ((u8 *)gFastSaveSection)[i]))
{
status = 0xFF;
break;
@@ -255,7 +286,7 @@ u8 sub_81255B8(u16 a1, struct SaveSectionLocation *a2)
if (status == 0xFF)
{
- sub_81251D4(0, sector);
+ SetDamagedSectorBits(ENABLE, sector);
return 0xFF;
}
else
@@ -264,7 +295,7 @@ u8 sub_81255B8(u16 a1, struct SaveSectionLocation *a2)
for (i = 0; i < 7; i++)
{
- if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gUnknown_03005EB0)[0xFF9 + i]))
+ if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i]))
{
status = 0xFF;
break;
@@ -273,105 +304,107 @@ u8 sub_81255B8(u16 a1, struct SaveSectionLocation *a2)
if (status == 0xFF)
{
- sub_81251D4(0, sector);
+ SetDamagedSectorBits(ENABLE, sector);
return 0xFF;
}
else
{
- sub_81251D4(1, sector);
+ SetDamagedSectorBits(DISABLE, sector);
return 1;
}
}
}
-u8 sub_8125758(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location)
{
u16 sector;
- sector = a1 + gUnknown_03005E9C - 1;
+ sector = a1 + gLastWrittenSector - 1;
sector %= 14;
- sector += 14 * (gUnknown_03005EAC % 2);
+ sector += 14 * (gSaveCounter % 2);
- if (ProgramFlashByte(sector, 0xFF8, ((u8 *)gUnknown_03005EB0)[0xFF8]))
+ if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
{
- sub_81251D4(0, sector);
- gUnknown_03005E9C = gUnknown_03005EA4;
- gUnknown_03005EAC = gUnknown_03005EA0;
+ // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
+ SetDamagedSectorBits(ENABLE, sector);
+ gLastWrittenSector = gLastKnownGoodSector;
+ gSaveCounter = gLastSaveCounter;
return 0xFF;
}
else
{
- sub_81251D4(1u, sector);
+ SetDamagedSectorBits(DISABLE, sector);
return 1;
}
}
-u8 sub_81257F0(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location)
{
u16 sector;
- sector = a1 + gUnknown_03005E9C - 1;
+ sector = a1 + gLastWrittenSector - 1;
sector %= 14;
- sector += 14 * (gUnknown_03005EAC % 2);
+ sector += 14 * (gSaveCounter % 2);
- if (ProgramFlashByte(sector, 0xFF8, 0x25))
+ if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
{
- sub_81251D4(0, sector);
- gUnknown_03005E9C = gUnknown_03005EA4;
- gUnknown_03005EAC = gUnknown_03005EA0;
+ // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
+ SetDamagedSectorBits(ENABLE, sector);
+ gLastWrittenSector = gLastKnownGoodSector;
+ gSaveCounter = gLastSaveCounter;
return 0xFF;
}
else
{
- sub_81251D4(1u, sector);
+ SetDamagedSectorBits(DISABLE, sector);
return 1;
}
}
-u8 sub_812587C(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location)
{
u8 retVal;
- gUnknown_03005EB0 = &unk_2000000;
+ gFastSaveSection = &unk_2000000;
if (a1 != 0xFFFF)
{
retVal = 0xFF;
}
else
{
- retVal = sub_8125974(a2);
- sub_81258BC(0xFFFF, a2);
+ retVal = sub_8125974(location);
+ sub_81258BC(0xFFFF, location);
}
return retVal;
}
-u8 sub_81258BC(u16 a1, struct SaveSectionLocation *a2)
+u8 sub_81258BC(u16 a1, const struct SaveSectionLocation *location)
{
u16 i;
u16 checksum;
- u16 v3 = 14 * (gUnknown_03005EAC % 2);
+ u16 v3 = 14 * (gSaveCounter % 2);
u16 id;
for (i = 0; i < 14; i++)
{
- sub_8125BF8(i + v3, gUnknown_03005EB0);
- id = gUnknown_03005EB0->id;
+ sub_8125BF8(i + v3, gFastSaveSection);
+ id = gFastSaveSection->id;
if (id == 0)
- gUnknown_03005E9C = i;
- checksum = sub_8125C10(gUnknown_03005EB0->data, a2[id].size);
- if (gUnknown_03005EB0->unknown == 0x8012025
- && gUnknown_03005EB0->checksum == checksum)
+ gLastWrittenSector = i;
+ checksum = CalculateChecksum(gFastSaveSection->data, location[id].size);
+ if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE
+ && gFastSaveSection->checksum == checksum)
{
u16 j;
- for (j = 0; j < a2[id].size; j++)
- ((u8 *)a2[id].data)[j] = gUnknown_03005EB0->data[j];
+ for (j = 0; j < location[id].size; j++)
+ ((u8 *)location[id].data)[j] = gFastSaveSection->data[j];
}
}
return 1;
}
-u8 sub_8125974(struct SaveSectionLocation *a1)
+u8 sub_8125974(const struct SaveSectionLocation *location)
{
u16 i;
u16 checksum;
@@ -387,15 +420,15 @@ u8 sub_8125974(struct SaveSectionLocation *a1)
for (i = 0; i < 14; i++)
{
- sub_8125BF8(i, gUnknown_03005EB0);
- if (gUnknown_03005EB0->unknown == 0x8012025)
+ sub_8125BF8(i, gFastSaveSection);
+ if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
{
v5 = TRUE;
- checksum = sub_8125C10(gUnknown_03005EB0->data, a1[gUnknown_03005EB0->id].size);
- if (gUnknown_03005EB0->checksum == checksum)
+ checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size);
+ if (gFastSaveSection->checksum == checksum)
{
- v2 = gUnknown_03005EB0->counter;
- v4 |= 1 << gUnknown_03005EB0->id;
+ v2 = gFastSaveSection->counter;
+ v4 |= 1 << gFastSaveSection->id;
}
}
}
@@ -417,15 +450,15 @@ u8 sub_8125974(struct SaveSectionLocation *a1)
for (i = 0; i < 14; i++)
{
- sub_8125BF8(i + 14, gUnknown_03005EB0);
- if (gUnknown_03005EB0->unknown == 0x8012025)
+ sub_8125BF8(i + 14, gFastSaveSection);
+ if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
{
v5 = TRUE;
- checksum = sub_8125C10(gUnknown_03005EB0->data, a1[gUnknown_03005EB0->id].size);
- if (gUnknown_03005EB0->checksum == checksum)
+ checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size);
+ if (gFastSaveSection->checksum == checksum)
{
- v3 = gUnknown_03005EB0->counter;
- v4 |= 1 << gUnknown_03005EB0->id;
+ v3 = gFastSaveSection->counter;
+ v4 |= 1 << gFastSaveSection->id;
}
}
}
@@ -448,22 +481,22 @@ u8 sub_8125974(struct SaveSectionLocation *a1)
{
if ((unsigned)(v2 + 1) < (unsigned)(v3 + 1))
{
- gUnknown_03005EAC = v3;
+ gSaveCounter = v3;
}
else
{
- gUnknown_03005EAC = v2;
+ gSaveCounter = v2;
}
}
else
{
if (v2 < v3)
{
- gUnknown_03005EAC = v3;
+ gSaveCounter = v3;
}
else
{
- gUnknown_03005EAC = v2;
+ gSaveCounter = v2;
}
}
return 1;
@@ -471,7 +504,7 @@ u8 sub_8125974(struct SaveSectionLocation *a1)
if (v14 == 1)
{
- gUnknown_03005EAC = v2;
+ gSaveCounter = v2;
if (v10 == 255)
return 255;
return 1;
@@ -479,7 +512,7 @@ u8 sub_8125974(struct SaveSectionLocation *a1)
if (v10 == 1)
{
- gUnknown_03005EAC = v3;
+ gSaveCounter = v3;
if (v14 == 255)
return 255;
return 1;
@@ -487,13 +520,13 @@ u8 sub_8125974(struct SaveSectionLocation *a1)
if (v14 == 0 && v10 == 0)
{
- gUnknown_03005EAC = 0;
- gUnknown_03005E9C = 0;
+ gSaveCounter = 0;
+ gLastWrittenSector = 0;
return 0;
}
- gUnknown_03005EAC = 0;
- gUnknown_03005E9C = 0;
+ gSaveCounter = 0;
+ gLastWrittenSector = 0;
return 2;
}
@@ -502,9 +535,9 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size)
u16 i;
struct SaveSection *section = &unk_2000000;
sub_8125BF8(a1, section);
- if (section->unknown == 0x8012025)
+ if (section->security == UNKNOWN_CHECK_VALUE)
{
- u16 checksum = sub_8125C10(section->data, size);
+ u16 checksum = CalculateChecksum(section->data, size);
if (section->id == checksum)
{
for (i = 0; i < size; i++)
@@ -524,11 +557,11 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size)
u8 sub_8125BF8(u8 sector, struct SaveSection *section)
{
- ReadFlash(sector, 0, section->data, 0x1000);
+ ReadFlash(sector, 0, section->data, sizeof(struct SaveSection));
return 1;
}
-u16 sub_8125C10(void *data, u16 size)
+u16 CalculateChecksum(void *data, u16 size)
{
u16 i;
u32 checksum = 0;
@@ -539,37 +572,37 @@ u16 sub_8125C10(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
-u8 sub_8125C3C(u8 a1)
+u8 HandleSavingData(u8 saveType)
{
u8 i;
- switch (a1)
+ switch (saveType)
{
- case 5:
+ case HOF_DELETE_SAVE: // deletes save before HOF case. unused
for (i = 28; i < 32; i++)
EraseFlashSector(i);
- case 3:
+ case HOF_SAVE: // hall of fame.
if (GetGameStat(10) < 999)
IncrementGameStat(10);
for (i = 0; i < 2; i++)
- sub_81253C8(28 + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size);
+ HandleWriteSectorNBytes(28 + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size);
SaveSerializedGame();
save_write_to_flash(0xFFFF, gSaveSectionLocations);
break;
- case 0:
+ case NORMAL_SAVE: // normal save.
default:
SaveSerializedGame();
save_write_to_flash(0xFFFF, gSaveSectionLocations);
break;
- case 1:
+ case LINK_SAVE: // link save. update only the pokemon, i think.
SaveSerializedGame();
for (i = 0; i < 5; i++)
save_write_to_flash(i, gSaveSectionLocations);
break;
- case 2:
+ case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer
SaveSerializedGame();
save_write_to_flash(0, gSaveSectionLocations);
break;
- case 4:
+ case DIFFERENT_FILE_SAVE: // there is a different file, so erase the file and overwrite it completely.
for (i = 28; i < 32; i++)
EraseFlashSector(i);
SaveSerializedGame();
@@ -579,60 +612,60 @@ u8 sub_8125C3C(u8 a1)
return 0;
}
-u8 sub_8125D44(u8 a1)
+u8 TrySavingData(u8 saveType) // TrySave
{
- if (gUnknown_3004820 != 1)
+ if (gFlashMemoryPresent != TRUE)
return 0xFF;
- sub_8125C3C(a1);
- if (!gUnknown_03005EA8)
+ HandleSavingData(saveType);
+ if (!gDamagedSaveSectors)
return 1;
- DoSaveFailedScreen(a1);
+ DoSaveFailedScreen(saveType);
return 0xFF;
}
-u8 sub_8125D80(void)
+u8 sub_8125D80(void) // trade.s save
{
- if (gUnknown_3004820 != 1)
+ if (gFlashMemoryPresent != TRUE)
return 1;
SaveSerializedGame();
- sub_812546C(gSaveSectionLocations);
+ RestoreSaveBackupVarsAndIncrement(gSaveSectionLocations);
return 0;
}
-bool8 sub_8125DA8(void)
+bool8 sub_8125DA8(void) // trade.s save
{
- u8 v0 = sub_812550C(14, gSaveSectionLocations);
- if (gUnknown_03005EA8)
+ u8 retVal = sub_812550C(14, gSaveSectionLocations);
+ if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
- if (v0 == 0xFF)
+ if (retVal == 0xFF)
return 1;
else
return 0;
}
-u8 sub_8125DDC(void)
+u8 sub_8125DDC(void) // trade.s save
{
sub_812556C(14, gSaveSectionLocations);
- if (gUnknown_03005EA8)
+ if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
}
-u8 sub_8125E04(void)
+u8 sub_8125E04(void) // trade.s save
{
sub_8125758(14, gSaveSectionLocations);
- if (gUnknown_03005EA8)
+ if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
}
u8 sub_8125E2C(void)
{
- if (gUnknown_3004820 != 1)
+ if (gFlashMemoryPresent != TRUE)
return 1;
SaveSerializedGame();
- sub_81254C8(gSaveSectionLocations);
+ RestoreSaveBackupVars(gSaveSectionLocations);
sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations);
return 0;
}
@@ -651,7 +684,7 @@ u8 sub_8125E6C(void)
sub_81257F0(val, gSaveSectionLocations);
retVal = 1;
}
- if (gUnknown_03005EA8)
+ if (gDamagedSaveSectors)
DoSaveFailedScreen(1);
return retVal;
}
@@ -660,7 +693,7 @@ u8 sub_8125EC8(u8 a1)
{
u8 result;
- if (gUnknown_3004820 != 1)
+ if (gFlashMemoryPresent != TRUE)
{
gSaveFileStatus = 4;
return 0xFF;
@@ -673,7 +706,7 @@ u8 sub_8125EC8(u8 a1)
result = sub_812587C(0xFFFF, gSaveSectionLocations);
LoadSerializedGame();
gSaveFileStatus = result;
- gUnknown_03005EBC = 0;
+ gGameContinueCallback = 0;
break;
case 3:
result = sub_8125B88(28, gHallOfFameSaveSectionLocations[0].data, gHallOfFameSaveSectionLocations[0].size);
@@ -690,12 +723,12 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
u16 i;
char *raw = (char *)a1;
- for (i = 0; i < 0x1000; i++)
+ for (i = 0; i < sizeof(struct SaveSection); i++)
raw[i] = 0;
- ReadFlash(gUnknown_08401E24[0], 0, a1->data, 4096);
+ ReadFlash(gFlashSectors[0], 0, a1->data, 4096);
- if (a1->unknown != 0x8012025)
+ if (a1->security != UNKNOWN_CHECK_VALUE)
return FALSE;
return TRUE;
@@ -704,10 +737,10 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
u8 unref_sub_8125FA0(void)
{
u16 i;
- u8 v0 = sub_8125D44(0);
+ u8 v0 = TrySavingData(0);
for (i = 0; i < 2; i++)
- EraseFlashSector(gUnknown_08401E24[i]);
+ EraseFlashSector(gFlashSectors[i]);
if (v0 == 255)
{
@@ -729,25 +762,25 @@ u8 unref_sub_8125FF0(u8 *data, u16 size)
u16 i;
struct UnkSaveSection *section = (struct UnkSaveSection *)&unk_2000000;
- for (i = 0; i < 0x1000; i++)
+ for (i = 0; i < sizeof(struct SaveSection); i++)
((char *)section)[i] = 0;
- section->unknown = 0x8012025;
+ section->security = UNKNOWN_CHECK_VALUE;
for (i = 0; i < size; i++)
section->data[i] = data[i];
- gUnknown_02039284 = ProgramFlashSectorAndVerifyNBytes(gUnknown_08401E24[0], (u8 *)section, 0x1000);
+ gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(gFlashSectors[0], (u8 *)section, sizeof(struct SaveSection));
- if (gUnknown_02039284)
- return 255;
+ if (gLastSaveSectorStatus)
+ return 0xFF;
else
return 1;
}
u8 unref_sub_8126068(u8 sector, u8 *data, u32 size)
{
- if (ProgramFlashSectorAndVerify(sector, data, size))
+ if (ProgramFlashSectorAndVerify(sector, data))
return 255;
else
return 1;
@@ -755,6 +788,6 @@ u8 unref_sub_8126068(u8 sector, u8 *data, u32 size)
u8 unref_sub_8126080(u8 sector, u8 *data)
{
- ReadFlash(sector, 0, data, 0x1000);
+ ReadFlash(sector, 0, data, sizeof(struct SaveSection));
return 1;
}
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 2396aab15..dd0e1b966 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -1,14 +1,14 @@
#include "global.h"
+#include "asm.h"
+#include "gba/flash_internal.h"
+#include "m4a.h"
#include "main.h"
-#include "sprite.h"
+#include "menu.h"
#include "palette.h"
+#include "save.h"
+#include "sprite.h"
#include "task.h"
#include "text.h"
-#include "menu.h"
-#include "save.h"
-#include "m4a.h"
-#include "gba/flash_internal.h"
-#include "asm.h"
// In English 1.0, the text window is too small, causing text to overflow.
@@ -20,18 +20,19 @@
#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4)
-struct SaveFailedStruct
+struct SaveFailedClockStruct
{
- u16 unk0;
- u16 unk2;
+ bool16 clockRunning;
+ u16 timer; // appears to be unused, the only case its "used" cannot be reached normally
+ u8 unused[0xE]; // appears to be unused space. alternatively, there could have been multiple clock structs. however, neither of these cases are fulfilled, so the purpose of this space is unknown. one theory is that there is room for 3 more clock structs (2 16-bit values), so its possible GF intended there to be support for link-based save failed screens in case the synchronization failed, or it in fact was present in an earlier build but taken out for reasons.
};
extern u8 unk_2000000[];
-extern u16 gUnknown_0203933C;
-extern struct SaveFailedStruct gUnknown_0203933E;
-extern u32 gUnknown_03005EA8;
-extern u32 gUnknown_03005EBC;
+extern u16 gSaveFailedType;
+extern struct SaveFailedClockStruct gSaveFailedClockInfo;
+extern u32 gDamagedSaveSectors;
+extern u32 gGameContinueCallback;
extern u8 gBirchHelpGfx[];
@@ -44,10 +45,7 @@ extern u8 gSystemText_GameplayEnded[];
extern u8 gBirchGrassTilemap[];
extern u8 gBirchBagTilemap[];
-
-extern const u8 gSaveFailedClockGfx[];
-extern const u8 gSaveFailedClockPal[];
-extern u8 gBirchBagGrassPal[];
+extern u8 gBirchBagGrassPal[0x40];
static const struct OamData sClockOamData =
{
@@ -78,6 +76,9 @@ static const u8 sClockFrames[8][3] =
{ 5, 1, 0 },
};
+static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal");
+static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz");
+
static void VBlankCB(void);
static void CB2_SaveFailedScreen(void);
static void CB2_WipeSave(void);
@@ -89,11 +90,11 @@ static bool8 VerifySectorWipe(u16 sector);
static bool8 WipeSector(u16 sector);
static bool8 WipeSectors(u32 sectorBits);
-void DoSaveFailedScreen(u8 var)
+void DoSaveFailedScreen(u8 saveType)
{
SetMainCallback2(CB2_SaveFailedScreen);
- gUnknown_0203933C = var;
- gUnknown_0203933E.unk0 = 0;
+ gSaveFailedType = saveType;
+ gSaveFailedClockInfo.clockRunning = FALSE;
}
static void VBlankCB(void)
@@ -107,7 +108,7 @@ static void CB2_SaveFailedScreen(void)
{
u16 ime;
- switch(gMain.state)
+ switch (gMain.state)
{
case 0:
default:
@@ -135,8 +136,8 @@ static void CB2_SaveFailedScreen(void)
ResetSpriteData();
ResetTasks();
ResetPaletteFade();
- LoadPalette(&gBirchBagGrassPal, 0, 0x40);
- LoadPalette(&gSaveFailedClockPal, 0x100, 0x20);
+ 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
@@ -169,11 +170,11 @@ static void CB2_WipeSave(void)
{
u8 wipeTries = 0;
- gUnknown_0203933E.unk0 = 1;
+ gSaveFailedClockInfo.clockRunning = TRUE;
- while (gUnknown_03005EA8 && wipeTries < 3)
+ while (gDamagedSaveSectors != 0 && wipeTries < 3) // while there are still attempts left, keep trying to fix the save sectors.
{
- if (WipeSectors(gUnknown_03005EA8))
+ if (WipeSectors(gDamagedSaveSectors) != FALSE)
{
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1);
@@ -183,9 +184,9 @@ static void CB2_WipeSave(void)
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
MenuPrint(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1);
- sub_8125C3C(gUnknown_0203933C);
+ HandleSavingData(gSaveFailedType);
- if (gUnknown_03005EA8)
+ if (gDamagedSaveSectors != 0)
{
#ifdef BUGFIX_SAVEFAILEDSCREEN2
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
@@ -206,9 +207,10 @@ static void CB2_WipeSave(void)
{
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
- if (!gUnknown_03005EBC) // cant continue game.
+ // no callback exists, so the game cannot continue.
+ if (gGameContinueCallback == 0)
MenuPrint(gSystemText_SaveCompletedGameEnd, 2, MSG_WIN_TOP + 1);
- else // can continue game.
+ else // callback exists, so continue
MenuPrint(gSystemText_SaveCompletedPressA, 2, MSG_WIN_TOP + 1);
}
@@ -217,7 +219,7 @@ static void CB2_WipeSave(void)
static void CB2_GameplayCannotBeContinued(void)
{
- gUnknown_0203933E.unk0 = 0;
+ gSaveFailedClockInfo.clockRunning = FALSE;
if (gMain.newKeys & A_BUTTON)
{
@@ -230,13 +232,11 @@ static void CB2_GameplayCannotBeContinued(void)
static void CB2_FadeAndReturnToTitleScreen(void)
{
- u8 zero;
-
- gUnknown_0203933E.unk0 = zero = 0;
+ gSaveFailedClockInfo.clockRunning = FALSE;
if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, zero, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
SetVBlankCallback(VBlankCB);
SetMainCallback2(CB2_ReturnToTitleScreen);
}
@@ -246,14 +246,14 @@ static void CB2_ReturnToTitleScreen(void)
{
if (!UpdatePaletteFade())
{
- if (!gUnknown_03005EBC)
+ if (gGameContinueCallback == 0) // no callback exists, so do a soft reset.
{
DoSoftReset();
}
else
{
- SetMainCallback2((MainCallback)gUnknown_03005EBC);
- gUnknown_03005EBC = 0;
+ SetMainCallback2((MainCallback)gGameContinueCallback);
+ gGameContinueCallback = 0;
}
}
}
@@ -266,7 +266,7 @@ static void VBlankCB_UpdateClockGraphics(void)
gMain.oamBuffer[0].x = 112;
gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;
- if (gUnknown_0203933E.unk0)
+ if (gSaveFailedClockInfo.clockRunning != FALSE)
{
gMain.oamBuffer[0].tileNum = sClockFrames[n][0];
gMain.oamBuffer[0].matrixNum = (sClockFrames[n][2] << 4) | (sClockFrames[n][1] << 3);
@@ -278,8 +278,8 @@ static void VBlankCB_UpdateClockGraphics(void)
CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4);
- if (gUnknown_0203933E.unk2)
- gUnknown_0203933E.unk2--;
+ if (gSaveFailedClockInfo.timer) // maybe was used for debugging?
+ gSaveFailedClockInfo.timer--;
}
static bool8 VerifySectorWipe(u16 sector)
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
index d2fda59d6..7899fabb1 100644
--- a/src/save_menu_util.c
+++ b/src/save_menu_util.c
@@ -1,10 +1,10 @@
#include "global.h"
#include "save_menu_util.h"
#include "asm.h"
-#include "menu.h"
#include "event_data.h"
-#include "string_util.h"
+#include "menu.h"
#include "pokedex.h"
+#include "string_util.h"
extern u8 gOtherText_Player[];
extern u8 gOtherText_Badges[];
@@ -15,7 +15,8 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top)
{
u32 width = 12;
- if (sub_809473C())
+ // old handle for setting window width?
+ if (IsResizeSaveWindowEnabled())
width = 13;
if (FlagGet(SYS_POKEDEX_GET))
@@ -39,11 +40,12 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top)
}
}
-void sub_80946C8(u16 left, u16 top)
+void HandleCloseSaveWindow(u16 left, u16 top)
{
u32 width = 12;
- if (sub_809473C())
+ // old handle for setting window width?
+ if (IsResizeSaveWindowEnabled())
width = 13;
if (FlagGet(SYS_POKEDEX_GET))
@@ -52,9 +54,14 @@ void sub_80946C8(u16 left, u16 top)
MenuZeroFillWindowRect(left, top, left + width, top + 9);
}
-u8 sub_809473C()
+/*
+theory: This function was used to handle the save menu window's width being auto sized from
+either 12 or 13 in an older source. Whatever was here might have either been optimized out by
+GF's compiler or was dummied out to always return a TRUE at some point.
+*/
+u8 IsResizeSaveWindowEnabled(void) // i don't know what else to name it..
{
- return 1;
+ return TRUE;
}
void PrintSavePlayerName(s16 x, s16 y)
@@ -74,22 +81,18 @@ void PrintSaveMapName(s16 x, s16 y)
void PrintSaveBadges(s16 x, s16 y)
{
char badges[16];
- u8 badgeCount;
MenuPrint(gOtherText_Badges, x, y);
- badgeCount = GetBadgeCount();
- ConvertIntToDecimalString(badges, badgeCount);
+ ConvertIntToDecimalString(badges, GetBadgeCount());
MenuPrint_RightAligned(badges, x + 12, y);
}
void PrintSavePokedexCount(s16 x, s16 y)
{
char pokedex[16];
- u16 pokedexCount;
MenuPrint(gOtherText_Pokedex, x, y);
- pokedexCount = GetPokedexSeenCount();
- ConvertIntToDecimalStringN(pokedex, pokedexCount, 1, 3);
+ ConvertIntToDecimalStringN(pokedex, GetPokedexSeenCount(), 1, 3);
MenuPrint_RightAligned(pokedex, x + 12, y);
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index d3d28f923..b780cc6b4 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1,28 +1,35 @@
#include "global.h"
#include "asm.h"
+#include "asm_fieldmap.h"
#include "battle_setup.h"
#include "berry.h"
+#include "coins.h"
+#include "decoration.h"
+#include "event_data.h"
+#include "field_effect.h"
+#include "field_message_box.h"
#include "field_player_avatar.h"
+#include "field_map_obj_helpers.h"
+#include "field_door.h"
#include "item.h"
-#include "script.h"
-#include "rng.h"
-#include "palette.h"
-#include "rtc.h"
-#include "pokemon.h"
-#include "asm_fieldmap.h"
#include "main.h"
+#include "map_obj_lock.h"
#include "menu.h"
#include "money.h"
-#include "decoration.h"
-#include "field_message_box.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "rng.h"
+#include "rom4.h"
+#include "rtc.h"
+#include "script.h"
#include "sound.h"
#include "string_util.h"
-#include "event_data.h"
-#include "rom4.h"
#include "weather.h"
-#include "map_obj_lock.h"
-#include "coins.h"
-#include "field_effect.h"
+#include "script_menu.h"
+#include "script_pokemon_80F9.h"
+#include "script_pokemon_80C4.h"
+#include "clock.h"
+#include "contest_painting.h"
typedef u16 (*SpecialFunc)(void);
typedef void (*NativeFunc)(void);
@@ -561,7 +568,7 @@ bool8 ScrCmd_darken(struct ScriptContext *ctx)
return FALSE;
}
-bool8 sub_8066248(void)
+bool8 IsPaletteNotActive(void)
{
if (!gPaletteFade.active)
return TRUE;
@@ -572,7 +579,7 @@ bool8 sub_8066248(void)
bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
{
fade_screen(ScriptReadByte(ctx), 0);
- SetupNativeScript(ctx, sub_8066248);
+ SetupNativeScript(ctx, IsPaletteNotActive);
return TRUE;
}
@@ -581,7 +588,7 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
u8 duration = ScriptReadByte(ctx);
u8 delay = ScriptReadByte(ctx);
fade_screen(duration, delay);
- SetupNativeScript(ctx, sub_8066248);
+ SetupNativeScript(ctx, IsPaletteNotActive);
return TRUE;
}
@@ -1170,7 +1177,7 @@ bool8 ScrCmd_closebutton(struct ScriptContext *ctx)
return FALSE;
}
-bool8 sub_80670C0()
+bool8 WaitForAorBPress(void)
{
if (gMain.newKeys & A_BUTTON)
return TRUE;
@@ -1181,7 +1188,7 @@ bool8 sub_80670C0()
bool8 ScrCmd_waitbutton(struct ScriptContext *ctx)
{
- SetupNativeScript(ctx, sub_80670C0);
+ SetupNativeScript(ctx, WaitForAorBPress);
return TRUE;
}
diff --git a/src/script_menu.c b/src/script_menu.c
index c4f0b5292..de3dd7269 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1,44 +1,585 @@
#include "global.h"
-#include "task.h"
+#include "event_data.h"
#include "menu.h"
#include "palette.h"
#include "script.h"
#include "sound.h"
-#include "event_data.h"
#include "sprite.h"
+#include "task.h"
+#include "strings.h"
+#include "script_menu.h"
-struct MultichoiceListStruct
+// multichoice lists
+const struct MenuAction MultichoiceList_00[] =
{
- struct MenuAction *list;
- u8 count;
+ {(u8 *)OtherText_Petalburg, 0},
+ {(u8 *)OtherText_Slateport, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
};
-extern const struct MultichoiceListStruct gMultichoiceLists[];
+const struct MenuAction MultichoiceList_02[] =
+{
+ {(u8 *)OtherText_Enter, 0},
+ {(u8 *)OtherText_Info3, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
-extern u16 gScriptResult;
+const struct MenuAction MultichoiceList_03[] =
+{
+ {(u8 *)OtherText_WhatsAContest, 0},
+ {(u8 *)OtherText_TypesOfContest, 0},
+ {(u8 *)OtherText_Ranks, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
-extern void FreeResourcesAndDestroySprite(struct Sprite *sprite);
-extern u8 CreateMonSprite_PicBox(u16, s16, s16, u8);
-extern u8 sub_80B59AC(void);
+const struct MenuAction MultichoiceList_04[] =
+{
+ {(u8 *)OtherText_CoolContest, 0},
+ {(u8 *)OtherText_BeautyContest, 0},
+ {(u8 *)OtherText_CuteContest, 0},
+ {(u8 *)OtherText_SmartContest, 0},
+ {(u8 *)OtherText_ToughContest, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_06[] =
+{
+ {(u8 *)OtherText_Decoration, 0},
+ {(u8 *)OtherText_PackUp, 0},
+ {(u8 *)OtherText_Registry, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_05[] =
+{
+ {(u8 *)OtherText_Decoration, 0},
+ {(u8 *)OtherText_PackUp, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_07[] =
+{
+ {(u8 *)OtherText_Register, 0},
+ {(u8 *)OtherText_Registry, 0},
+ {(u8 *)OtherText_Information, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_12[] =
+{
+ {(u8 *)OtherText_Mach, 0},
+ {(u8 *)OtherText_Acro, 0},
+};
+
+const struct MenuAction MultichoiceList_13[] =
+{
+ {(u8 *)OtherText_Poison, 0},
+ {(u8 *)OtherText_Paralysis, 0},
+ {(u8 *)OtherText_Sleep, 0},
+ {(u8 *)OtherText_Burn, 0},
+ {(u8 *)OtherText_Frozen, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_14[] =
+{
+ {(u8 *)OtherText_Dewford, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_16[] =
+{
+ {(u8 *)OtherText_SawIt, 0},
+ {(u8 *)OtherText_NotYet, 0},
+};
+
+const struct MenuAction MultichoiceList_17[] =
+{
+ {(u8 *)OtherText_Yes, 0},
+ {(u8 *)OtherText_No, 0},
+ {(u8 *)OtherText_Info3, 0},
+};
+
+const struct MenuAction MultichoiceList_18[] =
+{
+ {(u8 *)OtherText_SingleBattle, 0},
+ {(u8 *)OtherText_DoubleBattle, 0},
+ {(u8 *)OtherText_MultiBattle, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_19[] =
+{
+ {(u8 *)OtherText_Littleroot, 0},
+ {(u8 *)OtherText_Slateport, 0},
+ {(u8 *)OtherText_Lilycove, 0},
+};
+
+const struct MenuAction MultichoiceList_20[] =
+{
+ {(u8 *)OtherText_Yes, 0},
+ {(u8 *)OtherText_No, 0},
+ {(u8 *)OtherText_Info3, 0},
+};
+
+const struct MenuAction MultichoiceList_23[] =
+{
+ {(u8 *)OtherText_MakeAChallenge, 0},
+ {(u8 *)OtherText_ObtainInformation, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_24[] =
+{
+ {(u8 *)OtherText_Lv50_2, 0},
+ {(u8 *)OtherText_Lv100_2, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_25[] =
+{
+ {(u8 *)OtherText_Zigzagoon, 0},
+ {(u8 *)OtherText_Nincada, 0},
+ {(u8 *)OtherText_Poochyena, 0},
+};
+
+const struct MenuAction MultichoiceList_26[] =
+{
+ {(u8 *)OtherText_Nincada2, 0},
+ {(u8 *)OtherText_Lotad, 0},
+ {(u8 *)OtherText_Roselia, 0},
+};
+
+const struct MenuAction MultichoiceList_27[] =
+{
+ {(u8 *)OtherText_Shroomish, 0},
+ {(u8 *)OtherText_Nincada3, 0},
+ {(u8 *)OtherText_Surskit, 0},
+};
+
+const struct MenuAction MultichoiceList_28[] =
+{
+ {(u8 *)OtherText_Treecko, 0},
+ {(u8 *)OtherText_Torchic, 0},
+ {(u8 *)OtherText_Mudkip, 0},
+};
+
+const struct MenuAction MultichoiceList_29[] =
+{
+ {(u8 *)OtherText_Seedot, 0},
+ {(u8 *)OtherText_Shroomish2, 0},
+ {(u8 *)OtherText_Spinda, 0},
+};
+
+const struct MenuAction MultichoiceList_30[] =
+{
+ {(u8 *)OtherText_Shroomish3, 0},
+ {(u8 *)OtherText_Zigzagoon2, 0},
+ {(u8 *)OtherText_Wurmple, 0},
+};
+
+const struct MenuAction MultichoiceList_31[] =
+{
+ {(u8 *)OtherText_PokeBall, 0},
+ {(u8 *)OtherText_SuperPotion, 0},
+ {(u8 *)OtherText_SamePrice, 0},
+};
+
+const struct MenuAction MultichoiceList_32[] =
+{
+ {(u8 *)OtherText_Yen135, 0},
+ {(u8 *)OtherText_Yen155, 0},
+ {(u8 *)OtherText_Yen175, 0},
+};
+
+const struct MenuAction MultichoiceList_33[] =
+{
+ {(u8 *)OtherText_CostMore, 0},
+ {(u8 *)OtherText_CostLess, 0},
+ {(u8 *)OtherText_SamePrice2, 0},
+};
+
+const struct MenuAction MultichoiceList_34[] =
+{
+ {(u8 *)OtherText_MaleSymbol, 0},
+ {(u8 *)OtherText_FemaleSymbol, 0},
+ {(u8 *)OtherText_Neither, 0},
+};
+
+const struct MenuAction MultichoiceList_35[] =
+{
+ {(u8 *)OtherText_Males, 0},
+ {(u8 *)OtherText_Females, 0},
+ {(u8 *)OtherText_SameNumber, 0},
+};
+
+const struct MenuAction MultichoiceList_36[] =
+{
+ {(u8 *)OtherText_Male, 0},
+ {(u8 *)OtherText_Female, 0},
+ {(u8 *)OtherText_ItDepends, 0},
+};
+
+const struct MenuAction MultichoiceList_37[] =
+{
+ {(u8 *)OtherText_Six2, 0},
+ {(u8 *)OtherText_Eight2, 0},
+ {(u8 *)OtherText_Ten, 0},
+};
+
+const struct MenuAction MultichoiceList_38[] =
+{
+ {(u8 *)OtherText_One, 0},
+ {(u8 *)OtherText_Two, 0},
+ {(u8 *)OtherText_Three, 0},
+};
+
+const struct MenuAction MultichoiceList_39[] =
+{
+ {(u8 *)OtherText_Six, 0},
+ {(u8 *)OtherText_Seven, 0},
+ {(u8 *)OtherText_Eight, 0},
+};
+
+const struct MenuAction MultichoiceList_42[] =
+{
+ {(u8 *)OtherText_FreshWater, 0},
+ {(u8 *)OtherText_SodaPop, 0},
+ {(u8 *)OtherText_Lemonade, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_43[] =
+{
+ {(u8 *)OtherText_HowToRide, 0},
+ {(u8 *)OtherText_HowToTurn, 0},
+ {(u8 *)OtherText_SandySlopes, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_44[] =
+{
+ {(u8 *)OtherText_Wheelies, 0},
+ {(u8 *)OtherText_BunnyHops, 0},
+ {(u8 *)OtherText_Jumping, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_45[] =
+{
+ {(u8 *)OtherText_Satisfied, 0},
+ {(u8 *)OtherText_Dissatisfied, 0},
+};
+
+const struct MenuAction MultichoiceList_46[] =
+{
+ {(u8 *)OtherText_Deepseatooth, 0},
+ {(u8 *)OtherText_Deepseascale, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_47[] =
+{
+ {(u8 *)OtherText_BlueFlute2, 0},
+ {(u8 *)OtherText_YellowFlute2, 0},
+ {(u8 *)OtherText_RedFlute2, 0},
+ {(u8 *)OtherText_WhiteFlute2, 0},
+ {(u8 *)OtherText_BlackFlute2, 0},
+ {(u8 *)OtherText_GlassChair, 0},
+ {(u8 *)OtherText_GlassDesk, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_48[] =
+{
+ {(u8 *)OtherText_TreeckoDoll, 0},
+ {(u8 *)OtherText_TorchicDoll, 0},
+ {(u8 *)OtherText_MudkipDoll, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_55[] =
+{
+ {(u8 *)OtherText_TM32, 0},
+ {(u8 *)OtherText_TM29, 0},
+ {(u8 *)OtherText_TM35, 0},
+ {(u8 *)OtherText_TM24, 0},
+ {(u8 *)OtherText_TM13, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_49[] =
+{
+ {(u8 *)OtherText_50Coins, 0},
+ {(u8 *)OtherText_500Coins, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_50[] =
+{
+ {(u8 *)OtherText_Excellent, 0},
+ {(u8 *)OtherText_NotSoHot, 0},
+};
+
+const struct MenuAction MultichoiceList_52[] =
+{
+ {(u8 *)OtherText_Lilycove, 0},
+ {(u8 *)OtherText_BattleTower, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_53[] =
+{
+ {(u8 *)OtherText_Slateport, 0},
+ {(u8 *)OtherText_Lilycove, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_54[] =
+{
+ {(u8 *)OtherText_Right, 0},
+ {(u8 *)OtherText_Left, 0},
+};
+
+const struct MenuAction MultichoiceList_56[] =
+{
+ {(u8 *)OtherText_Slateport, 0},
+ {(u8 *)OtherText_BattleTower, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_57[] =
+{
+ {(u8 *)OtherText_1F_2, 0},
+ {(u8 *)OtherText_2F_2, 0},
+ {(u8 *)OtherText_3F_2, 0},
+ {(u8 *)OtherText_4F_2, 0},
+ {(u8 *)OtherText_5F_2, 0},
+};
+
+const struct MenuAction MultichoiceList_58[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_59[] =
+{
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_60[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_61[] =
+{
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_62[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_63[] =
+{
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_64[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_65[] =
+{
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_66[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_67[] =
+{
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_68[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_69[] =
+{
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_70[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_71[] =
+{
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_72[] =
+{
+ {(u8 *)OtherText_RedShard, 0},
+ {(u8 *)OtherText_YellowShard, 0},
+ {(u8 *)OtherText_BlueShard, 0},
+ {(u8 *)OtherText_GreenShard, 0},
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MenuAction MultichoiceList_01[] =
+{
+ {(u8 *)gOtherText_CancelNoTerminator, 0},
+};
+
+const struct MultichoiceListStruct gMultichoiceLists[] =
+{
+ {(struct MenuAction *)MultichoiceList_00, 3},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_02, 3},
+ {(struct MenuAction *)MultichoiceList_03, 4},
+ {(struct MenuAction *)MultichoiceList_04, 6},
+ {(struct MenuAction *)MultichoiceList_05, 3},
+ {(struct MenuAction *)MultichoiceList_06, 4},
+ {(struct MenuAction *)MultichoiceList_07, 4},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_12, 2},
+ {(struct MenuAction *)MultichoiceList_13, 6},
+ {(struct MenuAction *)MultichoiceList_14, 2},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_16, 2},
+ {(struct MenuAction *)MultichoiceList_17, 3},
+ {(struct MenuAction *)MultichoiceList_18, 4},
+ {(struct MenuAction *)MultichoiceList_19, 3},
+ {(struct MenuAction *)MultichoiceList_20, 3},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_23, 3},
+ {(struct MenuAction *)MultichoiceList_24, 3},
+ {(struct MenuAction *)MultichoiceList_25, 3},
+ {(struct MenuAction *)MultichoiceList_26, 3},
+ {(struct MenuAction *)MultichoiceList_27, 3},
+ {(struct MenuAction *)MultichoiceList_28, 3},
+ {(struct MenuAction *)MultichoiceList_29, 3},
+ {(struct MenuAction *)MultichoiceList_30, 3},
+ {(struct MenuAction *)MultichoiceList_31, 3},
+ {(struct MenuAction *)MultichoiceList_32, 3},
+ {(struct MenuAction *)MultichoiceList_33, 3},
+ {(struct MenuAction *)MultichoiceList_34, 3},
+ {(struct MenuAction *)MultichoiceList_35, 3},
+ {(struct MenuAction *)MultichoiceList_36, 3},
+ {(struct MenuAction *)MultichoiceList_37, 3},
+ {(struct MenuAction *)MultichoiceList_38, 3},
+ {(struct MenuAction *)MultichoiceList_39, 3},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_42, 4},
+ {(struct MenuAction *)MultichoiceList_43, 4},
+ {(struct MenuAction *)MultichoiceList_44, 4},
+ {(struct MenuAction *)MultichoiceList_45, 2},
+ {(struct MenuAction *)MultichoiceList_46, 3},
+ {(struct MenuAction *)MultichoiceList_47, 8},
+ {(struct MenuAction *)MultichoiceList_48, 4},
+ {(struct MenuAction *)MultichoiceList_49, 3},
+ {(struct MenuAction *)MultichoiceList_50, 2},
+ {(struct MenuAction *)MultichoiceList_01, 1},
+ {(struct MenuAction *)MultichoiceList_52, 3},
+ {(struct MenuAction *)MultichoiceList_53, 3},
+ {(struct MenuAction *)MultichoiceList_54, 2},
+ {(struct MenuAction *)MultichoiceList_55, 6},
+ {(struct MenuAction *)MultichoiceList_56, 3},
+ {(struct MenuAction *)MultichoiceList_57, 5},
+ {(struct MenuAction *)MultichoiceList_58, 2},
+ {(struct MenuAction *)MultichoiceList_59, 2},
+ {(struct MenuAction *)MultichoiceList_60, 3},
+ {(struct MenuAction *)MultichoiceList_61, 2},
+ {(struct MenuAction *)MultichoiceList_62, 3},
+ {(struct MenuAction *)MultichoiceList_63, 3},
+ {(struct MenuAction *)MultichoiceList_64, 4},
+ {(struct MenuAction *)MultichoiceList_65, 2},
+ {(struct MenuAction *)MultichoiceList_66, 3},
+ {(struct MenuAction *)MultichoiceList_67, 3},
+ {(struct MenuAction *)MultichoiceList_68, 4},
+ {(struct MenuAction *)MultichoiceList_69, 3},
+ {(struct MenuAction *)MultichoiceList_70, 4},
+ {(struct MenuAction *)MultichoiceList_71, 4},
+ {(struct MenuAction *)MultichoiceList_72, 5}
+};
+
+const struct TextStruct gUnknown_083CE048[] =
+{
+ OtherText_Cool2,
+ OtherText_Beauty3,
+ OtherText_Cute2,
+ OtherText_Smart2,
+ OtherText_Tough2,
+ OtherText_Normal,
+ OtherText_Super,
+ OtherText_Hyper,
+ OtherText_Master,
+ OtherText_Cool3,
+ OtherText_Beauty4,
+ OtherText_Cute3,
+ OtherText_Smart3,
+ OtherText_Tough3,
+ OtherText_Items,
+ OtherText_KeyItems,
+ OtherText_Balls,
+ OtherText_TMsHMs,
+ OtherText_Berries,
+};
-extern u8 gPCText_PlayersPC[];
-extern u8 gPCText_SomeonesPC[];
-extern u8 gPCText_HallOfFame[];
-extern u8 gPCText_LogOff[];
-extern u8 gPCText_LanettesPC[];
extern u8 gPCText_WhichPCShouldBeAccessed[];
-void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8);
-void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8);
-void sub_80B52B4(u8);
-void sub_80B5230(u8, u8, u8, u8, u8, u8);
-void task_yes_no_maybe(u8);
-void sub_80B5684(u8);
-void CreatePCMenu(void);
+extern u16 gScriptResult;
+
+// field_effect
+extern void FreeResourcesAndDestroySprite(struct Sprite *sprite);
+extern u8 CreateMonSprite_PicBox(u16, s16, s16, u8);
bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4)
{
- if(FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(sub_80B52B4) == 1)
return FALSE;
else
{
@@ -50,7 +591,7 @@ bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4)
bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5)
{
- if(FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(sub_80B52B4) == 1)
return FALSE;
else
{
@@ -60,7 +601,7 @@ bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5)
}
}
-u16 GetStringWidthInTilesForScriptMenu(u8 *str)
+u16 GetStringWidthInTilesForScriptMenu(const u8 *str)
{
// each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8.
return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8;
@@ -74,17 +615,17 @@ void DrawMultichoiceMenu(u8 left, u8 top, u8 count, struct MenuAction *list, u8
u8 right;
u8 bottom;
- for(i = 1; i < count; i++)
+ for (i = 1; i < count; i++)
{
newWidth = GetStringWidthInTilesForScriptMenu(list[i].text);
- if(width < newWidth)
+ if (width < newWidth)
width = newWidth;
}
right = width;
right = (right + left) + 1;
- if(right > 29)
+ if (right > 29)
{
left = left + (29 - right);
right = 29;
@@ -108,7 +649,7 @@ void sub_80B5230(u8 left, u8 top, u8 right, u8 bottom, u8 unkVar, u8 count)
gTasks[taskId].data[3] = bottom;
gTasks[taskId].data[4] = unkVar;
- if(count > 3)
+ if (count > 3)
gTasks[taskId].data[5] = TRUE;
else
gTasks[taskId].data[5] = FALSE;
@@ -118,18 +659,18 @@ void sub_80B52B4(u8 taskId)
{
s8 var;
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- if(!gTasks[taskId].data[5])
+ if (!gTasks[taskId].data[5])
var = ProcessMenuInputNoWrap();
else
var = ProcessMenuInput();
- if(var != -2)
+ if (var != -2)
{
- if(var == -1)
+ if (var == -1)
{
- if(!gTasks[taskId].data[4])
+ if (!gTasks[taskId].data[4])
{
PlaySE(5);
gScriptResult = 127;
@@ -153,7 +694,7 @@ void sub_80B52B4(u8 taskId)
bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4)
{
- if(FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(sub_80B52B4) == 1)
return FALSE;
else
{
@@ -171,10 +712,10 @@ void sub_80B53B4(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4)
u8 right;
u8 bottom;
- for(i = 1; i < count; i++)
+ for (i = 1; i < count; i++)
{
newWidth = GetStringWidthInTilesForScriptMenu(list[i].text);
- if(width < newWidth)
+ if (width < newWidth)
width = newWidth;
}
@@ -191,7 +732,7 @@ bool8 yes_no_box(u8 var1, u8 var2)
{
u8 taskId;
- if(FuncIsActiveTask(task_yes_no_maybe) == 1)
+ if (FuncIsActiveTask(task_yes_no_maybe) == 1)
return FALSE;
else
{
@@ -207,7 +748,7 @@ bool8 yes_no_box(u8 var1, u8 var2)
// unused
bool8 IsScriptActive(void)
{
- if(gScriptResult == 0xFF)
+ if (gScriptResult == 0xFF)
return FALSE;
else
return TRUE;
@@ -315,7 +856,7 @@ void sub_80B5684(u8 taskId)
bool8 TryCreatePCMenu(void)
{
- if(FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(sub_80B52B4) == 1)
return FALSE;
else
{
@@ -331,12 +872,12 @@ void CreatePCMenu(void)
u8 width;
u8 numChoices;
- if(playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC))
+ if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC))
width = playersPCWidth;
else
width = 8;
- if(FlagGet(SYS_GAME_CLEAR)) // player has cleared game?
+ if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game?
{
numChoices = 4;
MenuDrawTextWindow(0, 0, width + 2, 9);
@@ -350,7 +891,7 @@ void CreatePCMenu(void)
MenuPrint(gPCText_LogOff, 1, 5);
}
- if(FlagGet(SYS_PC_LANETTE)) // player met lanette?
+ if (FlagGet(SYS_PC_LANETTE)) // player met lanette?
MenuPrint(gPCText_LanettesPC, 1, 1);
else
MenuPrint(gPCText_SomeonesPC, 1, 1);
@@ -369,8 +910,8 @@ void sub_80B5838(void)
void task_picbox(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
- switch(task->data[0])
+
+ switch (task->data[0])
{
case 0:
task->data[0]++;
@@ -393,7 +934,7 @@ bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3)
u8 taskId;
u8 var;
- if(FindTaskIdByFunc(task_picbox) != 0xFF)
+ if (FindTaskIdByFunc(task_picbox) != 0xFF)
return FALSE;
else
{
@@ -415,7 +956,7 @@ void *picbox_close(void)
{
u8 taskId = FindTaskIdByFunc(task_picbox);
- if(taskId == 0xFF)
+ if (taskId == 0xFF)
return NULL;
gTasks[taskId].data[0]++;
@@ -424,7 +965,7 @@ void *picbox_close(void)
bool8 sub_80B59AC(void)
{
- if(FindTaskIdByFunc(task_picbox) == 0xFF)
+ if (FindTaskIdByFunc(task_picbox) == 0xFF)
return TRUE;
else
return FALSE;
diff --git a/src/script_movement.c b/src/script_movement.c
new file mode 100644
index 000000000..dcd772d5f
--- /dev/null
+++ b/src/script_movement.c
@@ -0,0 +1,226 @@
+#include "global.h"
+#include "asm.h"
+#include "task.h"
+#include "field_map_obj_helpers.h"
+
+extern const u32 gBitTable[];
+extern u8 *gUnknown_020384F8[];
+
+extern void UnfreezeMapObject(struct MapObject *);
+extern bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
+
+static void sub_80A2198(u8);
+static u8 sub_80A21E0(void);
+static bool8 sub_80A21F4(u8, u8, u8 *);
+static u8 sub_80A2260(u8, u8);
+static bool8 sub_80A2370(u8, u8);
+static void sub_80A23C8(u8, u8, u8, u8 *);
+static void sub_80A2408(u8);
+static void Task_80A244C(u8);
+static void sub_80A2490(u8, u8, u8, u8 *);
+
+bool8 exec_movement(u8 a, u8 b, u8 c, u8 *d)
+{
+ u8 mapObjId;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId))
+ return TRUE;
+ if (!FuncIsActiveTask(Task_80A244C))
+ sub_80A2198(50);
+ return sub_80A21F4(sub_80A21E0(), mapObjId, d);
+}
+
+bool8 sub_80A212C(u8 a, u8 b, u8 c)
+{
+ u8 mapObjId;
+ u8 r4;
+ u8 r1;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId))
+ return 1;
+ r4 = sub_80A21E0();
+ r1 = sub_80A2260(r4, mapObjId);
+ if (r1 == 16)
+ return 1;
+ return sub_80A2370(r4, r1);
+}
+
+void sub_80A2178(void)
+{
+ u8 taskId;
+
+ taskId = sub_80A21E0();
+ if (taskId != 0xFF)
+ {
+ sub_80A2408(taskId);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_80A2198(u8 priority)
+{
+ u8 taskId;
+ u8 i;
+
+ taskId = CreateTask(Task_80A244C, priority);
+ for (i = 1; i < 16; i++)
+ gTasks[taskId].data[i] = 0xFFFF;
+}
+
+static u8 sub_80A21E0(void)
+{
+ return FindTaskIdByFunc(Task_80A244C);
+}
+
+static bool8 sub_80A21F4(u8 taskId, u8 b, u8 *c)
+{
+ u8 r4;
+
+ r4 = sub_80A2260(taskId, b);
+ if (r4 != 16)
+ {
+ if (sub_80A2370(taskId, r4) == 0)
+ return TRUE;
+ else
+ {
+ sub_80A23C8(taskId, r4, b, c);
+ return FALSE;
+ }
+ }
+ r4 = sub_80A2260(taskId, 0xFF);
+ if (r4 == 16)
+ return TRUE;
+ else
+ {
+ sub_80A23C8(taskId, r4, b, c);
+ return FALSE;
+ }
+}
+
+static u8 sub_80A2260(u8 taskId, u8 b)
+{
+ u8 *ptr;
+ u8 i;
+
+ ptr = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < 16; i++, ptr++)
+ {
+ if (*ptr == b)
+ return i;
+ }
+ return 16;
+}
+
+static void sub_80A229C(u8 taskId, u8 b, u8 **c)
+{
+ u8 i;
+
+ *c = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < b; i++, (*c)++)
+ ;
+}
+
+static void sub_80A22D0(u8 taskId, u8 b, u8 c)
+{
+ u8 *ptr;
+
+ sub_80A229C(taskId, b, &ptr);
+ *ptr = c; //what is this supposed to do?
+}
+
+static void sub_80A22F4(u8 taskId, u8 b, u8 *c)
+{
+ u8 *ptr;
+
+ sub_80A229C(taskId, b, &ptr);
+ *c = *ptr;
+}
+
+static void sub_80A2318(u8 a, u8 b)
+{
+ u16 var = ~gBitTable[b];
+
+ gTasks[a].data[0] &= var;
+}
+
+static void sub_80A2348(u8 taskId, u8 b)
+{
+ gTasks[taskId].data[0] |= gBitTable[b];
+}
+
+static bool8 sub_80A2370(u8 taskId, u8 b)
+{
+ u16 var = (u16)gTasks[taskId].data[0] & gBitTable[b];
+
+ if (var != 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *b)
+{
+ gUnknown_020384F8[a] = b;
+}
+
+static u8 *sub_80A23B8(u8 a)
+{
+ return gUnknown_020384F8[a];
+}
+
+static void sub_80A23C8(u8 taskId, u8 b, u8 c, u8 *d)
+{
+ sub_80A2318(taskId, b);
+ npc_obj_offscreen_culling_and_flag_update(b, d);
+ sub_80A22D0(taskId, b, c);
+}
+
+static void sub_80A2408(u8 a)
+{
+ u8 *ptr;
+ u8 i;
+
+ ptr = (u8 *)&gTasks[a].data[1];
+ for (i = 0; i < 16; i++, ptr++)
+ {
+ if (*ptr != 0xFF)
+ UnfreezeMapObject(&gMapObjects[*ptr]);
+ }
+}
+
+static void Task_80A244C(u8 taskId)
+{
+ u8 i;
+ u8 var;
+
+ for (i = 0; i < 16; i++)
+ {
+ sub_80A22F4(taskId, i, &var);
+ if (var != 0xFF)
+ sub_80A2490(taskId, i, var, sub_80A23B8(i));
+ }
+}
+
+static void sub_80A2490(u8 taskId, u8 b, u8 c, u8 *d)
+{
+ u8 var;
+
+ if (FieldObjectIsSpecialAnimActive(&gMapObjects[c])
+ && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[c]))
+ return;
+
+ var = *d;
+ if (var == 0xFE)
+ {
+ sub_80A2348(taskId, b);
+ FreezeMapObject(&gMapObjects[c]);
+ }
+ else
+ {
+ if (!FieldObjectSetSpecialAnim(&gMapObjects[c], var))
+ {
+ d++;
+ npc_obj_offscreen_culling_and_flag_update(b, d);
+ }
+ }
+}
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
new file mode 100644
index 000000000..ba1545861
--- /dev/null
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -0,0 +1,722 @@
+#include "global.h"
+#include "contest.h"
+#include "rom4.h"
+#include "main.h"
+#include "battle.h"
+#include "event_data.h"
+#include "pokemon.h"
+#include "task.h"
+#include "menu.h"
+#include "decompress.h"
+#include "link.h"
+#include "rng.h"
+#include "pokedex.h"
+#include "asm.h"
+#include "species.h"
+#include "berry.h"
+#include "items.h"
+#include "load_save.h"
+#include "script_pokemon_80C4.h"
+
+#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);
+extern void sub_80B2A7C(u8);
+extern void sub_80AAF30(void); // matsuda debug?
+extern u8 sub_80B2C4C(u8, u8);
+extern void CB2_ContestPainting(void);
+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);
+
+extern u8 gContestPlayerMonIndex;
+extern u8 gIsLinkContest;
+extern u8 gPlayerPartyCount;
+extern u8 gSelectedOrderFromParty[];
+
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+
+extern u16 gScriptContestCategory;
+extern u16 gScriptContestRank;
+extern u16 gScriptResult;
+
+extern u32 gUnknown_03005D28;
+
+extern u8 gUnknown_02038694;
+extern u8 gUnknown_0203856C;
+extern u8 gUnknown_02038690[];
+extern u16 gUnknown_02038678[];
+
+void sub_80C4BF0(void)
+{
+ gSaveBlock1.vars[0x10] = gContestMons[0].unk16;
+ gSaveBlock1.vars[0x11] = gContestMons[1].unk16;
+ gSaveBlock1.vars[0x12] = gContestMons[2].unk16;
+}
+
+void sub_80C4C28(void)
+{
+ u16 var;
+ u8 specialVar = gSpecialVar_0x8005;
+
+ switch(specialVar)
+ {
+ case 0:
+ var = 3;
+ break;
+ case 1:
+ var = 4;
+ break;
+ case 2:
+ var = 5;
+ break;
+ default:
+ var = 100;
+ break;
+ }
+ gSpecialVar_0x8004 = var;
+}
+
+void sub_80C4C64(void)
+{
+ sub_80C46EC();
+ sub_80C4740();
+ sub_80C48F4();
+}
+
+void sub_80C4C78(void)
+{
+ u16 var;
+ u16 returnVar;
+
+ 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;
+ }
+
+ returnVar = gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[var].var;
+
+ if(returnVar == 0)
+ gSpecialVar_0x8004 = returnVar;
+ else
+ gSpecialVar_0x8004 = 1;
+}
+
+void sub_80C4CEC(void)
+{
+ sub_80B2A7C(0xFF);
+}
+
+void sub_80C4CF8(void)
+{
+ if(!gUnknown_02038690[gContestPlayerMonIndex]
+ && gScriptContestRank == 3
+ && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ {
+ gSpecialVar_0x8004 = 1;
+ }
+ else
+ {
+ gSpecialVar_0x8004 = 0;
+ }
+}
+
+u8 sub_80C4D50(void)
+{
+ u8 retVar = 0;
+ int i;
+
+ for (i = 0; i < 5; i++)
+ if (gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[i + 8].var)
+ retVar++;
+
+ return retVar;
+}
+
+// nope. too hard
+__attribute__((naked))
+void sub_80C4D80(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ ldr r0, _080C4EA0 @ =gUnknown_02038670\n\
+ mov r12, r0\n\
+ ldr r1, _080C4EA4 @ =gSpecialVar_0x8006\n\
+ mov r8, r1\n\
+ ldr r2, _080C4EA8 @ =gStringVar1\n\
+ mov r9, r2\n\
+ mov r2, r12\n\
+ mov r1, sp\n\
+ movs r6, 0x3\n\
+_080C4D9E:\n\
+ ldrh r0, [r2]\n\
+ strh r0, [r1]\n\
+ adds r2, 0x2\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080C4D9E\n\
+ movs r6, 0\n\
+_080C4DAE:\n\
+ movs r1, 0x3\n\
+ cmp r1, r6\n\
+ ble _080C4DD8\n\
+_080C4DB4:\n\
+ subs r4, r1, 0x1\n\
+ lsls r0, r4, 1\n\
+ mov r5, sp\n\
+ adds r3, r5, r0\n\
+ lsls r0, r1, 1\n\
+ adds r2, r5, r0\n\
+ ldrh r5, [r3]\n\
+ movs r7, 0\n\
+ ldrsh r1, [r3, r7]\n\
+ movs r7, 0\n\
+ ldrsh r0, [r2, r7]\n\
+ cmp r1, r0\n\
+ bge _080C4DD2\n\
+ strh r5, [r2]\n\
+ strh r0, [r3]\n\
+_080C4DD2:\n\
+ adds r1, r4, 0\n\
+ cmp r1, r6\n\
+ bgt _080C4DB4\n\
+_080C4DD8:\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x2\n\
+ ble _080C4DAE\n\
+ mov r2, r8\n\
+ ldrh r0, [r2]\n\
+ lsls r0, 1\n\
+ add r0, sp\n\
+ ldrh r0, [r0]\n\
+ movs r2, 0\n\
+ movs r7, 0\n\
+ movs r6, 0\n\
+ lsls r0, 16\n\
+ asrs r4, r0, 16\n\
+ adds r3, r0, 0\n\
+ mov r1, sp\n\
+_080C4DF6:\n\
+ movs r5, 0\n\
+ ldrsh r0, [r1, r5]\n\
+ cmp r0, r4\n\
+ bne _080C4E12\n\
+ lsls r0, r2, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r2\n\
+ lsrs r2, r0, 24\n\
+ mov r5, r8\n\
+ ldrh r5, [r5]\n\
+ cmp r6, r5\n\
+ bne _080C4E12\n\
+ adds r7, r2, 0\n\
+_080C4E12:\n\
+ adds r1, 0x2\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3\n\
+ ble _080C4DF6\n\
+ movs r6, 0\n\
+ mov r0, sp\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ asrs r1, r3, 16\n\
+ lsls r2, 24\n\
+ mov r10, r2\n\
+ cmp r0, r1\n\
+ beq _080C4E40\n\
+ adds r2, r1, 0\n\
+ mov r1, sp\n\
+_080C4E30:\n\
+ adds r1, 0x2\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3\n\
+ bgt _080C4E40\n\
+ movs r4, 0\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, r2\n\
+ bne _080C4E30\n\
+_080C4E40:\n\
+ lsls r0, r6, 24\n\
+ lsrs r4, r0, 24\n\
+ adds r2, r7, 0\n\
+ movs r6, 0\n\
+ asrs r5, r3, 16\n\
+ mov r8, r5\n\
+ mov r1, r12\n\
+ movs r5, 0\n\
+ ldrsh r0, [r1, r5]\n\
+ cmp r8, r0\n\
+ bne _080C4E60\n\
+ cmp r7, 0x1\n\
+ beq _080C4E78\n\
+_080C4E5A:\n\
+ subs r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+_080C4E60:\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3\n\
+ bgt _080C4E78\n\
+ lsls r0, r6, 1\n\
+ add r0, r12\n\
+ asrs r1, r3, 16\n\
+ movs r5, 0\n\
+ ldrsh r0, [r0, r5]\n\
+ cmp r1, r0\n\
+ bne _080C4E60\n\
+ cmp r2, 0x1\n\
+ bne _080C4E5A\n\
+_080C4E78:\n\
+ lsls r1, r6, 24\n\
+ lsrs r1, 24\n\
+ mov r0, r9\n\
+ bl sub_80C4698\n\
+ ldr r0, _080C4EAC @ =gIsLinkContest\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080C4EB8\n\
+ ldr r0, _080C4EB0 @ =gStringVar2\n\
+ lsls r1, r6, 3\n\
+ subs r1, r6\n\
+ lsls r1, 2\n\
+ ldr r2, _080C4EB4 @ =gLinkPlayers + 0x8\n\
+ adds r1, r2\n\
+ bl sub_80C4674\n\
+ b _080C4EC4\n\
+ .align 2, 0\n\
+_080C4EA0: .4byte gUnknown_02038670\n\
+_080C4EA4: .4byte gSpecialVar_0x8006\n\
+_080C4EA8: .4byte gStringVar1\n\
+_080C4EAC: .4byte gIsLinkContest\n\
+_080C4EB0: .4byte gStringVar2\n\
+_080C4EB4: .4byte gLinkPlayers + 0x8\n\
+_080C4EB8:\n\
+ ldr r0, _080C4ED8 @ =gStringVar2\n\
+ lsls r1, r6, 6\n\
+ ldr r2, _080C4EDC @ =gUnknown_0203857D\n\
+ adds r1, r2\n\
+ bl sub_80C4674\n\
+_080C4EC4:\n\
+ mov r1, r10\n\
+ asrs r0, r1, 24\n\
+ cmp r0, 0x1\n\
+ beq _080C4ED0\n\
+ cmp r7, r0\n\
+ bne _080C4EE4\n\
+_080C4ED0:\n\
+ ldr r0, _080C4EE0 @ =gSpecialVar_0x8006\n\
+ strh r4, [r0]\n\
+ b _080C4EEA\n\
+ .align 2, 0\n\
+_080C4ED8: .4byte gStringVar2\n\
+_080C4EDC: .4byte gUnknown_0203857D\n\
+_080C4EE0: .4byte gSpecialVar_0x8006\n\
+_080C4EE4:\n\
+ ldr r1, _080C4EFC @ =gSpecialVar_0x8006\n\
+ adds r0, r4, 0x4\n\
+ strh r0, [r1]\n\
+_080C4EEA:\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080C4EFC: .4byte gSpecialVar_0x8006\n\
+ .syntax divided");
+}
+
+void ShowContestWinnerCleanup(void)
+{
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+void ShowContestWinner(void)
+{
+ if(gUnknown_0203856C)
+ {
+ sub_80AAF30();
+ BATTLE_STRUCT->unk15DDF = 1;
+ BATTLE_STRUCT->unk15DDE = sub_80B2C4C(254, 0);
+ sub_80B2A7C(3);
+ gUnknown_0203856C = 0;
+ }
+ SetMainCallback2(CB2_ContestPainting);
+ gMain.savedCallback = ShowContestWinnerCleanup;
+}
+
+void sub_80C4F70(void)
+{
+ VarSet(0x4010, gContestMons[0].unk16);
+ VarSet(0x4011, gContestMons[1].unk16);
+ VarSet(0x4012, gContestMons[2].unk16);
+ VarSet(0x4013, gContestMons[3].unk16);
+}
+
+bool8 GiveMonArtistRibbon(void)
+{
+ u8 ribbon = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_ARTIST_RIBBON);
+
+ if(ribbon == FALSE
+ && gUnknown_02038690[gContestPlayerMonIndex] == 0
+ && gScriptContestRank == 3
+ && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ {
+ ribbon = TRUE;
+ SetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_ARTIST_RIBBON, &ribbon);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+u8 sub_80C5044(void)
+{
+ return gUnknown_0203856C;
+}
+
+void ShowContestEntryMonPic(void)
+{
+ struct SpritePalette *paletteData;
+ u32 var1, var2;
+ u16 species;
+ u8 spriteId;
+ u8 taskId;
+
+ if(FindTaskIdByFunc(sub_80C5190) == 0xFF)
+ {
+ u8 left = CONTEST_ENTRY_PIC_LEFT;
+ u8 top = CONTEST_ENTRY_PIC_TOP;
+
+ MenuDrawTextWindow(left, top, 19, 13);
+ species = gContestMons[gSpecialVar_0x8006].species;
+ var1 = gContestMons[gSpecialVar_0x8006].unk38; // v2
+ var2 = gContestMons[gSpecialVar_0x8006].unk3C; // v3
+ taskId = CreateTask(sub_80C5190, 0x50);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = species;
+ HandleLoadSpecialPokePic((struct SpriteSheet *)&gMonFrontPicTable[species].data,
+ gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y,
+ (u32)gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species, var1);
+ paletteData = sub_80409C8(species, var2, var1);
+ LoadCompressedObjectPalette(paletteData);
+ GetMonSpriteTemplate_803C56C(species, 1);
+ gUnknown_02024E8C.paletteTag = paletteData->tag;
+ spriteId = CreateSprite(&gUnknown_02024E8C, 0x78, 0x40, 0);
+ gTasks[taskId].data[2] = spriteId;
+ gTasks[taskId].data[3] = left;
+ gTasks[taskId].data[4] = top;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 0;
+ }
+}
+
+void sub_80C5164(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80C5190);
+
+ if(taskId != 0xFF)
+ gTasks[taskId].data[0]++;
+}
+
+void sub_80C5190(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ struct Sprite *sprite;
+
+ 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;
+ }
+}
+
+void ScriptGetMultiplayerId(void)
+{
+ if(gIsLinkContest & 1)
+ gScriptResult = GetMultiplayerId();
+ else
+ gScriptResult = 4;
+}
+
+void ScriptRandom(void)
+{
+ u16 random;
+ u16 *scriptPtr;
+
+ if(gIsLinkContest & 1)
+ {
+ gUnknown_03005D28 = 1103515245 * gUnknown_03005D28 + 24691;
+ random = gUnknown_03005D28 >> 16;
+ scriptPtr = &gScriptResult;
+ }
+ else
+ {
+ scriptPtr = &gScriptResult;
+ random = Random();
+ }
+ *scriptPtr = random % *scriptPtr;
+}
+
+void HealPlayerParty(void)
+{
+ u8 i, j;
+ u8 ppBonuses;
+ u8 arg[4];
+
+ // restore HP.
+ for(i = 0; i < gPlayerPartyCount; i++)
+ {
+ u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
+ arg[0] = maxHP;
+ arg[1] = maxHP >> 8;
+ SetMonData(&gPlayerParty[i], MON_DATA_HP, arg);
+ ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES);
+
+ // restore PP.
+ for(j = 0; j < 4; j++)
+ {
+ arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j);
+ SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg);
+ }
+
+ // since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData.
+ arg[0] = 0;
+ arg[1] = 0;
+ arg[2] = 0;
+ arg[3] = 0;
+ SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg);
+ }
+}
+
+u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5)
+{
+ u16 nationalSpecies;
+ int sentToPc;
+ u8 array[2];
+ struct Pokemon mon;
+
+ CreateMon(&mon, species, var, 32, 0, 0, 0, 0);
+ array[0] = item;
+ array[1] = item >> 8;
+ SetMonData(&mon, MON_DATA_HELD_ITEM, array);
+ sentToPc = GiveMonToPlayer(&mon);
+ nationalSpecies = SpeciesToNationalPokedexNum(species);
+
+ // nested if check to fool compiler
+ if(sentToPc < 2)
+ {
+ if(sentToPc >= 0)
+ {
+ // set both the seen and caught flags
+ sub_8090D90(nationalSpecies, 2);
+ sub_8090D90(nationalSpecies, 3);
+ }
+ }
+ return sentToPc;
+}
+
+u8 ScriptGiveEgg(u16 value)
+{
+ struct Pokemon mon;
+ u8 data;
+
+ sub_8042044(&mon, value, 1);
+ data = 1;
+ SetMonData(&mon, MON_DATA_IS_EGG, &data);
+
+ return GiveMonToPlayer(&mon);
+}
+
+void CheckForAlivePartyMons(void)
+{
+ u8 var = sub_803DAA0();
+
+ switch(var)
+ {
+ case 1:
+ gScriptResult = var;
+ break;
+ case 0:
+ gScriptResult = var;
+ break;
+ case 2:
+ gScriptResult = var;
+ break;
+ }
+}
+
+bool8 CheckPartyMonHasHeldItem(u16 item)
+{
+ int i;
+
+ for(i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if(species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 GetNameOfEnigmaBerryInPlayerParty(void)
+{
+ bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY);
+
+ if(hasItem == TRUE)
+ GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1);
+
+ return hasItem;
+}
+
+void ScriptWildBattle(u16 species, u8 level, u16 item)
+{
+ u8 data[2];
+
+ ZeroEnemyPartyMons();
+ CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
+
+ if(item)
+ {
+ data[0] = item;
+ data[1] = item >> 8;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, data);
+ }
+}
+
+void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
+{
+ if(monIndex > 6)
+ monIndex = gPlayerPartyCount - 1;
+
+ SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
+}
+
+void sub_80C5568(void)
+{
+ gMain.savedCallback = sub_80C5580;
+ sub_8121E10();
+}
+
+void sub_80C5580(void)
+{
+ u8 var = gSelectedOrderFromParty[0];
+
+ switch(var)
+ {
+ case 0:
+ gScriptResult = 0;
+ break;
+ default:
+ gScriptResult = 1;
+ break;
+ }
+
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+void ChooseBattleTowerPlayerParty(void)
+{
+ gMain.savedCallback = SetBattleTowerPlayerParty;
+ sub_8121E34();
+}
+
+void SetBattleTowerPlayerParty(void)
+{
+ u8 var = gSelectedOrderFromParty[0];
+
+ switch(var)
+ {
+ 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);
+}
+
+void ReducePlayerPartyToThree(void)
+{
+ struct Pokemon party[3];
+ int i;
+
+ CpuFill32(0, party, sizeof party);
+
+ // copy the selected pokemon according to the order.
+ for(i = 0; i < 3; i++)
+ if(gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop
+ party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal
+
+ // delete the last 3 pokemon
+ CpuFill32(0, gPlayerParty, sizeof gPlayerParty);
+
+ // overwrite the first 3 with the order copied to.
+ for(i = 0; i < 3; i++)
+ gPlayerParty[i] = party[i];
+
+ CalculatePlayerPartyCount();
+}
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
new file mode 100644
index 000000000..1a848c665
--- /dev/null
+++ b/src/script_pokemon_util_80F99CC.c
@@ -0,0 +1,455 @@
+#include "global.h"
+#include "script.h"
+#include "task.h"
+#include "palette.h"
+#include "battle_party_menu.h"
+#include "sound.h"
+#include "asm.h"
+#include "rom4.h"
+#include "pokemon.h"
+#include "text.h"
+#include "string_util.h"
+#include "script_pokemon_80F9.h"
+
+extern u8 gPlayerPartyCount;
+extern u16 gSpecialVar_0x8004;
+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);
+extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
+extern void LoadHeldItemIconGraphics(void);
+extern void CreateHeldItemIcons_806DC34(); // undefined args
+extern u8 sub_806BD58(u8, u8);
+extern void PartyMenuPrintMonsLevelOrStatus(void);
+extern void PrintPartyMenuMonNicknames(void);
+extern u8 sub_806B58C(u8);
+extern u8 sub_80AE47C(struct Pokemon *party);
+extern void sub_806BC3C(u8, u8);
+extern u16 sub_806BD80(); // undefined args in battle_party_menu.c
+extern u8 sub_806CA38();
+extern void sub_8123138(u8);
+extern u8 sub_8040574(struct Pokemon *party);
+extern void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32);
+
+void sub_80F99CC(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask((void *)sub_80F9A8C, 0xA);
+ gTasks[taskId].data[0] = 2;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_80F9A0C(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask((void *)sub_80F9A8C, 0xA);
+ gTasks[taskId].data[0] = 3;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_80F9A4C(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask((void *)sub_80F9A8C, 0xA);
+ gTasks[taskId].data[0] = 7;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_80F9A8C(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ gPaletteFade.bufferTransferDisabled = 1;
+ OpenPartyMenu(gTasks[taskId].data[0], 0);
+ DestroyTask(taskId);
+ }
+}
+
+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();
+ 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;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264 = 0;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_80F9C00(void)
+{
+ u8 i;
+
+ for(i = 0; i < gPlayerPartyCount; i++)
+ {
+ 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;
+ }
+ }
+}
+
+void sub_80F9C6C(u8 var)
+{
+ if(!gPaletteFade.active)
+ {
+ 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;
+ }
+ }
+}
+
+bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case 6 calls a different function. why
+{
+ 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();
+ 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;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264 = 0;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_80F9E1C(void)
+{
+ u8 i;
+
+ for(i = 0; i < gPlayerPartyCount; i++)
+ {
+ if(!sub_8040574(&gPlayerParty[i]))
+ sub_806BC3C(i, 0x9A);
+ else
+ sub_806BC3C(i, 0x8C);
+ }
+}
+
+void sub_80F9E64(u8 var)
+{
+ if(!gPaletteFade.active)
+ {
+ 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);
+ }
+ }
+}
+
+void sub_80F9EEC(void)
+{
+ sub_809D9F0(&gPlayerParty[0], gSpecialVar_0x8004, gPlayerPartyCount - 1, c2_exit_to_overworld_2_switch, 0);
+ unk_2018000.unk8 = 3;
+ gUnknown_0300485C = sub_8080990;
+}
+
+void sub_80F9F3C(void) // count pokemon moves
+{
+ u8 i;
+
+ gScriptResult = 0;
+
+ for(i = 0; i < 4; i++) // checks MOVE1-MOVE4
+ if(GetMonData(&gPlayerParty[gSpecialVar_0x8004], i + 13))
+ gScriptResult++;
+}
+
+void sub_80F9F84(void)
+{
+ struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004];
+ u16 data = GetMonData(party, gSpecialVar_0x8005 + 13);
+
+ GetMonNickname(party, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[data]);
+}
+
+// no. hard
+__attribute__((naked))
+void sub_80F9FDC(struct Pokemon *party, u8 var, u8 var2)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x20\n\
+ mov r8, r0\n\
+ adds r5, r1, 0\n\
+ adds r4, r2, 0\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xD\n\
+ str r0, [sp, 0x8]\n\
+ mov r0, r8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl GetMonData\n\
+ mov r1, sp\n\
+ adds r1, 0x2\n\
+ str r1, [sp, 0x14]\n\
+ strh r0, [r1]\n\
+ adds r3, r4, 0\n\
+ adds r3, 0xD\n\
+ str r3, [sp, 0xC]\n\
+ mov r0, r8\n\
+ adds r1, r3, 0\n\
+ bl GetMonData\n\
+ mov r1, sp\n\
+ strh r0, [r1]\n\
+ adds r7, r5, 0\n\
+ adds r7, 0x11\n\
+ str r7, [sp, 0x10]\n\
+ mov r0, r8\n\
+ adds r1, r7, 0\n\
+ bl GetMonData\n\
+ mov r1, sp\n\
+ adds r1, 0x5\n\
+ str r1, [sp, 0x18]\n\
+ strb r0, [r1]\n\
+ adds r3, r4, 0\n\
+ adds r3, 0x11\n\
+ str r3, [sp, 0x1C]\n\
+ mov r0, r8\n\
+ adds r1, r3, 0\n\
+ bl GetMonData\n\
+ add r7, sp, 0x4\n\
+ mov r10, r7\n\
+ strb r0, [r7]\n\
+ mov r0, r8\n\
+ movs r1, 0x15\n\
+ bl GetMonData\n\
+ mov r6, sp\n\
+ adds r6, 0x6\n\
+ strb r0, [r6]\n\
+ ldr r1, _080FA0D8 @ =gUnknown_08208238\n\
+ adds r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ mov r9, r0\n\
+ ldrb r0, [r6]\n\
+ adds r2, r0, 0\n\
+ mov r3, r9\n\
+ ands r2, r3\n\
+ lsls r5, 1\n\
+ asrs r2, r5\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r1, r4, r1\n\
+ ldrb r3, [r1]\n\
+ adds r1, r0, 0\n\
+ ands r1, r3\n\
+ lsls r4, 1\n\
+ asrs r1, r4\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r7, r9\n\
+ bics r0, r7\n\
+ strb r0, [r6]\n\
+ ldrb r0, [r6]\n\
+ bics r0, r3\n\
+ strb r0, [r6]\n\
+ lsls r2, r4\n\
+ lsls r1, r5\n\
+ adds r2, r1\n\
+ ldrb r0, [r6]\n\
+ orrs r0, r2\n\
+ strb r0, [r6]\n\
+ mov r0, r8\n\
+ ldr r1, [sp, 0x8]\n\
+ mov r2, sp\n\
+ bl SetMonData\n\
+ mov r0, r8\n\
+ ldr r1, [sp, 0xC]\n\
+ ldr r2, [sp, 0x14]\n\
+ bl SetMonData\n\
+ mov r0, r8\n\
+ ldr r1, [sp, 0x10]\n\
+ mov r2, r10\n\
+ bl SetMonData\n\
+ mov r0, r8\n\
+ ldr r1, [sp, 0x1C]\n\
+ ldr r2, [sp, 0x18]\n\
+ bl SetMonData\n\
+ mov r0, r8\n\
+ movs r1, 0x15\n\
+ adds r2, r6, 0\n\
+ bl SetMonData\n\
+ add sp, 0x20\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080FA0D8: .4byte gUnknown_08208238\n\
+ .syntax divided");
+}
+
+void sub_80FA0DC(void)
+{
+ u16 i;
+
+ SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], 0, gSpecialVar_0x8005);
+ RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
+
+ for(i = gSpecialVar_0x8005; i < 3; i++)
+ sub_80F9FDC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
+}
+
+void sub_80FA148(void)
+{
+ struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004];
+ gScriptResult = 0;
+
+ if(GetMonData(party, MON_DATA_IS_EGG))
+ gScriptResult = 1;
+}
diff --git a/src/shop.c b/src/shop.c
new file mode 100644
index 000000000..5148ddcca
--- /dev/null
+++ b/src/shop.c
@@ -0,0 +1,358 @@
+#include "global.h"
+#include "menu.h"
+#include "script.h"
+#include "task.h"
+#include "main.h"
+#include "sound.h"
+#include "weather.h"
+#include "palette.h"
+#include "sprite.h"
+#include "asm.h"
+#include "decompress.h"
+#include "money.h"
+
+struct UnknownShopStruct
+{
+ /* 0x0 */ void (* callback) (void);
+ /* 0x4 */ u16 *itemList;
+ /* 0x8 */ u8 itemCount;
+ /* 0x9 */ u8 unk9;
+ /* 0xA */ u8 unkA;
+ /* 0xB */ u8 unkB;
+ /* 0xC */ bool8 unkC;
+ // unknown size
+};
+
+extern struct UnknownShopStruct gUnknown_03000708;
+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[];
+extern u16 gMenuMoneyPal[16];
+extern u16 gUnknown_083CC710[2];
+
+extern void sub_80A6300(void);
+extern void sub_80BE3BC(void);
+extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);
+extern u8 sub_807D770(void);
+extern void pal_fill_black(void);
+extern void sub_80B3764(int, int);
+extern void sub_80B37EC(void);
+extern void sub_80B40E8(u8);
+extern void BuyMenuDrawMapGraphics(void);
+extern void sub_80F944C(void);
+extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args
+extern void sub_80F979C(u32, u32); // unknown args
+
+void sub_80B2E38(u8);
+void HandleShopMenuQuit(u8);
+void sub_80B2FA0(u8);
+void BuyMenuDrawGraphics(void);
+void sub_80B3240(void);
+void sub_80B3270(void);
+
+u8 CreateShopMenu(bool8 var)
+{
+ ScriptContext2_Enable();
+ gUnknown_03000708.unkC = var;
+ gUnknown_03000708.unk9 = 0;
+
+ if(var == FALSE)
+ {
+ gUnknown_03000708.unkA = 2;
+ MenuDrawTextWindow(0, 0, 10, 7);
+ PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8);
+ }
+ else
+ {
+ gUnknown_03000708.unkA = 1;
+ MenuDrawTextWindow(0, 0, 10, 5);
+ PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB);
+ }
+ InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9);
+
+ return CreateTask(sub_80B2E38, 8);
+}
+
+void SetShopMenuCallback(void *callbackPtr)
+{
+ gUnknown_03000708.callback = callbackPtr;
+}
+
+void SetShopItemsForSale(u16 *items)
+{
+ u16 i = 0;
+
+ gUnknown_03000708.itemList = items;
+ gUnknown_03000708.itemCount = 0;
+
+ while (gUnknown_03000708.itemList[i])
+ {
+ gUnknown_03000708.itemCount++;
+ i++;
+ }
+}
+
+void sub_80B2E38(u8 var)
+{
+ const u8 local = var;
+
+ if(gMain.newAndRepeatedKeys & 0x40)
+ {
+ if(gUnknown_03000708.unk9)
+ {
+ PlaySE(0x5);
+ gUnknown_03000708.unk9 = MoveMenuCursor(-1);
+ }
+ }
+ else if(gMain.newAndRepeatedKeys & 0x80)
+ {
+ if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA)
+ {
+ PlaySE(0x5);
+ gUnknown_03000708.unk9 = MoveMenuCursor(1);
+ }
+ }
+ else if (gMain.newKeys & 1)
+ {
+ PlaySE(0x5);
+ if(!gUnknown_03000708.unkC)
+ {
+ gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local);
+ }
+ else
+ {
+ gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local);
+ }
+ }
+ else if(gMain.newKeys & 2)
+ {
+ PlaySE(0x5);
+ HandleShopMenuQuit(local);
+ }
+}
+
+void sub_80B2EFC(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16;
+ gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics;
+ gTasks[taskId].func = sub_80B2FA0;
+ fade_screen(1, 0);
+}
+
+void sub_80B2F30(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80A6300;
+ gTasks[taskId].func = sub_80B2FA0;
+ fade_screen(1, 0);
+}
+
+void HandleShopMenuQuit(u8 taskId)
+{
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 11, 8);
+ sub_80BE3BC(); // in tv.s?
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+
+ if(gUnknown_03000708.callback)
+ gUnknown_03000708.callback(); // run the callback if it exists.
+}
+
+void sub_80B2FA0(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9]));
+ DestroyTask(taskId);
+ }
+}
+
+void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
+{
+ CreateShopMenu(gUnknown_03000708.unkC);
+ DestroyTask(taskId);
+}
+
+void Task_ExitSellMenu(u8 taskId)
+{
+ if(sub_807D770() == 1)
+ {
+ if(gUnknown_03000708.unkC == 2)
+ DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0);
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0);
+ }
+}
+
+void sub_80B3050(void)
+{
+ pal_fill_black();
+ CreateTask(Task_ExitSellMenu, 0x8);
+}
+
+void sub_80B3068(u8 taskId)
+{
+ Task_ExitSellMenu(taskId);
+}
+
+void unref_sub_80B3078(u8 taskId)
+{
+ gTasks[taskId].func = Task_ExitSellMenu;
+}
+
+void sub_80B3094(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+void sub_80B30AC(void)
+{
+ void *addr;
+ void *addr2;
+ void *addr3;
+ u16 *tempArr;
+ u16 *tempArr2;
+ u16 *tempArr3;
+
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+
+ // temp vars needed to match for some dumb reason
+ tempArr = gBGTilemapBuffers[1];
+ addr = (void *)(VRAM + 0xE800);
+ DmaCopy16(3, tempArr, addr, 0x800);
+ tempArr2 = gBGTilemapBuffers[2];
+ addr2 = (void *)(VRAM + 0xE000);
+ DmaCopy16(3, tempArr2, addr2, 0x800);
+ tempArr3 = gBGTilemapBuffers[3];
+ addr3 = (void *)(VRAM + 0xF000);
+ DmaCopy16(3, tempArr3, addr3, 0x800);
+}
+
+// this function is fugly. pls fix
+void BuyMenuDrawGraphics(void)
+{
+ void *addr;
+ register u16 zero2 asm("r5");
+
+ sub_80F9438();
+ remove_some_task();
+ REG_BG1HOFS = (zero2 = 0);
+ REG_BG1VOFS = zero2;
+ REG_BG2HOFS = zero2;
+ REG_BG2VOFS = zero2;
+ REG_BG3HOFS = zero2;
+ REG_BG3VOFS = zero2;
+ gPaletteFade.bufferTransferDisabled = 1;
+ addr = (void*)OAM;
+ {
+ register const u32 zero asm("r6") = 0;
+ DmaFill32(3, zero, addr, OAM_SIZE);
+ LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00));
+ sub_800D238(gBuyMenuFrame_Tilemap, (void *)0x02018000);
+ LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal));
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ SetUpWindowConfig(&gWindowConfig_81E6DFC);
+ InitMenuWindow(&gWindowConfig_81E6DFC);
+ BuyMenuDrawMapGraphics();
+ gUnknown_03000708.unk9 = zero;
+ gUnknown_03000708.unkB = zero2;
+ MenuZeroFillWindowRect(0, 0, 0x20, 0x20);
+ sub_80B7C14(gSaveBlock1.money, 0, 0);
+ sub_80B3764(0, 7);
+ sub_80B37EC();
+ sub_80B3270();
+ CreateTask(sub_80B40E8, 0x8);
+ sub_80B3240();
+ asm("":::"r4"); // what??
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetVBlankCallback(sub_80B30AC);
+ SetMainCallback2(sub_80B3094);
+ }
+}
+
+void sub_80B3240(void)
+{
+ u16 tempArr[2];
+
+ memcpy(tempArr, gUnknown_083CC710, sizeof(tempArr));
+ LoadPalette(&tempArr[1], 0xD1, 2);
+ LoadPalette(&tempArr[0], 0xD8, 2);
+}
+
+void sub_80B3270(void)
+{
+ sub_80F944C();
+
+ if(gUnknown_03000708.itemCount > 7)
+ {
+ CreateVerticalScrollIndicators(0, 172, 12);
+ CreateVerticalScrollIndicators(1, 172, 148);
+ sub_80F979C(0, 1);
+ }
+}
+
+void sub_80B32A4(void)
+{
+ if(gUnknown_03000708.unkB == 0)
+ sub_80F979C(0, 1);
+ else
+ sub_80F979C(0, 0);
+
+ if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount)
+ sub_80F979C(1, 1);
+ else
+ sub_80F979C(1, 0);
+}
+
+void sub_80B32EC(u16 *array, s16 offset1, s16 offset2)
+{
+ array[offset1 + offset2] = 0xC3E1;
+ array[offset1 + offset2 + 1] = 0xC3E1;
+}
+
+void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2)
+{
+ array[offset1 + offset2] = array2[0];
+ array[offset1 + offset2 + 1] = array2[1];
+ array[offset1 + offset2 + 32] = array2[2];
+ array[offset1 + offset2 + 33] = array2[3];
+}
+
+void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4)
+{
+ u8 tempVar4 = var4;
+ s16 offset1 = var1 * 2;
+ s16 offset2 = (var2 * 0x40) + 0x40;
+
+ 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;
+ }
+}
diff --git a/src/sound.c b/src/sound.c
index c244c5cbe..ea8d5b49c 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "sound.h"
#include "asm.h"
+#include "battle.h"
#include "gba/m4a_internal.h"
-#include "task.h"
-#include "songs.h"
#include "m4a.h"
-#include "battle.h"
+#include "songs.h"
+#include "task.h"
struct Fanfare
{
@@ -526,7 +526,7 @@ void PlaySE(u16 songNum)
m4aSongNumStart(songNum);
}
-void PlaySE12WithPanning(u16 songNum, u8 pan)
+void PlaySE12WithPanning(u16 songNum, s8 pan)
{
m4aSongNumStart(songNum);
m4aMPlayImmInit(&gMPlay_SE1);
@@ -535,21 +535,21 @@ void PlaySE12WithPanning(u16 songNum, u8 pan)
m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan);
}
-void PlaySE1WithPanning(u16 songNum, u8 pan)
+void PlaySE1WithPanning(u16 songNum, s8 pan)
{
m4aSongNumStart(songNum);
m4aMPlayImmInit(&gMPlay_SE1);
m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan);
}
-void PlaySE2WithPanning(u16 songNum, u8 pan)
+void PlaySE2WithPanning(u16 songNum, s8 pan)
{
m4aSongNumStart(songNum);
m4aMPlayImmInit(&gMPlay_SE2);
m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan);
}
-void SE12PanpotControl(u8 pan)
+void SE12PanpotControl(s8 pan)
{
m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan);
m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan);
diff --git a/src/sprite.c b/src/sprite.c
index df101b61f..409c66cfa 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "sprite.h"
#include "main.h"
-#include "palette.h"
#include "menu_cursor.h"
+#include "palette.h"
#define MAX_SPRITE_COPY_REQUESTS 64
@@ -36,7 +36,7 @@ struct OamMatrix
struct SpriteCopyRequest
{
- u8 *src;
+ const u8 *src;
u8 *dest;
u16 size;
};
@@ -58,7 +58,7 @@ static void ResetOamMatrices(void);
static void ResetSprite(struct Sprite *sprite);
static s16 AllocSpriteTiles(u16 tileCount);
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
-static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, struct SpriteFrameImage *images);
+static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images);
static void ResetAllSprites(void);
static void BeginAnim(struct Sprite *sprite);
static void ContinueAnim(struct Sprite *sprite);
@@ -95,7 +95,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC
static void ResetAffineAnimData(void);
static u8 IndexOfSpriteTileTag(u16 tag);
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
-static void DoLoadSpritePalette(u16 *src, u16 paletteOffset);
+static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
typedef void (*AnimFunc)(struct Sprite *);
typedef void (*AnimCmdFunc)(struct Sprite *);
@@ -129,10 +129,12 @@ const struct SpriteTemplate gDummySpriteTemplate;
// Unreferenced error message.
// It means "The DMA transfer request table has exceeded its limit."
static const u8 sDmaOverErrorMsg[] =
- _"DMA OVER\n"
- "DMAてんそう\n"
- "リクエストテーブルが\n"
- "オーバーしました";
+ _(
+ "DMA OVER\n"
+ "DMAてんそう\n"
+ "リクエストテーブルが\n"
+ "オーバーしました"
+ );
// Unreferenced data.
static const u8 sUnknownData[24] =
@@ -169,51 +171,51 @@ static const u8 sCenterToCornerVecTable[3][4][2] =
static const struct Sprite sDummySprite =
{
- DUMMY_OAM_DATA,
- (union AnimCmd **)gDummySpriteAnimTable,
- NULL,
- (union AffineAnimCmd **)gDummySpriteAffineAnimTable,
- (struct SpriteTemplate *)&gDummySpriteTemplate,
- NULL,
- SpriteCallbackDummy,
- { 304, 160 },
- { 0, 0 },
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0xFF
+ .oam = DUMMY_OAM_DATA,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .template = &gDummySpriteTemplate,
+ .subspriteTables = NULL,
+ .callback = SpriteCallbackDummy,
+ .pos1 = { 304, 160 },
+ .pos2 = { 0, 0 },
+ .centerToCornerVecX = 0,
+ .centerToCornerVecY = 0,
+ .animNum = 0,
+ .animCmdIndex = 0,
+ .animDelayCounter = 0,
+ .animPaused = 0,
+ .affineAnimPaused = 0,
+ .animLoopCounter = 0,
+ .data0 = 0,
+ .data1 = 0,
+ .data2 = 0,
+ .data3 = 0,
+ .data4 = 0,
+ .data5 = 0,
+ .data6 = 0,
+ .data7 = 0,
+ .inUse = 0,
+ .coordOffsetEnabled = 0,
+ .invisible = 0,
+ .flags_3 = 0,
+ .flags_4 = 0,
+ .flags_5 = 0,
+ .flags_6 = 0,
+ .flags_7 = 0,
+ .hFlip = 0,
+ .vFlip = 0,
+ .animBeginning = 0,
+ .affineAnimBeginning = 0,
+ .animEnded = 0,
+ .affineAnimEnded = 0,
+ .usingSheet = 0,
+ .flags_f = 0,
+ .sheetTileStart = 0,
+ .subspriteTableNum = 0,
+ .subspriteMode = 0,
+ .subpriority = 0xFF
};
const struct OamData gDummyOamData = DUMMY_OAM_DATA;
@@ -228,13 +230,13 @@ const union AffineAnimCmd * const gDummySpriteAffineAnimTable[] = { &sDummyAffin
const struct SpriteTemplate gDummySpriteTemplate =
{
- 0,
- 0xFFFF,
- (struct OamData *)&gDummyOamData,
- (union AnimCmd **)gDummySpriteAnimTable,
- NULL,
- (union AffineAnimCmd **)gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+ .tileTag = 0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
// TODO: Find out what these are used for.
@@ -534,7 +536,7 @@ u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subprior
return MAX_SPRITES;
}
-u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, u16 x, u16 y, u8 subpriority)
+u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority)
{
s16 i;
@@ -827,7 +829,7 @@ void ProcessSpriteCopyRequests(void)
}
}
-static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, struct SpriteFrameImage *images)
+static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images)
{
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
@@ -838,7 +840,7 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, struct SpriteFra
}
}
-void RequestSpriteCopy(u8 *src, u8 *dest, u16 size)
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size)
{
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
@@ -1466,7 +1468,7 @@ void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotat
CopyOamMatrix(matrixNum, &matrix);
}
-u16 LoadSpriteSheet(struct SpriteSheet *sheet)
+u16 LoadSpriteSheet(const struct SpriteSheet *sheet)
{
s16 tileStart = AllocSpriteTiles(sheet->size / TILE_SIZE_4BPP);
@@ -1482,7 +1484,7 @@ u16 LoadSpriteSheet(struct SpriteSheet *sheet)
}
}
-void LoadSpriteSheets(struct SpriteSheet *sheets)
+void LoadSpriteSheets(const struct SpriteSheet *sheets)
{
u8 i;
for (i = 0; sheets[i].data != NULL; i++)
@@ -1511,9 +1513,9 @@ void AllocTilesForSpriteSheets(struct SpriteSheet *sheets)
AllocTilesForSpriteSheet(&sheets[i]);
}
-void LoadTilesForSpriteSheet(struct SpriteSheet *sheet)
+void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet)
{
- u8 *data = sheet->data;
+ const u8 *data = sheet->data;
u16 tileStart = GetSpriteTileStartByTag(sheet->tag);
CpuCopy16(data, (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileStart, sheet->size);
}
@@ -1597,14 +1599,14 @@ static void AllocSpriteTileRange(u16 tag, u16 start, u16 count)
SET_SPRITE_TILE_RANGE(freeIndex, start, count);
}
-void RequestSpriteSheetCopy(struct SpriteSheet *sheet)
+void RequestSpriteSheetCopy(const struct SpriteSheet *sheet)
{
- u8 *data = sheet->data;
+ const u8 *data = sheet->data;
u16 tileStart = GetSpriteTileStartByTag(sheet->tag);
RequestSpriteCopy(data, (u8 *)OBJ_VRAM0 + tileStart * TILE_SIZE_4BPP, sheet->size);
}
-u16 LoadSpriteSheetDeferred(struct SpriteSheet *sheet)
+u16 LoadSpriteSheetDeferred(const struct SpriteSheet *sheet)
{
s16 tileStart = AllocSpriteTiles(sheet->size / TILE_SIZE_4BPP);
@@ -1657,7 +1659,7 @@ void LoadSpritePalettes(const struct SpritePalette *palettes)
break;
}
-static void DoLoadSpritePalette(u16 *src, u16 paletteOffset)
+static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset)
{
LoadPalette(src, paletteOffset + 0x100, 32);
}
@@ -1698,7 +1700,7 @@ void FreeSpritePaletteByTag(u16 tag)
sSpritePaletteTags[index] = 0xFFFF;
}
-void SetSubspriteTables(struct Sprite *sprite, struct SubspriteTable *subspriteTables)
+void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables)
{
sprite->subspriteTables = subspriteTables;
sprite->subspriteTableNum = 0;
@@ -1724,7 +1726,7 @@ bool8 AddSpriteToOamBuffer(struct Sprite *sprite, u8 *oamIndex)
bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u8 *oamIndex)
{
- struct SubspriteTable *subspriteTable;
+ const struct SubspriteTable *subspriteTable;
struct OamData *oam;
if (*oamIndex >= gOamLimit)
diff --git a/src/start_menu.c b/src/start_menu.c
index 31ba31766..d1344ce90 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "start_menu.h"
#include "asm.h"
-#include "field_player_avatar.h"
#include "event_data.h"
+#include "field_player_avatar.h"
#include "load_save.h"
#include "main.h"
#include "map_obj_lock.h"
@@ -22,6 +22,7 @@
#include "task.h"
#include "trainer_card.h"
#include "weather.h"
+#include "field_map_obj_helpers.h"
//Menu actions
enum {
@@ -41,7 +42,7 @@ static u8 (*saveDialogCallback)(void);
static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed
static bool8 savingComplete;
-extern bool8 gUnknown_020297EC;
+extern bool8 gDifferentSaveFile;
extern u16 gSaveFileStatus;
extern u16 gScriptResult;
extern u8 (*gCallback_03004AE8)(void);
@@ -141,11 +142,11 @@ static void Task_8071B64(u8 taskId);
static void BuildStartMenuActions(void)
{
sNumStartMenuActions = 0;
- if(is_c1_link_related_active() == TRUE)
+ if (is_c1_link_related_active() == TRUE)
BuildStartMenuActions_Link();
else
{
- if(GetSafariZoneFlag() == TRUE)
+ if (GetSafariZoneFlag() == TRUE)
BuildStartMenuActions_SafariZone();
else
BuildStartMenuActions_Normal();
@@ -159,12 +160,12 @@ static void AddStartMenuAction(u8 action)
static void BuildStartMenuActions_Normal(void)
{
- if(FlagGet(SYS_POKEDEX_GET) == TRUE)
+ if (FlagGet(SYS_POKEDEX_GET) == TRUE)
AddStartMenuAction(MENU_ACTION_POKEDEX);
- if(FlagGet(SYS_POKEMON_GET) == TRUE)
+ if (FlagGet(SYS_POKEMON_GET) == TRUE)
AddStartMenuAction(MENU_ACTION_POKEMON);
AddStartMenuAction(MENU_ACTION_BAG);
- if(FlagGet(SYS_POKENAV_GET) == TRUE)
+ if (FlagGet(SYS_POKENAV_GET) == TRUE)
AddStartMenuAction(MENU_ACTION_POKENAV);
AddStartMenuAction(MENU_ACTION_PLAYER);
AddStartMenuAction(MENU_ACTION_SAVE);
@@ -187,11 +188,11 @@ static void BuildStartMenuActions_Link(void)
{
AddStartMenuAction(MENU_ACTION_POKEMON);
AddStartMenuAction(MENU_ACTION_BAG);
- if(FlagGet(SYS_POKENAV_GET) == TRUE)
+ if (FlagGet(SYS_POKENAV_GET) == TRUE)
AddStartMenuAction(MENU_ACTION_POKENAV);
AddStartMenuAction(MENU_ACTION_PLAYER_LINK);
AddStartMenuAction(MENU_ACTION_OPTION);
- AddStartMenuAction(MENU_ACTION_EXIT);
+ AddStartMenuAction(MENU_ACTION_EXIT);
}
//Show number of safari balls left
@@ -206,25 +207,25 @@ static void DisplaySafariBallsWindow(void)
static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n)
{
int _index = *index;
-
+
do
{
MenuPrint(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2);
_index++;
- if(_index >= sNumStartMenuActions)
+ if (_index >= sNumStartMenuActions)
{
*index = _index;
return TRUE;
}
}
- while(--n != 0);
+ while (--n != 0);
*index = _index;
return FALSE;
}
static bool32 InitStartMenuMultistep(s16 *step, s16 *index)
{
- switch(*step)
+ switch (*step)
{
case 1:
BuildStartMenuActions();
@@ -236,12 +237,12 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index)
(*step)++;
break;
case 3:
- if(GetSafariZoneFlag())
+ if (GetSafariZoneFlag())
DisplaySafariBallsWindow();
(*step)++;
break;
case 4:
- if(PrintStartMenuItemsMultistep(index, 2))
+ if (PrintStartMenuItemsMultistep(index, 2))
(*step)++;
break;
case 0:
@@ -258,14 +259,14 @@ static void InitStartMenu(void)
{
s16 step = 0;
s16 index = 0;
-
- while(InitStartMenuMultistep(&step, &index) == FALSE)
+
+ while (InitStartMenuMultistep(&step, &index) == FALSE)
;
}
static void Task_StartMenu(u8 taskId)
{
- if(InitStartMenuMultistep(gTasks[taskId].data, gTasks[taskId].data + 1) == TRUE)
+ if (InitStartMenuMultistep(gTasks[taskId].data, gTasks[taskId].data + 1) == TRUE)
{
*gTasks[taskId].data = 0;
SwitchTaskToFollowupFunc(taskId);
@@ -275,31 +276,24 @@ static void Task_StartMenu(u8 taskId)
void CreateStartMenuTask(void (*func)(u8))
{
u8 taskId;
-
+
InitMenuWindow(&gWindowConfig_81E6CE4);
taskId = CreateTask(Task_StartMenu, 0x50);
SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func);
}
-struct MyTask {
- TaskFunc func;
- bool8 isActive;
- u8 prev;
- u8 next;
- u8 priority;
- s16 var1;
-};
-
void sub_80712B4(u8 taskId)
{
- switch(((struct MyTask *)&gTasks[taskId])->var1)
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
{
case 0:
gCallback_03004AE8 = StartMenu_InputProcessCallback;
- ((struct MyTask *)&gTasks[taskId])->var1++;
+ task->data[0]++;
break;
case 1:
- if(gCallback_03004AE8() == 1)
+ if (gCallback_03004AE8() == 1)
DestroyTask(taskId);
break;
}
@@ -307,7 +301,7 @@ void sub_80712B4(u8 taskId)
void sub_8071310(void)
{
- if(!is_c1_link_related_active())
+ if (!is_c1_link_related_active())
{
FreezeMapObjects();
sub_80594C0();
@@ -319,32 +313,32 @@ void sub_8071310(void)
static u8 StartMenu_InputProcessCallback(void)
{
- if(gMain.newKeys & DPAD_UP)
+ if (gMain.newKeys & DPAD_UP)
{
PlaySE(SE_SELECT);
sStartMenuCursorPos = MoveMenuCursor(-1);
}
- if(gMain.newKeys & DPAD_DOWN)
+ if (gMain.newKeys & DPAD_DOWN)
{
PlaySE(SE_SELECT);
sStartMenuCursorPos = MoveMenuCursor(1);
}
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- if(sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback)
+ if (sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback)
{
- if(GetNationalPokedexCount(0) == 0)
+ if (GetNationalPokedexCount(0) == 0)
return 0;
}
gCallback_03004AE8 = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func;
- if(gCallback_03004AE8 != StartMenu_SaveCallback &&
+ if (gCallback_03004AE8 != StartMenu_SaveCallback &&
gCallback_03004AE8 != StartMenu_ExitCallback &&
gCallback_03004AE8 != StartMenu_RetireCallback)
fade_screen(1, 0);
return 0;
}
- if(gMain.newKeys & (START_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
CloseMenu();
return 1;
@@ -355,7 +349,7 @@ static u8 StartMenu_InputProcessCallback(void)
//When player selects POKEDEX
static u8 StartMenu_PokedexCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
IncrementGameStat(0x29);
PlayRainSoundEffect();
@@ -368,7 +362,7 @@ static u8 StartMenu_PokedexCallback(void)
//When player selects POKEMON
static u8 StartMenu_PokemonCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayRainSoundEffect();
SetMainCallback2(sub_8089A70);
@@ -380,7 +374,7 @@ static u8 StartMenu_PokemonCallback(void)
//When player selects BAG
static u8 StartMenu_BagCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayRainSoundEffect();
SetMainCallback2(sub_80A53F8);
@@ -392,7 +386,7 @@ static u8 StartMenu_BagCallback(void)
//When player selects POKENAV
static u8 StartMenu_PokenavCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayRainSoundEffect();
SetMainCallback2(sub_80EBA5C);
@@ -404,7 +398,7 @@ static u8 StartMenu_PokenavCallback(void)
//When player selects his/her name
static u8 StartMenu_PlayerCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayRainSoundEffect();
sub_8093110(sub_805469C);
@@ -424,7 +418,7 @@ static u8 StartMenu_SaveCallback(void)
//When player selects OPTION
static u8 StartMenu_OptionCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayRainSoundEffect();
SetMainCallback2(CB2_InitOptionMenu);
@@ -452,7 +446,7 @@ static u8 StartMenu_RetireCallback(void)
//When player selects their name in multiplayer mode
static u8 StartMenu_PlayerLinkCallback(void)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
PlayRainSoundEffect();
sub_8093130(gUnknown_03004860, sub_805469C);
@@ -479,7 +473,7 @@ static u8 SaveCallback1(void)
static u8 SaveCallback2(void)
{
- switch(RunSaveDialogCallback())
+ switch (RunSaveDialogCallback())
{
case SAVE_IN_PROGRESS:
return FALSE;
@@ -497,7 +491,7 @@ static u8 SaveCallback2(void)
return TRUE;
}
return FALSE;
-}
+}
static void sub_807160C(void)
{
@@ -508,9 +502,9 @@ static void sub_807160C(void)
static u8 RunSaveDialogCallback(void)
{
- if(savingComplete)
+ if (savingComplete)
{
- if(!MenuUpdateWindowText())
+ if (!MenuUpdateWindowText())
return 0;
}
savingComplete = FALSE;
@@ -535,13 +529,13 @@ static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void))
static void Task_SaveDialog(u8 taskId)
{
u8 status = RunSaveDialogCallback();
-
- switch(status)
+
+ switch (status)
{
case SAVE_CANCELED:
case SAVE_ERROR:
gScriptResult = 0;
- break;
+ break;
case SAVE_SUCCESS:
gScriptResult = status;
break;
@@ -554,7 +548,7 @@ static void Task_SaveDialog(u8 taskId)
static void sub_8071700(void)
{
- sub_80946C8(0, 0);
+ HandleCloseSaveWindow(0, 0);
}
static void HideSaveDialog(void)
@@ -570,21 +564,21 @@ static void SaveDialogStartTimeout(void)
static bool8 SaveDialogCheckForTimeoutOrKeypress(void)
{
saveDialogTimer--;
- if(gMain.heldKeys & A_BUTTON)
+ if (gMain.heldKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
return TRUE;
}
- else if(saveDialogTimer == 0)
+ else if (saveDialogTimer == 0)
return TRUE;
return FALSE;
}
static bool8 SaveDialogCheckForTimeoutAndKeypress(void)
{
- if(saveDialogTimer != 0)
+ if (saveDialogTimer != 0)
saveDialogTimer--;
- else if(gMain.heldKeys & A_BUTTON)
+ else if (gMain.heldKeys & A_BUTTON)
return TRUE;
return FALSE;
}
@@ -593,7 +587,6 @@ static u8 SaveDialogCB_DisplayConfirmMessage(void)
{
MenuZeroFillScreen();
HandleDrawSaveWindowInfo(0, 0);
- //"Would you like to save the game?"
DisplaySaveMessageWithCallback(gSaveText_WouldYouLikeToSave, SaveDialogCB_DisplayConfirmYesNoMenu);
return SAVE_IN_PROGRESS;
}
@@ -607,15 +600,15 @@ static u8 SaveDialogCB_DisplayConfirmYesNoMenu(void)
static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void)
{
- switch(ProcessMenuInputNoWrap_())
+ switch (ProcessMenuInputNoWrap_())
{
case 0: //YES
HideSaveDialog();
- switch(gSaveFileStatus)
+ switch (gSaveFileStatus)
{
case 0:
case 2:
- if(gUnknown_020297EC == FALSE)
+ if (gDifferentSaveFile == FALSE)
{
saveDialogCallback = SaveDialogCB_SaveFileExists;
return SAVE_IN_PROGRESS;
@@ -639,7 +632,7 @@ static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void)
static u8 SaveDialogCB_SaveFileExists(void)
{
DisplaySaveMessageWithCallback(
- gUnknown_020297EC == TRUE ? gSaveText_ThereIsADifferentFile : gSaveText_ThereIsAlreadyAFile,
+ gDifferentSaveFile == TRUE ? gSaveText_ThereIsADifferentFile : gSaveText_ThereIsAlreadyAFile,
SaveDialogCB_DisplayOverwriteYesNoMenu);
return SAVE_IN_PROGRESS;
}
@@ -653,7 +646,7 @@ static u8 SaveDialogCB_DisplayOverwriteYesNoMenu(void)
static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void)
{
- switch(ProcessMenuInputNoWrap_())
+ switch (ProcessMenuInputNoWrap_())
{
case 0: //YES
HideSaveDialog();
@@ -677,20 +670,20 @@ static u8 SaveDialogCB_DisplaySavingMessage(void)
static u8 SaveDialogCB_DoSave(void)
{
- u8 a;
-
+ bool8 saveSucceeded;
+
IncrementGameStat(0);
- if(gUnknown_020297EC == TRUE)
+ if (gDifferentSaveFile == TRUE)
{
- a = sub_8125D44(4);
- gUnknown_020297EC = FALSE;
+ saveSucceeded = TrySavingData(DIFFERENT_FILE_SAVE);
+ gDifferentSaveFile = FALSE;
}
else
{
- a = sub_8125D44(0);
+ saveSucceeded = TrySavingData(NORMAL_SAVE);
}
-
- if(a == 1)
+
+ if (saveSucceeded == TRUE)
{
//"(Player) saved the game."
DisplaySaveMessageWithCallback(gSaveText_PlayerSavedTheGame, SaveDialogCB_SaveSuccess);
@@ -700,14 +693,14 @@ static u8 SaveDialogCB_DoSave(void)
//"Save error. Please exchange the backup memory."
DisplaySaveMessageWithCallback(gSystemText_SaveErrorExchangeBackup, SaveDialogCB_SaveError);
}
-
+
SaveDialogStartTimeout();
return SAVE_IN_PROGRESS;
}
static u8 SaveDialogCB_SaveSuccess(void)
{
- if(MenuUpdateWindowText())
+ if (MenuUpdateWindowText())
{
PlaySE(SE_SAVE);
saveDialogCallback = SaveDialogCB_ReturnSuccess;
@@ -717,7 +710,7 @@ static u8 SaveDialogCB_SaveSuccess(void)
static u8 SaveDialogCB_ReturnSuccess(void)
{
- if(!IsSEPlaying() && SaveDialogCheckForTimeoutOrKeypress())
+ if (!IsSEPlaying() && SaveDialogCheckForTimeoutOrKeypress())
{
sub_8071700();
return SAVE_SUCCESS;
@@ -728,7 +721,7 @@ static u8 SaveDialogCB_ReturnSuccess(void)
static u8 SaveDialogCB_SaveError(void)
{
- if(MenuUpdateWindowText())
+ if (MenuUpdateWindowText())
{
PlaySE(SE_BOO);
saveDialogCallback = SaveDialogCB_ReturnError;
@@ -738,7 +731,7 @@ static u8 SaveDialogCB_SaveError(void)
static u8 SaveDialogCB_ReturnError(void)
{
- if(!SaveDialogCheckForTimeoutAndKeypress())
+ if (!SaveDialogCheckForTimeoutAndKeypress())
return SAVE_IN_PROGRESS;
else
{
@@ -754,25 +747,25 @@ static void sub_80719F0(void)
static bool32 sub_80719FC(u8 *step)
{
- switch(*step)
+ switch (*step)
{
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)
+ while (1)
{
DmaFill16(3, 0, addr, 0x1000);
addr += 0x1000;
size -= 0x1000;
- if(size <= 0x1000)
+ if (size <= 0x1000)
{
DmaFill16(3, 0, addr, size);
break;
@@ -794,7 +787,7 @@ static bool32 sub_80719FC(u8 *step)
case 3:
{
u32 savedIme;
-
+
BlendPalettes(-1, 0x10, 0);
SetVBlankCallback(sub_80719F0);
savedIme = REG_IME;
@@ -812,7 +805,7 @@ static bool32 sub_80719FC(u8 *step)
void sub_8071B28(void)
{
- if(sub_80719FC(&gMain.state))
+ if (sub_80719FC(&gMain.state))
{
CreateTask(Task_8071B64, 0x50);
SetMainCallback2(sub_8071B54);
@@ -828,10 +821,10 @@ static void sub_8071B54(void)
static void Task_8071B64(u8 taskId)
{
s16 *step = gTasks[taskId].data;
-
- if(!gPaletteFade.active)
+
+ if (!gPaletteFade.active)
{
- switch(*step)
+ switch (*step)
{
case 0:
MenuDisplayMessageBox();
@@ -845,7 +838,7 @@ static void Task_8071B64(u8 taskId)
(*step)++;
break;
case 2:
- if(!sub_8125E6C())
+ if (!sub_8125E6C())
break;
ClearSecretBase2Field_9_2();
(*step)++;
@@ -857,7 +850,7 @@ static void Task_8071B64(u8 taskId)
case 4:
SetMainCallback2(gMain.savedCallback);
DestroyTask(taskId);
- break;
+ break;
}
}
}
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 9bd817cce..63d153ebd 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -1,17 +1,18 @@
#include "global.h"
#include "starter_choose.h"
#include "asm.h"
+#include "decompress.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "pokedex.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
+#include "sprite.h"
#include "string_util.h"
#include "task.h"
#include "trig.h"
-#include "decompress.h"
-#include "sprite.h"
struct MonCoords
{
@@ -19,32 +20,219 @@ struct MonCoords
};
extern void * const gUnknown_081FAF4C[];
-extern const u8 gStarterChoose_PokeballCoords[][2];
-extern u8 gBirchHelpGfx[];
-extern u8 gBirchBagTilemap[];
-extern u8 gBirchGrassTilemap[];
-extern struct SpriteSheet gUnknown_083F7794;
-extern struct SpriteSheet gUnknown_083F77A4;
-extern u8 gBirchBagGrassPal[];
-extern const u8 gStarterChoose_LabelCoords[][2];
-extern u16 gStarterMons[];
-extern union AffineAnimCmd *gSpriteAffineAnimTable_83F778C[];
-extern u8 gOtherText_DoYouChoosePoke[];
+extern const u8 gOtherText_DoYouChoosePoke[];
extern u16 gScriptResult;
-extern u8 gSpeciesNames[][11];
-extern u8 gOtherText_Poke[];
+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 u8 gUnknown_083F76E4[][2];
-extern u8 gOtherText_BirchInTrouble[];
-
-extern struct SpriteTemplate gSpriteTemplate_83F77E4;
-extern struct SpriteTemplate gSpriteTemplate_83F77CC;
-extern struct SpritePalette gUnknown_083F77B4[];
-extern struct SpriteTemplate gSpriteTemplate_83F77FC;
+extern const u8 gOtherText_BirchInTrouble[];
extern struct SpriteTemplate gUnknown_02024E8C;
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+const u16 gBirchBagGrassPal[][16] =
+{
+ INCBIN_U16("graphics/misc/birch_bag.gbapal"),
+ INCBIN_U16("graphics/misc/birch_grass.gbapal"),
+};
+static const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
+static const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
+const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
+const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
+const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
+static const u8 gBirchBallarrow_Gfx[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
+static const u8 gBirchCircle_Gfx[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
+static const u8 gStarterChoose_PokeballCoords[][2] =
+{
+ {60, 64},
+ {120, 88},
+ {180, 64},
+};
+static const u8 gStarterChoose_LabelCoords[][2] =
+{
+ {0, 9},
+ {16, 10},
+ {8, 4},
+};
+static const u16 sStarterMons[] = {SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP};
+static const struct OamData gOamData_83F76CC =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_83F76D4 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_83F76DC =
+{
+ .y = 160,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const u8 gUnknown_083F76E4[][2] =
+{
+ {60, 32},
+ {120, 56},
+ {180, 32},
+ {0, 0},
+};
+static const union AnimCmd gSpriteAnim_83F76EC[] =
+{
+ ANIMCMD_FRAME(48, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F76F4[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F76FC[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd gSpriteAnim_83F7744[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F774C[] =
+{
+ gSpriteAnim_83F76EC,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7750[] =
+{
+ gSpriteAnim_83F76F4,
+ gSpriteAnim_83F76FC,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7758[] =
+{
+ gSpriteAnim_83F7744,
+};
+static const union AffineAnimCmd gSpriteAffineAnim_83F775C[] =
+{
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(16, 16, 0, 15),
+ AFFINEANIMCMD_END,
+};
+static const union AffineAnimCmd gSpriteAffineAnim_83F7774[] =
+{
+ AFFINEANIMCMD_FRAME(20, 20, 0, 0),
+ AFFINEANIMCMD_FRAME(20, 20, 0, 15),
+ AFFINEANIMCMD_END,
+};
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F778C[] =
+{
+ gSpriteAffineAnim_83F775C,
+};
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
+{
+ gSpriteAffineAnim_83F7774,
+};
+static const struct SpriteSheet gUnknown_083F7794[] =
+{
+ {gBirchBallarrow_Gfx, 0x0800, 0x1000},
+ {NULL},
+};
+static const struct SpriteSheet gUnknown_083F77A4[] =
+{
+ {gBirchCircle_Gfx, 0x0800, 0x1001},
+ {NULL},
+};
+const struct SpritePalette gUnknown_083F77B4[] =
+{
+ {gBirchBallarrow_Pal, 0x1000},
+ {gBirchCircle_Pal, 0x1001},
+ {NULL},
+};
+static void sub_810A62C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77CC =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76CC,
+ .anims = gSpriteAnimTable_83F774C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A62C,
+};
+static void sub_810A68C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77E4 =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76D4,
+ .anims = gSpriteAnimTable_83F7750,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A68C,
+};
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77FC =
+{
+ .tileTag = 4097,
+ .paletteTag = 4097,
+ .oam = &gOamData_83F76DC,
+ .anims = gSpriteAnimTable_83F7758,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83F7790,
+ .callback = StarterPokemonSpriteAnimCallback,
+};
+
static void MainCallback2(void);
static void Task_StarterChoose1(u8 taskId);
static void Task_StarterChoose2(u8 taskId);
@@ -60,19 +248,12 @@ static u8 CreatePokemonFrontSprite(u16, u8, u8);
#define STARTER_PKMN_POS_X 120
#define STARTER_PKMN_POS_Y 64
-//Task data
-enum {
- TD_STARTERSELECTION,
- TD_PKMN_SPRITE_ID,
- TD_CIRCLE_SPRITE_ID,
-};
-
//Retrieves one of the available starter Pokemon
u16 GetStarterPokemon(u16 n)
{
- if(n > 3)
+ if (n > 3)
n = 0;
- return gStarterMons[n];
+ return sStarterMons[n];
}
static void VblankCallback(void)
@@ -82,14 +263,18 @@ static void VblankCallback(void)
TransferPlttBuffer();
}
+#define tStarterSelection data[0]
+#define tPkmnSpriteId data[1]
+#define tCircleSpriteId data[2]
+
void CB2_ChooseStarter(void)
{
u16 savedIme;
u8 taskId;
u8 spriteId;
-
+
SetVBlankCallback(NULL);
-
+
REG_DISPCNT = 0;
REG_BG3CNT = 0;
REG_BG2CNT = 0;
@@ -103,11 +288,11 @@ void CB2_ChooseStarter(void)
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));
@@ -116,23 +301,23 @@ void CB2_ChooseStarter(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadPalette(gBirchBagGrassPal, 0, 0x40);
- LoadCompressedObjectPic(&gUnknown_083F7794);
- LoadCompressedObjectPic(&gUnknown_083F77A4);
+ LoadPalette(gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
+ LoadCompressedObjectPic(&gUnknown_083F7794[0]);
+ LoadCompressedObjectPic(&gUnknown_083F77A4[0]);
LoadSpritePalettes(gUnknown_083F77B4);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
-
+
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = savedIme;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
-
+
SetVBlankCallback(VblankCallback);
SetMainCallback2(MainCallback2);
-
+
REG_WININ = 0x3F;
REG_WINOUT = 0x1F;
REG_WIN0H = 0;
@@ -144,14 +329,14 @@ void CB2_ChooseStarter(void)
REG_BG2CNT = 0x602;
REG_BG0CNT = 0x1F08;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
-
+
taskId = CreateTask(Task_StarterChoose1, 0);
- gTasks[taskId].data[TD_STARTERSELECTION] = 1;
-
+ gTasks[taskId].tStarterSelection = 1;
+
//Create hand sprite
spriteId = CreateSprite(&gSpriteTemplate_83F77CC, 120, 56, 2);
gSprites[spriteId].data0 = taskId;
-
+
//Create three Pokeball sprites
spriteId = CreateSprite(
&gSpriteTemplate_83F77E4,
@@ -180,7 +365,7 @@ static void MainCallback2(void)
static void Task_StarterChoose1(u8 taskId)
{
- CreateStarterPokemonLabel(0xFF, gTasks[taskId].data[TD_STARTERSELECTION]);
+ CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection);
MenuDrawTextWindow(2, 14, 27, 19);
MenuPrint(gOtherText_BirchInTrouble, 3, 15);
gTasks[taskId].func = Task_StarterChoose2;
@@ -188,60 +373,60 @@ static void Task_StarterChoose1(u8 taskId)
static void Task_StarterChoose2(u8 taskId)
{
- u8 selection = gTasks[taskId].data[TD_STARTERSELECTION];
-
- if(gMain.newKeys & A_BUTTON)
+ u8 selection = gTasks[taskId].tStarterSelection;
+
+ if (gMain.newKeys & A_BUTTON)
{
u8 spriteId;
-
+
MenuZeroFillWindowRect(
gStarterChoose_LabelCoords[selection][0],
gStarterChoose_LabelCoords[selection][1],
gStarterChoose_LabelCoords[selection][0] + 13,
gStarterChoose_LabelCoords[selection][1] + 3);
-
+
REG_WIN0H = 0;
REG_WIN0V = 0;
-
+
//Create white circle background
spriteId = CreateSprite(
&gSpriteTemplate_83F77FC,
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1],
1);
- gTasks[taskId].data[TD_CIRCLE_SPRITE_ID] = spriteId;
-
+ gTasks[taskId].tCircleSpriteId = spriteId;
+
//Create Pokemon sprite
spriteId = CreatePokemonFrontSprite(
- GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]),
+ GetStarterPokemon(gTasks[taskId].tStarterSelection),
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1]);
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_83F778C;
gSprites[spriteId].callback = StarterPokemonSpriteAnimCallback;
- gTasks[taskId].data[TD_PKMN_SPRITE_ID] = spriteId;
-
+ gTasks[taskId].tPkmnSpriteId = spriteId;
+
gTasks[taskId].func = Task_StarterChoose3;
}
else
{
- if((gMain.newKeys & DPAD_LEFT) && selection > 0)
+ if ((gMain.newKeys & DPAD_LEFT) && selection > 0)
{
- gTasks[taskId].data[TD_STARTERSELECTION]--;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection--;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
- else if((gMain.newKeys & DPAD_RIGHT) && selection < 2)
+ else if ((gMain.newKeys & DPAD_RIGHT) && selection < 2)
{
- gTasks[taskId].data[TD_STARTERSELECTION]++;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection++;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
}
}
static void Task_StarterChoose3(u8 taskId)
{
- if(gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].affineAnimEnded &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.x == STARTER_PKMN_POS_X &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.y == STARTER_PKMN_POS_Y)
+ if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y)
{
gTasks[taskId].func = Task_StarterChoose4;
}
@@ -249,7 +434,7 @@ static void Task_StarterChoose3(u8 taskId)
static void Task_StarterChoose4(u8 taskId)
{
- PlayCry1(GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]), 0);
+ PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
MenuDrawTextWindow(2, 14, 27, 19);
//"Do you choose this POKEMON?"
MenuPrint(gOtherText_DoYouChoosePoke, 3, 15);
@@ -260,25 +445,25 @@ static void Task_StarterChoose4(u8 taskId)
static void Task_StarterChoose5(u8 taskId)
{
u8 spriteId;
-
- switch(ProcessMenuInputNoWrap_())
+
+ switch (ProcessMenuInputNoWrap_())
{
- case 0: //YES
+ case 0: // YES
//Return the starter choice and exit.
- gScriptResult = gTasks[taskId].data[TD_STARTERSELECTION];
+ gScriptResult = gTasks[taskId].tStarterSelection;
SetMainCallback2(gMain.savedCallback);
break;
- case 1: //NO
- case -1: //B button
+ case 1: // NO
+ case -1: // B button
PlaySE(SE_SELECT);
MenuZeroFillWindowRect(21, 7, 27, 12);
-
- spriteId = gTasks[taskId].data[TD_PKMN_SPRITE_ID];
+
+ spriteId = gTasks[taskId].tPkmnSpriteId;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
-
- spriteId = gTasks[taskId].data[TD_CIRCLE_SPRITE_ID];
+
+ spriteId = gTasks[taskId].tCircleSpriteId;
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
gTasks[taskId].func = Task_StarterChoose6;
@@ -313,13 +498,13 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
u8 srcIndex;
u8 dstIndex;
u16 species;
-
+
u8 labelLeft;
u8 labelRight;
u8 labelTop;
u8 labelBottom;
-
- if(prevSelection != 0xFF)
+
+ if (prevSelection != 0xFF)
{
//Remove the old Pokemon label
MenuZeroFillWindowRect(
@@ -337,18 +522,18 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
SET_CHAR(labelText, 5, EXT_CTRL_CODE_BEGIN);
SET_CHAR(labelText, 6, 0x11);
SET_CHAR(labelText, 7, dstIndex);
-
+
//Copy category string to label
dstIndex = 8;
srcIndex = 0;
- while(category[srcIndex] != EOS && srcIndex <= 10)
+ while (category[srcIndex] != EOS && srcIndex <= 10)
{
labelText[dstIndex] = category[srcIndex];
srcIndex++;
dstIndex++;
}
labelText[dstIndex++] = CHAR_SPACE;
-
+
//Copy POKEMON string to label
StringCopy(labelText + dstIndex, gOtherText_Poke);
MenuPrint(
@@ -356,14 +541,14 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
gStarterChoose_LabelCoords[selection][0],
gStarterChoose_LabelCoords[selection][1]);
AddTextColorCtrlCode(labelText, 0, 15, 8);
-
+
//Copy Pokemon name to label
sub_8072C74(labelText + 5, gSpeciesNames[species], 0x6B, 1);
MenuPrint(
labelText,
gStarterChoose_LabelCoords[selection][0],
gStarterChoose_LabelCoords[selection][1] + 2);
-
+
labelLeft = gStarterChoose_LabelCoords[selection][0] * 8 + 4;
labelRight = (gStarterChoose_LabelCoords[selection][0] + 13) * 8 + 4;
labelTop = gStarterChoose_LabelCoords[selection][1] * 8;
@@ -372,15 +557,14 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
}
-void nullsub_72(struct Sprite *sprite)
+static void nullsub_72(struct Sprite *sprite)
{
-
}
static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
{
u8 spriteId;
-
+
DecompressPicFromTable_2(
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y,
@@ -395,33 +579,33 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
}
//Sprite callback
-void sub_810A62C(struct Sprite *sprite)
+static void sub_810A62C(struct Sprite *sprite)
{
- sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][0];
- sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][1];
+ sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][0];
+ sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][1];
sprite->pos2.y = Sin(sprite->data1, 8);
sprite->data1 = (u8)sprite->data1 + 4;
}
//Sprite callback
-void sub_810A68C(struct Sprite *sprite)
+static void sub_810A68C(struct Sprite *sprite)
{
- if(gTasks[sprite->data0].data[TD_STARTERSELECTION] == sprite->data1)
+ if (gTasks[sprite->data0].tStarterSelection == sprite->data1)
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 0);
}
//Sprite callback
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
{
//Move sprite to upper center of screen
- if(sprite->pos1.x > STARTER_PKMN_POS_X)
+ if (sprite->pos1.x > STARTER_PKMN_POS_X)
sprite->pos1.x -= 4;
- if(sprite->pos1.x < STARTER_PKMN_POS_X)
+ if (sprite->pos1.x < STARTER_PKMN_POS_X)
sprite->pos1.x += 4;
- if(sprite->pos1.y > STARTER_PKMN_POS_Y)
+ if (sprite->pos1.y > STARTER_PKMN_POS_Y)
sprite->pos1.y -= 2;
- if(sprite->pos1.y < STARTER_PKMN_POS_Y)
+ if (sprite->pos1.y < STARTER_PKMN_POS_Y)
sprite->pos1.y += 2;
}
diff --git a/src/string_util.c b/src/string_util.c
index a7f9c3d1f..e537cff3a 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -2,29 +2,12 @@
#include "string_util.h"
#include "text.h"
-#define MAX_PLACEHOLDER_ID 0xD
-
-static u8 *ExpandPlaceholder_UnknownStringVar(void);
-static u8 *ExpandPlaceholder_PlayerName(void);
-static u8 *ExpandPlaceholder_StringVar1(void);
-static u8 *ExpandPlaceholder_StringVar2(void);
-static u8 *ExpandPlaceholder_StringVar3(void);
-static u8 *ExpandPlaceholder_KunChan(void);
-static u8 *ExpandPlaceholder_RivalName(void);
-static u8 *ExpandPlaceholder_Version(void);
-static u8 *ExpandPlaceholder_EvilTeam(void);
-static u8 *ExpandPlaceholder_GoodTeam(void);
-static u8 *ExpandPlaceholder_EvilLeader(void);
-static u8 *ExpandPlaceholder_GoodLeader(void);
-static u8 *ExpandPlaceholder_EvilLegendary(void);
-static u8 *ExpandPlaceholder_GoodLegendary(void);
-
u8 gUnknownStringVar[16];
-const u8 gEmptyString_81E72B0[] = _"";
-const u8 gRightPointingTriangleString[] = _"▶";
+const u8 gEmptyString_81E72B0[] = _("");
+const u8 gRightPointingTriangleString[] = _("▶");
-static const u8 sDigits[] = @"0123456789ABCDEF";
+static const u8 sDigits[] = __("0123456789ABCDEF");
static const s32 sPowersOfTen[] =
{
@@ -40,29 +23,6 @@ static const s32 sPowersOfTen[] =
1000000000,
};
-static const u8 sSetBrailleFont[] = { 0xFC, 0x06, 0x06, 0xFF };
-static const u8 sGotoLine2[] = { 0xFE, 0xFC, 0x0E, 0x02, 0xFF };
-
-typedef u8 *(*ExpandPlaceholderFunc)(void);
-
-static const ExpandPlaceholderFunc sExpandPlaceholderFuncs[] =
-{
- ExpandPlaceholder_UnknownStringVar,
- ExpandPlaceholder_PlayerName,
- ExpandPlaceholder_StringVar1,
- ExpandPlaceholder_StringVar2,
- ExpandPlaceholder_StringVar3,
- ExpandPlaceholder_KunChan,
- ExpandPlaceholder_RivalName,
- ExpandPlaceholder_Version,
- ExpandPlaceholder_EvilTeam,
- ExpandPlaceholder_GoodTeam,
- ExpandPlaceholder_EvilLeader,
- ExpandPlaceholder_GoodLeader,
- ExpandPlaceholder_EvilLegendary,
- ExpandPlaceholder_GoodLegendary,
-};
-
extern u8 gExpandedPlaceholder_Empty[];
extern u8 gExpandedPlaceholder_Kun[];
extern u8 gExpandedPlaceholder_Chan[];
@@ -445,11 +405,8 @@ u8 *StringExpandPlaceholders(u8 *dest, const u8 *src)
u8 *StringBraille(u8 *dest, const u8 *src)
{
- u8 setBrailleFont[4];
- u8 gotoLine2[5];
-
- memcpy(setBrailleFont, sSetBrailleFont, 4);
- memcpy(gotoLine2, sGotoLine2, 5);
+ u8 setBrailleFont[] = { 0xFC, 0x06, 0x06, 0xFF };
+ u8 gotoLine2[] = { 0xFE, 0xFC, 0x0E, 0x02, 0xFF };
dest = StringCopy(dest, setBrailleFont);
@@ -473,32 +430,32 @@ u8 *StringBraille(u8 *dest, const u8 *src)
}
}
-u8 *ExpandPlaceholder_UnknownStringVar(void)
+static u8 *ExpandPlaceholder_UnknownStringVar(void)
{
return gUnknownStringVar;
}
-u8 *ExpandPlaceholder_PlayerName(void)
+static u8 *ExpandPlaceholder_PlayerName(void)
{
return gSaveBlock2.playerName;
}
-u8 *ExpandPlaceholder_StringVar1(void)
+static u8 *ExpandPlaceholder_StringVar1(void)
{
return gStringVar1;
}
-u8 *ExpandPlaceholder_StringVar2(void)
+static u8 *ExpandPlaceholder_StringVar2(void)
{
return gStringVar2;
}
-u8 *ExpandPlaceholder_StringVar3(void)
+static u8 *ExpandPlaceholder_StringVar3(void)
{
return gStringVar3;
}
-u8 *ExpandPlaceholder_KunChan(void)
+static u8 *ExpandPlaceholder_KunChan(void)
{
if (gSaveBlock2.playerGender == MALE)
return gExpandedPlaceholder_Kun;
@@ -506,7 +463,7 @@ u8 *ExpandPlaceholder_KunChan(void)
return gExpandedPlaceholder_Chan;
}
-u8 *ExpandPlaceholder_RivalName(void)
+static u8 *ExpandPlaceholder_RivalName(void)
{
if (gSaveBlock2.playerGender == MALE)
return gExpandedPlaceholder_May;
@@ -537,10 +494,30 @@ VERSION_DEPENDENT_PLACEHOLDER_LIST
u8 *GetExpandedPlaceholder(u32 id)
{
- if (id > MAX_PLACEHOLDER_ID)
+ typedef u8 *(*ExpandPlaceholderFunc)(void);
+
+ static const ExpandPlaceholderFunc funcs[] =
+ {
+ ExpandPlaceholder_UnknownStringVar,
+ ExpandPlaceholder_PlayerName,
+ ExpandPlaceholder_StringVar1,
+ ExpandPlaceholder_StringVar2,
+ ExpandPlaceholder_StringVar3,
+ ExpandPlaceholder_KunChan,
+ ExpandPlaceholder_RivalName,
+ ExpandPlaceholder_Version,
+ ExpandPlaceholder_EvilTeam,
+ ExpandPlaceholder_GoodTeam,
+ ExpandPlaceholder_EvilLeader,
+ ExpandPlaceholder_GoodLeader,
+ ExpandPlaceholder_EvilLegendary,
+ ExpandPlaceholder_GoodLegendary,
+ };
+
+ if (id >= ARRAY_COUNT(funcs))
return gExpandedPlaceholder_Empty;
else
- return sExpandPlaceholderFuncs[id]();
+ return funcs[id]();
}
u8 *StringFill(u8 *dest, u8 c, u16 n)
diff --git a/src/strings.c b/src/strings.c
new file mode 100644
index 000000000..fed0c86e2
--- /dev/null
+++ b/src/strings.c
@@ -0,0 +1,923 @@
+#include "global.h"
+
+// placeholder strings
+const u8 gExpandedPlaceholder_Empty[] = _("");
+const u8 gExpandedPlaceholder_Kun[] = _("");
+const u8 gExpandedPlaceholder_Chan[] = _("");
+const u8 gExpandedPlaceholder_Sapphire[] = _("SAPPHIRE");
+const u8 gExpandedPlaceholder_Ruby[] = _("RUBY");
+const u8 gExpandedPlaceholder_Aqua[] = _("AQUA");
+const u8 gExpandedPlaceholder_Magma[] = _("MAGMA");
+const u8 gExpandedPlaceholder_Archie[] = _("ARCHIE");
+const u8 gExpandedPlaceholder_Maxie[] = _("MAXIE");
+const u8 gExpandedPlaceholder_Kyogre[] = _("KYOGRE");
+const u8 gExpandedPlaceholder_Groudon[] = _("GROUDON");
+const u8 gExpandedPlaceholder_Brendan[] = _("BRENDAN");
+const u8 gExpandedPlaceholder_May[] = _("MAY");
+
+// system text
+const u8 gSystemText_Egg[] = _("EGG");
+const u8 gSystemText_Pokemon2[] = _("POKéMON");
+
+// main menu text
+const u8 gMainMenuString_NewGame[] = _("NEW GAME");
+const u8 gMainMenuString_Continue[] = _("CONTINUE");
+const u8 gMainMenuString_Option[] = _("OPTION");
+const u8 gMainMenuString_MysteryEvents[] = _("MYSTERY EVENTS");
+
+// system text 2
+const u8 SystemText_UpdatingSaveExternal[] = _("Updating save file using external\ndata. Please wait.");
+const u8 SystemText_SaveUpdated[] = _("The save file has been updated.");
+const u8 SystemText_SaveUpdatedExchangeBackup[] = _("The save file has been updated.\pFurther game data cannot be saved\nto the backup memory.\pPlease exchange the backup memory.\pFor details, please contact the\nNintendo Service Center.");
+const u8 SystemText_SaveNotUpdated[] = _("The save file could not be updated.\pPlease exchange the backup\nmemory.\pFor details, please contact the\nNintendo Service Center.");
+
+// save file text
+const u8 gSaveFileCorruptMessage[] = _("The save file is corrupt. The\nprevious save file will be loaded.");
+const u8 gSaveFileDeletedMessage[] = _(" The save file has been deleted...");
+
+// system text 3
+const u8 gBoardNotInstalledMessage[] = _("The 1M sub-circuit board is\nnot installed.");
+const u8 gBatteryDryMessage[] = _("The internal battery has run dry.\nThe game can be played.\pHowever, clock-based events will\nno longer occur.");
+
+// main menu text 2
+const u8 gMainMenuString_Player[] = _("PLAYER");
+const u8 gMainMenuString_Pokedex[] = _("POKéDEX");
+const u8 gMainMenuString_Time[] = _("TIME");
+const u8 gMainMenuString_Badges[] = _("BADGES");
+
+// birch text
+const u8 gBirchText_Boy[] = _("BOY");
+const u8 gBirchText_Girl[] = _("GIRL");
+const u8 gBirchText_NewName[] = _("NEW NAME");
+
+#ifdef SAPPHIRE
+const u8 gDefaultBoyName1[] = _("SEAN");
+#else
+const u8 gDefaultBoyName1[] = _("LANDON");
+#endif
+const u8 gDefaultBoyName2[] = _("TERRY");
+const u8 gDefaultBoyName3[] = _("SETH");
+const u8 gDefaultBoyName4[] = _("TOM");
+
+#ifdef SAPPHIRE
+const u8 gDefaultGirlName1[] = _("MARINA");
+#else
+const u8 gDefaultGirlName1[] = _("TERRA");
+#endif
+const u8 gDefaultGirlName2[] = _("KIMMY");
+const u8 gDefaultGirlName3[] = _("NICOLA");
+const u8 gDefaultGirlName4[] = _("SARA");
+
+const u8 gSystemText_IntroWeCall[] = _("This is what we call\na POKéMON.");
+const u8 gSystemText_NewPara[] = _("\p");
+
+const u8 gDexText_UnknownPoke[] = _(" ????? POKéMON");
+const u8 gDexText_UnknownHeight[] = _("{CLEAR_TO 0x0C}??’??”");
+const u8 gDexText_UnknownWeight[] = _("????.? lbs.$"); // extra terminator?
+const u8 gDexText_CryOf[] = _("{CLEAR_TO 2}CRY OF$"); // extra terminator?
+const u8 gDexText_SizeComparedTo[] = _("SIZE COMPARED TO ");
+const u8 gDexText_RegisterComplete[] = _("POKéDEX registration completed.");
+const u8 gDexText_Searching[] = _("Searching...\nPlease wait.");
+const u8 gDexText_SearchComplete[] = _("Search completed.");
+const u8 gDexText_NoMatching[] = _("No matching POKéMON were found.");
+
+const u8 DexText_SearchForPoke[] = _("Search for POKéMON based on\nselected parameters.");
+const u8 DexText_SwitchDex[] = _("Switch POKéDEX listings.");
+const u8 DexText_ReturnToDex[] = _("Return to the POKéDEX.");
+const u8 DexText_SelectDexMode[] = _("Select the POKéDEX mode.");
+const u8 DexText_SelectDexList[] = _("Select the POKéDEX listing mode.");
+const u8 DexText_ListByABC[] = _("List by the first letter in the name.\n/Spotted POKéMON only.");
+const u8 DexText_ListByColor[] = _("List by body color.\n/Spotted POKéMON only.");
+const u8 DexText_ListByType[] = _("List by type.\n/Owned POKéMON only.");
+const u8 DexText_ExecuteSearchSwitch[] = _("Execute search/switch.");
+const u8 DexText_HoennDex[] = _("HOENN DEX");
+const u8 DexText_NationalDex[] = _("NATIONAL DEX");
+const u8 DexText_NumericalMode[] = _("NUMERICAL MODE");
+const u8 DexText_ABCMode[] = _("A TO Z MODE");
+const u8 DexText_HeaviestMode[] = _("HEAVIEST MODE");
+const u8 DexText_LightestMode[] = _("LIGHTEST MODE");
+const u8 DexText_TallestMode[] = _("TALLEST MODE");
+const u8 DexText_SmallestMode[] = _("SMALLEST MODE");
+const u8 DexText_ABC[] = _("ABC");
+const u8 DexText_DEF[] = _("DEF");
+const u8 DexText_GHI[] = _("GHI");
+const u8 DexText_JKL[] = _("JKL");
+const u8 DexText_MNO[] = _("MNO");
+const u8 DexText_PQR[] = _("PQR");
+const u8 DexText_STU[] = _("STU");
+const u8 DexText_VWX[] = _("VWX");
+const u8 DexText_YZ[] = _("YZ");
+const u8 DexText_Red[] = _("RED");
+const u8 DexText_Blue[] = _("BLUE");
+const u8 DexText_Yellow[] = _("YELLOW");
+const u8 DexText_Green[] = _("GREEN");
+const u8 DexText_Black[] = _("BLACK");
+const u8 DexText_Brown[] = _("BROWN");
+const u8 DexText_Purple[] = _("PURPLE");
+const u8 DexText_Gray[] = _("GRAY");
+const u8 DexText_White[] = _("WHITE");
+const u8 DexText_Pink[] = _("PINK");
+const u8 DexText_HoennDex2[] = _("HOENN region’s POKéDEX");
+const u8 DexText_NationalDex2[] = _("National edition POKéDEX");
+const u8 DexText_ListByNumber[] = _("POKéMON are listed according to their\nnumber.");
+const u8 DexText_ListByABC2[] = _("Spotted and owned POKéMON are listed\nalphabetically.");
+const u8 DexText_ListByHeavyToLightest[] = _("Owned POKéMON are listed from the\nheaviest to the lightest.");
+const u8 DexText_ListByLightToHeaviest[] = _("Owned POKéMON are listed from the\nlightest to the heaviest.");
+const u8 DexText_ListByTallToSmallest[] = _("Owned POKéMON are listed from the\ntallest to the smallest.");
+const u8 DexText_ListBySmallToTallest[] = _("Owned POKéMON are listed from the\nsmallest to the tallest.");
+const u8 DexText_Terminator5[] = _("");
+const u8 DexText_DontSpecify[] = _("DON’T SPECIFY.");
+const u8 DexText_None[] = _("NONE");
+const u8 DexText_RightPointingTriangle[] = _("▶"); // right pointing triangle
+const u8 DexText_Terminator6[] = _(" ");
+
+const u8 gMenuText_WelcomeToHOFAndDexRating[] = _("Welcome to the HALL OF FAME!$Spotted POKéMON: {STR_VAR_1}!\nOwned POKéMON: {STR_VAR_2}!\pPROF. BIRCH’s POKéDEX rating!\pPROF. BIRCH: Let’s see...\p");
+const u8 gMenuText_HOFSaving[] = _("SAVING...\nDON’T TURN OFF THE POWER.");
+const u8 gMenuText_HOFCorrupt[] = _("The HALL OF FAME data is corrupt.");
+const u8 gMenuText_HOFNumber[] = _("HALL OF FAME No. ");
+const u8 gMenuText_HOFCongratulations[] = _("LEAGUE CHAMPION!\nCONGRATULATIONS!");
+
+const u8 gOtherText_Number2[] = _("No. ");
+const u8 gOtherText_Level3[] = _("Lv. ");
+const u8 gOtherText_IDNumber[] = _("IDNo. /");
+const u8 gOtherText_Name[] = _("NAME /");
+const u8 gOtherText_IDNumber2[] = _("IDNo. /");
+const u8 gOtherText_BirchInTrouble[] = _("{HIGHLIGHT WHITE2}{COLOR DARK_GREY}PROF. BIRCH is in trouble!\nRelease a POKéMON and rescue him!");
+const u8 gOtherText_DoYouChoosePoke[] = _("{HIGHLIGHT WHITE2}{COLOR DARK_GREY}Do you choose this POKéMON?");
+const u8 gOtherText_Poke[] = _("POKéMON");
+
+const u8 gSystemText_SaveErrorExchangeBackup[] = _("Save error.\pPlease exchange the\nbackup memory.");
+const u8 gOtherText_FlyToWhere[] = _("FLY to where?");
+
+const u8 OtherText_Use[] = _("USE");
+const u8 OtherText_Toss[] = _("TOSS");
+const u8 OtherText_Register[] = _("REGISTER");
+const u8 OtherText_Give2[] = _("GIVE");
+const u8 OtherText_CheckTag[] = _("CHECK TAG");
+const u8 OtherText_Confirm[] = _("CONFIRM");
+const u8 gOtherText_Walk[] = _("WALK");
+
+const u8 gUnknownText_Exit[] = _("EXIT");
+const u8 gOtherText_CancelNoTerminator[] = _("CANCEL");
+const u8 gOtherText_CancelWithTerminator[] = _("$CANCEL"); // with terminator at beginning?
+
+const u8 OtherText_Item[] = _("ITEM");
+const u8 OtherText_Mail[] = _("MAIL");
+const u8 OtherText_Take2[] = _("TAKE");
+const u8 OtherText_Store[] = _("STORE");
+
+const u8 gOtherText_Check[] = _("CHECK");
+const u8 gOtherText_None[] = _("NONE");
+
+const u8 gOtherText_ThreeQuestions2[] = _("???");
+
+const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+
+const u8 gOtherText_OneDash[] = _("-");
+const u8 gOtherText_TwoDashes[] = _("--");
+const u8 gOtherText_ThreeDashes2[] = _("---");
+const u8 gOtherText_MaleSymbol2[] = _("♂");
+const u8 gOtherText_FemaleSymbolAndLv[] = _("♀$Lv.");
+const u8 gOtherText_TallPlusAndRightArrow[] = _("{TALL_PLUS}${RIGHT_ARROW}");
+const u8 gMenuText_GoBackToPrev[] = _("Go back to the\nprevious menu.");
+const u8 gOtherText_WhatWillYouDo[] = _("What would you like to do?");
+
+const u8 gOtherText_xString1[] = _("×{STR_VAR_1}");
+const u8 gOtherText_Berry2[] = _(" BERRY");
+const u8 gOtherText_Coins2[] = _("{STR_VAR_1} COINS");
+const u8 gOtherText_CloseBag[] = _("CLOSE BAG");
+
+const u8 OtherText_TheField3[] = _("the field.");
+const u8 OtherText_TheBattle[] = _("the battle.");
+const u8 OtherText_ThePokeList[] = _("the POKéMON LIST.");
+const u8 OtherText_TheShop[] = _("the shop.");
+const u8 OtherText_TheField[] = _("the field.");
+const u8 OtherText_TheField2[] = _("the field.");
+const u8 OtherText_ThePC[] = _("the PC.");
+
+const struct TextStruct gUnknown_0840E740[7] =
+{
+ OtherText_TheField3,
+ OtherText_TheBattle,
+ OtherText_ThePokeList,
+ OtherText_TheShop,
+ OtherText_TheField,
+ OtherText_TheField2,
+ OtherText_ThePC,
+};
+
+const u8 gOtherText_ReturnTo[] = _("Return to");
+const u8 gOtherText_WhatWillYouDo2[] = _("What would you\nlike to do?");
+const u8 gOtherText_CantWriteMail[] = _("You can’t write\nMAIL here.");
+const u8 gOtherText_NoPokemon[] = _("There is no\nPOKéMON.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_SwitchWhichItem[] = _("Switch with which\nitem?");
+const u8 gOtherText_CantBeHeld[] = _("{STR_VAR_1} can’t be held.");
+const u8 gOtherText_CantBeHeldHere[] = _("{STR_VAR_1} can’t be held here.");
+const u8 gOtherText_HowManyToDeposit[] = _("How many do you\nwant to deposit?");
+const u8 gOtherText_DepositedItems[] = _("Deposited {STR_VAR_2}\n{STR_VAR_1}(s).");
+const u8 gOtherText_NoRoomForItems[] = _("There’s no room to\nstore items.");
+const u8 gOtherText_CantStoreSomeoneItem[] = _("You can’t store\nsomeone else’s item\nin the PC.");
+const u8 gOtherText_TooImportant[] = _("That’s much too\nimportant to toss\nout!");
+const u8 gOtherText_HowManyToToss[] = _("Toss out how many?");
+const u8 gOtherText_ThrewAwayItem[] = _("Threw away {STR_VAR_2}\n{STR_VAR_1}(s).");
+const u8 gOtherText_OkayToThrowAwayPrompt[] = _("Is it okay to\nthrow away {STR_VAR_2}\n{STR_VAR_1}(s)?");
+const u8 gOtherText_DadsAdvice[] = _("DAD’s advice...\n{PLAYER}, there’s a time and place for\leverything!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_CantGetOffBike[] = _("You can’t dismount your BIKE here.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_ItemfinderResponding[] = _("Oh!\nThe machine’s responding!\pThere’s an item buried around here!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_ItemfinderItemUnderfoot[] = _("The machine’s indicating something\nright underfoot!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_NoResponse[] = _("... ... ... ... Nope!\nThere’s no response.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_Coins3[] = _("Your COINS:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_BootedTM[] = _("Booted up a TM.");
+const u8 gOtherText_BootedHM[] = _("Booted up an HM.");
+const u8 gOtherText_ContainsMove[] = _("It contained\n{STR_VAR_1}.\pTeach {STR_VAR_1}\nto a POKéMON?");
+const u8 gOtherText_UsedItem[] = _("{PLAYER} used the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_RepelLingers[] = _("But the effects of a REPEL lingered\nfrom earlier.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_UsedFlute[] = _("{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be lured.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_UsedRepel[] = _("{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be repelled.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_BoxIsFull[] = _("The BOX is full.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_Size[] = _("SIZE /");
+const u8 gOtherText_Firm[] = _("FIRM /");
+
+const u8 gContestStatsText_Unknown1[] = _("{STR_VAR_1}.{STR_VAR_2}”");
+
+const u8 ContestStatsText_VerySoft[] = _("Very soft");
+const u8 ContestStatsText_Soft[] = _("Soft");
+const u8 ContestStatsText_Hard[] = _("Hard");
+const u8 ContestStatsText_VeryHard[] = _("Very hard");
+const u8 ContestStatsText_SuperHard[] = _("Super hard");
+
+const u8 ContestStatsText_RedPokeBlock[] = _("RED {POKEBLOCK}");
+const u8 ContestStatsText_BluePokeBlock[] = _("BLUE {POKEBLOCK}");
+const u8 ContestStatsText_PinkPokeBlock[] = _("PINK {POKEBLOCK}");
+const u8 ContestStatsText_GreenPokeBlock[] = _("GREEN {POKEBLOCK}");
+const u8 ContestStatsText_YellowPokeBlock[] = _("YELLOW {POKEBLOCK}");
+const u8 ContestStatsText_PurplePokeBlock[] = _("PURPLE {POKEBLOCK}");
+const u8 ContestStatsText_IndigoPokeBlock[] = _("INDIGO {POKEBLOCK}");
+const u8 ContestStatsText_BrownPokeBlock[] = _("BROWN {POKEBLOCK}");
+const u8 ContestStatsText_LiteBluePokeBlock[] = _("LITEBLUE {POKEBLOCK}");
+const u8 ContestStatsText_OlivePokeBlock[] = _("OLIVE {POKEBLOCK}");
+const u8 ContestStatsText_GrayPokeBlock[] = _("GRAY {POKEBLOCK}");
+const u8 ContestStatsText_BlackPokeBlock[] = _("BLACK {POKEBLOCK}");
+const u8 ContestStatsText_WhitePokeBlock[] = _("WHITE {POKEBLOCK}");
+const u8 ContestStatsText_GoldPokeBlock[] = _("GOLD {POKEBLOCK}");
+
+const u8 gContestStatsText_Spicy[] = _("SPICY");
+const u8 gContestStatsText_Dry[] = _("DRY");
+const u8 gContestStatsText_Sweet[] = _("SWEET");
+const u8 gContestStatsText_Bitter[] = _("BITTER");
+const u8 gContestStatsText_Sour[] = _("SOUR$TASTY$FEEL"); // tasty is unused, feel might not be
+
+const u8 gContestStatsText_StowCase[] = _("Stow CASE.");
+const u8 gContestStatsText_ThrowAwayPrompt[] = _("Throw away this\n{STR_VAR_1}?");
+const u8 gContestStatsText_WasThrownAway[] = _("The {STR_VAR_1}\nwas thrown away.");
+const u8 gContestStatsText_NormallyAte[] = _("{STR_VAR_1} ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
+const u8 gContestStatsText_HappilyAte[] = _("{STR_VAR_1} happily ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
+const u8 gContestStatsText_DisdainfullyAte[] = _("{STR_VAR_1} disdainfully ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
+
+const u8 MartText_Buy[] = _("BUY");
+const u8 MartText_Sell[] = _("SELL");
+const u8 MartText_Quit2[] = _("QUIT");
+
+const u8 gOtherText_QuitShopping[] = _("Quit shopping.");
+
+const u8 gOtherText_HowManyYouWant[] = _("{STR_VAR_1}? Certainly.\nHow many would you like?");
+const u8 gOtherText_ThatWillBe[] = _("{STR_VAR_1}? And you wanted {STR_VAR_2}?\nThat will be ¥{STR_VAR_3}.");
+const u8 gOtherText_ThatWillBe2[] = _("{STR_VAR_1}, is it?\nThat’ll be ¥{STR_VAR_2}. Do you want it?");
+const u8 gOtherText_ThatWillBe3[] = _("You wanted {STR_VAR_1}?\nThat’ll be ¥{STR_VAR_2}. Will that be okay?");
+const u8 gOtherText_HereYouGo[] = _("Here you go!\nThank you very much.");
+const u8 gOtherText_HereYouGo2[] = _("Thank you!\nI’ll send it to your home PC.");
+const u8 gOtherText_HereYouGo3[] = _("Thanks!\nI’ll send it to your PC at home.");
+const u8 gOtherText_NotEnoughMoney[] = _("You don’t have enough money.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_NoRoomFor[] = _("You have no more room for items.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_SpaceForIsFull[] = _("The space for {STR_VAR_1} is full.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_AnythingElse[] = _("Is there anything else I can help\nyou with?");
+const u8 gOtherText_CanIHelpYou[] = _("Can I help you with anything else?");
+const u8 gOtherText_FreePremierBall[] = _("I’ll throw in a PREMIER BALL, too.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_CantBuyThat[] = _("{STR_VAR_2}? Oh, no.\nI can’t buy that.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_HowManyToSell[] = _("{STR_VAR_2}?\nHow many would you like to sell?");
+const u8 gOtherText_CanPay[] = _("I can pay ¥{STR_VAR_1}.\nWould that be okay?");
+const u8 gOtherText_SoldItem[] = _("Turned over the {STR_VAR_2}\nand received ¥{STR_VAR_1}.");
+
+const u8 OtherText_Money[] = _("¥{STR_VAR_1}");
+const u8 OtherText_Shift[] = _("SHIFT");
+const u8 OtherText_SendOut[] = _("SEND OUT");
+const u8 OtherText_Switch2[] = _("SWITCH");
+const u8 OtherText_Summary[] = _("SUMMARY");
+const u8 OtherText_Moves[] = _("MOVES");
+const u8 OtherText_Enter2[] = _("ENTER");
+const u8 OtherText_NoEntry[] = _("NO ENTRY");
+const u8 OtherText_Take[] = _("TAKE");
+const u8 OtherText_Read2[] = _("READ");
+
+const u8 gOtherText_Hp2[] = _("HP");
+const u8 gOtherText_SpAtk2[] = _("SP. ATK");
+const u8 gOtherText_SpDef2[] = _("SP. DEF");
+const u8 gOtherText_WontHaveAnyEffect[] = _("It won’t have any effect.{PAUSE_UNTIL_PRESS}");
+
+#if REVISION >= 1
+const u8 gOtherText_CantUseOnPoke[] = _("This can’t be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}");
+#else
+const u8 gOtherText_CantUseOnPoke[] = _("This item can’t be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}");
+#endif
+
+const u8 gOtherText_CantBeSwitched[] = _("{STR_VAR_1} can’t be switched\nout!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_AlreadyBattle[] = _("{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_AlreadySelected[] = _("{STR_VAR_1} has already been\nselected.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_NoEnergyLeft[] = _("{STR_VAR_1} has no energy\nleft to battle!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_CantSwitchPokeWithYours[] = _("You can’t switch {STR_VAR_1}’s\nPOKéMON with one of yours!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_EGGCantBattle[] = _("An EGG can’t battle!{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_CantBeUsedBadge[] = _("This can’t be used until a new\nBADGE is obtained.");
+const u8 gOtherText_NoMoreThreePoke[] = _("No more than three POKéMON\nmay enter.");
+const u8 gOtherText_SendRemovedMailPrompt[] = _("Send the removed MAIL to\nyour PC?");
+const u8 gOtherText_MailWasSent[] = _("The MAIL was sent to your PC.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_MailboxIsFull[] = _("Your PC’s MAILBOX is full.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_MailRemovedMessageLost[] = _("If the MAIL is removed, the\nmessage will be lost. Okay?");
+const u8 gOtherText_MailMustBeRemoved[] = _("MAIL must be removed before\nholding an item.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_WasGivenToHold[] = _("{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_AlreadyHolding[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?");
+const u8 gOtherText_NotHoldingAnything[] = _("{STR_VAR_1} isn’t\nholding anything.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_ReceivedTheThingFrom[] = _("Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_MailTaken[] = _("MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_TakenAndReplaced[] = _("The {STR_VAR_2} was taken and\nreplaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_PokeHoldingItemCantMail[] = _("This POKéMON is holding an item.\nIt cannot hold MAIL.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_MailTransferredMailbox[] = _("MAIL was transferred from\nthe MAILBOX.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_BagFullCannotRemoveItem[] = _("The BAG is full. The POKéMON’s\nitem could not be removed.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_LearnedMove[] = _("{STR_VAR_1} learned\n{STR_VAR_2}!");
+const u8 gOtherText_NotCompatible[] = _("{STR_VAR_1} and {STR_VAR_2}\nare not compatible.\p{STR_VAR_2} can’t be learned.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_WantsToLearn[] = _("{STR_VAR_1} wants to learn the\nmove {STR_VAR_2}.\pHowever, {STR_VAR_1} already\nknows four moves.\pShould a move be deleted and\nreplaced with {STR_VAR_2}?");
+const u8 gOtherText_StopTryingTo[] = _("Stop trying to teach\n{STR_VAR_2}?");
+const u8 gOtherText_DidNotLearnMove2[] = _("{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_WhichMoveToForget2[] = _("Which move should be forgotten?{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_ForgetMove123_2[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}... {PAUSE 15}... {PAUSE 15}... {PAUSE 15}{PLAY_SE SE_KON}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd...{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_AlreadyKnows[] = _("{STR_VAR_1} already knows\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_HPRestoredBy[] = _("{STR_VAR_1}’s HP was restored by\n{STR_VAR_2} points.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_CuredPoisoning[] = _("{STR_VAR_1} was cured of its\npoisoning.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_CuredParalysis[] = _("{STR_VAR_1} was cured of\nparalysis.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_WokeUp[] = _("{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_BurnHealed[] = _("{STR_VAR_1}’s burn was healed.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_ThawedOut[] = _("{STR_VAR_1} was thawed out.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_PPRestored[] = _("PP was restored.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_RegainedHealth[] = _("{STR_VAR_1} regained health.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_BecameHealthy[] = _("{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_PPIncreased[] = _("{STR_VAR_1}’s PP increased.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_ElevatedTo[] = _("{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}.");
+const u8 gOtherText_WasRaised[] = _("{STR_VAR_1}’s {STR_VAR_2} was\nraised.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_SnapConfusion[] = _("{STR_VAR_1} snapped out of its\nconfusion.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_GotOverLove[] = _("{STR_VAR_1} got over its\ninfatuation.{PAUSE_UNTIL_PRESS}");
+const u8 OtherText_ChoosePoke[] = _("Choose a POKéMON.");
+const u8 OtherText_MovePokeTo[] = _("Move to where?");
+const u8 OtherText_TeachWhat[] = _("Teach which POKéMON?");
+const u8 OtherText_UseWhat[] = _("Use on which POKéMON?");
+const u8 OtherText_GiveWhat[] = _("Give to which POKéMON?");
+const u8 OtherText_DoWhat[] = _("Do what with {STR_VAR_1}?");
+const u8 OtherText_NothingToCut[] = _("There’s nothing to CUT.");
+const u8 OtherText_CantSurf[] = _("You can’t SURF here.");
+const u8 OtherText_AlreadySurfing[] = _("You’re already SURFING.");
+const u8 OtherText_CantUseThatHere[] = _("Can’t use that here.");
+const u8 OtherText_RestoreWhatMove[] = _("Restore which move?");
+const u8 OtherText_BoostPP[] = _("Boost PP of which move?");
+const u8 OtherText_DoWhatWithItem[] = _("Do what with an item?");
+const u8 OtherText_NoPokeForBattle[] = _("No POKéMON for battle!");
+const u8 OtherText_ChoosePoke2[] = _("Choose a POKéMON.");
+const u8 OtherText_NotEnoughHP[] = _("Not enough HP...");
+const u8 OtherText_ThreePokeNeeded[] = _("Three POKéMON are needed.");
+const u8 OtherText_PokeCantBeSame[] = _("POKéMON can’t be the same.");
+const u8 OtherText_NoIdenticalHoldItems[] = _("No identical hold items.");
+const u8 OtherText_TeachWhichPoke[] = _("Teach which POKéMON?");
+const u8 gOtherText_Attack[] = _("ATTACK");
+const u8 gOtherText_Defense[] = _("DEFENSE");
+const u8 gOtherText_SpAtk[] = _("SP. ATK");
+const u8 gOtherText_SpDef[] = _("SP. DEF");
+const u8 gOtherText_Speed[] = _("SPEED");
+const u8 gOtherText_HP[] = _("HP");
+const u8 gOtherText_Terminator18[] = _("");
+const u8 gOtherText_OriginalTrainer[] = _("OT/");
+const u8 gOtherText_Type2[] = _("TYPE/");
+const u8 gOtherText_Power2[] = _("POWER");
+const u8 gOtherText_Accuracy2[] = _("ACCURACY");
+const u8 gOtherText_Appeal2[] = _("APPEAL");
+const u8 gOtherText_Jam2[] = _("JAM");
+const u8 gOtherText_Status[] = _("STATUS");
+const u8 gOtherText_ExpPoints[] = _("EXP. POINTS");
+const u8 gOtherText_NextLv[] = _("NEXT LV.");
+const u8 gOtherText_Ribbons00[] = _("RIBBONS: 00");
+
+const u8 OtherText_Event[] = _("EVENT");
+const u8 OtherText_Switch[] = _("SWITCH");
+const u8 OtherText_PokeInfo[] = _("POKéMON INFO");
+const u8 OtherText_PokeSkills[] = _("POKéMON SKILLS");
+const u8 OtherText_BattleMoves[] = _("BATTLE MOVES");
+const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // why the l33t 0, that's stupid
+const u8 OtherText_Info[] = _("INFO");
+
+const u8 gOtherText_EggLongTime[] = _("It looks like this EGG will\ntake a long time to hatch.");
+const u8 gOtherText_EggSomeTime[] = _("What will hatch from this?\nIt will take some time.");
+const u8 gOtherText_EggSoon[] = _("It moves occasionally.\nIt should hatch soon.");
+const u8 gOtherText_EggAbout[] = _("It’s making sounds.\nIt’s about to hatch!");
+const u8 gOtherText_CantForgetHMs[] = _("HM moves can’t be\nforgotten now.");
+const u8 gOtherText_PlayersBase[] = _("’s BASE");
+const u8 gOtherText_OkayToDeleteFromRegistry[] = _("Is it okay to delete {STR_VAR_1}\nfrom the REGISTRY?");
+const u8 gOtherText_RegisteredDataDeleted[] = _("The registered data was deleted.{PAUSE_UNTIL_PRESS}");
+
+const u8 gSecretBaseText_NoRegistry[] = _("There is no REGISTRY.{PAUSE_UNTIL_PRESS}");
+const u8 SecretBaseText_DelRegist[] = _("DEL REGIST.");
+const u8 SecretBaseText_Decorate[] = _("DECORATE");
+const u8 SecretBaseText_PutAway[] = _("PUT AWAY");
+const u8 SecretBaseText_Toss[] = _("TOSS");
+const u8 SecretBaseText_PutOutDecor[] = _("Put out the selected decoration item.");
+const u8 SecretBaseText_StoreChosenDecor[] = _("Store the chosen decoration in the PC.");
+const u8 SecretBaseText_ThrowAwayDecor[] = _("Throw away unwanted decorations.");
+const u8 gSecretBaseText_NoDecors[] = _("There are no decorations.{PAUSE_UNTIL_PRESS}");
+const u8 SecretBaseText_Desk[] = _("DESK");
+const u8 SecretBaseText_Chair[] = _("CHAIR");
+const u8 SecretBaseText_Plant[] = _("PLANT");
+const u8 SecretBaseText_Ornament[] = _("ORNAMENT");
+const u8 SecretBaseText_Mat[] = _("MAT");
+const u8 SecretBaseText_Poster[] = _("POSTER");
+const u8 SecretBaseText_Doll[] = _("DOLL");
+const u8 SecretBaseText_Cushion[] = _("CUSHION");
+const u8 gSecretBaseText_GoldRank[] = _("GOLD");
+const u8 gSecretBaseText_SilverRank[] = _("SILVER");
+const u8 gSecretBaseText_PlaceItHere[] = _("Place it here?");
+const u8 gSecretBaseText_CantBePlacedHere[] = _("It can’t be placed here.");
+const u8 gSecretBaseText_CancelDecorating[] = _("Cancel decorating?");
+const u8 gSecretBaseText_InUseAlready[] = _("This is in use already.");
+const u8 gSecretBaseText_NoMoreDecor[] = _("No more decorations can be placed.\nThe most that can be placed is {STR_VAR_1}.");
+const u8 gSecretBaseText_NoMoreDecor2[] = _("No more decorations can be placed.\nThe most that can be placed is {STR_VAR_1}.$This can’t be placed here.\nIt must be on a DESK, etc.");
+const u8 gSecretBaseText_DecorCantPlace[] = _("This decoration can’t be placed in\nyour own room.");
+const u8 gSecretBaseText_DecorInUse[] = _("This decoration is in use.\nIt can’t be thrown away.");
+const u8 gSecretBaseText_WillBeDiscarded[] = _("This {STR_VAR_1} will be discarded.\nIs that okay?");
+const u8 gSecretBaseText_DecorThrownAway[] = _("The decoration item was thrown away.");
+const u8 gSecretBaseText_StopPuttingAwayDecor[] = _("Stop putting away decorations?");
+const u8 gSecretBaseText_NoDecor[] = _("There is no decoration item here.");
+const u8 gSecretBaseText_ReturnDecor[] = _("Return this decoration to the PC?");
+const u8 gSecretBaseText_DecorReturned[] = _("The decoration was returned to the PC.");
+const u8 gSecretBaseText_NoDecorInUse[] = _("There are no decorations in use.{PAUSE_UNTIL_PRESS}");
+const u8 SecretBaseText_Tristan[] = _("TRISTAN");
+const u8 SecretBaseText_Philip[] = _("PHILIP");
+const u8 SecretBaseText_Dennis[] = _("DENNIS");
+const u8 SecretBaseText_Roberto[] = _("ROBERTO");
+const u8 SecretBaseText_TurnOff[] = _("TURN OFF");
+const u8 SecretBaseText_Decoration[] = _("DECORATION");
+const u8 SecretBaseText_ItemStorage[] = _("ITEM STORAGE");
+
+const u8 gPCText_Mailbox[] = _("MAILBOX");
+const u8 PCText_DepositItem[] = _("DEPOSIT ITEM");
+const u8 PCText_WithdrawItem[] = _("WITHDRAW ITEM");
+const u8 PCText_TossItem[] = _("TOSS ITEM");
+const u8 PCText_StoreItems[] = _("Store items in the PC.");
+const u8 PCText_TakeOutItems[] = _("Take out items from the PC.");
+const u8 PCText_ThrowAwayItems[] = _("Throw away items stored in the PC.");
+
+const u8 gOtherText_NoItems[] = _("There are no items.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_NoMoreRoom[] = _("There is no more\nroom in the BAG.");
+const u8 gOtherText_HowManyToWithdraw[] = _("How many do you\nwant to withdraw?");
+const u8 gOtherText_WithdrewThing[] = _("Withdrew {STR_VAR_2}\n{STR_VAR_1}(s).");
+const u8 OtherText_Read[] = _("READ");
+const u8 gOtherText_MoveToBag[] = _("MOVE TO BAG");
+const u8 OtherText_Give[] = _("GIVE");
+const u8 gOtherText_NoMailHere[] = _("There’s no MAIL here.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_WhatWillYouDoMail[] = _("What would you like to do with\n{STR_VAR_1}’s MAIL?");
+const u8 gOtherText_MessageWillBeLost[] = _("The message will be lost.\nIs that okay?");
+const u8 gOtherText_BagIsFull[] = _("The BAG is full.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_MailWasReturned[] = _("The MAIL was returned to the BAG\nwith its message erased.{PAUSE_UNTIL_PRESS}");
+const u8 gOtherText_Dad[] = _("DAD");
+const u8 gOtherText_Mom[] = _("MOM");
+const u8 gOtherText_Wallace[] = _("WALLACE");
+const u8 gOtherText_Steven[] = _("STEVEN");
+const u8 gOtherText_Brawly[] = _("BRAWLY");
+const u8 gOtherText_Winona[] = _("WINONA");
+const u8 gOtherText_Phoebe[] = _("PHOEBE");
+const u8 gOtherText_Glacia[] = _("GLACIA");
+const u8 gContestText_ContestWinner[] = _("CONTEST WINNER\n");
+const u8 gOtherText_Unknown1[] = _("’s ");
+const u8 OtherText_Cool[] = _("COOL ");
+const u8 OtherText_Beauty2[] = _("BEAUTY ");
+const u8 OtherText_Cute[] = _("CUTE ");
+const u8 OtherText_Smart[] = _("SMART ");
+const u8 OtherText_Tough[] = _("TOUGH ");
+const u8 OtherText_NonstopSuperCool[] = _("Nonstop super-cool -\nthe inestimable ");
+const u8 OtherText_Terminator6[] = _("");
+const u8 OtherText_GoodLookingPoke[] = _("Hey, there!\nThe good-looking POKéMON ");
+const u8 OtherText_Terminator7[] = _("");
+const u8 OtherText_MarvelousGreat[] = _("The marvelous, wonderful, and\nvery great ");
+const u8 OtherText_Terminator8[]= _("");
+const u8 OtherText_CenturyLastVenus[]= _("This century’s last Venus -\nthe beautiful ");
+const u8 OtherText_Terminator9[]= _("");
+const u8 OtherText_Terminator10[]= _("");
+const u8 OtherText_DazzlingSmile[]= _("’s dazzling,\nglittering smile");
+const u8 OtherText_PokeCenterIdol[]= _("POKéMON CENTER’s super idol -\nthe incomparable ");
+const u8 OtherText_Terminator11[]= _("");
+const u8 OtherText_LovelyAndSweet[]= _("The lovely and sweet ");
+const u8 OtherText_Terminator12[]= _("");
+const u8 OtherText_ThePretty[]= _("The pretty ");
+const u8 OtherText_WinningPortrait[] = _("’s\nwinning portrait");
+const u8 OtherText_GiveUsWink[] = _("Give us a wink!\nThe cutie POKéMON ");
+const u8 OtherText_Terminator13[] = _("");
+const u8 OtherText_SmartnessMaestro[] = _("The smartness maestro -\nThe wise POKéMON ");
+const u8 OtherText_Terminator14[] = _("");
+const u8 OtherText_ChosenPokeAmong[] = _("The chosen POKéMON -\nThe one among POKéMON ");
+const u8 OtherText_Terminator15[] = _("");
+const u8 OtherText_TheExcellent[] = _("The excellent ");
+const u8 OtherText_ItsMomentOfElegance[] = _("’s\nmoment of elegance");
+const u8 OtherText_PowerfullyMuscular[] = _("The powerfully muscular\nspeedster ");
+const u8 OtherText_Terminator16[] = _("");
+const u8 OtherText_StrongErEst[] = _("The strong, stronger, and\nstrongest ");
+const u8 OtherText_Terminator17[] = _("");
+const u8 OtherText_MightyTough[] = _("The mighty tough\nhyper POKéMON ");
+const u8 OtherText_Exclamation[] = _("!");
+const u8 OtherText_Petalburg[] = _("PETALBURG");
+const u8 OtherText_Slateport[] = _("SLATEPORT");
+const u8 OtherText_Littleroot[] = _("LITTLEROOT"); // unused contest location?
+const u8 OtherText_Lilycove[] = _("LILYCOVE");
+const u8 OtherText_Dewford[] = _("DEWFORD");
+const u8 OtherText_Enter[] = _("ENTER");
+const u8 OtherText_Info3[] = _("INFO");
+const u8 OtherText_WhatsAContest[] = _("What’s a CONTEST?");
+const u8 OtherText_TypesOfContest[] = _("Types of CONTESTS");
+const u8 OtherText_Ranks[] = _("Ranks");
+const u8 OtherText_Judging[] = _("Judging");
+const u8 OtherText_CoolContest[] = _("COOL CONTEST");
+const u8 OtherText_BeautyContest[] = _("BEAUTY CONTEST");
+const u8 OtherText_CuteContest[] = _("CUTE CONTEST");
+const u8 OtherText_SmartContest[] = _("SMART CONTEST");
+const u8 OtherText_ToughContest[] = _("TOUGH CONTEST");
+const u8 OtherText_Decoration[] = _("DECORATION");
+const u8 OtherText_PackUp[] = _("PACK UP");
+const u8 OtherText_Count[] = _("COUNT");
+const u8 OtherText_Registry[] = _("REGISTRY");
+const u8 OtherText_Information[] = _("INFORMATION");
+const u8 OtherText_Mach[] = _("MACH");
+const u8 OtherText_Acro[] = _("ACRO");
+const u8 OtherText_Poison[] = _("PSN");
+const u8 OtherText_Paralysis[] = _("PAR");
+const u8 OtherText_Sleep[] = _("SLP");
+const u8 OtherText_Burn[] = _("BRN");
+const u8 OtherText_Frozen[] = _("FRZ");
+const u8 OtherText_Quit[] = _("QUIT");
+const u8 OtherText_SawIt[] = _("Saw it");
+const u8 OtherText_NotYet[] = _("Not yet");
+const u8 OtherText_Yes[] = _("YES");
+const u8 OtherText_No[] = _("NO");
+const u8 OtherText_Info2[] = _("INFO");
+const u8 OtherText_SingleBattle[] = _("SINGLE BATTLE");
+const u8 OtherText_DoubleBattle[] = _("DOUBLE BATTLE");
+const u8 OtherText_MultiBattle[] = _("MULTI BATTLE");
+const u8 OtherText_MrBriney[] = _("MR. BRINEY");
+const u8 OtherText_MakeAChallenge[] = _("Make a challenge.");
+const u8 OtherText_ObtainInformation[] = _("Obtain information.");
+const u8 OtherText_Lv50_2[] = _("LV. 50");
+const u8 OtherText_Lv100_2[] = _("LV. 100");
+const u8 OtherText_Zigzagoon[] = _("ZIGZAGOON");
+const u8 OtherText_Nincada[] = _("NINCADA");
+const u8 OtherText_Poochyena[] = _("POOCHYENA");
+const u8 OtherText_Nincada2[] = _("NINCADA");
+const u8 OtherText_Lotad[] = _("LOTAD");
+const u8 OtherText_Roselia[] = _("ROSELIA");
+const u8 OtherText_Shroomish[] = _("SHROOMISH");
+const u8 OtherText_Nincada3[] = _("NINCADA");
+const u8 OtherText_Surskit[] = _("SURSKIT");
+const u8 OtherText_Treecko[] = _("TREECKO");
+const u8 OtherText_Torchic[] = _("TORCHIC");
+const u8 OtherText_Mudkip[] = _("MUDKIP");
+const u8 OtherText_Seedot[] = _("SEEDOT");
+const u8 OtherText_Shroomish2[] = _("SHROOMISH");
+const u8 OtherText_Spinda[] = _("SPINDA");
+const u8 OtherText_Shroomish3[] = _("SHROOMISH");
+const u8 OtherText_Zigzagoon2[] = _("ZIGZAGOON");
+const u8 OtherText_Wurmple[] = _("WURMPLE");
+const u8 OtherText_PokeBall[] = _("POKé BALL");
+const u8 OtherText_SuperPotion[] = _("SUPER POTION");
+const u8 OtherText_SamePrice[] = _("Same price");
+const u8 OtherText_Yen135[] = _("¥135");
+const u8 OtherText_Yen155[] = _("¥155");
+const u8 OtherText_Yen175[] = _("¥175");
+const u8 OtherText_CostMore[] = _("They will cost more.");
+const u8 OtherText_CostLess[] = _("They will cost less.");
+const u8 OtherText_SamePrice2[] = _("Same price");
+const u8 OtherText_MaleSymbol[] = _("♂");
+const u8 OtherText_FemaleSymbol[] = _("♀");
+const u8 OtherText_Neither[] = _("Neither");
+const u8 OtherText_Males[] = _("Males");
+const u8 OtherText_Females[] = _("Females");
+const u8 OtherText_SameNumber[] = _("Same number");
+const u8 OtherText_Male[] = _("Male");
+const u8 OtherText_Female[] = _("Female");
+const u8 OtherText_ItDepends[] = _("It depends");
+const u8 OtherText_Six2[] = _("6");
+const u8 OtherText_Eight2[] = _("8");
+const u8 OtherText_Ten[] = _("10");
+const u8 OtherText_One[] = _("1");
+const u8 OtherText_Two[] = _("2");
+const u8 OtherText_Three[] = _("3");
+const u8 OtherText_Six[] = _("6");
+const u8 OtherText_Seven[] = _("7");
+const u8 OtherText_Eight[] = _("8");
+const u8 OtherText_FreshWater[] = _("FRESH WATER{CLEAR_TO 0x48}¥200");
+const u8 OtherText_SodaPop[] = _("SODA POP{CLEAR_TO 0x48}¥300");
+const u8 OtherText_Lemonade[] = _("LEMONADE{CLEAR_TO 0x48}¥350");
+const u8 OtherText_HowToRide[] = _("HOW TO RIDE");
+const u8 OtherText_HowToTurn[] = _("HOW TO TURN");
+const u8 OtherText_SandySlopes[] = _("SANDY SLOPES");
+const u8 OtherText_Wheelies[] = _("WHEELIES");
+const u8 OtherText_BunnyHops[] = _("BUNNY-HOPS");
+const u8 OtherText_Jumping[] = _("JUMPING");
+const u8 OtherText_Satisfied[] = _("Satisfied");
+const u8 OtherText_Dissatisfied[] = _("Dissatisfied");
+const u8 OtherText_Deepseatooth[] = _("DEEPSEATOOTH");
+const u8 OtherText_Deepseascale[] = _("DEEPSEASCALE");
+const u8 OtherText_BlueFlute2[] = _("BLUE FLUTE");
+const u8 OtherText_YellowFlute2[] = _("YELLOW FLUTE");
+const u8 OtherText_RedFlute2[] = _("RED FLUTE");
+const u8 OtherText_WhiteFlute2[] = _("WHITE FLUTE");
+const u8 OtherText_BlackFlute2[] = _("BLACK FLUTE");
+const u8 OtherText_GlassChair[] = _("GLASS CHAIR");
+const u8 OtherText_GlassDesk[] = _("GLASS DESK");
+const u8 OtherText_TreeckoDoll[] = _("TREECKO DOLL 1,000 COINS");
+const u8 OtherText_TorchicDoll[] = _("TORCHIC DOLL 1,000 COINS");
+const u8 OtherText_MudkipDoll[] = _("MUDKIP DOLL 1,000 COINS");
+const u8 OtherText_50Coins[] = _(" 50 COINS ¥1,000");
+const u8 OtherText_500Coins[] = _("500 COINS ¥10,000");
+const u8 OtherText_Excellent[] = _("Excellent!");
+const u8 OtherText_NotSoHot[] = _("Not so hot");
+const u8 OtherText_RedShard[] = _("RED SHARD");
+const u8 OtherText_YellowShard[] = _("YELLOW SHARD");
+const u8 OtherText_BlueShard[] = _("BLUE SHARD");
+const u8 OtherText_GreenShard[] = _("GREEN SHARD");
+const u8 OtherText_BattleTower[] = _("BATTLE TOWER");
+const u8 OtherText_Right[] = _("Right");
+const u8 OtherText_Left[] = _("Left");
+const u8 OtherText_TM32[] = _("TM32 1,500 COINS");
+const u8 OtherText_TM29[] = _("TM29 3,500 COINS");
+const u8 OtherText_TM35[] = _("TM35 4,000 COINS");
+const u8 OtherText_TM24[] = _("TM24 4,000 COINS");
+const u8 OtherText_TM13[] = _("TM13 4,000 COINS");
+const u8 OtherText_1F_2[] = _("1F");
+const u8 OtherText_2F_2[] = _("2F");
+const u8 OtherText_3F_2[] = _("3F");
+const u8 OtherText_4F_2[] = _("4F");
+const u8 OtherText_5F_2[] = _("5F");
+const u8 OtherText_Cool2[] = _("COOL");
+const u8 OtherText_Beauty3[] = _("BEAUTY");
+const u8 OtherText_Cute2[] = _("CUTE");
+const u8 OtherText_Smart2[] = _("SMART");
+const u8 OtherText_Tough2[] = _("TOUGH");
+const u8 OtherText_Normal[] = _("NORMAL");
+const u8 OtherText_Super[] = _("SUPER");
+const u8 OtherText_Hyper[] = _("HYPER");
+const u8 OtherText_Master[] = _("MASTER");
+const u8 OtherText_Cool3[] = _("COOL");
+const u8 OtherText_Beauty4[] = _("BEAUTY");
+const u8 OtherText_Cute3[] = _("CUTE");
+const u8 OtherText_Smart3[] = _("SMART");
+const u8 OtherText_Tough3[] = _("TOUGH");
+const u8 OtherText_Items[] = _("ITEMS");
+const u8 OtherText_KeyItems[] = _("KEY ITEMS");
+const u8 OtherText_Balls[] = _("BALLS");
+const u8 OtherText_TMsHMs[] = _("TMs & HMs");
+const u8 OtherText_Berries[] = _("BERRIES");
+
+const u8 gPCText_SomeonesPC[] = _("SOMEONE’S PC");
+const u8 gPCText_LanettesPC[] = _("LANETTE’S PC");
+const u8 gPCText_PlayersPC[] = _("{PLAYER}’s PC");
+const u8 gPCText_HallOfFame[] = _("HALL OF FAME");
+const u8 gPCText_LogOff[] = _("LOG OFF");
+
+const u8 gOtherText_99Times[] = _("99 times +");
+const u8 gOtherText_1Minute[] = _("1 minute +");
+const u8 gOtherText_Seconds[] = _(" seconds");
+const u8 gOtherText_Times[] = _(" times$.");
+const u8 gOtherText_BigGuy[] = _("Big guy");
+const u8 gOtherText_BigGirl[] = _("Big girl");
+const u8 gOtherText_Son[] = _("son");
+const u8 gOtherText_Daughter[] = _("daughter");
+const u8 OtherText_BlueFlute[] = _("BLUE FLUTE");
+const u8 OtherText_YellowFlute[] = _("YELLOW FLUTE");
+const u8 OtherText_RedFlute[] = _("RED FLUTE");
+const u8 OtherText_WhiteFlute[] = _("WHITE FLUTE");
+const u8 OtherText_BlackFlute[] = _("BLACK FLUTE");
+const u8 OtherText_PrettyChair[] = _("PRETTY CHAIR");
+const u8 OtherText_PrettyDesk[] = _("PRETTY DESK");
+const u8 OtherText_1F[] = _("1F");
+const u8 OtherText_2F[] = _("2F");
+const u8 OtherText_3F[] = _("3F");
+const u8 OtherText_4F[] = _("4F");
+const u8 OtherText_5F[] = _("5F");
+const u8 OtherText_6F[] = _("6F");
+const u8 OtherText_7F[] = _("7F");
+const u8 OtherText_8F[] = _("8F");
+const u8 OtherText_9F[] = _("9F");
+const u8 OtherText_10F[] = _("10F");
+const u8 OtherText_11F[] = _("11F");
+const u8 OtherText_B1F[] = _("B1F");
+const u8 OtherText_B2F[] = _("B2F");
+const u8 OtherText_B3F[] = _("B3F");
+const u8 OtherText_B4F[] = _("B4F");
+const u8 OtherText_Rooftop[] = _("ROOFTOP");
+
+const u8 gOtherText_NowOn[] = _("Now on:");
+
+const u8 gPCText_Cancel[] = _("CANCEL");
+
+const u8 PCText_ExitBox[] = _("Exit from the BOX.");
+const u8 PCText_WhatYouDo[] = _("What would you like to do?");
+const u8 PCText_PickATheme[] = _("Please pick a theme.");
+const u8 PCText_PickAWallpaper[] = _("Please pick out wallpaper.");
+const u8 PCText_IsSelected[] = _(" is selected.");
+const u8 PCText_JumpToWhichBox[] = _("Jump to which BOX?");
+const u8 PCText_DepositInWhichBox[] = _("Deposit in which BOX?");
+const u8 PCText_WasDeposited[] = _(" was deposited.");
+const u8 PCText_BoxIsFull[] = _("The BOX is full.");
+const u8 PCText_ReleasePoke[] = _("Release this POKéMON?");
+const u8 PCText_WasReleased[] = _(" was released.");
+const u8 PCText_ByeBye[] = _("Bye-bye, !");
+const u8 PCText_MarkPoke[] = _("Mark your POKéMON.");
+const u8 PCText_LastPoke[] = _("That’s your last POKéMON!");
+const u8 PCText_PartyFull[] = _("Your party’s full!");
+const u8 PCText_HoldingPoke[] = _("You’re holding a POKéMON!");
+const u8 PCText_WhichOneWillTake[] = _("Which one will you take?");
+const u8 PCText_CantReleaseEgg[] = _("You can’t release an EGG.");
+const u8 PCText_ContinueBox[] = _("Continue BOX operations?");
+const u8 PCText_CameBack[] = _(" came back!");
+const u8 PCText_Worried[] = _("Was it worried about you?");
+const u8 PCText_Surprise[] = _("... ... ... ... ...!");
+const u8 PCText_PleaseRemoveMail[] = _("Please remove the MAIL.");
+const u8 PCText_Cancel2[] = _("CANCEL");
+const u8 PCText_Deposit[] = _("DEPOSIT");
+const u8 PCText_Withdraw[] = _("WITHDRAW");
+const u8 PCText_Switch[] = _("SWITCH");
+const u8 PCText_Move[] = _("MOVE");
+const u8 PCText_Place[] = _("PLACE");
+const u8 PCText_Summary[] = _("SUMMARY");
+const u8 PCText_Release[] = _("RELEASE");
+const u8 PCText_Mark[] = _("MARK");
+const u8 PCText_Name[] = _("NAME");
+const u8 PCText_Jump[] = _("JUMP");
+const u8 PCText_Wallpaper[] = _("WALLPAPER");
+const u8 PCText_Scenery1[] = _("SCENERY 1");
+const u8 PCText_Scenery2[] = _("SCENERY 2");
+const u8 PCText_Scenery3[] = _("SCENERY 3");
+const u8 PCText_Etc[] = _("ETCETERA");
+const u8 PCText_Forest[] = _("FOREST");
+const u8 PCText_City[] = _("CITY");
+const u8 PCText_Desert[] = _("DESERT");
+const u8 PCText_Savanna[] = _("SAVANNA");
+const u8 PCText_Crag[] = _("CRAG");
+const u8 PCText_Volcano[] = _("VOLCANO");
+const u8 PCText_Snow[] = _("SNOW");
+const u8 PCText_Cave[] = _("CAVE");
+const u8 PCText_Beach[] = _("BEACH");
+const u8 PCText_Seafloor[] = _("SEAFLOOR");
+const u8 PCText_River[] = _("RIVER");
+const u8 PCText_Sky[] = _("SKY");
+const u8 PCText_Polka[] = _("POLKA-DOT");
+const u8 PCText_PokeCenter[] = _("POKéCENTER");
+const u8 PCText_Machine[] = _("MACHINE");
+const u8 PCText_Plain[] = _("PLAIN");
+const u8 PCText_WhatDoYouWant[] = _("What do you want?");
+const u8 PCText_WithdrawPoke[] = _("WITHDRAW POKéMON");
+const u8 PCText_DepositPoke[] = _("DEPOSIT POKéMON");
+const u8 PCText_MovePoke[] = _("MOVE POKéMON");
+const u8 PCText_SeeYa[] = _("SEE YA!");
+const u8 PCText_MovePokeToParty[] = _("Move POKéMON stored in BOXES to\nyour party.");
+const u8 PCText_StorePokeInBox[] = _("Store POKéMON in your party in BOXES.");
+const u8 PCText_OrganizeBoxesParty[] = _("Organize the POKéMON in BOXES and\nin your party.");
+const u8 PCText_ReturnToPrevMenu[] = _("Return to the previous menu.");
+
+const u8 gPCText_OnlyOne[] = _("There is just one POKéMON with you.");
+const u8 gPCText_PartyFull2[] = _("Your party is full!");
+const u8 gPCText_BOX[] = _("BOX");
+
+// pokenav
+const u8 PCText_CheckMap[] = _("{CLEAR 0}Check the map of the HOENN region.");
+const u8 PCText_CheckPoke[] = _("{CLEAR 0}Check POKéMON in detail.");
+const u8 PCText_CheckTrainer[] = _("{CLEAR 0}Check TRAINER information.");
+const u8 PCText_CheckRibbons[] = _("{CLEAR 0}Check obtained RIBBONS.");
+const u8 PCText_PutAwayNav[] = _("{CLEAR 0}Put away the POKéNAV.");
+const u8 PCText_NoRibbonWin[] = _("{CLEAR 0}There are no RIBBON winners.");
+const u8 PCText_NoTrainers[] = _("{CLEAR 0}No TRAINERS are registered.");
+const u8 PCText_CheckParty[] = _("{CLEAR 0}Check party POKéMON in detail.");
+const u8 PCText_CheckPokeAll[] = _("{CLEAR 0}Check all POKéMON in detail.");
+const u8 PCText_ReturnToNav[] = _("{CLEAR 0}Return to the POKéNAV menu.");
+const u8 PCText_FindCool[] = _("{CLEAR 0}Find cool POKéMON.");
+const u8 PCText_FindBeauty[] = _("{CLEAR 0}Find beautiful POKéMON.");
+const u8 PCText_FindCute[] = _("{CLEAR 0}Find cute POKéMON.");
+const u8 PCText_FindSmart[] = _("{CLEAR 0}Find smart POKéMON.");
+const u8 PCText_FindTough[] = _("{CLEAR 0}Find tough POKéMON.");
+const u8 PCText_ReturnToCondition[] = _("{CLEAR 0}Return to the CONDITION menu.");
+
+const u8 gOtherText_NumberRegistered[] = _("No. registered");
+const u8 gOtherText_NumberBattles[] = _("No. of battles");
+const u8 gOtherText_Strategy[] = _("{PALETTE 5}STRATEGY");
+const u8 gOtherText_TrainersPokemon[] = _("{PALETTE 5}TRAINER’S POKéMON");
+const u8 gOtherText_SelfIntroduction[] = _("{PALETTE 5}SELF-INTRODUCTION");
+const u8 gOtherText_Nature2[] = _("NATURE/");
+const u8 gOtherText_InParty[] = _("IN PARTY");
+const u8 gOtherText_Number[] = _("No. ");
+const u8 gOtherText_Ribbons[] = _("RIBBONS");
+const u8 OtherText_MakeProfilePage1[] = _("Make your profile by combining");
+const u8 OtherText_MakeProfilePage2[] = _("four words or phrases.");
+const u8 OtherText_MakeMessagePage1[] = _("Make a message with 6 phrases.");
+const u8 OtherText_MakeMessagePage2[] = _("Max. two 12-letter phrases/line.");
+const u8 OtherText_DescribeFeelingsPage1[] = _("Find words that describe your");
+const u8 OtherText_DescribeFeelingsPage2[] = _("feelings right now.");
+const u8 OtherText_WithFourPhrases[] = _("With four phrases,");
+const u8 OtherText_CombineNinePhrasesPage1[] = _("Combine nine phrases and");
+const u8 OtherText_CombineNinePhrasesPage2[] = _("make a message.");
+const u8 OtherText_ImproveBardSongPage1[] = _("Change just one word or phrase");
+const u8 OtherText_ImproveBardSongPage2[] = _("and improve the BARD’s song.");
+const u8 OtherText_YourProfile[] = _("Your profile ");
+const u8 OtherText_YourFeelingBattle[] = _("Your feeling at the battle’s start");
+const u8 OtherText_SetWinMessage[] = _("What you say if you win a battle");
+const u8 OtherText_SetLossMessage[] = _("What you say if you lose a battle");
+const u8 OtherText_TheAnswer[] = _("The answer");
+const u8 OtherText_MailMessage[] = _("The MAIL message");
+const u8 OtherText_MailSalutation[] = _("The MAIL salutation");
+const u8 OtherText_NewSong[] = _("The new song");
+const u8 OtherText_CombineTwoPhrasesPage1[] = _("Combine two phrases and");
+const u8 OtherText_CombineTwoPhrasesPage2[] = _("make a trendy saying.");
+const u8 OtherText_ConfirmTrendyPage1[] = _("The trendy saying");
+const u8 OtherText_ConfirmTrendyPage2[] = _("is as shown. Okay?");
+const u8 OtherText_HipsterPage1[] = _("I’ll combine two phrases and");
+const u8 OtherText_HipsterPage2[] = _("teach you a good saying.");
+
+const u8 gOtherText_TextDeletedConfirmPage1[] = _("All the text being edited will");
+const u8 gOtherText_TextDeletedConfirmPage2[] = _("be deleted. Is that okay?");
+const u8 gOtherText_QuitEditing[] = _("Quit editing?");
+const u8 gOtherText_EditedTextNoSavePage1[] = _("The edited text will not be saved.");
+const u8 gOtherText_EditedTextNoSavePage2[] = _("Is that okay?");
+const u8 gOtherText_EnterAPhraseOrWord[] = _("Please enter a phrase or word.");
+const u8 gOtherText_TextNoDelete[] = _("The entire text can’t be deleted.");
+const u8 gOtherText_OnlyOnePhrase[] = _("Only one phrase may be changed.");
+const u8 gOtherText_OriginalSongRestored[] = _("The original song will be restored.");
+const u8 gOtherText_TrendyAlready[] = _("That’s trendy already!");
+const u8 gOtherText_CombineTwoPhrases[] = _("Combine two words or phrases.");
+const u8 gOtherText_QuitGivingInfo[] = _("Quit giving information?");
+const u8 gOtherText_StopGivingMail[] = _("Stop giving the POKéMON MAIL?");
+const u8 gOtherText_Profile[] = _("PROFILE");
+const u8 gOtherText_AtBattleStart[] = _("At the battle’s start.");
+const u8 gOtherText_UponWinningBattle[] = _("Upon winning a battle.");
+const u8 gOtherText_UponLosingBattle[] = _("Upon losing a battle.");
+
+// mauville_old_man?
+const u8 gOtherText_TheBardsSong[] = _("The BARD’s Song");
+const u8 gOtherText_WhatsHipHappening[] = _("What’s hip and happening?");
+const u8 gOtherText_Interview[] = _("Interview");
+const u8 gOtherText_GoodSaying[] = _("Good saying");
+const u8 OtherText_SoPretty[] = _(" so pretty!");
+const u8 OtherText_SoDarling[] = _(" so darling!");
+const u8 OtherText_SoRelaxed[] = _(" so relaxed!");
+const u8 OtherText_SoSunny[] = _(" so sunny!");
+const u8 OtherText_SoDesirable[] = _(" so desirable!");
+const u8 OtherText_SoExciting[] = _(" so exciting!");
+const u8 OtherText_SoAmusing[] = _(" so amusing!");
+const u8 OtherText_SoMagical[] = _(" so magical!");
+
+const u8 gOtherText_Is[] = _(" is");
+const u8 gOtherText_DontYouAgree[] = _("\nDon’t you agree?");
+
+const u8 OtherText_WantVacationNicePlace[] = _("I so want to go on a vacation.\nWould you happen to know a nice place?");
+const u8 OtherText_BoughtCrayonsIsNice[] = _("I bought crayons with 120 colors!\nDon’t you think that’s nice?");
+const u8 OtherText_IfWeCouldFloat[] = _("Wouldn’t it be nice if we could float\naway on a cloud of bubbles?");
+const u8 OtherText_SandWashesAwayMakeSad[] = _("When you write on a sandy beach,\nthey wash away. It makes me sad.");
+const u8 OtherText_WhatsBottomSeaLike[] = _("What’s the bottom of the sea like?\nJust once I would so love to go!");
+const u8 OtherText_SeeSettingSun[] = _("When you see the setting sun, does it\nmake you want to go home?");
+const u8 OtherText_LyingInGreenGrass[] = _("Lying back in the green grass...\nOh, it’s so, so nice!");
+const u8 OtherText_SecretBasesWonderful[] = _("SECRET BASES are so wonderful!\nCan’t you feel the excitement?");
+
+const u8 OtherText_PokeLeague[] = _("POKéMON LEAGUE");
+const u8 OtherText_PokeCenter[] = _("POKéMON CENTER");
+
+const u8 gOtherText_GetsAPokeBlock[] = _(" gets a {POKEBLOCK}?");
+
+const u8 OtherText_Coolness[] = _("Coolness ");
+const u8 OtherText_Beauty[] = _("Beauty ");
+const u8 OtherText_Cuteness[] = _("Cuteness ");
+const u8 OtherText_Smartness[] = _("Smartness ");
+const u8 OtherText_Toughness[] = _("Toughness ");
+
+const u8 gOtherText_WasEnhanced[] = _("was enhanced!");
+const u8 gOtherText_NothingChanged[] = _("Nothing changed!");
+const u8 gOtherText_WontEat[] = _("It won’t eat anymore...");
+
+const u8 gSystemText_SaveFailedBackupCheck[] = _("Save failed.\nChecking the backup memory...\nPlease wait.\n{COLOR RED}“Time required: 1 minute”");
+const u8 gSystemText_BackupDamagedGameContinue[] = _("The backup memory is damaged or\nthe internal battery has run dry.\nThe game can be played. However,\nprogress cannot be saved.");
+const u8 gSystemText_GameplayEnded[] = _("{COLOR RED}“Gameplay cannot be continued.\nReturning to the title screen...”");
+const u8 gSystemText_CheckCompleteSaveAttempt[] = _("Check completed.\nAttempting to save again.\nPlease wait.");
+const u8 gSystemText_SaveCompletedGameEnd[] = _("Save completed.\n{COLOR RED}“Gameplay cannot be continued.\nReturning to the title screen.”");
+const u8 gSystemText_SaveCompletedPressA[] = _("Save completed.\n{COLOR RED}“Please press the A Button.”");
+
+const u8 gOtherText_Ferry[] = _("FERRY");
+const u8 gOtherText_SecretBase[] = _("SECRET BASE");
+const u8 gOtherText_Hideout[] = _("HIDEOUT");
+
+const u8 gSystemText_ResetRTCPrompt[] = _("Reset RTC?\nA: Confirm, B: Cancel");
+const u8 gSystemText_PresentTime[] = _("Present time in game");
+const u8 gSystemText_PreviousTime[] = _("Previous time in game");
+const u8 gSystemText_PleaseResetTime[] = _("Please reset the time.");
+const u8 gSystemText_ClockResetDataSave[] = _("The clock has been reset.\nData will be saved. Please wait.");
+const u8 gSystemText_SaveCompleted[] = _("Save completed.");
+const u8 gSystemText_SaveFailed[] = _("Save failed...");
+const u8 gSystemText_NoSaveFileNoTime[] = _("There is no save file, so the time\ncan’t be set.");
+const u8 gSystemText_ClockAdjustmentUsable[] = _("The in-game clock adjustment system\nis now useable.");
+const u8 gSystemText_Saving[] = _("SAVING...\nDON’T TURN OFF THE POWER.");
diff --git a/src/task.c b/src/task.c
index e79929c63..3c28a66d9 100644
--- a/src/task.c
+++ b/src/task.c
@@ -1,48 +1,48 @@
#include "global.h"
#include "task.h"
-#define NUM_TASKS 16
-
+#define ACTIVE_SENTINEL 0x10
#define HEAD_SENTINEL 0xFE
#define TAIL_SENTINEL 0xFF
-struct Task gTasks[NUM_TASKS];
+// gTasks is a queue of the active 16 tasks
+struct Task gTasks[ACTIVE_SENTINEL];
static void InsertTask(u8 newTaskId);
static u8 FindFirstActiveTask();
void ResetTasks()
{
- u8 i;
+ u8 taskId;
- for (i = 0; i < NUM_TASKS; i++)
+ for (taskId = 0; taskId < ACTIVE_SENTINEL; taskId++)
{
- gTasks[i].isActive = FALSE;
- gTasks[i].func = TaskDummy;
- gTasks[i].prev = i;
- gTasks[i].next = i + 1;
- gTasks[i].priority = -1;
- memset(gTasks[i].data, 0, sizeof(gTasks[i].data));
+ gTasks[taskId].isActive = FALSE;
+ gTasks[taskId].func = TaskDummy;
+ gTasks[taskId].prev = taskId;
+ gTasks[taskId].next = taskId + 1;
+ gTasks[taskId].priority = -1;
+ memset(gTasks[taskId].data, 0, sizeof(gTasks[taskId].data));
}
gTasks[0].prev = HEAD_SENTINEL;
- gTasks[NUM_TASKS - 1].next = TAIL_SENTINEL;
+ gTasks[ACTIVE_SENTINEL - 1].next = TAIL_SENTINEL;
}
u8 CreateTask(TaskFunc func, u8 priority)
{
- u8 i;
+ u8 taskId;
- for (i = 0; i < NUM_TASKS; i++)
+ for (taskId = 0; taskId < ACTIVE_SENTINEL; taskId++)
{
- if (!gTasks[i].isActive)
+ if (!gTasks[taskId].isActive)
{
- gTasks[i].func = func;
- gTasks[i].priority = priority;
- InsertTask(i);
- memset(gTasks[i].data, 0, sizeof(gTasks[i].data));
- gTasks[i].isActive = TRUE;
- return i;
+ gTasks[taskId].func = func;
+ gTasks[taskId].priority = priority;
+ InsertTask(taskId);
+ memset(gTasks[taskId].data, 0, sizeof(gTasks[taskId].data));
+ gTasks[taskId].isActive = TRUE;
+ return taskId;
}
}
@@ -53,9 +53,9 @@ static void InsertTask(u8 newTaskId)
{
u8 taskId = FindFirstActiveTask();
- if (taskId == NUM_TASKS)
+ if (taskId == ACTIVE_SENTINEL)
{
- // The new task is the only task.
+ // The task system inserts from the top downwards starting from the end (0xFF) to 0. If FindFirstActiveTask returned the value equivalent to ACTIVE_SENTINEL, it means it is the only task because it searched the entire queue.
gTasks[newTaskId].prev = HEAD_SENTINEL;
gTasks[newTaskId].next = TAIL_SENTINEL;
return;
@@ -69,12 +69,14 @@ static void InsertTask(u8 newTaskId)
// so we insert the new task before it.
gTasks[newTaskId].prev = gTasks[taskId].prev;
gTasks[newTaskId].next = taskId;
+
if (gTasks[taskId].prev != HEAD_SENTINEL)
- gTasks[gTasks[taskId].prev].next = newTaskId;
+ gTasks[gTasks[taskId].prev].next = newTaskId; // as long as we are not at the end, insert the newTask appropriately.
+
gTasks[taskId].prev = newTaskId;
return;
}
- if (gTasks[taskId].next == TAIL_SENTINEL)
+ if (gTasks[taskId].next == TAIL_SENTINEL) // we did not find a space for the task, so overwrite the last task as it is the lowest priority.
{
// We've reached the end.
gTasks[newTaskId].prev = taskId;
@@ -82,7 +84,7 @@ static void InsertTask(u8 newTaskId)
gTasks[taskId].next = newTaskId;
return;
}
- taskId = gTasks[taskId].next;
+ taskId = gTasks[taskId].next; // neither the priority was lower, nor the end. check the next task.
}
}
@@ -112,11 +114,11 @@ void DestroyTask(u8 taskId)
}
}
-void RunTasks()
+void RunTasks(void)
{
u8 taskId = FindFirstActiveTask();
- if (taskId != NUM_TASKS)
+ if (taskId != ACTIVE_SENTINEL)
{
do
{
@@ -126,11 +128,11 @@ void RunTasks()
}
}
-static u8 FindFirstActiveTask()
+static u8 FindFirstActiveTask(void)
{
u8 taskId;
- for (taskId = 0; taskId < NUM_TASKS; taskId++)
+ for (taskId = 0; taskId < ACTIVE_SENTINEL; taskId++)
if (gTasks[taskId].isActive == TRUE && gTasks[taskId].prev == HEAD_SENTINEL)
break;
@@ -173,7 +175,7 @@ bool8 FuncIsActiveTask(TaskFunc func)
{
u8 i;
- for (i = 0; i < NUM_TASKS; i++)
+ for (i = 0; i < ACTIVE_SENTINEL; i++)
if (gTasks[i].isActive == TRUE && gTasks[i].func == func)
return TRUE;
@@ -184,19 +186,19 @@ u8 FindTaskIdByFunc(TaskFunc func)
{
s32 i;
- for (i = 0; i < NUM_TASKS; i++)
+ for (i = 0; i < ACTIVE_SENTINEL; i++)
if (gTasks[i].isActive == TRUE && gTasks[i].func == func)
return (u8)i;
return -1;
}
-u8 GetTaskCount()
+u8 GetTaskCount(void)
{
u8 i;
u8 count = 0;
- for (i = 0; i < NUM_TASKS; i++)
+ for (i = 0; i < ACTIVE_SENTINEL; i++)
if (gTasks[i].isActive == TRUE)
count++;
diff --git a/src/text.c b/src/text.c
index 6089fdba8..cc3dab547 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "text.h"
+#include "battle.h"
#include "main.h"
-#include "string_util.h"
-#include "songs.h"
#include "palette.h"
+#include "songs.h"
#include "sound.h"
-#include "battle.h"
+#include "string_util.h"
enum
{
@@ -211,20 +211,22 @@ const u16 gUnknown_081E29D8[] = { 0x100, 0x200, 0x400, 0x800 };
const u16 gUnknown_081E29E0[] = { 0x100, 0x200, 0x400, 0x800 };
const u16 gUnknown_081E29E8[] = { 1, 2, 4, 8 };
-#include "fonts/font0_lat_glyphs.h"
-#include "fonts/font1_lat_glyphs.h"
-#include "fonts/font0_jpn_glyphs.h"
-#include "fonts/font1_jpn_glyphs.h"
-#include "fonts/braille_glyphs.h"
-#include "fonts/down_arrow_tiles.h"
+static const u8 sFont0LatinGlyphs[] = INCBIN_U8("graphics/fonts/font0_lat.1bpp");
+static const u8 sFont1LatinGlyphs[] = INCBIN_U8("graphics/fonts/font1_lat.1bpp");
+static const u8 sFont0JapaneseGlyphs[] = INCBIN_U8("graphics/fonts/font0_jpn.1bpp");
+static const u8 sFont1JapaneseGlyphs[] = INCBIN_U8("graphics/fonts/font1_jpn.1bpp");
+static const u8 sBrailleGlyphs[] = INCBIN_U8("graphics/fonts/font6_braille.1bpp");
+static const u32 sDownArrowTiles[] = INCBIN_U32("graphics/fonts/down_arrow.4bpp");
+
#include "fonts/type1_map.h"
#include "fonts/type3_map.h"
#include "fonts/font1_widths.h"
#include "fonts/font4_widths.h"
#include "fonts/font0_widths.h"
#include "fonts/font3_widths.h"
-#include "fonts/unknown_palette_81E6692.h"
-#include "fonts/default_palette.h"
+
+const u16 gUnknownPalette_81E6692[] = INCBIN_U16("graphics/fonts/unknown_81E6692.gbapal");
+const u16 gFontDefaultPalette[] = INCBIN_U16("graphics/fonts/default.gbapal");
const u8 sBlankTile[8] = { 0, 0, 0, 0, 0, 0, 0, 0, };
diff --git a/src/text_window.c b/src/text_window.c
index 1ac624dd0..9a88789d1 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "text_window.h"
#include "main.h"
-#include "text.h"
#include "palette.h"
+#include "text.h"
#define STD_MSG_BOX_LEFT 0
#define STD_MSG_BOX_TOP 14
diff --git a/src/tileset_anim.c b/src/tileset_anim.c
index 415b69cfe..34685381d 100644
--- a/src/tileset_anim.c
+++ b/src/tileset_anim.c
@@ -30,10 +30,11 @@ extern u8 *gTilesetAnimTable_EliteFour_1[];
extern u8 *gTilesetAnimTable_MauvilleGym[];
extern u8 *gTilesetAnimTable_BikeShop[];
-struct Dma {
- u8 *src;
- u8 *dest;
- u16 size;
+struct Dma
+{
+ u8 *src;
+ u8 *dest;
+ u16 size;
};
EWRAM_DATA static struct Dma gTilesetAnimDmas[20] = {0};
@@ -88,510 +89,542 @@ static void sub_807399C(u16);
static void sub_8073974(u16);
static void sub_80739EC(u16);
-static void ClearTilesetAnimDmas(void) {
- gNumTilesetAnimDmas = 0;
- CpuFill32(0, &gTilesetAnimDmas, sizeof(gTilesetAnimDmas));
-}
-
-static void QueueTilesetAnimDma(u8 *src, u8 *dest, u16 size) {
- if (gNumTilesetAnimDmas < 20) {
- gTilesetAnimDmas[gNumTilesetAnimDmas].src = src;
- gTilesetAnimDmas[gNumTilesetAnimDmas].dest = dest;
- gTilesetAnimDmas[gNumTilesetAnimDmas].size = size;
- gNumTilesetAnimDmas++;
- }
-}
-
-void sub_8072E74(void) {
- int i;
- for (i = 0; i < gNumTilesetAnimDmas; i++) {
- DmaCopy16(3,
- gTilesetAnimDmas[i].src,
- gTilesetAnimDmas[i].dest,
- gTilesetAnimDmas[i].size);
- }
- gNumTilesetAnimDmas = 0;
-}
-
-void cur_mapheader_run_tileset_funcs_after_some_cpuset(void) {
- ClearTilesetAnimDmas();
- StartTileset1Animation();
- StartTileset2Animation();
-}
-
-void sub_8072ED0(void) {
- StartTileset2Animation();
-}
-
-void sub_8072EDC(void) {
- ClearTilesetAnimDmas();
- if (++gTileset1AnimFrame >= gTileset1AnimLength) {
- gTileset1AnimFrame = 0;
- }
- if (++gTileset2AnimFrame >= gTileset2AnimLength) {
- gTileset2AnimFrame = 0;
- }
- if (gTileset1AnimCallback) {
- gTileset1AnimCallback(gTileset1AnimFrame);
- }
- if (gTileset2AnimCallback) {
- gTileset2AnimCallback(gTileset2AnimFrame);
- }
-}
-
-static void StartTileset1Animation(void) {
- gTileset1AnimFrame = 0;
- gTileset1AnimLength = 0;
- gTileset1AnimCallback = 0;
- if (gMapHeader.mapData->primaryTileset) {
- if (gMapHeader.mapData->primaryTileset->callback) {
- gMapHeader.mapData->primaryTileset->callback();
- }
- }
-}
-
-static void StartTileset2Animation(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = 0;
- gTileset2AnimCallback = 0;
- if (gMapHeader.mapData->secondaryTileset) {
- if (gMapHeader.mapData->secondaryTileset->callback) {
- gMapHeader.mapData->secondaryTileset->callback();
- }
- }
+static void ClearTilesetAnimDmas(void)
+{
+ gNumTilesetAnimDmas = 0;
+ CpuFill32(0, &gTilesetAnimDmas, sizeof(gTilesetAnimDmas));
+}
+
+static void QueueTilesetAnimDma(u8 *src, u8 *dest, u16 size)
+{
+ if (gNumTilesetAnimDmas < 20)
+ {
+ gTilesetAnimDmas[gNumTilesetAnimDmas].src = src;
+ gTilesetAnimDmas[gNumTilesetAnimDmas].dest = dest;
+ gTilesetAnimDmas[gNumTilesetAnimDmas].size = size;
+ gNumTilesetAnimDmas++;
+ }
+}
+
+void sub_8072E74(void)
+{
+ int i;
+ for (i = 0; i < gNumTilesetAnimDmas; i++)
+ {
+ DmaCopy16(3,
+ gTilesetAnimDmas[i].src,
+ gTilesetAnimDmas[i].dest,
+ gTilesetAnimDmas[i].size);
+ }
+ gNumTilesetAnimDmas = 0;
+}
+
+void cur_mapheader_run_tileset_funcs_after_some_cpuset(void)
+{
+ ClearTilesetAnimDmas();
+ StartTileset1Animation();
+ StartTileset2Animation();
+}
+
+void sub_8072ED0(void)
+{
+ StartTileset2Animation();
+}
+
+void sub_8072EDC(void)
+{
+ ClearTilesetAnimDmas();
+ if (++gTileset1AnimFrame >= gTileset1AnimLength)
+ {
+ gTileset1AnimFrame = 0;
+ }
+ if (++gTileset2AnimFrame >= gTileset2AnimLength)
+ {
+ gTileset2AnimFrame = 0;
+ }
+ if (gTileset1AnimCallback)
+ {
+ gTileset1AnimCallback(gTileset1AnimFrame);
+ }
+ if (gTileset2AnimCallback)
+ {
+ gTileset2AnimCallback(gTileset2AnimFrame);
+ }
+}
+
+static void StartTileset1Animation(void)
+{
+ gTileset1AnimFrame = 0;
+ gTileset1AnimLength = 0;
+ gTileset1AnimCallback = 0;
+ if (gMapHeader.mapData->primaryTileset)
+ {
+ if (gMapHeader.mapData->primaryTileset->callback)
+ {
+ gMapHeader.mapData->primaryTileset->callback();
+ }
+ }
+}
+
+static void StartTileset2Animation(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = 0;
+ gTileset2AnimCallback = 0;
+ if (gMapHeader.mapData->secondaryTileset)
+ {
+ if (gMapHeader.mapData->secondaryTileset->callback)
+ {
+ gMapHeader.mapData->secondaryTileset->callback();
+ }
+ }
+}
+
+void TilesetCB_General(void)
+{
+ gTileset1AnimFrame = 0;
+ gTileset1AnimLength = 0x100;
+ gTileset1AnimCallback = sub_8073014;
+}
+
+void TilesetCB_Building(void)
+{
+ gTileset1AnimFrame = 0;
+ gTileset1AnimLength = 0x100;
+ gTileset1AnimCallback = sub_8073058;
+}
+
+static void sub_8073014(u16 a1)
+{
+ int v1;
+ v1 = a1 % 0x10;
+ if (v1 == 0) sub_8073070(a1 / 0x10);
+ if (v1 == 1) sub_8073098(a1 / 0x10);
+ if (v1 == 2) sub_80730C0(a1 / 0x10);
+ if (v1 == 3) sub_80730E8(a1 / 0x10);
+ if (v1 == 4) sub_807361C(a1 / 0x10);
+}
+
+static void sub_8073058(u16 a1)
+{
+ if (a1 % 8 == 0)
+ {
+ sub_8073904(a1 / 8);
+ }
+}
+
+static void sub_8073070(u16 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_General_0[v1], (u8 *)(BG_VRAM + 0x3f80), 0x80);
+}
+
+static void sub_8073098(u16 a1)
+{
+ u8 v1;
+ v1 = a1 % 8;
+ QueueTilesetAnimDma(gTilesetAnimTable_General_1[v1], (u8 *)(BG_VRAM + 0x3600), 0x3c0);
+}
+
+static void sub_80730C0(u16 a1)
+{
+ int v1;
+ v1 = a1 % 8;
+ QueueTilesetAnimDma(gTilesetAnimTable_General_2[v1], (u8 *)(BG_VRAM + 0x3a00), 0x140);
+}
+
+static void sub_80730E8(u16 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_General_3[v1], (u8 *)(BG_VRAM + 0x3e00), 0xc0);
}
-void TilesetCB_General(void) {
- gTileset1AnimFrame = 0;
- gTileset1AnimLength = 0x100;
- gTileset1AnimCallback = sub_8073014;
+void TilesetCB_Petalburg(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-void TilesetCB_Building(void) {
- gTileset1AnimFrame = 0;
- gTileset1AnimLength = 0x100;
- gTileset1AnimCallback = sub_8073058;
+void TilesetCB_Rustboro(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_8073424;
}
-static void sub_8073014(u16 a1) {
- int v1;
- v1 = a1 % 0x10;
- if (v1 == 0) sub_8073070(a1 / 0x10);
- if (v1 == 1) sub_8073098(a1 / 0x10);
- if (v1 == 2) sub_80730C0(a1 / 0x10);
- if (v1 == 3) sub_80730E8(a1 / 0x10);
- if (v1 == 4) sub_807361C(a1 / 0x10);
+void TilesetCB_Dewford(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-static void sub_8073058(u16 a1) {
- if (a1 % 8 == 0) {
- sub_8073904(a1 / 8);
- }
+void TilesetCB_Slateport(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-static void sub_8073070(u16 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_General_0[v1],
- (u8 *)(BG_VRAM + 0x3f80),
- 0x80);
+void TilesetCB_Mauville(void)
+{
+ gTileset2AnimFrame = gTileset1AnimFrame;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_80734A0;
}
-static void sub_8073098(u16 a1) {
- u8 v1;
- v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_General_1[v1],
- (u8 *)(BG_VRAM + 0x3600),
- 0x3c0);
+void TilesetCB_Lavaridge(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_8073514;
}
-static void sub_80730C0(u16 a1) {
- int v1;
- v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_General_2[v1],
- (u8 *)(BG_VRAM + 0x3a00),
- 0x140);
+void TilesetCB_Fallarbor(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-static void sub_80730E8(u16 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_General_3[v1],
- (u8 *)(BG_VRAM + 0x3e00),
- 0xc0);
+void TilesetCB_Fortree(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-void TilesetCB_Petalburg(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_Lilycove(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-void TilesetCB_Rustboro(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_8073424;
+void TilesetCB_Mossdeep(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-void TilesetCB_Dewford(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_EverGrande(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_8073540;
}
-void TilesetCB_Slateport(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_Pacifidlog(void)
+{
+ gTileset2AnimFrame = gTileset1AnimFrame;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_80735B4;
}
-void TilesetCB_Mauville(void) {
- gTileset2AnimFrame = gTileset1AnimFrame;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_80734A0;
+void TilesetCB_Sootopolis(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = 0;
}
-void TilesetCB_Lavaridge(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_8073514;
+void TilesetCB_Underwater(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = 0x80;
+ gTileset2AnimCallback = sub_80735E4;
}
-void TilesetCB_Fallarbor(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_SootopolisGym(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = 0xf0;
+ gTileset2AnimCallback = sub_80738A8;
}
-void TilesetCB_Fortree(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_Cave(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_8073600;
}
-void TilesetCB_Lilycove(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_EliteFour(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = 0x80;
+ gTileset2AnimCallback = sub_80738C0;
}
-void TilesetCB_Mossdeep(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
+void TilesetCB_MauvilleGym(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_8073890;
}
-void TilesetCB_EverGrande(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_8073540;
+void TilesetCB_BikeShop(void)
+{
+ gTileset2AnimFrame = 0;
+ gTileset2AnimLength = gTileset1AnimLength;
+ gTileset2AnimCallback = sub_80738EC;
}
-void TilesetCB_Pacifidlog(void) {
- gTileset2AnimFrame = gTileset1AnimFrame;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_80735B4;
-}
-
-void TilesetCB_Sootopolis(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = 0;
-}
-
-void TilesetCB_Underwater(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = 0x80;
- gTileset2AnimCallback = sub_80735E4;
-}
+static void sub_8073424(u16 a1)
+{
+ int v1;
+ v1 = a1 % 8;
+ if (v1 == 0)
+ {
+ sub_80737A4(a1 / 8, 0);
+ sub_80737E0(a1 / 8);
+ }
+ if (v1 == 1) sub_80737A4(a1 / 8, 1);
+ if (v1 == 2) sub_80737A4(a1 / 8, 2);
+ if (v1 == 3) sub_80737A4(a1 / 8, 3);
+ if (v1 == 4) sub_80737A4(a1 / 8, 4);
+ if (v1 == 5) sub_80737A4(a1 / 8, 5);
+ if (v1 == 6) sub_80737A4(a1 / 8, 6);
+ if (v1 == 7) sub_80737A4(a1 / 8, 7);
+}
+
+static void sub_80734A0(u16 a1)
+{
+ int v1;
+ v1 = a1 % 8;
+ if (v1 == 0) sub_8073704(a1 / 8, 0);
+ if (v1 == 1) sub_8073704(a1 / 8, 1);
+ if (v1 == 2) sub_8073704(a1 / 8, 2);
+ if (v1 == 3) sub_8073704(a1 / 8, 3);
+ if (v1 == 4) sub_8073704(a1 / 8, 4);
+ if (v1 == 5) sub_8073704(a1 / 8, 5);
+ if (v1 == 6) sub_8073704(a1 / 8, 6);
+ if (v1 == 7) sub_8073704(a1 / 8, 7);
+}
+
+static void sub_8073514(u16 a1)
+{
+ int v1;
+ v1 = a1 % 0x10;
+ if (v1 == 0) sub_8073644(a1 / 0x10);
+ if (v1 == 1) sub_8073808(a1 / 0x10);
+}
+
+static void sub_8073540(u16 a1)
+{
+ int v1;
+ v1 = a1 % 8;
+ if (v1 == 0) sub_8073830(a1 / 8, 0);
+ if (v1 == 1) sub_8073830(a1 / 8, 1);
+ if (v1 == 2) sub_8073830(a1 / 8, 2);
+ if (v1 == 3) sub_8073830(a1 / 8, 3);
+ if (v1 == 4) sub_8073830(a1 / 8, 4);
+ if (v1 == 5) sub_8073830(a1 / 8, 5);
+ if (v1 == 6) sub_8073830(a1 / 8, 6);
+ if (v1 == 7) sub_8073830(a1 / 8, 7);
+}
+
+static void sub_80735B4(u16 a1)
+{
+ int v1;
+ v1 = a1 % 0x10;
+ if (v1 == 0) sub_807368C(a1 / 0x10);
+ if (v1 == 1) sub_80736DC(a1 / 0x10);
+}
+
+static void sub_80735E4(u16 a1)
+{
+ int v1;
+ v1 = a1 % 0x10;
+ if (v1 == 0) sub_80736B4(a1 / 0x10);
+}
+
+static void sub_8073600(u16 a1)
+{
+ int v1;
+ v1 = a1 % 0x10;
+ if (v1 == 1) sub_8073868(a1 / 0x10);
+}
+
+static void sub_807361C(u16 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_General_4[v1], (u8 *)(BG_VRAM + 0x3c00), 0x140);
+}
+
+static void sub_8073644(u8 a1)
+{
+ u8 v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Lavaridge[v1], (u8 *)(BG_VRAM + 0x6400), 0x80);
+ v1 = (a1 + 2) % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Lavaridge[v1], (u8 *)(BG_VRAM + 0x6480), 0x80);
+}
+
+static void sub_807368C(u8 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Pacifidlog_0[v1], (u8 *)(BG_VRAM + 0x7a00), 0x3c0);
+}
+
+static void sub_80736B4(u8 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Underwater[v1], (u8 *)(BG_VRAM + 0x7e00), 0x80);
+}
+
+static void sub_80736DC(u8 a1)
+{
+ int v1;
+ v1 = a1 % 8;
+ QueueTilesetAnimDma(gTilesetAnimTable_Pacifidlog_1[v1], (u8 *)(BG_VRAM + 0x7e00), 0x100);
+}
+
+static void sub_8073704(u16 a1, u8 a2)
+{
+ int v1;
+ a1 -= a2;
+ if (a1 < 12)
+ {
+ v1 = a1 % 12;
+ QueueTilesetAnimDma(gTilesetAnimTable_Mauville_0A[v1], gUnknown_0837BAE4[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnimTable_Mauville_1A[v1], gUnknown_0837BB04[a2], 0x80);
+ }
+ else
+ {
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Mauville_0B[v1], gUnknown_0837BAE4[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnimTable_Mauville_1B[v1], gUnknown_0837BB04[a2], 0x80);
+ }
+}
+
+static void sub_80737A4(u16 a1, u8 a2)
+{
+ int v1;
+ a1 -= a2;
+
+ v1 = a1 % 8;
+ if (gTilesetAnimTable_Rustboro_0[v1])
+ {
+ QueueTilesetAnimDma(gTilesetAnimTable_Rustboro_0[v1], gUnknown_0837BFA4[a2], 0x80);
+ }
+}
+
+static void sub_80737E0(u16 a1)
+{
+ int v1;
+ v1 = a1 % 2;
+ QueueTilesetAnimDma(gTilesetAnimTable_Rustboro_1[v1], (u8 *)(BG_VRAM + 0x7800), 0x80);
+}
+
+static void sub_8073808(u16 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Cave[v1], (u8 *)(BG_VRAM + 0x5400), 0x80);
+}
+
+static void sub_8073830(u16 a1, u8 a2)
+{
+ int v1;
+ a1 -= a2;
+ v1 = a1 % 8;
+ QueueTilesetAnimDma(gTilesetAnimTable_EverGrande[v1], gUnknown_0837C93C[a2], 0x80);
+}
+
+static void sub_8073868(u16 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_Cave[v1], (u8 *)(BG_VRAM + 0x7400), 0x80);
+}
+
+static void sub_8073890(u16 a1)
+{
+ int v1;
+ v1 = a1 % 2;
+ if (!v1)
+ {
+ sub_80739C4(a1 / 2);
+ }
+}
+
+static void sub_80738A8(u16 a1)
+{
+ int v1;
+ v1 = a1 % 8;
+ if (!v1)
+ {
+ sub_807392C(a1 / 8);
+ }
+}
+
+static void sub_80738C0(u16 a1)
+{
+ if (a1 % 0x40 == 0)
+ {
+ sub_807399C(a1 / 0x40);
+ }
+ if (a1 % 8 == 1)
+ {
+ sub_8073974(a1 / 8);
+ }
+}
+
+static void sub_80738EC(u16 a1)
+{
+ if (a1 % 4 == 0)
+ {
+ sub_80739EC(a1 / 4);
+ }
+}
+
+static void sub_8073904(u16 a1)
+{
+ int v1;
+ v1 = a1 % 2;
+ QueueTilesetAnimDma(gTilesetAnimTable_Building[v1], (u8 *)(BG_VRAM + 0x3e00), 0x80);
+}
+
+static void sub_807392C(u16 a1)
+{
+ int v1;
+ v1 = a1 % 3;
+ QueueTilesetAnimDma(gTilesetAnimTable_SootopolisGym_0[v1], (u8 *)(BG_VRAM + 0x7e00), 0x180);
+ QueueTilesetAnimDma(gTilesetAnimTable_SootopolisGym_1[v1], (u8 *)(BG_VRAM + 0x7a00), 0x280);
+}
-void TilesetCB_SootopolisGym(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = 0xf0;
- gTileset2AnimCallback = sub_80738A8;
+static void sub_8073974(u16 a1)
+{
+ int v1;
+ v1 = a1 % 4;
+ QueueTilesetAnimDma(gTilesetAnimTable_EliteFour_0[v1], (u8 *)(BG_VRAM + 0x7f00), 0x20);
+}
+
+static void sub_807399C(u16 a1)
+{
+ int v1;
+ v1 = a1 % 2;
+ QueueTilesetAnimDma(gTilesetAnimTable_EliteFour_1[v1], (u8 *)(BG_VRAM + 0x7c00), 0x80);
}
-void TilesetCB_Cave(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_8073600;
-}
-
-void TilesetCB_EliteFour(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = 0x80;
- gTileset2AnimCallback = sub_80738C0;
-}
-
-void TilesetCB_MauvilleGym(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_8073890;
-}
-
-void TilesetCB_BikeShop(void) {
- gTileset2AnimFrame = 0;
- gTileset2AnimLength = gTileset1AnimLength;
- gTileset2AnimCallback = sub_80738EC;
-}
-
-static void sub_8073424(u16 a1) {
- int v1;
- v1 = a1 % 8;
- if (v1 == 0) {
- sub_80737A4(a1 / 8, 0);
- sub_80737E0(a1 / 8);
- }
- if (v1 == 1) sub_80737A4(a1 / 8, 1);
- if (v1 == 2) sub_80737A4(a1 / 8, 2);
- if (v1 == 3) sub_80737A4(a1 / 8, 3);
- if (v1 == 4) sub_80737A4(a1 / 8, 4);
- if (v1 == 5) sub_80737A4(a1 / 8, 5);
- if (v1 == 6) sub_80737A4(a1 / 8, 6);
- if (v1 == 7) sub_80737A4(a1 / 8, 7);
-}
-
-static void sub_80734A0(u16 a1) {
- int v1;
- v1 = a1 % 8;
- if (v1 == 0) sub_8073704(a1 / 8, 0);
- if (v1 == 1) sub_8073704(a1 / 8, 1);
- if (v1 == 2) sub_8073704(a1 / 8, 2);
- if (v1 == 3) sub_8073704(a1 / 8, 3);
- if (v1 == 4) sub_8073704(a1 / 8, 4);
- if (v1 == 5) sub_8073704(a1 / 8, 5);
- if (v1 == 6) sub_8073704(a1 / 8, 6);
- if (v1 == 7) sub_8073704(a1 / 8, 7);
-}
-
-static void sub_8073514(u16 a1) {
- int v1;
- v1 = a1 % 0x10;
- if (v1 == 0) sub_8073644(a1 / 0x10);
- if (v1 == 1) sub_8073808(a1 / 0x10);
-}
-
-static void sub_8073540(u16 a1) {
- int v1;
- v1 = a1 % 8;
- if (v1 == 0) sub_8073830(a1 / 8, 0);
- if (v1 == 1) sub_8073830(a1 / 8, 1);
- if (v1 == 2) sub_8073830(a1 / 8, 2);
- if (v1 == 3) sub_8073830(a1 / 8, 3);
- if (v1 == 4) sub_8073830(a1 / 8, 4);
- if (v1 == 5) sub_8073830(a1 / 8, 5);
- if (v1 == 6) sub_8073830(a1 / 8, 6);
- if (v1 == 7) sub_8073830(a1 / 8, 7);
-}
-
-static void sub_80735B4(u16 a1) {
- int v1;
- v1 = a1 % 0x10;
- if (v1 == 0) sub_807368C(a1 / 0x10);
- if (v1 == 1) sub_80736DC(a1 / 0x10);
-}
-
-static void sub_80735E4(u16 a1) {
- int v1;
- v1 = a1 % 0x10;
- if (v1 == 0) sub_80736B4(a1 / 0x10);
-}
-
-static void sub_8073600(u16 a1) {
- int v1;
- v1 = a1 % 0x10;
- if (v1 == 1) sub_8073868(a1 / 0x10);
-}
-
-static void sub_807361C(u16 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_General_4[v1],
- (u8 *)(BG_VRAM + 0x3c00),
- 0x140);
-}
-
-static void sub_8073644(u8 a1) {
- u8 v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Lavaridge[v1],
- (u8 *)(BG_VRAM + 0x6400),
- 0x80);
- v1 = (a1 + 2) % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Lavaridge[v1],
- (u8 *)(BG_VRAM + 0x6480),
- 0x80);
-}
-
-static void sub_807368C(u8 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Pacifidlog_0[v1],
- (u8 *)(BG_VRAM + 0x7a00),
- 0x3c0);
-}
-
-static void sub_80736B4(u8 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Underwater[v1],
- (u8 *)(BG_VRAM + 0x7e00),
- 0x80);
-}
-
-static void sub_80736DC(u8 a1) {
- int v1;
- v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_Pacifidlog_1[v1],
- (u8 *)(BG_VRAM + 0x7e00),
- 0x100);
-}
-
-static void sub_8073704(u16 a1, u8 a2) {
- int v1;
- a1 -= a2;
- if (a1 < 12) {
- v1 = a1 % 12;
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_0A[v1],
- gUnknown_0837BAE4[a2],
- 0x80);
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_1A[v1],
- gUnknown_0837BB04[a2],
- 0x80);
- } else {
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_0B[v1],
- gUnknown_0837BAE4[a2],
- 0x80);
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_1B[v1],
- gUnknown_0837BB04[a2],
- 0x80);
- }
-}
-
-static void sub_80737A4(u16 a1, u8 a2) {
- int v1;
- a1 -= a2;
-
- v1 = a1 % 8;
- if (gTilesetAnimTable_Rustboro_0[v1]) {
- QueueTilesetAnimDma(gTilesetAnimTable_Rustboro_0[v1],
- gUnknown_0837BFA4[a2],
- 0x80);
- }
-}
-
-static void sub_80737E0(u16 a1) {
- int v1;
- v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_Rustboro_1[v1],
- (u8 *)(BG_VRAM + 0x7800),
- 0x80);
-}
-
-static void sub_8073808(u16 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Cave[v1],
- (u8 *)(BG_VRAM + 0x5400),
- 0x80);
-}
-
-static void sub_8073830(u16 a1, u8 a2) {
- int v1;
- a1 -= a2;
- v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_EverGrande[v1],
- gUnknown_0837C93C[a2],
- 0x80);
-}
-
-static void sub_8073868(u16 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Cave[v1],
- (u8 *)(BG_VRAM + 0x7400),
- 0x80);
-}
-
-static void sub_8073890(u16 a1) {
- int v1;
- v1 = a1 % 2;
- if (!v1) {
- sub_80739C4(a1 / 2);
- }
-}
-
-static void sub_80738A8(u16 a1) {
- int v1;
- v1 = a1 % 8;
- if (!v1) {
- sub_807392C(a1 / 8);
- }
-}
-
-static void sub_80738C0(u16 a1) {
- if (a1 % 0x40 == 0) {
- sub_807399C(a1 / 0x40);
- }
- if (a1 % 8 == 1) {
- sub_8073974(a1 / 8);
- }
-}
-
-static void sub_80738EC(u16 a1) {
- if (a1 % 4 == 0) {
- sub_80739EC(a1 / 4);
- }
-}
-
-static void sub_8073904(u16 a1) {
- int v1;
- v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_Building[v1],
- (u8 *)(BG_VRAM + 0x3e00),
- 0x80);
-}
-
-static void sub_807392C(u16 a1) {
- int v1;
- v1 = a1 % 3;
- QueueTilesetAnimDma(gTilesetAnimTable_SootopolisGym_0[v1],
- (u8 *)(BG_VRAM + 0x7e00),
- 0x180);
- QueueTilesetAnimDma(gTilesetAnimTable_SootopolisGym_1[v1],
- (u8 *)(BG_VRAM + 0x7a00),
- 0x280);
-}
-
-static void sub_8073974(u16 a1) {
- int v1;
- v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_EliteFour_0[v1],
- (u8 *)(BG_VRAM + 0x7f00),
- 0x20);
-}
-
-static void sub_807399C(u16 a1) {
- int v1;
- v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_EliteFour_1[v1],
- (u8 *)(BG_VRAM + 0x7c00),
- 0x80);
-}
-
-static void sub_80739C4(u16 a1) {
- int v1;
- v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_MauvilleGym[v1],
- (u8 *)(BG_VRAM + 0x5200),
- 0x200);
+static void sub_80739C4(u16 a1)
+{
+ int v1;
+ v1 = a1 % 2;
+ QueueTilesetAnimDma(gTilesetAnimTable_MauvilleGym[v1], (u8 *)(BG_VRAM + 0x5200), 0x200);
}
-static void sub_80739EC(u16 a1) {
- int v1;
- v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_BikeShop[v1],
- (u8 *)(BG_VRAM + 0x7e00),
- 0x120);
+static void sub_80739EC(u16 a1)
+{
+ int v1;
+ v1 = a1 % 2;
+ QueueTilesetAnimDma(gTilesetAnimTable_BikeShop[v1], (u8 *)(BG_VRAM + 0x7e00), 0x120);
}
diff --git a/src/title_screen.c b/src/title_screen.c
index ffa803d2e..1565abf62 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -2,49 +2,287 @@
#include "title_screen.h"
#include "asm.h"
#include "clear_save_data_menu.h"
-#include "m4a.h"
-#include "main_menu.h"
-#include "intro.h"
+#include "decompress.h"
+#include "event_data.h"
#include "gba/m4a_internal.h"
+#include "intro.h"
+#include "m4a.h"
#include "main.h"
+#include "main_menu.h"
#include "palette.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
-#include "decompress.h"
-#include "event_data.h"
extern u8 gReservedSpritePaletteCount;
extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gUnknown_0202F7E4;
extern u16 gUnknown_030041B4;
extern u16 gUnknown_030042C0;
-extern u8 gUnknown_08393210[];
-extern u8 gUnknown_08393250[];
-extern u8 gUnknown_083939EC[];
-extern u8 gUnknown_08393BF8[];
-extern u16 gUnknown_08393E64[];
-extern struct SpriteTemplate gSpriteTemplate_8393ECC;
-extern struct SpriteTemplate gSpriteTemplate_8393EE4;
-extern struct SpriteSheet gUnknown_08393EFC;
-extern struct SpriteTemplate gSpriteTemplate_8393F74;
-extern struct SpriteSheet gUnknown_08393F8C;
-extern const struct SpritePalette gUnknown_08393F9C[];
-extern struct SpriteTemplate gSpriteTemplate_8393FC0;
-extern struct SpriteSheet gUnknown_08393FD8;
-extern u8 gUnknown_08E9D8CC[];
-extern u8 gUnknown_08E9F624[];
-extern u8 gUnknown_08E9F7E4[];
+extern const u8 gUnknown_08E9D8CC[];
+extern const u16 gUnknown_08E9F624[];
+extern const u8 gUnknown_08E9F7E4[];
+extern const u8 gVersionTiles[];
+extern const u8 gTitleScreenPressStart_Gfx[];
+extern const u16 gTitleScreenLogoShinePalette[];
-static void MainCB2(void);
-static void Task_TitleScreenPhase1(u8);
-static void Task_TitleScreenPhase2(u8);
-static void Task_TitleScreenPhase3(u8);
-static void CB2_GoToMainMenu(void);
-static void CB2_GoToClearSaveDataScreen(void);
-static void CB2_GoToResetRtcScreen(void);
-static void CB2_GoToCopyrightScreen(void);
-static void UpdateLegendaryMarkingColor(u8);
+#ifdef SAPPHIRE
+static const u16 sLegendaryMonPalettes[][16] =
+{
+ INCBIN_U16("graphics/title_screen/kyogre_dark.gbapal"),
+ INCBIN_U16("graphics/title_screen/kyogre_glow.gbapal"),
+};
+static const u8 sLegendaryMonPixelData[] = INCBIN_U8("graphics/title_screen/kyogre.4bpp.lz");
+static const u8 sLegendaryMonTilemap[] = INCBIN_U8("graphics/title_screen/kyogre_map.bin.lz");
+static const u8 sBackdropTilemap[] = INCBIN_U8("graphics/title_screen/water_map.bin.lz");
+#else
+static const u16 sLegendaryMonPalettes[][16] =
+{
+ INCBIN_U16("graphics/title_screen/groudon_dark.gbapal"),
+ INCBIN_U16("graphics/title_screen/groudon_glow.gbapal"),
+};
+static const u8 sLegendaryMonPixelData[] = INCBIN_U8("graphics/title_screen/groudon.4bpp.lz");
+static const u8 sLegendaryMonTilemap[] = INCBIN_U8("graphics/title_screen/groudon_map.bin.lz");
+static const u8 sBackdropTilemap[] = INCBIN_U8("graphics/title_screen/lava_map.bin.lz");
+#endif
+static const u8 sLogoShineTiles[] = INCBIN_U8("graphics/title_screen/logo_shine.4bpp.lz");
+const u16 gUnknown_08393E64[] =
+{
+ 0x10,
+ 0x110,
+ 0x210,
+ 0x310,
+ 0x410,
+ 0x510,
+ 0x610,
+ 0x710,
+ 0x810,
+ 0x910,
+ 0xA10,
+ 0xB10,
+ 0xC10,
+ 0xD10,
+ 0xE10,
+ 0xF10,
+ 0x100F,
+ 0x100E,
+ 0x100D,
+ 0x100C,
+ 0x100B,
+ 0x100A,
+ 0x1009,
+ 0x1008,
+ 0x1007,
+ 0x1006,
+ 0x1005,
+ 0x1004,
+ 0x1003,
+ 0x1002,
+ 0x1001,
+ 0x1000,
+};
+static const struct OamData sVersionBannerLeftOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData sVersionBannerRightOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd sVersionBannerLeftAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd sVersionBannerRightAnimSequence[] =
+{
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sVersionBannerLeftAnimTable[] =
+{
+ sVersionBannerLeftAnimSequence,
+};
+static const union AnimCmd *const sVersionBannerRightAnimTable[] =
+{
+ sVersionBannerRightAnimSequence,
+};
+static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerLeftOamData,
+ .anims = sVersionBannerLeftAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_VersionBannerLeft,
+};
+static const struct SpriteTemplate sVersionBannerRightSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerRightOamData,
+ .anims = sVersionBannerRightAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_VersionBannerRight,
+};
+static const struct SpriteSheet gUnknown_08393EFC[] =
+{
+ {gVersionTiles, 0x1000, 1000},
+ {NULL},
+};
+static const struct OamData gOamData_8393F0C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_8393F14[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F1C[] =
+{
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F24[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F2C[] =
+{
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F34[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F3C[] =
+{
+ ANIMCMD_FRAME(20, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F44[] =
+{
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F4C[] =
+{
+ ANIMCMD_FRAME(28, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sStartCopyrightBannerAnimTable[] =
+{
+ gSpriteAnim_8393F14,
+ gSpriteAnim_8393F1C,
+ gSpriteAnim_8393F24,
+ gSpriteAnim_8393F2C,
+ gSpriteAnim_8393F34,
+ gSpriteAnim_8393F3C,
+ gSpriteAnim_8393F44,
+ gSpriteAnim_8393F4C,
+};
+static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &gOamData_8393F0C,
+ .anims = sStartCopyrightBannerAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_PressStartCopyrightBanner,
+};
+static const struct SpriteSheet gUnknown_08393F8C[] =
+{
+ {gTitleScreenPressStart_Gfx, 0x520, 1001},
+ {NULL},
+};
+const struct SpritePalette sPokemonLogoShinePalette[] =
+{
+ {gTitleScreenLogoShinePalette, 1001},
+ {NULL},
+};
+static const struct OamData sPokemonLogoShineOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd sPokemonLogoShineAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sPokemonLogoShineAnimTable[] =
+{
+ sPokemonLogoShineAnimSequence,
+};
+static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate =
+{
+ .tileTag = 1002,
+ .paletteTag = 1001,
+ .oam = &sPokemonLogoShineOamData,
+ .anims = sPokemonLogoShineAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_PokemonLogoShine,
+};
+static const struct SpriteSheet sPokemonLogoShineSpriteSheet[] =
+{
+ {sLogoShineTiles, 0x800, 1002},
+ {NULL},
+};
#define _RGB(r, g, b) ((((b) & 31) << 10) + (((g) & 31) << 5) + ((r) & 31))
@@ -66,10 +304,20 @@ static void UpdateLegendaryMarkingColor(u8);
#define RESET_RTC_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON | DPAD_LEFT)
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
+static void MainCB2(void);
+static void Task_TitleScreenPhase1(u8);
+static void Task_TitleScreenPhase2(u8);
+static void Task_TitleScreenPhase3(u8);
+static void CB2_GoToMainMenu(void);
+static void CB2_GoToClearSaveDataScreen(void);
+static void CB2_GoToResetRtcScreen(void);
+static void CB2_GoToCopyrightScreen(void);
+static void UpdateLegendaryMarkingColor(u8);
+
void SpriteCallback_VersionBannerLeft(struct Sprite *sprite)
{
struct Task *task = &gTasks[sprite->data1];
-
+
if (task->data[1] != 0)
{
sprite->oam.objMode = 0;
@@ -93,7 +341,7 @@ void SpriteCallback_VersionBannerLeft(struct Sprite *sprite)
void SpriteCallback_VersionBannerRight(struct Sprite *sprite)
{
struct Task *task = &gTasks[sprite->data1];
-
+
if (task->data[1] != 0)
{
sprite->oam.objMode = 0;
@@ -130,11 +378,11 @@ static void CreatePressStartBanner(s16 x, s16 y)
{
u8 i;
u8 spriteId;
-
+
x -= 32;
for (i = 0; i < 3; i++, x += 32)
{
- spriteId = CreateSprite(&gSpriteTemplate_8393F74, x, y, 0);
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
StartSpriteAnim(&gSprites[spriteId], i);
gSprites[spriteId].data0 = 1;
}
@@ -144,11 +392,11 @@ static void CreateCopyrightBanner(s16 x, s16 y)
{
u8 i;
u8 spriteId;
-
+
x -= 64;
for (i = 0; i < 5; i++, x += 32)
{
- spriteId = CreateSprite(&gSpriteTemplate_8393F74, x, y, 0);
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
StartSpriteAnim(&gSprites[spriteId], i + 3);
}
}
@@ -160,7 +408,7 @@ void SpriteCallback_PokemonLogoShine(struct Sprite *sprite)
if (sprite->data0) //Flash background
{
u16 backgroundColor;
-
+
if (sprite->pos1.x < DISPLAY_WIDTH / 2)
{
//Brighten background color
@@ -193,8 +441,8 @@ void SpriteCallback_PokemonLogoShine(struct Sprite *sprite)
static void StartPokemonLogoShine(bool8 flashBackground)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_8393FC0, 0, 68, 0);
-
+ u8 spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0);
+
gSprites[spriteId].oam.objMode = 2;
gSprites[spriteId].data0 = flashBackground;
}
@@ -208,11 +456,9 @@ static void VBlankCB(void)
REG_BG1VOFS = gUnknown_030041B4;
}
-enum
-{
- TD_COUNTER,
- TD_SKIP,
-};
+
+#define tCounter data[0]
+#define tSkipToNext data[1]
void CB2_InitTitleScreen(void)
{
@@ -245,28 +491,28 @@ void CB2_InitTitleScreen(void)
LZ77UnCompVram(gUnknown_08E9D8CC, (void *)VRAM);
LZ77UnCompVram(gUnknown_08E9F7E4, (void *)(VRAM + 0x4800));
LoadPalette(gUnknown_08E9F624, 0, 0x1C0);
- LZ77UnCompVram(gUnknown_08393250, (void *)(VRAM + 0x8000));
- LZ77UnCompVram(gUnknown_083939EC, (void *)(VRAM + 0xC000));
- LZ77UnCompVram(gUnknown_08393BF8, (void *)(VRAM + 0xC800));
- LoadPalette(gUnknown_08393210, 0xE0, 0x40);
+ LZ77UnCompVram(sLegendaryMonPixelData, (void *)(VRAM + 0x8000));
+ LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800));
+ LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes));
remove_some_task();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 14;
- LoadCompressedObjectPic(&gUnknown_08393EFC);
- LoadCompressedObjectPic(&gUnknown_08393F8C);
- LoadCompressedObjectPic(&gUnknown_08393FD8);
+ LoadCompressedObjectPic(&gUnknown_08393EFC[0]);
+ LoadCompressedObjectPic(&gUnknown_08393F8C[0]);
+ LoadCompressedObjectPic(&sPokemonLogoShineSpriteSheet[0]);
LoadPalette(gUnknown_08E9F624, 0x100, 0x1C0);
- LoadSpritePalette(&gUnknown_08393F9C[0]);
+ LoadSpritePalette(&sPokemonLogoShinePalette[0]);
gMain.state = 2;
break;
case 2:
{
u8 taskId = CreateTask(Task_TitleScreenPhase1, 0);
-
- gTasks[taskId].data[TD_COUNTER] = 0x100;
- gTasks[taskId].data[TD_SKIP] = FALSE;
+
+ gTasks[taskId].tCounter = 256;
+ gTasks[taskId].tSkipToNext = FALSE;
gTasks[taskId].data[2] = -16;
gTasks[taskId].data[3] = -32;
gUnknown_0202F7E4 = taskId;
@@ -281,7 +527,7 @@ void CB2_InitTitleScreen(void)
case 4:
{
u16 savedIme;
-
+
sub_813CE30(0x78, 0x50, 0x100, 0);
REG_BG2X = -29 * 256;
REG_BG2Y = -33 * 256;
@@ -294,9 +540,9 @@ void CB2_InitTitleScreen(void)
REG_BLDCNT = 0x84;
REG_BLDALPHA = 0;
REG_BLDY = 0x8;
- REG_BG0CNT = 0x180B;
- REG_BG1CNT = 0x190A;
- REG_BG2CNT = 0x4981;
+ REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(25) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_256COLOR | BGCNT_AFF256x256;
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -337,41 +583,41 @@ static void Task_TitleScreenPhase1(u8 taskId)
//Skip to next phase when A, B, Start, or Select is pressed
if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[1] != 0)
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
}
-
- if (gTasks[taskId].data[TD_COUNTER] != 0)
+
+ if (gTasks[taskId].tCounter != 0)
{
- u16 frameNum = gTasks[taskId].data[TD_COUNTER];
-
+ u16 frameNum = gTasks[taskId].tCounter;
+
if (frameNum == 160 || frameNum == 64)
StartPokemonLogoShine(TRUE);
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tCounter--;
}
else
{
u8 spriteId;
-
+
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
REG_WININ = 0;
REG_WINOUT = 0;
REG_BLDCNT = 0x3F50;
REG_BLDALPHA = 0x1F;
REG_BLDY = 0;
-
+
//Create left side of version banner
- spriteId = CreateSprite(&gSpriteTemplate_8393ECC, 0x62, 0x1A, 0);
+ spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, 0x62, 0x1A, 0);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data1 = taskId;
-
+
//Create right side of version banner
- spriteId = CreateSprite(&gSpriteTemplate_8393EE4, 0xA2, 0x1A, 0);
+ spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, 0xA2, 0x1A, 0);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data1 = taskId;
-
+
gTasks[taskId].data[5] = 88;
- gTasks[taskId].data[TD_COUNTER] = 144;
+ gTasks[taskId].tCounter = 144;
gTasks[taskId].func = Task_TitleScreenPhase2;
}
}
@@ -380,17 +626,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
static void Task_TitleScreenPhase2(u8 taskId)
{
//Skip to next phase when A, B, Start, or Select is pressed
- if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[TD_SKIP])
+ if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].tSkipToNext)
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
}
-
- if (gTasks[taskId].data[TD_COUNTER] != 0)
- gTasks[taskId].data[TD_COUNTER]--;
+
+ if (gTasks[taskId].tCounter != 0)
+ gTasks[taskId].tCounter--;
else
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
+ gTasks[taskId].tSkipToNext = TRUE;
REG_DISPCNT = DISPCNT_MODE_1
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON
@@ -402,10 +648,10 @@ static void Task_TitleScreenPhase2(u8 taskId)
gTasks[taskId].data[4] = 0;
gTasks[taskId].func = Task_TitleScreenPhase3;
}
-
- if (!(gTasks[taskId].data[TD_COUNTER] & 1) && gTasks[taskId].data[3] != 0)
+
+ if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0)
gTasks[taskId].data[3]++;
-
+
//Slide Pokemon logo up
REG_BG2Y = gTasks[taskId].data[3] * 256;
}
@@ -416,7 +662,7 @@ static void Task_TitleScreenPhase3(u8 taskId)
REG_BLDCNT = 0x2142;
REG_BLDALPHA = 0x1F0F;
REG_BLDY = 0;
-
+
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & START_BUTTON))
{
FadeOutBGM(4);
@@ -437,14 +683,14 @@ static void Task_TitleScreenPhase3(u8 taskId)
else
{
REG_BG2Y = 0;
- gTasks[taskId].data[TD_COUNTER]++;
- if (gTasks[taskId].data[TD_COUNTER] & 1)
+ gTasks[taskId].tCounter++;
+ if (gTasks[taskId].tCounter & 1)
{
gTasks[taskId].data[4]++;
gUnknown_030041B4 = gTasks[taskId].data[4];
gUnknown_030042C0 = 0;
}
- UpdateLegendaryMarkingColor(gTasks[taskId].data[TD_COUNTER]);
+ UpdateLegendaryMarkingColor(gTasks[taskId].tCounter);
if ((gMPlay_BGM.status & 0xFFFF) == 0)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
@@ -481,12 +727,12 @@ static void CB2_GoToResetRtcScreen(void)
static void UpdateLegendaryMarkingColor(u8 frameNum)
{
u16 palette;
-
+
if ((frameNum % 4) == 0) //Change color every 4th frame
{
u8 colorIntensity = (frameNum >> 2) & 31; //Take bits 2-6 of frameNum the color intensity
u8 fadeDarker = (frameNum >> 2) & 32;
-
+
if (!fadeDarker)
palette = LEGENDARY_MARKING_COLOR(colorIntensity);
else
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 83551eb2b..0070e8a9a 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -14,10 +14,12 @@
#include "sprite.h"
#include "string_util.h"
#include "task.h"
+#include "script_pokemon_80C4.h"
typedef void (*Callback)(void);
-struct Struct2000000 {
+struct Struct2000000
+{
/*0x00*/ u8 var_0;
/*0x01*/ bool8 var_1;
/*0x02*/ u8 var_2;
@@ -70,7 +72,8 @@ void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon);
u16 GetPokedexSeenCount(void);
-enum {
+enum
+{
TD_0,
TD_1,
TD_CALLBACK,
@@ -144,13 +147,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void);
static void TrainerCard_Back_PrintPokemonTrades(void);
void unref_sub_8094588(u16 left, u16 top);
-void sub_8093110(Callback arg1) {
+void sub_8093110(Callback arg1)
+{
sub_80932AC(arg1);
SetMainCallback2(sub_8093174);
unk_2000000.language = GAME_LANGUAGE;
}
-void sub_8093130(u8 playerIndex, Callback arg2) {
+void sub_8093130(u8 playerIndex, Callback arg2)
+{
struct Struct2000000* r2;
struct LinkPlayer* r3;
struct LinkPlayerMapObject* r4;
@@ -169,53 +174,57 @@ void sub_8093130(u8 playerIndex, Callback arg2) {
}
-static void sub_8093174(void) {
- switch (gMain.state) {
- case 0:
- sub_8093534();
- sub_8093688();
- gMain.state += 1;
- break;
- case 1:
- sub_8093598();
- gMain.state += 1;
- break;
- case 2:
- sub_80935EC();
- gMain.state += 1;
- break;
- case 3:
- sub_8093610();
- sub_80937A4();
- gMain.state += 1;
- break;
- case 4:
- sub_80937BC();
- gMain.state += 1;
- case 5:
- if (MultistepInitMenuWindowContinue() == FALSE) {
- return;
- }
- gMain.state += 1;
- break;
- case 6:
- sub_80937F0();
- gMain.state += 1;
- break;
- case 7:
- sub_80937D8();
- gMain.state += 1;
- break;
- case 8:
- nullsub_15();
- sub_8093800();
- sub_8093550();
- SetMainCallback2(sub_809323C);
- break;
+static void sub_8093174(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ sub_8093534();
+ sub_8093688();
+ gMain.state += 1;
+ break;
+ case 1:
+ sub_8093598();
+ gMain.state += 1;
+ break;
+ case 2:
+ sub_80935EC();
+ gMain.state += 1;
+ break;
+ case 3:
+ sub_8093610();
+ sub_80937A4();
+ gMain.state += 1;
+ break;
+ case 4:
+ sub_80937BC();
+ gMain.state += 1;
+ case 5:
+ if (MultistepInitMenuWindowContinue() == FALSE)
+ {
+ return;
+ }
+ gMain.state += 1;
+ break;
+ case 6:
+ sub_80937F0();
+ gMain.state += 1;
+ break;
+ case 7:
+ sub_80937D8();
+ gMain.state += 1;
+ break;
+ case 8:
+ nullsub_15();
+ sub_8093800();
+ sub_8093550();
+ SetMainCallback2(sub_809323C);
+ break;
}
}
-static void sub_809323C(void) {
+static void sub_809323C(void)
+{
RunTasks();
AnimateSprites();
BuildOamBuffer();
@@ -237,43 +246,51 @@ static void sub_8093254(void)
DmaCopy16(3, gUnknown_03004DE0, gUnknown_03004DE0 + 0x780, 320);
}
-static void sub_80932AC(Callback callBack) {
+static void sub_80932AC(Callback callBack)
+{
u8 taskId = CreateTask(nullsub_60, 0xFF);
struct Task *task = &gTasks[taskId];
task->data[TD_0] = FALSE;
- StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32) callBack);
+ StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack);
}
-static void sub_80932E4(u8 arg1, Callback callBack) {
+static void sub_80932E4(u8 arg1, Callback callBack)
+{
u8 taskId = CreateTask(nullsub_60, 0xFF);
struct Task *task = &gTasks[taskId];
task->data[TD_0] = TRUE;
task->data[TD_1] = arg1;
- StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32) callBack);
+ StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack);
}
-void sub_8093324(void) {
+void sub_8093324(void)
+{
u8 taskId = FindTaskIdByFunc(nullsub_60);
struct Task *task = &gTasks[taskId];
unk_2000000.var_1 = task->data[TD_0];
- LoadWordFromTwoHalfwords((u16 *) &task->data[TD_CALLBACK], (u32 *) &unk_2000000.var_60);
+ LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&unk_2000000.var_60);
- if (unk_2000000.var_1) {
- struct TrainerCard (*trainerCards)[4] = &gTrainerCards;
+ if (unk_2000000.var_1)
+ {
+ struct TrainerCard(*trainerCards)[4] = &gTrainerCards;
s16 var = task->data[TD_1];
struct TrainerCard *dest = &(*trainerCards)[var];
memcpy(&unk_2000000.var_64, dest, sizeof(struct TrainerCard));
- } else {
+ }
+ else
+ {
sub_8093390(&unk_2000000.var_64);
}
}
-static void nullsub_60(u8 taskid) {
+static void nullsub_60(u8 taskid)
+{
}
-void sub_8093390(struct TrainerCard *arg1) {
+void sub_8093390(struct TrainerCard *arg1)
+{
u32 playTime;
bool32 enteredHallOfFame;
bool8 r4;
@@ -285,7 +302,8 @@ void sub_8093390(struct TrainerCard *arg1) {
playTime = GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME);
enteredHallOfFame = GetGameStat(GAME_STAT_ENTERED_HOF);
- if (!enteredHallOfFame) {
+ if (!enteredHallOfFame)
+ {
playTime = 0;
}
arg1->firstHallOfFameA = playTime >> 16;
@@ -314,82 +332,97 @@ void sub_8093390(struct TrainerCard *arg1) {
// Battle tower?
arg1->battleTowerWins = gSaveBlock2.filler_A8.var_4C8;
arg1->battleTowerLosses = gSaveBlock2.filler_A8.var_4CA;
- if (arg1->battleTowerWins > 9999) {
+ if (arg1->battleTowerWins > 9999)
+ {
arg1->battleTowerWins = 9999;
}
- if (arg1->battleTowerLosses > 9999) {
+ if (arg1->battleTowerLosses > 9999)
+ {
arg1->battleTowerLosses = 9999;
}
r4 = FALSE;
- if (sub_80C4D50() > 4) {
+ if (sub_80C4D50() > 4)
+ {
r4 = TRUE;
}
arg1->var_4 = r4;
arg1->money = gSaveBlock1.money;
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < 4; i++)
+ {
arg1->var_28[i] = gSaveBlock1.unk2B1C[i];
}
- for (i = 0; i < 8; i++) {
+ for (i = 0; i < 8; i++)
+ {
arg1->playerName[i] = gSaveBlock2.playerName[i];
}
arg1->stars = sub_80934F4(arg1);
}
-u8 sub_80934C4(u8 id) {
+u8 sub_80934C4(u8 id)
+{
return gTrainerCards[id].stars;
-}
+}
-static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal) {
+static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal)
+{
u32 value = GetGameStat(index);
- if (value > maxVal) {
+ if (value > maxVal)
+ {
value = maxVal;
}
return value;
}
-static u8 sub_80934F4(struct TrainerCard *trainerCard) {
+static u8 sub_80934F4(struct TrainerCard *trainerCard)
+{
u8 value = 0;
- if (trainerCard->firstHallOfFameA != 0 || trainerCard->firstHallOfFameB != 0 || trainerCard->firstHallOfFameC != 0) {
+ if (trainerCard->firstHallOfFameA != 0 || trainerCard->firstHallOfFameB != 0 || trainerCard->firstHallOfFameC != 0)
+ {
value += 1;
}
- if (trainerCard->var_3) {
+ if (trainerCard->var_3)
+ {
value += 1;
}
- if (trainerCard->battleTowerLosses > 49) {
+ if (trainerCard->battleTowerLosses > 49)
+ {
value += 1;
}
- if (trainerCard->var_4) {
+ if (trainerCard->var_4)
+ {
value += 1;
}
return value;
}
-static void sub_8093534(void) {
+static void sub_8093534(void)
+{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
REG_DISPCNT = 0;
}
-static void sub_8093550(void) {
+static void sub_8093550(void)
+{
u16 backup;
SetVBlankCallback(sub_8093254);
backup = REG_IME;
REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK| INTR_FLAG_HBLANK;
+ REG_IE |= INTR_FLAG_VBLANK | INTR_FLAG_HBLANK;
REG_IME = backup;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR;
@@ -397,121 +430,124 @@ static void sub_8093550(void) {
}
__attribute__((naked))
-void sub_8093598() {
+void sub_8093598()
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- movs r3, 0x80\n\
- lsls r3, 9\n\
- mov r4, sp\n\
- movs r6, 0\n\
- ldr r1, _080935E4 @ =0x040000d4\n\
- movs r5, 0x80\n\
- lsls r5, 5\n\
- ldr r7, _080935E8 @ =0x81000800\n\
- movs r0, 0x81\n\
- lsls r0, 24\n\
- mov r12, r0\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ movs r3, 0x80\n\
+ lsls r3, 9\n\
+ mov r4, sp\n\
+ movs r6, 0\n\
+ ldr r1, _080935E4 @ =0x040000d4\n\
+ movs r5, 0x80\n\
+ lsls r5, 5\n\
+ ldr r7, _080935E8 @ =0x81000800\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ mov r12, r0\n\
_080935B6:\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- str r7, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r5\n\
- subs r3, r5\n\
- cmp r3, r5\n\
- bhi _080935B6\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 1\n\
- mov r2, r12\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r5\n\
+ subs r3, r5\n\
+ cmp r3, r5\n\
+ bhi _080935B6\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ lsrs r0, r3, 1\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080935E4: .4byte 0x040000d4\n\
_080935E8: .4byte 0x81000800\n\
.syntax divided\n");
}
__attribute__((naked))
-void sub_80935EC() {
+void sub_80935EC()
+{
asm(".syntax unified\n\
- sub sp, 0x4\n\
- movs r2, 0xE0\n\
- lsls r2, 19\n\
- mov r1, sp\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- ldr r0, _08093608 @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _0809360C @ =0x81000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- add sp, 0x4\n\
- bx lr\n\
- .align 2, 0\n\
+ sub sp, 0x4\n\
+ movs r2, 0xE0\n\
+ lsls r2, 19\n\
+ mov r1, sp\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _08093608 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _0809360C @ =0x81000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ add sp, 0x4\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093608: .4byte 0x040000d4\n\
_0809360C: .4byte 0x81000200\n\
.syntax divided\n");
}
__attribute__((naked))
-void sub_8093610() {
+void sub_8093610()
+{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r5, _08093664 @ =REG_BG0CNT\n\
- movs r1, 0\n\
- strh r1, [r5]\n\
- ldr r2, _08093668 @ =REG_BG1CNT\n\
- strh r1, [r2]\n\
- ldr r3, _0809366C @ =REG_BG2CNT\n\
- strh r1, [r3]\n\
- ldr r4, _08093670 @ =REG_BG3CNT\n\
- strh r1, [r4]\n\
- ldr r0, _08093674 @ =REG_BG0HOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- ldr r1, _08093678 @ =0x00001e08\n\
- adds r0, r1, 0\n\
- strh r0, [r5]\n\
- ldr r1, _0809367C @ =0x00000801\n\
- adds r0, r1, 0\n\
- strh r0, [r2]\n\
- ldr r1, _08093680 @ =0x00000902\n\
- adds r0, r1, 0\n\
- strh r0, [r3]\n\
- ldr r1, _08093684 @ =0x00000a03\n\
- adds r0, r1, 0\n\
- strh r0, [r4]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ ldr r5, _08093664 @ =REG_BG0CNT\n\
+ movs r1, 0\n\
+ strh r1, [r5]\n\
+ ldr r2, _08093668 @ =REG_BG1CNT\n\
+ strh r1, [r2]\n\
+ ldr r3, _0809366C @ =REG_BG2CNT\n\
+ strh r1, [r3]\n\
+ ldr r4, _08093670 @ =REG_BG3CNT\n\
+ strh r1, [r4]\n\
+ ldr r0, _08093674 @ =REG_BG0HOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ ldr r1, _08093678 @ =0x00001e08\n\
+ adds r0, r1, 0\n\
+ strh r0, [r5]\n\
+ ldr r1, _0809367C @ =0x00000801\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2]\n\
+ ldr r1, _08093680 @ =0x00000902\n\
+ adds r0, r1, 0\n\
+ strh r0, [r3]\n\
+ ldr r1, _08093684 @ =0x00000a03\n\
+ adds r0, r1, 0\n\
+ strh r0, [r4]\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093664: .4byte 0x4000008 @ REG_BG0CNT\n\
_08093668: .4byte 0x400000A @ REG_BG1CNT\n\
_0809366C: .4byte 0x400000C @ REG_BG2CNT\n\
@@ -525,7 +561,8 @@ _08093684: .4byte 0x00000a03\n\
}
#ifdef NONMATCHING
-static void sub_8093688(void) {
+static void sub_8093688(void)
+{
int i;
asm_comment("WIP");
@@ -540,7 +577,8 @@ static void sub_8093688(void) {
unk_2000000.var_5 = FALSE;
unk_2000000.var_6 = FALSE;
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < 4; i++)
+ {
sub_80EB3FC(unk_2000000.var_20[i], unk_2000000.var_64.var_28[i]);
}
@@ -549,50 +587,52 @@ static void sub_8093688(void) {
#else
__attribute__((naked))
-static void sub_8093688(void) {
+static void sub_8093688(void)
+{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- bl sub_8093324\n\
- ldr r2, _080936D0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r2]\n\
- strb r1, [r2, 0x3]\n\
- strb r1, [r2, 0x4]\n\
- adds r0, r2, 0\n\
- adds r0, 0x65\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x2]\n\
- strb r1, [r2, 0x5]\n\
- strb r1, [r2, 0x6]\n\
- movs r4, 0\n\
- adds r6, r2, 0\n\
- adds r6, 0x20\n\
- adds r5, r2, 0\n\
- adds r5, 0x8C\n\
+ push {r4-r6,lr}\n\
+ bl sub_8093324\n\
+ ldr r2, _080936D0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r2]\n\
+ strb r1, [r2, 0x3]\n\
+ strb r1, [r2, 0x4]\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x65\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2, 0x2]\n\
+ strb r1, [r2, 0x5]\n\
+ strb r1, [r2, 0x6]\n\
+ movs r4, 0\n\
+ adds r6, r2, 0\n\
+ adds r6, 0x20\n\
+ adds r5, r2, 0\n\
+ adds r5, 0x8C\n\
_080936AE:\n\
- lsls r0, r4, 4\n\
- adds r0, r6\n\
- lsls r1, r4, 1\n\
- adds r1, r5, r1\n\
- ldrh r1, [r1]\n\
- bl sub_80EB3FC\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x3\n\
- bls _080936AE\n\
- bl sub_80936D4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r4, 4\n\
+ adds r0, r6\n\
+ lsls r1, r4, 1\n\
+ adds r1, r5, r1\n\
+ ldrh r1, [r1]\n\
+ bl sub_80EB3FC\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bls _080936AE\n\
+ bl sub_80936D4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080936D0: .4byte 0x02000000\n\
.syntax divided\n");
}
#endif
-void sub_80936D4(void) {
+void sub_80936D4(void)
+{
unk_2000000.var_7 = FALSE;
unk_2000000.var_8 = FALSE;
unk_2000000.var_9 = FALSE;
@@ -603,86 +643,104 @@ void sub_80936D4(void) {
memset(unk_2000000.var_e, 0, sizeof(unk_2000000.var_e));
- if (unk_2000000.var_64.hasPokedex) {
+ if (unk_2000000.var_64.hasPokedex)
+ {
unk_2000000.var_7 += TRUE;
}
if (unk_2000000.var_64.firstHallOfFameA != 0 || unk_2000000.var_64.firstHallOfFameB != 0 ||
- unk_2000000.var_64.firstHallOfFameC != 0) {
+ unk_2000000.var_64.firstHallOfFameC != 0)
+ {
unk_2000000.var_8 += TRUE;
}
- if (unk_2000000.var_64.linkBattleWins != 0 || unk_2000000.var_64.linkBattleLosses != 0) {
+ if (unk_2000000.var_64.linkBattleWins != 0 || unk_2000000.var_64.linkBattleLosses != 0)
+ {
unk_2000000.var_9 += TRUE;
}
- if (unk_2000000.var_64.battleTowerWins != 0 || unk_2000000.var_64.battleTowerLosses != 0) {
+ if (unk_2000000.var_64.battleTowerWins != 0 || unk_2000000.var_64.battleTowerLosses != 0)
+ {
unk_2000000.var_a += TRUE;
}
- if (unk_2000000.var_64.contestsWithFriends != 0) {
+ if (unk_2000000.var_64.contestsWithFriends != 0)
+ {
unk_2000000.var_b += TRUE;
}
- if (unk_2000000.var_64.pokeblocksWithFriends != 0) {
+ if (unk_2000000.var_64.pokeblocksWithFriends != 0)
+ {
unk_2000000.var_c += TRUE;
}
- if (unk_2000000.var_64.pokemonTrades != 0) {
+ if (unk_2000000.var_64.pokemonTrades != 0)
+ {
unk_2000000.var_d += TRUE;
}
- if (!unk_2000000.var_1) {
+ if (!unk_2000000.var_1)
+ {
u32 badgeFlag;
int i;
i = 0;
badgeFlag = BADGE01_GET;
- while (TRUE) {
- if (FlagGet(badgeFlag)) {
+ while (TRUE)
+ {
+ if (FlagGet(badgeFlag))
+ {
unk_2000000.var_e[i] += TRUE;
}
badgeFlag += 1;
i += 1;
- if (badgeFlag > BADGE08_GET) {
+ if (badgeFlag > BADGE08_GET)
+ {
break;
}
}
}
}
-void sub_80937A4() {
+void sub_80937A4()
+{
ResetPaletteFade();
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
}
-void sub_80937BC() {
+void sub_80937BC()
+{
SetUpWindowConfig(&WindowConfig_TrainerCard_Back_Values);
MultistepInitMenuWindowBegin(&WindowConfig_TrainerCard_Back_Values);
}
-static void sub_80937D8() {
+static void sub_80937D8()
+{
sub_8093E04();
sub_8093E28();
sub_8093F64();
sub_8093DAC();
}
-static void sub_80937F0() {
+static void sub_80937F0()
+{
sub_8093EF8();
}
-static void nullsub_15(void) {
+static void nullsub_15(void)
+{
}
-static void sub_8093800() {
+static void sub_8093800()
+{
sub_809380C();
}
-static void sub_809380C() {
+static void sub_809380C()
+{
u8 taskId;
taskId = CreateTask(sub_809382C, 0);
@@ -690,31 +748,32 @@ static void sub_809380C() {
}
__attribute__((naked))
-static void sub_809382C(u8 taskId) {
+static void sub_809382C(u8 taskId)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r4, r1, 3\n\
- ldr r6, _0809385C @ =0x02000000\n\
- ldr r5, _08093860 @ =gTasks\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r4, r1, 3\n\
+ ldr r6, _0809385C @ =0x02000000\n\
+ ldr r5, _08093860 @ =gTasks\n\
_0809383E:\n\
- ldrb r0, [r6]\n\
- lsls r0, 2\n\
- adds r0, r7\n\
- ldr r1, [r0]\n\
- adds r0, r4, r5\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0809383E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r7\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, r5\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0809383E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093858: .4byte gUnknown_083B5EBC\n\
_0809385C: .4byte 0x02000000\n\
_08093860: .4byte gTasks\n\
@@ -722,114 +781,118 @@ _08093860: .4byte gTasks\n\
}
__attribute__((naked))
-bool8 sub_8093864() {
+bool8 sub_8093864()
+{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- ldr r4, _080938A0 @ =0x02000000\n\
- ldr r2, _080938A4 @ =gSaveBlock2\n\
- ldrb r1, [r2, 0x11]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- movs r5, 0\n\
- strb r0, [r4, 0x5]\n\
- ldrb r0, [r2, 0x12]\n\
- strb r0, [r4, 0x6]\n\
- bl sub_80939A4\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r5, [sp]\n\
- movs r1, 0\n\
- movs r2, 0x10\n\
- movs r3, 0\n\
- bl BeginNormalPaletteFade\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ ldr r4, _080938A0 @ =0x02000000\n\
+ ldr r2, _080938A4 @ =gSaveBlock2\n\
+ ldrb r1, [r2, 0x11]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ movs r5, 0\n\
+ strb r0, [r4, 0x5]\n\
+ ldrb r0, [r2, 0x12]\n\
+ strb r0, [r4, 0x6]\n\
+ bl sub_80939A4\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ str r5, [sp]\n\
+ movs r1, 0\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080938A0: .4byte 0x02000000\n\
_080938A4: .4byte gSaveBlock2\n\
.syntax divided\n");
}
__attribute__((naked))
-bool8 sub_80938A8() {
+bool8 sub_80938A8()
+{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938C4 @ =gPaletteFade\n\
- ldrb r1, [r0, 0x7]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080938BE\n\
- ldr r1, _080938C8 @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
+ push {lr}\n\
+ ldr r0, _080938C4 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080938BE\n\
+ ldr r1, _080938C8 @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
_080938BE:\n\
- movs r0, 0\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080938C4: .4byte gPaletteFade\n\
_080938C8: .4byte 0x02000000\n\
.syntax divided\n");
}
__attribute__((naked))
-bool8 sub_80938CC() {
+bool8 sub_80938CC()
+{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938E4 @ =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080938EC\n\
- ldr r1, _080938E8 @ =0x02000000\n\
- movs r0, 0x5\n\
- strb r0, [r1]\n\
- movs r0, 0x1\n\
- b _08093914\n\
- .align 2, 0\n\
+ push {lr}\n\
+ ldr r0, _080938E4 @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080938EC\n\
+ ldr r1, _080938E8 @ =0x02000000\n\
+ movs r0, 0x5\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
+ .align 2, 0\n\
_080938E4: .4byte gMain\n\
_080938E8: .4byte 0x02000000\n\
_080938EC:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08093912\n\
- ldr r2, _08093900 @ =0x02000000\n\
- ldrb r1, [r2, 0x3]\n\
- cmp r1, 0\n\
- beq _08093904\n\
- movs r0, 0x5\n\
- b _0809390C\n\
- .align 2, 0\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08093912\n\
+ ldr r2, _08093900 @ =0x02000000\n\
+ ldrb r1, [r2, 0x3]\n\
+ cmp r1, 0\n\
+ beq _08093904\n\
+ movs r0, 0x5\n\
+ b _0809390C\n\
+ .align 2, 0\n\
_08093900: .4byte 0x02000000\n\
_08093904:\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- strb r0, [r2, 0x3]\n\
- movs r0, 0x3\n\
+ movs r0, 0x1\n\
+ eors r0, r1\n\
+ strb r0, [r2, 0x3]\n\
+ movs r0, 0x3\n\
_0809390C:\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- b _08093914\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
_08093912:\n\
- movs r0, 0\n\
+ movs r0, 0\n\
_08093914:\n\
- pop {r1}\n\
- bx r1\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
-bool8 sub_8093918() {
+bool8 sub_8093918()
+{
sub_8093A28();
PlaySE(SE_CARD);
@@ -838,8 +901,10 @@ bool8 sub_8093918() {
return FALSE;
}
-bool8 sub_8093938() {
- if (sub_8093A48()) {
+bool8 sub_8093938()
+{
+ if (sub_8093A48())
+ {
unk_2000000.var_0 = 2;
}
@@ -847,60 +912,68 @@ bool8 sub_8093938() {
}
__attribute__((naked))
-bool8 sub_8093954() {
+bool8 sub_8093954()
+{
asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x4\n\
- bl sub_80939C0\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- movs r2, 0\n\
- movs r3, 0x10\n\
- bl BeginNormalPaletteFade\n\
- ldr r1, _0809397C @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ push {lr}\n\
+ sub sp, 0x4\n\
+ bl sub_80939C0\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0\n\
+ movs r3, 0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, _0809397C @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_0809397C: .4byte 0x02000000\n\
.syntax divided\n");
}
-bool8 sub_8093980() {
- if (!gPaletteFade.active) {
- SetMainCallback2((MainCallback) unk_2000000.var_60);
+bool8 sub_8093980()
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2((MainCallback)unk_2000000.var_60);
}
return FALSE;
}
-static void sub_80939A4(void) {
+static void sub_80939A4(void)
+{
CreateTask(sub_80939DC, 0);
BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
}
-static void sub_80939C0(void) {
+static void sub_80939C0(void)
+{
u8 taskId;
taskId = FindTaskIdByFunc(sub_80939DC);
- if (taskId != 0xFF) {
+ if (taskId != 0xFF)
+ {
DestroyTask(taskId);
}
}
-static void sub_80939DC(u8 taskId) {
+static void sub_80939DC(u8 taskId)
+{
u8 buffer[32];
struct Task *task;
task = &gTasks[taskId];
- if (unk_2000000.var_5 != task->data[TD_1]) {
+ if (unk_2000000.var_5 != task->data[TD_1])
+ {
task->data[TD_1] = unk_2000000.var_5;
task->data[TD_0] ^= TRUE;
}
@@ -909,7 +982,8 @@ static void sub_80939DC(u8 taskId) {
MenuPrint(buffer, 10, 12);
}
-static void sub_8093A28(void) {
+static void sub_8093A28(void)
+{
u8 taskId;
taskId = CreateTask(sub_8093A68, 0);
@@ -917,93 +991,96 @@ static void sub_8093A28(void) {
}
__attribute__((naked))
-static u8 sub_8093A48() {
+static u8 sub_8093A48()
+{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _08093A5C @ =sub_8093A68\n\
- bl FindTaskIdByFunc\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- beq _08093A60\n\
- movs r0, 0\n\
- b _08093A62\n\
- .align 2, 0\n\
+ push {lr}\n\
+ ldr r0, _08093A5C @ =sub_8093A68\n\
+ bl FindTaskIdByFunc\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ beq _08093A60\n\
+ movs r0, 0\n\
+ b _08093A62\n\
+ .align 2, 0\n\
_08093A5C: .4byte sub_8093A68\n\
_08093A60:\n\
- movs r0, 0x1\n\
+ movs r0, 0x1\n\
_08093A62:\n\
- pop {r1}\n\
- bx r1\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
__attribute__((naked))
-static void sub_8093A68(u8 taskId) {
+static void sub_8093A68(u8 taskId)
+{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
- ldr r2, _08093A9C @ =gTasks\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r4, r1, r2\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
+ ldr r2, _08093A9C @ =gTasks\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r4, r1, r2\n\
_08093A7A:\n\
- movs r1, 0x8\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08093A7A\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r4, r1]\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08093A7A\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093A98: .4byte gUnknown_083B5ED8\n\
_08093A9C: .4byte gTasks\n\
.syntax divided\n");
}
__attribute__((naked))
-bool8 sub_8093AA0() {
+bool8 sub_8093AA0()
+{
asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r4, r0, 0\n\
- ldr r0, _08093AE0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r0, 0x4]\n\
- bl dp12_8087EA4\n\
- movs r1, 0\n\
- ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
- ldr r2, _08093AE8 @ =0x0000fffc\n\
- movs r3, 0xF0\n\
- lsls r3, 3\n\
- adds r0, r3\n\
+ push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ ldr r0, _08093AE0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r0, 0x4]\n\
+ bl dp12_8087EA4\n\
+ movs r1, 0\n\
+ ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
+ ldr r2, _08093AE8 @ =0x0000fffc\n\
+ movs r3, 0xF0\n\
+ lsls r3, 3\n\
+ adds r0, r3\n\
_08093ABA:\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- adds r1, 0x1\n\
- cmp r1, 0x9F\n\
- bls _08093ABA\n\
- ldr r0, _08093AEC @ =sub_8093D7C\n\
- bl SetHBlankCallback\n\
- ldr r1, _08093AE0 @ =0x02000000\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x4]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- movs r0, 0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ adds r1, 0x1\n\
+ cmp r1, 0x9F\n\
+ bls _08093ABA\n\
+ ldr r0, _08093AEC @ =sub_8093D7C\n\
+ bl SetHBlankCallback\n\
+ ldr r1, _08093AE0 @ =0x02000000\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x4]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ movs r0, 0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093AE0: .4byte 0x02000000\n\
_08093AE4: .4byte gUnknown_03004DE0\n\
_08093AE8: .4byte 0x0000fffc\n\
@@ -1012,149 +1089,150 @@ _08093AEC: .4byte sub_8093D7C\n\
}
__attribute__((naked))
-bool8 sub_8093AF0() {
+bool8 sub_8093AF0()
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- mov r8, r0\n\
- ldr r1, _08093BFC @ =0x02000000\n\
- movs r0, 0\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- ldrh r0, [r2, 0xA]\n\
- adds r0, 0x3\n\
- strh r0, [r2, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x4F\n\
- ble _08093B18\n\
- movs r0, 0x4F\n\
- strh r0, [r2, 0xA]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ ldrh r0, [r2, 0xA]\n\
+ adds r0, 0x3\n\
+ strh r0, [r2, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x4F\n\
+ ble _08093B18\n\
+ movs r0, 0x4F\n\
+ strh r0, [r2, 0xA]\n\
_08093B18:\n\
- mov r4, r8\n\
- movs r0, 0xA\n\
- ldrsh r7, [r4, r0]\n\
- movs r0, 0xA0\n\
- subs r0, r7\n\
- mov r9, r0\n\
- subs r4, r0, r7\n\
- negs r0, r7\n\
- lsls r6, r0, 16\n\
- movs r0, 0xA0\n\
- lsls r0, 16\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- adds r5, r0, 0\n\
- ldr r1, _08093C00 @ =0xffff0000\n\
- adds r5, r1\n\
- adds r0, r5, 0\n\
- muls r0, r4\n\
- adds r0, r6\n\
- mov r10, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- str r0, [sp]\n\
- lsls r5, 1\n\
- movs r3, 0\n\
- cmp r3, r7\n\
- bcs _08093B74\n\
- ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
- mov r12, r2\n\
- ldr r0, _08093C08 @ =0x0000fffc\n\
- adds r4, r0, 0\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093C00 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsls r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093B74\n\
+ ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
_08093B5C:\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- lsls r1, r0, 1\n\
- add r1, r12\n\
- subs r2, r4, r0\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r7\n\
- bcc _08093B5C\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093B5C\n\
_08093B74:\n\
- lsls r2, r3, 16\n\
- mov r1, r9\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- mov r4, r10\n\
- lsrs r7, r4, 16\n\
- cmp r2, r0\n\
- bge _08093BAE\n\
- ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
- mov r9, r0\n\
- ldr r4, _08093C08 @ =0x0000fffc\n\
- mov r12, r4\n\
- adds r4, r1, 0\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093BAE\n\
+ ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r4, _08093C08 @ =0x0000fffc\n\
+ mov r12, r4\n\
+ adds r4, r1, 0\n\
_08093B8E:\n\
- lsrs r1, r6, 16\n\
- adds r6, r5\n\
- ldr r0, [sp]\n\
- subs r5, r0\n\
- asrs r2, 16\n\
- lsls r0, r2, 1\n\
- add r0, r9\n\
- add r1, r12\n\
- strh r1, [r0]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, r4\n\
- blt _08093B8E\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ subs r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093B8E\n\
_08093BAE:\n\
- adds r1, r7, 0\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9F\n\
- bgt _08093BD4\n\
- ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
- ldr r0, _08093C08 @ =0x0000fffc\n\
- adds r2, r1, r0\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093BD4\n\
+ ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
_08093BBE:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- strh r2, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x9F\n\
- ble _08093BBE\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093BBE\n\
_08093BD4:\n\
- movs r0, 0x1\n\
- ldr r1, _08093BFC @ =0x02000000\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- movs r4, 0xA\n\
- ldrsh r0, [r2, r4]\n\
- cmp r0, 0x4A\n\
- ble _08093BEA\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r2, r4]\n\
+ cmp r0, 0x4A\n\
+ ble _08093BEA\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
_08093BEA:\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093BFC: .4byte 0x02000000\n\
_08093C00: .4byte 0xffff0000\n\
_08093C04: .4byte gUnknown_03004DE0\n\
@@ -1162,11 +1240,13 @@ _08093C08: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093C0C(struct TrainerCard *trainerCard) {
+bool8 sub_8093C0C(struct TrainerCard *trainerCard)
+{
sub_80939C0();
sub_8093DAC();
- if (!unk_2000000.var_3) {
+ if (!unk_2000000.var_3)
+ {
sub_80939A4();
}
@@ -1176,147 +1256,148 @@ bool8 sub_8093C0C(struct TrainerCard *trainerCard) {
}
__attribute__((naked))
-bool8 sub_8093C38() {
+bool8 sub_8093C38()
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- mov r8, r0\n\
- ldr r1, _08093D40 @ =0x02000000\n\
- movs r2, 0\n\
- strb r2, [r1, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- subs r0, 0x3\n\
- mov r3, r8\n\
- strh r0, [r3, 0xA]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bgt _08093C5C\n\
- strh r2, [r3, 0xA]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ movs r2, 0\n\
+ strb r2, [r1, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ subs r0, 0x3\n\
+ mov r3, r8\n\
+ strh r0, [r3, 0xA]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bgt _08093C5C\n\
+ strh r2, [r3, 0xA]\n\
_08093C5C:\n\
- mov r4, r8\n\
- movs r0, 0xA\n\
- ldrsh r7, [r4, r0]\n\
- movs r0, 0xA0\n\
- subs r0, r7\n\
- mov r9, r0\n\
- subs r4, r0, r7\n\
- negs r0, r7\n\
- lsls r6, r0, 16\n\
- movs r0, 0xA0\n\
- lsls r0, 16\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- adds r5, r0, 0\n\
- ldr r1, _08093D44 @ =0xffff0000\n\
- adds r5, r1\n\
- adds r0, r5, 0\n\
- muls r0, r4\n\
- adds r0, r6\n\
- mov r10, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- str r0, [sp]\n\
- lsrs r5, 1\n\
- movs r3, 0\n\
- cmp r3, r7\n\
- bcs _08093CB8\n\
- ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
- mov r12, r2\n\
- ldr r0, _08093D4C @ =0x0000fffc\n\
- adds r4, r0, 0\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093D44 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsrs r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093CB8\n\
+ ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
_08093CA0:\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- lsls r1, r0, 1\n\
- add r1, r12\n\
- subs r2, r4, r0\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r7\n\
- bcc _08093CA0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093CA0\n\
_08093CB8:\n\
- lsls r2, r3, 16\n\
- mov r1, r9\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- mov r4, r10\n\
- lsrs r7, r4, 16\n\
- cmp r2, r0\n\
- bge _08093CF2\n\
- ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
- mov r9, r0\n\
- ldr r3, _08093D4C @ =0x0000fffc\n\
- mov r12, r3\n\
- adds r4, r1, 0\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093CF2\n\
+ ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r3, _08093D4C @ =0x0000fffc\n\
+ mov r12, r3\n\
+ adds r4, r1, 0\n\
_08093CD2:\n\
- lsrs r1, r6, 16\n\
- adds r6, r5\n\
- ldr r0, [sp]\n\
- adds r5, r0\n\
- asrs r2, 16\n\
- lsls r0, r2, 1\n\
- add r0, r9\n\
- add r1, r12\n\
- strh r1, [r0]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, r4\n\
- blt _08093CD2\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ adds r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093CD2\n\
_08093CF2:\n\
- adds r1, r7, 0\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9F\n\
- bgt _08093D18\n\
- ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
- ldr r0, _08093D4C @ =0x0000fffc\n\
- adds r2, r1, r0\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093D18\n\
+ ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
_08093D02:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- strh r2, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x9F\n\
- ble _08093D02\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093D02\n\
_08093D18:\n\
- movs r0, 0x1\n\
- ldr r1, _08093D40 @ =0x02000000\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- movs r3, 0xA\n\
- ldrsh r0, [r2, r3]\n\
- cmp r0, 0\n\
- bgt _08093D2E\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r3, 0xA\n\
+ ldrsh r0, [r2, r3]\n\
+ cmp r0, 0\n\
+ bgt _08093D2E\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
_08093D2E:\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093D40: .4byte 0x02000000\n\
_08093D44: .4byte 0xffff0000\n\
_08093D48: .4byte gUnknown_03004DE0\n\
@@ -1324,7 +1405,8 @@ _08093D4C: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093D50(void) {
+bool8 sub_8093D50(void)
+{
u8 taskId;
unk_2000000.var_4 = FALSE;
@@ -1338,42 +1420,48 @@ bool8 sub_8093D50(void) {
}
__attribute__((naked))
-void sub_8093D7C(void) {
+void sub_8093D7C(void)
+{
asm(".syntax unified\n\
- ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
- ldr r0, _08093DA4 @ =REG_VCOUNT\n\
- ldrh r2, [r0]\n\
- movs r0, 0xFF\n\
- ands r0, r2\n\
- lsls r0, 1\n\
- movs r2, 0xF0\n\
- lsls r2, 3\n\
- adds r1, r2\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
+ ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093DA4 @ =REG_VCOUNT\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0xFF\n\
+ ands r0, r2\n\
+ lsls r0, 1\n\
+ movs r2, 0xF0\n\
+ lsls r2, 3\n\
+ adds r1, r2\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093DA0: .4byte gUnknown_03004DE0\n\
_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\
_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
.syntax divided\n");
}
-static void sub_8093DAC(void) {
- if (unk_2000000.var_3) {
+static void sub_8093DAC(void)
+{
+ if (unk_2000000.var_3)
+ {
sub_8093DEC();
- } else {
+ }
+ else
+ {
sub_8093DC8();
}
}
-static void sub_8093DC8(void) {
+static void sub_8093DC8(void)
+{
MenuZeroFillScreen();
sub_80940E4();
sub_8093F14();
@@ -1383,7 +1471,8 @@ static void sub_8093DC8(void) {
sub_8094140();
}
-static void sub_8093DEC(void) {
+static void sub_8093DEC(void)
+{
MenuZeroFillScreen();
sub_80940E4();
sub_8093F48();
@@ -1391,76 +1480,78 @@ static void sub_8093DEC(void) {
}
__attribute__((naked))
-static void sub_8093E04() {
+static void sub_8093E04()
+{
asm(".syntax unified\n\
- ldr r0, _08093E20 @ =REG_BG0VOFS\n\
- ldr r2, _08093E24 @ =0x0000fffc\n\
- adds r1, r2, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- movs r2, 0\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
+ ldr r0, _08093E20 @ =REG_BG0VOFS\n\
+ ldr r2, _08093E24 @ =0x0000fffc\n\
+ adds r1, r2, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\
_08093E24: .4byte 0x0000fffc\n\
.syntax divided\n");
}
__attribute__((naked))
-static void sub_8093E28(void) {
+static void sub_8093E28(void)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- bl sub_8093EA0\n\
- ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
- movs r1, 0xE0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
- movs r4, 0xC0\n\
- lsls r4, 19\n\
- movs r5, 0xA4\n\
- lsls r5, 5\n\
- ldr r1, _08093E8C @ =0x040000d4\n\
- ldr r6, _08093E90 @ =0x80000800\n\
- movs r2, 0x80\n\
- lsls r2, 5\n\
- movs r7, 0x80\n\
- lsls r7, 24\n\
+ push {r4-r7,lr}\n\
+ bl sub_8093EA0\n\
+ ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
+ movs r1, 0xE0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
+ movs r4, 0xC0\n\
+ lsls r4, 19\n\
+ movs r5, 0xA4\n\
+ lsls r5, 5\n\
+ ldr r1, _08093E8C @ =0x040000d4\n\
+ ldr r6, _08093E90 @ =0x80000800\n\
+ movs r2, 0x80\n\
+ lsls r2, 5\n\
+ movs r7, 0x80\n\
+ lsls r7, 24\n\
_08093E4E:\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- str r6, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r3, r2\n\
- adds r4, r2\n\
- subs r5, r2\n\
- cmp r5, r2\n\
- bhi _08093E4E\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- lsrs r0, r5, 1\n\
- orrs r0, r7\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- ldr r1, _08093E94 @ =gBadgesTiles\n\
- ldr r2, _08093E98 @ =0x06001480\n\
- ldr r0, _08093E8C @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _08093E9C @ =0x80000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ str r6, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r3, r2\n\
+ adds r4, r2\n\
+ subs r5, r2\n\
+ cmp r5, r2\n\
+ bhi _08093E4E\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ lsrs r0, r5, 1\n\
+ orrs r0, r7\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ ldr r1, _08093E94 @ =gBadgesTiles\n\
+ ldr r2, _08093E98 @ =0x06001480\n\
+ ldr r0, _08093E8C @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _08093E9C @ =0x80000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093E84: .4byte gUnknown_083B5F6C\n\
_08093E88: .4byte gMenuTrainerCard_Gfx\n\
_08093E8C: .4byte 0x040000d4\n\
@@ -1471,157 +1562,165 @@ _08093E9C: .4byte 0x80000200\n\
.syntax divided\n");
}
-void sub_8093EA0(void) {
+void sub_8093EA0(void)
+{
LoadPalette(gUnknown_083B5EF8[unk_2000000.var_2], 0, 48 * 2);
LoadPalette(gBadgesPalette, 48, 16 * 2);
LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
- if (unk_2000000.var_64.gender != MALE) {
+ if (unk_2000000.var_64.gender != MALE)
+ {
LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
}
}
-static void sub_8093EF8(void) {
- LoadTrainerGfx_TrainerCard(unk_2000000.var_64.gender, 80, (void *) (VRAM + 0x1880));
+static void sub_8093EF8(void)
+{
+ LoadTrainerGfx_TrainerCard(unk_2000000.var_64.gender, 80, (void *)(VRAM + 0x1880));
}
__attribute__((naked))
-static void sub_8093F14(void) {
+static void sub_8093F14(void)
+{
asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x8\n\
- ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
- ldr r1, [r0, 0x4]\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- ldr r0, _08093F40 @ =0x02000000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r0, [r0]\n\
- ldr r1, _08093F44 @ =0x06004800\n\
- movs r2, 0xA0\n\
- lsls r2, 1\n\
- bl CpuFastSet\n\
- add sp, 0x8\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {lr}\n\
+ sub sp, 0x8\n\
+ ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r0, [r0]\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r0, _08093F40 @ =0x02000000\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08093F44 @ =0x06004800\n\
+ movs r2, 0xA0\n\
+ lsls r2, 1\n\
+ bl CpuFastSet\n\
+ add sp, 0x8\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093F3C: .4byte gUnknown_083B5EEC\n\
_08093F40: .4byte 0x02000000\n\
_08093F44: .4byte 0x06004800\n\
.syntax divided\n");
}
-static void sub_8093F48(void) {
- CpuFastSet(gUnknown_08E8CFC0, (void *) (VRAM + 0x4800), 320);
+static void sub_8093F48(void)
+{
+ CpuFastSet(gUnknown_08E8CFC0, (void *)(VRAM + 0x4800), 320);
}
-static void sub_8093F64(void) {
- CpuFastSet(gUnknown_08E8D9C0, (void *) (VRAM + 0x5000), 320);
+static void sub_8093F64(void)
+{
+ CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320);
}
__attribute__((naked))
-static void sub_8093F80(void) {
+static void sub_8093F80(void)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- movs r5, 0xC4\n\
- ldr r7, _08093FCC @ =0x06004000\n\
- movs r1, 0x5\n\
- movs r0, 0xA0\n\
- lsls r0, 7\n\
- adds r6, r0, 0\n\
+ push {r4-r7,lr}\n\
+ movs r5, 0xC4\n\
+ ldr r7, _08093FCC @ =0x06004000\n\
+ movs r1, 0x5\n\
+ movs r0, 0xA0\n\
+ lsls r0, 7\n\
+ adds r6, r0, 0\n\
_08093F8E:\n\
- movs r0, 0x13\n\
- lsls r3, r1, 16\n\
- asrs r4, r3, 11\n\
+ movs r0, 0x13\n\
+ lsls r3, r1, 16\n\
+ asrs r4, r3, 11\n\
_08093F94:\n\
- lsls r2, r0, 16\n\
- asrs r2, 16\n\
- adds r1, r4, r2\n\
- lsls r1, 1\n\
- adds r1, r7\n\
- adds r0, r5, 0\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- lsrs r0, r2, 16\n\
- asrs r2, 16\n\
- cmp r2, 0x1A\n\
- ble _08093F94\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r3, r1\n\
- lsrs r1, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xC\n\
- ble _08093F8E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r2, r0, 16\n\
+ asrs r2, 16\n\
+ adds r1, r4, r2\n\
+ lsls r1, 1\n\
+ adds r1, r7\n\
+ adds r0, r5, 0\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ lsrs r0, r2, 16\n\
+ asrs r2, 16\n\
+ cmp r2, 0x1A\n\
+ ble _08093F94\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r0, r3, r1\n\
+ lsrs r1, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0xC\n\
+ ble _08093F8E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093FCC: .4byte 0x06004000\n\
.syntax divided\n");
}
__attribute__((naked))
-static void sub_8093FD0(void) {
+static void sub_8093FD0(void)
+{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, _0809402C @ =0x06004000\n\
- movs r2, 0xF\n\
- ldr r0, _08094030 @ =0x02000000\n\
- ldrb r0, [r0, 0x2]\n\
- adds r0, 0xF\n\
- cmp r2, r0\n\
- bge _08094002\n\
- movs r6, 0xC0\n\
- lsls r6, 1\n\
- ldr r1, _08094034 @ =0x0000408f\n\
- adds r5, r1, 0\n\
- adds r3, r0, 0\n\
+ push {r4-r6,lr}\n\
+ ldr r4, _0809402C @ =0x06004000\n\
+ movs r2, 0xF\n\
+ ldr r0, _08094030 @ =0x02000000\n\
+ ldrb r0, [r0, 0x2]\n\
+ adds r0, 0xF\n\
+ cmp r2, r0\n\
+ bge _08094002\n\
+ movs r6, 0xC0\n\
+ lsls r6, 1\n\
+ ldr r1, _08094034 @ =0x0000408f\n\
+ adds r5, r1, 0\n\
+ adds r3, r0, 0\n\
_08093FEA:\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- adds r0, r6\n\
- strh r5, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r2, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, r3\n\
- blt _08093FEA\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ adds r0, r6\n\
+ strh r5, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r2, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, r3\n\
+ blt _08093FEA\n\
_08094002:\n\
- lsls r1, r2, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- bgt _08094024\n\
- movs r3, 0xC0\n\
- lsls r3, 1\n\
- movs r2, 0\n\
+ lsls r1, r2, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ bgt _08094024\n\
+ movs r3, 0xC0\n\
+ lsls r3, 1\n\
+ movs r2, 0\n\
_08094010:\n\
- asrs r0, r1, 16\n\
- lsls r1, r0, 1\n\
- adds r1, r4\n\
- adds r1, r3\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r1, r0, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- ble _08094010\n\
+ asrs r0, r1, 16\n\
+ lsls r1, r0, 1\n\
+ adds r1, r4\n\
+ adds r1, r3\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r1, r0, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ ble _08094010\n\
_08094024:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0809402C: .4byte 0x06004000\n\
_08094030: .4byte 0x02000000\n\
_08094034: .4byte 0x0000408f\n\
@@ -1629,87 +1728,88 @@ _08094034: .4byte 0x0000408f\n\
}
__attribute__((naked))
-static void sub_8094038(void) {
+static void sub_8094038(void)
+{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, _080940D0 @ =0x02000000\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080940C2\n\
- ldr r0, _080940D4 @ =0x06004000\n\
- mov r9, r0\n\
- movs r0, 0\n\
- movs r2, 0x4\n\
- adds r1, 0xE\n\
- mov r8, r1\n\
- ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
- movs r1, 0xC0\n\
- lsls r1, 6\n\
- adds r6, r1, 0\n\
- adds r1, r7, 0x6\n\
- mov r12, r1\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r1, _080940D0 @ =0x02000000\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _080940C2\n\
+ ldr r0, _080940D4 @ =0x06004000\n\
+ mov r9, r0\n\
+ movs r0, 0\n\
+ movs r2, 0x4\n\
+ adds r1, 0xE\n\
+ mov r8, r1\n\
+ ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
+ movs r1, 0xC0\n\
+ lsls r1, 6\n\
+ adds r6, r1, 0\n\
+ adds r1, r7, 0x6\n\
+ mov r12, r1\n\
_08094060:\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- mov r1, r8\n\
- adds r0, r4, r1\n\
- ldrb r0, [r0]\n\
- lsls r5, r2, 16\n\
- cmp r0, 0\n\
- beq _080940AE\n\
- asrs r1, r5, 15\n\
- add r1, r9\n\
- movs r2, 0xF0\n\
- lsls r2, 2\n\
- adds r3, r1, r2\n\
- lsls r2, r4, 3\n\
- adds r0, r2, r7\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940DC @ =0x000003c2\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x2\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x4\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940E0 @ =0x00000402\n\
- adds r1, r0\n\
- add r2, r12\n\
- ldrh r0, [r2]\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
+ lsls r0, 16\n\
+ asrs r4, r0, 16\n\
+ mov r1, r8\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r5, r2, 16\n\
+ cmp r0, 0\n\
+ beq _080940AE\n\
+ asrs r1, r5, 15\n\
+ add r1, r9\n\
+ movs r2, 0xF0\n\
+ lsls r2, 2\n\
+ adds r3, r1, r2\n\
+ lsls r2, r4, 3\n\
+ adds r0, r2, r7\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940DC @ =0x000003c2\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x2\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x4\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940E0 @ =0x00000402\n\
+ adds r1, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r2]\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
_080940AE:\n\
- adds r1, r4, 0x1\n\
- lsls r1, 16\n\
- movs r2, 0xC0\n\
- lsls r2, 10\n\
- adds r0, r5, r2\n\
- lsrs r2, r0, 16\n\
- lsrs r0, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x7\n\
- ble _08094060\n\
+ adds r1, r4, 0x1\n\
+ lsls r1, 16\n\
+ movs r2, 0xC0\n\
+ lsls r2, 10\n\
+ adds r0, r5, r2\n\
+ lsrs r2, r0, 16\n\
+ lsrs r0, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x7\n\
+ ble _08094060\n\
_080940C2:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080940D0: .4byte 0x02000000\n\
_080940D4: .4byte 0x06004000\n\
_080940D8: .4byte gUnknown_083B5F8C\n\
@@ -1719,66 +1819,69 @@ _080940E0: .4byte 0x00000402\n\
}
__attribute__((naked))
-static void sub_80940E4() {
+static void sub_80940E4()
+{
asm(".syntax unified\n\
- push {r4,lr}\n\
- movs r2, 0\n\
- ldr r1, _08094108 @ =0x06004000\n\
- movs r4, 0\n\
- ldr r3, _0809410C @ =0x000003ff\n\
+ push {r4,lr}\n\
+ movs r2, 0\n\
+ ldr r1, _08094108 @ =0x06004000\n\
+ movs r4, 0\n\
+ ldr r3, _0809410C @ =0x000003ff\n\
_080940EE:\n\
- strh r4, [r1]\n\
- lsls r0, r2, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- adds r1, 0x2\n\
- lsrs r2, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _080940EE\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strh r4, [r1]\n\
+ lsls r0, r2, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ adds r1, 0x2\n\
+ lsrs r2, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r3\n\
+ ble _080940EE\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08094108: .4byte 0x06004000\n\
_0809410C: .4byte 0x000003ff\n\
.syntax divided\n");
}
__attribute__((naked))
-static void sub_8094110() {
+static void sub_8094110()
+{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _0809413C @ =0x06004800\n\
- movs r2, 0x3\n\
- movs r5, 0xA0\n\
- lsls r5, 2\n\
- movs r3, 0x1\n\
- movs r4, 0xB0\n\
- lsls r4, 2\n\
+ push {r4-r6,lr}\n\
+ ldr r6, _0809413C @ =0x06004800\n\
+ movs r2, 0x3\n\
+ movs r5, 0xA0\n\
+ lsls r5, 2\n\
+ movs r3, 0x1\n\
+ movs r4, 0xB0\n\
+ lsls r4, 2\n\
_08094120:\n\
- lsls r0, r2, 1\n\
- adds r0, r6\n\
- adds r1, r0, r5\n\
- strh r3, [r1]\n\
- adds r0, r4\n\
- strh r3, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x10\n\
- bls _08094120\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r6\n\
+ adds r1, r0, r5\n\
+ strh r3, [r1]\n\
+ adds r0, r4\n\
+ strh r3, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x10\n\
+ bls _08094120\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0809413C: .4byte 0x06004800\n\
.syntax divided\n");
}
-static void sub_8094140(void) {
+static void sub_8094140(void)
+{
u8 *buffer;
BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
@@ -1794,7 +1897,8 @@ static void sub_8094140(void) {
sub_809429C();
}
-static void sub_8094188(void) {
+static void sub_8094188(void)
+{
BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
TrainerCard_Back_PrintName();
TrainerCard_Back_PrintHallOfFameTime_Label();
@@ -1813,21 +1917,25 @@ static void sub_8094188(void) {
TrainerCard_Back_PrintPokemonTrades();
}
-static void TrainerCard_Front_PrintTrainerID(void) {
+static void TrainerCard_Front_PrintTrainerID(void)
+{
u8 buffer[8];
ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
MenuPrint(buffer, 20, 2);
}
-static void TrainerCard_Front_PrintMoney(void) {
+static void TrainerCard_Front_PrintMoney(void)
+{
sub_80B7AEC(unk_2000000.var_64.money, 16, 8);
}
-static void TrainerCard_Front_PrintPokedexCount(void) {
+static void TrainerCard_Front_PrintPokedexCount(void)
+{
u8 buffer[16];
- if (unk_2000000.var_7 == FALSE) {
+ if (unk_2000000.var_7 == FALSE)
+ {
sub_8094110();
return;
}
@@ -1836,7 +1944,8 @@ static void TrainerCard_Front_PrintPokedexCount(void) {
MenuPrint_RightAligned(buffer, 16, 10);
}
-static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) {
+static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
+{
u8 buffer[16];
u16 playTimeHours;
u16 playTimeMinutes;
@@ -1844,7 +1953,8 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) {
playTimeHours = gSaveBlock2.playTimeHours;
playTimeMinutes = gSaveBlock2.playTimeMinutes;
- if (unk_2000000.var_1 != 0) {
+ if (unk_2000000.var_1 != 0)
+ {
playTimeHours = unk_2000000.var_64.playTimeHours;
playTimeMinutes = unk_2000000.var_64.playTimeMinutes;
}
@@ -1853,80 +1963,88 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) {
sub_8072C74(arg1, buffer, 48, 1);
}
-static void sub_809429C(void) {
- u8 *bufferPtr;
+static void sub_809429C(void)
+{
+ u8 *str;
- if (unk_2000000.var_1 == FALSE) {
+ if (unk_2000000.var_1 == FALSE)
+ {
return;
}
- bufferPtr = gStringVar1;
- bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[0]);
- bufferPtr[0] = 00;
- bufferPtr++;
- bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[1]);
+ str = gStringVar1;
+ str = StringCopy(str, unk_2000000.var_20[0]);
+ str[0] = 00;
+ str++;
+ str = StringCopy(str, unk_2000000.var_20[1]);
MenuPrint(gStringVar1, 2, 14);
- bufferPtr = gStringVar1;
- bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[2]);
- bufferPtr[0] = 00;
- bufferPtr++;
- bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[3]);
+ str = gStringVar1;
+ str = StringCopy(str, unk_2000000.var_20[2]);
+ str[0] = 00;
+ str++;
+ str = StringCopy(str, unk_2000000.var_20[3]);
MenuPrint(gStringVar1, 2, 16);
}
-static void TrainerCard_Back_PrintName(void) {
- u8 *bufferPtr;
+static void TrainerCard_Back_PrintName(void)
+{
+ u8 *str;
- bufferPtr = gStringVar1;
- StringCopy(bufferPtr, unk_2000000.var_64.playerName);
- ConvertInternationalString(bufferPtr, unk_2000000.language);
+ str = gStringVar1;
+ StringCopy(str, unk_2000000.var_64.playerName);
+ ConvertInternationalString(str, unk_2000000.language);
- StringAppend(bufferPtr, gOtherText_TrainersTrainerCard);
+ StringAppend(str, gOtherText_TrainersTrainerCard);
MenuPrint_RightAligned(gStringVar1, 28, 2);
}
-static void TrainerCard_Back_PrintHallOfFameTime_Label(void) {
- if (unk_2000000.var_8 == FALSE) {
+static void TrainerCard_Back_PrintHallOfFameTime_Label(void)
+{
+ if (unk_2000000.var_8 == FALSE)
+ {
return;
}
MenuPrint(gOtherText_FirstHOF, 3, 5);
}
-static void TrainerCard_Back_PrintHallOfFameTime(void) {
- u8 *bufferPtr;
+static void TrainerCard_Back_PrintHallOfFameTime(void)
+{
+ u8 *str;
- if (unk_2000000.var_8 == FALSE) {
+ if (unk_2000000.var_8 == FALSE)
+ {
return;
}
- bufferPtr = gStringVar1;
- bufferPtr = ConvertIntToDecimalStringN(bufferPtr, unk_2000000.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN,
- 3);
- bufferPtr = StringCopy(bufferPtr, gUnknown_083B5EF4);
- bufferPtr = ConvertIntToDecimalStringN(bufferPtr, unk_2000000.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS,
- 2);
- bufferPtr = StringCopy(bufferPtr, gUnknown_083B5EF4);
- bufferPtr = ConvertIntToDecimalStringN(bufferPtr, unk_2000000.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS,
- 2);
+ str = gStringVar1;
+ str = ConvertIntToDecimalStringN(str, unk_2000000.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = StringCopy(str, gUnknown_083B5EF4);
+ str = ConvertIntToDecimalStringN(str, unk_2000000.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = StringCopy(str, gUnknown_083B5EF4);
+ str = ConvertIntToDecimalStringN(str, unk_2000000.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
MenuPrint_RightAligned(gStringVar1, 28, 5);
}
-static void TrainerCard_Back_PrintLinkBattlesLabel(void) {
- if (unk_2000000.var_9 == FALSE) {
+static void TrainerCard_Back_PrintLinkBattlesLabel(void)
+{
+ if (unk_2000000.var_9 == FALSE)
+ {
return;
}
MenuPrint(gOtherText_LinkCableBattles, 3, 7);
}
-static void TrainerCard_Back_PrintLinkBattles(void) {
+static void TrainerCard_Back_PrintLinkBattles(void)
+{
u8 buffer[16];
- if (unk_2000000.var_9 == FALSE) {
+ if (unk_2000000.var_9 == FALSE)
+ {
return;
}
@@ -1937,18 +2055,22 @@ static void TrainerCard_Back_PrintLinkBattles(void) {
MenuPrint_RightAligned(buffer, 28, 7);
}
-static void TrainerCard_Back_PrintBattleTower_Label(void) {
- if (unk_2000000.var_a == FALSE) {
+static void TrainerCard_Back_PrintBattleTower_Label(void)
+{
+ if (unk_2000000.var_a == FALSE)
+ {
return;
}
MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15);
}
-static void TrainerCard_Back_PrintBattleTower(void) {
+static void TrainerCard_Back_PrintBattleTower(void)
+{
u8 buffer[16];
- if (unk_2000000.var_a == FALSE) {
+ if (unk_2000000.var_a == FALSE)
+ {
return;
}
@@ -1959,18 +2081,22 @@ static void TrainerCard_Back_PrintBattleTower(void) {
MenuPrint_PixelCoords(buffer, 149, 120, 0);
}
-static void TrainerCard_Back_PrintLinkContests_Label(void) {
- if (unk_2000000.var_b == FALSE) {
+static void TrainerCard_Back_PrintLinkContests_Label(void)
+{
+ if (unk_2000000.var_b == FALSE)
+ {
return;
}
MenuPrint(gOtherText_ContestRecord, 3, 13);
}
-static void TrainerCard_Back_PrintLinkContests(void) {
+static void TrainerCard_Back_PrintLinkContests(void)
+{
u8 buffer[8];
- if (unk_2000000.var_b == FALSE) {
+ if (unk_2000000.var_b == FALSE)
+ {
return;
}
@@ -1978,18 +2104,22 @@ static void TrainerCard_Back_PrintLinkContests(void) {
MenuPrint_RightAligned(buffer, 28, 13);
}
-static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) {
- if (unk_2000000.var_c == FALSE) {
+static void TrainerCard_Back_PrintLinkPokeblocks_Label(void)
+{
+ if (unk_2000000.var_c == FALSE)
+ {
return;
}
MenuPrint(gOtherText_MixingRecord, 3, 11);
}
-static void TrainerCard_Back_PrintLinkPokeblocks(void) {
+static void TrainerCard_Back_PrintLinkPokeblocks(void)
+{
u8 buffer[8];
- if (unk_2000000.var_c == FALSE) {
+ if (unk_2000000.var_c == FALSE)
+ {
return;
}
@@ -1997,18 +2127,22 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void) {
MenuPrint_RightAligned(buffer, 28, 11);
}
-static void TrainerCard_Back_PrintPokemonTrades_Label(void) {
- if (unk_2000000.var_d == FALSE) {
+static void TrainerCard_Back_PrintPokemonTrades_Label(void)
+{
+ if (unk_2000000.var_d == FALSE)
+ {
return;
}
MenuPrint(gOtherText_TradeRecord, 3, 9);
}
-static void TrainerCard_Back_PrintPokemonTrades(void) {
+static void TrainerCard_Back_PrintPokemonTrades(void)
+{
u8 buffer[8];
- if (unk_2000000.var_d == FALSE) {
+ if (unk_2000000.var_d == FALSE)
+ {
return;
}
@@ -2016,12 +2150,14 @@ static void TrainerCard_Back_PrintPokemonTrades(void) {
MenuPrint_RightAligned(buffer, 28, 9);
}
-void unref_sub_8094588(u16 left, u16 top) {
+void unref_sub_8094588(u16 left, u16 top)
+{
u8 *text = gOtherText_Boy;
- if (gSaveBlock2.playerGender == FEMALE) {
+ if (gSaveBlock2.playerGender == FEMALE)
+ {
text = gOtherText_Girl;
}
- MenuPrint(text, (u8) left, (u8) top);
+ MenuPrint(text, (u8)left, (u8)top);
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index c6cdc5658..56085f9be 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -1,14 +1,14 @@
#include "global.h"
-#include "trainer_see.h"
#include "asm.h"
-#include "battle_setup.h"
-#include "field_player_avatar.h"
-#include "field_map_obj.h"
#include "asm_fieldmap.h"
-#include "task.h"
-#include "sprite.h"
+#include "battle_setup.h"
#include "field_effect.h"
+#include "field_map_obj.h"
+#include "field_player_avatar.h"
#include "script.h"
+#include "sprite.h"
+#include "task.h"
+#include "trainer_see.h"
extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16);
extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *);
@@ -23,7 +23,7 @@ bool8 CheckTrainers(void)
{
u8 i;
- for(i = 0; i < 16; i++)
+ for (i = 0; i < 16; i++)
{
if ( gMapObjects[i].active )
if ( gMapObjects[i].trainerType == 1 || gMapObjects[i].trainerType == 3 )
@@ -37,14 +37,14 @@ bool8 CheckTrainer(u8 trainer)
{
u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(trainer);
- if(GetTrainerFlagFromScriptPointer(scriptPtr))
+ if (GetTrainerFlagFromScriptPointer(scriptPtr))
return FALSE;
else
{
struct MapObject *trainerObj = &gMapObjects[trainer];
u8 canApproach = TrainerCanApproachPlayer(trainerObj);
- if(canApproach != 0)
+ if (canApproach != 0)
{
TrainerWantsBattle(trainer, scriptPtr);
sub_80842C8(trainerObj, (canApproach - 1));
@@ -71,7 +71,7 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
}
else // spinners
{
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
{
playerCoord = gIsTrainerInRange[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
if ( CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, i + 1) ) // directions are 1-4 instead of 0-3. south north west east
@@ -233,7 +233,7 @@ s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
{
- if(task->data[3])
+ if (task->data[3])
{
FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
task->data[3]--;
@@ -282,7 +282,7 @@ s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // te
s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
- if(!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
|| FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
{
FieldObjectSetSpecialAnim(trainerObj, 0x59);
@@ -301,7 +301,7 @@ s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
- if(!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
|| FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
{
FieldObjectSetSpecialAnim(trainerObj, 0x3E);
@@ -312,7 +312,7 @@ s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
- if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
{
gUnknown_0202FF84[0] = trainerObj->coords2.x;
gUnknown_0202FF84[1] = trainerObj->coords2.y;
@@ -328,7 +328,7 @@ s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
struct Sprite *sprite;
- if(gSprites[task->data[4]].animCmdIndex == 2)
+ if (gSprites[task->data[4]].animCmdIndex == 2)
{
trainerObj->mapobj_bit_26 = 0;
trainerObj->mapobj_bit_2 = 1;
@@ -344,7 +344,7 @@ s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
- if(!FieldEffectActiveListContains(49))
+ if (!FieldEffectActiveListContains(49))
task->data[0] = 3;
return 0;
@@ -357,13 +357,13 @@ void sub_80846E4(u8 taskId)
// another mapObj loaded into by loadword?
LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj);
- if(!task->data[7])
+ if (!task->data[7])
{
FieldObjectClearAnim(mapObj);
task->data[7]++;
}
gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj);
- if(task->data[0] == 3 && !FieldEffectActiveListContains(49))
+ if (task->data[0] == 3 && !FieldEffectActiveListContains(49))
{
npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
@@ -395,7 +395,7 @@ u8 FldEff_ExclamationMarkIcon1(void)
if (spriteId != 64)
sub_8084894(&gSprites[spriteId], 0, 0);
-
+
return 0;
}
@@ -405,7 +405,7 @@ u8 FldEff_ExclamationMarkIcon2(void)
if (spriteId != 64)
sub_8084894(&gSprites[spriteId], 33, 1);
-
+
return 0;
}
@@ -415,7 +415,7 @@ u8 FldEff_HeartIcon(void)
if (spriteId != 64)
sub_8084894(&gSprites[spriteId], 46, 0);
-
+
return 0;
}
@@ -423,13 +423,13 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
{
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = 1;
-
+
sprite->data0 = gUnknown_0202FF84[0];
sprite->data1 = gUnknown_0202FF84[1];
sprite->data2 = gUnknown_0202FF84[2];
sprite->data3 = -5;
sprite->data7 = a2;
-
+
StartSpriteAnim(sprite, a3);
}
diff --git a/src/tv.c b/src/tv.c
index d2a54a539..dd523594d 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -3,12 +3,12 @@
#include "event_data.h"
#include "field_message_box.h"
#include "flags.h"
-#include "global.h"
#include "rng.h"
#include "string_util.h"
#include "text.h"
-enum {
+enum
+{
TVSHOW_FAN_CLUB_LETTER = 1,
TVSHOW_RECENT_HAPPENINGS = 2,
TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3,
@@ -16,15 +16,17 @@ enum {
TVSHOW_MASS_OUTBREAK = 41,
};
-struct UnkTvStruct {
+struct UnkTvStruct
+{
s8 var0;
};
-struct OutbreakPokemon {
- /* 0x00 */ u16 species;
- /* 0x02 */ u16 moves[4];
- /* 0x0A */ u8 level;
- /* 0x0B */ u8 location;
+struct OutbreakPokemon
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 moves[4];
+ /*0x0A*/ u8 level;
+ /*0x0B*/ u8 location;
};
extern u16 gSpecialVar_0x8004;
@@ -38,26 +40,30 @@ extern u8 gSpeciesNames[][11];
extern u8 *gTVPokemonOutbreakTextGroup[];
extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5];
-void sub_80BE478(void) {
+void sub_80BE478(void)
+{
u16 playerNameLength;
u16 pokemonNicknameLength;
TVShow *tvShow;
sub_80BF478();
- if (gScriptResult == 1) {
+ if (gScriptResult == 1)
+ {
return;
}
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
playerNameLength = StringLength(gSaveBlock2.playerName);
- if (playerNameLength <= 1) {
+ if (playerNameLength <= 1)
+ {
return;
}
pokemonNicknameLength = StringLength(gStringVar1);
- if (pokemonNicknameLength <= 1) {
+ if (pokemonNicknameLength <= 1)
+ {
return;
}
@@ -84,7 +90,8 @@ void sub_80BE478(void) {
StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName);
}
-void StartMassOutbreak(void) {
+void StartMassOutbreak(void)
+{
TVShow *tvShow;
tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
@@ -104,7 +111,8 @@ void StartMassOutbreak(void) {
gSaveBlock1.outbreakUnk5 = 2;
}
-void sub_80BE5FC(void) {
+void sub_80BE5FC(void)
+{
TVShow *tvShow;
u16 species;
@@ -120,7 +128,8 @@ void sub_80BE5FC(void) {
tvShow->fanclubLetter.var18 = GAME_LANGUAGE;
}
-void sub_80BE65C(void) {
+void sub_80BE65C(void)
+{
TVShow *tvShow;
tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
@@ -134,7 +143,8 @@ void sub_80BE65C(void) {
tvShow->recentHappenings.var18 = GAME_LANGUAGE;
}
-void sub_80BE6A0(void) {
+void sub_80BE6A0(void)
+{
TVShow *tvShow;
u8 monIndex;
@@ -160,30 +170,36 @@ void sub_80BE6A0(void) {
StripExtCtrlCodes(tvShow->fanclubOpinions.var10);
}
-void nullsub_21(void) {
-
+void nullsub_21(void)
+{
}
-void sub_80BE778(void) {
+void sub_80BE778(void)
+{
u8 i;
- if (!FlagGet(SYS_GAME_CLEAR)) {
+ if (!FlagGet(SYS_GAME_CLEAR))
+ {
return;
}
- for (i = 0; i < 24; i++) {
- if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) {
+ for (i = 0; i < 24; i++)
+ {
+ if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK)
+ {
return;
}
}
- if (sub_80BF77C(0x147)) {
+ if (sub_80BF77C(0x147))
+ {
return;
}
gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 == -1) {
+ if (gUnknown_03005D38.var0 == -1)
+ {
return;
}
{
@@ -223,7 +239,8 @@ void sub_80BE778(void) {
}
}
-void EndMassOutbreak(void) {
+void EndMassOutbreak(void)
+{
gSaveBlock1.outbreakPokemonSpecies = 0;
gSaveBlock1.outbreakLocationMapNum = 0;
gSaveBlock1.outbreakLocationMapGroup = 0;
@@ -239,7 +256,8 @@ void EndMassOutbreak(void) {
gSaveBlock1.outbreakUnk5 = 0;
}
-void sub_80BE8C4(u16 arg0) {
+void sub_80BE8C4(u16 arg0)
+{
sub_80BE8EC(arg0);
UpdateMassOutbreakTimeLeft(arg0);
sub_80BEE84(arg0);
@@ -248,14 +266,16 @@ void sub_80BE8C4(u16 arg0) {
asm(".section .text_b");
-u8 sub_80BF4F4(u8 arg0) {
+u8 sub_80BF4F4(u8 arg0)
+{
u32 species;
GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1);
species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL);
- if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE) {
+ if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE)
+ {
return FALSE;
}
@@ -264,7 +284,8 @@ u8 sub_80BF4F4(u8 arg0) {
asm(".section .text_c");
-void DoTVShowPokemonNewsMassOutbreak(void) {
+void DoTVShowPokemonNewsMassOutbreak(void)
+{
TVShow *tvShow;
tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
@@ -281,13 +302,15 @@ void DoTVShowPokemonNewsMassOutbreak(void) {
asm(".section .text_d");
-void TVShowDone(void) {
+void TVShowDone(void)
+{
gScriptResult = 1;
gUnknown_020387E8 = 0;
gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0;
}
-void sub_80C2014(void) {
+void sub_80C2014(void)
+{
gUnknown_020387E8 = 0;
}
diff --git a/src/unknown_debug_menu.c b/src/unknown_debug_menu.c
new file mode 100644
index 000000000..bbaeef63a
--- /dev/null
+++ b/src/unknown_debug_menu.c
@@ -0,0 +1,52 @@
+#include "global.h"
+#include "menu.h"
+
+extern u8 gUnknown_02024D1E[];
+
+extern u8 (*gCallback_03004AE8)(void);
+
+extern const struct MenuAction gUnknown_0842C29C[];
+
+u8 sub_814A464(void);
+
+int unref_sub_814A414(void)
+{
+ MenuZeroFillScreen();
+ MenuDrawTextWindow(0, 0, 16, 18);
+ PrintMenuItems(2, 1, 8, gUnknown_0842C29C);
+ InitMenu(0, 1, 1, 8, 0, 15);
+ gCallback_03004AE8 = sub_814A464;
+ return 0;
+}
+
+u8 sub_814A464(void)
+{
+ s8 result = ProcessMenuInput();
+ if (result == -2)
+ {
+ return 0;
+ }
+ else if (result == -1)
+ {
+ CloseMenu();
+ return 1;
+ }
+ else
+ {
+ gUnknown_02024D1E[0] = result;
+ gCallback_03004AE8 = gUnknown_0842C29C[result].func;
+ return 0;
+ }
+}
+
+u8 sub_814A4B8(void)
+{
+ gSaveBlock2.filler_A8.var_4AE = 3;
+ gSaveBlock2.filler_A8.var_4AF = 3;
+ gSaveBlock2.filler_A8.var_4B4 = gUnknown_02024D1E[0] + 1;
+ gSaveBlock2.filler_A8.var_4B6 = gUnknown_02024D1E[0] + 1;
+ gSaveBlock2.filler_A8.var_4B0 = 1;
+ gSaveBlock2.filler_A8.var_4B2 = 1;
+ CloseMenu();
+ return 1;
+}
diff --git a/src/wallclock.c b/src/wallclock.c
index 147a68d31..2f4d694a6 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -7,26 +7,147 @@
#include "palette.h"
#include "rtc.h"
#include "songs.h"
+#include "sound.h"
#include "task.h"
#include "trig.h"
-#include "sound.h"
extern u16 gSpecialVar_0x8004;
-extern u16 gMiscClockMale_Pal[];
-extern u16 gMiscClockFemale_Pal[];
extern u8 gMiscClock_Gfx[];
-extern struct SpriteSheet gUnknown_083F7A90;
-extern struct SpritePalette gUnknown_083F7AA0;
extern u8 gUnknown_08E95774[];
extern u8 gUnknown_08E954B0[];
extern u8 gOtherText_CorrectTimePrompt[];
extern const struct MenuAction gMenuYesNoItems[];
-extern s8 gClockHandCoords[][2];
+extern u16 gMiscClockMale_Pal[];
+extern u16 gMiscClockFemale_Pal[];
-extern struct SpriteTemplate gSpriteTemplate_83F7AD8;
-extern struct SpriteTemplate gSpriteTemplate_83F7AF0;
-extern struct SpriteTemplate gSpriteTemplate_83F7B28;
-extern struct SpriteTemplate gSpriteTemplate_83F7B40;
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+static const u8 ClockGfx_Misc[] = INCBIN_U8("graphics/misc/clock_misc.4bpp.lz");
+static const struct SpriteSheet gUnknown_083F7A90[] =
+{
+ {ClockGfx_Misc, 0x2000, 0x1000},
+ {NULL},
+};
+static const struct SpritePalette gUnknown_083F7AA0[] =
+{
+ {gMiscClockMale_Pal, 0x1000},
+ {gMiscClockFemale_Pal, 0x1001},
+ {NULL},
+};
+static const struct OamData gOamData_83F7AB8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_83F7AC0[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F7AC8[] =
+{
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7AD0[] =
+{
+ gSpriteAnim_83F7AC0,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7AD4[] =
+{
+ gSpriteAnim_83F7AC8,
+};
+static void sub_810B05C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7AD8 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7AB8,
+ .anims = gSpriteAnimTable_83F7AD0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B05C,
+};
+static void sub_810B0F4(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7AF0 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7AB8,
+ .anims = gSpriteAnimTable_83F7AD4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B0F4,
+};
+static const struct OamData gOamData_83F7B08 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_83F7B10[] =
+{
+ ANIMCMD_FRAME(132, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F7B18[] =
+{
+ ANIMCMD_FRAME(128, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7B20[] =
+{
+ gSpriteAnim_83F7B10,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7B24[] =
+{
+ gSpriteAnim_83F7B18,
+};
+static void sub_810B18C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7B28 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7B08,
+ .anims = gSpriteAnimTable_83F7B20,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B18C,
+};
+static void sub_810B230(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7B40 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7B08,
+ .anims = gSpriteAnimTable_83F7B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B230,
+};
static void WallClockVblankCallback(void);
static void LoadWallClockGraphics(void);
@@ -48,25 +169,17 @@ static u8 AdvanceClock(u8 taskId, u8 direction);
static void UpdateClockPeriod(u8 taskId, u8 direction);
static void InitClockWithRtc(u8 taskId);
-//Task data
-enum {
- TD_MHAND_ANGLE,
- TD_HHAND_ANGLE,
- TD_HOURS,
- TD_MINUTES,
- TD_SETDIRECTION, //Movement direction when setting the clock
- TD_PERIOD, //Whether the time is AM or PM
- TD_SETSPEED, //Movement speed when setting the clock
-};
-
-enum {
- AM,
- PM
+enum
+{
+ PERIOD_AM,
+ PERIOD_PM,
};
-enum {
- BACKWARD = 1,
- FORWARD
+enum
+{
+ MVMT_NONE,
+ MVMT_BACKWARD,
+ MVMT_FORWARD,
};
static void WallClockVblankCallback(void)
@@ -80,7 +193,7 @@ static void LoadWallClockGraphics(void)
{
u8 *addr;
u32 size;
-
+
SetVBlankCallback(0);
REG_DISPCNT = 0;
REG_BG3CNT = 0;
@@ -95,15 +208,15 @@ static void LoadWallClockGraphics(void)
REG_BG1VOFS = 0;
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
-
+
addr = (void *)VRAM;
size = 0x18000;
- while(1)
+ while (1)
{
DmaFill16(3, 0, addr, 0x1000);
addr += 0x1000;
size -= 0x1000;
- if(size <= 0x1000)
+ if (size <= 0x1000)
{
DmaFill16(3, 0, addr, size);
break;
@@ -111,9 +224,9 @@ static void LoadWallClockGraphics(void)
}
DmaClear32(3, OAM, OAM_SIZE);
DmaClear16(3, PLTT, PLTT_SIZE);
-
+
LZ77UnCompVram(gMiscClock_Gfx, (void *)VRAM);
- if(gSpecialVar_0x8004 == MALE)
+ if (gSpecialVar_0x8004 == MALE)
LoadPalette(gMiscClockMale_Pal, 0, 32);
else
LoadPalette(gMiscClockFemale_Pal, 0, 32);
@@ -122,8 +235,8 @@ static void LoadWallClockGraphics(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadCompressedObjectPic(&gUnknown_083F7A90);
- LoadSpritePalettes(&gUnknown_083F7AA0);
+ LoadCompressedObjectPic(&gUnknown_083F7A90[0]);
+ LoadSpritePalettes(gUnknown_083F7AA0);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
}
@@ -131,7 +244,7 @@ static void LoadWallClockGraphics(void)
static void WallClockInit(void)
{
u16 ime;
-
+
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
ime = REG_IME;
REG_IME = 0;
@@ -149,42 +262,50 @@ static void WallClockInit(void)
DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
}
+#define tMinuteHandAngle data[0]
+#define tHourHandAngle data[1]
+#define tHours data[2]
+#define tMinutes data[3]
+#define tMvmtDir data[4]
+#define tPeriod data[5]
+#define tMvmtSpeed data[6]
+
//Allow player to set the clock
void CB2_StartWallClock(void)
{
u8 taskId;
u8 spriteId;
-
+
LoadWallClockGraphics();
LZ77UnCompVram(&gUnknown_08E954B0, (void *)(VRAM + 0x3800));
-
+
taskId = CreateTask(Task_SetClock1, 0);
- gTasks[taskId].data[TD_HOURS] = 10;
- gTasks[taskId].data[TD_MINUTES] = 0;
- gTasks[taskId].data[TD_SETDIRECTION] = 0;
- gTasks[taskId].data[TD_PERIOD] = AM;
- gTasks[taskId].data[TD_SETSPEED] = 0;
- gTasks[taskId].data[TD_MHAND_ANGLE] = 0;
- gTasks[taskId].data[TD_HHAND_ANGLE] = 300;
-
- spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, 0x78, 0x50, 1);
+ gTasks[taskId].tHours = 10;
+ gTasks[taskId].tMinutes = 0;
+ gTasks[taskId].tMvmtDir = MVMT_NONE;
+ gTasks[taskId].tPeriod = PERIOD_AM;
+ gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMinuteHandAngle = 0;
+ gTasks[taskId].tHourHandAngle = 300;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 1);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
-
- spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, 0x78, 0x50, 0);
+
+ spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 0);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
-
- spriteId = CreateSprite(&gSpriteTemplate_83F7B28, 0x78, 0x50, 2);
+
+ spriteId = CreateSprite(&gSpriteTemplate_83F7B28, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = 45;
-
- spriteId = CreateSprite(&gSpriteTemplate_83F7B40, 0x78, 0x50, 2);
+
+ spriteId = CreateSprite(&gSpriteTemplate_83F7B40, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = 90;
-
+
WallClockInit();
}
@@ -195,13 +316,13 @@ void CB2_ViewWallClock(void)
s16 angle1;
s16 angle2;
u8 spriteId;
-
+
LoadWallClockGraphics();
LZ77UnCompVram(gUnknown_08E95774, (void *)(VRAM + 0x3800));
-
+
taskId = CreateTask(Task_ViewClock1, 0);
InitClockWithRtc(taskId);
- if(gTasks[taskId].data[TD_PERIOD] == 0)
+ if (gTasks[taskId].tPeriod == PERIOD_AM)
{
angle1 = 45;
angle2 = 90;
@@ -211,25 +332,25 @@ void CB2_ViewWallClock(void)
angle1 = 90;
angle2 = 135;
}
-
+
spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, 120, 80, 1);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, 120, 80, 0);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83F7B28, 120, 80, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = angle1;
-
+
spriteId = CreateSprite(&gSpriteTemplate_83F7B40, 120, 80, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = angle2;
-
+
WallClockInit();
}
@@ -243,49 +364,49 @@ static void WallClockMainCallback(void)
static void Task_SetClock1(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
gTasks[taskId].func = Task_SetClock2;
}
//Handle keypresses when setting clock
static void Task_SetClock2(u8 taskId)
{
- if(gTasks[taskId].data[TD_MHAND_ANGLE] % 6)
+ if (gTasks[taskId].tMinuteHandAngle % 6)
{
- gTasks[taskId].data[TD_MHAND_ANGLE] = CalcNewMinHandAngle(
- gTasks[taskId].data[TD_MHAND_ANGLE],
- gTasks[taskId].data[TD_SETDIRECTION],
- gTasks[taskId].data[TD_SETSPEED]);
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(
+ gTasks[taskId].tMinuteHandAngle,
+ gTasks[taskId].tMvmtDir,
+ gTasks[taskId].tMvmtSpeed);
}
else
{
- gTasks[taskId].data[TD_MHAND_ANGLE] = gTasks[taskId].data[TD_MINUTES] * 6;
- gTasks[taskId].data[TD_HHAND_ANGLE] = (gTasks[taskId].data[TD_HOURS] % 12) * 30 + (gTasks[taskId].data[TD_MINUTES] / 10) * 5;
- if(gMain.newKeys & A_BUTTON)
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+ if (gMain.newKeys & A_BUTTON)
{
gTasks[taskId].func = Task_SetClock3;
return;
}
else
{
- gTasks[taskId].data[TD_SETDIRECTION] = gMain.newKeys & A_BUTTON;
- if(gMain.heldKeys & DPAD_LEFT)
- gTasks[taskId].data[TD_SETDIRECTION] = BACKWARD;
- if(gMain.heldKeys & DPAD_RIGHT)
- gTasks[taskId].data[TD_SETDIRECTION] = FORWARD;
- if(gTasks[taskId].data[TD_SETDIRECTION])
+ gTasks[taskId].tMvmtDir = gMain.newKeys & A_BUTTON;
+ if (gMain.heldKeys & DPAD_LEFT)
+ gTasks[taskId].tMvmtDir = MVMT_BACKWARD;
+ if (gMain.heldKeys & DPAD_RIGHT)
+ gTasks[taskId].tMvmtDir = MVMT_FORWARD;
+ if (gTasks[taskId].tMvmtDir)
{
- if(gTasks[taskId].data[TD_SETSPEED] <= 0xFE)
- gTasks[taskId].data[TD_SETSPEED]++;
- gTasks[taskId].data[TD_MHAND_ANGLE] = CalcNewMinHandAngle(
- gTasks[taskId].data[TD_MHAND_ANGLE],
- gTasks[taskId].data[TD_SETDIRECTION],
- gTasks[taskId].data[TD_SETSPEED]);
- AdvanceClock(taskId, gTasks[taskId].data[TD_SETDIRECTION]);
+ if (gTasks[taskId].tMvmtSpeed < 0xFF)
+ gTasks[taskId].tMvmtSpeed++;
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(
+ gTasks[taskId].tMinuteHandAngle,
+ gTasks[taskId].tMvmtDir,
+ gTasks[taskId].tMvmtSpeed);
+ AdvanceClock(taskId, gTasks[taskId].tMvmtDir);
}
else
{
- gTasks[taskId].data[TD_SETSPEED] = 0;
+ gTasks[taskId].tMvmtSpeed = 0;
}
}
}
@@ -305,7 +426,7 @@ static void Task_SetClock3(u8 taskId)
//Get menu selection
static void Task_SetClock4(u8 taskId)
{
- switch(ProcessMenuInputNoWrap_())
+ switch (ProcessMenuInputNoWrap_())
{
case 0: //YES
PlaySE(SE_SELECT);
@@ -324,20 +445,20 @@ static void Task_SetClock4(u8 taskId)
//Set the time offset based on the wall clock's time
static void Task_SetClock5(u8 taskId)
{
- RtcInitLocalTimeOffset(gTasks[taskId].data[TD_HOURS], gTasks[taskId].data[TD_MINUTES]);
+ RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gTasks[taskId].func = Task_SetClock6;
}
static void Task_SetClock6(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
SetMainCallback2((MainCallback)gMain.savedCallback);
}
static void Task_ViewClock1(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
gTasks[taskId].func = Task_ViewClock2;
}
@@ -345,7 +466,7 @@ static void Task_ViewClock1(u8 taskId)
static void Task_ViewClock2(u8 taskId)
{
InitClockWithRtc(taskId);
- if(gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
gTasks[taskId].func = Task_ViewClock3;
}
@@ -357,37 +478,37 @@ static void Task_ViewClock3(u8 taskId)
static void Task_ViewClock4(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
SetMainCallback2((MainCallback)gMain.savedCallback);
}
static u8 CalcMinHandDelta(u16 speed)
{
- if(speed > 60)
+ if (speed > 60)
return 6;
- else if(speed > 30)
+ else if (speed > 30)
return 3;
- else if(speed > 10)
+ else if (speed > 10)
return 2;
else
return 1;
}
-//Calculates the new position of the minute hand when setting the clock
+//Calculates the new angle of the minute hand when setting the clock
static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
{
u8 delta = CalcMinHandDelta(speed);
-
- switch(direction)
+
+ switch (direction)
{
- case BACKWARD:
- if(angle)
+ case MVMT_BACKWARD:
+ if (angle)
angle = angle - delta;
else
angle = 360 - delta;
break;
- case FORWARD:
- if(angle < 360 - delta)
+ case MVMT_FORWARD:
+ if (angle < 360 - delta)
angle = angle + delta;
else
angle = 0;
@@ -399,31 +520,31 @@ static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
//Advances clock forward or backward by 1 minute
static u8 AdvanceClock(u8 taskId, u8 direction)
{
- switch(direction)
+ switch (direction)
{
- case BACKWARD:
- if(gTasks[taskId].data[TD_MINUTES] > 0)
- gTasks[taskId].data[TD_MINUTES]--;
+ case MVMT_BACKWARD:
+ if (gTasks[taskId].tMinutes > 0)
+ gTasks[taskId].tMinutes--;
else
{
- gTasks[taskId].data[TD_MINUTES] = 59;
- if(gTasks[taskId].data[TD_HOURS] > 0)
- gTasks[taskId].data[TD_HOURS]--;
+ gTasks[taskId].tMinutes = 59;
+ if (gTasks[taskId].tHours > 0)
+ gTasks[taskId].tHours--;
else
- gTasks[taskId].data[TD_HOURS] = 23;
+ gTasks[taskId].tHours = 23;
UpdateClockPeriod(taskId, direction);
}
break;
- case FORWARD:
- if(gTasks[taskId].data[TD_MINUTES] <= 58)
- gTasks[taskId].data[TD_MINUTES]++;
+ case MVMT_FORWARD:
+ if (gTasks[taskId].tMinutes < 59)
+ gTasks[taskId].tMinutes++;
else
{
- gTasks[taskId].data[TD_MINUTES] = 0;
- if(gTasks[taskId].data[TD_HOURS] <= 22)
- gTasks[taskId].data[TD_HOURS]++;
+ gTasks[taskId].tMinutes = 0;
+ if (gTasks[taskId].tHours < 23)
+ gTasks[taskId].tHours++;
else
- gTasks[taskId].data[TD_HOURS] = 0;
+ gTasks[taskId].tHours = 0;
UpdateClockPeriod(taskId, direction);
}
break;
@@ -434,29 +555,29 @@ static u8 AdvanceClock(u8 taskId, u8 direction)
//Updates the clock period (AM/PM) if it needs to change
static void UpdateClockPeriod(u8 taskId, u8 direction)
{
- u8 hours = gTasks[taskId].data[TD_HOURS];
-
- switch(direction)
+ u8 hours = gTasks[taskId].tHours;
+
+ switch (direction)
{
- case BACKWARD:
- switch(hours)
+ case MVMT_BACKWARD:
+ switch (hours)
{
case 11:
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 23:
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
- case FORWARD:
- switch(hours)
+ case MVMT_FORWARD:
+ switch (hours)
{
case 0:
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 12:
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
@@ -466,83 +587,447 @@ static void UpdateClockPeriod(u8 taskId, u8 direction)
static void InitClockWithRtc(u8 taskId)
{
RtcCalcLocalTime();
- gTasks[taskId].data[TD_HOURS] = gLocalTime.hours;
- gTasks[taskId].data[TD_MINUTES] = gLocalTime.minutes;
- gTasks[taskId].data[TD_MHAND_ANGLE] = gTasks[taskId].data[TD_MINUTES] * 6;
- gTasks[taskId].data[TD_HHAND_ANGLE] = (gTasks[taskId].data[TD_HOURS] % 12) * 30 + (gTasks[taskId].data[TD_MINUTES] / 10) * 5;
- if(gLocalTime.hours <= 11)
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tHours = gLocalTime.hours;
+ gTasks[taskId].tMinutes = gLocalTime.minutes;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+ if (gLocalTime.hours <= 11)
+ gTasks[taskId].tPeriod = PERIOD_AM;
else
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
}
-void sub_810B05C(struct Sprite *sprite)
+static const s8 gClockHandCoords[][2] =
+{
+ { 0, -24},
+ { 1, -25},
+ { 1, -25},
+ { 2, -25},
+ { 2, -25},
+ { 2, -25},
+ { 3, -24},
+ { 3, -25},
+ { 4, -25},
+ { 4, -25},
+ { 4, -25},
+ { 5, -25},
+ { 5, -25},
+ { 6, -24},
+ { 6, -24},
+ { 6, -24},
+ { 7, -24},
+ { 7, -24},
+ { 7, -24},
+ { 8, -24},
+ { 8, -24},
+ { 9, -24},
+ { 9, -24},
+ { 10, -23},
+ { 10, -23},
+ { 11, -22},
+ { 11, -22},
+ { 11, -22},
+ { 12, -22},
+ { 12, -21},
+ { 13, -21},
+ { 13, -21},
+ { 13, -21},
+ { 14, -21},
+ { 14, -21},
+ { 14, -20},
+ { 14, -20},
+ { 15, -20},
+ { 15, -19},
+ { 16, -19},
+ { 16, -19},
+ { 16, -19},
+ { 16, -18},
+ { 16, -18},
+ { 17, -18},
+ { 17, -17},
+ { 17, -17},
+ { 18, -17},
+ { 18, -17},
+ { 18, -16},
+ { 18, -16},
+ { 19, -16},
+ { 19, -15},
+ { 19, -15},
+ { 20, -15},
+ { 20, -14},
+ { 20, -14},
+ { 20, -13},
+ { 20, -13},
+ { 21, -13},
+ { 21, -13},
+ { 21, -12},
+ { 22, -12},
+ { 22, -12},
+ { 22, -11},
+ { 22, -11},
+ { 22, -10},
+ { 23, -10},
+ { 23, -9},
+ { 23, -9},
+ { 23, -9},
+ { 23, -9},
+ { 23, -8},
+ { 23, -8},
+ { 23, -7},
+ { 23, -7},
+ { 23, -6},
+ { 24, -6},
+ { 24, -6},
+ { 25, -5},
+ { 25, -5},
+ { 24, -4},
+ { 25, -4},
+ { 24, -3},
+ { 25, -3},
+ { 25, -3},
+ { 25, -2},
+ { 25, -2},
+ { 24, -1},
+ { 25, -1},
+ { 24, 0},
+ { 24, 0},
+ { 24, 0},
+ { 24, 1},
+ { 24, 1},
+ { 25, 2},
+ { 24, 2},
+ { 25, 2},
+ { 24, 3},
+ { 24, 3},
+ { 25, 4},
+ { 24, 4},
+ { 24, 5},
+ { 24, 5},
+ { 24, 5},
+ { 24, 6},
+ { 23, 6},
+ { 23, 6},
+ { 23, 7},
+ { 23, 8},
+ { 23, 8},
+ { 23, 8},
+ { 23, 9},
+ { 23, 9},
+ { 23, 10},
+ { 22, 10},
+ { 22, 10},
+ { 22, 11},
+ { 22, 11},
+ { 22, 11},
+ { 22, 12},
+ { 21, 12},
+ { 21, 12},
+ { 21, 13},
+ { 20, 13},
+ { 20, 13},
+ { 19, 13},
+ { 19, 13},
+ { 19, 14},
+ { 19, 14},
+ { 19, 15},
+ { 19, 15},
+ { 18, 15},
+ { 18, 16},
+ { 17, 16},
+ { 17, 16},
+ { 17, 17},
+ { 17, 17},
+ { 16, 17},
+ { 16, 18},
+ { 16, 18},
+ { 15, 18},
+ { 14, 18},
+ { 15, 19},
+ { 14, 19},
+ { 14, 19},
+ { 13, 19},
+ { 13, 20},
+ { 13, 20},
+ { 13, 20},
+ { 12, 20},
+ { 12, 20},
+ { 12, 21},
+ { 11, 21},
+ { 11, 21},
+ { 11, 21},
+ { 10, 21},
+ { 10, 22},
+ { 10, 22},
+ { 9, 22},
+ { 9, 22},
+ { 8, 22},
+ { 7, 22},
+ { 7, 23},
+ { 7, 23},
+ { 6, 23},
+ { 6, 23},
+ { 5, 23},
+ { 5, 23},
+ { 5, 24},
+ { 4, 24},
+ { 4, 24},
+ { 4, 24},
+ { 3, 24},
+ { 2, 24},
+ { 2, 24},
+ { 1, 24},
+ { 1, 24},
+ { 0, 24},
+ { 0, 24},
+ { -1, 23},
+ { 0, 24},
+ { 0, 24},
+ { -1, 24},
+ { -1, 24},
+ { -2, 24},
+ { -2, 24},
+ { -3, 24},
+ { -3, 24},
+ { -4, 24},
+ { -4, 24},
+ { -5, 24},
+ { -5, 23},
+ { -5, 23},
+ { -6, 23},
+ { -6, 23},
+ { -7, 23},
+ { -7, 23},
+ { -7, 23},
+ { -8, 23},
+ { -8, 22},
+ { -9, 22},
+ { -9, 22},
+ {-10, 22},
+ {-10, 22},
+ {-10, 21},
+ {-11, 21},
+ {-11, 21},
+ {-11, 21},
+ {-11, 20},
+ {-12, 20},
+ {-12, 20},
+ {-13, 20},
+ {-13, 20},
+ {-13, 19},
+ {-14, 19},
+ {-14, 19},
+ {-14, 19},
+ {-14, 18},
+ {-15, 18},
+ {-15, 18},
+ {-15, 17},
+ {-16, 17},
+ {-16, 17},
+ {-17, 17},
+ {-17, 16},
+ {-17, 16},
+ {-18, 16},
+ {-17, 15},
+ {-18, 15},
+ {-18, 15},
+ {-19, 15},
+ {-19, 14},
+ {-19, 14},
+ {-19, 13},
+ {-19, 13},
+ {-20, 13},
+ {-20, 12},
+ {-20, 12},
+ {-21, 12},
+ {-21, 12},
+ {-21, 11},
+ {-21, 11},
+ {-21, 10},
+ {-21, 10},
+ {-21, 9},
+ {-22, 9},
+ {-22, 9},
+ {-22, 8},
+ {-22, 8},
+ {-22, 7},
+ {-23, 7},
+ {-23, 7},
+ {-23, 6},
+ {-23, 6},
+ {-23, 5},
+ {-24, 5},
+ {-23, 4},
+ {-23, 4},
+ {-24, 4},
+ {-24, 4},
+ {-24, 3},
+ {-24, 3},
+ {-24, 2},
+ {-24, 2},
+ {-24, 1},
+ {-24, 1},
+ {-24, 1},
+ {-24, 0},
+ {-25, 0},
+ {-24, -1},
+ {-25, -1},
+ {-24, -1},
+ {-24, -2},
+ {-24, -2},
+ {-24, -3},
+ {-24, -3},
+ {-24, -4},
+ {-24, -4},
+ {-24, -4},
+ {-24, -5},
+ {-24, -5},
+ {-24, -6},
+ {-24, -6},
+ {-23, -6},
+ {-23, -7},
+ {-23, -7},
+ {-23, -8},
+ {-23, -8},
+ {-23, -9},
+ {-23, -9},
+ {-22, -9},
+ {-22, -9},
+ {-22, -10},
+ {-22, -10},
+ {-21, -10},
+ {-21, -11},
+ {-22, -11},
+ {-22, -12},
+ {-21, -12},
+ {-21, -13},
+ {-21, -13},
+ {-20, -13},
+ {-21, -14},
+ {-20, -14},
+ {-20, -14},
+ {-19, -14},
+ {-19, -15},
+ {-19, -15},
+ {-18, -16},
+ {-18, -16},
+ {-18, -16},
+ {-18, -17},
+ {-18, -17},
+ {-17, -17},
+ {-17, -18},
+ {-17, -18},
+ {-16, -18},
+ {-16, -18},
+ {-16, -19},
+ {-16, -19},
+ {-15, -19},
+ {-15, -19},
+ {-15, -20},
+ {-14, -20},
+ {-14, -20},
+ {-14, -21},
+ {-13, -21},
+ {-13, -21},
+ {-13, -21},
+ {-12, -21},
+ {-12, -22},
+ {-11, -22},
+ {-11, -22},
+ {-11, -22},
+ {-10, -22},
+ {-10, -22},
+ { -9, -22},
+ { -9, -23},
+ { -9, -23},
+ { -8, -23},
+ { -8, -23},
+ { -7, -23},
+ { -7, -23},
+ { -7, -24},
+ { -6, -24},
+ { -6, -24},
+ { -5, -24},
+ { -5, -24},
+ { -4, -24},
+ { -4, -24},
+ { -4, -24},
+ { -4, -25},
+ { -3, -25},
+ { -2, -25},
+ { -2, -24},
+ { -2, -24},
+ { -1, -25},
+ { -1, -25},
+ { 0, -25},
+};
+
+static void sub_810B05C(struct Sprite *sprite)
{
u16 angle;
s16 sin;
s16 cos;
u16 x;
u16 y;
-
- angle = gTasks[sprite->data0].data[TD_MHAND_ANGLE];
+
+ angle = gTasks[sprite->data0].tMinuteHandAngle;
sin = Sin2(angle) / 16;
cos = Cos2(angle) / 16;
SetOamMatrix(0, cos, sin, -sin, cos);
x = gClockHandCoords[angle][0];
y = gClockHandCoords[angle][1];
-
+
//Manual sign extension
- if(x > 0x80)
+ if (x > 0x80)
x |= 0xFF00;
- if(y > 0x80)
+ if (y > 0x80)
y |= 0xFF00;
-
+
sprite->pos2.x = x;
sprite->pos2.y = y;
}
-void sub_810B0F4(struct Sprite *sprite)
+static void sub_810B0F4(struct Sprite *sprite)
{
u16 angle;
s16 sin;
s16 cos;
u16 x;
u16 y;
-
- angle = gTasks[sprite->data0].data[TD_HHAND_ANGLE];
+
+ angle = gTasks[sprite->data0].tHourHandAngle;
sin = Sin2(angle) / 16;
cos = Cos2(angle) / 16;
SetOamMatrix(1, cos, sin, -sin, cos);
x = gClockHandCoords[angle][0];
y = gClockHandCoords[angle][1];
-
+
//Manual sign extension
- if(x > 0x80)
+ if (x > 0x80)
x |= 0xFF00;
- if(y > 0x80)
+ if (y > 0x80)
y |= 0xFF00;
-
+
sprite->pos2.x = x;
sprite->pos2.y = y;
}
-void sub_810B18C(struct Sprite *sprite)
+static void sub_810B18C(struct Sprite *sprite)
{
s16 sin;
s16 cos;
-
- if(gTasks[sprite->data0].data[TD_PERIOD] != AM)
+
+ if (gTasks[sprite->data0].tPeriod != PERIOD_AM)
{
- if((u16)(sprite->data1 - 60) <= 29)
+ if (sprite->data1 >= 60 && sprite->data1 < 90)
sprite->data1 += 5;
- if(sprite->data1 <= 59)
+ if (sprite->data1 < 60)
sprite->data1++;
}
else
{
- if((u16)(sprite->data1 - 46) <= 29)
+ if (sprite->data1 > 45 && sprite->data1 <= 75)
sprite->data1 -= 5;
- if(sprite->data1 > 75)
+ if (sprite->data1 > 75)
sprite->data1--;
}
cos = Cos2((u16)sprite->data1);
@@ -551,23 +1036,23 @@ void sub_810B18C(struct Sprite *sprite)
sprite->pos2.y = sin * 30 / 4096;
}
-void sub_810B230(struct Sprite *sprite)
+static void sub_810B230(struct Sprite *sprite)
{
s16 sin;
s16 cos;
-
- if(gTasks[sprite->data0].data[TD_PERIOD] != AM)
+
+ if (gTasks[sprite->data0].tPeriod != PERIOD_AM)
{
- if(sprite->data1 >= 105 && sprite->data1 < 135)
+ if (sprite->data1 >= 105 && sprite->data1 < 135)
sprite->data1 += 5;
- if(sprite->data1 < 105)
+ if (sprite->data1 < 105)
sprite->data1++;
}
else
{
- if(sprite->data1 > 90 && sprite->data1 <= 120)
+ if (sprite->data1 > 90 && sprite->data1 <= 120)
sprite->data1 -= 5;
- if(sprite->data1 > 120)
+ if (sprite->data1 > 120)
sprite->data1--;
}
cos = Cos2((u16)sprite->data1);
diff --git a/src/weather.c b/src/weather.c
index 520185441..5d9553836 100644
--- a/src/weather.c
+++ b/src/weather.c
@@ -1,53 +1,54 @@
#include "global.h"
#include "weather.h"
#include "asm.h"
-#include "task.h"
-#include "sprite.h"
#include "palette.h"
+#include "sprite.h"
+#include "task.h"
-struct Weather {
- u8 filler_000[0x200];
- u8 unknown_200[2][32];
- u8 filler_240[0x480];
- s8 unknown_6C0;
- s8 unknown_6C1;
- u8 unknown_6C2;
- u8 unknown_6C3;
- u16 unknown_6C4;
- u8 unknown_6C6;
- u8 unknown_6C7;
- u8 unknown_6C8;
- u8 unknown_6C9;
- u8 unknown_6CA;
- u8 unknown_6CB;
- u8 filler_6CC[2];
- u16 unknown_6CE;
- u8 unknown_6D0;
- u8 unknown_6D1;
- u8 filler_6D2[1];
- u8 unknown_6D3;
- u8 unknown_6D4;
- u8 unknown_6D5;
- u8 filler_6D6[2];
- u8 unknown_6D8;
- u8 filler_6D9[1];
- u8 unknown_6DA;
- u8 filler_6DB[3];
- u8 unknown_6DE;
- u8 filler_6DF[5];
- u8 unknown_6E4;
- u8 filler_6E5[0x15];
- u8 unknown_6FA;
- u8 unknown_6FB;
- u8 filler_6FC[4];
- u8 unknown_700;
- u8 filler_701[0x15];
- u8 unknown_716;
- u8 unknown_717;
- u8 filler_718[0xc];
- u8 unknown_724;
- u8 filler_725[9];
- u8 unknown_72E;
+struct Weather
+{
+ u8 filler_000[0x200];
+ u8 unknown_200[2][32];
+ u8 filler_240[0x480];
+ s8 unknown_6C0;
+ s8 unknown_6C1;
+ u8 unknown_6C2;
+ u8 unknown_6C3;
+ u16 unknown_6C4;
+ u8 unknown_6C6;
+ u8 unknown_6C7;
+ u8 unknown_6C8;
+ u8 unknown_6C9;
+ u8 unknown_6CA;
+ u8 unknown_6CB;
+ u8 filler_6CC[2];
+ u16 unknown_6CE;
+ u8 unknown_6D0;
+ u8 unknown_6D1;
+ u8 filler_6D2[1];
+ u8 unknown_6D3;
+ u8 unknown_6D4;
+ u8 unknown_6D5;
+ u8 filler_6D6[2];
+ u8 unknown_6D8;
+ u8 filler_6D9[1];
+ u8 unknown_6DA;
+ u8 filler_6DB[3];
+ u8 unknown_6DE;
+ u8 filler_6DF[5];
+ u8 unknown_6E4;
+ u8 filler_6E5[0x15];
+ u8 unknown_6FA;
+ u8 unknown_6FB;
+ u8 filler_6FC[4];
+ u8 unknown_700;
+ u8 filler_701[0x15];
+ u8 unknown_716;
+ u8 unknown_717;
+ u8 filler_718[0xc];
+ u8 unknown_724;
+ u8 filler_725[9];
+ u8 unknown_72E;
};
#define gWeather gUnknown_0202F7E8
@@ -61,247 +62,307 @@ extern u8 (*gUnknown_0202FC48)[32];
extern u8 gUnknown_0202F9E8[32];
-void sub_807C828(void) {
- u8 index;
- if (!FuncIsActiveTask(&sub_807CA34)) {
- index = AllocSpritePalette(0x1200);
- CpuCopy32(&gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32);
- sub_807CB10();
- gWeather.unknown_6D5 = index;
- gWeather.unknown_6D4 = AllocSpritePalette(0x1201);
- gWeather.unknown_6DA = 0;
- gWeather.unknown_6D8 = 0;
- gWeather.unknown_6DE = 0;
- gWeather.unknown_6E4 = 0;
- gWeather.unknown_700 = 0;
- gWeather.unknown_6FB = 0;
- gWeather.unknown_724 = 0;
- gWeather.unknown_716 = 0;
- gWeather.unknown_717 = 0;
- gWeather.unknown_72E = 0;
- gWeather.unknown_6FA = 0;
- sub_807DB64(16, 0);
- gWeather.unknown_6D0 = 0;
- gWeather.unknown_6C6 = 3;
- gWeather.unknown_6C8 = 0;
- gWeather.unknown_6D3 = 1;
- gWeather.unknown_6C9 = CreateTask(&sub_807C9E4, 80);
- }
+void sub_807C828(void)
+{
+ u8 index;
+ if (!FuncIsActiveTask(&sub_807CA34))
+ {
+ index = AllocSpritePalette(0x1200);
+ CpuCopy32(&gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32);
+ sub_807CB10();
+ gWeather.unknown_6D5 = index;
+ gWeather.unknown_6D4 = AllocSpritePalette(0x1201);
+ gWeather.unknown_6DA = 0;
+ gWeather.unknown_6D8 = 0;
+ gWeather.unknown_6DE = 0;
+ gWeather.unknown_6E4 = 0;
+ gWeather.unknown_700 = 0;
+ gWeather.unknown_6FB = 0;
+ gWeather.unknown_724 = 0;
+ gWeather.unknown_716 = 0;
+ gWeather.unknown_717 = 0;
+ gWeather.unknown_72E = 0;
+ gWeather.unknown_6FA = 0;
+ sub_807DB64(16, 0);
+ gWeather.unknown_6D0 = 0;
+ gWeather.unknown_6C6 = 3;
+ gWeather.unknown_6C8 = 0;
+ gWeather.unknown_6D3 = 1;
+ gWeather.unknown_6C9 = CreateTask(&sub_807C9E4, 80);
+ }
}
-void DoWeatherEffect(u8 effect) {
- if (effect != 3 && effect != 5 && effect != 13) {
- PlayRainSoundEffect();
- }
- if (gWeather.unknown_6D1 != effect && gWeather.unknown_6D0 == effect) {
- gUnknown_08396FC8[effect][0]();
- }
- gWeather.unknown_6D3 = 0;
- gWeather.unknown_6D1 = effect;
- gWeather.unknown_6CE = 0;
+void DoWeatherEffect(u8 effect)
+{
+ if (effect != 3 && effect != 5 && effect != 13)
+ {
+ PlayRainSoundEffect();
+ }
+ if (gWeather.unknown_6D1 != effect && gWeather.unknown_6D0 == effect)
+ {
+ gUnknown_08396FC8[effect][0]();
+ }
+ gWeather.unknown_6D3 = 0;
+ gWeather.unknown_6D1 = effect;
+ gWeather.unknown_6CE = 0;
}
-void sub_807C988(u8 effect) {
- PlayRainSoundEffect();
- gWeather.unknown_6D0 = effect;
- gWeather.unknown_6D1 = effect;
+void sub_807C988(u8 effect)
+{
+ PlayRainSoundEffect();
+ gWeather.unknown_6D0 = effect;
+ gWeather.unknown_6D1 = effect;
}
-void sub_807C9B4(u8 effect) {
- PlayRainSoundEffect();
- gWeather.unknown_6D0 = effect;
- gWeather.unknown_6D1 = effect;
- gWeather.unknown_6C8 = 1;
+void sub_807C9B4(u8 effect)
+{
+ PlayRainSoundEffect();
+ gWeather.unknown_6D0 = effect;
+ gWeather.unknown_6D1 = effect;
+ gWeather.unknown_6C8 = 1;
}
-void sub_807C9E4(u8 task) {
- if (gWeather.unknown_6C8) {
- gUnknown_08396FC8[gWeather.unknown_6D0][2]();
- gTasks[task].func = &sub_807CA34;
- }
+void sub_807C9E4(u8 task)
+{
+ if (gWeather.unknown_6C8)
+ {
+ gUnknown_08396FC8[gWeather.unknown_6D0][2]();
+ gTasks[task].func = &sub_807CA34;
+ }
}
-void sub_807CA34(u8 task) {
- u8 v1;
- if (gWeather.unknown_6D0 != gWeather.unknown_6D1) {
- v1 = gUnknown_08396FC8[gWeather.unknown_6D0][3]();
- if (!v1) {
- gUnknown_08396FC8[gWeather.unknown_6D1][0]();
- gWeather.unknown_6C3 = 0; // compiler reuses v1
- gWeather.unknown_6C6 = 0; // compiler reuses v1
- gWeather.unknown_6D0 = gWeather.unknown_6D1;
- gWeather.unknown_6D3 = 1;
- }
- } else {
- gUnknown_08396FC8[gWeather.unknown_6D0][1]();
- }
- gUnknown_083970B8[gWeather.unknown_6C6]();
+void sub_807CA34(u8 task)
+{
+ u8 v1;
+ if (gWeather.unknown_6D0 != gWeather.unknown_6D1)
+ {
+ v1 = gUnknown_08396FC8[gWeather.unknown_6D0][3]();
+ if (!v1)
+ {
+ gUnknown_08396FC8[gWeather.unknown_6D1][0]();
+ gWeather.unknown_6C3 = 0; // compiler reuses v1
+ gWeather.unknown_6C6 = 0; // compiler reuses v1
+ gWeather.unknown_6D0 = gWeather.unknown_6D1;
+ gWeather.unknown_6D3 = 1;
+ }
+ }
+ else
+ {
+ gUnknown_08396FC8[gWeather.unknown_6D0][1]();
+ }
+ gUnknown_083970B8[gWeather.unknown_6C6]();
}
-void sub_807CAE8(void) {
- gWeather.unknown_6C1 = 0;
- gWeather.unknown_6C2 = 0;
+void sub_807CAE8(void)
+{
+ gWeather.unknown_6C1 = 0;
+ gWeather.unknown_6C2 = 0;
}
-void nullsub_38(void) {
+void nullsub_38(void)
+{
}
-u32 sub_807CB0C(void) {
- return 0;
+u32 sub_807CB0C(void)
+{
+ return 0;
}
-void sub_807CB10(void) {
- u16 v0;
- u8 (*v1)[32];
- u16 v2;
- u16 v4;
- u16 v5;
- u16 v6;
- u16 v9;
- u32 v10;
- u16 v11;
- s16 dunno;
+void sub_807CB10(void)
+{
+ u16 v0;
+ u8(*v1)[32];
+ u16 v2;
+ u16 v4;
+ u16 v5;
+ u16 v6;
+ u16 v9;
+ u32 v10;
+ u16 v11;
+ s16 dunno;
- gUnknown_030006DC = &gUnknown_083970C8;
- for (v0 = 0; v0 <= 1; v0++) {
- if (v0 == 0) {
- v1 = &gUnknown_0202F9E8;
- } else {
- v1 = &gUnknown_0202F9E8 + 19;
- }
- for (v2 = 0; (u16)v2 <= 0x1f; v2++) {
- v4 = v2 << 8;
- if (v0 == 0) {
- v5 = (v2 << 8) / 16;
- } else {
- v5 = 0;
- }
- v6 = 0;
- for (; v6 <= 2; v6++) {
- v4 = (v4 - v5);
- v1[v6][v2] = v4 >> 8;
- }
- v9 = v4;
- v10 = 0x1f00 - v4;
- if ((0x1f00 - v4) < 0) {
- v10 += 0xf;
- }
- v11 = v10 >> 4;
- if (v2 <= 0xb) {
- for (; v6 <= 0x12; v6++) {
- v4 += v11;
- dunno = v4 - v9;
- if (dunno > 0) {
- v4 -= (dunno + ((u16)dunno >> 15)) >> 1;
- }
- v1[v6][v2] = v4 >> 8;
- if (v1[v6][v2] > 0x1f) {
- v1[v6][v2] = 0x1f;
- }
- }
- } else {
- for (; v6 <= 0x12; v6++) {
- v4 += v11;
- v1[v6][v2] = v4 >> 8;
- if (v1[v6][v2] > 0x1f) {
- v1[v6][v2] = 0x1f;
- }
- }
- }
- }
- }
+ gUnknown_030006DC = &gUnknown_083970C8;
+ for (v0 = 0; v0 <= 1; v0++)
+ {
+ if (v0 == 0)
+ {
+ v1 = &gUnknown_0202F9E8;
+ }
+ else
+ {
+ v1 = &gUnknown_0202F9E8 + 19;
+ }
+ for (v2 = 0; (u16)v2 <= 0x1f; v2++)
+ {
+ v4 = v2 << 8;
+ if (v0 == 0)
+ {
+ v5 = (v2 << 8) / 16;
+ }
+ else
+ {
+ v5 = 0;
+ }
+ v6 = 0;
+ for (; v6 <= 2; v6++)
+ {
+ v4 = (v4 - v5);
+ v1[v6][v2] = v4 >> 8;
+ }
+ v9 = v4;
+ v10 = 0x1f00 - v4;
+ if ((0x1f00 - v4) < 0)
+ {
+ v10 += 0xf;
+ }
+ v11 = v10 >> 4;
+ if (v2 <= 0xb)
+ {
+ for (; v6 <= 0x12; v6++)
+ {
+ v4 += v11;
+ dunno = v4 - v9;
+ if (dunno > 0)
+ {
+ v4 -= (dunno + ((u16)dunno >> 15)) >> 1;
+ }
+ v1[v6][v2] = v4 >> 8;
+ if (v1[v6][v2] > 0x1f)
+ {
+ v1[v6][v2] = 0x1f;
+ }
+ }
+ }
+ else
+ {
+ for (; v6 <= 0x12; v6++)
+ {
+ v4 += v11;
+ v1[v6][v2] = v4 >> 8;
+ if (v1[v6][v2] > 0x1f)
+ {
+ v1[v6][v2] = 0x1f;
+ }
+ }
+ }
+ }
+ }
}
-void sub_807CC24(void) {
- if (gWeather.unknown_6C0 == gWeather.unknown_6C1) {
- gWeather.unknown_6C6 = 3;
- } else {
- if (++gWeather.unknown_6C3 >= gWeather.unknown_6C2) {
- gWeather.unknown_6C3 = 0;
- if (gWeather.unknown_6C0 < gWeather.unknown_6C1) {
- gWeather.unknown_6C0++;
- } else {
- gWeather.unknown_6C0--;
- }
- sub_807CEBC(0, 0x20, gWeather.unknown_6C0);
- }
- }
+void sub_807CC24(void)
+{
+ if (gWeather.unknown_6C0 == gWeather.unknown_6C1)
+ {
+ gWeather.unknown_6C6 = 3;
+ }
+ else
+ {
+ if (++gWeather.unknown_6C3 >= gWeather.unknown_6C2)
+ {
+ gWeather.unknown_6C3 = 0;
+ if (gWeather.unknown_6C0 < gWeather.unknown_6C1)
+ {
+ gWeather.unknown_6C0++;
+ }
+ else
+ {
+ gWeather.unknown_6C0--;
+ }
+ sub_807CEBC(0, 0x20, gWeather.unknown_6C0);
+ }
+ }
}
-void sub_807CCAC(void) {
- if (++gWeather.unknown_6CB > 1) {
- gWeather.unknown_6CA = 0;
- }
- switch (gWeather.unknown_6D0) {
- case 3:
- case 4:
- case 5:
- case 11:
- case 13:
- if (sub_807CDC4() == 0) {
- gWeather.unknown_6C0 = 3;
- gWeather.unknown_6C6 = 3;
- }
- break;
- case 12:
- if (sub_807CE24() == 0) {
- gWeather.unknown_6C0 = -6;
- gWeather.unknown_6C6 = 3;
- }
- break;
- case 6:
- if (sub_807CE7C() == 0) {
- gWeather.unknown_6C0 = 0;
- gWeather.unknown_6C6 = 3;
- }
- break;
- case 7:
- case 8:
- case 9:
- case 10:
- default:
- if (!gPaletteFade.active) {
- gWeather.unknown_6C0 = gWeather.unknown_6C1;
- gWeather.unknown_6C6 = 3;
- }
- break;
- }
+void sub_807CCAC(void)
+{
+ if (++gWeather.unknown_6CB > 1)
+ {
+ gWeather.unknown_6CA = 0;
+ }
+ switch (gWeather.unknown_6D0)
+ {
+ case 3:
+ case 4:
+ case 5:
+ case 11:
+ case 13:
+ if (sub_807CDC4() == 0)
+ {
+ gWeather.unknown_6C0 = 3;
+ gWeather.unknown_6C6 = 3;
+ }
+ break;
+ case 12:
+ if (sub_807CE24() == 0)
+ {
+ gWeather.unknown_6C0 = -6;
+ gWeather.unknown_6C6 = 3;
+ }
+ break;
+ case 6:
+ if (sub_807CE7C() == 0)
+ {
+ gWeather.unknown_6C0 = 0;
+ gWeather.unknown_6C6 = 3;
+ }
+ break;
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ default:
+ if (!gPaletteFade.active)
+ {
+ gWeather.unknown_6C0 = gWeather.unknown_6C1;
+ gWeather.unknown_6C6 = 3;
+ }
+ break;
+ }
}
-u8 sub_807CDC4(void) {
- if (gWeather.unknown_6C7 == 0x10) {
- return 0;
- }
- if (++gWeather.unknown_6C7 >= 0x10) {
- sub_807CEBC(0, 0x20, 3);
- gWeather.unknown_6C7 = 0x10;
- return 0;
- }
- sub_807D1BC(0, 0x20, 3, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4);
- return 1;
+u8 sub_807CDC4(void)
+{
+ if (gWeather.unknown_6C7 == 0x10)
+ {
+ return 0;
+ }
+ if (++gWeather.unknown_6C7 >= 0x10)
+ {
+ sub_807CEBC(0, 0x20, 3);
+ gWeather.unknown_6C7 = 0x10;
+ return 0;
+ }
+ sub_807D1BC(0, 0x20, 3, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4);
+ return 1;
}
-u8 sub_807CE24(void) {
- if (gWeather.unknown_6C7 == 0x10) {
- return 0;
- }
- if (++gWeather.unknown_6C7 >= 0x10) {
- sub_807CEBC(0, 0x20, -6);
- gWeather.unknown_6C7 = 0x10;
- return 0;
- }
- sub_807D304(-6, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4);
- return 1;
+u8 sub_807CE24(void)
+{
+ if (gWeather.unknown_6C7 == 0x10)
+ {
+ return 0;
+ }
+ if (++gWeather.unknown_6C7 >= 0x10)
+ {
+ sub_807CEBC(0, 0x20, -6);
+ gWeather.unknown_6C7 = 0x10;
+ return 0;
+ }
+ sub_807D304(-6, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4);
+ return 1;
}
-u8 sub_807CE7C(void) {
- if (gWeather.unknown_6C7 == 0x10) {
- return 0;
- }
- ++gWeather.unknown_6C7;
- sub_807D424(0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4);
- return 1;
+u8 sub_807CE7C(void)
+{
+ if (gWeather.unknown_6C7 == 0x10)
+ {
+ return 0;
+ }
+ ++gWeather.unknown_6C7;
+ sub_807D424(0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4);
+ return 1;
}
-void nullsub_39(void) {
+void nullsub_39(void)
+{
}
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 8e983c300..408dc69ce 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -1,15 +1,16 @@
#include "global.h"
#include "wild_encounter.h"
+#include "abilities.h"
#include "asm.h"
-#include "field_player_avatar.h"
-#include "safari_zone.h"
#include "battle_setup.h"
-#include "abilities.h"
-#include "rng.h"
-#include "script.h"
#include "event_data.h"
-#include "rom4.h"
+#include "field_player_avatar.h"
#include "metatile_behavior.h"
+#include "rng.h"
+#include "rom4.h"
+#include "safari_zone.h"
+#include "script.h"
+#include "species.h"
struct WildPokemon
{
@@ -21,7 +22,7 @@ struct WildPokemon
struct WildPokemonInfo
{
u8 encounterRate;
- struct WildPokemon *wildPokemon;
+ const struct WildPokemon *wildPokemon;
};
struct WildPokemonHeader
@@ -34,6 +35,2890 @@ struct WildPokemonHeader
struct WildPokemonInfo *fishingMonsInfo;
};
+
+const struct WildPokemon PetalburgCity_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+};
+const struct WildPokemonInfo PetalburgCity_WaterMonsInfo = {1, PetalburgCity_WaterMons};
+
+const struct WildPokemon PetalburgCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo PetalburgCity_FishingMonsInfo = {10, PetalburgCity_FishingMons};
+
+const struct WildPokemon SlateportCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo SlateportCity_WaterMonsInfo = {4, SlateportCity_WaterMons};
+
+const struct WildPokemon SlateportCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SlateportCity_FishingMonsInfo = {10, SlateportCity_FishingMons};
+
+const struct WildPokemon LilycoveCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo LilycoveCity_WaterMonsInfo = {4, LilycoveCity_WaterMons};
+
+const struct WildPokemon LilycoveCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_STARYU},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo LilycoveCity_FishingMonsInfo = {10, LilycoveCity_FishingMons};
+
+const struct WildPokemon MossdeepCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo MossdeepCity_WaterMonsInfo = {4, MossdeepCity_WaterMons};
+
+const struct WildPokemon MossdeepCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo MossdeepCity_FishingMonsInfo = {10, MossdeepCity_FishingMons};
+
+const struct WildPokemon SootopolisCity_WaterMons [] =
+{
+ {5, 35, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {15, 25, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+};
+const struct WildPokemonInfo SootopolisCity_WaterMonsInfo = {1, SootopolisCity_WaterMons};
+
+const struct WildPokemon SootopolisCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+#ifdef SAPPHIRE
+ {5, 10, SPECIES_TENTACOOL},
+#else
+ {10, 15, SPECIES_MAGIKARP},
+#endif
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_GYARADOS},
+ {35, 45, SPECIES_GYARADOS},
+ {5, 45, SPECIES_GYARADOS},
+};
+const struct WildPokemonInfo SootopolisCity_FishingMonsInfo = {10, SootopolisCity_FishingMons};
+
+const struct WildPokemon EverGrandeCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo EverGrandeCity_WaterMonsInfo = {4, EverGrandeCity_WaterMons};
+
+const struct WildPokemon EverGrandeCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo EverGrandeCity_FishingMonsInfo = {10, EverGrandeCity_FishingMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_LandMons [] =
+{
+ {16, 16, SPECIES_ZUBAT},
+ {17, 17, SPECIES_ZUBAT},
+ {18, 18, SPECIES_ZUBAT},
+ {15, 15, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_LUNATONE},
+ {18, 18, SPECIES_LUNATONE},
+ {14, 14, SPECIES_LUNATONE},
+#else
+ {16, 16, SPECIES_SOLROCK},
+ {18, 18, SPECIES_SOLROCK},
+ {14, 14, SPECIES_SOLROCK},
+#endif
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_LandMonsInfo = {10, MeteorFalls_1F_1R_LandMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_WaterMons [] =
+{
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_WaterMonsInfo = {4, MeteorFalls_1F_1R_WaterMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_FishingMonsInfo = {30, MeteorFalls_1F_1R_FishingMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+ {33, 33, SPECIES_LUNATONE},
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_LandMonsInfo = {10, MeteorFalls_1F_2R_LandMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_WaterMonsInfo = {4, MeteorFalls_1F_2R_WaterMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_FishingMonsInfo = {30, MeteorFalls_1F_2R_FishingMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+ {33, 33, SPECIES_LUNATONE},
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_LandMonsInfo = {10, MeteorFalls_B1F_1R_LandMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_WaterMonsInfo = {4, MeteorFalls_B1F_1R_WaterMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_FishingMonsInfo = {30, MeteorFalls_B1F_1R_FishingMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {30, 30, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {25, 25, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_LandMonsInfo = {10, MeteorFalls_B1F_2R_LandMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_WaterMonsInfo = {4, MeteorFalls_B1F_2R_WaterMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_FishingMonsInfo = {30, MeteorFalls_B1F_2R_FishingMons};
+
+const struct WildPokemon RusturfTunnel_LandMons [] =
+{
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+};
+const struct WildPokemonInfo RusturfTunnel_LandMonsInfo = {10, RusturfTunnel_LandMons};
+
+const struct WildPokemon GraniteCave_1F_LandMons [] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_GEODUDE},
+ {8, 8, SPECIES_GEODUDE},
+ {6, 6, SPECIES_GEODUDE},
+ {9, 9, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo GraniteCave_1F_LandMonsInfo = {10, GraniteCave_1F_LandMons};
+
+const struct WildPokemon GraniteCave_B1F_LandMons [] =
+{
+ {9, 9, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ARON},
+ {9, 9, SPECIES_ARON},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ZUBAT},
+ {9, 9, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {11, 11, SPECIES_MAKUHITA},
+#ifdef SAPPHIRE
+ {10, 10, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {9, 9, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+#else
+ {10, 10, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+ {9, 9, SPECIES_MAWILE},
+ {11, 11, SPECIES_MAWILE},
+#endif
+};
+const struct WildPokemonInfo GraniteCave_B1F_LandMonsInfo = {10, GraniteCave_B1F_LandMons};
+
+const struct WildPokemon GraniteCave_B2F_LandMons [] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ARON},
+ {11, 11, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ARON},
+ {10, 10, SPECIES_ABRA},
+#ifdef SAPPHIRE
+ {10, 10, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+#else
+ {10, 10, SPECIES_MAWILE},
+ {11, 11, SPECIES_MAWILE},
+ {12, 12, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+ {12, 12, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+#endif
+};
+const struct WildPokemonInfo GraniteCave_B2F_LandMonsInfo = {10, GraniteCave_B2F_LandMons};
+
+const struct WildPokemon GraniteCave_B2F_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {10, 20, SPECIES_NOSEPASS},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo GraniteCave_B2F_RockSmashMonsInfo = {20, GraniteCave_B2F_RockSmashMons};
+
+const struct WildPokemon GraniteCave_StevensRoom_LandMons [] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+};
+const struct WildPokemonInfo GraniteCave_StevensRoom_LandMonsInfo = {10, GraniteCave_StevensRoom_LandMons};
+
+const struct WildPokemon PetalburgWoods_LandMons [] =
+{
+ {5, 5, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_WURMPLE},
+ {5, 5, SPECIES_SHROOMISH},
+ {6, 6, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_SILCOON},
+ {5, 5, SPECIES_CASCOON},
+ {6, 6, SPECIES_WURMPLE},
+ {6, 6, SPECIES_SHROOMISH},
+ {5, 5, SPECIES_TAILLOW},
+ {5, 5, SPECIES_SLAKOTH},
+ {6, 6, SPECIES_TAILLOW},
+ {6, 6, SPECIES_SLAKOTH},
+};
+const struct WildPokemonInfo PetalburgWoods_LandMonsInfo = {20, PetalburgWoods_LandMons};
+
+//Jagged Pass Pokemon are 2 levels higher on Sapphire
+#ifdef SAPPHIRE
+#define JAGGED_PASS_LEVEL_DIFF 2
+#else
+#define JAGGED_PASS_LEVEL_DIFF 0
+#endif
+
+const struct WildPokemon JaggedPass_LandMons [] =
+{
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+};
+const struct WildPokemonInfo JaggedPass_LandMonsInfo = {20, JaggedPass_LandMons};
+
+const struct WildPokemon FieryPath_LandMons [] =
+{
+ {15, 15, SPECIES_NUMEL},
+#ifdef SAPPHIRE
+ {15, 15, SPECIES_GRIMER},
+#else
+ {15, 15, SPECIES_KOFFING},
+#endif
+ {16, 16, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {15, 15, SPECIES_TORKOAL},
+ {15, 15, SPECIES_SLUGMA},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_GRIMER},
+#else
+ {16, 16, SPECIES_KOFFING},
+#endif
+ {16, 16, SPECIES_MACHOP},
+ {14, 14, SPECIES_TORKOAL},
+ {16, 16, SPECIES_TORKOAL},
+#ifdef SAPPHIRE
+ {14, 14, SPECIES_KOFFING},
+ {14, 14, SPECIES_KOFFING},
+#else
+ {14, 14, SPECIES_GRIMER},
+ {14, 14, SPECIES_GRIMER},
+#endif
+};
+const struct WildPokemonInfo FieryPath_LandMonsInfo = {10, FieryPath_LandMons};
+
+const struct WildPokemon MtPyre_1F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_1F_LandMonsInfo = {10, MtPyre_1F_LandMons};
+
+const struct WildPokemon MtPyre_2F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_2F_LandMonsInfo = {10, MtPyre_2F_LandMons};
+
+const struct WildPokemon MtPyre_3F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_3F_LandMonsInfo = {10, MtPyre_3F_LandMons};
+
+const struct WildPokemon MtPyre_4F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_4F_LandMonsInfo = {10, MtPyre_4F_LandMons};
+
+const struct WildPokemon MtPyre_5F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_5F_LandMonsInfo = {10, MtPyre_5F_LandMons};
+
+const struct WildPokemon MtPyre_6F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_6F_LandMonsInfo = {10, MtPyre_6F_LandMons};
+
+const struct WildPokemon MtPyre_Exterior_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+#endif
+ {27, 27, SPECIES_MEDITITE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {29, 29, SPECIES_MEDITITE},
+#ifdef SAPPHIRE
+ {29, 29, SPECIES_SHUPPET},
+#else
+ {29, 29, SPECIES_DUSKULL},
+#endif
+ {27, 27, SPECIES_VULPIX},
+ {29, 29, SPECIES_VULPIX},
+ {25, 25, SPECIES_VULPIX},
+ {27, 27, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo MtPyre_Exterior_LandMonsInfo = {10, MtPyre_Exterior_LandMons};
+
+const struct WildPokemon MtPyre_Summit_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+#else
+ {28, 28, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+#endif
+ {28, 28, SPECIES_CHIMECHO},
+ {28, 28, SPECIES_CHIMECHO},
+};
+const struct WildPokemonInfo MtPyre_Summit_LandMonsInfo = {10, MtPyre_Summit_LandMons};
+
+const struct WildPokemon SeafloorCavern_Entrance_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Entrance_WaterMonsInfo = {4, SeafloorCavern_Entrance_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Entrance_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Entrance_FishingMonsInfo = {10, SeafloorCavern_Entrance_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room1_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room1_LandMonsInfo = {4, SeafloorCavern_Room1_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room2_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room2_LandMonsInfo = {4, SeafloorCavern_Room2_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room3_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room3_LandMonsInfo = {4, SeafloorCavern_Room3_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room4_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room4_LandMonsInfo = {4, SeafloorCavern_Room4_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room5_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room5_LandMonsInfo = {4, SeafloorCavern_Room5_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room6_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_LandMonsInfo = {4, SeafloorCavern_Room6_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room6_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_WaterMonsInfo = {4, SeafloorCavern_Room6_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Room6_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_FishingMonsInfo = {10, SeafloorCavern_Room6_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room7_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_LandMonsInfo = {4, SeafloorCavern_Room7_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room7_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_WaterMonsInfo = {4, SeafloorCavern_Room7_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Room7_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_FishingMonsInfo = {10, SeafloorCavern_Room7_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room8_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room8_LandMonsInfo = {4, SeafloorCavern_Room8_LandMons};
+
+const struct WildPokemon CaveOfOrigin_Entrance_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_Entrance_LandMonsInfo = {4, CaveOfOrigin_Entrance_LandMons};
+
+const struct WildPokemon CaveOfOrigin_1F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_1F_LandMonsInfo = {4, CaveOfOrigin_1F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B1F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B1F_LandMonsInfo = {4, CaveOfOrigin_B1F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B2F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B2F_LandMonsInfo = {4, CaveOfOrigin_B2F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B3F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B3F_LandMonsInfo = {4, CaveOfOrigin_B3F_LandMons};
+
+const struct WildPokemon VictoryRoad_1F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LOUDRED},
+ {36, 36, SPECIES_ZUBAT},
+ {36, 36, SPECIES_MAKUHITA},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+};
+const struct WildPokemonInfo VictoryRoad_1F_LandMonsInfo = {10, VictoryRoad_1F_LandMons};
+
+const struct WildPokemon VictoryRoad_B1F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_MEDICHAM},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MEDITITE},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MEDITITE},
+};
+const struct WildPokemonInfo VictoryRoad_B1F_LandMonsInfo = {10, VictoryRoad_B1F_LandMons};
+
+const struct WildPokemon VictoryRoad_B1F_RockSmashMons [] =
+{
+ {30, 40, SPECIES_GRAVELER},
+ {30, 40, SPECIES_GEODUDE},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+};
+const struct WildPokemonInfo VictoryRoad_B1F_RockSmashMonsInfo = {20, VictoryRoad_B1F_RockSmashMons};
+
+const struct WildPokemon VictoryRoad_B2F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {40, 40, SPECIES_SABLEYE},
+#else
+ {40, 40, SPECIES_MAWILE},
+#endif
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_MEDICHAM},
+ {42, 42, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {42, 42, SPECIES_SABLEYE},
+#else
+ {42, 42, SPECIES_MAWILE},
+#endif
+ {44, 44, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {44, 44, SPECIES_SABLEYE},
+#else
+ {44, 44, SPECIES_MAWILE},
+#endif
+ {42, 42, SPECIES_LAIRON},
+ {42, 42, SPECIES_MEDICHAM},
+ {44, 44, SPECIES_LAIRON},
+ {44, 44, SPECIES_MEDICHAM},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_LandMonsInfo = {10, VictoryRoad_B2F_LandMons};
+
+const struct WildPokemon VictoryRoad_B2F_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {25, 30, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_WaterMonsInfo = {4, VictoryRoad_B2F_WaterMons};
+
+const struct WildPokemon VictoryRoad_B2F_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_FishingMonsInfo = {30, VictoryRoad_B2F_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, ShoalCave_LowTideEntranceRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, ShoalCave_LowTideEntranceRoom_WaterMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, ShoalCave_LowTideEntranceRoom_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_LandMonsInfo = {10, ShoalCave_LowTideInnerRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, ShoalCave_LowTideInnerRoom_WaterMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, ShoalCave_LowTideInnerRoom_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideStairsRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideStairsRoom_LandMonsInfo = {10, ShoalCave_LowTideStairsRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideLowerRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideLowerRoom_LandMonsInfo = {10, ShoalCave_LowTideLowerRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideIceRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {26, 26, SPECIES_SNORUNT},
+ {32, 32, SPECIES_SPHEAL},
+ {30, 30, SPECIES_GOLBAT},
+ {28, 28, SPECIES_SNORUNT},
+ {32, 32, SPECIES_GOLBAT},
+ {30, 30, SPECIES_SNORUNT},
+};
+const struct WildPokemonInfo ShoalCave_LowTideIceRoom_LandMonsInfo = {10, ShoalCave_LowTideIceRoom_LandMons};
+
+const struct WildPokemon NewMauville_Entrance_LandMons [] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+};
+const struct WildPokemonInfo NewMauville_Entrance_LandMonsInfo = {10, NewMauville_Entrance_LandMons};
+
+const struct WildPokemon NewMauville_Inside_LandMons [] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_ELECTRODE},
+ {26, 26, SPECIES_MAGNETON},
+};
+const struct WildPokemonInfo NewMauville_Inside_LandMonsInfo = {10, NewMauville_Inside_LandMons};
+
+const struct WildPokemon AbandonedShip_Rooms_B1F_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_Rooms_B1F_WaterMonsInfo = {4, AbandonedShip_Rooms_B1F_WaterMons};
+
+const struct WildPokemon AbandonedShip_Rooms_B1F_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_Rooms_B1F_FishingMonsInfo = {20, AbandonedShip_Rooms_B1F_FishingMons};
+
+const struct WildPokemon AbandonedShip_HiddenFloorCorridors_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, AbandonedShip_HiddenFloorCorridors_WaterMons};
+
+const struct WildPokemon AbandonedShip_HiddenFloorCorridors_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, AbandonedShip_HiddenFloorCorridors_FishingMons};
+
+const struct WildPokemon SkyPillar_1F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {48, 48, SPECIES_SABLEYE},
+#else
+ {48, 48, SPECIES_MAWILE},
+#endif
+ {48, 48, SPECIES_GOLBAT},
+ {50, 50, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {50, 50, SPECIES_SABLEYE},
+#else
+ {50, 50, SPECIES_MAWILE},
+#endif
+ {48, 48, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {48, 48, SPECIES_BANETTE},
+ {50, 50, SPECIES_BANETTE},
+#else
+ {48, 48, SPECIES_DUSCLOPS},
+ {50, 50, SPECIES_DUSCLOPS},
+#endif
+ {49, 49, SPECIES_CLAYDOL},
+ {47, 47, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {47, 47, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+};
+const struct WildPokemonInfo SkyPillar_1F_LandMonsInfo = {10, SkyPillar_1F_LandMons};
+
+const struct WildPokemon SkyPillar_3F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {51, 51, SPECIES_SABLEYE},
+#else
+ {51, 51, SPECIES_MAWILE},
+#endif
+ {51, 51, SPECIES_GOLBAT},
+ {53, 53, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {53, 53, SPECIES_SABLEYE},
+#else
+ {53, 53, SPECIES_MAWILE},
+#endif
+ {51, 51, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {51, 51, SPECIES_BANETTE},
+ {53, 53, SPECIES_BANETTE},
+#else
+ {51, 51, SPECIES_DUSCLOPS},
+ {53, 53, SPECIES_DUSCLOPS},
+#endif
+ {52, 52, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {53, 53, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {53, 53, SPECIES_CLAYDOL},
+};
+const struct WildPokemonInfo SkyPillar_3F_LandMonsInfo = {10, SkyPillar_3F_LandMons};
+
+const struct WildPokemon SkyPillar_5F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {54, 54, SPECIES_SABLEYE},
+#else
+ {54, 54, SPECIES_MAWILE},
+#endif
+ {54, 54, SPECIES_GOLBAT},
+ {56, 56, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {56, 56, SPECIES_SABLEYE},
+#else
+ {56, 56, SPECIES_MAWILE},
+#endif
+ {54, 54, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {54, 54, SPECIES_BANETTE},
+ {56, 56, SPECIES_BANETTE},
+#else
+ {54, 54, SPECIES_DUSCLOPS},
+ {56, 56, SPECIES_DUSCLOPS},
+#endif
+ {55, 55, SPECIES_CLAYDOL},
+ {56, 56, SPECIES_CLAYDOL},
+ {57, 57, SPECIES_ALTARIA},
+ {54, 54, SPECIES_ALTARIA},
+ {60, 60, SPECIES_ALTARIA},
+};
+const struct WildPokemonInfo SkyPillar_5F_LandMonsInfo = {10, SkyPillar_5F_LandMons};
+
+const struct WildPokemon Route101_LandMons [] =
+{
+ {2, 2, SPECIES_WURMPLE},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_WURMPLE},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+};
+const struct WildPokemonInfo Route101_LandMonsInfo = {20, Route101_LandMons};
+
+const struct WildPokemon Route102_LandMons [] =
+{
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WURMPLE},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_WURMPLE},
+#ifdef SAPPHIRE
+ {3, 3, SPECIES_LOTAD},
+ {4, 4, SPECIES_LOTAD},
+#else
+ {3, 3, SPECIES_SEEDOT},
+ {4, 4, SPECIES_SEEDOT},
+#endif
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_RALTS},
+ {4, 4, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route102_LandMonsInfo = {20, Route102_LandMons};
+
+const struct WildPokemon Route102_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route102_WaterMonsInfo = {4, Route102_WaterMons};
+
+const struct WildPokemon Route102_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo Route102_FishingMonsInfo = {30, Route102_FishingMons};
+
+const struct WildPokemon Route103_LandMons [] =
+{
+ {2, 2, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {2, 2, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route103_LandMonsInfo = {20, Route103_LandMons};
+
+const struct WildPokemon Route103_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route103_WaterMonsInfo = {4, Route103_WaterMons};
+
+const struct WildPokemon Route103_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route103_FishingMonsInfo = {30, Route103_FishingMons};
+
+const struct WildPokemon Route104_LandMons [] =
+{
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_WURMPLE},
+ {5, 5, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_WURMPLE},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_TAILLOW},
+ {5, 5, SPECIES_TAILLOW},
+ {4, 4, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {5, 5, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route104_LandMonsInfo = {20, Route104_LandMons};
+
+const struct WildPokemon Route104_WaterMons [] =
+{
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route104_WaterMonsInfo = {4, Route104_WaterMons};
+
+const struct WildPokemon Route104_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {20, 25, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_MAGIKARP},
+ {40, 45, SPECIES_MAGIKARP},
+};
+const struct WildPokemonInfo Route104_FishingMonsInfo = {30, Route104_FishingMons};
+
+const struct WildPokemon Route105_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route105_WaterMonsInfo = {4, Route105_WaterMons};
+
+const struct WildPokemon Route105_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route105_FishingMonsInfo = {30, Route105_FishingMons};
+
+const struct WildPokemon Route106_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route106_WaterMonsInfo = {4, Route106_WaterMons};
+
+const struct WildPokemon Route106_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route106_FishingMonsInfo = {30, Route106_FishingMons};
+
+const struct WildPokemon Route107_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route107_WaterMonsInfo = {4, Route107_WaterMons};
+
+const struct WildPokemon Route107_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route107_FishingMonsInfo = {30, Route107_FishingMons};
+
+const struct WildPokemon Route108_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route108_WaterMonsInfo = {4, Route108_WaterMons};
+
+const struct WildPokemon Route108_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route108_FishingMonsInfo = {30, Route108_FishingMons};
+
+const struct WildPokemon Route109_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route109_WaterMonsInfo = {4, Route109_WaterMons};
+
+const struct WildPokemon Route109_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route109_FishingMonsInfo = {30, Route109_FishingMons};
+
+const struct WildPokemon Route110_LandMons [] =
+{
+ {12, 12, SPECIES_ZIGZAGOON},
+ {12, 12, SPECIES_ELECTRIKE},
+ {12, 12, SPECIES_GULPIN},
+ {13, 13, SPECIES_ELECTRIKE},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_PLUSLE},
+#else
+ {13, 13, SPECIES_MINUN},
+#endif
+ {13, 13, SPECIES_ODDISH},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_PLUSLE},
+#else
+ {13, 13, SPECIES_MINUN},
+#endif
+ {13, 13, SPECIES_GULPIN},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_WINGULL},
+#ifdef SAPPHIRE
+ {12, 12, SPECIES_MINUN},
+ {13, 13, SPECIES_MINUN},
+#else
+ {12, 12, SPECIES_PLUSLE},
+ {13, 13, SPECIES_PLUSLE},
+#endif
+};
+const struct WildPokemonInfo Route110_LandMonsInfo = {20, Route110_LandMons};
+
+const struct WildPokemon Route110_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route110_WaterMonsInfo = {4, Route110_WaterMons};
+
+const struct WildPokemon Route110_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route110_FishingMonsInfo = {30, Route110_FishingMons};
+
+const struct WildPokemon Route111_LandMons [] =
+{
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {19, 19, SPECIES_CACNEA},
+ {21, 21, SPECIES_CACNEA},
+ {19, 19, SPECIES_SANDSHREW},
+ {19, 19, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_BALTOY},
+ {20, 20, SPECIES_BALTOY},
+ {22, 22, SPECIES_BALTOY},
+ {22, 22, SPECIES_BALTOY},
+};
+const struct WildPokemonInfo Route111_LandMonsInfo = {10, Route111_LandMons};
+
+const struct WildPokemon Route111_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route111_WaterMonsInfo = {4, Route111_WaterMons};
+
+const struct WildPokemon Route111_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo Route111_RockSmashMonsInfo = {20, Route111_RockSmashMons};
+
+const struct WildPokemon Route111_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route111_FishingMonsInfo = {30, Route111_FishingMons};
+
+const struct WildPokemon Route112_LandMons [] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_MACHOP},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_MACHOP},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+};
+const struct WildPokemonInfo Route112_LandMonsInfo = {20, Route112_LandMons};
+
+const struct WildPokemon Route113_LandMons [] =
+{
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SANDSHREW},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SANDSHREW},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SANDSHREW},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+};
+const struct WildPokemonInfo Route113_LandMonsInfo = {20, Route113_LandMons};
+
+const struct WildPokemon Route114_LandMons [] =
+{
+ {16, 16, SPECIES_SWABLU},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_LOTAD},
+#else
+ {16, 16, SPECIES_SEEDOT},
+#endif
+ {17, 17, SPECIES_SWABLU},
+ {15, 15, SPECIES_SWABLU},
+#ifdef SAPPHIRE
+ {15, 15, SPECIES_LOTAD},
+ {16, 16, SPECIES_SEVIPER},
+ {16, 16, SPECIES_LOMBRE},
+ {18, 18, SPECIES_LOMBRE},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_SEVIPER},
+ {17, 17, SPECIES_SEVIPER},
+#else
+ {15, 15, SPECIES_SEEDOT},
+ {16, 16, SPECIES_ZANGOOSE},
+ {16, 16, SPECIES_NUZLEAF},
+ {18, 18, SPECIES_NUZLEAF},
+ {17, 17, SPECIES_ZANGOOSE},
+ {15, 15, SPECIES_ZANGOOSE},
+ {17, 17, SPECIES_ZANGOOSE},
+#endif
+ {15, 15, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route114_LandMonsInfo = {20, Route114_LandMons};
+
+const struct WildPokemon Route114_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route114_WaterMonsInfo = {4, Route114_WaterMons};
+
+const struct WildPokemon Route114_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo Route114_RockSmashMonsInfo = {20, Route114_RockSmashMons};
+
+const struct WildPokemon Route114_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route114_FishingMonsInfo = {30, Route114_FishingMons};
+
+const struct WildPokemon Route115_LandMons [] =
+{
+ {23, 23, SPECIES_SWABLU},
+ {23, 23, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWABLU},
+ {24, 24, SPECIES_TAILLOW},
+ {25, 25, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWELLOW},
+ {24, 24, SPECIES_JIGGLYPUFF},
+ {25, 25, SPECIES_JIGGLYPUFF},
+ {24, 24, SPECIES_WINGULL},
+ {24, 24, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route115_LandMonsInfo = {20, Route115_LandMons};
+
+const struct WildPokemon Route115_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route115_WaterMonsInfo = {4, Route115_WaterMons};
+
+const struct WildPokemon Route115_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route115_FishingMonsInfo = {30, Route115_FishingMons};
+
+const struct WildPokemon Route116_LandMons [] =
+{
+ {6, 6, SPECIES_ZIGZAGOON},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_NINCADA},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_NINCADA},
+ {6, 6, SPECIES_TAILLOW},
+ {7, 7, SPECIES_TAILLOW},
+ {8, 8, SPECIES_TAILLOW},
+ {7, 7, SPECIES_ZIGZAGOON},
+ {8, 8, SPECIES_ZIGZAGOON},
+ {7, 7, SPECIES_SKITTY},
+ {8, 8, SPECIES_SKITTY},
+};
+const struct WildPokemonInfo Route116_LandMonsInfo = {20, Route116_LandMons};
+
+const struct WildPokemon Route117_LandMons [] =
+{
+ {13, 13, SPECIES_ZIGZAGOON},
+ {13, 13, SPECIES_ROSELIA},
+ {14, 14, SPECIES_ZIGZAGOON},
+ {14, 14, SPECIES_ROSELIA},
+ {13, 13, SPECIES_MARILL},
+ {13, 13, SPECIES_ODDISH},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_VOLBEAT},
+ {14, 14, SPECIES_VOLBEAT},
+ {14, 14, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_ILLUMISE},
+#else
+ {13, 13, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_VOLBEAT},
+#endif
+ {13, 13, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route117_LandMonsInfo = {20, Route117_LandMons};
+
+const struct WildPokemon Route117_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route117_WaterMonsInfo = {4, Route117_WaterMons};
+
+const struct WildPokemon Route117_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo Route117_FishingMonsInfo = {30, Route117_FishingMons};
+
+const struct WildPokemon Route118_LandMons [] =
+{
+ {24, 24, SPECIES_ZIGZAGOON},
+ {24, 24, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_ZIGZAGOON},
+ {26, 26, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_LINOONE},
+ {26, 26, SPECIES_MANECTRIC},
+ {25, 25, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route118_LandMonsInfo = {20, Route118_LandMons};
+
+const struct WildPokemon Route118_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route118_WaterMonsInfo = {4, Route118_WaterMons};
+
+const struct WildPokemon Route118_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+const struct WildPokemonInfo Route118_FishingMonsInfo = {30, Route118_FishingMons};
+
+const struct WildPokemon Route119_LandMons [] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {24, 24, SPECIES_ODDISH},
+ {25, 25, SPECIES_TROPIUS},
+ {26, 26, SPECIES_TROPIUS},
+ {27, 27, SPECIES_TROPIUS},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route119_LandMonsInfo = {15, Route119_LandMons};
+
+const struct WildPokemon Route119_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route119_WaterMonsInfo = {4, Route119_WaterMons};
+
+const struct WildPokemon Route119_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {25, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+const struct WildPokemonInfo Route119_FishingMonsInfo = {30, Route119_FishingMons};
+
+const struct WildPokemon Route120_LandMons [] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_LINOONE},
+ {25, 25, SPECIES_ODDISH},
+ {25, 25, SPECIES_MARILL},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {27, 27, SPECIES_MARILL},
+ {25, 25, SPECIES_ABSOL},
+ {27, 27, SPECIES_ABSOL},
+ {25, 25, SPECIES_KECLEON},
+ {25, 25, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route120_LandMonsInfo = {20, Route120_LandMons};
+
+const struct WildPokemon Route120_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route120_WaterMonsInfo = {4, Route120_WaterMons};
+
+const struct WildPokemon Route120_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route120_FishingMonsInfo = {30, Route120_FishingMons};
+
+const struct WildPokemon Route121_LandMons [] =
+{
+ {26, 26, SPECIES_ZIGZAGOON},
+#ifdef SAPPHIRE
+ {26, 26, SPECIES_SHUPPET},
+#else
+ {26, 26, SPECIES_DUSKULL},
+#endif
+ {26, 26, SPECIES_LINOONE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {28, 28, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route121_LandMonsInfo = {20, Route121_LandMons};
+
+const struct WildPokemon Route121_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route121_WaterMonsInfo = {4, Route121_WaterMons};
+
+const struct WildPokemon Route121_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route121_FishingMonsInfo = {30, Route121_FishingMons};
+
+const struct WildPokemon Route122_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route122_WaterMonsInfo = {4, Route122_WaterMons};
+
+const struct WildPokemon Route122_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route122_FishingMonsInfo = {30, Route122_FishingMons};
+
+const struct WildPokemon Route123_LandMons [] =
+{
+ {26, 26, SPECIES_ZIGZAGOON},
+#ifdef SAPPHIRE
+ {26, 26, SPECIES_SHUPPET},
+#else
+ {26, 26, SPECIES_DUSKULL},
+#endif
+ {26, 26, SPECIES_LINOONE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {28, 28, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route123_LandMonsInfo = {20, Route123_LandMons};
+
+const struct WildPokemon Route123_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route123_WaterMonsInfo = {4, Route123_WaterMons};
+
+const struct WildPokemon Route123_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route123_FishingMonsInfo = {30, Route123_FishingMons};
+
+const struct WildPokemon Route124_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route124_WaterMonsInfo = {4, Route124_WaterMons};
+
+const struct WildPokemon Route124_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route124_FishingMonsInfo = {30, Route124_FishingMons};
+
+const struct WildPokemon Route125_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route125_WaterMonsInfo = {4, Route125_WaterMons};
+
+const struct WildPokemon Route125_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route125_FishingMonsInfo = {30, Route125_FishingMons};
+
+const struct WildPokemon Route126_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route126_WaterMonsInfo = {4, Route126_WaterMons};
+
+const struct WildPokemon Route126_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route126_FishingMonsInfo = {30, Route126_FishingMons};
+
+const struct WildPokemon Route127_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route127_WaterMonsInfo = {4, Route127_WaterMons};
+
+const struct WildPokemon Route127_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route127_FishingMonsInfo = {30, Route127_FishingMons};
+
+const struct WildPokemon Route128_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route128_WaterMonsInfo = {4, Route128_WaterMons};
+
+const struct WildPokemon Route128_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route128_FishingMonsInfo = {30, Route128_FishingMons};
+
+const struct WildPokemon Route129_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+#ifdef SAPPHIRE
+ {25, 30, SPECIES_WAILORD},
+#else
+ {35, 40, SPECIES_WAILORD},
+#endif
+};
+const struct WildPokemonInfo Route129_WaterMonsInfo = {4, Route129_WaterMons};
+
+const struct WildPokemon Route129_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route129_FishingMonsInfo = {30, Route129_FishingMons};
+
+const struct WildPokemon Route130_LandMons [] =
+{
+ {30, 30, SPECIES_WYNAUT},
+ {35, 35, SPECIES_WYNAUT},
+ {25, 25, SPECIES_WYNAUT},
+ {40, 40, SPECIES_WYNAUT},
+ {20, 20, SPECIES_WYNAUT},
+ {45, 45, SPECIES_WYNAUT},
+ {15, 15, SPECIES_WYNAUT},
+ {50, 50, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+};
+const struct WildPokemonInfo Route130_LandMonsInfo = {20, Route130_LandMons};
+
+const struct WildPokemon Route130_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route130_WaterMonsInfo = {4, Route130_WaterMons};
+
+const struct WildPokemon Route130_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route130_FishingMonsInfo = {30, Route130_FishingMons};
+
+const struct WildPokemon Route131_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route131_WaterMonsInfo = {4, Route131_WaterMons};
+
+const struct WildPokemon Route131_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route131_FishingMonsInfo = {30, Route131_FishingMons};
+
+const struct WildPokemon Route132_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route132_WaterMonsInfo = {4, Route132_WaterMons};
+
+const struct WildPokemon Route132_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route132_FishingMonsInfo = {30, Route132_FishingMons};
+
+const struct WildPokemon Route133_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route133_WaterMonsInfo = {4, Route133_WaterMons};
+
+const struct WildPokemon Route133_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route133_FishingMonsInfo = {30, Route133_FishingMons};
+
+const struct WildPokemon Route134_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route134_WaterMonsInfo = {4, Route134_WaterMons};
+
+const struct WildPokemon Route134_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route134_FishingMonsInfo = {30, Route134_FishingMons};
+
+const struct WildPokemon SafariZone_Northwest_LandMons [] =
+{
+ {27, 27, SPECIES_RHYHORN},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_RHYHORN},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_DODUO},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_DODUO},
+ {29, 29, SPECIES_DODRIO},
+ {27, 27, SPECIES_PINSIR},
+ {31, 31, SPECIES_DODRIO},
+ {29, 29, SPECIES_PINSIR},
+};
+const struct WildPokemonInfo SafariZone_Northwest_LandMonsInfo = {25, SafariZone_Northwest_LandMons};
+
+const struct WildPokemon SafariZone_Northwest_WaterMons [] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_GOLDUCK},
+ {25, 40, SPECIES_GOLDUCK},
+};
+const struct WildPokemonInfo SafariZone_Northwest_WaterMonsInfo = {9, SafariZone_Northwest_WaterMons};
+
+const struct WildPokemon SafariZone_Northwest_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+const struct WildPokemonInfo SafariZone_Northwest_FishingMonsInfo = {35, SafariZone_Northwest_FishingMons};
+
+const struct WildPokemon SafariZone_Northeast_LandMons [] =
+{
+ {27, 27, SPECIES_PHANPY},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_PHANPY},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_NATU},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_NATU},
+ {29, 29, SPECIES_XATU},
+ {27, 27, SPECIES_HERACROSS},
+ {31, 31, SPECIES_XATU},
+ {29, 29, SPECIES_HERACROSS},
+};
+const struct WildPokemonInfo SafariZone_Northeast_LandMonsInfo = {25, SafariZone_Northeast_LandMons};
+
+const struct WildPokemon SafariZone_Northeast_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {20, 25, SPECIES_GEODUDE},
+ {25, 30, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo SafariZone_Northeast_RockSmashMonsInfo = {25, SafariZone_Northeast_RockSmashMons};
+
+const struct WildPokemon SafariZone_Southwest_LandMons [] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_DODUO},
+#else
+ {25, 25, SPECIES_DODUO},
+#endif
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+const struct WildPokemonInfo SafariZone_Southwest_LandMonsInfo = {25, SafariZone_Southwest_LandMons};
+
+const struct WildPokemon SafariZone_Southwest_WaterMons [] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+};
+const struct WildPokemonInfo SafariZone_Southwest_WaterMonsInfo = {9, SafariZone_Southwest_WaterMons};
+
+const struct WildPokemon SafariZone_Southwest_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+const struct WildPokemonInfo SafariZone_Southwest_FishingMonsInfo = {35, SafariZone_Southwest_FishingMons};
+
+const struct WildPokemon SafariZone_Southeast_LandMons [] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {25, 25, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+const struct WildPokemonInfo SafariZone_Southeast_LandMonsInfo = {25, SafariZone_Southeast_LandMons};
+
+const struct WildPokemon DewfordTown_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo DewfordTown_WaterMonsInfo = {4, DewfordTown_WaterMons};
+
+const struct WildPokemon DewfordTown_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo DewfordTown_FishingMonsInfo = {10, DewfordTown_FishingMons};
+
+const struct WildPokemon PacifidlogTown_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo PacifidlogTown_WaterMonsInfo = {4, PacifidlogTown_WaterMons};
+
+const struct WildPokemon PacifidlogTown_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo PacifidlogTown_FishingMonsInfo = {10, PacifidlogTown_FishingMons};
+
+const struct WildPokemon Underwater1_WaterMons [] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+const struct WildPokemonInfo Underwater1_WaterMonsInfo = {4, Underwater1_WaterMons};
+
+const struct WildPokemon Underwater2_WaterMons [] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMons};
+
+
extern u16 gRoute119WaterTileData[];
extern struct WildPokemonHeader gWildMonHeaders[];
extern struct Pokemon gEnemyParty[6];
@@ -66,7 +2951,7 @@ static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section)
u16 yMin = gRoute119WaterTileData[section * 3 + 0];
u16 yMax = gRoute119WaterTileData[section * 3 + 1];
u16 tileNum = gRoute119WaterTileData[section * 3 + 2];
-
+
for (yCur = yMin; yCur <= yMax; yCur++)
{
for (xCur = 0; xCur < gMapHeader.mapData->width; xCur++)
@@ -96,7 +2981,7 @@ static bool8 CheckFeebas(void)
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
x -= 7;
y -= 7;
-
+
#ifdef NONMATCHING
if (y >= gRoute119WaterTileData[3 * 1 + 0] && y <= gRoute119WaterTileData[3 * 1 + 1])
route119section = 1;
@@ -111,9 +2996,10 @@ static bool8 CheckFeebas(void)
route119section = 2;
}
#endif
-
+
if (Random() % 100 > 49) //50% chance of encountering Feebas
return FALSE;
+
FeebasSeedRng(gSaveBlock1.easyChatPairs[0].unk2);
for (i = 0; i != NUM_FEEBAS_SPOTS;)
{
@@ -185,7 +3071,7 @@ static u8 ChooseWildMonIndex_Water(void)
if (rand >= 90 && rand < 95) //5% chance
return 2;
if (rand >= 95 && rand < 99) //4% chance
- return 3;
+ return 3;
else //1% chance
return 4;
}
@@ -234,7 +3120,7 @@ static u8 ChooseWildMonIndex_Fishing(u8 rod)
return wildMonIndex;
}
-static u8 ChooseWildMonLevel(struct WildPokemon *wildPokemon)
+static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon)
{
u8 min;
u8 max;
diff --git a/sym_common.txt b/sym_common.txt
index 6919bc8b6..fcd138cb4 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -122,8 +122,7 @@ gEnemyParty: @ 30045C0
gUnknown_0300481C: @ 300481C
.space 0x4
-gUnknown_3004820: @ 3004820
- .space 0x4
+ .include "load_save.o"
gUnknown_03004824: @ 3004824
.space 0x4
@@ -217,7 +216,7 @@ gUnknown_03005560: @ 3005560
gUnknown_030056A0: @ 30056A0
.space 0x640
-gUnknown_03005CE0: @ 3005CE0
+gLastFieldPokeMenuOpened: @ 3005CE0
.space 0x4
gUnknown_03005CE4: @ 3005CE4
@@ -310,22 +309,22 @@ gUnknown_03005E94: @ 3005E94
gUnknown_03005E98: @ 3005E98
.space 0x4
-gUnknown_03005E9C: @ 3005E9C
+gLastWrittenSector: @ 3005E9C
.space 0x4
-gUnknown_03005EA0: @ 3005EA0
+gLastSaveCounter: @ 3005EA0
.space 0x4
-gUnknown_03005EA4: @ 3005EA4
+gLastKnownGoodSector: @ 3005EA4
.space 0x4
-gUnknown_03005EA8: @ 3005EA8
+gDamagedSaveSectors: @ 3005EA8
.space 0x4
-gUnknown_03005EAC: @ 3005EAC
+gSaveCounter: @ 3005EAC
.space 0x4
-gUnknown_03005EB0: @ 3005EB0
+gFastSaveSection: @ 3005EB0
.space 0x4
gUnknown_03005EB4: @ 3005EB4
@@ -334,13 +333,13 @@ gUnknown_03005EB4: @ 3005EB4
gSaveFileStatus: @ 3005EB8
.space 0x4
-gUnknown_03005EBC: @ 3005EBC
+gGameContinueCallback: @ 3005EBC
.space 0x14
gIntroFrameCounter: @ 3005ED0
.space 0x10
-gUnknown_03005EE0: @ 3005EE0
+gMultibootProgramStruct: @ 3005EE0
.space 0x2C
gUnknown_03005F0C: @ 3005F0C
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 13304fef9..fd8d4bb49 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -122,7 +122,7 @@ gUnknown_02024BE8: @ 2024BE8
gUnknown_02024BEA: @ 2024BEA
.space 0x2
-gUnknown_02024BEC: @ 2024BEC
+gBattleMoveDamage: @ 2024BEC
.space 0x4
gUnknown_02024BF0: @ 2024BF0
@@ -137,10 +137,10 @@ gUnknown_02024C04: @ 2024C04
byte_2024C06: @ 2024C06
.space 0x1
-gUnknown_02024C07: @ 2024C07
+gPlayerMonIndex: @ 2024C07
.space 0x1
-gUnknown_02024C08: @ 2024C08
+gEnemyMonIndex: @ 2024C08
.space 0x1
gUnknown_02024C09: @ 2024C09
@@ -194,7 +194,7 @@ gUnknown_02024C5C: @ 2024C5C
gUnknown_02024C60: @ 2024C60
.space 0x8
-gUnknown_02024C68: @ 2024C68
+gBattleMoveFlags: @ 2024C68
.space 0x4
gUnknown_02024C6C: @ 2024C6C
@@ -335,7 +335,7 @@ gUnknown_020297E4: @ 20297E4
gUnknown_020297E8: @ 20297E8
.space 0x4
-gUnknown_020297EC: @ 20297EC
+gDifferentSaveFile: @ 20297EC
.space 0x1
gUnknown_020297ED: @ 20297ED
@@ -484,66 +484,9 @@ gMPlay_PokemonCry: @ 202F79C
gPokemonCryBGMDuckingCounter: @ 202F7A0
.space 0x4
-gUnknown_0202F7A4: @ 202F7A4
- .space 0x4
-
-gUnknown_0202F7A8: @ 202F7A8
- .space 0x4
-
-gUnknown_0202F7AC: @ 202F7AC
- .space 0x4
-
-gUnknown_0202F7B0: @ 202F7B0
- .space 0x1
-
-gUnknown_0202F7B1: @ 202F7B1
- .space 0x1
-
-gUnknown_0202F7B2: @ 202F7B2
- .space 0x1
-
-gUnknown_0202F7B3: @ 202F7B3
- .space 0x1
-
-gUnknown_0202F7B4: @ 202F7B4
- .space 0x4
-
-gUnknown_0202F7B8: @ 202F7B8
- .space 0x4
-
-gUnknown_0202F7BC: @ 202F7BC
- .space 0x2
-
-gUnknown_0202F7BE: @ 202F7BE
- .space 0x2
-
-gUnknown_0202F7C0: @ 202F7C0
- .space 0x2
-
-gUnknown_0202F7C2: @ 202F7C2
- .space 0x2
-
-gUnknown_0202F7C4: @ 202F7C4
- .space 0x1
-
-gUnknown_0202F7C5: @ 202F7C5
- .space 0x1
-
-gUnknown_0202F7C6: @ 202F7C6
- .space 0x2
-
-gUnknown_0202F7C8: @ 202F7C8
- .space 0x1
-
-gUnknown_0202F7C9: @ 202F7C9
- .space 0x1
-
-gUnknown_0202F7CA: @ 202F7CA
- .space 0x8
-
-gUnknown_0202F7D2: @ 202F7D2
- .space 0x2
+ .include "src/battle_anim.o"
+ .align 2
gUnknown_0202F7D4: @ 202F7D4
.space 0x10
@@ -569,13 +512,7 @@ gUnknown_0202FF58: @ 202FF58
.include "src/wild_encounter.o"
gUnknown_0202FF84: @ 202FF84
- .space 0x4
-
-gUnknown_0202FF88: @ 202FF88
- .space 0x4
-
-gUnknown_0202FF8C: @ 202FF8C
- .space 0x18
+ .space 0x20
gUnknown_0202FFA4: @ 202FFA4
.space 0x4
@@ -667,9 +604,9 @@ gUnknown_020384F4: @ 20384F4
gUnknown_020384F8: @ 20384F8
.space 0x40
-gUnknown_02038538: @ 2038538
- .space 0x4
+ .include "src/map_name_popup.o"
+ .align 2
gUnknown_0203853C: @ 203853C
.space 0x4
@@ -994,7 +931,7 @@ gUnknown_0203926A: @ 203926A
gUnknown_0203926C: @ 203926C
.space 0x4
-gUnknown_02039270: @ 2039270
+gSelectedOrderFromParty: @ 2039270
.space 0x4
gUnknown_02039274: @ 2039274
@@ -1018,7 +955,7 @@ gUnknown_0203927C: @ 203927C
gUnknown_0203927D: @ 203927D
.space 0x7
-gUnknown_02039284: @ 2039284
+gLastSaveSectorStatus: @ 2039284
.space 0x4
gUnknown_02039288: @ 2039288
@@ -1082,12 +1019,13 @@ gUnknown_0203932E: @ 203932E
gUnknown_02039338: @ 2039338
.space 0x4
-gUnknown_0203933C: @ 203933C
+gSaveFailedType: @ 203933C
.space 0x2
-gUnknown_0203933E: @ 203933E
+gSaveFailedClockInfo: @ 203933E
.space 0x12
+ .align 2
gUnknown_02039350: @ 2039350
.space 0x8
diff --git a/tools/preproc/asm_file.cpp b/tools/preproc/asm_file.cpp
index 7deaccc8a..bb296b78b 100644
--- a/tools/preproc/asm_file.cpp
+++ b/tools/preproc/asm_file.cpp
@@ -111,45 +111,22 @@ void AsmFile::RemoveComments()
m_buffer[pos++] = ' ';
m_buffer[pos++] = ' ';
- char commentStringChar = 0;
-
for (;;)
{
if (m_buffer[pos] == 0)
return;
- if (commentStringChar != 0)
+ if (m_buffer[pos] == '*' && m_buffer[pos + 1] == '/')
{
- if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == commentStringChar)
- {
- m_buffer[pos++] = ' ';
- m_buffer[pos++] = ' ';
- }
- else
- {
- if (m_buffer[pos] == commentStringChar)
- commentStringChar = 0;
- if (m_buffer[pos] != '\n')
- m_buffer[pos] = ' ';
- pos++;
- }
+ m_buffer[pos++] = ' ';
+ m_buffer[pos++] = ' ';
+ break;
}
else
{
- if (m_buffer[pos] == '*' && m_buffer[pos + 1] == '/')
- {
- m_buffer[pos++] = ' ';
- m_buffer[pos++] = ' ';
- break;
- }
- else
- {
- if (m_buffer[pos] == '"' || m_buffer[pos] == '\'')
- commentStringChar = m_buffer[pos];
- if (m_buffer[pos] != '\n')
- m_buffer[pos] = ' ';
- pos++;
- }
+ if (m_buffer[pos] != '\n')
+ m_buffer[pos] = ' ';
+ pos++;
}
}
}
@@ -517,7 +494,7 @@ bool AsmFile::IsAtEnd()
// Output the current location to set gas's logical file and line numbers.
void AsmFile::OutputLocation()
{
- printf("# %ld \"%s\"\n", m_lineNum, m_filename.c_str());
+ std::printf("# %ld \"%s\"\n", m_lineNum, m_filename.c_str());
}
// Reports a diagnostic message.
diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp
index aed53d44b..5bfdee086 100644
--- a/tools/preproc/c_file.cpp
+++ b/tools/preproc/c_file.cpp
@@ -20,6 +20,8 @@
#include <cstdio>
#include <cstdarg>
+#include <string>
+#include <memory>
#include "preproc.h"
#include "c_file.h"
#include "char_util.h"
@@ -72,8 +74,6 @@ CFile::~CFile()
void CFile::Preproc()
{
- bool inConcatMode = false;
- bool noTerminator = false;
char stringChar = 0;
while (m_pos < m_size)
@@ -94,85 +94,297 @@ void CFile::Preproc()
}
else
{
+ if (m_buffer[m_pos] == '\n')
+ m_lineNum++;
std::putchar(m_buffer[m_pos]);
m_pos++;
}
}
else
{
- if (inConcatMode ? m_buffer[m_pos] == '"'
- : (m_buffer[m_pos] == '_' || m_buffer[m_pos] == '@') && m_buffer[m_pos + 1] == '"')
+ TryConvertString();
+ TryConvertIncbin();
+
+ if (m_pos >= m_size)
+ break;
+
+ char c = m_buffer[m_pos++];
+
+ std::putchar(c);
+
+ if (c == '\n')
+ m_lineNum++;
+ else if (c == '"')
+ stringChar = '"';
+ else if (c == '\'')
+ stringChar = '\'';
+ }
+ }
+}
+
+bool CFile::ConsumeHorizontalWhitespace()
+{
+ if (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ')
+ {
+ m_pos++;
+ return true;
+ }
+
+ return false;
+}
+
+bool CFile::ConsumeNewline()
+{
+ if (m_buffer[m_pos] == '\r' && m_buffer[m_pos + 1] == '\n')
+ {
+ m_pos += 2;
+ m_lineNum++;
+ return true;
+ }
+
+ if (m_buffer[m_pos] == '\n')
+ {
+ m_pos++;
+ m_lineNum++;
+ return true;
+ }
+
+ return false;
+}
+
+void CFile::SkipWhitespace()
+{
+ while (ConsumeHorizontalWhitespace() || ConsumeNewline())
+ ;
+}
+
+void CFile::TryConvertString()
+{
+ long oldPos = m_pos;
+ long oldLineNum = m_lineNum;
+ bool noTerminator = false;
+
+ if (m_buffer[m_pos] != '_' || (m_pos > 0 && IsIdentifierChar(m_buffer[m_pos - 1])))
+ return;
+
+ m_pos++;
+
+ if (m_buffer[m_pos] == '_')
+ {
+ noTerminator = true;
+ m_pos++;
+ }
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != '(')
+ {
+ m_pos = oldPos;
+ m_lineNum = oldLineNum;
+ return;
+ }
+
+ m_pos++;
+
+ SkipWhitespace();
+
+ std::printf("{ ");
+
+ while (1)
+ {
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] == '"')
+ {
+ unsigned char s[kMaxStringLength];
+ int length;
+ StringParser stringParser(m_buffer, m_size);
+
+ try
{
- if (!inConcatMode)
- {
- noTerminator = (m_buffer[m_pos] == '@');
- m_pos++; // skip past underscore or at-sign
- }
-
- unsigned char s[kMaxStringLength];
- int length;
- StringParser stringParser(m_buffer, m_size);
-
- try
- {
- m_pos += stringParser.ParseString(m_pos, s, length);
- }
- catch (std::runtime_error e)
- {
- RaiseError(e.what());
- }
-
- if (!inConcatMode)
- {
- std::printf("{ ");
- }
-
- inConcatMode = true;
-
- for (int i = 0; i < length; i++)
- printf("0x%02X, ", s[i]);
+ m_pos += stringParser.ParseString(m_pos, s, length);
}
- else
+ catch (std::runtime_error e)
{
- char c = m_buffer[m_pos++];
+ RaiseError(e.what());
+ }
+
+ for (int i = 0; i < length; i++)
+ printf("0x%02X, ", s[i]);
+ }
+ else if (m_buffer[m_pos] == ')')
+ {
+ m_pos++;
+ break;
+ }
+ else
+ {
+ if (m_pos >= m_size)
+ RaiseError("unexpected EOF");
+ if (IsAsciiPrintable(m_buffer[m_pos]))
+ RaiseError("unexpected character '%c'", m_buffer[m_pos]);
+ else
+ RaiseError("unexpected character '\\x%02X'", m_buffer[m_pos]);
+ }
+ }
+
+ if (noTerminator)
+ std::printf(" }");
+ else
+ std::printf("0xFF }");
+}
+
+bool CFile::CheckIdentifier(const std::string& ident)
+{
+ unsigned int i;
- if (c == '\r')
- {
- if (m_buffer[m_pos] == '\n')
- {
- m_pos++;
- }
+ for (i = 0; i < ident.length() && m_pos + i < (unsigned)m_size; i++)
+ if (ident[i] != m_buffer[m_pos + i])
+ return false;
- c = '\n';
- }
+ return (i == ident.length());
+}
- if ((c != ' ' && c != '\t' && c != '\n') && inConcatMode)
- {
- if (noTerminator)
- std::printf(" }");
- else
- std::printf("0xFF }");
+std::unique_ptr<unsigned char[]> CFile::ReadWholeFile(const std::string& path, int& size)
+{
+ FILE* fp = std::fopen(path.c_str(), "rb");
- inConcatMode = false;
- }
+ if (fp == nullptr)
+ RaiseError("Failed to open \"%s\" for reading.\n", path.c_str());
- std::putchar(c);
+ std::fseek(fp, 0, SEEK_END);
- if (c == '\n')
- m_lineNum++;
- else if (c == '"')
- stringChar = '"';
- else if (m_buffer[m_pos] == '\'')
- stringChar = '\'';
- }
+ size = std::ftell(fp);
+
+ std::unique_ptr<unsigned char[]> buffer = std::unique_ptr<unsigned char[]>(new unsigned char[size]);
+
+ std::rewind(fp);
+
+ if (std::fread(buffer.get(), size, 1, fp) != 1)
+ RaiseError("Failed to read \"%s\".\n", path.c_str());
+
+ std::fclose(fp);
+
+ return buffer;
+}
+
+int ExtractData(const std::unique_ptr<unsigned char[]>& buffer, int offset, int size)
+{
+ switch (size)
+ {
+ case 1:
+ return buffer[offset];
+ case 2:
+ return (buffer[offset + 1] << 8)
+ | buffer[offset];
+ case 4:
+ return (buffer[offset + 3] << 24)
+ | (buffer[offset + 2] << 16)
+ | (buffer[offset + 1] << 8)
+ | buffer[offset];
+ default:
+ FATAL_ERROR("Invalid size passed to ExtractData.\n");
+ }
+}
+
+void CFile::TryConvertIncbin()
+{
+ std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" };
+ int incbinType = -1;
+
+ for (int i = 0; i < 6; i++)
+ {
+ if (CheckIdentifier(idents[i]))
+ {
+ incbinType = i;
+ break;
}
}
- if (inConcatMode)
+ if (incbinType == -1)
+ return;
+
+ int size = 1 << (incbinType / 2);
+ bool isSigned = ((incbinType % 2) == 0);
+
+ long oldPos = m_pos;
+ long oldLineNum = m_lineNum;
+
+ m_pos += idents[incbinType].length();
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != '(')
{
- printf("0xFF }");
- RaiseWarning("string at end of file");
+ m_pos = oldPos;
+ m_lineNum = oldLineNum;
+ return;
}
+
+ m_pos++;
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != '"')
+ RaiseError("expected double quote");
+
+ m_pos++;
+
+ int startPos = m_pos;
+
+ while (m_buffer[m_pos] != '"')
+ {
+ if (m_buffer[m_pos] == 0)
+ {
+ if (m_pos >= m_size)
+ RaiseError("unexpected EOF in path string");
+ else
+ RaiseError("unexpected null character in path string");
+ }
+
+ if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n')
+ RaiseError("unexpected end of line character in path string");
+
+ if (m_buffer[m_pos] == '\\')
+ RaiseError("unexpected escape in path string");
+
+ m_pos++;
+ }
+
+ std::string path(&m_buffer[startPos], m_pos - startPos);
+
+ m_pos++;
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != ')')
+ RaiseError("expected ')'");
+
+ m_pos++;
+
+ std::printf("{");
+
+ int fileSize;
+ std::unique_ptr<unsigned char[]> buffer = ReadWholeFile(path, fileSize);
+
+ if ((fileSize % size) != 0)
+ RaiseError("Size %d doesn't evenly divide file size %d.\n", size, fileSize);
+
+ int count = fileSize / size;
+ int offset = 0;
+
+ for (int i = 0; i < count; i++)
+ {
+ int data = ExtractData(buffer, offset, size);
+ offset += size;
+
+ if (isSigned)
+ std::printf("%d,", data);
+ else
+ std::printf("%uu,", data);
+ }
+
+ std::printf("}");
}
// Reports a diagnostic message.
diff --git a/tools/preproc/c_file.h b/tools/preproc/c_file.h
index b6041cc00..7369aba85 100644
--- a/tools/preproc/c_file.h
+++ b/tools/preproc/c_file.h
@@ -24,6 +24,7 @@
#include <cstdarg>
#include <cstdint>
#include <string>
+#include <memory>
#include "preproc.h"
class CFile
@@ -42,6 +43,13 @@ private:
long m_lineNum;
std::string m_filename;
+ bool ConsumeHorizontalWhitespace();
+ bool ConsumeNewline();
+ void SkipWhitespace();
+ void TryConvertString();
+ std::unique_ptr<unsigned char[]> ReadWholeFile(const std::string& path, int& size);
+ bool CheckIdentifier(const std::string& ident);
+ void TryConvertIncbin();
void ReportDiagnostic(const char* type, const char* format, std::va_list args);
void RaiseError(const char* format, ...);
void RaiseWarning(const char* format, ...);
diff --git a/tools/preproc/char_util.h b/tools/preproc/char_util.h
index ab20dbc53..02a6e1ceb 100644
--- a/tools/preproc/char_util.h
+++ b/tools/preproc/char_util.h
@@ -56,13 +56,13 @@ inline bool IsAsciiPrintable(unsigned char c)
return (c >= ' ' && c <= '~');
}
-// Returns whether the character can start the identifier of a "{FOO}" constant in strings.
+// Returns whether the character can start a C identifier or the identifier of a "{FOO}" constant in strings.
inline bool IsIdentifierStartingChar(unsigned char c)
{
return IsAsciiAlpha(c) || c == '_';
}
-// Returns whether the character can be used in the identifier of a "{FOO}" constant in strings.
+// Returns whether the character can be used in a C identifier or the identifier of a "{FOO}" constant in strings.
inline bool IsIdentifierChar(unsigned char c)
{
return IsAsciiAlphanum(c) || c == '_';
diff --git a/tools/preproc/preproc.cpp b/tools/preproc/preproc.cpp
index b51861580..8320a2d27 100644
--- a/tools/preproc/preproc.cpp
+++ b/tools/preproc/preproc.cpp
@@ -31,15 +31,15 @@ void PrintAsmBytes(unsigned char *s, int length)
{
if (length > 0)
{
- printf("\t.byte ");
+ std::printf("\t.byte ");
for (int i = 0; i < length; i++)
{
- printf("0x%02X", s[i]);
+ std::printf("0x%02X", s[i]);
if (i < length - 1)
- printf(", ");
+ std::printf(", ");
}
- putchar('\n');
+ std::putchar('\n');
}
}
@@ -89,8 +89,8 @@ void PreprocAsmFile(std::string filename)
if (globalLabel.length() != 0)
{
- printf("\t.global %s\n", globalLabel.c_str());
- printf("%s:\n", globalLabel.c_str());
+ std::printf("\t.global %s\n", globalLabel.c_str());
+ std::printf("%s:\n", globalLabel.c_str());
}
else
{
@@ -134,7 +134,7 @@ int main(int argc, char **argv)
{
if (argc != 3)
{
- fprintf(stderr, "Usage: %s SRC_FILE CHARMAP_FILE", argv[0]);
+ std::fprintf(stderr, "Usage: %s SRC_FILE CHARMAP_FILE", argv[0]);
return 1;
}
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
index 0efe283f1..71c4389ef 100644
--- a/tools/scaninc/Makefile
+++ b/tools/scaninc/Makefile
@@ -2,11 +2,13 @@ CXX = g++
CXXFLAGS = -Wall -std=c++11 -O2
-SRCS = scaninc.cpp
+SRCS = scaninc.cpp c_file.cpp asm_file.cpp
+
+HEADERS := scaninc.h asm_file.h c_file.h
.PHONY: clean
-scaninc: $(SRCS)
+scaninc: $(SRCS) $(HEADERS)
$(CXX) $(CXXFLAGS) $(SRCS) -o $@
clean:
diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp
new file mode 100644
index 000000000..c3d140bb1
--- /dev/null
+++ b/tools/scaninc/asm_file.cpp
@@ -0,0 +1,191 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include <cstdio>
+#include <string>
+#include "scaninc.h"
+#include "asm_file.h"
+
+AsmFile::AsmFile(std::string path)
+{
+ m_path = path;
+
+ FILE *fp = std::fopen(path.c_str(), "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str());
+
+ std::fseek(fp, 0, SEEK_END);
+
+ m_size = std::ftell(fp);
+
+ m_buffer = new char[m_size];
+
+ std::rewind(fp);
+
+ if (std::fread(m_buffer, m_size, 1, fp) != 1)
+ FATAL_ERROR("Failed to read \"%s\".\n", path.c_str());
+
+ std::fclose(fp);
+
+ m_pos = 0;
+ m_lineNum = 1;
+}
+
+AsmFile::~AsmFile()
+{
+ delete[] m_buffer;
+}
+
+IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path)
+{
+ // At the beginning of each loop iteration, the current file position
+ // should be at the start of a line or at the end of the file.
+ for (;;)
+ {
+ SkipTabsAndSpaces();
+
+ IncDirectiveType incDirectiveType = IncDirectiveType::None;
+
+ if (PeekChar() == '.')
+ {
+ m_pos++;
+
+ if (MatchIncDirective("incbin", path))
+ incDirectiveType = IncDirectiveType::Incbin;
+ else if (MatchIncDirective("include", path))
+ incDirectiveType = IncDirectiveType::Include;
+ }
+
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == -1)
+ return incDirectiveType;
+
+ if (c == ';')
+ {
+ SkipEndOfLineComment();
+ break;
+ }
+ else if (c == '/' && PeekChar() == '*')
+ {
+ m_pos++;
+ SkipMultiLineComment();
+ }
+ else if (c == '"')
+ {
+ SkipString();
+ }
+ else if (c == '\n')
+ {
+ break;
+ }
+ }
+
+ if (incDirectiveType != IncDirectiveType::None)
+ return incDirectiveType;
+ }
+}
+
+std::string AsmFile::ReadPath()
+{
+ int length = 0;
+ int startPos = m_pos;
+
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == '"')
+ break;
+
+ if (c == -1)
+ FATAL_INPUT_ERROR("unexpected EOF in include string\n");
+
+ if (c == 0)
+ FATAL_INPUT_ERROR("unexpected NUL character in include string\n");
+
+ if (c == '\n')
+ FATAL_INPUT_ERROR("unexpected end of line character in include string\n");
+
+ // Don't bother allowing any escape sequences.
+ if (c == '\\')
+ FATAL_INPUT_ERROR("unexpected escape in include string\n");
+
+ length++;
+
+ if (length > SCANINC_MAX_PATH)
+ FATAL_INPUT_ERROR("path is too long");
+ }
+
+ return std::string(m_buffer, startPos, length);
+}
+
+void AsmFile::SkipEndOfLineComment()
+{
+ int c;
+
+ do
+ {
+ c = GetChar();
+ } while (c != -1 && c != '\n');
+}
+
+void AsmFile::SkipMultiLineComment()
+{
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == '*')
+ {
+ if (PeekChar() == '/')
+ {
+ m_pos++;
+ return;
+ }
+ }
+ else if (c == -1)
+ {
+ return;
+ }
+ }
+}
+
+void AsmFile::SkipString()
+{
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == '"')
+ break;
+
+ if (c == -1)
+ FATAL_INPUT_ERROR("unexpected EOF in string\n");
+
+ if (c == '\\')
+ {
+ c = GetChar();
+ }
+ }
+}
diff --git a/tools/scaninc/asm_file.h b/tools/scaninc/asm_file.h
new file mode 100644
index 000000000..ad99b757e
--- /dev/null
+++ b/tools/scaninc/asm_file.h
@@ -0,0 +1,119 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef ASM_FILE_H
+#define ASM_FILE_H
+
+#include <string>
+#include "scaninc.h"
+
+enum class IncDirectiveType
+{
+ None,
+ Include,
+ Incbin
+};
+
+class AsmFile
+{
+public:
+ AsmFile(std::string path);
+ ~AsmFile();
+ IncDirectiveType ReadUntilIncDirective(std::string& path);
+
+private:
+ char *m_buffer;
+ int m_pos;
+ int m_size;
+ int m_lineNum;
+ std::string m_path;
+
+ int GetChar()
+ {
+ if (m_pos >= m_size)
+ return -1;
+
+ int c = m_buffer[m_pos++];
+
+ if (c == '\r')
+ {
+ if (m_pos < m_size && m_buffer[m_pos++] == '\n')
+ {
+ m_lineNum++;
+ return '\n';
+ }
+ else
+ {
+ FATAL_INPUT_ERROR("CR line endings are not supported\n");
+ }
+ }
+
+ if (c == '\n')
+ m_lineNum++;
+
+ return c;
+ }
+
+ // No newline translation because it's not needed for any use of this function.
+ int PeekChar()
+ {
+ if (m_pos >= m_size)
+ return -1;
+
+ return m_buffer[m_pos];
+ }
+
+ void SkipTabsAndSpaces()
+ {
+ while (m_pos < m_size && (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' '))
+ m_pos++;
+ }
+
+ bool MatchIncDirective(std::string directiveName, std::string& path)
+ {
+ int length = directiveName.length();
+ int i;
+
+ for (i = 0; i < length && m_pos + i < m_size; i++)
+ if (directiveName[i] != m_buffer[m_pos + i])
+ return false;
+
+ if (i < length)
+ return false;
+
+ m_pos += length;
+
+ SkipTabsAndSpaces();
+
+ if (GetChar() != '"')
+ FATAL_INPUT_ERROR("no path after \".%s\" directive\n", directiveName.c_str());
+
+ path = ReadPath();
+
+ return true;
+ }
+
+ std::string ReadPath();
+ void SkipEndOfLineComment();
+ void SkipMultiLineComment();
+ void SkipString();
+};
+
+#endif // ASM_FILE_H
diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp
new file mode 100644
index 000000000..b82276dd6
--- /dev/null
+++ b/tools/scaninc/c_file.cpp
@@ -0,0 +1,287 @@
+// Copyright(c) 2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include "c_file.h"
+
+CFile::CFile(std::string path)
+{
+ m_path = path;
+
+ FILE *fp = std::fopen(path.c_str(), "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str());
+
+ std::fseek(fp, 0, SEEK_END);
+
+ m_size = std::ftell(fp);
+
+ m_buffer = new char[m_size + 1];
+ m_buffer[m_size] = 0;
+
+ std::rewind(fp);
+
+ if (std::fread(m_buffer, m_size, 1, fp) != 1)
+ FATAL_ERROR("Failed to read \"%s\".\n", path.c_str());
+
+ std::fclose(fp);
+
+ m_pos = 0;
+ m_lineNum = 1;
+
+ RemoveComments();
+}
+
+CFile::~CFile()
+{
+ delete[] m_buffer;
+}
+
+// Removes comments to simplify further processing.
+// It stops upon encountering a null character,
+// which may or may not be the end of file marker.
+// If it's not, the error will be caught later.
+void CFile::RemoveComments()
+{
+ long pos = 0;
+ char stringChar = 0;
+
+ for (;;)
+ {
+ if (m_buffer[pos] == 0)
+ return;
+
+ if (stringChar != 0)
+ {
+ if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == stringChar)
+ {
+ pos += 2;
+ }
+ else
+ {
+ if (m_buffer[pos] == stringChar)
+ stringChar = 0;
+ pos++;
+ }
+ }
+ else if (m_buffer[pos] == '/' && m_buffer[pos + 1] == '/')
+ {
+ while (m_buffer[pos] != '\n' && m_buffer[pos] != 0)
+ m_buffer[pos++] = ' ';
+ }
+ else if (m_buffer[pos] == '/' && m_buffer[pos + 1] == '*')
+ {
+ m_buffer[pos++] = ' ';
+ m_buffer[pos++] = ' ';
+
+ for (;;)
+ {
+ if (m_buffer[pos] == 0)
+ return;
+
+ if (m_buffer[pos] == '*' && m_buffer[pos + 1] == '/')
+ {
+ m_buffer[pos++] = ' ';
+ m_buffer[pos++] = ' ';
+ break;
+ }
+ else
+ {
+ if (m_buffer[pos] != '\n')
+ m_buffer[pos] = ' ';
+ pos++;
+ }
+ }
+ }
+ else
+ {
+ if (m_buffer[pos] == '"' || m_buffer[pos] == '\'')
+ stringChar = m_buffer[pos];
+ pos++;
+ }
+ }
+}
+
+void CFile::FindIncbins()
+{
+ char stringChar = 0;
+
+ while (m_pos < m_size)
+ {
+ if (stringChar)
+ {
+ if (m_buffer[m_pos] == stringChar)
+ {
+ m_pos++;
+ stringChar = 0;
+ }
+ else if (m_buffer[m_pos] == '\\' && m_buffer[m_pos + 1] == stringChar)
+ {
+ m_pos += 2;
+ }
+ else
+ {
+ if (m_buffer[m_pos] == '\n')
+ m_lineNum++;
+ m_pos++;
+ }
+ }
+ else
+ {
+ CheckIncbin();
+
+ if (m_pos >= m_size)
+ break;
+
+ char c = m_buffer[m_pos++];
+
+ if (c == '\n')
+ m_lineNum++;
+ else if (c == '"')
+ stringChar = '"';
+ else if (c == '\'')
+ stringChar = '\'';
+ else if (c == 0)
+ FATAL_INPUT_ERROR("unexpected null character");
+ }
+ }
+}
+
+bool CFile::ConsumeHorizontalWhitespace()
+{
+ if (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ')
+ {
+ m_pos++;
+ return true;
+ }
+
+ return false;
+}
+
+bool CFile::ConsumeNewline()
+{
+ if (m_buffer[m_pos] == '\r' && m_buffer[m_pos + 1] == '\n')
+ {
+ m_pos += 2;
+ m_lineNum++;
+ return true;
+ }
+
+ if (m_buffer[m_pos] == '\n')
+ {
+ m_pos++;
+ m_lineNum++;
+ return true;
+ }
+
+ return false;
+}
+
+void CFile::SkipWhitespace()
+{
+ while (ConsumeHorizontalWhitespace() || ConsumeNewline())
+ ;
+}
+
+bool CFile::CheckIdentifier(const std::string& ident)
+{
+ unsigned int i;
+
+ for (i = 0; i < ident.length() && m_pos + i < (unsigned)m_size; i++)
+ if (ident[i] != m_buffer[m_pos + i])
+ return false;
+
+ return (i == ident.length());
+}
+
+void CFile::CheckIncbin()
+{
+ std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" };
+ int incbinType = -1;
+
+ for (int i = 0; i < 6; i++)
+ {
+ if (CheckIdentifier(idents[i]))
+ {
+ incbinType = i;
+ break;
+ }
+ }
+
+ if (incbinType == -1)
+ return;
+
+ long oldPos = m_pos;
+ long oldLineNum = m_lineNum;
+
+ m_pos += idents[incbinType].length();
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != '(')
+ {
+ m_pos = oldPos;
+ m_lineNum = oldLineNum;
+ return;
+ }
+
+ m_pos++;
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != '"')
+ FATAL_INPUT_ERROR("expected double quote");
+
+ m_pos++;
+
+ int startPos = m_pos;
+
+ while (m_buffer[m_pos] != '"')
+ {
+ if (m_buffer[m_pos] == 0)
+ {
+ if (m_pos >= m_size)
+ FATAL_INPUT_ERROR("unexpected EOF in path string");
+ else
+ FATAL_INPUT_ERROR("unexpected null character in path string");
+ }
+
+ if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n')
+ FATAL_INPUT_ERROR("unexpected end of line character in path string");
+
+ if (m_buffer[m_pos] == '\\')
+ FATAL_INPUT_ERROR("unexpected escape in path string");
+
+ m_pos++;
+ }
+
+ std::string path(&m_buffer[startPos], m_pos - startPos);
+
+ m_pos++;
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != ')')
+ FATAL_INPUT_ERROR("expected ')'");
+
+ m_pos++;
+
+ m_incbins.emplace(path);
+}
diff --git a/tools/scaninc/c_file.h b/tools/scaninc/c_file.h
new file mode 100644
index 000000000..922cb4639
--- /dev/null
+++ b/tools/scaninc/c_file.h
@@ -0,0 +1,53 @@
+// Copyright(c) 2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef C_FILE_H
+#define C_FILE_H
+
+#include <string>
+#include <set>
+#include <memory>
+#include "scaninc.h"
+
+class CFile
+{
+public:
+ CFile(std::string path);
+ ~CFile();
+ void FindIncbins();
+ const std::set<std::string>& GetIncbins() { return m_incbins; }
+
+private:
+ char *m_buffer;
+ int m_pos;
+ int m_size;
+ int m_lineNum;
+ std::string m_path;
+ std::set<std::string> m_incbins;
+
+ void RemoveComments();
+ bool ConsumeHorizontalWhitespace();
+ bool ConsumeNewline();
+ void SkipWhitespace();
+ bool CheckIdentifier(const std::string& ident);
+ void CheckIncbin();
+};
+
+#endif // C_FILE_H
diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp
index 3bd6b81a5..b6f7ba767 100644
--- a/tools/scaninc/scaninc.cpp
+++ b/tools/scaninc/scaninc.cpp
@@ -1,317 +1,97 @@
-// Copyright (c) 2015 YamaArashi
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <set>
#include <string>
-
-#ifdef _MSC_VER
-
-#define FATAL_INPUT_ERROR(format, ...) \
-do { \
- fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, __VA_ARGS__); \
- exit(1); \
-} while (0)
-
-#define FATAL_ERROR(format, ...) \
-do { \
- fprintf(stderr, format, __VA_ARGS__); \
- exit(1); \
-} while (0)
-
-#else
-
-#define FATAL_INPUT_ERROR(format, ...) \
-do { \
- fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, ##__VA_ARGS__); \
- exit(1); \
-} while (0)
-
-#define FATAL_ERROR(format, ...) \
-do { \
- fprintf(stderr, format, ##__VA_ARGS__); \
- exit(1); \
-} while (0)
-
-#endif // _MSC_VER
-
-#define SCANINC_MAX_PATH 255
-
-enum class IncDirectiveType {
- None,
- Include,
- Incbin
-};
-
-class AsmFile
-{
-public:
- AsmFile(std::string path);
- ~AsmFile();
- IncDirectiveType ReadUntilIncDirective(std::string &path);
-
-private:
- char *m_buffer;
- int m_pos;
- int m_size;
- int m_lineNum;
- std::string m_path;
-
- int GetChar()
- {
- if (m_pos >= m_size)
- return -1;
-
- int c = m_buffer[m_pos++];
-
- if (c == '\r') {
- if (m_pos < m_size && m_buffer[m_pos++] == '\n') {
- m_lineNum++;
- return '\n';
- } else {
- FATAL_INPUT_ERROR("CR line endings are not supported\n");
- }
- }
-
- if (c == '\n')
- m_lineNum++;
-
- return c;
- }
-
- // No newline translation because it's not needed for any use of this function.
- int PeekChar()
- {
- if (m_pos >= m_size)
- return -1;
-
- return m_buffer[m_pos];
- }
-
- void SkipTabsAndSpaces()
- {
- while (m_pos < m_size && (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' '))
- m_pos++;
- }
-
- bool MatchIncDirective(std::string directiveName, std::string &path)
- {
- int length = directiveName.length();
- int i;
-
- for (i = 0; i < length && m_pos + i < m_size; i++)
- if (directiveName[i] != m_buffer[m_pos + i])
- return false;
-
- if (i < length)
- return false;
-
- m_pos += length;
-
- SkipTabsAndSpaces();
-
- if (GetChar() != '"')
- FATAL_INPUT_ERROR("no path after \".%s\" directive\n", directiveName.c_str());
-
- path = ReadPath();
-
- return true;
- }
-
- std::string ReadPath();
- void SkipEndOfLineComment();
- void SkipMultiLineComment();
- void SkipString();
-};
-
-AsmFile::AsmFile(std::string path)
-{
- m_path = path;
-
- FILE *fp = fopen(path.c_str(), "rb");
-
- if (fp == NULL)
- FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str());
-
- fseek(fp, 0, SEEK_END);
-
- m_size = ftell(fp);
-
- m_buffer = new char[m_size];
-
- rewind(fp);
-
- if (fread(m_buffer, m_size, 1, fp) != 1)
- FATAL_ERROR("Failed to read \"%s\".\n", path.c_str());
-
- fclose(fp);
-
- m_pos = 0;
- m_lineNum = 1;
-}
-
-AsmFile::~AsmFile()
-{
- delete[] m_buffer;
-}
-
-IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path)
-{
- // At the beginning of each loop iteration, the current file position
- // should be at the start of a line or at the end of the file.
- for (;;) {
- SkipTabsAndSpaces();
-
- IncDirectiveType incDirectiveType = IncDirectiveType::None;
-
- if (PeekChar() == '.') {
- m_pos++;
-
- if (MatchIncDirective("incbin", path))
- incDirectiveType = IncDirectiveType::Incbin;
- else if (MatchIncDirective("include", path))
- incDirectiveType = IncDirectiveType::Include;
- }
-
- for (;;) {
- int c = GetChar();
-
- if (c == -1)
- return incDirectiveType;
-
- if (c == ';') {
- SkipEndOfLineComment();
- break;
- } else if (c == '/' && PeekChar() == '*') {
- m_pos++;
- SkipMultiLineComment();
- } else if (c == '"') {
- SkipString();
- } else if (c == '\n') {
- break;
- }
- }
-
- if (incDirectiveType != IncDirectiveType::None)
- return incDirectiveType;
- }
-}
-
-std::string AsmFile::ReadPath()
-{
- int length = 0;
- int startPos = m_pos;
-
- for (;;) {
- int c = GetChar();
-
- if (c == '"')
- break;
-
- if (c == -1)
- FATAL_INPUT_ERROR("unexpected EOF in include string\n");
-
- if (c == 0)
- FATAL_INPUT_ERROR("unexpected NUL character in include string\n");
-
- if (c == '\n')
- FATAL_INPUT_ERROR("unexpected end of line character in include string\n");
-
- // Don't bother allowing any escape sequences.
- if (c == '\\')
- FATAL_INPUT_ERROR("unexpected escape '\\%c' in include string\n", c);
-
- length++;
-
- if (length > SCANINC_MAX_PATH)
- FATAL_INPUT_ERROR("path is too long");
- }
-
- return std::string(m_buffer, startPos, length);
-}
-
-void AsmFile::SkipEndOfLineComment()
-{
- int c;
-
- do {
- c = GetChar();
- } while (c != -1 && c != '\n');
-}
-
-void AsmFile::SkipMultiLineComment()
-{
- for (;;) {
- int c = GetChar();
-
- if (c == '*') {
- if (PeekChar() == '/') {
- m_pos++;
- return;
- }
- } else if (c == -1) {
- return;
- }
- }
-}
-
-void AsmFile::SkipString()
-{
- for (;;) {
- int c = GetChar();
-
- if (c == '"')
- break;
-
- if (c == -1)
- FATAL_INPUT_ERROR("unexpected EOF in string\n");
-
- if (c == '\\') {
- c = GetChar();
- }
- }
-}
+#include "scaninc.h"
+#include "asm_file.h"
+#include "c_file.h"
bool CanOpenFile(std::string path)
{
- FILE *fp = fopen(path.c_str(), "rb");
+ FILE *fp = std::fopen(path.c_str(), "rb");
- if (fp == NULL)
- return false;
+ if (fp == NULL)
+ return false;
- fclose(fp);
- return true;
+ std::fclose(fp);
+ return true;
}
int main(int argc, char **argv)
{
- if (argc < 2)
- FATAL_ERROR("Usage: scaninc ASM_FILE_PATH\n");
-
- std::stack<std::string> filesToProcess;
- std::set<std::string> dependencies;
-
- filesToProcess.push(std::string(argv[1]));
-
- while (!filesToProcess.empty()) {
- AsmFile file(filesToProcess.top());
-
- filesToProcess.pop();
-
- IncDirectiveType incDirectiveType;
- std::string path;
-
- while ((incDirectiveType = file.ReadUntilIncDirective(path)) != IncDirectiveType::None) {
- bool inserted = dependencies.insert(path).second;
- if (inserted
- && incDirectiveType == IncDirectiveType::Include
- && CanOpenFile(path))
- filesToProcess.push(path);
- }
- }
-
- for (const std::string &path : dependencies) {
- printf("%s\n", path.c_str());
- }
+ if (argc < 2)
+ FATAL_ERROR("Usage: scaninc FILE_PATH\n");
+
+ std::stack<std::string> filesToProcess;
+ std::set<std::string> dependencies;
+
+ std::string initialPath(argv[1]);
+
+ std::size_t pos = initialPath.find_last_of('.');
+
+ if (pos == std::string::npos)
+ FATAL_ERROR("no file extension in path \"%s\"\n", initialPath.c_str());
+
+ std::string extension = initialPath.substr(pos + 1);
+
+ if (extension == "c")
+ {
+ CFile file(initialPath);
+
+ file.FindIncbins();
+ dependencies = file.GetIncbins();
+ }
+ else if (extension == "s")
+ {
+ filesToProcess.push(std::string(argv[1]));
+
+ while (!filesToProcess.empty())
+ {
+ AsmFile file(filesToProcess.top());
+
+ filesToProcess.pop();
+
+ IncDirectiveType incDirectiveType;
+ std::string path;
+
+ while ((incDirectiveType = file.ReadUntilIncDirective(path)) != IncDirectiveType::None)
+ {
+ bool inserted = dependencies.insert(path).second;
+ if (inserted
+ && incDirectiveType == IncDirectiveType::Include
+ && CanOpenFile(path))
+ filesToProcess.push(path);
+ }
+ }
+ }
+ else
+ {
+ FATAL_ERROR("unknown extension \"%s\"\n", extension.c_str());
+ }
+
+ for (const std::string &path : dependencies)
+ {
+ std::printf("%s\n", path.c_str());
+ }
}
diff --git a/tools/scaninc/scaninc.h b/tools/scaninc/scaninc.h
new file mode 100644
index 000000000..30cc9611c
--- /dev/null
+++ b/tools/scaninc/scaninc.h
@@ -0,0 +1,59 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef SCANINC_H
+#define SCANINC_H
+
+#include <cstdio>
+#include <cstdlib>
+
+#ifdef _MSC_VER
+
+#define FATAL_INPUT_ERROR(format, ...) \
+do { \
+ fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_INPUT_ERROR(format, ...) \
+do { \
+ fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+#define SCANINC_MAX_PATH 255
+
+#endif // SCANINC_H