summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sander <nintendo6496@googlemail.com>2018-12-17 16:26:00 +0100
committerPaul Sander <nintendo6496@googlemail.com>2018-12-17 16:26:00 +0100
commit478c7b5421f596ac9c1e6f4faedfe3faec6a68cf (patch)
tree255fa2842f0020dbcd498d87ba8f61456fc804a9
parentfc1fd9c983b0ea35414f699ab6c4b4fdd617e8d0 (diff)
parent4cd02d59b4dfef1129f0e2f23e6409e75848af24 (diff)
Merge remote-tracking branch 'upstream/master'
-rw-r--r--Makefile7
-rw-r--r--asm/battle_2.s56
-rw-r--r--asm/battle_controller_oak.s12
-rw-r--r--asm/battle_controller_player.s4
-rw-r--r--asm/battle_controller_pokedude.s12
-rw-r--r--asm/battle_controller_safari.s4
-rw-r--r--asm/battle_controllers.s8
-rw-r--r--asm/battle_interface.s2
-rw-r--r--asm/battle_records.s4
-rw-r--r--asm/battle_script_commands.s4
-rw-r--r--asm/battle_setup.s24
-rw-r--r--asm/battle_tower.s102
-rw-r--r--asm/berry.s6
-rw-r--r--asm/berry_pouch.s52
-rw-r--r--asm/cable_club.s152
-rw-r--r--asm/daycare.s28
-rw-r--r--asm/easy_chat.s18
-rw-r--r--asm/egg_hatch.s20
-rw-r--r--asm/event_data.s70
-rw-r--r--asm/evolution_scene.s12
-rw-r--r--asm/field_control_avatar.s40
-rw-r--r--asm/field_poison.s8
-rw-r--r--asm/field_specials.s198
-rw-r--r--asm/fldeff_strength.s4
-rw-r--r--asm/heal_location.s8
-rw-r--r--asm/help_system_812B1E0.s4
-rw-r--r--asm/item.s8
-rw-r--r--asm/item_menu.s100
-rw-r--r--asm/item_use.s84
-rw-r--r--asm/itemfinder.s8
-rw-r--r--asm/learn_move.s16
-rw-r--r--asm/librfu.s24
-rw-r--r--asm/link.s118
-rw-r--r--asm/link_rfu.s24
-rw-r--r--asm/link_rfu_2.s42
-rw-r--r--asm/link_rfu_3.s162
-rw-r--r--asm/link_rfu_4.s30
-rw-r--r--asm/map_obj_lock.s4
-rw-r--r--asm/mevent.s2438
-rw-r--r--asm/mevent_8145654.s2728
-rw-r--r--asm/mevent_server.s1841
-rw-r--r--asm/mystery_event_script.s722
-rw-r--r--asm/party_menu.s168
-rw-r--r--asm/pokedex.s20
-rw-r--r--asm/pokemon_3.s12
-rw-r--r--asm/pokemon_size_record.s12
-rw-r--r--asm/pokemon_storage_system.s8
-rw-r--r--asm/prof_pc.s22
-rw-r--r--asm/rom6.s4
-rw-r--r--asm/scrcmd.s150
-rw-r--r--asm/script_menu.s88
-rw-r--r--asm/script_pokemon_util_80A0058.s24
-rw-r--r--asm/script_pokemon_util_80BF8FC.s34
-rw-r--r--asm/seagallop.s12
-rw-r--r--asm/shop.s4
-rw-r--r--asm/start_menu.s8
-rw-r--r--asm/teachy_tv.s4
-rw-r--r--asm/tm_case.s32
-rw-r--r--asm/trade.s84
-rw-r--r--asm/trainer_tower.s92
-rw-r--r--asm/union_room_chat.s8
-rw-r--r--asm/unk_8147500.s8
-rw-r--r--asm/unk_8147AA8.s8
-rw-r--r--asm/unk_814B6F0.s8
-rw-r--r--asm/unk_814BB4C.s16
-rw-r--r--asm/unk_81507FC.s24
-rw-r--r--asm/unk_8159F40.s4
-rw-r--r--asm/unk_815EDDC.s8
-rw-r--r--asm/wild_encounter.s8
-rw-r--r--berry_fix/Makefile160
-rw-r--r--berry_fix/asm/berry_fix_header.inc35
-rw-r--r--berry_fix/asm/loader.s119
-rw-r--r--berry_fix/charmap.txt1067
-rw-r--r--berry_fix/data/data.s4
-rw-r--r--berry_fix/ld_script.sed14
-rw-r--r--berry_fix/ld_script.txt31
-rw-r--r--berry_fix/payload/Makefile159
-rw-r--r--berry_fix/payload/asm/crt0.s83
-rw-r--r--berry_fix/payload/charmap.txt1067
-rw-r--r--berry_fix/payload/common_syms/agb_flash.txt10
-rw-r--r--berry_fix/payload/common_syms/main.txt9
-rw-r--r--berry_fix/payload/common_syms/rtc.txt2
-rw-r--r--berry_fix/payload/graphics/debug_digits.pngbin0 -> 166 bytes
-rw-r--r--berry_fix/payload/graphics/msg_box.pngbin0 -> 2631 bytes
-rw-r--r--berry_fix/payload/graphics/msg_box.tilemapbin0 -> 8192 bytes
-rw-r--r--berry_fix/payload/include/constants/game_stat.h56
-rw-r--r--berry_fix/payload/include/constants/vars.h196
-rw-r--r--berry_fix/payload/include/flash.h55
-rw-r--r--berry_fix/payload/include/global.berry.h62
-rw-r--r--berry_fix/payload/include/global.fieldmap.h317
-rw-r--r--berry_fix/payload/include/global.h875
-rw-r--r--berry_fix/payload/include/main.h45
-rw-r--r--berry_fix/payload/include/pokemon.h154
-rw-r--r--berry_fix/payload/include/rtc.h15
-rw-r--r--berry_fix/payload/ld_script.sed14
-rw-r--r--berry_fix/payload/ld_script.txt122
-rw-r--r--berry_fix/payload/rom.sha11
-rw-r--r--berry_fix/payload/src/flash.c752
-rw-r--r--berry_fix/payload/src/main.c289
-rw-r--r--berry_fix/payload/src/rtc.c346
-rw-r--r--berry_fix/payload/sym_bss.txt5
-rw-r--r--berry_fix/payload/sym_common.txt29
-rw-r--r--berry_fix/payload/sym_ewram.txt3
-rw-r--r--berry_fix/rom.sha11
-rw-r--r--common_syms/mevent.txt1
-rw-r--r--data/data_835B488.s8
-rw-r--r--data/data_83FECCC.s70
-rw-r--r--data/data_845FD54.s86
-rw-r--r--data/data_8466FB8.s12
-rw-r--r--data/data_8471F00.s30
-rw-r--r--data/event_scripts.s93
-rw-r--r--data/graphics/mevent/gfx_46718C.pngbin0 -> 330 bytes
-rw-r--r--data/graphics/mevent/gfx_46737C.pngbin0 -> 314 bytes
-rw-r--r--data/graphics/mevent/gfx_467558.pngbin0 -> 288 bytes
-rw-r--r--data/graphics/mevent/gfx_467700.pngbin0 -> 558 bytes
-rw-r--r--data/graphics/mevent/gfx_467A7C.pngbin0 -> 551 bytes
-rw-r--r--data/graphics/mevent/gfx_467EF4.pngbin0 -> 116 bytes
-rw-r--r--data/graphics/mevent/gfx_4680C0.pngbin0 -> 169 bytes
-rw-r--r--data/graphics/mevent/gfx_46821C.pngbin0 -> 103 bytes
-rw-r--r--data/graphics/mevent/gfx_46830C.pngbin0 -> 146 bytes
-rw-r--r--data/graphics/mevent/gfx_468448.pngbin0 -> 173 bytes
-rw-r--r--data/graphics/mevent/gfx_4685B4.pngbin0 -> 173 bytes
-rw-r--r--data/graphics/mevent/pal_46708C.pal19
-rw-r--r--data/graphics/mevent/pal_4670AC.pal19
-rw-r--r--data/graphics/mevent/pal_4670CC.pal19
-rw-r--r--data/graphics/mevent/pal_4670EC.pal19
-rw-r--r--data/graphics/mevent/pal_46710C.pal19
-rw-r--r--data/graphics/mevent/pal_46712C.pal19
-rw-r--r--data/graphics/mevent/pal_46714C.pal19
-rw-r--r--data/graphics/mevent/pal_46716C.pal19
-rw-r--r--data/graphics/mevent/pal_467DF4.pal19
-rw-r--r--data/graphics/mevent/pal_467E14.pal19
-rw-r--r--data/graphics/mevent/pal_467E34.pal19
-rw-r--r--data/graphics/mevent/pal_467E54.pal19
-rw-r--r--data/graphics/mevent/pal_467E74.pal19
-rw-r--r--data/graphics/mevent/pal_467E94.pal19
-rw-r--r--data/graphics/mevent/pal_467EB4.pal19
-rw-r--r--data/graphics/mevent/pal_467ED4.pal19
-rw-r--r--data/graphics/mevent/pal_468060.pal19
-rw-r--r--data/graphics/mevent/pal_468080.pal19
-rw-r--r--data/graphics/mevent/pal_4680A0.pal19
-rw-r--r--data/graphics/mevent/tilemap_467288.binbin0 -> 1200 bytes
-rw-r--r--data/graphics/mevent/tilemap_467470.binbin0 -> 1200 bytes
-rw-r--r--data/graphics/mevent/tilemap_46762C.binbin0 -> 1200 bytes
-rw-r--r--data/graphics/mevent/tilemap_467934.binbin0 -> 1200 bytes
-rw-r--r--data/graphics/mevent/tilemap_467CAC.binbin0 -> 1200 bytes
-rw-r--r--data/graphics/mevent/tilemap_468140.binbin0 -> 1440 bytes
-rw-r--r--data/graphics/mevent/tilemap_46824C.binbin0 -> 1440 bytes
-rw-r--r--data/graphics/mevent/tilemap_46837C.binbin0 -> 1440 bytes
-rw-r--r--data/graphics/mevent/tilemap_4684D8.binbin0 -> 1440 bytes
-rw-r--r--data/graphics/mevent/tilemap_468644.binbin0 -> 1440 bytes
-rw-r--r--data/librfu_rodata.s30
-rw-r--r--data/mevent/script_common.inc84
-rw-r--r--data/mevent/script_ish.inc65
-rw-r--r--data/multiboot_berry_glitch_fix.s2
-rw-r--r--data/multiboot_pokemon_colosseum.s2
-rw-r--r--data/mystery_event_msg.s342
-rw-r--r--data/mystery_event_script_cmd_table.s21
-rw-r--r--data/pokemon_colosseum.mbbin0 -> 163840 bytes
-rw-r--r--data/script_cmd_table.inc219
-rw-r--r--data/specials.inc456
-rw-r--r--include/battle_tower.h2
-rw-r--r--include/cereader_tool.h9
-rw-r--r--include/constants/vars.h10
-rw-r--r--include/decompress.h2
-rw-r--r--include/easy_chat.h2
-rw-r--r--include/event_data.h6
-rw-r--r--include/global.berry.h1
-rw-r--r--include/global.h73
-rw-r--r--include/help_system.h2
-rw-r--r--include/item_menu.h2
-rw-r--r--include/link.h14
-rw-r--r--include/link_rfu.h9
-rw-r--r--include/mail_data.h1
-rw-r--r--include/main.h6
-rw-r--r--include/mevent.h44
-rw-r--r--include/mevent_server.h95
-rw-r--r--include/mystery_event_msg.h18
-rw-r--r--include/mystery_event_script.h3
-rw-r--r--include/mystery_gift_menu.h9
-rw-r--r--include/pokemon_icon.h5
-rw-r--r--include/script.h3
-rw-r--r--include/strings.h2
-rw-r--r--include/unk_815c27c.h11
-rw-r--r--include/util.h4
-rw-r--r--ld_script.txt16
-rw-r--r--src/fame_checker.c10
-rw-r--r--src/menews_jisan.c2
-rw-r--r--src/mevent.c1016
-rw-r--r--src/mevent_8145654.c793
-rw-r--r--src/mevent_server.c563
-rw-r--r--src/mevent_server_helpers.c211
-rw-r--r--src/mystery_event_msg.c13
-rw-r--r--src/mystery_event_script.c322
-rw-r--r--src/quest_log.c8
-rw-r--r--src/vs_seeker.c10
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt94
198 files changed, 12297 insertions, 9155 deletions
diff --git a/Makefile b/Makefile
index 4e81222f4..431475026 100644
--- a/Makefile
+++ b/Makefile
@@ -84,10 +84,12 @@ clean: tidy
rm -f sound/direct_sound_samples/*.bin
rm -f $(SONG_OBJS)
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
+ @$(MAKE) -C berry_fix clean
tidy:
rm -f $(ROM) $(ELF) $(MAP)
rm -r build/*
+ @$(MAKE) -C berry_fix tidy
include graphics_file_rules.mk
@@ -164,8 +166,11 @@ $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_comm
cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
- cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
+ cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB)
$(ROM): $(ELF)
$(OBJCOPY) -O binary $< $@
$(FIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
+
+berry_fix/berry_fix.gba:
+ @$(MAKE) -C berry_fix
diff --git a/asm/battle_2.s b/asm/battle_2.s
index eba29102c..b11014d6b 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -638,7 +638,7 @@ _080102C0:
mov r8, r4
_080102D8:
lsls r0, r5, 8
- ldr r1, _08010348 @ =gUnknown_202211C
+ ldr r1, _08010348 @ =gBlockRecvBuffer + 4
adds r7, r0, r1
lsls r0, r5, 3
subs r0, r5
@@ -694,14 +694,14 @@ _0801031C:
.align 2, 0
_08010340: .4byte gEnigmaBerries
_08010344: .4byte gLinkPlayers
-_08010348: .4byte gUnknown_202211C
+_08010348: .4byte gBlockRecvBuffer + 4
_0801034C:
movs r5, 0
ldr r4, _0801040C @ =gEnigmaBerries
mov r9, r4
_08010352:
lsls r0, r5, 8
- ldr r1, _08010410 @ =gUnknown_202211C
+ ldr r1, _08010410 @ =gBlockRecvBuffer + 4
adds r7, r0, r1
movs r4, 0
adds r2, r5, 0x1
@@ -797,7 +797,7 @@ _080103FC:
bx r0
.align 2, 0
_0801040C: .4byte gEnigmaBerries
-_08010410: .4byte gUnknown_202211C
+_08010410: .4byte gBlockRecvBuffer + 4
thumb_func_end sub_801017C
thumb_func_start sub_8010414
@@ -810,7 +810,7 @@ sub_8010414: @ 8010414
lsls r1, 24
lsrs r3, r1, 24
movs r6, 0
- ldr r0, _08010440 @ =gUnknown_2022118
+ ldr r0, _08010440 @ =gBlockRecvBuffer
ldrh r2, [r0]
movs r1, 0x80
lsls r1, 1
@@ -824,7 +824,7 @@ sub_8010414: @ 8010414
movs r2, 0xC
b _0801044E
.align 2, 0
-_08010440: .4byte gUnknown_2022118
+_08010440: .4byte gBlockRecvBuffer
_08010444: .4byte gBattleTypeFlags
_08010448:
ldr r0, _0801048C @ =gBattleTypeFlags
@@ -842,7 +842,7 @@ _08010458:
movs r2, 0
cmp r2, r4
bge _0801047C
- ldr r1, _08010490 @ =gUnknown_2022118
+ ldr r1, _08010490 @ =gBlockRecvBuffer
mov r8, r1
movs r5, 0x80
lsls r5, 1
@@ -867,7 +867,7 @@ _0801047C:
b _0801049A
.align 2, 0
_0801048C: .4byte gBattleTypeFlags
-_08010490: .4byte gUnknown_2022118
+_08010490: .4byte gBlockRecvBuffer
_08010494:
ldr r0, _080104EC @ =gBattleTypeFlags
ldr r1, [r0]
@@ -1126,7 +1126,7 @@ _0801067E:
lsls r0, 8
orrs r1, r0
strh r1, [r2, 0xE]
- ldr r0, _080106EC @ =gUnknown_2022118
+ ldr r0, _080106EC @ =gBlockRecvBuffer
lsls r1, r5, 8
adds r0, 0x2
adds r1, r0
@@ -1139,7 +1139,7 @@ _0801067E:
_080106E0: .4byte sub_800F6FC
_080106E4: .4byte gTasks
_080106E8: .4byte gBattleStruct
-_080106EC: .4byte gUnknown_2022118
+_080106EC: .4byte gBlockRecvBuffer
_080106F0: .4byte gUnknown_2023E82
_080106F4:
bl sub_800A4BC
@@ -1170,7 +1170,7 @@ _0801072A:
bl ResetBlockReceivedFlags
ldr r0, _08010740 @ =gEnemyParty
lsls r1, r5, 8
- ldr r2, _08010744 @ =gUnknown_2022118
+ ldr r2, _08010744 @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl memcpy
@@ -1178,7 +1178,7 @@ _0801072A:
b _080108B2
.align 2, 0
_08010740: .4byte gEnemyParty
-_08010744: .4byte gUnknown_2022118
+_08010744: .4byte gBlockRecvBuffer
_08010748: .4byte gUnknown_2023E82
_0801074C:
bl sub_800A4BC
@@ -1209,7 +1209,7 @@ _08010782:
bl ResetBlockReceivedFlags
ldr r0, _08010798 @ =gUnknown_20240F4
lsls r1, r5, 8
- ldr r2, _0801079C @ =gUnknown_2022118
+ ldr r2, _0801079C @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl memcpy
@@ -1217,7 +1217,7 @@ _08010782:
b _080108B2
.align 2, 0
_08010798: .4byte gUnknown_20240F4
-_0801079C: .4byte gUnknown_2022118
+_0801079C: .4byte gBlockRecvBuffer
_080107A0: .4byte gUnknown_2023E82
_080107A4:
bl sub_800A4BC
@@ -1246,7 +1246,7 @@ _080107CC:
bl ResetBlockReceivedFlags
ldr r4, _08010820 @ =gUnknown_20241BC
lsls r1, r5, 8
- ldr r0, _08010824 @ =gUnknown_2022118
+ ldr r0, _08010824 @ =gBlockRecvBuffer
adds r1, r0
adds r0, r4, 0
movs r2, 0xC8
@@ -1272,7 +1272,7 @@ _080107CC:
b _080108B2
.align 2, 0
_08010820: .4byte gUnknown_20241BC
-_08010824: .4byte gUnknown_2022118
+_08010824: .4byte gBlockRecvBuffer
_08010828: .4byte 0xfffffe70
_0801082C: .4byte 0xfffffed4
_08010830: .4byte gUnknown_2023E82
@@ -1586,7 +1586,7 @@ _08010AA0:
beq _08010ABA
_08010AAC:
lsls r1, r4, 8
- ldr r0, _08010AE4 @ =gUnknown_2022118
+ ldr r0, _08010AE4 @ =gBlockRecvBuffer
adds r1, r0
ldr r0, _08010AE8 @ =gUnknown_2022B58
movs r2, 0x60
@@ -1613,7 +1613,7 @@ _08010ABA:
bl sub_8128198
b _08010B82
.align 2, 0
-_08010AE4: .4byte gUnknown_2022118
+_08010AE4: .4byte gBlockRecvBuffer
_08010AE8: .4byte gUnknown_2022B58
_08010AEC: .4byte gUnknown_2023E82
_08010AF0: .4byte gMain
@@ -1860,7 +1860,7 @@ _08010CE2:
strh r2, [r1, 0xE]
strh r2, [r1, 0x10]
adds r2, r1, 0
- ldr r0, _08010D5C @ =gUnknown_2022118
+ ldr r0, _08010D5C @ =gBlockRecvBuffer
adds r3, r0, 0x2
ldr r5, _08010D60 @ =gLinkPlayers
movs r4, 0x3F
@@ -1881,7 +1881,7 @@ _08010D4C: .4byte gDecompressionBuffer
_08010D50: .4byte gPlayerParty
_08010D54: .4byte sub_800F6FC
_08010D58: .4byte gTasks
-_08010D5C: .4byte gUnknown_2022118
+_08010D5C: .4byte gBlockRecvBuffer
_08010D60: .4byte gLinkPlayers
_08010D64:
cmp r0, 0x2
@@ -1962,7 +1962,7 @@ _08010DEE:
subs r0, r7
lsls r0, 2
mov r8, r0
- ldr r4, _08010E18 @ =gUnknown_2022118
+ ldr r4, _08010E18 @ =gBlockRecvBuffer
movs r5, 0
_08010E00:
cmp r6, r7
@@ -1978,7 +1978,7 @@ _08010E00:
beq _08010E24
b _08010EBE
.align 2, 0
-_08010E18: .4byte gUnknown_2022118
+_08010E18: .4byte gBlockRecvBuffer
_08010E1C: .4byte gLinkPlayers
_08010E20:
cmp r0, 0x3
@@ -2115,7 +2115,7 @@ _08010F0E:
subs r0, r7
lsls r0, 2
mov r8, r0
- ldr r4, _08010F38 @ =gUnknown_2022118
+ ldr r4, _08010F38 @ =gBlockRecvBuffer
movs r5, 0
_08010F20:
cmp r6, r7
@@ -2131,7 +2131,7 @@ _08010F20:
beq _08010F44
b _08010FDE
.align 2, 0
-_08010F38: .4byte gUnknown_2022118
+_08010F38: .4byte gBlockRecvBuffer
_08010F3C: .4byte gLinkPlayers
_08010F40:
cmp r0, 0x3
@@ -2375,7 +2375,7 @@ sub_8011100: @ 8011100
ands r0, r1
cmp r0, 0
beq _08011158
- ldr r2, _08011168 @ =gUnknown_20370D0
+ ldr r2, _08011168 @ =gSpecialVar_Result
ldr r1, _0801116C @ =gUnknown_2023E8A
movs r0, 0x3
strb r0, [r1]
@@ -2398,7 +2398,7 @@ _08011158:
.align 2, 0
_08011160: .4byte gMain
_08011164: .4byte gBattleTypeFlags
-_08011168: .4byte gUnknown_20370D0
+_08011168: .4byte gSpecialVar_Result
_0801116C: .4byte gUnknown_2023E8A
_08011170: .4byte CB2_QuitRecordedBattle
thumb_func_end sub_8011100
@@ -11652,7 +11652,7 @@ _08015B74:
cmp r0, 0
bne _08015BD4
_08015B86:
- ldr r1, _08015BE8 @ =gUnknown_20370D0
+ ldr r1, _08015BE8 @ =gSpecialVar_Result
ldr r5, _08015BEC @ =gUnknown_2023E8A
ldrb r0, [r5]
strh r0, [r1]
@@ -11697,7 +11697,7 @@ _08015BD4:
_08015BDC: .4byte gBattleTypeFlags
_08015BE0: .4byte gPlayerParty
_08015BE4: .4byte gUnknown_3003F64
-_08015BE8: .4byte gUnknown_20370D0
+_08015BE8: .4byte gSpecialVar_Result
_08015BEC: .4byte gUnknown_2023E8A
_08015BF0: .4byte gMain
_08015BF4: .4byte 0x00000439
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s
index 94a49dd4e..29ae446f6 100644
--- a/asm/battle_controller_oak.s
+++ b/asm/battle_controller_oak.s
@@ -677,7 +677,7 @@ sub_80E7AC4: @ 80E7AC4
lsls r0, 24
cmp r0, 0
bne _080E7B34
- ldr r0, _080E7B20 @ =gUnknown_203AD30
+ ldr r0, _080E7B20 @ =gSpecialVar_ItemId
ldrh r0, [r0]
cmp r0, 0xD
bne _080E7B34
@@ -701,13 +701,13 @@ sub_80E7AC4: @ 80E7AC4
_080E7B14: .4byte gMain
_080E7B18: .4byte sub_8011100
_080E7B1C: .4byte gPaletteFade
-_080E7B20: .4byte gUnknown_203AD30
+_080E7B20: .4byte gSpecialVar_ItemId
_080E7B24: .4byte gBattleTypeFlags
_080E7B28: .4byte gUnknown_3004FE0
_080E7B2C: .4byte gActiveBattler
_080E7B30: .4byte sub_80E8704
_080E7B34:
- ldr r0, _080E7B48 @ =gUnknown_203AD30
+ ldr r0, _080E7B48 @ =gSpecialVar_ItemId
ldrh r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
@@ -716,7 +716,7 @@ _080E7B42:
pop {r0}
bx r0
.align 2, 0
-_080E7B48: .4byte gUnknown_203AD30
+_080E7B48: .4byte gSpecialVar_ItemId
thumb_func_end sub_80E7AC4
thumb_func_start sub_80E7B4C
@@ -2341,7 +2341,7 @@ _080E8880:
cmp r4, 0
bne _080E88AA
bl sub_80EB524
- ldr r0, _080E88B8 @ =gUnknown_203AD30
+ ldr r0, _080E88B8 @ =gSpecialVar_ItemId
ldrh r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
@@ -2357,7 +2357,7 @@ _080E88AA:
bx r0
.align 2, 0
_080E88B4: .4byte gPaletteFade
-_080E88B8: .4byte gUnknown_203AD30
+_080E88B8: .4byte gSpecialVar_ItemId
_080E88BC: .4byte gBattleStruct
thumb_func_end sub_80E8704
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index c009baf03..477f73144 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -4435,7 +4435,7 @@ CompleteWhenChoseItem: @ 803073C
ands r0, r1
cmp r0, 0
bne _08030762
- ldr r0, _08030774 @ =gUnknown_203AD30
+ ldr r0, _08030774 @ =gSpecialVar_ItemId
ldrh r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
@@ -4447,7 +4447,7 @@ _08030762:
_08030768: .4byte gMain
_0803076C: .4byte sub_8011100
_08030770: .4byte gPaletteFade
-_08030774: .4byte gUnknown_203AD30
+_08030774: .4byte gSpecialVar_ItemId
thumb_func_end CompleteWhenChoseItem
thumb_func_start CompleteOnSpecialAnimDone
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s
index 36b4f62d9..58fad294a 100644
--- a/asm/battle_controller_pokedude.s
+++ b/asm/battle_controller_pokedude.s
@@ -22,7 +22,7 @@ sub_81560A4: @ 81560A4
ldr r2, _081560D4 @ =gBattleStruct
ldr r0, [r2]
adds r0, 0x96
- ldr r1, _081560D8 @ =gUnknown_20370C0
+ ldr r1, _081560D8 @ =gSpecialVar_0x8004
ldrh r1, [r1]
strb r1, [r0]
ldr r0, [r2]
@@ -35,7 +35,7 @@ _081560C8: .4byte gUnknown_3004FE0
_081560CC: .4byte gActiveBattler
_081560D0: .4byte sub_81560DC
_081560D4: .4byte gBattleStruct
-_081560D8: .4byte gUnknown_20370C0
+_081560D8: .4byte gSpecialVar_0x8004
thumb_func_end sub_81560A4
thumb_func_start sub_81560DC
@@ -642,7 +642,7 @@ sub_8156594: @ 8156594
str r1, [r0]
bl nullsub_44
bl FreeAllWindowBuffers
- ldr r0, _081565D8 @ =gUnknown_20370C0
+ ldr r0, _081565D8 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x1
beq _081565C4
@@ -656,7 +656,7 @@ _081565C8: .4byte gPaletteFade
_081565CC: .4byte gUnknown_3004FE0
_081565D0: .4byte gActiveBattler
_081565D4: .4byte sub_81565E8
-_081565D8: .4byte gUnknown_20370C0
+_081565D8: .4byte gSpecialVar_0x8004
_081565DC:
movs r0, 0x8
_081565DE:
@@ -680,7 +680,7 @@ sub_81565E8: @ 81565E8
ands r0, r1
cmp r0, 0
bne _0815660E
- ldr r0, _08156620 @ =gUnknown_203AD30
+ ldr r0, _08156620 @ =gSpecialVar_ItemId
ldrh r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
@@ -692,7 +692,7 @@ _0815660E:
_08156614: .4byte gMain
_08156618: .4byte sub_8011100
_0815661C: .4byte gPaletteFade
-_08156620: .4byte gUnknown_203AD30
+_08156620: .4byte gSpecialVar_ItemId
thumb_func_end sub_81565E8
thumb_func_start sub_8156624
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index 10e702da5..405d4c45b 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -431,7 +431,7 @@ CompleteWhenChosePokeblock: @ 80DD85C
ands r0, r1
cmp r0, 0
bne _080DD882
- ldr r0, _080DD894 @ =gUnknown_203AD30
+ ldr r0, _080DD894 @ =gSpecialVar_ItemId
ldrh r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
@@ -443,7 +443,7 @@ _080DD882:
_080DD888: .4byte gMain
_080DD88C: .4byte sub_8011100
_080DD890: .4byte gPaletteFade
-_080DD894: .4byte gUnknown_203AD30
+_080DD894: .4byte gSpecialVar_ItemId
thumb_func_end CompleteWhenChosePokeblock
thumb_func_start CompleteOnFinishedBattleAnimation_3
diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s
index 71c39120f..8ef9408a0 100644
--- a/asm/battle_controllers.s
+++ b/asm/battle_controllers.s
@@ -1420,7 +1420,7 @@ sub_800DD28: @ 800DD28
bne _0800DE28
bl sub_80FBB4C
movs r4, 0
- ldr r0, _0800DD6C @ =gUnknown_2022118
+ ldr r0, _0800DD6C @ =gBlockRecvBuffer
mov r10, r0
b _0800DE1C
.align 2, 0
@@ -1428,7 +1428,7 @@ _0800DD5C: .4byte gUnknown_3003F64
_0800DD60: .4byte gBattleTypeFlags
_0800DD64: .4byte gLinkPlayers
_0800DD68: .4byte 0x00002211
-_0800DD6C: .4byte gUnknown_2022118
+_0800DD6C: .4byte gBlockRecvBuffer
_0800DD70:
bl GetBlockReceivedStatus
lsls r0, 24
@@ -1447,7 +1447,7 @@ _0800DD70:
lsls r0, r4, 8
mov r4, r10
adds r3, r0, r4
- ldr r1, _0800DE3C @ =gUnknown_202211C
+ ldr r1, _0800DE3C @ =gBlockRecvBuffer + 4
adds r0, r1
ldrh r6, [r0]
ldr r7, _0800DE40 @ =gTasks
@@ -1534,7 +1534,7 @@ _0800DE28:
bx r0
.align 2, 0
_0800DE38: .4byte gBitTable
-_0800DE3C: .4byte gUnknown_202211C
+_0800DE3C: .4byte gBlockRecvBuffer + 4
_0800DE40: .4byte gTasks
_0800DE44: .4byte gUnknown_202286D
_0800DE48: .4byte gUnknown_2023FF0
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index 3a27c29ea..8e109b6d6 100644
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -3770,7 +3770,7 @@ sub_804981C: @ 804981C
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _0804991C
diff --git a/asm/battle_records.s b/asm/battle_records.s
index bd847561c..392161676 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -129,7 +129,7 @@ _080CD338:
bl sub_80CD628
ldr r0, _080CD350 @ =sub_80CD38C
bl SetVBlankCallback
- ldr r0, _080CD354 @ =gUnknown_20370C0
+ ldr r0, _080CD354 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
beq _080CD358
@@ -137,7 +137,7 @@ _080CD338:
b _080CD35C
.align 2, 0
_080CD350: .4byte sub_80CD38C
-_080CD354: .4byte gUnknown_20370C0
+_080CD354: .4byte gSpecialVar_0x8004
_080CD358:
bl sub_80CDBE4
_080CD35C:
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index 1e99186bc..ed0e6cb50 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -31945,7 +31945,7 @@ _0802D5D8:
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
movs r4, 0xA
cmp r0, 0
@@ -32356,7 +32356,7 @@ sub_802D95C: @ 802D95C
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _0802D9B4
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index faa32be0e..499d565f0 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -721,13 +721,13 @@ _0807FC30:
ldrb r0, [r4]
cmp r0, 0x1
bne _0807FC40
- ldr r0, _0807FC3C @ =gUnknown_20370D0
+ ldr r0, _0807FC3C @ =gSpecialVar_Result
strh r1, [r0]
b _0807FC46
.align 2, 0
-_0807FC3C: .4byte gUnknown_20370D0
+_0807FC3C: .4byte gSpecialVar_Result
_0807FC40:
- ldr r1, _0807FC54 @ =gUnknown_20370D0
+ ldr r1, _0807FC54 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
_0807FC46:
@@ -739,7 +739,7 @@ _0807FC4C:
pop {r0}
bx r0
.align 2, 0
-_0807FC54: .4byte gUnknown_20370D0
+_0807FC54: .4byte gSpecialVar_Result
_0807FC58: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
thumb_func_end sub_807FBF0
@@ -1503,7 +1503,7 @@ battle_80801F0: @ 80801F0
ldrh r1, [r0]
cmp r1, 0
beq _08080212
- ldr r0, _0808021C @ =gUnknown_20370D2
+ ldr r0, _0808021C @ =gSpecialVar_LastTalked
strh r1, [r0]
lsls r0, r1, 24
lsrs r0, 24
@@ -1519,7 +1519,7 @@ _08080212:
bx r0
.align 2, 0
_08080218: .4byte gUnknown_20386B0
-_0808021C: .4byte gUnknown_20370D2
+_0808021C: .4byte gSpecialVar_LastTalked
_08080220: .4byte gSaveBlock1Ptr
_08080224: .4byte gUnknown_3005074
thumb_func_end battle_80801F0
@@ -1649,7 +1649,7 @@ TrainerWantsBattle: @ 8080334
lsrs r0, 24
ldr r2, _08080368 @ =gUnknown_3005074
strb r0, [r2]
- ldr r4, _0808036C @ =gUnknown_20370D2
+ ldr r4, _0808036C @ =gSpecialVar_LastTalked
ldr r3, _08080370 @ =gMapObjects
lsls r2, r0, 3
adds r2, r0
@@ -1668,7 +1668,7 @@ TrainerWantsBattle: @ 8080334
bx r0
.align 2, 0
_08080368: .4byte gUnknown_3005074
-_0808036C: .4byte gUnknown_20370D2
+_0808036C: .4byte gSpecialVar_LastTalked
_08080370: .4byte gMapObjects
_08080374: .4byte gUnknown_81A4EB4
thumb_func_end TrainerWantsBattle
@@ -1859,7 +1859,7 @@ sub_80804AC: @ 80804AC
adds r1, r0, 0
cmp r1, 0x1
bne _080804E8
- ldr r0, _080804E0 @ =gUnknown_20370D0
+ ldr r0, _080804E0 @ =gSpecialVar_Result
strh r1, [r0]
ldr r0, _080804E4 @ =gUnknown_20386CC
ldrh r0, [r0]
@@ -1871,10 +1871,10 @@ sub_80804AC: @ 80804AC
.align 2, 0
_080804D8: .4byte gUnknown_20386AC
_080804DC: .4byte gUnknown_2023E8A
-_080804E0: .4byte gUnknown_20370D0
+_080804E0: .4byte gSpecialVar_Result
_080804E4: .4byte gUnknown_20386CC
_080804E8:
- ldr r0, _08080500 @ =gUnknown_20370D0
+ ldr r0, _08080500 @ =gSpecialVar_Result
movs r1, 0
strh r1, [r0]
_080804EE:
@@ -1884,7 +1884,7 @@ _080804EE:
bl sub_81139BC
b _0808054E
.align 2, 0
-_08080500: .4byte gUnknown_20370D0
+_08080500: .4byte gSpecialVar_Result
_08080504: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
_08080508:
ldr r0, _0808051C @ =gTrainerBattleOpponent_A
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 10b07d2e0..82922b88f 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -143,8 +143,8 @@ sub_80E5A70: @ 80E5A70
add r4, sp, 0x28
movs r0, 0
strb r0, [r4]
- bl sub_80E7490
- ldr r0, _080E5AA4 @ =gUnknown_20370D0
+ bl ValidateEReaderTrainer
+ ldr r0, _080E5AA4 @ =gSpecialVar_Result
ldrh r0, [r0]
adds r7, r4, 0
cmp r0, 0
@@ -160,7 +160,7 @@ _080E5A9E:
movs r0, 0
b _080E5B02
.align 2, 0
-_080E5AA4: .4byte gUnknown_20370D0
+_080E5AA4: .4byte gSpecialVar_Result
_080E5AA8: .4byte gSaveBlock2Ptr
_080E5AAC: .4byte 0x000004a2
_080E5AB0:
@@ -1506,7 +1506,7 @@ sub_80E64C0: @ 80E64C0
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _080E6554
@@ -1747,7 +1747,7 @@ _080E6662:
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
- ldr r5, _080E6728 @ =gUnknown_20370D0
+ ldr r5, _080E6728 @ =gSpecialVar_Result
ldrb r3, [r5]
str r4, [sp]
add r0, sp, 0x10
@@ -1769,7 +1769,7 @@ _080E6662:
ldr r1, _080E672C @ =gStringVar1
movs r0, 0xFF
strb r0, [r1]
- ldr r1, _080E6730 @ =gUnknown_20370C0
+ ldr r1, _080E6730 @ =gSpecialVar_0x8004
movs r0, 0x1
strh r0, [r1]
movs r0, 0
@@ -1810,9 +1810,9 @@ _080E6704:
b _080E6742
.align 2, 0
_080E6724: .4byte gPlayerParty
-_080E6728: .4byte gUnknown_20370D0
+_080E6728: .4byte gSpecialVar_Result
_080E672C: .4byte gStringVar1
-_080E6730: .4byte gUnknown_20370C0
+_080E6730: .4byte gSpecialVar_0x8004
_080E6734: .4byte gUnknown_84020C4
_080E6738: .4byte 0x0000ffff
_080E673C: .4byte gUnknown_83FE860
@@ -1825,7 +1825,7 @@ _080E6742:
.align 2, 0
_080E674C: .4byte gUnknown_83FE864
_080E6750:
- ldr r1, _080E6780 @ =gUnknown_20370C0
+ ldr r1, _080E6780 @ =gSpecialVar_0x8004
movs r0, 0
strh r0, [r1]
ldr r0, _080E6784 @ =gSaveBlock2Ptr
@@ -1851,7 +1851,7 @@ _080E6770:
pop {r0}
bx r0
.align 2, 0
-_080E6780: .4byte gUnknown_20370C0
+_080E6780: .4byte gSpecialVar_0x8004
_080E6784: .4byte gSaveBlock2Ptr
_080E6788: .4byte 0x0000055c
thumb_func_end sub_80E6648
@@ -2053,7 +2053,7 @@ sub_80E6900: @ 80E6900
push {r4-r6,lr}
sub sp, 0x4
ldr r0, _080E691C @ =gUnknown_203AAB8
- ldr r1, _080E6920 @ =gUnknown_20370C0
+ ldr r1, _080E6920 @ =gSpecialVar_0x8004
ldrh r1, [r1]
strh r1, [r0]
ldrh r2, [r0]
@@ -2066,7 +2066,7 @@ sub_80E6900: @ 80E6900
b _080E69E6
.align 2, 0
_080E691C: .4byte gUnknown_203AAB8
-_080E6920: .4byte gUnknown_20370C0
+_080E6920: .4byte gSpecialVar_0x8004
_080E6924:
cmp r2, 0x2
beq _080E6998
@@ -2180,7 +2180,7 @@ sub_80E6A0C: @ 80E6A0C
ldrb r0, [r0]
lsls r0, 31
lsrs r5, r0, 31
- ldr r0, _080E6A3C @ =gUnknown_20370C0
+ ldr r0, _080E6A3C @ =gSpecialVar_0x8004
ldrh r0, [r0]
adds r6, r1, 0
cmp r0, 0xE
@@ -2195,7 +2195,7 @@ _080E6A28:
.align 2, 0
_080E6A34: .4byte gSaveBlock2Ptr
_080E6A38: .4byte 0x0000055c
-_080E6A3C: .4byte gUnknown_20370C0
+_080E6A3C: .4byte gSpecialVar_0x8004
_080E6A40: .4byte _080E6A44
.align 2, 0
_080E6A44:
@@ -2339,7 +2339,7 @@ _080E6B66:
adds r0, 0x1
strh r0, [r1]
bl sub_80E6E48
- ldr r1, _080E6B9C @ =gUnknown_20370D0
+ ldr r1, _080E6B9C @ =gSpecialVar_Result
ldr r0, [r6]
adds r0, r4
adds r0, r5
@@ -2354,7 +2354,7 @@ _080E6B66:
.align 2, 0
_080E6B94: .4byte 0x0000056c
_080E6B98: .4byte 0x0000270e
-_080E6B9C: .4byte gUnknown_20370D0
+_080E6B9C: .4byte gSpecialVar_Result
_080E6BA0: .4byte gStringVar1
_080E6BA4:
ldr r0, [r6]
@@ -2370,7 +2370,7 @@ _080E6BA4:
strh r0, [r2]
_080E6BBA:
bl sub_80E6E48
- ldr r0, _080E6BD4 @ =gUnknown_20370D0
+ ldr r0, _080E6BD4 @ =gSpecialVar_Result
ldr r1, [r6]
adds r1, r4
adds r1, r5
@@ -2381,7 +2381,7 @@ _080E6BC6:
.align 2, 0
_080E6BCC: .4byte 0x00000564
_080E6BD0: .4byte 0x00000595
-_080E6BD4: .4byte gUnknown_20370D0
+_080E6BD4: .4byte gSpecialVar_Result
_080E6BD8:
ldr r3, [r6]
ldr r0, _080E6BF8 @ =gSpecialVar_0x8005
@@ -2481,7 +2481,7 @@ sub_80E6C8C: @ 80E6C8C
ldrb r0, [r0]
lsls r0, 31
lsrs r4, r0, 31
- ldr r0, _080E6CBC @ =gUnknown_20370C0
+ ldr r0, _080E6CBC @ =gSpecialVar_0x8004
ldrh r0, [r0]
adds r3, r1, 0
cmp r0, 0xE
@@ -2496,7 +2496,7 @@ _080E6CA8:
.align 2, 0
_080E6CB4: .4byte gSaveBlock2Ptr
_080E6CB8: .4byte 0x0000055c
-_080E6CBC: .4byte gUnknown_20370C0
+_080E6CBC: .4byte gSpecialVar_0x8004
_080E6CC0: .4byte _080E6CC4
.align 2, 0
_080E6CC4:
@@ -2516,17 +2516,17 @@ _080E6CC4:
.4byte _080E6DD4
.4byte _080E6DF4
_080E6D00:
- ldr r0, _080E6D0C @ =gUnknown_20370D0
+ ldr r0, _080E6D0C @ =gSpecialVar_Result
ldr r1, [r3]
ldr r3, _080E6D10 @ =0x0000055e
adds r1, r3
adds r1, r4
b _080E6D60
.align 2, 0
-_080E6D0C: .4byte gUnknown_20370D0
+_080E6D0C: .4byte gSpecialVar_Result
_080E6D10: .4byte 0x0000055e
_080E6D14:
- ldr r0, _080E6D24 @ =gUnknown_20370D0
+ ldr r0, _080E6D24 @ =gSpecialVar_Result
ldr r1, [r3]
ldr r2, _080E6D28 @ =0x0000055c
adds r1, r2
@@ -2534,19 +2534,19 @@ _080E6D14:
lsls r1, 31
b _080E6D7C
.align 2, 0
-_080E6D24: .4byte gUnknown_20370D0
+_080E6D24: .4byte gSpecialVar_Result
_080E6D28: .4byte 0x0000055c
_080E6D2C:
- ldr r2, _080E6D38 @ =gUnknown_20370D0
+ ldr r2, _080E6D38 @ =gSpecialVar_Result
ldr r0, [r3]
lsls r1, r4, 1
movs r3, 0xAC
lsls r3, 3
b _080E6D44
.align 2, 0
-_080E6D38: .4byte gUnknown_20370D0
+_080E6D38: .4byte gSpecialVar_Result
_080E6D3C:
- ldr r2, _080E6D50 @ =gUnknown_20370D0
+ ldr r2, _080E6D50 @ =gSpecialVar_Result
ldr r0, [r3]
lsls r1, r4, 1
ldr r3, _080E6D54 @ =0x00000564
@@ -2557,10 +2557,10 @@ _080E6D44:
strh r0, [r2]
b _080E6E08
.align 2, 0
-_080E6D50: .4byte gUnknown_20370D0
+_080E6D50: .4byte gSpecialVar_Result
_080E6D54: .4byte 0x00000564
_080E6D58:
- ldr r0, _080E6D68 @ =gUnknown_20370D0
+ ldr r0, _080E6D68 @ =gSpecialVar_Result
ldr r1, [r3]
ldr r2, _080E6D6C @ =0x0000056c
adds r1, r2
@@ -2569,10 +2569,10 @@ _080E6D60:
strh r1, [r0]
b _080E6E08
.align 2, 0
-_080E6D68: .4byte gUnknown_20370D0
+_080E6D68: .4byte gSpecialVar_Result
_080E6D6C: .4byte 0x0000056c
_080E6D70:
- ldr r0, _080E6D84 @ =gUnknown_20370D0
+ ldr r0, _080E6D84 @ =gSpecialVar_Result
ldr r1, [r3]
ldr r3, _080E6D88 @ =0x0000055c
adds r1, r3
@@ -2583,16 +2583,16 @@ _080E6D7C:
strh r1, [r0]
b _080E6E08
.align 2, 0
-_080E6D84: .4byte gUnknown_20370D0
+_080E6D84: .4byte gSpecialVar_Result
_080E6D88: .4byte 0x0000055c
_080E6D8C:
adds r0, r4, 0
bl sub_80E7188
- ldr r1, _080E6D98 @ =gUnknown_20370D0
+ ldr r1, _080E6D98 @ =gSpecialVar_Result
strh r0, [r1]
b _080E6E08
.align 2, 0
-_080E6D98: .4byte gUnknown_20370D0
+_080E6D98: .4byte gSpecialVar_Result
_080E6D9C:
ldr r0, [r3]
ldr r1, _080E6DAC @ =0x0000057a
@@ -2868,7 +2868,7 @@ sub_80E6FB8: @ 80E6FB8
ldrb r0, [r0]
lsls r0, 31
lsrs r5, r0, 31
- ldr r0, _080E7044 @ =gUnknown_20370C0
+ ldr r0, _080E7044 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x3
beq _080E6FD4
@@ -2899,7 +2899,7 @@ _080E6FF2:
ldr r2, _080E7050 @ =0x0000055d
adds r0, r2
strb r1, [r0]
- ldr r0, _080E7044 @ =gUnknown_20370C0
+ ldr r0, _080E7044 @ =gSpecialVar_0x8004
ldrh r1, [r0]
cmp r1, 0x3
beq _080E7016
@@ -2928,7 +2928,7 @@ _080E7016:
.align 2, 0
_080E703C: .4byte gSaveBlock2Ptr
_080E7040: .4byte 0x0000055c
-_080E7044: .4byte gUnknown_20370C0
+_080E7044: .4byte gSpecialVar_0x8004
_080E7048: .4byte 0x00000564
_080E704C: .4byte gUnknown_2023E8A
_080E7050: .4byte 0x0000055d
@@ -3230,16 +3230,16 @@ sub_80E724C: @ 80E724C
ldrh r0, [r0]
ldr r1, _080E7290 @ =gStringVar1
bl sub_8099E90
- ldr r0, _080E7294 @ =gUnknown_20370D0
+ ldr r0, _080E7294 @ =gSpecialVar_Result
strh r4, [r0]
b _080E72AA
.align 2, 0
_080E7288: .4byte gSaveBlock2Ptr
_080E728C: .4byte 0x0000055c
_080E7290: .4byte gStringVar1
-_080E7294: .4byte gUnknown_20370D0
+_080E7294: .4byte gSpecialVar_Result
_080E7298:
- ldr r1, _080E72B0 @ =gUnknown_20370D0
+ ldr r1, _080E72B0 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
ldr r0, [r5]
@@ -3253,7 +3253,7 @@ _080E72AA:
pop {r0}
bx r0
.align 2, 0
-_080E72B0: .4byte gUnknown_20370D0
+_080E72B0: .4byte gSpecialVar_Result
_080E72B4: .4byte 0x0000055e
thumb_func_end sub_80E724C
@@ -3273,7 +3273,7 @@ sub_80E72B8: @ 80E72B8
beq _080E72D2
movs r7, 0x45
_080E72D2:
- ldr r4, _080E733C @ =gUnknown_20370D0
+ ldr r4, _080E733C @ =gSpecialVar_Result
movs r0, 0
strh r0, [r4]
adds r0, r1, 0
@@ -3312,7 +3312,7 @@ _080E731A:
cmp r5, 0x2
ble _080E72EA
_080E7320:
- ldr r0, _080E733C @ =gUnknown_20370D0
+ ldr r0, _080E733C @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0
beq _080E732E
@@ -3325,7 +3325,7 @@ _080E732E:
.align 2, 0
_080E7334: .4byte gSaveBlock2Ptr
_080E7338: .4byte 0x0000055c
-_080E733C: .4byte gUnknown_20370D0
+_080E733C: .4byte gSpecialVar_Result
_080E7340: .4byte 0x0000056d
_080E7344: .4byte gPlayerParty
thumb_func_end sub_80E72B8
@@ -3497,10 +3497,10 @@ _080E7488: .4byte gSaveBlock2Ptr
_080E748C: .4byte 0x000004a4
thumb_func_end sub_80E7460
- thumb_func_start sub_80E7490
-sub_80E7490: @ 80E7490
+ thumb_func_start ValidateEReaderTrainer
+ValidateEReaderTrainer: @ 80E7490
push {r4-r6,lr}
- ldr r2, _080E74C0 @ =gUnknown_20370D0
+ ldr r2, _080E74C0 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r2]
ldr r1, _080E74C4 @ =gSaveBlock2Ptr
@@ -3524,7 +3524,7 @@ _080E74AA:
strh r0, [r2]
b _080E74F6
.align 2, 0
-_080E74C0: .4byte gUnknown_20370D0
+_080E74C0: .4byte gSpecialVar_Result
_080E74C4: .4byte gSaveBlock2Ptr
_080E74C8:
movs r4, 0
@@ -3547,7 +3547,7 @@ _080E74CE:
lsls r3, 3
adds r0, r1, r3
bl sub_80E7524
- ldr r1, _080E74FC @ =gUnknown_20370D0
+ ldr r1, _080E74FC @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
_080E74F6:
@@ -3555,8 +3555,8 @@ _080E74F6:
pop {r0}
bx r0
.align 2, 0
-_080E74FC: .4byte gUnknown_20370D0
- thumb_func_end sub_80E7490
+_080E74FC: .4byte gSpecialVar_Result
+ thumb_func_end ValidateEReaderTrainer
thumb_func_start sub_80E7500
sub_80E7500: @ 80E7500
diff --git a/asm/berry.s b/asm/berry.s
index 8b9593a2a..5537e3590 100644
--- a/asm/berry.s
+++ b/asm/berry.s
@@ -89,8 +89,8 @@ _0809C7BC: .4byte 0x000030ec
_0809C7C0: .4byte 0x0100001a
thumb_func_end sub_809C794
- thumb_func_start sub_809C7C4
-sub_809C7C4: @ 809C7C4
+ thumb_func_start SetEnigmaBerry
+SetEnigmaBerry: @ 809C7C4
push {r4-r7,lr}
adds r4, r0, 0
bl sub_809C794
@@ -144,7 +144,7 @@ _0809C828: .4byte 0x000030ec
_0809C82C: .4byte 0x00003108
_0809C830: .4byte 0x00000516
_0809C834: .4byte 0x00000529
- thumb_func_end sub_809C7C4
+ thumb_func_end SetEnigmaBerry
thumb_func_start GetEnigmaBerryChecksum
GetEnigmaBerryChecksum: @ 809C838
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 304efdd74..b58832931 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -52,7 +52,7 @@ _0813CD98:
strb r0, [r1, 0x6]
movs r2, 0
ldr r6, _0813CDF0 @ =gTextFlags
- ldr r0, _0813CDF4 @ =gUnknown_203AD30
+ ldr r0, _0813CDF4 @ =gSpecialVar_ItemId
mov r12, r0
ldr r1, _0813CDF8 @ =sub_813CE30
mov r8, r1
@@ -89,7 +89,7 @@ _0813CDE2:
.align 2, 0
_0813CDEC: .4byte gUnknown_203F370
_0813CDF0: .4byte gTextFlags
-_0813CDF4: .4byte gUnknown_203AD30
+_0813CDF4: .4byte gSpecialVar_ItemId
_0813CDF8: .4byte sub_813CE30
_0813CDFC: .4byte 0x0000080c
thumb_func_end sub_813CD50
@@ -1708,7 +1708,7 @@ _0813DA9E:
bne _0813DAEC
movs r0, 0x5
bl PlaySE
- ldr r0, _0813DAE8 @ =gUnknown_203AD30
+ ldr r0, _0813DAE8 @ =gSpecialVar_ItemId
mov r1, r8
strh r1, [r0]
b _0813DB48
@@ -1717,7 +1717,7 @@ _0813DAD8: .4byte gTasks+0x8
_0813DADC: .4byte gPaletteFade
_0813DAE0: .4byte gUnknown_203F37A
_0813DAE4: .4byte gMain
-_0813DAE8: .4byte gUnknown_203AD30
+_0813DAE8: .4byte gSpecialVar_ItemId
_0813DAEC:
movs r0, 0x2
negs r0, r0
@@ -1749,11 +1749,11 @@ _0813DB10:
lsrs r1, 16
movs r0, 0x5
bl sub_809A798
- ldr r1, _0813DB34 @ =gUnknown_203AD30
+ ldr r1, _0813DB34 @ =gSpecialVar_ItemId
b _0813DB46
.align 2, 0
_0813DB30: .4byte gUnknown_203F370
-_0813DB34: .4byte gUnknown_203AD30
+_0813DB34: .4byte gSpecialVar_ItemId
_0813DB38:
ldr r0, _0813DB50 @ =gUnknown_203F36C
ldr r0, [r0]
@@ -1761,7 +1761,7 @@ _0813DB38:
cmp r5, r0
bne _0813DB58
_0813DB42:
- ldr r1, _0813DB54 @ =gUnknown_203AD30
+ ldr r1, _0813DB54 @ =gSpecialVar_ItemId
movs r0, 0
_0813DB46:
strh r0, [r1]
@@ -1771,7 +1771,7 @@ _0813DB48:
b _0813DB9E
.align 2, 0
_0813DB50: .4byte gUnknown_203F36C
-_0813DB54: .4byte gUnknown_203AD30
+_0813DB54: .4byte gSpecialVar_ItemId
_0813DB58:
bl sub_813D684
movs r0, 0x1
@@ -1789,7 +1789,7 @@ _0813DB58:
movs r0, 0x5
adds r1, r4, 0
bl sub_809A798
- ldr r1, _0813DBA8 @ =gUnknown_203AD30
+ ldr r1, _0813DBA8 @ =gSpecialVar_ItemId
strh r0, [r1]
ldr r0, _0813DBAC @ =gTasks
lsls r1, r6, 2
@@ -1810,7 +1810,7 @@ _0813DB9E:
pop {r0}
bx r0
.align 2, 0
-_0813DBA8: .4byte gUnknown_203AD30
+_0813DBA8: .4byte gSpecialVar_ItemId
_0813DBAC: .4byte gTasks
_0813DBB0: .4byte gUnknown_8464358
thumb_func_end sub_813DA68
@@ -1878,7 +1878,7 @@ _0813DC24:
cmp r0, 0x1
bne _0813DC7C
_0813DC38:
- ldr r0, _0813DC54 @ =gUnknown_203AD30
+ ldr r0, _0813DC54 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl sub_80BF6A8
lsls r0, 24
@@ -1891,7 +1891,7 @@ _0813DC38:
movs r0, 0x1
b _0813DC86
.align 2, 0
-_0813DC54: .4byte gUnknown_203AD30
+_0813DC54: .4byte gSpecialVar_ItemId
_0813DC58: .4byte gUnknown_203F384
_0813DC5C: .4byte gUnknown_84643AC
_0813DC60: .4byte gUnknown_203F388
@@ -2118,7 +2118,7 @@ sub_813DE0C: @ 813DE0C
ldrb r0, [r0, 0x4]
cmp r0, 0x4
bne _0813DE78
- ldr r4, _0813DE64 @ =gUnknown_203AD30
+ ldr r4, _0813DE64 @ =gSpecialVar_ItemId
ldrh r0, [r4]
bl ItemId_GetBattleFunc
cmp r0, 0
@@ -2129,7 +2129,7 @@ sub_813DE0C: @ 813DE0C
.align 2, 0
_0813DE5C: .4byte gUnknown_203F388
_0813DE60: .4byte gUnknown_203F370
-_0813DE64: .4byte gUnknown_203AD30
+_0813DE64: .4byte gSpecialVar_ItemId
_0813DE68:
ldrh r0, [r4]
bl ItemId_GetBattleFunc
@@ -2142,7 +2142,7 @@ _0813DE78:
lsls r0, 24
cmp r0, 0
bne _0813DEA0
- ldr r0, _0813DE9C @ =gUnknown_203AD30
+ ldr r0, _0813DE9C @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl ItemId_GetType
lsls r0, 24
@@ -2153,9 +2153,9 @@ _0813DE78:
bl sub_813E274
b _0813DEB0
.align 2, 0
-_0813DE9C: .4byte gUnknown_203AD30
+_0813DE9C: .4byte gSpecialVar_ItemId
_0813DEA0:
- ldr r0, _0813DEB8 @ =gUnknown_203AD30
+ ldr r0, _0813DEB8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl ItemId_GetFieldFunc
adds r1, r0, 0
@@ -2166,7 +2166,7 @@ _0813DEB0:
pop {r0}
bx r0
.align 2, 0
-_0813DEB8: .4byte gUnknown_203AD30
+_0813DEB8: .4byte gSpecialVar_ItemId
thumb_func_end sub_813DE0C
thumb_func_start sub_813DEBC
@@ -2494,7 +2494,7 @@ sub_813E164: @ 813E164
_0813E18A:
movs r0, 0x5
bl PlaySE
- ldr r0, _0813E1F4 @ =gUnknown_203AD30
+ ldr r0, _0813E1F4 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldrh r1, [r5, 0x10]
bl sub_809A1D8
@@ -2532,7 +2532,7 @@ _0813E1E4:
.align 2, 0
_0813E1EC: .4byte gTasks+0x8
_0813E1F0: .4byte gMain
-_0813E1F4: .4byte gUnknown_203AD30
+_0813E1F4: .4byte gSpecialVar_ItemId
_0813E1F8: .4byte gUnknown_203F37A
_0813E1FC: .4byte gUnknown_3005E70
thumb_func_end sub_813E164
@@ -2807,7 +2807,7 @@ sub_813E428: @ 813E428
lsls r0, 3
ldr r1, _0813E470 @ =gTasks+0x8
adds r4, r0, r1
- ldr r6, _0813E474 @ =gUnknown_203AD30
+ ldr r6, _0813E474 @ =gSpecialVar_ItemId
ldrh r0, [r6]
bl itemid_get_market_price
lsls r0, 16
@@ -2831,7 +2831,7 @@ sub_813E428: @ 813E428
b _0813E4CE
.align 2, 0
_0813E470: .4byte gTasks+0x8
-_0813E474: .4byte gUnknown_203AD30
+_0813E474: .4byte gSpecialVar_ItemId
_0813E478: .4byte gStringVar1
_0813E47C: .4byte gStringVar4
_0813E480: .4byte gUnknown_84168F1
@@ -3185,7 +3185,7 @@ sub_813E768: @ 813E768
bl PutWindowTilemap
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
- ldr r0, _0813E7D8 @ =gUnknown_203AD30
+ ldr r0, _0813E7D8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _0813E7DC @ =gStringVar1
bl sub_8099E90
@@ -3219,7 +3219,7 @@ sub_813E768: @ 813E768
bx r0
.align 2, 0
_0813E7D4: .4byte gTasks+0x8
-_0813E7D8: .4byte gUnknown_203AD30
+_0813E7D8: .4byte gSpecialVar_ItemId
_0813E7DC: .4byte gStringVar1
_0813E7E0: .4byte gStringVar3
_0813E7E4: .4byte gStringVar4
@@ -3246,7 +3246,7 @@ sub_813E7F0: @ 813E7F0
mov r8, r1
movs r0, 0xF8
bl PlaySE
- ldr r5, _0813E8C0 @ =gUnknown_203AD30
+ ldr r5, _0813E8C0 @ =gSpecialVar_ItemId
ldrh r0, [r5]
mov r2, r8
ldrh r1, [r2, 0x10]
@@ -3319,7 +3319,7 @@ sub_813E7F0: @ 813E7F0
bx r0
.align 2, 0
_0813E8BC: .4byte gTasks+0x8
-_0813E8C0: .4byte gUnknown_203AD30
+_0813E8C0: .4byte gSpecialVar_ItemId
_0813E8C4: .4byte gSaveBlock1Ptr
_0813E8C8: .4byte gUnknown_203F37A
_0813E8CC: .4byte gUnknown_3005E70
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 1d49bfcaa..03b1e3497 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -243,7 +243,7 @@ sub_80808F0: @ 80808F0
lsrs r1, r0, 24
cmp r1, 0
bne _08080934
- ldr r0, _08080928 @ =gUnknown_202271A
+ ldr r0, _08080928 @ =gLinkType
strh r1, [r0]
ldr r1, _0808092C @ =gTasks
lsls r0, r4, 2
@@ -256,7 +256,7 @@ sub_80808F0: @ 80808F0
b _08080936
.align 2, 0
_08080924: .4byte gMain
-_08080928: .4byte gUnknown_202271A
+_08080928: .4byte gLinkType
_0808092C: .4byte gTasks
_08080930: .4byte sub_8080FB4
_08080934:
@@ -290,7 +290,7 @@ _08080952:
.align 2, 0
_08080964: .4byte gMain
_08080968:
- ldr r1, _08080984 @ =gUnknown_202271A
+ ldr r1, _08080984 @ =gLinkType
movs r0, 0
strh r0, [r1]
ldr r1, _08080988 @ =gTasks
@@ -306,7 +306,7 @@ _0808097E:
pop {r1}
bx r1
.align 2, 0
-_08080984: .4byte gUnknown_202271A
+_08080984: .4byte gLinkType
_08080988: .4byte gTasks
_0808098C: .4byte sub_8080FB4
thumb_func_end sub_808093C
@@ -696,7 +696,7 @@ sub_8080C6C: @ 8080C6C
_08080CB0: .4byte gTasks
_08080CB4: .4byte sub_8080FF0
_08080CB8:
- ldr r4, _08080CD4 @ =gUnknown_20370D0
+ ldr r4, _08080CD4 @ =gSpecialVar_Result
adds r0, r7, 0
adds r1, r6, 0
bl sub_8080844
@@ -712,7 +712,7 @@ _08080CCE:
pop {r0}
bx r0
.align 2, 0
-_08080CD4: .4byte gUnknown_20370D0
+_08080CD4: .4byte gSpecialVar_Result
_08080CD8: .4byte sub_8080DC0
thumb_func_end sub_8080C6C
@@ -736,7 +736,7 @@ sub_8080CDC: @ 8080CDC
bl sub_80808BC
cmp r0, 0x1
beq _08080D74
- ldr r4, _08080D34 @ =gUnknown_20370D0
+ ldr r4, _08080D34 @ =gSpecialVar_Result
adds r0, r7, 0
adds r1, r6, 0
bl sub_8080844
@@ -757,7 +757,7 @@ sub_8080CDC: @ 8080CDC
b _08080D72
.align 2, 0
_08080D30: .4byte gTasks
-_08080D34: .4byte gUnknown_20370D0
+_08080D34: .4byte gSpecialVar_Result
_08080D38: .4byte sub_8080F78
_08080D3C:
cmp r2, 0x7
@@ -780,7 +780,7 @@ _08080D54:
strb r0, [r1]
ldrb r0, [r4]
bl sub_800A900
- ldr r0, _08080D84 @ =gUnknown_2022618
+ ldr r0, _08080D84 @ =gBlockSendBuffer
bl sub_80898E8
ldr r0, _08080D88 @ =sub_8080E6C
_08080D72:
@@ -792,7 +792,7 @@ _08080D74:
.align 2, 0
_08080D7C: .4byte gUnknown_3005030
_08080D80: .4byte gUnknown_300502C
-_08080D84: .4byte gUnknown_2022618
+_08080D84: .4byte gBlockSendBuffer
_08080D88: .4byte sub_8080E6C
thumb_func_end sub_8080CDC
@@ -838,7 +838,7 @@ sub_8080DC0: @ 8080DC0
bl sub_80808BC
cmp r0, 0x1
beq _08080E50
- ldr r0, _08080DE8 @ =gUnknown_20370D0
+ ldr r0, _08080DE8 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0x4
bne _08080DEC
@@ -848,7 +848,7 @@ sub_8080DC0: @ 8080DC0
bl sub_800AAC0
b _08080E02
.align 2, 0
-_08080DE8: .4byte gUnknown_20370D0
+_08080DE8: .4byte gSpecialVar_Result
_08080DEC:
cmp r0, 0x3
bne _08080DF6
@@ -883,7 +883,7 @@ _08080E20:
strb r0, [r1]
ldrb r0, [r4]
bl sub_800A900
- ldr r0, _08080E60 @ =gUnknown_2022618
+ ldr r0, _08080E60 @ =gBlockSendBuffer
bl sub_80898E8
ldr r1, _08080E64 @ =gTasks
lsls r0, r5, 2
@@ -901,7 +901,7 @@ _08080E50:
.align 2, 0
_08080E58: .4byte gUnknown_3005030
_08080E5C: .4byte gUnknown_300502C
-_08080E60: .4byte gUnknown_2022618
+_08080E60: .4byte gBlockSendBuffer
_08080E64: .4byte gTasks
_08080E68: .4byte sub_8080E6C
thumb_func_end sub_8080DC0
@@ -941,7 +941,7 @@ _08080E9A:
cmp r0, 0x1
bls _08080EDC
lsls r1, r5, 8
- ldr r0, _08080ED4 @ =gUnknown_2022118
+ ldr r0, _08080ED4 @ =gBlockRecvBuffer
adds r1, r0
ldr r0, _08080ED8 @ =gUnknown_2039624
lsls r4, r5, 1
@@ -957,11 +957,11 @@ _08080E9A:
b _08080EF2
.align 2, 0
_08080ED0: .4byte gLinkPlayers
-_08080ED4: .4byte gUnknown_2022118
+_08080ED4: .4byte gBlockRecvBuffer
_08080ED8: .4byte gUnknown_2039624
_08080EDC:
lsls r1, r5, 8
- ldr r0, _08080F3C @ =gUnknown_2022118
+ ldr r0, _08080F3C @ =gBlockRecvBuffer
adds r1, r0
ldr r2, _08080F40 @ =gUnknown_2039624
lsls r0, r5, 1
@@ -984,11 +984,11 @@ _08080EF8:
bl SetSuppressLinkErrorMessage
bl ResetBlockReceivedFlags
bl HideFieldMessageBox
- ldr r0, _08080F44 @ =gUnknown_20370D0
+ ldr r0, _08080F44 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0x1
bne _08080F54
- ldr r0, _08080F48 @ =gUnknown_202271A
+ ldr r0, _08080F48 @ =gLinkType
ldrh r1, [r0]
ldr r0, _08080F4C @ =0x00004411
ldr r0, _08080F50 @ =gTasks
@@ -1003,10 +1003,10 @@ _08080EF8:
bl DestroyTask
b _08080F66
.align 2, 0
-_08080F3C: .4byte gUnknown_2022118
+_08080F3C: .4byte gBlockRecvBuffer
_08080F40: .4byte gUnknown_2039624
-_08080F44: .4byte gUnknown_20370D0
-_08080F48: .4byte gUnknown_202271A
+_08080F44: .4byte gSpecialVar_Result
+_08080F48: .4byte gLinkType
_08080F4C: .4byte 0x00004411
_08080F50: .4byte gTasks
_08080F54:
@@ -1065,7 +1065,7 @@ sub_8080FB4: @ 8080FB4
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, _08080FE8 @ =gUnknown_20370D0
+ ldr r1, _08080FE8 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
ldr r1, _08080FEC @ =gTasks
@@ -1083,7 +1083,7 @@ sub_8080FB4: @ 8080FB4
pop {r0}
bx r0
.align 2, 0
-_08080FE8: .4byte gUnknown_20370D0
+_08080FE8: .4byte gSpecialVar_Result
_08080FEC: .4byte gTasks
thumb_func_end sub_8080FB4
@@ -1093,7 +1093,7 @@ sub_8080FF0: @ 8080FF0
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, _08081024 @ =gUnknown_20370D0
+ ldr r1, _08081024 @ =gSpecialVar_Result
movs r0, 0x6
strh r0, [r1]
ldr r1, _08081028 @ =gTasks
@@ -1111,7 +1111,7 @@ sub_8080FF0: @ 8080FF0
pop {r0}
bx r0
.align 2, 0
-_08081024: .4byte gUnknown_20370D0
+_08081024: .4byte gSpecialVar_Result
_08081028: .4byte gTasks
thumb_func_end sub_8080FF0
@@ -1153,7 +1153,7 @@ sub_8081064: @ 8081064
push {r4,lr}
movs r3, 0x2
movs r2, 0x2
- ldr r0, _0808107C @ =gUnknown_20370C0
+ ldr r0, _0808107C @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x2
beq _08081098
@@ -1163,31 +1163,31 @@ sub_8081064: @ 8081064
beq _08081086
b _080810B4
.align 2, 0
-_0808107C: .4byte gUnknown_20370C0
+_0808107C: .4byte gSpecialVar_0x8004
_08081080:
cmp r0, 0x5
beq _080810A8
b _080810B4
_08081086:
movs r3, 0x2
- ldr r1, _08081090 @ =gUnknown_202271A
+ ldr r1, _08081090 @ =gLinkType
ldr r4, _08081094 @ =0x00002233
b _080810B0
.align 2, 0
-_08081090: .4byte gUnknown_202271A
+_08081090: .4byte gLinkType
_08081094: .4byte 0x00002233
_08081098:
movs r3, 0x2
- ldr r1, _080810A0 @ =gUnknown_202271A
+ ldr r1, _080810A0 @ =gLinkType
ldr r4, _080810A4 @ =0x00002244
b _080810B0
.align 2, 0
-_080810A0: .4byte gUnknown_202271A
+_080810A0: .4byte gLinkType
_080810A4: .4byte 0x00002244
_080810A8:
movs r3, 0x4
movs r2, 0x4
- ldr r1, _080810C4 @ =gUnknown_202271A
+ ldr r1, _080810C4 @ =gLinkType
ldr r4, _080810C8 @ =0x00002255
_080810B0:
adds r0, r4, 0
@@ -1200,14 +1200,14 @@ _080810B4:
pop {r0}
bx r0
.align 2, 0
-_080810C4: .4byte gUnknown_202271A
+_080810C4: .4byte gLinkType
_080810C8: .4byte 0x00002255
thumb_func_end sub_8081064
thumb_func_start sub_80810CC
sub_80810CC: @ 80810CC
push {lr}
- ldr r1, _080810E8 @ =gUnknown_202271A
+ ldr r1, _080810E8 @ =gLinkType
ldr r2, _080810EC @ =0x00001133
adds r0, r2, 0
strh r0, [r1]
@@ -1220,7 +1220,7 @@ sub_80810CC: @ 80810CC
pop {r0}
bx r0
.align 2, 0
-_080810E8: .4byte gUnknown_202271A
+_080810E8: .4byte gLinkType
_080810EC: .4byte 0x00001133
_080810F0: .4byte gBattleTypeFlags
thumb_func_end sub_80810CC
@@ -1228,10 +1228,10 @@ _080810F0: .4byte gBattleTypeFlags
thumb_func_start sub_80810F4
sub_80810F4: @ 80810F4
push {lr}
- ldr r1, _08081118 @ =gUnknown_20370D0
+ ldr r1, _08081118 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
- ldr r1, _0808111C @ =gUnknown_202271A
+ ldr r1, _0808111C @ =gLinkType
ldr r2, _08081120 @ =0x00003311
adds r0, r2, 0
strh r0, [r1]
@@ -1244,8 +1244,8 @@ sub_80810F4: @ 80810F4
pop {r0}
bx r0
.align 2, 0
-_08081118: .4byte gUnknown_20370D0
-_0808111C: .4byte gUnknown_202271A
+_08081118: .4byte gSpecialVar_Result
+_0808111C: .4byte gLinkType
_08081120: .4byte 0x00003311
_08081124: .4byte gBattleTypeFlags
thumb_func_end sub_80810F4
@@ -1253,7 +1253,7 @@ _08081124: .4byte gBattleTypeFlags
thumb_func_start sub_8081128
sub_8081128: @ 8081128
push {lr}
- ldr r1, _08081144 @ =gUnknown_202271A
+ ldr r1, _08081144 @ =gLinkType
ldr r2, _08081148 @ =0x00006601
adds r0, r2, 0
strh r0, [r1]
@@ -1266,7 +1266,7 @@ sub_8081128: @ 8081128
pop {r0}
bx r0
.align 2, 0
-_08081144: .4byte gUnknown_202271A
+_08081144: .4byte gLinkType
_08081148: .4byte 0x00006601
_0808114C: .4byte gBattleTypeFlags
thumb_func_end sub_8081128
@@ -1284,7 +1284,7 @@ sub_8081150: @ 8081150
.align 2, 0
_08081164: .4byte sub_80811FC
_08081168:
- ldr r0, _0808117C @ =gUnknown_20370C0
+ ldr r0, _0808117C @ =gSpecialVar_0x8004
ldrh r0, [r0]
subs r0, 0x1
cmp r0, 0x4
@@ -1295,7 +1295,7 @@ _08081168:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_0808117C: .4byte gUnknown_20370C0
+_0808117C: .4byte gSpecialVar_0x8004
_08081180: .4byte _08081184
.align 2, 0
_08081184:
@@ -1305,35 +1305,35 @@ _08081184:
.4byte _080811D8
.4byte _080811B8
_08081198:
- ldr r1, _080811A0 @ =gUnknown_202271A
+ ldr r1, _080811A0 @ =gLinkType
ldr r2, _080811A4 @ =0x00002233
b _080811DC
.align 2, 0
-_080811A0: .4byte gUnknown_202271A
+_080811A0: .4byte gLinkType
_080811A4: .4byte 0x00002233
_080811A8:
- ldr r1, _080811B0 @ =gUnknown_202271A
+ ldr r1, _080811B0 @ =gLinkType
ldr r2, _080811B4 @ =0x00002244
b _080811DC
.align 2, 0
-_080811B0: .4byte gUnknown_202271A
+_080811B0: .4byte gLinkType
_080811B4: .4byte 0x00002244
_080811B8:
- ldr r1, _080811C0 @ =gUnknown_202271A
+ ldr r1, _080811C0 @ =gLinkType
ldr r2, _080811C4 @ =0x00002255
b _080811DC
.align 2, 0
-_080811C0: .4byte gUnknown_202271A
+_080811C0: .4byte gLinkType
_080811C4: .4byte 0x00002255
_080811C8:
- ldr r1, _080811D0 @ =gUnknown_202271A
+ ldr r1, _080811D0 @ =gLinkType
ldr r2, _080811D4 @ =0x00001111
b _080811DC
.align 2, 0
-_080811D0: .4byte gUnknown_202271A
+_080811D0: .4byte gLinkType
_080811D4: .4byte 0x00001111
_080811D8:
- ldr r1, _080811F0 @ =gUnknown_202271A
+ ldr r1, _080811F0 @ =gLinkType
ldr r2, _080811F4 @ =0x00003322
_080811DC:
adds r0, r2, 0
@@ -1348,7 +1348,7 @@ _080811EC:
pop {r1}
bx r1
.align 2, 0
-_080811F0: .4byte gUnknown_202271A
+_080811F0: .4byte gLinkType
_080811F4: .4byte 0x00003322
_080811F8: .4byte sub_80811FC
thumb_func_end sub_8081150
@@ -1537,14 +1537,14 @@ _0808135C:
movs r0, 0x1
movs r1, 0
bl fade_screen
- ldr r1, _08081374 @ =gUnknown_202271A
+ ldr r1, _08081374 @ =gLinkType
ldr r2, _08081378 @ =0x00002211
adds r0, r2, 0
strh r0, [r1]
bl sub_800A068
b _080813AA
.align 2, 0
-_08081374: .4byte gUnknown_202271A
+_08081374: .4byte gLinkType
_08081378: .4byte 0x00002211
_0808137C:
ldr r0, _08081388 @ =gPaletteFade
@@ -1597,7 +1597,7 @@ _080813D4:
lsls r0, 1
bl PlayMapChosenOrBattleBGM
_080813DC:
- ldr r0, _080813F0 @ =gUnknown_20370C0
+ ldr r0, _080813F0 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x2
beq _08081404
@@ -1607,7 +1607,7 @@ _080813DC:
beq _080813FA
b _0808141A
.align 2, 0
-_080813F0: .4byte gUnknown_20370C0
+_080813F0: .4byte gSpecialVar_0x8004
_080813F4:
cmp r0, 0x5
beq _08081410
@@ -1694,7 +1694,7 @@ _080814A0:
movs r0, 0x1
movs r1, 0
bl fade_screen
- ldr r0, _080814BC @ =gUnknown_202271A
+ ldr r0, _080814BC @ =gLinkType
ldr r2, _080814C0 @ =0x00002211
adds r1, r2, 0
strh r1, [r0]
@@ -1703,7 +1703,7 @@ _080814A0:
strh r0, [r6]
b _0808160A
.align 2, 0
-_080814BC: .4byte gUnknown_202271A
+_080814BC: .4byte gLinkType
_080814C0: .4byte 0x00002211
_080814C4:
ldr r0, _080814D8 @ =gPaletteFade
@@ -1720,7 +1720,7 @@ _080814D2:
.align 2, 0
_080814D8: .4byte gPaletteFade
_080814DC:
- ldr r1, _080814EC @ =gUnknown_2022720
+ ldr r1, _080814EC @ =gLocalLinkPlayer
movs r0, 0
movs r2, 0x1C
bl SendBlock
@@ -1728,7 +1728,7 @@ _080814DC:
strh r0, [r6]
b _0808160A
.align 2, 0
-_080814EC: .4byte gUnknown_2022720
+_080814EC: .4byte gLocalLinkPlayer
_080814F0:
bl GetBlockReceivedStatus
adds r4, r0, 0
@@ -1746,7 +1746,7 @@ _08081504:
_0808150C: .4byte gLinkPlayers
_08081510:
lsls r1, r4, 8
- ldr r2, _08081548 @ =gUnknown_2022118
+ ldr r2, _08081548 @ =gBlockRecvBuffer
adds r0, r5, 0
adds r1, r2
ldm r1!, {r2,r3,r7}
@@ -1772,7 +1772,7 @@ _08081536:
strh r0, [r6]
b _0808160A
.align 2, 0
-_08081548: .4byte gUnknown_2022118
+_08081548: .4byte gBlockRecvBuffer
_0808154C:
ldrh r0, [r6, 0x2]
adds r0, 0x1
@@ -1818,7 +1818,7 @@ _080815A0:
ldr r0, _080815B8 @ =gLinkPlayers
ldr r1, _080815BC @ =0x00002211
str r1, [r0, 0x14]
- ldr r0, _080815C0 @ =gUnknown_20370C0
+ ldr r0, _080815C0 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x2
beq _080815D4
@@ -1830,7 +1830,7 @@ _080815A0:
.align 2, 0
_080815B8: .4byte gLinkPlayers
_080815BC: .4byte 0x00002211
-_080815C0: .4byte gUnknown_20370C0
+_080815C0: .4byte gSpecialVar_0x8004
_080815C4:
cmp r0, 0x5
beq _080815E0
@@ -1927,7 +1927,7 @@ sub_8081668: @ 8081668
bl LoadPlayerParty
bl SavePlayerBag
bl sub_81134B8
- ldr r0, _080816B8 @ =gUnknown_20370C0
+ ldr r0, _080816B8 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x5
beq _0808170A
@@ -1950,7 +1950,7 @@ sub_8081668: @ 8081668
.align 2, 0
_080816B0: .4byte gBattleTypeFlags
_080816B4: .4byte 0x0000ffdf
-_080816B8: .4byte gUnknown_20370C0
+_080816B8: .4byte gSpecialVar_0x8004
_080816BC: .4byte gUnknown_300502C
_080816C0: .4byte gUnknown_3003F3C
_080816C4: .4byte gUnknown_2023E8A
@@ -2015,7 +2015,7 @@ _08081740: .4byte sub_806FB7C
thumb_func_start sub_8081744
sub_8081744: @ 8081744
push {lr}
- ldr r0, _0808176C @ =gUnknown_20370C0
+ ldr r0, _0808176C @ =gSpecialVar_0x8004
ldrh r1, [r0]
subs r0, r1, 0x1
lsls r0, 16
@@ -2033,7 +2033,7 @@ _08081760:
pop {r0}
bx r0
.align 2, 0
-_0808176C: .4byte gUnknown_20370C0
+_0808176C: .4byte gSpecialVar_0x8004
thumb_func_end sub_8081744
thumb_func_start sub_8081770
@@ -2343,7 +2343,7 @@ sub_80819B8: @ 80819B8
thumb_func_start sub_80819C8
sub_80819C8: @ 80819C8
push {lr}
- ldr r1, _080819E4 @ =gUnknown_202271A
+ ldr r1, _080819E4 @ =gLinkType
ldr r2, _080819E8 @ =0x00002211
adds r0, r2, 0
strh r0, [r1]
@@ -2355,7 +2355,7 @@ sub_80819C8: @ 80819C8
bl sub_8081828
b _080819FA
.align 2, 0
-_080819E4: .4byte gUnknown_202271A
+_080819E4: .4byte gLinkType
_080819E8: .4byte 0x00002211
_080819EC: .4byte gUnknown_3003F3C
_080819F0: .4byte sub_8081454
@@ -2385,14 +2385,14 @@ _08081A18: .4byte sub_808177C
thumb_func_start sp02A_crash_sound
sp02A_crash_sound: @ 8081A1C
push {lr}
- ldr r0, _08081A2C @ =gUnknown_20370C4
+ ldr r0, _08081A2C @ =gSpecialVar_0x8006
ldrb r0, [r0]
ldr r1, _08081A30 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
bl sub_808B700
pop {r0}
bx r0
.align 2, 0
-_08081A2C: .4byte gUnknown_20370C4
+_08081A2C: .4byte gSpecialVar_0x8006
_08081A30: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
thumb_func_end sp02A_crash_sound
@@ -2402,7 +2402,7 @@ sub_8081A34: @ 8081A34
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _08081A74 @ =gUnknown_20370C4
+ ldr r0, _08081A74 @ =gSpecialVar_0x8006
strh r4, [r0]
ldr r0, _08081A78 @ =gStringVar1
lsls r1, r4, 3
@@ -2427,7 +2427,7 @@ sub_8081A34: @ 8081A34
movs r0, 0x1
b _08081A8A
.align 2, 0
-_08081A74: .4byte gUnknown_20370C4
+_08081A74: .4byte gSpecialVar_0x8006
_08081A78: .4byte gStringVar1
_08081A7C: .4byte gLinkPlayers + 8
_08081A80: .4byte gStringVar2
diff --git a/asm/daycare.s b/asm/daycare.s
index f6bc7b0e1..3b7d7ffe0 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -458,7 +458,7 @@ TakePokemonFromDaycare: @ 8045728
movs r1, 0xBE
lsls r1, 6
adds r0, r1
- ldr r1, _08045748 @ =gUnknown_20370C0
+ ldr r1, _08045748 @ =gSpecialVar_0x8004
ldrb r1, [r1]
bl TakeSelectedPokemonMonFromDaycareShiftSlots
lsls r0, 16
@@ -467,7 +467,7 @@ TakePokemonFromDaycare: @ 8045728
bx r1
.align 2, 0
_08045744: .4byte gSaveBlock1Ptr
-_08045748: .4byte gUnknown_20370C0
+_08045748: .4byte gSpecialVar_0x8004
thumb_func_end TakePokemonFromDaycare
thumb_func_start GetLevelAfterDaycareSteps
@@ -598,7 +598,7 @@ GetDaycareCost: @ 8045838
movs r1, 0xBE
lsls r1, 6
adds r0, r1
- ldr r1, _08045858 @ =gUnknown_20370C0
+ ldr r1, _08045858 @ =gSpecialVar_0x8004
ldrb r1, [r1]
bl GetDaycareCostForMon
ldr r1, _0804585C @ =gSpecialVar_0x8005
@@ -607,7 +607,7 @@ GetDaycareCost: @ 8045838
bx r0
.align 2, 0
_08045854: .4byte gSaveBlock1Ptr
-_08045858: .4byte gUnknown_20370C0
+_08045858: .4byte gSpecialVar_0x8004
_0804585C: .4byte gSpecialVar_0x8005
thumb_func_end GetDaycareCost
@@ -644,7 +644,7 @@ _08045894: .4byte 0x00003d20
GetNumLevelsGainedFromDaycare: @ 8045898
push {r4-r6,lr}
ldr r6, _080458C0 @ =gSaveBlock1Ptr
- ldr r5, _080458C4 @ =gUnknown_20370C0
+ ldr r5, _080458C4 @ =gSpecialVar_0x8004
ldrh r0, [r5]
movs r4, 0x8C
adds r1, r0, 0
@@ -662,7 +662,7 @@ GetNumLevelsGainedFromDaycare: @ 8045898
b _080458E0
.align 2, 0
_080458C0: .4byte gSaveBlock1Ptr
-_080458C4: .4byte gUnknown_20370C0
+_080458C4: .4byte gSpecialVar_0x8004
_080458C8:
ldrh r0, [r5]
adds r1, r0, 0
@@ -2076,13 +2076,13 @@ _08046350:
str r0, [sp]
cmp r0, 0
bne _08046390
- ldr r0, _0804638C @ =gUnknown_20370C0
+ ldr r0, _0804638C @ =gSpecialVar_0x8004
strh r5, [r0]
movs r0, 0x1
b _080463AA
.align 2, 0
_08046388: .4byte gPlayerParty
-_0804638C: .4byte gUnknown_20370C0
+_0804638C: .4byte gSpecialVar_0x8004
_08046390:
subs r0, 0x1
str r0, [sp]
@@ -2990,13 +2990,13 @@ Task_HandleDaycareLevelMenuInput: @ 80469FC
_08046A2C: .4byte gTasks
_08046A30: .4byte gMain
_08046A34:
- ldr r0, _08046A3C @ =gUnknown_20370D0
+ ldr r0, _08046A3C @ =gSpecialVar_Result
strh r1, [r0]
b _08046A46
.align 2, 0
-_08046A3C: .4byte gUnknown_20370D0
+_08046A3C: .4byte gSpecialVar_Result
_08046A40:
- ldr r1, _08046A74 @ =gUnknown_20370D0
+ ldr r1, _08046A74 @ =gSpecialVar_Result
movs r0, 0x2
strh r0, [r1]
_08046A46:
@@ -3019,7 +3019,7 @@ _08046A46:
bl EnableBothScriptContexts
b _08046AAC
.align 2, 0
-_08046A74: .4byte gUnknown_20370D0
+_08046A74: .4byte gSpecialVar_Result
_08046A78: .4byte gTasks
_08046A7C:
movs r1, 0x2
@@ -3027,7 +3027,7 @@ _08046A7C:
ands r0, r2
cmp r0, 0
beq _08046AAC
- ldr r0, _08046AB4 @ =gUnknown_20370D0
+ ldr r0, _08046AB4 @ =gSpecialVar_Result
strh r1, [r0]
ldrb r0, [r4, 0x8]
movs r1, 0
@@ -3046,7 +3046,7 @@ _08046AAC:
pop {r0}
bx r0
.align 2, 0
-_08046AB4: .4byte gUnknown_20370D0
+_08046AB4: .4byte gSpecialVar_Result
thumb_func_end Task_HandleDaycareLevelMenuInput
thumb_func_start ShowDaycareLevelMenu
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 1b4879bf3..0ec71e087 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -495,7 +495,7 @@ _080BDA74:
thumb_func_start sub_80BDA7C
sub_80BDA7C: @ 80BDA7C
push {r4,r5,lr}
- ldr r0, _080BDA90 @ =gUnknown_20370C0
+ ldr r0, _080BDA90 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x1
beq _080BDAB4
@@ -505,7 +505,7 @@ sub_80BDA7C: @ 80BDA7C
beq _080BDA9E
b _080BDB08
.align 2, 0
-_080BDA90: .4byte gUnknown_20370C0
+_080BDA90: .4byte gSpecialVar_0x8004
_080BDA94:
cmp r0, 0x2
beq _080BDADC
@@ -622,8 +622,8 @@ _080BDB68: .4byte gSaveBlock1Ptr
_080BDB6C: .4byte 0x00002f10
thumb_func_end sub_80BDB48
- thumb_func_start sub_80BDB70
-sub_80BDB70: @ 80BDB70
+ thumb_func_start EnableRareWord
+EnableRareWord: @ 80BDB70
push {lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -648,7 +648,7 @@ _080BDB94:
.align 2, 0
_080BDB98: .4byte gSaveBlock1Ptr
_080BDB9C: .4byte 0x00002f10
- thumb_func_end sub_80BDB70
+ thumb_func_end EnableRareWord
thumb_func_start sub_80BDBA0
sub_80BDBA0: @ 80BDBA0
@@ -687,7 +687,7 @@ sub_80BDBCC: @ 80BDBCC
b _080BDC32
_080BDBDC:
adds r0, r5, 0
- bl sub_80BDB70
+ bl EnableRareWord
ldr r0, _080BDBF4 @ =0x000001ff
ands r4, r0
movs r1, 0xA0
@@ -841,7 +841,7 @@ _080BDCF6:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _080BDD16
@@ -1769,7 +1769,7 @@ _080BE3BC:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
lsrs r0, 24
b _080BE40C
@@ -1783,7 +1783,7 @@ _080BE3D6:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
lsrs r0, 24
b _080BE40C
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
index c8a1a7857..eef234a71 100644
--- a/asm/egg_hatch.s
+++ b/asm/egg_hatch.s
@@ -214,10 +214,10 @@ AddHatchedMonToParty: @ 8046D60
lsrs r4, 16
adds r0, r4, 0
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
adds r0, r4, 0
movs r1, 0x3
- bl sub_8088E74
+ bl GetSetPokedexFlag
ldr r1, _08046E1C @ =gStringVar1
adds r0, r5, 0
bl GetMonNick
@@ -258,13 +258,13 @@ _08046E1C: .4byte gStringVar1
thumb_func_start ScriptHatchMon
ScriptHatchMon: @ 8046E20
push {lr}
- ldr r0, _08046E30 @ =gUnknown_20370C0
+ ldr r0, _08046E30 @ =gSpecialVar_0x8004
ldrb r0, [r0]
bl AddHatchedMonToParty
pop {r0}
bx r0
.align 2, 0
-_08046E30: .4byte gUnknown_20370C0
+_08046E30: .4byte gSpecialVar_0x8004
thumb_func_end ScriptHatchMon
thumb_func_start sub_8046E34
@@ -332,7 +332,7 @@ sub_8046EAC: @ 8046EAC
movs r1, 0xBE
lsls r1, 6
adds r0, r1
- ldr r1, _08046ECC @ =gUnknown_20370C0
+ ldr r1, _08046ECC @ =gSpecialVar_0x8004
ldrb r1, [r1]
bl sub_8046E34
lsls r0, 24
@@ -341,7 +341,7 @@ sub_8046EAC: @ 8046EAC
bx r1
.align 2, 0
_08046EC8: .4byte gSaveBlock1Ptr
-_08046ECC: .4byte gUnknown_20370C0
+_08046ECC: .4byte gSpecialVar_0x8004
thumb_func_end sub_8046EAC
thumb_func_start sub_8046ED0
@@ -566,7 +566,7 @@ _08047090:
str r0, [r4]
bl AllocateMonSpritesGfx
ldr r2, [r4]
- ldr r0, _0804714C @ =gUnknown_20370C0
+ ldr r0, _0804714C @ =gSpecialVar_0x8004
ldrh r0, [r0]
movs r1, 0
strb r0, [r2, 0x4]
@@ -626,7 +626,7 @@ _08047090:
b _0804724A
.align 2, 0
_08047148: .4byte gUnknown_3000E74
-_0804714C: .4byte gUnknown_20370C0
+_0804714C: .4byte gSpecialVar_0x8004
_08047150: .4byte sub_8046FC0
_08047154: .4byte gSpecialVar_0x8005
_08047158: .4byte gUnknown_826019C
@@ -770,7 +770,7 @@ _0804729C: .4byte gUnknown_3000E74
thumb_func_start EggHatchSetMonNickname
EggHatchSetMonNickname: @ 80472A0
push {lr}
- ldr r0, _080472D0 @ =gUnknown_20370C0
+ ldr r0, _080472D0 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -789,7 +789,7 @@ EggHatchSetMonNickname: @ 80472A0
pop {r0}
bx r0
.align 2, 0
-_080472D0: .4byte gUnknown_20370C0
+_080472D0: .4byte gSpecialVar_0x8004
_080472D4: .4byte gPlayerParty
_080472D8: .4byte gStringVar3
_080472DC: .4byte gUnknown_3000E74
diff --git a/asm/event_data.s b/asm/event_data.s
index d620e3142..690134c27 100644
--- a/asm/event_data.s
+++ b/asm/event_data.s
@@ -170,8 +170,8 @@ _0806E224: .4byte 0x0000404e
_0806E228: .4byte gSaveBlock2Ptr
thumb_func_end sub_806E204
- thumb_func_start sub_806E22C
-sub_806E22C: @ 806E22C
+ thumb_func_start EnableNationalPokedex
+EnableNationalPokedex: @ 806E22C
push {lr}
ldr r0, _0806E250 @ =0x0000404e
bl GetVarPointer
@@ -191,7 +191,7 @@ sub_806E22C: @ 806E22C
_0806E250: .4byte 0x0000404e
_0806E254: .4byte gSaveBlock2Ptr
_0806E258: .4byte 0x00006258
- thumb_func_end sub_806E22C
+ thumb_func_end EnableNationalPokedex
thumb_func_start sub_806E25C
sub_806E25C: @ 806E25C
@@ -509,7 +509,7 @@ _0806E500: .4byte gUnknown_300507C
_0806E504: .4byte gSaveBlock1Ptr
_0806E508: .4byte 0xffff9000
_0806E50C:
- ldr r0, _0806E520 @ =gUnknown_815FD0C
+ ldr r0, _0806E520 @ =gSpecialVars
ldr r3, _0806E524 @ =0xffff8000
adds r1, r6, r3
lsls r1, 2
@@ -520,7 +520,7 @@ _0806E518:
pop {r1}
bx r1
.align 2, 0
-_0806E520: .4byte gUnknown_815FD0C
+_0806E520: .4byte gSpecialVars
_0806E524: .4byte 0xffff8000
thumb_func_end GetVarPointer
@@ -796,38 +796,38 @@ _0806E6F6:
thumb_func_start sub_806E6FC
sub_806E6FC: @ 806E6FC
- ldr r1, _0806E754 @ =gUnknown_20370B8
+ ldr r1, _0806E754 @ =gSpecialVar_0x8000
movs r0, 0
strh r0, [r1]
- ldr r1, _0806E758 @ =gUnknown_20370BA
+ ldr r1, _0806E758 @ =gSpecialVar_0x8001
strh r0, [r1]
- ldr r1, _0806E75C @ =gUnknown_20370BC
+ ldr r1, _0806E75C @ =gSpecialVar_0x8002
strh r0, [r1]
- ldr r1, _0806E760 @ =gUnknown_20370BE
+ ldr r1, _0806E760 @ =gSpecialVar_0x8003
strh r0, [r1]
- ldr r1, _0806E764 @ =gUnknown_20370C0
+ ldr r1, _0806E764 @ =gSpecialVar_0x8004
strh r0, [r1]
ldr r1, _0806E768 @ =gSpecialVar_0x8005
strh r0, [r1]
- ldr r1, _0806E76C @ =gUnknown_20370C4
+ ldr r1, _0806E76C @ =gSpecialVar_0x8006
strh r0, [r1]
- ldr r1, _0806E770 @ =gUnknown_20370C6
+ ldr r1, _0806E770 @ =gSpecialVar_0x8007
strh r0, [r1]
- ldr r1, _0806E774 @ =gUnknown_20370C8
+ ldr r1, _0806E774 @ =gSpecialVar_0x8008
strh r0, [r1]
- ldr r1, _0806E778 @ =gUnknown_20370CA
+ ldr r1, _0806E778 @ =gSpecialVar_0x8009
strh r0, [r1]
- ldr r1, _0806E77C @ =gUnknown_20370CC
+ ldr r1, _0806E77C @ =gSpecialVar_0x800A
strh r0, [r1]
- ldr r1, _0806E780 @ =gUnknown_20370CE
+ ldr r1, _0806E780 @ =gSpecialVar_0x800B
strh r0, [r1]
- ldr r1, _0806E784 @ =gUnknown_20370D4
+ ldr r1, _0806E784 @ =gSpecialVar_Facing
strh r0, [r1]
- ldr r1, _0806E788 @ =gUnknown_20370D0
+ ldr r1, _0806E788 @ =gSpecialVar_Result
strh r0, [r1]
- ldr r1, _0806E78C @ =gUnknown_203AD30
+ ldr r1, _0806E78C @ =gSpecialVar_ItemId
strh r0, [r1]
- ldr r1, _0806E790 @ =gUnknown_20370D2
+ ldr r1, _0806E790 @ =gSpecialVar_LastTalked
strh r0, [r1]
ldr r1, _0806E794 @ =gSpecialVar_MonBoxId
strh r0, [r1]
@@ -841,22 +841,22 @@ sub_806E6FC: @ 806E6FC
strh r0, [r1]
bx lr
.align 2, 0
-_0806E754: .4byte gUnknown_20370B8
-_0806E758: .4byte gUnknown_20370BA
-_0806E75C: .4byte gUnknown_20370BC
-_0806E760: .4byte gUnknown_20370BE
-_0806E764: .4byte gUnknown_20370C0
+_0806E754: .4byte gSpecialVar_0x8000
+_0806E758: .4byte gSpecialVar_0x8001
+_0806E75C: .4byte gSpecialVar_0x8002
+_0806E760: .4byte gSpecialVar_0x8003
+_0806E764: .4byte gSpecialVar_0x8004
_0806E768: .4byte gSpecialVar_0x8005
-_0806E76C: .4byte gUnknown_20370C4
-_0806E770: .4byte gUnknown_20370C6
-_0806E774: .4byte gUnknown_20370C8
-_0806E778: .4byte gUnknown_20370CA
-_0806E77C: .4byte gUnknown_20370CC
-_0806E780: .4byte gUnknown_20370CE
-_0806E784: .4byte gUnknown_20370D4
-_0806E788: .4byte gUnknown_20370D0
-_0806E78C: .4byte gUnknown_203AD30
-_0806E790: .4byte gUnknown_20370D2
+_0806E76C: .4byte gSpecialVar_0x8006
+_0806E770: .4byte gSpecialVar_0x8007
+_0806E774: .4byte gSpecialVar_0x8008
+_0806E778: .4byte gSpecialVar_0x8009
+_0806E77C: .4byte gSpecialVar_0x800A
+_0806E780: .4byte gSpecialVar_0x800B
+_0806E784: .4byte gSpecialVar_Facing
+_0806E788: .4byte gSpecialVar_Result
+_0806E78C: .4byte gSpecialVar_ItemId
+_0806E790: .4byte gSpecialVar_LastTalked
_0806E794: .4byte gSpecialVar_MonBoxId
_0806E798: .4byte gSpecialVar_MonBoxPos
_0806E79C: .4byte gUnknown_20370DA
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index 4aa868a77..f6f5a83e2 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -1252,13 +1252,13 @@ _080CE80C:
lsls r0, 16
lsrs r0, 16
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
ldrh r0, [r4, 0xC]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
- bl sub_8088E74
+ bl GetSetPokedexFlag
mov r0, r9
movs r1, 0xB
bl GetMonData
@@ -1829,13 +1829,13 @@ _080CED3A:
lsls r0, 16
lsrs r0, 16
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
ldrh r0, [r4, 0xC]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
- bl sub_8088E74
+ bl GetSetPokedexFlag
movs r0, 0xE
bl IncrementGameStat
b _080CF528
@@ -3136,13 +3136,13 @@ _080CF8A8:
lsls r0, 16
lsrs r0, 16
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
ldrh r0, [r4, 0xC]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
- bl sub_8088E74
+ bl GetSetPokedexFlag
movs r0, 0xE
bl IncrementGameStat
b _080D003A
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 4ae8ad562..9748301f7 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -938,13 +938,13 @@ _0806CFBC:
ble _0806CFB0
ldr r0, _0806CFE8 @ =gUnknown_3005074
strb r3, [r0]
- ldr r1, _0806CFEC @ =gUnknown_20370D2
+ ldr r1, _0806CFEC @ =gSpecialVar_LastTalked
adds r0, r2, r3
lsls r0, 2
adds r0, r5
ldrb r0, [r0, 0x8]
strh r0, [r1]
- ldr r0, _0806CFF0 @ =gUnknown_20370D4
+ ldr r0, _0806CFF0 @ =gSpecialVar_Facing
strh r6, [r0]
adds r0, r3, 0
bl GetFieldObjectScriptPointerByFieldObjectId
@@ -955,8 +955,8 @@ _0806CFDE:
.align 2, 0
_0806CFE4: .4byte gUnknown_2031DEC
_0806CFE8: .4byte gUnknown_3005074
-_0806CFEC: .4byte gUnknown_20370D2
-_0806CFF0: .4byte gUnknown_20370D4
+_0806CFEC: .4byte gSpecialVar_LastTalked
+_0806CFF0: .4byte gSpecialVar_Facing
thumb_func_end sub_806CF38
thumb_func_start sub_806CFF4
@@ -1046,14 +1046,14 @@ _0806D09C: .4byte gUnknown_826D2D8
_0806D0A0:
ldr r0, _0806D0D4 @ =gUnknown_3005074
strb r5, [r0]
- ldr r4, _0806D0D8 @ =gUnknown_20370D2
+ ldr r4, _0806D0D8 @ =gSpecialVar_LastTalked
ldr r1, _0806D0DC @ =gMapObjects
adds r0, r6, r5
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x8]
strh r0, [r4]
- ldr r0, _0806D0E0 @ =gUnknown_20370D4
+ ldr r0, _0806D0E0 @ =gSpecialVar_Facing
mov r1, r8
strh r1, [r0]
adds r0, r5, 0
@@ -1070,9 +1070,9 @@ _0806D0C8:
bx r1
.align 2, 0
_0806D0D4: .4byte gUnknown_3005074
-_0806D0D8: .4byte gUnknown_20370D2
+_0806D0D8: .4byte gSpecialVar_LastTalked
_0806D0DC: .4byte gMapObjects
-_0806D0E0: .4byte gUnknown_20370D4
+_0806D0E0: .4byte gSpecialVar_Facing
thumb_func_end sub_806CFF4
thumb_func_start sub_806D0E4
@@ -1165,12 +1165,12 @@ _0806D17A:
ldr r0, [r5, 0x8]
movs r1, 0x1
bl sub_80CC44C
- ldr r4, _0806D1C8 @ =gUnknown_20370C0
+ ldr r4, _0806D1C8 @ =gSpecialVar_0x8004
strh r0, [r4]
ldr r0, [r5, 0x8]
movs r1, 0x2
bl sub_80CC44C
- ldr r1, _0806D1CC @ =gUnknown_20370C4
+ ldr r1, _0806D1CC @ =gSpecialVar_0x8006
strh r0, [r1]
ldrh r0, [r4]
bl FlagGet
@@ -1178,22 +1178,22 @@ _0806D17A:
lsrs r0, 24
cmp r0, 0x1
beq _0806D164
- ldr r0, _0806D1D0 @ =gUnknown_20370D4
+ ldr r0, _0806D1D0 @ =gSpecialVar_Facing
strh r6, [r0]
ldr r0, _0806D1D4 @ =gUnknown_81A6843
b _0806D1E6
.align 2, 0
_0806D1C4: .4byte gSpecialVar_0x8005
-_0806D1C8: .4byte gUnknown_20370C0
-_0806D1CC: .4byte gUnknown_20370C4
-_0806D1D0: .4byte gUnknown_20370D4
+_0806D1C8: .4byte gSpecialVar_0x8004
+_0806D1CC: .4byte gSpecialVar_0x8006
+_0806D1D0: .4byte gSpecialVar_Facing
_0806D1D4: .4byte gUnknown_81A6843
_0806D1D8:
cmp r2, 0xFF
beq _0806D1E0
bl sub_8069A20
_0806D1E0:
- ldr r0, _0806D1EC @ =gUnknown_20370D4
+ ldr r0, _0806D1EC @ =gSpecialVar_Facing
strh r6, [r0]
ldr r0, [r5, 0x8]
_0806D1E6:
@@ -1201,7 +1201,7 @@ _0806D1E6:
pop {r1}
bx r1
.align 2, 0
-_0806D1EC: .4byte gUnknown_20370D4
+_0806D1EC: .4byte gSpecialVar_Facing
thumb_func_end sub_806D0E4
thumb_func_start sub_806D1F0
@@ -1211,7 +1211,7 @@ sub_806D1F0: @ 806D1F0
lsrs r4, r1, 24
lsls r2, 24
lsrs r5, r2, 24
- ldr r0, _0806D210 @ =gUnknown_20370D4
+ ldr r0, _0806D210 @ =gSpecialVar_Facing
strh r5, [r0]
adds r0, r4, 0
bl MetatileBehavior_IsPC
@@ -1222,7 +1222,7 @@ sub_806D1F0: @ 806D1F0
ldr r0, _0806D214 @ =gUnknown_81A6955
b _0806D53E
.align 2, 0
-_0806D210: .4byte gUnknown_20370D4
+_0806D210: .4byte gSpecialVar_Facing
_0806D214: .4byte gUnknown_81A6955
_0806D218:
adds r0, r4, 0
@@ -2114,7 +2114,7 @@ sub_806D908: @ 806D908
push {lr}
lsls r1, 24
lsrs r1, 24
- ldr r2, _0806D924 @ =gUnknown_20370D4
+ ldr r2, _0806D924 @ =gSpecialVar_Facing
strh r1, [r2]
bl ScriptContext1_SetupScript
bl sub_80699E0
@@ -2122,7 +2122,7 @@ sub_806D908: @ 806D908
pop {r0}
bx r0
.align 2, 0
-_0806D924: .4byte gUnknown_20370D4
+_0806D924: .4byte gSpecialVar_Facing
thumb_func_end sub_806D908
thumb_func_start sub_806D928
diff --git a/asm/field_poison.s b/asm/field_poison.s
index 930f5b403..f76e7db4f 100644
--- a/asm/field_poison.s
+++ b/asm/field_poison.s
@@ -196,12 +196,12 @@ _080A05B8:
adds r1, r0, 0
cmp r1, 0
beq _080A05E8
- ldr r1, _080A05CC @ =gUnknown_20370D0
+ ldr r1, _080A05CC @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
b _080A05EC
.align 2, 0
-_080A05CC: .4byte gUnknown_20370D0
+_080A05CC: .4byte gSpecialVar_Result
_080A05D0:
ldrb r0, [r4, 0x2]
bl MonFaintFromPoisonOnField
@@ -214,7 +214,7 @@ _080A05D0:
.align 2, 0
_080A05E4: .4byte gUnknown_81A5476
_080A05E8:
- ldr r0, _080A05FC @ =gUnknown_20370D0
+ ldr r0, _080A05FC @ =gSpecialVar_Result
strh r1, [r0]
_080A05EC:
bl EnableBothScriptContexts
@@ -225,7 +225,7 @@ _080A05F6:
pop {r0}
bx r0
.align 2, 0
-_080A05FC: .4byte gUnknown_20370D0
+_080A05FC: .4byte gSpecialVar_Result
thumb_func_end Task_WhiteOut
thumb_func_start ExecuteWhiteOut
diff --git a/asm/field_specials.s b/asm/field_specials.s
index c6df3442d..a4f3e6dc7 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -86,7 +86,7 @@ _080CA698: .4byte gStringVar4
thumb_func_start sub_80CA69C
sub_80CA69C: @ 80CA69C
- ldr r1, _080CA6B0 @ =gUnknown_20370C0
+ ldr r1, _080CA6B0 @ =gSpecialVar_0x8004
ldr r0, _080CA6B4 @ =gSaveBlock1Ptr
ldr r2, [r0]
ldrh r0, [r2]
@@ -96,7 +96,7 @@ sub_80CA69C: @ 80CA69C
strh r0, [r1]
bx lr
.align 2, 0
-_080CA6B0: .4byte gUnknown_20370C0
+_080CA6B0: .4byte gSpecialVar_0x8004
_080CA6B4: .4byte gSaveBlock1Ptr
_080CA6B8: .4byte gSpecialVar_0x8005
thumb_func_end sub_80CA69C
@@ -188,13 +188,13 @@ _080CA754: .4byte gUnknown_2023E8A
thumb_func_start sub_80CA758
sub_80CA758: @ 80CA758
push {lr}
- ldr r0, _080CA768 @ =gUnknown_20370C0
+ ldr r0, _080CA768 @ =gSpecialVar_0x8004
ldrh r0, [r0]
bl FlagSet
pop {r0}
bx r0
.align 2, 0
-_080CA768: .4byte gUnknown_20370C0
+_080CA768: .4byte gSpecialVar_0x8004
thumb_func_end sub_80CA758
thumb_func_start sub_80CA76C
@@ -441,14 +441,14 @@ _080CA92C:
_080CA92E:
cmp r6, 0
beq _080CA954
- ldr r0, _080CA940 @ =gUnknown_20370C0
+ ldr r0, _080CA940 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
bne _080CA944
movs r4, 0x62
b _080CA96E
.align 2, 0
-_080CA940: .4byte gUnknown_20370C0
+_080CA940: .4byte gSpecialVar_0x8004
_080CA944:
cmp r0, 0x1
beq _080CA94C
@@ -460,14 +460,14 @@ _080CA94C:
.align 2, 0
_080CA950: .4byte 0x0000028f
_080CA954:
- ldr r0, _080CA960 @ =gUnknown_20370C0
+ ldr r0, _080CA960 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
bne _080CA964
movs r4, 0x63
b _080CA96E
.align 2, 0
-_080CA960: .4byte gUnknown_20370C0
+_080CA960: .4byte gSpecialVar_0x8004
_080CA964:
cmp r0, 0x1
beq _080CA96C
@@ -536,14 +536,14 @@ _080CA9D6:
_080CA9D8:
movs r5, 0xFF
_080CA9DA:
- ldr r0, _080CA9E8 @ =gUnknown_20370C0
+ ldr r0, _080CA9E8 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
bne _080CA9EC
movs r4, 0x62
b _080CA9F6
.align 2, 0
-_080CA9E8: .4byte gUnknown_20370C0
+_080CA9E8: .4byte gSpecialVar_0x8004
_080CA9EC:
cmp r0, 0x1
beq _080CA9F4
@@ -867,13 +867,13 @@ sub_80CAC28: @ 80CAC28
movs r2, 0
strh r0, [r1, 0x8]
strh r2, [r1, 0xA]
- ldr r0, _080CAC78 @ =gUnknown_20370C4
+ ldr r0, _080CAC78 @ =gSpecialVar_0x8006
ldrh r0, [r0]
strh r0, [r1, 0xC]
- ldr r0, _080CAC7C @ =gUnknown_20370C6
+ ldr r0, _080CAC7C @ =gSpecialVar_0x8007
ldrh r0, [r0]
strh r0, [r1, 0xE]
- ldr r0, _080CAC80 @ =gUnknown_20370C0
+ ldr r0, _080CAC80 @ =gSpecialVar_0x8004
ldrh r0, [r0]
strh r0, [r1, 0x10]
movs r0, 0
@@ -886,9 +886,9 @@ sub_80CAC28: @ 80CAC28
_080CAC6C: .4byte sub_80CAC84
_080CAC70: .4byte gTasks
_080CAC74: .4byte gSpecialVar_0x8005
-_080CAC78: .4byte gUnknown_20370C4
-_080CAC7C: .4byte gUnknown_20370C6
-_080CAC80: .4byte gUnknown_20370C0
+_080CAC78: .4byte gSpecialVar_0x8006
+_080CAC7C: .4byte gSpecialVar_0x8007
+_080CAC80: .4byte gSpecialVar_0x8004
thumb_func_end sub_80CAC28
thumb_func_start sub_80CAC84
@@ -1002,7 +1002,7 @@ _080CAD4C:
thumb_func_start sub_80CAD54
sub_80CAD54: @ 80CAD54
push {lr}
- ldr r0, _080CAD74 @ =gUnknown_20370C0
+ ldr r0, _080CAD74 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -1016,14 +1016,14 @@ sub_80CAD54: @ 80CAD54
pop {r1}
bx r1
.align 2, 0
-_080CAD74: .4byte gUnknown_20370C0
+_080CAD74: .4byte gSpecialVar_0x8004
_080CAD78: .4byte gPlayerParty
thumb_func_end sub_80CAD54
thumb_func_start sub_80CAD7C
sub_80CAD7C: @ 80CAD7C
push {r4,lr}
- ldr r0, _080CADA8 @ =gUnknown_20370C0
+ ldr r0, _080CADA8 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -1042,7 +1042,7 @@ sub_80CAD7C: @ 80CAD7C
movs r0, 0x1
b _080CADBA
.align 2, 0
-_080CADA8: .4byte gUnknown_20370C0
+_080CADA8: .4byte gSpecialVar_0x8004
_080CADAC: .4byte gPlayerParty
_080CADB0: .4byte gStringVar1
_080CADB4: .4byte gSaveBlock2Ptr
@@ -1092,7 +1092,7 @@ sub_80CADEC: @ 80CADEC
adds r0, 0x1
lsls r0, 16
lsrs r2, r0, 16
- ldr r1, _080CAE20 @ =gUnknown_20370C0
+ ldr r1, _080CAE20 @ =gSpecialVar_0x8004
strh r2, [r1]
ldr r0, _080CAE24 @ =gSpecialVar_0x8005
strh r2, [r0]
@@ -1108,7 +1108,7 @@ _080CAE14:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080CAE20: .4byte gUnknown_20370C0
+_080CAE20: .4byte gSpecialVar_0x8004
_080CAE24: .4byte gSpecialVar_0x8005
_080CAE28: .4byte _080CAE2C
.align 2, 0
@@ -1353,7 +1353,7 @@ _080CB01C:
ldrh r0, [r5]
cmp r0, 0xF
bls _080CB04C
- ldr r0, _080CB044 @ =gUnknown_20370C0
+ ldr r0, _080CB044 @ =gSpecialVar_0x8004
ldrh r4, [r0]
adds r0, r4, 0
movs r1, 0x5
@@ -1368,7 +1368,7 @@ _080CB01C:
b _080CB04A
.align 2, 0
_080CB040: .4byte gSpecialVar_0x8005
-_080CB044: .4byte gUnknown_20370C0
+_080CB044: .4byte gSpecialVar_0x8004
_080CB048:
adds r0, r4, 0x1
_080CB04A:
@@ -1491,7 +1491,7 @@ _080CB128:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
asrs r0, 24
cmp r0, 0x1
@@ -1521,7 +1521,7 @@ _080CB176:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
asrs r0, 24
cmp r0, 0x1
@@ -1569,9 +1569,9 @@ _080CB1D2:
thumb_func_start sub_80CB1D8
sub_80CB1D8: @ 80CB1D8
push {lr}
- ldr r0, _080CB1F0 @ =gUnknown_20370D0
+ ldr r0, _080CB1F0 @ =gSpecialVar_Result
ldrh r1, [r0]
- ldr r0, _080CB1F4 @ =gUnknown_20370C4
+ ldr r0, _080CB1F4 @ =gSpecialVar_0x8006
ldrh r0, [r0]
adds r1, r0
ldr r0, _080CB1F8 @ =0x0000270f
@@ -1580,8 +1580,8 @@ sub_80CB1D8: @ 80CB1D8
movs r0, 0x1
b _080CB1FE
.align 2, 0
-_080CB1F0: .4byte gUnknown_20370D0
-_080CB1F4: .4byte gUnknown_20370C4
+_080CB1F0: .4byte gSpecialVar_Result
+_080CB1F4: .4byte gSpecialVar_0x8006
_080CB1F8: .4byte 0x0000270f
_080CB1FC:
movs r0, 0
@@ -1956,7 +1956,7 @@ sub_80CB498: @ 80CB498
movs r6, 0x1
strh r6, [r4, 0x8]
ldr r0, _080CB4D8 @ =gSpecialVar_0x8005
- ldr r1, _080CB4DC @ =gUnknown_20370C4
+ ldr r1, _080CB4DC @ =gSpecialVar_0x8006
ldrh r2, [r0]
ldrh r0, [r1]
cmp r2, r0
@@ -1970,7 +1970,7 @@ sub_80CB498: @ 80CB498
_080CB4D0: .4byte sub_80CB514
_080CB4D4: .4byte gTasks+0x8
_080CB4D8: .4byte gSpecialVar_0x8005
-_080CB4DC: .4byte gUnknown_20370C4
+_080CB4DC: .4byte gSpecialVar_0x8006
_080CB4E0:
subs r0, r2
lsls r0, 16
@@ -2357,7 +2357,7 @@ _080CB7D6:
lsls r0, 3
ldr r1, _080CB810 @ =gTasks
adds r3, r0, r1
- ldr r0, _080CB814 @ =gUnknown_20370C0
+ ldr r0, _080CB814 @ =gSpecialVar_0x8004
ldrh r4, [r0]
cmp r4, 0x3
beq _080CB886
@@ -2374,7 +2374,7 @@ _080CB7D6:
_080CB808: .4byte sub_809D6D4
_080CB80C: .4byte sub_80CB904
_080CB810: .4byte gTasks
-_080CB814: .4byte gUnknown_20370C0
+_080CB814: .4byte gSpecialVar_0x8004
_080CB818:
cmp r4, 0x5
beq _080CB8B4
@@ -2490,7 +2490,7 @@ _080CB8E6:
strh r5, [r3, 0x26]
b _080CB8F8
_080CB8EC:
- ldr r1, _080CB900 @ =gUnknown_20370D0
+ ldr r1, _080CB900 @ =gSpecialVar_Result
movs r0, 0x7F
strh r0, [r1]
adds r0, r5, 0
@@ -2500,7 +2500,7 @@ _080CB8F8:
pop {r0}
bx r0
.align 2, 0
-_080CB900: .4byte gUnknown_20370D0
+_080CB900: .4byte gSpecialVar_Result
thumb_func_end sub_80CB7C4
thumb_func_start sub_80CB904
@@ -2519,7 +2519,7 @@ sub_80CB904: @ 80CB904
ldr r1, _080CB934 @ =gTasks
adds r5, r0, r1
bl ScriptContext2_Enable
- ldr r0, _080CB938 @ =gUnknown_20370C0
+ ldr r0, _080CB938 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x1
bne _080CB944
@@ -2530,7 +2530,7 @@ sub_80CB904: @ 80CB904
b _080CB94A
.align 2, 0
_080CB934: .4byte gTasks
-_080CB938: .4byte gUnknown_20370C0
+_080CB938: .4byte gSpecialVar_0x8004
_080CB93C: .4byte gUnknown_2039A18
_080CB940: .4byte gUnknown_2039A0E
_080CB944:
@@ -2563,7 +2563,7 @@ _080CB974:
lsls r3, r4, 3
adds r3, r0
lsls r2, r4, 2
- ldr r0, _080CBA6C @ =gUnknown_20370C0
+ ldr r0, _080CBA6C @ =gSpecialVar_0x8004
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
@@ -2676,7 +2676,7 @@ _080CB9D2:
_080CBA60: .4byte gUnknown_2039A18
_080CBA64: .4byte gUnknown_2039A14
_080CBA68: .4byte gUnknown_83F5BCC
-_080CBA6C: .4byte gUnknown_20370C0
+_080CBA6C: .4byte gSpecialVar_0x8004
_080CBA70: .4byte gUnknown_3005360
_080CBA74: .4byte gTasks
_080CBA78: .4byte sub_80CBB28
@@ -2794,16 +2794,16 @@ sub_80CBB28: @ 80CBB28
.align 2, 0
_080CBB54: .4byte gTasks
_080CBB58:
- ldr r1, _080CBB68 @ =gUnknown_20370D0
+ ldr r1, _080CBB68 @ =gSpecialVar_Result
movs r0, 0x7F
strh r0, [r1]
movs r0, 0x5
bl PlaySE
b _080CBB88
.align 2, 0
-_080CBB68: .4byte gUnknown_20370D0
+_080CBB68: .4byte gSpecialVar_Result
_080CBB6C:
- ldr r0, _080CBB90 @ =gUnknown_20370D0
+ ldr r0, _080CBB90 @ =gSpecialVar_Result
strh r4, [r0]
movs r0, 0x5
bl PlaySE
@@ -2821,7 +2821,7 @@ _080CBB88:
bl sub_80CBBAC
b _080CBBA2
.align 2, 0
-_080CBB90: .4byte gUnknown_20370D0
+_080CBB90: .4byte gSpecialVar_Result
_080CBB94:
adds r0, r5, 0
bl sub_80CBD50
@@ -3123,17 +3123,17 @@ _080CBDC8: .4byte 0x00004031
thumb_func_start sub_80CBDCC
sub_80CBDCC: @ 80CBDCC
push {lr}
- ldr r0, _080CBDE4 @ =gUnknown_20370C0
+ ldr r0, _080CBDE4 @ =gSpecialVar_0x8004
ldrh r0, [r0]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
pop {r0}
bx r0
.align 2, 0
-_080CBDE4: .4byte gUnknown_20370C0
+_080CBDE4: .4byte gSpecialVar_0x8004
thumb_func_end sub_80CBDCC
thumb_func_start sub_80CBDE8
@@ -3371,7 +3371,7 @@ _080CBF9A:
thumb_func_start sub_80CBFA0
sub_80CBFA0: @ 80CBFA0
push {r4,lr}
- ldr r0, _080CBFC8 @ =gUnknown_20370C0
+ ldr r0, _080CBFC8 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -3389,7 +3389,7 @@ sub_80CBFA0: @ 80CBFA0
movs r0, 0x1
b _080CBFDA
.align 2, 0
-_080CBFC8: .4byte gUnknown_20370C0
+_080CBFC8: .4byte gSpecialVar_0x8004
_080CBFCC: .4byte gPlayerParty
_080CBFD0: .4byte gStringVar1
_080CBFD4: .4byte gStringVar3
@@ -3486,7 +3486,7 @@ ChangePokemonNickname: @ 80CC088
mov r4, r8
push {r4-r6}
sub sp, 0x8
- ldr r0, _080CC130 @ =gUnknown_20370C0
+ ldr r0, _080CC130 @ =gSpecialVar_0x8004
mov r9, r0
ldrh r0, [r0]
movs r1, 0x64
@@ -3558,7 +3558,7 @@ ChangePokemonNickname: @ 80CC088
pop {r0}
bx r0
.align 2, 0
-_080CC130: .4byte gUnknown_20370C0
+_080CC130: .4byte gSpecialVar_0x8004
_080CC134: .4byte gPlayerParty
_080CC138: .4byte gStringVar3
_080CC13C: .4byte gStringVar2
@@ -3568,7 +3568,7 @@ _080CC140: .4byte ChangePokemonNickname_CB
thumb_func_start ChangePokemonNickname_CB
ChangePokemonNickname_CB: @ 80CC144
push {lr}
- ldr r0, _080CC164 @ =gUnknown_20370C0
+ ldr r0, _080CC164 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -3581,7 +3581,7 @@ ChangePokemonNickname_CB: @ 80CC144
pop {r0}
bx r0
.align 2, 0
-_080CC164: .4byte gUnknown_20370C0
+_080CC164: .4byte gSpecialVar_0x8004
_080CC168: .4byte gPlayerParty
_080CC16C: .4byte gStringVar2
thumb_func_end ChangePokemonNickname_CB
@@ -3589,7 +3589,7 @@ _080CC16C: .4byte gStringVar2
thumb_func_start TV_CopyNicknameToStringVar1AndEnsureTerminated
TV_CopyNicknameToStringVar1AndEnsureTerminated: @ 80CC170
push {r4,lr}
- ldr r0, _080CC194 @ =gUnknown_20370C0
+ ldr r0, _080CC194 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -3605,7 +3605,7 @@ TV_CopyNicknameToStringVar1AndEnsureTerminated: @ 80CC170
pop {r0}
bx r0
.align 2, 0
-_080CC194: .4byte gUnknown_20370C0
+_080CC194: .4byte gSpecialVar_0x8004
_080CC198: .4byte gPlayerParty
_080CC19C: .4byte gStringVar1
thumb_func_end TV_CopyNicknameToStringVar1AndEnsureTerminated
@@ -3615,7 +3615,7 @@ TV_CheckMonOTIDEqualsPlayerID: @ 80CC1A0
push {r4,lr}
bl sub_80CC1E4
adds r4, r0, 0
- ldr r0, _080CC1C8 @ =gUnknown_20370C0
+ ldr r0, _080CC1C8 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -3626,15 +3626,15 @@ TV_CheckMonOTIDEqualsPlayerID: @ 80CC1A0
bl GetMonData
cmp r4, r0
bne _080CC1D4
- ldr r1, _080CC1D0 @ =gUnknown_20370D0
+ ldr r1, _080CC1D0 @ =gSpecialVar_Result
movs r0, 0
b _080CC1D8
.align 2, 0
-_080CC1C8: .4byte gUnknown_20370C0
+_080CC1C8: .4byte gSpecialVar_0x8004
_080CC1CC: .4byte gPlayerParty
-_080CC1D0: .4byte gUnknown_20370D0
+_080CC1D0: .4byte gSpecialVar_Result
_080CC1D4:
- ldr r1, _080CC1E0 @ =gUnknown_20370D0
+ ldr r1, _080CC1E0 @ =gSpecialVar_Result
movs r0, 0x1
_080CC1D8:
strh r0, [r1]
@@ -3642,7 +3642,7 @@ _080CC1D8:
pop {r0}
bx r0
.align 2, 0
-_080CC1E0: .4byte gUnknown_20370D0
+_080CC1E0: .4byte gSpecialVar_Result
thumb_func_end TV_CheckMonOTIDEqualsPlayerID
thumb_func_start sub_80CC1E4
@@ -3863,7 +3863,7 @@ _080CC318:
adds r0, r4, 0
bl VarSet
ldr r0, _080CC3C4 @ =0x00004042
- ldr r1, _080CC3C8 @ =gUnknown_20370C0
+ ldr r1, _080CC3C8 @ =gSpecialVar_0x8004
ldrh r1, [r1]
bl VarSet
add sp, 0x24
@@ -3874,21 +3874,21 @@ _080CC318:
_080CC3BC: .4byte gPlayerParty
_080CC3C0: .4byte 0x00004043
_080CC3C4: .4byte 0x00004042
-_080CC3C8: .4byte gUnknown_20370C0
+_080CC3C8: .4byte gSpecialVar_0x8004
thumb_func_end sub_80CC2BC
thumb_func_start sub_80CC3CC
sub_80CC3CC: @ 80CC3CC
push {r4-r6,lr}
movs r5, 0
- ldr r4, _080CC3F8 @ =gUnknown_20370C0
+ ldr r4, _080CC3F8 @ =gSpecialVar_0x8004
movs r0, 0xA
bl GetGameStat
strh r0, [r4]
movs r0, 0xD
bl GetGameStat
adds r6, r0, 0
- ldr r4, _080CC3FC @ =gUnknown_20370C4
+ ldr r4, _080CC3FC @ =gSpecialVar_0x8006
movs r0, 0x17
bl GetGameStat
strh r0, [r4]
@@ -3899,8 +3899,8 @@ sub_80CC3CC: @ 80CC3CC
strh r1, [r0]
b _080CC40C
.align 2, 0
-_080CC3F8: .4byte gUnknown_20370C0
-_080CC3FC: .4byte gUnknown_20370C4
+_080CC3F8: .4byte gSpecialVar_0x8004
+_080CC3FC: .4byte gSpecialVar_0x8006
_080CC400: .4byte 0x0000ffff
_080CC404: .4byte gSpecialVar_0x8005
_080CC408:
@@ -3908,7 +3908,7 @@ _080CC408:
strh r6, [r0]
_080CC40C:
adds r1, r0, 0
- ldr r0, _080CC444 @ =gUnknown_20370C0
+ ldr r0, _080CC444 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
beq _080CC41A
@@ -3923,7 +3923,7 @@ _080CC41A:
lsls r0, r5, 16
lsrs r5, r0, 16
_080CC428:
- ldr r0, _080CC448 @ =gUnknown_20370C4
+ ldr r0, _080CC448 @ =gSpecialVar_0x8006
ldrh r0, [r0]
cmp r0, 0
beq _080CC438
@@ -3938,8 +3938,8 @@ _080CC438:
bx r1
.align 2, 0
_080CC440: .4byte gSpecialVar_0x8005
-_080CC444: .4byte gUnknown_20370C0
-_080CC448: .4byte gUnknown_20370C4
+_080CC444: .4byte gSpecialVar_0x8004
+_080CC448: .4byte gSpecialVar_0x8006
thumb_func_end sub_80CC3CC
thumb_func_start sub_80CC44C
@@ -3999,7 +3999,7 @@ _080CC49C:
movs r1, 0x41
movs r2, 0
bl GetMonData
- ldr r1, _080CC4BC @ =gUnknown_20370C0
+ ldr r1, _080CC4BC @ =gSpecialVar_0x8004
ldrh r1, [r1]
cmp r0, r1
bne _080CC4C0
@@ -4007,7 +4007,7 @@ _080CC49C:
b _080CC4CC
.align 2, 0
_080CC4B8: .4byte gPlayerParty
-_080CC4BC: .4byte gUnknown_20370C0
+_080CC4BC: .4byte gSpecialVar_0x8004
_080CC4C0:
adds r0, r4, 0x1
lsls r0, 24
@@ -4331,7 +4331,7 @@ _080CC72C: .4byte 0x0000404d
thumb_func_start sub_80CC730
sub_80CC730: @ 80CC730
push {lr}
- ldr r0, _080CC744 @ =gUnknown_20370D0
+ ldr r0, _080CC744 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0x4
bhi _080CC77C
@@ -4341,7 +4341,7 @@ sub_80CC730: @ 80CC730
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080CC744: .4byte gUnknown_20370D0
+_080CC744: .4byte gSpecialVar_Result
_080CC748: .4byte _080CC74C
.align 2, 0
_080CC74C:
@@ -4548,7 +4548,7 @@ _080CC8C4:
thumb_func_start sub_80CC8CC
sub_80CC8CC: @ 80CC8CC
push {r4,lr}
- ldr r1, _080CC8E4 @ =gUnknown_20370C0
+ ldr r1, _080CC8E4 @ =gSpecialVar_0x8004
ldr r2, _080CC8E8 @ =0xfffffedf
adds r0, r2, 0
ldrh r2, [r1]
@@ -4560,7 +4560,7 @@ sub_80CC8CC: @ 80CC8CC
movs r0, 0
b _080CC908
.align 2, 0
-_080CC8E4: .4byte gUnknown_20370C0
+_080CC8E4: .4byte gSpecialVar_0x8004
_080CC8E8: .4byte 0xfffffedf
_080CC8EC:
ldr r4, _080CC910 @ =gStringVar1
@@ -4612,7 +4612,7 @@ _080CC944: .4byte 0x000001f3
thumb_func_start sub_80CC948
sub_80CC948: @ 80CC948
push {lr}
- ldr r0, _080CC968 @ =gUnknown_20370C0
+ ldr r0, _080CC968 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -4626,7 +4626,7 @@ sub_80CC948: @ 80CC948
pop {r0}
bx r0
.align 2, 0
-_080CC968: .4byte gUnknown_20370C0
+_080CC968: .4byte gSpecialVar_0x8004
_080CC96C: .4byte gPlayerParty
_080CC970: .4byte 0x00004025
thumb_func_end sub_80CC948
@@ -4904,7 +4904,7 @@ sub_80CCB94: @ 80CCB94
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r0, _080CCBC0 @ =gUnknown_20370C6
+ ldr r0, _080CCBC0 @ =gSpecialVar_0x8007
mov r1, r8
strh r1, [r0]
movs r4, 0
@@ -4915,7 +4915,7 @@ sub_80CCB94: @ 80CCB94
mov r9, r0
b _080CCBCE
.align 2, 0
-_080CCBC0: .4byte gUnknown_20370C6
+_080CCBC0: .4byte gSpecialVar_0x8007
_080CCBC4: .4byte gPlayerParty
_080CCBC8:
adds r0, r4, 0x1
@@ -5045,7 +5045,7 @@ _080CCCCC:
lsls r0, 24
lsrs r6, r0, 24
_080CCCDE:
- ldr r0, _080CCCF4 @ =gUnknown_20370C4
+ ldr r0, _080CCCF4 @ =gSpecialVar_0x8006
strh r6, [r0]
movs r0, 0x1
_080CCCE4:
@@ -5057,7 +5057,7 @@ _080CCCE4:
bx r1
.align 2, 0
_080CCCF0: .4byte gPlayerParty
-_080CCCF4: .4byte gUnknown_20370C4
+_080CCCF4: .4byte gSpecialVar_0x8006
thumb_func_end sub_80CCB94
thumb_func_start sub_80CCCF8
@@ -5216,12 +5216,12 @@ task_deoxys_sound: @ 80CCE10
lsrs r0, 24
cmp r0, 0x1
bne _080CCE38
- ldr r1, _080CCE34 @ =gUnknown_20370D0
+ ldr r1, _080CCE34 @ =gSpecialVar_Result
movs r0, 0x3
b _080CCE9E
.align 2, 0
_080CCE30: .4byte 0x00000848
-_080CCE34: .4byte gUnknown_20370D0
+_080CCE34: .4byte gSpecialVar_Result
_080CCE38:
ldr r0, _080CCE80 @ =0x0000403e
mov r8, r0
@@ -5249,7 +5249,7 @@ _080CCE38:
mov r0, r8
movs r1, 0
bl VarSet
- ldr r1, _080CCE8C @ =gUnknown_20370D0
+ ldr r1, _080CCE8C @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
b _080CCEA4
@@ -5257,13 +5257,13 @@ _080CCE38:
_080CCE80: .4byte 0x0000403e
_080CCE84: .4byte 0x00004026
_080CCE88: .4byte gUnknown_83F637C
-_080CCE8C: .4byte gUnknown_20370D0
+_080CCE8C: .4byte gSpecialVar_Result
_080CCE90:
cmp r5, 0xA
bne _080CCEB4
ldr r0, _080CCEAC @ =0x00000848
bl FlagSet
- ldr r1, _080CCEB0 @ =gUnknown_20370D0
+ ldr r1, _080CCEB0 @ =gSpecialVar_Result
movs r0, 0x2
_080CCE9E:
strh r0, [r1]
@@ -5274,7 +5274,7 @@ _080CCEA4:
b _080CCED6
.align 2, 0
_080CCEAC: .4byte 0x00000848
-_080CCEB0: .4byte gUnknown_20370D0
+_080CCEB0: .4byte gSpecialVar_Result
_080CCEB4:
adds r0, r5, 0x1
lsls r0, 16
@@ -5285,7 +5285,7 @@ _080CCEB4:
ldr r0, _080CCEE0 @ =0x0000403e
adds r1, r5, 0
bl VarSet
- ldr r1, _080CCEE4 @ =gUnknown_20370D0
+ ldr r1, _080CCEE4 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
adds r0, r7, 0
@@ -5298,7 +5298,7 @@ _080CCED6:
bx r0
.align 2, 0
_080CCEE0: .4byte 0x0000403e
-_080CCEE4: .4byte gUnknown_20370D0
+_080CCEE4: .4byte gSpecialVar_Result
thumb_func_end task_deoxys_sound
thumb_func_start sub_80CCEE8
@@ -5528,12 +5528,12 @@ sub_80CD098: @ 80CD098
ldrb r0, [r0]
cmp r0, 0x2
beq _080CD0E8
- ldr r0, _080CD0D0 @ =gUnknown_20370C0
+ ldr r0, _080CD0D0 @ =gSpecialVar_0x8004
ldrh r0, [r0]
adds r0, 0x1B
lsls r0, 16
lsrs r1, r0, 16
- ldr r0, _080CD0D4 @ =gUnknown_20370C4
+ ldr r0, _080CD0D4 @ =gSpecialVar_0x8006
ldrh r3, [r0]
cmp r3, 0
bne _080CD0E0
@@ -5548,8 +5548,8 @@ sub_80CD098: @ 80CD098
b _080CD0E8
.align 2, 0
_080CD0CC: .4byte gUnknown_203ADFA
-_080CD0D0: .4byte gUnknown_20370C0
-_080CD0D4: .4byte gUnknown_20370C4
+_080CD0D0: .4byte gSpecialVar_0x8004
+_080CD0D4: .4byte gSpecialVar_0x8006
_080CD0D8: .4byte gSpecialVar_0x8005
_080CD0DC: .4byte gUnknown_2039A1B
_080CD0E0:
@@ -5583,7 +5583,7 @@ _080CD104:
movs r1, 0x41
movs r2, 0
bl GetMonData
- ldr r1, _080CD13C @ =gUnknown_20370C0
+ ldr r1, _080CD13C @ =gSpecialVar_0x8004
ldrh r1, [r1]
cmp r0, r1
bne _080CD140
@@ -5599,7 +5599,7 @@ _080CD104:
b _080CD14C
.align 2, 0
_080CD138: .4byte gPlayerParty
-_080CD13C: .4byte gUnknown_20370C0
+_080CD13C: .4byte gSpecialVar_0x8004
_080CD140:
adds r0, r6, 0x1
lsls r0, 24
@@ -5708,7 +5708,7 @@ sub_80CD1CC: @ 80CD1CC
_080CD200:
movs r0, 0
ldrsh r1, [r4, r0]
- ldr r0, _080CD224 @ =gUnknown_20370C0
+ ldr r0, _080CD224 @ =gSpecialVar_0x8004
ldrh r0, [r0]
subs r0, 0x1
cmp r1, r0
@@ -5722,7 +5722,7 @@ _080CD214:
.align 2, 0
_080CD21C: .4byte gTasks+0x8
_080CD220: .4byte gSpecialVar_0x8005
-_080CD224: .4byte gUnknown_20370C0
+_080CD224: .4byte gSpecialVar_0x8004
thumb_func_end sub_80CD1CC
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s
index 0c70bdf36..778f2c916 100644
--- a/asm/fldeff_strength.s
+++ b/asm/fldeff_strength.s
@@ -23,7 +23,7 @@ _080D0808:
movs r0, 0
b _080D0826
_080D080C:
- ldr r4, _080D082C @ =gUnknown_20370D0
+ ldr r4, _080D082C @ =gSpecialVar_Result
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
@@ -40,7 +40,7 @@ _080D0826:
pop {r1}
bx r1
.align 2, 0
-_080D082C: .4byte gUnknown_20370D0
+_080D082C: .4byte gSpecialVar_Result
_080D0830: .4byte gUnknown_3005024
_080D0834: .4byte hm_add_c3_launch_phase_2
_080D0838: .4byte gUnknown_203B0C4
diff --git a/asm/heal_location.s b/asm/heal_location.s
index 33732a934..34eb1461b 100644
--- a/asm/heal_location.s
+++ b/asm/heal_location.s
@@ -112,7 +112,7 @@ sub_80BFCD0: @ 80BFCD0
movs r1, 0
bl VarSet
_080BFD0A:
- ldr r0, _080BFD34 @ =gUnknown_20370D2
+ ldr r0, _080BFD34 @ =gSpecialVar_LastTalked
strh r5, [r0]
movs r0, 0x4
strh r0, [r4, 0x4]
@@ -130,7 +130,7 @@ _080BFD24: .4byte 0x00004082
_080BFD28: .4byte gSaveBlock1Ptr
_080BFD2C: .4byte 0x00003d34
_080BFD30: .4byte 0x00003d42
-_080BFD34: .4byte gUnknown_20370D2
+_080BFD34: .4byte gSpecialVar_LastTalked
_080BFD38:
ldr r0, _080BFD7C @ =gSaveBlock1Ptr
ldr r1, [r0]
@@ -239,7 +239,7 @@ _080BFDFA:
thumb_func_start sub_80BFE00
sub_80BFE00: @ 80BFE00
- ldr r2, _080BFE10 @ =gUnknown_20370D2
+ ldr r2, _080BFE10 @ =gSpecialVar_LastTalked
ldr r1, _080BFE14 @ =gUnknown_83EECE8
subs r0, 0x1
adds r0, r1
@@ -247,7 +247,7 @@ sub_80BFE00: @ 80BFE00
strh r0, [r2]
bx lr
.align 2, 0
-_080BFE10: .4byte gUnknown_20370D2
+_080BFE10: .4byte gSpecialVar_LastTalked
_080BFE14: .4byte gUnknown_83EECE8
thumb_func_end sub_80BFE00
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
index b95ad8666..d254207a4 100644
--- a/asm/help_system_812B1E0.s
+++ b/asm/help_system_812B1E0.s
@@ -49,13 +49,13 @@ _0812B21C: .4byte gUnknown_203B0EC
thumb_func_start sub_812B220
sub_812B220: @ 812B220
ldr r0, _0812B22C @ =gUnknown_203B0EC
- ldr r1, _0812B230 @ =gUnknown_20370C0
+ ldr r1, _0812B230 @ =gSpecialVar_0x8004
ldrh r1, [r1]
strh r1, [r0]
bx lr
.align 2, 0
_0812B22C: .4byte gUnknown_203B0EC
-_0812B230: .4byte gUnknown_20370C0
+_0812B230: .4byte gSpecialVar_0x8004
thumb_func_end sub_812B220
thumb_func_start sub_812B234
diff --git a/asm/item.s b/asm/item.s
index 08df51656..aa64e54fa 100644
--- a/asm/item.s
+++ b/asm/item.s
@@ -326,13 +326,13 @@ sub_8099FAC: @ 8099FAC
.align 2, 0
_08099FC0: .4byte 0x0000016d
_08099FC4:
- ldr r1, _08099FD0 @ =gUnknown_20370D0
+ ldr r1, _08099FD0 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
movs r0, 0x1
b _08099FF6
.align 2, 0
-_08099FD0: .4byte gUnknown_20370D0
+_08099FD0: .4byte gSpecialVar_Result
_08099FD4:
movs r4, 0x85
_08099FD6:
@@ -349,7 +349,7 @@ _08099FD6:
cmp r4, 0xAF
bls _08099FD6
_08099FF0:
- ldr r0, _08099FFC @ =gUnknown_20370D0
+ ldr r0, _08099FFC @ =gSpecialVar_Result
strh r1, [r0]
movs r0, 0
_08099FF6:
@@ -357,7 +357,7 @@ _08099FF6:
pop {r1}
bx r1
.align 2, 0
-_08099FFC: .4byte gUnknown_20370D0
+_08099FFC: .4byte gSpecialVar_Result
thumb_func_end sub_8099FAC
thumb_func_start sub_809A000
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 8650e912d..58b74acf3 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -94,7 +94,7 @@ _08107E5A:
strb r0, [r2, 0x5]
movs r1, 0
ldr r4, _08107EA4 @ =gTextFlags
- ldr r5, _08107EA8 @ =gUnknown_203AD30
+ ldr r5, _08107EA8 @ =gSpecialVar_ItemId
ldr r6, _08107EAC @ =sub_8107F10
ldr r3, _08107EB0 @ =gUnknown_203AD10
movs r2, 0
@@ -132,7 +132,7 @@ _08107E9A:
bx r0
.align 2, 0
_08107EA4: .4byte gTextFlags
-_08107EA8: .4byte gUnknown_203AD30
+_08107EA8: .4byte gSpecialVar_ItemId
_08107EAC: .4byte sub_8107F10
_08107EB0: .4byte gUnknown_203AD10
_08107EB4: .4byte gUnknown_203ACFC
@@ -2367,7 +2367,7 @@ _08109014: .4byte gUnknown_203ACFC
_08109018:
movs r0, 0x5
bl PlaySE
- ldr r1, _08109038 @ =gUnknown_203AD30
+ ldr r1, _08109038 @ =gSpecialVar_ItemId
movs r0, 0
strh r0, [r1]
bl sub_8108CB4
@@ -2379,7 +2379,7 @@ _08109018:
ldr r1, _08109040 @ =sub_8108B50
b _081090C4
.align 2, 0
-_08109038: .4byte gUnknown_203AD30
+_08109038: .4byte gSpecialVar_ItemId
_0810903C: .4byte gTasks
_08109040: .4byte sub_8108B50
_08109044:
@@ -2393,7 +2393,7 @@ _08109044:
ldrb r0, [r0]
cmp r4, r0
bne _08109084
- ldr r1, _08109078 @ =gUnknown_203AD30
+ ldr r1, _08109078 @ =gSpecialVar_ItemId
movs r0, 0
strh r0, [r1]
bl sub_8108CB4
@@ -2406,7 +2406,7 @@ _08109044:
b _081090C4
.align 2, 0
_08109074: .4byte gUnknown_203AD10
-_08109078: .4byte gUnknown_203AD30
+_08109078: .4byte gSpecialVar_ItemId
_0810907C: .4byte gTasks
_08109080: .4byte sub_8108B50
_08109084:
@@ -2430,7 +2430,7 @@ _08109084:
lsrs r0, 24
adds r1, r4, 0
bl sub_809A798
- ldr r1, _081090D0 @ =gUnknown_203AD30
+ ldr r1, _081090D0 @ =gSpecialVar_ItemId
strh r0, [r1]
ldr r1, _081090D4 @ =gTasks
lsls r0, r6, 2
@@ -2446,7 +2446,7 @@ _081090C6:
pop {r0}
bx r0
.align 2, 0
-_081090D0: .4byte gUnknown_203AD30
+_081090D0: .4byte gSpecialVar_ItemId
_081090D4: .4byte gTasks
_081090D8: .4byte sub_81090DC
thumb_func_end sub_8108F0C
@@ -3404,7 +3404,7 @@ _081098AC:
beq _08109924
b _0810993C
_081098B6:
- ldr r2, _081098D4 @ =gUnknown_203AD30
+ ldr r2, _081098D4 @ =gSpecialVar_ItemId
ldrh r1, [r2]
ldr r0, _081098D8 @ =0x0000016d
cmp r1, r0
@@ -3420,7 +3420,7 @@ _081098B6:
movs r0, 0x2
b _08109AD0
.align 2, 0
-_081098D4: .4byte gUnknown_203AD30
+_081098D4: .4byte gSpecialVar_ItemId
_081098D8: .4byte 0x0000016d
_081098DC: .4byte gUnknown_203AD20
_081098E0: .4byte gUnknown_203AD24
@@ -3473,7 +3473,7 @@ _0810993C:
cmp r0, 0x1
bne _081099C4
_08109950:
- ldr r1, _08109970 @ =gUnknown_203AD30
+ ldr r1, _08109970 @ =gSpecialVar_ItemId
ldr r2, _08109974 @ =0xfffffe94
adds r0, r2, 0
ldrh r1, [r1]
@@ -3489,7 +3489,7 @@ _08109950:
movs r0, 0x2
b _08109AD0
.align 2, 0
-_08109970: .4byte gUnknown_203AD30
+_08109970: .4byte gSpecialVar_ItemId
_08109974: .4byte 0xfffffe94
_08109978: .4byte gUnknown_203AD24
_0810997C: .4byte gUnknown_8452F2E
@@ -3549,7 +3549,7 @@ _081099EC:
ldr r4, _08109A0C @ =gUnknown_203AD28
movs r0, 0x4
strb r0, [r4]
- ldr r0, _08109A10 @ =gUnknown_203AD30
+ ldr r0, _08109A10 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl itemid_is_mail
lsls r0, 24
@@ -3563,7 +3563,7 @@ _081099EC:
b _08109AD4
.align 2, 0
_08109A0C: .4byte gUnknown_203AD28
-_08109A10: .4byte gUnknown_203AD30
+_08109A10: .4byte gSpecialVar_ItemId
_08109A14: .4byte gUnknown_203AD24
_08109A18: .4byte gUnknown_8452F24
_08109A1C:
@@ -3591,7 +3591,7 @@ _08109A34:
ldr r0, [r0]
ldr r1, _08109A6C @ =0x00000296
adds r0, r1
- ldr r1, _08109A70 @ =gUnknown_203AD30
+ ldr r1, _08109A70 @ =gSpecialVar_ItemId
ldrh r0, [r0]
adds r7, r3, 0
ldrh r3, [r1]
@@ -3605,7 +3605,7 @@ _08109A60: .4byte gUnknown_203AD20
_08109A64: .4byte gUnknown_203AD28
_08109A68: .4byte gSaveBlock1Ptr
_08109A6C: .4byte 0x00000296
-_08109A70: .4byte gUnknown_203AD30
+_08109A70: .4byte gSpecialVar_ItemId
_08109A74:
movs r0, 0x2
_08109A76:
@@ -3722,7 +3722,7 @@ _08109AD4:
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _08109BA8 @ =gUnknown_203AD30
+ ldr r0, _08109BA8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _08109BAC @ =gStringVar1
bl sub_8099E90
@@ -3751,7 +3751,7 @@ _08109B98: .4byte gUnknown_203AD24
_08109B9C: .4byte gUnknown_8452F18
_08109BA0: .4byte gUnknown_203AD28
_08109BA4: .4byte gUnknown_8452EB8
-_08109BA8: .4byte gUnknown_203AD30
+_08109BA8: .4byte gSpecialVar_ItemId
_08109BAC: .4byte gStringVar1
_08109BB0: .4byte gStringVar4
_08109BB4: .4byte gUnknown_84162FF
@@ -3838,7 +3838,7 @@ sub_8109C50: @ 8109C50
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r5, _08109CA0 @ =gUnknown_203AD30
+ ldr r5, _08109CA0 @ =gSpecialVar_ItemId
ldrh r0, [r5]
bl ItemId_GetFieldFunc
cmp r0, 0
@@ -3867,9 +3867,9 @@ sub_8109C50: @ 8109C50
bl sub_810A170
b _08109CB4
.align 2, 0
-_08109CA0: .4byte gUnknown_203AD30
+_08109CA0: .4byte gSpecialVar_ItemId
_08109CA4:
- ldr r0, _08109CBC @ =gUnknown_203AD30
+ ldr r0, _08109CBC @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl ItemId_GetFieldFunc
adds r1, r0, 0
@@ -3880,7 +3880,7 @@ _08109CB4:
pop {r0}
bx r0
.align 2, 0
-_08109CBC: .4byte gUnknown_203AD30
+_08109CBC: .4byte gSpecialVar_ItemId
thumb_func_end sub_8109C50
thumb_func_start sub_8109CC0
@@ -4197,7 +4197,7 @@ sub_8109F44: @ 8109F44
_08109F6E:
movs r0, 0x5
bl PlaySE
- ldr r0, _08109FF4 @ =gUnknown_203AD30
+ ldr r0, _08109FF4 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldrh r1, [r7, 0x10]
bl sub_809A1D8
@@ -4249,7 +4249,7 @@ _08109FE0:
.align 2, 0
_08109FEC: .4byte gTasks+0x8
_08109FF0: .4byte gMain
-_08109FF4: .4byte gUnknown_203AD30
+_08109FF4: .4byte gSpecialVar_ItemId
_08109FF8: .4byte gUnknown_203ACFC
_08109FFC: .4byte gUnknown_3005E70
thumb_func_end sub_8109F44
@@ -4444,7 +4444,7 @@ sub_810A18C: @ 810A18C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _0810A1BC @ =gUnknown_203AD30
+ ldr r0, _0810A1BC @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _0810A1C0 @ =gStringVar1
bl sub_8099E90
@@ -4461,7 +4461,7 @@ sub_810A18C: @ 810A18C
pop {r0}
bx r0
.align 2, 0
-_0810A1BC: .4byte gUnknown_203AD30
+_0810A1BC: .4byte gSpecialVar_ItemId
_0810A1C0: .4byte gStringVar1
_0810A1C4: .4byte gStringVar4
_0810A1C8: .4byte gUnknown_841635E
@@ -4634,7 +4634,7 @@ sub_810A324: @ 810A324
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r5, _0810A36C @ =gUnknown_203AD30
+ ldr r5, _0810A36C @ =gSpecialVar_ItemId
ldrh r0, [r5]
bl ItemId_GetBattleFunc
cmp r0, 0
@@ -4660,7 +4660,7 @@ _0810A364:
pop {r0}
bx r0
.align 2, 0
-_0810A36C: .4byte gUnknown_203AD30
+_0810A36C: .4byte gSpecialVar_ItemId
thumb_func_end sub_810A324
thumb_func_start sub_810A370
@@ -4936,7 +4936,7 @@ sub_810A568: @ 810A568
lsls r0, 3
ldr r1, _0810A58C @ =gTasks+0x8
adds r4, r0, r1
- ldr r6, _0810A590 @ =gUnknown_203AD30
+ ldr r6, _0810A590 @ =gSpecialVar_ItemId
ldrh r1, [r6]
movs r0, 0xB6
lsls r0, 1
@@ -4946,7 +4946,7 @@ sub_810A568: @ 810A568
b _0810A5A0
.align 2, 0
_0810A58C: .4byte gTasks+0x8
-_0810A590: .4byte gUnknown_203AD30
+_0810A590: .4byte gSpecialVar_ItemId
_0810A594: .4byte sub_810A654
_0810A598:
ldr r0, _0810A5AC @ =0x0000016d
@@ -5394,7 +5394,7 @@ sub_810A940: @ 810A940
bl PutWindowTilemap
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
- ldr r0, _0810A9B8 @ =gUnknown_203AD30
+ ldr r0, _0810A9B8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _0810A9BC @ =gStringVar1
bl sub_8099E90
@@ -5432,7 +5432,7 @@ sub_810A940: @ 810A940
bx r0
.align 2, 0
_0810A9B4: .4byte gTasks+0x8
-_0810A9B8: .4byte gUnknown_203AD30
+_0810A9B8: .4byte gSpecialVar_ItemId
_0810A9BC: .4byte gStringVar1
_0810A9C0: .4byte gStringVar3
_0810A9C4: .4byte gUnknown_203ACFC
@@ -5460,7 +5460,7 @@ sub_810A9D4: @ 810A9D4
mov r8, r1
movs r0, 0xF8
bl PlaySE
- ldr r5, _0810AADC @ =gUnknown_203AD30
+ ldr r5, _0810AADC @ =gSpecialVar_ItemId
ldrh r0, [r5]
mov r2, r8
ldrh r1, [r2, 0x10]
@@ -5559,7 +5559,7 @@ sub_810A9D4: @ 810A9D4
bx r0
.align 2, 0
_0810AAD8: .4byte gTasks+0x8
-_0810AADC: .4byte gUnknown_203AD30
+_0810AADC: .4byte gSpecialVar_ItemId
_0810AAE0: .4byte gSaveBlock1Ptr
_0810AAE4: .4byte gUnknown_203ACFC
_0810AAE8: .4byte gUnknown_203AD10
@@ -5741,7 +5741,7 @@ sub_810AC40: @ 810AC40
mov r9, r0
mov r7, r8
add r7, r9
- ldr r5, _0810ACD0 @ =gUnknown_203AD30
+ ldr r5, _0810ACD0 @ =gSpecialVar_ItemId
ldrh r0, [r5]
ldrh r1, [r7, 0x10]
bl sub_809A3C8
@@ -5791,7 +5791,7 @@ sub_810AC40: @ 810AC40
b _0810ACF8
.align 2, 0
_0810ACCC: .4byte gTasks+0x8
-_0810ACD0: .4byte gUnknown_203AD30
+_0810ACD0: .4byte gSpecialVar_ItemId
_0810ACD4: .4byte 0x0000ffff
_0810ACD8: .4byte gStringVar1
_0810ACDC: .4byte gStringVar2
@@ -5848,7 +5848,7 @@ _0810AD1E:
bl player_bitmagic
bl sub_805C270
bl sub_805C780
- ldr r2, _0810AD88 @ =gUnknown_203AD30
+ ldr r2, _0810AD88 @ =gSpecialVar_ItemId
ldr r0, [r4]
adds r0, r5
ldrh r1, [r0]
@@ -5869,7 +5869,7 @@ _0810AD1E:
.align 2, 0
_0810AD80: .4byte gSaveBlock1Ptr
_0810AD84: .4byte 0x00000296
-_0810AD88: .4byte gUnknown_203AD30
+_0810AD88: .4byte gSpecialVar_ItemId
_0810AD8C: .4byte gTasks
_0810AD90:
ldr r0, [r4]
@@ -6187,14 +6187,14 @@ _0810AFF6:
bl bag_menu_print_cursor_
movs r0, 0x1
bl sub_8109140
- ldr r1, _0810B018 @ =gUnknown_203AD30
+ ldr r1, _0810B018 @ =gSpecialVar_ItemId
movs r0, 0x4
strh r0, [r1]
adds r0, r4, 0
bl sub_8109890
b _0810B064
.align 2, 0
-_0810B018: .4byte gUnknown_203AD30
+_0810B018: .4byte gSpecialVar_ItemId
_0810B01C:
movs r0, 0x5
bl PlaySE
@@ -6493,7 +6493,7 @@ _0810B266:
bl bag_menu_print_cursor_
movs r0, 0x1
bl sub_8109140
- ldr r1, _0810B28C @ =gUnknown_203AD30
+ ldr r1, _0810B28C @ =gSpecialVar_ItemId
movs r2, 0xB7
lsls r2, 1
adds r0, r2, 0
@@ -6502,7 +6502,7 @@ _0810B266:
bl sub_8109890
b _0810B36C
.align 2, 0
-_0810B28C: .4byte gUnknown_203AD30
+_0810B28C: .4byte gSpecialVar_ItemId
_0810B290:
movs r0, 0x5
bl PlaySE
@@ -6514,7 +6514,7 @@ _0810B29E:
bl PlaySE
ldr r0, _0810B318 @ =gSaveBlock1Ptr
ldr r0, [r0]
- ldr r1, _0810B31C @ =gUnknown_203AD30
+ ldr r1, _0810B31C @ =gSpecialVar_ItemId
ldrh r1, [r1]
ldr r2, _0810B320 @ =0x00000296
adds r0, r2
@@ -6562,7 +6562,7 @@ _0810B29E:
b _0810B36C
.align 2, 0
_0810B318: .4byte gSaveBlock1Ptr
-_0810B31C: .4byte gUnknown_203AD30
+_0810B31C: .4byte gSpecialVar_ItemId
_0810B320: .4byte 0x00000296
_0810B324: .4byte gUnknown_203ACFC
_0810B328: .4byte gUnknown_3005E70
@@ -6713,14 +6713,14 @@ _0810B440:
bl bag_menu_print_cursor_
movs r0, 0x1
bl sub_8109140
- ldr r1, _0810B464 @ =gUnknown_203AD30
+ ldr r1, _0810B464 @ =gSpecialVar_ItemId
movs r0, 0x4
strh r0, [r1]
adds r0, r5, 0
bl sub_8109890
b _0810B4B0
.align 2, 0
-_0810B464: .4byte gUnknown_203AD30
+_0810B464: .4byte gSpecialVar_ItemId
_0810B468:
movs r0, 0x5
bl PlaySE
@@ -6829,14 +6829,14 @@ _0810B53C:
bl bag_menu_print_cursor_
movs r0, 0x1
bl sub_8109140
- ldr r1, _0810B560 @ =gUnknown_203AD30
+ ldr r1, _0810B560 @ =gSpecialVar_ItemId
movs r0, 0xE
strh r0, [r1]
adds r0, r4, 0
bl sub_8109890
b _0810B5C0
.align 2, 0
-_0810B560: .4byte gUnknown_203AD30
+_0810B560: .4byte gSpecialVar_ItemId
_0810B564:
movs r0, 0x5
bl PlaySE
@@ -6962,7 +6962,7 @@ _0810B660:
bl bag_menu_print_cursor_
movs r0, 0x1
bl sub_8109140
- ldr r1, _0810B688 @ =gUnknown_203AD30
+ ldr r1, _0810B688 @ =gSpecialVar_ItemId
movs r2, 0xB6
lsls r2, 1
adds r0, r2, 0
@@ -6971,7 +6971,7 @@ _0810B660:
bl sub_8109890
b _0810B6E0
.align 2, 0
-_0810B688: .4byte gUnknown_203AD30
+_0810B688: .4byte gSpecialVar_ItemId
_0810B68C:
movs r0, 0x5
bl PlaySE
diff --git a/asm/item_use.s b/asm/item_use.s
index f653247d9..558e175f2 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -10,7 +10,7 @@ sub_80A0FBC: @ 80A0FBC
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, _080A0FD8 @ =gUnknown_203AD30
+ ldr r1, _080A0FD8 @ =gSpecialVar_ItemId
ldrh r0, [r1]
cmp r0, 0xAF
bne _080A0FE0
@@ -22,7 +22,7 @@ sub_80A0FBC: @ 80A0FBC
ldrb r0, [r1, 0x10]
b _080A0FE6
.align 2, 0
-_080A0FD8: .4byte gUnknown_203AD30
+_080A0FD8: .4byte gSpecialVar_ItemId
_080A0FDC: .4byte gTasks
_080A0FE0:
ldrh r0, [r1]
@@ -31,7 +31,7 @@ _080A0FE6:
subs r0, 0x1
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _080A1010 @ =gUnknown_203AD30
+ ldr r0, _080A1010 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetPocketByItemId
lsls r0, 24
@@ -47,7 +47,7 @@ _080A0FE6:
bl sub_813D808
b _080A1032
.align 2, 0
-_080A1010: .4byte gUnknown_203AD30
+_080A1010: .4byte gSpecialVar_ItemId
_080A1014: .4byte gUnknown_83E2954
_080A1018:
ldr r0, _080A1038 @ =gUnknown_83E2954
@@ -317,7 +317,7 @@ sub_80A1208: @ 80A1208
push {lr}
sub sp, 0x24
mov r1, sp
- ldr r0, _080A1224 @ =gUnknown_203AD30
+ ldr r0, _080A1224 @ =gSpecialVar_ItemId
ldrh r0, [r0]
strh r0, [r1, 0x20]
ldr r1, _080A1228 @ =UseFameCheckerFromMenu
@@ -328,7 +328,7 @@ sub_80A1208: @ 80A1208
pop {r0}
bx r0
.align 2, 0
-_080A1224: .4byte gUnknown_203AD30
+_080A1224: .4byte gSpecialVar_ItemId
_080A1228: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A1208
@@ -571,7 +571,7 @@ ItemUseOnFieldCB_Rod: @ 80A1410
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080A1434 @ =gUnknown_203AD30
+ ldr r0, _080A1434 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl ItemId_GetSecondaryId
lsls r0, 24
@@ -583,7 +583,7 @@ ItemUseOnFieldCB_Rod: @ 80A1410
pop {r0}
bx r0
.align 2, 0
-_080A1434: .4byte gUnknown_203AD30
+_080A1434: .4byte gSpecialVar_ItemId
thumb_func_end ItemUseOnFieldCB_Rod
thumb_func_start ItemUseOutOfBattle_Itemfinder
@@ -625,7 +625,7 @@ sub_80A1460: @ 80A1460
ldr r1, _080A14BC @ =gUnknown_8416537
adds r0, r4, 0
bl StringExpandPlaceholders
- ldr r0, _080A14C0 @ =gUnknown_203AD30
+ ldr r0, _080A14C0 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A14C4 @ =0x0000ffff
movs r0, 0x4
@@ -650,7 +650,7 @@ sub_80A1460: @ 80A1460
_080A14B4: .4byte gStringVar1
_080A14B8: .4byte gStringVar4
_080A14BC: .4byte gUnknown_8416537
-_080A14C0: .4byte gUnknown_203AD30
+_080A14C0: .4byte gSpecialVar_ItemId
_080A14C4: .4byte 0x0000ffff
_080A14C8: .4byte gTasks
_080A14CC: .4byte sub_810A1F8
@@ -684,7 +684,7 @@ sub_80A14E8: @ 80A14E8
ldr r1, _080A1540 @ =gUnknown_8416644
adds r0, r4, 0
bl StringExpandPlaceholders
- ldr r0, _080A1544 @ =gUnknown_203AD30
+ ldr r0, _080A1544 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A1548 @ =0x0000ffff
movs r0, 0x4
@@ -709,7 +709,7 @@ sub_80A14E8: @ 80A14E8
_080A1538: .4byte gStringVar1
_080A153C: .4byte gStringVar4
_080A1540: .4byte gUnknown_8416644
-_080A1544: .4byte gUnknown_203AD30
+_080A1544: .4byte gSpecialVar_ItemId
_080A1548: .4byte 0x0000ffff
_080A154C: .4byte gTasks
_080A1550: .4byte sub_810A1F8
@@ -760,7 +760,7 @@ _080A1598:
bcc _080A1578
cmp r6, 0
beq _080A1600
- ldr r0, _080A15D4 @ =gUnknown_203AD30
+ ldr r0, _080A15D4 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A15D8 @ =0x0000ffff
movs r0, 0x4
@@ -780,7 +780,7 @@ _080A1598:
b _080A1616
.align 2, 0
_080A15D0: .4byte gPlayerParty
-_080A15D4: .4byte gUnknown_203AD30
+_080A15D4: .4byte gSpecialVar_ItemId
_080A15D8: .4byte 0x0000ffff
_080A15DC: .4byte gTasks
_080A15E0: .4byte gUnknown_8416690
@@ -1196,7 +1196,7 @@ sub_80A18EC: @ 80A18EC
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _080A1920 @ =gUnknown_203AD30
+ ldr r0, _080A1920 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A1924 @ =0x0000ffff
movs r0, 0x4
@@ -1217,7 +1217,7 @@ sub_80A18EC: @ 80A18EC
bl sub_8108B50
b _080A1940
.align 2, 0
-_080A1920: .4byte gUnknown_203AD30
+_080A1920: .4byte gSpecialVar_ItemId
_080A1924: .4byte 0x0000ffff
_080A1928: .4byte gTasks
_080A192C: .4byte sub_80A194C
@@ -1323,7 +1323,7 @@ sub_80A19E8: @ 80A19E8
lsls r0, 24
cmp r0, 0
bne _080A1A2A
- ldr r4, _080A1A30 @ =gUnknown_203AD30
+ ldr r4, _080A1A30 @ =gSpecialVar_ItemId
ldrh r2, [r4]
ldr r3, _080A1A34 @ =0x0000ffff
movs r0, 0x4
@@ -1348,7 +1348,7 @@ _080A1A2A:
pop {r0}
bx r0
.align 2, 0
-_080A1A30: .4byte gUnknown_203AD30
+_080A1A30: .4byte gSpecialVar_ItemId
_080A1A34: .4byte 0x0000ffff
_080A1A38: .4byte 0x00004020
_080A1A3C: .4byte gStringVar4
@@ -1358,7 +1358,7 @@ _080A1A40: .4byte sub_810A1F8
thumb_func_start sub_80A1A44
sub_80A1A44: @ 80A1A44
push {r4,lr}
- ldr r4, _080A1A84 @ =gUnknown_203AD30
+ ldr r4, _080A1A84 @ =gSpecialVar_ItemId
ldrh r0, [r4]
movs r1, 0x1
bl sub_809A1D8
@@ -1382,7 +1382,7 @@ sub_80A1A44: @ 80A1A44
pop {r0}
bx r0
.align 2, 0
-_080A1A84: .4byte gUnknown_203AD30
+_080A1A84: .4byte gSpecialVar_ItemId
_080A1A88: .4byte gStringVar2
_080A1A8C: .4byte gStringVar4
_080A1A90: .4byte gUnknown_841658C
@@ -1394,7 +1394,7 @@ sub_80A1A94: @ 80A1A94
lsls r0, 24
lsrs r4, r0, 24
adds r6, r4, 0
- ldr r5, _080A1AD4 @ =gUnknown_203AD30
+ ldr r5, _080A1AD4 @ =gSpecialVar_ItemId
ldrh r2, [r5]
ldr r3, _080A1AD8 @ =0x0000ffff
movs r0, 0x4
@@ -1418,7 +1418,7 @@ sub_80A1A94: @ 80A1A94
adds r0, r4
b _080A1B1A
.align 2, 0
-_080A1AD4: .4byte gUnknown_203AD30
+_080A1AD4: .4byte gSpecialVar_ItemId
_080A1AD8: .4byte 0x0000ffff
_080A1ADC: .4byte 0x00000803
_080A1AE0: .4byte 0x00000804
@@ -1527,7 +1527,7 @@ ItemUseOutOfBattle_EscapeRope: @ 80A1BAC
lsrs r0, 24
cmp r0, 0x1
bne _080A1BEC
- ldr r0, _080A1BDC @ =gUnknown_203AD30
+ ldr r0, _080A1BDC @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r0, _080A1BE0 @ =gMapHeader
ldrb r3, [r0, 0x14]
@@ -1541,7 +1541,7 @@ ItemUseOutOfBattle_EscapeRope: @ 80A1BAC
bl sub_80A103C
b _080A1BFE
.align 2, 0
-_080A1BDC: .4byte gUnknown_203AD30
+_080A1BDC: .4byte gSpecialVar_ItemId
_080A1BE0: .4byte gMapHeader
_080A1BE4: .4byte gUnknown_2039998
_080A1BE8: .4byte sub_80A1C08
@@ -1687,7 +1687,7 @@ sub_80A1CF8: @ 80A1CF8
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _080A1D2C @ =gUnknown_203AD30
+ ldr r0, _080A1D2C @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A1D30 @ =0x0000ffff
movs r0, 0x4
@@ -1708,7 +1708,7 @@ sub_80A1CF8: @ 80A1CF8
bl sub_8108B50
b _080A1D4C
.align 2, 0
-_080A1D2C: .4byte gUnknown_203AD30
+_080A1D2C: .4byte gSpecialVar_ItemId
_080A1D30: .4byte 0x0000ffff
_080A1D34: .4byte gTasks
_080A1D38: .4byte sub_80A1D58
@@ -1841,7 +1841,7 @@ sub_80A1E1C: @ 80A1E1C
lsls r0, 24
cmp r0, 0
bne _080A1E48
- ldr r0, _080A1E44 @ =gUnknown_203AD30
+ ldr r0, _080A1E44 @ =gSpecialVar_ItemId
ldrh r0, [r0]
movs r1, 0x1
bl sub_809A1D8
@@ -1850,7 +1850,7 @@ sub_80A1E1C: @ 80A1E1C
bl sub_8108B50
b _080A1E54
.align 2, 0
-_080A1E44: .4byte gUnknown_203AD30
+_080A1E44: .4byte gSpecialVar_ItemId
_080A1E48:
ldr r2, _080A1E5C @ =gUnknown_8416631
ldr r3, _080A1E60 @ =sub_810A1F8
@@ -1895,7 +1895,7 @@ sub_80A1E7C: @ 80A1E7C
muls r0, r2
ldr r1, _080A1EC4 @ =gPlayerParty
adds r0, r1
- ldr r1, _080A1EC8 @ =gUnknown_203AD30
+ ldr r1, _080A1EC8 @ =gSpecialVar_ItemId
ldrh r1, [r1]
lsls r2, 24
lsrs r2, 24
@@ -1915,7 +1915,7 @@ sub_80A1E7C: @ 80A1E7C
_080A1EBC: .4byte gBattlerPartyIndexes
_080A1EC0: .4byte gBattlerInMenuId
_080A1EC4: .4byte gPlayerParty
-_080A1EC8: .4byte gUnknown_203AD30
+_080A1EC8: .4byte gSpecialVar_ItemId
_080A1ECC: .4byte gUnknown_84169DC
_080A1ED0: .4byte sub_810A1F8
_080A1ED4:
@@ -1953,7 +1953,7 @@ sub_80A1EF4: @ 80A1EF4
asrs r0, 16
cmp r0, 0x7
ble _080A1F36
- ldr r0, _080A1F40 @ =gUnknown_203AD30
+ ldr r0, _080A1F40 @ =gSpecialVar_ItemId
ldrh r4, [r0]
movs r0, 0x1
bl PlaySE
@@ -1973,7 +1973,7 @@ _080A1F36:
bx r0
.align 2, 0
_080A1F3C: .4byte gTasks+0x8
-_080A1F40: .4byte gUnknown_203AD30
+_080A1F40: .4byte gSpecialVar_ItemId
_080A1F44: .4byte sub_80A1F48
thumb_func_end sub_80A1EF4
@@ -2009,7 +2009,7 @@ sub_80A1F78: @ 80A1F78
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _080A1F9C @ =gUnknown_203AD30
+ ldr r0, _080A1F9C @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetPocketByItemId
lsls r0, 24
@@ -2022,7 +2022,7 @@ sub_80A1F78: @ 80A1F78
bl sub_813D808
b _080A1FB0
.align 2, 0
-_080A1F9C: .4byte gUnknown_203AD30
+_080A1F9C: .4byte gSpecialVar_ItemId
_080A1FA0: .4byte sub_81279E0
_080A1FA4:
ldr r0, _080A1FB8 @ =sub_81279E0
@@ -2097,7 +2097,7 @@ sub_80A2010: @ 80A2010
cmp r0, 0
bne _080A2058
bl sub_80A1A44
- ldr r0, _080A2048 @ =gUnknown_203AD30
+ ldr r0, _080A2048 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A204C @ =0x0000ffff
movs r0, 0x4
@@ -2111,7 +2111,7 @@ sub_80A2010: @ 80A2010
b _080A2060
.align 2, 0
_080A2044: .4byte gBattleTypeFlags
-_080A2048: .4byte gUnknown_203AD30
+_080A2048: .4byte gSpecialVar_ItemId
_080A204C: .4byte 0x0000ffff
_080A2050: .4byte gStringVar4
_080A2054: .4byte sub_8108B50
@@ -2130,7 +2130,7 @@ ItemUseOutOfBattle_EnigmaBerry: @ 80A2068
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _080A208C @ =gUnknown_203AD30
+ ldr r0, _080A208C @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetItemEffectType
lsls r0, 24
@@ -2146,7 +2146,7 @@ _080A2082:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080A208C: .4byte gUnknown_203AD30
+_080A208C: .4byte gSpecialVar_ItemId
_080A2090: .4byte _080A2094
.align 2, 0
_080A2094:
@@ -2259,7 +2259,7 @@ ItemUseInBattle_EnigmaBerry: @ 80A2194
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _080A21B4 @ =gUnknown_203AD30
+ ldr r0, _080A21B4 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetItemEffectType
lsls r0, 24
@@ -2272,7 +2272,7 @@ ItemUseInBattle_EnigmaBerry: @ 80A2194
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080A21B4: .4byte gUnknown_203AD30
+_080A21B4: .4byte gSpecialVar_ItemId
_080A21B8: .4byte _080A21BC
.align 2, 0
_080A21BC:
@@ -2324,7 +2324,7 @@ sub_80A2238: @ 80A2238
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080A2268 @ =gUnknown_203AD30
+ ldr r0, _080A2268 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetPocketByItemId
lsls r0, 24
@@ -2342,7 +2342,7 @@ sub_80A2238: @ 80A2238
bl sub_813EB20
b _080A228A
.align 2, 0
-_080A2268: .4byte gUnknown_203AD30
+_080A2268: .4byte gSpecialVar_ItemId
_080A226C: .4byte gStringVar4
_080A2270: .4byte gUnknown_8416425
_080A2274: .4byte sub_813E2B8
diff --git a/asm/itemfinder.s b/asm/itemfinder.s
index d25a0c486..bf3e78ebc 100644
--- a/asm/itemfinder.s
+++ b/asm/itemfinder.s
@@ -369,14 +369,14 @@ sub_813EF40: @ 813EF40
adds r0, r5, 0
movs r1, 0x1
bl sub_80CC44C
- ldr r1, _0813EF90 @ =gUnknown_20370C0
+ ldr r1, _0813EF90 @ =gSpecialVar_0x8004
strh r0, [r1]
adds r0, r5, 0
movs r1, 0
bl sub_80CC44C
ldr r1, _0813EF94 @ =gSpecialVar_0x8005
strh r0, [r1]
- ldr r0, _0813EF98 @ =gUnknown_20370C4
+ ldr r0, _0813EF98 @ =gSpecialVar_0x8006
movs r5, 0x1
strh r5, [r0]
ldrh r1, [r1]
@@ -394,9 +394,9 @@ sub_813EF40: @ 813EF40
bx r0
.align 2, 0
_0813EF8C: .4byte gTasks+0x8
-_0813EF90: .4byte gUnknown_20370C0
+_0813EF90: .4byte gSpecialVar_0x8004
_0813EF94: .4byte gSpecialVar_0x8005
-_0813EF98: .4byte gUnknown_20370C4
+_0813EF98: .4byte gSpecialVar_0x8006
thumb_func_end sub_813EF40
thumb_func_start sub_813EF9C
diff --git a/asm/learn_move.s b/asm/learn_move.s
index fec6928d3..5068e6d16 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -182,7 +182,7 @@ sub_80E478C: @ 80E478C
str r0, [r4]
bl sub_80E4F54
ldr r0, [r4]
- ldr r1, _080E47F4 @ =gUnknown_20370C0
+ ldr r1, _080E47F4 @ =gSpecialVar_0x8004
ldrh r1, [r1]
movs r2, 0x98
lsls r2, 2
@@ -205,7 +205,7 @@ sub_80E478C: @ 80E478C
.align 2, 0
_080E47EC: .4byte gUnknown_203AAB4
_080E47F0: .4byte 0x00000a6c
-_080E47F4: .4byte gUnknown_20370C0
+_080E47F4: .4byte gSpecialVar_0x8004
_080E47F8: .4byte sub_80E4620
_080E47FC: .4byte sub_80E4870
thumb_func_end sub_80E478C
@@ -505,7 +505,7 @@ _080E4A88:
beq _080E4AE0
ldr r0, _080E4AD8 @ =gUnknown_841E405
bl sub_80E48C0
- ldr r1, _080E4ADC @ =gUnknown_20370C0
+ ldr r1, _080E4ADC @ =gSpecialVar_0x8004
movs r0, 0x1
strh r0, [r1]
ldr r1, [r4]
@@ -517,7 +517,7 @@ _080E4ACC: .4byte gPlayerParty
_080E4AD0: .4byte 0x00000a67
_080E4AD4: .4byte 0xffff0000
_080E4AD8: .4byte gUnknown_841E405
-_080E4ADC: .4byte gUnknown_20370C0
+_080E4ADC: .4byte gSpecialVar_0x8004
_080E4AE0:
ldr r1, [r4]
movs r0, 0x10
@@ -567,11 +567,11 @@ _080E4B3A:
beq _080E4B4C
b _080E4EDA
_080E4B40:
- ldr r0, _080E4B48 @ =gUnknown_20370C0
+ ldr r0, _080E4B48 @ =gSpecialVar_0x8004
strh r1, [r0]
b _080E4ED2
.align 2, 0
-_080E4B48: .4byte gUnknown_20370C0
+_080E4B48: .4byte gSpecialVar_0x8004
_080E4B4C:
ldr r0, _080E4B54 @ =gUnknown_203AAB4
ldr r1, [r0]
@@ -931,7 +931,7 @@ _080E4DB4:
ldr r1, [r7]
movs r0, 0x1E
strb r0, [r1]
- ldr r1, _080E4E6C @ =gUnknown_20370C0
+ ldr r1, _080E4E6C @ =gSpecialVar_0x8004
movs r0, 0x1
strh r0, [r1]
b _080E4EDA
@@ -943,7 +943,7 @@ _080E4E5C: .4byte 0x00000261
_080E4E60: .4byte 0x00000a67
_080E4E64: .4byte gStringVar2
_080E4E68: .4byte gUnknown_841E493
-_080E4E6C: .4byte gUnknown_20370C0
+_080E4E6C: .4byte gSpecialVar_0x8004
_080E4E70:
ldr r0, _080E4E88 @ =gUnknown_841E4C0
bl sub_80E48C0
diff --git a/asm/librfu.s b/asm/librfu.s
index 6995a9ac1..bdf816bd8 100644
--- a/asm/librfu.s
+++ b/asm/librfu.s
@@ -2769,11 +2769,11 @@ _081E0956:
thumb_func_start sub_81E095C
sub_81E095C: @ 81E095C
push {lr}
- ldr r2, _081E0964 @ =gUnknown_86FC068
+ ldr r2, _081E0964 @ =_Str_RFU_MBOOT
ldr r3, _081E0968 @ =0x30000F0
b _081E0976
.align 2, 0
-_081E0964: .4byte gUnknown_86FC068
+_081E0964: .4byte _Str_RFU_MBOOT
_081E0968: .4byte 0x30000F0
_081E096C:
ldrb r0, [r3]
@@ -5794,7 +5794,7 @@ _081E1FF0:
movs r2, 0
movs r0, 0x1
ands r0, r3
- ldr r4, _081E2020 @ =gUnknown_86FC03C
+ ldr r4, _081E2020 @ =_Str_RfuHeader
cmp r0, 0
bne _081E2012
movs r1, 0x1
@@ -5818,7 +5818,7 @@ _081E2012:
adds r1, 0xF
b _081E202E
.align 2, 0
-_081E2020: .4byte gUnknown_86FC03C
+_081E2020: .4byte _Str_RfuHeader
_081E2024:
cmp r0, 0
bne _081E2030
@@ -6832,7 +6832,7 @@ rfu_STC_NI_constructLLSF: @ 81E2790
ldr r0, [r2]
ldrb r0, [r0]
lsls r0, 4
- ldr r1, _081E2810 @ =gUnknown_86FC03C
+ ldr r1, _081E2810 @ =_Str_RfuHeader
adds r0, r1
mov r8, r0
ldrh r1, [r4]
@@ -6883,7 +6883,7 @@ _081E27FA:
b _081E285C
.align 2, 0
_081E280C: .4byte gUnknown_3007460
-_081E2810: .4byte gUnknown_86FC03C
+_081E2810: .4byte _Str_RfuHeader
_081E2814: .4byte 0x00008022
_081E2818:
ldr r0, _081E2844 @ =0x00008022
@@ -7083,7 +7083,7 @@ _081E297C:
ldr r2, [r0]
ldrb r0, [r2]
lsls r0, 4
- ldr r1, _081E29F8 @ =gUnknown_86FC03C
+ ldr r1, _081E29F8 @ =_Str_RfuHeader
adds r5, r0, r1
ldrh r0, [r4]
movs r1, 0xF
@@ -7142,7 +7142,7 @@ _081E29CE:
b _081E2A0C
.align 2, 0
_081E29F4: .4byte gUnknown_3007460
-_081E29F8: .4byte gUnknown_86FC03C
+_081E29F8: .4byte _Str_RfuHeader
_081E29FC: .4byte gUnknown_3007468
_081E2A00:
movs r0, 0x10
@@ -7469,7 +7469,7 @@ rfu_STC_analyzeLLSF: @ 81E2C40
movs r1, 0x1
ands r0, r1
lsls r0, 4
- ldr r1, _081E2C78 @ =gUnknown_86FC03C
+ ldr r1, _081E2C78 @ =_Str_RfuHeader
adds r6, r0, r1
ldrb r0, [r6]
cmp r3, r0
@@ -7478,7 +7478,7 @@ rfu_STC_analyzeLLSF: @ 81E2C40
b _081E2E6E
.align 2, 0
_081E2C74: .4byte gUnknown_3007460
-_081E2C78: .4byte gUnknown_86FC03C
+_081E2C78: .4byte _Str_RfuHeader
_081E2C7C:
movs r5, 0
movs r4, 0
@@ -8877,12 +8877,12 @@ _081E3726:
cmp r0, 0x3
bhi _081E373C
lsls r0, 1
- ldr r1, _081E3738 @ =gUnknown_86FC074
+ ldr r1, _081E3738 @ =_Str_Sio32ID
adds r0, r1
ldrh r0, [r0]
b _081E373E
.align 2, 0
-_081E3738: .4byte gUnknown_86FC074
+_081E3738: .4byte _Str_Sio32ID
_081E373C:
ldr r0, _081E3794 @ =0x00008001
_081E373E:
diff --git a/asm/link.s b/asm/link.s
index 71f4c718b..929180d83 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -232,7 +232,7 @@ sub_8009640: @ 8009640
ldr r0, _080096D4 @ =sub_800978C
bl SetVBlankCallback
bl ResetBlockSend
- ldr r1, _080096D8 @ =gUnknown_202271A
+ ldr r1, _080096D8 @ =gLinkType
ldr r2, _080096DC @ =0x00001111
adds r0, r2, 0
strh r0, [r1]
@@ -283,7 +283,7 @@ _08009670:
bx r0
.align 2, 0
_080096D4: .4byte sub_800978C
-_080096D8: .4byte gUnknown_202271A
+_080096D8: .4byte gLinkType
_080096DC: .4byte 0x00001111
_080096E0: .4byte gMain
_080096E4: .4byte gSaveBlock2Ptr
@@ -297,17 +297,17 @@ _080096F4: .4byte c2_08009A8C
sub_80096F8: @ 80096F8
lsls r0, 24
lsrs r0, 24
- ldr r1, _08009704 @ =gUnknown_2022720
+ ldr r1, _08009704 @ =gLocalLinkPlayer
strh r0, [r1, 0x18]
bx lr
.align 2, 0
-_08009704: .4byte gUnknown_2022720
+_08009704: .4byte gLocalLinkPlayer
thumb_func_end sub_80096F8
thumb_func_start sub_8009708
sub_8009708: @ 8009708
push {r4,r5,lr}
- ldr r5, _08009774 @ =gUnknown_2022720
+ ldr r5, _08009774 @ =gLocalLinkPlayer
ldr r4, _08009778 @ =gSaveBlock2Ptr
ldr r1, [r4]
ldrb r2, [r1, 0xA]
@@ -327,7 +327,7 @@ sub_8009708: @ 8009708
ldr r0, [r4]
ldrb r0, [r0, 0x8]
strb r0, [r5, 0x13]
- ldr r0, _0800977C @ =gUnknown_202271A
+ ldr r0, _0800977C @ =gLinkType
ldrh r0, [r0]
str r0, [r5, 0x14]
ldr r0, _08009780 @ =gGameLanguage
@@ -359,9 +359,9 @@ _0800976E:
pop {r0}
bx r0
.align 2, 0
-_08009774: .4byte gUnknown_2022720
+_08009774: .4byte gLocalLinkPlayer
_08009778: .4byte gSaveBlock2Ptr
-_0800977C: .4byte gUnknown_202271A
+_0800977C: .4byte gLinkType
_08009780: .4byte gGameLanguage
_08009784: .4byte gGameVersion
_08009788: .4byte 0x00000844
@@ -380,7 +380,7 @@ sub_800978C: @ 800978C
thumb_func_start sub_80097A0
sub_80097A0: @ 80097A0
push {lr}
- ldr r3, _080097C0 @ =gUnknown_2022718
+ ldr r3, _080097C0 @ =gLinkOpen
ldr r1, _080097C4 @ =gUnknown_3003F50
ldr r2, _080097C8 @ =0x0000efff
adds r0, r1, 0
@@ -396,7 +396,7 @@ _080097AC:
pop {r0}
bx r0
.align 2, 0
-_080097C0: .4byte gUnknown_2022718
+_080097C0: .4byte gLinkOpen
_080097C4: .4byte gUnknown_3003F50
_080097C8: .4byte 0x0000efff
thumb_func_end sub_80097A0
@@ -519,7 +519,7 @@ sub_80098B8: @ 80098B8
beq _080098CC
bl sub_80F8DC0
_080098CC:
- ldr r0, _080098E4 @ =gUnknown_2022718
+ ldr r0, _080098E4 @ =gLinkOpen
strb r4, [r0]
bl sub_800B29C
pop {r4}
@@ -528,7 +528,7 @@ _080098CC:
.align 2, 0
_080098DC: .4byte gUnknown_3003F64
_080098E0: .4byte gUnknown_3003F3C
-_080098E4: .4byte gUnknown_2022718
+_080098E4: .4byte gLinkOpen
thumb_func_end sub_80098B8
thumb_func_start TestBlockTransfer
@@ -597,7 +597,7 @@ _08009958:
cmp r0, 0
beq _08009994
lsls r0, r5, 8
- ldr r1, _080099C0 @ =gUnknown_2022118
+ ldr r1, _080099C0 @ =gBlockRecvBuffer
adds r0, r1
lsls r4, r5, 1
adds r1, r4, r5
@@ -614,7 +614,7 @@ _08009958:
ldrh r0, [r4]
cmp r0, r8
beq _08009994
- ldr r0, _080099C8 @ =gUnknown_2022110
+ ldr r0, _080099C8 @ =gLinkTestDebugValuesEnabled
strb r6, [r0]
ldr r0, _080099CC @ =gUnknown_2022111
strb r6, [r0]
@@ -637,9 +637,9 @@ _080099B0: .4byte gUnknown_3000E08
_080099B4: .4byte gUnknown_3000E18
_080099B8: .4byte gUnknown_3000E60
_080099BC: .4byte 0x00000342
-_080099C0: .4byte gUnknown_2022118
+_080099C0: .4byte gBlockRecvBuffer
_080099C4: .4byte gUnknown_3003F88
-_080099C8: .4byte gUnknown_2022110
+_080099C8: .4byte gLinkTestDebugValuesEnabled
_080099CC: .4byte gUnknown_2022111
thumb_func_end TestBlockTransfer
@@ -705,7 +705,7 @@ _08009A38:
beq _08009A46
bl sub_800AAC0
_08009A46:
- ldr r0, _08009A80 @ =gUnknown_2022110
+ ldr r0, _08009A80 @ =gLinkTestDebugValuesEnabled
ldrb r0, [r0]
cmp r0, 0
beq _08009A66
@@ -731,7 +731,7 @@ _08009A70: .4byte gMain
_08009A74: .4byte gUnknown_3003F84
_08009A78: .4byte gHeap + 0x4000
_08009A7C: .4byte 0x00002004
-_08009A80: .4byte gUnknown_2022110
+_08009A80: .4byte gLinkTestDebugValuesEnabled
_08009A84: .4byte gLinkVSyncDisabled
_08009A88: .4byte gUnknown_3003F80
thumb_func_end LinkTestProcessKeyInput
@@ -756,14 +756,14 @@ c2_08009A8C: @ 8009A8C
LinkMain2: @ 8009AB0
push {r4,r5,lr}
adds r4, r0, 0
- ldr r0, _08009AC0 @ =gUnknown_2022718
+ ldr r0, _08009AC0 @ =gLinkOpen
ldrb r0, [r0]
cmp r0, 0
bne _08009AC4
movs r0, 0
b _08009B0C
.align 2, 0
-_08009AC0: .4byte gUnknown_2022718
+_08009AC0: .4byte gLinkOpen
_08009AC4:
movs r1, 0
ldr r5, _08009B14 @ =gUnknown_3003EC4
@@ -960,7 +960,7 @@ _08009C38:
ldr r0, _08009C7C @ =gUnknown_3003E70
adds r2, r0, 0
adds r2, 0x10
- ldr r1, _08009C80 @ =gUnknown_2022720
+ ldr r1, _08009C80 @ =gLocalLinkPlayer
ldm r1!, {r3-r5}
stm r2!, {r3-r5}
ldm r1!, {r3,r6,r7}
@@ -989,7 +989,7 @@ _08009C38:
b _08009E3E
.align 2, 0
_08009C7C: .4byte gUnknown_3003E70
-_08009C80: .4byte gUnknown_2022720
+_08009C80: .4byte gLocalLinkPlayer
_08009C84: .4byte gUnknown_82345C0
_08009C88:
ldr r1, _08009C90 @ =gUnknown_3003F28
@@ -1062,7 +1062,7 @@ _08009D08: .4byte gDecompressionBuffer
_08009D0C: .4byte gUnknown_3003ED0
_08009D10:
movs r2, 0
- ldr r1, _08009DC4 @ =gUnknown_2022118
+ ldr r1, _08009DC4 @ =gBlockRecvBuffer
mov r9, r1
adds r7, r3, 0
ldr r3, _08009DC8 @ =gUnknown_3003ED0
@@ -1106,7 +1106,7 @@ _08009D40:
cmp r0, 0x1
bne _08009DE6
lsls r1, r6, 8
- ldr r0, _08009DC4 @ =gUnknown_2022118
+ ldr r0, _08009DC4 @ =gBlockRecvBuffer
adds r1, r0
mov r8, r1
lsls r0, r6, 3
@@ -1152,7 +1152,7 @@ _08009DBC:
bl SetMainCallback2
b _08009E3E
.align 2, 0
-_08009DC4: .4byte gUnknown_2022118
+_08009DC4: .4byte gBlockRecvBuffer
_08009DC8: .4byte gUnknown_3003ED0
_08009DCC: .4byte gUnknown_3003EB8
_08009DD0: .4byte gLinkPlayers
@@ -1318,12 +1318,12 @@ _08009F04: .4byte 0x0000cccc
_08009F08:
ldr r0, _08009F14 @ =gUnknown_3003F50
strh r2, [r0]
- ldr r1, _08009F18 @ =gUnknown_202271A
+ ldr r1, _08009F18 @ =gLinkType
ldrh r1, [r1]
b _08009FD4
.align 2, 0
_08009F14: .4byte gUnknown_3003F50
-_08009F18: .4byte gUnknown_202271A
+_08009F18: .4byte gLinkType
_08009F1C:
ldr r0, _08009F28 @ =gUnknown_3003F50
strh r2, [r0]
@@ -1373,12 +1373,12 @@ _08009F74: .4byte gUnknown_3000E08
_08009F78:
ldr r0, _08009F84 @ =gUnknown_3003F50
strh r2, [r0]
- ldr r1, _08009F88 @ =gUnknown_203AD30
+ ldr r1, _08009F88 @ =gSpecialVar_ItemId
ldrh r1, [r1]
b _08009FD4
.align 2, 0
_08009F84: .4byte gUnknown_3003F50
-_08009F88: .4byte gUnknown_203AD30
+_08009F88: .4byte gSpecialVar_ItemId
_08009F8C:
ldr r0, _08009F98 @ =gUnknown_3003F50
strh r2, [r0]
@@ -1554,14 +1554,14 @@ sub_800A0B4: @ 800A0B4
ldr r0, _0800A0C8 @ =gUnknown_3000E54
movs r1, 0
str r1, [r0]
- ldr r0, _0800A0CC @ =gUnknown_202271C
+ ldr r0, _0800A0CC @ =gLinkTimeOutCounter
strh r1, [r0]
bl sub_8009804
pop {r0}
bx r0
.align 2, 0
_0800A0C8: .4byte gUnknown_3000E54
-_0800A0CC: .4byte gUnknown_202271C
+_0800A0CC: .4byte gLinkTimeOutCounter
thumb_func_end sub_800A0B4
thumb_func_start sub_800A0D0
@@ -1687,7 +1687,7 @@ _0800A1BC:
.align 2, 0
_0800A1C4: .4byte gUnknown_3000E54
_0800A1C8:
- ldr r0, _0800A1E8 @ =gUnknown_202271C
+ ldr r0, _0800A1E8 @ =gLinkTimeOutCounter
ldrh r1, [r0]
adds r1, 0x1
strh r1, [r0]
@@ -1706,7 +1706,7 @@ _0800A1E2:
pop {r1}
bx r1
.align 2, 0
-_0800A1E8: .4byte gUnknown_202271C
+_0800A1E8: .4byte gLinkTimeOutCounter
_0800A1EC: .4byte gUnknown_3000E54
thumb_func_end sub_800A0D0
@@ -1844,7 +1844,7 @@ _0800A2C0:
str r7, [r4, 0x4]
b _0800A2EA
_0800A2D8:
- ldr r5, _0800A304 @ =gUnknown_2022618
+ ldr r5, _0800A304 @ =gBlockSendBuffer
cmp r7, r5
beq _0800A2E8
adds r0, r5, 0
@@ -1868,7 +1868,7 @@ _0800A2FE:
pop {r1}
bx r1
.align 2, 0
-_0800A304: .4byte gUnknown_2022618
+_0800A304: .4byte gBlockSendBuffer
_0800A308: .4byte 0x0000bbbb
_0800A30C: .4byte gUnknown_3003F80
_0800A310: .4byte LinkCB_BlockSendBegin
@@ -2707,7 +2707,7 @@ sub_800A900: @ 800A900
ldr r1, _0800A938 @ =gUnknown_3003F60
strb r0, [r1]
ldr r4, _0800A93C @ =gLinkPlayers
- ldr r3, _0800A940 @ =gUnknown_20227C8
+ ldr r3, _0800A940 @ =gSavedLinkPlayers
movs r2, 0x4
_0800A914:
adds r0, r3, 0
@@ -2730,7 +2730,7 @@ _0800A914:
_0800A934: .4byte gUnknown_3003F40
_0800A938: .4byte gUnknown_3003F60
_0800A93C: .4byte gLinkPlayers
-_0800A940: .4byte gUnknown_20227C8
+_0800A940: .4byte gSavedLinkPlayers
thumb_func_end sub_800A900
thumb_func_start sub_800A944
@@ -2761,7 +2761,7 @@ sub_800A95C: @ 800A95C
cmp r5, r2
bge _0800A986
ldr r1, _0800A994 @ =gLinkPlayers
- ldr r0, _0800A998 @ =gUnknown_20227C8
+ ldr r0, _0800A998 @ =gSavedLinkPlayers
adds r4, r0, 0x4
adds r3, r1, 0x4
_0800A972:
@@ -2785,7 +2785,7 @@ _0800A986:
.align 2, 0
_0800A990: .4byte gUnknown_3003F40
_0800A994: .4byte gLinkPlayers
-_0800A998: .4byte gUnknown_20227C8
+_0800A998: .4byte gSavedLinkPlayers
_0800A99C:
movs r0, 0x1
_0800A99E:
@@ -2804,7 +2804,7 @@ sub_800A9A4: @ 800A9A4
ldrb r0, [r0]
cmp r4, r0
bcs _0800AA04
- ldr r6, _0800AA14 @ =gUnknown_20227C8
+ ldr r6, _0800AA14 @ =gSavedLinkPlayers
ldr r5, _0800AA18 @ =gLinkPlayers
movs r0, 0x8
adds r0, r6
@@ -2852,7 +2852,7 @@ _0800AA04:
bx r0
.align 2, 0
_0800AA10: .4byte gUnknown_3003F40
-_0800AA14: .4byte gUnknown_20227C8
+_0800AA14: .4byte gSavedLinkPlayers
_0800AA18: .4byte gLinkPlayers
_0800AA1C: .4byte gUnknown_3003EAC
_0800AA20: .4byte c2_800ACD4
@@ -3169,7 +3169,7 @@ _0800AC54: .4byte gUnknown_3003F80
thumb_func_start sub_800AC58
sub_800AC58: @ 800AC58
push {lr}
- ldr r0, _0800AC9C @ =gUnknown_2022718
+ ldr r0, _0800AC9C @ =gLinkOpen
ldrb r0, [r0]
cmp r0, 0
beq _0800AC98
@@ -3184,7 +3184,7 @@ sub_800AC58: @ 800AC58
ldrb r0, [r0]
cmp r0, 0
bne _0800AC8E
- ldr r1, _0800ACA8 @ =gUnknown_2022854
+ ldr r1, _0800ACA8 @ =sLinkErrorBuffer
str r2, [r1]
ldr r0, _0800ACAC @ =gUnknown_3004F70
ldrb r0, [r0]
@@ -3203,10 +3203,10 @@ _0800AC98:
pop {r0}
bx r0
.align 2, 0
-_0800AC9C: .4byte gUnknown_2022718
+_0800AC9C: .4byte gLinkOpen
_0800ACA0: .4byte gUnknown_3003F20
_0800ACA4: .4byte gUnknown_3003F38
-_0800ACA8: .4byte gUnknown_2022854
+_0800ACA8: .4byte sLinkErrorBuffer
_0800ACAC: .4byte gUnknown_3004F70
_0800ACB0: .4byte gUnknown_3003FA0
_0800ACB4: .4byte c2_800ACD4
@@ -3216,7 +3216,7 @@ _0800ACB8: .4byte gUnknown_3003EAC
thumb_func_start sub_800ACBC
sub_800ACBC: @ 800ACBC
push {r4,lr}
- ldr r4, _0800ACD0 @ =gUnknown_2022854
+ ldr r4, _0800ACD0 @ =sLinkErrorBuffer
str r0, [r4]
strb r1, [r4, 0x5]
strb r2, [r4, 0x4]
@@ -3225,7 +3225,7 @@ sub_800ACBC: @ 800ACBC
pop {r0}
bx r0
.align 2, 0
-_0800ACD0: .4byte gUnknown_2022854
+_0800ACD0: .4byte sLinkErrorBuffer
thumb_func_end sub_800ACBC
thumb_func_start c2_800ACD4
@@ -3257,7 +3257,7 @@ c2_800ACD4: @ 800ACD4
ldrb r0, [r1]
cmp r0, 0
beq _0800AD30
- ldr r0, _0800ADF4 @ =gUnknown_2022854
+ ldr r0, _0800ADF4 @ =sLinkErrorBuffer
ldrb r0, [r0, 0x6]
cmp r0, 0
bne _0800AD2C
@@ -3338,7 +3338,7 @@ _0800ADE4: .4byte gMPlayInfo_SE2
_0800ADE8: .4byte gMPlayInfo_SE3
_0800ADEC: .4byte gHeap
_0800ADF0: .4byte gUnknown_3003F3C
-_0800ADF4: .4byte gUnknown_2022854
+_0800ADF4: .4byte sLinkErrorBuffer
_0800ADF8: .4byte sub_800978C
_0800ADFC: .4byte gUnknown_82345E8
_0800AE00: .4byte gUnknown_2022860
@@ -3492,14 +3492,14 @@ _0800AF50:
beq _0800AF7A
b _0800AFC4
_0800AF5A:
- ldr r0, _0800AF68 @ =gUnknown_2022854
+ ldr r0, _0800AF68 @ =sLinkErrorBuffer
ldrb r0, [r0, 0x6]
cmp r0, 0
beq _0800AF6C
bl sub_800AE1C
b _0800AFC4
.align 2, 0
-_0800AF68: .4byte gUnknown_2022854
+_0800AF68: .4byte sLinkErrorBuffer
_0800AF6C:
bl sub_800AED0
b _0800AFC4
@@ -3563,7 +3563,7 @@ _0800AFC4:
bl PlaySE
movs r0, 0
strb r0, [r4]
- ldr r1, _0800B00C @ =gUnknown_2022854
+ ldr r1, _0800B00C @ =sLinkErrorBuffer
movs r0, 0
strb r0, [r1, 0x6]
bl sub_8079B7C
@@ -3573,7 +3573,7 @@ _0800AFFC: .4byte gUnknown_8234610
_0800B000: .4byte gUnknown_841DF4C
_0800B004: .4byte gMain
_0800B008: .4byte gUnknown_3003F3C
-_0800B00C: .4byte gUnknown_2022854
+_0800B00C: .4byte sLinkErrorBuffer
_0800B010:
cmp r2, 0x2
bne _0800B02E
@@ -3683,7 +3683,7 @@ sub_800B0B4: @ 800B0B4
ldr r1, _0800B100 @ =gUnknown_3003E70
adds r2, r1, 0
adds r2, 0x10
- ldr r0, _0800B104 @ =gUnknown_2022720
+ ldr r0, _0800B104 @ =gLocalLinkPlayer
ldm r0!, {r3-r5}
stm r2!, {r3-r5}
ldm r0!, {r3,r4,r6}
@@ -3707,7 +3707,7 @@ sub_800B0B4: @ 800B0B4
strh r2, [r0]
ldrb r2, [r3, 0x2]
strb r2, [r0, 0x2]
- ldr r0, _0800B10C @ =gUnknown_2022618
+ ldr r0, _0800B10C @ =gBlockSendBuffer
movs r2, 0x3C
bl memcpy
pop {r4-r6}
@@ -3715,9 +3715,9 @@ sub_800B0B4: @ 800B0B4
bx r0
.align 2, 0
_0800B100: .4byte gUnknown_3003E70
-_0800B104: .4byte gUnknown_2022720
+_0800B104: .4byte gLocalLinkPlayer
_0800B108: .4byte gUnknown_82345C0
-_0800B10C: .4byte gUnknown_2022618
+_0800B10C: .4byte gBlockSendBuffer
thumb_func_end sub_800B0B4
thumb_func_start sub_800B110
@@ -3726,7 +3726,7 @@ sub_800B110: @ 800B110
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 8
- ldr r1, _0800B168 @ =gUnknown_2022118
+ ldr r1, _0800B168 @ =gBlockRecvBuffer
adds r4, r2, r1
lsls r2, r0, 3
subs r2, r0
@@ -3764,7 +3764,7 @@ _0800B160:
pop {r0}
bx r0
.align 2, 0
-_0800B168: .4byte gUnknown_2022118
+_0800B168: .4byte gBlockRecvBuffer
_0800B16C: .4byte gLinkPlayers
_0800B170: .4byte gUnknown_82345C0
_0800B174: .4byte c2_800ACD4
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index c339bfdff..08f81f729 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -3504,7 +3504,7 @@ sub_80FEE24: @ 80FEE24
thumb_func_start sub_80FEE44
sub_80FEE44: @ 80FEE44
push {lr}
- ldr r0, _080FEE58 @ =gUnknown_20370C0
+ ldr r0, _080FEE58 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0xE
bhi _080FEF12
@@ -3514,7 +3514,7 @@ sub_80FEE44: @ 80FEE44
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080FEE58: .4byte gUnknown_20370C0
+_080FEE58: .4byte gSpecialVar_0x8004
_080FEE5C: .4byte _080FEE60
.align 2, 0
_080FEE60:
@@ -3585,7 +3585,7 @@ _080FEEF4:
ldr r1, [r2]
adds r1, r0
_080FEF08:
- ldr r0, _080FEF24 @ =gUnknown_20370C0
+ ldr r0, _080FEF24 @ =gSpecialVar_0x8004
ldrb r0, [r0]
ldr r2, _080FEF28 @ =sub_80568C4
bl sub_80FEBAC
@@ -3596,14 +3596,14 @@ _080FEF12:
_080FEF18: .4byte gSaveBlock1Ptr
_080FEF1C: .4byte gSpecialVar_0x8005
_080FEF20: .4byte 0x00002cd0
-_080FEF24: .4byte gUnknown_20370C0
+_080FEF24: .4byte gSpecialVar_0x8004
_080FEF28: .4byte sub_80568C4
thumb_func_end sub_80FEE44
thumb_func_start sub_80FEF2C
sub_80FEF2C: @ 80FEF2C
push {r4,lr}
- ldr r4, _080FEF44 @ =gUnknown_20370C0
+ ldr r4, _080FEF44 @ =gSpecialVar_0x8004
ldr r0, _080FEF48 @ =gUnknown_843F29C
movs r1, 0x4
bl sub_80FFEDC
@@ -3614,14 +3614,14 @@ sub_80FEF2C: @ 80FEF2C
pop {r0}
bx r0
.align 2, 0
-_080FEF44: .4byte gUnknown_20370C0
+_080FEF44: .4byte gSpecialVar_0x8004
_080FEF48: .4byte gUnknown_843F29C
thumb_func_end sub_80FEF2C
thumb_func_start sub_80FEF4C
sub_80FEF4C: @ 80FEF4C
push {r4,lr}
- ldr r4, _080FEF64 @ =gUnknown_20370C0
+ ldr r4, _080FEF64 @ =gSpecialVar_0x8004
ldr r0, _080FEF68 @ =gUnknown_843F2A4
movs r1, 0x4
bl sub_80FFEDC
@@ -3632,7 +3632,7 @@ sub_80FEF4C: @ 80FEF4C
pop {r0}
bx r0
.align 2, 0
-_080FEF64: .4byte gUnknown_20370C0
+_080FEF64: .4byte gSpecialVar_0x8004
_080FEF68: .4byte gUnknown_843F2A4
thumb_func_end sub_80FEF4C
@@ -4384,12 +4384,12 @@ _080FF4C8:
.align 2, 0
_080FF4D8: .4byte gUnknown_203ACE8
_080FF4DC:
- ldr r0, _080FF4E4 @ =gUnknown_20370D0
+ ldr r0, _080FF4E4 @ =gSpecialVar_Result
strh r1, [r0]
movs r0, 0x17
b _080FF4EA
.align 2, 0
-_080FF4E4: .4byte gUnknown_20370D0
+_080FF4E4: .4byte gSpecialVar_Result
_080FF4E8:
movs r0, 0
_080FF4EA:
@@ -4425,7 +4425,7 @@ _080FF510:
.align 2, 0
_080FF520: .4byte gUnknown_203ACE8
_080FF524:
- ldr r4, _080FF538 @ =gUnknown_20370D0
+ ldr r4, _080FF538 @ =gSpecialVar_Result
bl sub_80FF78C
lsls r0, 24
lsrs r0, 24
@@ -4434,7 +4434,7 @@ _080FF524:
movs r0, 0x17
b _080FF53E
.align 2, 0
-_080FF538: .4byte gUnknown_20370D0
+_080FF538: .4byte gSpecialVar_Result
_080FF53C:
movs r0, 0
_080FF53E:
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
index f59f1ea87..0bfd71538 100644
--- a/asm/link_rfu_2.s
+++ b/asm/link_rfu_2.s
@@ -142,7 +142,7 @@ sub_80F86F4: @ 80F86F4
lsrs r1, r0, 16
cmp r1, 0
bne _080F8722
- ldr r0, _080F8734 @ =gUnknown_202271A
+ ldr r0, _080F8734 @ =gLinkType
strh r1, [r0]
movs r0, 0
bl sub_80FB128
@@ -158,7 +158,7 @@ _080F8722:
_080F8728: .4byte gUnknown_3001190
_080F872C: .4byte 0x00000e64
_080F8730: .4byte gIntrTable + 0x4
-_080F8734: .4byte gUnknown_202271A
+_080F8734: .4byte gLinkType
thumb_func_end sub_80F86F4
thumb_func_start sub_80F8738
@@ -2543,7 +2543,7 @@ _080F99DA:
orrs r0, r3
str r0, [r1]
movs r4, 0
- ldr r0, _080F9A8C @ =gUnknown_2022118
+ ldr r0, _080F9A8C @ =gBlockRecvBuffer
mov r9, r0
mov r12, r2
mov r1, r8
@@ -2617,12 +2617,12 @@ _080F9A78:
beq _080F9A80
b _080F9BF8
_080F9A80:
- ldr r0, _080F9A8C @ =gUnknown_2022118
+ ldr r0, _080F9A8C @ =gBlockRecvBuffer
bl sub_80FAA58
b _080F9BF8
.align 2, 0
_080F9A88: .4byte gUnknown_3005450
-_080F9A8C: .4byte gUnknown_2022118
+_080F9A8C: .4byte gBlockRecvBuffer
_080F9A90: .4byte gUnknown_3003ED0
_080F9A94: .4byte gUnknown_843EBD4
_080F9A98: .4byte gUnknown_3003F64
@@ -3204,7 +3204,7 @@ _080F9EC0:
str r7, [r5, 0x70]
b _080F9F14
_080F9F02:
- ldr r4, _080F9F38 @ =gUnknown_2022618
+ ldr r4, _080F9F38 @ =gBlockSendBuffer
cmp r7, r4
beq _080F9F12
adds r0, r4, 0
@@ -3232,7 +3232,7 @@ _080F9F2A:
pop {r1}
bx r1
.align 2, 0
-_080F9F38: .4byte gUnknown_2022618
+_080F9F38: .4byte gBlockSendBuffer
_080F9F3C: .4byte gUnknown_3005450
_080F9F40: .4byte rfufunc_80F9F44
thumb_func_end sub_80F9E60
@@ -4872,7 +4872,7 @@ _080FAB70:
adds r0, r4, 0
bl ResetBlockReceivedFlag
lsls r2, r4, 8
- ldr r0, _080FAB9C @ =gUnknown_2022118
+ ldr r0, _080FAB9C @ =gBlockRecvBuffer
adds r2, r0
ldr r1, _080FABA0 @ =gLinkPlayers
lsls r0, r4, 3
@@ -4890,10 +4890,10 @@ _080FAB70:
bl sub_800B284
b _080FAC2E
.align 2, 0
-_080FAB9C: .4byte gUnknown_2022118
+_080FAB9C: .4byte gBlockRecvBuffer
_080FABA0: .4byte gLinkPlayers
_080FABA4:
- ldr r5, _080FAC40 @ =gUnknown_2022618
+ ldr r5, _080FAC40 @ =gBlockSendBuffer
adds r1, r5, 0
ldr r0, _080FAC44 @ =gUnknown_843EDE4 "PokemonSioInfo"
ldm r0!, {r2-r4}
@@ -4931,7 +4931,7 @@ _080FABC6:
adds r0, 0x1
strh r0, [r1, 0x8]
_080FABEE:
- ldr r5, _080FAC40 @ =gUnknown_2022618
+ ldr r5, _080FAC40 @ =gBlockSendBuffer
ldr r1, _080FAC48 @ =gUnknown_3005450
ldrb r0, [r1, 0xD]
strb r0, [r5, 0xF]
@@ -4955,7 +4955,7 @@ _080FAC04:
mov r1, r12
movs r2, 0x8C
bl memcpy
- ldr r1, _080FAC40 @ =gUnknown_2022618
+ ldr r1, _080FAC40 @ =gBlockSendBuffer
movs r0, 0
movs r2, 0xA0
bl SendBlock
@@ -4973,7 +4973,7 @@ _080FAC36:
strh r0, [r1, 0x8]
b _080FACD6
.align 2, 0
-_080FAC40: .4byte gUnknown_2022618
+_080FAC40: .4byte gBlockSendBuffer
_080FAC44: .4byte gUnknown_843EDE4
_080FAC48: .4byte gUnknown_3005450
_080FAC4C: .4byte 0x00000996
@@ -5008,7 +5008,7 @@ _080FAC78:
mov r0, sp
movs r4, 0
strh r4, [r0]
- ldr r1, _080FACE0 @ =gUnknown_2022118
+ ldr r1, _080FACE0 @ =gBlockRecvBuffer
ldr r2, _080FACE4 @ =0x0100007e
bl CpuSet
movs r0, 0
@@ -5046,7 +5046,7 @@ _080FACD6:
pop {r0}
bx r0
.align 2, 0
-_080FACE0: .4byte gUnknown_2022118
+_080FACE0: .4byte gBlockRecvBuffer
_080FACE4: .4byte 0x0100007e
_080FACE8: .4byte gUnknown_3005450
_080FACEC: .4byte 0x0000099e
@@ -5095,13 +5095,13 @@ _080FAD3A:
cmp r0, 0
beq _080FAD8A
bl sub_800B0B4
- ldr r1, _080FAD50 @ =gUnknown_2022618
+ ldr r1, _080FAD50 @ =gBlockSendBuffer
movs r0, 0
movs r2, 0x3C
bl SendBlock
b _080FAD5E
.align 2, 0
-_080FAD50: .4byte gUnknown_2022618
+_080FAD50: .4byte gBlockSendBuffer
_080FAD54:
bl sub_800A4BC
lsls r0, 24
@@ -5119,7 +5119,7 @@ _080FAD66:
ands r1, r0
cmp r1, 0
beq _080FAD8A
- ldr r0, _080FAD90 @ =gUnknown_2022118
+ ldr r0, _080FAD90 @ =gBlockRecvBuffer
bl sub_80FA9FC
movs r0, 0
bl ResetBlockReceivedFlag
@@ -5132,7 +5132,7 @@ _080FAD8A:
pop {r0}
bx r0
.align 2, 0
-_080FAD90: .4byte gUnknown_2022118
+_080FAD90: .4byte gBlockRecvBuffer
_080FAD94: .4byte gUnknown_3003F64
thumb_func_end sub_80FACF0
@@ -6870,7 +6870,7 @@ sub_80FBA78: @ 80FBA78
lsls r0, 24
cmp r0, 0
beq _080FBAEC
- ldr r1, _080FBAF8 @ =gUnknown_202271A
+ ldr r1, _080FBAF8 @ =gLinkType
ldr r2, _080FBAFC @ =0x00001111
adds r0, r2, 0
strh r0, [r1]
@@ -6907,7 +6907,7 @@ _080FBAEC:
bx r0
.align 2, 0
_080FBAF4: .4byte sub_80FBA64
-_080FBAF8: .4byte gUnknown_202271A
+_080FBAF8: .4byte gLinkType
_080FBAFC: .4byte 0x00001111
_080FBB00: .4byte gMain
_080FBB04: .4byte gSaveBlock2Ptr
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index d67176ed4..d9f172a81 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -230,7 +230,7 @@ sub_8115A24: @ 8115A24
movs r0, 0
strb r0, [r1, 0xC]
strb r0, [r1, 0xD]
- ldr r1, _08115A64 @ =gUnknown_20370D0
+ ldr r1, _08115A64 @ =gSpecialVar_Result
strh r0, [r1]
pop {r0}
bx r0
@@ -239,7 +239,7 @@ _08115A54: .4byte sub_8115A68
_08115A58: .4byte gUnknown_203B05C
_08115A5C: .4byte gTasks+0x8
_08115A60: .4byte gUnknown_3002024
-_08115A64: .4byte gUnknown_20370D0
+_08115A64: .4byte gSpecialVar_Result
thumb_func_end sub_8115A24
thumb_func_start sub_8115A68
@@ -299,7 +299,7 @@ _08115A90:
_08115B0C:
ldr r3, _08115B4C @ =gUnknown_203B058
ldr r2, _08115B50 @ =gUnknown_8456CD8
- ldr r1, _08115B54 @ =gUnknown_20370C0
+ ldr r1, _08115B54 @ =gSpecialVar_0x8004
ldrh r0, [r1]
lsls r0, 2
adds r0, r2
@@ -328,7 +328,7 @@ _08115B0C:
.align 2, 0
_08115B4C: .4byte gUnknown_203B058
_08115B50: .4byte gUnknown_8456CD8
-_08115B54: .4byte gUnknown_20370C0
+_08115B54: .4byte gSpecialVar_0x8004
_08115B58: .4byte gUnknown_203B059
_08115B5C:
movs r0, 0x70
@@ -1083,22 +1083,22 @@ _0811617E:
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
- ldr r1, _08116190 @ =gUnknown_20370D0
+ ldr r1, _08116190 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
b _081161D8
.align 2, 0
-_08116190: .4byte gUnknown_20370D0
+_08116190: .4byte gSpecialVar_Result
_08116194:
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
- ldr r1, _081161A8 @ =gUnknown_20370D0
+ ldr r1, _081161A8 @ =gSpecialVar_Result
movs r0, 0x8
strh r0, [r1]
b _081161D8
.align 2, 0
-_081161A8: .4byte gUnknown_20370D0
+_081161A8: .4byte gSpecialVar_Result
_081161AC:
bl sub_80FBA00
cmp r0, 0
@@ -1767,7 +1767,7 @@ BerryBlenderLinkJoinGroup: @ 81166F4
movs r0, 0
strb r0, [r1, 0x8]
strb r0, [r1, 0x9]
- ldr r1, _08116734 @ =gUnknown_20370D0
+ ldr r1, _08116734 @ =gSpecialVar_Result
strh r0, [r1]
pop {r0}
bx r0
@@ -1776,7 +1776,7 @@ _08116724: .4byte sub_8116738
_08116728: .4byte gUnknown_203B05C
_0811672C: .4byte gTasks+0x8
_08116730: .4byte gUnknown_3002028
-_08116734: .4byte gUnknown_20370D0
+_08116734: .4byte gSpecialVar_Result
thumb_func_end BerryBlenderLinkJoinGroup
thumb_func_start sub_8116738
@@ -1828,7 +1828,7 @@ _08116760:
.4byte _08116CEC
_081167C0:
ldr r5, _08116800 @ =gUnknown_84570C8
- ldr r4, _08116804 @ =gUnknown_20370C0
+ ldr r4, _08116804 @ =gSpecialVar_0x8004
ldrh r0, [r4]
adds r0, r5
ldrb r0, [r0]
@@ -1855,13 +1855,13 @@ _081167C0:
b _08116D06
.align 2, 0
_08116800: .4byte gUnknown_84570C8
-_08116804: .4byte gUnknown_20370C0
+_08116804: .4byte gSpecialVar_0x8004
_08116808: .4byte gUnknown_203B058
_0811680C:
adds r0, r6, 0
adds r0, 0x9
ldr r2, _08116830 @ =gUnknown_84591B8
- ldr r1, _08116834 @ =gUnknown_20370C0
+ ldr r1, _08116834 @ =gSpecialVar_0x8004
ldrh r1, [r1]
lsls r1, 2
adds r1, r2
@@ -1877,7 +1877,7 @@ _08116828:
b _08116D06
.align 2, 0
_08116830: .4byte gUnknown_84591B8
-_08116834: .4byte gUnknown_20370C0
+_08116834: .4byte gSpecialVar_0x8004
_08116838:
ldr r0, [r6, 0x4]
movs r1, 0x4
@@ -1886,7 +1886,7 @@ _08116838:
movs r1, 0x10
bl sub_811A5E4
ldr r0, [r6, 0x4]
- ldr r1, _081168E8 @ =gUnknown_20370C0
+ ldr r1, _081168E8 @ =gSpecialVar_0x8004
ldrh r1, [r1]
bl sub_811A054
movs r4, 0
@@ -1950,7 +1950,7 @@ _08116838:
strb r0, [r6, 0x8]
b _08116D06
.align 2, 0
-_081168E8: .4byte gUnknown_20370C0
+_081168E8: .4byte gSpecialVar_0x8004
_081168EC: .4byte gUnknown_8456CD0
_081168F0: .4byte gUnknown_8456D4C
_081168F4: .4byte gUnknown_8456D54
@@ -2361,19 +2361,19 @@ _08116C68:
lsls r0, 24
cmp r0, 0
beq _08116D06
- ldr r0, _08116C94 @ =gUnknown_20370D0
+ ldr r0, _08116C94 @ =gSpecialVar_Result
movs r1, 0x6
b _08116CDC
.align 2, 0
_08116C90: .4byte gUnknown_8457754
-_08116C94: .4byte gUnknown_20370D0
+_08116C94: .4byte gSpecialVar_Result
_08116C98:
bl sub_80FCE44
- ldr r0, _08116CA4 @ =gUnknown_20370D0
+ ldr r0, _08116CA4 @ =gSpecialVar_Result
movs r1, 0x5
b _08116CDC
.align 2, 0
-_08116CA4: .4byte gUnknown_20370D0
+_08116CA4: .4byte gSpecialVar_Result
_08116CA8:
bl sub_80FCE44
adds r5, r6, 0
@@ -2397,7 +2397,7 @@ _08116CCE:
lsls r0, 24
cmp r0, 0
beq _08116D06
- ldr r0, _08116CE8 @ =gUnknown_20370D0
+ ldr r0, _08116CE8 @ =gSpecialVar_Result
movs r1, 0x8
_08116CDC:
strh r1, [r0]
@@ -2406,7 +2406,7 @@ _08116CDC:
b _08116D06
.align 2, 0
_08116CE4: .4byte gStringVar4
-_08116CE8: .4byte gUnknown_20370D0
+_08116CE8: .4byte gSpecialVar_Result
_08116CEC:
adds r0, r4, 0
bl DestroyTask
@@ -2499,7 +2499,7 @@ sub_8116D60: @ 8116D60
adds r0, r5, 0
bl ConvertInternationalString
ldr r1, _08116DD8 @ =gUnknown_84570C8
- ldr r0, _08116DDC @ =gUnknown_20370C0
+ ldr r0, _08116DDC @ =gSpecialVar_0x8004
ldrh r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -2525,7 +2525,7 @@ sub_8116D60: @ 8116D60
.align 2, 0
_08116DD4: .4byte gStringVar1
_08116DD8: .4byte gUnknown_84570C8
-_08116DDC: .4byte gUnknown_20370C0
+_08116DDC: .4byte gSpecialVar_0x8004
thumb_func_end sub_8116D60
thumb_func_start sub_8116DE0
@@ -3028,7 +3028,7 @@ _0811719C:
eors r1, r2
lsls r1, 24
lsrs r1, 16
- ldr r2, _081171D4 @ =gUnknown_2022118
+ ldr r2, _081171D4 @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0x64
bl memcpy
@@ -3038,9 +3038,9 @@ _0811719C:
b _081171FA
.align 2, 0
_081171D0: .4byte gEnemyParty
-_081171D4: .4byte gUnknown_2022118
+_081171D4: .4byte gBlockRecvBuffer
_081171D8:
- ldr r4, _08117204 @ =gUnknown_2022618
+ ldr r4, _08117204 @ =gBlockSendBuffer
ldr r0, _08117208 @ =gSaveBlock1Ptr
ldr r1, [r0]
ldr r0, _0811720C @ =0x00002cd0
@@ -3061,7 +3061,7 @@ _081171FA:
strh r0, [r5, 0x8]
b _0811725C
.align 2, 0
-_08117204: .4byte gUnknown_2022618
+_08117204: .4byte gBlockSendBuffer
_08117208: .4byte gSaveBlock1Ptr
_0811720C: .4byte 0x00002cd0
_08117210:
@@ -3077,7 +3077,7 @@ _08117210:
eors r1, r0
lsls r1, 24
lsrs r1, 16
- ldr r0, _0811726C @ =gUnknown_2022118
+ ldr r0, _0811726C @ =gBlockRecvBuffer
adds r1, r0
adds r0, r4, 0
movs r2, 0xD8
@@ -3104,7 +3104,7 @@ _0811725C:
bx r0
.align 2, 0
_08117268: .4byte gUnknown_2031CCC
-_0811726C: .4byte gUnknown_2022118
+_0811726C: .4byte gBlockRecvBuffer
_08117270: .4byte gUnknown_2031DA4
_08117274: .4byte gMain
_08117278: .4byte c2_exit_to_overworld_2_switch
@@ -3165,7 +3165,7 @@ _081172E0: .4byte gUnknown_2039624
_081172E4: .4byte gLinkPlayers
_081172E8:
lsls r0, r4, 8
- ldr r1, _08117338 @ =gUnknown_2022118
+ ldr r1, _08117338 @ =gBlockRecvBuffer
adds r1, r0, r1
adds r0, r5, 0
movs r2, 0x60
@@ -3192,7 +3192,7 @@ _08117302:
eors r0, r1
lsls r0, 24
lsrs r0, 16
- ldr r1, _08117338 @ =gUnknown_2022118
+ ldr r1, _08117338 @ =gBlockRecvBuffer
adds r1, r0, r1
adds r0, r1, 0
adds r0, 0x60
@@ -3200,7 +3200,7 @@ _08117302:
bl sub_81446D0
b _08117340
.align 2, 0
-_08117338: .4byte gUnknown_2022118
+_08117338: .4byte gBlockRecvBuffer
_0811733C:
bl sub_81446C4
_08117340:
@@ -3396,7 +3396,7 @@ sub_81174B4: @ 81174B4
lsrs r5, 24
lsls r1, 16
lsrs r1, 16
- ldr r0, _08117524 @ =gUnknown_20370C0
+ ldr r0, _08117524 @ =gSpecialVar_0x8004
strh r1, [r0]
ldr r0, _08117528 @ =0x0000406f
bl VarSet
@@ -3432,7 +3432,7 @@ sub_81174B4: @ 81174B4
pop {r0}
bx r0
.align 2, 0
-_08117524: .4byte gUnknown_20370C0
+_08117524: .4byte gSpecialVar_0x8004
_08117528: .4byte 0x0000406f
_0811752C: .4byte gUnknown_3005030
_08117530: .4byte gUnknown_300502C
@@ -3657,7 +3657,7 @@ _08117798: .4byte gMain
_0811779C: .4byte sub_811C1C8
_081177A0:
bl sub_80563F0
- ldr r0, _081177C4 @ =gUnknown_2022618
+ ldr r0, _081177C4 @ =gBlockSendBuffer
movs r1, 0x1
bl sub_8117594
bl sp000_heal_pokemon
@@ -3670,13 +3670,13 @@ _081177A0:
movs r2, 0x6
b _0811782E
.align 2, 0
-_081177C4: .4byte gUnknown_2022618
+_081177C4: .4byte gBlockSendBuffer
_081177C8:
bl sub_80563F0
bl sp000_heal_pokemon
bl SavePlayerParty
bl LoadPlayerBag
- ldr r0, _081177EC @ =gUnknown_2022618
+ ldr r0, _081177EC @ =gBlockSendBuffer
movs r1, 0x1
bl sub_8117594
movs r0, 0x2
@@ -3686,13 +3686,13 @@ _081177C8:
movs r2, 0x6
b _0811782E
.align 2, 0
-_081177EC: .4byte gUnknown_2022618
+_081177EC: .4byte gBlockSendBuffer
_081177F0:
bl sub_80563F0
bl sp000_heal_pokemon
bl SavePlayerParty
bl LoadPlayerBag
- ldr r0, _08117814 @ =gUnknown_2022618
+ ldr r0, _08117814 @ =gBlockSendBuffer
movs r1, 0x1
bl sub_8117594
movs r0, 0x5
@@ -3701,9 +3701,9 @@ _081177F0:
movs r1, 0x3
b _0811782C
.align 2, 0
-_08117814: .4byte gUnknown_2022618
+_08117814: .4byte gBlockSendBuffer
_08117818:
- ldr r0, _0811783C @ =gUnknown_2022618
+ ldr r0, _0811783C @ =gBlockSendBuffer
movs r1, 0x1
bl sub_8117594
bl sub_80563F0
@@ -3720,7 +3720,7 @@ _0811782E:
bl SetMainCallback2
b _081178E0
.align 2, 0
-_0811783C: .4byte gUnknown_2022618
+_0811783C: .4byte gBlockSendBuffer
_08117840: .4byte sub_8117534
_08117844:
ldr r0, _08117850 @ =sub_8117130
@@ -3746,14 +3746,14 @@ _08117872:
bl sub_8128420
b _081178E0
_08117878:
- ldr r0, _08117888 @ =gUnknown_2022618
+ ldr r0, _08117888 @ =gBlockSendBuffer
movs r1, 0
bl sub_8117594
ldr r0, _0811788C @ =sub_8117354
bl SetMainCallback2
b _081178E0
.align 2, 0
-_08117888: .4byte gUnknown_2022618
+_08117888: .4byte gBlockSendBuffer
_0811788C: .4byte sub_8117354
_08117890:
movs r0, 0x8
@@ -3791,7 +3791,7 @@ _081178C8:
_081178E0:
adds r0, r4, 0
bl DestroyTask
- ldr r1, _081178FC @ =gUnknown_20370D0
+ ldr r1, _081178FC @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
bl ScriptContext2_Disable
@@ -3801,7 +3801,7 @@ _081178E0:
bx r0
.align 2, 0
_081178F8: .4byte sub_805671C
-_081178FC: .4byte gUnknown_20370D0
+_081178FC: .4byte gSpecialVar_Result
thumb_func_end sub_81175BC
thumb_func_start sub_8117900
@@ -3832,13 +3832,13 @@ _08117928:
beq _08117974
b _08117988
_08117932:
- ldr r1, _08117940 @ =gUnknown_20370D0
+ ldr r1, _08117940 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
bl EnableBothScriptContexts
b _08117968
.align 2, 0
-_08117940: .4byte gUnknown_20370D0
+_08117940: .4byte gSpecialVar_Result
_08117944:
bl ScriptContext1_IsScriptSetUp
lsls r0, 24
@@ -3931,7 +3931,7 @@ sub_81179CC: @ 81179CC
strb r2, [r1, 0xC]
strb r2, [r1, 0xD]
strb r4, [r1, 0x18]
- ldr r0, _08117A08 @ =gUnknown_20370D0
+ ldr r0, _08117A08 @ =gSpecialVar_Result
strh r2, [r0]
pop {r4}
pop {r0}
@@ -3940,7 +3940,7 @@ sub_81179CC: @ 81179CC
_081179FC: .4byte sub_8117A0C
_08117A00: .4byte gUnknown_203B05C
_08117A04: .4byte gTasks+0x8
-_08117A08: .4byte gUnknown_20370D0
+_08117A08: .4byte gSpecialVar_Result
thumb_func_end sub_81179CC
thumb_func_start sub_8117A0C
@@ -4421,13 +4421,13 @@ _08117E26:
beq _08117ECA
adds r0, r4, 0
bl DestroyTask
- ldr r1, _08117E48 @ =gUnknown_20370D0
+ ldr r1, _08117E48 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
b _08117ECA
.align 2, 0
_08117E44: .4byte gUnknown_84571B8
-_08117E48: .4byte gUnknown_20370D0
+_08117E48: .4byte gSpecialVar_Result
_08117E4C:
bl sub_80FB9F4
lsls r0, 24
@@ -4513,7 +4513,7 @@ sub_8117ED4: @ 8117ED4
strb r2, [r1, 0x9]
subs r4, 0x15
strb r4, [r1, 0x12]
- ldr r0, _08117F1C @ =gUnknown_20370D0
+ ldr r0, _08117F1C @ =gSpecialVar_Result
strh r2, [r0]
pop {r4}
pop {r0}
@@ -4523,7 +4523,7 @@ _08117F0C: .4byte sub_8117F20
_08117F10: .4byte gUnknown_203B05C
_08117F14: .4byte gTasks+0x8
_08117F18: .4byte gUnknown_3002028
-_08117F1C: .4byte gUnknown_20370D0
+_08117F1C: .4byte gSpecialVar_Result
thumb_func_end sub_8117ED4
thumb_func_start sub_8117F20
@@ -4883,13 +4883,13 @@ _08118252:
adds r0, r6, 0
bl DestroyTask
bl sub_80F8DC0
- ldr r1, _08118268 @ =gUnknown_20370D0
+ ldr r1, _08118268 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
b _08118288
.align 2, 0
_08118264: .4byte gUnknown_84571B8
-_08118268: .4byte gUnknown_20370D0
+_08118268: .4byte gSpecialVar_Result
_0811826C:
ldrb r0, [r5, 0x8]
adds r0, 0x1
@@ -4933,7 +4933,7 @@ sub_8118290: @ 8118290
strb r2, [r1, 0x9]
subs r4, 0x15
strb r4, [r1, 0x12]
- ldr r0, _081182D8 @ =gUnknown_20370D0
+ ldr r0, _081182D8 @ =gSpecialVar_Result
strh r2, [r0]
pop {r4}
pop {r0}
@@ -4943,7 +4943,7 @@ _081182C8: .4byte sub_81182DC
_081182CC: .4byte gUnknown_203B05C
_081182D0: .4byte gTasks+0x8
_081182D4: .4byte gUnknown_3002028
-_081182D8: .4byte gUnknown_20370D0
+_081182D8: .4byte gSpecialVar_Result
thumb_func_end sub_8118290
thumb_func_start sub_81182DC
@@ -5288,13 +5288,13 @@ _081185C2:
adds r0, r4, 0
bl DestroyTask
bl sub_80F8DC0
- ldr r1, _081185E4 @ =gUnknown_20370D0
+ ldr r1, _081185E4 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
b _08118604
.align 2, 0
_081185E0: .4byte gUnknown_845933C
-_081185E4: .4byte gUnknown_20370D0
+_081185E4: .4byte gSpecialVar_Result
_081185E8:
ldrb r0, [r5, 0x8]
adds r0, 0x1
@@ -5334,7 +5334,7 @@ UnionRoomSpecial: @ 811860C
strb r1, [r0, 0x16]
strh r1, [r0, 0x10]
strh r1, [r0, 0x12]
- ldr r0, _08118654 @ =gUnknown_20370D0
+ ldr r0, _08118654 @ =gSpecialVar_Result
strh r1, [r0]
movs r0, 0xD0
movs r1, 0x1
@@ -5346,7 +5346,7 @@ UnionRoomSpecial: @ 811860C
_08118648: .4byte sub_81186E0
_0811864C: .4byte gUnknown_203B05C
_08118650: .4byte gUnknown_300202C
-_08118654: .4byte gUnknown_20370D0
+_08118654: .4byte gSpecialVar_Result
thumb_func_end UnionRoomSpecial
thumb_func_start sub_8118658
@@ -5593,14 +5593,14 @@ _0811887C:
ldr r0, [r6, 0xC]
movs r1, 0x4
bl sub_811A650
- ldr r1, _081188C8 @ =gUnknown_20370D0
+ ldr r1, _081188C8 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
movs r0, 0x3
bl _081198DA
.align 2, 0
_081188C4: .4byte gUnknown_203B06C
-_081188C8: .4byte gUnknown_20370D0
+_081188C8: .4byte gSpecialVar_Result
_081188CC:
bl sub_811FB18
lsls r0, 24
@@ -5703,7 +5703,7 @@ _081189A4:
movs r0, 0x4
bl _081198DA
_081189AA:
- ldr r4, _081189D8 @ =gUnknown_20370D0
+ ldr r4, _081189D8 @ =gSpecialVar_Result
ldrh r0, [r4]
cmp r0, 0
beq _08118A0E
@@ -5723,7 +5723,7 @@ _081189AA:
movs r0, 0x2A
b _08118A06
.align 2, 0
-_081189D8: .4byte gUnknown_20370D0
+_081189D8: .4byte gSpecialVar_Result
_081189DC: .4byte gStringVar1
_081189E0: .4byte gSaveBlock2Ptr
_081189E4:
@@ -5947,7 +5947,7 @@ _08118BC2:
bne _08118BCE
bl _081198DC
_08118BCE:
- ldr r0, _08118BF0 @ =gUnknown_2022618
+ ldr r0, _08118BF0 @ =gBlockSendBuffer
movs r1, 0x1
bl sub_8117594
ldr r0, _08118BF4 @ =sub_8117280
@@ -5959,7 +5959,7 @@ _08118BCE:
_08118BE4: .4byte gUnknown_8457F90
_08118BE8: .4byte gUnknown_203B058
_08118BEC: .4byte gUnknown_3003F64
-_08118BF0: .4byte gUnknown_2022618
+_08118BF0: .4byte gBlockSendBuffer
_08118BF4: .4byte sub_8117280
_08118BF8:
ldr r0, _08118C1C @ =sub_8117280
@@ -6518,7 +6518,7 @@ _081190DE:
bne _081190EA
bl _081198DC
_081190EA:
- ldr r0, _08119104 @ =gUnknown_2022618
+ ldr r0, _08119104 @ =gBlockSendBuffer
movs r1, 0x1
bl sub_8117594
ldr r0, _08119108 @ =sub_8117280
@@ -6528,7 +6528,7 @@ _081190EA:
bl _081198DA
.align 2, 0
_08119100: .4byte gUnknown_3003F64
-_08119104: .4byte gUnknown_2022618
+_08119104: .4byte gBlockSendBuffer
_08119108: .4byte sub_8117280
_0811910C:
adds r0, r6, 0
@@ -7463,14 +7463,14 @@ var_800D_set_xB: @ 81198EC
bl InUnionRoom
cmp r0, 0x1
bne _081198FC
- ldr r1, _08119900 @ =gUnknown_20370D0
+ ldr r1, _08119900 @ =gSpecialVar_Result
movs r0, 0xB
strh r0, [r1]
_081198FC:
pop {r0}
bx r0
.align 2, 0
-_08119900: .4byte gUnknown_20370D0
+_08119900: .4byte gSpecialVar_Result
thumb_func_end var_800D_set_xB
thumb_func_start sub_8119904
@@ -13024,7 +13024,7 @@ _0811C3B0:
beq _0811C3BC
b _0811C516
_0811C3BC:
- ldr r4, _0811C3D8 @ =gUnknown_2022618
+ ldr r4, _0811C3D8 @ =gBlockSendBuffer
adds r0, r4, 0
movs r1, 0
movs r2, 0x20
@@ -13037,13 +13037,13 @@ _0811C3BC:
movs r0, 0x52
b _0811C3E2
.align 2, 0
-_0811C3D8: .4byte gUnknown_2022618
+_0811C3D8: .4byte gBlockSendBuffer
_0811C3DC: .4byte gUnknown_203B0D4
_0811C3E0:
movs r0, 0x51
_0811C3E2:
strb r0, [r4]
- ldr r1, _0811C3F8 @ =gUnknown_2022618
+ ldr r1, _0811C3F8 @ =gBlockSendBuffer
movs r0, 0
movs r2, 0x20
bl SendBlock
@@ -13053,7 +13053,7 @@ _0811C3E2:
adds r1, r2
b _0811C4F2
.align 2, 0
-_0811C3F8: .4byte gUnknown_2022618
+_0811C3F8: .4byte gBlockSendBuffer
_0811C3FC: .4byte gMain
_0811C400:
bl GetBlockReceivedStatus
@@ -13063,7 +13063,7 @@ _0811C400:
beq _0811C40E
b _0811C516
_0811C40E:
- ldr r1, _0811C440 @ =gUnknown_2022118
+ ldr r1, _0811C440 @ =gBlockRecvBuffer
ldrh r0, [r1]
cmp r0, 0x51
bne _0811C448
@@ -13087,11 +13087,11 @@ _0811C40E:
movs r1, 0x32
b _0811C47E
.align 2, 0
-_0811C440: .4byte gUnknown_2022118
+_0811C440: .4byte gBlockRecvBuffer
_0811C444: .4byte gMain
_0811C448:
bl sub_800AAC0
- ldr r4, _0811C46C @ =gUnknown_2022118
+ ldr r4, _0811C46C @ =gBlockRecvBuffer
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 16
@@ -13106,7 +13106,7 @@ _0811C448:
movs r1, 0x6
b _0811C47E
.align 2, 0
-_0811C46C: .4byte gUnknown_2022118
+_0811C46C: .4byte gBlockRecvBuffer
_0811C470: .4byte gMain
_0811C474:
ldr r0, _0811C488 @ =gMain
diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s
index f8917e197..1ec24a43c 100644
--- a/asm/link_rfu_4.s
+++ b/asm/link_rfu_4.s
@@ -1657,12 +1657,12 @@ _081430B8:
bl sub_81424B8
movs r0, 0x7
strb r0, [r5, 0x8]
- bl sub_8144AEC
+ bl mevent_srv_ish_do_init
b _081435C6
.align 2, 0
_081430D0: .4byte gUnknown_3003F64
_081430D4:
- ldr r0, _081430E8 @ =gUnknown_20370D0
+ ldr r0, _081430E8 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0x5
beq _081430DE
@@ -1672,7 +1672,7 @@ _081430DE:
bl sub_81424B8
b _08143464
.align 2, 0
-_081430E8: .4byte gUnknown_20370D0
+_081430E8: .4byte gSpecialVar_Result
_081430EC:
ldr r0, _081430F8 @ =gUnknown_841E794
bl sub_8142504
@@ -1683,7 +1683,7 @@ _081430EC:
_081430F8: .4byte gUnknown_841E794
_081430FC:
adds r0, r5, 0
- bl sub_8144B0C
+ bl mevent_srv_ish_do_exec
subs r0, 0x2
cmp r0, 0x4
bls _0814310A
@@ -1712,12 +1712,12 @@ _0814312C:
b _081435C6
_0814313A:
ldr r4, [r5, 0x10]
- bl sub_8144B58
+ bl mevent_srv_ish_get_buffer
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0x40
bl memcpy
- bl sub_8144B48
+ bl mevent_srv_ish_inc_flag
b _081435C6
_08143150:
movs r0, 0xA
@@ -1740,7 +1740,7 @@ _08143170: .4byte gLinkPlayers + 8
_08143174:
adds r4, r5, 0
adds r4, 0x9
- bl sub_8144B58
+ bl mevent_srv_ish_get_buffer
adds r3, r0, 0
adds r0, r4, 0
adds r1, r5, 0
@@ -1757,7 +1757,7 @@ _08143174:
_08143198:
adds r4, r5, 0
adds r4, 0x9
- bl sub_8144B58
+ bl mevent_srv_ish_get_buffer
adds r1, r0, 0
adds r0, r4, 0
bl mevent_0814257C
@@ -1817,9 +1817,9 @@ _08143208:
_0814320C:
movs r0, 0x1
_0814320E:
- bl sub_8144B64
+ bl mevent_srv_ish_set_param
_08143212:
- bl sub_8144B48
+ bl mevent_srv_ish_inc_flag
movs r0, 0x7
strb r0, [r5, 0x8]
b _081435C6
@@ -2172,7 +2172,7 @@ _0814349C:
.align 2, 0
_081434B0: .4byte gUnknown_3003F64
_081434B4:
- ldr r0, _081434CC @ =gUnknown_20370D0
+ ldr r0, _081434CC @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0x5
beq _081434BE
@@ -2185,7 +2185,7 @@ _081434C4:
strb r0, [r5, 0x8]
b _081435C6
.align 2, 0
-_081434CC: .4byte gUnknown_20370D0
+_081434CC: .4byte gSpecialVar_Result
_081434D0:
ldr r0, _081434F0 @ =gStringVar1
movs r1, 0xFF
@@ -2199,7 +2199,7 @@ _081434D0:
bne _08143500
ldr r0, _081434FC @ =gUnknown_841EAE7
bl sub_8142504
- bl sub_8144F40
+ bl mevent_srv_common_do_init_2
b _0814350A
.align 2, 0
_081434F0: .4byte gStringVar1
@@ -2209,7 +2209,7 @@ _081434FC: .4byte gUnknown_841EAE7
_08143500:
ldr r0, _08143510 @ =gUnknown_841EB01
bl sub_8142504
- bl sub_8144F1C
+ bl mevent_srv_common_do_init_1
_0814350A:
movs r0, 0x20
strb r0, [r5, 0x8]
@@ -2218,7 +2218,7 @@ _0814350A:
_08143510: .4byte gUnknown_841EB01
_08143514:
adds r0, r5, 0
- bl sub_8144F64
+ bl mevent_srv_init_do_exec
cmp r0, 0x3
bne _081435C6
ldrh r0, [r5]
diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s
index 4ff07589a..1b406a74d 100644
--- a/asm/map_obj_lock.s
+++ b/asm/map_obj_lock.s
@@ -270,7 +270,7 @@ sub_8069740: @ 8069740
lsls r0, 2
ldr r1, _08069760 @ =gMapObjects
adds r0, r1
- ldr r1, _08069764 @ =gUnknown_20370D4
+ ldr r1, _08069764 @ =gSpecialVar_Facing
ldrb r1, [r1]
bl FieldObjectFaceOppositeDirection
pop {r0}
@@ -278,7 +278,7 @@ sub_8069740: @ 8069740
.align 2, 0
_0806975C: .4byte gUnknown_3005074
_08069760: .4byte gMapObjects
-_08069764: .4byte gUnknown_20370D4
+_08069764: .4byte gSpecialVar_Facing
thumb_func_end sub_8069740
thumb_func_start sub_8069768
diff --git a/asm/mevent.s b/asm/mevent.s
deleted file mode 100644
index 697266a39..000000000
--- a/asm/mevent.s
+++ /dev/null
@@ -1,2438 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81435DC
-sub_81435DC: @ 81435DC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- mov r1, sp
- ldr r4, _08143630 @ =0x04000208
- ldrh r0, [r4]
- strh r0, [r1]
- movs r0, 0
- strh r0, [r4]
- ldr r1, _08143634 @ =gIntrTable
- ldr r0, _08143638 @ =sub_815C6D4
- str r0, [r1, 0x4]
- ldr r0, _0814363C @ =sub_815C6C4
- str r0, [r1, 0x8]
- bl sub_815C8C8
- bl sub_815C960
- ldr r2, _08143640 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strh r0, [r2]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4]
- movs r0, 0
- strh r0, [r5]
- str r6, [r5, 0x4]
- mov r0, r8
- str r0, [r5, 0x8]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08143630: .4byte 0x04000208
-_08143634: .4byte gIntrTable
-_08143638: .4byte sub_815C6D4
-_0814363C: .4byte sub_815C6C4
-_08143640: .4byte 0x04000200
- thumb_func_end sub_81435DC
-
- thumb_func_start sub_8143644
-sub_8143644: @ 8143644
- push {r4,lr}
- sub sp, 0x4
- mov r1, sp
- ldr r4, _08143670 @ =0x04000208
- ldrh r0, [r4]
- strh r0, [r1]
- movs r0, 0
- strh r0, [r4]
- bl sub_815C960
- bl sub_815C91C
- bl RestoreSerialTimer3IntrHandlers
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143670: .4byte 0x04000208
- thumb_func_end sub_8143644
-
- thumb_func_start sub_8143674
-sub_8143674: @ 8143674
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0
- ldr r1, [r4, 0x4]
- ldr r2, [r4, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl sub_815C498
- adds r1, r0, 0
- strh r1, [r4]
- movs r0, 0x13
- ands r0, r1
- cmp r0, 0x10
- bne _08143694
- movs r5, 0x1
-_08143694:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0814369E
- movs r5, 0x2
-_0814369E:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081436A8
- movs r5, 0x3
-_081436A8:
- ldr r1, _081436B8 @ =gUnknown_3003F84
- movs r0, 0
- strb r0, [r1]
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081436B8: .4byte gUnknown_3003F84
- thumb_func_end sub_8143674
-
- thumb_func_start sub_81436BC
-sub_81436BC: @ 81436BC
- push {lr}
- ldr r0, _081436E0 @ =gDecompressionBuffer
- movs r2, 0x80
- lsls r2, 6
- movs r1, 0
- bl memset
- ldr r1, _081436E4 @ =gUnknown_202271A
- ldr r2, _081436E8 @ =0x00005502
- adds r0, r2, 0
- strh r0, [r1]
- bl sub_8009804
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
- pop {r0}
- bx r0
- .align 2, 0
-_081436E0: .4byte gDecompressionBuffer
-_081436E4: .4byte gUnknown_202271A
-_081436E8: .4byte 0x00005502
- thumb_func_end sub_81436BC
-
- thumb_func_start sub_81436EC
-sub_81436EC: @ 81436EC
- push {lr}
- sub sp, 0xC
- mov r1, sp
- ldr r2, _08143730 @ =0x04000208
- ldrh r0, [r2]
- strh r0, [r1]
- movs r0, 0
- strh r0, [r2]
- ldr r0, _08143734 @ =gUnknown_3003FB4
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r2]
- add r2, sp, 0x4
- ldrh r1, [r2]
- ldr r0, _08143738 @ =0x0000b9a0
- cmp r1, r0
- bne _08143744
- ldrh r1, [r2, 0x2]
- ldr r0, _0814373C @ =0x0000ccd0
- cmp r1, r0
- bne _08143744
- ldrh r1, [r2, 0x4]
- ldr r0, _08143740 @ =0x0000ffff
- cmp r1, r0
- bne _08143744
- ldrh r0, [r2, 0x6]
- cmp r0, r1
- bne _08143744
- movs r0, 0x1
- b _08143746
- .align 2, 0
-_08143730: .4byte 0x04000208
-_08143734: .4byte gUnknown_3003FB4
-_08143738: .4byte 0x0000b9a0
-_0814373C: .4byte 0x0000ccd0
-_08143740: .4byte 0x0000ffff
-_08143744:
- movs r0, 0
-_08143746:
- add sp, 0xC
- pop {r1}
- bx r1
- thumb_func_end sub_81436EC
-
- thumb_func_start sub_814374C
-sub_814374C: @ 814374C
- push {lr}
- bl sub_800AA48
- lsls r0, 24
- cmp r0, 0
- beq _08143768
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08143768
- movs r0, 0x1
- b _0814376A
-_08143768:
- movs r0, 0
-_0814376A:
- pop {r1}
- bx r1
- thumb_func_end sub_814374C
-
- thumb_func_start sub_8143770
-sub_8143770: @ 8143770
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- subs r0, 0x3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _08143794
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- beq _08143794
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x3
- b _0814389A
-_08143794:
- ldrb r0, [r4]
- cmp r0, 0x5
- bls _0814379C
- b _08143898
-_0814379C:
- lsls r0, 2
- ldr r1, _081437A8 @ =_081437AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081437A8: .4byte _081437AC
- .align 2, 0
-_081437AC:
- .4byte _081437C4
- .4byte _081437E0
- .4byte _081437F8
- .4byte _0814382C
- .4byte _08143878
- .4byte _08143884
-_081437C4:
- bl sub_800AA48
- lsls r0, 24
- cmp r0, 0
- beq _08143814
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08143814
- movs r0, 0x1
- strb r0, [r4]
- b _08143898
-_081437E0:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5
- bls _08143898
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x2
- strb r0, [r4]
- b _08143898
-_081437F8:
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08143814
- movs r0, 0x42
- bl PlaySE
- bl sub_800A5BC
- movs r0, 0
- strh r0, [r5]
- b _08143872
-_08143814:
- ldr r0, _08143828 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08143898
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x1
- b _0814389A
- .align 2, 0
-_08143828: .4byte gMain
-_0814382C:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bls _08143842
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x5
- b _0814389A
-_08143842:
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- beq _08143898
- ldr r0, _08143868 @ =gUnknown_3003F64
- ldrb r0, [r0]
- cmp r0, 0
- beq _08143872
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- cmp r0, 0
- beq _0814386C
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x2
- b _0814389A
- .align 2, 0
-_08143868: .4byte gUnknown_3003F64
-_0814386C:
- movs r0, 0x4
- strb r0, [r4]
- b _08143898
-_08143872:
- movs r0, 0x3
- strb r0, [r4]
- b _08143898
-_08143878:
- movs r0, 0
- bl sub_800AA80
- movs r0, 0x5
- strb r0, [r4]
- b _08143898
-_08143884:
- ldr r0, _08143894 @ =gUnknown_3003F64
- ldrb r0, [r0]
- cmp r0, 0
- bne _08143898
- strb r0, [r4]
- movs r0, 0x4
- b _0814389A
- .align 2, 0
-_08143894: .4byte gUnknown_3003F64
-_08143898:
- movs r0, 0
-_0814389A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8143770
-
- thumb_func_start sub_81438A0
-sub_81438A0: @ 81438A0
- push {r4,lr}
- ldr r0, _081438E0 @ =sub_8143910
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _081438E4 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0
- strb r0, [r4, 0x8]
- strb r0, [r4, 0x9]
- strb r0, [r4, 0xA]
- strb r0, [r4, 0xB]
- strb r0, [r4, 0xC]
- strb r0, [r4, 0xD]
- movs r1, 0
- strh r0, [r4]
- strh r0, [r4, 0x2]
- strh r0, [r4, 0x4]
- strh r0, [r4, 0x6]
- strb r1, [r4, 0xE]
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4, 0x10]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081438E0: .4byte sub_8143910
-_081438E4: .4byte gTasks+0x8
- thumb_func_end sub_81438A0
-
- thumb_func_start sub_81438E8
-sub_81438E8: @ 81438E8
- movs r1, 0
- strh r1, [r0]
- bx lr
- thumb_func_end sub_81438E8
-
- thumb_func_start sub_81438F0
-sub_81438F0: @ 81438F0
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- cmp r0, r1
- bhi _08143906
- movs r0, 0
- b _0814390C
-_08143906:
- movs r0, 0
- strh r0, [r2]
- movs r0, 0x1
-_0814390C:
- pop {r1}
- bx r1
- thumb_func_end sub_81438F0
-
- thumb_func_start sub_8143910
-sub_8143910: @ 8143910
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08143934 @ =gTasks+0x8
- adds r4, r0, r1
- ldrb r0, [r4, 0x8]
- cmp r0, 0x1A
- bls _08143928
- b _08143D1A
-_08143928:
- lsls r0, 2
- ldr r1, _08143938 @ =_0814393C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08143934: .4byte gTasks+0x8
-_08143938: .4byte _0814393C
- .align 2, 0
-_0814393C:
- .4byte _081439A8
- .4byte _081439C4
- .4byte _081439D4
- .4byte _081439E8
- .4byte _081439F8
- .4byte _08143A24
- .4byte _08143A5C
- .4byte _08143AD8
- .4byte _08143AF4
- .4byte _08143B1C
- .4byte _08143B38
- .4byte _08143B68
- .4byte _08143B7E
- .4byte _08143B94
- .4byte _08143BF6
- .4byte _08143C1C
- .4byte _08143C34
- .4byte _08143C52
- .4byte _08143C7E
- .4byte _08143CA4
- .4byte _08143CD4
- .4byte _08143CE0
- .4byte _08143CEC
- .4byte _08143CBC
- .4byte _08143D1A
- .4byte _08143D1A
- .4byte _08143D04
-_081439A8:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _081439C0 @ =gUnknown_841DE52
- bl mevent_0814257C
- cmp r0, 0
- bne _081439B8
- b _08143D1A
-_081439B8:
- movs r0, 0x1
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_081439C0: .4byte gUnknown_841DE52
-_081439C4:
- bl sub_81436BC
- adds r0, r4, 0
- bl sub_81438E8
- movs r0, 0x2
- strb r0, [r4, 0x8]
- b _08143D1A
-_081439D4:
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_81438F0
- cmp r0, 0
- bne _081439E2
- b _08143D1A
-_081439E2:
- movs r0, 0x3
- strb r0, [r4, 0x8]
- b _08143D1A
-_081439E8:
- bl sub_814374C
- cmp r0, 0
- beq _081439F2
- b _08143B88
-_081439F2:
- bl sub_80098B8
- b _08143AE8
-_081439F8:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _08143A1C @ =gUnknown_841DE53
- bl mevent_0814257C
- cmp r0, 0
- bne _08143A08
- b _08143D1A
-_08143A08:
- ldr r0, _08143A20 @ =gUnknown_841DE54
- bl sub_8142504
- adds r0, r4, 0
- bl sub_81438E8
- movs r0, 0x5
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143A1C: .4byte gUnknown_841DE53
-_08143A20: .4byte gUnknown_841DE54
-_08143A24:
- adds r0, r4, 0
- movs r1, 0x5A
- bl sub_81438F0
- cmp r0, 0
- beq _08143A3A
- bl sub_81436BC
- movs r0, 0x6
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143A3A:
- ldr r0, _08143A58 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08143A48
- b _08143D1A
-_08143A48:
- adds r0, r4, 0
- bl sub_81438E8
- movs r0, 0x5
- bl PlaySE
- b _08143BE6
- .align 2, 0
-_08143A58: .4byte gMain
-_08143A5C:
- ldr r0, _08143A7C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08143A80
- movs r0, 0x5
- bl PlaySE
- bl sub_80098B8
- adds r0, r4, 0
- bl sub_81438E8
- b _08143BE6
- .align 2, 0
-_08143A7C: .4byte gMain
-_08143A80:
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08143A9C
- adds r0, r4, 0
- bl sub_81438E8
- bl sub_80098B8
- movs r0, 0x7
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143A9C:
- bl sub_81436EC
- cmp r0, 0
- beq _08143ABA
- movs r0, 0x5
- bl PlaySE
- bl sub_80098B8
- adds r0, r4, 0
- bl sub_81438E8
- movs r0, 0x8
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143ABA:
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_81438F0
- cmp r0, 0
- bne _08143AC8
- b _08143D1A
-_08143AC8:
- bl sub_80098B8
- bl sub_81436BC
- adds r0, r4, 0
- bl sub_81438E8
- b _08143D1A
-_08143AD8:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _08143AF0 @ =gUnknown_841DE7C
- bl mevent_0814257C
- cmp r0, 0
- bne _08143AE8
- b _08143D1A
-_08143AE8:
- movs r0, 0x4
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143AF0: .4byte gUnknown_841DE7C
-_08143AF4:
- ldr r0, _08143B0C @ =gUnknown_841DE95
- bl sub_8142504
- ldr r0, _08143B10 @ =gUnknown_3005ED0
- ldr r1, _08143B14 @ =gUnknownSerialData_End
- ldr r2, _08143B18 @ =gUnknownSerialData_Start
- subs r1, r2
- bl sub_81435DC
- movs r0, 0x9
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143B0C: .4byte gUnknown_841DE95
-_08143B10: .4byte gUnknown_3005ED0
-_08143B14: .4byte gUnknownSerialData_End
-_08143B18: .4byte gUnknownSerialData_Start
-_08143B1C:
- ldr r0, _08143B34 @ =gUnknown_3005ED0
- bl sub_8143674
- strb r0, [r4, 0xE]
- lsls r0, 24
- cmp r0, 0
- bne _08143B2C
- b _08143D1A
-_08143B2C:
- movs r0, 0xA
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143B34: .4byte gUnknown_3005ED0
-_08143B38:
- ldr r0, _08143B60 @ =gUnknown_3005ED0
- bl sub_8143644
- ldrb r0, [r4, 0xE]
- cmp r0, 0x3
- bne _08143B46
- b _08143C4C
-_08143B46:
- cmp r0, 0x1
- beq _08143B4C
- b _08143CFA
-_08143B4C:
- adds r0, r4, 0
- bl sub_81438E8
- ldr r0, _08143B64 @ =gUnknown_841DE9B
- bl sub_8142504
- movs r0, 0xB
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143B60: .4byte gUnknown_3005ED0
-_08143B64: .4byte gUnknown_841DE9B
-_08143B68:
- movs r1, 0xD2
- lsls r1, 2
- adds r0, r4, 0
- bl sub_81438F0
- cmp r0, 0
- bne _08143B78
- b _08143D1A
-_08143B78:
- movs r0, 0xC
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143B7E:
- bl sub_81436BC
- ldr r0, _08143B90 @ =gUnknown_841DE98
- bl sub_8142504
-_08143B88:
- movs r0, 0xD
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143B90: .4byte gUnknown_841DE98
-_08143B94:
- adds r0, r4, 0
- adds r0, 0x9
- adds r1, r4, 0
- bl sub_8143770
- cmp r0, 0x5
- bls _08143BA4
- b _08143D1A
-_08143BA4:
- lsls r0, 2
- ldr r1, _08143BB0 @ =_08143BB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08143BB0: .4byte _08143BB4
- .align 2, 0
-_08143BB4:
- .4byte _08143D1A
- .4byte _08143BDC
- .4byte _08143BCC
- .4byte _08143C00
- .4byte _08143C00
- .4byte _08143BEC
-_08143BCC:
- ldr r0, _08143BD8 @ =gUnknown_841DE95
- bl sub_8142504
- movs r0, 0xE
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143BD8: .4byte gUnknown_841DE95
-_08143BDC:
- movs r0, 0x5
- bl PlaySE
- bl sub_80098B8
-_08143BE6:
- movs r0, 0x17
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143BEC:
- bl sub_80098B8
- movs r0, 0x15
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143BF6:
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- beq _08143C06
-_08143C00:
- bl sub_80098B8
- b _08143C4C
-_08143C06:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _08143C12
- b _08143D1A
-_08143C12:
- bl ResetBlockReceivedFlags
- movs r0, 0xF
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143C1C:
- ldr r0, _08143C30 @ =gDecompressionBuffer
- bl sub_815D6B4
- strb r0, [r4, 0xE]
- ldrb r0, [r4, 0xE]
- bl sub_800AA80
- movs r0, 0x10
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143C30: .4byte gDecompressionBuffer
-_08143C34:
- ldr r0, _08143C48 @ =gUnknown_3003F64
- ldrb r0, [r0]
- cmp r0, 0
- bne _08143D1A
- ldrb r0, [r4, 0xE]
- cmp r0, 0x1
- bne _08143C4C
- movs r0, 0x11
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143C48: .4byte gUnknown_3003F64
-_08143C4C:
- movs r0, 0x14
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143C52:
- ldr r0, _08143C70 @ =gDecompressionBuffer
- bl sub_815D794
- cmp r0, 0
- beq _08143C78
- ldr r0, _08143C74 @ =gUnknown_841DE99
- bl sub_8142504
- adds r0, r4, 0
- bl sub_81438E8
- movs r0, 0x12
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143C70: .4byte gDecompressionBuffer
-_08143C74: .4byte gUnknown_841DE99
-_08143C78:
- movs r0, 0x16
- strb r0, [r4, 0x8]
- b _08143D1A
-_08143C7E:
- adds r0, r4, 0
- movs r1, 0x78
- bl sub_81438F0
- cmp r0, 0
- beq _08143D1A
- ldr r0, _08143CA0 @ =gUnknown_841DE9A
- bl sub_8142504
- movs r0, 0x81
- lsls r0, 1
- bl PlayFanfare
- movs r0, 0x13
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143CA0: .4byte gUnknown_841DE9A
-_08143CA4:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08143D1A
- ldr r0, _08143CB8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- b _08143CC6
- .align 2, 0
-_08143CB8: .4byte gMain
-_08143CBC:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _08143CD0 @ =gUnknown_841DE7D
- bl mevent_0814257C
-_08143CC6:
- cmp r0, 0
- beq _08143D1A
- movs r0, 0x1A
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143CD0: .4byte gUnknown_841DE7D
-_08143CD4:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _08143CDC @ =gUnknown_841DE96
- b _08143CF2
- .align 2, 0
-_08143CDC: .4byte gUnknown_841DE96
-_08143CE0:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _08143CE8 @ =gUnknown_841DE97
- b _08143CF2
- .align 2, 0
-_08143CE8: .4byte gUnknown_841DE97
-_08143CEC:
- adds r0, r4, 0
- adds r0, 0x9
- ldr r1, _08143D00 @ =gUnknown_841DE9C
-_08143CF2:
- bl mevent_0814257C
- cmp r0, 0
- beq _08143D1A
-_08143CFA:
- movs r0, 0
- strb r0, [r4, 0x8]
- b _08143D1A
- .align 2, 0
-_08143D00: .4byte gUnknown_841DE9C
-_08143D04:
- bl sub_812B484
- ldr r0, [r4, 0x10]
- bl Free
- adds r0, r5, 0
- bl DestroyTask
- ldr r0, _08143D20 @ =sub_81422FC
- bl SetMainCallback2
-_08143D1A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08143D20: .4byte sub_81422FC
- thumb_func_end sub_8143910
-
- thumb_func_start sub_8143D24
-sub_8143D24: @ 8143D24
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r0, _08143D4C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _08143D50 @ =0x00003120
- adds r1, r0
- ldr r2, _08143D54 @ =0x050000db
- mov r0, sp
- bl CpuSet
- bl sub_8143ED0
- bl sub_80BDE28
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08143D4C: .4byte gSaveBlock1Ptr
-_08143D50: .4byte 0x00003120
-_08143D54: .4byte 0x050000db
- thumb_func_end sub_8143D24
-
- thumb_func_start sub_8143D58
-sub_8143D58: @ 8143D58
- ldr r0, _08143D64 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143D68 @ =0x00003124
- adds r0, r1
- bx lr
- .align 2, 0
-_08143D64: .4byte gSaveBlock1Ptr
-_08143D68: .4byte 0x00003124
- thumb_func_end sub_8143D58
-
- thumb_func_start sav1_get_mevent_buffer_1
-sav1_get_mevent_buffer_1: @ 8143D6C
- ldr r0, _08143D78 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143D7C @ =0x000032e4
- adds r0, r1
- bx lr
- .align 2, 0
-_08143D78: .4byte gSaveBlock1Ptr
-_08143D7C: .4byte 0x000032e4
- thumb_func_end sav1_get_mevent_buffer_1
-
- thumb_func_start sav1_get_mevent_buffer_2
-sav1_get_mevent_buffer_2: @ 8143D80
- ldr r0, _08143D8C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143D90 @ =0x00003434
- adds r0, r1
- bx lr
- .align 2, 0
-_08143D8C: .4byte gSaveBlock1Ptr
-_08143D90: .4byte 0x00003434
- thumb_func_end sav1_get_mevent_buffer_2
-
- thumb_func_start sub_8143D94
-sub_8143D94: @ 8143D94
- ldr r0, _08143DA0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143DA4 @ =0x00003460
- adds r0, r1
- bx lr
- .align 2, 0
-_08143DA0: .4byte gSaveBlock1Ptr
-_08143DA4: .4byte 0x00003460
- thumb_func_end sub_8143D94
-
- thumb_func_start sub_8143DA8
-sub_8143DA8: @ 8143DA8
- ldr r0, _08143DB4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143DB8 @ =0x00003458
- adds r0, r1
- bx lr
- .align 2, 0
-_08143DB4: .4byte gSaveBlock1Ptr
-_08143DB8: .4byte 0x00003458
- thumb_func_end sub_8143DA8
-
- thumb_func_start sub_8143DBC
-sub_8143DBC: @ 8143DBC
- push {lr}
- bl sub_8143E9C
- pop {r0}
- bx r0
- thumb_func_end sub_8143DBC
-
- thumb_func_start sub_8143DC8
-sub_8143DC8: @ 8143DC8
- push {r4-r7,lr}
- adds r7, r0, 0
- bl sub_8143E64
- cmp r0, 0
- beq _08143E14
- bl sub_8143E9C
- ldr r4, _08143E08 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r5, _08143E0C @ =0x00003124
- adds r0, r5
- movs r6, 0xDE
- lsls r6, 1
- adds r1, r7, 0
- adds r2, r6, 0
- bl memcpy
- ldr r0, [r4]
- adds r0, r5
- adds r1, r6, 0
- bl CalcCRC16WithTable
- ldr r1, [r4]
- ldr r2, _08143E10 @ =0x00003120
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- str r0, [r1]
- movs r0, 0x1
- b _08143E16
- .align 2, 0
-_08143E08: .4byte gSaveBlock1Ptr
-_08143E0C: .4byte 0x00003124
-_08143E10: .4byte 0x00003120
-_08143E14:
- movs r0, 0
-_08143E16:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8143DC8
-
- thumb_func_start sub_8143E1C
-sub_8143E1C: @ 8143E1C
- push {r4,lr}
- ldr r4, _08143E50 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, _08143E54 @ =0x00003124
- adds r0, r1
- movs r1, 0xDE
- lsls r1, 1
- bl CalcCRC16WithTable
- lsls r0, 16
- lsrs r0, 16
- ldr r4, [r4]
- ldr r2, _08143E58 @ =0x00003120
- adds r1, r4, r2
- ldr r1, [r1]
- cmp r0, r1
- bne _08143E5C
- ldr r1, _08143E54 @ =0x00003124
- adds r0, r4, r1
- bl sub_8143E64
- cmp r0, 0
- beq _08143E5C
- movs r0, 0x1
- b _08143E5E
- .align 2, 0
-_08143E50: .4byte gSaveBlock1Ptr
-_08143E54: .4byte 0x00003124
-_08143E58: .4byte 0x00003120
-_08143E5C:
- movs r0, 0
-_08143E5E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8143E1C
-
- thumb_func_start sub_8143E64
-sub_8143E64: @ 8143E64
- push {lr}
- ldrh r0, [r0]
- cmp r0, 0
- beq _08143E70
- movs r0, 0x1
- b _08143E72
-_08143E70:
- movs r0, 0
-_08143E72:
- pop {r1}
- bx r1
- thumb_func_end sub_8143E64
-
- thumb_func_start sub_8143E78
-sub_8143E78: @ 8143E78
- push {lr}
- ldr r0, _08143E8C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143E90 @ =0x00003124
- adds r0, r1
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _08143E94
- movs r0, 0x1
- b _08143E96
- .align 2, 0
-_08143E8C: .4byte gSaveBlock1Ptr
-_08143E90: .4byte 0x00003124
-_08143E94:
- movs r0, 0
-_08143E96:
- pop {r1}
- bx r1
- thumb_func_end sub_8143E78
-
- thumb_func_start sub_8143E9C
-sub_8143E9C: @ 8143E9C
- push {r4,lr}
- sub sp, 0x4
- movs r4, 0
- str r4, [sp]
- bl sub_8143D58
- adds r1, r0, 0
- ldr r2, _08143EC4 @ =0x0500006f
- mov r0, sp
- bl CpuSet
- ldr r0, _08143EC8 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143ECC @ =0x00003120
- adds r0, r1
- str r4, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143EC4: .4byte 0x0500006f
-_08143EC8: .4byte gSaveBlock1Ptr
-_08143ECC: .4byte 0x00003120
- thumb_func_end sub_8143E9C
-
- thumb_func_start sub_8143ED0
-sub_8143ED0: @ 8143ED0
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_8143D94
- adds r1, r0, 0
- ldr r2, _08143EF0 @ =0x05000001
- mov r0, sp
- bl CpuSet
- bl sub_8146C88
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08143EF0: .4byte 0x05000001
- thumb_func_end sub_8143ED0
-
- thumb_func_start sub_8143EF4
-sub_8143EF4: @ 8143EF4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _08143F0C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143F10 @ =0x00003124
- adds r4, r0, r1
- bl sub_8143E1C
- cmp r0, 0
- bne _08143F14
-_08143F08:
- movs r0, 0
- b _08143F2C
- .align 2, 0
-_08143F0C: .4byte gSaveBlock1Ptr
-_08143F10: .4byte 0x00003124
-_08143F14:
- movs r2, 0
- ldr r3, _08143F34 @ =0x000001bb
-_08143F18:
- adds r0, r4, r2
- adds r1, r5, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08143F08
- adds r2, 0x1
- cmp r2, r3
- bls _08143F18
- movs r0, 0x1
-_08143F2C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08143F34: .4byte 0x000001bb
- thumb_func_end sub_8143EF4
-
- thumb_func_start sub_8143F38
-sub_8143F38: @ 8143F38
- push {lr}
- bl sub_814407C
- bl sub_81440B4
- bl sub_8144790
- bl ClearRamScript
- bl sub_806E2D0
- bl sub_806E370
- ldr r0, _08143F64 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x94
- lsls r1, 3
- adds r0, r1
- bl sub_80E7524
- pop {r0}
- bx r0
- .align 2, 0
-_08143F64: .4byte gSaveBlock2Ptr
- thumb_func_end sub_8143F38
-
- thumb_func_start sub_8143F68
-sub_8143F68: @ 8143F68
- push {r4-r7,lr}
- adds r7, r0, 0
- bl sub_8144018
- cmp r0, 0
- beq _08143FC0
- bl sub_8143F38
- ldr r4, _08143FB0 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r5, _08143FB4 @ =0x000032e4
- adds r0, r5
- movs r6, 0xA6
- lsls r6, 1
- adds r1, r7, 0
- adds r2, r6, 0
- bl memcpy
- ldr r0, [r4]
- adds r0, r5
- adds r1, r6, 0
- bl CalcCRC16WithTable
- ldr r1, [r4]
- ldr r3, _08143FB8 @ =0x000032e0
- adds r2, r1, r3
- lsls r0, 16
- lsrs r0, 16
- str r0, [r2]
- ldr r0, _08143FBC @ =0x00003434
- adds r2, r1, r0
- adds r1, r5
- ldrh r0, [r1, 0x2]
- strh r0, [r2, 0x6]
- movs r0, 0x1
- b _08143FC2
- .align 2, 0
-_08143FB0: .4byte gSaveBlock1Ptr
-_08143FB4: .4byte 0x000032e4
-_08143FB8: .4byte 0x000032e0
-_08143FBC: .4byte 0x00003434
-_08143FC0:
- movs r0, 0
-_08143FC2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8143F68
-
- thumb_func_start sub_8143FC8
-sub_8143FC8: @ 8143FC8
- push {r4,r5,lr}
- ldr r5, _08144004 @ =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r1, _08144008 @ =0x000032e0
- adds r4, r0, r1
- adds r1, 0x4
- adds r0, r1
- movs r1, 0xA6
- lsls r1, 1
- bl CalcCRC16WithTable
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [r4]
- cmp r1, r0
- bne _08144010
- ldr r0, [r5]
- ldr r1, _0814400C @ =0x000032e4
- adds r0, r1
- bl sub_8144018
- cmp r0, 0
- beq _08144010
- bl sub_8069DFC
- cmp r0, 0
- beq _08144010
- movs r0, 0x1
- b _08144012
- .align 2, 0
-_08144004: .4byte gSaveBlock1Ptr
-_08144008: .4byte 0x000032e0
-_0814400C: .4byte 0x000032e4
-_08144010:
- movs r0, 0
-_08144012:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8143FC8
-
- thumb_func_start sub_8144018
-sub_8144018: @ 8144018
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814404E
- ldrb r1, [r2, 0x8]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x2
- bhi _0814404E
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- beq _0814403C
- cmp r0, 0x40
- beq _0814403C
- cmp r0, 0x80
- bne _0814404E
-_0814403C:
- lsls r0, r1, 26
- lsrs r0, 28
- cmp r0, 0x7
- bhi _0814404E
- ldrb r0, [r2, 0x9]
- cmp r0, 0x7
- bhi _0814404E
- movs r0, 0x1
- b _08144050
-_0814404E:
- movs r0, 0
-_08144050:
- pop {r1}
- bx r1
- thumb_func_end sub_8144018
-
- thumb_func_start sub_8144054
-sub_8144054: @ 8144054
- push {lr}
- ldr r0, _0814406C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144070 @ =0x000032e4
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- beq _08144074
- movs r0, 0x1
- b _08144076
- .align 2, 0
-_0814406C: .4byte gSaveBlock1Ptr
-_08144070: .4byte 0x000032e4
-_08144074:
- movs r0, 0
-_08144076:
- pop {r1}
- bx r1
- thumb_func_end sub_8144054
-
- thumb_func_start sub_814407C
-sub_814407C: @ 814407C
- push {r4,r5,lr}
- sub sp, 0x4
- movs r5, 0
- str r5, [sp]
- ldr r4, _081440A4 @ =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r0, _081440A8 @ =0x000032e4
- adds r1, r0
- ldr r2, _081440AC @ =0x05000053
- mov r0, sp
- bl CpuSet
- ldr r0, [r4]
- ldr r1, _081440B0 @ =0x000032e0
- adds r0, r1
- str r5, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081440A4: .4byte gSaveBlock1Ptr
-_081440A8: .4byte 0x000032e4
-_081440AC: .4byte 0x05000053
-_081440B0: .4byte 0x000032e0
- thumb_func_end sub_814407C
-
- thumb_func_start sub_81440B4
-sub_81440B4: @ 81440B4
- push {r4,lr}
- sub sp, 0x4
- movs r4, 0
- str r4, [sp]
- bl sav1_get_mevent_buffer_2
- adds r1, r0, 0
- ldr r2, _081440DC @ =0x05000009
- mov r0, sp
- bl CpuSet
- ldr r0, _081440E0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _081440E4 @ =0x00003430
- adds r0, r1
- str r4, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081440DC: .4byte 0x05000009
-_081440E0: .4byte gSaveBlock1Ptr
-_081440E4: .4byte 0x00003430
- thumb_func_end sub_81440B4
-
- thumb_func_start sub_81440E8
-sub_81440E8: @ 81440E8
- push {lr}
- bl sub_8143FC8
- cmp r0, 0
- bne _081440F6
- movs r0, 0
- b _08144100
-_081440F6:
- ldr r0, _08144104 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144108 @ =0x000032e4
- adds r0, r1
- ldrh r0, [r0]
-_08144100:
- pop {r1}
- bx r1
- .align 2, 0
-_08144104: .4byte gSaveBlock1Ptr
-_08144108: .4byte 0x000032e4
- thumb_func_end sub_81440E8
-
- thumb_func_start sub_814410C
-sub_814410C: @ 814410C
- push {lr}
- adds r2, r0, 0
- ldrb r1, [r2, 0x8]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0x40
- bne _08144120
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x8]
-_08144120:
- pop {r0}
- bx r0
- thumb_func_end sub_814410C
-
- thumb_func_start sub_8144124
-sub_8144124: @ 8144124
- push {lr}
- lsls r0, 16
- ldr r1, _08144138 @ =0xfc180000
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0x13
- bls _0814413C
- movs r0, 0
- b _0814413E
- .align 2, 0
-_08144138: .4byte 0xfc180000
-_0814413C:
- movs r0, 0x1
-_0814413E:
- pop {r1}
- bx r1
- thumb_func_end sub_8144124
-
- thumb_func_start sub_8144144
-sub_8144144: @ 8144144
- push {r4,lr}
- bl sub_81440E8
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_8144124
- cmp r0, 0
- beq _0814417C
- ldr r1, _08144174 @ =gUnknown_8466F00
- ldr r2, _08144178 @ =0xfffffc18
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0814417C
- movs r0, 0x1
- b _0814417E
- .align 2, 0
-_08144174: .4byte gUnknown_8466F00
-_08144178: .4byte 0xfffffc18
-_0814417C:
- movs r0, 0
-_0814417E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144144
-
- thumb_func_start sub_8144184
-sub_8144184: @ 8144184
- push {lr}
- movs r3, 0
- cmp r3, r1
- bge _081441A6
- adds r2, r0, 0
- adds r2, 0x8
-_08144190:
- ldrh r0, [r2, 0xE]
- cmp r0, 0
- beq _0814419E
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814419E
- adds r3, 0x1
-_0814419E:
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08144190
-_081441A6:
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8144184
-
- thumb_func_start sub_81441AC
-sub_81441AC: @ 81441AC
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0
- cmp r1, r2
- bge _081441E6
- ldrh r6, [r4, 0x2]
- movs r0, 0x16
- adds r0, r5
- mov r12, r0
-_081441C0:
- lsls r3, r1, 1
- mov r7, r12
- ldrh r0, [r7]
- cmp r0, r6
- beq _081441D8
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r3
- ldrh r0, [r0]
- ldrh r3, [r4]
- cmp r0, r3
- bne _081441DC
-_081441D8:
- movs r0, 0x1
- b _081441E8
-_081441DC:
- movs r7, 0x2
- add r12, r7
- adds r1, 0x1
- cmp r1, r2
- blt _081441C0
-_081441E6:
- movs r0, 0
-_081441E8:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81441AC
-
- thumb_func_start sub_81441F0
-sub_81441F0: @ 81441F0
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _08144210
- ldrh r1, [r1]
- cmp r1, 0
- beq _08144210
- ldr r0, _0814420C @ =0x0000019b
- cmp r1, r0
- bhi _08144210
- movs r0, 0x1
- b _08144212
- .align 2, 0
-_0814420C: .4byte 0x0000019b
-_08144210:
- movs r0, 0
-_08144212:
- pop {r1}
- bx r1
- thumb_func_end sub_81441F0
-
- thumb_func_start sub_8144218
-sub_8144218: @ 8144218
- push {lr}
- bl sub_8143FC8
- cmp r0, 0
- beq _0814424C
- ldr r0, _08144240 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, _08144244 @ =0x000032e4
- adds r2, r3, r0
- ldrb r1, [r2, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0814424C
- ldr r1, _08144248 @ =0x00003434
- adds r0, r3, r1
- ldrb r1, [r2, 0x9]
- bl sub_8144184
- b _0814424E
- .align 2, 0
-_08144240: .4byte gSaveBlock1Ptr
-_08144244: .4byte 0x000032e4
-_08144248: .4byte 0x00003434
-_0814424C:
- movs r0, 0
-_0814424E:
- pop {r1}
- bx r1
- thumb_func_end sub_8144218
-
- thumb_func_start sub_8144254
-sub_8144254: @ 8144254
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _08144280 @ =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r1, _08144284 @ =0x000032e4
- adds r0, r1
- ldrb r4, [r0, 0x9]
- adds r0, r5, 0
- bl sub_81441F0
- cmp r0, 0
- beq _081442BE
- ldr r0, [r6]
- ldr r1, _08144288 @ =0x00003434
- adds r0, r1
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_81441AC
- cmp r0, 0
- beq _08144298
- b _081442BE
- .align 2, 0
-_08144280: .4byte gSaveBlock1Ptr
-_08144284: .4byte 0x000032e4
-_08144288: .4byte 0x00003434
-_0814428C:
- ldrh r0, [r5, 0x2]
- strh r0, [r1]
- ldrh r0, [r5]
- strh r0, [r2]
- movs r0, 0x1
- b _081442C0
-_08144298:
- movs r3, 0
- cmp r3, r4
- bge _081442BE
- ldr r0, [r6]
- ldr r6, _081442C8 @ =0x0000343c
- adds r2, r0, r6
- adds r6, 0xE
- adds r1, r0, r6
-_081442A8:
- ldrh r0, [r2, 0xE]
- cmp r0, 0
- bne _081442B4
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814428C
-_081442B4:
- adds r2, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, r4
- blt _081442A8
-_081442BE:
- movs r0, 0
-_081442C0:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081442C8: .4byte 0x0000343c
- thumb_func_end sub_8144254
-
- thumb_func_start sub_81442CC
-sub_81442CC: @ 81442CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0
- str r0, [sp]
- ldr r2, _08144328 @ =0x05000019
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- ldr r0, _0814432C @ =0x00000101
- str r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x4]
- str r0, [r4, 0x8]
- strh r0, [r4, 0xC]
- str r0, [r4, 0x10]
- bl sub_8143FC8
- cmp r0, 0
- beq _08144330
- bl sav1_get_mevent_buffer_1
- ldrh r0, [r0]
- strh r0, [r4, 0x14]
- bl sav1_get_mevent_buffer_2
- adds r1, r4, 0
- adds r1, 0x20
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- bl sav1_get_mevent_buffer_1
- ldrb r1, [r0, 0x9]
- adds r0, r4, 0
- adds r0, 0x44
- strb r1, [r0]
- b _08144332
- .align 2, 0
-_08144328: .4byte 0x05000019
-_0814432C: .4byte 0x00000101
-_08144330:
- strh r0, [r4, 0x14]
-_08144332:
- adds r5, r4, 0
- adds r5, 0x4C
- ldr r0, _081443BC @ =gSaveBlock2Ptr
- mov r8, r0
- adds r6, r4, 0
- adds r6, 0x45
- adds r7, r4, 0
- adds r7, 0x50
- movs r1, 0x5C
- adds r1, r4
- mov r9, r1
- movs r2, 0x60
- adds r2, r4
- mov r10, r2
- ldr r0, _081443C0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _081443C4 @ =0x00003458
- adds r2, r0, r3
- adds r1, r4, 0
- adds r1, 0x16
- movs r3, 0x3
-_0814435C:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0814435C
- mov r0, r8
- ldr r1, [r0]
- adds r1, 0xA
- adds r0, r5, 0
- bl CopyUnalignedWord
- mov r2, r8
- ldr r1, [r2]
- adds r0, r6, 0
- bl StringCopy
- ldr r0, _081443C0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _081443C8 @ =0x00002ca0
- adds r2, r0, r3
- adds r1, r7, 0
- movs r3, 0x5
-_0814438C:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0814438C
- ldr r1, _081443CC @ =RomHeaderGameCode
- mov r0, r9
- movs r2, 0x4
- bl memcpy
- ldr r0, _081443D0 @ =RomHeaderSoftwareVersion
- ldrb r0, [r0]
- mov r5, r10
- strb r0, [r5]
- 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
-_081443BC: .4byte gSaveBlock2Ptr
-_081443C0: .4byte gSaveBlock1Ptr
-_081443C4: .4byte 0x00003458
-_081443C8: .4byte 0x00002ca0
-_081443CC: .4byte RomHeaderGameCode
-_081443D0: .4byte RomHeaderSoftwareVersion
- thumb_func_end sub_81442CC
-
- thumb_func_start sub_81443D4
-sub_81443D4: @ 81443D4
- push {lr}
- adds r2, r0, 0
- ldr r1, [r2]
- ldr r0, _0814440C @ =0x00000101
- cmp r1, r0
- bne _08144410
- ldrh r1, [r2, 0x4]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08144410
- ldr r0, [r2, 0x8]
- ands r0, r3
- cmp r0, 0
- beq _08144410
- ldrh r1, [r2, 0xC]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08144410
- ldr r0, [r2, 0x10]
- movs r1, 0xF
- ands r0, r1
- cmp r0, 0
- beq _08144410
- movs r0, 0x1
- b _08144412
- .align 2, 0
-_0814440C: .4byte 0x00000101
-_08144410:
- movs r0, 0
-_08144412:
- pop {r1}
- bx r1
- thumb_func_end sub_81443D4
-
- thumb_func_start sub_8144418
-sub_8144418: @ 8144418
- push {lr}
- ldrh r1, [r1, 0x14]
- cmp r1, 0
- bne _08144424
- movs r0, 0
- b _08144430
-_08144424:
- ldrh r0, [r0]
- cmp r0, r1
- beq _0814442E
- movs r0, 0x2
- b _08144430
-_0814442E:
- movs r0, 0x1
-_08144430:
- pop {r1}
- bx r1
- thumb_func_end sub_8144418
-
- thumb_func_start sub_8144434
-sub_8144434: @ 8144434
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r4, 0
- adds r5, 0x20
- adds r4, 0x44
- ldrb r1, [r4]
- adds r0, r5, 0
- bl sub_8144184
- ldrb r2, [r4]
- subs r4, r2, r0
- cmp r4, 0
- bne _08144454
- movs r0, 0x1
- b _0814446E
-_08144454:
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_81441AC
- cmp r0, 0
- beq _08144464
- movs r0, 0x3
- b _0814446E
-_08144464:
- cmp r4, 0x1
- beq _0814446C
- movs r0, 0x2
- b _0814446E
-_0814446C:
- movs r0, 0x4
-_0814446E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144434
-
- thumb_func_start sub_8144474
-sub_8144474: @ 8144474
- push {r4,lr}
- movs r3, 0
- adds r2, r0, 0
- adds r2, 0x16
-_0814447C:
- ldrh r0, [r2]
- ldrh r4, [r1]
- cmp r0, r4
- beq _08144488
- movs r0, 0
- b _08144494
-_08144488:
- adds r1, 0x2
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _0814447C
- movs r0, 0x1
-_08144494:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144474
-
- thumb_func_start sub_814449C
-sub_814449C: @ 814449C
- push {lr}
- adds r2, r0, 0
- adds r2, 0x20
- adds r0, 0x44
- ldrb r1, [r0]
- adds r0, r2, 0
- bl sub_8144184
- pop {r1}
- bx r1
- thumb_func_end sub_814449C
-
- thumb_func_start sub_81444B0
-sub_81444B0: @ 81444B0
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x4
- bhi _081444FC
- lsls r0, r1, 2
- ldr r1, _081444C4 @ =_081444C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081444C4: .4byte _081444C8
- .align 2, 0
-_081444C8:
- .4byte _081444DC
- .4byte _081444E0
- .4byte _081444E4
- .4byte _081444E8
- .4byte _081444F4
-_081444DC:
- ldrh r0, [r2, 0x20]
- b _0814450A
-_081444E0:
- ldrh r0, [r2, 0x22]
- b _0814450A
-_081444E4:
- ldrh r0, [r2, 0x24]
- b _0814450A
-_081444E8:
- adds r0, r2, 0
- bl sub_814449C
- lsls r0, 16
- lsrs r0, 16
- b _0814450A
-_081444F4:
- adds r0, r2, 0
- adds r0, 0x44
- ldrb r0, [r0]
- b _0814450A
-_081444FC:
- ldr r0, _08144510 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- ldr r1, _08144514 @ =0x00000339
- ldr r2, _08144518 @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0
-_0814450A:
- pop {r1}
- bx r1
- .align 2, 0
-_08144510: .4byte gUnknown_8466F28
-_08144514: .4byte 0x00000339
-_08144518: .4byte gUnknown_8466F5C
- thumb_func_end sub_81444B0
-
- thumb_func_start sub_814451C
-sub_814451C: @ 814451C
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _08144544 @ =gSaveBlock1Ptr
- ldr r0, [r2]
- ldr r1, _08144548 @ =0x000032e4
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- adds r3, r2, 0
- cmp r0, 0x2
- bne _081445B6
- movs r2, 0
- cmp r4, 0x4
- bhi _08144582
- lsls r0, r4, 2
- ldr r1, _0814454C @ =_08144550
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144544: .4byte gSaveBlock1Ptr
-_08144548: .4byte 0x000032e4
-_0814454C: .4byte _08144550
- .align 2, 0
-_08144550:
- .4byte _08144564
- .4byte _08144570
- .4byte _0814457C
- .4byte _08144582
- .4byte _08144582
-_08144564:
- ldr r0, [r3]
- ldr r1, _0814456C @ =0x00003434
- b _08144580
- .align 2, 0
-_0814456C: .4byte 0x00003434
-_08144570:
- ldr r0, [r3]
- ldr r1, _08144578 @ =0x00003436
- b _08144580
- .align 2, 0
-_08144578: .4byte 0x00003436
-_0814457C:
- ldr r0, [r3]
- ldr r1, _08144598 @ =0x00003438
-_08144580:
- adds r2, r0, r1
-_08144582:
- cmp r2, 0
- bne _081445A4
- ldr r0, _0814459C @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- movs r1, 0xD9
- lsls r1, 2
- ldr r2, _081445A0 @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
- b _081445B6
- .align 2, 0
-_08144598: .4byte 0x00003438
-_0814459C: .4byte gUnknown_8466F28
-_081445A0: .4byte gUnknown_8466F5C
-_081445A4:
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081445BC @ =0x000003e7
- cmp r0, r1
- bls _081445B6
- strh r1, [r2]
-_081445B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081445BC: .4byte 0x000003e7
- thumb_func_end sub_814451C
-
- thumb_func_start sub_81445C0
-sub_81445C0: @ 81445C0
- push {lr}
- cmp r0, 0x4
- bhi _081446A4
- lsls r0, 2
- ldr r1, _081445D0 @ =_081445D4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081445D0: .4byte _081445D4
- .align 2, 0
-_081445D4:
- .4byte _081445E8
- .4byte _08144610
- .4byte _08144638
- .4byte _08144660
- .4byte _08144684
-_081445E8:
- ldr r0, _08144604 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r1, _08144608 @ =0x000032e4
- adds r0, r2, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- bne _081446A4
- ldr r1, _0814460C @ =0x00003434
- adds r0, r2, r1
- ldrh r0, [r0]
- b _081446B2
- .align 2, 0
-_08144604: .4byte gSaveBlock1Ptr
-_08144608: .4byte 0x000032e4
-_0814460C: .4byte 0x00003434
-_08144610:
- ldr r0, _0814462C @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r1, _08144630 @ =0x000032e4
- adds r0, r2, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- bne _081446A4
- ldr r1, _08144634 @ =0x00003434
- adds r0, r2, r1
- ldrh r0, [r0, 0x2]
- b _081446B2
- .align 2, 0
-_0814462C: .4byte gSaveBlock1Ptr
-_08144630: .4byte 0x000032e4
-_08144634: .4byte 0x00003434
-_08144638:
- ldr r0, _08144654 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r1, _08144658 @ =0x000032e4
- adds r0, r2, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- bne _081446A4
- ldr r1, _0814465C @ =0x00003434
- adds r0, r2, r1
- ldrh r0, [r0, 0x4]
- b _081446B2
- .align 2, 0
-_08144654: .4byte gSaveBlock1Ptr
-_08144658: .4byte 0x000032e4
-_0814465C: .4byte 0x00003434
-_08144660:
- ldr r0, _0814467C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144680 @ =0x000032e4
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081446A4
- bl sub_8144218
- lsls r0, 16
- lsrs r0, 16
- b _081446B2
- .align 2, 0
-_0814467C: .4byte gSaveBlock1Ptr
-_08144680: .4byte 0x000032e4
-_08144684:
- ldr r0, _0814469C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _081446A0 @ =0x000032e4
- adds r2, r0, r1
- ldrb r1, [r2, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081446A4
- ldrb r0, [r2, 0x9]
- b _081446B2
- .align 2, 0
-_0814469C: .4byte gSaveBlock1Ptr
-_081446A0: .4byte 0x000032e4
-_081446A4:
- ldr r0, _081446B8 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- ldr r1, _081446BC @ =0x00000391
- ldr r2, _081446C0 @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0
-_081446B2:
- pop {r1}
- bx r1
- .align 2, 0
-_081446B8: .4byte gUnknown_8466F28
-_081446BC: .4byte 0x00000391
-_081446C0: .4byte gUnknown_8466F5C
- thumb_func_end sub_81445C0
-
- thumb_func_start sub_81446C4
-sub_81446C4: @ 81446C4
- ldr r1, _081446CC @ =gUnknown_203F3BC
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_081446CC: .4byte gUnknown_203F3BC
- thumb_func_end sub_81446C4
-
- thumb_func_start sub_81446D0
-sub_81446D0: @ 81446D0
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- adds r4, r0, 0
- ldr r5, _08144700 @ =gUnknown_203F3BC
- movs r0, 0
- str r0, [r5]
- cmp r4, 0
- beq _0814470E
- bl sub_8143FC8
- cmp r0, 0
- beq _0814470C
- ldr r0, _08144704 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144708 @ =0x000032e4
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r4
- bne _0814470C
- movs r0, 0x1
- str r0, [r5]
- b _0814470E
- .align 2, 0
-_08144700: .4byte gUnknown_203F3BC
-_08144704: .4byte gSaveBlock1Ptr
-_08144708: .4byte 0x000032e4
-_0814470C:
- movs r0, 0
-_0814470E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81446D0
-
- thumb_func_start sub_8144714
-sub_8144714: @ 8144714
- push {lr}
- adds r2, r0, 0
- ldr r0, _08144738 @ =gUnknown_203F3BC
- ldr r0, [r0]
- cmp r0, 0
- beq _08144782
- cmp r2, 0x1
- beq _08144758
- cmp r2, 0x1
- bcc _08144744
- cmp r2, 0x2
- bne _08144774
- ldr r0, _0814473C @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, _08144740 @ =0x00003478
- adds r2, r0
- movs r0, 0x2
- b _08144762
- .align 2, 0
-_08144738: .4byte gUnknown_203F3BC
-_0814473C: .4byte gSaveBlock1Ptr
-_08144740: .4byte 0x00003478
-_08144744:
- ldr r0, _08144750 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, _08144754 @ =0x00003464
- adds r2, r0
- movs r0, 0
- b _08144762
- .align 2, 0
-_08144750: .4byte gSaveBlock1Ptr
-_08144754: .4byte 0x00003464
-_08144758:
- ldr r0, _0814476C @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, _08144770 @ =0x00003464
- adds r2, r0
- movs r0, 0x1
-_08144762:
- movs r3, 0x5
- bl sub_8144824
- b _08144782
- .align 2, 0
-_0814476C: .4byte gSaveBlock1Ptr
-_08144770: .4byte 0x00003464
-_08144774:
- ldr r0, _08144788 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- movs r1, 0xF7
- lsls r1, 2
- ldr r2, _0814478C @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
-_08144782:
- pop {r0}
- bx r0
- .align 2, 0
-_08144788: .4byte gUnknown_8466F28
-_0814478C: .4byte gUnknown_8466F5C
- thumb_func_end sub_8144714
-
- thumb_func_start sub_8144790
-sub_8144790: @ 8144790
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r0, _081447B0 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _081447B4 @ =0x00003464
- adds r1, r0
- ldr r2, _081447B8 @ =0x0500000a
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_081447B0: .4byte gSaveBlock1Ptr
-_081447B4: .4byte 0x00003464
-_081447B8: .4byte 0x0500000a
- thumb_func_end sub_8144790
-
- thumb_func_start sub_81447BC
-sub_81447BC: @ 81447BC
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0
- cmp r1, r2
- bge _081447DE
- ldr r0, [r4]
- cmp r0, r5
- beq _081447DE
- adds r3, r4, 0
-_081447D0:
- adds r3, 0x4
- adds r1, 0x1
- cmp r1, r2
- bge _081447DE
- ldr r0, [r3]
- cmp r0, r5
- bne _081447D0
-_081447DE:
- cmp r1, r2
- bne _08144800
- subs r3, r1, 0x1
- cmp r3, 0
- ble _081447FA
- lsls r0, r3, 2
- subs r0, 0x4
- adds r2, r0, r4
-_081447EE:
- ldr r0, [r2]
- str r0, [r2, 0x4]
- subs r2, 0x4
- subs r3, 0x1
- cmp r3, 0
- bgt _081447EE
-_081447FA:
- str r5, [r4]
- movs r0, 0x1
- b _0814481C
-_08144800:
- adds r3, r1, 0
- cmp r3, 0
- ble _08144818
- lsls r0, r3, 2
- subs r0, 0x4
- adds r2, r0, r4
-_0814480C:
- ldr r0, [r2]
- str r0, [r2, 0x4]
- subs r2, 0x4
- subs r3, 0x1
- cmp r3, 0
- bgt _0814480C
-_08144818:
- str r5, [r4]
- movs r0, 0
-_0814481C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81447BC
-
- thumb_func_start sub_8144824
-sub_8144824: @ 8144824
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- bl sub_81447BC
- cmp r0, 0
- beq _0814483C
- adds r0, r4, 0
- bl sub_814451C
-_0814483C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144824
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s
deleted file mode 100644
index ccb86ba64..000000000
--- a/asm/mevent_8145654.s
+++ /dev/null
@@ -1,2728 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8145654
-sub_8145654: @ 8145654
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- cmp r5, 0
- beq _08145670
- cmp r6, 0
- beq _08145670
- ldr r7, _08145674 @ =gUnknown_203F3C8
- ldr r0, _08145678 @ =0x0000145c
- bl AllocZeroed
- str r0, [r7]
- cmp r0, 0
- bne _0814567C
-_08145670:
- movs r0, 0
- b _081456E6
- .align 2, 0
-_08145674: .4byte gUnknown_203F3C8
-_08145678: .4byte 0x0000145c
-_0814567C:
- movs r4, 0xA6
- lsls r4, 1
- adds r1, r5, 0
- adds r2, r4, 0
- bl memcpy
- ldr r1, [r7]
- adds r1, r4
- adds r0, r6, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r2, [r7]
- ldrb r1, [r2, 0x8]
- lsls r0, r1, 26
- lsrs r0, 28
- cmp r0, 0x7
- bls _081456AE
- movs r0, 0x3D
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x8]
-_081456AE:
- ldr r2, [r7]
- ldrb r1, [r2, 0x8]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x2
- bls _081456C2
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x8]
-_081456C2:
- ldr r1, [r7]
- ldrb r0, [r1, 0x9]
- cmp r0, 0x7
- bls _081456CE
- movs r0, 0
- strb r0, [r1, 0x9]
-_081456CE:
- ldr r0, [r7]
- movs r1, 0xB8
- lsls r1, 1
- adds r2, r0, r1
- ldrb r0, [r0, 0x8]
- lsls r0, 26
- lsrs r0, 28
- lsls r0, 4
- ldr r1, _081456EC @ =gUnknown_8467FB8
- adds r0, r1
- str r0, [r2]
- movs r0, 0x1
-_081456E6:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081456EC: .4byte gUnknown_8467FB8
- thumb_func_end sub_8145654
-
- thumb_func_start sub_81456F0
-sub_81456F0: @ 81456F0
- push {r4,lr}
- ldr r4, _08145714 @ =gUnknown_203F3C8
- ldr r0, [r4]
- cmp r0, 0
- beq _0814570C
- ldr r2, _08145718 @ =0x0000145c
- movs r1, 0
- bl memset
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_0814570C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08145714: .4byte gUnknown_203F3C8
-_08145718: .4byte 0x0000145c
- thumb_func_end sub_81456F0
-
- thumb_func_start sub_814571C
-sub_814571C: @ 814571C
- push {r4-r6,lr}
- sub sp, 0x24
- ldr r5, _08145730 @ =gUnknown_203F3C8
- ldr r0, [r5]
- cmp r0, 0
- bne _08145734
- movs r0, 0x1
- negs r0, r0
- b _08145930
- .align 2, 0
-_08145730: .4byte gUnknown_203F3C8
-_08145734:
- movs r4, 0xBA
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08145742
- b _08145908
-_08145742:
- lsls r0, 2
- ldr r1, _0814574C @ =_08145750
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0814574C: .4byte _08145750
- .align 2, 0
-_08145750:
- .4byte _08145770
- .4byte _08145782
- .4byte _08145790
- .4byte _08145834
- .4byte _081458AC
- .4byte _081458B2
- .4byte _081458CC
- .4byte _081458D2
-_08145770:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0814591E
-_08145782:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _0814578E
- b _0814591E
-_0814578E:
- b _0814592E
-_08145790:
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r5, _0814582C @ =gUnknown_203F3C8
- ldr r0, [r5]
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0x8
- bl decompress_and_copy_tile_data_to_vram
- ldr r4, _08145830 @ =gUnknown_8467074
- adds r0, r4, 0
- bl AddWindow
- ldr r1, [r5]
- movs r2, 0xBB
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
- adds r0, r4, 0
- adds r0, 0x8
- bl AddWindow
- ldr r1, [r5]
- movs r2, 0xBC
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
- adds r4, 0x10
- adds r0, r4, 0
- bl AddWindow
- ldr r1, [r5]
- movs r2, 0xBD
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
- b _0814591E
- .align 2, 0
-_0814582C: .4byte gUnknown_203F3C8
-_08145830: .4byte gUnknown_8467074
-_08145834:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0814592E
- ldr r2, _081458A0 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r5, _081458A4 @ =gUnknown_203F3C8
- ldr r0, [r5]
- movs r4, 0xB8
- lsls r4, 1
- adds r0, r4
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r1, [r5]
- adds r4, r1, r4
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- ldr r4, _081458A8 @ =0x0000045c
- adds r1, r4
- bl LZ77UnCompWram
- ldr r1, [r5]
- adds r1, r4
- movs r2, 0x1E
- str r2, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- str r6, [sp, 0xC]
- str r2, [sp, 0x10]
- str r0, [sp, 0x14]
- movs r0, 0x1
- str r0, [sp, 0x18]
- movs r0, 0x8
- str r0, [sp, 0x1C]
- str r6, [sp, 0x20]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyRectToBgTilemapBufferRect
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- b _0814591E
- .align 2, 0
-_081458A0: .4byte gPaletteFade
-_081458A4: .4byte gUnknown_203F3C8
-_081458A8: .4byte 0x0000045c
-_081458AC:
- bl sub_8145A98
- b _0814591E
-_081458B2:
- movs r0, 0
- bl sub_8145D18
- movs r0, 0x1
- bl sub_8145D18
- movs r0, 0x2
- bl sub_8145D18
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _0814591E
-_081458CC:
- bl sub_809707C
- b _0814591E
-_081458D2:
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r2, _08145904 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- bl sub_8146060
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl UpdatePaletteFade
- b _0814591E
- .align 2, 0
-_08145904: .4byte gPaletteFade
-_08145908:
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0814592E
- ldr r0, [r5]
- adds r0, r4
- strb r1, [r0]
- movs r0, 0x1
- b _08145930
-_0814591E:
- ldr r0, _08145938 @ =gUnknown_203F3C8
- ldr r1, [r0]
- movs r0, 0xBA
- lsls r0, 1
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0814592E:
- movs r0, 0
-_08145930:
- add sp, 0x24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08145938: .4byte gUnknown_203F3C8
- thumb_func_end sub_814571C
-
- thumb_func_start sub_814593C
-sub_814593C: @ 814593C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r2, r0, 0
- ldr r5, _08145950 @ =gUnknown_203F3C8
- ldr r0, [r5]
- cmp r0, 0
- bne _08145954
- movs r0, 0x1
- negs r0, r0
- b _08145A8C
- .align 2, 0
-_08145950: .4byte gUnknown_203F3C8
-_08145954:
- movs r4, 0xBA
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _08145962
- b _08145A64
-_08145962:
- lsls r0, 2
- ldr r1, _0814596C @ =_08145970
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0814596C: .4byte _08145970
- .align 2, 0
-_08145970:
- .4byte _0814598C
- .4byte _0814599E
- .4byte _081459AA
- .4byte _081459F2
- .4byte _08145A30
- .4byte _08145A3A
- .4byte _08145A4C
-_0814598C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08145A7A
-_0814599E:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _08145A7A
- b _08145A8A
-_081459AA:
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- b _08145A7A
-_081459F2:
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- ldr r4, _08145A2C @ =gUnknown_203F3C8
- ldr r0, [r4]
- movs r1, 0xBD
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r4]
- movs r1, 0xBC
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r4]
- movs r1, 0xBB
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- bl RemoveWindow
- b _08145A7A
- .align 2, 0
-_08145A2C: .4byte gUnknown_203F3C8
-_08145A30:
- bl sub_81461D8
- bl FreeMonIconPalettes
- b _08145A7A
-_08145A3A:
- ldr r0, _08145A48 @ =gUnknown_203F3B8
- ldrb r0, [r0]
- adds r1, r2, 0
- bl sub_8142344
- b _08145A7A
- .align 2, 0
-_08145A48: .4byte gUnknown_203F3B8
-_08145A4C:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08145A7A
-_08145A64:
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08145A8A
- ldr r0, [r5]
- adds r0, r4
- strb r1, [r0]
- movs r0, 0x1
- b _08145A8C
-_08145A7A:
- ldr r0, _08145A94 @ =gUnknown_203F3C8
- ldr r1, [r0]
- movs r0, 0xBA
- lsls r0, 1
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08145A8A:
- movs r0, 0
-_08145A8C:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08145A94: .4byte gUnknown_203F3C8
- thumb_func_end sub_814593C
-
- thumb_func_start sub_8145A98
-sub_8145A98: @ 8145A98
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r5, 0
- mov r0, sp
- movs r1, 0
- movs r2, 0x6
- bl memset
- ldr r4, _08145B7C @ =gUnknown_203F3C8
- ldr r1, [r4]
- ldr r2, _08145B80 @ =0x0000018b
- adds r0, r1, r2
- adds r1, 0xA
- movs r2, 0x28
- bl memcpy
- ldr r0, [r4]
- ldr r3, _08145B84 @ =0x000001b3
- adds r1, r0, r3
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, [r4]
- movs r2, 0xDA
- lsls r2, 1
- adds r0, r1, r2
- adds r1, 0x32
- movs r2, 0x28
- bl memcpy
- ldr r0, [r4]
- movs r3, 0xEE
- lsls r3, 1
- adds r0, r3
- movs r1, 0x1
- negs r1, r1
- strb r1, [r0]
- ldr r1, [r4]
- ldr r0, [r1, 0x4]
- ldr r2, _08145B88 @ =0x000f423f
- cmp r0, r2
- bls _08145AF4
- str r2, [r1, 0x4]
-_08145AF4:
- ldr r1, [r4]
- ldr r2, _08145B8C @ =0x000001dd
- adds r0, r1, r2
- ldr r1, [r1, 0x4]
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- adds r6, r4, 0
-_08145B06:
- ldr r2, [r6]
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r4, r1, r5
- adds r0, r4, r2
- movs r3, 0xF2
- lsls r3, 1
- adds r0, r3
- adds r1, r2
- adds r1, 0x5A
- movs r2, 0x28
- bl memcpy
- ldr r1, [r6]
- movs r0, 0x83
- lsls r0, 2
- adds r1, r0
- adds r1, r4
- movs r2, 0x1
- negs r2, r2
- adds r7, r2, 0
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _08145B06
- ldr r6, _08145B7C @ =gUnknown_203F3C8
- ldr r1, [r6]
- movs r3, 0xA2
- lsls r3, 2
- adds r0, r1, r3
- adds r1, 0xFA
- movs r2, 0x28
- bl memcpy
- ldr r0, [r6]
- movs r4, 0xAC
- lsls r4, 2
- adds r0, r4
- movs r1, 0x1
- negs r1, r1
- adds r4, r1, 0
- movs r1, 0xFF
- strb r1, [r0]
- ldr r1, [r6]
- ldrb r0, [r1, 0x8]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- beq _08145BB8
- cmp r0, 0x1
- bgt _08145B90
- cmp r0, 0
- beq _08145B96
- b _08145D08
- .align 2, 0
-_08145B7C: .4byte gUnknown_203F3C8
-_08145B80: .4byte 0x0000018b
-_08145B84: .4byte 0x000001b3
-_08145B88: .4byte 0x000f423f
-_08145B8C: .4byte 0x000001dd
-_08145B90:
- cmp r0, 0x2
- beq _08145BC8
- b _08145D08
-_08145B96:
- ldr r2, _08145BB0 @ =0x000002b1
- adds r0, r1, r2
- movs r3, 0x91
- lsls r3, 1
- adds r1, r3
- movs r2, 0x28
- bl memcpy
- ldr r1, [r6]
- ldr r0, _08145BB4 @ =0x000002d9
- adds r1, r0
- b _08145BBC
- .align 2, 0
-_08145BB0: .4byte 0x000002b1
-_08145BB4: .4byte 0x000002d9
-_08145BB8:
- ldr r2, _08145BC4 @ =0x000002b1
- adds r1, r2
-_08145BBC:
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- b _08145D08
- .align 2, 0
-_08145BC4: .4byte 0x000002b1
-_08145BC8:
- ldr r3, _08145C84 @ =0x000002b1
- adds r0, r1, r3
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- mov r3, sp
- ldr r1, [r6]
- movs r4, 0xA6
- lsls r4, 1
- adds r0, r1, r4
- ldrh r0, [r0]
- ldr r2, _08145C88 @ =0x000003e7
- cmp r0, r2
- bls _08145BE6
- adds r0, r2, 0
-_08145BE6:
- strh r0, [r3]
- mov r3, sp
- movs r4, 0xA7
- lsls r4, 1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, r2
- bls _08145BF8
- adds r0, r2, 0
-_08145BF8:
- strh r0, [r3, 0x2]
- mov r3, sp
- movs r4, 0xA8
- lsls r4, 1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, r2
- bls _08145C0A
- adds r0, r2, 0
-_08145C0A:
- strh r0, [r3, 0x4]
- movs r5, 0
-_08145C0E:
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 4
- movs r0, 0xB7
- lsls r0, 2
- adds r4, r0
- ldr r0, [r6]
- adds r0, r4
- adds r0, 0x2A
- movs r1, 0xFF
- movs r2, 0x4
- bl memset
- ldr r0, [r6]
- adds r0, r4
- adds r0, 0x1
- movs r1, 0xFF
- movs r2, 0x29
- bl memset
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _08145C0E
- movs r5, 0
- movs r6, 0
- ldr r1, _08145C8C @ =gUnknown_203F3C8
- mov r8, r1
- movs r2, 0x91
- lsls r2, 1
- mov r10, r2
- ldr r7, _08145C90 @ =0x00000175
- movs r3, 0xB7
- lsls r3, 2
- mov r9, r3
-_08145C56:
- mov r4, r8
- ldr r2, [r4]
- mov r0, r10
- adds r1, r2, r0
- adds r0, r1, r5
- ldrb r3, [r0]
- cmp r3, 0xF7
- beq _08145C98
- ldr r1, _08145C90 @ =0x00000175
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- adds r0, r6, r0
- ldr r4, _08145C94 @ =0x000002dd
- adds r1, r2, r4
- adds r1, r0
- strb r3, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- b _08145CFE
- .align 2, 0
-_08145C84: .4byte 0x000002b1
-_08145C88: .4byte 0x000003e7
-_08145C8C: .4byte gUnknown_203F3C8
-_08145C90: .4byte 0x00000175
-_08145C94: .4byte 0x000002dd
-_08145C98:
- adds r0, r5, 0x1
- adds r0, r1, r0
- ldrb r3, [r0]
- cmp r3, 0x2
- bls _08145CA8
- adds r0, r5, 0x2
- lsls r0, 16
- b _08145CFC
-_08145CA8:
- adds r0, r2, r7
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- add r0, r9
- adds r0, r2, r0
- adds r0, 0x2A
- lsls r1, r3, 1
- add r1, sp
- ldrh r1, [r1]
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, r8
- ldr r1, [r0]
- adds r0, r1, r7
- ldrb r2, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 4
- adds r0, r1, r0
- adds r4, r5, 0x2
- add r1, r10
- adds r1, r4
- ldrb r1, [r1]
- add r0, r9
- strb r1, [r0]
- mov r2, r8
- ldr r1, [r2]
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, 0x7
- bhi _08145D08
- movs r6, 0
- lsls r0, r4, 16
-_08145CFC:
- lsrs r5, r0, 16
-_08145CFE:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x27
- bls _08145C56
-_08145D08:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8145A98
-
- thumb_func_start sub_8145D18
-sub_8145D18: @ 8145D18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r7, _08145D60 @ =gUnknown_203F3C8
- ldr r0, [r7]
- lsls r1, r4, 1
- movs r2, 0xBB
- lsls r2, 1
- adds r0, r2
- adds r0, r1
- ldrh r0, [r0]
- lsls r6, r0, 24
- lsrs r5, r6, 24
- adds r0, r5, 0
- bl PutWindowTilemap
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- cmp r4, 0x1
- beq _08145E40
- cmp r4, 0x1
- bgt _08145D64
- cmp r4, 0
- beq _08145D70
- mov r9, r6
- b _08146038
- .align 2, 0
-_08145D60: .4byte gUnknown_203F3C8
-_08145D64:
- mov r0, r8
- cmp r0, 0x2
- bne _08145D6C
- b _08145EA4
-_08145D6C:
- mov r9, r6
- b _08146038
-_08145D70:
- ldr r2, [r7]
- movs r1, 0xB8
- lsls r1, 1
- mov r10, r1
- adds r0, r2, r1
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 28
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08145E34 @ =gUnknown_8467068
- mov r8, r0
- add r1, r8
- str r1, [sp]
- ldr r1, [sp, 0xC]
- str r1, [sp, 0x4]
- ldr r0, _08145E38 @ =0x0000018b
- adds r2, r0
- str r2, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x1
- bl box_print
- ldr r4, [r7]
- movs r1, 0xDA
- lsls r1, 1
- mov r9, r1
- add r4, r9
- movs r0, 0x3
- movs r1, 0x2
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x3
- adds r1, r4, 0
- bl GetStringWidth
- movs r1, 0xA0
- subs r1, r0
- cmp r1, 0
- bge _08145DCE
- movs r1, 0
-_08145DCE:
- lsls r2, r1, 24
- lsrs r2, 24
- ldr r3, [r7]
- mov r1, r10
- adds r0, r3, r1
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- lsls r0, r1, 1
- adds r0, r1
- add r0, r8
- str r0, [sp]
- ldr r0, [sp, 0xC]
- str r0, [sp, 0x4]
- add r3, r9
- str r3, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x3
- movs r3, 0x11
- bl box_print
- ldr r2, [r7]
- ldr r0, [r2, 0x4]
- mov r9, r6
- cmp r0, 0
- bne _08145E06
- b _08146038
-_08145E06:
- mov r1, r10
- adds r0, r2, r1
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- lsls r0, r1, 1
- adds r0, r1
- add r0, r8
- str r0, [sp]
- ldr r0, [sp, 0xC]
- str r0, [sp, 0x4]
- ldr r1, _08145E3C @ =0x000001dd
- adds r0, r2, r1
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x2
- movs r2, 0xA6
- movs r3, 0x11
- bl box_print
- b _08146038
- .align 2, 0
-_08145E34: .4byte gUnknown_8467068
-_08145E38: .4byte 0x0000018b
-_08145E3C: .4byte 0x000001dd
-_08145E40:
- mov r9, r6
-_08145E42:
- ldr r2, [sp, 0xC]
- lsls r4, r2, 24
- asrs r4, 24
- lsls r3, r4, 4
- adds r3, 0x2
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08145E9C @ =gUnknown_203F3C8
- ldr r2, [r0]
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r2, r1
- ldr r0, [r0]
- ldrb r0, [r0]
- lsrs r0, 4
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08145EA0 @ =gUnknown_8467068
- adds r1, r0
- str r1, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r4
- movs r1, 0xF2
- lsls r1, 1
- adds r0, r1
- adds r2, r0
- str r2, [sp, 0x8]
- mov r2, r9
- lsrs r0, r2, 24
- movs r1, 0x3
- movs r2, 0
- bl box_print
- adds r4, 0x1
- lsls r4, 24
- lsrs r0, r4, 24
- str r0, [sp, 0xC]
- asrs r4, 24
- cmp r4, 0x3
- ble _08145E42
- b _08146038
- .align 2, 0
-_08145E9C: .4byte gUnknown_203F3C8
-_08145EA0: .4byte gUnknown_8467068
-_08145EA4:
- ldr r4, _08145F2C @ =gUnknown_8467070
- ldr r2, [r7]
- ldrb r0, [r2, 0x8]
- lsls r0, 30
- lsrs r0, 30
- adds r0, r4
- ldrb r3, [r0]
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r2, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- lsls r0, 28
- lsrs r0, 28
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08145F30 @ =gUnknown_8467068
- mov r10, r0
- add r1, r10
- str r1, [sp]
- ldr r1, [sp, 0xC]
- str r1, [sp, 0x4]
- movs r1, 0xA2
- lsls r1, 2
- adds r0, r2, r1
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0
- bl box_print
- ldr r2, [r7]
- ldrb r1, [r2, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- beq _08145F38
- lsls r0, r1, 30
- lsrs r0, 30
- adds r0, r4
- ldrb r3, [r0]
- adds r3, 0x10
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r2, r1
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- lsrs r1, 28
- lsls r0, r1, 1
- adds r0, r1
- add r0, r10
- str r0, [sp]
- ldr r0, [sp, 0xC]
- str r0, [sp, 0x4]
- ldr r1, _08145F34 @ =0x000002b1
- adds r0, r2, r1
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0
- bl box_print
- mov r9, r6
- b _08146038
- .align 2, 0
-_08145F2C: .4byte gUnknown_8467070
-_08145F30: .4byte gUnknown_8467068
-_08145F34: .4byte 0x000002b1
-_08145F38:
- movs r2, 0
- mov r8, r2
- lsls r0, r1, 30
- lsrs r0, 30
- adds r0, r4
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
- movs r0, 0x3
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, [r7]
- ldr r1, _08146054 @ =0x00000175
- adds r0, r1
- mov r9, r6
- ldr r1, [sp, 0xC]
- ldrb r0, [r0]
- cmp r1, r0
- bge _08146038
- str r5, [sp, 0x10]
- lsls r0, r4, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- mov r10, r2
-_08145F6E:
- mov r0, r8
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r3, [r7]
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r3, r1
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- lsrs r1, 28
- lsls r0, r1, 1
- adds r0, r1
- ldr r1, _08146058 @ =gUnknown_8467068
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r1, [sp, 0xC]
- lsls r0, r1, 24
- asrs r6, r0, 24
- lsls r0, r6, 1
- adds r0, r6
- lsls r5, r0, 4
- movs r0, 0xB7
- lsls r0, 2
- adds r4, r5, r0
- adds r3, r4
- adds r3, 0x1
- str r3, [sp, 0x8]
- ldr r0, [sp, 0x10]
- movs r1, 0x3
- ldr r3, [sp, 0x14]
- bl box_print
- ldr r1, [r7]
- adds r0, r1, r5
- ldr r2, _0814605C @ =0x00000306
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08146022
- adds r1, r4
- adds r1, 0x1
- movs r0, 0x3
- mov r2, r10
- bl GetStringWidth
- add r8, r0
- mov r0, r8
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r3, [r7]
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r3, r1
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- lsrs r1, 28
- lsls r0, r1, 1
- adds r0, r1
- ldr r1, _08146058 @ =gUnknown_8467068
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r3, r4
- adds r3, 0x2A
- str r3, [sp, 0x8]
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- ldr r3, [sp, 0x14]
- bl box_print
- ldr r1, [r7]
- adds r1, r4
- adds r1, 0x2A
- movs r0, 0x3
- mov r2, r10
- bl GetStringWidth
- ldr r1, [r7]
- adds r1, r5
- movs r2, 0xB7
- lsls r2, 2
- adds r1, r2
- ldrb r1, [r1]
- adds r0, r1
- add r8, r0
-_08146022:
- adds r1, r6, 0x1
- lsls r1, 24
- lsrs r0, r1, 24
- str r0, [sp, 0xC]
- asrs r1, 24
- ldr r0, [r7]
- ldr r2, _08146054 @ =0x00000175
- adds r0, r2
- ldrb r0, [r0]
- cmp r1, r0
- blt _08145F6E
-_08146038:
- mov r1, r9
- lsrs r0, r1, 24
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08146054: .4byte 0x00000175
-_08146058: .4byte gUnknown_8467068
-_0814605C: .4byte 0x00000306
- thumb_func_end sub_8145D18
-
- thumb_func_start sub_8146060
-sub_8146060: @ 8146060
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r7, 0
- ldr r4, _081461BC @ =gUnknown_203F3C8
- ldr r0, [r4]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- ldr r0, [r4]
- movs r2, 0xA9
- lsls r2, 1
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0
- beq _081460C8
- bl sub_8096FD4
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081461C0 @ =SpriteCallbackDummy
- str r7, [sp]
- str r7, [sp, 0x4]
- movs r2, 0xDC
- movs r3, 0x14
- bl sub_8096ECC
- ldr r1, [r4]
- movs r3, 0xBE
- lsls r3, 1
- adds r1, r3
- strb r0, [r1]
- ldr r2, _081461C4 @ =gSprites
- ldr r0, [r4]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x5]
-_081460C8:
- ldr r1, [r4]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- beq _081461AC
- ldrb r1, [r1, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081461AC
- ldr r0, _081461C8 @ =gUnknown_8467F58
- bl sub_800F034
- ldr r0, [r4]
- movs r1, 0xB8
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- lsrs r0, 4
- lsls r0, 3
- ldr r1, _081461CC @ =gUnknown_8467F60
- adds r0, r1
- bl LoadSpritePalette
- ldr r0, [r4]
- ldrb r0, [r0, 0x9]
- cmp r7, r0
- bcs _081461AC
- adds r6, r4, 0
- ldr r2, _081461D0 @ =0x0000017d
- mov r10, r2
- movs r3, 0
- mov r9, r3
- movs r0, 0xFF
- mov r8, r0
-_0814610E:
- ldr r1, [r6]
- lsls r4, r7, 1
- add r1, r10
- adds r1, r4
- ldrb r0, [r1]
- mov r2, r8
- orrs r0, r2
- strb r0, [r1]
- ldr r1, [r6]
- movs r3, 0xBF
- lsls r3, 1
- adds r1, r3
- adds r1, r4
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- lsls r1, r7, 5
- movs r0, 0xD8
- subs r5, r0, r1
- ldr r0, _081461D4 @ =gUnknown_8467FA0
- adds r1, r5, 0
- movs r2, 0x90
- movs r3, 0x8
- bl CreateSprite
- ldr r1, [r6]
- add r1, r10
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- movs r1, 0xAA
- lsls r1, 1
- adds r0, r1
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0
- beq _0814619E
- bl sub_8096FD4
- lsls r0, 16
- lsrs r0, 16
- mov r2, r9
- str r2, [sp]
- str r2, [sp, 0x4]
- ldr r1, _081461C0 @ =SpriteCallbackDummy
- adds r2, r5, 0
- movs r3, 0x88
- bl sub_8096ECC
- ldr r1, [r6]
- movs r3, 0xBF
- lsls r3, 1
- adds r1, r3
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r3
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081461C4 @ =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r2, r1
- movs r1, 0x8
- orrs r2, r1
- strb r2, [r0, 0x5]
-_0814619E:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, [r6]
- ldrb r0, [r0, 0x9]
- cmp r7, r0
- bcc _0814610E
-_081461AC:
- 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
-_081461BC: .4byte gUnknown_203F3C8
-_081461C0: .4byte SpriteCallbackDummy
-_081461C4: .4byte gSprites
-_081461C8: .4byte gUnknown_8467F58
-_081461CC: .4byte gUnknown_8467F60
-_081461D0: .4byte 0x0000017d
-_081461D4: .4byte gUnknown_8467FA0
- thumb_func_end sub_8146060
-
- thumb_func_start sub_81461D8
-sub_81461D8: @ 81461D8
- push {r4-r7,lr}
- movs r6, 0
- ldr r4, _0814627C @ =gUnknown_203F3C8
- ldr r0, [r4]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081461FC
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08146280 @ =gSprites
- adds r0, r1
- bl sub_8097070
-_081461FC:
- ldr r0, [r4]
- ldrb r2, [r0, 0x9]
- cmp r2, 0
- beq _08146274
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _08146274
- cmp r6, r2
- bcs _08146264
- adds r7, r4, 0
-_08146214:
- ldr r0, [r7]
- lsls r4, r6, 1
- ldr r1, _08146284 @ =0x0000017d
- adds r0, r1
- adds r1, r0, r4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08146256
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _08146280 @ =gSprites
- adds r0, r5
- bl DestroySprite
- ldr r1, [r7]
- ldr r2, _08146284 @ =0x0000017d
- adds r0, r1, r2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08146256
- adds r2, 0x1
- adds r0, r1, r2
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl sub_8097070
-_08146256:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, [r7]
- ldrb r0, [r0, 0x9]
- cmp r6, r0
- bcc _08146214
-_08146264:
- movs r4, 0x80
- lsls r4, 8
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
-_08146274:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814627C: .4byte gUnknown_203F3C8
-_08146280: .4byte gSprites
-_08146284: .4byte 0x0000017d
- thumb_func_end sub_81461D8
-
- thumb_func_start sub_8146288
-sub_8146288: @ 8146288
- push {r4-r6,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _0814629E
- ldr r5, _081462A4 @ =gUnknown_203F3CC
- ldr r0, _081462A8 @ =0x000013a4
- bl AllocZeroed
- str r0, [r5]
- cmp r0, 0
- bne _081462AC
-_0814629E:
- movs r0, 0
- b _081462DC
- .align 2, 0
-_081462A4: .4byte gUnknown_203F3CC
-_081462A8: .4byte 0x000013a4
-_081462AC:
- movs r6, 0xDE
- lsls r6, 1
- adds r1, r4, 0
- adds r2, r6, 0
- bl memcpy
- ldr r1, [r5]
- ldrb r0, [r1, 0x3]
- cmp r0, 0x7
- bls _081462C4
- movs r0, 0
- strb r0, [r1, 0x3]
-_081462C4:
- ldr r2, [r5]
- adds r3, r2, r6
- ldrb r0, [r2, 0x3]
- lsls r0, 4
- ldr r1, _081462E4 @ =gUnknown_8468720
- adds r0, r1
- str r0, [r3]
- ldr r0, _081462E8 @ =0x000001c1
- adds r1, r2, r0
- movs r0, 0xFF
- strb r0, [r1]
- movs r0, 0x1
-_081462DC:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081462E4: .4byte gUnknown_8468720
-_081462E8: .4byte 0x000001c1
- thumb_func_end sub_8146288
-
- thumb_func_start sub_81462EC
-sub_81462EC: @ 81462EC
- push {r4,lr}
- ldr r4, _08146310 @ =gUnknown_203F3CC
- ldr r0, [r4]
- cmp r0, 0
- beq _08146308
- ldr r2, _08146314 @ =0x000013a4
- movs r1, 0
- bl memset
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_08146308:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08146310: .4byte gUnknown_203F3CC
-_08146314: .4byte 0x000013a4
- thumb_func_end sub_81462EC
-
- thumb_func_start sub_8146318
-sub_8146318: @ 8146318
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r5, _08146334 @ =gUnknown_203F3CC
- ldr r0, [r5]
- cmp r0, 0
- bne _08146338
- movs r0, 0x1
- negs r0, r0
- b _081465EE
- .align 2, 0
-_08146334: .4byte gUnknown_203F3CC
-_08146338:
- movs r4, 0xE0
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- lsrs r0, 1
- cmp r0, 0x6
- bls _08146348
- b _081465B8
-_08146348:
- lsls r0, 2
- ldr r1, _08146354 @ =_08146358
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08146354: .4byte _08146358
- .align 2, 0
-_08146358:
- .4byte _08146374
- .4byte _08146386
- .4byte _081463EC
- .4byte _08146494
- .4byte _08146544
- .4byte _0814654A
- .4byte _0814655C
-_08146374:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _081465D2
-_08146386:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _08146392
- b _081465EC
-_08146392:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- ldr r1, _081463E8 @ =0x00001a98
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x1F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x1B
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- b _081465D2
- .align 2, 0
-_081463E8: .4byte 0x00001a98
-_081463EC:
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r5, _0814648C @ =gUnknown_203F3CC
- ldr r0, [r5]
- movs r1, 0xDE
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x8
- bl decompress_and_copy_tile_data_to_vram
- ldr r4, _08146490 @ =gUnknown_8468040
- adds r0, r4, 0
- bl AddWindow
- ldr r1, [r5]
- movs r2, 0xE4
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
- adds r4, 0x8
- adds r0, r4, 0
- bl AddWindow
- ldr r1, [r5]
- movs r3, 0xE5
- lsls r3, 1
- adds r1, r3
- strh r0, [r1]
- b _081465D2
- .align 2, 0
-_0814648C: .4byte gUnknown_203F3CC
-_08146490: .4byte gUnknown_8468040
-_08146494:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- beq _081464A2
- b _081465EC
-_081464A2:
- ldr r2, _0814653C @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _08146540 @ =gUnknown_203F3CC
- mov r8, r0
- ldr r0, [r0]
- movs r4, 0xDE
- lsls r4, 1
- adds r0, r4
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- mov r2, r8
- ldr r1, [r2]
- adds r4, r1, r4
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- movs r6, 0xE9
- lsls r6, 2
- adds r1, r6
- bl LZ77UnCompWram
- mov r3, r8
- ldr r1, [r3]
- adds r1, r6
- movs r4, 0x1E
- str r4, [sp]
- movs r5, 0x3
- str r5, [sp, 0x4]
- str r7, [sp, 0x8]
- str r7, [sp, 0xC]
- str r4, [sp, 0x10]
- str r5, [sp, 0x14]
- movs r0, 0x1
- mov r10, r0
- str r0, [sp, 0x18]
- movs r2, 0x8
- mov r9, r2
- str r2, [sp, 0x1C]
- str r7, [sp, 0x20]
- movs r2, 0
- movs r3, 0
- bl CopyRectToBgTilemapBufferRect
- mov r3, r8
- ldr r1, [r3]
- adds r1, r6
- str r4, [sp]
- movs r0, 0x17
- str r0, [sp, 0x4]
- str r7, [sp, 0x8]
- str r5, [sp, 0xC]
- str r4, [sp, 0x10]
- str r0, [sp, 0x14]
- mov r0, r10
- str r0, [sp, 0x18]
- mov r2, r9
- str r2, [sp, 0x1C]
- str r7, [sp, 0x20]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x3
- bl CopyRectToBgTilemapBufferRect
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _081465D2
- .align 2, 0
-_0814653C: .4byte gPaletteFade
-_08146540: .4byte gUnknown_203F3CC
-_08146544:
- bl sub_8146980
- b _081465D2
-_0814654A:
- bl sub_8146A30
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- b _081465D2
-_0814655C:
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- ldr r2, _081465AC @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r4, _081465B0 @ =gUnknown_203F3CC
- ldr r1, [r4]
- movs r3, 0xE5
- lsls r3, 2
- adds r0, r1, r3
- movs r2, 0xE3
- lsls r2, 1
- adds r1, r2
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- ldr r3, _081465B4 @ =0x000001c1
- adds r2, r1, r3
- movs r1, 0
- strb r0, [r2]
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl UpdatePaletteFade
- b _081465D2
- .align 2, 0
-_081465AC: .4byte gPaletteFade
-_081465B0: .4byte gUnknown_203F3CC
-_081465B4: .4byte 0x000001c1
-_081465B8:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _081465EC
- ldr r0, [r5]
- adds r0, r4
- ldrb r2, [r0]
- movs r1, 0x1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0x1
- b _081465EE
-_081465D2:
- ldr r0, _08146600 @ =gUnknown_203F3CC
- ldr r2, [r0]
- movs r0, 0xE0
- lsls r0, 1
- adds r2, r0
- ldrb r3, [r2]
- lsrs r1, r3, 1
- adds r1, 0x1
- lsls r1, 1
- movs r0, 0x1
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_081465EC:
- movs r0, 0
-_081465EE:
- 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
-_08146600: .4byte gUnknown_203F3CC
- thumb_func_end sub_8146318
-
- thumb_func_start sub_8146604
-sub_8146604: @ 8146604
- push {r4,r5,lr}
- sub sp, 0x8
- adds r2, r0, 0
- ldr r5, _08146618 @ =gUnknown_203F3CC
- ldr r0, [r5]
- cmp r0, 0
- bne _0814661C
- movs r0, 0x1
- negs r0, r0
- b _081467E0
- .align 2, 0
-_08146618: .4byte gUnknown_203F3CC
-_0814661C:
- movs r4, 0xE0
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- lsrs r0, 1
- cmp r0, 0x6
- bls _0814662C
- b _081467AA
-_0814662C:
- lsls r0, 2
- ldr r1, _08146638 @ =_0814663C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08146638: .4byte _0814663C
- .align 2, 0
-_0814663C:
- .4byte _08146658
- .4byte _0814666A
- .4byte _081466AC
- .4byte _0814670C
- .4byte _0814673C
- .4byte _08146778
- .4byte _08146788
-_08146658:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _081467C4
-_0814666A:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _08146676
- b _081467DE
-_08146676:
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- b _081467C4
-_081466AC:
- movs r4, 0x1E
- str r4, [sp]
- movs r5, 0x14
- str r5, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- movs r5, 0x18
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _081467C4
-_0814670C:
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- ldr r4, _08146738 @ =gUnknown_203F3CC
- ldr r0, [r4]
- movs r1, 0xE5
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r4]
- movs r2, 0xE4
- lsls r2, 1
- adds r0, r2
- ldrb r0, [r0]
- bl RemoveWindow
- b _081467C4
- .align 2, 0
-_08146738: .4byte gUnknown_203F3CC
-_0814673C:
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r4, _08146770 @ =gUnknown_203F3CC
- ldr r0, [r4]
- ldr r2, _08146774 @ =0x000001c1
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081467C4
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r2, _08146774 @ =0x000001c1
- adds r1, r0, r2
- movs r0, 0xFF
- strb r0, [r1]
- b _081467C4
- .align 2, 0
-_08146770: .4byte gUnknown_203F3CC
-_08146774: .4byte 0x000001c1
-_08146778:
- ldr r0, _08146784 @ =gUnknown_203F3B8
- ldrb r0, [r0]
- adds r1, r2, 0
- bl sub_8142344
- b _081467C4
- .align 2, 0
-_08146784: .4byte gUnknown_203F3B8
-_08146788:
- bl sub_8142420
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _081467C4
-_081467AA:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _081467DE
- ldr r0, [r5]
- adds r0, r4
- ldrb r2, [r0]
- movs r1, 0x1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0x1
- b _081467E0
-_081467C4:
- ldr r0, _081467E8 @ =gUnknown_203F3CC
- ldr r2, [r0]
- movs r0, 0xE0
- lsls r0, 1
- adds r2, r0
- ldrb r3, [r2]
- lsrs r1, r3, 1
- adds r1, 0x1
- lsls r1, 1
- movs r0, 0x1
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_081467DE:
- movs r0, 0
-_081467E0:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081467E8: .4byte gUnknown_203F3CC
- thumb_func_end sub_8146604
-
- thumb_func_start sub_81467EC
-sub_81467EC: @ 81467EC
- push {r4,r5,lr}
- ldr r4, _0814682C @ =gUnknown_203F3CC
- ldr r2, [r4]
- movs r5, 0xE0
- lsls r5, 1
- adds r0, r2, r5
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08146826
- ldr r0, _08146830 @ =0x000001c1
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08146826
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r2, _08146830 @ =0x000001c1
- adds r1, r0, r2
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
-_08146826:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814682C: .4byte gUnknown_203F3CC
-_08146830: .4byte 0x000001c1
- thumb_func_end sub_81467EC
-
- thumb_func_start sub_8146834
-sub_8146834: @ 8146834
- push {r4,lr}
- ldr r4, _0814687C @ =gUnknown_203F3CC
- ldr r2, [r4]
- movs r1, 0xE0
- lsls r1, 1
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08146874
- movs r3, 0xE5
- lsls r3, 2
- adds r0, r2, r3
- movs r3, 0xE3
- lsls r3, 1
- adds r1, r2, r3
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- ldr r2, _08146880 @ =0x000001c1
- adds r1, r2
- strb r0, [r1]
- ldr r1, [r4]
- movs r3, 0xE0
- lsls r3, 1
- adds r1, r3
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_08146874:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814687C: .4byte gUnknown_203F3CC
-_08146880: .4byte 0x000001c1
- thumb_func_end sub_8146834
-
- thumb_func_start sub_8146884
-sub_8146884: @ 8146884
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r3, r4, 0
- ldr r2, _081468B0 @ =gUnknown_203F3CC
- ldr r0, [r2]
- mov r12, r0
- movs r0, 0xE1
- lsls r0, 1
- add r0, r12
- ldrb r1, [r0]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- beq _081468B4
- bl sub_8146B58
-_081468AA:
- movs r0, 0xFF
- b _0814697A
- .align 2, 0
-_081468B0: .4byte gUnknown_203F3CC
-_081468B4:
- cmp r4, 0x2
- beq _081468D0
- cmp r4, 0x2
- bgt _081468C2
- cmp r4, 0x1
- beq _081468CC
- b _081468AA
-_081468C2:
- cmp r3, 0x40
- beq _081468D4
- cmp r3, 0x80
- beq _08146904
- b _081468AA
-_081468CC:
- movs r0, 0
- b _0814697A
-_081468D0:
- movs r0, 0x1
- b _0814697A
-_081468D4:
- movs r0, 0xE3
- lsls r0, 1
- add r0, r12
- ldrh r0, [r0]
- cmp r0, 0
- beq _081468AA
- movs r0, 0xE0
- lsls r0, 1
- add r0, r12
- ldrb r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081468AA
- ldr r2, _08146900 @ =0x000001c3
- add r2, r12
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- b _08146932
- .align 2, 0
-_08146900: .4byte 0x000001c3
-_08146904:
- movs r0, 0xE3
- lsls r0, 1
- add r0, r12
- movs r1, 0xE2
- lsls r1, 1
- add r1, r12
- ldrh r0, [r0]
- ldrh r1, [r1]
- cmp r0, r1
- beq _081468AA
- movs r0, 0xE0
- lsls r0, 1
- add r0, r12
- ldrb r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081468AA
- ldr r2, _08146974 @ =0x000001c3
- add r2, r12
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
-_08146932:
- strb r0, [r2]
- ldr r2, [r6]
- movs r4, 0xE1
- lsls r4, 1
- adds r2, r4
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r3, [r6]
- adds r3, r4
- ldrb r1, [r3]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldr r1, [r6]
- adds r4, 0x1
- adds r1, r4
- ldrb r3, [r1]
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _08146978
- movs r0, 0x3
- b _0814697A
- .align 2, 0
-_08146974: .4byte 0x000001c3
-_08146978:
- movs r0, 0x2
-_0814697A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8146884
-
- thumb_func_start sub_8146980
-sub_8146980: @ 8146980
- push {r4-r6,lr}
- movs r5, 0
- ldr r4, _08146A20 @ =gUnknown_203F3CC
- ldr r1, [r4]
- movs r2, 0xE7
- lsls r2, 1
- adds r0, r1, r2
- adds r1, 0x4
- movs r2, 0x28
- bl memcpy
- ldr r0, [r4]
- movs r3, 0xFB
- lsls r3, 1
- adds r1, r0, r3
- movs r0, 0xFF
- strb r0, [r1]
- adds r6, r4, 0
-_081469A4:
- ldr r2, [r6]
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r4, r1, r5
- adds r0, r4, r2
- ldr r3, _08146A24 @ =0x000001f7
- adds r0, r3
- adds r1, r2
- adds r1, 0x2C
- movs r2, 0x28
- bl memcpy
- ldr r0, [r6]
- ldr r1, _08146A28 @ =0x0000021f
- adds r0, r1
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
- cmp r5, 0x7
- bls _081469E8
- ldr r1, [r6]
- ldr r2, _08146A24 @ =0x000001f7
- adds r0, r1, r2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _081469E8
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r3
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081469E8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _081469A4
- ldr r2, _08146A20 @ =gUnknown_203F3CC
- ldr r1, [r2]
- movs r4, 0xE5
- lsls r4, 2
- adds r1, r4
- ldr r0, _08146A2C @ =gUnknown_8468050
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, [r2]
- movs r5, 0xE2
- lsls r5, 1
- adds r0, r2, r5
- ldrh r1, [r0]
- movs r3, 0xE7
- lsls r3, 2
- adds r0, r2, r3
- strh r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08146A20: .4byte gUnknown_203F3CC
-_08146A24: .4byte 0x000001f7
-_08146A28: .4byte 0x0000021f
-_08146A2C: .4byte gUnknown_8468050
- thumb_func_end sub_8146980
-
- thumb_func_start sub_8146A30
-sub_8146A30: @ 8146A30
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- movs r5, 0
- ldr r6, _08146B4C @ =gUnknown_203F3CC
- ldr r0, [r6]
- movs r7, 0xE4
- lsls r7, 1
- adds r0, r7
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r6]
- movs r4, 0xE5
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r6]
- adds r0, r7
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r4, [r6]
- movs r0, 0xE7
- lsls r0, 1
- mov r8, r0
- add r4, r8
- movs r0, 0x3
- movs r1, 0x2
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x3
- adds r1, r4, 0
- bl GetStringWidth
- movs r1, 0xE0
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- cmp r1, 0
- bge _08146AA0
- movs r1, 0
-_08146AA0:
- ldr r4, [r6]
- adds r0, r4, r7
- ldrb r0, [r0]
- lsls r2, r1, 24
- lsrs r2, 24
- movs r3, 0xDE
- lsls r3, 1
- adds r1, r4, r3
- ldr r1, [r1]
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- lsls r3, r1, 1
- adds r3, r1
- ldr r1, _08146B50 @ =gUnknown_8468038
- adds r3, r1
- str r3, [sp]
- str r5, [sp, 0x4]
- add r4, r8
- str r4, [sp, 0x8]
- movs r1, 0x3
- movs r3, 0x6
- bl box_print
-_08146AD0:
- ldr r6, _08146B4C @ =gUnknown_203F3CC
- ldr r4, [r6]
- movs r1, 0xE5
- lsls r1, 1
- adds r0, r4, r1
- ldrb r0, [r0]
- lsls r3, r5, 4
- adds r3, 0x2
- lsls r3, 24
- lsrs r3, 24
- movs r2, 0xDE
- lsls r2, 1
- adds r1, r4, r2
- ldr r1, [r1]
- ldrb r1, [r1]
- lsrs r1, 4
- lsls r2, r1, 1
- adds r2, r1
- ldr r1, _08146B50 @ =gUnknown_8468038
- adds r2, r1
- str r2, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r5
- ldr r2, _08146B54 @ =0x000001f7
- adds r1, r2
- adds r4, r1
- str r4, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- bl box_print
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _08146AD0
- ldr r0, [r6]
- movs r3, 0xE4
- lsls r3, 1
- adds r0, r3
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r6]
- movs r1, 0xE5
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08146B4C: .4byte gUnknown_203F3CC
-_08146B50: .4byte gUnknown_8468038
-_08146B54: .4byte 0x000001f7
- thumb_func_end sub_8146A30
-
- thumb_func_start sub_8146B58
-sub_8146B58: @ 8146B58
- push {r4-r6,lr}
- ldr r0, _08146B90 @ =gUnknown_203F3CC
- ldr r1, [r0]
- movs r2, 0xE1
- lsls r2, 1
- adds r0, r1, r2
- ldrb r0, [r0]
- lsrs r4, r0, 1
- lsls r4, 8
- ldr r6, _08146B94 @ =0x000001c3
- adds r0, r1, r6
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08146B98
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x1
- bl ChangeBgY
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x1
- bl ChangeBgY
- b _08146BAC
- .align 2, 0
-_08146B90: .4byte gUnknown_203F3CC
-_08146B94: .4byte 0x000001c3
-_08146B98:
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x2
- bl ChangeBgY
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x2
- bl ChangeBgY
-_08146BAC:
- ldr r3, _08146BF0 @ =gUnknown_203F3CC
- ldr r0, [r3]
- ldr r2, _08146BF4 @ =0x000001c3
- adds r5, r0, r2
- ldrb r4, [r5]
- lsrs r1, r4, 1
- movs r6, 0xE1
- lsls r6, 1
- adds r0, r6
- ldrb r0, [r0]
- lsrs r0, 1
- adds r1, r0
- lsls r1, 1
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r4
- orrs r0, r1
- strb r0, [r5]
- ldr r1, [r3]
- adds r2, r1, r2
- ldrb r2, [r2]
- lsrs r0, r2, 1
- cmp r0, 0xF
- bls _08146C24
- adds r0, r6, 0
- ands r0, r2
- cmp r0, 0
- beq _08146BF8
- movs r0, 0xE3
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- b _08146C02
- .align 2, 0
-_08146BF0: .4byte gUnknown_203F3CC
-_08146BF4: .4byte 0x000001c3
-_08146BF8:
- movs r2, 0xE3
- lsls r2, 1
- adds r1, r2
- ldrh r0, [r1]
- subs r0, 0x1
-_08146C02:
- strh r0, [r1]
- ldr r0, [r3]
- movs r6, 0xE1
- lsls r6, 1
- adds r2, r0, r6
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- ldr r1, _08146C2C @ =0x000001c3
- adds r2, r0, r1
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- strb r0, [r2]
-_08146C24:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08146C2C: .4byte 0x000001c3
- thumb_func_end sub_8146B58
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mevent_server.s b/asm/mevent_server.s
deleted file mode 100644
index 5772b19f4..000000000
--- a/asm/mevent_server.s
+++ /dev/null
@@ -1,1841 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8144844
-sub_8144844: @ 8144844
- push {lr}
- ldr r1, [r0, 0x20]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_8144844
-
- thumb_func_start sub_8144850
-sub_8144850: @ 8144850
- push {lr}
- ldr r1, [r0, 0x24]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_8144850
-
- thumb_func_start sub_814485C
-sub_814485C: @ 814485C
- movs r3, 0
- strb r1, [r0, 0x4]
- strb r2, [r0, 0x5]
- str r3, [r0]
- strh r3, [r0, 0x12]
- strh r3, [r0, 0x14]
- strh r3, [r0, 0x10]
- strh r3, [r0, 0xA]
- strh r3, [r0, 0xC]
- strh r3, [r0, 0x8]
- str r3, [r0, 0x1C]
- str r3, [r0, 0x18]
- ldr r1, _08144880 @ =sub_81449E0
- str r1, [r0, 0x24]
- ldr r1, _08144884 @ =sub_814490C
- str r1, [r0, 0x20]
- bx lr
- .align 2, 0
-_08144880: .4byte sub_81449E0
-_08144884: .4byte sub_814490C
- thumb_func_end sub_814485C
-
- thumb_func_start sub_8144888
-sub_8144888: @ 8144888
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- str r0, [r4]
- strh r1, [r4, 0xE]
- strh r0, [r4, 0x10]
- strh r0, [r4, 0x12]
- cmp r3, 0
- beq _0814489E
- strh r3, [r4, 0x14]
- b _081448A4
-_0814489E:
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r4, 0x14]
-_081448A4:
- str r2, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144888
-
- thumb_func_start sub_81448AC
-sub_81448AC: @ 81448AC
- movs r3, 0
- str r3, [r0]
- strh r1, [r0, 0x6]
- strh r3, [r0, 0x8]
- strh r3, [r0, 0xA]
- strh r3, [r0, 0xC]
- str r2, [r0, 0x18]
- bx lr
- thumb_func_end sub_81448AC
-
- thumb_func_start sub_81448BC
-sub_81448BC: @ 81448BC
- push {lr}
- adds r3, r0, 0
- adds r0, r1, 0
- lsls r3, 8
- ldr r1, _081448D4 @ =gUnknown_2022118
- adds r3, r1
- adds r1, r3, 0
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_081448D4: .4byte gUnknown_2022118
- thumb_func_end sub_81448BC
-
- thumb_func_start sub_81448D8
-sub_81448D8: @ 81448D8
- push {r4,lr}
- adds r4, r0, 0
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081448F2
- movs r0, 0
- b _081448F4
-_081448F2:
- movs r0, 0x1
-_081448F4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81448D8
-
- thumb_func_start sub_81448FC
-sub_81448FC: @ 81448FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl ResetBlockReceivedFlag
- pop {r0}
- bx r0
- thumb_func_end sub_81448FC
-
- thumb_func_start sub_814490C
-sub_814490C: @ 814490C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r6, [r5]
- cmp r6, 0x1
- beq _08144970
- cmp r6, 0x1
- bgt _08144922
- cmp r6, 0
- beq _08144928
- b _081449D6
-_08144922:
- cmp r6, 0x2
- beq _081449BC
- b _081449D6
-_08144928:
- ldrb r0, [r5, 0x5]
- bl sub_81448D8
- cmp r0, 0
- beq _081449D6
- ldrb r0, [r5, 0x5]
- mov r4, sp
- mov r1, sp
- movs r2, 0x8
- bl sub_81448BC
- ldrh r1, [r4, 0x4]
- strh r1, [r5, 0xC]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0xA]
- lsls r1, 16
- movs r0, 0x80
- lsls r0, 19
- cmp r1, r0
- bls _08144956
-_08144950:
- bl sub_80FA190
- b _081449D6
-_08144956:
- mov r1, sp
- ldrh r0, [r5, 0x6]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08144950
- strh r6, [r5, 0x8]
- ldrb r0, [r5, 0x5]
- bl sub_81448FC
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- b _081449D6
-_08144970:
- ldrb r0, [r5, 0x5]
- bl sub_81448D8
- cmp r0, 0
- beq _081449D6
- ldrh r0, [r5, 0x8]
- lsls r1, r0, 6
- subs r1, r0
- lsls r3, r1, 2
- ldrh r0, [r5, 0xC]
- subs r2, r0, r3
- cmp r2, 0xFC
- bhi _081449A2
- ldrb r0, [r5, 0x5]
- ldr r1, [r5, 0x18]
- adds r1, r3
- bl sub_81448BC
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- b _081449B4
-_081449A2:
- ldrb r0, [r5, 0x5]
- ldr r1, [r5, 0x18]
- adds r1, r3
- movs r2, 0xFC
- bl sub_81448BC
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
-_081449B4:
- ldrb r0, [r5, 0x5]
- bl sub_81448FC
- b _081449D6
-_081449BC:
- ldr r0, [r5, 0x18]
- ldrh r1, [r5, 0xC]
- bl CalcCRC16WithTable
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r5, 0xA]
- cmp r0, r1
- bne _08144950
- movs r0, 0
- str r0, [r5]
- movs r0, 0x1
- b _081449D8
-_081449D6:
- movs r0, 0
-_081449D8:
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_814490C
-
- thumb_func_start sub_81449E0
-sub_81449E0: @ 81449E0
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r5, [r4]
- cmp r5, 0x1
- beq _08144A4C
- cmp r5, 0x1
- bgt _081449F6
- cmp r5, 0
- beq _08144A00
- b _08144AE2
-_081449F6:
- cmp r5, 0x2
- beq _08144AA0
- cmp r5, 0x3
- beq _08144ACA
- b _08144AE2
-_08144A00:
- bl sub_800A4BC
- lsls r0, 24
- cmp r0, 0
- beq _08144AE2
- ldrh r1, [r4, 0xE]
- ldr r2, _08144A44 @ =0xffff0000
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldrh r1, [r4, 0x14]
- ldr r0, [sp, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x4]
- ldr r0, [r4, 0x1C]
- bl CalcCRC16WithTable
- lsls r0, 16
- ldr r2, _08144A48 @ =0x0000ffff
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- lsrs r1, 16
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x10]
- movs r0, 0
- mov r1, sp
- movs r2, 0x8
- bl SendBlock
- b _08144AC2
- .align 2, 0
-_08144A44: .4byte 0xffff0000
-_08144A48: .4byte 0x0000ffff
-_08144A4C:
- bl sub_800A4BC
- lsls r0, 24
- cmp r0, 0
- beq _08144AE2
- ldrb r0, [r4, 0x4]
- bl sub_81448D8
- cmp r0, 0
- beq _08144AE2
- ldrb r0, [r4, 0x4]
- bl sub_81448FC
- ldrh r1, [r4, 0x10]
- lsls r0, r1, 6
- subs r0, r1
- lsls r3, r0, 2
- ldrh r0, [r4, 0x14]
- subs r0, r3
- cmp r0, 0xFC
- bhi _08144A8C
- ldr r1, [r4, 0x1C]
- adds r1, r3
- lsls r2, r0, 16
- lsrs r2, 16
- movs r0, 0
- bl SendBlock
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- b _08144AC2
-_08144A8C:
- ldr r1, [r4, 0x1C]
- adds r1, r3
- movs r0, 0
- movs r2, 0xFC
- bl SendBlock
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- b _08144AE2
-_08144AA0:
- bl sub_800A4BC
- lsls r0, 24
- cmp r0, 0
- beq _08144AE2
- ldr r0, [r4, 0x1C]
- ldrh r1, [r4, 0x14]
- bl CalcCRC16WithTable
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0x12]
- cmp r0, r1
- beq _08144AC2
- bl sub_80FA190
- b _08144AE2
-_08144AC2:
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- b _08144AE2
-_08144ACA:
- ldrb r0, [r4, 0x4]
- bl sub_81448D8
- cmp r0, 0
- beq _08144AE2
- ldrb r0, [r4, 0x4]
- bl sub_81448FC
- movs r0, 0
- str r0, [r4]
- movs r0, 0x1
- b _08144AE4
-_08144AE2:
- movs r0, 0
-_08144AE4:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81449E0
-
- thumb_func_start sub_8144AEC
-sub_8144AEC: @ 8144AEC
- push {r4,lr}
- ldr r4, _08144B08 @ =gUnknown_203F3C0
- movs r0, 0x4C
- bl AllocZeroed
- str r0, [r4]
- movs r1, 0x1
- movs r2, 0
- bl mevent_srv_ish_init
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08144B08: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144AEC
-
- thumb_func_start sub_8144B0C
-sub_8144B0C: @ 8144B0C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, _08144B1C @ =gUnknown_203F3C0
- ldr r0, [r4]
- cmp r0, 0
- bne _08144B20
- movs r0, 0x6
- b _08144B40
- .align 2, 0
-_08144B1C: .4byte gUnknown_203F3C0
-_08144B20:
- bl mevent_srv_ish_exec
- adds r5, r0, 0
- cmp r5, 0x6
- bne _08144B3E
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- strh r1, [r6]
- bl sub_8144BC0
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_08144B3E:
- adds r0, r5, 0
-_08144B40:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144B0C
-
- thumb_func_start sub_8144B48
-sub_8144B48: @ 8144B48
- ldr r0, _08144B54 @ =gUnknown_203F3C0
- ldr r1, [r0]
- ldr r0, [r1, 0xC]
- adds r0, 0x1
- str r0, [r1, 0xC]
- bx lr
- .align 2, 0
-_08144B54: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144B48
-
- thumb_func_start sub_8144B58
-sub_8144B58: @ 8144B58
- ldr r0, _08144B60 @ =gUnknown_203F3C0
- ldr r0, [r0]
- ldr r0, [r0, 0x20]
- bx lr
- .align 2, 0
-_08144B60: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144B58
-
- thumb_func_start sub_8144B64
-sub_8144B64: @ 8144B64
- ldr r1, _08144B6C @ =gUnknown_203F3C0
- ldr r1, [r1]
- str r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_08144B6C: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144B64
-
- thumb_func_start mevent_srv_ish_init
-mevent_srv_ish_init: @ 8144B70
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- movs r0, 0
- str r0, [r4]
- str r0, [r4, 0x8]
- str r0, [r4, 0xC]
- movs r5, 0x80
- lsls r5, 3
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x14]
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x18]
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x1C]
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4, 0x20]
- adds r4, 0x24
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, r8
- bl sub_814485C
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_ish_init
-
- thumb_func_start sub_8144BC0
-sub_8144BC0: @ 8144BC0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x14]
- bl Free
- ldr r0, [r4, 0x18]
- bl Free
- ldr r0, [r4, 0x1C]
- bl Free
- ldr r0, [r4, 0x20]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144BC0
-
- thumb_func_start sub_8144BE4
-sub_8144BE4: @ 8144BE4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- ldr r1, [r4, 0x18]
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r0, 0
- str r0, [r4, 0x10]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144BE4
-
- thumb_func_start sub_8144C00
-sub_8144C00: @ 8144C00
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r0, 0
- str r0, [sp]
- ldr r1, [r4, 0x14]
- ldr r2, _08144C30 @ =0x05000100
- mov r0, sp
- bl CpuSet
- ldr r2, [r4, 0x14]
- str r5, [r2]
- adds r4, 0x24
- adds r0, r4, 0
- adds r1, r6, 0
- movs r3, 0x4
- bl sub_8144888
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08144C30: .4byte 0x05000100
- thumb_func_end sub_8144C00
-
- thumb_func_start sub_8144C34
-sub_8144C34: @ 8144C34
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- ldr r1, _08144C58 @ =gUnknown_84687E0
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r1, 0
- str r1, [r4, 0x10]
- movs r0, 0x4
- str r0, [r4, 0x8]
- str r1, [r4, 0xC]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08144C58: .4byte gUnknown_84687E0
- thumb_func_end sub_8144C34
-
- thumb_func_start sub_8144C5C
-sub_8144C5C: @ 8144C5C
- movs r0, 0x6
- bx lr
- thumb_func_end sub_8144C5C
-
- thumb_func_start sub_8144C60
-sub_8144C60: @ 8144C60
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x24
- bl sub_8144844
- cmp r0, 0
- beq _08144C76
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144C76:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144C60
-
- thumb_func_start sub_8144C80
-sub_8144C80: @ 8144C80
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x24
- bl sub_8144850
- cmp r0, 0
- beq _08144C96
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144C96:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144C80
-
- thumb_func_start sub_8144CA0
-sub_8144CA0: @ 8144CA0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x10]
- lsls r2, r0, 3
- ldr r1, [r4, 0x1C]
- adds r2, r1, r2
- adds r0, 0x1
- str r0, [r4, 0x10]
- ldr r0, [r2]
- cmp r0, 0x15
- bls _08144CB8
- b _08144E60
-_08144CB8:
- lsls r0, 2
- ldr r1, _08144CC4 @ =_08144CC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144CC4: .4byte _08144CC8
- .align 2, 0
-_08144CC8:
- .4byte _08144E60
- .4byte _08144D20
- .4byte _08144D28
- .4byte _08144D38
- .4byte _08144D70
- .4byte _08144D78
- .4byte _08144D62
- .4byte _08144D6A
- .4byte _08144DC6
- .4byte _08144DF0
- .4byte _08144DE8
- .4byte _08144D8E
- .4byte _08144DA4
- .4byte _08144DBA
- .4byte _08144DDC
- .4byte _08144E18
- .4byte _08144E1C
- .4byte _08144E24
- .4byte _08144E30
- .4byte _08144D4E
- .4byte _08144D3C
- .4byte _08144E4C
-_08144D20:
- ldr r0, [r2, 0x4]
- str r0, [r4, 0x4]
- movs r0, 0x1
- b _08144E5A
-_08144D28:
- adds r0, r4, 0
- adds r0, 0x24
- ldr r1, [r2, 0x4]
- ldr r2, [r4, 0x18]
- bl sub_81448AC
- movs r0, 0x2
- b _08144E5A
-_08144D38:
- movs r0, 0x3
- b _08144E5A
-_08144D3C:
- adds r0, r4, 0
- adds r0, 0x24
- ldr r2, [r4, 0x14]
- movs r1, 0x14
- movs r3, 0
- bl sub_8144888
- movs r0, 0x3
- b _08144E5A
-_08144D4E:
- ldrb r0, [r2, 0x4]
- bl GetGameStat
- adds r2, r0, 0
- adds r0, r4, 0
- movs r1, 0x12
- bl sub_8144C00
- movs r0, 0x3
- b _08144E5A
-_08144D62:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- bne _08144E60
- b _08144D70
-_08144D6A:
- ldr r0, [r4, 0x4]
- cmp r0, 0x1
- bne _08144E60
-_08144D70:
- adds r0, r4, 0
- bl sub_8144BE4
- b _08144E60
-_08144D78:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x2
- b _08144E62
-_08144D8E:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x3
- b _08144E62
-_08144DA4:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x5
- b _08144E62
-_08144DBA:
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x4
- b _08144E62
-_08144DC6:
- ldr r0, [r4, 0x14]
- bl sub_81442CC
- adds r0, r4, 0
- adds r0, 0x24
- ldr r2, [r4, 0x14]
- movs r1, 0x11
- movs r3, 0x64
- bl sub_8144888
- b _08144E60
-_08144DDC:
- ldr r2, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x13
- bl sub_8144C00
- b _08144E60
-_08144DE8:
- ldr r0, [r4, 0x18]
- bl sub_8143F68
- b _08144E60
-_08144DF0:
- ldr r0, [r4, 0x18]
- bl sub_8143EF4
- cmp r0, 0
- bne _08144E0C
- ldr r0, [r4, 0x18]
- bl sub_8143DC8
- adds r0, r4, 0
- movs r1, 0x13
- movs r2, 0
- bl sub_8144C00
- b _08144E60
-_08144E0C:
- adds r0, r4, 0
- movs r1, 0x13
- movs r2, 0x1
- bl sub_8144C00
- b _08144E60
-_08144E18:
- movs r0, 0x6
- b _08144E5A
-_08144E1C:
- ldr r0, [r4, 0x18]
- bl sub_8144254
- b _08144E60
-_08144E24:
- ldr r0, [r4, 0x18]
- movs r1, 0xFA
- lsls r1, 2
- bl sub_8069EA4
- b _08144E60
-_08144E30:
- ldr r0, _08144E48 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x94
- lsls r1, 3
- adds r0, r1
- ldr r1, [r4, 0x18]
- movs r2, 0xBC
- bl memcpy
- bl sub_80E7490
- b _08144E60
- .align 2, 0
-_08144E48: .4byte gSaveBlock2Ptr
-_08144E4C:
- ldr r0, _08144E68 @ =gDecompressionBuffer
- ldr r1, [r4, 0x18]
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r0, 0x7
-_08144E5A:
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144E60:
- movs r0, 0x1
-_08144E62:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08144E68: .4byte gDecompressionBuffer
- thumb_func_end sub_8144CA0
-
- thumb_func_start sub_8144E6C
-sub_8144E6C: @ 8144E6C
- push {lr}
- adds r1, r0, 0
- ldr r0, [r1, 0xC]
- cmp r0, 0
- beq _08144E7E
- movs r0, 0x4
- str r0, [r1, 0x8]
- movs r0, 0
- str r0, [r1, 0xC]
-_08144E7E:
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8144E6C
-
- thumb_func_start sub_8144E84
-sub_8144E84: @ 8144E84
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0xC]
- cmp r0, 0
- beq _08144E94
- cmp r0, 0x1
- beq _08144EA2
- b _08144EB4
-_08144E94:
- ldr r0, [r4, 0x18]
- bl sub_80DA89C
- ldr r0, [r4, 0xC]
- adds r0, 0x1
- str r0, [r4, 0xC]
- b _08144EB4
-_08144EA2:
- adds r0, r4, 0x4
- bl sub_80DA8B0
- adds r1, r0, 0
- cmp r1, 0
- bne _08144EB4
- movs r0, 0x4
- str r0, [r4, 0x8]
- str r1, [r4, 0xC]
-_08144EB4:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144E84
-
- thumb_func_start sub_8144EBC
-sub_8144EBC: @ 8144EBC
- push {r4,lr}
- adds r4, r0, 0
- ldr r3, _08144EE4 @ =gDecompressionBuffer
- adds r0, r4, 0x4
- ldr r1, _08144EE8 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- ldr r2, _08144EEC @ =gSaveBlock1Ptr
- ldr r2, [r2]
- bl _call_via_r3
- cmp r0, 0x1
- bne _08144EDC
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144EDC:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08144EE4: .4byte gDecompressionBuffer
-_08144EE8: .4byte gSaveBlock2Ptr
-_08144EEC: .4byte gSaveBlock1Ptr
- thumb_func_end sub_8144EBC
-
- thumb_func_start mevent_srv_ish_exec
-mevent_srv_ish_exec: @ 8144EF0
- push {r4,r5,lr}
- sub sp, 0x20
- mov r2, sp
- ldr r1, _08144F18 @ =gUnknown_8466F60
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3,r4}
- stm r2!, {r3,r4}
- ldr r1, [r0, 0x8]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0x20
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08144F18: .4byte gUnknown_8466F60
- thumb_func_end mevent_srv_ish_exec
-
- thumb_func_start sub_8144F1C
-sub_8144F1C: @ 8144F1C
- push {r4,lr}
- ldr r4, _08144F38 @ =gUnknown_203F3C4
- movs r0, 0x60
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _08144F3C @ =gUnknown_8468B6C
- movs r2, 0
- movs r3, 0x1
- bl mevent_srv_init_common
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08144F38: .4byte gUnknown_203F3C4
-_08144F3C: .4byte gUnknown_8468B6C
- thumb_func_end sub_8144F1C
-
- thumb_func_start sub_8144F40
-sub_8144F40: @ 8144F40
- push {r4,lr}
- ldr r4, _08144F5C @ =gUnknown_203F3C4
- movs r0, 0x60
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _08144F60 @ =gUnknown_8468BCC
- movs r2, 0
- movs r3, 0x1
- bl mevent_srv_init_common
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08144F5C: .4byte gUnknown_203F3C4
-_08144F60: .4byte gUnknown_8468BCC
- thumb_func_end sub_8144F40
-
- thumb_func_start sub_8144F64
-sub_8144F64: @ 8144F64
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, _08144F74 @ =gUnknown_203F3C4
- ldr r0, [r4]
- cmp r0, 0
- bne _08144F78
- movs r0, 0x3
- b _08144F98
- .align 2, 0
-_08144F74: .4byte gUnknown_203F3C4
-_08144F78:
- bl sub_8145600
- adds r5, r0, 0
- cmp r5, 0x3
- bne _08144F96
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- strh r1, [r6]
- bl mevent_srv_free_resources
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_08144F96:
- adds r0, r5, 0
-_08144F98:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144F64
-
- thumb_func_start mevent_srv_init_common
-mevent_srv_init_common: @ 8144FA0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- movs r5, 0
- str r5, [r4]
- str r5, [r4, 0x8]
- movs r0, 0xA6
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4, 0x18]
- movs r0, 0xDE
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4, 0x1C]
- movs r0, 0x80
- lsls r0, 3
- bl AllocZeroed
- str r0, [r4, 0x14]
- movs r0, 0x64
- bl AllocZeroed
- str r0, [r4, 0x20]
- str r6, [r4, 0x10]
- str r5, [r4, 0xC]
- adds r4, 0x38
- adds r0, r4, 0
- mov r1, r8
- mov r2, r9
- bl sub_814485C
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_init_common
-
- thumb_func_start mevent_srv_free_resources
-mevent_srv_free_resources: @ 8144FF8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x18]
- bl Free
- ldr r0, [r4, 0x1C]
- bl Free
- ldr r0, [r4, 0x14]
- bl Free
- ldr r0, [r4, 0x20]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_free_resources
-
- thumb_func_start sub_814501C
-sub_814501C: @ 814501C
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- adds r7, r2, 0
- adds r4, r3, 0
- movs r0, 0x80
- lsls r0, 3
- cmp r4, r0
- bls _0814503A
- ldr r0, _08145050 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _08145054 @ =0x00000101
- ldr r2, _08145058 @ =gUnknown_8466FB8 "size <= ME_SEND_BUF_SIZE"
- movs r3, 0x1
- bl AGBAssert
-_0814503A:
- adds r0, r5, 0
- adds r0, 0x38
- adds r1, r6, 0
- adds r2, r7, 0
- adds r3, r4, 0
- bl sub_8144888
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08145050: .4byte gUnknown_8466F80
-_08145054: .4byte 0x00000101
-_08145058: .4byte gUnknown_8466FB8
- thumb_func_end sub_814501C
-
- thumb_func_start sub_814505C
-sub_814505C: @ 814505C
- push {lr}
- cmp r0, 0
- bne _08145064
- adds r0, r1, 0
-_08145064:
- pop {r1}
- bx r1
- thumb_func_end sub_814505C
-
- thumb_func_start sub_8145068
-sub_8145068: @ 8145068
- push {lr}
- cmp r1, r0
- bcs _08145072
- movs r0, 0
- b _0814507C
-_08145072:
- cmp r1, r0
- beq _0814507A
- movs r0, 0x2
- b _0814507C
-_0814507A:
- movs r0, 0x1
-_0814507C:
- pop {r1}
- bx r1
- thumb_func_end sub_8145068
-
- thumb_func_start sub_8145080
-sub_8145080: @ 8145080
- movs r1, 0x4
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end sub_8145080
-
- thumb_func_start sub_8145088
-sub_8145088: @ 8145088
- movs r0, 0x3
- bx lr
- thumb_func_end sub_8145088
-
- thumb_func_start sub_814508C
-sub_814508C: @ 814508C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x38
- bl sub_8144844
- cmp r0, 0
- beq _0814509E
- movs r0, 0x4
- str r0, [r4, 0x8]
-_0814509E:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_814508C
-
- thumb_func_start sub_81450A8
-sub_81450A8: @ 81450A8
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x38
- bl sub_8144850
- cmp r0, 0
- beq _081450BA
- movs r0, 0x4
- str r0, [r4, 0x8]
-_081450BA:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81450A8
-
- thumb_func_start sub_81450C4
-sub_81450C4: @ 81450C4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0xC]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, [r5, 0x10]
- adds r4, r2, r1
- adds r0, 0x1
- str r0, [r5, 0xC]
- ldr r0, [r4]
- cmp r0, 0x1D
- bls _081450E0
- b _081455F8
-_081450E0:
- lsls r0, 2
- ldr r1, _081450EC @ =_081450F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081450EC: .4byte _081450F0
- .align 2, 0
-_081450F0:
- .4byte _08145168
- .4byte _08145190
- .4byte _08145196
- .4byte _081451C4
- .4byte _08145268
- .4byte _081451E4
- .4byte _08145228
- .4byte _0814527C
- .4byte _081452AC
- .4byte _081452EC
- .4byte _08145320
- .4byte _08145350
- .4byte _08145378
- .4byte _081453D8
- .4byte _081453A4
- .4byte _08145440
- .4byte _0814540C
- .4byte _081454AA
- .4byte _08145458
- .4byte _08145470
- .4byte _0814549C
- .4byte _08145510
- .4byte _081454B8
- .4byte _081454E4
- .4byte _08145538
- .4byte _08145542
- .4byte _0814554C
- .4byte _08145588
- .4byte _081455C0
- .4byte _081455EC
-_08145168:
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _0814517C
- ldr r0, _08145188 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xB1
- lsls r1, 1
- ldr r2, _0814518C @ =gUnknown_8466FD4 "cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_0814517C:
- movs r0, 0x1
- str r0, [r5, 0x8]
- ldr r0, [r4, 0x4]
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_08145188: .4byte gUnknown_8466F80
-_0814518C: .4byte gUnknown_8466FD4
-_08145190:
- movs r0, 0x3
- str r0, [r5, 0x8]
- b _081455F8
-_08145196:
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _081451AA
- ldr r0, _081451BC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xB6
- lsls r1, 1
- ldr r2, _081451C0 @ =gUnknown_8466FD4 "cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_081451AA:
- adds r0, r5, 0
- adds r0, 0x38
- ldr r1, [r4, 0x4]
- ldr r2, [r5, 0x14]
- bl sub_81448AC
- movs r0, 0x2
- str r0, [r5, 0x8]
- b _081455F8
- .align 2, 0
-_081451BC: .4byte gUnknown_8466F80
-_081451C0: .4byte gUnknown_8466FD4
-_081451C4:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145272
- ldr r0, _081451DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xB9
- lsls r1, 1
- ldr r2, _081451E0 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
- b _08145272
- .align 2, 0
-_081451DC: .4byte gUnknown_8466F80
-_081451E0: .4byte gUnknown_8466FEC
-_081451E4:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _081451F8
- ldr r0, _08145218 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xBC
- lsls r1, 1
- ldr r2, _0814521C @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_081451F8:
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _0814520A
- ldr r0, _08145218 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _08145220 @ =0x00000179
- ldr r2, _08145224 @ =gUnknown_8466FD4 "cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_0814520A:
- ldr r0, [r5, 0x20]
- ldr r1, [r5, 0x14]
- movs r2, 0x64
- bl memcpy
- b _081455F8
- .align 2, 0
-_08145218: .4byte gUnknown_8466F80
-_0814521C: .4byte gUnknown_8466FEC
-_08145220: .4byte 0x00000179
-_08145224: .4byte gUnknown_8466FD4
-_08145228:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _0814523C
- ldr r0, _08145258 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xBF
- lsls r1, 1
- ldr r2, _0814525C @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_0814523C:
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _0814524E
- ldr r0, _08145258 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _08145260 @ =0x0000017f
- ldr r2, _08145264 @ =gUnknown_8466FD4 "cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_0814524E:
- ldr r0, [r5, 0x20]
- bl sub_81443D4
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_08145258: .4byte gUnknown_8466F80
-_0814525C: .4byte gUnknown_8466FEC
-_08145260: .4byte 0x0000017f
-_08145264: .4byte gUnknown_8466FD4
-_08145268:
- ldr r1, [r5, 0x4]
- ldr r0, [r4, 0x4]
- cmp r1, r0
- beq _08145272
- b _081455F8
-_08145272:
- movs r0, 0
- str r0, [r5, 0xC]
- ldr r0, [r4, 0x8]
- str r0, [r5, 0x10]
- b _081455F8
-_0814527C:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145290
- ldr r0, _081452A4 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xC6
- lsls r1, 1
- ldr r2, _081452A8 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_08145290:
- ldr r0, [r4, 0x8]
- ldr r1, [r5, 0x18]
- bl sub_814505C
- adds r2, r0, 0
- ldr r1, [r5, 0x20]
- bl sub_8144418
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_081452A4: .4byte gUnknown_8466F80
-_081452A8: .4byte gUnknown_8466FEC
-_081452AC:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _081452C0
- ldr r0, _081452DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xC9
- lsls r1, 1
- ldr r2, _081452E0 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_081452C0:
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _081452D2
- ldr r0, _081452DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _081452E4 @ =0x00000193
- ldr r2, _081452E8 @ =gUnknown_8466FD4 "cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_081452D2:
- ldr r0, [r5, 0x14]
- ldr r0, [r0]
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_081452DC: .4byte gUnknown_8466F80
-_081452E0: .4byte gUnknown_8466FEC
-_081452E4: .4byte 0x00000193
-_081452E8: .4byte gUnknown_8466FD4
-_081452EC:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145300
- ldr r0, _08145318 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xCC
- lsls r1, 1
- ldr r2, _0814531C @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_08145300:
- ldr r0, [r4, 0x8]
- adds r1, r5, 0
- adds r1, 0x34
- bl sub_814505C
- adds r2, r0, 0
- ldr r1, [r5, 0x20]
- bl sub_8144434
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_08145318: .4byte gUnknown_8466F80
-_0814531C: .4byte gUnknown_8466FEC
-_08145320:
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _08145332
- ldr r0, _08145344 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _08145348 @ =0x0000019f
- ldr r2, _0814534C @ =gUnknown_8466FD4 "cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_08145332:
- ldr r0, [r5, 0x20]
- ldr r1, [r4, 0x4]
- bl sub_81444B0
- lsls r0, 16
- lsrs r0, 16
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_08145344: .4byte gUnknown_8466F80
-_08145348: .4byte 0x0000019f
-_0814534C: .4byte gUnknown_8466FD4
-_08145350:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145364
- ldr r0, _08145370 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xD2
- lsls r1, 1
- ldr r2, _08145374 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_08145364:
- ldr r0, [r5, 0x20]
- ldr r1, [r4, 0x8]
- bl sub_8144474
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_08145370: .4byte gUnknown_8466F80
-_08145374: .4byte gUnknown_8466FEC
-_08145378:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _0814538C
- ldr r0, _0814539C @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xD5
- lsls r1, 1
- ldr r2, _081453A0 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_0814538C:
- ldr r0, [r4, 0x8]
- ldr r1, [r5, 0x14]
- ldr r1, [r1]
- bl sub_8145068
- str r0, [r5, 0x4]
- b _081455F8
- .align 2, 0
-_0814539C: .4byte gUnknown_8466F80
-_081453A0: .4byte gUnknown_8466FEC
-_081453A4:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _081453B8
- ldr r0, _081453D0 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xD8
- lsls r1, 1
- ldr r2, _081453D4 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_081453B8:
- ldr r0, [r4, 0x8]
- ldr r1, [r5, 0x1C]
- bl sub_814505C
- adds r2, r0, 0
- movs r3, 0xDE
- lsls r3, 1
- adds r0, r5, 0
- movs r1, 0x17
- bl sub_814501C
- b _081455F8
- .align 2, 0
-_081453D0: .4byte gUnknown_8466F80
-_081453D4: .4byte gUnknown_8466FEC
-_081453D8:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _081453EC
- ldr r0, _08145404 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xDB
- lsls r1, 1
- ldr r2, _08145408 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_081453EC:
- ldr r0, [r4, 0x8]
- ldr r1, [r5, 0x18]
- bl sub_814505C
- adds r2, r0, 0
- movs r3, 0xA6
- lsls r3, 1
- adds r0, r5, 0
- movs r1, 0x16
- bl sub_814501C
- b _081455F8
- .align 2, 0
-_08145404: .4byte gUnknown_8466F80
-_08145408: .4byte gUnknown_8466FEC
-_0814540C:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145420
- ldr r0, _08145438 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xDE
- lsls r1, 1
- ldr r2, _0814543C @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_08145420:
- ldr r0, [r4, 0x8]
- adds r1, r5, 0
- adds r1, 0x34
- bl sub_814505C
- adds r2, r0, 0
- adds r0, r5, 0
- movs r1, 0x18
- movs r3, 0x4
- bl sub_814501C
- b _081455F8
- .align 2, 0
-_08145438: .4byte gUnknown_8466F80
-_0814543C: .4byte gUnknown_8466FEC
-_08145440:
- ldr r2, [r4, 0x8]
- cmp r2, 0
- bne _0814544C
- ldr r2, [r5, 0x24]
- ldr r3, [r5, 0x28]
- b _0814544E
-_0814544C:
- ldr r3, [r4, 0x4]
-_0814544E:
- adds r0, r5, 0
- movs r1, 0x19
- bl sub_814501C
- b _081455F8
-_08145458:
- ldr r2, [r4, 0x8]
- cmp r2, 0
- bne _08145464
- ldr r2, [r5, 0x2C]
- ldr r3, [r5, 0x30]
- b _08145466
-_08145464:
- ldr r3, [r4, 0x4]
-_08145466:
- adds r0, r5, 0
- movs r1, 0x10
- bl sub_814501C
- b _081455F8
-_08145470:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145484
- ldr r0, _08145494 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xE9
- lsls r1, 1
- ldr r2, _08145498 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_08145484:
- ldr r2, [r4, 0x8]
- adds r0, r5, 0
- movs r1, 0x1A
- movs r3, 0xBC
- bl sub_814501C
- b _081455F8
- .align 2, 0
-_08145494: .4byte gUnknown_8466F80
-_08145498: .4byte gUnknown_8466FEC
-_0814549C:
- ldr r2, [r4, 0x8]
- ldr r3, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x15
- bl sub_814501C
- b _081455F8
-_081454AA:
- ldr r2, [r4, 0x8]
- ldr r3, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x1C
- bl sub_814501C
- b _081455F8
-_081454B8:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _081454CA
- ldr r0, _081454D8 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _081454DC @ =0x000001e1
- ldr r2, _081454E0 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_081454CA:
- ldr r0, [r5, 0x18]
- ldr r1, [r4, 0x8]
- movs r2, 0xA6
- lsls r2, 1
- bl memcpy
- b _081455F8
- .align 2, 0
-_081454D8: .4byte gUnknown_8466F80
-_081454DC: .4byte 0x000001e1
-_081454E0: .4byte gUnknown_8466FEC
-_081454E4:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _081454F8
- ldr r0, _08145508 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xF3
- lsls r1, 1
- ldr r2, _0814550C @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_081454F8:
- ldr r0, [r5, 0x1C]
- ldr r1, [r4, 0x8]
- movs r2, 0xDE
- lsls r2, 1
- bl memcpy
- b _081455F8
- .align 2, 0
-_08145508: .4byte gUnknown_8466F80
-_0814550C: .4byte gUnknown_8466FEC
-_08145510:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _08145522
- ldr r0, _0814552C @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _08145530 @ =0x000001eb
- ldr r2, _08145534 @ =gUnknown_8466FEC "cmd->flag == FALSE"
- movs r3, 0x1
- bl AGBAssert
-_08145522:
- ldr r0, [r4, 0x8]
- ldr r0, [r0]
- str r0, [r5, 0x34]
- b _081455F8
- .align 2, 0
-_0814552C: .4byte gUnknown_8466F80
-_08145530: .4byte 0x000001eb
-_08145534: .4byte gUnknown_8466FEC
-_08145538:
- ldr r0, [r4, 0x8]
- str r0, [r5, 0x24]
- ldr r0, [r4, 0x4]
- str r0, [r5, 0x28]
- b _081455F8
-_08145542:
- ldr r0, [r4, 0x8]
- str r0, [r5, 0x2C]
- ldr r0, [r4, 0x4]
- str r0, [r5, 0x30]
- b _081455F8
-_0814554C:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- bne _08145558
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _08145566
-_08145558:
- ldr r0, _08145580 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0xFD
- lsls r1, 1
- ldr r2, _08145584 @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_08145566:
- ldr r4, [r5, 0x18]
- bl sav1_get_mevent_buffer_1
- adds r1, r0, 0
- movs r2, 0xA6
- lsls r2, 1
- adds r0, r4, 0
- bl memcpy
- ldr r0, [r5, 0x18]
- bl sub_814410C
- b _081455F8
- .align 2, 0
-_08145580: .4byte gUnknown_8466F80
-_08145584: .4byte gUnknown_8467000
-_08145588:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- bne _08145594
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _081455A2
-_08145594:
- ldr r0, _081455B8 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0x80
- lsls r1, 2
- ldr r2, _081455BC @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_081455A2:
- ldr r4, [r5, 0x1C]
- bl sub_8143D58
- adds r1, r0, 0
- movs r2, 0xDE
- lsls r2, 1
- adds r0, r4, 0
- bl memcpy
- b _081455F8
- .align 2, 0
-_081455B8: .4byte gUnknown_8466F80
-_081455BC: .4byte gUnknown_8467000
-_081455C0:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- bne _081455CC
- ldr r0, [r4, 0x8]
- cmp r0, 0
- beq _081455D8
-_081455CC:
- ldr r0, _081455E0 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _081455E4 @ =0x00000205
- ldr r2, _081455E8 @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL"
- movs r3, 0x1
- bl AGBAssert
-_081455D8:
- bl sub_8069E48
- str r0, [r5, 0x24]
- b _081455F8
- .align 2, 0
-_081455E0: .4byte gUnknown_8466F80
-_081455E4: .4byte 0x00000205
-_081455E8: .4byte gUnknown_8467000
-_081455EC:
- ldr r2, [r4, 0x8]
- ldr r3, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x1B
- bl sub_814501C
-_081455F8:
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81450C4
-
- thumb_func_start sub_8145600
-sub_8145600: @ 8145600
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- cmp r0, 0x4
- bls _08145616
- ldr r0, _08145644 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- ldr r1, _08145648 @ =0x00000222
- ldr r2, _0814564C @ =gUnknown_8467044 "svr->mainseqno < NELEMS(func_tbl)"
- movs r3, 0x1
- bl AGBAssert
-_08145616:
- ldr r1, _08145650 @ =gUnknown_8467030
- ldr r0, [r4, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- adds r5, r0, 0
- ldr r0, [r4, 0x8]
- cmp r0, 0x4
- bls _0814563C
- ldr r0, _08145644 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
- movs r1, 0x89
- lsls r1, 2
- ldr r2, _0814564C @ =gUnknown_8467044 "svr->mainseqno < NELEMS(func_tbl)"
- movs r3, 0x1
- bl AGBAssert
-_0814563C:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08145644: .4byte gUnknown_8466F80
-_08145648: .4byte 0x00000222
-_0814564C: .4byte gUnknown_8467044
-_08145650: .4byte gUnknown_8467030
- thumb_func_end sub_8145600
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
deleted file mode 100644
index b150bb586..000000000
--- a/asm/mystery_event_script.s
+++ /dev/null
@@ -1,722 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80DA800
-sub_80DA800: @ 80DA800
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r2, 16
- lsrs r2, 16
- movs r4, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080DA828
- ands r1, r4
- cmp r1, 0
- beq _080DA828
- ands r2, r4
- cmp r2, 0
- beq _080DA828
- ands r3, r4
- cmp r3, 0
- beq _080DA828
- movs r0, 0x1
- b _080DA82A
-_080DA828:
- movs r0, 0
-_080DA82A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80DA800
-
- thumb_func_start SetIncompatible
-SetIncompatible: @ 80DA830
- push {lr}
- ldr r0, _080DA844 @ =gStringVar4
- ldr r1, _080DA848 @ =gUnknown_8488DFD
- bl StringExpandPlaceholders
- movs r0, 0x3
- bl sub_80DA8E8
- pop {r0}
- bx r0
- .align 2, 0
-_080DA844: .4byte gStringVar4
-_080DA848: .4byte gUnknown_8488DFD
- thumb_func_end SetIncompatible
-
- thumb_func_start InitMysteryEventScript
-InitMysteryEventScript: @ 80DA84C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _080DA874 @ =gUnknown_81DBCF0
- ldr r2, _080DA878 @ =0x081dbd34
- bl InitScriptContext
- adds r0, r4, 0
- adds r1, r5, 0
- bl SetupBytecodeScript
- str r5, [r4, 0x64]
- movs r0, 0
- str r0, [r4, 0x68]
- str r0, [r4, 0x6C]
- str r0, [r4, 0x70]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DA874: .4byte gUnknown_81DBCF0
-_080DA878: .4byte 0x081dbd34
- thumb_func_end InitMysteryEventScript
-
- thumb_func_start RunMysteryEventScriptCommand
-RunMysteryEventScriptCommand: @ 80DA87C
- push {r4,lr}
- adds r4, r0, 0
- bl RunScriptCommand
- lsls r0, 24
- cmp r0, 0
- beq _080DA894
- ldr r0, [r4, 0x70]
- cmp r0, 0
- beq _080DA894
- movs r0, 0x1
- b _080DA896
-_080DA894:
- movs r0, 0
-_080DA896:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end RunMysteryEventScriptCommand
-
- thumb_func_start sub_80DA89C
-sub_80DA89C: @ 80DA89C
- push {lr}
- adds r1, r0, 0
- ldr r0, _080DA8AC @ =gUnknown_203AA3C
- bl InitMysteryEventScript
- pop {r0}
- bx r0
- .align 2, 0
-_080DA8AC: .4byte gUnknown_203AA3C
- thumb_func_end sub_80DA89C
-
- thumb_func_start sub_80DA8B0
-sub_80DA8B0: @ 80DA8B0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080DA8C8 @ =gUnknown_203AA3C
- adds r0, r4, 0
- bl RunMysteryEventScriptCommand
- ldr r1, [r4, 0x6C]
- str r1, [r5]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080DA8C8: .4byte gUnknown_203AA3C
- thumb_func_end sub_80DA8B0
-
- thumb_func_start sub_80DA8CC
-sub_80DA8CC: @ 80DA8CC
- push {lr}
- sub sp, 0x4
- bl sub_80DA89C
-_080DA8D4:
- mov r0, sp
- bl sub_80DA8B0
- cmp r0, 0
- bne _080DA8D4
- ldr r0, [sp]
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_80DA8CC
-
- thumb_func_start sub_80DA8E8
-sub_80DA8E8: @ 80DA8E8
- ldr r1, _080DA8F0 @ =gUnknown_203AA3C
- str r0, [r1, 0x6C]
- bx lr
- .align 2, 0
-_080DA8F0: .4byte gUnknown_203AA3C
- thumb_func_end sub_80DA8E8
-
- thumb_func_start script_status_stop_and_ret_1
-script_status_stop_and_ret_1: @ 80DA8F4
- push {lr}
- bl StopScript
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end script_status_stop_and_ret_1
-
- thumb_func_start MEScrCmd_checkcompat
-MEScrCmd_checkcompat: @ 80DA900
- push {r4-r7,lr}
- adds r7, r0, 0
- bl ScriptReadWord
- str r0, [r7, 0x68]
- adds r0, r7, 0
- bl ScriptReadHalfword
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r7, 0
- bl ScriptReadWord
- adds r6, r0, 0
- adds r0, r7, 0
- bl ScriptReadHalfword
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl ScriptReadWord
- adds r3, r0, 0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_80DA800
- cmp r0, 0x1
- bne _080DA944
- str r0, [r7, 0x70]
- b _080DA948
-_080DA944:
- bl SetIncompatible
-_080DA948:
- movs r0, 0x1
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MEScrCmd_checkcompat
-
- thumb_func_start sub_80DA950
-sub_80DA950: @ 80DA950
- movs r0, 0
- bx lr
- thumb_func_end sub_80DA950
-
- thumb_func_start MEScrCmd_setstatus
-MEScrCmd_setstatus: @ 80DA954
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- str r2, [r0, 0x6C]
- movs r0, 0
- bx lr
- thumb_func_end MEScrCmd_setstatus
-
- thumb_func_start MEScrCmd_setmsg
-MEScrCmd_setmsg: @ 80DA964
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r5, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x68]
- subs r0, r1
- ldr r1, [r4, 0x64]
- adds r1, r0, r1
- cmp r5, 0xFF
- beq _080DA988
- ldr r0, [r4, 0x6C]
- cmp r5, r0
- bne _080DA98E
-_080DA988:
- ldr r0, _080DA998 @ =gStringVar4
- bl StringExpandPlaceholders
-_080DA98E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080DA998: .4byte gStringVar4
- thumb_func_end MEScrCmd_setmsg
-
- thumb_func_start MEScrCmd_runscript
-MEScrCmd_runscript: @ 80DA99C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x68]
- subs r0, r1
- ldr r1, [r4, 0x64]
- adds r0, r1
- bl ScriptContext2_RunNewScript
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MEScrCmd_runscript
-
- thumb_func_start MEScrCmd_setenigmaberry
-MEScrCmd_setenigmaberry: @ 80DA9B8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- bl IsEnigmaBerryValid
- mov r8, r0
- adds r0, r7, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r7, 0x68]
- subs r4, r0
- ldr r0, [r7, 0x64]
- adds r4, r0
- ldr r0, _080DAA0C @ =gStringVar1
- mov r9, r0
- ldr r6, _080DAA10 @ =gSaveBlock1Ptr
- ldr r1, [r6]
- ldr r5, _080DAA14 @ =0x000030ec
- adds r1, r5
- movs r2, 0x7
- bl StringCopyN
- adds r0, r4, 0
- bl sub_809C7C4
- ldr r4, _080DAA18 @ =gStringVar2
- ldr r1, [r6]
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0x7
- bl StringCopyN
- mov r0, r8
- cmp r0, 0
- bne _080DAA24
- ldr r0, _080DAA1C @ =gStringVar4
- ldr r1, _080DAA20 @ =gUnknown_8488C70
- b _080DAA44
- .align 2, 0
-_080DAA0C: .4byte gStringVar1
-_080DAA10: .4byte gSaveBlock1Ptr
-_080DAA14: .4byte 0x000030ec
-_080DAA18: .4byte gStringVar2
-_080DAA1C: .4byte gStringVar4
-_080DAA20: .4byte gUnknown_8488C70
-_080DAA24:
- mov r0, r9
- adds r1, r4, 0
- bl StringCompare
- cmp r0, 0
- beq _080DAA40
- ldr r0, _080DAA38 @ =gStringVar4
- ldr r1, _080DAA3C @ =gUnknown_8488CA2
- b _080DAA44
- .align 2, 0
-_080DAA38: .4byte gStringVar4
-_080DAA3C: .4byte gUnknown_8488CA2
-_080DAA40:
- ldr r0, _080DAA60 @ =gStringVar4
- ldr r1, _080DAA64 @ =gUnknown_8488CCE
-_080DAA44:
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r7, 0x6C]
- bl IsEnigmaBerryValid
- cmp r0, 0x1
- bne _080DAA6C
- ldr r0, _080DAA68 @ =0x00004033
- movs r1, 0x1
- bl VarSet
- b _080DAA70
- .align 2, 0
-_080DAA60: .4byte gStringVar4
-_080DAA64: .4byte gUnknown_8488CCE
-_080DAA68: .4byte 0x00004033
-_080DAA6C:
- movs r0, 0x1
- str r0, [r7, 0x6C]
-_080DAA70:
- movs r0, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MEScrCmd_setenigmaberry
-
- thumb_func_start MEScrCmd_giveribbon
-MEScrCmd_giveribbon: @ 80DAA80
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl GiveGiftRibbonToParty
- ldr r0, _080DAAAC @ =gStringVar4
- ldr r1, _080DAAB0 @ =gUnknown_8488CF6
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080DAAAC: .4byte gStringVar4
-_080DAAB0: .4byte gUnknown_8488CF6
- thumb_func_end MEScrCmd_giveribbon
-
- thumb_func_start MEScrCmd_initramscript
-MEScrCmd_initramscript: @ 80DAAB4
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r4, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- adds r5, r0, 0
- ldr r0, [r4, 0x68]
- subs r5, r0
- ldr r0, [r4, 0x64]
- adds r5, r0
- adds r0, r4, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r4, 0x68]
- subs r1, r0
- ldr r0, [r4, 0x64]
- adds r1, r0
- subs r1, r5
- lsls r1, 16
- lsrs r1, 16
- str r6, [sp]
- adds r0, r5, 0
- mov r2, r9
- mov r3, r8
- bl InitRamScript
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end MEScrCmd_initramscript
-
- thumb_func_start sub_80DAB1C
-sub_80DAB1C: @ 80DAB1C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_806E22C
- ldr r0, _080DAB38 @ =gStringVar4
- ldr r1, _080DAB3C @ =gUnknown_8488D2A
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080DAB38: .4byte gStringVar4
-_080DAB3C: .4byte gUnknown_8488D2A
- thumb_func_end sub_80DAB1C
-
- thumb_func_start MEScrCmd_addrareword
-MEScrCmd_addrareword: @ 80DAB40
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x8]
- ldrb r0, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- bl sub_80BDB70
- ldr r0, _080DAB64 @ =gStringVar4
- ldr r1, _080DAB68 @ =gUnknown_8488D60
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080DAB64: .4byte gStringVar4
-_080DAB68: .4byte gUnknown_8488D60
- thumb_func_end MEScrCmd_addrareword
-
- thumb_func_start sub_80DAB6C
-sub_80DAB6C: @ 80DAB6C
- push {r4,lr}
- adds r4, r0, 0
- bl SetIncompatible
- movs r0, 0
- str r0, [r4, 0x70]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80DAB6C
-
- thumb_func_start sub_80DAB80
-sub_80DAB80: @ 80DAB80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x88
- adds r6, r0, 0
- bl ScriptReadWord
- ldr r1, [r6, 0x68]
- subs r0, r1
- ldr r1, [r6, 0x64]
- adds r5, r0, r1
- movs r0, 0x64
- adds r0, r5
- mov r8, r0
- add r4, sp, 0x24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bne _080DABD0
- ldr r0, _080DABC8 @ =gStringVar1
- ldr r1, _080DABCC @ =gText_EggNickname
- movs r2, 0xB
- bl StringCopyN
- b _080DABDA
- .align 2, 0
-_080DABC8: .4byte gStringVar1
-_080DABCC: .4byte gText_EggNickname
-_080DABD0:
- ldr r0, _080DABF0 @ =gStringVar1
- ldr r1, _080DABF4 @ =gUnknown_8415A66
- movs r2, 0xB
- bl StringCopyN
-_080DABDA:
- ldr r0, _080DABF8 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _080DAC04
- ldr r0, _080DABFC @ =gStringVar4
- ldr r1, _080DAC00 @ =gUnknown_8488D8E
- bl StringExpandPlaceholders
- movs r0, 0x3
- b _080DAC6E
- .align 2, 0
-_080DABF0: .4byte gStringVar1
-_080DABF4: .4byte gUnknown_8415A66
-_080DABF8: .4byte gPlayerPartyCount
-_080DABFC: .4byte gStringVar4
-_080DAC00: .4byte gUnknown_8488D8E
-_080DAC04:
- ldr r7, _080DAC80 @ =gUnknown_2024478
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- mov r0, sp
- mov r1, r8
- movs r2, 0x24
- bl memcpy
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- beq _080DAC3E
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8088E74
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_8088E74
-_080DAC3E:
- adds r0, r7, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl itemid_is_mail
- lsls r0, 24
- cmp r0, 0
- beq _080DAC5C
- adds r0, r7, 0
- mov r1, sp
- bl GiveMailToMon2
-_080DAC5C:
- bl CompactPartySlots
- bl CalculatePlayerPartyCount
- ldr r0, _080DAC84 @ =gStringVar4
- ldr r1, _080DAC88 @ =gUnknown_8488D7C
- bl StringExpandPlaceholders
- movs r0, 0x2
-_080DAC6E:
- str r0, [r6, 0x6C]
- movs r0, 0
- add sp, 0x88
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080DAC80: .4byte gUnknown_2024478
-_080DAC84: .4byte gStringVar4
-_080DAC88: .4byte gUnknown_8488D7C
- thumb_func_end sub_80DAB80
-
- thumb_func_start sub_80DAC8C
-sub_80DAC8C: @ 80DAC8C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r4, 0x68]
- subs r1, r0
- ldr r0, [r4, 0x64]
- adds r1, r0
- ldr r0, _080DACC8 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r2, 0x94
- lsls r2, 3
- adds r0, r2
- movs r2, 0xBC
- bl memcpy
- bl sub_80E7490
- ldr r0, _080DACCC @ =gStringVar4
- ldr r1, _080DACD0 @ =gUnknown_8488DBD
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080DACC8: .4byte gSaveBlock2Ptr
-_080DACCC: .4byte gStringVar4
-_080DACD0: .4byte gUnknown_8488DBD
- thumb_func_end sub_80DAC8C
-
- thumb_func_start sub_80DACD4
-sub_80DACD4: @ 80DACD4
- push {r4,lr}
- adds r4, r0, 0
- bl SetIncompatible
- movs r0, 0
- str r0, [r4, 0x70]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80DACD4
-
- thumb_func_start MEScrCmd_checksum
-MEScrCmd_checksum: @ 80DACE8
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r6, 0x68]
- subs r4, r0
- ldr r0, [r6, 0x64]
- adds r4, r0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r6, 0x68]
- subs r1, r0
- ldr r0, [r6, 0x64]
- adds r1, r0
- subs r1, r4
- adds r0, r4, 0
- bl CalcByteArraySum
- cmp r5, r0
- beq _080DAD26
- movs r0, 0
- str r0, [r6, 0x70]
- movs r0, 0x1
- str r0, [r6, 0x6C]
-_080DAD26:
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end MEScrCmd_checksum
-
- thumb_func_start MEScrCmd_crc
-MEScrCmd_crc: @ 80DAD30
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r6, 0x68]
- subs r4, r0
- ldr r0, [r6, 0x64]
- adds r4, r0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r6, 0x68]
- subs r1, r0
- ldr r0, [r6, 0x64]
- adds r1, r0
- subs r1, r4
- adds r0, r4, 0
- bl CalcCRC16
- lsls r0, 16
- lsrs r0, 16
- cmp r5, r0
- beq _080DAD72
- movs r0, 0
- str r0, [r6, 0x70]
- movs r0, 0x1
- str r0, [r6, 0x6C]
-_080DAD72:
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end MEScrCmd_crc
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index bdde69c24..c4980f984 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -1245,13 +1245,13 @@ sub_811F430: @ 811F430
muls r1, r0
ldr r0, _0811F468 @ =gPlayerParty
adds r6, r1, r0
- ldr r0, _0811F46C @ =gUnknown_203AD30
+ ldr r0, _0811F46C @ =gSpecialVar_ItemId
ldrh r4, [r0]
ldr r0, _0811F470 @ =gUnknown_203B0A0
ldrb r0, [r0, 0xB]
cmp r0, 0xC
bne _0811F47C
- ldr r0, _0811F474 @ =gUnknown_20370D0
+ ldr r0, _0811F474 @ =gSpecialVar_Result
movs r1, 0
strh r1, [r0]
ldr r0, _0811F478 @ =gSpecialVar_0x8005
@@ -1266,9 +1266,9 @@ sub_811F430: @ 811F430
b _0811F4C6
.align 2, 0
_0811F468: .4byte gPlayerParty
-_0811F46C: .4byte gUnknown_203AD30
+_0811F46C: .4byte gSpecialVar_ItemId
_0811F470: .4byte gUnknown_203B0A0
-_0811F474: .4byte gUnknown_20370D0
+_0811F474: .4byte gSpecialVar_Result
_0811F478: .4byte gSpecialVar_0x8005
_0811F47C:
cmp r0, 0x3
@@ -2364,7 +2364,7 @@ _0811FCDA:
_0811FCE8:
movs r0, 0x5
bl PlaySE
- ldr r1, _0811FD24 @ =gUnknown_20370C0
+ ldr r1, _0811FD24 @ =gSpecialVar_0x8004
movs r0, 0
ldrsb r0, [r5, r0]
strh r0, [r1]
@@ -2390,7 +2390,7 @@ _0811FD1A:
bl sub_811FA78
b _0811FD56
.align 2, 0
-_0811FD24: .4byte gUnknown_20370C0
+_0811FD24: .4byte gSpecialVar_0x8004
_0811FD28: .4byte gUnknown_203B0A0
_0811FD2C: .4byte gSpecialVar_0x8005
_0811FD30: .4byte gPlayerParty
@@ -2498,7 +2498,7 @@ _0811FDF4:
lsls r0, 24
cmp r0, 0
bne _0811FE04
- ldr r1, _0811FE1C @ =gUnknown_20370C0
+ ldr r1, _0811FE1C @ =gSpecialVar_0x8004
movs r0, 0x7
strh r0, [r1]
_0811FE04:
@@ -2514,7 +2514,7 @@ _0811FE14:
pop {r0}
bx r0
.align 2, 0
-_0811FE1C: .4byte gUnknown_20370C0
+_0811FE1C: .4byte gSpecialVar_0x8004
_0811FE20: .4byte gUnknown_203B0C0
thumb_func_end sub_811FD88
@@ -4107,13 +4107,13 @@ sub_81209F4: @ 81209F4
bne _08120A24
movs r0, 0x5
bl PlaySE
- ldr r0, _08120A20 @ =gUnknown_20370C0
+ ldr r0, _08120A20 @ =gSpecialVar_0x8004
strh r5, [r0]
adds r0, r4, 0
bl sub_811FA78
b _08120A46
.align 2, 0
-_08120A20: .4byte gUnknown_20370C0
+_08120A20: .4byte gSpecialVar_0x8004
_08120A24:
movs r0, 0x1A
bl PlaySE
@@ -4215,14 +4215,14 @@ _08120AE4:
beq _08120B02
b _08120B10
_08120AEA:
- ldr r1, _08120AF8 @ =gUnknown_20370C0
+ ldr r1, _08120AF8 @ =gSpecialVar_0x8004
movs r0, 0x7
strh r0, [r1]
adds r0, r4, 0
bl sub_811FA78
b _08120B10
.align 2, 0
-_08120AF8: .4byte gUnknown_20370C0
+_08120AF8: .4byte gSpecialVar_0x8004
_08120AFC:
movs r0, 0x5
bl PlaySE
@@ -9878,7 +9878,7 @@ c2_8123744: @ 8123744
mov r7, r8
push {r7}
sub sp, 0xC
- ldr r6, _0812376C @ =gUnknown_203AD30
+ ldr r6, _0812376C @ =gSpecialVar_ItemId
ldrh r0, [r6]
cmp r0, 0
bne _08123778
@@ -9894,7 +9894,7 @@ c2_8123744: @ 8123744
ldr r1, [r3]
b _081237AE
.align 2, 0
-_0812376C: .4byte gUnknown_203AD30
+_0812376C: .4byte gSpecialVar_ItemId
_08123770: .4byte gUnknown_203B0A0
_08123774: .4byte sub_8122C30
_08123778:
@@ -9992,7 +9992,7 @@ sub_8123824: @ 8123824
ands r0, r1
cmp r0, 0
bne _08123880
- ldr r0, _08123890 @ =gUnknown_203AD30
+ ldr r0, _08123890 @ =gSpecialVar_ItemId
ldrh r4, [r0]
ldr r0, _08123894 @ =gUnknown_203B0A0
mov r8, r0
@@ -10032,7 +10032,7 @@ _08123880:
bx r0
.align 2, 0
_0812388C: .4byte gPaletteFade
-_08123890: .4byte gUnknown_203AD30
+_08123890: .4byte gSpecialVar_ItemId
_08123894: .4byte gUnknown_203B0A0
_08123898: .4byte gPlayerParty
_0812389C: .4byte gTasks
@@ -10130,7 +10130,7 @@ _08123950:
beq _08123A32
b _08123A40
_08123956:
- ldr r5, _08123998 @ =gUnknown_203AD30
+ ldr r5, _08123998 @ =gSpecialVar_ItemId
ldrh r0, [r5]
movs r1, 0x1
bl sub_809A1D8
@@ -10158,7 +10158,7 @@ _08123956:
str r1, [r0]
b _08123A40
.align 2, 0
-_08123998: .4byte gUnknown_203AD30
+_08123998: .4byte gSpecialVar_ItemId
_0812399C: .4byte gUnknown_203B0D8
_081239A0: .4byte gStringVar4
_081239A4: .4byte gTasks
@@ -10317,7 +10317,7 @@ sub_8123ACC: @ 8123ACC
lsls r0, 16
lsrs r0, 16
mov r8, r0
- ldr r0, _08123B40 @ =gUnknown_20370D0
+ ldr r0, _08123B40 @ =gSpecialVar_Result
ldrh r7, [r0]
cmp r7, 0
bne _08123B4C
@@ -10350,7 +10350,7 @@ sub_8123ACC: @ 8123ACC
.align 2, 0
_08123B38: .4byte gUnknown_203B0A0
_08123B3C: .4byte gPlayerParty
-_08123B40: .4byte gUnknown_20370D0
+_08123B40: .4byte gSpecialVar_Result
_08123B44: .4byte gUnknown_203B0D8
_08123B48: .4byte sub_8122C30
_08123B4C:
@@ -10400,7 +10400,7 @@ sub_8123B78: @ 8123B78
muls r0, r1
ldr r1, _08123BBC @ =gPlayerParty
adds r0, r1
- ldr r1, _08123BC0 @ =gUnknown_203AD30
+ ldr r1, _08123BC0 @ =gSpecialVar_ItemId
ldrh r1, [r1]
movs r2, 0
movs r3, 0
@@ -10411,9 +10411,9 @@ _08123BB0: .4byte gPaletteFade
_08123BB4: .4byte gUnknown_203B0D8
_08123BB8: .4byte gUnknown_203B0A0
_08123BBC: .4byte gPlayerParty
-_08123BC0: .4byte gUnknown_203AD30
+_08123BC0: .4byte gSpecialVar_ItemId
_08123BC4:
- ldr r0, _08123BE4 @ =gUnknown_203AD30
+ ldr r0, _08123BE4 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldrh r1, [r1]
movs r2, 0
@@ -10431,7 +10431,7 @@ _08123BDE:
pop {r0}
bx r0
.align 2, 0
-_08123BE4: .4byte gUnknown_203AD30
+_08123BE4: .4byte gSpecialVar_ItemId
_08123BE8: .4byte gTasks
_08123BEC: .4byte sub_8123BF0
thumb_func_end sub_8123B78
@@ -11337,7 +11337,7 @@ sub_8124354: @ 8124354
lsrs r4, 24
movs r0, 0x5
bl PlaySE
- ldr r1, _0812437C @ =gUnknown_20370C0
+ ldr r1, _0812437C @ =gSpecialVar_0x8004
ldr r0, _08124380 @ =gUnknown_203B0A0
ldrb r0, [r0, 0x9]
lsls r0, 24
@@ -11349,7 +11349,7 @@ sub_8124354: @ 8124354
pop {r0}
bx r0
.align 2, 0
-_0812437C: .4byte gUnknown_20370C0
+_0812437C: .4byte gSpecialVar_0x8004
_08124380: .4byte gUnknown_203B0A0
thumb_func_end sub_8124354
@@ -12495,7 +12495,7 @@ _08124CCC:
mov r8, r1
movs r7, 0
_08124CD2:
- ldr r4, _08124D30 @ =gUnknown_203AD30
+ ldr r4, _08124D30 @ =gSpecialVar_ItemId
ldrh r0, [r4]
bl GetItemEffectType
lsls r0, 24
@@ -12529,7 +12529,7 @@ _08124D0C:
cmp r5, 0x5
bls _08124CEA
_08124D16:
- ldr r0, _08124D30 @ =gUnknown_203AD30
+ ldr r0, _08124D30 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetPocketByItemId
lsls r0, 24
@@ -12542,7 +12542,7 @@ _08124D28:
movs r0, 0x7F
b _08124D6A
.align 2, 0
-_08124D30: .4byte gUnknown_203AD30
+_08124D30: .4byte gSpecialVar_ItemId
_08124D34: .4byte gUnknown_203B0A0
_08124D38: .4byte gPlayerParty
_08124D3C: .4byte sub_8124DB0
@@ -12642,7 +12642,7 @@ _08124DDC: .4byte sub_8124DE0
thumb_func_start sub_8124DE0
sub_8124DE0: @ 8124DE0
push {r4,lr}
- ldr r4, _08124E0C @ =gUnknown_203AD30
+ ldr r4, _08124E0C @ =gSpecialVar_ItemId
ldrh r0, [r4]
bl sub_80A1150
lsls r0, 24
@@ -12661,7 +12661,7 @@ sub_8124DE0: @ 8124DE0
bl sub_811C540
b _08124E38
.align 2, 0
-_08124E0C: .4byte gUnknown_203AD30
+_08124E0C: .4byte gSpecialVar_ItemId
_08124E10: .4byte gUnknown_203B0A0
_08124E14: .4byte sub_8126BD4
_08124E18:
@@ -12694,7 +12694,7 @@ sub_8124E48: @ 8124E48
mov r7, r8
push {r7}
sub sp, 0xC
- ldr r7, _08124EBC @ =gUnknown_203AD30
+ ldr r7, _08124EBC @ =gSpecialVar_ItemId
ldrh r0, [r7]
bl ItemId_GetPocket
lsls r0, 24
@@ -12742,7 +12742,7 @@ _08124EB0:
bl SetMainCallback2
b _08124EE6
.align 2, 0
-_08124EBC: .4byte gUnknown_203AD30
+_08124EBC: .4byte gSpecialVar_ItemId
_08124EC0: .4byte gUnknown_203B0A0
_08124EC4: .4byte gPlayerParty
_08124EC8:
@@ -12804,7 +12804,7 @@ sub_8124EFC: @ 8124EFC
adds r0, r5, 0
adds r1, r4, 0
bl RemoveMonPPBonus
- ldr r7, _08124F90 @ =gUnknown_203AD30
+ ldr r7, _08124F90 @ =gSpecialVar_ItemId
ldrh r0, [r7]
bl ItemIdToBattleMoveId
adds r1, r0, 0
@@ -12837,7 +12837,7 @@ _08124F7C:
.align 2, 0
_08124F88: .4byte gUnknown_203B0A0
_08124F8C: .4byte gPlayerParty
-_08124F90: .4byte gUnknown_203AD30
+_08124F90: .4byte gSpecialVar_ItemId
_08124F94:
ldr r4, _08124FC0 @ =gUnknown_203B0A0
ldrb r0, [r4, 0x8]
@@ -13242,7 +13242,7 @@ sub_81252D0: @ 81252D0
muls r1, r0
ldr r0, _08125304 @ =gPlayerParty
adds r5, r1, r0
- ldr r0, _08125308 @ =gUnknown_203AD30
+ ldr r0, _08125308 @ =gSpecialVar_ItemId
ldrh r6, [r0]
adds r0, r5, 0
adds r1, r6, 0
@@ -13255,7 +13255,7 @@ sub_81252D0: @ 81252D0
.align 2, 0
_08125300: .4byte gUnknown_203B0A0
_08125304: .4byte gPlayerParty
-_08125308: .4byte gUnknown_203AD30
+_08125308: .4byte gSpecialVar_ItemId
_0812530C:
adds r0, r6, 0
bl IsHPRecoveryItem
@@ -13351,7 +13351,7 @@ ItemUseCB_Medicine: @ 81253B0
muls r1, r0
ldr r0, _0812543C @ =gPlayerParty
adds r5, r1, r0
- ldr r0, _08125440 @ =gUnknown_203AD30
+ ldr r0, _08125440 @ =gSpecialVar_ItemId
ldrh r6, [r0]
adds r0, r5, 0
adds r1, r6, 0
@@ -13399,7 +13399,7 @@ _08125428:
.align 2, 0
_08125438: .4byte gUnknown_203B0A0
_0812543C: .4byte gPlayerParty
-_08125440: .4byte gUnknown_203AD30
+_08125440: .4byte gSpecialVar_ItemId
_08125444: .4byte gUnknown_203B0C0
_08125448: .4byte gUnknown_84169DC
_0812544C:
@@ -13735,7 +13735,7 @@ sub_81256F8: @ 81256F8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _08125710 @ =gUnknown_203AD30
+ ldr r0, _08125710 @ =gSpecialVar_ItemId
ldrh r0, [r0]
cmp r0, 0xAF
bne _0812571C
@@ -13745,7 +13745,7 @@ sub_81256F8: @ 81256F8
adds r0, r1
b _08125726
.align 2, 0
-_08125710: .4byte gUnknown_203AD30
+_08125710: .4byte gSpecialVar_ItemId
_08125714: .4byte gSaveBlock1Ptr
_08125718: .4byte 0x00003108
_0812571C:
@@ -13878,7 +13878,7 @@ sub_812580C: @ 812580C
muls r0, r1
ldr r1, _08125864 @ =gPlayerParty
adds r0, r1
- ldr r1, _08125868 @ =gUnknown_203AD30
+ ldr r1, _08125868 @ =gSpecialVar_ItemId
ldrh r1, [r1]
ldrb r2, [r3, 0x9]
ldrb r3, [r3, 0xE]
@@ -13909,7 +13909,7 @@ sub_812580C: @ 812580C
.align 2, 0
_08125860: .4byte gUnknown_203B0A0
_08125864: .4byte gPlayerParty
-_08125868: .4byte gUnknown_203AD30
+_08125868: .4byte gSpecialVar_ItemId
_0812586C: .4byte gUnknown_203B0C0
_08125870: .4byte gUnknown_84169DC
_08125874: .4byte gTasks
@@ -13947,7 +13947,7 @@ sub_8125898: @ 8125898
ldr r0, _08125934 @ =gPlayerParty
adds r4, r0
ldrb r0, [r5, 0x9]
- ldr r6, _08125938 @ =gUnknown_203AD30
+ ldr r6, _08125938 @ =gSpecialVar_ItemId
ldrh r1, [r6]
ldrb r2, [r5, 0xE]
bl ExecuteTableBasedItemEffect__
@@ -14001,7 +14001,7 @@ sub_8125898: @ 8125898
.align 2, 0
_08125930: .4byte gUnknown_203B0A0
_08125934: .4byte gPlayerParty
-_08125938: .4byte gUnknown_203AD30
+_08125938: .4byte gSpecialVar_ItemId
_0812593C: .4byte gUnknown_203B0C0
_08125940: .4byte 0x0000ffff
_08125944: .4byte gStringVar1
@@ -14020,7 +14020,7 @@ sub_8125958: @ 8125958
lsrs r6, r0, 24
movs r4, 0
ldr r7, _08125990 @ =gUnknown_203B0AE
- ldr r0, _08125994 @ =gUnknown_203AD30
+ ldr r0, _08125994 @ =gSpecialVar_ItemId
ldrh r5, [r0]
movs r0, 0xE
negs r0, r0
@@ -14041,7 +14041,7 @@ sub_8125958: @ 8125958
b _081259F6
.align 2, 0
_08125990: .4byte gUnknown_203B0AE
-_08125994: .4byte gUnknown_203AD30
+_08125994: .4byte gSpecialVar_ItemId
_08125998: .4byte gUnknown_203B0C0
_0812599C: .4byte gUnknown_84169DC
_081259A0:
@@ -14275,7 +14275,7 @@ sub_8125B40: @ 8125B40
movs r0, 0xE
adds r0, r7
mov r8, r0
- ldr r0, _08125BD8 @ =gUnknown_203AD30
+ ldr r0, _08125BD8 @ =gSpecialVar_ItemId
ldrh r5, [r0]
ldr r1, _08125BDC @ =gStringVar1
adds r0, r4, 0
@@ -14325,7 +14325,7 @@ sub_8125B40: @ 8125B40
.align 2, 0
_08125BD0: .4byte gUnknown_203B0A0
_08125BD4: .4byte gPlayerParty
-_08125BD8: .4byte gUnknown_203AD30
+_08125BD8: .4byte gSpecialVar_ItemId
_08125BDC: .4byte gStringVar1
_08125BE0: .4byte gStringVar2
_08125BE4: .4byte gMoveNames
@@ -14391,7 +14391,7 @@ sub_8125C48: @ 8125C48
adds r5, r1, r0
adds r6, r2, 0
adds r6, 0xE
- ldr r0, _08125CD4 @ =gUnknown_203AD30
+ ldr r0, _08125CD4 @ =gSpecialVar_ItemId
ldrh r4, [r0]
movs r1, 0x2
ldrsh r0, [r6, r1]
@@ -14441,7 +14441,7 @@ _08125C84:
.align 2, 0
_08125CCC: .4byte gUnknown_203B0A0
_08125CD0: .4byte gPlayerParty
-_08125CD4: .4byte gUnknown_203AD30
+_08125CD4: .4byte gSpecialVar_ItemId
_08125CD8: .4byte gStringVar1
_08125CDC: .4byte gStringVar2
_08125CE0: .4byte gMoveNames
@@ -14516,7 +14516,7 @@ _08125D6C: .4byte gUnknown_203B0A0
_08125D70:
cmp r0, 0x2
bne _08125D78
- ldr r0, _08125D84 @ =gUnknown_20370D0
+ ldr r0, _08125D84 @ =gSpecialVar_Result
strh r2, [r0]
_08125D78:
adds r0, r5, 0
@@ -14526,7 +14526,7 @@ _08125D7E:
pop {r0}
bx r0
.align 2, 0
-_08125D84: .4byte gUnknown_20370D0
+_08125D84: .4byte gSpecialVar_Result
thumb_func_end sub_8125D2C
thumb_func_start sub_8125D88
@@ -14684,7 +14684,7 @@ sub_8125E84: @ 8125E84
lsls r2, 16
lsrs r2, 16
ldrb r0, [r4, 0x9]
- ldr r1, _08125ED8 @ =gUnknown_203AD30
+ ldr r1, _08125ED8 @ =gSpecialVar_ItemId
ldrh r1, [r1]
ldr r3, _08125EDC @ =sub_8124EFC
bl sub_811C568
@@ -14696,7 +14696,7 @@ sub_8125E84: @ 8125E84
.align 2, 0
_08125ED0: .4byte gUnknown_203B0A0
_08125ED4: .4byte gPlayerParty
-_08125ED8: .4byte gUnknown_203AD30
+_08125ED8: .4byte gSpecialVar_ItemId
_08125EDC: .4byte sub_8124EFC
_08125EE0: .4byte gUnknown_3005E98
_08125EE4: .4byte sub_8125F4C
@@ -14794,7 +14794,7 @@ sub_8125F5C: @ 8125F5C
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
- ldr r0, _08125FEC @ =gUnknown_203AD30
+ ldr r0, _08125FEC @ =gSpecialVar_ItemId
ldrh r2, [r0]
movs r0, 0x4
adds r1, r6, 0
@@ -14828,7 +14828,7 @@ sub_8125F5C: @ 8125F5C
.align 2, 0
_08125FE4: .4byte gUnknown_203B0A0
_08125FE8: .4byte gPlayerParty
-_08125FEC: .4byte gUnknown_203AD30
+_08125FEC: .4byte gSpecialVar_ItemId
_08125FF0: .4byte gStringVar1
_08125FF4: .4byte gStringVar2
_08125FF8: .4byte gMoveNames
@@ -15077,7 +15077,7 @@ _0812620C: .4byte sub_812628C
_08126210:
cmp r0, 0x2
bne _08126218
- ldr r0, _08126228 @ =gUnknown_20370D0
+ ldr r0, _08126228 @ =gSpecialVar_Result
strh r5, [r0]
_08126218:
ldr r0, _0812622C @ =gTasks
@@ -15089,7 +15089,7 @@ _08126218:
str r0, [r1]
b _0812626A
.align 2, 0
-_08126228: .4byte gUnknown_20370D0
+_08126228: .4byte gSpecialVar_Result
_0812622C: .4byte gTasks
_08126230: .4byte sub_81255BC
_08126234:
@@ -15164,7 +15164,7 @@ dp05_rare_candy: @ 81262AC
muls r1, r0
ldr r0, _081262EC @ =gPlayerParty
adds r4, r1, r0
- ldr r0, _081262F0 @ =gUnknown_203AD30
+ ldr r0, _081262F0 @ =gSpecialVar_ItemId
ldrh r5, [r0]
adds r0, r4, 0
movs r1, 0x38
@@ -15182,7 +15182,7 @@ dp05_rare_candy: @ 81262AC
.align 2, 0
_081262E8: .4byte gUnknown_203B0A0
_081262EC: .4byte gPlayerParty
-_081262F0: .4byte gUnknown_203AD30
+_081262F0: .4byte gSpecialVar_ItemId
_081262F4:
movs r4, 0x1
_081262F6:
@@ -15252,7 +15252,7 @@ sub_8126350: @ 8126350
adds r0, r4, 0
bl sub_811D130
ldrb r0, [r6, 0x9]
- ldr r5, _0812641C @ =gUnknown_203AD30
+ ldr r5, _0812641C @ =gSpecialVar_ItemId
ldrh r1, [r5]
movs r2, 0
bl ExecuteTableBasedItemEffect__
@@ -15316,7 +15316,7 @@ sub_8126350: @ 8126350
_08126410: .4byte gUnknown_203B0A0
_08126414: .4byte gPlayerParty
_08126418: .4byte gUnknown_203B09C
-_0812641C: .4byte gUnknown_203AD30
+_0812641C: .4byte gSpecialVar_ItemId
_08126420: .4byte gUnknown_203B0C0
_08126424: .4byte 0x0000ffff
_08126428: .4byte gStringVar1
@@ -15919,7 +15919,7 @@ sub_81268D4: @ 81268D4
lsrs r0, 16
mov r8, r0
ldrb r0, [r6, 0x9]
- ldr r1, _08126938 @ =gUnknown_203AD30
+ ldr r1, _08126938 @ =gSpecialVar_ItemId
ldrh r1, [r1]
movs r2, 0
bl ExecuteTableBasedItemEffect__
@@ -15938,7 +15938,7 @@ _08126920:
.align 2, 0
_08126930: .4byte gUnknown_203B0A0
_08126934: .4byte gPlayerParty
-_08126938: .4byte gUnknown_203AD30
+_08126938: .4byte gSpecialVar_ItemId
_0812693C: .4byte gTasks
_08126940: .4byte sub_8126A18
_08126944:
@@ -16108,13 +16108,13 @@ _08126A94:
beq _08126AB4
ldr r0, _08126AD8 @ =gUnknown_203B0D0
ldr r1, [r0]
- ldr r0, _08126ADC @ =gUnknown_203AD30
+ ldr r0, _08126ADC @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _08126AE0 @ =0x0000ffff
movs r0, 0x4
bl sub_80A2294
_08126AB4:
- ldr r0, _08126ADC @ =gUnknown_203AD30
+ ldr r0, _08126ADC @ =gSpecialVar_ItemId
ldrh r0, [r0]
movs r1, 0x1
bl sub_809A1D8
@@ -16133,7 +16133,7 @@ _08126ABE:
.align 2, 0
_08126AD4: .4byte gUnknown_203B0C0
_08126AD8: .4byte gUnknown_203B0D0
-_08126ADC: .4byte gUnknown_203AD30
+_08126ADC: .4byte gSpecialVar_ItemId
_08126AE0: .4byte 0x0000ffff
_08126AE4: .4byte gTasks
_08126AE8: .4byte sub_81255BC
@@ -16206,7 +16206,7 @@ sub_8126B60: @ 8126B60
muls r0, r1
ldr r1, _08126BB4 @ =gPlayerParty
adds r0, r1
- ldr r1, _08126BB8 @ =gUnknown_203AD30
+ ldr r1, _08126BB8 @ =gSpecialVar_ItemId
ldrh r1, [r1]
ldrb r2, [r2, 0x9]
movs r3, 0
@@ -16232,7 +16232,7 @@ sub_8126B60: @ 8126B60
.align 2, 0
_08126BB0: .4byte gUnknown_203B0A0
_08126BB4: .4byte gPlayerParty
-_08126BB8: .4byte gUnknown_203AD30
+_08126BB8: .4byte gSpecialVar_ItemId
_08126BBC: .4byte gUnknown_203B0C0
_08126BC0: .4byte gUnknown_84169DC
_08126BC4: .4byte gTasks
@@ -16253,7 +16253,7 @@ sub_8126BD4: @ 8126BD4
ldr r0, [r4]
str r0, [r1]
ldrb r0, [r4, 0x9]
- ldr r5, _08126C18 @ =gUnknown_203AD30
+ ldr r5, _08126C18 @ =gSpecialVar_ItemId
ldrh r1, [r5]
movs r2, 0
bl ExecuteTableBasedItemEffect__
@@ -16276,7 +16276,7 @@ sub_8126BD4: @ 8126BD4
.align 2, 0
_08126C10: .4byte gUnknown_300537C
_08126C14: .4byte gUnknown_203B0A0
-_08126C18: .4byte gUnknown_203AD30
+_08126C18: .4byte gSpecialVar_ItemId
_08126C1C: .4byte gPlayerParty
_08126C20: .4byte 0x0000ffff
thumb_func_end sub_8126BD4
@@ -16294,7 +16294,7 @@ sub_8126C24: @ 8126C24
muls r0, r1
ldr r1, _08126C58 @ =gPlayerParty
adds r0, r1
- ldr r1, _08126C5C @ =gUnknown_203AD30
+ ldr r1, _08126C5C @ =gSpecialVar_ItemId
ldrh r2, [r1]
movs r1, 0x2
bl GetEvolutionTargetSpecies
@@ -16307,7 +16307,7 @@ sub_8126C24: @ 8126C24
.align 2, 0
_08126C54: .4byte gUnknown_203B0A0
_08126C58: .4byte gPlayerParty
-_08126C5C: .4byte gUnknown_203AD30
+_08126C5C: .4byte gSpecialVar_ItemId
_08126C60:
movs r0, 0x1
_08126C62:
@@ -16653,7 +16653,7 @@ _08126ED8: .4byte sub_80568A8
sub_8126EDC: @ 8126EDC
push {lr}
sub sp, 0xC
- ldr r0, _08126EF8 @ =gUnknown_203AD30
+ ldr r0, _08126EF8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetPocketByItemId
lsls r0, 24
@@ -16665,7 +16665,7 @@ sub_8126EDC: @ 8126EDC
ldr r1, _08126EFC @ =sub_8124D90
b _08126F0A
.align 2, 0
-_08126EF8: .4byte gUnknown_203AD30
+_08126EF8: .4byte gSpecialVar_ItemId
_08126EFC: .4byte sub_8124D90
_08126F00:
ldr r1, _08126F04 @ =sub_8124DA0
@@ -16686,7 +16686,7 @@ _08126F0A:
movs r3, 0
bl sub_811EA44
ldr r1, _08126F38 @ =gUnknown_203B0A0
- ldr r0, _08126F3C @ =gUnknown_203AD30
+ ldr r0, _08126F3C @ =gSpecialVar_ItemId
ldrh r0, [r0]
strh r0, [r1, 0xC]
add sp, 0xC
@@ -16696,7 +16696,7 @@ _08126F0A:
_08126F30: .4byte sub_8124DB0
_08126F34: .4byte sub_811FB28
_08126F38: .4byte gUnknown_203B0A0
-_08126F3C: .4byte gUnknown_203AD30
+_08126F3C: .4byte gSpecialVar_ItemId
thumb_func_end sub_8126EDC
thumb_func_start sub_8126F40
@@ -16958,7 +16958,7 @@ sub_812713C: @ 812713C
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, _08127194 @ =gUnknown_20370D0
+ ldr r0, _08127194 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0
bne _0812719C
@@ -16980,7 +16980,7 @@ sub_812713C: @ 812713C
.align 2, 0
_0812718C: .4byte gUnknown_203B0A0
_08127190: .4byte gPlayerParty
-_08127194: .4byte gUnknown_20370D0
+_08127194: .4byte gSpecialVar_Result
_08127198: .4byte gUnknown_203B0D8
_0812719C:
ldrb r0, [r6, 0x8]
@@ -17869,7 +17869,7 @@ _08127850:
movs r3, 0
bl sub_811EA44
ldr r1, _08127880 @ =gUnknown_203B0A0
- ldr r0, _08127884 @ =gUnknown_20370C6
+ ldr r0, _08127884 @ =gSpecialVar_0x8007
ldrh r0, [r0]
strb r0, [r1, 0x9]
_08127870:
@@ -17880,7 +17880,7 @@ _08127870:
_08127878: .4byte sub_8126DC8
_0812787C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
_08127880: .4byte gUnknown_203B0A0
-_08127884: .4byte gUnknown_20370C6
+_08127884: .4byte gSpecialVar_0x8007
thumb_func_end sub_812781C
thumb_func_start sub_8127888
@@ -18088,7 +18088,7 @@ _08127A24: .4byte gBattleTypeFlags
_08127A28: .4byte sub_8120C3C
_08127A2C: .4byte sub_8107ECC
_08127A30:
- ldr r0, _08127A74 @ =gUnknown_203AD30
+ ldr r0, _08127A74 @ =gSpecialVar_ItemId
ldrh r0, [r0]
bl GetPocketByItemId
lsls r0, 24
@@ -18119,7 +18119,7 @@ _08127A62:
pop {r0}
bx r0
.align 2, 0
-_08127A74: .4byte gUnknown_203AD30
+_08127A74: .4byte gSpecialVar_ItemId
_08127A78: .4byte sub_8107ECC
_08127A7C: .4byte sub_8124DB0
_08127A80: .4byte sub_811FB28
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 6ec2ca7be..279270fbb 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -57,8 +57,8 @@ _08088E6C:
_08088E70: .4byte gUnknown_844E850
thumb_func_end sub_8088E38
- thumb_func_start sub_8088E74
-sub_8088E74: @ 8088E74
+ thumb_func_start GetSetPokedexFlag
+GetSetPokedexFlag: @ 8088E74
push {lr}
lsls r0, 16
lsrs r0, 16
@@ -70,7 +70,7 @@ sub_8088E74: @ 8088E74
asrs r0, 24
pop {r1}
bx r1
- thumb_func_end sub_8088E74
+ thumb_func_end GetSetPokedexFlag
thumb_func_start pokedex_count
pokedex_count: @ 8088E8C
@@ -101,7 +101,7 @@ _08088EB2:
lsrs r0, 16
movs r1, 0x1
_08088EBA:
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088ECA
@@ -145,7 +145,7 @@ _08088EFC:
lsrs r0, 16
movs r1, 0x1
_08088F04:
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088F14
@@ -176,7 +176,7 @@ _08088F28:
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088F48
@@ -203,7 +203,7 @@ _08088F5C:
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088F74
@@ -230,7 +230,7 @@ _08088F88:
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088FD6
@@ -244,7 +244,7 @@ _08088FA4:
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088FD6
@@ -259,7 +259,7 @@ _08088FC2:
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088FE0
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index fab76b56f..0d4ee1bcb 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -424,11 +424,11 @@ _08044834: .4byte gUnknown_825E032
sub_8044838: @ 8044838
push {r4-r7,lr}
sub sp, 0x14
- ldr r0, _08044888 @ =gUnknown_20370C0
+ ldr r0, _08044888 @ =gSpecialVar_0x8004
ldrh r5, [r0]
ldr r0, _0804488C @ =gSpecialVar_0x8005
ldrh r4, [r0]
- ldr r0, _08044890 @ =gUnknown_20370C4
+ ldr r0, _08044890 @ =gSpecialVar_0x8006
ldrh r6, [r0]
bl ZeroEnemyPartyMons
ldr r7, _08044894 @ =gEnemyParty
@@ -461,9 +461,9 @@ _08044880:
pop {r0}
bx r0
.align 2, 0
-_08044888: .4byte gUnknown_20370C0
+_08044888: .4byte gSpecialVar_0x8004
_0804488C: .4byte gSpecialVar_0x8005
-_08044890: .4byte gUnknown_20370C4
+_08044890: .4byte gSpecialVar_0x8006
_08044894: .4byte gEnemyParty
thumb_func_end sub_8044838
@@ -482,13 +482,13 @@ sub_8044898: @ 8044898
orrs r1, r0
lsrs r1, 31
adds r0, r4, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _080448EE
adds r0, r4, 0
adds r1, r5, 0
- bl sub_8088E74
+ bl GetSetPokedexFlag
adds r0, r4, 0
bl NationalPokedexNumToSpecies
lsls r0, 16
diff --git a/asm/pokemon_size_record.s b/asm/pokemon_size_record.s
index 56a5d54f5..ac1f2a017 100644
--- a/asm/pokemon_size_record.s
+++ b/asm/pokemon_size_record.s
@@ -211,14 +211,14 @@ sub_80A082C: @ 80A082C
adds r7, r1, 0
lsls r0, 16
lsrs r6, r0, 16
- ldr r1, _080A0844 @ =gUnknown_20370D0
+ ldr r1, _080A0844 @ =gSpecialVar_Result
ldrh r0, [r1]
cmp r0, 0x5
bls _080A0848
movs r0, 0
b _080A08C4
.align 2, 0
-_080A0844: .4byte gUnknown_20370D0
+_080A0844: .4byte gSpecialVar_Result
_080A0848:
ldrh r1, [r1]
movs r0, 0x64
@@ -343,7 +343,7 @@ sub_80A0930: @ 80A0930
ldr r0, _080A0950 @ =0x0000403d
bl GetVarPointer
adds r1, r0, 0
- ldr r4, _080A0954 @ =gUnknown_20370D0
+ ldr r4, _080A0954 @ =gSpecialVar_Result
movs r0, 0xD6
bl sub_80A082C
lsls r0, 24
@@ -354,7 +354,7 @@ sub_80A0930: @ 80A0930
bx r0
.align 2, 0
_080A0950: .4byte 0x0000403d
-_080A0954: .4byte gUnknown_20370D0
+_080A0954: .4byte gSpecialVar_Result
thumb_func_end sub_80A0930
thumb_func_start sub_80A0958
@@ -389,7 +389,7 @@ sub_80A0984: @ 80A0984
ldr r0, _080A09A4 @ =0x00004040
bl GetVarPointer
adds r1, r0, 0
- ldr r4, _080A09A8 @ =gUnknown_20370D0
+ ldr r4, _080A09A8 @ =gSpecialVar_Result
movs r0, 0x81
bl sub_80A082C
lsls r0, 24
@@ -400,7 +400,7 @@ sub_80A0984: @ 80A0984
bx r0
.align 2, 0
_080A09A4: .4byte 0x00004040
-_080A09A8: .4byte gUnknown_20370D0
+_080A09A8: .4byte gSpecialVar_Result
thumb_func_end sub_80A0984
thumb_func_start GiveGiftRibbonToParty
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 8cb95db46..37f9e9762 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1139,7 +1139,7 @@ _0808C1DC: .4byte gPlayerParty
thumb_func_start CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
CountPartyAliveNonEggMons_IgnoreVar0x8004Slot: @ 808C1E0
push {lr}
- ldr r0, _0808C1F4 @ =gUnknown_20370C0
+ ldr r0, _0808C1F4 @ =gSpecialVar_0x8004
ldrb r0, [r0]
bl CountPartyAliveNonEggMonsExcept
lsls r0, 24
@@ -1147,7 +1147,7 @@ CountPartyAliveNonEggMons_IgnoreVar0x8004Slot: @ 808C1E0
pop {r1}
bx r1
.align 2, 0
-_0808C1F4: .4byte gUnknown_20370C0
+_0808C1F4: .4byte gSpecialVar_0x8004
thumb_func_end CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
thumb_func_start CountPartyMons
@@ -6609,7 +6609,7 @@ _0808EF08: .4byte sub_808CE60
sub_808EF0C: @ 808EF0C
push {lr}
sub sp, 0x4
- ldr r0, _0808EF40 @ =gUnknown_203AD30
+ ldr r0, _0808EF40 @ =gSpecialVar_ItemId
ldrh r1, [r0]
mov r0, sp
strh r1, [r0]
@@ -6631,7 +6631,7 @@ sub_808EF0C: @ 808EF0C
bl SetMonData
b _0808EF56
.align 2, 0
-_0808EF40: .4byte gUnknown_203AD30
+_0808EF40: .4byte gSpecialVar_ItemId
_0808EF44: .4byte gUnknown_20397B4
_0808EF48: .4byte gPlayerParty
_0808EF4C:
diff --git a/asm/prof_pc.s b/asm/prof_pc.s
index ae8c68ded..9c9dfa79c 100644
--- a/asm/prof_pc.s
+++ b/asm/prof_pc.s
@@ -8,7 +8,7 @@
thumb_func_start sub_80CA3D8
sub_80CA3D8: @ 80CA3D8
push {lr}
- ldr r0, _080CA3F4 @ =gUnknown_20370C0
+ ldr r0, _080CA3F4 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
bne _080CA3FC
@@ -20,7 +20,7 @@ sub_80CA3D8: @ 80CA3D8
bl sub_8088EDC
b _080CA40C
.align 2, 0
-_080CA3F4: .4byte gUnknown_20370C0
+_080CA3F4: .4byte gSpecialVar_0x8004
_080CA3F8: .4byte gSpecialVar_0x8005
_080CA3FC:
movs r0, 0
@@ -30,7 +30,7 @@ _080CA3FC:
movs r0, 0x1
bl pokedex_count
_080CA40C:
- ldr r1, _080CA420 @ =gUnknown_20370C4
+ ldr r1, _080CA420 @ =gSpecialVar_0x8006
strh r0, [r1]
bl sub_806E25C
lsls r0, 16
@@ -39,7 +39,7 @@ _080CA40C:
bx r1
.align 2, 0
_080CA41C: .4byte gSpecialVar_0x8005
-_080CA420: .4byte gUnknown_20370C4
+_080CA420: .4byte gSpecialVar_0x8006
thumb_func_end sub_80CA3D8
thumb_func_start sub_80CA424
@@ -47,7 +47,7 @@ sub_80CA424: @ 80CA424
push {lr}
lsls r0, 16
lsrs r2, r0, 16
- ldr r1, _080CA440 @ =gUnknown_20370D0
+ ldr r1, _080CA440 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
cmp r2, 0x9
@@ -59,7 +59,7 @@ _080CA436:
ldr r0, _080CA444 @ =gUnknown_81A6D6D
b _080CA51A
.align 2, 0
-_080CA440: .4byte gUnknown_20370D0
+_080CA440: .4byte gSpecialVar_Result
_080CA444: .4byte gUnknown_81A6D6D
_080CA448:
cmp r2, 0x1D
@@ -155,7 +155,7 @@ _080CA4D8:
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8088E74
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _080CA500
@@ -165,10 +165,10 @@ _080CA4F6:
.align 2, 0
_080CA4FC: .4byte gUnknown_81A7137
_080CA500:
- ldr r1, _080CA504 @ =gUnknown_20370D0
+ ldr r1, _080CA504 @ =gSpecialVar_Result
b _080CA514
.align 2, 0
-_080CA504: .4byte gUnknown_20370D0
+_080CA504: .4byte gSpecialVar_Result
_080CA508:
cmp r2, 0x97
beq _080CA514
@@ -191,14 +191,14 @@ _080CA520: .4byte gUnknown_81A7175
thumb_func_start sub_80CA524
sub_80CA524: @ 80CA524
push {lr}
- ldr r0, _080CA538 @ =gUnknown_20370C0
+ ldr r0, _080CA538 @ =gSpecialVar_0x8004
ldrh r0, [r0]
bl sub_80CA424
bl ShowFieldMessage
pop {r0}
bx r0
.align 2, 0
-_080CA538: .4byte gUnknown_20370C0
+_080CA538: .4byte gSpecialVar_0x8004
thumb_func_end sub_80CA524
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom6.s b/asm/rom6.s
index 6d4ef8bc2..06c2d30a2 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -31,7 +31,7 @@ npc_before_player_of_type: @ 80C97A8
ldrb r0, [r2, 0x5]
cmp r0, r5
bne _080C97F4
- ldr r1, _080C97F0 @ =gUnknown_20370D2
+ ldr r1, _080C97F0 @ =gSpecialVar_LastTalked
ldrb r0, [r2, 0x8]
strh r0, [r1]
movs r0, 0x1
@@ -39,7 +39,7 @@ npc_before_player_of_type: @ 80C97A8
.align 2, 0
_080C97E8: .4byte gUnknown_2039A04
_080C97EC: .4byte gMapObjects
-_080C97F0: .4byte gUnknown_20370D2
+_080C97F0: .4byte gSpecialVar_LastTalked
_080C97F4:
movs r0, 0
_080C97F6:
diff --git a/asm/scrcmd.s b/asm/scrcmd.s
index b4f3678de..e8ffcf3ab 100644
--- a/asm/scrcmd.s
+++ b/asm/scrcmd.s
@@ -46,17 +46,17 @@ sub_8069EFC: @ 8069EFC
bl ScriptReadHalfword
lsls r0, 16
lsrs r0, 14
- ldr r1, _08069F18 @ =gUnknown_815FD60
+ ldr r1, _08069F18 @ =gSpecials
adds r1, r0, r1
- ldr r0, _08069F1C @ =gUnknown_8160450
+ ldr r0, _08069F1C @ =gStdScripts
cmp r1, r0
bcs _08069F20
ldr r0, [r1]
bl _call_via_r0
b _08069F2C
.align 2, 0
-_08069F18: .4byte gUnknown_815FD60
-_08069F1C: .4byte gUnknown_8160450
+_08069F18: .4byte gSpecials
+_08069F1C: .4byte gStdScripts
_08069F20:
ldr r0, _08069F34 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c"
ldr r2, _08069F38 @ =gUnknown_83A7290 "0"
@@ -85,9 +85,9 @@ sub_8069F3C: @ 8069F3C
bl ScriptReadHalfword
lsls r0, 16
lsrs r0, 14
- ldr r1, _08069F6C @ =gUnknown_815FD60
+ ldr r1, _08069F6C @ =gSpecials
adds r1, r0, r1
- ldr r0, _08069F70 @ =gUnknown_8160450
+ ldr r0, _08069F70 @ =gStdScripts
cmp r1, r0
bcs _08069F74
ldr r0, [r1]
@@ -95,8 +95,8 @@ sub_8069F3C: @ 8069F3C
strh r0, [r5]
b _08069F80
.align 2, 0
-_08069F6C: .4byte gUnknown_815FD60
-_08069F70: .4byte gUnknown_8160450
+_08069F6C: .4byte gSpecials
+_08069F70: .4byte gStdScripts
_08069F74:
ldr r0, _08069F88 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c"
ldr r1, _08069F8C @ =0x00000107
@@ -368,7 +368,7 @@ ScrCmd_gotostd: @ 806A150
adds r0, 0x1
str r0, [r2, 0x8]
lsls r1, 2
- ldr r0, _0806A178 @ =gUnknown_8160450
+ ldr r0, _0806A178 @ =gStdScripts
adds r1, r0
ldr r0, _0806A17C @ =gUnknown_8160478
cmp r1, r0
@@ -381,7 +381,7 @@ _0806A170:
pop {r1}
bx r1
.align 2, 0
-_0806A178: .4byte gUnknown_8160450
+_0806A178: .4byte gStdScripts
_0806A17C: .4byte gUnknown_8160478
thumb_func_end ScrCmd_gotostd
@@ -394,7 +394,7 @@ ScrCmd_callstd: @ 806A180
adds r0, 0x1
str r0, [r2, 0x8]
lsls r1, 2
- ldr r0, _0806A1A8 @ =gUnknown_8160450
+ ldr r0, _0806A1A8 @ =gStdScripts
adds r1, r0
ldr r0, _0806A1AC @ =gUnknown_8160478
cmp r1, r0
@@ -407,7 +407,7 @@ _0806A1A0:
pop {r1}
bx r1
.align 2, 0
-_0806A1A8: .4byte gUnknown_8160450
+_0806A1A8: .4byte gStdScripts
_0806A1AC: .4byte gUnknown_8160478
thumb_func_end ScrCmd_callstd
@@ -432,7 +432,7 @@ ScrCmd_gotostd_if: @ 806A1B0
cmp r0, 0x1
bne _0806A1E8
lsls r0, r4, 2
- ldr r1, _0806A1F4 @ =gUnknown_8160450
+ ldr r1, _0806A1F4 @ =gStdScripts
adds r1, r0, r1
ldr r0, _0806A1F8 @ =gUnknown_8160478
cmp r1, r0
@@ -447,7 +447,7 @@ _0806A1E8:
bx r1
.align 2, 0
_0806A1F0: .4byte gUnknown_83A7248
-_0806A1F4: .4byte gUnknown_8160450
+_0806A1F4: .4byte gStdScripts
_0806A1F8: .4byte gUnknown_8160478
thumb_func_end ScrCmd_gotostd_if
@@ -472,7 +472,7 @@ ScrCmd_callstd_if: @ 806A1FC
cmp r0, 0x1
bne _0806A234
lsls r0, r4, 2
- ldr r1, _0806A240 @ =gUnknown_8160450
+ ldr r1, _0806A240 @ =gStdScripts
adds r1, r0, r1
ldr r0, _0806A244 @ =gUnknown_8160478
cmp r1, r0
@@ -487,7 +487,7 @@ _0806A234:
bx r1
.align 2, 0
_0806A23C: .4byte gUnknown_83A7248
-_0806A240: .4byte gUnknown_8160450
+_0806A240: .4byte gStdScripts
_0806A244: .4byte gUnknown_8160478
thumb_func_end ScrCmd_callstd_if
@@ -525,7 +525,7 @@ ScrCmd_setmysteryeventstatus: @ 806A274
adds r1, 0x1
str r1, [r0, 0x8]
adds r0, r2, 0
- bl sub_80DA8E8
+ bl SetMysteryEventScriptStatus
movs r0, 0
pop {r1}
bx r1
@@ -1003,7 +1003,7 @@ ScrCmd_random: @ 806A5DC
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
- ldr r5, _0806A60C @ =gUnknown_20370D0
+ ldr r5, _0806A60C @ =gSpecialVar_Result
bl Random
lsls r0, 16
lsrs r0, 16
@@ -1015,7 +1015,7 @@ ScrCmd_random: @ 806A5DC
pop {r1}
bx r1
.align 2, 0
-_0806A60C: .4byte gUnknown_20370D0
+_0806A60C: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_random
thumb_func_start sub_806A610
@@ -1035,7 +1035,7 @@ sub_806A610: @ 806A610
lsrs r0, 16
bl VarGet
adds r1, r0, 0
- ldr r5, _0806A658 @ =gUnknown_20370D0
+ ldr r5, _0806A658 @ =gSpecialVar_Result
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
@@ -1050,7 +1050,7 @@ sub_806A610: @ 806A610
pop {r1}
bx r1
.align 2, 0
-_0806A658: .4byte gUnknown_20370D0
+_0806A658: .4byte gSpecialVar_Result
thumb_func_end sub_806A610
thumb_func_start ScrCmd_takeitem
@@ -1070,7 +1070,7 @@ ScrCmd_takeitem: @ 806A65C
lsrs r0, 16
bl VarGet
adds r1, r0, 0
- ldr r5, _0806A69C @ =gUnknown_20370D0
+ ldr r5, _0806A69C @ =gSpecialVar_Result
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
@@ -1083,7 +1083,7 @@ ScrCmd_takeitem: @ 806A65C
pop {r1}
bx r1
.align 2, 0
-_0806A69C: .4byte gUnknown_20370D0
+_0806A69C: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_takeitem
thumb_func_start sub_806A6A0
@@ -1103,7 +1103,7 @@ sub_806A6A0: @ 806A6A0
lsrs r0, 16
bl VarGet
adds r1, r0, 0
- ldr r5, _0806A6E0 @ =gUnknown_20370D0
+ ldr r5, _0806A6E0 @ =gSpecialVar_Result
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
@@ -1116,7 +1116,7 @@ sub_806A6A0: @ 806A6A0
pop {r1}
bx r1
.align 2, 0
-_0806A6E0: .4byte gUnknown_20370D0
+_0806A6E0: .4byte gSpecialVar_Result
thumb_func_end sub_806A6A0
thumb_func_start sub_806A6E4
@@ -1136,7 +1136,7 @@ sub_806A6E4: @ 806A6E4
lsrs r0, 16
bl VarGet
adds r1, r0, 0
- ldr r5, _0806A724 @ =gUnknown_20370D0
+ ldr r5, _0806A724 @ =gSpecialVar_Result
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
@@ -1149,7 +1149,7 @@ sub_806A6E4: @ 806A6E4
pop {r1}
bx r1
.align 2, 0
-_0806A724: .4byte gUnknown_20370D0
+_0806A724: .4byte gSpecialVar_Result
thumb_func_end sub_806A6E4
thumb_func_start ScrCmd_checkitemtype
@@ -1161,7 +1161,7 @@ ScrCmd_checkitemtype: @ 806A728
bl VarGet
lsls r0, 16
lsrs r0, 16
- ldr r4, _0806A750 @ =gUnknown_20370D0
+ ldr r4, _0806A750 @ =gSpecialVar_Result
bl GetPocketByItemId
lsls r0, 24
lsrs r0, 24
@@ -1171,7 +1171,7 @@ ScrCmd_checkitemtype: @ 806A728
pop {r1}
bx r1
.align 2, 0
-_0806A750: .4byte gUnknown_20370D0
+_0806A750: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_checkitemtype
thumb_func_start ScrCmd_givepcitem
@@ -1193,7 +1193,7 @@ ScrCmd_givepcitem: @ 806A754
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
- ldr r5, _0806A794 @ =gUnknown_20370D0
+ ldr r5, _0806A794 @ =gSpecialVar_Result
adds r0, r4, 0
bl sub_809A3C8
lsls r0, 24
@@ -1204,7 +1204,7 @@ ScrCmd_givepcitem: @ 806A754
pop {r1}
bx r1
.align 2, 0
-_0806A794: .4byte gUnknown_20370D0
+_0806A794: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_givepcitem
thumb_func_start ScrCmd_checkpcitem
@@ -1226,7 +1226,7 @@ ScrCmd_checkpcitem: @ 806A798
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
- ldr r5, _0806A7D8 @ =gUnknown_20370D0
+ ldr r5, _0806A7D8 @ =gSpecialVar_Result
adds r0, r4, 0
bl sub_809A374
lsls r0, 24
@@ -1237,7 +1237,7 @@ ScrCmd_checkpcitem: @ 806A798
pop {r1}
bx r1
.align 2, 0
-_0806A7D8: .4byte gUnknown_20370D0
+_0806A7D8: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_checkpcitem
thumb_func_start sub_806A7DC
@@ -1540,19 +1540,19 @@ sub_806A9D8: @ 806A9D8
thumb_func_start sub_806A9DC
sub_806A9DC: @ 806A9DC
- ldr r0, _0806A9F0 @ =gUnknown_20370B8
+ ldr r0, _0806A9F0 @ =gSpecialVar_0x8000
movs r1, 0
strh r1, [r0]
- ldr r0, _0806A9F4 @ =gUnknown_20370BA
+ ldr r0, _0806A9F4 @ =gSpecialVar_0x8001
strh r1, [r0]
- ldr r0, _0806A9F8 @ =gUnknown_20370BC
+ ldr r0, _0806A9F8 @ =gSpecialVar_0x8002
strh r1, [r0]
movs r0, 0
bx lr
.align 2, 0
-_0806A9F0: .4byte gUnknown_20370B8
-_0806A9F4: .4byte gUnknown_20370BA
-_0806A9F8: .4byte gUnknown_20370BC
+_0806A9F0: .4byte gSpecialVar_0x8000
+_0806A9F4: .4byte gSpecialVar_0x8001
+_0806A9F8: .4byte gSpecialVar_0x8002
thumb_func_end sub_806A9DC
thumb_func_start ScrCmd_setweather
@@ -2344,7 +2344,7 @@ _0806B048: .4byte gSaveBlock1Ptr
thumb_func_start ScrCmd_getpartysize
ScrCmd_getpartysize: @ 806B04C
push {r4,lr}
- ldr r4, _0806B064 @ =gUnknown_20370D0
+ ldr r4, _0806B064 @ =gSpecialVar_Result
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
@@ -2354,7 +2354,7 @@ ScrCmd_getpartysize: @ 806B04C
pop {r1}
bx r1
.align 2, 0
-_0806B064: .4byte gUnknown_20370D0
+_0806B064: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_getpartysize
thumb_func_start ScrCmd_playse
@@ -3569,7 +3569,7 @@ sub_806B96C: @ 806B96C
ands r0, r1
cmp r0, 0
beq _0806B990
- ldr r0, _0806B98C @ =gUnknown_20370D4
+ ldr r0, _0806B98C @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x2
beq _0806B990
@@ -3577,49 +3577,49 @@ sub_806B96C: @ 806B96C
b _0806BA36
.align 2, 0
_0806B988: .4byte gMain
-_0806B98C: .4byte gUnknown_20370D4
+_0806B98C: .4byte gSpecialVar_Facing
_0806B990:
ldrh r1, [r2, 0x2C]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0806B9AC
- ldr r0, _0806B9A8 @ =gUnknown_20370D4
+ ldr r0, _0806B9A8 @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x1
beq _0806B9AC
movs r0, 0x2
b _0806BA36
.align 2, 0
-_0806B9A8: .4byte gUnknown_20370D4
+_0806B9A8: .4byte gSpecialVar_Facing
_0806B9AC:
ldrh r1, [r2, 0x2C]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0806B9C8
- ldr r0, _0806B9C4 @ =gUnknown_20370D4
+ ldr r0, _0806B9C4 @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x3
beq _0806B9C8
movs r0, 0x3
b _0806BA36
.align 2, 0
-_0806B9C4: .4byte gUnknown_20370D4
+_0806B9C4: .4byte gSpecialVar_Facing
_0806B9C8:
ldrh r1, [r2, 0x2C]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0806B9E4
- ldr r0, _0806B9E0 @ =gUnknown_20370D4
+ ldr r0, _0806B9E0 @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x4
beq _0806B9E4
movs r0, 0x4
b _0806BA36
.align 2, 0
-_0806B9E0: .4byte gUnknown_20370D4
+_0806B9E0: .4byte gSpecialVar_Facing
_0806B9E4:
ldrh r1, [r2, 0x2E]
movs r0, 0x80
@@ -3974,7 +3974,7 @@ sub_806BC40: @ 806BC40
bne _0806BC50
ldr r1, [r4, 0x64]
_0806BC50:
- ldr r4, _0806BC68 @ =gUnknown_20370C0
+ ldr r4, _0806BC68 @ =gSpecialVar_0x8004
movs r2, 0x1
negs r2, r2
movs r0, 0x6
@@ -3985,7 +3985,7 @@ _0806BC50:
pop {r1}
bx r1
.align 2, 0
-_0806BC68: .4byte gUnknown_20370C0
+_0806BC68: .4byte gSpecialVar_0x8004
thumb_func_end sub_806BC40
thumb_func_start ScrCmd_vmessage
@@ -4453,7 +4453,7 @@ ScrCmd_givemon: @ 806BFD0
ldrb r2, [r1]
adds r1, 0x1
str r1, [r4, 0x8]
- ldr r4, _0806C04C @ =gUnknown_20370D0
+ ldr r4, _0806C04C @ =gSpecialVar_Result
str r0, [sp]
str r2, [sp, 0x4]
adds r0, r6, 0
@@ -4473,7 +4473,7 @@ ScrCmd_givemon: @ 806BFD0
pop {r1}
bx r1
.align 2, 0
-_0806C04C: .4byte gUnknown_20370D0
+_0806C04C: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_givemon
thumb_func_start ScrCmd_giveegg
@@ -4485,7 +4485,7 @@ ScrCmd_giveegg: @ 806C050
bl VarGet
lsls r0, 16
lsrs r0, 16
- ldr r4, _0806C078 @ =gUnknown_20370D0
+ ldr r4, _0806C078 @ =gSpecialVar_Result
bl sub_80A01AC
lsls r0, 24
lsrs r0, 24
@@ -4495,7 +4495,7 @@ ScrCmd_giveegg: @ 806C050
pop {r1}
bx r1
.align 2, 0
-_0806C078: .4byte gUnknown_20370D0
+_0806C078: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_giveegg
thumb_func_start ScrCmd_setmonmove
@@ -4527,13 +4527,13 @@ ScrCmd_checkpartymove: @ 806C0A8
bl ScriptReadHalfword
lsls r0, 16
lsrs r7, r0, 16
- ldr r1, _0806C0BC @ =gUnknown_20370D0
+ ldr r1, _0806C0BC @ =gSpecialVar_Result
movs r0, 0x6
strh r0, [r1]
movs r6, 0
b _0806C0F6
.align 2, 0
-_0806C0BC: .4byte gUnknown_20370D0
+_0806C0BC: .4byte gSpecialVar_Result
_0806C0C0:
adds r0, r4, 0
movs r1, 0x2D
@@ -4547,14 +4547,14 @@ _0806C0C0:
lsrs r0, 24
cmp r0, 0x1
bne _0806C0F0
- ldr r0, _0806C0E8 @ =gUnknown_20370D0
+ ldr r0, _0806C0E8 @ =gSpecialVar_Result
strh r6, [r0]
- ldr r0, _0806C0EC @ =gUnknown_20370C0
+ ldr r0, _0806C0EC @ =gSpecialVar_0x8004
strh r5, [r0]
b _0806C116
.align 2, 0
-_0806C0E8: .4byte gUnknown_20370D0
-_0806C0EC: .4byte gUnknown_20370C0
+_0806C0E8: .4byte gSpecialVar_Result
+_0806C0EC: .4byte gSpecialVar_0x8004
_0806C0F0:
adds r0, r6, 0x1
lsls r0, 24
@@ -4652,7 +4652,7 @@ ScrCmd_checkmoney: @ 806C18C
str r0, [r4, 0x8]
cmp r1, 0
bne _0806C1BA
- ldr r4, _0806C1C4 @ =gUnknown_20370D0
+ ldr r4, _0806C1C4 @ =gSpecialVar_Result
ldr r0, _0806C1C8 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xA4
@@ -4669,7 +4669,7 @@ _0806C1BA:
pop {r1}
bx r1
.align 2, 0
-_0806C1C4: .4byte gUnknown_20370D0
+_0806C1C4: .4byte gSpecialVar_Result
_0806C1C8: .4byte gSaveBlock1Ptr
thumb_func_end ScrCmd_checkmoney
@@ -5133,7 +5133,7 @@ ScrCmd_setrespawn: @ 806C4D4
thumb_func_start ScrCmd_checkplayergender
ScrCmd_checkplayergender: @ 806C4F0
- ldr r1, _0806C500 @ =gUnknown_20370D0
+ ldr r1, _0806C500 @ =gSpecialVar_Result
ldr r0, _0806C504 @ =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
@@ -5141,7 +5141,7 @@ ScrCmd_checkplayergender: @ 806C4F0
movs r0, 0
bx lr
.align 2, 0
-_0806C500: .4byte gUnknown_20370D0
+_0806C500: .4byte gSpecialVar_Result
_0806C504: .4byte gSaveBlock2Ptr
thumb_func_end ScrCmd_checkplayergender
@@ -5452,13 +5452,13 @@ ScrCmd_givecoins: @ 806C74C
lsrs r0, 24
cmp r0, 0x1
bne _0806C774
- ldr r1, _0806C770 @ =gUnknown_20370D0
+ ldr r1, _0806C770 @ =gSpecialVar_Result
movs r0, 0
b _0806C778
.align 2, 0
-_0806C770: .4byte gUnknown_20370D0
+_0806C770: .4byte gSpecialVar_Result
_0806C774:
- ldr r1, _0806C780 @ =gUnknown_20370D0
+ ldr r1, _0806C780 @ =gSpecialVar_Result
movs r0, 0x1
_0806C778:
strh r0, [r1]
@@ -5466,7 +5466,7 @@ _0806C778:
pop {r1}
bx r1
.align 2, 0
-_0806C780: .4byte gUnknown_20370D0
+_0806C780: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_givecoins
thumb_func_start ScrCmd_takecoins
@@ -5483,13 +5483,13 @@ ScrCmd_takecoins: @ 806C784
lsrs r0, 24
cmp r0, 0x1
bne _0806C7AC
- ldr r1, _0806C7A8 @ =gUnknown_20370D0
+ ldr r1, _0806C7A8 @ =gSpecialVar_Result
movs r0, 0
b _0806C7B0
.align 2, 0
-_0806C7A8: .4byte gUnknown_20370D0
+_0806C7A8: .4byte gSpecialVar_Result
_0806C7AC:
- ldr r1, _0806C7B8 @ =gUnknown_20370D0
+ ldr r1, _0806C7B8 @ =gSpecialVar_Result
movs r0, 0x1
_0806C7B0:
strh r0, [r1]
@@ -5497,7 +5497,7 @@ _0806C7B0:
pop {r1}
bx r1
.align 2, 0
-_0806C7B8: .4byte gUnknown_20370D0
+_0806C7B8: .4byte gSpecialVar_Result
thumb_func_end ScrCmd_takecoins
thumb_func_start sub_806C7BC
@@ -5555,7 +5555,7 @@ ScrCmd_checkmonobedience: @ 806C80C
bl VarGet
lsls r0, 16
lsrs r0, 16
- ldr r4, _0806C83C @ =gUnknown_20370D0
+ ldr r4, _0806C83C @ =gSpecialVar_Result
movs r1, 0x64
muls r0, r1
ldr r1, _0806C840 @ =gPlayerParty
@@ -5569,7 +5569,7 @@ ScrCmd_checkmonobedience: @ 806C80C
pop {r1}
bx r1
.align 2, 0
-_0806C83C: .4byte gUnknown_20370D0
+_0806C83C: .4byte gSpecialVar_Result
_0806C840: .4byte gPlayerParty
thumb_func_end ScrCmd_checkmonobedience
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 239e6860f..f1127591d 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -78,7 +78,7 @@ ScriptMenu_Multichoice: @ 809C9B4
lsrs r0, 24
cmp r0, 0x1
beq _0809C9F8
- ldr r0, _0809C9F4 @ =gUnknown_20370D0
+ ldr r0, _0809C9F4 @ =gSpecialVar_Result
movs r1, 0xFF
strh r1, [r0]
movs r0, 0
@@ -92,7 +92,7 @@ ScriptMenu_Multichoice: @ 809C9B4
b _0809C9FA
.align 2, 0
_0809C9F0: .4byte sub_809CC98
-_0809C9F4: .4byte gUnknown_20370D0
+_0809C9F4: .4byte gSpecialVar_Result
_0809C9F8:
movs r0, 0
_0809C9FA:
@@ -126,7 +126,7 @@ ScriptMenu_MultichoiceWithDefault: @ 809CA04
lsrs r0, 24
cmp r0, 0x1
beq _0809CA54
- ldr r1, _0809CA50 @ =gUnknown_20370D0
+ ldr r1, _0809CA50 @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
str r4, [sp]
@@ -139,7 +139,7 @@ ScriptMenu_MultichoiceWithDefault: @ 809CA04
b _0809CA56
.align 2, 0
_0809CA4C: .4byte sub_809CC98
-_0809CA50: .4byte gUnknown_20370D0
+_0809CA50: .4byte gSpecialVar_Result
_0809CA54:
movs r0, 0
_0809CA56:
@@ -506,15 +506,15 @@ _0809CCF8:
bne _0809CD3C
movs r0, 0x5
bl PlaySE
- ldr r1, _0809CD24 @ =gUnknown_20370D0
+ ldr r1, _0809CD24 @ =gSpecialVar_Result
movs r0, 0x7F
strh r0, [r1]
b _0809CD2C
.align 2, 0
_0809CD20: .4byte gMain
-_0809CD24: .4byte gUnknown_20370D0
+_0809CD24: .4byte gSpecialVar_Result
_0809CD28:
- ldr r0, _0809CD44 @ =gUnknown_20370D0
+ ldr r0, _0809CD44 @ =gSpecialVar_Result
strh r1, [r0]
_0809CD2C:
ldrb r0, [r5, 0xC]
@@ -527,7 +527,7 @@ _0809CD3C:
pop {r0}
bx r0
.align 2, 0
-_0809CD44: .4byte gUnknown_20370D0
+_0809CD44: .4byte gSpecialVar_Result
thumb_func_end sub_809CC98
thumb_func_start sub_809CD48
@@ -628,7 +628,7 @@ sub_809CDEC: @ 809CDEC
.align 2, 0
_0809CE04: .4byte task_yes_no_maybe
_0809CE08:
- ldr r1, _0809CE30 @ =gUnknown_20370D0
+ ldr r1, _0809CE30 @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
ldr r0, _0809CE34 @ =sub_809D6D4
@@ -647,21 +647,21 @@ _0809CE28:
pop {r1}
bx r1
.align 2, 0
-_0809CE30: .4byte gUnknown_20370D0
+_0809CE30: .4byte gSpecialVar_Result
_0809CE34: .4byte sub_809D6D4
thumb_func_end sub_809CDEC
thumb_func_start sub_809CE38
sub_809CE38: @ 809CE38
push {lr}
- ldr r0, _0809CE48 @ =gUnknown_20370D0
+ ldr r0, _0809CE48 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0xFF
beq _0809CE4C
movs r0, 0x1
b _0809CE4E
.align 2, 0
-_0809CE48: .4byte gUnknown_20370D0
+_0809CE48: .4byte gSpecialVar_Result
_0809CE4C:
movs r0, 0
_0809CE4E:
@@ -711,13 +711,13 @@ _0809CE94:
_0809CE9C:
movs r0, 0x5
bl PlaySE
- ldr r1, _0809CEA8 @ =gUnknown_20370D0
+ ldr r1, _0809CEA8 @ =gSpecialVar_Result
movs r0, 0
b _0809CEB0
.align 2, 0
-_0809CEA8: .4byte gUnknown_20370D0
+_0809CEA8: .4byte gSpecialVar_Result
_0809CEAC:
- ldr r1, _0809CEC4 @ =gUnknown_20370D0
+ ldr r1, _0809CEC4 @ =gSpecialVar_Result
movs r0, 0x1
_0809CEB0:
strh r0, [r1]
@@ -730,7 +730,7 @@ _0809CEBC:
pop {r0}
bx r0
.align 2, 0
-_0809CEC4: .4byte gUnknown_20370D0
+_0809CEC4: .4byte gSpecialVar_Result
thumb_func_end task_yes_no_maybe
thumb_func_start sub_809CEC8
@@ -767,7 +767,7 @@ sub_809CEC8: @ 809CEC8
.align 2, 0
_0809CF04: .4byte sub_809CFDC
_0809CF08:
- ldr r1, _0809CFCC @ =gUnknown_20370D0
+ ldr r1, _0809CFCC @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
ldr r0, _0809CFD0 @ =sub_809D6D4
@@ -858,7 +858,7 @@ _0809CFBA:
pop {r1}
bx r1
.align 2, 0
-_0809CFCC: .4byte gUnknown_20370D0
+_0809CFCC: .4byte gSpecialVar_Result
_0809CFD0: .4byte sub_809D6D4
_0809CFD4: .4byte gUnknown_83E04B0
_0809CFD8: .4byte gTasks
@@ -890,15 +890,15 @@ sub_809CFDC: @ 809CFDC
bne _0809D034
movs r0, 0x5
bl PlaySE
- ldr r1, _0809D01C @ =gUnknown_20370D0
+ ldr r1, _0809D01C @ =gSpecialVar_Result
movs r0, 0x7F
strh r0, [r1]
b _0809D024
.align 2, 0
_0809D018: .4byte gTasks+0x8
-_0809D01C: .4byte gUnknown_20370D0
+_0809D01C: .4byte gSpecialVar_Result
_0809D020:
- ldr r0, _0809D03C @ =gUnknown_20370D0
+ ldr r0, _0809D03C @ =gSpecialVar_Result
strh r1, [r0]
_0809D024:
ldrb r0, [r5, 0xC]
@@ -911,7 +911,7 @@ _0809D034:
pop {r0}
bx r0
.align 2, 0
-_0809D03C: .4byte gUnknown_20370D0
+_0809D03C: .4byte gSpecialVar_Result
thumb_func_end sub_809CFDC
thumb_func_start sp109_CreatePCMenu
@@ -923,7 +923,7 @@ sp109_CreatePCMenu: @ 809D040
lsrs r0, 24
cmp r0, 0x1
beq _0809D068
- ldr r1, _0809D064 @ =gUnknown_20370D0
+ ldr r1, _0809D064 @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
bl sub_809D070
@@ -931,7 +931,7 @@ sp109_CreatePCMenu: @ 809D040
b _0809D06A
.align 2, 0
_0809D060: .4byte sub_809CC98
-_0809D064: .4byte gUnknown_20370D0
+_0809D064: .4byte gSpecialVar_Result
_0809D068:
movs r0, 0
_0809D06A:
@@ -1524,7 +1524,7 @@ sub_809D504: @ 809D504
lsrs r0, 24
cmp r0, 0xFF
bne _0809D55C
- ldr r0, _0809D54C @ =gUnknown_20370C0
+ ldr r0, _0809D54C @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x8D
bne _0809D558
@@ -1539,7 +1539,7 @@ sub_809D504: @ 809D504
.align 2, 0
_0809D544: .4byte sub_809D6D4
_0809D548: .4byte sub_809D494
-_0809D54C: .4byte gUnknown_20370C0
+_0809D54C: .4byte gSpecialVar_0x8004
_0809D550: .4byte gUnknown_83E17C0
_0809D554: .4byte gUnknown_83E17A0
_0809D558:
@@ -1566,7 +1566,7 @@ _0809D572:
lsls r2, 14
adds r1, r2
asrs r1, 16
- ldr r6, _0809D610 @ =gUnknown_20370C4
+ ldr r6, _0809D610 @ =gSpecialVar_0x8006
ldrh r2, [r6]
lsls r2, 19
movs r3, 0xA0
@@ -1629,7 +1629,7 @@ _0809D600: .4byte gUnknown_83E17D0
_0809D604: .4byte gUnknown_83E0F80
_0809D608: .4byte gUnknown_83E0768
_0809D60C: .4byte gSpecialVar_0x8005
-_0809D610: .4byte gUnknown_20370C4
+_0809D610: .4byte gSpecialVar_0x8006
_0809D614: .4byte gSprites
_0809D618: .4byte sub_809D494
_0809D61C: .4byte gTasks
@@ -1803,7 +1803,7 @@ sub_809D764: @ 809D764
mov r6, r8
push {r6,r7}
sub sp, 0xC
- ldr r1, _0809D7A0 @ =gUnknown_20370D0
+ ldr r1, _0809D7A0 @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
ldr r0, _0809D7A4 @ =sub_809D6D4
@@ -1818,7 +1818,7 @@ _0809D784:
ldrh r0, [r0]
cmp r0, 0x1
bne _0809D7B0
- ldr r0, _0809D7AC @ =gUnknown_20370C0
+ ldr r0, _0809D7AC @ =gSpecialVar_0x8004
ldrh r0, [r0]
movs r4, 0x4
cmp r0, 0x4
@@ -1830,10 +1830,10 @@ _0809D798:
movs r5, 0x2
b _0809D7B8
.align 2, 0
-_0809D7A0: .4byte gUnknown_20370D0
+_0809D7A0: .4byte gSpecialVar_Result
_0809D7A4: .4byte sub_809D6D4
_0809D7A8: .4byte gSpecialVar_0x8005
-_0809D7AC: .4byte gUnknown_20370C0
+_0809D7AC: .4byte gSpecialVar_0x8004
_0809D7B0:
movs r4, 0
movs r0, 0x6
@@ -1866,7 +1866,7 @@ _0809D7B8:
cmp r6, r5
bge _0809D844
_0809D7F2:
- ldr r0, _0809D820 @ =gUnknown_20370C0
+ ldr r0, _0809D820 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r4, r0
beq _0809D828
@@ -1889,7 +1889,7 @@ _0809D7F2:
bl AddTextPrinterParameterized
b _0809D82E
.align 2, 0
-_0809D820: .4byte gUnknown_20370C0
+_0809D820: .4byte gSpecialVar_0x8004
_0809D824: .4byte gUnknown_83E17E0
_0809D828:
subs r0, r6, 0x1
@@ -1970,7 +1970,7 @@ _0809D8BC: .4byte gUnknown_84161C8
thumb_func_start sub_809D8C0
sub_809D8C0: @ 809D8C0
push {lr}
- ldr r3, _0809D8EC @ =gUnknown_20370D0
+ ldr r3, _0809D8EC @ =gSpecialVar_Result
ldrh r2, [r3]
adds r1, r2, 0
cmp r1, 0x7F
@@ -1985,20 +1985,20 @@ sub_809D8C0: @ 809D8C0
beq _0809D930
cmp r1, 0
bne _0809D8F8
- ldr r0, _0809D8F4 @ =gUnknown_20370C0
+ ldr r0, _0809D8F4 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x4
bls _0809D904
movs r0, 0x4
b _0809D94E
.align 2, 0
-_0809D8EC: .4byte gUnknown_20370D0
+_0809D8EC: .4byte gSpecialVar_Result
_0809D8F0: .4byte gSpecialVar_0x8005
-_0809D8F4: .4byte gUnknown_20370C0
+_0809D8F4: .4byte gSpecialVar_0x8004
_0809D8F8:
cmp r1, 0x1
bne _0809D90C
- ldr r0, _0809D908 @ =gUnknown_20370C0
+ ldr r0, _0809D908 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x5
bls _0809D918
@@ -2006,11 +2006,11 @@ _0809D904:
movs r0, 0x5
b _0809D94E
.align 2, 0
-_0809D908: .4byte gUnknown_20370C0
+_0809D908: .4byte gSpecialVar_0x8004
_0809D90C:
cmp r1, 0x2
bne _0809D94C
- ldr r0, _0809D91C @ =gUnknown_20370C0
+ ldr r0, _0809D91C @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x6
bls _0809D920
@@ -2018,7 +2018,7 @@ _0809D918:
movs r0, 0x6
b _0809D94E
.align 2, 0
-_0809D91C: .4byte gUnknown_20370C0
+_0809D91C: .4byte gSpecialVar_0x8004
_0809D920:
movs r0, 0x7
b _0809D94E
@@ -2035,7 +2035,7 @@ _0809D930:
movs r0, 0x7F
b _0809D94E
_0809D934:
- ldr r0, _0809D944 @ =gUnknown_20370C0
+ ldr r0, _0809D944 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r1, r0
bcc _0809D948
@@ -2044,7 +2044,7 @@ _0809D934:
lsrs r0, 16
b _0809D94E
.align 2, 0
-_0809D944: .4byte gUnknown_20370C0
+_0809D944: .4byte gSpecialVar_0x8004
_0809D948:
ldrh r0, [r3]
b _0809D94E
diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s
index 18c2d7ecb..191457abe 100644
--- a/asm/script_pokemon_util_80A0058.s
+++ b/asm/script_pokemon_util_80A0058.s
@@ -154,10 +154,10 @@ ScriptGiveMon: @ 80A011C
blt _080A0196
adds r0, r5, 0
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
adds r0, r5, 0
movs r1, 0x3
- bl sub_8088E74
+ bl GetSetPokedexFlag
_080A0196:
adds r0, r7, 0
bl Free
@@ -221,13 +221,13 @@ _080A020C:
cmp r1, 0x2
bne _080A0214
_080A0210:
- ldr r0, _080A0218 @ =gUnknown_20370D0
+ ldr r0, _080A0218 @ =gSpecialVar_Result
strh r1, [r0]
_080A0214:
pop {r0}
bx r0
.align 2, 0
-_080A0218: .4byte gUnknown_20370D0
+_080A0218: .4byte gSpecialVar_Result
thumb_func_end CheckForAlivePartyMons
thumb_func_start CheckPartyMonHasHeldItem
@@ -400,14 +400,14 @@ sub_80A0350: @ 80A0350
ldrb r1, [r0]
cmp r1, 0
bne _080A0368
- ldr r0, _080A0364 @ =gUnknown_20370D0
+ ldr r0, _080A0364 @ =gSpecialVar_Result
strh r1, [r0]
b _080A036E
.align 2, 0
_080A0360: .4byte gUnknown_203B0D4
-_080A0364: .4byte gUnknown_20370D0
+_080A0364: .4byte gSpecialVar_Result
_080A0368:
- ldr r1, _080A0378 @ =gUnknown_20370D0
+ ldr r1, _080A0378 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
_080A036E:
@@ -416,7 +416,7 @@ _080A036E:
pop {r0}
bx r0
.align 2, 0
-_080A0378: .4byte gUnknown_20370D0
+_080A0378: .4byte gSpecialVar_Result
_080A037C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
thumb_func_end sub_80A0350
@@ -443,15 +443,15 @@ sub_80A039C: @ 80A039C
cmp r4, 0
bne _080A03B8
bl LoadPlayerParty
- ldr r0, _080A03B4 @ =gUnknown_20370D0
+ ldr r0, _080A03B4 @ =gSpecialVar_Result
strh r4, [r0]
b _080A03C2
.align 2, 0
_080A03B0: .4byte gUnknown_203B0D4
-_080A03B4: .4byte gUnknown_20370D0
+_080A03B4: .4byte gSpecialVar_Result
_080A03B8:
bl sub_80A03D8
- ldr r1, _080A03D0 @ =gUnknown_20370D0
+ ldr r1, _080A03D0 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
_080A03C2:
@@ -461,7 +461,7 @@ _080A03C2:
pop {r0}
bx r0
.align 2, 0
-_080A03D0: .4byte gUnknown_20370D0
+_080A03D0: .4byte gSpecialVar_Result
_080A03D4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
thumb_func_end sub_80A039C
diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s
index b8da48f65..eec41cf11 100644
--- a/asm/script_pokemon_util_80BF8FC.s
+++ b/asm/script_pokemon_util_80BF8FC.s
@@ -105,7 +105,7 @@ sub_80BF9BC: @ 80BF9BC
push {r4,lr}
sub sp, 0x4
ldr r0, _080BF9F0 @ =gPlayerParty
- ldr r1, _080BF9F4 @ =gUnknown_20370C0
+ ldr r1, _080BF9F4 @ =gSpecialVar_0x8004
ldrb r1, [r1]
ldr r2, _080BF9F8 @ =gPlayerPartyCount
ldrb r2, [r2]
@@ -127,7 +127,7 @@ sub_80BF9BC: @ 80BF9BC
bx r0
.align 2, 0
_080BF9F0: .4byte gPlayerParty
-_080BF9F4: .4byte gUnknown_20370C0
+_080BF9F4: .4byte gSpecialVar_0x8004
_080BF9F8: .4byte gPlayerPartyCount
_080BF9FC: .4byte c2_exit_to_overworld_2_switch
_080BFA00: .4byte gUnknown_3005020
@@ -137,13 +137,13 @@ _080BFA04: .4byte sub_807DD24
thumb_func_start ScrSpecial_CountPokemonMoves
ScrSpecial_CountPokemonMoves: @ 80BFA08
push {r4,r5,lr}
- ldr r1, _080BFA44 @ =gUnknown_20370D0
+ ldr r1, _080BFA44 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
movs r4, 0
adds r5, r1, 0
_080BFA14:
- ldr r0, _080BFA48 @ =gUnknown_20370C0
+ ldr r0, _080BFA48 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -167,15 +167,15 @@ _080BFA32:
pop {r0}
bx r0
.align 2, 0
-_080BFA44: .4byte gUnknown_20370D0
-_080BFA48: .4byte gUnknown_20370C0
+_080BFA44: .4byte gSpecialVar_Result
+_080BFA48: .4byte gSpecialVar_0x8004
_080BFA4C: .4byte gPlayerParty
thumb_func_end ScrSpecial_CountPokemonMoves
thumb_func_start ScrSpecial_GetPokemonNicknameAndMoveName
ScrSpecial_GetPokemonNicknameAndMoveName: @ 80BFA50
push {r4,r5,lr}
- ldr r0, _080BFA90 @ =gUnknown_20370C0
+ ldr r0, _080BFA90 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
adds r5, r1, 0
@@ -203,7 +203,7 @@ ScrSpecial_GetPokemonNicknameAndMoveName: @ 80BFA50
pop {r0}
bx r0
.align 2, 0
-_080BFA90: .4byte gUnknown_20370C0
+_080BFA90: .4byte gSpecialVar_0x8004
_080BFA94: .4byte gPlayerParty
_080BFA98: .4byte gSpecialVar_0x8005
_080BFA9C: .4byte gStringVar1
@@ -338,7 +338,7 @@ sub_80BFBA8: @ 80BFBA8
push {r4-r6,lr}
mov r6, r8
push {r6}
- ldr r0, _080BFC08 @ =gUnknown_20370C0
+ ldr r0, _080BFC08 @ =gSpecialVar_0x8004
mov r8, r0
ldrh r0, [r0]
movs r6, 0x64
@@ -359,7 +359,7 @@ sub_80BFBA8: @ 80BFBA8
cmp r4, 0x2
bhi _080BFBFC
_080BFBDA:
- ldr r0, _080BFC08 @ =gUnknown_20370C0
+ ldr r0, _080BFC08 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -382,7 +382,7 @@ _080BFBFC:
pop {r0}
bx r0
.align 2, 0
-_080BFC08: .4byte gUnknown_20370C0
+_080BFC08: .4byte gSpecialVar_0x8004
_080BFC0C: .4byte gPlayerParty
_080BFC10: .4byte gSpecialVar_0x8005
thumb_func_end sub_80BFBA8
@@ -390,7 +390,7 @@ _080BFC10: .4byte gSpecialVar_0x8005
thumb_func_start sub_80BFC14
sub_80BFC14: @ 80BFC14
push {lr}
- ldr r0, _080BFC38 @ =gUnknown_20370C0
+ ldr r0, _080BFC38 @ =gSpecialVar_0x8004
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
@@ -401,22 +401,22 @@ sub_80BFC14: @ 80BFC14
adds r1, r0, 0
cmp r1, 0
beq _080BFC44
- ldr r1, _080BFC40 @ =gUnknown_20370D0
+ ldr r1, _080BFC40 @ =gSpecialVar_Result
movs r0, 0x1
strh r0, [r1]
b _080BFC48
.align 2, 0
-_080BFC38: .4byte gUnknown_20370C0
+_080BFC38: .4byte gSpecialVar_0x8004
_080BFC3C: .4byte gPlayerParty
-_080BFC40: .4byte gUnknown_20370D0
+_080BFC40: .4byte gSpecialVar_Result
_080BFC44:
- ldr r0, _080BFC4C @ =gUnknown_20370D0
+ ldr r0, _080BFC4C @ =gSpecialVar_Result
strh r1, [r0]
_080BFC48:
pop {r0}
bx r0
.align 2, 0
-_080BFC4C: .4byte gUnknown_20370D0
+_080BFC4C: .4byte gSpecialVar_Result
thumb_func_end sub_80BFC14
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/seagallop.s b/asm/seagallop.s
index 7d40b69e0..89f8c2867 100644
--- a/asm/seagallop.s
+++ b/asm/seagallop.s
@@ -338,7 +338,7 @@ _0814713C: .4byte gPaletteFade
sub_8147140: @ 8147140
push {r4,lr}
sub sp, 0x4
- ldr r1, _081471AC @ =gUnknown_20370C4
+ ldr r1, _081471AC @ =gSpecialVar_0x8006
ldrh r0, [r1]
cmp r0, 0xA
bls _08147150
@@ -382,7 +382,7 @@ _08147150:
pop {r0}
bx r0
.align 2, 0
-_081471AC: .4byte gUnknown_20370C4
+_081471AC: .4byte gSpecialVar_0x8006
_081471B0: .4byte gUnknown_846AEFC
_081471B4: .4byte gUnknown_3005020
_081471B8: .4byte sub_807DF64
@@ -767,7 +767,7 @@ _081474C6:
thumb_func_start sub_81474CC
sub_81474CC: @ 81474CC
push {lr}
- ldr r2, _081474EC @ =gUnknown_20370C0
+ ldr r2, _081474EC @ =gSpecialVar_0x8004
ldrh r0, [r2]
cmp r0, 0xA
bhi _081474F8
@@ -775,16 +775,16 @@ sub_81474CC: @ 81474CC
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
- ldr r1, _081474F4 @ =gUnknown_20370C4
+ ldr r1, _081474F4 @ =gSpecialVar_0x8006
ldrh r1, [r1]
asrs r0, r1
movs r1, 0x1
ands r0, r1
b _081474FA
.align 2, 0
-_081474EC: .4byte gUnknown_20370C0
+_081474EC: .4byte gSpecialVar_0x8004
_081474F0: .4byte gUnknown_846AF28
-_081474F4: .4byte gUnknown_20370C4
+_081474F4: .4byte gSpecialVar_0x8006
_081474F8:
movs r0, 0x1
_081474FA:
diff --git a/asm/shop.s b/asm/shop.s
index 263e5b3c5..60b92410d 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -3280,7 +3280,7 @@ sub_809C4A8: @ 809C4A8
adds r0, r1, 0x4
adds r1, 0x6
bl PlayerGetDestCoords
- ldr r0, _0809C4E8 @ =gUnknown_20370C0
+ ldr r0, _0809C4E8 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0
bne _0809C4EC
@@ -3290,7 +3290,7 @@ sub_809C4A8: @ 809C4A8
.align 2, 0
_0809C4E0: .4byte sub_809C500
_0809C4E4: .4byte gTasks
-_0809C4E8: .4byte gUnknown_20370C0
+_0809C4E8: .4byte gSpecialVar_0x8004
_0809C4EC:
ldrh r0, [r4, 0xC]
subs r0, 0x1
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 43155b5da..73a82fb5c 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -1212,14 +1212,14 @@ task50_save_game: @ 806F6D4
_0806F6F0:
cmp r1, 0x3
bgt _0806F704
- ldr r1, _0806F6FC @ =gUnknown_20370D0
+ ldr r1, _0806F6FC @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
b _0806F704
.align 2, 0
-_0806F6FC: .4byte gUnknown_20370D0
+_0806F6FC: .4byte gSpecialVar_Result
_0806F700:
- ldr r0, _0806F718 @ =gUnknown_20370D0
+ ldr r0, _0806F718 @ =gSpecialVar_Result
strh r1, [r0]
_0806F704:
adds r0, r4, 0
@@ -1231,7 +1231,7 @@ _0806F712:
pop {r0}
bx r0
.align 2, 0
-_0806F718: .4byte gUnknown_20370D0
+_0806F718: .4byte gSpecialVar_Result
thumb_func_end task50_save_game
thumb_func_start sub_806F71C
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
index 48f98a2b4..bdd06dfff 100644
--- a/asm/teachy_tv.s
+++ b/asm/teachy_tv.s
@@ -2154,7 +2154,7 @@ sub_815BC90: @ 815BC90
ldr r1, _0815BCCC @ =gTasks+0x8
adds r5, r0, r1
bl sub_815B220
- ldr r1, _0815BCD0 @ =gUnknown_20370C0
+ ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
ldr r4, _0815BCD4 @ =gUnknown_203F444
ldrb r0, [r4, 0x5]
strh r0, [r1]
@@ -2172,7 +2172,7 @@ sub_815BC90: @ 815BC90
b _0815BCE2
.align 2, 0
_0815BCCC: .4byte gTasks+0x8
-_0815BCD0: .4byte gUnknown_20370C0
+_0815BCD0: .4byte gSpecialVar_0x8004
_0815BCD4: .4byte gUnknown_203F444
_0815BCD8: .4byte gMain
_0815BCDC: .4byte sub_815BD58
diff --git a/asm/tm_case.s b/asm/tm_case.s
index 7ab09953f..1539343e8 100644
--- a/asm/tm_case.s
+++ b/asm/tm_case.s
@@ -1400,7 +1400,7 @@ sub_81322D4: @ 81322D4
bne _08132354
movs r0, 0x5
bl PlaySE
- ldr r0, _08132350 @ =gUnknown_203AD30
+ ldr r0, _08132350 @ =gSpecialVar_ItemId
mov r1, r8
strh r1, [r0]
b _08132370
@@ -1409,7 +1409,7 @@ _08132340: .4byte gTasks+0x8
_08132344: .4byte gPaletteFade
_08132348: .4byte gUnknown_203B116
_0813234C: .4byte gMain
-_08132350: .4byte gUnknown_203AD30
+_08132350: .4byte gSpecialVar_ItemId
_08132354:
movs r0, 0x2
negs r0, r0
@@ -1422,7 +1422,7 @@ _08132354:
_08132364:
movs r0, 0x5
bl PlaySE
- ldr r1, _08132378 @ =gUnknown_203AD30
+ ldr r1, _08132378 @ =gSpecialVar_ItemId
movs r0, 0
strh r0, [r1]
_08132370:
@@ -1430,7 +1430,7 @@ _08132370:
bl sub_8132230
b _081323C8
.align 2, 0
-_08132378: .4byte gUnknown_203AD30
+_08132378: .4byte gSpecialVar_ItemId
_0813237C:
movs r0, 0x5
bl PlaySE
@@ -1450,7 +1450,7 @@ _0813237C:
movs r0, 0x4
adds r1, r4, 0
bl sub_809A798
- ldr r1, _081323D4 @ =gUnknown_203AD30
+ ldr r1, _081323D4 @ =gSpecialVar_ItemId
strh r0, [r1]
ldr r0, _081323D8 @ =gTasks
lsls r1, r7, 2
@@ -1471,7 +1471,7 @@ _081323C8:
pop {r0}
bx r0
.align 2, 0
-_081323D4: .4byte gUnknown_203AD30
+_081323D4: .4byte gSpecialVar_ItemId
_081323D8: .4byte gTasks
_081323DC: .4byte gUnknown_8463140
_081323E0: .4byte gUnknown_203B10C
@@ -1591,7 +1591,7 @@ _08132468:
lsls r0, 1
bl Alloc
adds r4, r0, 0
- ldr r6, _08132558 @ =gUnknown_203AD30
+ ldr r6, _08132558 @ =gSpecialVar_ItemId
ldrh r1, [r6]
bl sub_8131D48
ldr r1, _0813255C @ =gUnknown_8416301
@@ -1643,7 +1643,7 @@ _08132528:
_0813254C: .4byte gUnknown_203B118
_08132550: .4byte gUnknown_846316B
_08132554: .4byte gUnknown_8463150
-_08132558: .4byte gUnknown_203AD30
+_08132558: .4byte gSpecialVar_ItemId
_0813255C: .4byte gUnknown_8416301
_08132560: .4byte gTasks
_08132564: .4byte sub_8132568
@@ -1852,7 +1852,7 @@ sub_8132714: @ 8132714
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _08132744 @ =gUnknown_203AD30
+ ldr r0, _08132744 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _08132748 @ =gStringVar1
bl sub_8099E90
@@ -1869,7 +1869,7 @@ sub_8132714: @ 8132714
pop {r0}
bx r0
.align 2, 0
-_08132744: .4byte gUnknown_203AD30
+_08132744: .4byte gSpecialVar_ItemId
_08132748: .4byte gStringVar1
_0813274C: .4byte gStringVar4
_08132750: .4byte gUnknown_841635E
@@ -2085,7 +2085,7 @@ sub_8132908: @ 8132908
lsls r0, 3
ldr r1, _08132950 @ =gTasks+0x8
adds r4, r0, r1
- ldr r6, _08132954 @ =gUnknown_203AD30
+ ldr r6, _08132954 @ =gSpecialVar_ItemId
ldrh r0, [r6]
bl itemid_get_market_price
lsls r0, 16
@@ -2109,7 +2109,7 @@ sub_8132908: @ 8132908
b _081329AE
.align 2, 0
_08132950: .4byte gTasks+0x8
-_08132954: .4byte gUnknown_203AD30
+_08132954: .4byte gSpecialVar_ItemId
_08132958: .4byte gStringVar1
_0813295C: .4byte gStringVar4
_08132960: .4byte gUnknown_84168F1
@@ -2503,7 +2503,7 @@ sub_8132CAC: @ 8132CAC
bl PutWindowTilemap
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
- ldr r0, _08132D1C @ =gUnknown_203AD30
+ ldr r0, _08132D1C @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _08132D20 @ =gStringVar1
bl sub_8099E90
@@ -2537,7 +2537,7 @@ sub_8132CAC: @ 8132CAC
bx r0
.align 2, 0
_08132D18: .4byte gTasks+0x8
-_08132D1C: .4byte gUnknown_203AD30
+_08132D1C: .4byte gSpecialVar_ItemId
_08132D20: .4byte gStringVar1
_08132D24: .4byte gStringVar3
_08132D28: .4byte gStringVar4
@@ -2564,7 +2564,7 @@ sub_8132D34: @ 8132D34
mov r8, r1
movs r0, 0xF8
bl PlaySE
- ldr r5, _08132DF8 @ =gUnknown_203AD30
+ ldr r5, _08132DF8 @ =gSpecialVar_ItemId
ldrh r0, [r5]
mov r2, r8
ldrh r1, [r2, 0x10]
@@ -2632,7 +2632,7 @@ sub_8132D34: @ 8132D34
bx r0
.align 2, 0
_08132DF4: .4byte gTasks+0x8
-_08132DF8: .4byte gUnknown_203AD30
+_08132DF8: .4byte gSpecialVar_ItemId
_08132DFC: .4byte gSaveBlock1Ptr
_08132E00: .4byte gUnknown_203B116
_08132E04: .4byte gUnknown_3005E70
diff --git a/asm/trade.s b/asm/trade.s
index dff236bfb..6ce974675 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -250,7 +250,7 @@ _0804C80A:
ldrb r2, [r0]
cmp r2, 0
bne _0804C8B4
- ldr r1, _0804C870 @ =gUnknown_202271A
+ ldr r1, _0804C870 @ =gLinkType
ldr r5, _0804C874 @ =0x00001122
adds r0, r5, 0
strh r0, [r1]
@@ -270,7 +270,7 @@ _0804C80A:
_0804C864: .4byte gPaletteFade
_0804C868: .4byte gEnemyParty
_0804C86C: .4byte gUnknown_3003F64
-_0804C870: .4byte gUnknown_202271A
+_0804C870: .4byte gLinkType
_0804C874: .4byte 0x00001122
_0804C878: .4byte gUnknown_2031DA8
_0804C87C: .4byte gUnknown_3003F3C
@@ -2181,7 +2181,7 @@ _0804D860:
.4byte _0804DAE0
.4byte _0804DB14
_0804D8B8:
- ldr r0, _0804D8D8 @ =gUnknown_2022618
+ ldr r0, _0804D8D8 @ =gBlockSendBuffer
ldr r1, _0804D8DC @ =gPlayerParty
movs r2, 0xC8
bl sub_804D814
@@ -2197,7 +2197,7 @@ _0804D8B8:
strb r2, [r0]
b _0804DB9E
.align 2, 0
-_0804D8D8: .4byte gUnknown_2022618
+_0804D8D8: .4byte gBlockSendBuffer
_0804D8DC: .4byte gPlayerParty
_0804D8E0: .4byte gUnknown_2031DA8
_0804D8E4:
@@ -2247,7 +2247,7 @@ _0804D936:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, _0804D958 @ =gUnknown_2022118
+ ldr r2, _0804D958 @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl sub_804D814
@@ -2257,10 +2257,10 @@ _0804D936:
b _0804DB96
.align 2, 0
_0804D954: .4byte gEnemyParty
-_0804D958: .4byte gUnknown_2022118
+_0804D958: .4byte gBlockRecvBuffer
_0804D95C: .4byte gUnknown_2031DA8
_0804D960:
- ldr r0, _0804D970 @ =gUnknown_2022618
+ ldr r0, _0804D970 @ =gBlockSendBuffer
ldr r1, _0804D974 @ =gUnknown_202434C
movs r2, 0xC8
bl sub_804D814
@@ -2268,7 +2268,7 @@ _0804D960:
ldr r1, [r0]
b _0804DB96
.align 2, 0
-_0804D970: .4byte gUnknown_2022618
+_0804D970: .4byte gBlockSendBuffer
_0804D974: .4byte gUnknown_202434C
_0804D978: .4byte gUnknown_2031DA8
_0804D97C:
@@ -2295,7 +2295,7 @@ _0804D99E:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, _0804D9C0 @ =gUnknown_2022118
+ ldr r2, _0804D9C0 @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl sub_804D814
@@ -2305,10 +2305,10 @@ _0804D99E:
b _0804DB96
.align 2, 0
_0804D9BC: .4byte gUnknown_20240F4
-_0804D9C0: .4byte gUnknown_2022118
+_0804D9C0: .4byte gBlockRecvBuffer
_0804D9C4: .4byte gUnknown_2031DA8
_0804D9C8:
- ldr r0, _0804D9D8 @ =gUnknown_2022618
+ ldr r0, _0804D9D8 @ =gBlockSendBuffer
ldr r1, _0804D9DC @ =gUnknown_2024414
movs r2, 0xC8
bl sub_804D814
@@ -2316,7 +2316,7 @@ _0804D9C8:
ldr r1, [r0]
b _0804DB96
.align 2, 0
-_0804D9D8: .4byte gUnknown_2022618
+_0804D9D8: .4byte gBlockSendBuffer
_0804D9DC: .4byte gUnknown_2024414
_0804D9E0: .4byte gUnknown_2031DA8
_0804D9E4:
@@ -2343,7 +2343,7 @@ _0804DA06:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, _0804DA28 @ =gUnknown_2022118
+ ldr r2, _0804DA28 @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl sub_804D814
@@ -2353,10 +2353,10 @@ _0804DA06:
b _0804DB96
.align 2, 0
_0804DA24: .4byte gUnknown_20241BC
-_0804DA28: .4byte gUnknown_2022118
+_0804DA28: .4byte gBlockRecvBuffer
_0804DA2C: .4byte gUnknown_2031DA8
_0804DA30:
- ldr r0, _0804DA48 @ =gUnknown_2022618
+ ldr r0, _0804DA48 @ =gBlockSendBuffer
ldr r1, _0804DA4C @ =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, _0804DA50 @ =0x00002cd0
@@ -2367,7 +2367,7 @@ _0804DA30:
ldr r1, [r0]
b _0804DB96
.align 2, 0
-_0804DA48: .4byte gUnknown_2022618
+_0804DA48: .4byte gBlockSendBuffer
_0804DA4C: .4byte gSaveBlock1Ptr
_0804DA50: .4byte 0x00002cd0
_0804DA54: .4byte gUnknown_2031DA8
@@ -2395,7 +2395,7 @@ _0804DA7A:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, _0804DA9C @ =gUnknown_2022118
+ ldr r2, _0804DA9C @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xD8
bl sub_804D814
@@ -2405,10 +2405,10 @@ _0804DA7A:
b _0804DB96
.align 2, 0
_0804DA98: .4byte gUnknown_2031CCC
-_0804DA9C: .4byte gUnknown_2022118
+_0804DA9C: .4byte gBlockRecvBuffer
_0804DAA0: .4byte gUnknown_2031DA8
_0804DAA4:
- ldr r0, _0804DABC @ =gUnknown_2022618
+ ldr r0, _0804DABC @ =gBlockSendBuffer
ldr r1, _0804DAC0 @ =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, _0804DAC4 @ =0x0000309c
@@ -2419,7 +2419,7 @@ _0804DAA4:
ldr r1, [r0]
b _0804DB96
.align 2, 0
-_0804DABC: .4byte gUnknown_2022618
+_0804DABC: .4byte gBlockSendBuffer
_0804DAC0: .4byte gSaveBlock1Ptr
_0804DAC4: .4byte 0x0000309c
_0804DAC8: .4byte gUnknown_2031DA8
@@ -2447,7 +2447,7 @@ _0804DAE0:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, _0804DB10 @ =gUnknown_2022118
+ ldr r2, _0804DB10 @ =gBlockRecvBuffer
adds r1, r2
movs r2, 0xB
bl sub_804D814
@@ -2456,7 +2456,7 @@ _0804DAE0:
b _0804DB96
.align 2, 0
_0804DB0C: .4byte gUnknown_2031DA8
-_0804DB10: .4byte gUnknown_2022118
+_0804DB10: .4byte gBlockRecvBuffer
_0804DB14:
ldr r4, _0804DB68 @ =gEnemyParty
ldr r6, _0804DB6C @ =0x0000012f
@@ -2564,7 +2564,7 @@ sub_804DBD4: @ 804DBD4
ands r0, r2
cmp r0, 0
beq _0804DC58
- ldr r0, _0804DBFC @ =gUnknown_2022118
+ ldr r0, _0804DBFC @ =gBlockRecvBuffer
ldrh r1, [r0]
ldr r0, _0804DC00 @ =0x0000bbbb
cmp r1, r0
@@ -2576,7 +2576,7 @@ sub_804DBD4: @ 804DBD4
beq _0804DC28
b _0804DC52
.align 2, 0
-_0804DBFC: .4byte gUnknown_2022118
+_0804DBFC: .4byte gBlockRecvBuffer
_0804DC00: .4byte 0x0000bbbb
_0804DC04: .4byte 0x0000aabb
_0804DC08:
@@ -2626,7 +2626,7 @@ _0804DC58:
ands r0, r2
cmp r0, 0
beq _0804DCEA
- ldr r3, _0804DC84 @ =gUnknown_2022118
+ ldr r3, _0804DC84 @ =gBlockRecvBuffer
movs r1, 0x80
lsls r1, 1
adds r0, r3, r1
@@ -2642,7 +2642,7 @@ _0804DC58:
b _0804DCE4
.align 2, 0
_0804DC80: .4byte gUnknown_2031DA8
-_0804DC84: .4byte gUnknown_2022118
+_0804DC84: .4byte gBlockRecvBuffer
_0804DC88: .4byte 0x0000bbbb
_0804DC8C: .4byte 0x0000aabb
_0804DC90:
@@ -2712,7 +2712,7 @@ sub_804DCF4: @ 804DCF4
ands r0, r5
cmp r0, 0
beq _0804DDD6
- ldr r2, _0804DD20 @ =gUnknown_2022118
+ ldr r2, _0804DD20 @ =gBlockRecvBuffer
ldrh r1, [r2]
ldr r0, _0804DD24 @ =0x0000ddee
cmp r1, r0
@@ -2727,7 +2727,7 @@ sub_804DCF4: @ 804DCF4
beq _0804DD6C
b _0804DDD0
.align 2, 0
-_0804DD20: .4byte gUnknown_2022118
+_0804DD20: .4byte gBlockRecvBuffer
_0804DD24: .4byte 0x0000ddee
_0804DD28: .4byte 0x0000ccdd
_0804DD2C: .4byte 0x0000dddd
@@ -7428,7 +7428,7 @@ _08050194:
ldrb r0, [r0]
cmp r0, 0
bne _080501A8
- ldr r1, _0805022C @ =gUnknown_202271A
+ ldr r1, _0805022C @ =gLinkType
ldr r2, _08050230 @ =0x00001144
adds r0, r2, 0
strh r0, [r1]
@@ -7491,7 +7491,7 @@ _080501A8:
b _08050472
.align 2, 0
_08050228: .4byte gUnknown_3003F64
-_0805022C: .4byte gUnknown_202271A
+_0805022C: .4byte gLinkType
_08050230: .4byte 0x00001144
_08050234: .4byte gUnknown_2031DAC
_08050238: .4byte sub_804FF0C
@@ -8131,7 +8131,7 @@ sub_80507A0: @ 80507A0
lsrs r4, 16
adds r0, r4, 0
movs r1, 0x2
- bl sub_8088E74
+ bl GetSetPokedexFlag
adds r0, r4, 0
movs r1, 0x3
adds r2, r5, 0
@@ -8912,7 +8912,7 @@ _08050EA8: .4byte gStringVar3
_08050EAC: .4byte gPlayerParty
_08050EB0: .4byte gStringVar2
_08050EB4:
- ldr r0, _08050EF8 @ =gUnknown_20370C0
+ ldr r0, _08050EF8 @ =gSpecialVar_0x8004
ldrh r0, [r0]
lsls r4, r0, 4
subs r4, r0
@@ -8944,7 +8944,7 @@ _08050EF0:
pop {r0}
bx r0
.align 2, 0
-_08050EF8: .4byte gUnknown_20370C0
+_08050EF8: .4byte gSpecialVar_0x8004
_08050EFC: .4byte gUnknown_826CF8C
_08050F00: .4byte gStringVar1
_08050F04: .4byte gStringVar3
@@ -13477,7 +13477,7 @@ sub_805383C: @ 805383C
ands r0, r6
cmp r0, 0
beq _0805387A
- ldr r4, _080538A8 @ =gUnknown_2022118
+ ldr r4, _080538A8 @ =gBlockRecvBuffer
ldrh r1, [r4]
ldr r0, _080538AC @ =0x0000dcba
cmp r1, r0
@@ -13501,7 +13501,7 @@ _0805387A:
ands r0, r5
cmp r0, 0
beq _080538A2
- ldr r0, _080538A8 @ =gUnknown_2022118
+ ldr r0, _080538A8 @ =gBlockRecvBuffer
movs r1, 0x80
lsls r1, 1
adds r0, r1
@@ -13522,7 +13522,7 @@ _080538A2:
pop {r0}
bx r0
.align 2, 0
-_080538A8: .4byte gUnknown_2022118
+_080538A8: .4byte gBlockRecvBuffer
_080538AC: .4byte 0x0000dcba
_080538B0: .4byte sub_8053788
_080538B4: .4byte 0x0000abcd
@@ -13782,7 +13782,7 @@ _08053A98: .4byte SpriteCallbackDummy
thumb_func_start sub_8053A9C
sub_8053A9C: @ 8053A9C
push {r4-r6,lr}
- ldr r0, _08053AD0 @ =gUnknown_20370C0
+ ldr r0, _08053AD0 @ =gSpecialVar_0x8004
ldrh r0, [r0]
lsls r4, r0, 4
subs r4, r0
@@ -13806,7 +13806,7 @@ sub_8053A9C: @ 8053A9C
pop {r1}
bx r1
.align 2, 0
-_08053AD0: .4byte gUnknown_20370C0
+_08053AD0: .4byte gSpecialVar_0x8004
_08053AD4: .4byte gUnknown_826CF8C
_08053AD8: .4byte gStringVar1
_08053ADC: .4byte gSpeciesNames
@@ -13817,7 +13817,7 @@ _08053AE0: .4byte gStringVar2
sub_8053AE4: @ 8053AE4
push {r4,lr}
sub sp, 0x20
- ldr r0, _08053B2C @ =gUnknown_20370C0
+ ldr r0, _08053B2C @ =gSpecialVar_0x8004
ldrh r0, [r0]
lsls r4, r0, 4
subs r4, r0
@@ -13848,7 +13848,7 @@ sub_8053AE4: @ 8053AE4
pop {r0}
bx r0
.align 2, 0
-_08053B2C: .4byte gUnknown_20370C0
+_08053B2C: .4byte gSpecialVar_0x8004
_08053B30: .4byte gUnknown_826CF8C
_08053B34: .4byte gSpecialVar_0x8005
_08053B38: .4byte gPlayerParty
@@ -14115,14 +14115,14 @@ sub_8053D68: @ 8053D68
push {lr}
ldr r0, _08053D7C @ =gSpecialVar_0x8005
ldrb r0, [r0]
- ldr r1, _08053D80 @ =gUnknown_20370C0
+ ldr r1, _08053D80 @ =gSpecialVar_0x8004
ldrb r1, [r1]
bl sub_8053B48
pop {r0}
bx r0
.align 2, 0
_08053D7C: .4byte gSpecialVar_0x8005
-_08053D80: .4byte gUnknown_20370C0
+_08053D80: .4byte gSpecialVar_0x8004
thumb_func_end sub_8053D68
thumb_func_start sub_8053D84
diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s
index 6ef1e7468..5b65927d5 100644
--- a/asm/trainer_tower.s
+++ b/asm/trainer_tower.s
@@ -303,7 +303,7 @@ sub_815D9E8: @ 815D9E8
push {lr}
bl sub_815DC8C
ldr r1, _0815DA08 @ =gUnknown_847A230
- ldr r0, _0815DA0C @ =gUnknown_20370C0
+ ldr r0, _0815DA0C @ =gSpecialVar_0x8004
ldrh r0, [r0]
lsls r0, 2
adds r0, r1
@@ -314,7 +314,7 @@ sub_815D9E8: @ 815D9E8
bx r0
.align 2, 0
_0815DA08: .4byte gUnknown_847A230
-_0815DA0C: .4byte gUnknown_20370C0
+_0815DA0C: .4byte gSpecialVar_0x8004
thumb_func_end sub_815D9E8
thumb_func_start sub_815DA10
@@ -741,7 +741,7 @@ sub_815DD44: @ 815DD44
ldrb r1, [r4, 0x4]
cmp r0, r1
ble _0815DD78
- ldr r0, _0815DD74 @ =gUnknown_20370D0
+ ldr r0, _0815DD74 @ =gSpecialVar_Result
movs r1, 0x3
strh r1, [r0]
movs r0, 0x99
@@ -752,9 +752,9 @@ sub_815DD44: @ 815DD44
_0815DD68: .4byte gMapHeader
_0815DD6C: .4byte 0xfffffed7
_0815DD70: .4byte gUnknown_203F458
-_0815DD74: .4byte gUnknown_20370D0
+_0815DD74: .4byte gSpecialVar_Result
_0815DD78:
- ldr r3, _0815DDA8 @ =gUnknown_20370D0
+ ldr r3, _0815DDA8 @ =gSpecialVar_Result
ldrb r1, [r4]
lsls r0, r1, 5
subs r0, r1
@@ -778,7 +778,7 @@ _0815DDA2:
pop {r0}
bx r0
.align 2, 0
-_0815DDA8: .4byte gUnknown_20370D0
+_0815DDA8: .4byte gSpecialVar_Result
_0815DDAC: .4byte gUnknown_847A284
thumb_func_end sub_815DD44
@@ -1015,7 +1015,7 @@ _0815DF4E:
thumb_func_start sub_815DF54
sub_815DF54: @ 815DF54
push {r4,r5,lr}
- ldr r0, _0815DF90 @ =gUnknown_20370C4
+ ldr r0, _0815DF90 @ =gSpecialVar_0x8006
ldrh r4, [r0]
ldr r2, _0815DF94 @ =gUnknown_203F458
ldr r3, [r2]
@@ -1046,7 +1046,7 @@ _0815DF7C:
beq _0815DFA6
b _0815E05C
.align 2, 0
-_0815DF90: .4byte gUnknown_20370C4
+_0815DF90: .4byte gSpecialVar_0x8006
_0815DF94: .4byte gUnknown_203F458
_0815DF98: .4byte gSpecialVar_0x8005
_0815DF9C:
@@ -1335,7 +1335,7 @@ sub_815E1C0: @ 815E1C0
ldrh r0, [r0]
cmp r0, 0
bne _0815E1DE
- ldr r3, _0815E1E8 @ =gUnknown_20370D0
+ ldr r3, _0815E1E8 @ =gSpecialVar_Result
ldr r0, _0815E1EC @ =gUnknown_203F458
ldr r1, [r0]
ldrb r2, [r1]
@@ -1350,7 +1350,7 @@ _0815E1DE:
bx r0
.align 2, 0
_0815E1E4: .4byte gSpecialVar_0x8005
-_0815E1E8: .4byte gUnknown_20370D0
+_0815E1E8: .4byte gSpecialVar_Result
_0815E1EC: .4byte gUnknown_203F458
thumb_func_end sub_815E1C0
@@ -1412,7 +1412,7 @@ sub_815E218: @ 815E218
ldrb r1, [r1, 0xD]
cmp r3, r1
bgt _0815E27C
- ldr r1, _0815E278 @ =gUnknown_20370D0
+ ldr r1, _0815E278 @ =gSpecialVar_Result
movs r0, 0
b _0815E280
.align 2, 0
@@ -1422,16 +1422,16 @@ _0815E268: .4byte gSaveBlock1Ptr
_0815E26C: .4byte 0x00003d34
_0815E270: .4byte 0xfffffed7
_0815E274: .4byte gUnknown_203F458
-_0815E278: .4byte gUnknown_20370D0
+_0815E278: .4byte gSpecialVar_Result
_0815E27C:
- ldr r1, _0815E288 @ =gUnknown_20370D0
+ ldr r1, _0815E288 @ =gSpecialVar_Result
movs r0, 0x1
_0815E280:
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
-_0815E288: .4byte gUnknown_20370D0
+_0815E288: .4byte gSpecialVar_Result
thumb_func_end sub_815E218
thumb_func_start sub_815E28C
@@ -1566,7 +1566,7 @@ _0815E390: .4byte 0x00003d38
sub_815E394: @ 815E394
push {lr}
bl DisableVBlankCounter1
- ldr r3, _0815E3F8 @ =gUnknown_20370D0
+ ldr r3, _0815E3F8 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r3]
ldr r0, _0815E3FC @ =gSaveBlock1Ptr
@@ -1616,7 +1616,7 @@ _0815E3D6:
pop {r0}
bx r0
.align 2, 0
-_0815E3F8: .4byte gUnknown_20370D0
+_0815E3F8: .4byte gSpecialVar_Result
_0815E3FC: .4byte gSaveBlock1Ptr
_0815E400: .4byte 0x00003d34
_0815E404: .4byte 0x00003d42
@@ -1651,7 +1651,7 @@ sub_815E408: @ 815E408
lsrs r5, r0, 31
cmp r5, 0
beq _0815E45C
- ldr r1, _0815E458 @ =gUnknown_20370D0
+ ldr r1, _0815E458 @ =gSpecialVar_Result
movs r0, 0x2
b _0815E4A0
.align 2, 0
@@ -1660,7 +1660,7 @@ _0815E448: .4byte gUnknown_203F458
_0815E44C: .4byte gSaveBlock1Ptr
_0815E450: .4byte 0x00003d34
_0815E454: .4byte 0x00003d42
-_0815E458: .4byte gUnknown_20370D0
+_0815E458: .4byte gSpecialVar_Result
_0815E45C:
adds r0, r4, 0
movs r1, 0x1
@@ -1685,14 +1685,14 @@ _0815E45C:
movs r2, 0x1
orrs r0, r2
strb r0, [r1]
- ldr r0, _0815E498 @ =gUnknown_20370D0
+ ldr r0, _0815E498 @ =gSpecialVar_Result
strh r5, [r0]
b _0815E4A2
.align 2, 0
_0815E494: .4byte gStringVar2
-_0815E498: .4byte gUnknown_20370D0
+_0815E498: .4byte gSpecialVar_Result
_0815E49C:
- ldr r1, _0815E4AC @ =gUnknown_20370D0
+ ldr r1, _0815E4AC @ =gSpecialVar_Result
movs r0, 0x1
_0815E4A0:
strh r0, [r1]
@@ -1703,7 +1703,7 @@ _0815E4A2:
pop {r0}
bx r0
.align 2, 0
-_0815E4AC: .4byte gUnknown_20370D0
+_0815E4AC: .4byte gSpecialVar_Result
thumb_func_end sub_815E408
thumb_func_start sub_815E4B0
@@ -1725,14 +1725,14 @@ sub_815E4B0: @ 815E4B0
lsrs r5, r0, 31
cmp r5, 0
beq _0815E4E8
- ldr r1, _0815E4E4 @ =gUnknown_20370D0
+ ldr r1, _0815E4E4 @ =gSpecialVar_Result
movs r0, 0x2
b _0815E534
.align 2, 0
_0815E4D8: .4byte gSaveBlock1Ptr
_0815E4DC: .4byte 0x00003d34
_0815E4E0: .4byte 0x00003d42
-_0815E4E4: .4byte gUnknown_20370D0
+_0815E4E4: .4byte gSpecialVar_Result
_0815E4E8:
ldr r4, _0815E520 @ =0x00003d38
adds r0, r1, r4
@@ -1756,16 +1756,16 @@ _0815E4E8:
adds r0, r3
adds r1, r4, 0
bl sub_815EDF4
- ldr r0, _0815E52C @ =gUnknown_20370D0
+ ldr r0, _0815E52C @ =gSpecialVar_Result
strh r5, [r0]
b _0815E536
.align 2, 0
_0815E520: .4byte 0x00003d38
_0815E524: .4byte 0x00003d34
_0815E528: .4byte 0x00003d3c
-_0815E52C: .4byte gUnknown_20370D0
+_0815E52C: .4byte gSpecialVar_Result
_0815E530:
- ldr r1, _0815E55C @ =gUnknown_20370D0
+ ldr r1, _0815E55C @ =gSpecialVar_Result
movs r0, 0x1
_0815E534:
strh r0, [r1]
@@ -1789,7 +1789,7 @@ _0815E536:
pop {r0}
bx r0
.align 2, 0
-_0815E55C: .4byte gUnknown_20370D0
+_0815E55C: .4byte gSpecialVar_Result
_0815E560: .4byte gSaveBlock1Ptr
_0815E564: .4byte 0x00003d34
_0815E568: .4byte 0x00003d42
@@ -1887,14 +1887,14 @@ sub_815E5F0: @ 815E5F0
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r1, _0815E62C @ =gUnknown_20370D0
+ ldr r1, _0815E62C @ =gSpecialVar_Result
movs r0, 0
b _0815E64C
.align 2, 0
_0815E620: .4byte gSaveBlock1Ptr
_0815E624: .4byte 0x00003d34
_0815E628: .4byte 0x00003d42
-_0815E62C: .4byte gUnknown_20370D0
+_0815E62C: .4byte gSpecialVar_Result
_0815E630:
lsls r0, r1, 27
cmp r0, 0
@@ -1903,20 +1903,20 @@ _0815E630:
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r1, _0815E644 @ =gUnknown_20370D0
+ ldr r1, _0815E644 @ =gSpecialVar_Result
movs r0, 0x1
b _0815E64C
.align 2, 0
-_0815E644: .4byte gUnknown_20370D0
+_0815E644: .4byte gSpecialVar_Result
_0815E648:
- ldr r1, _0815E654 @ =gUnknown_20370D0
+ ldr r1, _0815E654 @ =gSpecialVar_Result
movs r0, 0x2
_0815E64C:
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
-_0815E654: .4byte gUnknown_20370D0
+_0815E654: .4byte gSpecialVar_Result
thumb_func_end sub_815E5F0
thumb_func_start sub_815E658
@@ -2187,7 +2187,7 @@ _0815E8B0: .4byte 0x00004001
thumb_func_start sub_815E8B4
sub_815E8B4: @ 815E8B4
push {r4,lr}
- ldr r4, _0815E8C8 @ =gUnknown_20370D0
+ ldr r4, _0815E8C8 @ =gSpecialVar_Result
bl GetMonsStateToDoubles
lsls r0, 24
lsrs r0, 24
@@ -2196,7 +2196,7 @@ sub_815E8B4: @ 815E8B4
pop {r0}
bx r0
.align 2, 0
-_0815E8C8: .4byte gUnknown_20370D0
+_0815E8C8: .4byte gSpecialVar_Result
thumb_func_end sub_815E8B4
thumb_func_start sub_815E8CC
@@ -2213,22 +2213,22 @@ sub_815E8CC: @ 815E8CC
movs r2, 0
movs r3, 0x1
bl ConvertIntToDecimalStringN
- ldr r1, _0815E8F4 @ =gUnknown_20370D0
+ ldr r1, _0815E8F4 @ =gSpecialVar_Result
movs r0, 0x1
b _0815E8FC
.align 2, 0
_0815E8EC: .4byte gUnknown_203F458
_0815E8F0: .4byte gStringVar1
-_0815E8F4: .4byte gUnknown_20370D0
+_0815E8F4: .4byte gSpecialVar_Result
_0815E8F8:
- ldr r1, _0815E904 @ =gUnknown_20370D0
+ ldr r1, _0815E904 @ =gSpecialVar_Result
movs r0, 0
_0815E8FC:
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
-_0815E904: .4byte gUnknown_20370D0
+_0815E904: .4byte gSpecialVar_Result
thumb_func_end sub_815E8CC
thumb_func_start sub_815E908
@@ -2245,23 +2245,23 @@ sub_815E908: @ 815E908
lsrs r1, r0, 16
cmp r1, 0
bne _0815E938
- ldr r0, _0815E934 @ =gUnknown_20370D0
+ ldr r0, _0815E934 @ =gSpecialVar_Result
strh r1, [r0]
b _0815E93E
.align 2, 0
_0815E928: .4byte gMapHeader
_0815E92C: .4byte 0x00000129
_0815E930: .4byte 0x00004082
-_0815E934: .4byte gUnknown_20370D0
+_0815E934: .4byte gSpecialVar_Result
_0815E938:
- ldr r1, _0815E944 @ =gUnknown_20370D0
+ ldr r1, _0815E944 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
_0815E93E:
pop {r0}
bx r0
.align 2, 0
-_0815E944: .4byte gUnknown_20370D0
+_0815E944: .4byte gSpecialVar_Result
thumb_func_end sub_815E908
thumb_func_start sub_815E948
@@ -2332,7 +2332,7 @@ _0815E9C4: .4byte gUnknown_847A2D2
thumb_func_start sub_815E9C8
sub_815E9C8: @ 815E9C8
- ldr r3, _0815E9EC @ =gUnknown_20370D0
+ ldr r3, _0815E9EC @ =gSpecialVar_Result
ldr r0, _0815E9F0 @ =gSaveBlock1Ptr
ldr r1, [r0]
ldr r2, _0815E9F4 @ =0x00003d34
@@ -2350,7 +2350,7 @@ sub_815E9C8: @ 815E9C8
strh r0, [r3]
bx lr
.align 2, 0
-_0815E9EC: .4byte gUnknown_20370D0
+_0815E9EC: .4byte gSpecialVar_Result
_0815E9F0: .4byte gSaveBlock1Ptr
_0815E9F4: .4byte 0x00003d34
_0815E9F8: .4byte 0x00003d42
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index e7454d31f..4c7d6769f 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -2831,7 +2831,7 @@ _081299E6:
movs r1, 0x2
ldrsh r0, [r4, r1]
lsls r0, 8
- ldr r1, _08129A0C @ =gUnknown_2022118
+ ldr r1, _08129A0C @ =gBlockRecvBuffer
adds r0, r1
ldrb r0, [r0]
subs r0, 0x1
@@ -2843,7 +2843,7 @@ _081299E6:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_08129A0C: .4byte gUnknown_2022118
+_08129A0C: .4byte gBlockRecvBuffer
_08129A10: .4byte _08129A14
.align 2, 0
_08129A14:
@@ -2874,7 +2874,7 @@ _08129A3A:
movs r2, 0x2
ldrsh r1, [r4, r2]
lsls r1, 8
- ldr r2, _08129A6C @ =gUnknown_2022118
+ ldr r2, _08129A6C @ =gBlockRecvBuffer
adds r1, r2
bl sub_812963C
cmp r0, 0
@@ -2889,7 +2889,7 @@ _08129A3A:
b _08129A72
.align 2, 0
_08129A68: .4byte gUnknown_203B0E0
-_08129A6C: .4byte gUnknown_2022118
+_08129A6C: .4byte gBlockRecvBuffer
_08129A70:
ldrh r0, [r4, 0xA]
_08129A72:
diff --git a/asm/unk_8147500.s b/asm/unk_8147500.s
index 23a3b1b9c..d9867d69f 100644
--- a/asm/unk_8147500.s
+++ b/asm/unk_8147500.s
@@ -8,9 +8,9 @@
thumb_func_start sub_8147500
sub_8147500: @ 8147500
push {lr}
- ldr r0, _08147518 @ =gUnknown_20370C0
+ ldr r0, _08147518 @ =gSpecialVar_0x8004
ldrh r1, [r0]
- ldr r0, _0814751C @ =gUnknown_20370C4
+ ldr r0, _0814751C @ =gSpecialVar_0x8006
ldrh r2, [r0]
cmp r1, 0x8
beq _08147512
@@ -20,8 +20,8 @@ _08147512:
movs r0, 0x1
b _0814758E
.align 2, 0
-_08147518: .4byte gUnknown_20370C0
-_0814751C: .4byte gUnknown_20370C4
+_08147518: .4byte gSpecialVar_0x8004
+_0814751C: .4byte gSpecialVar_0x8006
_08147520:
cmp r1, 0
beq _08147528
diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s
index 1b06167f8..5b4fbd0ad 100644
--- a/asm/unk_8147AA8.s
+++ b/asm/unk_8147AA8.s
@@ -4267,17 +4267,17 @@ _08149A1C:
bl sub_8149A00
cmp r0, 0
beq _08149A54
- ldr r1, _08149A50 @ =gUnknown_20370D0
+ ldr r1, _08149A50 @ =gSpecialVar_Result
movs r0, 0x1
b _08149A5E
.align 2, 0
_08149A4C: .4byte gPlayerParty
-_08149A50: .4byte gUnknown_20370D0
+_08149A50: .4byte gSpecialVar_Result
_08149A54:
adds r5, 0x1
cmp r5, 0x5
ble _08149A1C
- ldr r1, _08149A68 @ =gUnknown_20370D0
+ ldr r1, _08149A68 @ =gSpecialVar_Result
movs r0, 0
_08149A5E:
strh r0, [r1]
@@ -4285,7 +4285,7 @@ _08149A5E:
pop {r0}
bx r0
.align 2, 0
-_08149A68: .4byte gUnknown_20370D0
+_08149A68: .4byte gSpecialVar_Result
thumb_func_end sub_8149A18
thumb_func_start sub_8149A6C
diff --git a/asm/unk_814B6F0.s b/asm/unk_814B6F0.s
index cfc756cf8..dc7d8d9f8 100644
--- a/asm/unk_814B6F0.s
+++ b/asm/unk_814B6F0.s
@@ -189,7 +189,7 @@ _0814B85C: .4byte sub_814BA98
sub_814B860: @ 814B860
push {r4,lr}
sub sp, 0xC
- ldr r1, _0814B878 @ =gUnknown_203AD30
+ ldr r1, _0814B878 @ =gSpecialVar_ItemId
ldrh r0, [r1]
subs r0, 0x85
lsls r0, 16
@@ -200,7 +200,7 @@ sub_814B860: @ 814B860
strh r0, [r1]
b _0814B884
.align 2, 0
-_0814B878: .4byte gUnknown_203AD30
+_0814B878: .4byte gSpecialVar_ItemId
_0814B87C:
ldrh r0, [r1]
movs r1, 0x1
@@ -211,7 +211,7 @@ _0814B884:
ldrb r0, [r2, 0x8]
lsls r0, 5
adds r0, r2, r0
- ldr r1, _0814B8E4 @ =gUnknown_203AD30
+ ldr r1, _0814B8E4 @ =gSpecialVar_ItemId
ldrh r1, [r1]
subs r1, 0x85
adds r0, 0xA4
@@ -250,7 +250,7 @@ _0814B884:
bx r0
.align 2, 0
_0814B8E0: .4byte gUnknown_203F3DC
-_0814B8E4: .4byte gUnknown_203AD30
+_0814B8E4: .4byte gSpecialVar_ItemId
_0814B8E8: .4byte sub_814BA98
_0814B8EC: .4byte sub_814BA80
thumb_func_end sub_814B860
diff --git a/asm/unk_814BB4C.s b/asm/unk_814BB4C.s
index 1895133dc..c3f054fc7 100644
--- a/asm/unk_814BB4C.s
+++ b/asm/unk_814BB4C.s
@@ -540,7 +540,7 @@ _0814BF1A:
movs r3, 0
cmp r3, r4
bcs _0814BF7E
- ldr r7, _0814BF9C @ =gUnknown_2022118
+ ldr r7, _0814BF9C @ =gBlockRecvBuffer
movs r6, 0
ldr r4, _0814BFA0 @ =gUnknown_83DFC9C
_0814BF3C:
@@ -592,7 +592,7 @@ _0814BF7E:
b _0814BFC0
.align 2, 0
_0814BF98: .4byte gUnknown_846E3C8
-_0814BF9C: .4byte gUnknown_2022118
+_0814BF9C: .4byte gBlockRecvBuffer
_0814BFA0: .4byte gUnknown_83DFC9C
_0814BFA4:
movs r0, 0
@@ -2299,7 +2299,7 @@ _0814CCB0:
adds r4, 0x42
cmp r8, r3
bcs _0814CCDE
- ldr r2, _0814CCF8 @ =gUnknown_2022118
+ ldr r2, _0814CCF8 @ =gBlockRecvBuffer
_0814CCBE:
mov r3, r8
lsls r1, r3, 5
@@ -2329,7 +2329,7 @@ _0814CCDE:
b _0814CF92
.align 2, 0
_0814CCF4: .4byte gUnknown_846E3C8
-_0814CCF8: .4byte gUnknown_2022118
+_0814CCF8: .4byte gBlockRecvBuffer
_0814CCFC:
movs r0, 0x6
b _0814CF92
@@ -2635,7 +2635,7 @@ _0814CF3C:
movs r1, 0
movs r2, 0x30
bl memset
- ldr r1, _0814CF6C @ =gUnknown_2022118
+ ldr r1, _0814CF6C @ =gBlockRecvBuffer
adds r0, r4, 0
movs r2, 0x30
bl memcpy
@@ -2645,7 +2645,7 @@ _0814CF64:
strh r0, [r7, 0x10]
b _0814CF8E
.align 2, 0
-_0814CF6C: .4byte gUnknown_2022118
+_0814CF6C: .4byte gBlockRecvBuffer
_0814CF70:
bl sub_814B930
movs r0, 0x12
@@ -3071,7 +3071,7 @@ _0814D296:
cmp r5, r3
bcs _0814D2D4
adds r1, r6, 0
- ldr r2, _0814D2EC @ =gUnknown_2022118
+ ldr r2, _0814D2EC @ =gBlockRecvBuffer
_0814D2BC:
lsls r0, r5, 8
adds r0, r2
@@ -3096,7 +3096,7 @@ _0814D2D4:
b _0814D2FA
.align 2, 0
_0814D2E8: .4byte gUnknown_846E3C8
-_0814D2EC: .4byte gUnknown_2022118
+_0814D2EC: .4byte gBlockRecvBuffer
_0814D2F0:
movs r0, 0x16
movs r1, 0x1
diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s
index 40d5a13b0..141ff4d18 100644
--- a/asm/unk_81507FC.s
+++ b/asm/unk_81507FC.s
@@ -1150,7 +1150,7 @@ _081510F4:
beq _08151116
ldr r0, [r6]
adds r0, 0x4A
- ldr r1, _08151148 @ =gUnknown_2022118
+ ldr r1, _08151148 @ =gBlockRecvBuffer
movs r2, 0x3C
bl memcpy
adds r0, r4, 0
@@ -1188,7 +1188,7 @@ _08151140:
strb r0, [r1, 0x10]
b _0815118A
.align 2, 0
-_08151148: .4byte gUnknown_2022118
+_08151148: .4byte gBlockRecvBuffer
_0815114C: .4byte gUnknown_203F3E0
_08151150:
movs r0, 0x1
@@ -1305,7 +1305,7 @@ _08151228:
lsls r0, 1
adds r2, r0
lsls r0, r4, 8
- ldr r1, _08151294 @ =gUnknown_2022118
+ ldr r1, _08151294 @ =gBlockRecvBuffer
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
@@ -1350,7 +1350,7 @@ _0815128A:
strb r0, [r1, 0x10]
b _081512AA
.align 2, 0
-_08151294: .4byte gUnknown_2022118
+_08151294: .4byte gBlockRecvBuffer
_08151298: .4byte gUnknown_203F3E0
_0815129C:
bl sub_8155E68
@@ -1501,7 +1501,7 @@ _081513C4:
lsls r0, 1
adds r2, r0
lsls r0, r4, 8
- ldr r1, _08151438 @ =gUnknown_2022118
+ ldr r1, _08151438 @ =gBlockRecvBuffer
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
@@ -1548,7 +1548,7 @@ _0815142A:
b _08151480
.align 2, 0
_08151434: .4byte gUnknown_203F3E0
-_08151438: .4byte gUnknown_2022118
+_08151438: .4byte gBlockRecvBuffer
_0815143C:
bl sub_81532B8
b _08151480
@@ -2016,7 +2016,7 @@ _081517D2:
ldr r0, _08151844 @ =0x0000318c
adds r2, r0
lsls r0, r4, 8
- ldr r1, _08151848 @ =gUnknown_2022118
+ ldr r1, _08151848 @ =gBlockRecvBuffer
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
@@ -2063,7 +2063,7 @@ _08151836:
.align 2, 0
_08151840: .4byte gUnknown_203F3E0
_08151844: .4byte 0x0000318c
-_08151848: .4byte gUnknown_2022118
+_08151848: .4byte gBlockRecvBuffer
thumb_func_end sub_8151750
thumb_func_start sub_815184C
@@ -6310,7 +6310,7 @@ _081537BC: .4byte gUnknown_203F3E0
sub_81537C0: @ 81537C0
push {r4-r6,lr}
movs r5, 0
- ldr r6, _081537F0 @ =gUnknown_20370D0
+ ldr r6, _081537F0 @ =gSpecialVar_Result
_081537C6:
movs r0, 0x64
adds r1, r5, 0
@@ -6331,13 +6331,13 @@ _081537C6:
strh r0, [r6]
b _08153804
.align 2, 0
-_081537F0: .4byte gUnknown_20370D0
+_081537F0: .4byte gSpecialVar_Result
_081537F4: .4byte gPlayerParty
_081537F8:
adds r5, 0x1
cmp r5, 0x5
ble _081537C6
- ldr r1, _0815380C @ =gUnknown_20370D0
+ ldr r1, _0815380C @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
_08153804:
@@ -6345,7 +6345,7 @@ _08153804:
pop {r0}
bx r0
.align 2, 0
-_0815380C: .4byte gUnknown_20370D0
+_0815380C: .4byte gSpecialVar_Result
thumb_func_end sub_81537C0
thumb_func_start sub_8153810
diff --git a/asm/unk_8159F40.s b/asm/unk_8159F40.s
index a8d1b9bf8..aefa4ecff 100644
--- a/asm/unk_8159F40.s
+++ b/asm/unk_8159F40.s
@@ -23,7 +23,7 @@ sub_8159F40: @ 8159F40
bl ZeroPlayerPartyMons
bl ZeroEnemyPartyMons
ldr r1, _08159F94 @ =gUnknown_84792D0
- ldr r0, _08159F98 @ =gUnknown_20370C0
+ ldr r0, _08159F98 @ =gSpecialVar_0x8004
ldrh r0, [r0]
lsls r0, 2
adds r0, r1
@@ -49,7 +49,7 @@ _08159F72:
.align 2, 0
_08159F90: .4byte gBattleTypeFlags
_08159F94: .4byte gUnknown_84792D0
-_08159F98: .4byte gUnknown_20370C0
+_08159F98: .4byte gSpecialVar_0x8004
_08159F9C: .4byte gPlayerParty
_08159FA0:
movs r0, 0x64
diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s
index 6acbf447d..116458940 100644
--- a/asm/unk_815EDDC.s
+++ b/asm/unk_815EDDC.s
@@ -138,7 +138,7 @@ sub_815EEB0: @ 815EEB0
ldr r1, _0815EED0 @ =0x00000af8
adds r0, r1
bl sub_815EE3C
- ldr r1, _0815EED4 @ =gUnknown_20370C0
+ ldr r1, _0815EED4 @ =gSpecialVar_0x8004
ldrh r1, [r1]
cmp r0, r1
bcc _0815EED8
@@ -147,7 +147,7 @@ sub_815EEB0: @ 815EEB0
.align 2, 0
_0815EECC: .4byte gSaveBlock2Ptr
_0815EED0: .4byte 0x00000af8
-_0815EED4: .4byte gUnknown_20370C0
+_0815EED4: .4byte gSpecialVar_0x8004
_0815EED8:
movs r0, 0
_0815EEDA:
@@ -227,7 +227,7 @@ sub_815EF5C: @ 815EF5C
ldr r0, [r0]
ldr r1, _0815EF90 @ =0x00000af8
adds r4, r0, r1
- ldr r5, _0815EF94 @ =gUnknown_20370C0
+ ldr r5, _0815EF94 @ =gSpecialVar_0x8004
ldrh r0, [r5]
bl sub_815EE88
lsls r0, 24
@@ -245,7 +245,7 @@ sub_815EF5C: @ 815EF5C
.align 2, 0
_0815EF8C: .4byte gSaveBlock2Ptr
_0815EF90: .4byte 0x00000af8
-_0815EF94: .4byte gUnknown_20370C0
+_0815EF94: .4byte gSpecialVar_0x8004
_0815EF98:
movs r0, 0
_0815EF9A:
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s
index c57ca5366..67c159abc 100644
--- a/asm/wild_encounter.s
+++ b/asm/wild_encounter.s
@@ -1001,15 +1001,15 @@ sub_8082E54: @ 8082E54
bne _08082EB0
bl sub_807F704
_08082E9C:
- ldr r0, _08082EAC @ =gUnknown_20370D0
+ ldr r0, _08082EAC @ =gSpecialVar_Result
strh r4, [r0]
b _08082EB6
.align 2, 0
_08082EA4: .4byte 0x0000ffff
_08082EA8: .4byte gUnknown_83C9CB8
-_08082EAC: .4byte gUnknown_20370D0
+_08082EAC: .4byte gSpecialVar_Result
_08082EB0:
- ldr r1, _08082EBC @ =gUnknown_20370D0
+ ldr r1, _08082EBC @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
_08082EB6:
@@ -1017,7 +1017,7 @@ _08082EB6:
pop {r0}
bx r0
.align 2, 0
-_08082EBC: .4byte gUnknown_20370D0
+_08082EBC: .4byte gSpecialVar_Result
thumb_func_end sub_8082E54
thumb_func_start sub_8082EC0
diff --git a/berry_fix/Makefile b/berry_fix/Makefile
new file mode 100644
index 000000000..ffe0cf251
--- /dev/null
+++ b/berry_fix/Makefile
@@ -0,0 +1,160 @@
+include $(DEVKITARM)/base_tools
+export CPP := $(PREFIX)cpp
+export LD := $(PREFIX)ld
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+else
+EXE :=
+endif
+
+GAME_CODE := AGBJ
+MAKER_CODE := 01
+REVISION := 0
+
+SHELL := /bin/bash -o pipefail
+
+CPPFLAGS := -I ../tools/agbcc/include -I ../tools/agbcc -iquote include -nostdinc -undef
+
+ROM := berry_fix.gba
+OBJ_DIR := build
+CC1 := ../tools/agbcc/bin/agbcc$(EXE)
+override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
+
+
+ELF = $(ROM:.gba=.elf)
+MAP = $(ROM:.gba=.map)
+
+C_SUBDIR = src
+ASM_SUBDIR = asm
+DATA_ASM_SUBDIR = data
+
+C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
+ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
+DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
+
+ASFLAGS := -mcpu=arm7tdmi
+
+LDFLAGS = -Map ../$(MAP)
+
+SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
+GFX := ../tools/gbagfx/gbagfx$(EXE)
+AIF := ../tools/aif2pcm/aif2pcm$(EXE)
+MID := ../tools/mid2agb/mid2agb$(EXE)
+SCANINC := ../tools/scaninc/scaninc$(EXE)
+PREPROC := ../tools/preproc/preproc$(EXE)
+RAMSCRGEN := ../tools/ramscrgen/ramscrgen$(EXE)
+FIX := ../tools/gbafix/gbafix$(EXE)
+
+# Clear the default suffixes
+.SUFFIXES:
+# Don't delete intermediate files
+.SECONDARY:
+# Delete files that weren't built properly
+.DELETE_ON_ERROR:
+
+# Secondary expansion is required for dependency variables in object rules.
+.SECONDEXPANSION:
+
+.PHONY: rom clean compare tidy
+
+C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c)
+C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
+
+ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
+ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
+
+DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
+DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
+
+SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s)
+SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
+
+MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
+MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
+
+OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
+# OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
+
+SUBDIRS := $(sort $(dir $(OBJS)))
+
+$(shell mkdir -p $(SUBDIRS))
+
+rom: $(ROM)
+
+# For contributors to make sure a change didn't affect the contents of the ROM.
+compare: $(ROM)
+ @$(SHA1) rom.sha1
+
+clean: tidy
+ rm -f sound/direct_sound_samples/*.bin
+ rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s
+ find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
+ make -C payload clean
+
+tidy:
+ rm -f $(ROM) $(ELF) $(MAP)
+ rm -r build/*
+ make -C payload tidy
+
+%.s: ;
+%.png: ;
+%.pal: ;
+%.aif: ;
+
+%.1bpp: %.png ; $(GFX) $< $@
+%.4bpp: %.png ; $(GFX) $< $@
+%.8bpp: %.png ; $(GFX) $< $@
+%.gbapal: %.pal ; $(GFX) $< $@
+%.gbapal: %.png ; $(GFX) $< $@
+%.lz: % ; $(GFX) $< $@
+%.rl: % ; $(GFX) $< $@
+
+
+ifeq ($(NODEP),1)
+$(C_BUILDDIR)/%.o: c_dep :=
+else
+$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c)
+endif
+
+$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep)
+ @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
+ @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
+ $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
+
+ifeq ($(NODEP),1)
+$(ASM_BUILDDIR)/%.o: asm_dep :=
+else
+$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s)
+endif
+
+$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
+ $(AS) $(ASFLAGS) -o $@ $<
+
+ifeq ($(NODEP),1)
+$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
+else
+$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s)
+endif
+
+payload: data/payload.gba.lz
+
+payload/payload.gba:
+ $(MAKE) -C payload/
+
+data/payload.gba.lz: payload/payload.gba
+ $(GFX) $< $@ -search 1
+
+$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
+ $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
+
+$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
+ $(AS) $(ASFLAGS) -I sound -o $@ $<
+
+$(ELF): ld_script.txt $(OBJS)
+ cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../ld_script.txt -o ../$@
+
+$(ROM): $(ELF)
+ $(OBJCOPY) -O binary $< $@
+ $(FIX) $@ -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
+
diff --git a/berry_fix/asm/berry_fix_header.inc b/berry_fix/asm/berry_fix_header.inc
new file mode 100644
index 000000000..5167d2ff0
--- /dev/null
+++ b/berry_fix/asm/berry_fix_header.inc
@@ -0,0 +1,35 @@
+ .global BerryFixMBHeaderNintendoLogo
+BerryFixMBHeaderNintendoLogo:
+ .space 156
+
+BerryFixMBHeaderGameTitle:
+ .space 12
+
+ .global BerryFixMBHeaderGameCode
+BerryFixMBHeaderGameCode:
+ .space 4
+
+BerryFixMBHeaderMakerCode:
+ .space 2
+
+BerryFixMBHeaderMagic:
+ .byte 0
+
+BerryFixMBHeaderMainUnitCode:
+ .byte 0
+
+BerryFixMBHeaderDeviceType:
+ .byte 0
+
+BerryFixMBHeaderReserved1:
+ .space 7
+
+ .global BerryFixMBHeaderSoftwareVersion
+BerryFixMBHeaderSoftwareVersion:
+ .byte 0
+
+BerryFixMBHeaderChecksum:
+ .byte 0
+
+BerryFixMBHeaderReserved2:
+ .space 2
diff --git a/berry_fix/asm/loader.s b/berry_fix/asm/loader.s
new file mode 100644
index 000000000..39e0b768a
--- /dev/null
+++ b/berry_fix/asm/loader.s
@@ -0,0 +1,119 @@
+ .include "../asm/macros/asm.inc"
+ .include "../asm/macros/function.inc"
+ .include "../constants/gba_constants.inc"
+
+ .set SIO_ERROR, 0x0040
+ .set SIO_MULTI_BUSY, 0x0080
+
+ .set EWRAM_ORIG, 0x02000000
+ .set gCode, 0x02010000
+ .set PROG_ORIG, 0x00008000
+
+ .syntax unified
+
+ .text
+
+ arm_func_start _start
+_start: @ 0
+ b _entry
+ arm_func_end _start
+
+ .include "asm/berry_fix_header.inc"
+
+@ C0
+ .word 0
+
+ .global _GPIOPortData
+_GPIOPortData: @ C4
+ .2byte 0
+
+ .global _GPIOPortDirection
+_GPIOPortDirection: @ C6
+ .2byte 0
+
+ .global _GPIOPortReadEnable
+_GPIOPortReadEnable: @ C8
+ .2byte 0
+
+@ CA
+ .2byte 0
+
+@ CC
+ .space 0x34
+
+ arm_func_start _entry
+_entry: @ 100
+ b _send
+ arm_func_end _entry
+
+ .space 0x1C
+
+ arm_func_start _recv
+_recv:
+ @ Waits until link cable is no longer busy.
+ @ Returns nz if an error has occurred
+ @ Otherwise, returns the received short in r1.
+ @ Preserves r0
+_120:
+ ldrh r1, [r0, 0x8] @ SIOCNT
+ tst r1, SIO_MULTI_BUSY
+ beq _120
+_12c:
+ ldrh r1, [r0, 0x8] @ SIOCNT
+ tst r1, SIO_MULTI_BUSY
+ bne _12c
+ ldrh r1, [r0, 0x8] @ SIOCNT
+ tst r1, SIO_ERROR
+ bxne lr
+ ldrh r1, [r0] @ SIOMULTI0
+ bx lr
+ arm_func_end _recv
+
+ arm_func_start _send
+_send: @ 14c
+ ldr r0, =REG_SIOMULTI0
+_150:
+ bl _recv
+ bne _150
+ mov r2, 0
+ strh r2, [r0, 0xa] @ SIOMLT_SEND
+ cmp r1, 0
+ bne _150
+ mov r2, 0x8000
+_16c:
+ mov r1, 0
+_170:
+ strh r1, [r0, 0xa] @ SIOMLT_SEND
+ bl _recv
+ bne _150
+ cmp r1, r2
+ bne _16c
+ lsr r2, 5
+ cmp r1, 0
+ bne _170
+ ldr r3, =BerryFixMBHeaderGameCode
+ ldrh r2, [r3]
+ strh r2, [r0, 0xa] @ SIOMLT_SEND
+ bl _recv
+_1a0:
+ bne _1a0
+ cmp r1, r2
+ bne _1a0
+ ldrh r2, [r3, 0x2]
+ strh r2, [r0, 0xa] @ SIOMLT_SEND
+ bl _recv
+ bne _1a0
+ cmp r1, r2
+ bne _1a0
+ mov r1, 0
+ strh r1, [r0, 0xa] @ SIOMLT_SEND
+ ldr r0, =_data_2f0
+ ldr r1, =gCode
+ swi 0x11 << 16
+ ldr lr, =gCode
+ bx lr
+ .pool
+ arm_func_end _send
+ @ 1f0
+
+ .align 2, 0 @ don't pad with nop
diff --git a/berry_fix/charmap.txt b/berry_fix/charmap.txt
new file mode 100644
index 000000000..a736b40f2
--- /dev/null
+++ b/berry_fix/charmap.txt
@@ -0,0 +1,1067 @@
+' ' = 00
+'À' = 01
+'Á' = 02
+'Â' = 03
+'Ç' = 04
+'È' = 05
+'É' = 06
+'Ê' = 07
+'Ë' = 08
+'Ì' = 09
+'Î' = 0B
+'Ï' = 0C
+'Ò' = 0D
+'Ó' = 0E
+'Ô' = 0F
+'Œ' = 10
+'Ù' = 11
+'Ú' = 12
+'Û' = 13
+'Ñ' = 14
+'ß' = 15
+'à' = 16
+'á' = 17
+'ç' = 19
+'è' = 1A
+'é' = 1B
+'ê' = 1C
+'ë' = 1D
+'ì' = 1E
+'î' = 20
+'ï' = 21
+'ò' = 22
+'ó' = 23
+'ô' = 24
+'œ' = 25
+'ù' = 26
+'ú' = 27
+'û' = 28
+'ñ' = 29
+'º' = 2A
+'ª' = 2B
+SUPER_ER = 2C
+'&' = 2D
+'+' = 2E
+LV = 34
+'=' = 35
+';' = 36
+'¿' = 51
+'¡' = 52
+PK = 53
+PKMN = 53 54
+POKEBLOCK = 55 56 57 58 59
+'Í' = 5A
+'%' = 5B
+'(' = 5C
+')' = 5D
+'â' = 68
+'í' = 6F
+UNK_SPACER = 77
+UP_ARROW = 79
+DOWN_ARROW = 7A
+LEFT_ARROW = 7B
+RIGHT_ARROW = 7C
+'0' = A1
+'1' = A2
+'2' = A3
+'3' = A4
+'4' = A5
+'5' = A6
+'6' = A7
+'7' = A8
+'8' = A9
+'9' = AA
+'!' = AB
+'?' = AC
+'.' = AD
+'-' = AE
+'·' = AF
+'…' = B0
+'“' = B1
+'”' = B2
+'‘' = B3
+'’' = B4
+'♂' = B5
+'♀' = B6
+'¥' = B7
+',' = B8
+'×' = B9
+'/' = BA
+'A' = BB
+'B' = BC
+'C' = BD
+'D' = BE
+'E' = BF
+'F' = C0
+'G' = C1
+'H' = C2
+'I' = C3
+'J' = C4
+'K' = C5
+'L' = C6
+'M' = C7
+'N' = C8
+'O' = C9
+'P' = CA
+'Q' = CB
+'R' = CC
+'S' = CD
+'T' = CE
+'U' = CF
+'V' = D0
+'W' = D1
+'X' = D2
+'Y' = D3
+'Z' = D4
+'a' = D5
+'b' = D6
+'c' = D7
+'d' = D8
+'e' = D9
+'f' = DA
+'g' = DB
+'h' = DC
+'i' = DD
+'j' = DE
+'k' = DF
+'l' = E0
+'m' = E1
+'n' = E2
+'o' = E3
+'p' = E4
+'q' = E5
+'r' = E6
+'s' = E7
+'t' = E8
+'u' = E9
+'v' = EA
+'w' = EB
+'x' = EC
+'y' = ED
+'z' = EE
+'▶' = EF
+':' = F0
+'Ä' = F1
+'Ö' = F2
+'Ü' = F3
+'ä' = F4
+'ö' = F5
+'ü' = F6
+TALL_PLUS = FC 0C FB
+'$' = FF
+
+@ Hiragana
+'あ' = 01
+'い' = 02
+'う' = 03
+'え' = 04
+'お' = 05
+'か' = 06
+'き' = 07
+'く' = 08
+'け' = 09
+'こ' = 0A
+'さ' = 0B
+'し' = 0C
+'す' = 0D
+'せ' = 0E
+'そ' = 0F
+'た' = 10
+'ち' = 11
+'つ' = 12
+'て' = 13
+'と' = 14
+'な' = 15
+'に' = 16
+'ぬ' = 17
+'ね' = 18
+'の' = 19
+'は' = 1A
+'ひ' = 1B
+'ふ' = 1C
+'へ' = 1D
+'ほ' = 1E
+'ま' = 1F
+'み' = 20
+'む' = 21
+'め' = 22
+'も' = 23
+'や' = 24
+'ゆ' = 25
+'よ' = 26
+'ら' = 27
+'り' = 28
+'る' = 29
+'れ' = 2A
+'ろ' = 2B
+'わ' = 2C
+'を' = 2D
+'ん' = 2E
+'ぁ' = 2F
+'ぃ' = 30
+'ぅ' = 31
+'ぇ' = 32
+'ぉ' = 33
+'ゃ' = 34
+'ゅ' = 35
+'ょ' = 36
+'が' = 37
+'ぎ' = 38
+'ぐ' = 39
+'げ' = 3A
+'ご' = 3B
+'ざ' = 3C
+'じ' = 3D
+'ず' = 3E
+'ぜ' = 3F
+'ぞ' = 40
+'だ' = 41
+'ぢ' = 42
+'づ' = 43
+'で' = 44
+'ど' = 45
+'ば' = 46
+'び' = 47
+'ぶ' = 48
+'べ' = 49
+'ぼ' = 4A
+'ぱ' = 4B
+'ぴ' = 4C
+'ぷ' = 4D
+'ぺ' = 4E
+'ぽ' = 4F
+'っ' = 50
+
+@ Katakana
+'ア' = 51
+'イ' = 52
+'ウ' = 53
+'エ' = 54
+'オ' = 55
+'カ' = 56
+'キ' = 57
+'ク' = 58
+'ケ' = 59
+'コ' = 5A
+'サ' = 5B
+'シ' = 5C
+'ス' = 5D
+'セ' = 5E
+'ソ' = 5F
+'タ' = 60
+'チ' = 61
+'ツ' = 62
+'テ' = 63
+'ト' = 64
+'ナ' = 65
+'ニ' = 66
+'ヌ' = 67
+'ネ' = 68
+'ノ' = 69
+'ハ' = 6A
+'ヒ' = 6B
+'フ' = 6C
+'ヘ' = 6D
+'ホ' = 6E
+'マ' = 6F
+'ミ' = 70
+'ム' = 71
+'メ' = 72
+'モ' = 73
+'ヤ' = 74
+'ユ' = 75
+'ヨ' = 76
+'ラ' = 77
+'リ' = 78
+'ル' = 79
+'レ' = 7A
+'ロ' = 7B
+'ワ' = 7C
+'ヲ' = 7D
+'ン' = 7E
+'ァ' = 7F
+'ィ' = 80
+'ゥ' = 81
+'ェ' = 82
+'ォ' = 83
+'ャ' = 84
+'ュ' = 85
+'ョ' = 86
+'ガ' = 87
+'ギ' = 88
+'グ' = 89
+'ゲ' = 8A
+'ゴ' = 8B
+'ザ' = 8C
+'ジ' = 8D
+'ズ' = 8E
+'ゼ' = 8F
+'ゾ' = 90
+'ダ' = 91
+'ヂ' = 92
+'ヅ' = 93
+'デ' = 94
+'ド' = 95
+'バ' = 96
+'ビ' = 97
+'ブ' = 98
+'ベ' = 99
+'ボ' = 9A
+'パ' = 9B
+'ピ' = 9C
+'プ' = 9D
+'ペ' = 9E
+'ポ' = 9F
+'ッ' = A0
+
+@ Japanese punctuation
+' ' = 00
+'!' = AB
+'?' = AC
+'。' = AD
+'ー' = AE
+'⋯' = B0
+
+STRING = FD
+
+@ string placeholders
+PLAYER = FD 01
+STR_VAR_1 = FD 02
+STR_VAR_2 = FD 03
+STR_VAR_3 = FD 04
+KUN = FD 05
+RIVAL = FD 06
+@ version-dependent strings (originally made for Ruby/Sapphire differences)
+@ Emerald uses the Sapphire strings (except for VERSION).
+VERSION = FD 07 @ "EMERALD"
+AQUA = FD 08
+MAGMA = FD 09
+ARCHIE = FD 0A
+MAXIE = FD 0B
+KYOGRE = FD 0C
+GROUDON = FD 0D
+
+@ battle string placeholders
+
+B_BUFF1 = FD 00
+B_BUFF2 = FD 01
+B_COPY_VAR_1 = FD 02
+B_COPY_VAR_2 = FD 03
+B_COPY_VAR_3 = FD 04
+B_PLAYER_MON1_NAME = FD 05
+B_OPPONENT_MON1_NAME = FD 06
+B_PLAYER_MON2_NAME = FD 07
+B_OPPONENT_MON2_NAME = FD 08
+B_LINK_PLAYER_MON1_NAME = FD 09
+B_LINK_OPPONENT_MON1_NAME = FD 0A
+B_LINK_PLAYER_MON2_NAME = FD 0B
+B_LINK_OPPONENT_MON2_NAME = FD 0C
+B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D
+B_ATK_PARTNER_NAME = FD 0E
+B_ATK_NAME_WITH_PREFIX = FD 0F
+B_DEF_NAME_WITH_PREFIX = FD 10
+B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler
+B_ACTIVE_NAME_WITH_PREFIX = FD 12
+B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
+B_CURRENT_MOVE = FD 14
+B_LAST_MOVE = FD 15
+B_LAST_ITEM = FD 16
+B_LAST_ABILITY = FD 17
+B_ATK_ABILITY = FD 18
+B_DEF_ABILITY = FD 19
+B_SCR_ACTIVE_ABILITY = FD 1A
+B_EFF_ABILITY = FD 1B
+B_TRAINER1_CLASS = FD 1C
+B_TRAINER1_NAME = FD 1D
+B_LINK_PLAYER_NAME = FD 1E
+B_LINK_PARTNER_NAME = FD 1F
+B_LINK_OPPONENT1_NAME = FD 20
+B_LINK_OPPONENT2_NAME = FD 21
+B_LINK_SCR_TRAINER_NAME = FD 22
+B_PLAYER_NAME = FD 23
+B_TRAINER1_LOSE_TEXT = FD 24
+B_TRAINER1_WIN_TEXT = FD 25
+B_26 = FD 26
+B_PC_CREATOR_NAME = FD 27
+B_ATK_PREFIX1 = FD 28
+B_DEF_PREFIX1 = FD 29
+B_ATK_PREFIX2 = FD 2A
+B_DEF_PREFIX2 = FD 2B
+B_ATK_PREFIX3 = FD 2C
+B_DEF_PREFIX3 = FD 2D
+B_TRAINER2_CLASS = FD 2E
+B_TRAINER2_NAME = FD 2F
+B_TRAINER2_LOSE_TEXT = FD 30
+B_TRAINER2_WIN_TEXT = FD 31
+B_PARTNER_CLASS = FD 32
+B_PARTNER_NAME = FD 33
+B_BUFF3 = FD 34
+
+@ indicates the end of a town/city name (before " TOWN" or " CITY")
+NAME_END = FC 00
+
+@ special 0xF7 character
+SPECIAL_F7 = F7
+
+@ more text functions
+
+COLOR = FC 01 @ use a color listed below right after
+HIGHLIGHT = FC 02 @ same as fc 01
+SHADOW = FC 03 @ same as fc 01
+COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes
+PALETTE = FC 05 @ used in credits
+SIZE = FC 06 @ note that anything other than "SMALL" is invalid
+UNKNOWN_7 = FC 07
+PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them
+PAUSE_UNTIL_PRESS = FC 09
+UNKNOWN_A = FC 0A
+PLAY_BGM = FC 0B
+ESCAPE = FC 0C
+SHIFT_TEXT = FC 0D
+UNKNOWN_E = FC 0E
+UNKNOWN_F = FC 0F
+PLAY_SE = FC 10
+CLEAR = FC 11
+SKIP = FC 12
+CLEAR_TO = FC 13
+UNKNOWN_14 = FC 14
+JPN = FC 15
+ENG = FC 16
+PAUSE_MUSIC = FC 17
+RESUME_MUSIC = FC 18
+
+@ colors
+
+TRANSPARENT = 00
+WHITE = 01
+DARK_GREY = 02
+LIGHT_GREY = 03
+RED = 04
+LIGHT_RED = 05
+GREEN = 06
+LIGHT_GREEN = 07
+BLUE = 08
+LIGHT_BLUE = 09
+@ these next colors can be set to anything arbitrary at runtime
+@ usually though they'll have the textbox border colors as described below
+DYNAMIC_COLOR1 = 0A @ white
+DYNAMIC_COLOR2 = 0B @ white with a tinge of green
+DYNAMIC_COLOR3 = 0C @ white 2
+DYNAMIC_COLOR4 = 0D @ aquamarine
+DYNAMIC_COLOR5 = 0E @ blue-green
+DYNAMIC_COLOR6 = 0F @ cerulean
+
+@ sound and music
+
+MUS_DUMMY = 00 00
+SE_KAIFUKU = 01 00
+SE_PC_LOGIN = 02 00
+SE_PC_OFF = 03 00
+SE_PC_ON = 04 00
+SE_SELECT = 05 00
+SE_WIN_OPEN = 06 00
+SE_WALL_HIT = 07 00
+SE_DOOR = 08 00
+SE_KAIDAN = 09 00
+SE_DANSA = 0A 00
+SE_JITENSYA = 0B 00
+SE_KOUKA_L = 0C 00
+SE_KOUKA_M = 0D 00
+SE_KOUKA_H = 0E 00
+SE_BOWA2 = 0F 00
+SE_POKE_DEAD = 10 00
+SE_NIGERU = 11 00
+SE_JIDO_DOA = 12 00
+SE_NAMINORI = 13 00
+SE_BAN = 14 00
+SE_PIN = 15 00
+SE_BOO = 16 00
+SE_BOWA = 17 00
+SE_JYUNI = 18 00
+SE_A = 19 00
+SE_I = 1A 00
+SE_U = 1B 00
+SE_E = 1C 00
+SE_O = 1D 00
+SE_N = 1E 00
+SE_SEIKAI = 1F 00
+SE_HAZURE = 20 00
+SE_EXP = 21 00
+SE_JITE_PYOKO = 22 00
+SE_MU_PACHI = 23 00
+SE_TK_KASYA = 24 00
+SE_FU_ZAKU = 25 00
+SE_FU_ZAKU2 = 26 00
+SE_FU_ZUZUZU = 27 00
+SE_RU_GASHIN = 28 00
+SE_RU_GASYAN = 29 00
+SE_RU_BARI = 2A 00
+SE_RU_HYUU = 2B 00
+SE_KI_GASYAN = 2C 00
+SE_TK_WARPIN = 2D 00
+SE_TK_WARPOUT = 2E 00
+SE_TU_SAA = 2F 00
+SE_HI_TURUN = 30 00
+SE_TRACK_MOVE = 31 00
+SE_TRACK_STOP = 32 00
+SE_TRACK_HAIKI = 33 00
+SE_TRACK_DOOR = 34 00
+SE_MOTER = 35 00
+SE_CARD = 36 00
+SE_SAVE = 37 00
+SE_KON = 38 00
+SE_KON2 = 39 00
+SE_KON3 = 3A 00
+SE_KON4 = 3B 00
+SE_SUIKOMU = 3C 00
+SE_NAGERU = 3D 00
+SE_TOY_C = 3E 00
+SE_TOY_D = 3F 00
+SE_TOY_E = 40 00
+SE_TOY_F = 41 00
+SE_TOY_G = 42 00
+SE_TOY_A = 43 00
+SE_TOY_B = 44 00
+SE_TOY_C1 = 45 00
+SE_MIZU = 46 00
+SE_HASHI = 47 00
+SE_DAUGI = 48 00
+SE_PINPON = 49 00
+SE_FUUSEN1 = 4A 00
+SE_FUUSEN2 = 4B 00
+SE_FUUSEN3 = 4C 00
+SE_TOY_KABE = 4D 00
+SE_TOY_DANGO = 4E 00
+SE_DOKU = 4F 00
+SE_ESUKA = 50 00
+SE_T_AME = 51 00
+SE_T_AME_E = 52 00
+SE_T_OOAME = 53 00
+SE_T_OOAME_E = 54 00
+SE_T_KOAME = 55 00
+SE_T_KOAME_E = 56 00
+SE_T_KAMI = 57 00
+SE_T_KAMI2 = 58 00
+SE_ELEBETA = 59 00
+SE_HINSI = 5A 00
+SE_EXPMAX = 5B 00
+SE_TAMAKORO = 5C 00
+SE_TAMAKORO_E = 5D 00
+SE_BASABASA = 5E 00
+SE_REGI = 5F 00
+SE_C_GAJI = 60 00
+SE_C_MAKU_U = 61 00
+SE_C_MAKU_D = 62 00
+SE_C_PASI = 63 00
+SE_C_SYU = 64 00
+SE_C_PIKON = 65 00
+SE_REAPOKE = 66 00
+SE_OP_BASYU = 67 00
+SE_BT_START = 68 00
+SE_DENDOU = 69 00
+SE_JIHANKI = 6A 00
+SE_TAMA = 6B 00
+SE_Z_SCROLL = 6C 00
+SE_Z_PAGE = 6D 00
+SE_PN_ON = 6E 00
+SE_PN_OFF = 6F 00
+SE_Z_SEARCH = 70 00
+SE_TAMAGO = 71 00
+SE_TB_START = 72 00
+SE_TB_KON = 73 00
+SE_TB_KARA = 74 00
+SE_BIDORO = 75 00
+SE_W085 = 76 00
+SE_W085B = 77 00
+SE_W231 = 78 00
+SE_W171 = 79 00
+SE_W233 = 7A 00
+SE_W233B = 7B 00
+SE_W145 = 7C 00
+SE_W145B = 7D 00
+SE_W145C = 7E 00
+SE_W240 = 7F 00
+SE_W015 = 80 00
+SE_W081 = 81 00
+SE_W081B = 82 00
+SE_W088 = 83 00
+SE_W016 = 84 00
+SE_W016B = 85 00
+SE_W003 = 86 00
+SE_W104 = 87 00
+SE_W013 = 88 00
+SE_W196 = 89 00
+SE_W086 = 8A 00
+SE_W004 = 8B 00
+SE_W025 = 8C 00
+SE_W025B = 8D 00
+SE_W152 = 8E 00
+SE_W026 = 8F 00
+SE_W172 = 90 00
+SE_W172B = 91 00
+SE_W053 = 92 00
+SE_W007 = 93 00
+SE_W092 = 94 00
+SE_W221 = 95 00
+SE_W221B = 96 00
+SE_W052 = 97 00
+SE_W036 = 98 00
+SE_W059 = 99 00
+SE_W059B = 9A 00
+SE_W010 = 9B 00
+SE_W011 = 9C 00
+SE_W017 = 9D 00
+SE_W019 = 9E 00
+SE_W028 = 9F 00
+SE_W013B = A0 00
+SE_W044 = A1 00
+SE_W029 = A2 00
+SE_W057 = A3 00
+SE_W056 = A4 00
+SE_W250 = A5 00
+SE_W030 = A6 00
+SE_W039 = A7 00
+SE_W054 = A8 00
+SE_W077 = A9 00
+SE_W020 = AA 00
+SE_W082 = AB 00
+SE_W047 = AC 00
+SE_W195 = AD 00
+SE_W006 = AE 00
+SE_W091 = AF 00
+SE_W146 = B0 00
+SE_W120 = B1 00
+SE_W153 = B2 00
+SE_W071B = B3 00
+SE_W071 = B4 00
+SE_W103 = B5 00
+SE_W062 = B6 00
+SE_W062B = B7 00
+SE_W048 = B8 00
+SE_W187 = B9 00
+SE_W118 = BA 00
+SE_W155 = BB 00
+SE_W122 = BC 00
+SE_W060 = BD 00
+SE_W185 = BE 00
+SE_W014 = BF 00
+SE_W043 = C0 00
+SE_W207 = C1 00
+SE_W207B = C2 00
+SE_W215 = C3 00
+SE_W109 = C4 00
+SE_W173 = C5 00
+SE_W280 = C6 00
+SE_W202 = C7 00
+SE_W060B = C8 00
+SE_W076 = C9 00
+SE_W080 = CA 00
+SE_W100 = CB 00
+SE_W107 = CC 00
+SE_W166 = CD 00
+SE_W129 = CE 00
+SE_W115 = CF 00
+SE_W112 = D0 00
+SE_W197 = D1 00
+SE_W199 = D2 00
+SE_W236 = D3 00
+SE_W204 = D4 00
+SE_W268 = D5 00
+SE_W070 = D6 00
+SE_W063 = D7 00
+SE_W127 = D8 00
+SE_W179 = D9 00
+SE_W151 = DA 00
+SE_W201 = DB 00
+SE_W161 = DC 00
+SE_W161B = DD 00
+SE_W227 = DE 00
+SE_W227B = DF 00
+SE_W226 = E0 00
+SE_W208 = E1 00
+SE_W213 = E2 00
+SE_W213B = E3 00
+SE_W234 = E4 00
+SE_W260 = E5 00
+SE_W328 = E6 00
+SE_W320 = E7 00
+SE_W255 = E8 00
+SE_W291 = E9 00
+SE_W089 = EA 00
+SE_W239 = EB 00
+SE_W230 = EC 00
+SE_W281 = ED 00
+SE_W327 = EE 00
+SE_W287 = EF 00
+SE_W257 = F0 00
+SE_W253 = F1 00
+SE_W258 = F2 00
+SE_W322 = F3 00
+SE_W298 = F4 00
+SE_W287B = F5 00
+SE_W114 = F6 00
+SE_W063B = F7 00
+SE_RG_W_DOOR = F8 00
+SE_RG_CARD1 = F9 00
+SE_RG_CARD2 = FA 00
+SE_RG_CARD3 = FB 00
+SE_RG_BAG1 = FC 00
+SE_RG_BAG2 = FD 00
+SE_RG_GETTING = FE 00
+SE_RG_SHOP = FF 00
+SE_RG_KITEKI = 00 01
+SE_RG_HELP_OP = 01 01
+SE_RG_HELP_CL = 02 01
+SE_RG_HELP_NG = 03 01
+SE_RG_DEOMOV = 04 01
+SE_RG_EXCELLENT = 05 01
+SE_RG_NAWAMISS = 06 01
+SE_TOREEYE = 07 01
+SE_TOREOFF = 08 01
+SE_HANTEI1 = 09 01
+SE_HANTEI2 = 0A 01
+SE_CURTAIN = 0B 01
+SE_CURTAIN1 = 0C 01
+SE_USSOKI = 0D 01
+MUS_TETSUJI = 5E 01
+MUS_FIELD13 = 5F 01
+MUS_KACHI22 = 60 01
+MUS_KACHI2 = 61 01
+MUS_KACHI3 = 62 01
+MUS_KACHI5 = 63 01
+MUS_PCC = 64 01
+MUS_NIBI = 65 01
+MUS_SUIKUN = 66 01
+MUS_DOORO1 = 67 01
+MUS_DOORO_X1 = 68 01
+MUS_DOORO_X3 = 69 01
+MUS_MACHI_S2 = 6A 01
+MUS_MACHI_S4 = 6B 01
+MUS_GIM = 6C 01
+MUS_NAMINORI = 6D 01
+MUS_DAN01 = 6E 01
+MUS_FANFA1 = 6F 01
+MUS_ME_ASA = 70 01
+MUS_ME_BACHI = 71 01
+MUS_FANFA4 = 72 01
+MUS_FANFA5 = 73 01
+MUS_ME_WAZA = 74 01
+MUS_BIJYUTU = 75 01
+MUS_DOORO_X4 = 76 01
+MUS_FUNE_KAN = 77 01
+MUS_ME_SHINKA = 78 01
+MUS_SHINKA = 79 01
+MUS_ME_WASURE = 7A 01
+MUS_SYOUJOEYE = 7B 01
+MUS_BOYEYE = 7C 01
+MUS_DAN02 = 7D 01
+MUS_MACHI_S3 = 7E 01
+MUS_ODAMAKI = 7F 01
+MUS_B_TOWER = 80 01
+MUS_SWIMEYE = 81 01
+MUS_DAN03 = 82 01
+MUS_ME_KINOMI = 83 01
+MUS_ME_TAMA = 84 01
+MUS_ME_B_BIG = 85 01
+MUS_ME_B_SMALL = 86 01
+MUS_ME_ZANNEN = 87 01
+MUS_BD_TIME = 88 01
+MUS_TEST1 = 89 01
+MUS_TEST2 = 8A 01
+MUS_TEST3 = 8B 01
+MUS_TEST4 = 8C 01
+MUS_TEST = 8D 01
+MUS_GOMACHI0 = 8E 01
+MUS_GOTOWN = 8F 01
+MUS_POKECEN = 90 01
+MUS_NEXTROAD = 91 01
+MUS_GRANROAD = 92 01
+MUS_CYCLING = 93 01
+MUS_FRIENDLY = 94 01
+MUS_MISHIRO = 95 01
+MUS_TOZAN = 96 01
+MUS_GIRLEYE = 97 01
+MUS_MINAMO = 98 01
+MUS_ASHROAD = 99 01
+MUS_EVENT0 = 9A 01
+MUS_DEEPDEEP = 9B 01
+MUS_KACHI1 = 9C 01
+MUS_TITLE3 = 9D 01
+MUS_DEMO1 = 9E 01
+MUS_GIRL_SUP = 9F 01
+MUS_HAGESHII = A0 01
+MUS_KAKKOII = A1 01
+MUS_KAZANBAI = A2 01
+MUS_AQA_0 = A3 01
+MUS_TSURETEK = A4 01
+MUS_BOY_SUP = A5 01
+MUS_RAINBOW = A6 01
+MUS_AYASII = A7 01
+MUS_KACHI4 = A8 01
+MUS_ROPEWAY = A9 01
+MUS_CASINO = AA 01
+MUS_HIGHTOWN = AB 01
+MUS_SAFARI = AC 01
+MUS_C_ROAD = AD 01
+MUS_AJITO = AE 01
+MUS_M_BOAT = AF 01
+MUS_M_DUNGON = B0 01
+MUS_FINECITY = B1 01
+MUS_MACHUPI = B2 01
+MUS_P_SCHOOL = B3 01
+MUS_DENDOU = B4 01
+MUS_TONEKUSA = B5 01
+MUS_MABOROSI = B6 01
+MUS_CON_FAN = B7 01
+MUS_CONTEST0 = B8 01
+MUS_MGM0 = B9 01
+MUS_T_BATTLE = BA 01
+MUS_OOAME = BB 01
+MUS_HIDERI = BC 01
+MUS_RUNECITY = BD 01
+MUS_CON_K = BE 01
+MUS_EIKOU_R = BF 01
+MUS_KARAKURI = C0 01
+MUS_HUTAGO = C1 01
+MUS_SITENNOU = C2 01
+MUS_YAMA_EYE = C3 01
+MUS_CONLOBBY = C4 01
+MUS_INTER_V = C5 01
+MUS_DAIGO = C6 01
+MUS_THANKFOR = C7 01
+MUS_END = C8 01
+MUS_B_FRONTIER = C9 01
+MUS_B_ARENA = CA 01
+MUS_ME_POINTGET = CB 01
+MUS_ME_TORE_EYE = CC 01
+MUS_PYRAMID = CD 01
+MUS_PYRAMID_TOP = CE 01
+MUS_B_PALACE = CF 01
+MUS_REKKUU_KOURIN = D0 01
+MUS_SATTOWER = D1 01
+MUS_ME_SYMBOLGET = D2 01
+MUS_B_DOME = D3 01
+MUS_B_TUBE = D4 01
+MUS_B_FACTORY = D5 01
+MUS_VS_REKKU = D6 01
+MUS_VS_FRONT = D7 01
+MUS_VS_MEW = D8 01
+MUS_B_DOME1 = D9 01
+MUS_BATTLE27 = DA 01
+MUS_BATTLE31 = DB 01
+MUS_BATTLE20 = DC 01
+MUS_BATTLE32 = DD 01
+MUS_BATTLE33 = DE 01
+MUS_BATTLE36 = DF 01
+MUS_BATTLE34 = E0 01
+MUS_BATTLE35 = E1 01
+MUS_BATTLE38 = E2 01
+MUS_BATTLE30 = E3 01
+MUS_RG_ANNAI = E4 01
+MUS_RG_SLOT = E5 01
+MUS_RG_AJITO = E6 01
+MUS_RG_GYM = E7 01
+MUS_RG_PURIN = E8 01
+MUS_RG_DEMO = E9 01
+MUS_RG_TITLE = EA 01
+MUS_RG_GUREN = EB 01
+MUS_RG_SHION = EC 01
+MUS_RG_KAIHUKU = ED 01
+MUS_RG_CYCLING = EE 01
+MUS_RG_ROCKET = EF 01
+MUS_RG_SHOUJO = F0 01
+MUS_RG_SHOUNEN = F1 01
+MUS_RG_DENDOU = F2 01
+MUS_RG_T_MORI = F3 01
+MUS_RG_OTSUKIMI = F4 01
+MUS_RG_POKEYASHI = F5 01
+MUS_RG_ENDING = F6 01
+MUS_RG_LOAD01 = F7 01
+MUS_RG_OPENING = F8 01
+MUS_RG_LOAD02 = F9 01
+MUS_RG_LOAD03 = FA 01
+MUS_RG_CHAMP_R = FB 01
+MUS_RG_VS_GYM = FC 01
+MUS_RG_VS_TORE = FD 01
+MUS_RG_VS_YASEI = FE 01
+MUS_RG_VS_LAST = FF 01
+MUS_RG_MASARA = 00 02
+MUS_RG_KENKYU = 01 02
+MUS_RG_OHKIDO = 02 02
+MUS_RG_POKECEN = 03 02
+MUS_RG_SANTOAN = 04 02
+MUS_RG_NAMINORI = 05 02
+MUS_RG_P_TOWER = 06 02
+MUS_RG_SHIRUHU = 07 02
+MUS_RG_HANADA = 08 02
+MUS_RG_TAMAMUSI = 09 02
+MUS_RG_WIN_TRE = 0A 02
+MUS_RG_WIN_YASEI = 0B 02
+MUS_RG_WIN_GYM = 0C 02
+MUS_RG_KUCHIBA = 0D 02
+MUS_RG_NIBI = 0E 02
+MUS_RG_RIVAL1 = 0F 02
+MUS_RG_RIVAL2 = 10 02
+MUS_RG_FAN2 = 11 02
+MUS_RG_FAN5 = 12 02
+MUS_RG_FAN6 = 13 02
+MUS_ME_RG_PHOTO = 14 02
+MUS_RG_TITLEROG = 15 02
+MUS_RG_GET_YASEI = 16 02
+MUS_RG_SOUSA = 17 02
+MUS_RG_SEKAIKAN = 18 02
+MUS_RG_SEIBETU = 19 02
+MUS_RG_JUMP = 1A 02
+MUS_RG_UNION = 1B 02
+MUS_RG_NETWORK = 1C 02
+MUS_RG_OKURIMONO = 1D 02
+MUS_RG_KINOMIKUI = 1E 02
+MUS_RG_NANADUNGEON = 1F 02
+MUS_RG_OSHIE_TV = 20 02
+MUS_RG_NANASHIMA = 21 02
+MUS_RG_NANAISEKI = 22 02
+MUS_RG_NANA123 = 23 02
+MUS_RG_NANA45 = 24 02
+MUS_RG_NANA67 = 25 02
+MUS_RG_POKEFUE = 26 02
+MUS_RG_VS_DEO = 27 02
+MUS_RG_VS_MYU2 = 28 02
+MUS_RG_VS_DEN = 29 02
+MUS_RG_EXEYE = 2A 02
+MUS_RG_DEOEYE = 2B 02
+MUS_RG_T_TOWER = 2C 02
+MUS_RG_SLOWMASARA = 2D 02
+MUS_RG_TVNOIZE = 2E 02
+PH_TRAP_BLEND = 2F 02
+PH_TRAP_HELD = 30 02
+PH_TRAP_SOLO = 31 02
+PH_FACE_BLEND = 32 02
+PH_FACE_HELD = 33 02
+PH_FACE_SOLO = 34 02
+PH_CLOTH_BLEND = 35 02
+PH_CLOTH_HELD = 36 02
+PH_CLOTH_SOLO = 37 02
+PH_DRESS_BLEND = 38 02
+PH_DRESS_HELD = 39 02
+PH_DRESS_SOLO = 3A 02
+PH_FLEECE_BLEND = 3B 02
+PH_FLEECE_HELD = 3C 02
+PH_FLEECE_SOLO = 3D 02
+PH_KIT_BLEND = 3E 02
+PH_KIT_HELD = 3F 02
+PH_KIT_SOLO = 40 02
+PH_PRICE_BLEND = 41 02
+PH_PRICE_HELD = 42 02
+PH_PRICE_SOLO = 43 02
+PH_LOT_BLEND = 44 02
+PH_LOT_HELD = 45 02
+PH_LOT_SOLO = 46 02
+PH_GOAT_BLEND = 47 02
+PH_GOAT_HELD = 48 02
+PH_GOAT_SOLO = 49 02
+PH_THOUGHT_BLEND = 4A 02
+PH_THOUGHT_HELD = 4B 02
+PH_THOUGHT_SOLO = 4C 02
+PH_CHOICE_BLEND = 4D 02
+PH_CHOICE_HELD = 4E 02
+PH_CHOICE_SOLO = 4F 02
+PH_MOUTH_BLEND = 50 02
+PH_MOUTH_HELD = 51 02
+PH_MOUTH_SOLO = 52 02
+PH_FOOT_BLEND = 53 02
+PH_FOOT_HELD = 54 02
+PH_FOOT_SOLO = 55 02
+PH_GOOSE_BLEND = 56 02
+PH_GOOSE_HELD = 57 02
+PH_GOOSE_SOLO = 58 02
+PH_STRUT_BLEND = 59 02
+PH_STRUT_HELD = 5A 02
+PH_STRUT_SOLO = 5B 02
+PH_CURE_BLEND = 5C 02
+PH_CURE_HELD = 5D 02
+PH_CURE_SOLO = 5E 02
+PH_NURSE_BLEND = 5F 02
+PH_NURSE_HELD = 60 02
+PH_NURSE_SOLO = 61 02
+
+A_BUTTON = F8 00
+B_BUTTON = F8 01
+DPAD_UPDOWN = F8 0A
+DPAD_NONE = F8 0C
+
+UP_ARROW_2 = F9 00
+DOWN_ARROW_2 = F9 01
+LEFT_ARROW_2 = F9 02
+RIGHT_ARROW_2 = F9 03
+PLUS = F9 04
+LV_2 = F9 05
+PP = F9 06
+ID = F9 07
+NO = F9 08
+UNDERSCORE = F9 09
+CIRCLE_1 = F9 0A
+CIRCLE_2 = F9 0B
+CIRCLE_3 = F9 0C
+CIRCLE_4 = F9 0D
+CIRCLE_5 = F9 0E
+CIRCLE_6 = F9 0F
+CIRCLE_7 = F9 10
+CIRCLE_8 = F9 11
+CIRCLE_9 = F9 12
+ROUND_LEFT_PAREN = F9 13
+ROUND_RIGHT_PAREN = F9 14
+CIRCLE_DOT = F9 15
+TRIANGLE = F9 16
+BIG_MULT_X = F9 17
+
+EMOJI_UNDERSCORE = F9 D0
+EMOJI_PIPE = F9 D1
+EMOJI_HIGHBAR = F9 D2
+EMOJI_TILDE = F9 D3
+EMOJI_LEFT_PAREN = F9 D4
+EMOJI_RIGHT_PAREN = F9 D5
+EMOJI_UNION = F9 D6 @ ⊂
+EMOJI_GREATER_THAN = F9 D7
+EMOJI_LEFT_EYE = F9 D8
+EMOJI_RIGHT_EYE = F9 D9
+EMOJI_AT = F9 DA
+EMOJI_SEMICOLON = F9 DB
+EMOJI_PLUS = F9 DC
+EMOJI_MINUS = F9 DD
+EMOJI_EQUALS = F9 DE
+EMOJI_SPIRAL = F9 DF
+EMOJI_TONGUE = F9 E0
+EMOJI_TRIANGLE_OUTLINE = F9 E1
+EMOJI_ACUTE = F9 E2
+EMOJI_GRAVE = F9 E3
+EMOJI_CIRCLE = F9 E4
+EMOJI_TRIANGLE = F9 E5
+EMOJI_SQUARE = F9 E6
+EMOJI_HEART = F9 E7
+EMOJI_MOON = F9 E8
+EMOJI_NOTE = F9 E9
+EMOJI_BALL = F9 EA
+EMOJI_BOLT = F9 EB
+EMOJI_LEAF = F9 EC
+EMOJI_FIRE = F9 ED
+EMOJI_WATER = F9 EE
+EMOJI_LEFT_FIST = F9 EF
+EMOJI_RIGHT_FIST = F9 F0
+EMOJI_BIGWHEEL = F9 F1
+EMOJI_SMALLWHEEL = F9 F2
+EMOJI_SPHERE = F9 F3
+EMOJI_IRRITATED = F9 F4
+EMOJI_MISCHIEVOUS = F9 F5
+EMOJI_HAPPY = F9 F6
+EMOJI_ANGRY = F9 F7
+EMOJI_SURPRISED = F9 F8
+EMOJI_BIGSMILE = F9 F9
+EMOJI_EVIL = F9 FA
+EMOJI_TIRED = F9 FB
+EMOJI_NEUTRAL = F9 FC
+EMOJI_SHOCKED = F9 FD
+EMOJI_BIGANGER = F9 FE
+
+'\l' = FA @ scroll up window text
+'\p' = FB @ new paragraph
+'\n' = FE @ new line
diff --git a/berry_fix/data/data.s b/berry_fix/data/data.s
new file mode 100644
index 000000000..dbb86b13b
--- /dev/null
+++ b/berry_fix/data/data.s
@@ -0,0 +1,4 @@
+ .section .rodata
+
+_data_2f0::
+ .incbin "data/payload.gba.lz"
diff --git a/berry_fix/ld_script.sed b/berry_fix/ld_script.sed
new file mode 100644
index 000000000..b91542b6f
--- /dev/null
+++ b/berry_fix/ld_script.sed
@@ -0,0 +1,14 @@
+/<EWRAM>/ {
+ r sym_ewram.ld
+ d
+}
+
+/<BSS>/ {
+ r sym_bss.ld
+ d
+}
+
+/<COMMON>/ {
+ r sym_common.ld
+ d
+}
diff --git a/berry_fix/ld_script.txt b/berry_fix/ld_script.txt
new file mode 100644
index 000000000..2edeaef7c
--- /dev/null
+++ b/berry_fix/ld_script.txt
@@ -0,0 +1,31 @@
+ENTRY(_start)
+
+SECTIONS {
+ . = 0x2000000;
+
+ .text :
+ ALIGN(4)
+ {
+ asm/loader.o(.text);
+ } =0
+
+ . += 0x100;
+ .rodata :
+ ALIGN(4)
+ {
+ data/data.o(.rodata);
+ } =0
+
+ . = 0x2010000;
+
+ ewram (NOLOAD) :
+ ALIGN(4)
+ {
+ gCode = .;
+ }
+
+ /DISCARD/ :
+ {
+ *(*);
+ }
+}
diff --git a/berry_fix/payload/Makefile b/berry_fix/payload/Makefile
new file mode 100644
index 000000000..e63d74234
--- /dev/null
+++ b/berry_fix/payload/Makefile
@@ -0,0 +1,159 @@
+include $(DEVKITARM)/base_tools
+export CPP := $(PREFIX)cpp
+export LD := $(PREFIX)ld
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+else
+EXE :=
+endif
+
+SHELL := /bin/bash -o pipefail
+
+CPPFLAGS := -I ../../tools/agbcc/include -I ../../tools/agbcc -iquote include -nostdinc -undef
+
+ROM := payload.gba
+OBJ_DIR := build
+CC1 := ../../tools/agbcc/bin/agbcc$(EXE)
+override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
+
+
+ELF = $(ROM:.gba=.elf)
+MAP = $(ROM:.gba=.map)
+
+C_SUBDIR = src
+ASM_SUBDIR = asm
+DATA_ASM_SUBDIR = data
+
+C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
+ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
+DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
+
+ASFLAGS := -mcpu=arm7tdmi
+
+LDFLAGS = -Map ../$(MAP)
+
+LIB := -L ../../../tools/agbcc/lib -lagb_flash -lsiirtc -lagbsyscall -lgcc
+
+SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
+GFX := ../../tools/gbagfx/gbagfx$(EXE)
+AIF := ../../tools/aif2pcm/aif2pcm$(EXE)
+MID := ../../tools/mid2agb/mid2agb$(EXE)
+SCANINC := ../../tools/scaninc/scaninc$(EXE)
+PREPROC := ../../tools/preproc/preproc$(EXE)
+RAMSCRGEN := ../../tools/ramscrgen/ramscrgen$(EXE)
+FIX := ../../tools/gbafix/gbafix$(EXE)
+
+# Clear the default suffixes
+.SUFFIXES:
+# Don't delete intermediate files
+.SECONDARY:
+# Delete files that weren't built properly
+.DELETE_ON_ERROR:
+
+# Secondary expansion is required for dependency variables in object rules.
+.SECONDEXPANSION:
+
+.PHONY: rom clean compare tidy
+
+C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c)
+C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
+
+ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
+ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
+
+DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
+DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
+
+SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s)
+SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
+
+MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
+MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
+
+OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
+# OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
+
+SUBDIRS := $(sort $(dir $(OBJS)))
+
+$(shell mkdir -p $(SUBDIRS))
+
+rom: $(ROM)
+
+# For contributors to make sure a change didn't affect the contents of the ROM.
+compare: $(ROM)
+ @$(SHA1) rom.sha1
+
+clean: tidy
+ rm -f sound/direct_sound_samples/*.bin
+ rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s
+ find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
+
+tidy:
+ rm -f $(ROM) $(ELF) $(MAP)
+ rm -r build/*
+
+%.s: ;
+%.png: ;
+%.pal: ;
+%.aif: ;
+
+%.1bpp: %.png ; $(GFX) $< $@
+%.4bpp: %.png ; $(GFX) $< $@
+%.8bpp: %.png ; $(GFX) $< $@
+%.gbapal: %.pal ; $(GFX) $< $@
+%.gbapal: %.png ; $(GFX) $< $@
+%.lz: % ; $(GFX) $< $@
+%.rl: % ; $(GFX) $< $@
+
+
+ifeq ($(NODEP),1)
+$(C_BUILDDIR)/%.o: c_dep :=
+else
+$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c)
+endif
+
+$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep)
+ @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
+ @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
+ $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
+
+ifeq ($(NODEP),1)
+$(ASM_BUILDDIR)/%.o: asm_dep :=
+else
+$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s)
+endif
+
+$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
+ $(AS) $(ASFLAGS) -o $@ $<
+
+ifeq ($(NODEP),1)
+$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
+else
+$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s)
+endif
+
+$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
+ $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
+
+$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
+ $(AS) $(ASFLAGS) -I sound -o $@ $<
+
+$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
+ $(RAMSCRGEN) .bss $< ENGLISH > $@
+
+$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
+ $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms,../../tools/agbcc/lib > $@
+
+$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
+ $(RAMSCRGEN) ewram_data $< ENGLISH > $@
+
+$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
+ cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../$< | sed "s#tools/#../tools/#g" > ld_script.ld
+
+$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
+ cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../$@ $(LIB)
+
+$(ROM): $(ELF)
+ $(OBJCOPY) -O binary $< $@
+
diff --git a/berry_fix/payload/asm/crt0.s b/berry_fix/payload/asm/crt0.s
new file mode 100644
index 000000000..73da8a38f
--- /dev/null
+++ b/berry_fix/payload/asm/crt0.s
@@ -0,0 +1,83 @@
+ .include "../../asm/macros/asm.inc"
+ .include "../../asm/macros/function.inc"
+ .include "../../constants/gba_constants.inc"
+
+ .syntax unified
+
+ .text
+
+ .arm
+ .align 2, 0
+ .global Init
+Init:
+ mov r0, PSR_IRQ_MODE
+ msr cpsr_cf, r0
+ ldr sp, sp_irq
+ mov r0, PSR_SYS_MODE
+ msr cpsr_cf, r0
+ ldr sp, sp_sys
+ ldr r1, =INTR_VECTOR
+ ldr r0, =IntrMain
+ str r0, [r1]
+ ldr r1, =AgbMain + 1
+ mov lr, pc
+ bx r1
+ b Init
+
+ .align 2, 0
+sp_sys: .word IWRAM_END - 0x100
+sp_irq: .word IWRAM_END - 0x60
+
+ .pool
+ .size Init, .-Init
+
+ .arm
+ .align 2, 0
+ .global IntrMain
+IntrMain: @ 0x2010048
+ mov ip, REG_BASE
+ add r3, ip, OFFSET_REG_IE
+ ldr r2, [r3]
+ and r1, r2, r2, lsr #16
+ mov r2, #0
+ ands r0, r1, #0x2000
+ strbne r0, [r3, #-0x17c]
+_02010064:
+ bne _02010064
+ ands r0, r1, #0xc0
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #1
+ strhne r0, [ip, #-8]
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #2
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #4
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #0x100
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #0x200
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #0x400
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #0x800
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #0x1000
+ bne _020100DC
+ add r2, r2, #4
+ ands r0, r1, #8
+_020100DC:
+ strh r0, [r3, #2]
+ ldr r1, =gIntrTable
+ add r1, r1, r2
+ ldr r0, [r1]
+ bx r0
+ .pool
+ .size IntrMain, .-IntrMain
diff --git a/berry_fix/payload/charmap.txt b/berry_fix/payload/charmap.txt
new file mode 100644
index 000000000..a736b40f2
--- /dev/null
+++ b/berry_fix/payload/charmap.txt
@@ -0,0 +1,1067 @@
+' ' = 00
+'À' = 01
+'Á' = 02
+'Â' = 03
+'Ç' = 04
+'È' = 05
+'É' = 06
+'Ê' = 07
+'Ë' = 08
+'Ì' = 09
+'Î' = 0B
+'Ï' = 0C
+'Ò' = 0D
+'Ó' = 0E
+'Ô' = 0F
+'Œ' = 10
+'Ù' = 11
+'Ú' = 12
+'Û' = 13
+'Ñ' = 14
+'ß' = 15
+'à' = 16
+'á' = 17
+'ç' = 19
+'è' = 1A
+'é' = 1B
+'ê' = 1C
+'ë' = 1D
+'ì' = 1E
+'î' = 20
+'ï' = 21
+'ò' = 22
+'ó' = 23
+'ô' = 24
+'œ' = 25
+'ù' = 26
+'ú' = 27
+'û' = 28
+'ñ' = 29
+'º' = 2A
+'ª' = 2B
+SUPER_ER = 2C
+'&' = 2D
+'+' = 2E
+LV = 34
+'=' = 35
+';' = 36
+'¿' = 51
+'¡' = 52
+PK = 53
+PKMN = 53 54
+POKEBLOCK = 55 56 57 58 59
+'Í' = 5A
+'%' = 5B
+'(' = 5C
+')' = 5D
+'â' = 68
+'í' = 6F
+UNK_SPACER = 77
+UP_ARROW = 79
+DOWN_ARROW = 7A
+LEFT_ARROW = 7B
+RIGHT_ARROW = 7C
+'0' = A1
+'1' = A2
+'2' = A3
+'3' = A4
+'4' = A5
+'5' = A6
+'6' = A7
+'7' = A8
+'8' = A9
+'9' = AA
+'!' = AB
+'?' = AC
+'.' = AD
+'-' = AE
+'·' = AF
+'…' = B0
+'“' = B1
+'”' = B2
+'‘' = B3
+'’' = B4
+'♂' = B5
+'♀' = B6
+'¥' = B7
+',' = B8
+'×' = B9
+'/' = BA
+'A' = BB
+'B' = BC
+'C' = BD
+'D' = BE
+'E' = BF
+'F' = C0
+'G' = C1
+'H' = C2
+'I' = C3
+'J' = C4
+'K' = C5
+'L' = C6
+'M' = C7
+'N' = C8
+'O' = C9
+'P' = CA
+'Q' = CB
+'R' = CC
+'S' = CD
+'T' = CE
+'U' = CF
+'V' = D0
+'W' = D1
+'X' = D2
+'Y' = D3
+'Z' = D4
+'a' = D5
+'b' = D6
+'c' = D7
+'d' = D8
+'e' = D9
+'f' = DA
+'g' = DB
+'h' = DC
+'i' = DD
+'j' = DE
+'k' = DF
+'l' = E0
+'m' = E1
+'n' = E2
+'o' = E3
+'p' = E4
+'q' = E5
+'r' = E6
+'s' = E7
+'t' = E8
+'u' = E9
+'v' = EA
+'w' = EB
+'x' = EC
+'y' = ED
+'z' = EE
+'▶' = EF
+':' = F0
+'Ä' = F1
+'Ö' = F2
+'Ü' = F3
+'ä' = F4
+'ö' = F5
+'ü' = F6
+TALL_PLUS = FC 0C FB
+'$' = FF
+
+@ Hiragana
+'あ' = 01
+'い' = 02
+'う' = 03
+'え' = 04
+'お' = 05
+'か' = 06
+'き' = 07
+'く' = 08
+'け' = 09
+'こ' = 0A
+'さ' = 0B
+'し' = 0C
+'す' = 0D
+'せ' = 0E
+'そ' = 0F
+'た' = 10
+'ち' = 11
+'つ' = 12
+'て' = 13
+'と' = 14
+'な' = 15
+'に' = 16
+'ぬ' = 17
+'ね' = 18
+'の' = 19
+'は' = 1A
+'ひ' = 1B
+'ふ' = 1C
+'へ' = 1D
+'ほ' = 1E
+'ま' = 1F
+'み' = 20
+'む' = 21
+'め' = 22
+'も' = 23
+'や' = 24
+'ゆ' = 25
+'よ' = 26
+'ら' = 27
+'り' = 28
+'る' = 29
+'れ' = 2A
+'ろ' = 2B
+'わ' = 2C
+'を' = 2D
+'ん' = 2E
+'ぁ' = 2F
+'ぃ' = 30
+'ぅ' = 31
+'ぇ' = 32
+'ぉ' = 33
+'ゃ' = 34
+'ゅ' = 35
+'ょ' = 36
+'が' = 37
+'ぎ' = 38
+'ぐ' = 39
+'げ' = 3A
+'ご' = 3B
+'ざ' = 3C
+'じ' = 3D
+'ず' = 3E
+'ぜ' = 3F
+'ぞ' = 40
+'だ' = 41
+'ぢ' = 42
+'づ' = 43
+'で' = 44
+'ど' = 45
+'ば' = 46
+'び' = 47
+'ぶ' = 48
+'べ' = 49
+'ぼ' = 4A
+'ぱ' = 4B
+'ぴ' = 4C
+'ぷ' = 4D
+'ぺ' = 4E
+'ぽ' = 4F
+'っ' = 50
+
+@ Katakana
+'ア' = 51
+'イ' = 52
+'ウ' = 53
+'エ' = 54
+'オ' = 55
+'カ' = 56
+'キ' = 57
+'ク' = 58
+'ケ' = 59
+'コ' = 5A
+'サ' = 5B
+'シ' = 5C
+'ス' = 5D
+'セ' = 5E
+'ソ' = 5F
+'タ' = 60
+'チ' = 61
+'ツ' = 62
+'テ' = 63
+'ト' = 64
+'ナ' = 65
+'ニ' = 66
+'ヌ' = 67
+'ネ' = 68
+'ノ' = 69
+'ハ' = 6A
+'ヒ' = 6B
+'フ' = 6C
+'ヘ' = 6D
+'ホ' = 6E
+'マ' = 6F
+'ミ' = 70
+'ム' = 71
+'メ' = 72
+'モ' = 73
+'ヤ' = 74
+'ユ' = 75
+'ヨ' = 76
+'ラ' = 77
+'リ' = 78
+'ル' = 79
+'レ' = 7A
+'ロ' = 7B
+'ワ' = 7C
+'ヲ' = 7D
+'ン' = 7E
+'ァ' = 7F
+'ィ' = 80
+'ゥ' = 81
+'ェ' = 82
+'ォ' = 83
+'ャ' = 84
+'ュ' = 85
+'ョ' = 86
+'ガ' = 87
+'ギ' = 88
+'グ' = 89
+'ゲ' = 8A
+'ゴ' = 8B
+'ザ' = 8C
+'ジ' = 8D
+'ズ' = 8E
+'ゼ' = 8F
+'ゾ' = 90
+'ダ' = 91
+'ヂ' = 92
+'ヅ' = 93
+'デ' = 94
+'ド' = 95
+'バ' = 96
+'ビ' = 97
+'ブ' = 98
+'ベ' = 99
+'ボ' = 9A
+'パ' = 9B
+'ピ' = 9C
+'プ' = 9D
+'ペ' = 9E
+'ポ' = 9F
+'ッ' = A0
+
+@ Japanese punctuation
+' ' = 00
+'!' = AB
+'?' = AC
+'。' = AD
+'ー' = AE
+'⋯' = B0
+
+STRING = FD
+
+@ string placeholders
+PLAYER = FD 01
+STR_VAR_1 = FD 02
+STR_VAR_2 = FD 03
+STR_VAR_3 = FD 04
+KUN = FD 05
+RIVAL = FD 06
+@ version-dependent strings (originally made for Ruby/Sapphire differences)
+@ Emerald uses the Sapphire strings (except for VERSION).
+VERSION = FD 07 @ "EMERALD"
+AQUA = FD 08
+MAGMA = FD 09
+ARCHIE = FD 0A
+MAXIE = FD 0B
+KYOGRE = FD 0C
+GROUDON = FD 0D
+
+@ battle string placeholders
+
+B_BUFF1 = FD 00
+B_BUFF2 = FD 01
+B_COPY_VAR_1 = FD 02
+B_COPY_VAR_2 = FD 03
+B_COPY_VAR_3 = FD 04
+B_PLAYER_MON1_NAME = FD 05
+B_OPPONENT_MON1_NAME = FD 06
+B_PLAYER_MON2_NAME = FD 07
+B_OPPONENT_MON2_NAME = FD 08
+B_LINK_PLAYER_MON1_NAME = FD 09
+B_LINK_OPPONENT_MON1_NAME = FD 0A
+B_LINK_PLAYER_MON2_NAME = FD 0B
+B_LINK_OPPONENT_MON2_NAME = FD 0C
+B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D
+B_ATK_PARTNER_NAME = FD 0E
+B_ATK_NAME_WITH_PREFIX = FD 0F
+B_DEF_NAME_WITH_PREFIX = FD 10
+B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler
+B_ACTIVE_NAME_WITH_PREFIX = FD 12
+B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
+B_CURRENT_MOVE = FD 14
+B_LAST_MOVE = FD 15
+B_LAST_ITEM = FD 16
+B_LAST_ABILITY = FD 17
+B_ATK_ABILITY = FD 18
+B_DEF_ABILITY = FD 19
+B_SCR_ACTIVE_ABILITY = FD 1A
+B_EFF_ABILITY = FD 1B
+B_TRAINER1_CLASS = FD 1C
+B_TRAINER1_NAME = FD 1D
+B_LINK_PLAYER_NAME = FD 1E
+B_LINK_PARTNER_NAME = FD 1F
+B_LINK_OPPONENT1_NAME = FD 20
+B_LINK_OPPONENT2_NAME = FD 21
+B_LINK_SCR_TRAINER_NAME = FD 22
+B_PLAYER_NAME = FD 23
+B_TRAINER1_LOSE_TEXT = FD 24
+B_TRAINER1_WIN_TEXT = FD 25
+B_26 = FD 26
+B_PC_CREATOR_NAME = FD 27
+B_ATK_PREFIX1 = FD 28
+B_DEF_PREFIX1 = FD 29
+B_ATK_PREFIX2 = FD 2A
+B_DEF_PREFIX2 = FD 2B
+B_ATK_PREFIX3 = FD 2C
+B_DEF_PREFIX3 = FD 2D
+B_TRAINER2_CLASS = FD 2E
+B_TRAINER2_NAME = FD 2F
+B_TRAINER2_LOSE_TEXT = FD 30
+B_TRAINER2_WIN_TEXT = FD 31
+B_PARTNER_CLASS = FD 32
+B_PARTNER_NAME = FD 33
+B_BUFF3 = FD 34
+
+@ indicates the end of a town/city name (before " TOWN" or " CITY")
+NAME_END = FC 00
+
+@ special 0xF7 character
+SPECIAL_F7 = F7
+
+@ more text functions
+
+COLOR = FC 01 @ use a color listed below right after
+HIGHLIGHT = FC 02 @ same as fc 01
+SHADOW = FC 03 @ same as fc 01
+COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes
+PALETTE = FC 05 @ used in credits
+SIZE = FC 06 @ note that anything other than "SMALL" is invalid
+UNKNOWN_7 = FC 07
+PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them
+PAUSE_UNTIL_PRESS = FC 09
+UNKNOWN_A = FC 0A
+PLAY_BGM = FC 0B
+ESCAPE = FC 0C
+SHIFT_TEXT = FC 0D
+UNKNOWN_E = FC 0E
+UNKNOWN_F = FC 0F
+PLAY_SE = FC 10
+CLEAR = FC 11
+SKIP = FC 12
+CLEAR_TO = FC 13
+UNKNOWN_14 = FC 14
+JPN = FC 15
+ENG = FC 16
+PAUSE_MUSIC = FC 17
+RESUME_MUSIC = FC 18
+
+@ colors
+
+TRANSPARENT = 00
+WHITE = 01
+DARK_GREY = 02
+LIGHT_GREY = 03
+RED = 04
+LIGHT_RED = 05
+GREEN = 06
+LIGHT_GREEN = 07
+BLUE = 08
+LIGHT_BLUE = 09
+@ these next colors can be set to anything arbitrary at runtime
+@ usually though they'll have the textbox border colors as described below
+DYNAMIC_COLOR1 = 0A @ white
+DYNAMIC_COLOR2 = 0B @ white with a tinge of green
+DYNAMIC_COLOR3 = 0C @ white 2
+DYNAMIC_COLOR4 = 0D @ aquamarine
+DYNAMIC_COLOR5 = 0E @ blue-green
+DYNAMIC_COLOR6 = 0F @ cerulean
+
+@ sound and music
+
+MUS_DUMMY = 00 00
+SE_KAIFUKU = 01 00
+SE_PC_LOGIN = 02 00
+SE_PC_OFF = 03 00
+SE_PC_ON = 04 00
+SE_SELECT = 05 00
+SE_WIN_OPEN = 06 00
+SE_WALL_HIT = 07 00
+SE_DOOR = 08 00
+SE_KAIDAN = 09 00
+SE_DANSA = 0A 00
+SE_JITENSYA = 0B 00
+SE_KOUKA_L = 0C 00
+SE_KOUKA_M = 0D 00
+SE_KOUKA_H = 0E 00
+SE_BOWA2 = 0F 00
+SE_POKE_DEAD = 10 00
+SE_NIGERU = 11 00
+SE_JIDO_DOA = 12 00
+SE_NAMINORI = 13 00
+SE_BAN = 14 00
+SE_PIN = 15 00
+SE_BOO = 16 00
+SE_BOWA = 17 00
+SE_JYUNI = 18 00
+SE_A = 19 00
+SE_I = 1A 00
+SE_U = 1B 00
+SE_E = 1C 00
+SE_O = 1D 00
+SE_N = 1E 00
+SE_SEIKAI = 1F 00
+SE_HAZURE = 20 00
+SE_EXP = 21 00
+SE_JITE_PYOKO = 22 00
+SE_MU_PACHI = 23 00
+SE_TK_KASYA = 24 00
+SE_FU_ZAKU = 25 00
+SE_FU_ZAKU2 = 26 00
+SE_FU_ZUZUZU = 27 00
+SE_RU_GASHIN = 28 00
+SE_RU_GASYAN = 29 00
+SE_RU_BARI = 2A 00
+SE_RU_HYUU = 2B 00
+SE_KI_GASYAN = 2C 00
+SE_TK_WARPIN = 2D 00
+SE_TK_WARPOUT = 2E 00
+SE_TU_SAA = 2F 00
+SE_HI_TURUN = 30 00
+SE_TRACK_MOVE = 31 00
+SE_TRACK_STOP = 32 00
+SE_TRACK_HAIKI = 33 00
+SE_TRACK_DOOR = 34 00
+SE_MOTER = 35 00
+SE_CARD = 36 00
+SE_SAVE = 37 00
+SE_KON = 38 00
+SE_KON2 = 39 00
+SE_KON3 = 3A 00
+SE_KON4 = 3B 00
+SE_SUIKOMU = 3C 00
+SE_NAGERU = 3D 00
+SE_TOY_C = 3E 00
+SE_TOY_D = 3F 00
+SE_TOY_E = 40 00
+SE_TOY_F = 41 00
+SE_TOY_G = 42 00
+SE_TOY_A = 43 00
+SE_TOY_B = 44 00
+SE_TOY_C1 = 45 00
+SE_MIZU = 46 00
+SE_HASHI = 47 00
+SE_DAUGI = 48 00
+SE_PINPON = 49 00
+SE_FUUSEN1 = 4A 00
+SE_FUUSEN2 = 4B 00
+SE_FUUSEN3 = 4C 00
+SE_TOY_KABE = 4D 00
+SE_TOY_DANGO = 4E 00
+SE_DOKU = 4F 00
+SE_ESUKA = 50 00
+SE_T_AME = 51 00
+SE_T_AME_E = 52 00
+SE_T_OOAME = 53 00
+SE_T_OOAME_E = 54 00
+SE_T_KOAME = 55 00
+SE_T_KOAME_E = 56 00
+SE_T_KAMI = 57 00
+SE_T_KAMI2 = 58 00
+SE_ELEBETA = 59 00
+SE_HINSI = 5A 00
+SE_EXPMAX = 5B 00
+SE_TAMAKORO = 5C 00
+SE_TAMAKORO_E = 5D 00
+SE_BASABASA = 5E 00
+SE_REGI = 5F 00
+SE_C_GAJI = 60 00
+SE_C_MAKU_U = 61 00
+SE_C_MAKU_D = 62 00
+SE_C_PASI = 63 00
+SE_C_SYU = 64 00
+SE_C_PIKON = 65 00
+SE_REAPOKE = 66 00
+SE_OP_BASYU = 67 00
+SE_BT_START = 68 00
+SE_DENDOU = 69 00
+SE_JIHANKI = 6A 00
+SE_TAMA = 6B 00
+SE_Z_SCROLL = 6C 00
+SE_Z_PAGE = 6D 00
+SE_PN_ON = 6E 00
+SE_PN_OFF = 6F 00
+SE_Z_SEARCH = 70 00
+SE_TAMAGO = 71 00
+SE_TB_START = 72 00
+SE_TB_KON = 73 00
+SE_TB_KARA = 74 00
+SE_BIDORO = 75 00
+SE_W085 = 76 00
+SE_W085B = 77 00
+SE_W231 = 78 00
+SE_W171 = 79 00
+SE_W233 = 7A 00
+SE_W233B = 7B 00
+SE_W145 = 7C 00
+SE_W145B = 7D 00
+SE_W145C = 7E 00
+SE_W240 = 7F 00
+SE_W015 = 80 00
+SE_W081 = 81 00
+SE_W081B = 82 00
+SE_W088 = 83 00
+SE_W016 = 84 00
+SE_W016B = 85 00
+SE_W003 = 86 00
+SE_W104 = 87 00
+SE_W013 = 88 00
+SE_W196 = 89 00
+SE_W086 = 8A 00
+SE_W004 = 8B 00
+SE_W025 = 8C 00
+SE_W025B = 8D 00
+SE_W152 = 8E 00
+SE_W026 = 8F 00
+SE_W172 = 90 00
+SE_W172B = 91 00
+SE_W053 = 92 00
+SE_W007 = 93 00
+SE_W092 = 94 00
+SE_W221 = 95 00
+SE_W221B = 96 00
+SE_W052 = 97 00
+SE_W036 = 98 00
+SE_W059 = 99 00
+SE_W059B = 9A 00
+SE_W010 = 9B 00
+SE_W011 = 9C 00
+SE_W017 = 9D 00
+SE_W019 = 9E 00
+SE_W028 = 9F 00
+SE_W013B = A0 00
+SE_W044 = A1 00
+SE_W029 = A2 00
+SE_W057 = A3 00
+SE_W056 = A4 00
+SE_W250 = A5 00
+SE_W030 = A6 00
+SE_W039 = A7 00
+SE_W054 = A8 00
+SE_W077 = A9 00
+SE_W020 = AA 00
+SE_W082 = AB 00
+SE_W047 = AC 00
+SE_W195 = AD 00
+SE_W006 = AE 00
+SE_W091 = AF 00
+SE_W146 = B0 00
+SE_W120 = B1 00
+SE_W153 = B2 00
+SE_W071B = B3 00
+SE_W071 = B4 00
+SE_W103 = B5 00
+SE_W062 = B6 00
+SE_W062B = B7 00
+SE_W048 = B8 00
+SE_W187 = B9 00
+SE_W118 = BA 00
+SE_W155 = BB 00
+SE_W122 = BC 00
+SE_W060 = BD 00
+SE_W185 = BE 00
+SE_W014 = BF 00
+SE_W043 = C0 00
+SE_W207 = C1 00
+SE_W207B = C2 00
+SE_W215 = C3 00
+SE_W109 = C4 00
+SE_W173 = C5 00
+SE_W280 = C6 00
+SE_W202 = C7 00
+SE_W060B = C8 00
+SE_W076 = C9 00
+SE_W080 = CA 00
+SE_W100 = CB 00
+SE_W107 = CC 00
+SE_W166 = CD 00
+SE_W129 = CE 00
+SE_W115 = CF 00
+SE_W112 = D0 00
+SE_W197 = D1 00
+SE_W199 = D2 00
+SE_W236 = D3 00
+SE_W204 = D4 00
+SE_W268 = D5 00
+SE_W070 = D6 00
+SE_W063 = D7 00
+SE_W127 = D8 00
+SE_W179 = D9 00
+SE_W151 = DA 00
+SE_W201 = DB 00
+SE_W161 = DC 00
+SE_W161B = DD 00
+SE_W227 = DE 00
+SE_W227B = DF 00
+SE_W226 = E0 00
+SE_W208 = E1 00
+SE_W213 = E2 00
+SE_W213B = E3 00
+SE_W234 = E4 00
+SE_W260 = E5 00
+SE_W328 = E6 00
+SE_W320 = E7 00
+SE_W255 = E8 00
+SE_W291 = E9 00
+SE_W089 = EA 00
+SE_W239 = EB 00
+SE_W230 = EC 00
+SE_W281 = ED 00
+SE_W327 = EE 00
+SE_W287 = EF 00
+SE_W257 = F0 00
+SE_W253 = F1 00
+SE_W258 = F2 00
+SE_W322 = F3 00
+SE_W298 = F4 00
+SE_W287B = F5 00
+SE_W114 = F6 00
+SE_W063B = F7 00
+SE_RG_W_DOOR = F8 00
+SE_RG_CARD1 = F9 00
+SE_RG_CARD2 = FA 00
+SE_RG_CARD3 = FB 00
+SE_RG_BAG1 = FC 00
+SE_RG_BAG2 = FD 00
+SE_RG_GETTING = FE 00
+SE_RG_SHOP = FF 00
+SE_RG_KITEKI = 00 01
+SE_RG_HELP_OP = 01 01
+SE_RG_HELP_CL = 02 01
+SE_RG_HELP_NG = 03 01
+SE_RG_DEOMOV = 04 01
+SE_RG_EXCELLENT = 05 01
+SE_RG_NAWAMISS = 06 01
+SE_TOREEYE = 07 01
+SE_TOREOFF = 08 01
+SE_HANTEI1 = 09 01
+SE_HANTEI2 = 0A 01
+SE_CURTAIN = 0B 01
+SE_CURTAIN1 = 0C 01
+SE_USSOKI = 0D 01
+MUS_TETSUJI = 5E 01
+MUS_FIELD13 = 5F 01
+MUS_KACHI22 = 60 01
+MUS_KACHI2 = 61 01
+MUS_KACHI3 = 62 01
+MUS_KACHI5 = 63 01
+MUS_PCC = 64 01
+MUS_NIBI = 65 01
+MUS_SUIKUN = 66 01
+MUS_DOORO1 = 67 01
+MUS_DOORO_X1 = 68 01
+MUS_DOORO_X3 = 69 01
+MUS_MACHI_S2 = 6A 01
+MUS_MACHI_S4 = 6B 01
+MUS_GIM = 6C 01
+MUS_NAMINORI = 6D 01
+MUS_DAN01 = 6E 01
+MUS_FANFA1 = 6F 01
+MUS_ME_ASA = 70 01
+MUS_ME_BACHI = 71 01
+MUS_FANFA4 = 72 01
+MUS_FANFA5 = 73 01
+MUS_ME_WAZA = 74 01
+MUS_BIJYUTU = 75 01
+MUS_DOORO_X4 = 76 01
+MUS_FUNE_KAN = 77 01
+MUS_ME_SHINKA = 78 01
+MUS_SHINKA = 79 01
+MUS_ME_WASURE = 7A 01
+MUS_SYOUJOEYE = 7B 01
+MUS_BOYEYE = 7C 01
+MUS_DAN02 = 7D 01
+MUS_MACHI_S3 = 7E 01
+MUS_ODAMAKI = 7F 01
+MUS_B_TOWER = 80 01
+MUS_SWIMEYE = 81 01
+MUS_DAN03 = 82 01
+MUS_ME_KINOMI = 83 01
+MUS_ME_TAMA = 84 01
+MUS_ME_B_BIG = 85 01
+MUS_ME_B_SMALL = 86 01
+MUS_ME_ZANNEN = 87 01
+MUS_BD_TIME = 88 01
+MUS_TEST1 = 89 01
+MUS_TEST2 = 8A 01
+MUS_TEST3 = 8B 01
+MUS_TEST4 = 8C 01
+MUS_TEST = 8D 01
+MUS_GOMACHI0 = 8E 01
+MUS_GOTOWN = 8F 01
+MUS_POKECEN = 90 01
+MUS_NEXTROAD = 91 01
+MUS_GRANROAD = 92 01
+MUS_CYCLING = 93 01
+MUS_FRIENDLY = 94 01
+MUS_MISHIRO = 95 01
+MUS_TOZAN = 96 01
+MUS_GIRLEYE = 97 01
+MUS_MINAMO = 98 01
+MUS_ASHROAD = 99 01
+MUS_EVENT0 = 9A 01
+MUS_DEEPDEEP = 9B 01
+MUS_KACHI1 = 9C 01
+MUS_TITLE3 = 9D 01
+MUS_DEMO1 = 9E 01
+MUS_GIRL_SUP = 9F 01
+MUS_HAGESHII = A0 01
+MUS_KAKKOII = A1 01
+MUS_KAZANBAI = A2 01
+MUS_AQA_0 = A3 01
+MUS_TSURETEK = A4 01
+MUS_BOY_SUP = A5 01
+MUS_RAINBOW = A6 01
+MUS_AYASII = A7 01
+MUS_KACHI4 = A8 01
+MUS_ROPEWAY = A9 01
+MUS_CASINO = AA 01
+MUS_HIGHTOWN = AB 01
+MUS_SAFARI = AC 01
+MUS_C_ROAD = AD 01
+MUS_AJITO = AE 01
+MUS_M_BOAT = AF 01
+MUS_M_DUNGON = B0 01
+MUS_FINECITY = B1 01
+MUS_MACHUPI = B2 01
+MUS_P_SCHOOL = B3 01
+MUS_DENDOU = B4 01
+MUS_TONEKUSA = B5 01
+MUS_MABOROSI = B6 01
+MUS_CON_FAN = B7 01
+MUS_CONTEST0 = B8 01
+MUS_MGM0 = B9 01
+MUS_T_BATTLE = BA 01
+MUS_OOAME = BB 01
+MUS_HIDERI = BC 01
+MUS_RUNECITY = BD 01
+MUS_CON_K = BE 01
+MUS_EIKOU_R = BF 01
+MUS_KARAKURI = C0 01
+MUS_HUTAGO = C1 01
+MUS_SITENNOU = C2 01
+MUS_YAMA_EYE = C3 01
+MUS_CONLOBBY = C4 01
+MUS_INTER_V = C5 01
+MUS_DAIGO = C6 01
+MUS_THANKFOR = C7 01
+MUS_END = C8 01
+MUS_B_FRONTIER = C9 01
+MUS_B_ARENA = CA 01
+MUS_ME_POINTGET = CB 01
+MUS_ME_TORE_EYE = CC 01
+MUS_PYRAMID = CD 01
+MUS_PYRAMID_TOP = CE 01
+MUS_B_PALACE = CF 01
+MUS_REKKUU_KOURIN = D0 01
+MUS_SATTOWER = D1 01
+MUS_ME_SYMBOLGET = D2 01
+MUS_B_DOME = D3 01
+MUS_B_TUBE = D4 01
+MUS_B_FACTORY = D5 01
+MUS_VS_REKKU = D6 01
+MUS_VS_FRONT = D7 01
+MUS_VS_MEW = D8 01
+MUS_B_DOME1 = D9 01
+MUS_BATTLE27 = DA 01
+MUS_BATTLE31 = DB 01
+MUS_BATTLE20 = DC 01
+MUS_BATTLE32 = DD 01
+MUS_BATTLE33 = DE 01
+MUS_BATTLE36 = DF 01
+MUS_BATTLE34 = E0 01
+MUS_BATTLE35 = E1 01
+MUS_BATTLE38 = E2 01
+MUS_BATTLE30 = E3 01
+MUS_RG_ANNAI = E4 01
+MUS_RG_SLOT = E5 01
+MUS_RG_AJITO = E6 01
+MUS_RG_GYM = E7 01
+MUS_RG_PURIN = E8 01
+MUS_RG_DEMO = E9 01
+MUS_RG_TITLE = EA 01
+MUS_RG_GUREN = EB 01
+MUS_RG_SHION = EC 01
+MUS_RG_KAIHUKU = ED 01
+MUS_RG_CYCLING = EE 01
+MUS_RG_ROCKET = EF 01
+MUS_RG_SHOUJO = F0 01
+MUS_RG_SHOUNEN = F1 01
+MUS_RG_DENDOU = F2 01
+MUS_RG_T_MORI = F3 01
+MUS_RG_OTSUKIMI = F4 01
+MUS_RG_POKEYASHI = F5 01
+MUS_RG_ENDING = F6 01
+MUS_RG_LOAD01 = F7 01
+MUS_RG_OPENING = F8 01
+MUS_RG_LOAD02 = F9 01
+MUS_RG_LOAD03 = FA 01
+MUS_RG_CHAMP_R = FB 01
+MUS_RG_VS_GYM = FC 01
+MUS_RG_VS_TORE = FD 01
+MUS_RG_VS_YASEI = FE 01
+MUS_RG_VS_LAST = FF 01
+MUS_RG_MASARA = 00 02
+MUS_RG_KENKYU = 01 02
+MUS_RG_OHKIDO = 02 02
+MUS_RG_POKECEN = 03 02
+MUS_RG_SANTOAN = 04 02
+MUS_RG_NAMINORI = 05 02
+MUS_RG_P_TOWER = 06 02
+MUS_RG_SHIRUHU = 07 02
+MUS_RG_HANADA = 08 02
+MUS_RG_TAMAMUSI = 09 02
+MUS_RG_WIN_TRE = 0A 02
+MUS_RG_WIN_YASEI = 0B 02
+MUS_RG_WIN_GYM = 0C 02
+MUS_RG_KUCHIBA = 0D 02
+MUS_RG_NIBI = 0E 02
+MUS_RG_RIVAL1 = 0F 02
+MUS_RG_RIVAL2 = 10 02
+MUS_RG_FAN2 = 11 02
+MUS_RG_FAN5 = 12 02
+MUS_RG_FAN6 = 13 02
+MUS_ME_RG_PHOTO = 14 02
+MUS_RG_TITLEROG = 15 02
+MUS_RG_GET_YASEI = 16 02
+MUS_RG_SOUSA = 17 02
+MUS_RG_SEKAIKAN = 18 02
+MUS_RG_SEIBETU = 19 02
+MUS_RG_JUMP = 1A 02
+MUS_RG_UNION = 1B 02
+MUS_RG_NETWORK = 1C 02
+MUS_RG_OKURIMONO = 1D 02
+MUS_RG_KINOMIKUI = 1E 02
+MUS_RG_NANADUNGEON = 1F 02
+MUS_RG_OSHIE_TV = 20 02
+MUS_RG_NANASHIMA = 21 02
+MUS_RG_NANAISEKI = 22 02
+MUS_RG_NANA123 = 23 02
+MUS_RG_NANA45 = 24 02
+MUS_RG_NANA67 = 25 02
+MUS_RG_POKEFUE = 26 02
+MUS_RG_VS_DEO = 27 02
+MUS_RG_VS_MYU2 = 28 02
+MUS_RG_VS_DEN = 29 02
+MUS_RG_EXEYE = 2A 02
+MUS_RG_DEOEYE = 2B 02
+MUS_RG_T_TOWER = 2C 02
+MUS_RG_SLOWMASARA = 2D 02
+MUS_RG_TVNOIZE = 2E 02
+PH_TRAP_BLEND = 2F 02
+PH_TRAP_HELD = 30 02
+PH_TRAP_SOLO = 31 02
+PH_FACE_BLEND = 32 02
+PH_FACE_HELD = 33 02
+PH_FACE_SOLO = 34 02
+PH_CLOTH_BLEND = 35 02
+PH_CLOTH_HELD = 36 02
+PH_CLOTH_SOLO = 37 02
+PH_DRESS_BLEND = 38 02
+PH_DRESS_HELD = 39 02
+PH_DRESS_SOLO = 3A 02
+PH_FLEECE_BLEND = 3B 02
+PH_FLEECE_HELD = 3C 02
+PH_FLEECE_SOLO = 3D 02
+PH_KIT_BLEND = 3E 02
+PH_KIT_HELD = 3F 02
+PH_KIT_SOLO = 40 02
+PH_PRICE_BLEND = 41 02
+PH_PRICE_HELD = 42 02
+PH_PRICE_SOLO = 43 02
+PH_LOT_BLEND = 44 02
+PH_LOT_HELD = 45 02
+PH_LOT_SOLO = 46 02
+PH_GOAT_BLEND = 47 02
+PH_GOAT_HELD = 48 02
+PH_GOAT_SOLO = 49 02
+PH_THOUGHT_BLEND = 4A 02
+PH_THOUGHT_HELD = 4B 02
+PH_THOUGHT_SOLO = 4C 02
+PH_CHOICE_BLEND = 4D 02
+PH_CHOICE_HELD = 4E 02
+PH_CHOICE_SOLO = 4F 02
+PH_MOUTH_BLEND = 50 02
+PH_MOUTH_HELD = 51 02
+PH_MOUTH_SOLO = 52 02
+PH_FOOT_BLEND = 53 02
+PH_FOOT_HELD = 54 02
+PH_FOOT_SOLO = 55 02
+PH_GOOSE_BLEND = 56 02
+PH_GOOSE_HELD = 57 02
+PH_GOOSE_SOLO = 58 02
+PH_STRUT_BLEND = 59 02
+PH_STRUT_HELD = 5A 02
+PH_STRUT_SOLO = 5B 02
+PH_CURE_BLEND = 5C 02
+PH_CURE_HELD = 5D 02
+PH_CURE_SOLO = 5E 02
+PH_NURSE_BLEND = 5F 02
+PH_NURSE_HELD = 60 02
+PH_NURSE_SOLO = 61 02
+
+A_BUTTON = F8 00
+B_BUTTON = F8 01
+DPAD_UPDOWN = F8 0A
+DPAD_NONE = F8 0C
+
+UP_ARROW_2 = F9 00
+DOWN_ARROW_2 = F9 01
+LEFT_ARROW_2 = F9 02
+RIGHT_ARROW_2 = F9 03
+PLUS = F9 04
+LV_2 = F9 05
+PP = F9 06
+ID = F9 07
+NO = F9 08
+UNDERSCORE = F9 09
+CIRCLE_1 = F9 0A
+CIRCLE_2 = F9 0B
+CIRCLE_3 = F9 0C
+CIRCLE_4 = F9 0D
+CIRCLE_5 = F9 0E
+CIRCLE_6 = F9 0F
+CIRCLE_7 = F9 10
+CIRCLE_8 = F9 11
+CIRCLE_9 = F9 12
+ROUND_LEFT_PAREN = F9 13
+ROUND_RIGHT_PAREN = F9 14
+CIRCLE_DOT = F9 15
+TRIANGLE = F9 16
+BIG_MULT_X = F9 17
+
+EMOJI_UNDERSCORE = F9 D0
+EMOJI_PIPE = F9 D1
+EMOJI_HIGHBAR = F9 D2
+EMOJI_TILDE = F9 D3
+EMOJI_LEFT_PAREN = F9 D4
+EMOJI_RIGHT_PAREN = F9 D5
+EMOJI_UNION = F9 D6 @ ⊂
+EMOJI_GREATER_THAN = F9 D7
+EMOJI_LEFT_EYE = F9 D8
+EMOJI_RIGHT_EYE = F9 D9
+EMOJI_AT = F9 DA
+EMOJI_SEMICOLON = F9 DB
+EMOJI_PLUS = F9 DC
+EMOJI_MINUS = F9 DD
+EMOJI_EQUALS = F9 DE
+EMOJI_SPIRAL = F9 DF
+EMOJI_TONGUE = F9 E0
+EMOJI_TRIANGLE_OUTLINE = F9 E1
+EMOJI_ACUTE = F9 E2
+EMOJI_GRAVE = F9 E3
+EMOJI_CIRCLE = F9 E4
+EMOJI_TRIANGLE = F9 E5
+EMOJI_SQUARE = F9 E6
+EMOJI_HEART = F9 E7
+EMOJI_MOON = F9 E8
+EMOJI_NOTE = F9 E9
+EMOJI_BALL = F9 EA
+EMOJI_BOLT = F9 EB
+EMOJI_LEAF = F9 EC
+EMOJI_FIRE = F9 ED
+EMOJI_WATER = F9 EE
+EMOJI_LEFT_FIST = F9 EF
+EMOJI_RIGHT_FIST = F9 F0
+EMOJI_BIGWHEEL = F9 F1
+EMOJI_SMALLWHEEL = F9 F2
+EMOJI_SPHERE = F9 F3
+EMOJI_IRRITATED = F9 F4
+EMOJI_MISCHIEVOUS = F9 F5
+EMOJI_HAPPY = F9 F6
+EMOJI_ANGRY = F9 F7
+EMOJI_SURPRISED = F9 F8
+EMOJI_BIGSMILE = F9 F9
+EMOJI_EVIL = F9 FA
+EMOJI_TIRED = F9 FB
+EMOJI_NEUTRAL = F9 FC
+EMOJI_SHOCKED = F9 FD
+EMOJI_BIGANGER = F9 FE
+
+'\l' = FA @ scroll up window text
+'\p' = FB @ new paragraph
+'\n' = FE @ new line
diff --git a/berry_fix/payload/common_syms/agb_flash.txt b/berry_fix/payload/common_syms/agb_flash.txt
new file mode 100644
index 000000000..cb421ec80
--- /dev/null
+++ b/berry_fix/payload/common_syms/agb_flash.txt
@@ -0,0 +1,10 @@
+gFlashTimeoutFlag
+PollFlashStatus
+WaitForFlashWrite
+ProgramFlashSector
+gFlash
+ProgramFlashByte
+gFlashNumRemainingBytes
+EraseFlashChip
+EraseFlashSector
+gFlashMaxTime
diff --git a/berry_fix/payload/common_syms/main.txt b/berry_fix/payload/common_syms/main.txt
new file mode 100644
index 000000000..b62c72124
--- /dev/null
+++ b/berry_fix/payload/common_syms/main.txt
@@ -0,0 +1,9 @@
+gIntrTable
+gHeldKeys
+gNewKeys
+gIntrVector
+gUpdateSuccessful
+gUnknown_3001194
+gUnknown_30011A0
+gMainCallbackState
+gGameVersion
diff --git a/berry_fix/payload/common_syms/rtc.txt b/berry_fix/payload/common_syms/rtc.txt
new file mode 100644
index 000000000..7aafbe65d
--- /dev/null
+++ b/berry_fix/payload/common_syms/rtc.txt
@@ -0,0 +1,2 @@
+gTimeSinceBerryUpdate
+gRtcUTCTime
diff --git a/berry_fix/payload/graphics/debug_digits.png b/berry_fix/payload/graphics/debug_digits.png
new file mode 100644
index 000000000..edf0d36c9
--- /dev/null
+++ b/berry_fix/payload/graphics/debug_digits.png
Binary files differ
diff --git a/berry_fix/payload/graphics/msg_box.png b/berry_fix/payload/graphics/msg_box.png
new file mode 100644
index 000000000..00d1bbe37
--- /dev/null
+++ b/berry_fix/payload/graphics/msg_box.png
Binary files differ
diff --git a/berry_fix/payload/graphics/msg_box.tilemap b/berry_fix/payload/graphics/msg_box.tilemap
new file mode 100644
index 000000000..5b82401ba
--- /dev/null
+++ b/berry_fix/payload/graphics/msg_box.tilemap
Binary files differ
diff --git a/berry_fix/payload/include/constants/game_stat.h b/berry_fix/payload/include/constants/game_stat.h
new file mode 100644
index 000000000..47d703d85
--- /dev/null
+++ b/berry_fix/payload/include/constants/game_stat.h
@@ -0,0 +1,56 @@
+#ifndef GUARD_CONSTANTS_GAME_STAT_H
+#define GUARD_CONSTANTS_GAME_STAT_H
+
+#define GAME_STAT_SAVED_GAME 0
+#define GAME_STAT_FIRST_HOF_PLAY_TIME 1
+#define GAME_STAT_STARTED_TRENDS 2
+#define GAME_STAT_PLANTED_BERRIES 3
+#define GAME_STAT_TRADED_BIKES 4
+#define GAME_STAT_STEPS 5
+#define GAME_STAT_GOT_INTERVIEWED 6
+#define GAME_STAT_TOTAL_BATTLES 7
+#define GAME_STAT_WILD_BATTLES 8
+#define GAME_STAT_TRAINER_BATTLES 9
+#define GAME_STAT_ENTERED_HOF 10
+#define GAME_STAT_POKEMON_CAPTURES 11
+#define GAME_STAT_FISHING_CAPTURES 12
+#define GAME_STAT_HATCHED_EGGS 13
+#define GAME_STAT_EVOLVED_POKEMON 14
+#define GAME_STAT_USED_POKECENTER 15
+#define GAME_STAT_RESTED_AT_HOME 16
+#define GAME_STAT_ENTERED_SAFARI_ZONE 17
+#define GAME_STAT_USED_CUT 18
+#define GAME_STAT_USED_ROCK_SMASH 19
+#define GAME_STAT_MOVED_SECRET_BASE 20
+#define GAME_STAT_POKEMON_TRADES 21
+#define GAME_STAT_UNKNOWN_22 22
+#define GAME_STAT_LINK_BATTLE_WINS 23
+#define GAME_STAT_LINK_BATTLE_LOSSES 24
+#define GAME_STAT_LINK_BATTLE_DRAWS 25
+#define GAME_STAT_USED_SPLASH 26
+#define GAME_STAT_USED_STRUGGLE 27
+#define GAME_STAT_SLOT_JACKPOTS 28
+#define GAME_STAT_CONSECUTIVE_ROULETTE_WINS 29
+#define GAME_STAT_ENTERED_BATTLE_TOWER 30
+#define GAME_STAT_UNKNOWN_31 31
+#define GAME_STAT_BATTLE_TOWER_BEST_STREAK 32
+#define GAME_STAT_POKEBLOCKS 33
+#define GAME_STAT_POKEBLOCKS_WITH_FRIENDS 34
+#define GAME_STAT_WON_LINK_CONTEST 35
+#define GAME_STAT_ENTERED_CONTEST 36
+#define GAME_STAT_WON_CONTEST 37
+#define GAME_STAT_SHOPPED 38
+#define GAME_STAT_USED_ITEMFINDER 39
+#define GAME_STAT_GOT_RAINED_ON 40
+#define GAME_STAT_CHECKED_POKEDEX 41
+#define GAME_STAT_RECEIVED_RIBBONS 42
+#define GAME_STAT_JUMPED_DOWN_LEDGES 43
+#define GAME_STAT_WATCHED_TV 44
+#define GAME_STAT_CHECKED_CLOCK 45
+#define GAME_STAT_WON_POKEMON_LOTTERY 46
+#define GAME_STAT_USED_DAYCARE 47
+#define GAME_STAT_RODE_CABLE_CAR 48
+#define GAME_STAT_ENTERED_HOT_SPRINGS 49
+#define NUM_GAME_STATS 50
+
+#endif // GUARD_CONSTANTS_GAME_STAT_H
diff --git a/berry_fix/payload/include/constants/vars.h b/berry_fix/payload/include/constants/vars.h
new file mode 100644
index 000000000..856aba069
--- /dev/null
+++ b/berry_fix/payload/include/constants/vars.h
@@ -0,0 +1,196 @@
+#ifndef GUARD_CONSTANTS_VARS_H
+#define GUARD_CONSTANTS_VARS_H
+
+#define VAR_0x3F20 0x3F20
+
+#define VARS_START 0x4000
+
+// temporary vars
+// The first 0x10 vars are are temporary--they are cleared every time a map is loaded.
+#define VAR_TEMP_0 0x4000
+#define VAR_TEMP_1 0x4001
+#define VAR_TEMP_2 0x4002
+#define VAR_TEMP_3 0x4003
+#define VAR_TEMP_4 0x4004
+#define VAR_TEMP_5 0x4005
+#define VAR_TEMP_6 0x4006
+#define VAR_TEMP_7 0x4007
+#define VAR_TEMP_8 0x4008
+#define VAR_TEMP_9 0x4009
+#define VAR_TEMP_A 0x400A
+#define VAR_TEMP_B 0x400B
+#define VAR_TEMP_C 0x400C
+#define VAR_TEMP_D 0x400D
+#define VAR_TEMP_E 0x400E
+#define VAR_TEMP_F 0x400F
+
+// object gfx id vars
+// These 0x10 vars are used to dynamically control a event object's sprite.
+// For example, the rival's sprite id is dynamically set based on the player's gender.
+// See VarGetEventObjectGraphicsId().
+#define VAR_OBJ_GFX_ID_0 0x4010
+#define VAR_OBJ_GFX_ID_1 0x4011
+#define VAR_OBJ_GFX_ID_2 0x4012
+#define VAR_OBJ_GFX_ID_3 0x4013
+#define VAR_OBJ_GFX_ID_4 0x4014
+#define VAR_OBJ_GFX_ID_5 0x4015
+#define VAR_OBJ_GFX_ID_6 0x4016
+#define VAR_OBJ_GFX_ID_7 0x4017
+#define VAR_OBJ_GFX_ID_8 0x4018
+#define VAR_OBJ_GFX_ID_9 0x4019
+#define VAR_OBJ_GFX_ID_A 0x401A
+#define VAR_OBJ_GFX_ID_B 0x401B
+#define VAR_OBJ_GFX_ID_C 0x401C
+#define VAR_OBJ_GFX_ID_D 0x401D
+#define VAR_OBJ_GFX_ID_E 0x401E
+#define VAR_OBJ_GFX_ID_F 0x401F
+
+// general purpose vars
+#define VAR_RECYCLE_GOODS 0x4020
+#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_ICE_STEP_COUNT 0x4022
+#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
+#define VAR_MIRAGE_RND_H 0x4024
+#define VAR_MIRAGE_RND_L 0x4025
+#define VAR_SECRET_BASE_MAP 0x4026
+#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027
+#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028
+#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029
+#define VAR_HAPPINESS_STEP_COUNTER 0x402A
+#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
+
+#define VAR_DAYS 0x4040
+#define VAR_FANCLUB_UNKNOWN_1 0x4041 // TODO: document these two fanclub vars
+#define VAR_FANCLUB_UNKNOWN_2 0x4042
+#define VAR_DEPT_STORE_FLOOR 0x4043
+#define VAR_TRICK_HOUSE_ROOMS_COMPLETED 0x4044
+#define VAR_LOTTERY_PRIZE 0x4045
+#define VAR_NATIONAL_DEX 0x4046
+#define VAR_SHROOMISH_SIZE_RECORD 0x4047
+#define VAR_ASH_GATHER_COUNT 0x4048
+#define VAR_BIRCH_STATE 0x4049
+#define VAR_CRUISE_STEP_COUNT 0x404A
+#define VAR_LOTTERY_RND_L 0x404B
+#define VAR_LOTTERY_RND_H 0x404C
+
+#define VAR_BARBOACH_SIZE_RECORD 0x404F
+#define VAR_LITTLEROOT_STATE 0x4050
+#define VAR_ROUTE102_ACCESSIBLE 0x4051
+
+#define VAR_LAVARIDGE_RIVAL_STATE 0x4053
+#define VAR_CURRENT_SECRET_BASE 0x4054
+
+#define VAR_PETALBURG_STATE 0x4057
+#define VAR_SLATEPORT_STATE 0x4058
+
+#define VAR_RUSTBORO_STATE 0x405A
+
+#define VAR_SOOTOPOLIS_STATE 0x405E
+
+#define VAR_ROUTE101_STATE 0x4060
+
+#define VAR_ROUTE103_STATE 0x4062
+
+#define VAR_ROUTE110_STATE 0x4069
+
+#define VAR_ROUTE116_STATE 0x406F
+
+#define VAR_ROUTE118_STATE 0x4071
+#define VAR_ROUTE119_STATE 0x4072
+
+#define VAR_ROUTE121_STATE 0x4074
+#define VAR_ROUTE128_STATE 0x407B
+
+#define VAR_LITTLEROOT_HOUSES_STATE 0x4082 // TODO: needs more investigation
+
+#define VAR_BIRCH_LAB_STATE 0x4084
+#define VAR_PETALBURG_GYM_STATE 0x4085
+#define VAR_LINK_CONTEST_ROOM_STATE 0x4086
+#define VAR_CABLE_CLUB_STATE 0x4087
+#define VAR_CONTEST_LOCATION 0x4088
+#define VAR_0x4089 0x4089 // TODO: related to decorations
+#define VAR_CONTEST_PRIZE_PICKUP 0x408A
+
+#define VAR_LITTLEROOT_HOUSES_STATE_2 0x408C // TODO: needs more investigation
+#define VAR_LITTLEROOT_RIVAL_STATE 0x408D
+#define VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE 0x408E
+#define VAR_DEVON_CORP_3F_STATE 0x408F
+#define VAR_BRINEY_HOUSE_STATE 0x4090
+
+#define VAR_LITTLEROOT_INTRO_STATE 0x4092
+#define VAR_MAUVILLE_GYM_STATE 0x4093
+#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094
+#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095
+#define VAR_BRINEY_LOCATION 0x4096
+#define VAR_0x4097 0x4097 // TODO: related to creating new secret base
+#define VAR_PETALBURG_WOODS_STATE 0x4098
+#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099
+#define VAR_RUSTURF_TUNNEL_STATE 0x409a
+#define VAR_CAVE_OF_ORIGIN_B4F_STATE 0x409B
+#define VAR_ELITE_4_STATE 0x409C
+
+#define VAR_SLATEPORT_HARBOR_STATE 0x40A0
+
+#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2
+#define VAR_CABLE_CAR_STATION_STATE 0x40A3
+#define VAR_SAFARI_ZONE_STATE 0x40A4
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A5
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7
+
+#define VAR_CYCLING_CHALLENGE_STATE 0x40A9
+#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA
+#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB
+#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC
+#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD
+#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE
+#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF
+#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0
+#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1
+#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2
+#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
+#define VAR_PORTHOLE_STATE 0x40B4
+#define VAR_TRICK_HOUSE_STATE 0x40B5 // TODO: needs some further investigation
+#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6
+#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7
+
+#define VAR_MT_PYRE_STATE 0x40B9
+#define VAR_NEW_MAUVILLE_STATE 0x40BA
+
+#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC
+#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD
+#define VAR_GLASS_WORKSHOP_STATE 0x40BE
+#define VAR_METEOR_FALLS_STATE 0x40BF
+#define VAR_GAME_CORNER_STATE 0x40C0
+#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1
+#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2
+#define VAR_VICTORY_ROAD_1F_STATE 0x40C3
+#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4
+#define VAR_WHICH_FOSSIL_REVIVED 0x40C5
+#define VAR_STEVENS_HOUSE_STATE 0x40C6
+#define VAR_OLDALE_STATE 0x40C7
+
+// special vars
+// They are commonly used as parameters to commands, or return values from commands.
+#define VAR_SPECIAL_0 0x8000
+#define VAR_SPECIAL_1 0x8001
+#define VAR_SPECIAL_2 0x8002
+#define VAR_SPECIAL_3 0x8003
+#define VAR_SPECIAL_4 0x8004
+#define VAR_SPECIAL_5 0x8005
+#define VAR_SPECIAL_6 0x8006
+#define VAR_SPECIAL_7 0x8007
+#define VAR_SPECIAL_8 0x8008
+#define VAR_SPECIAL_9 0x8009
+#define VAR_SPECIAL_A 0x800A
+#define VAR_SPECIAL_B 0x800B
+#define FACING 0x800C
+#define RESULT 0x800D
+#define ITEM_ID 0x800E
+#define LAST_TALKED 0x800F
+#define CONTEST_RANK 0x8010
+#define CONTEST_CATEGORY 0x8011
+
+#endif // GUARD_CONSTANTS_VARS_H
diff --git a/berry_fix/payload/include/flash.h b/berry_fix/payload/include/flash.h
new file mode 100644
index 000000000..26de88216
--- /dev/null
+++ b/berry_fix/payload/include/flash.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_FLASH_H
+#define GUARD_FLASH_H
+
+#include <gba/gba.h>
+
+enum
+{
+ SECTOR_DAMAGED,
+ SECTOR_OK,
+ SECTOR_CHECK, // unused
+};
+
+enum MsgBoxUpdateMessage
+{
+ MSGBOX_WILL_NOW_UPDATE = 0,
+ MSGBOX_HAS_BEEN_UPDATED,
+ MSGBOX_UNABLE_TO_UPDATE,
+ MSGBOX_NO_NEED_TO_UPDATE,
+ MSGBOX_UPDATING
+};
+
+struct SaveSector
+{
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 signature;
+ u32 counter;
+}; // size is 0x1000
+
+// headless save section?
+struct UnkSaveSection
+{
+ u8 data[0xFF4];
+ u32 signature;
+}; // size is 0xFF8
+
+#define eSaveSection ((struct SaveSector *)0x2020000)
+
+#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot
+#define FILE_SIGNATURE 0x08012025
+
+#define SAVE_STATUS_EMPTY 0
+#define SAVE_STATUS_OK 1
+#define SAVE_STATUS_NO_FLASH 4
+#define SAVE_STATUS_ERROR 0xFF
+
+bool32 flash_maincb_ident_is_valid(void);
+bool8 flash_maincb_read_save(u32);
+void msg_load_gfx(void);
+void msg_display(enum MsgBoxUpdateMessage);
+bool32 flash_maincb_check_need_reset_pacifidlog_tm(void);
+bool32 flash_maincb_reset_pacifidlog_tm(void);
+
+#endif //GUARD_FLASH_H
diff --git a/berry_fix/payload/include/global.berry.h b/berry_fix/payload/include/global.berry.h
new file mode 100644
index 000000000..8f185c8f9
--- /dev/null
+++ b/berry_fix/payload/include/global.berry.h
@@ -0,0 +1,62 @@
+#ifndef GUARD_GLOBAL_BERRY_H
+#define GUARD_GLOBAL_BERRY_H
+
+struct Berry
+{
+ /*0x00*/ u8 name[7];
+ /*0x07*/ u8 firmness;
+ /*0x08*/ u16 size;
+ /*0x0A*/ u8 maxYield;
+ /*0x0B*/ u8 minYield;
+ /*0x0C*/ const u8 *description1;
+ /*0x10*/ const u8 *description2;
+ /*0x14*/ u8 stageDuration;
+ /*0x15*/ u8 spicy;
+ /*0x16*/ u8 dry;
+ /*0x17*/ u8 sweet;
+ /*0x18*/ u8 bitter;
+ /*0x19*/ u8 sour;
+ /*0x1A*/ u8 smoothness;
+};
+
+struct EnigmaBerry
+{
+ /*0x000*/ struct Berry berry;
+ /*0x01B*/ u8 pic[(6 * 6) * TILE_SIZE_4BPP];
+ /*0x49C*/ u16 palette[16];
+ /*0x4BC*/ u8 description1[45];
+ /*0x4E9*/ u8 description2[45];
+ /*0x516*/ u8 itemEffect[18];
+ /*0x528*/ u8 holdEffect;
+ /*0x529*/ u8 holdEffectParam;
+ /*0x52C*/ u32 checksum;
+};
+
+struct BattleEnigmaBerry
+{
+ /*0x00*/ u8 name[7];
+ /*0x07*/ u8 holdEffect;
+ /*0x08*/ u8 itemEffect[18];
+ /*0x1A*/ u8 holdEffectParam;
+};
+
+struct BerryTree
+{
+ /*0x00*/ u8 berry;
+ /*0x01*/ u8 stage:7;
+ /*
+ A berry sparkle is a state that a berry tree
+ can be in after growing within the player's
+ viewport.
+ */
+ /*0x01*/ bool8 growthSparkle:1;
+ /*0x02*/ u16 minutesUntilNextStage;
+ /*0x04*/ u8 berryYield;
+ /*0x05*/ u8 regrowthCount:4;
+ /*0x05*/ u8 watered1:1;
+ /*0x05*/ u8 watered2:1;
+ /*0x05*/ u8 watered3:1;
+ /*0x05*/ u8 watered4:1;
+};
+
+#endif // GUARD_GLOBAL_BERRY_H
diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h
new file mode 100644
index 000000000..81f805ee2
--- /dev/null
+++ b/berry_fix/payload/include/global.fieldmap.h
@@ -0,0 +1,317 @@
+#ifndef GUARD_GLOBAL_FIELDMAP_H
+#define GUARD_GLOBAL_FIELDMAP_H
+
+enum
+{
+ CONNECTION_SOUTH = 1,
+ CONNECTION_NORTH,
+ CONNECTION_WEST,
+ CONNECTION_EAST,
+ CONNECTION_DIVE,
+ CONNECTION_EMERGE
+};
+
+typedef void (*TilesetCB)(void);
+
+struct Tileset
+{
+ /*0x00*/ bool8 isCompressed;
+ /*0x01*/ bool8 isSecondary;
+ /*0x04*/ void *tiles;
+ /*0x08*/ void *palettes;
+ /*0x0c*/ void *metatiles;
+ /*0x10*/ void *metatileAttributes;
+ /*0x14*/ TilesetCB callback;
+};
+
+struct MapLayout
+{
+ /*0x00*/ s32 width;
+ /*0x04*/ s32 height;
+ /*0x08*/ u16 *border;
+ /*0x0c*/ u16 *map;
+ /*0x10*/ struct Tileset *primaryTileset;
+ /*0x14*/ struct Tileset *secondaryTileset;
+};
+
+struct BackupMapLayout
+{
+ s32 width;
+ s32 height;
+ u16 *map;
+};
+
+struct EventObjectTemplate
+{
+ /*0x00*/ u8 localId;
+ /*0x01*/ u8 graphicsId;
+ /*0x02*/ u8 unk2;
+ /*0x04*/ s16 x;
+ /*0x06*/ s16 y;
+ /*0x08*/ u8 elevation;
+ /*0x09*/ u8 movementType;
+ /*0x0A*/ u8 movementRangeX:4;
+ u8 movementRangeY:4;
+ /*0x0C*/ u16 trainerType;
+ /*0x0E*/ u16 trainerRange_berryTreeId;
+ /*0x10*/ u8 *script;
+ /*0x14*/ u16 flagId;
+};
+
+struct WarpEvent
+{
+ s16 x, y;
+ u8 elevation;
+ u8 warpId;
+ u8 mapNum;
+ u8 mapGroup;
+};
+
+struct CoordEvent
+{
+ s16 x, y;
+ u8 elevation;
+ u16 trigger;
+ u16 index;
+ u8 filler_A[0x2];
+ u8 *script;
+};
+
+struct BgEvent
+{
+ /*0x00*/u16 x;
+ /*0x02*/u16 y;
+ /*0x04*/u8 elevation;
+ /*0x05*/u8 kind;
+ /*0x08*/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
+ struct {
+ u16 item;
+ u16 hiddenItemId; // flag offset to determine flag lookup
+ } hiddenItem;
+
+ // secret base type
+ u32 secretBaseId;
+
+ } bgUnion;
+};
+
+struct MapEvents
+{
+ u8 eventObjectCount;
+ u8 warpCount;
+ u8 coordEventCount;
+ u8 bgEventCount;
+
+ struct EventObjectTemplate *eventObjects;
+ struct WarpEvent *warps;
+ struct CoordEvent *coordEvents;
+ struct BgEvent *bgEvents;
+};
+
+struct MapConnection
+{
+ /*0x00*/ u8 direction;
+ /*0x01*/ u32 offset;
+ /*0x05*/ u8 mapGroup;
+ /*0x06*/ u8 mapNum;
+};
+
+struct MapConnections
+{
+ s32 count;
+ struct MapConnection *connections;
+};
+
+struct MapHeader
+{
+ /* 0x00 */ struct MapLayout *mapLayout;
+ /* 0x04 */ struct MapEvents *events;
+ /* 0x08 */ u8 *mapScripts;
+ /* 0x0C */ struct MapConnections *connections;
+ /* 0x10 */ u16 music;
+ /* 0x12 */ u16 mapLayoutId;
+ /* 0x14 */ u8 regionMapSectionId;
+ /* 0x15 */ u8 cave;
+ /* 0x16 */ u8 weather;
+ /* 0x17 */ u8 mapType;
+ /* 0x18 */ u8 filler_18;
+ /* 0x19 */ u8 escapeRope;
+ /* 0x1A */ u8 flags;
+ /* 0x1B */ u8 battleType;
+};
+
+struct EventObject
+{
+ /*0x00*/ u32 active:1;
+ u32 singleMovementActive:1;
+ u32 triggerGroundEffectsOnMove:1;
+ u32 triggerGroundEffectsOnStop:1;
+ u32 disableCoveringGroundEffects:1; // disables ground effects that cover parts of the object's sprite
+ u32 landingJump:1;
+ u32 heldMovementActive:1;
+ u32 heldMovementFinished:1;
+ /*0x01*/ u32 frozen:1;
+ u32 facingDirectionLocked:1;
+ u32 disableAnim:1; // used to disable forced movement sliding animations (like on ice)
+ u32 enableAnim:1;
+ u32 inanimate:1;
+ u32 invisible:1;
+ u32 offScreen:1;
+ u32 trackedByCamera:1; // only set for the player object
+ /*0x02*/ u32 isPlayer:1;
+ u32 hasReflection:1;
+ u32 inShortGrass:1;
+ u32 inShallowFlowingWater:1;
+ u32 inSandPile:1;
+ u32 inHotSprings:1;
+ u32 hasShadow:1;
+ u32 spriteAnimPausedBackup:1;
+ /*0x03*/ u32 spriteAffineAnimPausedBackup:1;
+ u32 disableJumpLandingGroundEffect:1;
+ u32 fixedPriority:1;
+ /*0x04*/ u8 spriteId;
+ /*0x05*/ u8 graphicsId;
+ /*0x06*/ u8 movementType;
+ /*0x07*/ u8 trainerType;
+ /*0x08*/ u8 localId;
+ /*0x09*/ u8 mapNum;
+ /*0x0A*/ u8 mapGroup;
+ /*0x0B*/ u8 currentElevation:4;
+ u8 previousElevation:4;
+ /*0x0C*/ struct Coords16 initialCoords;
+ /*0x10*/ struct Coords16 currentCoords;
+ /*0x14*/ struct Coords16 previousCoords;
+ /*0x18*/ u8 facingDirection:4;
+ /*0x18*/ u8 movementDirection:4;
+ /*0x19*/ union __attribute__((packed)) {
+ u8 as_byte;
+ struct __attribute__((packed)) {
+ u16 x:4;
+ u16 y:4;
+ } as_nybbles;
+ } range;
+ /*0x1A*/ u8 fieldEffectSpriteId;
+ /*0x1B*/ u8 warpArrowSpriteId;
+ /*0x1C*/ u8 movementActionId;
+ /*0x1D*/ u8 trainerRange_berryTreeId;
+ /*0x1E*/ u8 currentMetatileBehavior;
+ /*0x1F*/ u8 previousMetatileBehavior;
+ /*0x20*/ u8 previousMovementDirection;
+ /*0x21*/ u8 directionSequenceIndex;
+ /*0x22*/ u8 playerCopyableMovement; // used as an index to gCopyPlayerMovementFuncs for the "copy player" movement types
+ /*size = 0x24*/
+};
+
+struct EventObjectGraphicsInfo
+{
+ /*0x00*/ u16 tileTag;
+ /*0x02*/ u16 paletteTag;
+ /*0x04*/ u16 bridgeReflectionPaletteTag;
+ /*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*/ const struct OamData *oam;
+ /*0x14*/ const struct SubspriteTable *subspriteTables;
+ /*0x18*/ const union AnimCmd *const *anims;
+ /*0x1C*/ const struct SpriteFrameImage *images;
+ /*0x20*/ const union AffineAnimCmd *const *affineAnims;
+};
+
+#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
+#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
+#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
+#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
+#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
+#define PLAYER_AVATAR_FLAG_5 (1 << 5)
+#define PLAYER_AVATAR_FLAG_6 (1 << 6)
+#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
+
+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,
+ DIR_SOUTHWEST,
+ DIR_SOUTHEAST,
+ DIR_NORTHWEST,
+ DIR_NORTHEAST,
+};
+
+enum
+{
+ COLLISION_LEDGE_JUMP = 6
+};
+
+// player running states
+enum
+{
+ NOT_MOVING,
+ TURN_DIRECTION, // not the same as turning! turns your avatar without moving. also known as a turn frame in some circles
+ MOVING,
+};
+
+// player tile transition states
+enum
+{
+ T_NOT_MOVING,
+ T_TILE_TRANSITION,
+ T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary.
+};
+
+struct PlayerAvatar /* 0x202E858 */
+{
+ /*0x00*/ u8 flags;
+ /*0x01*/ u8 unk1; // used to be named bike, but its definitely not that. seems to be some transition flags
+ /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving.
+ /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning.
+ /*0x04*/ u8 spriteId;
+ /*0x05*/ u8 eventObjectId;
+ /*0x06*/ bool8 preventStep;
+ /*0x07*/ u8 gender;
+ /*0x08*/ u8 acroBikeState; // 00 is normal, 01 is turning, 02 is standing wheelie, 03 is hopping wheelie
+ /*0x09*/ u8 newDirBackup; // during bike movement, the new direction as opposed to player's direction is backed up here.
+ /*0x0A*/ u8 bikeFrameCounter; // on the mach bike, when this value is 1, the bike is moving but not accelerating yet for 1 tile. on the acro bike, this acts as a timer for acro bike.
+ /*0x0B*/ u8 bikeSpeed;
+ // acro bike only
+ /*0x0C*/ u32 directionHistory; // up/down/left/right history is stored in each nybble, but using the field directions and not the io inputs.
+ /*0x10*/ u32 abStartSelectHistory; // same as above but for A + B + start + select only
+ // these two are timer history arrays which [0] is the active timer for acro bike. every element is backed up to the next element upon update.
+ /*0x14*/ u8 dirTimerHistory[8];
+ /*0x1C*/ u8 abStartSelectTimerHistory[8];
+};
+
+struct Camera
+{
+ bool8 active:1;
+ s32 x;
+ s32 y;
+};
+
+extern struct EventObject gEventObjects[];
+extern u8 gSelectedEventObject;
+extern struct MapHeader gMapHeader;
+extern struct PlayerAvatar gPlayerAvatar;
+
+#endif // GUARD_GLOBAL_FIELDMAP_H
diff --git a/berry_fix/payload/include/global.h b/berry_fix/payload/include/global.h
new file mode 100644
index 000000000..ad83b544c
--- /dev/null
+++ b/berry_fix/payload/include/global.h
@@ -0,0 +1,875 @@
+#ifndef GUARD_GLOBAL_H
+#define GUARD_GLOBAL_H
+
+#include <gba/gba.h>
+
+// global.h from pokemon ruby
+
+// IDE support
+#if defined(__APPLE__) || defined(__CYGWIN__)
+#define _(x) x
+#define __(x) x
+#define INCBIN(x) {0}
+#define INCBIN_U8 INCBIN
+#define INCBIN_U16 INCBIN
+#define INCBIN_U32 INCBIN
+#define INCBIN_S8 INCBIN
+#define INCBIN_S16 INCBIN
+#define INCBIN_S32 INCBIN
+#endif
+
+// Prevent cross-jump optimization.
+#define BLOCK_CROSS_JUMP asm("");
+
+// to help in decompiling
+#define asm_comment(x) asm volatile("@ -- " x " -- ")
+
+#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n")
+
+#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
+
+
+#define POKEMON_SLOTS_NUMBER 412
+#define POKEMON_NAME_LENGTH 10
+#define OT_NAME_LENGTH 7
+
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#define max(a, b) ((a) >= (b) ? (a) : (b))
+
+// why does GF hate 2d arrays
+#define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y))
+
+// dim access enums
+enum
+{
+ B_8 = 1,
+ B_16 = 2,
+ B_32 = 4
+};
+
+// There are many quirks in the source code which have overarching behavioral differences from
+// a number of other files. For example, diploma.c seems to declare rodata before each use while
+// other files declare out of order and must be at the beginning. There are also a number of
+// macros which differ from one file to the next due to the method of obtaining the result, such
+// as these below. Because of this, there is a theory (Two Team Theory) that states that these
+// programming projects had more than 1 "programming team" which utilized different macros for
+// each of the files that were worked on.
+#define T1_READ_8(ptr) ((ptr)[0])
+#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24))
+#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr)
+
+// T2_READ_8 is a duplicate to remain consistent with each group.
+#define T2_READ_8(ptr) ((ptr)[0])
+#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
+#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+
+// Credits to Made (dolphin emoji)
+#define S16TOPOSFLOAT(val) \
+({ \
+ s16 v = (val); \
+ float f = (float)v; \
+ if(v < 0) f += 65536.0f; \
+ f; \
+})
+
+enum
+{
+ VERSION_SAPPHIRE = 1,
+ VERSION_RUBY = 2,
+ VERSION_EMERALD = 3,
+};
+
+enum LanguageId
+{
+ LANGUAGE_JAPANESE = 1,
+ LANGUAGE_ENGLISH = 2,
+ LANGUAGE_GERMAN = 5,
+};
+
+// capacities of various saveblock objects
+#define DAYCARE_MON_COUNT 2
+#define POKEBLOCKS_COUNT 40
+#define PARTY_SIZE 6
+#define EVENT_OBJECTS_COUNT 16
+#define BERRY_TREES_COUNT 128
+#define FLAGS_COUNT 288
+#define VARS_COUNT 256
+#define MAIL_COUNT 16
+#define SECRET_BASES_COUNT 20
+#define TV_SHOWS_COUNT 25
+#define POKE_NEWS_COUNT 16
+#define PC_ITEMS_COUNT 50
+#define BAG_ITEMS_COUNT 20
+#define BAG_KEYITEMS_COUNT 20
+#define BAG_POKEBALLS_COUNT 16
+#define BAG_TMHM_COUNT 64
+#define BAG_BERRIES_COUNT 46
+
+enum
+{
+ MALE,
+ FEMALE
+};
+
+enum
+{
+ OPTIONS_BUTTON_MODE_NORMAL,
+ OPTIONS_BUTTON_MODE_LR,
+ OPTIONS_BUTTON_MODE_L_EQUALS_A
+};
+
+enum
+{
+ OPTIONS_TEXT_SPEED_SLOW,
+ OPTIONS_TEXT_SPEED_MID,
+ OPTIONS_TEXT_SPEED_FAST
+};
+
+enum
+{
+ OPTIONS_SOUND_MONO,
+ OPTIONS_SOUND_STEREO
+};
+
+enum
+{
+ OPTIONS_BATTLE_STYLE_SHIFT,
+ OPTIONS_BATTLE_STYLE_SET
+};
+
+enum
+{
+ BAG_ITEMS = 1,
+ BAG_POKEBALLS,
+ BAG_TMsHMs,
+ BAG_BERRIES,
+ BAG_KEYITEMS
+};
+
+struct Coords16
+{
+ s16 x;
+ s16 y;
+};
+
+struct UCoords16
+{
+ u16 x;
+ u16 y;
+};
+
+struct SecretBaseRecord
+{
+ /*0x1A08*/ u8 secretBaseId;
+ /*0x1A09*/ u8 sbr_field_1_0:4;
+ /*0x1A09*/ u8 gender:1;
+ /*0x1A09*/ u8 sbr_field_1_5:1;
+ /*0x1A09*/ u8 sbr_field_1_6:2;
+ /*0x1A0A*/ u8 playerName[OT_NAME_LENGTH];
+ /*0x1A11*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
+ /*0x1A16*/ u16 sbr_field_e;
+ /*0x1A18*/ u8 sbr_field_10;
+ /*0x1A19*/ u8 sbr_field_11;
+ /*0x1A1A*/ u8 decorations[16];
+ /*0x1A2A*/ u8 decorationPos[16];
+ /*0x1A3C*/ u32 partyPersonality[6];
+ /*0x1A54*/ u16 partyMoves[6 * 4];
+ /*0x1A84*/ u16 partySpecies[6];
+ /*0x1A90*/ u16 partyHeldItems[6];
+ /*0x1A9C*/ u8 partyLevels[6];
+ /*0x1AA2*/ u8 partyEVs[6];
+};
+
+#include "constants/game_stat.h"
+#include "global.fieldmap.h"
+#include "global.berry.h"
+#include "pokemon.h"
+
+struct WarpData
+{
+ s8 mapGroup;
+ s8 mapNum;
+ s8 warpId;
+ s16 x, y;
+};
+
+struct ItemSlot
+{
+ u16 itemId;
+ u16 quantity;
+};
+
+struct Pokeblock
+{
+ u8 color;
+ u8 spicy;
+ u8 dry;
+ u8 sweet;
+ u8 bitter;
+ u8 sour;
+ u8 feel;
+};
+
+struct Roamer
+{
+ /*0x00*/ u32 ivs;
+ /*0x04*/ u32 personality;
+ /*0x08*/ u16 species;
+ /*0x0A*/ u16 hp;
+ /*0x0C*/ u8 level;
+ /*0x0D*/ u8 status;
+ /*0x0E*/ u8 cool;
+ /*0x0F*/ u8 beauty;
+ /*0x10*/ u8 cute;
+ /*0x11*/ u8 smart;
+ /*0x12*/ u8 tough;
+ /*0x13*/ bool8 active;
+ /*0x14*/ u8 filler[0x8];
+};
+
+struct RamScriptData
+{
+ u8 magic;
+ u8 mapGroup;
+ u8 mapNum;
+ u8 objectId;
+ u8 script[995];
+};
+
+struct RamScript
+{
+ u32 checksum;
+ struct RamScriptData data;
+};
+
+struct EasyChatPair
+{
+ u16 unk0_0:7;
+ u16 unk0_7:7;
+ u16 unk1_6:1;
+ u16 unk2;
+ u16 words[2];
+}; /*size = 0x8*/
+
+struct TVShowCommon
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[20];
+ /*0x16*/ u16 var16[3];
+ /*0x1C*/ u8 srcTrainerId3Lo;
+ /*0x1D*/ u8 srcTrainerId3Hi;
+ /*0x1E*/ u8 srcTrainerId2Lo;
+ /*0x1F*/ u8 srcTrainerId2Hi;
+ /*0x20*/ u8 srcTrainerIdLo;
+ /*0x21*/ u8 srcTrainerIdHi;
+ /*0x22*/ u8 trainerIdLo;
+ /*0x23*/ u8 trainerIdHi;
+};
+
+struct TVShowFanClubLetter
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 pad04[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
+};
+
+struct TVShowRecentHappenings
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 var04[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
+ /*0x19*/ u8 pad19[10];
+};
+
+struct TVShowFanclubOpinions
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u8 var04A:4;
+ /*0x04*/ u8 var04B:4;
+ /*0x05*/ u8 playerName[8];
+ /*0x0D*/ u8 language;
+ /*0x0E*/ u8 var0E;
+ /*0x0F*/ u8 var0F;
+ /*0x10*/ u8 var10[8];
+ /*0x18*/ u16 var18[2];
+ /*0x1C*/ u16 var1C[4];
+};
+
+struct TVShowUnknownType04
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[4];
+ /*0x06*/ u16 var06;
+};
+
+struct TVShowNameRaterShow
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 pokemonName[11];
+ /*0x0F*/ u8 trainerName[11];
+ /*0x1A*/ u8 random;
+ /*0x1B*/ u8 random2;
+ /*0x1C*/ u16 var1C;
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 pokemonNameLanguage;
+};
+
+struct TVShowBravoTrainerPokemonProfiles
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 var04[2];
+ /*0x08*/ u8 pokemonNickname[11];
+ /*0x13*/ u8 contestCategory:3;
+ /*0x13*/ u8 contestRank:2;
+ /*0x13*/ u8 contestResult:2;
+ /*0x13*/ u8 var13_7:1;
+ /*0x14*/ u16 var14;
+ /*0x16*/ u8 playerName[8];
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 var1f;
+};
+
+struct TVShowBravoTrainerBattleTowerSpotlight
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 trainerName[8];
+ /*0x0A*/ u16 species;
+ /*0x0C*/ u8 enemyTrainerName[8];
+ /*0x14*/ u16 defeatedSpecies;
+ /*0x16*/ u16 var16;
+ /*0x18*/ u16 var18[1];
+ /*0x1A*/ u8 btLevel;
+ /*0x1B*/ u8 var1b;
+ /*0x1C*/ u8 var1c;
+ /*0x1D*/ u8 language;
+};
+
+struct TVShowPokemonToday
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 language2;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 ball;
+ /*0x10*/ u16 species;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowSmartShopper
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 priceReduced;
+ /*0x03*/ u8 language;
+ /*0x04*/ u8 pad04[2];
+ /*0x06*/ u16 itemIds[3];
+ /*0x0C*/ u16 itemAmounts[3];
+ /*0x12*/ u8 shopLocation;
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowPokemonTodayFailed
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 pad03[9];
+ /*0x0c*/ u16 species;
+ /*0x0e*/ u16 species2;
+ /*0x10*/ u8 var10;
+ /*0x11*/ u8 var11;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowPokemonAngler
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 var04;
+ /*0x06*/ u8 language;
+ u8 pad07[12];
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowWorldOfMasters
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 var04;
+ /*0x06*/ u16 var06;
+ /*0x08*/ u16 var08;
+ /*0x0a*/ u8 var0a;
+ /*0x0b*/ u8 language;
+ u8 pad0c[7];
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowMassOutbreak
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 moves[4];
+ /*0x0C*/ u16 species;
+ /*0x0E*/ u16 var0E;
+ /*0x10*/ u8 locationMapNum;
+ /*0x11*/ u8 locationMapGroup;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 probability;
+ /*0x14*/ u8 level;
+ /*0x15*/ u8 var15;
+ /*0x16*/ u16 daysLeft;
+ /*0x18*/ u8 language;
+ u8 pad19[11];
+};
+
+typedef union TVShow
+{
+ struct TVShowCommon common;
+ struct TVShowFanClubLetter fanclubLetter;
+ struct TVShowRecentHappenings recentHappenings;
+ struct TVShowFanclubOpinions fanclubOpinions;
+ struct TVShowUnknownType04 unkShow04;
+ struct TVShowNameRaterShow nameRaterShow;
+ struct TVShowBravoTrainerPokemonProfiles bravoTrainer;
+ struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower;
+ struct TVShowPokemonToday pokemonToday;
+ struct TVShowSmartShopper smartshopperShow;
+ struct TVShowPokemonTodayFailed pokemonTodayFailed;
+ struct TVShowPokemonAngler pokemonAngler;
+ struct TVShowWorldOfMasters worldOfMasters;
+ struct TVShowMassOutbreak massOutbreak;
+} TVShow;
+
+struct MailStruct
+{
+ /*0x00*/ u16 words[9];
+ /*0x12*/ u8 playerName[8];
+ /*0x1A*/ u8 trainerId[4];
+ /*0x1E*/ u16 species;
+ /*0x20*/ u16 itemId;
+};
+
+
+// Mauville Pokemon Center men
+
+struct MauvilleManCommon
+{
+ u8 id;
+};
+
+struct MauvilleManBard
+{
+ /*0x00*/ u8 id;
+ /*0x02*/ u16 songLyrics[6];
+ /*0x0E*/ u16 temporaryLyrics[6];
+ /*0x1A*/ u8 playerName[8];
+ /*0x22*/ u8 filler_2DB6[0x3];
+ /*0x25*/ u8 playerTrainerId[4];
+ /*0x29*/ bool8 hasChangedSong;
+}; /*size = 0x2C*/
+
+struct MauvilleManHipster
+{
+ u8 id;
+ bool8 alreadySpoken;
+};
+
+struct MauvilleManTrader
+{
+ u8 id;
+ u8 unk1[4];
+ u8 unk5[4][11];
+ bool8 alreadyTraded;
+};
+
+struct MauvilleManStoryteller
+{
+ u8 id;
+ bool8 alreadyRecorded;
+ u8 filler2[2];
+ u8 gameStatIDs[4];
+ u8 trainerNames[4][7];
+ u8 statValues[4][4];
+};
+
+struct MauvilleManGiddy
+{
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 taleCounter;
+ /*0x02*/ u8 questionNum;
+ /*0x04*/ u16 randomWords[10];
+ /*0x18*/ u8 questionList[12];
+}; /*size = 0x2C*/
+
+
+union MauvilleMan
+{
+ struct MauvilleManCommon common;
+ struct MauvilleManBard bard;
+ struct MauvilleManHipster hipster;
+ struct MauvilleManTrader trader;
+ struct MauvilleManStoryteller storyteller;
+ struct MauvilleManGiddy giddy;
+ u8 filler[0x40]; // needed to pad out the struct
+};
+
+struct PokeNews
+{
+ u8 kind;
+ u8 state;
+ u16 days;
+};
+
+struct GabbyAndTyData
+{
+ /*2b10*/ u16 mon1;
+ /*2b12*/ u16 mon2;
+ /*2b14*/ u16 lastMove;
+ /*2b16*/ u16 quote;
+ /*2b18*/ u8 mapnum;
+ /*2b19*/ u8 battleNum;
+ /*2b1a*/ u8 valA_0:1;
+ /*2b1a*/ u8 valA_1:1;
+ /*2b1a*/ u8 valA_2:1;
+ /*2b1a*/ u8 valA_3:1;
+ /*2b1a*/ u8 valA_4:1;
+ /*2b1a*/ u8 valA_5:3;
+ /*2b1b*/ u8 valB_0:1;
+ /*2b1b*/ u8 valB_1:1;
+ /*2b1b*/ u8 valB_2:1;
+ /*2b1b*/ u8 valB_3:1;
+ /*2b1b*/ u8 valB_4:1;
+ /*2b1b*/ u8 valB_5:3;
+};
+
+struct DayCareMail
+{
+ /*0x00*/ struct MailStruct message;
+ /*0x24*/ u8 names[19];
+};
+
+struct DayCareStepCountersEtc {
+ u32 steps[DAYCARE_MON_COUNT];
+ u16 pendingEggPersonality;
+ u8 eggCycleStepsRemaining;
+};
+
+struct RecordMixingDayCareMail
+{
+ struct DayCareMail mail[DAYCARE_MON_COUNT];
+ u32 numDaycareMons;
+ u16 itemsHeld[DAYCARE_MON_COUNT]; // marks whether or not each daycare mon is currently holding an item.
+};
+
+struct DayCareMisc
+{
+ struct DayCareMail mail[DAYCARE_MON_COUNT];
+ struct DayCareStepCountersEtc countersEtc;
+};
+
+struct DayCare {
+ struct BoxPokemon mons[DAYCARE_MON_COUNT];
+ struct DayCareMisc misc;
+};
+
+struct LinkBattleRecord
+{
+ u8 name[8];
+ u16 trainerId;
+ u16 wins;
+ u16 losses;
+ u16 draws;
+};
+
+struct RecordMixingGiftData
+{
+ u8 unk0;
+ u8 quantity;
+ u16 itemId;
+ u8 filler4[8];
+};
+
+struct RecordMixingGift
+{
+ int checksum;
+ struct RecordMixingGiftData data;
+};
+
+struct ContestWinner
+{
+ /*0x00*/ u32 personality; // personality
+ /*0x04*/ u32 otId; // otId
+ /*0x08*/ u16 species; // species
+ /*0x0A*/ u8 contestCategory;
+ /*0x0B*/ u8 nickname[11];
+ /*0x16*/ u8 trainerName[8];
+};
+
+// there should be enough flags for all 412 slots
+// each slot takes up 8 flags
+// if the value is not divisible by 8, we need to account for the reminder as well
+#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0))
+
+struct SaveBlock1 /* 0x02025734 */
+{
+ /*0x00*/ struct Coords16 pos;
+ /*0x04*/ struct WarpData location;
+ /*0x0C*/ struct WarpData warp1;
+ /*0x14*/ struct WarpData warp2;
+ /*0x1C*/ struct WarpData lastHealLocation;
+ /*0x24*/ struct WarpData warp4;
+ /*0x2C*/ u16 savedMusic;
+ /*0x2E*/ u8 weather;
+ /*0x2F*/ u8 weatherCycleStage;
+ /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest
+ /*0x32*/ u16 mapLayoutId;
+ /*0x34*/ u16 mapView[0x100];
+ /*0x234*/ u8 playerPartyCount;
+ /*0x238*/ struct Pokemon playerParty[6];
+ /*0x490*/ u32 money;
+ /*0x494*/ u16 coins;
+ /*0x496*/ u16 registeredItem; // registered for use with SELECT button
+ /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT];
+ /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT];
+ /*0x5B0*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT];
+ /*0x600*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT];
+ /*0x640*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT];
+ /*0x740*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT];
+ /*0x7F8*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT];
+ /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO];
+ /*0x96C*/ u16 berryBlenderRecords[3];
+ /*0x972*/ u8 filler_972[0x6];
+ /*0x978*/ u16 trainerRematchStepCounter;
+ /*0x97A*/ u8 trainerRematches[100];
+ /*0x9E0*/ struct EventObject eventObjects[EVENT_OBJECTS_COUNT];
+ /*0xC20*/ struct EventObjectTemplate eventObjectTemplates[64];
+ /*0x1220*/ u8 flags[FLAGS_COUNT];
+ /*0x1340*/ u16 vars[VARS_COUNT];
+ /*0x1540*/ u32 gameStats[NUM_GAME_STATS];
+ /*0x1608*/ struct BerryTree berryTrees[BERRY_TREES_COUNT];
+ /*0x1A08*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
+ /*0x2688*/ u8 playerRoomDecor[12];
+ /*0x2694*/ u8 playerRoomDecorPos[12];
+ /*0x26A0*/ u8 decorDesk[10];
+ /*0x26AA*/ u8 decorChair[10];
+ /*0x26B4*/ u8 decorPlant[10];
+ /*0x26BE*/ u8 decorOrnament[30];
+ /*0x26DC*/ u8 decorMat[30];
+ /*0x26FA*/ u8 decorPoster[10];
+ /*0x2704*/ u8 decorDoll[40];
+ /*0x272C*/ u8 decorCushion[10];
+ /*0x2736*/ u8 padding_2736[2];
+ /*0x2738*/ TVShow tvShows[TV_SHOWS_COUNT];
+ /*0x2ABC*/ struct PokeNews pokeNews[POKE_NEWS_COUNT];
+ /*0x2AFC*/ u16 outbreakPokemonSpecies;
+ /*0x2AFE*/ u8 outbreakLocationMapNum;
+ /*0x2AFF*/ u8 outbreakLocationMapGroup;
+ /*0x2B00*/ u8 outbreakPokemonLevel;
+ /*0x2B01*/ u8 outbreakUnk1;
+ /*0x2B02*/ u16 outbreakUnk2;
+ /*0x2B04*/ u16 outbreakPokemonMoves[4];
+ /*0x2B0C*/ u8 outbreakUnk4;
+ /*0x2B0D*/ u8 outbreakPokemonProbability;
+ /*0x2B0E*/ u16 outbreakUnk5;
+ /*0x2B10*/ struct GabbyAndTyData gabbyAndTyData;
+ /*0x2B1C*/ struct {
+ /*0x2B1C*/ u16 unk2B1C[6];
+ /*0x2B28*/ u16 unk2B28[6];
+ /*0x2B34*/ u16 unk2B34[6];
+ /*0x2B40*/ u16 unk2B40[6];
+ } easyChats;
+ /*0x2B4C*/ struct MailStruct mail[MAIL_COUNT];
+ /*0x2D8C*/ u8 unk2D8C[4]; // What is this? Apparently it's supposed to be 64 bytes in size.
+ /*0x2D90*/ u8 filler_2D90[0x4];
+ /*0x2D94*/ union MauvilleMan mauvilleMan;
+ /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
+ /*0x2DFC*/ struct ContestWinner contestWinners[8];
+ /*0x2EFC*/ struct ContestWinner museumPortraits[5];
+ /*0x2F9C*/ struct DayCare daycare;
+ /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5];
+ struct {
+ /*0x3108*/ u8 unknown1[8];
+ /*0x3110*/ u8 giftRibbons[11];
+ /*0x311B*/ u8 unknown2[8];
+ /*0x3123*/ u32 currentPokeCoupons;
+ /*0x3127*/ u32 totalEarnedPokeCoupons;
+ /*0x312B*/ u8 unknown3[6];
+ /*0x3131*/ u8 receivedWishmakerJirachi;
+ /*0x3132*/ u8 unknown4[18];
+ } __attribute__((packed)) externalReservedData;
+ /*0x3144*/ struct Roamer roamer;
+ /*0x3160*/ struct EnigmaBerry enigmaBerry;
+ /*0x3690*/ struct RamScript ramScript;
+ /*0x3A7C*/ struct RecordMixingGift recordMixingGift;
+ /*0x3A8C*/ u8 dexSeen3[DEX_FLAGS_NO];
+};
+
+extern struct SaveBlock1 gSaveBlock1;
+
+struct Time
+{
+ /*0x00*/ s16 days;
+ /*0x02*/ s8 hours;
+ /*0x03*/ s8 minutes;
+ /*0x04*/ s8 seconds;
+};
+
+struct Pokedex
+{
+ /*0x00*/ u8 order;
+ /*0x01*/ u8 unknown1;
+ /*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode
+ /*0x03*/ u8 unknown2;
+ /*0x04*/ u32 unownPersonality; // set when you first see Unown
+ /*0x08*/ u32 spindaPersonality; // set when you first see Spinda
+ /*0x0C*/ u32 unknown3;
+ /*0x10*/ u8 owned[DEX_FLAGS_NO];
+ /*0x44*/ u8 seen[DEX_FLAGS_NO];
+};
+
+struct BattleTowerTrainer
+{
+ /*0x00*/ u8 trainerClass;
+ /*0x01*/ u8 name[8];
+ /*0x09*/ u8 teamFlags;
+ u8 filler0A[2];
+ /*0x0C*/ u16 greeting[6];
+};
+
+struct BattleTowerRecord // record mixing
+{
+ /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u8 name[8];
+ /*0x0C*/ u8 trainerId[4];
+ /*0x10*/ u16 greeting[6];
+ /*0x1C*/ struct BattleTowerPokemon party[3];
+ /*0xA0*/ u32 checksum;
+};
+
+struct BattleTowerEReaderTrainer
+{
+ /*0x00*/ u8 unk0;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u8 name[8];
+ /*0x0C*/ u8 trainerId[4];
+ /*0x10*/ u16 greeting[6];
+ /*0x1C*/ u16 farewellPlayerLost[6];
+ /*0x28*/ u16 farewellPlayerWon[6];
+ /*0x34*/ struct BattleTowerPokemon party[3];
+ /*0xB8*/ u32 checksum;
+};
+
+struct BattleTowerData
+{
+ /*0x0000, 0x00A8*/ struct BattleTowerRecord playerRecord;
+ /*0x00A4, 0x014C*/ struct BattleTowerRecord records[5]; // from record mixing
+ /*0x03D8, 0x0480*/ u16 firstMonSpecies; // species of the first pokemon in the player's battle tower party
+ /*0x03DA, 0x0482*/ u16 defeatedBySpecies; // species of the pokemon that defated the player
+ /*0x03DC, 0x0484*/ u8 defeatedByTrainerName[8];
+ /*0x03E4, 0x048C*/ u8 firstMonNickname[POKEMON_NAME_LENGTH]; // nickname of the first pokemon in the player's battle tower party
+ /*0x03F0, 0x0498*/ struct BattleTowerEReaderTrainer ereaderTrainer;
+ /*0x04AC, 0x0554*/ u8 battleTowerLevelType:1; // 0 = level 50; 1 = level 100
+ /*0x04AC, 0x0554*/ u8 unk_554:1;
+ /*0x04AD, 0x0555*/ u8 battleOutcome;
+ /*0x04AE, 0x0556*/ u8 var_4AE[2];
+ /*0x04B0, 0x0558*/ u16 curChallengeBattleNum[2]; // 1-based index of battle in the current challenge. (challenges consist of 7 battles)
+ /*0x04B4, 0x055C*/ u16 curStreakChallengesNum[2]; // 1-based index of the current challenge in the current streak.
+ /*0x04B8, 0x0560*/ u16 recordWinStreaks[2];
+ /*0x04BC, 0x0564*/ u8 battleTowerTrainerId; // index for gBattleTowerTrainers table
+ /*0x04BD, 0x0565*/ u8 selectedPartyMons[0x3]; // indices of the 3 selected player party mons.
+ /*0x04C0, 0x0568*/ u16 prizeItem;
+ /*0x04C2, 0x056A*/ u8 battledTrainerIds[6];
+ /*0x04C8, 0x0570*/ u16 totalBattleTowerWins;
+ /*0x04CA, 0x0572*/ u16 bestBattleTowerWinStreak;
+ /*0x04CC, 0x0574*/ u16 currentWinStreaks[2];
+ /*0x04D0, 0x0578*/ u8 lastStreakLevelType; // 0 = level 50, 1 = level 100. level type of the last streak. Used by tv to report the level mode.
+ /*0x04D1, 0x0579*/ u8 filler_4D1[0x317];
+};
+
+struct SaveBlock2 /* 0x02024EA4 */
+{
+ /*0x00*/ u8 playerName[8];
+ /*0x08*/ u8 playerGender; // MALE, FEMALE
+ /*0x09*/ u8 specialSaveWarp;
+ /*0x0A*/ u8 playerTrainerId[4];
+ /*0x0E*/ u16 playTimeHours;
+ /*0x10*/ u8 playTimeMinutes;
+ /*0x11*/ u8 playTimeSeconds;
+ /*0x12*/ u8 playTimeVBlanks;
+ /*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]
+ /*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]
+ u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
+ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO]
+ u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
+ u16 optionsBattleSceneOff:1; // whether battle animations are disabled
+ u16 regionMapZoom:1; // whether the map is zoomed in
+ /*0x18*/ struct Pokedex pokedex;
+ /*0x90*/ u8 filler_90[0x8];
+ /*0x98*/ struct Time localTimeOffset;
+ /*0xA0*/ struct Time lastBerryTreeUpdate;
+ /*0xA8*/ struct BattleTowerData battleTower;
+};
+
+struct MapPosition
+{
+ s16 x;
+ s16 y;
+ s8 height;
+};
+
+struct UnkStruct_8054FF8
+{
+ u8 a;
+ u8 b;
+ u8 c;
+ u8 d;
+ struct MapPosition sub;
+ u16 field_C;
+};
+
+// wasnt defined so I had to define it
+struct HallOfFame
+{
+ u8 filler[0x1F00];
+};
+
+extern struct SaveBlock2 gSaveBlock2;
+
+#define RomHeaderGameTitle ((const char *)0x080000A0)
+#define RomHeaderGameCode ((const char *)0x080000AC)
+#define RomHeaderMakerCode ((const char *)0x080000B0)
+#define RomHeaderMagic ((const u8 *) 0x080000B2)
+#define RomHeaderSoftwareVersion ((const u8 *) 0x080000BC)
+
+#define LocalTimeOffset ((struct Time *)0x02028098)
+#define LastBerryTreeUpdate ((struct Time *)0x020280A0)
+
+#endif //GUARD_GLOBAL_H
diff --git a/berry_fix/payload/include/main.h b/berry_fix/payload/include/main.h
new file mode 100644
index 000000000..8f7ef1a5a
--- /dev/null
+++ b/berry_fix/payload/include/main.h
@@ -0,0 +1,45 @@
+#ifndef GUARD_MAIN_H
+#define GUARD_MAIN_H
+
+#include <gba/gba.h>
+
+enum RomHeaderValidationResult
+{
+ SAPPHIRE_UPDATABLE = 2,
+ RUBY_UPDATABLE,
+ SAPPHIRE_NONEED,
+ RUBY_NONEED,
+ INVALID
+};
+
+enum MainCallbackState
+{
+ MAINCB_INIT = 0,
+ MAINCB_CHECK_RTC,
+ MAINCB_CHECK_FLASH,
+ MAINCB_READ_SAVE,
+ MAINCB_CHECK_TIME,
+ MAINCB_FIX_DATE,
+ MAINCB_NO_NEED_TO_FIX,
+ MAINCB_YEAR_MAKES_NO_SENSE,
+ MAINCB_FINISHED,
+ MAINCB_CHECK_PACIFIDLOG_TM,
+ MAINCB_FIX_PACIFIDLOG_TM,
+ MAINCB_ERROR
+};
+
+extern IntrFunc gIntrTable[];
+extern u16 gHeldKeys;
+extern u16 gNewKeys;
+extern u8 gIntrVector[];
+extern u32 gUpdateSuccessful;
+extern u32 gUnknown_3001194;
+extern u32 gUnknown_30011A0[];
+extern u32 gMainCallbackState;
+extern u32 gGameVersion;
+
+extern u8 gSharedMem[0x8000];
+
+extern const IntrFunc gIntrFuncPointers[];
+
+#endif //GUARD_MAIN_H
diff --git a/berry_fix/payload/include/pokemon.h b/berry_fix/payload/include/pokemon.h
new file mode 100644
index 000000000..d3a14ffff
--- /dev/null
+++ b/berry_fix/payload/include/pokemon.h
@@ -0,0 +1,154 @@
+#ifndef GUARD_POKEMON_H
+#define GUARD_POKEMON_H
+
+struct PokemonSubstruct0
+{
+ u16 species;
+ u16 heldItem;
+ u32 experience;
+ u8 ppBonuses;
+ u8 friendship;
+};
+
+struct PokemonSubstruct1
+{
+ u16 moves[4];
+ u8 pp[4];
+};
+
+struct PokemonSubstruct2
+{
+ u8 hpEV;
+ u8 attackEV;
+ u8 defenseEV;
+ u8 speedEV;
+ u8 spAttackEV;
+ u8 spDefenseEV;
+ u8 cool;
+ u8 beauty;
+ u8 cute;
+ u8 smart;
+ u8 tough;
+ u8 sheen;
+};
+
+struct PokemonSubstruct3
+{
+ /*0x00*/ u8 pokerus;
+ /*0x01*/ u8 metLocation;
+
+ /*0x02*/ u16 metLevel:7;
+ /*0x02*/ u16 metGame:4;
+ /*0x03*/ u16 pokeball:4;
+ /*0x03*/ u16 otGender:1;
+
+ /*0x04*/ u32 hpIV:5;
+ /*0x04*/ u32 attackIV:5;
+ /*0x05*/ u32 defenseIV:5;
+ /*0x05*/ u32 speedIV:5;
+ /*0x05*/ u32 spAttackIV:5;
+ /*0x06*/ u32 spDefenseIV:5;
+ /*0x07*/ u32 isEgg:1;
+ /*0x07*/ u32 altAbility:1;
+
+ /*0x08*/ u32 coolRibbon:3;
+ /*0x08*/ u32 beautyRibbon:3;
+ /*0x08*/ u32 cuteRibbon:3;
+ /*0x09*/ u32 smartRibbon:3;
+ /*0x09*/ u32 toughRibbon:3;
+ /*0x09*/ u32 championRibbon:1;
+ /*0x0A*/ u32 winningRibbon:1;
+ /*0x0A*/ u32 victoryRibbon:1;
+ /*0x0A*/ u32 artistRibbon:1;
+ /*0x0A*/ u32 effortRibbon:1;
+ /*0x0A*/ u32 giftRibbon1:1;
+ /*0x0A*/ u32 giftRibbon2:1;
+ /*0x0A*/ u32 giftRibbon3:1;
+ /*0x0A*/ u32 giftRibbon4:1;
+ /*0x0B*/ u32 giftRibbon5:1;
+ /*0x0B*/ u32 giftRibbon6:1;
+ /*0x0B*/ u32 giftRibbon7:1;
+ /*0x0B*/ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald
+};
+
+union PokemonSubstruct
+{
+ struct PokemonSubstruct0 type0;
+ struct PokemonSubstruct1 type1;
+ struct PokemonSubstruct2 type2;
+ struct PokemonSubstruct3 type3;
+ u16 raw[6];
+};
+
+struct BoxPokemon
+{
+ /*0x00*/ u32 personality;
+ /*0x04*/ u32 otId;
+ /*0x08*/ u8 nickname[POKEMON_NAME_LENGTH];
+ /*0x12*/ u8 language;
+ /*0x13*/ u8 isBadEgg:1;
+ u8 hasSpecies:1;
+ u8 isEgg:1;
+ /*0x14*/ u8 otName[OT_NAME_LENGTH];
+ /*0x1B*/ u8 markings;
+ /*0x1C*/ u16 checksum;
+ /*0x1E*/ u16 unknown;
+
+ union
+ {
+ u32 raw[12];
+ union PokemonSubstruct substructs[4];
+ } secure;
+}; /*size = 0x50*/
+
+struct Pokemon
+{
+ /*0x00*/ struct BoxPokemon box;
+ /*0x50*/ u32 status;
+ /*0x54*/ u8 level;
+ /*0x55*/ u8 mail;
+ /*0x56*/ u16 hp;
+ /*0x58*/ u16 maxHP;
+ /*0x5A*/ u16 attack;
+ /*0x5C*/ u16 defense;
+ /*0x5E*/ u16 speed;
+ /*0x60*/ u16 spAttack;
+ /*0x62*/ u16 spDefense;
+};
+
+struct BattleTowerPokemon
+{
+ /*0x00*/u16 species;
+ /*0x02*/u16 heldItem;
+ /*0x04*/u16 moves[4];
+ /*0x0C*/u8 level;
+ /*0x0D*/u8 ppBonuses;
+ /*0x0E*/u8 hpEV;
+ /*0x0F*/u8 attackEV;
+ /*0x10*/u8 defenseEV;
+ /*0x11*/u8 speedEV;
+ /*0x12*/u8 spAttackEV;
+ /*0x13*/u8 spDefenseEV;
+ /*0x14*/u32 otId;
+ /*0x18*/u32 hpIV:5;
+ /*0x18*/u32 attackIV:5;
+ /*0x19*/u32 defenseIV:5;
+ /*0x19*/u32 speedIV:5;
+ /*0x1A*/u32 spAttackIV:5;
+ /*0x1A*/u32 spDefenseIV:5;
+ /*0x1B*/u32 gap:1;
+ /*0x1B*/u32 altAbility:1;
+ /*0x1C*/u32 personality;
+ /*0x20*/u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x2B*/u8 friendship;
+};
+
+struct PokemonStorage
+{
+ /*0x0000*/ u8 currentBox;
+ /*0x0004*/ struct BoxPokemon boxes[14][30];
+ /*0x8344*/ u8 boxNames[14][9];
+ /*0x83c2*/ u8 wallpaper[14];
+};
+
+#endif // GUARD_POKEMON_H
diff --git a/berry_fix/payload/include/rtc.h b/berry_fix/payload/include/rtc.h
new file mode 100644
index 000000000..64a1f2295
--- /dev/null
+++ b/berry_fix/payload/include/rtc.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_RTC_H
+#define GUARD_RTC_H
+
+#include <gba/gba.h>
+#include <siirtc.h>
+#include "global.h"
+
+extern struct Time gTimeSinceBerryUpdate;
+extern struct Time gRtcUTCTime;
+
+bool32 rtc_maincb_is_rtc_working(void);
+bool32 rtc_maincb_is_time_since_last_berry_update_positive(u8 *);
+void rtc_maincb_fix_date(void);
+
+#endif //GUARD_RTC_H
diff --git a/berry_fix/payload/ld_script.sed b/berry_fix/payload/ld_script.sed
new file mode 100644
index 000000000..b91542b6f
--- /dev/null
+++ b/berry_fix/payload/ld_script.sed
@@ -0,0 +1,14 @@
+/<EWRAM>/ {
+ r sym_ewram.ld
+ d
+}
+
+/<BSS>/ {
+ r sym_bss.ld
+ d
+}
+
+/<COMMON>/ {
+ r sym_common.ld
+ d
+}
diff --git a/berry_fix/payload/ld_script.txt b/berry_fix/payload/ld_script.txt
new file mode 100644
index 000000000..a70ecac09
--- /dev/null
+++ b/berry_fix/payload/ld_script.txt
@@ -0,0 +1,122 @@
+ENTRY(Init)
+
+SECTIONS {
+ . = 0x2010000;
+
+ .text :
+ ALIGN(4)
+ {
+ asm/crt0.o(.text);
+ src/main.o(.text);
+ src/rtc.o(.text);
+ src/flash.o(.text);
+ } =0
+
+ lib_text :
+ ALIGN(4)
+ {
+ *libagb_flash.a:agb_flash.o(.text);
+ *libagb_flash.a:agb_flash_1m.o(.text);
+ *libagb_flash.a:agb_flash_mx.o(.text);
+ *libagbsyscall.a:ArcTan2.o(.text);
+ *libagbsyscall.a:BgAffineSet.o(.text);
+ *libagbsyscall.a:CpuFastSet.o(.text);
+ *libagbsyscall.a:CpuSet.o(.text);
+ *libagbsyscall.a:Div.o(.text);
+ *libagbsyscall.a:Mod.o(.text);
+ *libagbsyscall.a:LZ77UnCompVram.o(.text);
+ *libagbsyscall.a:LZ77UnCompWram.o(.text);
+ *libagbsyscall.a:MultiBoot.o(.text);
+ *libagbsyscall.a:ObjAffineSet.o(.text);
+ *libagbsyscall.a:RLUnCompVram.o(.text);
+ *libagbsyscall.a:RLUnCompWram.o(.text);
+ *libagbsyscall.a:RegisterRamReset.o(.text);
+ *libagbsyscall.a:SoftReset.o(.text);
+ *libagbsyscall.a:Sqrt.o(.text);
+ *libagbsyscall.a:VBlankIntrWait.o(.text);
+ *libsiirtc.a:siirtc.o(.text);
+ *libgcc.a:_call_via_rX.o(.text);
+ *libgcc.a:_modsi3.o(.text);
+ *libgcc.a:_umodsi3.o(.text);
+ *libgcc.a:_dvmd_tls.o(.text);
+ } =0
+
+ .rodata :
+ ALIGN(4)
+ {
+ src/main.o(.rodata);
+ src/rtc.o(.rodata);
+ src/flash.o(.rodata);
+ } =0
+
+ lib_rodata :
+ ALIGN(4)
+ {
+ *libagb_flash.a:agb_flash.o(.rodata);
+ *libagb_flash.a:agb_flash_1m.o(.rodata);
+ *libagb_flash.a:agb_flash_mx.o(.rodata);
+ *libagb_flash.a:agb_flash_le.o(.rodata);
+ *libsiirtc.a:siirtc.o(.rodata);
+ }
+
+ . = 0x2020000;
+
+ ewram (NOLOAD) :
+ ALIGN(4)
+ {
+<EWRAM>
+ }
+
+ . = 0x3001000;
+
+ iwram (NOLOAD) :
+ ALIGN(4)
+ {
+<BSS>
+ . = 0x40;
+<COMMON>
+ end = .;
+ }
+
+ . = 0x8000000;
+
+ RS_Rom (NOLOAD) :
+ ALIGN(4)
+ {
+ _start = .;
+ . += 4;
+ RomHeaderNintendoLogo = .;
+ . += 156;
+ RS_RomHeader = .;
+ RomHeaderGameTitle = .;
+ . += 12;
+ RomHeaderGameCode = .;
+ . += 4;
+ RomHeaderMakerCode = .;
+ . += 2;
+ RomHeaderMagic = .;
+ . += 1;
+ RomHeaderMainUnitCode = .;
+ . += 1;
+ RomHeaderDeviceType = .;
+ . += 1;
+ RomHeaderReserved1 = .;
+ . += 7;
+ RomHeaderSoftwareVersion = .;
+ . += 1;
+ RomHeaderChecksum = .;
+ . += 1;
+ RomHeaderReserved2 = .;
+ . += 6;
+ GPIOPortData = .;
+ . += 2;
+ GPIOPortDirection = .;
+ . += 2;
+ GPIOPortReadEnable = .;
+ } =0
+
+ /DISCARD/ :
+ {
+ *(*);
+ }
+}
diff --git a/berry_fix/payload/rom.sha1 b/berry_fix/payload/rom.sha1
new file mode 100644
index 000000000..92eee7e87
--- /dev/null
+++ b/berry_fix/payload/rom.sha1
@@ -0,0 +1 @@
+866991e2b5a8de02d12f53abe0ee9af03a2b6e01 payload.gba
diff --git a/berry_fix/payload/src/flash.c b/berry_fix/payload/src/flash.c
new file mode 100644
index 000000000..3a0369dda
--- /dev/null
+++ b/berry_fix/payload/src/flash.c
@@ -0,0 +1,752 @@
+#include <gba/gba.h>
+#include <agb_flash.h>
+#include "constants/vars.h"
+#include "global.h"
+#include "main.h"
+#include "flash.h"
+#include "rtc.h"
+
+struct SaveBlockChunk
+{
+ u8 * data;
+ u16 size;
+};
+
+u8 WriteSaveBlockChunks(u16 a0, const struct SaveBlockChunk * a1);
+u8 WriteSingleChunk(u16 a0, const struct SaveBlockChunk * a1);
+u8 TryWriteSector(u8, u8 *);
+u8 EraseCurrentChunk(u16 a0, const struct SaveBlockChunk * a1);
+u8 TryReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1);
+u8 ReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1);
+u8 GetSaveValidStatus(const struct SaveBlockChunk * a1);
+u32 DoReadFlashWholeSection(u8 a0, struct SaveSector * a1);
+u16 CalculateChecksum(const void *, u16);
+
+u16 gFirstSaveSector;
+u32 gPrevSaveCounter;
+u16 gLastKnownGoodSector;
+u32 gDamagedSaveSectors;
+u32 gSaveCounter;
+struct SaveSector * gFastSaveSection;
+u16 gCurSaveChunk;
+bool32 gFlashIdentIsValid;
+
+EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {};
+EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {};
+EWRAM_DATA struct PokemonStorage gPokemonStorage = {};
+
+// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer
+#define SECTOR_DATA_SIZE 3968
+#define SECTOR_FOOTER_SIZE 128
+
+#define SAVEBLOCK_CHUNK(structure, chunkNum) \
+{ \
+ (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \
+ min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \
+} \
+
+static const struct SaveBlockChunk sSaveBlockChunks[] =
+{
+ SAVEBLOCK_CHUNK(gSaveBlock2, 0),
+
+ SAVEBLOCK_CHUNK(gSaveBlock1, 0),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 1),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 2),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 3),
+
+ SAVEBLOCK_CHUNK(gPokemonStorage, 0),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 1),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 2),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 3),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 4),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 5),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 6),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 7),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 8),
+};
+
+const u16 gInfoMessagesPal[] = INCBIN_U16("graphics/msg_box.gbapal");
+const u8 gInfoMessagesTilemap[] = INCBIN_U8("graphics/msg_box.tilemap.lz");
+const u8 gInfoMessagesGfx[] = INCBIN_U8("graphics/msg_box.4bpp.lz");
+
+bool32 flash_maincb_ident_is_valid(void)
+{
+ gFlashIdentIsValid = TRUE;
+ if (!IdentifyFlash())
+ {
+ SetFlashTimerIntr(0, &((IntrFunc *)gIntrFuncPointers)[9]);
+ return TRUE;
+ }
+ gFlashIdentIsValid = FALSE;
+ return FALSE;
+}
+
+void Call_ReadFlash(u16 sectorNum, ptrdiff_t offset, void * dest, size_t size)
+{
+ ReadFlash(sectorNum, offset, dest, size);
+}
+
+u8 Call_WriteSaveBlockChunks(u16 a0, const struct SaveBlockChunk * a1)
+{
+ return WriteSaveBlockChunks(a0, a1);
+}
+
+u8 Call_TryReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1)
+{
+ return TryReadAllSaveSectorsCurrentSlot(a0, a1);
+}
+
+u32 * GetDamagedSaveSectorsPtr(void)
+{
+ return &gDamagedSaveSectors;
+}
+
+s32 flash_write_save_block_chunks(u8 a0)
+{
+ u8 i;
+
+ switch (a0)
+ {
+ case 0:
+ default:
+ Call_WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
+ break;
+ case 1:
+ for (i = 0; i < 5; i++)
+ {
+ Call_WriteSaveBlockChunks(i, sSaveBlockChunks);
+ }
+ break;
+ case 2:
+ Call_WriteSaveBlockChunks(0, sSaveBlockChunks);
+ break;
+ }
+
+ return 0;
+}
+
+u8 flash_write_save_block_chunks_check_damage(u8 a0)
+{
+ flash_write_save_block_chunks(a0);
+ if (*GetDamagedSaveSectorsPtr() == 0)
+ return 1;
+ return 0xFF;
+}
+
+u8 flash_maincb_read_save(u32 unused)
+{
+ return Call_TryReadAllSaveSectorsCurrentSlot(0xFFFF, sSaveBlockChunks);
+}
+
+void msg_load_gfx(void)
+{
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BLDCNT = 0;
+ LZ77UnCompVram(gInfoMessagesGfx, (void *)BG_VRAM);
+ LZ77UnCompVram(gInfoMessagesTilemap, (void *)BG_SCREEN_ADDR(28));
+ CpuCopy16(gInfoMessagesPal, (void *)BG_PLTT, 0x200);
+ REG_BG0CNT = BGCNT_SCREENBASE(28) | BGCNT_TXT512x512;
+ REG_DISPCNT = DISPCNT_BG0_ON;
+}
+
+void msg_display(enum MsgBoxUpdateMessage a0)
+{
+ switch (a0)
+ {
+ case MSGBOX_WILL_NOW_UPDATE:
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ break;
+ case MSGBOX_HAS_BEEN_UPDATED:
+ REG_BG0HOFS = 0x100;
+ REG_BG0VOFS = 0;
+ break;
+ case MSGBOX_UNABLE_TO_UPDATE:
+ REG_BG0HOFS = 0x100;
+ REG_BG0VOFS = 0xB0;
+ break;
+ case MSGBOX_NO_NEED_TO_UPDATE:
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0xB0;
+ break;
+ case MSGBOX_UPDATING:
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0x160;
+ break;
+ }
+}
+
+void Save_EraseAllData(void)
+{
+ u16 i;
+ for (i = 0; i < 32; i++)
+ EraseFlashSector(i);
+}
+
+void Save_ResetSaveCounters(void)
+{
+ gSaveCounter = 0;
+ gFirstSaveSector = 0;
+ gDamagedSaveSectors = 0;
+}
+
+bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum)
+{
+ bool32 retVal = FALSE;
+
+ switch (op)
+ {
+ case SECTOR_DAMAGED:
+ gDamagedSaveSectors |= (1 << sectorNum);
+ break;
+ case SECTOR_OK:
+ gDamagedSaveSectors &= ~(1 << sectorNum);
+ break;
+ case SECTOR_CHECK: // unused
+ if (gDamagedSaveSectors & (1 << sectorNum))
+ retVal = TRUE;
+ break;
+ }
+
+ return retVal;
+}
+
+u8 WriteSaveBlockChunks(u16 chunkId, const struct SaveBlockChunk *chunks)
+{
+ u32 retVal;
+ u16 i;
+
+ gFastSaveSection = eSaveSection;
+
+ if (chunkId != 0xFFFF) // write single chunk
+ {
+ retVal = WriteSingleChunk(chunkId, chunks);
+ }
+ else // write all chunks
+ {
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gFirstSaveSector++;
+ gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT;
+ gSaveCounter++;
+ retVal = SAVE_STATUS_OK;
+
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++)
+ WriteSingleChunk(i, chunks);
+
+ // Check for any bad sectors
+ if (gDamagedSaveSectors != 0) // skip the damaged sector.
+ {
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ }
+ }
+
+ return retVal;
+}
+
+u8 WriteSingleChunk(u16 chunkId, const struct SaveBlockChunk * chunks)
+{
+ u16 i;
+ u16 sectorNum;
+ u8 *chunkData;
+ u16 chunkSize;
+
+ // select sector number
+ sectorNum = chunkId + gFirstSaveSector;
+ sectorNum %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sectorNum += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
+
+ chunkData = chunks[chunkId].data;
+ chunkSize = chunks[chunkId].size;
+
+ // clear save section.
+ for (i = 0; i < sizeof(struct SaveSector); i++)
+ ((u8 *)gFastSaveSection)[i] = 0;
+
+ gFastSaveSection->id = chunkId;
+ gFastSaveSection->signature = FILE_SIGNATURE;
+ gFastSaveSection->counter = gSaveCounter;
+ for (i = 0; i < chunkSize; i++)
+ gFastSaveSection->data[i] = chunkData[i];
+ gFastSaveSection->checksum = CalculateChecksum(chunkData, chunkSize);
+
+ return TryWriteSector(sectorNum, gFastSaveSection->data);
+}
+
+u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size)
+{
+ u16 i;
+ struct SaveSector *section = eSaveSection;
+
+ for (i = 0; i < sizeof(struct SaveSector); i++)
+ ((char *)section)[i] = 0;
+
+ section->signature = FILE_SIGNATURE;
+ for (i = 0; i < size; i++)
+ section->data[i] = data[i];
+ 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(sectorNum, section->data);
+}
+
+u8 TryWriteSector(u8 sectorNum, u8 *data)
+{
+ if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged?
+ {
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits.
+ return SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ SetSectorDamagedStatus(SECTOR_OK, sectorNum); // unset damaged sector bits. it's safe now.
+ return SAVE_STATUS_OK;
+ }
+}
+
+u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused
+{
+ gFastSaveSection = eSaveSection;
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gFirstSaveSector++;
+ gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT;
+ gSaveCounter++;
+ gCurSaveChunk = 0;
+ gDamagedSaveSectors = 0;
+ return 0;
+}
+
+u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk)
+{
+ gFastSaveSection = eSaveSection;
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gCurSaveChunk = 0;
+ gDamagedSaveSectors = 0;
+ return 0;
+}
+
+u8 WriteSingleChunkAndIncrement(u16 a1, const struct SaveBlockChunk * chunk)
+{
+ u8 retVal;
+
+ if (gCurSaveChunk < a1 - 1)
+ {
+ retVal = SAVE_STATUS_OK;
+ WriteSingleChunk(gCurSaveChunk, chunk);
+ gCurSaveChunk++;
+ if (gDamagedSaveSectors)
+ {
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ }
+ }
+ else
+ {
+ retVal = SAVE_STATUS_ERROR;
+ }
+
+ return retVal;
+}
+
+u8 ErasePreviousChunk(u16 a1, const struct SaveBlockChunk *chunk)
+{
+ u8 retVal = SAVE_STATUS_OK;
+
+ EraseCurrentChunk(a1 - 1, chunk);
+
+ if (gDamagedSaveSectors)
+ {
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ }
+ return retVal;
+}
+
+u8 EraseCurrentChunk(u16 chunkId, const struct SaveBlockChunk *chunks)
+{
+ u16 i;
+ u16 sector;
+ u8 *data;
+ u16 size;
+ u8 status;
+
+ // select sector number
+ sector = chunkId + gFirstSaveSector;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
+
+ data = chunks[chunkId].data;
+ size = chunks[chunkId].size;
+
+ // clear temp save section.
+ for (i = 0; i < sizeof(struct SaveSector); i++)
+ ((char *)gFastSaveSection)[i] = 0;
+
+ gFastSaveSection->id = chunkId;
+ gFastSaveSection->signature = FILE_SIGNATURE;
+ gFastSaveSection->counter = gSaveCounter;
+
+ // set temp section's data.
+ for (i = 0; i < size; i++)
+ gFastSaveSection->data[i] = data[i];
+
+ // calculate checksum.
+ gFastSaveSection->checksum = CalculateChecksum(data, size);
+
+ EraseFlashSector(sector);
+
+ status = SAVE_STATUS_OK;
+
+ for (i = 0; i < sizeof(struct UnkSaveSection); i++)
+ {
+ if (ProgramFlashByte(sector, i, gFastSaveSection->data[i]))
+ {
+ status = SAVE_STATUS_ERROR;
+ break;
+ }
+ }
+
+ if (status == SAVE_STATUS_ERROR)
+ {
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ return SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ status = SAVE_STATUS_OK;
+
+ for (i = 0; i < 7; i++)
+ {
+ if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i]))
+ {
+ status = SAVE_STATUS_ERROR;
+ break;
+ }
+ }
+
+ if (status == SAVE_STATUS_ERROR)
+ {
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ return SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
+ }
+ }
+}
+
+u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *chunk)
+{
+ u16 sector;
+
+ // select sector number
+ sector = a1 + gFirstSaveSector - 1;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
+
+ if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
+ {
+ // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ return SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
+ }
+}
+
+u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *chunk)
+{
+ u16 sector;
+
+ sector = a1 + gFirstSaveSector - 1;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
+
+ if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
+ {
+ // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ return SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
+ }
+}
+
+u8 TryReadAllSaveSectorsCurrentSlot(u16 a1, const struct SaveBlockChunk *chunk)
+{
+ u8 retVal;
+ gFastSaveSection = eSaveSection;
+ if (a1 != 0xFFFF)
+ {
+ retVal = SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ retVal = GetSaveValidStatus(chunk);
+ ReadAllSaveSectorsCurrentSlot(0xFFFF, chunk);
+ }
+
+ return retVal;
+}
+
+u8 ReadAllSaveSectorsCurrentSlot(u16 a1, const struct SaveBlockChunk *chunks)
+{
+ u16 i;
+ u16 checksum;
+ u16 sector = NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
+ u16 id;
+
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++)
+ {
+ DoReadFlashWholeSection(i + sector, gFastSaveSection);
+ id = gFastSaveSection->id;
+ if (id == 0)
+ gFirstSaveSector = i;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size);
+ if (gFastSaveSection->signature == FILE_SIGNATURE
+ && gFastSaveSection->checksum == checksum)
+ {
+ u16 j;
+ for (j = 0; j < chunks[id].size; j++)
+ chunks[id].data[j] = gFastSaveSection->data[j];
+ }
+ }
+
+ return 1;
+}
+
+u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks)
+{
+ u16 sector;
+ bool8 signatureValid;
+ u16 checksum;
+ u32 slot1saveCounter = 0;
+ u32 slot2saveCounter = 0;
+ u8 slot1Status;
+ u8 slot2Status;
+ u32 validSectors;
+ const u32 ALL_SECTORS = (1 << NUM_SECTORS_PER_SAVE_SLOT) - 1; // bitmask of all saveblock sectors
+
+ // check save slot 1.
+ validSectors = 0;
+ signatureValid = FALSE;
+ for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++)
+ {
+ DoReadFlashWholeSection(sector, gFastSaveSection);
+ if (gFastSaveSection->signature == FILE_SIGNATURE)
+ {
+ signatureValid = TRUE;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size);
+ if (gFastSaveSection->checksum == checksum)
+ {
+ slot1saveCounter = gFastSaveSection->counter;
+ validSectors |= 1 << gFastSaveSection->id;
+ }
+ }
+ }
+
+ if (signatureValid)
+ {
+ if (validSectors == ALL_SECTORS)
+ slot1Status = SAVE_STATUS_OK;
+ else
+ slot1Status = SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ slot1Status = SAVE_STATUS_EMPTY;
+ }
+
+ // check save slot 2.
+ validSectors = 0;
+ signatureValid = FALSE;
+ for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++)
+ {
+ DoReadFlashWholeSection(NUM_SECTORS_PER_SAVE_SLOT + sector, gFastSaveSection);
+ if (gFastSaveSection->signature == FILE_SIGNATURE)
+ {
+ signatureValid = TRUE;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size);
+ if (gFastSaveSection->checksum == checksum)
+ {
+ slot2saveCounter = gFastSaveSection->counter;
+ validSectors |= 1 << gFastSaveSection->id;
+ }
+ }
+ }
+
+ if (signatureValid)
+ {
+ if (validSectors == ALL_SECTORS)
+ slot2Status = SAVE_STATUS_OK;
+ else
+ slot2Status = SAVE_STATUS_ERROR;
+ }
+ else
+ {
+ slot2Status = SAVE_STATUS_EMPTY;
+ }
+
+ if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK)
+ {
+ // Choose counter of the most recent save file
+ if ((slot1saveCounter == -1 && slot2saveCounter == 0) || (slot1saveCounter == 0 && slot2saveCounter == -1))
+ {
+ if ((unsigned)(slot1saveCounter + 1) < (unsigned)(slot2saveCounter + 1))
+ gSaveCounter = slot2saveCounter;
+ else
+ gSaveCounter = slot1saveCounter;
+ }
+ else
+ {
+ if (slot1saveCounter < slot2saveCounter)
+ gSaveCounter = slot2saveCounter;
+ else
+ gSaveCounter = slot1saveCounter;
+ }
+ return SAVE_STATUS_OK;
+ }
+
+ if (slot1Status == SAVE_STATUS_OK)
+ {
+ gSaveCounter = slot1saveCounter;
+ if (slot2Status == SAVE_STATUS_ERROR)
+ return SAVE_STATUS_ERROR;
+ else
+ return SAVE_STATUS_OK;
+ }
+
+ if (slot2Status == SAVE_STATUS_OK)
+ {
+ gSaveCounter = slot2saveCounter;
+ if (slot1Status == SAVE_STATUS_ERROR)
+ return SAVE_STATUS_ERROR;
+ else
+ return SAVE_STATUS_OK;
+ }
+
+ if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY)
+ {
+ gSaveCounter = 0;
+ gFirstSaveSector = 0;
+ return SAVE_STATUS_EMPTY;
+ }
+
+ gSaveCounter = 0;
+ gFirstSaveSector = 0;
+ return 2;
+}
+
+u8 ReadSomeUnknownSectorAndVerify(u8 sector, u8 *data, u16 size)
+{
+ u16 i;
+ struct SaveSector *section = eSaveSection;
+
+ DoReadFlashWholeSection(sector, section);
+ if (section->signature == FILE_SIGNATURE)
+ {
+ u16 checksum = CalculateChecksum(section->data, size);
+ if (section->id == checksum)
+ {
+ for (i = 0; i < size; i++)
+ data[i] = section->data[i];
+ return SAVE_STATUS_OK;
+ }
+ else
+ {
+ return 2;
+ }
+ }
+ else
+ {
+ return SAVE_STATUS_EMPTY;
+ }
+}
+
+u32 DoReadFlashWholeSection(u8 sector, struct SaveSector *section)
+{
+ ReadFlash(sector, 0, section->data, sizeof(struct SaveSector));
+ return 1;
+}
+
+u16 CalculateChecksum(const void *data, u16 size)
+{
+ u16 i;
+ u32 checksum = 0;
+
+ for (i = 0; i < (size / 4); i++)
+ {
+ checksum += *((u32 *)data);
+ data += sizeof(u32);
+ }
+
+ return ((checksum >> 16) + checksum);
+}
+
+void nullsub_0201182C()
+{
+}
+
+void nullsub_02011830()
+{
+}
+
+void nullsub_02011834()
+{
+}
+
+u16 * get_var_addr(u16 a0)
+{
+ if (a0 < VARS_START)
+ return NULL;
+ if (a0 < VAR_SPECIAL_0)
+ return &gSaveBlock1.vars[a0 - VARS_START];
+ return NULL;
+}
+
+bool32 flash_maincb_check_need_reset_pacifidlog_tm(void)
+{
+ u8 sp0;
+ u16 * data = get_var_addr(VAR_PACIFIDLOG_TM_RECEIVED_DAY);
+ rtc_maincb_is_time_since_last_berry_update_positive(&sp0);
+ if (*data <= gRtcUTCTime.days)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool32 flash_maincb_reset_pacifidlog_tm(void)
+{
+ u8 sp0;
+ if (flash_maincb_check_need_reset_pacifidlog_tm() == TRUE)
+ return TRUE;
+ rtc_maincb_is_time_since_last_berry_update_positive(&sp0);
+ if (gRtcUTCTime.days < 0)
+ return FALSE;
+ *get_var_addr(VAR_PACIFIDLOG_TM_RECEIVED_DAY) = 1;
+ if (flash_write_save_block_chunks_check_damage(0) != TRUE)
+ return FALSE;
+ return TRUE;
+}
diff --git a/berry_fix/payload/src/main.c b/berry_fix/payload/src/main.c
new file mode 100644
index 000000000..249150665
--- /dev/null
+++ b/berry_fix/payload/src/main.c
@@ -0,0 +1,289 @@
+#include <gba/gba.h>
+#include "global.h"
+#include "main.h"
+#include "rtc.h"
+#include "flash.h"
+
+static s32 gInitialWaitTimer;
+IntrFunc gIntrTable[16];
+u16 gHeldKeys;
+u16 gNewKeys;
+u8 gIntrVector[0x100];
+u32 gUpdateSuccessful;
+u32 gUnknown_3001194;
+u32 gUnknown_30011A0[0x19];
+u32 gMainCallbackState;
+u32 gGameVersion;
+
+EWRAM_DATA u8 gSharedMem[0x8000] = {};
+
+void IntrMain(void);
+void ReadKeys(void);
+void dummy_intr_0(void);
+void dummy_intr_1(void);
+void main_callback(u32 *, void *, void *);
+
+
+const char gBerryFixGameCode[] = "AGBJ";
+const IntrFunc gIntrFuncPointers[] = {
+ dummy_intr_0,
+ dummy_intr_1,
+ dummy_intr_0,
+ dummy_intr_0,
+ dummy_intr_0,
+ dummy_intr_0,
+ dummy_intr_0,
+ dummy_intr_0,
+ dummy_intr_0,
+ dummy_intr_0,
+ NULL,
+ NULL,
+ NULL
+};
+const char gVersionData[][2] = {
+ {'J', 1},
+ {'E', 2},
+ {'D', 1},
+ {'F', 1},
+ {'I', 1},
+ {'S', 1}
+};
+const char gRubyTitleAndCode[] = "POKEMON RUBYAXV";
+const char gSapphireTitleAndCode[] = "POKEMON SAPPAXP";
+const u16 sDebugPals[20] = {
+ RGB(00, 00, 00),
+ RGB(31, 00, 00),
+ RGB(00, 31, 00),
+ RGB(00, 00, 31)
+};
+const u16 sDebugDigitsGfx[] = INCBIN_U16("graphics/debug_digits.4bpp");
+
+void AgbMain(void)
+{
+ RegisterRamReset(0x1E);
+ DmaCopy32(3, gIntrFuncPointers, gIntrTable, sizeof gIntrFuncPointers);
+ DmaCopy32(3, IntrMain, gIntrVector, sizeof(gIntrVector));
+ INTR_VECTOR = gIntrVector;
+ REG_IE = INTR_FLAG_VBLANK;
+ if (*RomHeaderMagic == 0x96 && *(u32 *)RomHeaderGameCode == *(u32 *)gBerryFixGameCode)
+ REG_IE |= INTR_FLAG_GAMEPAK;
+ REG_DISPSTAT = DISPSTAT_VBLANK_INTR;
+ REG_IME = INTR_FLAG_VBLANK;
+ msg_load_gfx();
+ gMainCallbackState = MAINCB_INIT;
+ gUnknown_3001194 = 0;
+ for (;;)
+ {
+ VBlankIntrWait();
+ ReadKeys();
+ main_callback(&gMainCallbackState, gUnknown_30011A0, gSharedMem);
+ }
+}
+
+void dummy_intr_1(void)
+{}
+
+void dummy_intr_0(void)
+{}
+
+void ReadKeys(void)
+{
+ u16 keyInput = REG_KEYINPUT ^ KEYS_MASK;
+ gNewKeys = keyInput & ~gHeldKeys;
+ gHeldKeys = keyInput;
+}
+
+void fill_palette(const u8 * src, u16 * dest, u8 value)
+{
+ s32 i;
+ for (i = 0; src[i] != 0; i++)
+ dest[i] = src[i] | value << 12;
+}
+
+bool32 berry_fix_memcmp(const char * src1, const char * src2, size_t size)
+{
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (src1[i] != src2[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+s32 validate_rom_header_internal(void)
+{
+ char languageCode = *(RomHeaderGameCode + 3);
+ s32 softwareVersion = *RomHeaderSoftwareVersion;
+ s32 shouldUpdate = -1;
+ s32 i;
+ for (i = 0; i < ARRAY_COUNT(gVersionData); i++)
+ {
+ if (languageCode == gVersionData[i][0])
+ {
+ if (softwareVersion >= gVersionData[i][1])
+ {
+ shouldUpdate = 0;
+ }
+ else
+ {
+ shouldUpdate = 1;
+ }
+ break;
+ }
+ }
+ if (shouldUpdate != -1)
+ {
+ if (berry_fix_memcmp(RomHeaderGameTitle, gRubyTitleAndCode, 15) == TRUE)
+ {
+ if (shouldUpdate == 0)
+ return RUBY_NONEED;
+ else
+ {
+ gGameVersion = VERSION_RUBY;
+ return RUBY_UPDATABLE;
+ }
+ }
+ else if (berry_fix_memcmp(RomHeaderGameTitle, gSapphireTitleAndCode, 15) == TRUE)
+ {
+ if (shouldUpdate == 0)
+ return SAPPHIRE_NONEED;
+ else
+ {
+ gGameVersion = VERSION_SAPPHIRE;
+ return SAPPHIRE_UPDATABLE;
+ }
+ }
+ }
+ return INVALID;
+}
+
+s32 validate_rom_header(void)
+{
+ if (*RomHeaderMakerCode == '0' && *(RomHeaderMakerCode + 1) == '1' && *RomHeaderMagic == 0x96)
+ return validate_rom_header_internal();
+ else
+ return INVALID;
+}
+
+void main_callback(u32 * state, void * unused1, void * unused2)
+{
+ u8 year;
+ switch (*state)
+ {
+ case MAINCB_INIT:
+ msg_display(MSGBOX_WILL_NOW_UPDATE);
+ if (++gInitialWaitTimer >= 180)
+ {
+ gInitialWaitTimer = 0;
+ gUpdateSuccessful = 0;
+ switch (validate_rom_header())
+ {
+ case SAPPHIRE_UPDATABLE:
+ case RUBY_UPDATABLE: // Should Update Ruby
+ ++(*state); // MAINCB_CHECK_RTC
+ break;
+ case INVALID: // Invalid header
+ *state = MAINCB_ERROR;
+ break;
+ case SAPPHIRE_NONEED: // Should not update Sapphire
+ case RUBY_NONEED: // Should not update Ruby
+ *state = MAINCB_NO_NEED_TO_FIX;
+ break;
+ }
+ }
+ break;
+ case MAINCB_CHECK_RTC:
+ if (!rtc_maincb_is_rtc_working())
+ *state = MAINCB_ERROR;
+ else
+ ++(*state); // MAINCB_CHECK_FLASH
+ break;
+ case MAINCB_CHECK_FLASH:
+ if (flash_maincb_ident_is_valid() == TRUE)
+ ++(*state); // MAINCB_READ_SAVE
+ else
+ *state = MAINCB_ERROR;
+ break;
+ case MAINCB_READ_SAVE:
+ if (flash_maincb_read_save(0) == SAVE_STATUS_OK)
+ ++(*state); // MAINCB_CHECK_TIME
+ else
+ *state = MAINCB_ERROR;
+ break;
+ case MAINCB_CHECK_TIME:
+ if (rtc_maincb_is_time_since_last_berry_update_positive(&year) == TRUE)
+ {
+ if (year == 0)
+ ++(*state); // MAINCB_FIX_DATE
+ else
+ *state = MAINCB_CHECK_PACIFIDLOG_TM;
+ }
+ else
+ {
+ if (year != 1)
+ *state = MAINCB_YEAR_MAKES_NO_SENSE;
+ else
+ ++(*state); // MAINCB_FIX_DATE
+ }
+ break;
+ case MAINCB_FIX_DATE:
+ rtc_maincb_fix_date();
+ gUpdateSuccessful |= 1;
+ *state = MAINCB_CHECK_PACIFIDLOG_TM;
+ break;
+ case MAINCB_CHECK_PACIFIDLOG_TM:
+ if (flash_maincb_check_need_reset_pacifidlog_tm() == TRUE)
+ *state = MAINCB_FINISHED;
+ else
+ *state = MAINCB_FIX_PACIFIDLOG_TM;
+ break;
+ case MAINCB_FIX_PACIFIDLOG_TM:
+ msg_display(MSGBOX_UPDATING);
+ if (flash_maincb_reset_pacifidlog_tm() == TRUE)
+ {
+ gUpdateSuccessful |= 1;
+ *state = MAINCB_FINISHED;
+ }
+ else
+ *state = MAINCB_ERROR;
+ break;
+ case MAINCB_FINISHED:
+ if (gUpdateSuccessful == 0)
+ *state = MAINCB_NO_NEED_TO_FIX;
+ else
+ msg_display(MSGBOX_HAS_BEEN_UPDATED);
+ break;
+ case MAINCB_NO_NEED_TO_FIX:
+ msg_display(MSGBOX_NO_NEED_TO_UPDATE);
+ break;
+ case MAINCB_YEAR_MAKES_NO_SENSE:
+ msg_display(MSGBOX_UNABLE_TO_UPDATE);
+ break;
+ case MAINCB_ERROR:
+ msg_display(MSGBOX_UNABLE_TO_UPDATE);
+ break;
+ }
+}
+
+void DBG_LoadDigitsPal(void)
+{
+ const u16 * src;
+ s32 i;
+ register vu16 * dest asm("r3") = (vu16 *)BG_PLTT + 1;
+ DmaFill16(3, RGB(31, 31, 31), (vu16 *)BG_PLTT, BG_PLTT_SIZE);
+ src = sDebugPals;
+ for (i = 0; i < 4; i++)
+ {
+ *dest = *src;
+ dest += 16;
+ src++;
+ }
+}
+
+void DBG_LoadDigits(void)
+{
+ DmaFill16(3, 0x1111, (void *)VRAM + 0x8420, 0x1800);
+ DmaCopy32(3, sDebugDigitsGfx, (void *)VRAM + 0x8600, 0x200);
+ DBG_LoadDigitsPal();
+}
diff --git a/berry_fix/payload/src/rtc.c b/berry_fix/payload/src/rtc.c
new file mode 100644
index 000000000..97692e205
--- /dev/null
+++ b/berry_fix/payload/src/rtc.c
@@ -0,0 +1,346 @@
+#include <gba/gba.h>
+#include <siirtc.h>
+#include "global.h"
+#include "main.h"
+
+struct Time gTimeSinceBerryUpdate;
+struct Time gRtcUTCTime;
+
+static u16 sRtcProbeStatus;
+static struct SiiRtcInfo sRtcInfoBuffer;
+static u8 sRtcProbeCode;
+static u16 sImeBak;
+static struct SiiRtcInfo sRtcInfoWork;
+
+const struct SiiRtcInfo sDefaultRTC = {
+ .year = 0, // 2000
+ .month = 1, // January
+ .day = 1, // 01
+ .dayOfWeek = 0,
+ .hour = 0,
+ .minute = 0,
+ .second = 0,
+ .status = 0,
+ .alarmHour = 0,
+ .alarmMinute = 0
+};
+const s32 sDaysPerMonth[] = {
+ 31,
+ 28,
+ 31,
+ 30,
+ 31,
+ 30,
+ 31,
+ 31,
+ 30,
+ 31,
+ 30,
+ 31
+};
+
+void rtc_get_status_and_datetime(struct SiiRtcInfo *);
+u16 rtc_validate_datetime(struct SiiRtcInfo *);
+
+
+void rtc_intr_disable(void)
+{
+ sImeBak = REG_IME;
+ REG_IME = 0;
+}
+
+void rtc_intr_enable(void)
+{
+ REG_IME = sImeBak;
+}
+
+s32 bcd_to_hex(u8 a0)
+{
+ if (a0 >= 0xa0 || (a0 & 0xF) >= 10)
+ return 0xFF;
+ return ((a0 >> 4) & 0xF) * 10 + (a0 & 0xF);
+}
+
+bool8 is_leap_year(u8 year)
+{
+ if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
+ return TRUE;
+ return FALSE;
+}
+
+u16 rtc_count_days_parameterized(u8 year, u8 month, u8 day)
+{
+ u16 numDays = 0;
+ s32 i;
+ for (i = year - 1; i > 0; i--)
+ {
+ numDays += 365;
+ if (is_leap_year(i) == TRUE)
+ numDays++;
+ }
+ for (i = 0; i < month - 1; i++)
+ numDays += sDaysPerMonth[i];
+ if (month > MONTH_FEB && is_leap_year(year) == TRUE)
+ numDays++;
+ numDays += day;
+ return numDays;
+}
+
+u16 rtc_count_days_from_info(struct SiiRtcInfo *info)
+{
+ return rtc_count_days_parameterized(bcd_to_hex(info->year), bcd_to_hex(info->month), bcd_to_hex(info->day));
+}
+
+static void rtc_probe_status(void)
+{
+ sRtcProbeStatus = 0;
+ rtc_intr_disable();
+ SiiRtcUnprotect();
+ sRtcProbeCode = SiiRtcProbe();
+ rtc_intr_enable();
+ if ((sRtcProbeCode & 0xF) != 1)
+ sRtcProbeStatus = 1;
+ else
+ {
+ if (sRtcProbeCode & 0xF0)
+ sRtcProbeStatus = 2;
+ else
+ sRtcProbeStatus = 0;
+ rtc_get_status_and_datetime(&sRtcInfoBuffer);
+ sRtcProbeStatus = rtc_validate_datetime(&sRtcInfoBuffer);
+ }
+}
+
+u16 rtc_get_probe_status(void)
+{
+ return sRtcProbeStatus;
+}
+
+void sub_020106EC(struct SiiRtcInfo * info)
+{
+ if (sRtcProbeStatus & 0xFF0)
+ *info = sDefaultRTC;
+ else
+ rtc_get_status_and_datetime(info);
+}
+
+void rtc_get_datetime(struct SiiRtcInfo * info)
+{
+ rtc_intr_disable();
+ SiiRtcGetDateTime(info);
+ rtc_intr_enable();
+}
+
+void rtc_get_status(struct SiiRtcInfo * info)
+{
+ rtc_intr_disable();
+ SiiRtcGetStatus(info);
+ rtc_intr_enable();
+}
+
+void rtc_get_status_and_datetime(struct SiiRtcInfo * info)
+{
+ rtc_get_status(info);
+ rtc_get_datetime(info);
+}
+
+u16 rtc_validate_datetime(struct SiiRtcInfo * info)
+{
+ s32 year, month, day;
+ u16 r4 = (info->status & SIIRTCINFO_POWER) ? 0x20 : 0;
+ if (!(info->status & SIIRTCINFO_24HOUR))
+ r4 |= 0x10;
+ year = bcd_to_hex(info->year);
+ if (year == 0xFF)
+ r4 |= 0x40;
+ month = bcd_to_hex(info->month);
+ if (month == 0xFF || month == 0 || month > 12)
+ r4 |= 0x80;
+ day = bcd_to_hex(info->day);
+ if (day == 0xFF)
+ r4 |= 0x100;
+ if (month == MONTH_FEB)
+ {
+ if (day > is_leap_year(year) + sDaysPerMonth[1])
+ r4 |= 0x100;
+ }
+ else
+ {
+ if (day > sDaysPerMonth[month - 1])
+ r4 |= 0x100;
+ }
+ day = bcd_to_hex(info->hour);
+ if (day > 24)
+ r4 |= 0x200;
+ day = bcd_to_hex(info->minute);
+ if (day > 60)
+ r4 |= 0x400;
+ day = bcd_to_hex(info->second);
+ if (day > 60)
+ r4 |= 0x800;
+ return r4;
+}
+
+void rtc_reset(void)
+{
+ rtc_intr_disable();
+ SiiRtcReset();
+ rtc_intr_enable();
+}
+
+void rtc_sub_time_from_datetime(struct SiiRtcInfo * datetime, struct Time * dest, struct Time * timediff)
+{
+ u16 r4 = rtc_count_days_from_info(datetime);
+ dest->seconds = bcd_to_hex(datetime->second) - timediff->seconds;
+ dest->minutes = bcd_to_hex(datetime->minute) - timediff->minutes;
+ dest->hours = bcd_to_hex(datetime->hour) - timediff->hours;
+ dest->days = r4 - timediff->days;
+ if (dest->seconds < 0)
+ {
+ dest->seconds += 60;
+ dest->minutes--;
+ }
+ if (dest->minutes < 0)
+ {
+ dest->minutes += 60;
+ dest->hours--;
+ }
+ if (dest->hours < 0)
+ {
+ dest->hours += 24;
+ dest->days--;
+ }
+}
+
+void rtc_sub_time_from_time(struct Time * dest, struct Time * diff, struct Time * src)
+{
+ dest->seconds = src->seconds - diff->seconds;
+ dest->minutes = src->minutes - diff->minutes;
+ dest->hours = src->hours - diff->hours;
+ dest->days = src->days - diff->days;
+ if (dest->seconds < 0)
+ {
+ dest->seconds += 60;
+ dest->minutes--;
+ }
+ if (dest->minutes < 0)
+ {
+ dest->minutes += 60;
+ dest->hours--;
+ }
+ if (dest->hours < 0)
+ {
+ dest->hours += 24;
+ dest->days--;
+ }
+}
+
+bool32 rtc_maincb_is_rtc_working(void)
+{
+ rtc_probe_status();
+ if (rtc_get_probe_status() & 0xFF0)
+ return FALSE;
+ return TRUE;
+}
+
+void rtc_set_datetime(struct SiiRtcInfo * info)
+{
+ vu16 imeBak = REG_IME;
+ REG_IME = 0;
+ SiiRtcSetDateTime(info);
+ REG_IME = imeBak;
+}
+
+bool32 rtc_maincb_is_time_since_last_berry_update_positive(u8 * a0)
+{
+ rtc_get_status_and_datetime(&sRtcInfoWork);
+ *a0 = bcd_to_hex(sRtcInfoWork.year);
+ rtc_sub_time_from_datetime(&sRtcInfoWork, &gRtcUTCTime, LocalTimeOffset);
+ rtc_sub_time_from_time(&gTimeSinceBerryUpdate, LastBerryTreeUpdate, &gRtcUTCTime);
+ if (gTimeSinceBerryUpdate.days * 1440 + gTimeSinceBerryUpdate.hours * 60 + gTimeSinceBerryUpdate.minutes >= 0)
+ return TRUE;
+ return FALSE;
+}
+
+u32 hex_to_bcd(u8 a0)
+{
+ u32 r4;
+ if (a0 > 99)
+ return 0xFF;
+ r4 = Div(a0, 10) << 4;
+ r4 |= Mod(a0, 10);
+ return r4;
+}
+
+void sii_rtc_inc(u8 * a0)
+{
+ *a0 = hex_to_bcd(bcd_to_hex(*a0) + 1);
+}
+
+void sii_rtc_inc_month(struct SiiRtcInfo * a0)
+{
+ sii_rtc_inc(&a0->month);
+ if (bcd_to_hex(a0->month) > 12)
+ {
+ sii_rtc_inc(&a0->year);
+ a0->month = MONTH_JAN;
+ }
+}
+
+void sii_rtc_inc_day(struct SiiRtcInfo * a0)
+{
+ sii_rtc_inc(&a0->day);
+ if (bcd_to_hex(a0->day) > sDaysPerMonth[bcd_to_hex(a0->month) - 1])
+ {
+ if (!is_leap_year(bcd_to_hex(a0->year)) || bcd_to_hex(a0->month) != MONTH_FEB || bcd_to_hex(a0->day) != 29)
+ {
+ a0->day = 1;
+ sii_rtc_inc_month(a0);
+ }
+ }
+}
+
+bool32 rtc_is_past_feb_28_2000(struct SiiRtcInfo * a0)
+{
+ if (bcd_to_hex(a0->year) == 0)
+ {
+ if (bcd_to_hex(a0->month) == MONTH_JAN)
+ return FALSE;
+ if (bcd_to_hex(a0->month) > MONTH_FEB)
+ return TRUE;
+ if (bcd_to_hex(a0->day) == 29)
+ return TRUE;
+ return FALSE;
+ }
+ if (bcd_to_hex(a0->year) == 1)
+ return TRUE;
+ return FALSE;
+}
+
+void rtc_maincb_fix_date(void)
+{
+ rtc_get_status_and_datetime(&sRtcInfoWork);
+ if (bcd_to_hex(sRtcInfoWork.year) == 0 || bcd_to_hex(sRtcInfoWork.year) == 1)
+ {
+ if (bcd_to_hex(sRtcInfoWork.year) == 1)
+ {
+ sRtcInfoWork.year = 2;
+ sRtcInfoWork.month = MONTH_JAN;
+ sRtcInfoWork.day = 2;
+ rtc_set_datetime(&sRtcInfoWork);
+ }
+ else
+ {
+ if (rtc_is_past_feb_28_2000(&sRtcInfoWork) == TRUE)
+ {
+ sii_rtc_inc_day(&sRtcInfoWork);
+ sii_rtc_inc(&sRtcInfoWork.year);
+ }
+ else
+ {
+ sii_rtc_inc(&sRtcInfoWork.year);
+ }
+ rtc_set_datetime(&sRtcInfoWork);
+ }
+ }
+}
diff --git a/berry_fix/payload/sym_bss.txt b/berry_fix/payload/sym_bss.txt
new file mode 100644
index 000000000..17bb7f204
--- /dev/null
+++ b/berry_fix/payload/sym_bss.txt
@@ -0,0 +1,5 @@
+ .include "src/main.o"
+ .include "src/rtc.o"
+ .include "src/flash.o"
+ .include "*libagb_flash.a:agb_flash.o"
+ .include "*libsiirtc.a:siirtc.o"
diff --git a/berry_fix/payload/sym_common.txt b/berry_fix/payload/sym_common.txt
new file mode 100644
index 000000000..e284737fc
--- /dev/null
+++ b/berry_fix/payload/sym_common.txt
@@ -0,0 +1,29 @@
+ .include "main.o"
+ .include "rtc.o"
+
+ .align 4
+gFirstSaveSector: @ 0x03001220
+ .space 0x4
+
+gPrevSaveCounter: @ 0x03001224
+ .space 0x4
+
+gLastKnownGoodSector: @ 0x03001228
+ .space 0x4
+
+gDamagedSaveSectors: @ 0x0300122C
+ .space 0x4
+
+gSaveCounter: @ 0x03001230
+ .space 0x4
+
+gFastSaveSection: @ 0x03001234
+ .space 0x4
+
+gCurSaveChunk:
+ .space 0x4
+
+gFlashIdentIsValid: @ 0x0300123C
+ .space 0x4
+
+ .include "*libagb_flash.a:agb_flash.o"
diff --git a/berry_fix/payload/sym_ewram.txt b/berry_fix/payload/sym_ewram.txt
new file mode 100644
index 000000000..2c61f5e7e
--- /dev/null
+++ b/berry_fix/payload/sym_ewram.txt
@@ -0,0 +1,3 @@
+ .include "src/main.o"
+ .include "src/rtc.o"
+ .include "src/flash.o"
diff --git a/berry_fix/rom.sha1 b/berry_fix/rom.sha1
new file mode 100644
index 000000000..145b083b2
--- /dev/null
+++ b/berry_fix/rom.sha1
@@ -0,0 +1 @@
+2eb0a94a913bebfb4cb59ceb57f3f965da55ef6d berry_fix.gba
diff --git a/common_syms/mevent.txt b/common_syms/mevent.txt
new file mode 100644
index 000000000..cfaf59d33
--- /dev/null
+++ b/common_syms/mevent.txt
@@ -0,0 +1 @@
+gUnknown_3005ED0
diff --git a/data/data_835B488.s b/data/data_835B488.s
index de6460b81..44e4fe725 100644
--- a/data/data_835B488.s
+++ b/data/data_835B488.s
@@ -751,7 +751,13 @@ sFanfares:: @ 83AC990
.incbin "baserom.gba", 0x3AC990, 0x40
gUnknown_83AC9D0:: @ 83AC9D0
- .incbin "baserom.gba", 0x3AC9D0, 0x238
+ .incbin "baserom.gba", 0x3AC9D0, 0x28
+
+gUnknown_83AC9F8::
+ .incbin "baserom.gba", 0x3AC9F8, 0x8
+
+gUnknown_83ACA00::
+ .incbin "baserom.gba", 0x3ACA00, 0x208
gUnknown_83ACC08:: @ 83ACC08
.incbin "baserom.gba", 0x3ACC08, 0x440
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 2e5c0e6c7..9c39a96d2 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -556,7 +556,7 @@ gExpandedPlaceholder_Green:: @ 8415A5C
gText_EggNickname:: @ 8415A62
.incbin "baserom.gba", 0x415A62, 0x4
-gUnknown_8415A66:: @ 8415A66
+gText_Pokemon:: @ 8415A66
.incbin "baserom.gba", 0x415A66, 0x8
gUnknown_8415A6E:: @ 8415A6E
@@ -1956,67 +1956,88 @@ gUnknown_841D198:: @ 841D198
.incbin "baserom.gba", 0x41D198, 0xCB8
gUnknown_841DE50:: @ 841DE50
- .incbin "baserom.gba", 0x41DE50, 0x1
+ .string "$"
gUnknown_841DE51:: @ 841DE51
- .incbin "baserom.gba", 0x41DE51, 0x1
+ .string "$"
gUnknown_841DE52:: @ 841DE52
- .incbin "baserom.gba", 0x41DE52, 0x1
+ .string "$"
gUnknown_841DE53:: @ 841DE53
- .incbin "baserom.gba", 0x41DE53, 0x1
+ .string "$"
gUnknown_841DE54:: @ 841DE54
- .incbin "baserom.gba", 0x41DE54, 0x28
+ .string "$"
+
+gUnknown_841DE55:: @ 841DE55
+ .incbin "baserom.gba", 0x41DE55, 0x27 @ japanese
gUnknown_841DE7C:: @ 841DE7C
- .incbin "baserom.gba", 0x41DE7C, 0x1
+ .string "$"
gUnknown_841DE7D:: @ 841DE7D
- .incbin "baserom.gba", 0x41DE7D, 0x18
+ .string "$"
+
+gUnknown_841DE7E:: @ 841DE7E
+ .incbin "baserom.gba", 0x0041de7e, 0x17 @ japanese
gUnknown_841DE95:: @ 841DE95
- .incbin "baserom.gba", 0x41DE95, 0x1
+ .string "$"
gUnknown_841DE96:: @ 841DE96
- .incbin "baserom.gba", 0x41DE96, 0x1
+ .string "$"
gUnknown_841DE97:: @ 841DE97
- .incbin "baserom.gba", 0x41DE97, 0x1
+ .string "$"
gUnknown_841DE98:: @ 841DE98
- .incbin "baserom.gba", 0x41DE98, 0x1
+ .string "$"
gUnknown_841DE99:: @ 841DE99
- .incbin "baserom.gba", 0x41DE99, 0x1
+ .string "$"
gUnknown_841DE9A:: @ 841DE9A
- .incbin "baserom.gba", 0x41DE9A, 0x1
+ .string "$"
gUnknown_841DE9B:: @ 841DE9B
- .incbin "baserom.gba", 0x41DE9B, 0x1
+ .string "$"
gUnknown_841DE9C:: @ 841DE9C
- .incbin "baserom.gba", 0x41DE9C, 0x1
+ .string "$"
gUnknown_841DE9D:: @ 841DE9D
- .incbin "baserom.gba", 0x41DE9D, 0x53
+ .string "Communication error…\n"
+ .string "Please check all connections,\n"
+ .string "then turn the power OFF and ON.$"
gUnknown_841DEF0:: @ 841DEF0
- .incbin "baserom.gba", 0x41DEF0, 0x15
+ .string "Communication error…$"
gUnknown_841DF05:: @ 841DF05
- .incbin "baserom.gba", 0x41DF05, 0x47
+ .string "Move closer to your link partner(s).\n"
+ .string "Avoid obstacles between partners.$"
gUnknown_841DF4C:: @ 841DF4C
- .incbin "baserom.gba", 0x41DF4C, 0x1F
+ .string "A Button: Registration Counter$"
gUnknown_841DF6B:: @ 841DF6B
- .incbin "baserom.gba", 0x41DF6B, 0x17
+ .string "A Button: Title Screen$"
gUnknown_841DF82:: @ 841DF82
- .incbin "baserom.gba", 0x41DF82, 0x23
+ .string "{STR_VAR_1}P LINK$"
+
+gUnknown_841DF8B:: @ 841DF8B
+ .string "BRONZE$"
+
+gUnknown_841DF92:: @ 841DF92
+ .string "COPPER$"
+
+gUnknown_841DF99:: @ 841DF99
+ .string "SILVER$"
+
+gUnknown_841DFA0:: @ 841DFA0
+ .string "GOLD$"
gUnknown_841DFA5:: @ 841DFA5
.incbin "baserom.gba", 0x41DFA5, 0x7
@@ -3155,7 +3176,10 @@ gUnknown_8459580:: @ 8459580
.incbin "baserom.gba", 0x459580, 0x8
gUnknown_8459588:: @ 8459588
- .incbin "baserom.gba", 0x459588, 0xAC
+ .incbin "baserom.gba", 0x459588, 0x64
+
+gUnknown_84595EC::
+ .incbin "baserom.gba", 0x4595EC, 0x48
gUnknown_8459634:: @ 8459634
.incbin "baserom.gba", 0x459634, 0x8
diff --git a/data/data_845FD54.s b/data/data_845FD54.s
index d2b52192d..d05e14570 100644
--- a/data/data_845FD54.s
+++ b/data/data_845FD54.s
@@ -598,89 +598,3 @@ gUnknown_8466EE8:: @ 8466EE8
gUnknown_8466EF0:: @ 8466EF0
.incbin "baserom.gba", 0x466EF0, 0x10
-
-gUnknown_8466F00:: @ 8466F00
- .incbin "baserom.gba", 0x466F00, 0x28
-
- .align 2
-gUnknown_8466F28:: @ 8466F28
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
-
- .align 2
-gUnknown_8466F5C:: @ 8466F5C
- .asciz "0"
-
- .align 2
-gUnknown_8466F60:: @ 8466F60
- .incbin "baserom.gba", 0x466F60, 0x20
-
- .align 2
-gUnknown_8466F80:: @ 8466F80
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
-
- .align 2
-gUnknown_8466FB8:: @ 8466FB8
- .asciz "size <= ME_SEND_BUF_SIZE"
-
- .align 2
-gUnknown_8466FD4:: @ 8466FD4
- .asciz "cmd->parameter == NULL"
-
- .align 2
-gUnknown_8466FEC:: @ 8466FEC
- .asciz "cmd->flag == FALSE"
-
- .align 2
-gUnknown_8467000:: @ 8467000
- .asciz "cmd->flag == FALSE && cmd->parameter == NULL"
-
- .align 2
-gUnknown_8467030:: @ 8467030
- .incbin "baserom.gba", 0x467030, 0x14
-
- .align 2
-gUnknown_8467044:: @ 8467044
- .asciz "svr->mainseqno < NELEMS(func_tbl)"
-
- .align 2
-gUnknown_8467068:: @ 8467068
- .incbin "baserom.gba", 0x467068, 0x8
-
-gUnknown_8467070:: @ 8467070
- .incbin "baserom.gba", 0x467070, 0x4
-
-gUnknown_8467074:: @ 8467074
- .incbin "baserom.gba", 0x467074, 0xEE4
-
-gUnknown_8467F58:: @ 8467F58
- .incbin "baserom.gba", 0x467F58, 0x8
-
-gUnknown_8467F60:: @ 8467F60
- .incbin "baserom.gba", 0x467F60, 0x40
-
-gUnknown_8467FA0:: @ 8467FA0
- .incbin "baserom.gba", 0x467FA0, 0x18
-
-gUnknown_8467FB8:: @ 8467FB8
- .incbin "baserom.gba", 0x467FB8, 0x80
-
-gUnknown_8468038:: @ 8468038
- .incbin "baserom.gba", 0x468038, 0x8
-
-gUnknown_8468040:: @ 8468040
- .incbin "baserom.gba", 0x468040, 0x10
-
-gUnknown_8468050:: @ 8468050
- .incbin "baserom.gba", 0x468050, 0x6D0
-
-gUnknown_8468720:: @ 8468720
- .incbin "baserom.gba", 0x468720, 0xC0
-
-gUnknown_84687E0:: @ 84687E0
- .incbin "baserom.gba", 0x4687E0, 0x38C
-
-gUnknown_8468B6C:: @ 8468B6C
- .incbin "baserom.gba", 0x468B6C, 0x60
-
-gUnknown_8468BCC:: @ 8468BCC
- .incbin "baserom.gba", 0x468BCC, 0x90
diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s
new file mode 100644
index 000000000..9436bc4fd
--- /dev/null
+++ b/data/data_8466FB8.s
@@ -0,0 +1,12 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_84687A0::
+ .string "You have collected all STAMPs!\n"
+ .string "Want to input a CARD as a prize?$"
+
+ .include "data/mevent/script_ish.inc"
+ .include "data/mevent/script_common.inc"
diff --git a/data/data_8471F00.s b/data/data_8471F00.s
index b9767d933..28454ac2d 100644
--- a/data/data_8471F00.s
+++ b/data/data_8471F00.s
@@ -336,33 +336,3 @@ gUnknown_84827B4:: @ 84827B4
gUnknown_84886E8:: @ 84886E8
.incbin "baserom.gba", 0x4886E8, 0x588
-
-gUnknown_8488C70:: @ 8488C70
- .incbin "baserom.gba", 0x488C70, 0x32
-
-gUnknown_8488CA2:: @ 8488CA2
- .incbin "baserom.gba", 0x488CA2, 0x2C
-
-gUnknown_8488CCE:: @ 8488CCE
- .incbin "baserom.gba", 0x488CCE, 0x28
-
-gUnknown_8488CF6:: @ 8488CF6
- .incbin "baserom.gba", 0x488CF6, 0x34
-
-gUnknown_8488D2A:: @ 8488D2A
- .incbin "baserom.gba", 0x488D2A, 0x36
-
-gUnknown_8488D60:: @ 8488D60
- .incbin "baserom.gba", 0x488D60, 0x1C
-
-gUnknown_8488D7C:: @ 8488D7C
- .incbin "baserom.gba", 0x488D7C, 0x12
-
-gUnknown_8488D8E:: @ 8488D8E
- .incbin "baserom.gba", 0x488D8E, 0x2F
-
-gUnknown_8488DBD:: @ 8488DBD
- .incbin "baserom.gba", 0x488DBD, 0x40
-
-gUnknown_8488DFD:: @ 8488DFD
- .incbin "baserom.gba", 0x488DFD, 0xB6B
diff --git a/data/event_scripts.s b/data/event_scripts.s
index c27df1946..9baa201e5 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1,19 +1,46 @@
.section script_data, "aw", %progbits
-gScriptCmdTable:: @ 815F9B4
- .incbin "baserom.gba", 0x15F9B4, 0x354
-
-gScriptCmdTableEnd:: @ 815FD08
- .incbin "baserom.gba", 0x15FD08, 0x4
-
-gUnknown_815FD0C:: @ 815FD0C
- .incbin "baserom.gba", 0x15FD0C, 0x54
-
-gUnknown_815FD60:: @ 815FD60
- .incbin "baserom.gba", 0x15FD60, 0x6F0
-
-gUnknown_8160450:: @ 8160450
- .incbin "baserom.gba", 0x160450, 0x28
+ .include "data/script_cmd_table.inc"
+
+ .align 2
+gSpecialVars:: @ 815FD0C
+ .4byte gSpecialVar_0x8000
+ .4byte gSpecialVar_0x8001
+ .4byte gSpecialVar_0x8002
+ .4byte gSpecialVar_0x8003
+ .4byte gSpecialVar_0x8004
+ .4byte gSpecialVar_0x8005
+ .4byte gSpecialVar_0x8006
+ .4byte gSpecialVar_0x8007
+ .4byte gSpecialVar_0x8008
+ .4byte gSpecialVar_0x8009
+ .4byte gSpecialVar_0x800A
+ .4byte gSpecialVar_0x800B
+ .4byte gSpecialVar_Facing
+ .4byte gSpecialVar_Result
+ .4byte gSpecialVar_ItemId
+ .4byte gSpecialVar_LastTalked
+ .4byte gSpecialVar_MonBoxId
+ .4byte gSpecialVar_MonBoxPos
+ .4byte gUnknown_20370DA
+ .4byte gUnknown_20370DC
+ .4byte gUnknown_20370DE
+
+ .include "data/specials.inc"
+
+ .align 2
+gStdScripts:: @ 8160450
+ .4byte gStdScript_81A667B
+ .4byte gStdScript_81A67B3
+ .4byte gStdScript_81A4E3F
+ .4byte gStdScript_81A4E4A
+ .4byte gStdScript_81A4E54
+ .4byte gStdScript_81A4E5C
+ .4byte gStdScript_81A501F
+ .4byte gStdScript_81A676C
+ .4byte gStdScript_81A8E58
+ .4byte gStdScript_81A4E66
+gStdScripts_End::
gUnknown_8160478:: @ 8160478
.incbin "baserom.gba", 0x160478, 0x886C
@@ -22,7 +49,22 @@ gUnknown_8168CE4:: @ 8168CE4
.incbin "baserom.gba", 0x168CE4, 0x33
gUnknown_8168D17:: @ 8168D17
- .incbin "baserom.gba", 0x168D17, 0x3C19D
+ .incbin "baserom.gba", 0x168D17, 0x3C128
+
+gStdScript_81A4E3F::
+ .incbin "baserom.gba", 0x1A4E3F, 0xB
+
+gStdScript_81A4E4A::
+ .incbin "baserom.gba", 0x1A4E4A, 0xA
+
+gStdScript_81A4E54::
+ .incbin "baserom.gba", 0x1A4E54, 0x8
+
+gStdScript_81A4E5C::
+ .incbin "baserom.gba", 0x1A4E5C, 0xA
+
+gStdScript_81A4E66::
+ .incbin "baserom.gba", 0x1A4E66, 0x4E
gUnknown_81A4EB4:: @ 81A4EB4
.incbin "baserom.gba", 0x1A4EB4, 0xD
@@ -40,7 +82,10 @@ gUnknown_81A4F3E:: @ 81A4F3E
.incbin "baserom.gba", 0x1A4F3E, 0x35
gUnknown_81A4F73:: @ 81A4F73
- .incbin "baserom.gba", 0x1A4F73, 0x117
+ .incbin "baserom.gba", 0x1A4F73, 0xAC
+
+gStdScript_81A501F::
+ .incbin "baserom.gba", 0x1A501F, 0x6B
gUnknown_81A508A:: @ 81A508A
.incbin "baserom.gba", 0x1A508A, 0x3EC
@@ -52,7 +97,16 @@ gUnknown_81A6481:: @ 81A6481
.incbin "baserom.gba", 0x1A6481, 0xCA
gUnknown_81A654B:: @ 81A654B
- .incbin "baserom.gba", 0x1A654B, 0x2F8
+ .incbin "baserom.gba", 0x1A654B, 0x130
+
+gStdScript_81A667B::
+ .incbin "baserom.gba", 0x1A667B, 0xF1
+
+gStdScript_81A676C::
+ .incbin "baserom.gba", 0x1A676C, 0x47
+
+gStdScript_81A67B3::
+ .incbin "baserom.gba", 0x1A67B3, 0x90
gUnknown_81A6843:: @ 81A6843
.incbin "baserom.gba", 0x1A6843, 0x112
@@ -226,7 +280,10 @@ gUnknown_81A8DD8:: @ 81A8DD8
.incbin "baserom.gba", 0x1A8DD8, 0x25
gUnknown_81A8DFD:: @ 81A8DFD
- .incbin "baserom.gba", 0x1A8DFD, 0x4309
+ .incbin "baserom.gba", 0x1A8DFD, 0x5B
+
+gStdScript_81A8E58::
+ .incbin "baserom.gba", 0x1A8E58, 0x42AE
.include "data/text/fame_checker.inc"
diff --git a/data/graphics/mevent/gfx_46718C.png b/data/graphics/mevent/gfx_46718C.png
new file mode 100644
index 000000000..bf52445e6
--- /dev/null
+++ b/data/graphics/mevent/gfx_46718C.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_46737C.png b/data/graphics/mevent/gfx_46737C.png
new file mode 100644
index 000000000..1a23f8b94
--- /dev/null
+++ b/data/graphics/mevent/gfx_46737C.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_467558.png b/data/graphics/mevent/gfx_467558.png
new file mode 100644
index 000000000..c28edd891
--- /dev/null
+++ b/data/graphics/mevent/gfx_467558.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_467700.png b/data/graphics/mevent/gfx_467700.png
new file mode 100644
index 000000000..f31385746
--- /dev/null
+++ b/data/graphics/mevent/gfx_467700.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_467A7C.png b/data/graphics/mevent/gfx_467A7C.png
new file mode 100644
index 000000000..f94b6c50f
--- /dev/null
+++ b/data/graphics/mevent/gfx_467A7C.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_467EF4.png b/data/graphics/mevent/gfx_467EF4.png
new file mode 100644
index 000000000..51a1aeb0c
--- /dev/null
+++ b/data/graphics/mevent/gfx_467EF4.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_4680C0.png b/data/graphics/mevent/gfx_4680C0.png
new file mode 100644
index 000000000..1a27f3213
--- /dev/null
+++ b/data/graphics/mevent/gfx_4680C0.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_46821C.png b/data/graphics/mevent/gfx_46821C.png
new file mode 100644
index 000000000..aab27d16c
--- /dev/null
+++ b/data/graphics/mevent/gfx_46821C.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_46830C.png b/data/graphics/mevent/gfx_46830C.png
new file mode 100644
index 000000000..3c2b8e6d1
--- /dev/null
+++ b/data/graphics/mevent/gfx_46830C.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_468448.png b/data/graphics/mevent/gfx_468448.png
new file mode 100644
index 000000000..137dbe9f3
--- /dev/null
+++ b/data/graphics/mevent/gfx_468448.png
Binary files differ
diff --git a/data/graphics/mevent/gfx_4685B4.png b/data/graphics/mevent/gfx_4685B4.png
new file mode 100644
index 000000000..137dbe9f3
--- /dev/null
+++ b/data/graphics/mevent/gfx_4685B4.png
Binary files differ
diff --git a/data/graphics/mevent/pal_46708C.pal b/data/graphics/mevent/pal_46708C.pal
new file mode 100644
index 000000000..9c5ef9b26
--- /dev/null
+++ b/data/graphics/mevent/pal_46708C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+213 213 213
+74 74 74
+98 106 106
+213 189 74
+238 213 82
+246 246 213
+255 255 255
+230 230 213
+238 238 213
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_4670AC.pal b/data/graphics/mevent/pal_4670AC.pal
new file mode 100644
index 000000000..18c2be3fd
--- /dev/null
+++ b/data/graphics/mevent/pal_4670AC.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+82 82 106
+131 131 139
+197 189 213
+205 230 255
+115 139 197
+49 74 82
+0 0 0
+0 0 0
+222 255 246
+197 255 222
+222 238 255
+156 180 222
+156 106 115
+172 139 164
+255 255 255
diff --git a/data/graphics/mevent/pal_4670CC.pal b/data/graphics/mevent/pal_4670CC.pal
new file mode 100644
index 000000000..db02d5d4b
--- /dev/null
+++ b/data/graphics/mevent/pal_4670CC.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+82 82 106
+131 131 139
+164 156 172
+197 189 213
+246 238 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 230 230
+255 197 197
+255 164 164
+246 139 139
+238 90 90
+255 255 255
diff --git a/data/graphics/mevent/pal_4670EC.pal b/data/graphics/mevent/pal_4670EC.pal
new file mode 100644
index 000000000..bfbf036a5
--- /dev/null
+++ b/data/graphics/mevent/pal_4670EC.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+82 82 106
+131 131 139
+164 156 172
+197 189 213
+246 238 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+238 255 230
+213 255 189
+189 230 156
+164 213 131
+148 197 106
+255 255 255
diff --git a/data/graphics/mevent/pal_46710C.pal b/data/graphics/mevent/pal_46710C.pal
new file mode 100644
index 000000000..fa41ee3b0
--- /dev/null
+++ b/data/graphics/mevent/pal_46710C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+82 82 106
+131 131 139
+164 156 172
+197 189 213
+246 238 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+238 246 255
+205 238 246
+180 222 246
+156 197 238
+115 156 197
+255 255 255
diff --git a/data/graphics/mevent/pal_46712C.pal b/data/graphics/mevent/pal_46712C.pal
new file mode 100644
index 000000000..8a71f5846
--- /dev/null
+++ b/data/graphics/mevent/pal_46712C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+82 82 106
+131 131 139
+164 156 172
+197 189 213
+246 238 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+238 238 197
+230 230 139
+222 222 115
+213 213 90
+189 189 57
+255 255 255
diff --git a/data/graphics/mevent/pal_46714C.pal b/data/graphics/mevent/pal_46714C.pal
new file mode 100644
index 000000000..01832b5e2
--- /dev/null
+++ b/data/graphics/mevent/pal_46714C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+189 123 148
+213 213 213
+74 74 74
+115 123 123
+164 156 90
+164 148 90
+197 197 90
+213 205 90
+222 213 90
+213 213 106
+238 246 98
+230 222 98
+213 205 98
+197 180 98
+238 230 98
+246 238 106
diff --git a/data/graphics/mevent/pal_46716C.pal b/data/graphics/mevent/pal_46716C.pal
new file mode 100644
index 000000000..28a498b57
--- /dev/null
+++ b/data/graphics/mevent/pal_46716C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+189 123 148
+213 213 213
+74 74 74
+115 123 123
+156 156 156
+139 139 148
+180 180 197
+197 189 205
+205 205 222
+189 189 189
+197 230 222
+189 213 213
+180 197 197
+156 164 172
+222 222 230
+230 230 238
diff --git a/data/graphics/mevent/pal_467DF4.pal b/data/graphics/mevent/pal_467DF4.pal
new file mode 100644
index 000000000..7314ddbc8
--- /dev/null
+++ b/data/graphics/mevent/pal_467DF4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+189 189 164
+205 205 172
+213 213 189
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467E14.pal b/data/graphics/mevent/pal_467E14.pal
new file mode 100644
index 000000000..333dd9280
--- /dev/null
+++ b/data/graphics/mevent/pal_467E14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+82 82 106
+164 156 180
+246 238 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467E34.pal b/data/graphics/mevent/pal_467E34.pal
new file mode 100644
index 000000000..3fca3cdf3
--- /dev/null
+++ b/data/graphics/mevent/pal_467E34.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+246 139 139
+246 180 180
+255 230 230
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467E54.pal b/data/graphics/mevent/pal_467E54.pal
new file mode 100644
index 000000000..f5125b4c9
--- /dev/null
+++ b/data/graphics/mevent/pal_467E54.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+164 213 131
+197 230 180
+238 255 230
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467E74.pal b/data/graphics/mevent/pal_467E74.pal
new file mode 100644
index 000000000..e8ec07ab5
--- /dev/null
+++ b/data/graphics/mevent/pal_467E74.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+156 197 238
+197 222 246
+238 246 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467E94.pal b/data/graphics/mevent/pal_467E94.pal
new file mode 100644
index 000000000..783979089
--- /dev/null
+++ b/data/graphics/mevent/pal_467E94.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+213 213 90
+222 222 139
+238 238 197
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467EB4.pal b/data/graphics/mevent/pal_467EB4.pal
new file mode 100644
index 000000000..1c74daace
--- /dev/null
+++ b/data/graphics/mevent/pal_467EB4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+205 189 98
+222 205 115
+230 222 98
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_467ED4.pal b/data/graphics/mevent/pal_467ED4.pal
new file mode 100644
index 000000000..d1d92ba57
--- /dev/null
+++ b/data/graphics/mevent/pal_467ED4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+197 197 197
+205 205 205
+213 213 213
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_468060.pal b/data/graphics/mevent/pal_468060.pal
new file mode 100644
index 000000000..970736bbb
--- /dev/null
+++ b/data/graphics/mevent/pal_468060.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 197 148
+213 213 213
+74 74 74
+98 106 106
+213 189 74
+238 213 82
+246 246 213
+255 255 255
+230 230 213
+238 238 213
+246 246 238
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/graphics/mevent/pal_468080.pal b/data/graphics/mevent/pal_468080.pal
new file mode 100644
index 000000000..01832b5e2
--- /dev/null
+++ b/data/graphics/mevent/pal_468080.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+189 123 148
+213 213 213
+74 74 74
+115 123 123
+164 156 90
+164 148 90
+197 197 90
+213 205 90
+222 213 90
+213 213 106
+238 246 98
+230 222 98
+213 205 98
+197 180 98
+238 230 98
+246 238 106
diff --git a/data/graphics/mevent/pal_4680A0.pal b/data/graphics/mevent/pal_4680A0.pal
new file mode 100644
index 000000000..28a498b57
--- /dev/null
+++ b/data/graphics/mevent/pal_4680A0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+189 123 148
+213 213 213
+74 74 74
+115 123 123
+156 156 156
+139 139 148
+180 180 197
+197 189 205
+205 205 222
+189 189 189
+197 230 222
+189 213 213
+180 197 197
+156 164 172
+222 222 230
+230 230 238
diff --git a/data/graphics/mevent/tilemap_467288.bin b/data/graphics/mevent/tilemap_467288.bin
new file mode 100644
index 000000000..8e4a4717b
--- /dev/null
+++ b/data/graphics/mevent/tilemap_467288.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_467470.bin b/data/graphics/mevent/tilemap_467470.bin
new file mode 100644
index 000000000..b59dbabb5
--- /dev/null
+++ b/data/graphics/mevent/tilemap_467470.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_46762C.bin b/data/graphics/mevent/tilemap_46762C.bin
new file mode 100644
index 000000000..aba2b9e92
--- /dev/null
+++ b/data/graphics/mevent/tilemap_46762C.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_467934.bin b/data/graphics/mevent/tilemap_467934.bin
new file mode 100644
index 000000000..1800bff4d
--- /dev/null
+++ b/data/graphics/mevent/tilemap_467934.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_467CAC.bin b/data/graphics/mevent/tilemap_467CAC.bin
new file mode 100644
index 000000000..1800bff4d
--- /dev/null
+++ b/data/graphics/mevent/tilemap_467CAC.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_468140.bin b/data/graphics/mevent/tilemap_468140.bin
new file mode 100644
index 000000000..f8185b28e
--- /dev/null
+++ b/data/graphics/mevent/tilemap_468140.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_46824C.bin b/data/graphics/mevent/tilemap_46824C.bin
new file mode 100644
index 000000000..72c7ea278
--- /dev/null
+++ b/data/graphics/mevent/tilemap_46824C.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_46837C.bin b/data/graphics/mevent/tilemap_46837C.bin
new file mode 100644
index 000000000..c7b2e3e21
--- /dev/null
+++ b/data/graphics/mevent/tilemap_46837C.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_4684D8.bin b/data/graphics/mevent/tilemap_4684D8.bin
new file mode 100644
index 000000000..f8185b28e
--- /dev/null
+++ b/data/graphics/mevent/tilemap_4684D8.bin
Binary files differ
diff --git a/data/graphics/mevent/tilemap_468644.bin b/data/graphics/mevent/tilemap_468644.bin
new file mode 100644
index 000000000..f8185b28e
--- /dev/null
+++ b/data/graphics/mevent/tilemap_468644.bin
Binary files differ
diff --git a/data/librfu_rodata.s b/data/librfu_rodata.s
index 867a1a17c..c6ca84f4b 100644
--- a/data/librfu_rodata.s
+++ b/data/librfu_rodata.s
@@ -1,10 +1,28 @@
.section .rodata
-gUnknown_86FC03C:: @ 86FC03C
- .incbin "baserom.gba", 0x6FC03C, 0x2C
+ .set VERSION_MAJOR, 1
+ .set VERSION_MINOR, 0
+ .set VERSION_REVISION, 24
-gUnknown_86FC068:: @ 86FC068
- .incbin "baserom.gba", 0x6FC068, 0xC
+ .align 2
+_Str_RfuHeader::
+ .byte 2, 14, 0, 10, 9, 5, 7, 2
+ .byte 0, 15, 1, 3, 3, 0, 31, 0
+ .byte 3, 22, 18, 14, 13, 9, 11, 3
+ .byte 15, 15, 1, 3, 3, 0, 0x7f, 0
+
+ .ascii "RFU_V"
+ .byte VERSION_MAJOR + 0x30
+ .byte VERSION_MINOR + 0x30
+ .byte (VERSION_REVISION / 10) + 0x30
+ .byte (VERSION_REVISION % 10) + 0x30
+ .byte 0
+
+ .align 2
+_Str_RFU_MBOOT::
+ .asciz "RFU-MBOOT"
+
+ .align 2
+_Str_Sio32ID::
+ .asciz "NINTENDOSio32ID_030820"
-gUnknown_86FC074:: @ 86FC074
- .incbin "baserom.gba", 0x6FC074, 0x18
diff --git a/data/mevent/script_common.inc b/data/mevent/script_common.inc
new file mode 100644
index 000000000..abf03ab95
--- /dev/null
+++ b/data/mevent/script_common.inc
@@ -0,0 +1,84 @@
+gUnknown_8468920::
+ .4byte 0x12, 0x10, gUnknown_8468810
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x0a, NULL
+ .4byte 0x12, 0x10, gUnknown_8468820
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x0b, NULL
+ .4byte 0x12, 0x10, gUnknown_84688E0
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x09, NULL
+
+gUnknown_84689B0::
+ .4byte 0x12, 0x10, gUnknown_8468898
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x07, NULL
+
+gUnknown_84689E0::
+ .4byte 0x12, 0x28, gUnknown_8468870
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x0e, 0x00, NULL
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x13, NULL
+ .4byte 0x08, 0x00, NULL
+ .4byte 0x04, 0x01, gUnknown_84689B0
+ .4byte 0x12, 0x10, gUnknown_84688A8
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x03, NULL
+
+gUnknown_8468A64::
+ .4byte 0x12, 0x30, gUnknown_8468840
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x0d, 0x00, NULL
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x0f, 0x00, NULL
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x02, NULL
+
+gUnknown_8468AC4::
+ .4byte 0x12, 0x28, gUnknown_84688B8
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x13, NULL
+ .4byte 0x08, 0x00, NULL
+ .4byte 0x04, 0x00, gUnknown_8468A64
+ .4byte 0x03, 0x00, gUnknown_84595EC
+
+gUnknown_8468B0C::
+ .4byte 0x12, 0x10, gUnknown_84688F0
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x05, NULL
+ .4byte 0x12, 0x10, gUnknown_8468830
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x14, NULL
+ .4byte 0x00, 0x00, NULL
+
+gUnknown_8468B6C:: @ 8468B6C
+ .4byte 0x1b, 0x00, NULL
+ .4byte 0x12, 0x20, gUnknown_84687F0
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x11, NULL
+ .4byte 0x05, 0x00, NULL
+ .4byte 0x06, 0x00, NULL
+ .4byte 0x04, 0x00, gUnknown_8468920
+ .4byte 0x03, 0x00, gUnknown_84689E0
+
+gUnknown_8468BCC:: @ 8468BCC
+ .4byte 0x1a, 0x00, NULL
+ .4byte 0x1c, 0x00, NULL
+ .4byte 0x12, 0x20, gUnknown_84687F0
+ .4byte 0x01, 0x00, NULL
+ .4byte 0x02, 0x11, NULL
+ .4byte 0x05, 0x00, NULL
+ .4byte 0x06, 0x00, NULL
+ .4byte 0x04, 0x00, gUnknown_8468920
+ .4byte 0x07, 0x00, NULL
+ .4byte 0x04, 0x02, gUnknown_8468AC4
+ .4byte 0x04, 0x00, gUnknown_8468A64
+ .4byte 0x03, 0x00, gUnknown_8468B0C
diff --git a/data/mevent/script_ish.inc b/data/mevent/script_ish.inc
new file mode 100644
index 000000000..3d79cf1ee
--- /dev/null
+++ b/data/mevent/script_ish.inc
@@ -0,0 +1,65 @@
+gUnknown_84687E0:: @ 84687E0
+ .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
+ .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
+
+gUnknown_84687F0::
+ .4byte 0x08, 0x00 @ SEND HEADER MAYBE
+ .4byte 0x03, 0x00 @ WAIT SEND
+ .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
+ .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
+
+gUnknown_8468810::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x0a @ RETURN 0x0a
+
+gUnknown_8468820::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x0b @ RETURN 0x0b
+
+gUnknown_8468830::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x00 @ RETURN 0x00
+
+gUnknown_8468840::
+ .4byte 0x02, 0x16 @ RECEIVE ID(0x16)
+ .4byte 0x0a, 0x00 @ RECEIVE_TO_SAVE_FILE
+ .4byte 0x02, 0x19 @ RECEIVE ID(0x19)
+ .4byte 0x11, 0x00 @ RECEIVE_TO_RAM_SCRIPT
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x02 @ RETURN 0x02
+
+gUnknown_8468870::
+ .4byte 0x02, 0x17 @ RECEIVE ID(0x17)
+ .4byte 0x09, 0x00 @ VALIDATE BUFF3120
+ .4byte 0x03, 0x00 @ WAIT SEND
+ .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
+ .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
+
+gUnknown_8468898::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x07 @ RETURN 0x07
+
+gUnknown_84688A8::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x03 @ RETURN 0x03
+
+gUnknown_84688B8::
+ .4byte 0x0d, 0x00 @ REQUEST PARAMETER
+ .4byte 0x0e, 0x00 @ SEND PARAMETER
+ .4byte 0x03, 0x00 @ WAIT SEND
+ .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
+ .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
+
+gUnknown_84688E0::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x09 @ RETURN 0x09
+
+gUnknown_84688F0::
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x05 @ RETURN 0x05
+
+gUnknown_8468900::
+ .4byte 0x02, 0x15 @ RECEIVE ID(0x15)
+ .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTE SOMETHING
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x0d @ RETURN 0x0d
diff --git a/data/multiboot_berry_glitch_fix.s b/data/multiboot_berry_glitch_fix.s
index 0e4bcf384..1eb843d3f 100644
--- a/data/multiboot_berry_glitch_fix.s
+++ b/data/multiboot_berry_glitch_fix.s
@@ -1,5 +1,5 @@
.section .rodata
gMultiBootProgram_BerryGlitchFix_Start:: @ 86FFC6C
- .incbin "baserom.gba", 0x6FFC6C, 0x3BF4
+ .incbin "berry_fix/berry_fix.gba"
gMultiBootProgram_BerryGlitchFix_End::
diff --git a/data/multiboot_pokemon_colosseum.s b/data/multiboot_pokemon_colosseum.s
index 64df89692..bbc47a9e8 100644
--- a/data/multiboot_pokemon_colosseum.s
+++ b/data/multiboot_pokemon_colosseum.s
@@ -1,5 +1,5 @@
.section .rodata
gMultiBootProgram_PokemonColosseum_Start:: @ 8703860
- .incbin "baserom.gba", 0x703860, 0x28000
+ .incbin "data/pokemon_colosseum.mb"
gMultiBootProgram_PokemonColosseum_End::
diff --git a/data/mystery_event_msg.s b/data/mystery_event_msg.s
new file mode 100644
index 000000000..48be143d7
--- /dev/null
+++ b/data/mystery_event_msg.s
@@ -0,0 +1,342 @@
+#include "constants/flags.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/vars.h"
+ .include "asm/macros.inc"
+ .include "asm/macros/event.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+MysteryEventScript_StampCard:: @ 8488E2
+ .incbin "baserom.gba", 0x488E28, 0xB40
+
+@ setvaddress MysteryEventScript_StampCard
+@ setorcopyvar VAR_RESULT, 1
+@ specialvar VAR_0x8008, sub_813986C
+@ setorcopyvar VAR_RESULT, 0
+@ specialvar VAR_0x8009, sub_813986C
+@ subvar VAR_0x8008, 32777
+@ getnumberstring 0, VAR_0x8008
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftStampCard
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_MysteryGiftStampCard:
+@ .string "Thank you for using the STAMP CARD\nSystem.\pYou have {STR_VAR_1} more to collect to\nfill your STAMP CARD.$"
+@
+@ MysteryEventScript_SurfPichu:: @ 8674D3D
+@ setvaddress MysteryEventScript_SurfPichu
+@ checkflag FLAG_MYSTERY_EVENT_DONE
+@ vgoto_if 0, SurfPichu_GiveIfPossible
+@ gotoram
+@
+@ SurfPichu_GiveIfPossible: @ 8674D4C
+@ specialvar VAR_EVENT_PICHU_SLOT, CalculatePlayerPartyCount
+@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 6
+@ vgoto_if 1, SurfPichu_FullParty
+@ setflag FLAG_MYSTERY_EVENT_DONE
+@ vcall SurfPichu_GiveEgg
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftEgg
+@ waitmessage
+@ waitbutton
+@ playfanfare MUS_FANFA4
+@ waitfanfare
+@ release
+@ end
+@
+@ SurfPichu_FullParty: @ 8674D73
+@ lock
+@ faceplayer
+@ vmessage sText_FullParty
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ SurfPichu_GiveEgg: @ 8674D7E
+@ giveegg SPECIES_PICHU
+@ setobedience VAR_EVENT_PICHU_SLOT
+@ setcatchlocale VAR_EVENT_PICHU_SLOT, 255
+@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 1
+@ vgoto_if 1, SurfPichu_Slot1
+@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 2
+@ vgoto_if 1, SurfPichu_Slot2
+@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 3
+@ vgoto_if 1, SurfPichu_Slot3
+@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 4
+@ vgoto_if 1, SurfPichu_Slot4
+@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 5
+@ vgoto_if 1, SurfPichu_Slot5
+@ return
+@
+@ SurfPichu_Slot1: @ 8674DC0
+@ setpokemove 1, 2, MOVE_SURF
+@ return
+@
+@ SurfPichu_Slot2:: @ 8674DC6
+@ setpokemove 2, 2, MOVE_SURF
+@ return
+@
+@ SurfPichu_Slot3: @ 8674DCC
+@ setpokemove 3, 2, MOVE_SURF
+@ return
+@
+@ SurfPichu_Slot4: @ 8674DD2
+@ setpokemove 4, 2, MOVE_SURF
+@ return
+@
+@ SurfPichu_Slot5: @ 8674DD8
+@ setpokemove 5, 2, MOVE_SURF
+@ return
+@
+@ sText_MysteryGiftEgg:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pFrom the POKéMON CENTER we\nhave a gift--a POKéMON EGG!\pPlease raise it with love and\nkindness.$"
+@
+@ sText_FullParty:
+@ .string "Oh, your party appears to be full.\pPlease come see me after storing\na POKéMON on a PC.$"
+@
+@ MysteryEventScript_VisitingTrainer:: @ 8674EC1
+@ setvaddress MysteryEventScript_VisitingTrainer
+@ special ValidateEReaderTrainer
+@ compare_var_to_value VAR_RESULT, 0
+@ vgoto_if 1, MysteryEventScript_VisitingTrainerArrived
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftVisitingTrainer
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ MysteryEventScript_VisitingTrainerArrived: @ 8674EDF
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftVisitingTrainer_2
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_MysteryGiftVisitingTrainer:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pBy holding this WONDER CARD, you\nmay take part in a survey at a\lPOKéMON MART.\pUse these surveys to invite\nTRAINERS to SOOTOPOLIS CITY.\p…Let me give you a secret\npassword for a survey:\p“GIVE ME\nAWESOME TRAINER”\pWrite that in on a survey and send\nit to the WIRELESS\lCOMMUNICATION SYSTEM.$"
+@
+@ sText_MysteryGiftVisitingTrainer_2:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pA TRAINER has arrived in\nSOOTOPOLIS CITY looking for you.\pWe hope you will enjoy\nbattling the visiting TRAINER.\pYou may invite other TRAINERS by\nentering other passwords.\pTry looking for other passwords\nthat may work.$"
+@
+@ MysteryEventScript_BattleCard:: @ 867513C
+@ setvaddress MysteryEventScript_BattleCard
+@ checkflag FLAG_MYSTERY_EVENT_DONE
+@ vgoto_if 1, MysteryEventScript_BattleCardInfo
+@ setorcopyvar VAR_RESULT, 2
+@ specialvar VAR_0x8008, sub_813986C
+@ compare_var_to_value VAR_0x8008, 3
+@ vgoto_if 0, MysteryEventScript_BattleCardInfo
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftBattleCountCard_2
+@ waitmessage
+@ waitbutton
+@ giveitem ITEM_POTION
+@ release
+@ setflag FLAG_MYSTERY_EVENT_DONE
+@ end
+@
+@ MysteryEventScript_BattleCardInfo: @ 8675179
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftBattleCountCard
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_MysteryGiftBattleCountCard:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pYour BATTLE COUNT CARD keeps\ntrack of your battle record against\lTRAINERS with the same CARD.\pLook for and battle TRAINERS who\nhave the same CARD as you.\pYou may check the overall rankings\nby reading the NEWS.\pPlease do give it a try!$"
+@
+@ sText_MysteryGiftBattleCountCard_2:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pCongratulations!\pYou have won a prize for winning\nthree battles!\pWe hope you will be inspired to\nbattle some more.$"
+@
+@ MysteryEventScript_AuroraTicket:: @ 867533C
+@ setvaddress MysteryEventScript_AuroraTicket
+@ lock
+@ faceplayer
+@ checkflag FLAG_0x13A
+@ vgoto_if 1, AuroraTicket_Obtained
+@ checkflag FLAG_0x1AD
+@ vgoto_if 1, AuroraTicket_Obtained
+@ checkitem ITEM_AURORA_TICKET, 1
+@ compare_var_to_value VAR_RESULT, 1
+@ vgoto_if 1, AuroraTicket_Obtained
+@ vmessage sText_AuroraTicket1
+@ waitmessage
+@ waitbutton
+@ checkitemspace ITEM_AURORA_TICKET, 1
+@ compare_var_to_value VAR_RESULT, 0
+@ vgoto_if 1, AuroraTicket_NoBagSpace
+@ giveitem ITEM_AURORA_TICKET
+@ setflag FLAG_0x8D5
+@ setflag FLAG_0x13A
+@ vmessage sText_AuroraTicket2
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ AuroraTicket_NoBagSpace: @ 8675397
+@ vmessage sText_AuroraTicketNoPlace
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ AuroraTicket_Obtained: @ 86753A0
+@ vmessage sText_AuroraTicketGot
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_AuroraTicket1:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pYou must be {PLAYER}.\nThere is a ticket here for you.$"
+@
+@ sText_AuroraTicket2:
+@ .string "It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?$"
+@
+@ sText_AuroraTicketGot:
+@ .string "Thank you for using the MYSTERY\nGIFT System.$"
+@
+@ sText_AuroraTicketNoPlace:
+@ .string "Oh, I’m sorry, {PLAYER}.\nYour BAG’s KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.$"
+@
+@ MysteryEventScript_MysticTicket:: @ 867550B
+@ setvaddress MysteryEventScript_MysticTicket
+@ lock
+@ faceplayer
+@ checkflag FLAG_0x13B
+@ vgoto_if 1, MysticTicket_Obtained
+@ checkflag FLAG_0x091
+@ vgoto_if 1, MysticTicket_Obtained
+@ checkflag FLAG_0x092
+@ vgoto_if 1, MysticTicket_Obtained
+@ checkitem ITEM_MYSTIC_TICKET, 1
+@ compare_var_to_value VAR_RESULT, 1
+@ vgoto_if 1, MysticTicket_Obtained
+@ vmessage sText_MysticTicket2
+@ waitmessage
+@ waitbutton
+@ checkitemspace ITEM_MYSTIC_TICKET, 1
+@ compare_var_to_value VAR_RESULT, 0
+@ vgoto_if 1, MysticTicket_NoBagSpace
+@ giveitem ITEM_MYSTIC_TICKET
+@ setflag FLAG_0x8E0
+@ setflag FLAG_0x13B
+@ vmessage sText_MysticTicket1
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ MysticTicket_NoBagSpace: @ 867556F
+@ vmessage sText_MysticTicketNoPlace
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ MysticTicket_Obtained: @ 8675578
+@ vmessage sText_MysticTicketGot
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_MysticTicket2:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pYou must be {PLAYER}.\nThere is a ticket here for you.$"
+@
+@ sText_MysticTicket1:
+@ .string "It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?$"
+@
+@ sText_MysticTicketGot:
+@ .string "Thank you for using the MYSTERY\nGIFT System.$"
+@
+@ sText_MysticTicketNoPlace:
+@ .string "Oh, I’m sorry, {PLAYER}.\nYour BAG’s KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.$"
+@
+@ MysteryEventScript_AlteringCave:: @ 86756E3
+@ setvaddress MysteryEventScript_AlteringCave
+@ addvar VAR_ALTERING_CAVE_WILD_SET, 1
+@ compare_var_to_value VAR_ALTERING_CAVE_WILD_SET, 10
+@ vgoto_if 0, MysteryEventScript_AlteringCave_
+@ setvar VAR_ALTERING_CAVE_WILD_SET, 0
+@ MysteryEventScript_AlteringCave_: @ 86756FD
+@ lock
+@ faceplayer
+@ vmessage sText_MysteryGiftAlteringCave
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_MysteryGiftAlteringCave::
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pThere appears to be a rumor about\nrare POKéMON sightings.\pThe sightings reportedly came from\nthe ALTERING CAVE on ROUTE 103.\pPerhaps it would be worthwhile for\nyou to investigate this rumor.$"
+@
+@ MysteryEventScript_OldSeaMap:: @ 86757F4
+@ setvaddress MysteryEventScript_OldSeaMap
+@ lock
+@ faceplayer
+@ checkflag FLAG_0x13C
+@ vgoto_if 1, OldSeaMap_Obtained
+@ checkflag FLAG_0x1CA
+@ vgoto_if 1, OldSeaMap_Obtained
+@ checkitem ITEM_OLD_SEA_MAP, 1
+@ compare_var_to_value VAR_RESULT, 1
+@ vgoto_if 1, OldSeaMap_Obtained
+@ vmessage sText_MysteryGiftOldSeaMap
+@ waitmessage
+@ waitbutton
+@ checkitemspace ITEM_OLD_SEA_MAP, 1
+@ compare_var_to_value VAR_RESULT, 0
+@ vgoto_if 1, OldSeaMap_NoBagSpace
+@ giveitem ITEM_OLD_SEA_MAP
+@ setflag FLAG_0x8D6
+@ setflag FLAG_0x13C
+@ vmessage sText_MysteryGiftOldSeaMap_1
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ OldSeaMap_NoBagSpace: @ 867584F
+@ vmessage sText_MysteryGiftOldSeaMap_3
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ OldSeaMap_Obtained: @ 8675858
+@ vmessage sText_MysteryGiftOldSeaMap_2
+@ waitmessage
+@ waitbutton
+@ release
+@ end
+@
+@ sText_MysteryGiftOldSeaMap:
+@ .string "Thank you for using the MYSTERY\nGIFT System.\pLet me confirm--you are {PLAYER}?\pWe received this OLD SEA MAP\naddressed to you.$"
+@
+@ sText_MysteryGiftOldSeaMap_1:
+@ .string "It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?$"
+@
+@ sText_MysteryGiftOldSeaMap_2:
+@ .string "Thank you for using the MYSTERY\nGIFT System.$"
+@
+@ sText_MysteryGiftOldSeaMap_3:
+@ .string "Oh, I’m sorry, {PLAYER}.\nYour BAG’s KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.$"
diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s
index 76b7ab5a5..5dbcf50ee 100644
--- a/data/mystery_event_script_cmd_table.s
+++ b/data/mystery_event_script_cmd_table.s
@@ -1,4 +1,21 @@
.section script_data, "aw", %progbits
-gUnknown_81DBCF0:: @ 81DBCF0
- .incbin "baserom.gba", 0x1DBCF0, 0x44
+gMysteryEventScriptCmdTable:: @ 81DBCF0
+ .4byte MEScrCmd_nop
+ .4byte MEScrCmd_checkcompat
+ .4byte MEScrCmd_end
+ .4byte MEScrCmd_setmsg
+ .4byte MEScrCmd_setstatus
+ .4byte MEScrCmd_runscript
+ .4byte MEScrCmd_initramscript
+ .4byte MEScrCmd_setenigmaberry
+ .4byte MEScrCmd_giveribbon
+ .4byte MEScrCmd_givenationaldex
+ .4byte MEScrCmd_addrareword
+ .4byte MEScrCmd_setrecordmixinggift
+ .4byte MEScrCmd_givepokemon
+ .4byte MEScrCmd_addtrainer
+ .4byte MEScrCmd_enableresetrtc
+ .4byte MEScrCmd_checksum
+ .4byte MEScrCmd_crc
+gMysteryEventScriptCmdTableEnd:: @ 81DBD34
diff --git a/data/pokemon_colosseum.mb b/data/pokemon_colosseum.mb
new file mode 100644
index 000000000..2ff3f88bc
--- /dev/null
+++ b/data/pokemon_colosseum.mb
Binary files differ
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
new file mode 100644
index 000000000..29850d685
--- /dev/null
+++ b/data/script_cmd_table.inc
@@ -0,0 +1,219 @@
+ .align 2
+
+gScriptCmdTable:: @ 815F9B4
+ .4byte sub_8069ED0
+ .4byte sub_8069ED4
+ .4byte ScrCmd_end
+ .4byte ScrCmd_return
+ .4byte ScrCmd_call
+ .4byte ScrCmd_goto
+ .4byte ScrCmd_goto_if
+ .4byte ScrCmd_call_if
+ .4byte ScrCmd_gotostd
+ .4byte ScrCmd_callstd
+ .4byte ScrCmd_gotostd_if
+ .4byte ScrCmd_callstd_if
+ .4byte ScrCmd_gotoram
+ .4byte ScrCmd_killscript
+ .4byte ScrCmd_setmysteryeventstatus
+ .4byte ScrCmd_loadword
+ .4byte ScrCmd_loadbyte
+ .4byte ScrCmd_writebytetoaddr
+ .4byte ScrCmd_loadbytefromaddr
+ .4byte ScrCmd_setptrbyte
+ .4byte ScrCmd_copylocal
+ .4byte ScrCmd_copybyte
+ .4byte ScrCmd_setvar
+ .4byte ScrCmd_addvar
+ .4byte ScrCmd_subvar
+ .4byte ScrCmd_copyvar
+ .4byte ScrCmd_setorcopyvar
+ .4byte ScrCmd_compare_local_to_local
+ .4byte ScrCmd_compare_local_to_value
+ .4byte ScrCmd_compare_local_to_addr
+ .4byte ScrCmd_compare_addr_to_local
+ .4byte ScrCmd_compare_addr_to_value
+ .4byte ScrCmd_compare_addr_to_addr
+ .4byte ScrCmd_compare_var_to_value
+ .4byte ScrCmd_compare_var_to_var
+ .4byte ScrCmd_callnative
+ .4byte ScrCmd_gotonative
+ .4byte sub_8069EFC
+ .4byte sub_8069F3C
+ .4byte sub_8069FA4
+ .4byte ScrCmd_delay
+ .4byte ScrCmd_setflag
+ .4byte ScrCmd_clearflag
+ .4byte ScrCmd_checkflag
+ .4byte sub_806A9D4
+ .4byte sub_806A9D8
+ .4byte sub_806A9DC
+ .4byte ScrCmd_playse
+ .4byte sub_806B094
+ .4byte ScrCmd_playfanfare
+ .4byte sub_806B0CC
+ .4byte sub_806B0E0
+ .4byte sub_806B120
+ .4byte sub_806B134
+ .4byte sub_806B154
+ .4byte sub_806B17C
+ .4byte sub_806B1C8
+ .4byte ScrCmd_warp
+ .4byte ScrCmd_warpsilent
+ .4byte ScrCmd_warpdoor
+ .4byte ScrCmd_warphole
+ .4byte sub_806AC70
+ .4byte ScrCmd_setwarp
+ .4byte ScrCmd_setdynamicwarp
+ .4byte sub_806AE90
+ .4byte sub_806AF10
+ .4byte ScrCmd_getplayerxy
+ .4byte ScrCmd_getpartysize
+ .4byte sub_806A610
+ .4byte ScrCmd_takeitem
+ .4byte sub_806A6A0
+ .4byte sub_806A6E4
+ .4byte ScrCmd_checkitemtype
+ .4byte ScrCmd_givepcitem
+ .4byte ScrCmd_checkpcitem
+ .4byte sub_806A7DC
+ .4byte sub_806A7F0
+ .4byte sub_806A818
+ .4byte sub_806A804
+ .4byte ScrCmd_applymovement
+ .4byte ScrCmd_applymovement_at
+ .4byte ScrCmd_waitmovement
+ .4byte ScrCmd_waitmovement_at
+ .4byte ScrCmd_removeobject
+ .4byte ScrCmd_removeobject_at
+ .4byte ScrCmd_addobject
+ .4byte ScrCmd_addobject_at
+ .4byte ScrCmd_setobjectxy
+ .4byte ScrCmd_showobject_at
+ .4byte ScrCmd_hideobject_at
+ .4byte ScrCmd_faceplayer
+ .4byte ScrCmd_turnobject
+ .4byte ScrCmd_trainerbattle
+ .4byte sub_806C2D8
+ .4byte ScrCmd_ontrainerbattleend
+ .4byte ScrCmd_ontrainerbattleendgoto
+ .4byte ScrCmd_checktrainerflag
+ .4byte ScrCmd_settrainerflag
+ .4byte ScrCmd_cleartrainerflag
+ .4byte ScrCmd_setobjectxyperm
+ .4byte ScrCmd_moveobjectoffscreen
+ .4byte ScrCmd_setobjectmovementtype
+ .4byte sub_806B878
+ .4byte sub_806B80C
+ .4byte sub_806B88C
+ .4byte ScrCmd_lockall
+ .4byte ScrCmd_lock
+ .4byte ScrCmd_releaseall
+ .4byte ScrCmd_release
+ .4byte sub_806BA3C
+ .4byte ScrCmd_yesnobox
+ .4byte ScrCmd_multichoice
+ .4byte ScrCmd_multichoicedefault
+ .4byte ScrCmd_multichoicegrid
+ .4byte sub_806BB38
+ .4byte sub_806BB8C
+ .4byte sub_806BB98
+ .4byte sub_806BB9C
+ .4byte sub_806BBD8
+ .4byte sub_806BBF8
+ .4byte sub_806BC04
+ .4byte ScrCmd_givemon
+ .4byte ScrCmd_giveegg
+ .4byte ScrCmd_setmonmove
+ .4byte ScrCmd_checkpartymove
+ .4byte ScrCmd_bufferspeciesname
+ .4byte ScrCmd_bufferleadmonspeciesname
+ .4byte ScrCmd_bufferpartymonnick
+ .4byte ScrCmd_bufferitemname
+ .4byte sub_806BE34
+ .4byte ScrCmd_buffermovename
+ .4byte ScrCmd_buffernumberstring
+ .4byte ScrCmd_bufferstdstring
+ .4byte ScrCmd_bufferstring
+ .4byte sub_806C3AC
+ .4byte sub_806C3C0
+ .4byte sub_806C3D4
+ .4byte ScrCmd_playslotmachine
+ .4byte sub_806C410
+ .4byte sub_806C418
+ .4byte sub_806C424
+ .4byte sub_806C428
+ .4byte sub_806C42C
+ .4byte ScrCmd_random
+ .4byte ScrCmd_givemoney
+ .4byte ScrCmd_takemoney
+ .4byte ScrCmd_checkmoney
+ .4byte sub_806C1CC
+ .4byte sub_806C21C
+ .4byte sub_806C228
+ .4byte sub_806C414
+ .4byte ScrCmd_fadescreen
+ .4byte ScrCmd_fadescreenspeed
+ .4byte ScrCmd_setflashradius
+ .4byte ScrCmd_animateflash
+ .4byte sub_806B85C
+ .4byte ScrCmd_dofieldeffect
+ .4byte ScrCmd_setfieldeffectarg
+ .4byte ScrCmd_waitfieldeffect
+ .4byte ScrCmd_setrespawn
+ .4byte ScrCmd_checkplayergender
+ .4byte ScrCmd_playmoncry
+ .4byte ScrCmd_setmetatile
+ .4byte ScrCmd_resetweather
+ .4byte ScrCmd_setweather
+ .4byte ScrCmd_doweather
+ .4byte ScrCmd_setstepcallback
+ .4byte ScrCmd_setmaplayoutindex
+ .4byte ScrCmd_setobjectpriority
+ .4byte ScrCmd_resetobjectpriority
+ .4byte ScrCmd_createvobject
+ .4byte ScrCmd_turnvobject
+ .4byte ScrCmd_opendoor
+ .4byte ScrCmd_closedoor
+ .4byte sub_806C688
+ .4byte ScrCmd_setdooropen
+ .4byte ScrCmd_setdoorclosed
+ .4byte sub_806C724
+ .4byte sub_806C728
+ .4byte ScrCmd_checkcoins
+ .4byte ScrCmd_givecoins
+ .4byte ScrCmd_takecoins
+ .4byte ScrCmd_setwildbattle
+ .4byte sub_806C39C
+ .4byte ScrCmd_setvaddress
+ .4byte ScrCmd_vgoto
+ .4byte ScrCmd_vcall
+ .4byte ScrCmd_vgoto_if
+ .4byte ScrCmd_vcall_if
+ .4byte ScrCmd_vmessage
+ .4byte ScrCmd_vloadword
+ .4byte ScrCmd_vbufferstring
+ .4byte sub_806C258
+ .4byte ScrCmd_hidecoinsbox
+ .4byte ScrCmd_updatecoinsbox
+ .4byte ScrCmd_incrementgamestat
+ .4byte ScrCmd_setescapewarp
+ .4byte sub_806C540
+ .4byte ScrCmd_bufferboxname
+ .4byte sub_806B7EC
+ .4byte sub_806B828
+ .4byte sub_806B850
+ .4byte sub_806C7BC
+ .4byte sub_806C7C8
+ .4byte sub_806A888
+ .4byte ScrCmd_setmonobedient
+ .4byte ScrCmd_checkmonobedience
+ .4byte sub_806A28C
+ .4byte sub_806A8C0
+ .4byte sub_806ACF8
+ .4byte sub_806C844
+ .4byte sub_806BC40
+ .4byte sub_806BD90
+
+gScriptCmdTableEnd:: @ 815FD08
+ .4byte sub_8069ED0
diff --git a/data/specials.inc b/data/specials.inc
new file mode 100644
index 000000000..171a6fd8e
--- /dev/null
+++ b/data/specials.inc
@@ -0,0 +1,456 @@
+.macro def_special ptr
+.global SPECIAL_\ptr
+.set SPECIAL_\ptr, __special__
+.set __special__, __special__ + 1
+ .4byte \ptr
+ .endm
+
+.set __special__, 0
+ .align 2
+
+gSpecials:: @ 815FD60
+ def_special sp000_heal_pokemon
+ def_special SetCableClubWarp
+ def_special sub_807E654
+ def_special sub_807E704
+ def_special sub_8081744
+ def_special sub_8081770
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_8081064
+ def_special sub_80810CC
+ def_special sub_80810F4
+ def_special sub_80098B8
+ def_special sub_80819C8
+ def_special sub_8081978
+ def_special sub_80819B8
+ def_special sub_808130C
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special SavePlayerParty
+ def_special LoadPlayerParty
+ def_special sub_80A0334
+ def_special sp02A_crash_sound
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special IsEnigmaBerryValid
+ def_special sub_80803CC
+ def_special sub_80805D8
+ def_special sub_8080618
+ def_special ScrSpecial_HasTrainerBeenFought
+ def_special ScrSpecial_EndTrainerApproach
+ def_special sub_8080628
+ def_special sub_810CD4C
+ def_special sub_810CEB4
+ def_special sub_80805B0
+ def_special sub_808C6A8
+ def_special CheckForAlivePartyMons
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CBEBC
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_8081128
+ def_special sub_806F67C
+ def_special nullsub_56
+ def_special sub_80FEE44
+ def_special sub_80BDA7C
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80A0918
+ def_special sub_80A0930
+ def_special sub_80A096C
+ def_special sub_80A0984
+ def_special sub_80CBFA0
+ def_special TV_CopyNicknameToStringVar1AndEnsureTerminated
+ def_special TV_CheckMonOTIDEqualsPlayerID
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80BDB1C
+ def_special nullsub_75
+ def_special sub_809A540
+ def_special CalculatePlayerPartyCount
+ def_special CountPartyNonEggMons
+ def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CA68C
+ def_special DrawWholeMapView
+ def_special sub_80CA69C
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CA6BC
+ def_special sub_80CA6DC
+ def_special sub_80CA714
+ def_special sub_80CA758
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_8055DC4
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_807F888
+ def_special ChangePokemonNickname
+ def_special sub_80BF8FC
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_8113364
+ def_special sub_8113288
+ def_special sub_81133A4
+ def_special sub_8113064
+ def_special sub_81132CC
+ def_special sub_8113510
+ def_special sub_81130A8
+ def_special sub_8113530
+ def_special sub_8082E54
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CA74C
+ def_special GetDaycareMonNicknames
+ def_special sub_80464B4
+ def_special RejectEggFromDayCare
+ def_special GiveEggFromDaycare
+ def_special SetDaycareCompatibilityString
+ def_special GetSelectedMonNickAndSpecies
+ def_special StoreSelectedPokemonInDaycare
+ def_special ChooseSendDaycareMon
+ def_special ShowDaycareLevelMenu
+ def_special GetNumLevelsGainedFromDaycare
+ def_special GetDaycareCost
+ def_special TakePokemonFromDaycare
+ def_special ScriptHatchMon
+ def_special sub_8046FD4
+ def_special sub_8046EAC
+ def_special sub_80CD228
+ def_special IsEnoughForCostInVar0x8005
+ def_special SubtractMoneyFromVar0x8005
+ def_special ExecuteWhiteOut
+ def_special sub_80CA3C4
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80A0EC4
+ def_special sub_80A0EEC
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CA3D8
+ def_special sub_80CA524
+ def_special sub_80CA86C
+ def_special sub_80CA9A8
+ def_special sub_80CB204
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80BF93C
+ def_special sub_80BF9BC
+ def_special sub_80BFBA8
+ def_special ScrSpecial_GetPokemonNicknameAndMoveName
+ def_special ScrSpecial_CountPokemonMoves
+ def_special sub_80E4634
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CA664
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CA76C
+ def_special sub_80E5970
+ def_special sub_80E5C28
+ def_special sub_80E6648
+ def_special sub_80E67FC
+ def_special sub_80E7538
+ def_special sub_80E6900
+ def_special sub_80E6A0C
+ def_special sub_80E6C8C
+ def_special sub_80E6E14
+ def_special sub_80E6FB8
+ def_special sub_80E7058
+ def_special sub_80E71D0
+ def_special sub_80E724C
+ def_special sub_80E72B8
+ def_special sub_80A0380
+ def_special ValidateEReaderTrainer
+ def_special nullsub_75
+ def_special sub_80A03D8
+ def_special sub_80EB6AC
+ def_special sub_80EB6FC
+ def_special sub_80CA7EC
+ def_special sub_8053A9C
+ def_special sub_8053D68
+ def_special sub_8054440
+ def_special sub_8053D2C
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sp109_CreatePCMenu
+ def_special sub_80CA574
+ def_special sub_80CA618
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_61
+ def_special DoSoftReset
+ def_special sub_80CA2E4
+ def_special sub_80CB498
+ def_special nullsub_75
+ def_special SpawnScriptFieldObject
+ def_special RemoveScriptFieldObject
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CAAAC
+ def_special sub_80CAABC
+ def_special player_get_direction_lower_nybble
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special LeadMonHasEffortRibbon
+ def_special GivLeadMonEffortRibbon
+ def_special ScrSpecial_AreLeadMonEVsMaxedOut
+ def_special sub_8069740
+ def_special sub_8069768
+ def_special sub_8141D9C
+ def_special nullsub_75
+ def_special sub_80CA804
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CAB78
+ def_special nullsub_75
+ def_special sub_80CABD0
+ def_special nullsub_75
+ def_special sub_80CB580
+ def_special nullsub_75
+ def_special sub_80CAC08
+ def_special sub_806E99C
+ def_special sub_80CAC28
+ def_special sub_807FA68
+ def_special sub_807F9D8
+ def_special sub_807FABC
+ def_special sub_8080398
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_807B6C0
+ def_special sp13E_warp_to_last_warp
+ def_special sp13F_fall_to_last_warp
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80E5E70
+ def_special sub_807F998
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_80CAD54
+ def_special sub_80BFC14
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special LoadPlayerBag
+ def_special sub_807F0B0
+ def_special nullsub_75
+ def_special nullsub_75
+ def_special sub_8088F58
+ def_special sub_80CAD7C
+ def_special nullsub_75
+ def_special sub_80E759C
+ def_special GetNameOfEnigmaBerryInPlayerParty
+ def_special nullsub_75
+ def_special sub_810B82C
+ def_special sub_807F904
+ def_special sub_80CA630
+ def_special sub_80CB7C4
+ def_special sub_80CBC5C
+ def_special sub_80CADC4
+ def_special sub_80CADEC
+ def_special sub_805D1A8
+ def_special sub_80CB0A8
+ def_special sub_80CB1D8
+ def_special GetDaycarePokemonCount
+ def_special sub_80CB63C
+ def_special sub_80CBD80
+ def_special sub_80CBDB0
+ def_special sub_80CBDCC
+ def_special sub_810C444
+ def_special sub_80CC7B4
+ def_special ChangeBoxPokemonNickname
+ def_special sub_80CC2BC
+ def_special sub_80CC3CC
+ def_special sub_80CC524
+ def_special sub_8009480
+ def_special sub_8115A24
+ def_special BerryBlenderLinkJoinGroup
+ def_special UnionRoomSpecial
+ def_special sub_814F1D4
+ def_special EnableNationalPokedex
+ def_special sub_80699E0
+ def_special sub_80699BC
+ def_special sub_810C3A4
+ def_special SetFlavorTextFlagFromSpecialVars
+ def_special UpdatePickStateFromSpecialVar8005
+ def_special sub_8054C48
+ def_special sub_8046B40
+ def_special sub_8046B70
+ def_special sub_8046B94
+ def_special sub_8046BBC
+ def_special sub_8046BDC
+ def_special sub_8146E78
+ def_special sub_80CC48C
+ def_special sub_812B220
+ def_special sub_812B234
+ def_special sub_812B248
+ def_special sub_8143FC8
+ def_special sub_810B810
+ def_special sub_811999C
+ def_special sp182_move_string
+ def_special sub_811390C
+ def_special sub_80CC4D4
+ def_special sub_80CC730
+ def_special sub_8110AB4
+ def_special sub_8112364
+ def_special sub_8146CE8
+ def_special get_unknown_box_id
+ def_special sub_809D504
+ def_special sub_809D620
+ def_special sub_812781C
+ def_special sub_8127888
+ def_special sub_80803FC
+ def_special sub_812B35C
+ def_special sub_815D334
+ def_special sub_8149A18
+ def_special sub_806E25C
+ def_special sub_815D9E8
+ def_special sub_814B504
+ def_special sub_80CC8CC
+ def_special sub_80CC948
+ def_special sub_812B478
+ def_special sub_812B484
+ def_special sub_810B82C
+ def_special sub_8099FAC
+ def_special sub_815F094
+ def_special sub_815F114
+ def_special sub_815EEB0
+ def_special sub_815EF5C
+ def_special sub_815F070
+ def_special sub_80CC974
+ def_special sub_814EA7C
+ def_special sub_80CCB94
+ def_special sub_80CCCF8
+ def_special sub_80F39B4
+ def_special sub_8153810
+ def_special sub_809D764
+ def_special sub_809D8C0
+ def_special sub_8147500
+ def_special player_get_direction_lower_nybble
+ def_special sub_80CCDFC
+ def_special sub_80CD008
+ def_special sub_8147594
+ def_special sub_80CD034
+ def_special sub_815D834
+ def_special sub_8088F84
+ def_special sub_80CD074
+ def_special sub_80CD098
+ def_special sub_811B15C
+ def_special sub_80CD0F4
+ def_special sub_809C4A8
+ def_special sub_81537C0
+ def_special sub_809C5FC
+ def_special sub_80CB328
+ def_special sub_80CD154
+ def_special sub_80CD1B4
+ def_special sub_8044838
+gSpecialsEnd::
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 120ab9a99..ec00d1f96 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -4,5 +4,7 @@
#include "global.h"
u16 sub_8164FCC(u8, u8);
+void sub_80E7524(u32 *);
+void ValidateEReaderTrainer(void);
#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/cereader_tool.h b/include/cereader_tool.h
new file mode 100644
index 000000000..28ef526eb
--- /dev/null
+++ b/include/cereader_tool.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_CEREADER_TOOL_H
+#define GUARD_CEREADER_TOOL_H
+
+#include "global.h"
+
+bool32 sub_815D794(u8 *);
+u8 sub_815D6B4(u8 *);
+
+#endif //GUARD_CEREADER_TOOL_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 6dc8d0ccd..c9340a3b4 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -51,12 +51,12 @@
#define VAR_0x402D 0x402D
#define VAR_0x402E 0x402E
-#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
+#define VAR_0x402F 0x402F
-#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
-#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
-#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
-#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
+#define VAR_0x4030 0x4030
+#define VAR_0x4031 0x4031
+#define VAR_0x4032 0x4032
+#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
#define VAR_0x4034 0x4034
#define VAR_0x4035 0x4035
diff --git a/include/decompress.h b/include/decompress.h
index 5f3863dc7..36672dcfd 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -32,4 +32,6 @@ void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src
u32 sub_8034974(const u8 *ptr);
+void sub_800F034(const struct CompressedSpriteSheet *src);
+
#endif // GUARD_DECOMPRESS_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 2b5664420..bd5c9a026 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -37,5 +37,7 @@ bool32 sub_811F8D8(u16 word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
+void sub_80BDE28(void);
+void EnableRareWord(u8);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_data.h b/include/event_data.h
index 2e340f073..13e388bf2 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -34,6 +34,8 @@ bool8 FlagGet(u16 id);
u16 * GetVarPointer(u16 id);
bool32 sub_806E2BC(void);
void sub_806E6FC(void);
+void sub_806E2D0(void);
+void sub_806E370(void);
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
@@ -54,7 +56,7 @@ extern u16 gSpecialVar_MonBoxId;
extern u16 gSpecialVar_MonBoxPos;
extern u16 gSpecialVar_0x8014;
-extern u16 gUnknown_20370D0;
-extern u16 gUnknown_20370C0;
+extern u16 gSpecialVar_Result;
+extern u16 gSpecialVar_0x8004;
#endif // GUARD_EVENT_DATA_H
diff --git a/include/global.berry.h b/include/global.berry.h
index 5c8a43a02..148bbc957 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -1,6 +1,7 @@
#ifndef GUARD_GLOBAL_BERRY_H
#define GUARD_GLOBAL_BERRY_H
+#define BERRY_NAME_LENGTH 6
#define BERRY_NAME_COUNT 7
#define BERRY_ITEM_EFFECT_COUNT 18
diff --git a/include/global.h b/include/global.h
index d5bfc5241..775b3115e 100644
--- a/include/global.h
+++ b/include/global.h
@@ -28,6 +28,8 @@
#endif // __APPLE__
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
+// GF's lingo
+#define NELEMS ARRAY_COUNT
// useful math macros
@@ -264,7 +266,9 @@ struct SaveBlock2
/*0x098*/ struct Time localTimeOffset;
/*0x0A0*/ struct Time lastBerryTreeUpdate;
/*0x0A8*/ u32 field_A8;
- /*0x0AC*/ u8 filler_AC[0x9ec];
+ /*0x0AC*/ u8 filler_AC[0x3F4];
+ /*0x4A0*/ u32 unk_4A0[0x2F];
+ /*0x55c*/ u8 filler_55C[0x53C];
/*0xA98*/ u8 unk_A98[2][16];
/*0xAB8*/ u8 filler_AB8[0x468];
/*0xF20*/ u32 encryptionKey;
@@ -591,6 +595,68 @@ struct FameCheckerSaveData
#define NUM_EASY_CHAT_EXTRA_PHRASES 33
#define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0))
+struct MEventBuffer_3120_Sub
+{
+ u16 unk_00;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04[40];
+ u8 unk_2C[10][40];
+};
+
+struct MEventBuffer_3120
+{
+ u32 crc;
+ struct MEventBuffer_3120_Sub data;
+};
+
+struct MEventBuffer_32E0_Sub
+{
+ u16 unk_00;
+ u16 unk_02;
+ u32 unk_04;
+ u8 unk_08_0:2;
+ u8 unk_08_2:4;
+ u8 unk_08_6:2;
+ u8 unk_09;
+ u8 unk_0A[40];
+ u8 unk_32[40];
+ u8 unk_5A[4][40];
+ u8 unk_FA[40];
+ u8 unk_122[40];
+};
+
+struct MEventBuffer_32E0
+{
+ u32 crc;
+ struct MEventBuffer_32E0_Sub data;
+};
+
+struct MEventBuffer_3430_Sub
+{
+ u16 unk_00;
+ u16 unk_02;
+ u16 unk_04;
+ u16 unk_06;
+ u16 unk_08[2][7];
+};
+
+struct MEventBuffer_3430
+{
+ u32 crc;
+ struct MEventBuffer_3430_Sub data;
+};
+
+struct MEventBuffers
+{
+ /*0x000 0x3120*/ struct MEventBuffer_3120 buffer_000;
+ /*0x1c0 0x32e0*/ struct MEventBuffer_32E0 buffer_1c0;
+ /*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310;
+ /*0x338 0x3458*/ u16 unk_338[4];
+ /*0x340 0x3460*/ struct MysteryEventStruct unk_340;
+ /*0x344 0x3464*/ u32 unk_344[2][5];
+}; // 0x36C 0x348C
+
struct SaveBlock1
{
/*0x0000*/ struct Coords16 pos;
@@ -638,9 +704,8 @@ struct SaveBlock1
/*0x309C*/ u8 giftRibbons[52];
/*0x30D0*/ struct Roamer roamer;
/*0x30EC*/ struct EnigmaBerry enigmaBerry;
- /*0x3120*/ u8 filler3120[0x340];
- /*0x3460*/ struct MysteryEventStruct unk_3460;
- /*0x3464*/ u8 filler_3464[0x1b8];
+ /*0x3120*/ struct MEventBuffers unk_3120;
+ /*0x348C*/ u8 filler_348C[0x190];
/*0x361C*/ struct RamScript ramScript;
/*0x3A08*/ u8 filler3A08[12];
/*0x3A14*/ u8 seen2[DEX_FLAGS_NO];
diff --git a/include/help_system.h b/include/help_system.h
index 3f6a741c6..632788148 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -5,4 +5,6 @@
extern bool8 gUnknown_3005ECC;
+void sub_812B484(void);
+
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 2482aa51f..a6128b9fb 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -7,7 +7,7 @@
// Exported RAM declarations
-extern u16 gUnknown_203AD30;
+extern u16 gSpecialVar_ItemId;
// Exported ROM declarations
void sub_81AAC50(void);
diff --git a/include/link.h b/include/link.h
index 239a59b71..ef8776c64 100644
--- a/include/link.h
+++ b/include/link.h
@@ -146,6 +146,11 @@ extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
+extern u8 gUnknown_3003F64;
+extern u8 gUnknown_3003F84;
+extern u64 gUnknown_3003FB4;
+extern u16 gLinkType;
+
void Task_DestroySelf(u8);
void OpenLink(void);
void CloseLink(void);
@@ -164,7 +169,7 @@ void sub_8007E24(void);
void sub_8007E4C(void);
u8 GetMultiplayerId(void);
u8 bitmask_all_link_players_but_self(void);
-bool8 SendBlock(u8, void *, u16);
+bool8 SendBlock(u8, const void *, u16);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
@@ -196,5 +201,12 @@ void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AC34(void);
+void sub_8009804(void);
+bool8 sub_800AA48(void);
+void sub_800A5BC(void);
+void sub_800AA80(u8);
+void sub_80098D8(void);
+void sub_80098B8(void);
+bool8 sub_800A4BC(void);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
new file mode 100644
index 000000000..6e54fcc6c
--- /dev/null
+++ b/include/link_rfu.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_LINK_RFU_H
+#define GUARD_LINK_RFU_H
+
+void sub_8142504(const u8 *str);
+bool32 mevent_0814257C(u8 * cmdPtr, const u8 * src);
+void sub_80FA190(void);
+void sub_8142420(void);
+
+#endif //GUARD_LINK_RFU_H
diff --git a/include/mail_data.h b/include/mail_data.h
index bbe695203..0275d8dc6 100644
--- a/include/mail_data.h
+++ b/include/mail_data.h
@@ -10,5 +10,6 @@
// Exported ROM declarations
u16 sub_80D45E8(u16, u16 *);
+bool8 itemid_is_mail(u16 itemId);
#endif //GUARD_MAIL_DATA_H
diff --git a/include/main.h b/include/main.h
index 84d356692..adbf1fb5d 100644
--- a/include/main.h
+++ b/include/main.h
@@ -9,6 +9,8 @@ typedef void (*MainCallback)(void);
typedef void (*IntrCallback)(void);
typedef void (*IntrFunc)(void);
+extern IntrFunc gIntrTable[];
+
struct Main
{
/*0x000*/ MainCallback callback1;
@@ -62,5 +64,9 @@ void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
+void RestoreSerialTimer3IntrHandlers(void);
+
+extern const char RomHeaderGameCode[4];
+extern const char RomHeaderSoftwareVersion;
#endif // GUARD_MAIN_H
diff --git a/include/mevent.h b/include/mevent.h
index 7df669da3..d940b212c 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -3,7 +3,51 @@
#include "global.h"
+struct MEventStruct_Unk1442CC
+{
+ u32 unk_00;
+ u16 unk_04;
+ u32 unk_08;
+ u16 unk_0C;
+ u32 unk_10;
+ u16 unk_14;
+ u16 unk_16[4];
+ struct MEventBuffer_3430_Sub unk_20;
+ u8 unk_44;
+ u8 unk_45[7];
+ u8 unk_4C[4];
+ u16 unk_50[6];
+ u8 unk_5C[4];
+ u8 unk_60;
+};
+
+struct MEvent_Str_1
+{
+ u16 unk_000;
+ size_t unk_004;
+ const void * unk_008;
+};
+
+struct MEvent_Str_2
+{
+ u8 fill_00[0x40];
+};
+
+struct MEventBuffer_3120_Sub * sub_8143D58(void);
+struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void);
+struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void);
struct MysteryEventStruct * sub_8143D94(void);
+bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src);
bool32 sub_8143E1C(void);
+bool32 sub_8143EF4(const u8 * src);
+bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data);
+void sub_814410C(struct MEventBuffer_32E0_Sub * buffer);
+bool32 sub_8144254(const u16 * data);
+void sub_81442CC(struct MEventStruct_Unk1442CC * data);
+bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data);
+u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused);
+u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused);
+bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1);
+u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command);
#endif //GUARD_MEVENT_H
diff --git a/include/mevent_server.h b/include/mevent_server.h
new file mode 100644
index 000000000..e593b5dbd
--- /dev/null
+++ b/include/mevent_server.h
@@ -0,0 +1,95 @@
+#ifndef GUARD_MEVENT_SERVER_H
+#define GUARD_MEVENT_SERVER_H
+
+#include "global.h"
+
+#define ME_SEND_BUF_SIZE 0x400
+
+struct mevent_srv_sub
+{
+ s32 seqno;
+ u8 sendPlayerNo;
+ u8 recvPlayerNo;
+ u16 recvIdent;
+ u16 recvCounter;
+ u16 recvCRC;
+ u16 recvSize;
+ u16 sendIdent;
+ u16 sendCounter;
+ u16 sendCRC;
+ u16 sendSize;
+ void * recvBfr;
+ const void * sendBfr;
+ u32 (*recvFunc)(struct mevent_srv_sub *);
+ u32 (*sendFunc)(struct mevent_srv_sub *);
+};
+
+struct send_recv_header
+{
+ u16 ident;
+ u16 crc;
+ u16 size;
+};
+
+struct mevent_cmd_ish
+{
+ u32 instr;
+ u32 parameter;
+};
+
+struct mevent_srv_ish
+{
+ u32 unk_00;
+ u32 param;
+ u32 mainseqno;
+ u32 flag;
+ u32 cmdidx;
+ void * sendBuffer;
+ void * recvBuffer;
+ struct mevent_cmd_ish * cmdBuffer;
+ void * buffer;
+ struct mevent_srv_sub manager;
+};
+
+struct mevent_cmd
+{
+ u32 instr;
+ bool32 flag;
+ void * parameter;
+};
+
+struct mevent_srv_common
+{
+ u32 unk_00;
+ u32 param;
+ u32 mainseqno;
+ u32 cmdidx;
+ const struct mevent_cmd * cmdBuffer;
+ void * recvBuffer;
+ struct MEventBuffer_32E0_Sub * mevent_32e0;
+ struct MEventBuffer_3120_Sub * mevent_3120;
+ struct MEventStruct_Unk1442CC * mevent_unk1442cc;
+ void * sendBuffer1;
+ u32 sendBuffer1Size;
+ void * sendBuffer2;
+ u32 sendBuffer2Size;
+ u32 sendWord;
+ struct mevent_srv_sub manager;
+};
+
+u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr);
+u32 mevent_srv_sub_send(struct mevent_srv_sub * svr);
+void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo);
+void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size);
+void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest);
+
+void mevent_srv_ish_do_init(void);
+u32 mevent_srv_ish_do_exec(u16 * a0);
+void mevent_srv_ish_inc_flag(void);
+void * mevent_srv_ish_get_buffer(void);
+void mevent_srv_ish_set_param(u32 a0);
+void mevent_srv_common_do_init_1(void);
+void mevent_srv_common_do_init_2(void);
+u32 mevent_srv_init_do_exec(u16 * a0);
+
+#endif //GUARD_MEVENT_SERVER_H
diff --git a/include/mystery_event_msg.h b/include/mystery_event_msg.h
new file mode 100644
index 000000000..e96c3069b
--- /dev/null
+++ b/include/mystery_event_msg.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_MYSTERY_EVENT_MSG_H
+#define GUARD_MYSTERY_EVENT_MSG_H
+
+#include <gba/gba.h>
+
+extern const u8 gText_MysteryGiftBerry[];
+extern const u8 gText_MysteryGiftBerryTransform[];
+extern const u8 gText_MysteryGiftBerryObtained[];
+extern const u8 gText_MysteryGiftSpecialRibbon[];
+extern const u8 gText_MysteryGiftNationalDex[];
+extern const u8 gText_MysteryGiftRareWord[];
+extern const u8 gText_MysteryGiftSentOver[];
+extern const u8 gText_MysteryGiftFullParty[];
+extern const u8 gText_MysteryGiftNewTrainer[];
+extern const u8 gText_MysteryGiftNewAdversaryInBattleTower[];
+extern const u8 gText_MysteryGiftCantBeUsed[];
+
+#endif // GUARD_MYSTERY_EVENT_MSG_H
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
index 1ba1464fa..be64663ed 100644
--- a/include/mystery_event_script.h
+++ b/include/mystery_event_script.h
@@ -7,4 +7,7 @@ u32 RunMysteryEventScript(u8 *);
void SetMysteryEventScriptStatus(u32 val);
u16 GetRecordMixingGift(void);
+void sub_80DA89C(u8 *);
+bool32 sub_80DA8B0(u32 *);
+
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h
new file mode 100644
index 000000000..24bf85a13
--- /dev/null
+++ b/include/mystery_gift_menu.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_MYSTERY_GIFT_MENU_H
+#define GUARD_MYSTERY_GIFT_MENU_H
+
+extern bool8 gUnknown_203F3B8;
+
+void sub_81422FC(void);
+void sub_8142344(bool8, bool32);
+
+#endif //GUARD_MYSTERY_GIFT_MENU_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index da58a2d83..593715b7d 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -10,5 +10,10 @@ void sub_80D2F68(u16 iconId);
u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
void sub_80D2FF0(u16 iconId);
void sub_80D2EF8(struct Sprite *sprite);
+void sub_809707C(void);
+void FreeMonIconPalettes(void);
+u16 sub_8096FD4(u16);
+u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32);
+void sub_8097070(struct Sprite *);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/script.h b/include/script.h
index 9e26b8a28..ebb4caa86 100644
--- a/include/script.h
+++ b/include/script.h
@@ -62,5 +62,8 @@ u8 *GetRamScript(u8 objectId, u8 *script);
bool32 sub_80991F8(void);
u8 *sub_8099244(void);
void sub_80992A0(u8 *script, u16 scriptSize);
+bool32 sub_8069DFC(void);
+void sub_8069EA4(u8 * script, u16 scriptSize);
+u8 * sub_8069E48(void);
#endif // GUARD_SCRIPT_H
diff --git a/include/strings.h b/include/strings.h
index 90c84c9b9..40021a01d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -89,5 +89,7 @@ extern const u8 gText_Cancel4[];
extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
+extern const u8 gText_EggNickname[];
+extern const u8 gText_Pokemon[];
#endif //GUARD_STRINGS_H
diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h
new file mode 100644
index 000000000..cc1cbb7ce
--- /dev/null
+++ b/include/unk_815c27c.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_UNK_815C27C_H
+#define GUARD_UNK_815C27C_H
+
+void sub_815C6D4(void);
+void sub_815C6C4(void);
+void sub_815C8C8(void);
+void sub_815C960(void);
+void sub_815C91C(void);
+u16 sub_815C498(u8, size_t, const void *, u8);
+
+#endif //GUARD_UNK_815C27C_H
diff --git a/include/util.h b/include/util.h
index a22cc77fa..e0034d816 100644
--- a/include/util.h
+++ b/include/util.h
@@ -12,8 +12,8 @@ u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
int CountTrailingZeroBits(u32 value);
-u16 CalcCRC16(u8 *data, s32 length);
-u16 CalcCRC16WithTable(u8 *data, u32 length);
+u16 CalcCRC16(const u8 *data, s32 length);
+u16 CalcCRC16WithTable(const u8 *data, u32 length);
u32 CalcByteArraySum(const u8* data, u32 length);
#endif // GUARD_UTIL_H
diff --git a/ld_script.txt b/ld_script.txt
index 2a42825c9..d37858b3f 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -182,7 +182,7 @@ SECTIONS {
asm/roulette_util.o(.text);
asm/cable_car_util.o(.text);
src/save.o(.text);
- asm/mystery_event_script.o(.text);
+ src/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
asm/battle_anim_sound_tasks.o(.text);
asm/battle_controller_safari.o(.text);
@@ -243,9 +243,10 @@ SECTIONS {
asm/roamer.o(.text);
asm/mystery_gift_menu.o(.text);
asm/link_rfu_4.o(.text);
- asm/mevent.o(.text);
- asm/mevent_server.o(.text);
- asm/mevent_8145654.o(.text);
+ src/mevent.o(.text);
+ src/mevent_server_helpers.o(.text);
+ src/mevent_server.o(.text);
+ src/mevent_8145654.o(.text);
src/menews_jisan.o(.text);
asm/seagallop.o(.text);
asm/unk_8147500.o(.text);
@@ -378,11 +379,18 @@ SECTIONS {
data/data_83FECCC.o(.rodata.8456C74);
src/fame_checker.o(.rodata);
data/data_845FD54.o(.rodata);
+ src/mevent.o(.rodata);
+ src/mevent_server_helpers.o(.rodata);
+ src/mevent_server.o(.rodata);
+ src/mevent_8145654.o(.rodata);
+ data/data_8466FB8.o(.rodata);
src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4);
data/data_8468C98.o(.rodata);
src/quest_log_8150454.o(.rodata);
data/data_8471F00.o(.rodata);
+ src/mystery_event_msg.o(.rodata);
+ data/mystery_event_msg.o(.rodata);
src/m4a_tables.o(.rodata);
data/sound_data.o(.rodata);
} =0
diff --git a/src/fame_checker.c b/src/fame_checker.c
index ed38406cb..bbbe02c58 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -1038,9 +1038,9 @@ static void FCSetup_ResetBGCoords(void)
void SetFlavorTextFlagFromSpecialVars(void)
{
- if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6)
+ if (gSpecialVar_0x8004 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6)
{
- gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].flavorTextFlags |= (1 << gSpecialVar_0x8005);
+ gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].flavorTextFlags |= (1 << gSpecialVar_0x8005);
gSpecialVar_0x8005 = FCPICKSTATE_SILHOUETTE;
UpdatePickStateFromSpecialVar8005();
}
@@ -1048,15 +1048,15 @@ void SetFlavorTextFlagFromSpecialVars(void)
void UpdatePickStateFromSpecialVar8005(void)
{
- if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3)
+ if (gSpecialVar_0x8004 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3)
{
if (gSpecialVar_0x8005 == FCPICKSTATE_NO_DRAW)
return;
if ( gSpecialVar_0x8005 == FCPICKSTATE_SILHOUETTE
- && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED
+ && gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].pickState == FCPICKSTATE_COLORED
)
return;
- gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState = gSpecialVar_0x8005;
+ gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].pickState = gSpecialVar_0x8005;
}
}
diff --git a/src/menews_jisan.c b/src/menews_jisan.c
index 13c787df7..b4fe080bf 100644
--- a/src/menews_jisan.c
+++ b/src/menews_jisan.c
@@ -107,7 +107,7 @@ void sub_8146CA4(void)
u16 sub_8146CE8(void)
{
- u16 *r6 = &gUnknown_20370D0;
+ u16 *r6 = &gSpecialVar_Result;
struct MysteryEventStruct *r4 = sub_8143D94();
u16 r5;
diff --git a/src/mevent.c b/src/mevent.c
new file mode 100644
index 000000000..7a7fcc399
--- /dev/null
+++ b/src/mevent.c
@@ -0,0 +1,1016 @@
+#include "global.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "malloc.h"
+#include "sound.h"
+#include "easy_chat.h"
+#include "main.h"
+#include "task.h"
+#include "decompress.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "unk_815c27c.h"
+#include "util.h"
+#include "script.h"
+#include "event_data.h"
+#include "battle_tower.h"
+#include "new_game.h"
+#include "string_util.h"
+#include "menews_jisan.h"
+#include "cereader_tool.h"
+#include "mystery_gift_menu.h"
+#include "help_system.h"
+#include "mevent.h"
+
+struct MEventTaskData1
+{
+ u16 t00;
+ u16 t02;
+ u16 t04;
+ u16 t06;
+ u8 t08;
+ u8 t09;
+ u8 t0A;
+ u8 t0B;
+ u8 t0C;
+ u8 t0D;
+ u8 t0E;
+ struct MEvent_Str_2 *t10;
+};
+
+void sub_8143910(u8 taskId);
+bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * src);
+void sub_8143E9C(void);
+void sub_8143ED0(void);
+bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * src);
+void sub_814407C(void);
+void sub_81440B4(void);
+void sub_8144824(u32, u32, u32 *, s32);
+void sub_8144790(void);
+
+extern const u8 gUnknown_841DE52[];
+extern const u8 gUnknown_841DE53[];
+extern const u8 gUnknown_841DE54[];
+extern const u8 gUnknown_841DE7C[];
+extern const u8 gUnknown_841DE7D[];
+extern const u8 gUnknown_841DE95[];
+extern const u8 gUnknown_841DE96[];
+extern const u8 gUnknown_841DE97[];
+extern const u8 gUnknown_841DE98[];
+extern const u8 gUnknown_841DE99[];
+extern const u8 gUnknown_841DE9A[];
+extern const u8 gUnknown_841DE9B[];
+extern const u8 gUnknown_841DE9C[];
+extern const u8 gUnknownSerialData_Start[];
+extern const u8 gUnknownSerialData_End[];
+
+const u16 gUnknown_8466F00[] = {
+ 0x02a7,
+ 0x02a8,
+ 0x02a9,
+ 0x02aa,
+ 0x02ab,
+ 0x02ac,
+ 0x02ad,
+ 0x02ae,
+ 0x02af,
+ 0x02b0,
+ 0x02b1,
+ 0x02b2,
+ 0x02b3,
+ 0x02b4,
+ 0x02b5,
+ 0x02b6,
+ 0x02b7,
+ 0x02b8,
+ 0x02b9,
+ 0x02ba
+};
+
+struct MEvent_Str_1 gUnknown_3005ED0;
+
+static EWRAM_DATA bool32 gUnknown_203F3BC = FALSE;
+
+void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2)
+{
+ vu16 imeBak = REG_IME;
+ REG_IME = 0;
+ gIntrTable[1] = sub_815C6D4;
+ gIntrTable[2] = sub_815C6C4;
+ sub_815C8C8();
+ sub_815C960();
+ REG_IE |= INTR_FLAG_VCOUNT;
+ REG_IME = imeBak;
+ a0->unk_000 = 0;
+ a0->unk_004 = a1;
+ a0->unk_008 = a2;
+}
+
+void sub_8143644(struct MEvent_Str_1 *unused)
+{
+ vu16 imeBak = REG_IME;
+ REG_IME = 0;
+ sub_815C960();
+ sub_815C91C();
+ RestoreSerialTimer3IntrHandlers();
+ REG_IME = imeBak;
+}
+
+u8 sub_8143674(struct MEvent_Str_1 *a0)
+{
+ u8 resp = 0;
+ a0->unk_000 = sub_815C498(1, a0->unk_004, a0->unk_008, 0);
+ if ((a0->unk_000 & 0x13) == 0x10)
+ resp = 1;
+ if (a0->unk_000 & 8)
+ resp = 2;
+ if (a0->unk_000 & 4)
+ resp = 3;
+ gUnknown_3003F84 = 0;
+ return resp;
+}
+
+void sub_81436BC(void)
+{
+ memset(gDecompressionBuffer, 0, 0x2000);
+ gLinkType = 0x5502;
+ sub_8009804();
+ SetSuppressLinkErrorMessage(TRUE);
+}
+
+bool32 sub_81436EC(void)
+{
+ vu16 imeBak = REG_IME;
+ u16 data[4];
+ REG_IME = 0;
+ *(u64 *)data = gUnknown_3003FB4;
+ REG_IME = imeBak;
+ if ( data[0] == 0xB9A0
+ && data[1] == 0xCCD0
+ && data[2] == 0xFFFF
+ && data[3] == 0xFFFF
+ )
+ return TRUE;
+ return FALSE;
+}
+
+bool32 sub_814374C(void)
+{
+ if (sub_800AA48() && GetLinkPlayerCount_2() == 2)
+ return TRUE;
+ return FALSE;
+}
+
+u32 sub_8143770(u8 * r4, u16 * r5)
+{
+ if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred())
+ {
+ *r4 = 0;
+ return 3;
+ }
+ switch (*r4)
+ {
+ case 0:
+ if (sub_800AA48() && GetLinkPlayerCount_2() > 1)
+ {
+ *r4 = 1;
+ ;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ *r4 = 0;
+ return 1;
+ }
+ break;
+ case 1:
+ if (++(*r5) > 5)
+ {
+ *r5 = 0;
+ *r4 = 2;
+ }
+ break;
+ case 2:
+ if (GetLinkPlayerCount_2() == 2)
+ {
+ PlaySE(SE_TOY_G);
+ sub_800A5BC();
+ *r5 = 0;
+ *r4 = 3;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ *r4 = 0;
+ return 1;
+ }
+ break;
+ case 3:
+ if (++(*r5) > 30)
+ {
+ *r4 = 0;
+ return 5;
+ }
+ else if (IsLinkConnectionEstablished())
+ {
+ if (gUnknown_3003F64)
+ {
+ if (IsLinkPlayerDataExchangeComplete())
+ {
+ *r4 = 0;
+ return 2;
+ }
+ else
+ *r4 = 4;
+ }
+ else
+ *r4 = 3;
+ }
+ break;
+ case 4:
+ sub_800AA80(0);
+ *r4 = 5;
+ break;
+ case 5:
+ if (!gUnknown_3003F64)
+ {
+ *r4 = 0;
+ return 4;
+ }
+ break;
+ }
+ return 0;
+}
+
+void sub_81438A0(void)
+{
+ u8 taskId = CreateTask(sub_8143910, 0);
+ struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
+ data->t08 = 0;
+ data->t09 = 0;
+ data->t0A = 0;
+ data->t0B = 0;
+ data->t0C = 0;
+ data->t0D = 0;
+ data->t00 = 0;
+ data->t02 = 0;
+ data->t04 = 0;
+ data->t06 = 0;
+ data->t0E = 0;
+ data->t10 = AllocZeroed(sizeof(struct MEvent_Str_2));
+}
+
+void sub_81438E8(u16 *a0)
+{
+ *a0 = 0;
+}
+
+bool32 sub_81438F0(u16 * a0, u16 a1)
+{
+ if (++(*a0) > a1)
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8143910(u8 taskId)
+{
+ struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
+ switch (data->t08)
+ {
+ case 0:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE52))
+ data->t08 = 1;
+ break;
+ case 1:
+ sub_81436BC();
+ sub_81438E8(&data->t00);
+ data->t08 = 2;
+ break;
+ case 2:
+ if (sub_81438F0(&data->t00, 10))
+ data->t08 = 3;
+ break;
+ case 3:
+ if (!sub_814374C())
+ {
+ sub_80098B8();
+ data->t08 = 4;
+ }
+ else
+ data->t08 = 13;
+ break;
+ case 4:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE53))
+ {
+ sub_8142504(gUnknown_841DE54);
+ sub_81438E8(&data->t00);
+ data->t08 = 5;
+ }
+ break;
+ case 5:
+ if (sub_81438F0(&data->t00, 90))
+ {
+ sub_81436BC();
+ data->t08 = 6;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ sub_81438E8(&data->t00);
+ PlaySE(SE_SELECT);
+ data->t08 = 23;
+ }
+ break;
+ case 6:
+ if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_80098B8();
+ sub_81438E8(&data->t00);
+ data->t08 = 23;
+ }
+ else if (GetLinkPlayerCount_2() > 1)
+ {
+ sub_81438E8(&data->t00);
+ sub_80098B8();
+ data->t08 = 7;
+ }
+ else if (sub_81436EC())
+ {
+ PlaySE(SE_SELECT);
+ sub_80098B8();
+ sub_81438E8(&data->t00);
+ data->t08 = 8;
+ }
+ else if (sub_81438F0(&data->t00, 10))
+ {
+ sub_80098B8();
+ sub_81436BC();
+ sub_81438E8(&data->t00);
+ }
+ break;
+ case 7:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE7C))
+ data->t08 = 4;
+ break;
+ case 8:
+ sub_8142504(gUnknown_841DE95);
+ sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start);
+ data->t08 = 9;
+ break;
+ case 9:
+ data->t0E = sub_8143674(&gUnknown_3005ED0);
+ if (data->t0E != 0)
+ data->t08 = 10;
+ break;
+ case 10:
+ sub_8143644(&gUnknown_3005ED0);
+ if (data->t0E == 3)
+ data->t08 = 20;
+ else if (data->t0E == 1)
+ {
+ sub_81438E8(&data->t00);
+ sub_8142504(gUnknown_841DE9B);
+ data->t08 = 11;
+ }
+ else
+ data->t08 = 0;
+ break;
+ case 11:
+ if (sub_81438F0(&data->t00, 840))
+ data->t08 = 12;
+ break;
+ case 12:
+ sub_81436BC();
+ sub_8142504(gUnknown_841DE98);
+ data->t08 = 13;
+ break;
+ case 13:
+ switch (sub_8143770(&data->t09, &data->t00))
+ {
+ case 0:
+ break;
+ case 2:
+ sub_8142504(gUnknown_841DE95);
+ data->t08 = 14;
+ break;
+ case 1:
+ PlaySE(SE_SELECT);
+ sub_80098B8();
+ data->t08 = 23;
+ break;
+ case 5:
+ sub_80098B8();
+ data->t08 = 21;
+ break;
+ case 3:
+ case 4:
+ sub_80098B8();
+ data->t08 = 20;
+ break;
+ }
+ break;
+ case 14:
+ if (HasLinkErrorOccurred())
+ {
+ sub_80098B8();
+ data->t08 = 20;
+ }
+ else if (GetBlockReceivedStatus())
+ {
+ ResetBlockReceivedFlags();
+ data->t08 = 15;
+ }
+ break;
+ case 15:
+ data->t0E = sub_815D6B4(gDecompressionBuffer);
+ sub_800AA80(data->t0E);
+ data->t08 = 16;
+ break;
+ case 16:
+ if (!gUnknown_3003F64)
+ {
+ if (data->t0E == 1)
+ data->t08 = 17;
+ else
+ data->t08 = 20;
+ }
+ break;
+ case 17:
+ if (sub_815D794(gDecompressionBuffer))
+ {
+ sub_8142504(gUnknown_841DE99);
+ sub_81438E8(&data->t00);
+ data->t08 = 18;
+ }
+ else
+ data->t08 = 22;
+ break;
+ case 18:
+ if (sub_81438F0(&data->t00, 120))
+ {
+ sub_8142504(gUnknown_841DE9A);
+ PlayFanfare(258);
+ data->t08 = 19;
+ }
+ break;
+ case 19:
+ if (IsFanfareTaskInactive() &&JOY_NEW(A_BUTTON | B_BUTTON))
+ data->t08 = 26;
+ break;
+ case 23:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE7D))
+ data->t08 = 26;
+ break;
+ case 20:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE96))
+ data->t08 = 0;
+ break;
+ case 21:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE97))
+ data->t08 = 0;
+ break;
+ case 22:
+ if (mevent_0814257C(&data->t09, gUnknown_841DE9C))
+ data->t08 = 0;
+ break;
+ case 26:
+ sub_812B484();
+ Free(data->t10);
+ DestroyTask(taskId);
+ SetMainCallback2(sub_81422FC);
+ break;
+ }
+}
+
+void sub_8143D24(void)
+{
+ CpuFill32(0, &gSaveBlock1Ptr->unk_3120, sizeof(gSaveBlock1Ptr->unk_3120));
+ sub_8143ED0();
+ sub_80BDE28();
+}
+
+struct MEventBuffer_3120_Sub * sub_8143D58(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.buffer_000.data;
+}
+
+struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+}
+
+struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+}
+
+struct MysteryEventStruct * sub_8143D94(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.unk_340;
+}
+
+u16 * sub_8143DA8(void)
+{
+ return gSaveBlock1Ptr->unk_3120.unk_338;
+}
+
+void sub_8143DBC(void)
+{
+ sub_8143E9C();
+}
+
+bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src)
+{
+ if (!sub_8143E64(src))
+ return FALSE;
+ sub_8143E9C();
+ gSaveBlock1Ptr->unk_3120.buffer_000.data = *src;
+ gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub));
+ return TRUE;
+}
+
+bool32 sub_8143E1C(void)
+{
+ if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc)
+ return FALSE;
+ if (!sub_8143E64(&gSaveBlock1Ptr->unk_3120.buffer_000.data))
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data)
+{
+ if (data->unk_00 == 0)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8143E78(void)
+{
+ const struct MEventBuffer_3120_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ if (data->unk_02 == 0)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_8143E9C(void)
+{
+ CpuFill32(0, sub_8143D58(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data));
+ gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0;
+}
+
+void sub_8143ED0(void)
+{
+ CpuFill32(0, sub_8143D94(), sizeof(struct MysteryEventStruct));
+ sub_8146C88();
+}
+
+bool32 sub_8143EF4(const u8 * src)
+{
+ const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ u32 i;
+ if (!sub_8143E1C())
+ return FALSE;
+ for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
+ {
+ if (r5[i] != src[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8143F38(void)
+{
+ sub_814407C();
+ sub_81440B4();
+ sub_8144790();
+ ClearRamScript();
+ sub_806E2D0();
+ sub_806E370();
+ sub_80E7524(gSaveBlock2Ptr->unk_4A0);
+}
+
+bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data)
+{
+ struct MEventBuffer_3430_Sub * r2;
+ struct MEventBuffer_32E0_Sub * r1;
+ if (!sub_8144018(data))
+ return FALSE;
+ sub_8143F38();
+ memcpy(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub));
+ gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ r2 = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ r1 = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ r2->unk_06 = r1->unk_02;
+ return TRUE;
+}
+
+bool32 sub_8143FC8(void)
+{
+ if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
+ return FALSE;
+ if (!sub_8144018(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data))
+ return FALSE;
+ if (!sub_8069DFC())
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data)
+{
+ if (data->unk_00 == 0)
+ return FALSE;
+ if (data->unk_08_0 > 2)
+ return FALSE;
+ if (!(data->unk_08_6 == 0 || data->unk_08_6 == 1 || data->unk_08_6 == 2))
+ return FALSE;
+ if (data->unk_08_2 > 7)
+ return FALSE;
+ if (data->unk_09 > 7)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8144054(void)
+{
+ const struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_6 == 0)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_814407C(void)
+{
+ CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0;
+}
+
+void sub_81440B4(void)
+{
+ CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16));
+ gSaveBlock1Ptr->unk_3120.buffer_310.crc = 0;
+}
+
+u16 sub_81440E8(void)
+{
+ if (sub_8143FC8())
+ return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00;
+ return 0;
+}
+
+void sub_814410C(struct MEventBuffer_32E0_Sub * buffer)
+{
+ if (buffer->unk_08_6 == 1)
+ buffer->unk_08_6 = 0;
+}
+
+bool32 sub_8144124(u16 a0)
+{
+ if (a0 >= 1000 && a0 < 1020)
+ return TRUE;
+ return FALSE;
+}
+
+bool32 sub_8144144(void)
+{
+ u16 value = sub_81440E8();
+ if (!sub_8144124(value))
+ return FALSE;
+ if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+s32 sub_8144184(const struct MEventBuffer_3430_Sub * data, s32 size)
+{
+ s32 r3 = 0;
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (data->unk_08[1][i] && data->unk_08[0][i])
+ r3++;
+ }
+ return r3;
+}
+
+bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size)
+{
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (data1->unk_08[1][i] == data2[1])
+ return TRUE;
+ if (data1->unk_08[0][i] == data2[0])
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81441F0(const u16 * data)
+{
+ if (data[1] == 0)
+ return FALSE;
+ if (data[0] == 0)
+ return FALSE;
+ if (data[0] >= NUM_SPECIES)
+ return FALSE;
+ return TRUE;
+}
+
+s32 sub_8144218(void)
+{
+ struct MEventBuffer_32E0_Sub * data;
+ if (!sub_8143FC8())
+ return 0;
+ data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 != 1)
+ return 0;
+ return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09);
+}
+
+bool32 sub_8144254(const u16 * data)
+{
+ struct MEventBuffer_32E0_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ s32 size = buffer->unk_09;
+ s32 i;
+ if (!sub_81441F0(data))
+ return FALSE;
+ if (sub_81441AC(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data, size))
+ return FALSE;
+ for (i = 0; i < size; i++)
+ {
+ if (gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] == 0)
+ {
+ gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] = data[1];
+ gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] = data[0];
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_81442CC(struct MEventStruct_Unk1442CC * data)
+{
+ s32 i;
+ CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC));
+ data->unk_00 = 0x101;
+ data->unk_04 = 1;
+ data->unk_08 = 1;
+ data->unk_0C = 1;
+ data->unk_10 = 1;
+ if (sub_8143FC8())
+ {
+ data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
+ data->unk_20 = *sav1_get_mevent_buffer_2();
+ data->unk_44 = sav1_get_mevent_buffer_1()->unk_09;
+ }
+ else
+ data->unk_14 = 0;
+ for (i = 0; i < 4; i++)
+ data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i];
+ CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy(data->unk_45, gSaveBlock2Ptr->playerName);
+ for (i = 0; i < 6; i++)
+ data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i];
+ memcpy(data->unk_5C, RomHeaderGameCode, 4);
+ data->unk_60 = RomHeaderSoftwareVersion;
+}
+
+bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data)
+{
+ if (data->unk_00 != 0x101)
+ return FALSE;
+ if (!(data->unk_04 & 1))
+ return FALSE;
+ if (!(data->unk_08 & 1))
+ return FALSE;
+ if (!(data->unk_0C & 1))
+ return FALSE;
+ if (!(data->unk_10 & 0x0F))
+ return FALSE;
+ return TRUE;
+}
+
+u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused)
+{
+ if (a1->unk_14 == 0)
+ return 0;
+ if (*a0 == a1->unk_14)
+ return 1;
+ return 2;
+}
+
+u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused)
+{
+ s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44);
+ if (r4 == 0)
+ return 1;
+ if (sub_81441AC(&a1->unk_20, a0, a1->unk_44))
+ return 3;
+ if (r4 == 1)
+ return 4;
+ return 2;
+}
+
+bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ {
+ if (a0->unk_16[i] != a1[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0)
+{
+ return sub_8144184(&a0->unk_20, a0->unk_44);
+}
+
+u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command)
+{
+ switch (command)
+ {
+ case 0:
+ return a0->unk_20.unk_00;
+ case 1:
+ return a0->unk_20.unk_02;
+ case 2:
+ return a0->unk_20.unk_04;
+ case 3:
+ return sub_814449C(a0);
+ case 4:
+ return a0->unk_44;
+ default:
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825);
+ return 0;
+ }
+}
+
+void sub_814451C(u32 command)
+{
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ u16 * dest = NULL;
+ switch (command)
+ {
+ case 0:
+ dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_00;
+ break;
+ case 1:
+ dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_02;
+ break;
+ case 2:
+ dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_04;
+ break;
+ case 3:
+ break;
+ case 4:
+ break;
+ }
+ if (dest == NULL)
+ {
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868);
+ }
+ else if (++(*dest) > 999)
+ {
+ *dest = 999;
+ }
+ }
+}
+
+u16 sub_81445C0(u32 command)
+{
+ switch (command)
+ {
+ case 0:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return buffer->unk_00;
+ }
+ break;
+ }
+ case 1:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return buffer->unk_02;
+ }
+ break;
+ }
+ case 2:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return buffer->unk_04;
+ }
+ break;
+ }
+ case 3:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 1)
+ return sub_8144218();
+ break;
+ }
+ case 4:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 1)
+ return data->unk_09;
+ break;
+ }
+ }
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 913);
+ return 0;
+}
+
+void sub_81446C4(void)
+{
+ gUnknown_203F3BC = FALSE;
+}
+
+bool32 sub_81446D0(u16 a0)
+{
+ gUnknown_203F3BC = FALSE;
+ if (a0 == 0)
+ return FALSE;
+ if (!sub_8143FC8())
+ return FALSE;
+ if (gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00 != a0)
+ return FALSE;
+ gUnknown_203F3BC = TRUE;
+ return TRUE;
+}
+
+void sub_8144714(u32 a0, u32 a1)
+{
+ if (gUnknown_203F3BC)
+ {
+ switch (a0)
+ {
+ case 2:
+ sub_8144824(2, a1, gSaveBlock1Ptr->unk_3120.unk_344[1], 5);
+ break;
+ case 0:
+ sub_8144824(0, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5);
+ break;
+ case 1:
+ sub_8144824(1, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5);
+ break;
+ default:
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 988);
+ }
+ }
+}
+
+void sub_8144790(void)
+{
+ CpuFill32(0, gSaveBlock1Ptr->unk_3120.unk_344, sizeof(gSaveBlock1Ptr->unk_3120.unk_344));
+}
+
+bool32 sub_81447BC(u32 a0, u32 * a1, s32 size)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < size; i++)
+ {
+ if (a1[i] == a0)
+ break;
+ }
+ if (i == size)
+ {
+ for (j = size - 1; j > 0; j--)
+ {
+ a1[j] = a1[j - 1];
+ }
+ a1[0] = a0;
+ return TRUE;
+ }
+ else
+ {
+ for (j = i; j > 0; j--)
+ {
+ a1[j] = a1[j - 1];
+ }
+ a1[0] = a0;
+ return FALSE;
+ }
+}
+
+void sub_8144824(u32 a0, u32 a1, u32 * a2, s32 a3)
+{
+ if (sub_81447BC(a1, a2, a3))
+ sub_814451C(a0);
+}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
new file mode 100644
index 000000000..c39d76f25
--- /dev/null
+++ b/src/mevent_8145654.c
@@ -0,0 +1,793 @@
+#include "global.h"
+#include "constants/species.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "decompress.h"
+#include "malloc.h"
+#include "menu.h"
+#include "pokemon_icon.h"
+#include "mystery_gift_menu.h"
+#include "menu_indicators.h"
+#include "string_util.h"
+#include "link_rfu.h"
+#include "mevent.h"
+
+struct UnkStruct_8467FB8
+{
+ u8 textPal1:4;
+ u8 textPal2:4;
+ u8 textPal3:4;
+ u8 textPal4:4;
+ const u8 * tiles;
+ const u8 * map;
+ const u16 * pal;
+};
+
+struct UnkStruct_203F3C8_02DC
+{
+ u8 unk_00;
+ u8 unk_01[41];
+ u8 unk_42[4];
+};
+
+struct UnkStruct_203F3C8
+{
+ /*0000*/ struct MEventBuffer_32E0_Sub unk_0000;
+ /*014c*/ struct MEventBuffer_3430_Sub unk_014C;
+ /*0170*/ const struct UnkStruct_8467FB8 * unk_0170;
+ /*0174*/ u8 unk_0174;
+ /*0175*/ u8 unk_0175;
+ /*0176*/ u16 unk_0176[3];
+ /*017C*/ u8 unk_017C;
+ /*017D*/ u8 unk_017D[7][2];
+ /*018B*/ u8 unk_018B[41];
+ /*01B4*/ u8 unk_01B4[41];
+ /*01DD*/ u8 unk_01DD[7];
+ /*01E4*/ u8 unk_01E4[4][41];
+ /*0288*/ u8 unk_0288[41];
+ /*02B1*/ u8 unk_02B1[41];
+ /*02DC*/ struct UnkStruct_203F3C8_02DC unk_02DC[8];
+ /*045C*/ u8 buffer_045C[0x1000];
+};
+
+EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL;
+
+void sub_8145A98(void);
+void sub_8145D18(u8 whichWindow);
+void sub_8146060(void);
+void sub_81461D8(void);
+
+extern const struct OamData gUnknown_83AC9F8;
+
+const struct TextColor gUnknown_8467068[] = {
+ {0, 2, 3},
+ {0, 1, 2}
+};
+const u8 ALIGNED(4) gUnknown_8467070[3] = {7, 4, 7};
+const struct WindowTemplate gUnknown_8467074[] = {
+ {0x01, 0x01, 0x01, 0x19, 0x04, 0x0f, 0x029c},
+ {0x01, 0x01, 0x06, 0x1c, 0x08, 0x0f, 0x01bc},
+ {0x01, 0x01, 0x0e, 0x1c, 0x05, 0x0f, 0x0130}
+};
+
+const u16 gUnknown_846708C[] = INCBIN_U16("data/graphics/mevent/pal_46708C.gbapal");
+const u16 gUnknown_84670AC[] = INCBIN_U16("data/graphics/mevent/pal_4670AC.gbapal");
+const u16 gUnknown_84670CC[] = INCBIN_U16("data/graphics/mevent/pal_4670CC.gbapal");
+const u16 gUnknown_84670EC[] = INCBIN_U16("data/graphics/mevent/pal_4670EC.gbapal");
+const u16 gUnknown_846710C[] = INCBIN_U16("data/graphics/mevent/pal_46710C.gbapal");
+const u16 gUnknown_846712C[] = INCBIN_U16("data/graphics/mevent/pal_46712C.gbapal");
+const u16 gUnknown_846714C[] = INCBIN_U16("data/graphics/mevent/pal_46714C.gbapal");
+const u16 gUnknown_846716C[] = INCBIN_U16("data/graphics/mevent/pal_46716C.gbapal");
+const u8 gUnknown_846718C[] = INCBIN_U8("data/graphics/mevent/gfx_46718C.4bpp.lz");
+const u8 gUnknown_8467288[] = INCBIN_U8("data/graphics/mevent/tilemap_467288.bin.lz");
+const u8 gUnknown_846737C[] = INCBIN_U8("data/graphics/mevent/gfx_46737C.4bpp.lz");
+const u8 gUnknown_8467470[] = INCBIN_U8("data/graphics/mevent/tilemap_467470.bin.lz");
+const u8 gUnknown_8467558[] = INCBIN_U8("data/graphics/mevent/gfx_467558.4bpp.lz");
+const u8 gUnknown_846762C[] = INCBIN_U8("data/graphics/mevent/tilemap_46762C.bin.lz");
+const u8 gUnknown_8467700[] = INCBIN_U8("data/graphics/mevent/gfx_467700.4bpp.lz");
+const u8 gUnknown_8467934[] = INCBIN_U8("data/graphics/mevent/tilemap_467934.bin.lz");
+const u8 gUnknown_8467A7C[] = INCBIN_U8("data/graphics/mevent/gfx_467A7C.4bpp.lz");
+const u8 gUnknown_8467CAC[] = INCBIN_U8("data/graphics/mevent/tilemap_467CAC.bin.lz");
+const u16 gUnknown_8467DF4[] = INCBIN_U16("data/graphics/mevent/pal_467DF4.gbapal");
+const u16 gUnknown_8467E14[] = INCBIN_U16("data/graphics/mevent/pal_467E14.gbapal");
+const u16 gUnknown_8467E34[] = INCBIN_U16("data/graphics/mevent/pal_467E34.gbapal");
+const u16 gUnknown_8467E54[] = INCBIN_U16("data/graphics/mevent/pal_467E54.gbapal");
+const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapal");
+const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal");
+const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal");
+const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal");
+const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467EF4.4bpp.lz");
+
+const struct CompressedSpriteSheet gUnknown_8467F58 = {
+ gUnknown_8467EF4, 0x100, 0x8000
+};
+const struct SpritePalette gUnknown_8467F60[] = {
+ {gUnknown_8467DF4, 0x8000},
+ {gUnknown_8467E14, 0x8000},
+ {gUnknown_8467E34, 0x8000},
+ {gUnknown_8467E54, 0x8000},
+ {gUnknown_8467E74, 0x8000},
+ {gUnknown_8467E94, 0x8000},
+ {gUnknown_8467EB4, 0x8000},
+ {gUnknown_8467ED4, 0x8000}
+};
+const struct SpriteTemplate gUnknown_8467FA0 = {
+ 0x8000, 0x8000, &gUnknown_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = {
+ {1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C},
+ {1, 0, 0, 1, gUnknown_846737C, gUnknown_8467470, gUnknown_84670AC},
+ {1, 0, 0, 2, gUnknown_8467558, gUnknown_846762C, gUnknown_84670CC},
+ {1, 0, 0, 3, gUnknown_8467558, gUnknown_846762C, gUnknown_84670EC},
+ {1, 0, 0, 4, gUnknown_8467558, gUnknown_846762C, gUnknown_846710C},
+ {1, 0, 0, 5, gUnknown_8467558, gUnknown_846762C, gUnknown_846712C},
+ {1, 0, 0, 6, gUnknown_8467700, gUnknown_8467934, gUnknown_846714C},
+ {1, 0, 0, 7, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C}
+};
+
+bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
+{
+ if (r5 == NULL || r6 == NULL)
+ return FALSE;
+ gUnknown_203F3C8 = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
+ if (gUnknown_203F3C8 == NULL)
+ return FALSE;
+ gUnknown_203F3C8->unk_0000 = *r5;
+ gUnknown_203F3C8->unk_014C = *r6;
+ if (gUnknown_203F3C8->unk_0000.unk_08_2 >= NELEMS(gUnknown_8467FB8))
+ gUnknown_203F3C8->unk_0000.unk_08_2 = 0;
+ if (gUnknown_203F3C8->unk_0000.unk_08_0 >= NELEMS(gUnknown_8467070))
+ gUnknown_203F3C8->unk_0000.unk_08_0 = 0;
+ if (gUnknown_203F3C8->unk_0000.unk_09 > NELEMS(gUnknown_203F3C8->unk_017D))
+ gUnknown_203F3C8->unk_0000.unk_09 = 0;
+ gUnknown_203F3C8->unk_0170 = &gUnknown_8467FB8[gUnknown_203F3C8->unk_0000.unk_08_2];
+ return TRUE;
+}
+
+void sub_81456F0(void)
+{
+ if (gUnknown_203F3C8 != NULL)
+ {
+ *gUnknown_203F3C8 = (struct UnkStruct_203F3C8){};
+ Free(gUnknown_203F3C8);
+ gUnknown_203F3C8 = NULL;
+ }
+}
+
+s32 sub_814571C(void)
+{
+ if (gUnknown_203F3C8 == NULL)
+ return -1;
+ switch(gUnknown_203F3C8->unk_0174)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0);
+ gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]);
+ gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]);
+ gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]);
+ break;
+ case 3:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 0;
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ LoadPalette(gUnknown_203F3C8->unk_0170->pal, 0x10, 0x20);
+ LZ77UnCompWram(gUnknown_203F3C8->unk_0170->map, gUnknown_203F3C8->buffer_045C);
+ CopyRectToBgTilemapBufferRect(2, gUnknown_203F3C8->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 4:
+ sub_8145A98();
+ break;
+ case 5:
+ sub_8145D18(0);
+ sub_8145D18(1);
+ sub_8145D18(2);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 6:
+ sub_809707C();
+ break;
+ case 7:
+ ShowBg(1);
+ ShowBg(2);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ sub_8146060();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ UpdatePaletteFade();
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_203F3C8->unk_0174 = 0;
+ return 1;
+ }
+ ++gUnknown_203F3C8->unk_0174;
+ return 0;
+}
+
+s32 sub_814593C(bool32 flag)
+{
+ if (gUnknown_203F3C8 == NULL)
+ return -1;
+ switch (gUnknown_203F3C8->unk_0174)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 3:
+ HideBg(1);
+ HideBg(2);
+ RemoveWindow(gUnknown_203F3C8->unk_0176[2]);
+ RemoveWindow(gUnknown_203F3C8->unk_0176[1]);
+ RemoveWindow(gUnknown_203F3C8->unk_0176[0]);
+ break;
+ case 4:
+ sub_81461D8();
+ FreeMonIconPalettes();
+ break;
+ case 5:
+ sub_8142344(gUnknown_203F3B8, flag);
+ break;
+ case 6:
+ CopyBgTilemapBufferToVram(0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_203F3C8->unk_0174 = 0;
+ return 1;
+ }
+ ++gUnknown_203F3C8->unk_0174;
+ return 0;
+}
+
+void sub_8145A98(void)
+{
+ u16 i = 0;
+ u16 r6;
+ u16 sp0[3] = {0, 0, 0};
+
+ memcpy(gUnknown_203F3C8->unk_018B, gUnknown_203F3C8->unk_0000.unk_0A, 40);
+ gUnknown_203F3C8->unk_018B[40] = EOS;
+ memcpy(gUnknown_203F3C8->unk_01B4, gUnknown_203F3C8->unk_0000.unk_32, 40);
+ gUnknown_203F3C8->unk_01B4[40] = EOS;
+ if (gUnknown_203F3C8->unk_0000.unk_04 > 999999)
+ gUnknown_203F3C8->unk_0000.unk_04 = 999999;
+ ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_01DD, gUnknown_203F3C8->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
+ for (i = 0; i < 4; i++)
+ {
+ memcpy(gUnknown_203F3C8->unk_01E4[i], gUnknown_203F3C8->unk_0000.unk_5A[i], 40);
+ gUnknown_203F3C8->unk_01E4[i][40] = EOS;
+ }
+ memcpy(gUnknown_203F3C8->unk_0288, gUnknown_203F3C8->unk_0000.unk_FA, 40);
+ gUnknown_203F3C8->unk_0288[40] = EOS;
+ switch (gUnknown_203F3C8->unk_0000.unk_08_0)
+ {
+ case 0:
+ memcpy(gUnknown_203F3C8->unk_02B1, gUnknown_203F3C8->unk_0000.unk_122, 40);
+ gUnknown_203F3C8->unk_02B1[40] = EOS;
+ break;
+ case 1:
+ gUnknown_203F3C8->unk_02B1[00] = EOS;
+ break;
+ case 2:
+ gUnknown_203F3C8->unk_02B1[00] = EOS;
+ sp0[0] = gUnknown_203F3C8->unk_014C.unk_00 < 999 ? gUnknown_203F3C8->unk_014C.unk_00 : 999;
+ sp0[1] = gUnknown_203F3C8->unk_014C.unk_02 < 999 ? gUnknown_203F3C8->unk_014C.unk_02 : 999;
+ sp0[2] = gUnknown_203F3C8->unk_014C.unk_04 < 999 ? gUnknown_203F3C8->unk_014C.unk_04 : 999;
+ for (i = 0; i < 8; i++)
+ {
+ memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4);
+ memset(gUnknown_203F3C8->unk_02DC[i].unk_01, EOS, 41);
+ }
+ for (i = 0, r6 = 0; i < 40; i++)
+ {
+ if (gUnknown_203F3C8->unk_0000.unk_122[i] != 0xF7)
+ {
+ gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_01[r6] = gUnknown_203F3C8->unk_0000.unk_122[i];
+ r6++;
+ }
+ else
+ {
+ u8 r3 = gUnknown_203F3C8->unk_0000.unk_122[i + 1];
+ if (r3 > 2)
+ {
+ i += 2;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
+ gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_00 = gUnknown_203F3C8->unk_0000.unk_122[i + 2];
+ gUnknown_203F3C8->unk_0175++;
+ if (gUnknown_203F3C8->unk_0175 > 7)
+ break;
+ r6 = 0;
+ i += 2;
+ }
+ }
+ }
+ }
+}
+
+void sub_8145D18(u8 whichWindow)
+{
+ s8 sp0C = 0;
+ s32 windowId = gUnknown_203F3C8->unk_0176[whichWindow];
+ PutWindowTilemap(windowId);
+ FillWindowPixelBuffer(windowId, 0);
+ switch (whichWindow)
+ {
+ case 0:
+ {
+ s32 x;
+ box_print(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B);
+ x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2));
+ if (x < 0)
+ x = 0;
+ box_print(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4);
+ if (gUnknown_203F3C8->unk_0000.unk_04 != 0)
+ {
+ box_print(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD);
+ }
+ break;
+ }
+ case 1:
+ for (; sp0C < 4; sp0C++)
+ {
+ box_print(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]);
+ }
+ break;
+ case 2:
+ box_print(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288);
+ if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2)
+ {
+ box_print(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1);
+ }
+ else
+ {
+ s32 x = 0;
+ s32 y = gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0] + 16;
+ s32 spacing = GetFontAttribute(3, 2);
+ for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++)
+ {
+ box_print(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01);
+ if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS)
+ {
+ x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing);
+ box_print(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42);
+ x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00;
+ }
+ }
+ }
+ break;
+ }
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8146060(void)
+{
+ u8 r7 = 0;
+ gUnknown_203F3C8->unk_017C = 0xFF;
+ if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE)
+ {
+ gUnknown_203F3C8->unk_017C = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
+ gSprites[gUnknown_203F3C8->unk_017C].oam.priority = 2;
+ }
+ if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1)
+ {
+ sub_800F034(&gUnknown_8467F58);
+ LoadSpritePalette(&gUnknown_8467F60[gUnknown_203F3C8->unk_0170->textPal4]);
+ for (; r7 < gUnknown_203F3C8->unk_0000.unk_09; r7++)
+ {
+ gUnknown_203F3C8->unk_017D[r7][0] = 0xFF;
+ gUnknown_203F3C8->unk_017D[r7][1] = 0xFF;
+ gUnknown_203F3C8->unk_017D[r7][0] = CreateSprite(&gUnknown_8467FA0, 0xd8 - 32 * r7, 0x90, 8);
+ if (gUnknown_203F3C8->unk_014C.unk_08[0][r7] != 0)
+ {
+ gUnknown_203F3C8->unk_017D[r7][1] = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
+ gSprites[gUnknown_203F3C8->unk_017D[r7][1]].oam.priority = 2;
+ }
+ }
+ }
+}
+
+void sub_81461D8(void)
+{
+ u8 r6 = 0;
+ if (gUnknown_203F3C8->unk_017C != 0xFF)
+ sub_8097070(&gSprites[gUnknown_203F3C8->unk_017C]);
+ if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1)
+ {
+ for (; r6 < gUnknown_203F3C8->unk_0000.unk_09; r6++)
+ {
+ if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF)
+ {
+ DestroySprite(&gSprites[gUnknown_203F3C8->unk_017D[r6][0]]);
+ // This might be a typo. Uncomment the next line, and comment the one that follows, to get the presumed intended behavior.
+ // if (gUnknown_203F3C8->unk_017D[r6][1] != 0xFF)
+ if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF)
+ {
+ sub_8097070(&gSprites[gUnknown_203F3C8->unk_017D[r6][1]]);
+ }
+ }
+ }
+ FreeSpriteTilesByTag(0x8000);
+ FreeSpritePaletteByTag(0x8000);
+ }
+}
+
+struct UnkStruct_203F3CC
+{
+ /*0000*/ struct MEventBuffer_3120_Sub unk_0000;
+ /*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC;
+ /*01c0*/ u8 unk_01C0_0:1;
+ u8 unk_01C0_1:7;
+ /*01c1*/ u8 unk_01C1;
+ /*01c2*/ u8 unk_01C2_0:1;
+ u8 unk_01C2_1:7;
+ /*01c3*/ u8 unk_01C3_0:1;
+ u8 unk_01C3_1:7;
+ /*01c4*/ u16 unk_01C4;
+ /*01c6*/ u16 unk_01C6;
+ /*01c8*/ u16 unk_01C8[2];
+ /*01cc*/ u8 filler_01CC[2];
+ /*01ce*/ u8 unk_01CE[41];
+ /*01f7*/ u8 unk_01F7[10][41];
+ /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394;
+ /*03a4*/ u8 buffer_03A4[0x1000];
+};
+
+EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL;
+
+void sub_8146980(void);
+void sub_8146A30(void);
+void sub_8146B58(void);
+
+const struct TextColor gUnknown_8468038[] = {
+ {0, 2, 3},
+ {0, 1, 2}
+};
+const struct WindowTemplate gUnknown_8468040[] = {
+ {0, 1, 0, 28, 3, 15, 0x000},
+ {2, 1, 3, 28, 20, 15, 0x000}
+};
+const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050 = {
+ 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98,
+ 0x0000, 0x0002, 0x1000, 0x1000, 0x0, 0x000
+};
+
+const u16 gUnknown_8468060[] = INCBIN_U16("data/graphics/mevent/pal_468060.gbapal");
+const u16 gUnknown_8468080[] = INCBIN_U16("data/graphics/mevent/pal_468080.gbapal");
+const u16 gUnknown_84680A0[] = INCBIN_U16("data/graphics/mevent/pal_4680A0.gbapal");
+const u8 gUnknown_84680C0[] = INCBIN_U8("data/graphics/mevent/gfx_4680C0.4bpp.lz");
+const u8 gUnknown_8468140[] = INCBIN_U8("data/graphics/mevent/tilemap_468140.bin.lz");
+const u8 gUnknown_846821C[] = INCBIN_U8("data/graphics/mevent/gfx_46821C.4bpp.lz");
+const u8 gUnknown_846824C[] = INCBIN_U8("data/graphics/mevent/tilemap_46824C.bin.lz");
+const u8 gUnknown_846830C[] = INCBIN_U8("data/graphics/mevent/gfx_46830C.4bpp.lz");
+const u8 gUnknown_846837C[] = INCBIN_U8("data/graphics/mevent/tilemap_46837C.bin.lz");
+const u8 gUnknown_8468448[] = INCBIN_U8("data/graphics/mevent/gfx_468448.4bpp.lz");
+const u8 gUnknown_84684D8[] = INCBIN_U8("data/graphics/mevent/tilemap_4684D8.bin.lz");
+const u8 gUnknown_84685B4[] = INCBIN_U8("data/graphics/mevent/gfx_4685B4.4bpp.lz");
+const u8 gUnknown_8468644[] = INCBIN_U8("data/graphics/mevent/tilemap_468644.bin.lz");
+
+const struct UnkStruct_8467FB8 gUnknown_8468720[] = {
+ {1, 0, 0, 0, gUnknown_84680C0, gUnknown_8468140, gUnknown_8468060},
+ {1, 0, 0, 0, gUnknown_846821C, gUnknown_846824C, gUnknown_84670AC},
+ {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670CC},
+ {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670EC},
+ {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846710C},
+ {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846712C},
+ {1, 0, 0, 0, gUnknown_8468448, gUnknown_84684D8, gUnknown_8468080},
+ {1, 0, 0, 0, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0}
+};
+
+bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0)
+{
+ if (a0 == NULL)
+ return FALSE;
+ gUnknown_203F3CC = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
+ if (gUnknown_203F3CC == NULL)
+ return FALSE;
+ gUnknown_203F3CC->unk_0000 = *a0;
+ if (gUnknown_203F3CC->unk_0000.unk_03 >= NELEMS(gUnknown_8468720))
+ gUnknown_203F3CC->unk_0000.unk_03 = 0;
+ gUnknown_203F3CC->unk_01BC = &gUnknown_8468720[gUnknown_203F3CC->unk_0000.unk_03];
+ gUnknown_203F3CC->unk_01C1 = 0xFF;
+ return TRUE;
+}
+
+void sub_81462EC(void)
+{
+ if (gUnknown_203F3CC != NULL)
+ {
+ *gUnknown_203F3CC = (struct UnkStruct_203F3CC){};
+ Free(gUnknown_203F3CC);
+ gUnknown_203F3CC = NULL;
+ }
+}
+
+s32 sub_8146318(void)
+{
+ if (gUnknown_203F3CC == NULL)
+ return -1;
+
+ switch (gUnknown_203F3CC->unk_01C0_1)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ ChangeBgY(0, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x1A98);
+ SetGpuReg(REG_OFFSET_WININ, 0x1F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x1B);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0);
+ gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]);
+ gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]);
+ break;
+ case 3:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 0;
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ LoadPalette(gUnknown_203F3CC->unk_01BC->pal, 0x10, 0x20);
+ LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->map, gUnknown_203F3CC->buffer_03A4);
+ CopyRectToBgTilemapBufferRect(1, gUnknown_203F3CC->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
+ CopyRectToBgTilemapBufferRect(3, gUnknown_203F3CC->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 4:
+ sub_8146980();
+ break;
+ case 5:
+ sub_8146A30();
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 6:
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ UpdatePaletteFade();
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_203F3CC->unk_01C0_1 = 0;
+ return 1;
+ }
+
+ ++gUnknown_203F3CC->unk_01C0_1;
+ return 0;
+}
+
+s32 sub_8146604(bool32 flag)
+{
+ if (gUnknown_203F3CC == NULL)
+ return -1;
+ switch (gUnknown_203F3CC->unk_01C0_1)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ ChangeBgY(2, 0, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 24);
+ FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 24);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 3:
+ HideBg(1);
+ HideBg(2);
+ RemoveWindow(gUnknown_203F3CC->unk_01C8[1]);
+ RemoveWindow(gUnknown_203F3CC->unk_01C8[0]);
+ break;
+ case 4:
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+ if (gUnknown_203F3CC->unk_01C1 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1);
+ gUnknown_203F3CC->unk_01C1 = 0xFF;
+ }
+ break;
+ case 5:
+ sub_8142344(gUnknown_203F3B8, flag);
+ break;
+ case 6:
+ sub_8142420();
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_203F3CC->unk_01C0_1 = 0;
+ return 1;
+ }
+ ++gUnknown_203F3CC->unk_01C0_1;
+ return 0;
+}
+
+void sub_81467EC(void)
+{
+ if (!gUnknown_203F3CC->unk_01C0_0 && gUnknown_203F3CC->unk_01C1 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1);
+ gUnknown_203F3CC->unk_01C1 = 0xFF;
+ gUnknown_203F3CC->unk_01C0_0 = TRUE;
+ }
+}
+
+
+void sub_8146834(void)
+{
+ if (gUnknown_203F3CC->unk_01C0_0)
+ {
+ gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6);
+ gUnknown_203F3CC->unk_01C0_0 = FALSE;
+ }
+}
+
+u8 sub_8146884(u16 input)
+{
+ if (gUnknown_203F3CC->unk_01C2_0)
+ {
+ sub_8146B58();
+ return 0xFF;
+ }
+ switch (input)
+ {
+ case A_BUTTON:
+ return 0;
+ case B_BUTTON:
+ return 1;
+ case DPAD_UP:
+ if (gUnknown_203F3CC->unk_01C6 == 0)
+ return 0xFF;
+ if (gUnknown_203F3CC->unk_01C0_0)
+ return 0xFF;
+ gUnknown_203F3CC->unk_01C3_0 = FALSE;
+ break;
+ case DPAD_DOWN:
+ if (gUnknown_203F3CC->unk_01C6 == gUnknown_203F3CC->unk_01C4)
+ return 0xFF;
+ if (gUnknown_203F3CC->unk_01C0_0)
+ return 0xFF;
+ gUnknown_203F3CC->unk_01C3_0 = TRUE;
+ break;
+ default:
+ return 0xFF;
+ }
+ gUnknown_203F3CC->unk_01C2_0 = TRUE;
+ gUnknown_203F3CC->unk_01C2_1 = 2;
+ gUnknown_203F3CC->unk_01C3_1 = 0;
+ if (gUnknown_203F3CC->unk_01C3_0 == FALSE)
+ return 2;
+ else
+ return 3;
+}
+
+void sub_8146980(void)
+{
+ u8 i = 0;
+ memcpy(gUnknown_203F3CC->unk_01CE, gUnknown_203F3CC->unk_0000.unk_04, 40);
+ gUnknown_203F3CC->unk_01CE[40] = EOS;
+ for (; i < 10; ++i)
+ {
+ memcpy(gUnknown_203F3CC->unk_01F7[i], gUnknown_203F3CC->unk_0000.unk_2C[i], 40);
+ gUnknown_203F3CC->unk_01F7[i][40] = EOS;
+ if (i > 7 && gUnknown_203F3CC->unk_01F7[i][0] != EOS)
+ ++gUnknown_203F3CC->unk_01C4;
+ }
+ gUnknown_203F3CC->unk_0394 = gUnknown_8468050;
+ gUnknown_203F3CC->unk_0394.unk_08 = gUnknown_203F3CC->unk_01C4;
+}
+
+void sub_8146A30(void)
+{
+ u8 i = 0;
+ s32 x;
+ PutWindowTilemap(gUnknown_203F3CC->unk_01C8[0]);
+ PutWindowTilemap(gUnknown_203F3CC->unk_01C8[1]);
+ FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[0], 0);
+ FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[1], 0);
+ x = (0xe0 - GetStringWidth(3, gUnknown_203F3CC->unk_01CE, GetFontAttribute(3, 2))) / 2;
+ if (x < 0)
+ x = 0;
+ box_print(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE);
+ for (; i < 10; ++i)
+ {
+ box_print(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]);
+ }
+ CopyWindowToVram(gUnknown_203F3CC->unk_01C8[0], 3);
+ CopyWindowToVram(gUnknown_203F3CC->unk_01C8[1], 3);
+}
+
+void sub_8146B58(void)
+{
+ u16 r4 = gUnknown_203F3CC->unk_01C2_1;
+ r4 <<= 8;
+ if (gUnknown_203F3CC->unk_01C3_0)
+ {
+ ChangeBgY(2, r4, 1);
+ ChangeBgY(3, r4, 1);
+ }
+ else
+ {
+ ChangeBgY(2, r4, 2);
+ ChangeBgY(3, r4, 2);
+ }
+ gUnknown_203F3CC->unk_01C3_1 += gUnknown_203F3CC->unk_01C2_1;
+ if (gUnknown_203F3CC->unk_01C3_1 > 15)
+ {
+ if (gUnknown_203F3CC->unk_01C3_0)
+ ++gUnknown_203F3CC->unk_01C6;
+ else
+ --gUnknown_203F3CC->unk_01C6;
+ gUnknown_203F3CC->unk_01C2_0 = FALSE;
+ gUnknown_203F3CC->unk_01C3_1 = 0;
+ }
+}
diff --git a/src/mevent_server.c b/src/mevent_server.c
new file mode 100644
index 000000000..5e384ae0b
--- /dev/null
+++ b/src/mevent_server.c
@@ -0,0 +1,563 @@
+#include "global.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "util.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "overworld.h"
+#include "script.h"
+#include "battle_tower.h"
+#include "mystery_event_script.h"
+#include "mevent.h"
+#include "mevent_server.h"
+
+EWRAM_DATA struct mevent_srv_ish * s_mevent_srv_ish_ptr = NULL;
+EWRAM_DATA struct mevent_srv_common * s_mevent_srv_common_ptr = NULL;
+
+static void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32);
+static u32 mevent_srv_ish_exec(struct mevent_srv_ish *);
+static void mevent_srv_ish_free_resources(struct mevent_srv_ish *);
+static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32);
+static void mevent_srv_free_resources(struct mevent_srv_common *);
+static u32 mevent_srv_exec_common(struct mevent_srv_common *);
+
+extern const u8 gUnknown_84687E0[];
+extern const struct mevent_cmd gUnknown_8468B6C[];
+extern const struct mevent_cmd gUnknown_8468BCC[];
+
+void mevent_srv_ish_do_init(void)
+{
+ s_mevent_srv_ish_ptr = AllocZeroed(sizeof(struct mevent_srv_ish));
+ mevent_srv_ish_init(s_mevent_srv_ish_ptr, 1, 0);
+}
+
+u32 mevent_srv_ish_do_exec(u16 * a0)
+{
+ u32 result;
+ if (s_mevent_srv_ish_ptr == NULL)
+ return 6;
+ result = mevent_srv_ish_exec(s_mevent_srv_ish_ptr);
+ if (result == 6)
+ {
+ *a0 = s_mevent_srv_ish_ptr->param;
+ mevent_srv_ish_free_resources(s_mevent_srv_ish_ptr);
+ Free(s_mevent_srv_ish_ptr);
+ s_mevent_srv_ish_ptr = NULL;
+ }
+ return result;
+}
+
+void mevent_srv_ish_inc_flag(void)
+{
+ s_mevent_srv_ish_ptr->flag++;
+}
+
+void * mevent_srv_ish_get_buffer(void)
+{
+ return s_mevent_srv_ish_ptr->buffer;
+}
+
+void mevent_srv_ish_set_param(u32 a0)
+{
+ s_mevent_srv_ish_ptr->param = a0;
+}
+
+static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 sendPlayerNo, u32 recvPlayerNo)
+{
+ svr->unk_00 = 0;
+ svr->mainseqno = 0;
+ svr->flag = 0;
+ svr->sendBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->buffer = AllocZeroed(0x40);
+ mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
+}
+
+static void mevent_srv_ish_free_resources(struct mevent_srv_ish * svr)
+{
+ Free(svr->sendBuffer);
+ Free(svr->recvBuffer);
+ Free(svr->cmdBuffer);
+ Free(svr->buffer);
+}
+
+static void mevent_srv_ish_jmp_buffer(struct mevent_srv_ish * svr)
+{
+ memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
+ svr->cmdidx = 0;
+}
+
+static void mevent_srv_ish_send_word(struct mevent_srv_ish * svr, u32 ident, u32 word)
+{
+ CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE);
+ *(u32 *)svr->sendBuffer = word;
+ mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32));
+}
+
+static u32 ish_mainseq_0(struct mevent_srv_ish * svr)
+{
+ // init
+ memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE);
+ svr->cmdidx = 0;
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ return 0;
+}
+
+static u32 ish_mainseq_1(struct mevent_srv_ish * svr)
+{
+ // done
+ return 6;
+}
+
+static u32 ish_mainseq_2(struct mevent_srv_ish * svr)
+{
+ // do recv
+ if (mevent_srv_sub_recv(&svr->manager))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 ish_mainseq_3(struct mevent_srv_ish * svr)
+{
+ // do send
+ if (mevent_srv_sub_send(&svr->manager))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 ish_mainseq_4(struct mevent_srv_ish * svr)
+{
+ // process command
+ struct mevent_cmd_ish * cmd = &svr->cmdBuffer[svr->cmdidx];
+ ++svr->cmdidx;
+ switch (cmd->instr)
+ {
+ case 0:
+ break;
+ case 1:
+ svr->param = cmd->parameter;
+ svr->mainseqno = 1;
+ svr->flag = 0;
+ break;
+ case 2:
+ mevent_srv_sub_init_recv(&svr->manager, cmd->parameter, svr->recvBuffer);
+ svr->mainseqno = 2;
+ svr->flag = 0;
+ break;
+ case 3:
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 20:
+ mevent_srv_sub_init_send(&svr->manager, 0x14, svr->sendBuffer, 0);
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 19:
+ mevent_srv_ish_send_word(svr, 0x12, GetGameStat(cmd->parameter));
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 6:
+ if (svr->param == 0)
+ mevent_srv_ish_jmp_buffer(svr);
+ break;
+ case 7:
+ if (svr->param == 1)
+ mevent_srv_ish_jmp_buffer(svr);
+ break;
+ case 4:
+ mevent_srv_ish_jmp_buffer(svr);
+ break;
+ case 5:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 2;
+ case 11:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 3;
+ case 12:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 5;
+ case 13:
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 4;
+ case 8:
+ sub_81442CC(svr->sendBuffer);
+ mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventStruct_Unk1442CC));
+ break;
+ case 14:
+ mevent_srv_ish_send_word(svr, 0x13, svr->param);
+ break;
+ case 10:
+ sub_8143F68(svr->recvBuffer);
+ break;
+ case 9:
+ if (!sub_8143EF4(svr->recvBuffer))
+ {
+ sub_8143DC8(svr->recvBuffer);
+ mevent_srv_ish_send_word(svr, 0x13, 0);
+ }
+ else
+ mevent_srv_ish_send_word(svr, 0x13, 1);
+ break;
+ case 15:
+ svr->mainseqno = 6;
+ svr->flag = 0;
+ break;
+ case 16:
+ sub_8144254(svr->recvBuffer);
+ break;
+ case 17:
+ sub_8069EA4(svr->recvBuffer, 1000);
+ break;
+ case 18:
+ memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc);
+ ValidateEReaderTrainer();
+ break;
+ case 21:
+ memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
+ svr->mainseqno = 7;
+ svr->flag = 0;
+ break;
+ }
+
+ return 1;
+}
+
+static u32 ish_mainseq_5(struct mevent_srv_ish * svr)
+{
+ // wait flag
+ if (svr->flag)
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 ish_mainseq_6(struct mevent_srv_ish * svr)
+{
+ // ???
+ switch (svr->flag)
+ {
+ case 0:
+ sub_80DA89C(svr->recvBuffer);
+ ++svr->flag;
+ break;
+ case 1:
+ if (!sub_80DA8B0(&svr->param))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ break;
+ }
+ return 1;
+}
+
+static u32 ish_mainseq_7(struct mevent_srv_ish * svr)
+{
+ // exec arbitrary code
+ u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer;
+ if (func(&svr->param, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1)
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr)
+{
+ u32 (*funcs[])(struct mevent_srv_ish *) = {
+ ish_mainseq_0,
+ ish_mainseq_1,
+ ish_mainseq_2,
+ ish_mainseq_3,
+ ish_mainseq_4,
+ ish_mainseq_5,
+ ish_mainseq_6,
+ ish_mainseq_7
+ };
+ return funcs[svr->mainseqno](svr);
+}
+
+void mevent_srv_common_do_init_1(void)
+{
+ s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common));
+ mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468B6C, 0, 1);
+}
+
+void mevent_srv_common_do_init_2(void)
+{
+ s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common));
+ mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468BCC, 0, 1);
+}
+
+u32 mevent_srv_init_do_exec(u16 * a0)
+{
+ u32 result;
+ if (s_mevent_srv_common_ptr == NULL)
+ return 3;
+ result = mevent_srv_exec_common(s_mevent_srv_common_ptr);
+ if (result == 3)
+ {
+ *a0 = s_mevent_srv_common_ptr->param;
+ mevent_srv_free_resources(s_mevent_srv_common_ptr);
+ Free(s_mevent_srv_common_ptr);
+ s_mevent_srv_common_ptr = NULL;
+ }
+ return result;
+}
+
+static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * cmdBuffer, u32 sendPlayerNo, u32 recvPlayerNo)
+{
+ svr->unk_00 = 0;
+ svr->mainseqno = 0;
+ svr->mevent_32e0 = AllocZeroed(sizeof(struct MEventBuffer_32E0_Sub));
+ svr->mevent_3120 = AllocZeroed(sizeof(struct MEventBuffer_3120_Sub));
+ svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventStruct_Unk1442CC));
+ svr->cmdBuffer = cmdBuffer;
+ svr->cmdidx = 0;
+ mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
+}
+
+static void mevent_srv_free_resources(struct mevent_srv_common * svr)
+{
+ Free(svr->mevent_32e0);
+ Free(svr->mevent_3120);
+ Free(svr->recvBuffer);
+ Free(svr->mevent_unk1442cc);
+}
+
+static void mevent_srv_common_init_send(struct mevent_srv_common * svr, u32 ident, const void * src, u32 size)
+{
+ AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257);
+ mevent_srv_sub_init_send(&svr->manager, ident, src, size);
+}
+
+static void * mevent_first_if_not_null_else_second(void * a0, void * a1)
+{
+ if (a0 != NULL)
+ return a0;
+ else
+ return a1;
+}
+
+static u32 mevent_compare_pointers(void * a0, void * a1)
+{
+ if (a1 < a0)
+ return 0;
+ else if (a1 == a0)
+ return 1;
+ else
+ return 2;
+}
+
+static u32 common_mainseq_0(struct mevent_srv_common * svr)
+{
+ // start
+ svr->mainseqno = 4;
+ return 0;
+}
+
+static u32 common_mainseq_1(struct mevent_srv_common * svr)
+{
+ // done
+ return 3;
+}
+
+static u32 common_mainseq_2(struct mevent_srv_common * svr)
+{
+ // do recv
+ if (mevent_srv_sub_recv(&svr->manager))
+ svr->mainseqno = 4;
+ return 1;
+}
+
+static u32 common_mainseq_3(struct mevent_srv_common * svr)
+{
+ // do send
+ if (mevent_srv_sub_send(&svr->manager))
+ svr->mainseqno = 4;
+ return 1;
+}
+
+static u32 common_mainseq_4(struct mevent_srv_common * svr)
+{
+ // process command
+ const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
+ void * ptr;
+ svr->cmdidx++;
+
+ switch (cmd->instr)
+ {
+ case 0:
+ AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354);
+ svr->mainseqno = 1;
+ svr->param = cmd->flag;
+ break;
+ case 1:
+ svr->mainseqno = 3;
+ break;
+ case 2:
+ AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364);
+ mevent_srv_sub_init_recv(&svr->manager, cmd->flag, svr->recvBuffer);
+ svr->mainseqno = 2;
+ break;
+ case 3:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 370);
+ svr->cmdidx = 0;
+ svr->cmdBuffer = cmd->parameter;
+ break;
+ case 5:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376);
+ AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377);
+ memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventStruct_Unk1442CC));
+ break;
+ case 6:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382);
+ AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383);
+ svr->param = sub_81443D4(svr->mevent_unk1442cc);
+ break;
+ case 4:
+ if (svr->param == cmd->flag)
+ {
+ svr->cmdidx = 0;
+ svr->cmdBuffer = cmd->parameter;
+ }
+ break;
+ case 7:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396);
+ ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0);
+ svr->param = sub_8144418(ptr, svr->mevent_unk1442cc, ptr);
+ break;
+ case 8:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402);
+ AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403);
+ svr->param = *(u32 *)svr->recvBuffer;
+ break;
+ case 9:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408);
+ ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord);
+ svr->param = sub_8144434(ptr, svr->mevent_unk1442cc, ptr);
+ break;
+ case 10:
+ AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415);
+ svr->param = sub_81444B0(svr->mevent_unk1442cc, cmd->flag);
+ break;
+ case 11:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420);
+ svr->param = sub_8144474(svr->mevent_unk1442cc, cmd->parameter);
+ break;
+ case 12:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426);
+ svr->param = mevent_compare_pointers(cmd->parameter, *(void **)svr->recvBuffer);
+ break;
+ case 14:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432);
+ mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_3120), sizeof(struct MEventBuffer_3120_Sub));
+ break;
+ case 13:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438);
+ mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0), sizeof(struct MEventBuffer_32E0_Sub));
+ break;
+ case 16:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444);
+ mevent_srv_common_init_send(svr, 0x18, mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord), 4);
+ break;
+ case 15:
+ if (cmd->parameter == NULL)
+ mevent_srv_common_init_send(svr, 0x19, svr->sendBuffer1, svr->sendBuffer1Size);
+ else
+ mevent_srv_common_init_send(svr, 0x19, cmd->parameter, cmd->flag);
+ break;
+ case 18:
+ if (cmd->parameter == NULL)
+ mevent_srv_common_init_send(svr, 0x10, svr->sendBuffer2, svr->sendBuffer2Size);
+ else
+ mevent_srv_common_init_send(svr, 0x10, cmd->parameter, cmd->flag);
+ break;
+ case 19:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466);
+ mevent_srv_common_init_send(svr, 0x1a, cmd->parameter, 188);
+ break;
+ case 20:
+ mevent_srv_common_init_send(svr, 0x15, cmd->parameter, cmd->flag);
+ break;
+ case 17:
+ mevent_srv_common_init_send(svr, 0x1c, cmd->parameter, cmd->flag);
+ break;
+ case 22:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481);
+ memcpy(svr->mevent_32e0, cmd->parameter, 332);
+ break;
+ case 23:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486);
+ memcpy(svr->mevent_3120, cmd->parameter, 444);
+ break;
+ case 21:
+ AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491);
+ svr->sendWord = *(u32 *)cmd->parameter;
+ break;
+ case 24:
+ svr->sendBuffer1 = cmd->parameter;
+ svr->sendBuffer1Size = cmd->flag;
+ break;
+ case 25:
+ svr->sendBuffer2 = cmd->parameter;
+ svr->sendBuffer2Size = cmd->flag;
+ break;
+ case 26:
+ AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506);
+ memcpy(svr->mevent_32e0, sav1_get_mevent_buffer_1(), 332);
+ sub_814410C(svr->mevent_32e0);
+ break;
+ case 27:
+ AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512);
+ memcpy(svr->mevent_3120, sub_8143D58(), 444);
+ break;
+ case 28:
+ AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517);
+ svr->sendBuffer1 = sub_8069E48();
+ break;
+ case 29:
+ mevent_srv_common_init_send(svr, 0x1b, cmd->parameter, cmd->flag);
+ break;
+ }
+
+ return 1;
+}
+
+static u32 (*const func_tbl[])(struct mevent_srv_common *) = {
+ common_mainseq_0,
+ common_mainseq_1,
+ common_mainseq_2,
+ common_mainseq_3,
+ common_mainseq_4
+};
+
+static u32 mevent_srv_exec_common(struct mevent_srv_common * svr)
+{
+ u32 response;
+ AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546);
+ response = func_tbl[svr->mainseqno](svr);
+ AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 548);
+ return response;
+}
diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c
new file mode 100644
index 000000000..35efa68c8
--- /dev/null
+++ b/src/mevent_server_helpers.c
@@ -0,0 +1,211 @@
+#include "global.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "util.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "overworld.h"
+#include "script.h"
+#include "battle_tower.h"
+#include "mystery_event_script.h"
+#include "mevent.h"
+#include "mevent_server.h"
+
+static u32 mevent_receive_func(struct mevent_srv_sub *);
+static u32 mevent_send_func(struct mevent_srv_sub *);
+
+u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr)
+{
+ return svr->recvFunc(svr);
+}
+
+u32 mevent_srv_sub_send(struct mevent_srv_sub * svr)
+{
+ return svr->sendFunc(svr);
+}
+
+void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo)
+{
+ svr->sendPlayerNo = sendPlayerNo;
+ svr->recvPlayerNo = recvPlayerNo;
+ svr->seqno = 0;
+ svr->sendCRC = 0;
+ svr->sendSize = 0;
+ svr->sendCounter = 0;
+ svr->recvCRC = 0;
+ svr->recvSize = 0;
+ svr->recvCounter = 0;
+ svr->sendBfr = NULL;
+ svr->recvBfr = NULL;
+ svr->sendFunc = mevent_send_func;
+ svr->recvFunc = mevent_receive_func;
+}
+
+void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size)
+{
+ svr->seqno = 0;
+ svr->sendIdent = ident;
+ svr->sendCounter = 0;
+ svr->sendCRC = 0;
+ if (size != 0)
+ svr->sendSize = size;
+ else
+ svr->sendSize = ME_SEND_BUF_SIZE;
+ svr->sendBfr = src;
+}
+
+void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest)
+{
+ svr->seqno = 0;
+ svr->recvIdent = ident;
+ svr->recvCounter = 0;
+ svr->recvCRC = 0;
+ svr->recvSize = 0;
+ svr->recvBfr = dest;
+}
+
+static void mevent_recv_block(u32 recv_idx, void * dest, size_t size)
+{
+ memcpy(dest, gBlockRecvBuffer[recv_idx], size);
+}
+
+static bool32 mevent_has_received(u32 recv_idx)
+{
+ if ((GetBlockReceivedStatus() >> recv_idx) & 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void mevent_reset_recv(u32 recv_idx)
+{
+ ResetBlockReceivedFlag(recv_idx);
+}
+
+static bool32 mevent_receive_func(struct mevent_srv_sub * svr)
+{
+ struct send_recv_header header;
+
+ switch (svr->seqno)
+ {
+ case 0:
+ if (mevent_has_received(svr->recvPlayerNo))
+ {
+ mevent_recv_block(svr->recvPlayerNo, &header, sizeof(header));
+ svr->recvSize = header.size;
+ svr->recvCRC = header.crc;
+ if (svr->recvSize > ME_SEND_BUF_SIZE)
+ {
+ sub_80FA190();
+ return FALSE;
+ }
+ else if (svr->recvIdent != header.ident)
+ {
+ sub_80FA190();
+ return FALSE;
+ }
+ else
+ {
+ svr->recvCounter = 0;
+ mevent_reset_recv(svr->recvPlayerNo);
+ ++svr->seqno;
+ }
+ }
+ break;
+ case 1:
+ if (mevent_has_received(svr->recvPlayerNo))
+ {
+ size_t blocksiz = svr->recvCounter * 252;
+ if (svr->recvSize - blocksiz <= 252)
+ {
+ mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, svr->recvSize - blocksiz);
+ ++svr->recvCounter;
+ ++svr->seqno;
+ }
+ else
+ {
+ mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, 252);
+ ++svr->recvCounter;
+ }
+ mevent_reset_recv(svr->recvPlayerNo);
+ }
+ break;
+ case 2:
+ if (CalcCRC16WithTable(svr->recvBfr, svr->recvSize) != svr->recvCRC)
+ {
+ sub_80FA190();
+ return FALSE;
+ }
+ else
+ {
+ svr->seqno = 0;
+ return TRUE;
+ }
+ break;
+
+ }
+
+ return FALSE;
+}
+
+static bool32 mevent_send_func(struct mevent_srv_sub * svr)
+{
+ struct send_recv_header header;
+
+ switch (svr->seqno)
+ {
+ case 0:
+ if (sub_800A4BC())
+ {
+ header.ident = svr->sendIdent;
+ header.size = svr->sendSize;
+ header.crc = CalcCRC16WithTable(svr->sendBfr, svr->sendSize);
+ svr->sendCRC = header.crc;
+ svr->sendCounter = 0;
+ SendBlock(0, &header, sizeof(header));
+ ++svr->seqno;
+ }
+ break;
+ case 1:
+ if (sub_800A4BC())
+ {
+ if (mevent_has_received(svr->sendPlayerNo))
+ {
+ size_t blocksiz;
+ mevent_reset_recv(svr->sendPlayerNo);
+ blocksiz = 252 * svr->sendCounter;
+ if (svr->sendSize - blocksiz <= 252)
+ {
+ SendBlock(0, svr->sendBfr + blocksiz, svr->sendSize - blocksiz);
+ ++svr->sendCounter;
+ ++svr->seqno;
+ }
+ else
+ {
+ SendBlock(0, svr->sendBfr + blocksiz, 252);
+ ++svr->sendCounter;
+ }
+ }
+ }
+ break;
+ case 2:
+ if (sub_800A4BC())
+ {
+ if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC)
+ sub_80FA190();
+ else
+ ++svr->seqno;
+ }
+ break;
+ case 3:
+ if (mevent_has_received(svr->sendPlayerNo))
+ {
+ mevent_reset_recv(svr->sendPlayerNo);
+ svr->seqno = 0;
+ return TRUE;
+ }
+ break;
+ }
+
+ return FALSE;
+}
diff --git a/src/mystery_event_msg.c b/src/mystery_event_msg.c
new file mode 100644
index 000000000..a21750b7a
--- /dev/null
+++ b/src/mystery_event_msg.c
@@ -0,0 +1,13 @@
+#include "global.h"
+
+const u8 gText_MysteryGiftBerry[] = _("Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM.");
+const u8 gText_MysteryGiftBerryTransform[] = _("The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY.");
+const u8 gText_MysteryGiftBerryObtained[] = _("The {STR_VAR_1} BERRY has already been\nobtained.");
+const u8 gText_MysteryGiftSpecialRibbon[] = _("A special RIBBON was awarded to\nyour party POKéMON.");
+const u8 gText_MysteryGiftNationalDex[] = _("The POKéDEX has been upgraded\nwith the NATIONAL MODE.");
+const u8 gText_MysteryGiftRareWord[] = _("A rare word has been added.");
+const u8 gText_MysteryGiftSentOver[] = _("{STR_VAR_1} was sent over!");
+const u8 gText_MysteryGiftFullParty[] = _("Your party is full.\n{STR_VAR_1} could not be sent over.");
+const u8 gText_MysteryGiftNewTrainer[] = _("A new TRAINER has arrived in\nHOENN.");
+const u8 gText_MysteryGiftNewAdversaryInBattleTower[] = _("バトルタワーに あらたな\nたいせんしゃが あらわれた!");
+const u8 gText_MysteryGiftCantBeUsed[] = _("This data can’t be used in\nthis version.");
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
new file mode 100644
index 000000000..c9dc6ae81
--- /dev/null
+++ b/src/mystery_event_script.c
@@ -0,0 +1,322 @@
+#include "global.h"
+#include "berry.h"
+#include "battle_tower.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "mail.h"
+#include "mail_data.h"
+#include "mystery_event_script.h"
+#include "pokedex.h"
+#include "pokemon.h"
+#include "pokemon_size_record.h"
+#include "script.h"
+#include "constants/species.h"
+#include "strings.h"
+#include "string_util.h"
+#include "text.h"
+#include "util.h"
+#include "mystery_event_msg.h"
+#include "pokemon_storage_system.h"
+
+extern ScrCmdFunc gMysteryEventScriptCmdTable[];
+extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
+
+#define LANGUAGE_MASK 0x1
+#define VERSION_MASK 0x1
+
+EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0};
+
+static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4)
+{
+ if (!(a1 & LANGUAGE_MASK))
+ return FALSE;
+
+ if (!(a2 & LANGUAGE_MASK))
+ return FALSE;
+
+ if (!(a3 & 0x1))
+ return FALSE;
+
+ if (!(a4 & VERSION_MASK))
+ return FALSE;
+
+ return TRUE;
+}
+
+static void SetIncompatible(void)
+{
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftCantBeUsed);
+ SetMysteryEventScriptStatus(3);
+}
+
+static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script)
+{
+ InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd);
+ SetupBytecodeScript(ctx, script);
+ ctx->data[0] = (u32)script;
+ ctx->data[1] = 0;
+ ctx->data[2] = 0;
+ ctx->data[3] = 0;
+}
+
+static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx)
+{
+ if (RunScriptCommand(ctx) && ctx->data[3])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_80DA89C(u8 *script)
+{
+ InitMysteryEventScript(&sMysteryEventScriptContext, script);
+}
+
+bool32 sub_80DA8B0(u32 *a0)
+{
+ bool32 ret = RunMysteryEventScriptCommand(&sMysteryEventScriptContext);
+ *a0 = sMysteryEventScriptContext.data[2];
+
+ return ret;
+}
+
+u32 RunMysteryEventScript(u8 *script)
+{
+ u32 ret;
+ sub_80DA89C(script);
+ while (sub_80DA8B0(&ret));
+
+ return ret;
+}
+
+void SetMysteryEventScriptStatus(u32 val)
+{
+ sMysteryEventScriptContext.data[2] = val;
+}
+
+bool8 MEScrCmd_end(struct ScriptContext *ctx)
+{
+ StopScript(ctx);
+ return TRUE;
+}
+
+bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx)
+{
+ u16 v1;
+ u32 v2;
+ u16 v3;
+ u32 v4;
+
+ ctx->data[1] = ScriptReadWord(ctx);
+ v1 = ScriptReadHalfword(ctx);
+ v2 = ScriptReadWord(ctx);
+ v3 = ScriptReadHalfword(ctx);
+ v4 = ScriptReadWord(ctx);
+
+ if (CheckCompatibility(v1, v2, v3, v4) == TRUE)
+ ctx->data[3] = 1;
+ else
+ SetIncompatible();
+
+ return TRUE;
+}
+
+bool8 MEScrCmd_nop(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 MEScrCmd_setstatus(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+ ctx->data[2] = value;
+ return FALSE;
+}
+
+bool8 MEScrCmd_setmsg(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+ u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (value == 0xFF || value == ctx->data[2])
+ StringExpandPlaceholders(gStringVar4, str);
+ return FALSE;
+}
+
+bool8 MEScrCmd_runscript(struct ScriptContext *ctx)
+{
+ u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ ScriptContext2_RunNewScript(script);
+ return FALSE;
+}
+
+bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx)
+{
+ u8 *str;
+ const u8 *message;
+ bool32 haveBerry = IsEnigmaBerryValid();
+ u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ StringCopyN(gStringVar1, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1);
+ SetEnigmaBerry(berry);
+ StringCopyN(gStringVar2, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1);
+
+ if (!haveBerry)
+ {
+ str = gStringVar4;
+ message = gText_MysteryGiftBerry;
+ }
+ else if (StringCompare(gStringVar1, gStringVar2))
+ {
+ str = gStringVar4;
+ message = gText_MysteryGiftBerryTransform;
+ }
+ else
+ {
+ str = gStringVar4;
+ message = gText_MysteryGiftBerryObtained;
+ }
+
+ StringExpandPlaceholders(str, message);
+
+ ctx->data[2] = 2;
+
+ if (IsEnigmaBerryValid() == TRUE)
+ VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1);
+ else
+ ctx->data[2] = 1;
+
+ return FALSE;
+}
+
+bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ u8 ribbonId = ScriptReadByte(ctx);
+ GiveGiftRibbonToParty(index, ribbonId);
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSpecialRibbon);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_initramscript(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 objectId = ScriptReadByte(ctx);
+ u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId);
+ return FALSE;
+}
+
+bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx)
+{
+ EnableNationalPokedex();
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNationalDex);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_addrareword(struct ScriptContext *ctx)
+{
+ EnableRareWord(ScriptReadByte(ctx));
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftRareWord);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx)
+{
+ SetIncompatible();
+ ctx->data[3] = 0;
+ return TRUE;
+}
+
+bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
+{
+ struct MailStruct mail;
+ struct Pokemon pokemon;
+ u16 species;
+ u16 heldItem;
+ u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
+ void *pokemonPtr = (void *)data;
+ void *mailPtr = (void *)(data + sizeof(struct Pokemon));
+
+ pokemon = *(struct Pokemon *)pokemonPtr;
+ species = GetMonData(&pokemon, MON_DATA_SPECIES2);
+
+ if (species == SPECIES_EGG)
+ StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1);
+ else
+ StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1);
+
+ if (gPlayerPartyCount == PARTY_SIZE)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftFullParty);
+ ctx->data[2] = 3;
+ }
+ else
+ {
+ memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon));
+ memcpy(&mail, mailPtr, sizeof(struct MailStruct));
+
+ if (species != SPECIES_EGG)
+ {
+ u16 pokedexNum = SpeciesToNationalPokedexNum(species);
+ GetSetPokedexFlag(pokedexNum, FLAG_SET_SEEN);
+ GetSetPokedexFlag(pokedexNum, FLAG_SET_CAUGHT);
+ }
+
+ heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM);
+ if (itemid_is_mail(heldItem))
+ GiveMailToMon2(&gPlayerParty[5], &mail);
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSentOver);
+ ctx->data[2] = 2;
+ }
+
+ return FALSE;
+}
+
+bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx)
+{
+ u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
+ memcpy(gSaveBlock2Ptr->unk_4A0, (void *)data, 0xBC);
+ ValidateEReaderTrainer();
+ StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNewTrainer);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx)
+{
+ SetIncompatible();
+ ctx->data[3] = 0;
+ return TRUE;
+}
+
+bool8 MEScrCmd_checksum(struct ScriptContext *ctx)
+{
+ int checksum = ScriptReadWord(ctx);
+ u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (checksum != CalcByteArraySum(data, dataEnd - data))
+ {
+ ctx->data[3] = 0;
+ ctx->data[2] = 1;
+ }
+ return TRUE;
+}
+
+bool8 MEScrCmd_crc(struct ScriptContext *ctx)
+{
+ int crc = ScriptReadWord(ctx);
+ u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (crc != CalcCRC16(data, dataEnd - data))
+ {
+ ctx->data[3] = 0;
+ ctx->data[2] = 1;
+ }
+ return TRUE;
+}
diff --git a/src/quest_log.c b/src/quest_log.c
index 546ff6e05..8e890af21 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -523,7 +523,7 @@ void sub_8110A3C(void)
void sub_8110AB4(void)
{
- gUnknown_20370D0 = gUnknown_203ADFA;
+ gSpecialVar_Result = gUnknown_203ADFA;
}
u8 sub_8110AC8(void)
@@ -2654,7 +2654,7 @@ bool16 sub_8113364(void)
bool16 sub_811337C(struct Var4038Struct * a0)
{
- return (a0->unk_1 >> gUnknown_20370C0) & 1;
+ return (a0->unk_1 >> gSpecialVar_0x8004) & 1;
}
void sub_8113390(struct Var4038Struct * a0)
@@ -2669,7 +2669,7 @@ void sub_81133A4(void)
u8 r3 = 0;
u8 r2 = 0;
- switch (gUnknown_20370C0)
+ switch (gSpecialVar_0x8004)
{
case 0:
r2 = 0;
@@ -2770,7 +2770,7 @@ void sub_8113524(struct Var4038Struct * a0)
u8 sub_8113530(void)
{
- return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0);
+ return sub_8113114(VAR_0x4038_STRUCT, gSpecialVar_0x8004);
}
static u16 * (*const sQuestLogStorageCBs[])(u16 *, const u16 *) = {
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 17a13ab01..4d42f270d 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -63,7 +63,7 @@ struct VsSeekerStruct
u8 responseCode:5;
};
-extern u16 gUnknown_20370D2;
+extern u16 gSpecialVar_LastTalked;
extern struct MapObject gMapObjects[MAP_OBJECTS_COUNT];
extern u8 gUnknown_3005074;
@@ -588,7 +588,7 @@ void Task_VsSeeker_0(u8 taskId)
}
else if (respval == 2)
{
- sub_80A2294(4, 0, gUnknown_203AD30, 0xffff);
+ sub_80A2294(4, 0, gSpecialVar_ItemId, 0xffff);
FieldEffectStart(FLDEFF_UNK_41); // TODO: name this enum
gTasks[taskId].func = Task_VsSeeker_1;
gTasks[taskId].data[0] = 15;
@@ -1078,7 +1078,7 @@ static bool8 sub_810CD80(const VsSeekerData *vsSeekerData, u16 trainerBattleOppo
return FALSE;
if (rematchIdx >= 0 && rematchIdx < ARRAY_COUNT(sVsSeekerData))
{
- if (IsThisTrainerRematchable(gUnknown_20370D2))
+ if (IsThisTrainerRematchable(gSpecialVar_LastTalked))
return TRUE;
}
return FALSE;
@@ -1097,7 +1097,7 @@ static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData
void sub_810CDE8(void)
{
- gSaveBlock1Ptr->trainerRematches[gUnknown_20370D2] = 0;
+ gSaveBlock1Ptr->trainerRematches[gSpecialVar_LastTalked] = 0;
sub_80803FC();
}
@@ -1148,7 +1148,7 @@ static bool8 sub_810CED0(const VsSeekerData * a0, u16 a1)
return FALSE;
if ((u32)r1 >= ARRAY_COUNT(sVsSeekerData))
return FALSE;
- if (!IsThisTrainerRematchable(gUnknown_20370D2))
+ if (!IsThisTrainerRematchable(gSpecialVar_LastTalked))
return FALSE;
return TRUE;
}
diff --git a/sym_common.txt b/sym_common.txt
index af6d7ba4f..d71702d05 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -329,9 +329,9 @@ gUnknown_3005EA0: @ 3005EA0
gUnknown_3005ECC: @ 3005ECC
.space 0x4
-gUnknown_3005ED0: @ 3005ED0
- .space 0x10
+ .include "mevent.o"
+ .align 4
gUnknown_3005EE0: @ 3005EE0
.space 0x10
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 83fdcf763..d68a01f8f 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -49,51 +49,58 @@ gStringVar4: @ 2021D18
.include "src/string_util.o"
-gUnknown_2022110: @ 2022110
+ @ .include "src/link.o"
+gLinkTestDebugValuesEnabled: @ 2022110
.space 0x1
gUnknown_2022111: @ 2022111
- .space 0x3
+ .space 0x1
+ .align 2
gUnknown_2022114: @ 2022114
.space 0x4
-gUnknown_2022118: @ 2022118
- .space 0x4
-
-gUnknown_202211C: @ 202211C
- .space 0x4FC
+gBlockRecvBuffer: @ 2022118
+ .space 0x500
-gUnknown_2022618: @ 2022618
+gBlockSendBuffer: @ 2022618
.space 0x100
-gUnknown_2022718: @ 2022718
- .space 0x2
+gLinkOpen: @ 2022718
+ .space 0x1
-gUnknown_202271A: @ 202271A
+ .align 1
+gLinkType: @ 202271A
.space 0x2
-gUnknown_202271C: @ 202271C
- .space 0x4
+gLinkTimeOutCounter: @ 202271C
+ .space 0x2
-gUnknown_2022720: @ 2022720
+ .align 2
+gLocalLinkPlayer: @ 2022720
.space 0x1C
+ .align 2
gLinkPlayers: @ 202273C
.space 0x8C
-gUnknown_20227C8: @ 20227C8
+ .align 2
+gSavedLinkPlayers: @ 20227C8
.space 0x8C
-gUnknown_2022854: @ 2022854
+ .align 2
+sLinkErrorBuffer: @ 2022854
.space 0x8
+ .align 1
gUnknown_202285C: @ 202285C
- .space 0x4
+ .space 0x2
+ .align 2
gUnknown_2022860: @ 2022860
.space 0xC
+ @ .include "src/link_rfu.o"
gUnknown_202286C: @ 202286C
.space 0x1
@@ -649,49 +656,49 @@ gUnknown_20370B4: @ 20370B4
gUnknown_20370B6: @ 20370B6
.space 0x2
-gUnknown_20370B8: @ 20370B8
+gSpecialVar_0x8000: @ 20370B8
.space 0x2
-gUnknown_20370BA: @ 20370BA
+gSpecialVar_0x8001: @ 20370BA
.space 0x2
-gUnknown_20370BC: @ 20370BC
+gSpecialVar_0x8002: @ 20370BC
.space 0x2
-gUnknown_20370BE: @ 20370BE
+gSpecialVar_0x8003: @ 20370BE
.space 0x2
-gUnknown_20370C0: @ 20370C0
+gSpecialVar_0x8004: @ 20370C0
.space 0x2
gSpecialVar_0x8005: @ 20370C2
.space 0x2
-gUnknown_20370C4: @ 20370C4
+gSpecialVar_0x8006: @ 20370C4
.space 0x2
-gUnknown_20370C6: @ 20370C6
+gSpecialVar_0x8007: @ 20370C6
.space 0x2
-gUnknown_20370C8: @ 20370C8
+gSpecialVar_0x8008: @ 20370C8
.space 0x2
-gUnknown_20370CA: @ 20370CA
+gSpecialVar_0x8009: @ 20370CA
.space 0x2
-gUnknown_20370CC: @ 20370CC
+gSpecialVar_0x800A: @ 20370CC
.space 0x2
-gUnknown_20370CE: @ 20370CE
+gSpecialVar_0x800B: @ 20370CE
.space 0x2
-gUnknown_20370D0: @ 20370D0
+gSpecialVar_Result: @ 20370D0
.space 0x2
-gUnknown_20370D2: @ 20370D2
+gSpecialVar_LastTalked: @ 20370D2
.space 0x2
-gUnknown_20370D4: @ 20370D4
+gSpecialVar_Facing: @ 20370D4
.space 0x2
gSpecialVar_MonBoxId: @ 20370D6
@@ -1190,10 +1197,7 @@ gUnknown_2039A34: @ 2039A34
.space 0x4
.include "src/save.o"
-
- .align 2
-gUnknown_203AA3C: @ 203AA3C
- .space 0x74
+ .include "src/mystery_event_script.o"
gUnknown_203AAB0: @ 203AAB0
.space 0x4
@@ -1393,7 +1397,7 @@ gUnknown_203AD28: @ 203AD28
gUnknown_203AD2C: @ 203AD2C
.space 0x4
-gUnknown_203AD30: @ 203AD30
+gSpecialVar_ItemId: @ 203AD30
.space 0x4
gUnknown_203AD34: @ 203AD34
@@ -1699,20 +1703,10 @@ gUnknown_203F3B0: @ 203F3B0
gUnknown_203F3B8: @ 203F3B8
.space 0x4
-gUnknown_203F3BC: @ 203F3BC
- .space 0x4
-
-gUnknown_203F3C0: @ 203F3C0
- .space 0x4
-
-gUnknown_203F3C4: @ 203F3C4
- .space 0x4
-
-gUnknown_203F3C8: @ 203F3C8
- .space 0x4
-
-gUnknown_203F3CC: @ 203F3CC
- .space 0x4
+ .include "src/mevent.o"
+ .include "src/mevent_server_helpers.o"
+ .include "src/mevent_server.o"
+ .include "src/mevent_8145654.o"
gUnknown_203F3D0: @ 203F3D0
.space 0x4