summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_control_avatar.s12
-rw-r--r--asm/item_menu.s7021
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--data/event_scripts.s15
-rw-r--r--data/graphics.s8
-rw-r--r--data/item_menu.s116
-rw-r--r--data/maps/DiglettsCave_NorthEntrance/map.json2
-rw-r--r--data/maps/DiglettsCave_NorthEntrance/scripts.inc4
-rw-r--r--data/maps/DiglettsCave_NorthEntrance/text.inc2
-rw-r--r--data/maps/DiglettsCave_SouthEntrance/map.json2
-rw-r--r--data/maps/DiglettsCave_SouthEntrance/scripts.inc4
-rw-r--r--data/maps/DiglettsCave_SouthEntrance/text.inc2
-rw-r--r--data/maps/FourIsland/map.json2
-rw-r--r--data/maps/FourIsland/scripts.inc50
-rw-r--r--data/maps/FourIsland_PokemonDayCare/map.json2
-rw-r--r--data/maps/FourIsland_PokemonDayCare/scripts.inc174
-rw-r--r--data/maps/Route22_NorthEntrance/map.json4
-rw-r--r--data/maps/Route22_NorthEntrance/scripts.inc12
-rw-r--r--data/maps/Route23/map.json100
-rw-r--r--data/maps/Route23/scripts.inc88
-rw-r--r--data/maps/Route23/text.inc2
-rw-r--r--data/maps/Route5_PokemonDayCare/map.json2
-rw-r--r--data/maps/Route5_PokemonDayCare/scripts.inc2
-rw-r--r--data/maps/Route5_PokemonDayCare/text.inc60
-rw-r--r--data/maps/Route5_SouthEntrance/text.inc61
-rw-r--r--data/maps/UndergroundPath_EastEntrance/map.json2
-rw-r--r--data/maps/UndergroundPath_EastEntrance/scripts.inc4
-rw-r--r--data/maps/UndergroundPath_EastEntrance/text.inc2
-rw-r--r--data/maps/UndergroundPath_NorthEntrance/map.json2
-rw-r--r--data/maps/UndergroundPath_NorthEntrance/scripts.inc16
-rw-r--r--data/maps/UndergroundPath_SouthEntrance/map.json2
-rw-r--r--data/maps/UndergroundPath_SouthEntrance/scripts.inc4
-rw-r--r--data/maps/UndergroundPath_SouthEntrance/text.inc2
-rw-r--r--data/maps/UndergroundPath_WestEntrance/map.json2
-rw-r--r--data/maps/UndergroundPath_WestEntrance/scripts.inc4
-rw-r--r--data/maps/UndergroundPath_WestEntrance/text.inc2
-rw-r--r--data/maps/UnionRoom/map.json34
-rw-r--r--data/maps/UnionRoom/scripts.inc36
-rw-r--r--data/scripts/day_care.inc233
-rw-r--r--data/scripts/obtain_item.inc16
-rw-r--r--data/scripts/route23.inc181
-rw-r--r--data/scripts/test.inc20
-rw-r--r--data/scripts/trainer_tower.inc2
-rw-r--r--data/specials.inc2
-rw-r--r--data/strings.s26
-rw-r--r--data/text/day_care.inc130
-rw-r--r--data/text/teachy_tv.inc6
-rw-r--r--include/bag.h28
-rw-r--r--include/battle_controllers.h1
-rw-r--r--include/constants/daycare.h27
-rw-r--r--include/constants/flags.h16
-rw-r--r--include/constants/global.h1
-rw-r--r--include/constants/item_menu.h35
-rw-r--r--include/constants/menu.h31
-rw-r--r--include/constants/pokemon.h2
-rw-r--r--include/constants/region_map.h4
-rw-r--r--include/data.h2
-rw-r--r--include/daycare.h2
-rw-r--r--include/event_scripts.h4
-rw-r--r--include/gflib.h18
-rw-r--r--include/graphics.h15
-rw-r--r--include/item_menu.h33
-rw-r--r--include/item_menu_icons.h18
-rw-r--r--include/map_name_popup.h1
-rw-r--r--include/menu_helpers.h4
-rw-r--r--include/strings.h24
-rw-r--r--include/teachy_tv.h10
-rw-r--r--include/tm_case.h12
-rw-r--r--ld_script.txt4
-rw-r--r--src/bag.c272
-rw-r--r--src/battle_controller_oak_old_man.c4
-rw-r--r--src/battle_controller_player.c2
-rw-r--r--src/battle_controller_pokedude.c11
-rw-r--r--src/battle_main.c6
-rw-r--r--src/battle_message.c4
-rw-r--r--src/battle_setup.c4
-rw-r--r--src/berry_pouch.c6
-rw-r--r--src/data.c10
-rw-r--r--src/data/trainer_graphics/back_pic_anims.h8
-rw-r--r--src/data/trainer_graphics/back_pic_tables.h4
-rw-r--r--src/daycare.c235
-rw-r--r--src/graphics.c0
-rw-r--r--src/item_menu.c2400
-rw-r--r--src/item_menu_icons.c148
-rw-r--r--src/item_pc.c14
-rw-r--r--src/item_use.c34
-rw-r--r--src/menu_helpers.c4
-rw-r--r--src/new_game.c2
-rw-r--r--src/party_menu.c12
-rw-r--r--src/player_pc.c2
-rw-r--r--src/pokemon.c2
-rw-r--r--src/script_menu.c59
-rw-r--r--src/shop.c2
-rw-r--r--src/teachy_tv.c16
-rw-r--r--src/tm_case.c34
-rw-r--r--src/trade_scene.c2
-rw-r--r--sym_ewram.txt40
97 files changed, 3741 insertions, 8367 deletions
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 673c8bfc3..83f9a5700 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -1100,11 +1100,11 @@ sub_806D0E4: @ 806D0E4
ldr r0, [r5, 0x8]
cmp r0, 0
bne _0806D120
- ldr r0, _0806D11C @ =EventScript_1C555B
+ ldr r0, _0806D11C @ =Test_EventScript_Sign
b _0806D1E6
.align 2, 0
_0806D118: .4byte gMapHeader
-_0806D11C: .4byte EventScript_1C555B
+_0806D11C: .4byte Test_EventScript_Sign
_0806D120:
adds r0, r7, 0
adds r1, r6, 0
@@ -1834,11 +1834,11 @@ _0806D704:
beq _0806D720
movs r0, 0xD
bl IncrementGameStat
- ldr r0, _0806D71C @ =EventScript_81BF546
+ ldr r0, _0806D71C @ =EventScript_EggHatch
bl ScriptContext1_SetupScript
b _0806D730
.align 2, 0
-_0806D71C: .4byte EventScript_81BF546
+_0806D71C: .4byte EventScript_EggHatch
_0806D720:
bl SafariZoneTakeStep
lsls r0, 24
@@ -2150,13 +2150,13 @@ _0806D950:
ldr r0, [r0, 0x8]
cmp r0, 0
bne _0806D958
- ldr r0, _0806D960 @ =EventScript_1C555B
+ ldr r0, _0806D960 @ =Test_EventScript_Sign
_0806D958:
pop {r4}
pop {r1}
bx r1
.align 2, 0
-_0806D960: .4byte EventScript_1C555B
+_0806D960: .4byte Test_EventScript_Sign
thumb_func_end sub_806D928
thumb_func_start mapheader_run_first_tag2_script_list_match_conditionally
diff --git a/asm/item_menu.s b/asm/item_menu.s
deleted file mode 100644
index 704d8d5d8..000000000
--- a/asm/item_menu.s
+++ /dev/null
@@ -1,7021 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GoToBagMenu
-GoToBagMenu: @ 8107DB4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r2, 0
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, r6, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- bl sub_81081AC
- ldr r5, _08107DE4 @ =gUnknown_203AD10
- movs r0, 0x14
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- bne _08107DE8
- adds r0, r4, 0
- bl SetMainCallback2
- b _08107E9A
- .align 2, 0
-_08107DE4: .4byte gUnknown_203AD10
-_08107DE8:
- cmp r6, 0xB
- beq _08107DF0
- ldr r0, _08107E38 @ =gUnknown_203ACFC
- strb r6, [r0, 0x4]
-_08107DF0:
- cmp r4, 0
- beq _08107DF8
- ldr r0, _08107E38 @ =gUnknown_203ACFC
- str r4, [r0]
-_08107DF8:
- ldr r1, [r5]
- movs r0, 0
- str r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x31
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x5]
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x5]
- ldr r1, [r5]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x8]
- ldr r1, [r5]
- strb r0, [r1, 0x9]
- cmp r6, 0x3
- bne _08107E3C
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- subs r0, 0xF
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- b _08107E5A
- .align 2, 0
-_08107E38: .4byte gUnknown_203ACFC
-_08107E3C:
- cmp r7, 0x6
- bne _08107E50
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- b _08107E5A
-_08107E50:
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
-_08107E5A:
- strb r0, [r2, 0x5]
- movs r1, 0
- ldr r4, _08107EA4 @ =gTextFlags
- ldr r5, _08107EA8 @ =gSpecialVar_ItemId
- ldr r6, _08107EAC @ =sub_8107F10
- ldr r3, _08107EB0 @ =gUnknown_203AD10
- movs r2, 0
-_08107E68:
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r1
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _08107E68
- mov r0, r8
- cmp r0, 0x2
- bhi _08107E86
- ldr r0, _08107EB4 @ =gUnknown_203ACFC
- mov r1, r8
- strh r1, [r0, 0x6]
-_08107E86:
- ldrb r0, [r4]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0
- strh r0, [r5]
- adds r0, r6, 0
- bl SetMainCallback2
-_08107E9A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08107EA4: .4byte gTextFlags
-_08107EA8: .4byte gSpecialVar_ItemId
-_08107EAC: .4byte sub_8107F10
-_08107EB0: .4byte gUnknown_203AD10
-_08107EB4: .4byte gUnknown_203ACFC
- thumb_func_end GoToBagMenu
-
- thumb_func_start CB2_BagMenuFromStartMenu
-CB2_BagMenuFromStartMenu: @ 8107EB8
- push {lr}
- ldr r2, _08107EC8 @ =CB2_ReturnToFieldWithOpenMenu
- movs r0, 0
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08107EC8: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end CB2_BagMenuFromStartMenu
-
- thumb_func_start sub_8107ECC
-sub_8107ECC: @ 8107ECC
- push {lr}
- ldr r2, _08107EDC @ =SetCB2ToReshowScreenAfterMenu2
- movs r0, 0x5
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08107EDC: .4byte SetCB2ToReshowScreenAfterMenu2
- thumb_func_end sub_8107ECC
-
- thumb_func_start sub_8107EE0
-sub_8107EE0: @ 8107EE0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl DoScheduledBgTilemapCopiesToVram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8107EE0
-
- thumb_func_start sub_8107EFC
-sub_8107EFC: @ 8107EFC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8107EFC
-
- thumb_func_start sub_8107F10
-sub_8107F10: @ 8107F10
- push {lr}
-_08107F12:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08107F36
- bl sub_8107F3C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08107F36
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08107F12
-_08107F36:
- pop {r0}
- bx r0
- thumb_func_end sub_8107F10
-
- thumb_func_start sub_8107F3C
-sub_8107F3C: @ 8107F3C
- push {r4,r5,lr}
- ldr r0, _08107F58 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _08107F4E
- b _0810811C
-_08107F4E:
- lsls r0, 2
- ldr r1, _08107F5C @ =_08107F60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08107F58: .4byte gMain
-_08107F5C: .4byte _08107F60
- .align 2, 0
-_08107F60:
- .4byte _08107FB0
- .4byte _08107FBA
- .4byte _08107FC0
- .4byte _08107FC6
- .4byte _08107FD8
- .4byte _08107FDE
- .4byte _08107FE4
- .4byte _08107FF6
- .4byte _08108010
- .4byte _08108020
- .4byte _08108026
- .4byte _08108034
- .4byte _08108046
- .4byte _08108054
- .4byte _0810806E
- .4byte _081080B8
- .4byte _081080C8
- .4byte _081080D2
- .4byte _081080D8
- .4byte _081080DE
-_08107FB0:
- bl SetVBlankHBlankCallbacksToNull
- bl ClearScheduledBgCopiesToVram
- b _08108104
-_08107FBA:
- bl ScanlineEffect_Stop
- b _08108104
-_08107FC0:
- bl FreeAllSpritePalettes
- b _08108104
-_08107FC6:
- bl ResetPaletteFade
- ldr r2, _08107FD4 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- b _08108102
- .align 2, 0
-_08107FD4: .4byte gPaletteFade
-_08107FD8:
- bl ResetSpriteData
- b _08108104
-_08107FDE:
- bl ResetItemMenuIconState
- b _08108104
-_08107FE4:
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- beq _08107FF0
- b _08108104
-_08107FF0:
- bl ResetTasks
- b _08108104
-_08107FF6:
- bl sub_81081D0
- lsls r0, 24
- cmp r0, 0
- beq _0810803E
- ldr r0, _0810800C @ =gUnknown_203AD10
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x10]
- b _08108104
- .align 2, 0
-_0810800C: .4byte gUnknown_203AD10
-_08108010:
- bl sub_8108240
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810801E
- b _08108134
-_0810801E:
- b _08108104
-_08108020:
- bl sub_810B858
- b _08108104
-_08108026:
- bl sub_8108E54
- bl sub_8108A68
- bl sub_8108A84
- b _08108104
-_08108034:
- bl sub_81083F4
- lsls r0, 24
- cmp r0, 0
- bne _08108104
-_0810803E:
- bl sub_810813C
- movs r0, 0x1
- b _08108136
-_08108046:
- ldr r0, _08108050 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- bl sub_810842C
- b _08108104
- .align 2, 0
-_08108050: .4byte gUnknown_203ACFC
-_08108054:
- ldr r0, _08108064 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x3
- beq _08108068
- bl sub_81087EC
- b _08108104
- .align 2, 0
-_08108064: .4byte gUnknown_203ACFC
-_08108068:
- bl sub_810B994
- b _08108104
-_0810806E:
- ldr r4, _081080AC @ =gUnknown_203ACFC
- ldrb r0, [r4, 0x4]
- bl sub_8108388
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _081080B0 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r1, r4, 0
- adds r1, 0xE
- adds r1, r2, r1
- ldrh r1, [r1]
- adds r4, 0x8
- adds r2, r4
- ldrh r2, [r2]
- bl ListMenuInit
- ldr r2, _081080B4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x8]
- strh r2, [r1, 0xE]
- strh r2, [r1, 0x18]
- b _08108104
- .align 2, 0
-_081080AC: .4byte gUnknown_203ACFC
-_081080B0: .4byte gMultiuseListMenuTemplate
-_081080B4: .4byte gTasks
-_081080B8:
- ldr r0, _081080C4 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- bl sub_80984FC
- b _08108104
- .align 2, 0
-_081080C4: .4byte gUnknown_203ACFC
-_081080C8:
- bl sub_8108888
- bl sub_81088D8
- b _08108104
-_081080D2:
- bl sub_80985E4
- b _08108104
-_081080D8:
- bl sub_8108C10
- b _08108104
-_081080DE:
- ldr r0, _081080F0 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x3
- bne _081080F4
- movs r0, 0x1D
- bl HelpSystem_SetSomeVariable2
- b _081080FA
- .align 2, 0
-_081080F0: .4byte gUnknown_203ACFC
-_081080F4:
- movs r0, 0x9
- bl HelpSystem_SetSomeVariable2
-_081080FA:
- ldr r2, _08108114 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
-_08108102:
- strb r0, [r2, 0x8]
-_08108104:
- ldr r1, _08108118 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08108134
- .align 2, 0
-_08108114: .4byte gPaletteFade
-_08108118: .4byte gMain
-_0810811C:
- ldr r0, _0810812C @ =sub_8107EFC
- bl SetVBlankCallback
- ldr r0, _08108130 @ =sub_8107EE0
- bl SetMainCallback2
- movs r0, 0x1
- b _08108136
- .align 2, 0
-_0810812C: .4byte sub_8107EFC
-_08108130: .4byte sub_8107EE0
-_08108134:
- movs r0, 0
-_08108136:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8107F3C
-
- thumb_func_start sub_810813C
-sub_810813C: @ 810813C
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0810816C @ =sub_8108178
- movs r1, 0
- bl CreateTask
- ldr r0, _08108170 @ =sub_8107EFC
- bl SetVBlankCallback
- ldr r0, _08108174 @ =sub_8107EE0
- bl SetMainCallback2
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0810816C: .4byte sub_8108178
-_08108170: .4byte sub_8107EFC
-_08108174: .4byte sub_8107EE0
- thumb_func_end sub_810813C
-
- thumb_func_start sub_8108178
-sub_8108178: @ 8108178
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081081A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810819C
- ldr r0, _081081A8 @ =gUnknown_203ACFC
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_8108B04
- adds r0, r4, 0
- bl DestroyTask
-_0810819C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081081A4: .4byte gPaletteFade
-_081081A8: .4byte gUnknown_203ACFC
- thumb_func_end sub_8108178
-
- thumb_func_start sub_81081AC
-sub_81081AC: @ 81081AC
- ldr r0, _081081C0 @ =gUnknown_203AD10
- movs r1, 0
- str r1, [r0]
- ldr r0, _081081C4 @ =gUnknown_203AD14
- str r1, [r0]
- ldr r0, _081081C8 @ =gUnknown_203AD18
- str r1, [r0]
- ldr r0, _081081CC @ =gUnknown_203AD1C
- str r1, [r0]
- bx lr
- .align 2, 0
-_081081C0: .4byte gUnknown_203AD10
-_081081C4: .4byte gUnknown_203AD14
-_081081C8: .4byte gUnknown_203AD18
-_081081CC: .4byte gUnknown_203AD1C
- thumb_func_end sub_81081AC
-
- thumb_func_start sub_81081D0
-sub_81081D0: @ 81081D0
- push {r4,r5,lr}
- bl ResetAllBgsCoordinatesAndBgCntRegs
- ldr r5, _08108230 @ =gUnknown_203AD14
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- beq _08108238
- movs r1, 0
- adds r2, r4, 0
- bl memset
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08108234 @ =gUnknown_8452CF4
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r1, [r5]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- b _0810823A
- .align 2, 0
-_08108230: .4byte gUnknown_203AD14
-_08108234: .4byte gUnknown_8452CF4
-_08108238:
- movs r0, 0
-_0810823A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81081D0
-
- thumb_func_start sub_8108240
-sub_8108240: @ 8108240
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _0810825C @ =gUnknown_203AD10
- ldr r0, [r4]
- ldrb r0, [r0, 0x10]
- cmp r0, 0x5
- bls _08108250
- b _08108368
-_08108250:
- lsls r0, 2
- ldr r1, _08108260 @ =_08108264
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810825C: .4byte gUnknown_203AD10
-_08108260: .4byte _08108264
- .align 2, 0
-_08108264:
- .4byte _0810827C
- .4byte _08108298
- .4byte _081082D8
- .4byte _08108310
- .4byte _08108340
- .4byte _0810834C
-_0810827C:
- bl ResetTempTileDataBuffers
- ldr r1, _08108294 @ =gUnknown_8E830CC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- b _08108352
- .align 2, 0
-_08108294: .4byte gUnknown_8E830CC
-_08108298:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810837C
- ldr r0, _081082B8 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x3
- beq _081082C4
- ldr r0, _081082BC @ =gUnknown_8E832C0
- ldr r1, _081082C0 @ =gUnknown_203AD14
- ldr r1, [r1]
- bl LZDecompressWram
- b _08108352
- .align 2, 0
-_081082B8: .4byte gUnknown_203ACFC
-_081082BC: .4byte gUnknown_8E832C0
-_081082C0: .4byte gUnknown_203AD14
-_081082C4:
- ldr r0, _081082D0 @ =gUnknown_8E83444
- ldr r1, _081082D4 @ =gUnknown_203AD14
- ldr r1, [r1]
- bl LZDecompressWram
- b _08108352
- .align 2, 0
-_081082D0: .4byte gUnknown_8E83444
-_081082D4: .4byte gUnknown_203AD14
-_081082D8:
- ldr r0, _08108304 @ =gUnknown_8E835B4
- movs r1, 0
- movs r2, 0x60
- bl LoadCompressedPalette
- bl sub_810ADAC
- lsls r0, 24
- cmp r0, 0
- bne _08108352
- ldr r0, _08108308 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq _08108352
- ldr r0, _0810830C @ =gUnknown_8E83604
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- b _08108352
- .align 2, 0
-_08108304: .4byte gUnknown_8E835B4
-_08108308: .4byte gSaveBlock2Ptr
-_0810830C: .4byte gUnknown_8E83604
-_08108310:
- bl sub_810ADAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08108326
- ldr r0, _0810832C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08108334
-_08108326:
- ldr r0, _08108330 @ =gUnknown_83D41E4
- b _0810834E
- .align 2, 0
-_0810832C: .4byte gSaveBlock2Ptr
-_08108330: .4byte gUnknown_83D41E4
-_08108334:
- ldr r0, _0810833C @ =gUnknown_83D41EC
- bl LoadCompressedSpriteSheet
- b _08108352
- .align 2, 0
-_0810833C: .4byte gUnknown_83D41EC
-_08108340:
- ldr r0, _08108348 @ =gUnknown_83D41F4
- bl LoadCompressedSpritePalette
- b _08108352
- .align 2, 0
-_08108348: .4byte gUnknown_83D41F4
-_0810834C:
- ldr r0, _08108360 @ =gBagSwapSpriteSheet
-_0810834E:
- bl LoadCompressedSpriteSheet
-_08108352:
- ldr r0, _08108364 @ =gUnknown_203AD10
- ldr r1, [r0]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- b _0810837C
- .align 2, 0
-_08108360: .4byte gBagSwapSpriteSheet
-_08108364: .4byte gUnknown_203AD10
-_08108368:
- ldr r0, _08108378 @ =gBagSwapSpritePalette
- bl LoadCompressedSpritePalette
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x10]
- movs r0, 0x1
- b _0810837E
- .align 2, 0
-_08108378: .4byte gBagSwapSpritePalette
-_0810837C:
- movs r0, 0
-_0810837E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8108240
-
- thumb_func_start sub_8108388
-sub_8108388: @ 8108388
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x6
- cmp r0, 0x4
- bhi _081083E0
- lsls r0, 2
- ldr r1, _081083A0 @ =_081083A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081083A0: .4byte _081083A4
- .align 2, 0
-_081083A4:
- .4byte _081083B8
- .4byte _081083D0
- .4byte _081083D8
- .4byte _081083C0
- .4byte _081083C8
-_081083B8:
- ldr r0, _081083BC @ =sub_810AF9C
- b _081083E2
- .align 2, 0
-_081083BC: .4byte sub_810AF9C
-_081083C0:
- ldr r0, _081083C4 @ =sub_810B1D4
- b _081083E2
- .align 2, 0
-_081083C4: .4byte sub_810B1D4
-_081083C8:
- ldr r0, _081083CC @ =sub_810B5D4
- b _081083E2
- .align 2, 0
-_081083CC: .4byte sub_810B5D4
-_081083D0:
- ldr r0, _081083D4 @ =sub_810B4BC
- b _081083E2
- .align 2, 0
-_081083D4: .4byte sub_810B4BC
-_081083D8:
- ldr r0, _081083DC @ =sub_810B378
- b _081083E2
- .align 2, 0
-_081083DC: .4byte sub_810B378
-_081083E0:
- ldr r0, _081083F0 @ =sub_8108F0C
-_081083E2:
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_081083F0: .4byte sub_8108F0C
- thumb_func_end sub_8108388
-
- thumb_func_start sub_81083F4
-sub_81083F4: @ 81083F4
- push {r4,lr}
- ldr r4, _08108418 @ =gUnknown_203AD18
- movs r0, 0xAC
- lsls r0, 1
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _08108424
- ldr r4, _0810841C @ =gUnknown_203AD1C
- ldr r0, _08108420 @ =0x00000331
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _08108424
- movs r0, 0x1
- b _08108426
- .align 2, 0
-_08108418: .4byte gUnknown_203AD18
-_0810841C: .4byte gUnknown_203AD1C
-_08108420: .4byte 0x00000331
-_08108424:
- movs r0, 0
-_08108426:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81083F4
-
- thumb_func_start sub_810842C
-sub_810842C: @ 810842C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, r7, 3
- ldr r0, _0810853C @ =gBagPockets
- adds r1, r0
- mov r8, r1
- movs r6, 0
- ldr r0, _08108540 @ =gUnknown_203AD10
- ldr r0, [r0]
- adds r0, 0xA
- adds r0, r7
- ldrb r0, [r0]
- cmp r6, r0
- bcs _0810848C
- ldr r5, _08108544 @ =gUnknown_203AD1C
-_08108450:
- lsls r2, r6, 2
- adds r4, r2, r6
- lsls r4, 2
- subs r4, r6
- ldr r0, [r5]
- adds r0, r4
- mov r3, r8
- ldr r1, [r3]
- adds r2, r1
- ldrh r1, [r2]
- bl sub_8108560
- ldr r0, _08108548 @ =gUnknown_203AD18
- ldr r0, [r0]
- lsls r1, r6, 3
- adds r1, r0
- ldr r0, [r5]
- adds r0, r4
- str r0, [r1]
- str r6, [r1, 0x4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _08108540 @ =gUnknown_203AD10
- ldr r0, [r0]
- adds r0, 0xA
- adds r0, r7
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08108450
-_0810848C:
- ldr r5, _08108544 @ =gUnknown_203AD1C
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 2
- subs r4, r6
- ldr r0, [r5]
- adds r0, r4
- ldr r1, _0810854C @ =gUnknown_8452F60
- bl StringCopy
- ldr r0, [r5]
- adds r0, r4
- ldr r1, _08108550 @ =gFameCheckerText_Cancel
- bl StringAppend
- ldr r0, _08108548 @ =gUnknown_203AD18
- ldr r2, [r0]
- lsls r1, r6, 3
- adds r1, r2
- ldr r0, [r5]
- adds r0, r4
- str r0, [r1]
- str r6, [r1, 0x4]
- ldr r3, _08108554 @ =gMultiuseListMenuTemplate
- str r2, [r3]
- ldr r0, _08108540 @ =gUnknown_203AD10
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0xA
- adds r0, r7
- ldrb r0, [r0]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r3, 0xC]
- strb r1, [r3, 0x10]
- strb r1, [r3, 0x11]
- movs r0, 0x9
- strb r0, [r3, 0x12]
- movs r0, 0x1
- strb r0, [r3, 0x13]
- ldrb r0, [r3, 0x16]
- movs r4, 0x8
- negs r4, r4
- ands r4, r0
- movs r0, 0x39
- negs r0, r0
- ands r4, r0
- movs r0, 0x10
- orrs r4, r0
- strb r4, [r3, 0x16]
- ldrb r0, [r3, 0x14]
- movs r1, 0x10
- negs r1, r1
- ands r1, r0
- movs r5, 0x2
- orrs r1, r5
- strb r1, [r3, 0x14]
- adds r2, 0xD
- adds r2, r7
- ldrb r0, [r2]
- strh r0, [r3, 0xE]
- ldrb r0, [r3, 0x17]
- movs r2, 0x40
- negs r2, r2
- ands r2, r0
- orrs r2, r5
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x20
- orrs r1, r0
- strb r1, [r3, 0x14]
- movs r0, 0x30
- strb r0, [r3, 0x15]
- ldr r0, _08108558 @ =sub_81085A4
- str r0, [r3, 0x4]
- ldr r0, _0810855C @ =sub_8108654
- str r0, [r3, 0x8]
- movs r0, 0x3F
- ands r2, r0
- strb r2, [r3, 0x17]
- ands r4, r0
- strb r4, [r3, 0x16]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810853C: .4byte gBagPockets
-_08108540: .4byte gUnknown_203AD10
-_08108544: .4byte gUnknown_203AD1C
-_08108548: .4byte gUnknown_203AD18
-_0810854C: .4byte gUnknown_8452F60
-_08108550: .4byte gFameCheckerText_Cancel
-_08108554: .4byte gMultiuseListMenuTemplate
-_08108558: .4byte sub_81085A4
-_0810855C: .4byte sub_8108654
- thumb_func_end sub_810842C
-
- thumb_func_start sub_8108560
-sub_8108560: @ 8108560
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, _0810857C @ =0xfe940000
- adds r1, r0
- lsrs r1, 16
- cmp r1, 0x1
- bhi _08108584
- ldr r1, _08108580 @ =gUnknown_8452F66
- adds r0, r4, 0
- bl StringCopy
- b _0810858C
- .align 2, 0
-_0810857C: .4byte 0xfe940000
-_08108580: .4byte gUnknown_8452F66
-_08108584:
- ldr r1, _081085A0 @ =gUnknown_8452F60
- adds r0, r4, 0
- bl StringCopy
-_0810858C:
- adds r0, r5, 0
- bl ItemId_GetName
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringAppend
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081085A0: .4byte gUnknown_8452F60
- thumb_func_end sub_8108560
-
- thumb_func_start sub_81085A4
-sub_81085A4: @ 81085A4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _081085BA
- movs r0, 0xF5
- bl PlaySE
- bl sub_8098580
-_081085BA:
- ldr r4, _08108604 @ =gUnknown_203AD10
- ldr r1, [r4]
- ldrb r0, [r1, 0x4]
- cmp r0, 0xFF
- bne _08108644
- ldrb r1, [r1, 0x5]
- lsls r1, 26
- lsrs r1, 30
- movs r0, 0x1
- eors r0, r1
- bl DestroyItemMenuIcon
- ldr r2, [r4]
- ldr r0, _08108608 @ =gUnknown_203ACFC
- ldrh r1, [r0, 0x6]
- adds r0, r2, 0
- adds r0, 0xA
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, r5
- beq _0810860C
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r5, 16
- lsrs r1, 16
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [r4]
- ldrb r1, [r1, 0x5]
- lsls r1, 26
- lsrs r1, 30
- bl CreateItemMenuIcon
- b _08108618
- .align 2, 0
-_08108604: .4byte gUnknown_203AD10
-_08108608: .4byte gUnknown_203ACFC
-_0810860C:
- ldr r0, _0810864C @ =0x00000177
- ldrb r1, [r2, 0x5]
- lsls r1, 26
- lsrs r1, 30
- bl CreateItemMenuIcon
-_08108618:
- ldr r4, _08108650 @ =gUnknown_203AD10
- ldr r3, [r4]
- ldrb r2, [r3, 0x5]
- lsls r0, r2, 26
- lsrs r0, 30
- movs r1, 0x1
- eors r1, r0
- lsls r1, 4
- movs r0, 0x31
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- bne _08108644
- adds r0, r5, 0
- bl sub_8108818
-_08108644:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810864C: .4byte 0x00000177
-_08108650: .4byte gUnknown_203AD10
- thumb_func_end sub_81085A4
-
- thumb_func_start sub_8108654
-sub_8108654: @ 8108654
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _08108684 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldrb r1, [r0, 0x4]
- cmp r1, 0xFF
- beq _08108690
- lsls r0, r4, 24
- lsrs r0, 24
- cmp r1, r0
- bne _08108688
- adds r0, r6, 0
- movs r1, 0x2
- bl bag_menu_print_cursor
- b _08108690
- .align 2, 0
-_08108684: .4byte gUnknown_203AD10
-_08108688:
- adds r0, r6, 0
- movs r1, 0xFF
- bl bag_menu_print_cursor
-_08108690:
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _08108752
- ldr r0, _08108718 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldr r5, _0810871C @ =gUnknown_203ACFC
- ldrh r1, [r5, 0x6]
- adds r0, 0xA
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, r4
- beq _08108752
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 16
- lsrs r4, 16
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r7, r0, 16
- ldrb r0, [r5, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl BagGetQuantityByPocketPosition
- lsls r0, 16
- lsrs r4, r0, 16
- ldrh r0, [r5, 0x6]
- cmp r0, 0x1
- beq _0810872C
- adds r0, r7, 0
- bl itemid_is_unique
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0810872C
- ldr r0, _08108720 @ =gStringVar1
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _08108724 @ =gStringVar4
- ldr r1, _08108728 @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- str r6, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- movs r0, 0x1
- str r0, [sp, 0x10]
- mov r0, r8
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x6E
- bl sub_810B8F0
- b _08108752
- .align 2, 0
-_08108718: .4byte gUnknown_203AD10
-_0810871C: .4byte gUnknown_203ACFC
-_08108720: .4byte gStringVar1
-_08108724: .4byte gStringVar4
-_08108728: .4byte gText_TimesStrVar1
-_0810872C:
- ldr r0, _08108760 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08108764 @ =0x00000296
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08108752
- cmp r0, r7
- bne _08108752
- ldr r1, _08108768 @ =gUnknown_8452F7C
- movs r0, 0x18
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- mov r0, r8
- movs r2, 0x70
- adds r3, r6, 0
- bl BlitBitmapToWindow
-_08108752:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108760: .4byte gSaveBlock1Ptr
-_08108764: .4byte 0x00000296
-_08108768: .4byte gUnknown_8452F7C
- thumb_func_end sub_8108654
-
- thumb_func_start bag_menu_print_cursor_
-bag_menu_print_cursor_: @ 810876C
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- bl ListMenuGetYCoordForPrintingArrowCursor
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl bag_menu_print_cursor
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end bag_menu_print_cursor_
-
- thumb_func_start bag_menu_print_cursor
-bag_menu_print_cursor: @ 810878C
- push {r4,r5,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0xFF
- bne _081087C8
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1
- adds r3, r5, 0
- bl FillWindowPixelRect
- b _081087DE
-_081087C8:
- ldr r2, _081087E8 @ =gFameCheckerText_ListMenuCursor
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r3, 0x1
- bl sub_810B8F0
-_081087DE:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081087E8: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end bag_menu_print_cursor
-
- thumb_func_start sub_81087EC
-sub_81087EC: @ 81087EC
- push {lr}
- movs r0, 0x2
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r2, _08108810 @ =gUnknown_8452CFC
- ldr r0, _08108814 @ =gUnknown_203ACFC
- ldrh r1, [r0, 0x6]
- lsls r0, r1, 2
- adds r0, r2
- ldr r0, [r0]
- lsls r1, 24
- lsrs r1, 24
- bl sub_810B958
- pop {r0}
- bx r0
- .align 2, 0
-_08108810: .4byte gUnknown_8452CFC
-_08108814: .4byte gUnknown_203ACFC
- thumb_func_end sub_81087EC
-
- thumb_func_start sub_8108818
-sub_8108818: @ 8108818
- push {r4,lr}
- sub sp, 0x14
- adds r2, r0, 0
- ldr r0, _0810884C @ =gUnknown_203AD10
- ldr r0, [r0]
- ldr r1, _08108850 @ =gUnknown_203ACFC
- ldrh r1, [r1, 0x6]
- adds r0, 0xA
- adds r0, r1
- ldrb r0, [r0]
- cmp r2, r0
- beq _08108854
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r2, 16
- lsrs r1, 16
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl ItemId_GetDescription
- adds r4, r0, 0
- b _08108856
- .align 2, 0
-_0810884C: .4byte gUnknown_203AD10
-_08108850: .4byte gUnknown_203ACFC
-_08108854:
- ldr r4, _08108884 @ =gUnknown_84162F5
-_08108856:
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl sub_810B8F0
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08108884: .4byte gUnknown_84162F5
- thumb_func_end sub_8108818
-
- thumb_func_start sub_8108888
-sub_8108888: @ 8108888
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _081088D0 @ =gUnknown_203AD10
- ldr r1, [r4]
- ldr r2, _081088D4 @ =gUnknown_203ACFC
- ldrh r3, [r2, 0x6]
- adds r0, r1, 0
- adds r0, 0xA
- adds r0, r3
- ldrb r0, [r0]
- adds r1, 0xD
- adds r1, r3
- ldrb r1, [r1]
- subs r0, r1
- adds r0, 0x1
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- ldrh r0, [r2, 0x6]
- lsls r0, 1
- adds r2, 0xE
- adds r0, r2
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xA0
- movs r2, 0x8
- movs r3, 0x68
- bl AddScrollIndicatorArrowPairParameterized
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081088D0: .4byte gUnknown_203AD10
-_081088D4: .4byte gUnknown_203ACFC
- thumb_func_end sub_8108888
-
- thumb_func_start sub_81088D8
-sub_81088D8: @ 81088D8
- push {r4,lr}
- ldr r4, _081088FC @ =gUnknown_203AD10
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- beq _081088F4
- ldr r0, _08108900 @ =gUnknown_8452F6C
- ldr r1, _08108904 @ =gUnknown_203AD02
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- strb r0, [r1, 0x9]
-_081088F4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081088FC: .4byte gUnknown_203AD10
-_08108900: .4byte gUnknown_8452F6C
-_08108904: .4byte gUnknown_203AD02
- thumb_func_end sub_81088D8
-
- thumb_func_start sub_8108908
-sub_8108908: @ 8108908
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _0810893C @ =gUnknown_203AD10
- ldr r1, [r4]
- movs r0, 0x1
- strh r0, [r1, 0x6]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r1, 0x6
- str r1, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x98
- movs r2, 0x48
- movs r3, 0x68
- bl AddScrollIndicatorArrowPairParameterized
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810893C: .4byte gUnknown_203AD10
- thumb_func_end sub_8108908
-
- thumb_func_start sub_8108940
-sub_8108940: @ 8108940
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _08108974 @ =gUnknown_203AD10
- ldr r1, [r4]
- movs r0, 0x1
- strh r0, [r1, 0x6]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r1, 0x6
- str r1, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xD4
- movs r2, 0x78
- movs r3, 0x98
- bl AddScrollIndicatorArrowPairParameterized
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08108974: .4byte gUnknown_203AD10
- thumb_func_end sub_8108940
-
- thumb_func_start sub_8108978
-sub_8108978: @ 8108978
- push {r4,lr}
- ldr r4, _08108998 @ =gUnknown_203AD10
- ldr r1, [r4]
- ldrb r0, [r1, 0x8]
- cmp r0, 0xFF
- beq _0810898E
- bl RemoveScrollIndicatorArrowPair
- ldr r1, [r4]
- movs r0, 0xFF
- strb r0, [r1, 0x8]
-_0810898E:
- bl sub_810899C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08108998: .4byte gUnknown_203AD10
- thumb_func_end sub_8108978
-
- thumb_func_start sub_810899C
-sub_810899C: @ 810899C
- push {r4,lr}
- ldr r4, _081089B8 @ =gUnknown_203AD10
- ldr r1, [r4]
- ldrb r0, [r1, 0x9]
- cmp r0, 0xFF
- beq _081089B2
- bl RemoveScrollIndicatorArrowPair
- ldr r1, [r4]
- movs r0, 0xFF
- strb r0, [r1, 0x9]
-_081089B2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081089B8: .4byte gUnknown_203AD10
- thumb_func_end sub_810899C
-
- thumb_func_start sub_81089BC
-sub_81089BC: @ 81089BC
- push {r4,r5,lr}
- ldr r0, _081089F0 @ =gUnknown_203ACFC
- movs r2, 0
- movs r1, 0
- strh r1, [r0, 0x6]
- strb r2, [r0, 0x5]
- movs r2, 0
- adds r5, r0, 0
- adds r5, 0x8
- movs r3, 0
- adds r4, r0, 0
- adds r4, 0xE
-_081089D4:
- lsls r1, r2, 1
- adds r0, r1, r5
- strh r3, [r0]
- adds r1, r4
- strh r3, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _081089D4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081089F0: .4byte gUnknown_203ACFC
- thumb_func_end sub_81089BC
-
- thumb_func_start sub_81089F4
-sub_81089F4: @ 81089F4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _08108A60 @ =gUnknown_203ACFC
- lsls r1, r4, 1
- adds r0, r2, 0
- adds r0, 0xE
- adds r3, r1, r0
- ldrh r0, [r3]
- adds r7, r2, 0
- ldr r6, _08108A64 @ =gUnknown_203AD10
- cmp r0, 0
- beq _08108A2E
- adds r2, r0, 0
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0xD
- adds r0, r4
- ldrb r5, [r0]
- adds r2, r5
- adds r1, 0xA
- adds r1, r4
- ldrb r1, [r1]
- adds r0, r1, 0x1
- cmp r2, r0
- ble _08108A2E
- subs r0, r5, 0x1
- subs r0, r1, r0
- strh r0, [r3]
-_08108A2E:
- lsls r2, r4, 1
- adds r0, r7, 0
- adds r0, 0xE
- adds r0, r2, r0
- ldrh r1, [r0]
- adds r0, r7, 0
- adds r0, 0x8
- adds r2, r0
- ldrh r0, [r2]
- adds r1, r0
- ldr r0, [r6]
- adds r0, 0xA
- adds r0, r4
- ldrb r0, [r0]
- adds r3, r0, 0x1
- cmp r1, r3
- blt _08108A58
- cmp r3, 0x1
- bgt _08108A56
- movs r0, 0
-_08108A56:
- strh r0, [r2]
-_08108A58:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108A60: .4byte gUnknown_203ACFC
-_08108A64: .4byte gUnknown_203AD10
- thumb_func_end sub_81089F4
-
- thumb_func_start sub_8108A68
-sub_8108A68: @ 8108A68
- push {r4,lr}
- movs r4, 0
-_08108A6C:
- adds r0, r4, 0
- bl sub_81089F4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08108A6C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8108A68
-
- thumb_func_start sub_8108A84
-sub_8108A84: @ 8108A84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, _08108AF8 @ =gUnknown_203AD04
- mov r8, r0
-_08108A90:
- lsls r2, r6, 1
- mov r3, r8
- adds r1, r2, r3
- ldrh r0, [r1]
- adds r7, r6, 0x1
- cmp r0, 0x3
- bls _08108AE6
- movs r5, 0
- subs r0, 0x3
- cmp r5, r0
- bgt _08108AE6
- ldr r0, _08108AFC @ =gUnknown_203AD0A
- ldr r3, _08108B00 @ =gUnknown_203AD10
- mov r12, r3
- adds r4, r2, r0
- adds r3, r1, 0
-_08108AB0:
- ldrh r2, [r4]
- mov r0, r12
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xD
- adds r0, r6
- ldrb r0, [r0]
- adds r2, r0
- adds r1, 0xA
- adds r1, r6
- ldrb r0, [r1]
- adds r0, 0x1
- cmp r2, r0
- beq _08108AE6
- ldrh r0, [r3]
- subs r0, 0x1
- strh r0, [r3]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r3]
- subs r0, 0x3
- cmp r5, r0
- ble _08108AB0
-_08108AE6:
- lsls r0, r7, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _08108A90
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108AF8: .4byte gUnknown_203AD04
-_08108AFC: .4byte gUnknown_203AD0A
-_08108B00: .4byte gUnknown_203AD10
- thumb_func_end sub_8108A84
-
- thumb_func_start sub_8108B04
-sub_8108B04: @ 8108B04
- push {lr}
- ldr r0, _08108B40 @ =gUnknown_203AD10
- ldr r0, [r0]
- cmp r0, 0
- beq _08108B12
- bl Free
-_08108B12:
- ldr r0, _08108B44 @ =gUnknown_203AD14
- ldr r0, [r0]
- cmp r0, 0
- beq _08108B1E
- bl Free
-_08108B1E:
- ldr r0, _08108B48 @ =gUnknown_203AD18
- ldr r0, [r0]
- cmp r0, 0
- beq _08108B2A
- bl Free
-_08108B2A:
- ldr r0, _08108B4C @ =gUnknown_203AD1C
- ldr r0, [r0]
- cmp r0, 0
- beq _08108B36
- bl Free
-_08108B36:
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- .align 2, 0
-_08108B40: .4byte gUnknown_203AD10
-_08108B44: .4byte gUnknown_203AD14
-_08108B48: .4byte gUnknown_203AD18
-_08108B4C: .4byte gUnknown_203AD1C
- thumb_func_end sub_8108B04
-
- thumb_func_start ItemMenu_StartFadeToExitCallback
-ItemMenu_StartFadeToExitCallback: @ 8108B50
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08108B84 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08108B88 @ =sub_8108B8C
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08108B84: .4byte gTasks
-_08108B88: .4byte sub_8108B8C
- thumb_func_end ItemMenu_StartFadeToExitCallback
-
- thumb_func_start sub_8108B8C
-sub_8108B8C: @ 8108B8C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08108BE0 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r0, _08108BE4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08108C08
- ldr r0, _08108BE8 @ =sub_8108CFC
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08108C08
- ldrb r0, [r4]
- ldr r4, _08108BEC @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r1, r4, 0
- adds r1, 0xE
- adds r1, r2, r1
- adds r3, r4, 0
- adds r3, 0x8
- adds r2, r3
- bl DestroyListMenuTask
- ldr r0, _08108BF0 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _08108BF4
- bl SetMainCallback2
- b _08108BFA
- .align 2, 0
-_08108BE0: .4byte gTasks+0x8
-_08108BE4: .4byte gPaletteFade
-_08108BE8: .4byte sub_8108CFC
-_08108BEC: .4byte gUnknown_203ACFC
-_08108BF0: .4byte gUnknown_203AD10
-_08108BF4:
- ldr r0, [r4]
- bl SetMainCallback2
-_08108BFA:
- bl sub_8108978
- bl sub_8108B04
- adds r0, r5, 0
- bl DestroyTask
-_08108C08:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8108B8C
-
- thumb_func_start sub_8108C10
-sub_8108C10: @ 8108C10
- push {r4,r5,lr}
- sub sp, 0x8
- movs r5, 0
- add r0, sp, 0x4
- strh r5, [r0]
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3F
- bl SetGpuReg
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r5, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r4, _08108C68 @ =gUnknown_203ACFC
- ldrb r0, [r4, 0x5]
- cmp r0, 0x1
- bne _08108C6C
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- b _08108C9E
- .align 2, 0
-_08108C68: .4byte gUnknown_203ACFC
-_08108C6C:
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuReg
- ldr r0, _08108CA8 @ =sub_8108CFC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08108CAC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0xC0
- strh r0, [r1, 0x8]
- ldr r0, _08108CB0 @ =0x0000fff0
- strh r0, [r1, 0xA]
- movs r0, 0x1
- strb r0, [r4, 0x5]
-_08108C9E:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08108CA8: .4byte sub_8108CFC
-_08108CAC: .4byte gTasks
-_08108CB0: .4byte 0x0000fff0
- thumb_func_end sub_8108C10
-
- thumb_func_start sub_8108CB4
-sub_8108CB4: @ 8108CB4
- push {lr}
- ldr r0, _08108CE0 @ =sub_8108CFC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08108CE4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- ldr r0, _08108CE8 @ =0x0000fff0
- strh r0, [r1, 0x8]
- movs r0, 0x10
- strh r0, [r1, 0xA]
- ldr r0, _08108CEC @ =gUnknown_203ACFC
- strb r2, [r0, 0x5]
- pop {r0}
- bx r0
- .align 2, 0
-_08108CE0: .4byte sub_8108CFC
-_08108CE4: .4byte gTasks
-_08108CE8: .4byte 0x0000fff0
-_08108CEC: .4byte gUnknown_203ACFC
- thumb_func_end sub_8108CB4
-
- thumb_func_start CB2_SetUpReshowBattleScreenAfterMenu
-CB2_SetUpReshowBattleScreenAfterMenu: @ 8108CF0
- ldr r1, _08108CF8 @ =gUnknown_203ACFC
- movs r0, 0
- strb r0, [r1, 0x5]
- bx lr
- .align 2, 0
-_08108CF8: .4byte gUnknown_203ACFC
- thumb_func_end CB2_SetUpReshowBattleScreenAfterMenu
-
- thumb_func_start sub_8108CFC
-sub_8108CFC: @ 8108CFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08108D28 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r0, [r4, 0x2]
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA0
- ble _08108D2C
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuReg
- b _08108D34
- .align 2, 0
-_08108D28: .4byte gTasks+0x8
-_08108D2C:
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
-_08108D34:
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- cmp r1, 0x10
- bne _08108D44
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0xA0
- beq _08108D54
-_08108D44:
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bne _08108D5A
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08108D5A
-_08108D54:
- adds r0, r5, 0
- bl DestroyTask
-_08108D5A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8108CFC
-
- thumb_func_start ItemMenu_MoveItemSlotToNewPositionInArray
-ItemMenu_MoveItemSlotToNewPositionInArray: @ 8108D60
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r3, r2, 0
- cmp r1, r3
- beq _08108DC0
- lsls r0, r1, 2
- adds r0, r4
- ldr r6, [r0]
- cmp r3, r1
- bls _08108D98
- subs r3, 0x1
- lsls r1, 16
- lsls r0, r3, 16
- asrs r2, r0, 16
- cmp r1, r0
- bge _08108DBA
- adds r5, r2, 0
-_08108D82:
- asrs r2, r1, 16
- lsls r0, r2, 2
- adds r0, r4
- ldr r1, [r0, 0x4]
- str r1, [r0]
- adds r2, 0x1
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, r5
- blt _08108D82
- b _08108DBA
-_08108D98:
- lsls r1, 16
- lsls r0, r3, 16
- asrs r2, r0, 16
- cmp r1, r0
- ble _08108DBA
- adds r5, r2, 0
-_08108DA4:
- asrs r2, r1, 16
- lsls r1, r2, 2
- adds r1, r4
- subs r0, r1, 0x4
- ldr r0, [r0]
- str r0, [r1]
- subs r2, 0x1
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, r5
- bgt _08108DA4
-_08108DBA:
- lsls r0, r3, 2
- adds r0, r4
- str r6, [r0]
-_08108DC0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end ItemMenu_MoveItemSlotToNewPositionInArray
-
- thumb_func_start sub_8108DC8
-sub_8108DC8: @ 8108DC8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, r5, 3
- ldr r0, _08108E3C @ =gBagPockets
- adds r4, r1, r0
- ldr r0, [r4]
- ldrb r1, [r4, 0x4]
- bl BagPocketCompaction
- ldr r3, _08108E40 @ =gUnknown_203AD10
- ldr r0, [r3]
- adds r0, 0xA
- adds r0, r5
- movs r1, 0
- strb r1, [r0]
- movs r2, 0
- ldrb r0, [r4, 0x4]
- cmp r2, r0
- bcs _08108E1C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _08108E1C
-_08108DF8:
- ldr r0, [r3]
- adds r0, 0xA
- adds r0, r5
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldrb r0, [r4, 0x4]
- cmp r2, r0
- bcs _08108E1C
- ldr r0, [r4]
- lsls r1, r2, 2
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _08108DF8
-_08108E1C:
- ldr r0, _08108E40 @ =gUnknown_203AD10
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xA
- adds r0, r5
- ldrb r0, [r0]
- adds r2, r0, 0x1
- cmp r2, 0x6
- ble _08108E44
- adds r0, r1, 0
- adds r0, 0xD
- adds r0, r5
- movs r1, 0x6
- strb r1, [r0]
- b _08108E4C
- .align 2, 0
-_08108E3C: .4byte gBagPockets
-_08108E40: .4byte gUnknown_203AD10
-_08108E44:
- adds r0, r1, 0
- adds r0, 0xD
- adds r0, r5
- strb r2, [r0]
-_08108E4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8108DC8
-
- thumb_func_start sub_8108E54
-sub_8108E54: @ 8108E54
- push {r4,lr}
- movs r4, 0
-_08108E58:
- adds r0, r4, 0
- bl sub_8108DC8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08108E58
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8108E54
-
- thumb_func_start DisplayItemMessageInBag
-DisplayItemMessageInBag: @ 8108E70
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _08108EDC @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x5
- bl sub_810BA70
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x14]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0x14]
- str r6, [sp]
- str r0, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r2, 0x6D
- movs r3, 0xD
- bl DisplayMessageAndContinueTask
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08108EDC: .4byte gTasks+0x8
- thumb_func_end DisplayItemMessageInBag
-
- thumb_func_start ItemMenu_SetExitCallback
-ItemMenu_SetExitCallback: @ 8108EE0
- ldr r1, _08108EE8 @ =gUnknown_203AD10
- ldr r1, [r1]
- str r0, [r1]
- bx lr
- .align 2, 0
-_08108EE8: .4byte gUnknown_203AD10
- thumb_func_end ItemMenu_SetExitCallback
-
- thumb_func_start sub_8108EEC
-sub_8108EEC: @ 8108EEC
- lsls r0, 24
- ldr r1, _08108F08 @ =gUnknown_203ACFC
- lsrs r0, 23
- adds r2, r1, 0
- adds r2, 0xE
- adds r2, r0, r2
- adds r1, 0x8
- adds r0, r1
- ldrb r0, [r0]
- ldrb r2, [r2]
- adds r0, r2
- lsls r0, 24
- lsrs r0, 24
- bx lr
- .align 2, 0
-_08108F08: .4byte gUnknown_203ACFC
- thumb_func_end sub_8108EEC
-
- thumb_func_start sub_8108F0C
-sub_8108F0C: @ 8108F0C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08108F78 @ =gTasks+0x8
- adds r7, r0, r1
- ldr r0, _08108F7C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08108F2C
- b _081090C6
-_08108F2C:
- ldr r0, _08108F80 @ =sub_8108CFC
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08108F3C
- b _081090C6
-_08108F3C:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08108F4A
- b _081090C6
-_08108F4A:
- ldr r4, _08108F84 @ =gUnknown_203ACFC
- ldrb r1, [r4, 0x6]
- adds r0, r6, 0
- bl sub_8109168
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08108F8C
- cmp r0, 0x2
- beq _08108F94
- ldr r0, _08108F88 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08108FE4
- adds r5, r4, 0
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- bne _08108FE4
- b _08108FA0
- .align 2, 0
-_08108F78: .4byte gTasks+0x8
-_08108F7C: .4byte gPaletteFade
-_08108F80: .4byte sub_8108CFC
-_08108F84: .4byte gUnknown_203ACFC
-_08108F88: .4byte gMain
-_08108F8C:
- movs r1, 0x1
- negs r1, r1
- adds r0, r6, 0
- b _08108F98
-_08108F94:
- adds r0, r6, 0
- movs r1, 0x1
-_08108F98:
- movs r2, 0
- bl sub_81091D0
- b _081090C6
-_08108FA0:
- ldrb r0, [r7]
- mov r4, sp
- adds r4, 0x2
- mov r1, sp
- adds r2, r4, 0
- bl ListMenuGetScrollAndRow
- mov r0, sp
- ldrh r1, [r0]
- ldrh r0, [r4]
- adds r1, r0
- ldr r0, _08108FE0 @ =gUnknown_203AD10
- ldr r0, [r0]
- adds r0, 0xA
- ldrh r5, [r5, 0x6]
- adds r0, r5
- ldrb r0, [r0]
- cmp r1, r0
- beq _08108FE4
- movs r0, 0x5
- bl PlaySE
- mov r0, sp
- ldrh r1, [r4]
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- asrs r1, 16
- adds r0, r6, 0
- bl sub_81093B8
- b _081090C6
- .align 2, 0
-_08108FE0: .4byte gUnknown_203AD10
-_08108FE4:
- ldrb r0, [r7]
- bl ListMenu_ProcessInput
- adds r4, r0, 0
- ldrb r0, [r7]
- ldr r5, _08109014 @ =gUnknown_203ACFC
- ldrh r2, [r5, 0x6]
- lsls r2, 1
- adds r1, r5, 0
- adds r1, 0xE
- adds r1, r2, r1
- adds r3, r5, 0
- adds r3, 0x8
- adds r2, r3
- bl ListMenuGetScrollAndRow
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _08109018
- adds r0, 0x1
- cmp r4, r0
- bne _08109044
- b _081090C6
- .align 2, 0
-_08109014: .4byte gUnknown_203ACFC
-_08109018:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08109038 @ =gSpecialVar_ItemId
- movs r0, 0
- strh r0, [r1]
- bl sub_8108CB4
- ldr r1, _0810903C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08109040 @ =ItemMenu_StartFadeToExitCallback
- b _081090C4
- .align 2, 0
-_08109038: .4byte gSpecialVar_ItemId
-_0810903C: .4byte gTasks
-_08109040: .4byte ItemMenu_StartFadeToExitCallback
-_08109044:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08109074 @ =gUnknown_203AD10
- ldr r0, [r0]
- adds r0, 0xA
- ldrh r1, [r5, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- cmp r4, r0
- bne _08109084
- ldr r1, _08109078 @ =gSpecialVar_ItemId
- movs r0, 0
- strh r0, [r1]
- bl sub_8108CB4
- ldr r1, _0810907C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08109080 @ =ItemMenu_StartFadeToExitCallback
- b _081090C4
- .align 2, 0
-_08109074: .4byte gUnknown_203AD10
-_08109078: .4byte gSpecialVar_ItemId
-_0810907C: .4byte gTasks
-_08109080: .4byte ItemMenu_StartFadeToExitCallback
-_08109084:
- bl sub_8108978
- ldrb r0, [r7]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- strh r4, [r7, 0x2]
- ldrb r0, [r5, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 16
- lsrs r4, 16
- adds r1, r4, 0
- bl BagGetQuantityByPocketPosition
- strh r0, [r7, 0x4]
- ldrb r0, [r5, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- ldr r1, _081090D0 @ =gSpecialVar_ItemId
- strh r0, [r1]
- ldr r1, _081090D4 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _081090D8 @ =sub_81090DC
-_081090C4:
- str r1, [r0]
-_081090C6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081090D0: .4byte gSpecialVar_ItemId
-_081090D4: .4byte gTasks
-_081090D8: .4byte sub_81090DC
- thumb_func_end sub_8108F0C
-
- thumb_func_start sub_81090DC
-sub_81090DC: @ 81090DC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_8109140
- ldr r1, _08109104 @ =gUnknown_8452F34
- ldr r0, _08109108 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109104: .4byte gUnknown_8452F34
-_08109108: .4byte gUnknown_203ACFC
- thumb_func_end sub_81090DC
-
- thumb_func_start sub_810910C
-sub_810910C: @ 810910C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_8109140
- bl sub_8108888
- bl sub_81088D8
- ldr r1, _08109138 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810913C @ =sub_8108F0C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109138: .4byte gTasks
-_0810913C: .4byte sub_8108F0C
- thumb_func_end sub_810910C
-
- thumb_func_start sub_8109140
-sub_8109140: @ 8109140
- push {lr}
- sub sp, 0x8
- movs r1, 0x6
- str r1, [sp]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x1E
- bl SetBgTilemapPalette
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_8109140
-
- thumb_func_start sub_8109168
-sub_8109168: @ 8109168
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _081091A4 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081091C6
- bl GetLRKeysState
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _081091A8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08109194
- cmp r2, 0x1
- bne _081091AC
-_08109194:
- cmp r4, 0
- beq _081091C6
- movs r0, 0xF6
- bl PlaySE
- movs r0, 0x1
- b _081091C8
- .align 2, 0
-_081091A4: .4byte gUnknown_203AD10
-_081091A8: .4byte gMain
-_081091AC:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081091B8
- cmp r2, 0x2
- bne _081091C6
-_081091B8:
- cmp r4, 0x1
- bhi _081091C6
- movs r0, 0xF6
- bl PlaySE
- movs r0, 0x2
- b _081091C8
-_081091C6:
- movs r0, 0
-_081091C8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8109168
-
- thumb_func_start sub_81091D0
-sub_81091D0: @ 81091D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r6, r1, 0
- lsls r2, 16
- lsls r0, r5, 2
- adds r0, r5
- lsls r7, r0, 3
- ldr r0, _08109288 @ =gTasks+0x8
- mov r8, r0
- adds r4, r7, r0
- movs r0, 0
- strh r0, [r4, 0x1A]
- strh r0, [r4, 0x18]
- strh r6, [r4, 0x16]
- cmp r2, 0
- bne _08109242
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0x1
- bl ClearWindowTilemap
- movs r0, 0x2
- bl ClearWindowTilemap
- ldrb r0, [r4]
- ldr r3, _0810928C @ =gUnknown_203ACFC
- ldrh r2, [r3, 0x6]
- lsls r2, 1
- adds r1, r3, 0
- adds r1, 0xE
- adds r1, r2, r1
- adds r3, 0x8
- adds r2, r3
- bl DestroyListMenuTask
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _08109290 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- lsls r1, 26
- lsrs r1, 30
- movs r0, 0x1
- eors r0, r1
- bl DestroyItemMenuIcon
- bl sub_8108978
-_08109242:
- movs r0, 0x12
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x2D
- movs r2, 0xB
- movs r3, 0x1
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0810928C @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl sub_8098528
- ldr r1, _08109294 @ =sub_8109298
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r2, [r0]
- adds r0, r5, 0
- bl SetTaskFuncWithFollowupFunc
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08109288: .4byte gTasks+0x8
-_0810928C: .4byte gUnknown_203ACFC
-_08109290: .4byte gUnknown_203AD10
-_08109294: .4byte sub_8109298
- thumb_func_end sub_81091D0
-
- thumb_func_start sub_8109298
-sub_8109298: @ 8109298
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _081092DC @ =gTasks+0x8
- adds r5, r0, r1
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- bne _08109314
- bl sub_810ADAC
- lsls r0, 24
- cmp r0, 0
- bne _08109314
- ldr r4, _081092E0 @ =gUnknown_203ACFC
- ldrb r1, [r5, 0x16]
- ldrb r0, [r4, 0x6]
- adds r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8109168
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081092E4
- cmp r0, 0x2
- beq _081092FA
- b _08109314
- .align 2, 0
-_081092DC: .4byte gTasks+0x8
-_081092E0: .4byte gUnknown_203ACFC
-_081092E4:
- ldrh r0, [r5, 0x16]
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r4, 0x6]
- adds r0, r6, 0
- bl SwitchTaskToFollowupFunc
- movs r1, 0x1
- negs r1, r1
- adds r0, r6, 0
- b _0810930C
-_081092FA:
- ldrh r0, [r5, 0x16]
- ldrh r2, [r4, 0x6]
- adds r0, r2
- strh r0, [r4, 0x6]
- adds r0, r6, 0
- bl SwitchTaskToFollowupFunc
- adds r0, r6, 0
- movs r1, 0x1
-_0810930C:
- movs r2, 0x1
- bl sub_81091D0
- b _081093AA
-_08109314:
- movs r1, 0x1A
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08109322
- cmp r0, 0x1
- beq _08109358
- b _081093AA
-_08109322:
- ldrh r1, [r5, 0x18]
- movs r2, 0x18
- ldrsh r0, [r5, r2]
- ldr r4, _08109354 @ =0x00007fff
- cmp r0, r4
- beq _0810934C
- adds r0, r1, 0x1
- strh r0, [r5, 0x18]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8109854
- movs r1, 0x18
- ldrsh r0, [r5, r1]
- cmp r0, 0xC
- bne _08109344
- strh r4, [r5, 0x18]
-_08109344:
- movs r2, 0x18
- ldrsh r0, [r5, r2]
- cmp r0, r4
- bne _081093AA
-_0810934C:
- ldrh r0, [r5, 0x1A]
- adds r0, 0x1
- strh r0, [r5, 0x1A]
- b _081093AA
- .align 2, 0
-_08109354: .4byte 0x00007fff
-_08109358:
- ldr r4, _081093B0 @ =gUnknown_203ACFC
- ldrh r0, [r5, 0x16]
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r4, 0x6]
- bl sub_81087EC
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _081093B4 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r1, r4, 0
- adds r1, 0xE
- adds r1, r2, r1
- ldrh r1, [r1]
- adds r4, 0x8
- adds r2, r4
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_8108888
- bl sub_81088D8
- adds r0, r6, 0
- bl SwitchTaskToFollowupFunc
-_081093AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081093B0: .4byte gUnknown_203ACFC
-_081093B4: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_8109298
-
- thumb_func_start sub_81093B8
-sub_81093B8: @ 81093B8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x18
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- ldr r0, _08109494 @ =gTasks+0x8
- mov r9, r0
- adds r1, r5, 0
- add r1, r9
- mov r8, r1
- ldrb r0, [r1]
- mov r2, sp
- adds r2, 0x16
- add r1, sp, 0x14
- bl ListMenuGetScrollAndRow
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x10
- movs r2, 0x1
- bl ListMenuSetUnkIndicatorsStructField
- mov r0, r8
- strh r4, [r0, 0x2]
- ldr r0, _08109498 @ =gUnknown_203AD10
- ldr r0, [r0]
- movs r6, 0
- strb r4, [r0, 0x4]
- ldr r4, _0810949C @ =gStringVar1
- ldr r0, _081094A0 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r2, r8
- ldrh r1, [r2, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl ItemId_GetName
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r4, _081094A4 @ =gStringVar4
- ldr r1, _081094A8 @ =gOtherText_WhereShouldTheStrVar1BePlaced
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- str r6, [sp, 0xC]
- str r6, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl sub_810B8F0
- mov r1, r8
- ldrb r0, [r1]
- bl ListMenuGetYCoordForPrintingArrowCursor
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl sub_80986A8
- movs r0, 0
- bl sub_8098660
- bl sub_810899C
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x8
- negs r0, r0
- add r9, r0
- add r5, r9
- ldr r0, _081094AC @ =sub_81094B0
- str r0, [r5]
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109494: .4byte gTasks+0x8
-_08109498: .4byte gUnknown_203AD10
-_0810949C: .4byte gStringVar1
-_081094A0: .4byte gUnknown_203ACFC
-_081094A4: .4byte gStringVar4
-_081094A8: .4byte gOtherText_WhereShouldTheStrVar1BePlaced
-_081094AC: .4byte sub_81094B0
- thumb_func_end sub_81093B8
-
- thumb_func_start sub_81094B0
-sub_81094B0: @ 81094B0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08109538 @ =gTasks+0x8
- adds r4, r0, r1
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810959E
- ldrb r0, [r4]
- bl ListMenu_ProcessInput
- adds r5, r0, 0
- ldrb r0, [r4]
- ldr r3, _0810953C @ =gUnknown_203ACFC
- ldrh r2, [r3, 0x6]
- lsls r2, 1
- adds r1, r3, 0
- adds r1, 0xE
- adds r1, r2, r1
- adds r3, 0x8
- adds r2, r3
- bl ListMenuGetScrollAndRow
- ldrb r0, [r4]
- bl ListMenuGetYCoordForPrintingArrowCursor
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl sub_80986A8
- ldr r0, _08109540 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08109548
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08109544 @ =gUnknown_203AD10
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r0, [r4]
- mov r4, sp
- adds r4, 0x2
- mov r1, sp
- adds r2, r4, 0
- bl ListMenuGetScrollAndRow
- mov r0, sp
- ldrh r1, [r0]
- ldrh r0, [r4]
- adds r1, r0
- adds r0, r6, 0
- bl sub_81095AC
- b _0810959E
- .align 2, 0
-_08109538: .4byte gTasks+0x8
-_0810953C: .4byte gUnknown_203ACFC
-_08109540: .4byte gMain
-_08109544: .4byte gUnknown_203AD10
-_08109548:
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _08109558
- adds r0, 0x1
- cmp r5, r0
- bne _08109588
- b _0810959E
-_08109558:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08109584 @ =gUnknown_203AD10
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r0, [r4]
- mov r4, sp
- adds r4, 0x2
- mov r1, sp
- adds r2, r4, 0
- bl ListMenuGetScrollAndRow
- mov r0, sp
- ldrh r1, [r0]
- ldrh r0, [r4]
- adds r1, r0
- adds r0, r6, 0
- bl sub_810967C
- b _0810959E
- .align 2, 0
-_08109584: .4byte gUnknown_203AD10
-_08109588:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081095A8 @ =gUnknown_203AD10
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_81095AC
-_0810959E:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081095A8: .4byte gUnknown_203AD10
- thumb_func_end sub_81094B0
-
- thumb_func_start sub_81095AC
-sub_81095AC: @ 81095AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- mov r9, r0
- ldr r0, _081095E4 @ =gTasks+0x8
- mov r10, r0
- mov r6, r9
- add r6, r10
- movs r3, 0x2
- ldrsh r2, [r6, r3]
- cmp r2, r5
- beq _081095DA
- subs r0, r5, 0x1
- cmp r2, r0
- bne _081095E8
-_081095DA:
- adds r0, r1, 0
- adds r1, r5, 0
- bl sub_810967C
- b _0810965C
- .align 2, 0
-_081095E4: .4byte gTasks+0x8
-_081095E8:
- ldr r1, _0810966C @ =gBagPockets
- ldr r4, _08109670 @ =gUnknown_203ACFC
- ldrh r0, [r4, 0x6]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- adds r1, r2, 0
- adds r2, r5, 0
- bl ItemMenu_MoveItemSlotToNewPositionInArray
- ldrb r0, [r6]
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- movs r1, 0xE
- adds r1, r4
- mov r8, r1
- adds r1, r2, r1
- adds r7, r4, 0
- adds r7, 0x8
- adds r2, r7
- bl DestroyListMenuTask
- movs r3, 0x2
- ldrsh r0, [r6, r3]
- cmp r0, r5
- bcs _08109628
- ldrh r1, [r4, 0x6]
- lsls r1, 1
- adds r1, r7
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_08109628:
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _08109674 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- mov r3, r8
- adds r1, r2, r3
- ldrh r1, [r1]
- adds r2, r7
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6]
- movs r0, 0x1
- bl sub_8098660
- bl sub_81088D8
- mov r0, r10
- subs r0, 0x8
- add r0, r9
- ldr r1, _08109678 @ =sub_8108F0C
- str r1, [r0]
-_0810965C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810966C: .4byte gBagPockets
-_08109670: .4byte gUnknown_203ACFC
-_08109674: .4byte gMultiuseListMenuTemplate
-_08109678: .4byte sub_8108F0C
- thumb_func_end sub_81095AC
-
- thumb_func_start sub_810967C
-sub_810967C: @ 810967C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- mov r8, r1
- ldr r0, _0810970C @ =gTasks+0x8
- mov r10, r0
- mov r6, r8
- add r6, r10
- ldrb r0, [r6]
- ldr r5, _08109710 @ =gUnknown_203ACFC
- ldrh r2, [r5, 0x6]
- lsls r2, 1
- movs r1, 0xE
- adds r1, r5
- mov r9, r1
- adds r1, r2, r1
- adds r7, r5, 0
- adds r7, 0x8
- adds r2, r7
- bl DestroyListMenuTask
- movs r3, 0x2
- ldrsh r0, [r6, r3]
- cmp r0, r4
- bcs _081096CA
- ldrh r1, [r5, 0x6]
- lsls r1, 1
- adds r1, r7
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_081096CA:
- ldrb r0, [r5, 0x6]
- bl sub_810842C
- ldr r0, _08109714 @ =gMultiuseListMenuTemplate
- ldrh r2, [r5, 0x6]
- lsls r2, 1
- mov r3, r9
- adds r1, r2, r3
- ldrh r1, [r1]
- adds r2, r7
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6]
- movs r0, 0x1
- bl sub_8098660
- bl sub_81088D8
- mov r0, r10
- subs r0, 0x8
- add r0, r8
- ldr r1, _08109718 @ =sub_8108F0C
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810970C: .4byte gTasks+0x8
-_08109710: .4byte gUnknown_203ACFC
-_08109714: .4byte gMultiuseListMenuTemplate
-_08109718: .4byte sub_8108F0C
- thumb_func_end sub_810967C
-
- thumb_func_start sub_810971C
-sub_810971C: @ 810971C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x14
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x6
- movs r1, 0x2
- bl sub_810B9DC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _081097D4 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081097D8 @ =gStringVar1
- mov r10, r1
- bl CopyItemName
- ldr r0, _081097DC @ =gStringVar4
- mov r9, r0
- adds r1, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r1, 0x1
- mov r8, r1
- str r1, [sp, 0x4]
- movs r6, 0
- str r6, [sp, 0x8]
- str r6, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x2
- mov r2, r9
- movs r3, 0
- bl sub_810B8F0
- movs r0, 0
- movs r1, 0
- bl sub_810B9DC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, r10
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r1, _081097E0 @ =gText_TimesStrVar1
- mov r0, r9
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- str r6, [sp, 0xC]
- str r0, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0
- mov r2, r9
- movs r3, 0x4
- bl sub_810B8F0
- bl sub_8108940
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081097D4: .4byte gUnknown_203ACFC
-_081097D8: .4byte gStringVar1
-_081097DC: .4byte gStringVar4
-_081097E0: .4byte gText_TimesStrVar1
- thumb_func_end sub_810971C
-
- thumb_func_start sub_81097E4
-sub_81097E4: @ 81097E4
- push {r4-r6,lr}
- sub sp, 0x14
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0
- bl sub_810BAD8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, _08109848 @ =gStringVar1
- lsls r4, 16
- asrs r4, 16
- adds r1, r4, 0
- movs r2, 0x2
- adds r3, r5, 0
- bl ConvertIntToDecimalStringN
- ldr r4, _0810984C @ =gStringVar4
- ldr r1, _08109850 @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x4
- bl sub_810B8F0
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109848: .4byte gStringVar1
-_0810984C: .4byte gStringVar4
-_08109850: .4byte gText_TimesStrVar1
- thumb_func_end sub_81097E4
-
- thumb_func_start sub_8109854
-sub_8109854: @ 8109854
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xC
- subs r2, r0
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- ldr r2, _0810988C @ =gUnknown_8452D08
- adds r1, r2
- movs r3, 0xD
- subs r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x12
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r2, 0xB
- bl CopyToBgTilemapBufferRect
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0810988C: .4byte gUnknown_8452D08
- thumb_func_end sub_8109854
-
- thumb_func_start sub_8109890
-sub_8109890: @ 8109890
- push {r4-r7,lr}
- sub sp, 0x14
- ldr r0, _081098A8 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x6
- beq _08109924
- cmp r0, 0x6
- bgt _081098AC
- cmp r0, 0x5
- beq _081098B6
- b _0810993C
- .align 2, 0
-_081098A8: .4byte gUnknown_203ACFC
-_081098AC:
- cmp r0, 0x7
- beq _081098B6
- cmp r0, 0x8
- beq _08109924
- b _0810993C
-_081098B6:
- ldr r2, _081098D4 @ =gSpecialVar_ItemId
- ldrh r1, [r2]
- ldr r0, _081098D8 @ =0x0000016d
- cmp r1, r0
- bne _081098E8
- ldr r1, _081098DC @ =gUnknown_203AD20
- movs r0, 0x8
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r0, _081098E0 @ =gUnknown_203AD24
- str r1, [r0]
- ldr r1, _081098E4 @ =gUnknown_203AD28
- movs r0, 0x2
- b _08109AD0
- .align 2, 0
-_081098D4: .4byte gSpecialVar_ItemId
-_081098D8: .4byte 0x0000016d
-_081098DC: .4byte gUnknown_203AD20
-_081098E0: .4byte gUnknown_203AD24
-_081098E4: .4byte gUnknown_203AD28
-_081098E8:
- ldrh r0, [r2]
- bl ItemId_GetBattleUsage
- lsls r0, 24
- cmp r0, 0
- beq _0810990C
- ldr r1, _08109900 @ =gUnknown_203AD24
- ldr r0, _08109904 @ =gUnknown_8452F30
- str r0, [r1]
- ldr r1, _08109908 @ =gUnknown_203AD28
- movs r0, 0x2
- b _08109AD0
- .align 2, 0
-_08109900: .4byte gUnknown_203AD24
-_08109904: .4byte gUnknown_8452F30
-_08109908: .4byte gUnknown_203AD28
-_0810990C:
- ldr r1, _08109918 @ =gUnknown_203AD24
- ldr r0, _0810991C @ =gUnknown_8452F32
- str r0, [r1]
- ldr r1, _08109920 @ =gUnknown_203AD28
- movs r0, 0x1
- b _08109AD0
- .align 2, 0
-_08109918: .4byte gUnknown_203AD24
-_0810991C: .4byte gUnknown_8452F32
-_08109920: .4byte gUnknown_203AD28
-_08109924:
- ldr r1, _08109930 @ =gUnknown_203AD24
- ldr r0, _08109934 @ =gUnknown_8452F30
- str r0, [r1]
- ldr r1, _08109938 @ =gUnknown_203AD28
- movs r0, 0x2
- b _08109AD0
- .align 2, 0
-_08109930: .4byte gUnknown_203AD24
-_08109934: .4byte gUnknown_8452F30
-_08109938: .4byte gUnknown_203AD28
-_0810993C:
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08109950
- bl InUnionRoom
- cmp r0, 0x1
- bne _081099C4
-_08109950:
- ldr r1, _08109970 @ =gSpecialVar_ItemId
- ldr r2, _08109974 @ =0xfffffe94
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _08109984
- ldr r1, _08109978 @ =gUnknown_203AD24
- ldr r0, _0810997C @ =gUnknown_8452F2E
- str r0, [r1]
- ldr r1, _08109980 @ =gUnknown_203AD28
- movs r0, 0x2
- b _08109AD0
- .align 2, 0
-_08109970: .4byte gSpecialVar_ItemId
-_08109974: .4byte 0xfffffe94
-_08109978: .4byte gUnknown_203AD24
-_0810997C: .4byte gUnknown_8452F2E
-_08109980: .4byte gUnknown_203AD28
-_08109984:
- ldr r0, _08109998 @ =gUnknown_203ACFC
- ldrh r2, [r0, 0x6]
- adds r3, r0, 0
- cmp r2, 0x1
- bne _081099A0
- ldr r0, _0810999C @ =gUnknown_203AD28
- strb r2, [r0]
- adds r7, r0, 0
- b _081099A8
- .align 2, 0
-_08109998: .4byte gUnknown_203ACFC
-_0810999C: .4byte gUnknown_203AD28
-_081099A0:
- ldr r1, _081099B8 @ =gUnknown_203AD28
- movs r0, 0x2
- strb r0, [r1]
- adds r7, r1, 0
-_081099A8:
- ldr r0, _081099BC @ =gUnknown_203AD24
- ldrh r1, [r3, 0x6]
- lsls r1, 1
- ldr r2, _081099C0 @ =gUnknown_8452F28
- adds r1, r2
- str r1, [r0]
- b _08109AD4
- .align 2, 0
-_081099B8: .4byte gUnknown_203AD28
-_081099BC: .4byte gUnknown_203AD24
-_081099C0: .4byte gUnknown_8452F28
-_081099C4:
- ldr r5, _081099D8 @ =gUnknown_203ACFC
- ldrh r0, [r5, 0x6]
- cmp r0, 0x1
- beq _08109A34
- cmp r0, 0x1
- bgt _081099E0
- cmp r0, 0
- beq _081099EC
- ldr r7, _081099DC @ =gUnknown_203AD28
- b _08109AD4
- .align 2, 0
-_081099D8: .4byte gUnknown_203ACFC
-_081099DC: .4byte gUnknown_203AD28
-_081099E0:
- cmp r0, 0x2
- beq _08109AC4
- ldr r7, _081099E8 @ =gUnknown_203AD28
- b _08109AD4
- .align 2, 0
-_081099E8: .4byte gUnknown_203AD28
-_081099EC:
- ldr r4, _08109A0C @ =gUnknown_203AD28
- movs r0, 0x4
- strb r0, [r4]
- ldr r0, _08109A10 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08109A1C
- ldr r1, _08109A14 @ =gUnknown_203AD24
- ldr r0, _08109A18 @ =gUnknown_8452F24
- str r0, [r1]
- adds r7, r4, 0
- b _08109AD4
- .align 2, 0
-_08109A0C: .4byte gUnknown_203AD28
-_08109A10: .4byte gSpecialVar_ItemId
-_08109A14: .4byte gUnknown_203AD24
-_08109A18: .4byte gUnknown_8452F24
-_08109A1C:
- ldr r0, _08109A2C @ =gUnknown_203AD24
- ldrh r1, [r5, 0x6]
- lsls r1, 2
- ldr r2, _08109A30 @ =gUnknown_8452F18
- adds r1, r2
- str r1, [r0]
- adds r7, r4, 0
- b _08109AD4
- .align 2, 0
-_08109A2C: .4byte gUnknown_203AD24
-_08109A30: .4byte gUnknown_8452F18
-_08109A34:
- ldr r0, _08109A5C @ =gUnknown_203AD24
- ldr r2, _08109A60 @ =gUnknown_203AD20
- str r2, [r0]
- ldr r3, _08109A64 @ =gUnknown_203AD28
- movs r0, 0x3
- strb r0, [r3]
- movs r0, 0x4
- strb r0, [r2, 0x2]
- ldr r0, _08109A68 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08109A6C @ =0x00000296
- adds r0, r1
- ldr r1, _08109A70 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- adds r7, r3, 0
- ldrh r3, [r1]
- cmp r0, r3
- bne _08109A74
- movs r0, 0xA
- b _08109A76
- .align 2, 0
-_08109A5C: .4byte gUnknown_203AD24
-_08109A60: .4byte gUnknown_203AD20
-_08109A64: .4byte gUnknown_203AD28
-_08109A68: .4byte gSaveBlock1Ptr
-_08109A6C: .4byte 0x00000296
-_08109A70: .4byte gSpecialVar_ItemId
-_08109A74:
- movs r0, 0x2
-_08109A76:
- strb r0, [r2, 0x1]
- ldrh r1, [r1]
- ldr r3, _08109A8C @ =0xfffffe94
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _08109A90
- movs r0, 0x7
- strb r0, [r2]
- b _08109AD4
- .align 2, 0
-_08109A8C: .4byte 0xfffffe94
-_08109A90:
- lsls r1, 16
- movs r0, 0xB4
- lsls r0, 17
- cmp r1, r0
- bne _08109AB0
- movs r0, 0x6
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08109AB0
- ldr r1, _08109AAC @ =gUnknown_203AD20
- movs r0, 0x9
- b _08109AB4
- .align 2, 0
-_08109AAC: .4byte gUnknown_203AD20
-_08109AB0:
- ldr r1, _08109ABC @ =gUnknown_203AD20
- movs r0, 0
-_08109AB4:
- strb r0, [r1]
- ldr r7, _08109AC0 @ =gUnknown_203AD28
- b _08109AD4
- .align 2, 0
-_08109ABC: .4byte gUnknown_203AD20
-_08109AC0: .4byte gUnknown_203AD28
-_08109AC4:
- ldr r1, _08109B98 @ =gUnknown_203AD24
- ldr r0, _08109B9C @ =gUnknown_8452F18
- adds r0, 0x8
- str r0, [r1]
- ldr r1, _08109BA0 @ =gUnknown_203AD28
- movs r0, 0x3
-_08109AD0:
- strb r0, [r1]
- adds r7, r1, 0
-_08109AD4:
- ldrb r1, [r7]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0xA
- bl sub_810B9DC
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x2
- movs r1, 0x2
- bl GetFontAttribute
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- ldr r0, _08109BA4 @ =gUnknown_8452EB8
- str r0, [sp, 0xC]
- ldr r0, _08109B98 @ =gUnknown_203AD24
- ldr r0, [r0]
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0x2
- bl AddItemMenuActionTextPrinters
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- ldrb r0, [r7]
- str r0, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0x6
- movs r1, 0
- bl sub_810B9DC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08109BA8 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldr r1, _08109BAC @ =gStringVar1
- bl CopyItemName
- ldr r6, _08109BB0 @ =gStringVar4
- ldr r1, _08109BB4 @ =gOtherText_StrVar1
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r5, [sp, 0xC]
- str r0, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r6, 0
- movs r3, 0
- bl sub_810B8F0
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08109B98: .4byte gUnknown_203AD24
-_08109B9C: .4byte gUnknown_8452F18
-_08109BA0: .4byte gUnknown_203AD28
-_08109BA4: .4byte gUnknown_8452EB8
-_08109BA8: .4byte gSpecialVar_ItemId
-_08109BAC: .4byte gStringVar1
-_08109BB0: .4byte gStringVar4
-_08109BB4: .4byte gOtherText_StrVar1
- thumb_func_end sub_8109890
-
- thumb_func_start sub_8109BB8
-sub_8109BB8: @ 8109BB8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_8109890
- ldr r1, _08109BDC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08109BE0 @ =sub_8109BE4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109BDC: .4byte gTasks
-_08109BE0: .4byte sub_8109BE4
- thumb_func_end sub_8109BB8
-
- thumb_func_start sub_8109BE4
-sub_8109BE4: @ 8109BE4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08109C42
- bl Menu_ProcessInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _08109C42
- adds r0, 0x1
- cmp r4, r0
- bne _08109C24
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08109C20 @ =gUnknown_8452EB8
- ldr r1, [r0, 0x24]
- adds r0, r5, 0
- bl _call_via_r1
- b _08109C42
- .align 2, 0
-_08109C20: .4byte gUnknown_8452EB8
-_08109C24:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08109C48 @ =gUnknown_8452EB8
- ldr r0, _08109C4C @ =gUnknown_203AD24
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
-_08109C42:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109C48: .4byte gUnknown_8452EB8
-_08109C4C: .4byte gUnknown_203AD24
- thumb_func_end sub_8109BE4
-
- thumb_func_start sub_8109C50
-sub_8109C50: @ 8109C50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _08109CA0 @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- bl ItemId_GetFieldFunc
- cmp r0, 0
- beq _08109CB4
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _08109CA4
- ldrh r0, [r5]
- bl ItemId_GetType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08109CA4
- adds r0, r4, 0
- bl sub_810A170
- b _08109CB4
- .align 2, 0
-_08109CA0: .4byte gSpecialVar_ItemId
-_08109CA4:
- ldr r0, _08109CBC @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl ItemId_GetFieldFunc
- adds r1, r0, 0
- adds r0, r4, 0
- bl _call_via_r1
-_08109CB4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08109CBC: .4byte gSpecialVar_ItemId
- thumb_func_end sub_8109C50
-
- thumb_func_start sub_8109CC0
-sub_8109CC0: @ 8109CC0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _08109D14 @ =gTasks+0x8
- adds r4, r6, r7
- movs r0, 0xA
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- movs r0, 0x6
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08109D18
- adds r0, r5, 0
- bl sub_8109D38
- b _08109D2A
- .align 2, 0
-_08109D14: .4byte gTasks+0x8
-_08109D18:
- ldrh r0, [r4, 0x2]
- ldr r1, _08109D30 @ =gText_TossOutHowManyStrVar1s
- bl sub_810971C
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _08109D34 @ =sub_8109DEC
- str r1, [r0]
-_08109D2A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08109D30: .4byte gText_TossOutHowManyStrVar1s
-_08109D34: .4byte sub_8109DEC
- thumb_func_end sub_8109CC0
-
- thumb_func_start sub_8109D38
-sub_8109D38: @ 8109D38
- push {r4,r5,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- ldr r0, _08109D9C @ =gTasks+0x8
- adds r1, r0
- ldr r0, _08109DA0 @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r1, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r5, _08109DA4 @ =gStringVar4
- ldr r1, _08109DA8 @ =gText_ThrowAwayStrVar2OfThisItemQM
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x6
- movs r1, 0x1
- bl sub_810B9DC
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- str r1, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl sub_810B8F0
- ldr r1, _08109DAC @ =gUnknown_8452F50
- adds r0, r4, 0
- bl sub_810BAE8
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08109D9C: .4byte gTasks+0x8
-_08109DA0: .4byte gStringVar2
-_08109DA4: .4byte gStringVar4
-_08109DA8: .4byte gText_ThrowAwayStrVar2OfThisItemQM
-_08109DAC: .4byte gUnknown_8452F50
- thumb_func_end sub_8109D38
-
- thumb_func_start sub_8109DB0
-sub_8109DB0: @ 8109DB0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _08109DE8 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- adds r0, r5, 0
- bl sub_810910C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08109DE8: .4byte gTasks+0x8
- thumb_func_end sub_8109DB0
-
- thumb_func_start sub_8109DEC
-sub_8109DEC: @ 8109DEC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08109E1C @ =gTasks+0x8
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x10
- ldrh r1, [r4, 0x4]
- bl AdjustQuantityAccordingToDPadInput
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08109E20
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl sub_81097E4
- b _08109EA2
- .align 2, 0
-_08109E1C: .4byte gTasks+0x8
-_08109E20:
- ldr r0, _08109E60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08109E64
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x6
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl sub_810BA3C
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_8108978
- adds r0, r5, 0
- bl sub_8109D38
- b _08109EA2
- .align 2, 0
-_08109E60: .4byte gMain
-_08109E64:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08109EA2
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- bl sub_8108978
- adds r0, r6, 0
- bl sub_810910C
-_08109EA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8109DEC
-
- thumb_func_start sub_8109EA8
-sub_8109EA8: @ 8109EA8
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r5, _08109F28 @ =gTasks+0x8
- adds r6, r4, r5
- movs r0, 0x6
- bl sub_810BA3C
- ldr r0, _08109F2C @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08109F30 @ =gStringVar1
- bl CopyItemName
- ldr r0, _08109F34 @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r6, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r6, _08109F38 @ =gStringVar4
- ldr r1, _08109F3C @ =gText_ThrewAwayStrVar2StrVar1s
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0x6
- movs r1, 0x3
- bl sub_810B9DC
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- str r1, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0x2
- adds r2, r6, 0
- movs r3, 0
- bl sub_810B8F0
- subs r5, 0x8
- adds r4, r5
- ldr r0, _08109F40 @ =sub_8109F44
- str r0, [r4]
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109F28: .4byte gTasks+0x8
-_08109F2C: .4byte gUnknown_203ACFC
-_08109F30: .4byte gStringVar1
-_08109F34: .4byte gStringVar2
-_08109F38: .4byte gStringVar4
-_08109F3C: .4byte gText_ThrewAwayStrVar2StrVar1s
-_08109F40: .4byte sub_8109F44
- thumb_func_end sub_8109EA8
-
- thumb_func_start sub_8109F44
-sub_8109F44: @ 8109F44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _08109FEC @ =gTasks+0x8
- adds r7, r0, r1
- ldr r0, _08109FF0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08109F6E
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08109FE0
-_08109F6E:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08109FF4 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldrh r1, [r7, 0x10]
- bl RemoveBagItem
- movs r0, 0x6
- bl sub_810BA3C
- ldrb r0, [r7]
- ldr r4, _08109FF8 @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r4, 0
- adds r5, 0xE
- adds r1, r2, r5
- adds r6, r4, 0
- adds r6, 0x8
- adds r2, r6
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x6]
- bl sub_8108DC8
- ldrb r0, [r4, 0x6]
- bl sub_81089F4
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _08109FFC @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r2, r5
- ldrh r1, [r5]
- adds r2, r6
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7]
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r7]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- mov r0, r8
- bl sub_810910C
-_08109FE0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08109FEC: .4byte gTasks+0x8
-_08109FF0: .4byte gMain
-_08109FF4: .4byte gSpecialVar_ItemId
-_08109FF8: .4byte gUnknown_203ACFC
-_08109FFC: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_8109F44
-
- thumb_func_start sub_810A000
-sub_810A000: @ 810A000
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _0810A040 @ =gTasks+0x8
- adds r7, r0, r1
- ldr r0, _0810A044 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r7, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _0810A048 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _0810A04C @ =0x00000296
- adds r1, r0, r3
- ldrh r0, [r1]
- cmp r0, r2
- bne _0810A050
- movs r0, 0
- strh r0, [r1]
- b _0810A052
- .align 2, 0
-_0810A040: .4byte gTasks+0x8
-_0810A044: .4byte gUnknown_203ACFC
-_0810A048: .4byte gSaveBlock1Ptr
-_0810A04C: .4byte 0x00000296
-_0810A050:
- strh r2, [r1]
-_0810A052:
- ldrb r0, [r7]
- ldr r4, _0810A0A0 @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r4, 0
- adds r5, 0xE
- adds r1, r2, r5
- adds r6, r4, 0
- adds r6, 0x8
- adds r2, r6
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _0810A0A4 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r2, r5
- ldrh r1, [r5]
- adds r2, r6
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7]
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- mov r0, r8
- bl sub_810A2DC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A0A0: .4byte gUnknown_203ACFC
-_0810A0A4: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_810A000
-
- thumb_func_start sub_810A0A8
-sub_810A0A8: @ 810A0A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r6, r0, 3
- ldr r0, _0810A110 @ =gTasks+0x8
- mov r8, r0
- adds r1, r6, r0
- ldr r0, _0810A114 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r1, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- adds r0, r5, 0
- bl itemid_80BF6D8_mail_related
- lsls r0, 24
- cmp r0, 0
- bne _0810A120
- ldr r2, _0810A118 @ =gUnknown_841630F
- ldr r3, _0810A11C @ =sub_810A1D0
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
- b _0810A166
- .align 2, 0
-_0810A110: .4byte gTasks+0x8
-_0810A114: .4byte gUnknown_203ACFC
-_0810A118: .4byte gUnknown_841630F
-_0810A11C: .4byte sub_810A1D0
-_0810A120:
- adds r0, r5, 0
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- bne _0810A160
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _0810A13E
- adds r0, r4, 0
- bl sub_810A170
- b _0810A166
-_0810A13E:
- ldr r0, _0810A154 @ =gUnknown_203AD10
- ldr r1, [r0]
- ldr r0, _0810A158 @ =CB2_ChooseMonToGiveItem
- str r0, [r1]
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810A15C @ =ItemMenu_StartFadeToExitCallback
- str r1, [r0]
- b _0810A166
- .align 2, 0
-_0810A154: .4byte gUnknown_203AD10
-_0810A158: .4byte CB2_ChooseMonToGiveItem
-_0810A15C: .4byte ItemMenu_StartFadeToExitCallback
-_0810A160:
- adds r0, r7, 0
- bl sub_810A18C
-_0810A166:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810A0A8
-
- thumb_func_start sub_810A170
-sub_810A170: @ 810A170
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810A184 @ =gText_ThereIsNoPokemon
- ldr r3, _0810A188 @ =sub_810A1D0
- movs r1, 0x2
- bl DisplayItemMessageInBag
- pop {r0}
- bx r0
- .align 2, 0
-_0810A184: .4byte gText_ThereIsNoPokemon
-_0810A188: .4byte sub_810A1D0
- thumb_func_end sub_810A170
-
- thumb_func_start sub_810A18C
-sub_810A18C: @ 810A18C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810A1BC @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldr r1, _0810A1C0 @ =gStringVar1
- bl CopyItemName
- ldr r5, _0810A1C4 @ =gStringVar4
- ldr r1, _0810A1C8 @ =gText_ItemCantBeHeld
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldr r3, _0810A1CC @ =sub_810A1D0
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl DisplayItemMessageInBag
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A1BC: .4byte gSpecialVar_ItemId
-_0810A1C0: .4byte gStringVar1
-_0810A1C4: .4byte gStringVar4
-_0810A1C8: .4byte gText_ItemCantBeHeld
-_0810A1CC: .4byte sub_810A1D0
- thumb_func_end sub_810A18C
-
- thumb_func_start sub_810A1D0
-sub_810A1D0: @ 810A1D0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810A1F4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810A1EE
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_810A1F8
-_0810A1EE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A1F4: .4byte gMain
- thumb_func_end sub_810A1D0
-
- thumb_func_start sub_810A1F8
-sub_810A1F8: @ 810A1F8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r5, r0, 2
- add r5, r8
- lsls r5, 3
- ldr r0, _0810A27C @ =gTasks+0x8
- adds r5, r0
- movs r0, 0x5
- bl sub_810BA9C
- ldrb r0, [r5]
- ldr r4, _0810A280 @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r6, r4, 0
- adds r6, 0xE
- adds r1, r2, r6
- movs r3, 0x8
- adds r3, r4
- mov r9, r3
- add r2, r9
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x6]
- bl sub_8108DC8
- ldrb r0, [r4, 0x6]
- bl sub_81089F4
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _0810A284 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r6, r2, r6
- ldrh r1, [r6]
- add r2, r9
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r5]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- mov r0, r8
- bl sub_810910C
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A27C: .4byte gTasks+0x8
-_0810A280: .4byte gUnknown_203ACFC
-_0810A284: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_810A1F8
-
- thumb_func_start sub_810A288
-sub_810A288: @ 810A288
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810A2D8 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4]
- mov r6, sp
- adds r6, 0x2
- mov r1, sp
- adds r2, r6, 0
- bl ListMenuGetScrollAndRow
- mov r0, sp
- ldrh r0, [r0]
- ldrh r1, [r6]
- adds r0, r1
- bl sub_8108818
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- adds r0, r5, 0
- bl sub_810910C
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A2D8: .4byte gTasks+0x8
- thumb_func_end sub_810A288
-
- thumb_func_start sub_810A2DC
-sub_810A2DC: @ 810A2DC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _0810A320 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- adds r0, r4, 0
- bl sub_810910C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A320: .4byte gTasks
- thumb_func_end sub_810A2DC
-
- thumb_func_start sub_810A324
-sub_810A324: @ 810A324
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0810A36C @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- bl ItemId_GetBattleFunc
- cmp r0, 0
- beq _0810A364
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- ldrh r0, [r5]
- bl ItemId_GetBattleFunc
- adds r1, r0, 0
- adds r0, r4, 0
- bl _call_via_r1
-_0810A364:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A36C: .4byte gSpecialVar_ItemId
- thumb_func_end sub_810A324
-
- thumb_func_start sub_810A370
-sub_810A370: @ 810A370
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r7, r0, 3
- ldr r0, _0810A3BC @ =gTasks+0x8
- mov r9, r0
- adds r1, r7, r0
- ldr r2, _0810A3C0 @ =gUnknown_203ACFC
- mov r8, r2
- ldrb r0, [r2, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r1, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- adds r0, r4, 0
- bl itemid_80BF6D8_mail_related
- lsls r0, 24
- cmp r0, 0
- bne _0810A3CC
- ldr r2, _0810A3C4 @ =gUnknown_841630F
- ldr r3, _0810A3C8 @ =sub_810A1D0
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
- b _0810A426
- .align 2, 0
-_0810A3BC: .4byte gTasks+0x8
-_0810A3C0: .4byte gUnknown_203ACFC
-_0810A3C4: .4byte gUnknown_841630F
-_0810A3C8: .4byte sub_810A1D0
-_0810A3CC:
- movs r0, 0xB6
- lsls r0, 1 @ ITEM_TM_CASE
- cmp r4, r0
- bne _0810A3DC
- ldr r0, _0810A3D8 @ =sub_810A434
- b _0810A3E4
- .align 2, 0
-_0810A3D8: .4byte sub_810A434
-_0810A3DC:
- ldr r0, _0810A3F0 @ =ITEM_BERRY_POUCH
- cmp r4, r0
- bne _0810A3F8
- ldr r0, _0810A3F4 @ =sub_810A448
-_0810A3E4:
- bl ItemMenu_SetExitCallback
- adds r0, r5, 0
- bl ItemMenu_StartFadeToExitCallback
- b _0810A426
- .align 2, 0
-_0810A3F0: .4byte 0x0000016d @ ITEM_BERRY_POUCH
-_0810A3F4: .4byte sub_810A448
-_0810A3F8:
- mov r1, r8
- ldrh r0, [r1, 0x6]
- cmp r0, 0x1
- beq _0810A420
- adds r0, r6, 0
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- bne _0810A420
- bl sub_8108CB4
- mov r0, r9
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0810A41C @ =ItemMenu_StartFadeToExitCallback
- str r1, [r0]
- b _0810A426
- .align 2, 0
-_0810A41C: .4byte ItemMenu_StartFadeToExitCallback
-_0810A420:
- adds r0, r5, 0
- bl sub_810A18C
-_0810A426:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810A370
-
- thumb_func_start sub_810A434
-sub_810A434: @ 810A434
- push {lr}
- ldr r1, _0810A444 @ =sub_810A45C
- movs r0, 0x1
- movs r2, 0
- bl InitTMCase
- pop {r0}
- bx r0
- .align 2, 0
-_0810A444: .4byte sub_810A45C
- thumb_func_end sub_810A434
-
- thumb_func_start sub_810A448
-sub_810A448: @ 810A448
- push {lr}
- ldr r1, _0810A458 @ =sub_810A45C
- movs r0, 0x1
- movs r2, 0
- bl InitBerryPouch
- pop {r0}
- bx r0
- .align 2, 0
-_0810A458: .4byte sub_810A45C
- thumb_func_end sub_810A448
-
- thumb_func_start sub_810A45C
-sub_810A45C: @ 810A45C
- push {lr}
- bl CB2_SelectBagItemToGive
- pop {r0}
- bx r0
- thumb_func_end sub_810A45C
-
- thumb_func_start sub_810A468
-sub_810A468: @ 810A468
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r7, r0, 3
- ldr r0, _0810A4B4 @ =gTasks+0x8
- mov r9, r0
- adds r1, r7, r0
- ldr r2, _0810A4B8 @ =gUnknown_203ACFC
- mov r8, r2
- ldrb r0, [r2, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r1, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- adds r0, r4, 0
- bl ItemIsMail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810A4C4
- ldr r2, _0810A4BC @ =gUnknown_841630F
- ldr r3, _0810A4C0 @ =sub_810A1D0
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
- b _0810A51E
- .align 2, 0
-_0810A4B4: .4byte gTasks+0x8
-_0810A4B8: .4byte gUnknown_203ACFC
-_0810A4BC: .4byte gUnknown_841630F
-_0810A4C0: .4byte sub_810A1D0
-_0810A4C4:
- movs r0, 0xB6
- lsls r0, 1 @ ITEM_TM_CASE
- cmp r4, r0
- bne _0810A4D4
- ldr r0, _0810A4D0 @ =sub_810A52C
- b _0810A4DC
- .align 2, 0
-_0810A4D0: .4byte sub_810A52C
-_0810A4D4:
- ldr r0, _0810A4E8 @ =0x0000016d @ ITEM_BERRY_POUCH
- cmp r4, r0
- bne _0810A4F0
- ldr r0, _0810A4EC @ =sub_810A540
-_0810A4DC:
- bl ItemMenu_SetExitCallback
- adds r0, r5, 0
- bl ItemMenu_StartFadeToExitCallback
- b _0810A51E
- .align 2, 0
-_0810A4E8: .4byte 0x0000016d
-_0810A4EC: .4byte sub_810A540
-_0810A4F0:
- mov r1, r8
- ldrh r0, [r1, 0x6]
- cmp r0, 0x1
- beq _0810A518
- adds r0, r6, 0
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- bne _0810A518
- bl sub_8108CB4
- mov r0, r9
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0810A514 @ =ItemMenu_StartFadeToExitCallback
- str r1, [r0]
- b _0810A51E
- .align 2, 0
-_0810A514: .4byte ItemMenu_StartFadeToExitCallback
-_0810A518:
- adds r0, r5, 0
- bl sub_810A18C
-_0810A51E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810A468
-
- thumb_func_start sub_810A52C
-sub_810A52C: @ 810A52C
- push {lr}
- ldr r1, _0810A53C @ =sub_810A554
- movs r0, 0x3
- movs r2, 0
- bl InitTMCase
- pop {r0}
- bx r0
- .align 2, 0
-_0810A53C: .4byte sub_810A554
- thumb_func_end sub_810A52C
-
- thumb_func_start sub_810A540
-sub_810A540: @ 810A540
- push {lr}
- ldr r1, _0810A550 @ =sub_810A554
- movs r0, 0x3
- movs r2, 0
- bl InitBerryPouch
- pop {r0}
- bx r0
- .align 2, 0
-_0810A550: .4byte sub_810A554
- thumb_func_end sub_810A540
-
- thumb_func_start sub_810A554
-sub_810A554: @ 810A554
- push {lr}
- ldr r2, _0810A564 @ =sub_808CE60
- movs r0, 0x4
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_0810A564: .4byte sub_808CE60
- thumb_func_end sub_810A554
-
- thumb_func_start sub_810A568
-sub_810A568: @ 810A568
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810A58C @ =gTasks+0x8
- adds r4, r0, r1
- ldr r6, _0810A590 @ =gSpecialVar_ItemId
- ldrh r1, [r6]
- movs r0, 0xB6
- lsls r0, 1
- cmp r1, r0
- bne _0810A598
- ldr r0, _0810A594 @ =sub_810A654
- b _0810A5A0
- .align 2, 0
-_0810A58C: .4byte gTasks+0x8
-_0810A590: .4byte gSpecialVar_ItemId
-_0810A594: .4byte sub_810A654
-_0810A598:
- ldr r0, _0810A5AC @ =0x0000016d
- cmp r1, r0
- bne _0810A5B4
- ldr r0, _0810A5B0 @ =sub_810A668
-_0810A5A0:
- bl ItemMenu_SetExitCallback
- adds r0, r5, 0
- bl ItemMenu_StartFadeToExitCallback
- b _0810A63E
- .align 2, 0
-_0810A5AC: .4byte 0x0000016d
-_0810A5B0: .4byte sub_810A668
-_0810A5B4:
- ldrh r0, [r6]
- bl itemid_get_market_price
- lsls r0, 16
- cmp r0, 0
- bne _0810A5F8
- ldrh r0, [r6]
- ldr r1, _0810A5E8 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0810A5EC @ =gStringVar4
- ldr r1, _0810A5F0 @ =gText_OhNoICantBuyThat
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0810A5F4 @ =sub_810A1F8
- adds r0, r5, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBag
- b _0810A63E
- .align 2, 0
-_0810A5E8: .4byte gStringVar1
-_0810A5EC: .4byte gStringVar4
-_0810A5F0: .4byte gText_OhNoICantBuyThat
-_0810A5F4: .4byte sub_810A1F8
-_0810A5F8:
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _0810A610
- bl sub_810BB40
- adds r0, r5, 0
- bl sub_810A690
- b _0810A63E
-_0810A610:
- cmp r0, 0x63
- ble _0810A618
- movs r0, 0x63
- strh r0, [r4, 0x4]
-_0810A618:
- ldrh r0, [r6]
- ldr r1, _0810A644 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0810A648 @ =gStringVar4
- ldr r1, _0810A64C @ =gText_HowManyWouldYouLikeToSell
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0810A650 @ =sub_810A770
- adds r0, r7, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBag
-_0810A63E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A644: .4byte gStringVar1
-_0810A648: .4byte gStringVar4
-_0810A64C: .4byte gText_HowManyWouldYouLikeToSell
-_0810A650: .4byte sub_810A770
- thumb_func_end sub_810A568
-
- thumb_func_start sub_810A654
-sub_810A654: @ 810A654
- push {lr}
- ldr r1, _0810A664 @ =sub_810A67C
- movs r0, 0x2
- movs r2, 0
- bl InitTMCase
- pop {r0}
- bx r0
- .align 2, 0
-_0810A664: .4byte sub_810A67C
- thumb_func_end sub_810A654
-
- thumb_func_start sub_810A668
-sub_810A668: @ 810A668
- push {lr}
- ldr r1, _0810A678 @ =sub_810A67C
- movs r0, 0x2
- movs r2, 0
- bl InitBerryPouch
- pop {r0}
- bx r0
- .align 2, 0
-_0810A678: .4byte sub_810A67C
- thumb_func_end sub_810A668
-
- thumb_func_start sub_810A67C
-sub_810A67C: @ 810A67C
- push {lr}
- ldr r2, _0810A68C @ =CB2_ReturnToField
- movs r0, 0x2
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_0810A68C: .4byte CB2_ReturnToField
- thumb_func_end sub_810A67C
-
- thumb_func_start sub_810A690
-sub_810A690: @ 810A690
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810A6F4 @ =gTasks+0x8
- adds r4, r0
- ldr r6, _0810A6F8 @ =gStringVar3
- ldr r0, _0810A6FC @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _0810A700 @ =gStringVar4
- ldr r1, _0810A704 @ =gText_ICanPayThisMuch_WouldThatBeOkay
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0810A708 @ =sub_810A70C
- adds r0, r5, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBag
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A6F4: .4byte gTasks+0x8
-_0810A6F8: .4byte gStringVar3
-_0810A6FC: .4byte gUnknown_203ACFC
-_0810A700: .4byte gStringVar4
-_0810A704: .4byte gText_ICanPayThisMuch_WouldThatBeOkay
-_0810A708: .4byte sub_810A70C
- thumb_func_end sub_810A690
-
- thumb_func_start sub_810A70C
-sub_810A70C: @ 810A70C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0810A71C @ =gUnknown_8452F58
- bl sub_810BB14
- pop {r0}
- bx r0
- .align 2, 0
-_0810A71C: .4byte gUnknown_8452F58
- thumb_func_end sub_810A70C
-
- thumb_func_start sub_810A720
-sub_810A720: @ 810A720
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810A76C @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x2
- bl sub_810BA3C
- movs r0, 0x5
- bl sub_810BA9C
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- adds r0, r5, 0
- bl sub_810910C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A76C: .4byte gTasks+0x8
- thumb_func_end sub_810A720
-
- thumb_func_start sub_810A770
-sub_810A770: @ 810A770
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- ldr r0, _0810A81C @ =gTasks+0x8
- mov r8, r0
- adds r2, r5, 0
- add r2, r8
- mov r9, r2
- movs r0, 0
- movs r1, 0x1
- bl sub_810B9DC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810A820 @ =gStringVar1
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r6, _0810A824 @ =gStringVar4
- ldr r1, _0810A828 @ =gText_TimesStrVar1
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r6, 0
- movs r3, 0x4
- bl sub_810B8F0
- ldr r0, _0810A82C @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r3, r9
- ldrh r1, [r3, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r2, r9
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- muls r0, r1
- bl sub_810A834
- bl sub_810BB40
- bl sub_8108908
- movs r0, 0x8
- negs r0, r0
- add r8, r0
- add r5, r8
- ldr r0, _0810A830 @ =sub_810A85C
- str r0, [r5]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A81C: .4byte gTasks+0x8
-_0810A820: .4byte gStringVar1
-_0810A824: .4byte gStringVar4
-_0810A828: .4byte gText_TimesStrVar1
-_0810A82C: .4byte gUnknown_203ACFC
-_0810A830: .4byte sub_810A85C
- thumb_func_end sub_810A770
-
- thumb_func_start sub_810A834
-sub_810A834: @ 810A834
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- str r1, [sp]
- movs r1, 0x38
- movs r2, 0xA
- adds r3, r4, 0
- bl PrintMoneyAmount
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810A834
-
- thumb_func_start sub_810A85C
-sub_810A85C: @ 810A85C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0810A8B4 @ =gTasks+0x8
- adds r5, r0, r1
- adds r0, r5, 0
- adds r0, 0x10
- ldrh r1, [r5, 0x4]
- bl AdjustQuantityAccordingToDPadInput
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810A8BC
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r1, 0x2
- bl sub_81097E4
- ldr r0, _0810A8B8 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- muls r0, r1
- bl sub_810A834
- b _0810A93A
- .align 2, 0
-_0810A8B4: .4byte gTasks+0x8
-_0810A8B8: .4byte gUnknown_203ACFC
-_0810A8BC:
- ldr r0, _0810A8EC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810A8F0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_8108978
- adds r0, r4, 0
- bl sub_810A690
- b _0810A93A
- .align 2, 0
-_0810A8EC: .4byte gMain
-_0810A8F0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810A93A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_810BA3C
- movs r0, 0x2
- bl sub_810BA3C
- movs r0, 0x5
- bl sub_810BA9C
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_8108978
- ldrb r0, [r5]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- adds r0, r6, 0
- bl sub_810910C
-_0810A93A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810A85C
-
- thumb_func_start sub_810A940
-sub_810A940: @ 810A940
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810A9B4 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0810A9B8 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldr r1, _0810A9BC @ =gStringVar1
- bl CopyItemName
- ldr r6, _0810A9C0 @ =gStringVar3
- ldr r0, _0810A9C4 @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _0810A9C8 @ =gStringVar4
- ldr r1, _0810A9CC @ =gText_TurnedOverItemsWorthYen
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _0810A9D0 @ =sub_810A9D4
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageInBag
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A9B4: .4byte gTasks+0x8
-_0810A9B8: .4byte gSpecialVar_ItemId
-_0810A9BC: .4byte gStringVar1
-_0810A9C0: .4byte gStringVar3
-_0810A9C4: .4byte gUnknown_203ACFC
-_0810A9C8: .4byte gStringVar4
-_0810A9CC: .4byte gText_TurnedOverItemsWorthYen
-_0810A9D0: .4byte sub_810A9D4
- thumb_func_end sub_810A940
-
- thumb_func_start sub_810A9D4
-sub_810A9D4: @ 810A9D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r6, r0, 2
- adds r6, r0
- lsls r6, 3
- ldr r0, _0810AAD8 @ =gTasks+0x8
- mov r10, r0
- adds r1, r6, 0
- add r1, r10
- mov r8, r1
- movs r0, 0xF8
- bl PlaySE
- ldr r5, _0810AADC @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- mov r2, r8
- ldrh r1, [r2, 0x10]
- bl RemoveBagItem
- ldr r3, _0810AAE0 @ =gSaveBlock1Ptr
- ldr r4, [r3]
- movs r7, 0xA4
- lsls r7, 2
- adds r4, r7
- ldrh r0, [r5]
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r2, r8
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- muls r1, r0
- adds r0, r4, 0
- bl AddMoney
- ldrh r0, [r5]
- mov r2, r8
- ldrh r1, [r2, 0x10]
- movs r2, 0x2
- bl RecordItemPurchase
- mov r3, r8
- ldrb r0, [r3]
- ldr r4, _0810AAE4 @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r4, 0
- adds r5, 0xE
- adds r1, r2, r5
- movs r3, 0x8
- adds r3, r4
- mov r9, r3
- add r2, r9
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x6]
- bl sub_8108DC8
- ldrb r0, [r4, 0x6]
- bl sub_81089F4
- ldr r0, _0810AAE8 @ =gUnknown_203AD10
- ldr r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _0810AAEC @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r2, r5
- ldrh r1, [r5]
- add r2, r9
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- strh r0, [r1]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x2
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- bl sub_810BB74
- movs r0, 0x2
- bl sub_810BAD8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, _0810AAE0 @ =gSaveBlock1Ptr
- ldr r0, [r2]
- adds r0, r7
- bl GetMoney
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- bl PrintMoneyAmountInMoneyBox
- movs r3, 0x8
- negs r3, r3
- add r10, r3
- add r6, r10
- ldr r0, _0810AAF0 @ =sub_810AAF4
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810AAD8: .4byte gTasks+0x8
-_0810AADC: .4byte gSpecialVar_ItemId
-_0810AAE0: .4byte gSaveBlock1Ptr
-_0810AAE4: .4byte gUnknown_203ACFC
-_0810AAE8: .4byte gUnknown_203AD10
-_0810AAEC: .4byte gMultiuseListMenuTemplate
-_0810AAF0: .4byte sub_810AAF4
- thumb_func_end sub_810A9D4
-
- thumb_func_start sub_810AAF4
-sub_810AAF4: @ 810AAF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810AB38 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810AB0E
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810AB32
-_0810AB0E:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- bl sub_810BA3C
- movs r0, 0x2
- bl PutWindowTilemap
- ldr r0, _0810AB3C @ =gUnknown_203AD10
- ldr r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x5]
- adds r0, r4, 0
- bl sub_810A1F8
-_0810AB32:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810AB38: .4byte gMain
-_0810AB3C: .4byte gUnknown_203AD10
- thumb_func_end sub_810AAF4
-
- thumb_func_start sub_810AB40
-sub_810AB40: @ 810AB40
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r4, r0, 3
- ldr r5, _0810AB64 @ =gTasks+0x8
- adds r1, r4, r5
- movs r0, 0x1
- strh r0, [r1, 0x10]
- movs r3, 0x4
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- bne _0810AB68
- adds r0, r2, 0
- bl sub_810AC40
- b _0810AB7A
- .align 2, 0
-_0810AB64: .4byte gTasks+0x8
-_0810AB68:
- ldrh r0, [r1, 0x2]
- ldr r1, _0810AB80 @ =gUnknown_841638F
- bl sub_810971C
- adds r0, r5, 0
- subs r0, 0x8
- adds r0, r4, r0
- ldr r1, _0810AB84 @ =sub_810AB88
- str r1, [r0]
-_0810AB7A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810AB80: .4byte gUnknown_841638F
-_0810AB84: .4byte sub_810AB88
- thumb_func_end sub_810AB40
-
- thumb_func_start sub_810AB88
-sub_810AB88: @ 810AB88
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810ABB8 @ =gTasks+0x8
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x10
- ldrh r1, [r4, 0x4]
- bl AdjustQuantityAccordingToDPadInput
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810ABBC
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl sub_81097E4
- b _0810AC38
- .align 2, 0
-_0810ABB8: .4byte gTasks+0x8
-_0810ABBC:
- ldr r0, _0810ABFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810AC00
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x6
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl sub_810BA3C
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_8108978
- adds r0, r5, 0
- bl sub_810AC40
- b _0810AC38
- .align 2, 0
-_0810ABFC: .4byte gMain
-_0810AC00:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810AC38
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl sub_810BA3C
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- bl sub_8108978
- adds r0, r6, 0
- bl sub_810910C
-_0810AC38:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810AB88
-
- thumb_func_start sub_810AC40
-sub_810AC40: @ 810AC40
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r8, r0
- ldr r0, _0810ACCC @ =gTasks+0x8
- mov r9, r0
- mov r7, r8
- add r7, r9
- ldr r5, _0810ACD0 @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- ldrh r1, [r7, 0x10]
- bl AddPCItem
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bne _0810ACEC
- ldrh r2, [r5]
- ldr r3, _0810ACD4 @ =0x0000ffff
- movs r0, 0x1C
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldrh r0, [r5]
- ldr r1, _0810ACD8 @ =gStringVar1
- bl CopyItemName
- ldr r0, _0810ACDC @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r7, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _0810ACE0 @ =gStringVar4
- ldr r1, _0810ACE4 @ =gUnknown_84163A7
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x6
- movs r1, 0x3
- bl sub_810B9DC
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- str r1, [sp]
- str r6, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- str r6, [sp, 0x10]
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl sub_810B8F0
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, _0810ACE8 @ =sub_8109F44
- str r1, [r0]
- b _0810ACF8
- .align 2, 0
-_0810ACCC: .4byte gTasks+0x8
-_0810ACD0: .4byte gSpecialVar_ItemId
-_0810ACD4: .4byte 0x0000ffff
-_0810ACD8: .4byte gStringVar1
-_0810ACDC: .4byte gStringVar2
-_0810ACE0: .4byte gStringVar4
-_0810ACE4: .4byte gUnknown_84163A7
-_0810ACE8: .4byte sub_8109F44
-_0810ACEC:
- ldr r2, _0810AD08 @ =gUnknown_84163BB
- ldr r3, _0810AD0C @ =sub_810A1D0
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
-_0810ACF8:
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810AD08: .4byte gUnknown_84163BB
-_0810AD0C: .4byte sub_810A1D0
- thumb_func_end sub_810AC40
-
- thumb_func_start UseRegisteredKeyItemOnField
-UseRegisteredKeyItemOnField: @ 810AD10
- push {r4-r6,lr}
- bl InUnionRoom
- cmp r0, 0x1
- bne _0810AD1E
- movs r0, 0
- b _0810ADA0
-_0810AD1E:
- bl DismissMapNamePopup
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r4, _0810AD80 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r5, _0810AD84 @ =0x00000296
- adds r1, r0, r5
- ldrh r0, [r1]
- cmp r0, 0
- beq _0810AD98
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bne _0810AD90
- bl ScriptContext2_Enable
- bl FreezeObjectEvents
- bl sub_805C270
- bl sub_805C780
- ldr r2, _0810AD88 @ =gSpecialVar_ItemId
- ldr r0, [r4]
- adds r0, r5
- ldrh r1, [r0]
- strh r1, [r2]
- ldrh r0, [r0]
- bl ItemId_GetFieldFunc
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810AD8C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r6, [r1, 0xE]
- b _0810AD9E
- .align 2, 0
-_0810AD80: .4byte gSaveBlock1Ptr
-_0810AD84: .4byte 0x00000296
-_0810AD88: .4byte gSpecialVar_ItemId
-_0810AD8C: .4byte gTasks
-_0810AD90:
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0
- strh r1, [r0]
-_0810AD98:
- ldr r0, _0810ADA8 @ =gUnknown_81A77A0
- bl ScriptContext1_SetupScript
-_0810AD9E:
- movs r0, 0x1
-_0810ADA0:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0810ADA8: .4byte gUnknown_81A77A0
- thumb_func_end UseRegisteredKeyItemOnField
-
- thumb_func_start sub_810ADAC
-sub_810ADAC: @ 810ADAC
- push {lr}
- ldr r0, _0810ADCC @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x4]
- cmp r0, 0x6
- beq _0810ADC6
- cmp r0, 0x8
- beq _0810ADC6
- cmp r0, 0x7
- beq _0810ADC6
- cmp r0, 0x9
- beq _0810ADC6
- cmp r0, 0xA
- bne _0810ADD0
-_0810ADC6:
- movs r0, 0x1
- b _0810ADD2
- .align 2, 0
-_0810ADCC: .4byte gUnknown_203ACFC
-_0810ADD0:
- movs r0, 0
-_0810ADD2:
- pop {r1}
- bx r1
- thumb_func_end sub_810ADAC
-
- thumb_func_start sub_810ADD8
-sub_810ADD8: @ 810ADD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, _0810AEBC @ =gUnknown_203AD2C
- movs r0, 0xB2
- lsls r0, 1
- bl AllocZeroed
- str r0, [r5]
- ldr r4, _0810AEC0 @ =gSaveBlock1Ptr
- ldr r1, [r4]
- movs r2, 0xC4
- lsls r2, 2
- adds r1, r2
- movs r2, 0xA8
- bl memcpy
- ldr r0, [r5]
- adds r0, 0xA8
- ldr r1, [r4]
- movs r3, 0xEE
- lsls r3, 2
- adds r1, r3
- movs r2, 0x78
- bl memcpy
- ldr r0, [r5]
- movs r1, 0x90
- lsls r1, 1
- adds r0, r1
- ldr r1, [r4]
- movs r2, 0x86
- lsls r2, 3
- adds r1, r2
- movs r2, 0x34
- bl memcpy
- ldr r2, [r5]
- ldr r0, [r4]
- ldr r3, _0810AEC4 @ =0x00000296
- adds r0, r3
- ldrh r1, [r0]
- movs r3, 0xB0
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _0810AEC8 @ =gUnknown_203ACFC
- ldrh r0, [r1, 0x6]
- adds r3, 0x2
- adds r2, r3
- strh r0, [r2]
- movs r4, 0
- mov r8, r5
- movs r7, 0xAA
- lsls r7, 1
- movs r0, 0xE
- adds r0, r1
- mov r12, r0
- movs r6, 0xAD
- lsls r6, 1
- adds r5, r1, 0
- adds r5, 0x8
-_0810AE54:
- mov r1, r8
- ldr r2, [r1]
- lsls r3, r4, 1
- adds r0, r2, r7
- adds r0, r3
- ldrh r1, [r5]
- strh r1, [r0]
- adds r2, r6
- adds r2, r3
- mov r3, r12
- ldrh r0, [r3]
- strh r0, [r2]
- movs r0, 0x2
- add r12, r0
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x2
- bls _0810AE54
- ldr r4, _0810AEC0 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- movs r1, 0xC4
- lsls r1, 2
- adds r0, r1
- movs r1, 0x2A
- bl ClearItemSlots
- ldr r0, [r4]
- movs r2, 0xEE
- lsls r2, 2
- adds r0, r2
- movs r1, 0x1E
- bl ClearItemSlots
- ldr r0, [r4]
- movs r3, 0x86
- lsls r3, 3
- adds r0, r3
- movs r1, 0xD
- bl ClearItemSlots
- ldr r0, [r4]
- ldr r1, _0810AEC4 @ =0x00000296
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- bl sub_81089BC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810AEBC: .4byte gUnknown_203AD2C
-_0810AEC0: .4byte gSaveBlock1Ptr
-_0810AEC4: .4byte 0x00000296
-_0810AEC8: .4byte gUnknown_203ACFC
- thumb_func_end sub_810ADD8
-
- thumb_func_start sub_810AECC
-sub_810AECC: @ 810AECC
- push {r4-r7,lr}
- ldr r4, _0810AF64 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- movs r1, 0xC4
- lsls r1, 2
- adds r0, r1
- ldr r5, _0810AF68 @ =gUnknown_203AD2C
- ldr r1, [r5]
- movs r2, 0xA8
- bl memcpy
- ldr r0, [r4]
- movs r2, 0xEE
- lsls r2, 2
- adds r0, r2
- ldr r1, [r5]
- adds r1, 0xA8
- movs r2, 0x78
- bl memcpy
- ldr r0, [r4]
- movs r3, 0x86
- lsls r3, 3
- adds r0, r3
- ldr r1, [r5]
- movs r2, 0x90
- lsls r2, 1
- adds r1, r2
- movs r2, 0x34
- bl memcpy
- ldr r1, [r4]
- ldr r2, [r5]
- movs r3, 0xB0
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- ldr r3, _0810AF6C @ =0x00000296
- adds r1, r3
- strh r0, [r1]
- ldr r1, _0810AF70 @ =gUnknown_203ACFC
- movs r3, 0xB1
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1, 0x6]
- movs r4, 0
- mov r12, r5
- adds r3, r1, 0
- adds r3, 0x8
- mov r7, r12
- movs r6, 0xAA
- lsls r6, 1
- movs r5, 0xAD
- lsls r5, 1
-_0810AF3A:
- lsls r2, r4, 1
- ldr r1, [r7]
- adds r0, r1, r6
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r3]
- adds r1, r5
- adds r1, r2
- ldrh r0, [r1]
- strh r0, [r3, 0x6]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x2
- bls _0810AF3A
- mov r1, r12
- ldr r0, [r1]
- bl Free
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810AF64: .4byte gSaveBlock1Ptr
-_0810AF68: .4byte gUnknown_203AD2C
-_0810AF6C: .4byte 0x00000296
-_0810AF70: .4byte gUnknown_203ACFC
- thumb_func_end sub_810AECC
-
- thumb_func_start sub_810AF74
-sub_810AF74: @ 810AF74
- push {lr}
- bl sub_810ADD8
- movs r0, 0xD
- movs r1, 0x1
- bl AddBagItem
- movs r0, 0x4
- movs r1, 0x1
- bl AddBagItem
- ldr r2, _0810AF98 @ =SetCB2ToReshowScreenAfterMenu2
- movs r0, 0x6
- movs r1, 0
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_0810AF98: .4byte SetCB2ToReshowScreenAfterMenu2
- thumb_func_end sub_810AF74
-
- thumb_func_start sub_810AF9C
-sub_810AF9C: @ 810AF9C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r6, r0, 3
- ldr r7, _0810AFCC @ =gTasks+0x8
- adds r5, r6, r7
- ldr r0, _0810AFD0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810B06A
- movs r0, 0x10
- ldrsh r1, [r5, r0]
- cmp r1, 0xCC
- beq _0810AFE4
- cmp r1, 0xCC
- bgt _0810AFD4
- cmp r1, 0x66
- beq _0810AFE4
- b _0810B064
- .align 2, 0
-_0810AFCC: .4byte gTasks+0x8
-_0810AFD0: .4byte gPaletteFade
-_0810AFD4:
- movs r0, 0x99
- lsls r0, 1
- cmp r1, r0
- beq _0810AFF6
- adds r0, 0x66
- cmp r1, r0
- beq _0810B01C
- b _0810B064
-_0810AFE4:
- movs r0, 0xF6
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_81091D0
- b _0810B064
-_0810AFF6:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r5]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x1
- bl sub_8109140
- 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 gSpecialVar_ItemId
-_0810B01C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- bl sub_810AECC
- bl sub_8108CB4
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810B060 @ =sub_810B070
- str r1, [r0]
- b _0810B06A
- .align 2, 0
-_0810B060: .4byte sub_810B070
-_0810B064:
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
-_0810B06A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810AF9C
-
- thumb_func_start sub_810B070
-sub_810B070: @ 810B070
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0810B0A4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810B0A8 @ =sub_810B0AC
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B0A4: .4byte gTasks
-_0810B0A8: .4byte sub_810B0AC
- thumb_func_end sub_810B070
-
- thumb_func_start sub_810B0AC
-sub_810B0AC: @ 810B0AC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810B0DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810B0FE
- ldr r0, _0810B0E0 @ =sub_8108CFC
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810B0FE
- ldr r0, _0810B0E4 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _0810B0E8
- bl SetMainCallback2
- b _0810B0F0
- .align 2, 0
-_0810B0DC: .4byte gPaletteFade
-_0810B0E0: .4byte sub_8108CFC
-_0810B0E4: .4byte gUnknown_203AD10
-_0810B0E8:
- ldr r0, _0810B104 @ =gUnknown_203ACFC
- ldr r0, [r0]
- bl SetMainCallback2
-_0810B0F0:
- bl sub_8108978
- bl sub_8108B04
- adds r0, r4, 0
- bl DestroyTask
-_0810B0FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B104: .4byte gUnknown_203ACFC
- thumb_func_end sub_810B0AC
-
- thumb_func_start sub_810B108
-sub_810B108: @ 810B108
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_810ADD8
- movs r0, 0xD
- movs r1, 0x1
- bl AddBagItem
- movs r0, 0xE
- movs r1, 0x1
- bl AddBagItem
- movs r0, 0xB7
- lsls r0, 1
- movs r1, 0x1
- bl AddBagItem
- movs r0, 0xB6
- lsls r0, 1
- movs r1, 0x1
- bl AddBagItem
- movs r0, 0x4
- movs r1, 0x5
- bl AddBagItem
- movs r0, 0x3
- movs r1, 0x1
- bl AddBagItem
- movs r0, 0x8
- movs r1, 0x1
- bl AddBagItem
- cmp r4, 0x7
- beq _0810B160
- cmp r4, 0x8
- beq _0810B16C
- ldr r2, _0810B15C @ =CB2_ReturnToTeachyTV
- adds r0, r4, 0
- b _0810B170
- .align 2, 0
-_0810B15C: .4byte CB2_ReturnToTeachyTV
-_0810B160:
- ldr r2, _0810B168 @ =SetCB2ToReshowScreenAfterMenu2
- movs r0, 0x7
- b _0810B170
- .align 2, 0
-_0810B168: .4byte SetCB2ToReshowScreenAfterMenu2
-_0810B16C:
- ldr r2, _0810B17C @ =SetCB2ToReshowScreenAfterMenu2
- movs r0, 0x8
-_0810B170:
- movs r1, 0
- bl GoToBagMenu
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810B17C: .4byte SetCB2ToReshowScreenAfterMenu2
- thumb_func_end sub_810B108
-
- thumb_func_start sub_810B180
-sub_810B180: @ 810B180
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810B198 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0810B19C
- movs r0, 0
- b _0810B1BC
- .align 2, 0
-_0810B198: .4byte gMain
-_0810B19C:
- bl sub_810AECC
- bl SetTeachyTvControllerModeToResume
- ldr r0, _0810B1C4 @ =gUnknown_203AD10
- ldr r1, [r0]
- ldr r0, _0810B1C8 @ =CB2_ReturnToTeachyTV
- str r0, [r1]
- ldr r1, _0810B1CC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810B1D0 @ =sub_810B070
- str r1, [r0]
- movs r0, 0x1
-_0810B1BC:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810B1C4: .4byte gUnknown_203AD10
-_0810B1C8: .4byte CB2_ReturnToTeachyTV
-_0810B1CC: .4byte gTasks
-_0810B1D0: .4byte sub_810B070
- thumb_func_end sub_810B180
-
- thumb_func_start sub_810B1D4
-sub_810B1D4: @ 810B1D4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r5, r0, 3
- ldr r6, _0810B220 @ =gTasks+0x8
- adds r7, r5, r6
- ldr r0, _0810B224 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810B1F2
- b _0810B372
-_0810B1F2:
- adds r0, r4, 0
- bl sub_810B180
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810B202
- b _0810B372
-_0810B202:
- movs r0, 0x10
- ldrsh r1, [r7, r0]
- movs r0, 0xCC
- lsls r0, 1
- cmp r1, r0
- beq _0810B29E
- cmp r1, r0
- bgt _0810B232
- cmp r1, 0xCC
- beq _0810B266
- cmp r1, 0xCC
- bgt _0810B228
- cmp r1, 0x66
- beq _0810B254
- b _0810B36C
- .align 2, 0
-_0810B220: .4byte gTasks+0x8
-_0810B224: .4byte gPaletteFade
-_0810B228:
- movs r0, 0x99
- lsls r0, 1
- cmp r1, r0
- beq _0810B290
- b _0810B36C
-_0810B232:
- movs r0, 0x99
- lsls r0, 2
- cmp r1, r0
- beq _0810B32C
- cmp r1, r0
- bgt _0810B246
- subs r0, 0x66
- cmp r1, r0
- beq _0810B32C
- b _0810B36C
-_0810B246:
- ldr r0, _0810B250 @ =0x000002ca
- cmp r1, r0
- bne _0810B24E
- b _0810B344
-_0810B24E:
- b _0810B36C
- .align 2, 0
-_0810B250: .4byte 0x000002ca
-_0810B254:
- movs r0, 0xF6
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_81091D0
- b _0810B36C
-_0810B266:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r7]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x1
- bl sub_8109140
- ldr r1, _0810B28C @ =gSpecialVar_ItemId
- movs r2, 0xB7
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_8109890
- b _0810B36C
- .align 2, 0
-_0810B28C: .4byte gSpecialVar_ItemId
-_0810B290:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl Menu_MoveCursorNoWrapAround
- b _0810B36C
-_0810B29E:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0810B318 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _0810B31C @ =gSpecialVar_ItemId
- ldrh r1, [r1]
- ldr r2, _0810B320 @ =0x00000296
- adds r0, r2
- strh r1, [r0]
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- ldrb r0, [r7]
- ldr r4, _0810B324 @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r4, 0
- adds r5, 0xE
- adds r1, r2, r5
- adds r6, r4, 0
- adds r6, 0x8
- adds r2, r6
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x6]
- bl sub_810842C
- ldr r0, _0810B328 @ =gMultiuseListMenuTemplate
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r5, r2, r5
- ldrh r1, [r5]
- adds r2, r6
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7]
- movs r0, 0
- bl sub_8109140
- ldrb r0, [r7]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- b _0810B36C
- .align 2, 0
-_0810B318: .4byte gSaveBlock1Ptr
-_0810B31C: .4byte gSpecialVar_ItemId
-_0810B320: .4byte 0x00000296
-_0810B324: .4byte gUnknown_203ACFC
-_0810B328: .4byte gMultiuseListMenuTemplate
-_0810B32C:
- ldr r1, _0810B340 @ =gMain
- movs r0, 0
- strh r0, [r1, 0x2E]
- movs r0, 0x80
- strh r0, [r1, 0x30]
- ldrb r0, [r7]
- bl ListMenu_ProcessInput
- b _0810B36C
- .align 2, 0
-_0810B340: .4byte gMain
-_0810B344:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r7]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- bl sub_810AECC
- bl sub_8108CB4
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, _0810B368 @ =sub_810B070
- str r1, [r0]
- b _0810B372
- .align 2, 0
-_0810B368: .4byte sub_810B070
-_0810B36C:
- ldrh r0, [r7, 0x10]
- adds r0, 0x1
- strh r0, [r7, 0x10]
-_0810B372:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810B1D4
-
- thumb_func_start sub_810B378
-sub_810B378: @ 810B378
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _0810B3B0 @ =gTasks+0x8
- adds r4, r6, r7
- ldr r0, _0810B3B4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810B396
- b _0810B4B6
-_0810B396:
- adds r0, r5, 0
- bl sub_810B180
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810B3B8
- bl FreeRestoreBattleData
- bl LoadPlayerParty
- b _0810B4B6
- .align 2, 0
-_0810B3B0: .4byte gTasks+0x8
-_0810B3B4: .4byte gPaletteFade
-_0810B3B8:
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r0, 0xCC
- lsls r0, 1
- cmp r1, r0
- beq _0810B41A
- cmp r1, r0
- bgt _0810B3E0
- cmp r1, 0xCC
- beq _0810B408
- cmp r1, 0xCC
- bgt _0810B3D6
- cmp r1, 0x66
- beq _0810B408
- b _0810B4B0
-_0810B3D6:
- movs r0, 0x99
- lsls r0, 1
- cmp r1, r0
- beq _0810B41A
- b _0810B4B0
-_0810B3E0:
- movs r0, 0x99
- lsls r0, 2
- cmp r1, r0
- beq _0810B428
- cmp r1, r0
- bgt _0810B3F4
- subs r0, 0x66
- cmp r1, r0
- beq _0810B428
- b _0810B4B0
-_0810B3F4:
- ldr r0, _0810B404 @ =0x000002ca
- cmp r1, r0
- beq _0810B440
- adds r0, 0x66
- cmp r1, r0
- beq _0810B468
- b _0810B4B0
- .align 2, 0
-_0810B404: .4byte 0x000002ca
-_0810B408:
- movs r0, 0xF6
- bl PlaySE
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_81091D0
- b _0810B4B0
-_0810B41A:
- ldr r1, _0810B424 @ =gMain
- movs r0, 0
- strh r0, [r1, 0x2E]
- movs r0, 0x80
- b _0810B430
- .align 2, 0
-_0810B424: .4byte gMain
-_0810B428:
- ldr r1, _0810B43C @ =gMain
- movs r0, 0
- strh r0, [r1, 0x2E]
- movs r0, 0x40
-_0810B430:
- strh r0, [r1, 0x30]
- ldrb r0, [r4]
- bl ListMenu_ProcessInput
- b _0810B4B0
- .align 2, 0
-_0810B43C: .4byte gMain
-_0810B440:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x1
- bl sub_8109140
- 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 gSpecialVar_ItemId
-_0810B468:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- bl sub_810AECC
- bl sub_8108CB4
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810B4AC @ =sub_810B070
- str r1, [r0]
- b _0810B4B6
- .align 2, 0
-_0810B4AC: .4byte sub_810B070
-_0810B4B0:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
-_0810B4B6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810B378
-
- thumb_func_start sub_810B4BC
-sub_810B4BC: @ 810B4BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r8, r0
- ldr r0, _0810B504 @ =gTasks+0x8
- mov r9, r0
- mov r5, r8
- add r5, r9
- ldr r0, _0810B508 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r7, 0x80
- adds r0, r7, 0
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0810B5C6
- adds r0, r4, 0
- bl sub_810B180
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810B50C
- bl FreeRestoreBattleData
- bl LoadPlayerParty
- b _0810B5C6
- .align 2, 0
-_0810B504: .4byte gTasks+0x8
-_0810B508: .4byte gPaletteFade
-_0810B50C:
- movs r0, 0x10
- ldrsh r1, [r5, r0]
- cmp r1, 0xCC
- beq _0810B53C
- cmp r1, 0xCC
- bgt _0810B51E
- cmp r1, 0x66
- beq _0810B528
- b _0810B5C0
-_0810B51E:
- movs r0, 0x99
- lsls r0, 1
- cmp r1, r0
- beq _0810B564
- b _0810B5C0
-_0810B528:
- ldr r0, _0810B538 @ =gMain
- strh r6, [r0, 0x2E]
- strh r7, [r0, 0x30]
- ldrb r0, [r5]
- bl ListMenu_ProcessInput
- b _0810B5C0
- .align 2, 0
-_0810B538: .4byte gMain
-_0810B53C:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r5]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x1
- bl sub_8109140
- 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 gSpecialVar_ItemId
-_0810B564:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- bl sub_810AECC
- ldr r1, _0810B5B0 @ =gItemUseCB
- ldr r0, _0810B5B4 @ =ItemUseCB_MedicineStep
- str r0, [r1]
- ldr r0, _0810B5B8 @ =ChooseMonForInBattleItem
- bl ItemMenu_SetExitCallback
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, _0810B5BC @ =sub_810B070
- str r1, [r0]
- b _0810B5C6
- .align 2, 0
-_0810B5B0: .4byte gItemUseCB
-_0810B5B4: .4byte ItemUseCB_MedicineStep
-_0810B5B8: .4byte ChooseMonForInBattleItem
-_0810B5BC: .4byte sub_810B070
-_0810B5C0:
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
-_0810B5C6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810B4BC
-
- thumb_func_start sub_810B5D4
-sub_810B5D4: @ 810B5D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r8, r0
- ldr r0, _0810B624 @ =gTasks+0x8
- mov r9, r0
- mov r6, r8
- add r6, r9
- ldr r0, _0810B628 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r7, 0x80
- adds r0, r7, 0
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0810B6E6
- adds r0, r4, 0
- bl sub_810B180
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810B6E6
- movs r2, 0x10
- ldrsh r1, [r6, r2]
- cmp r1, 0xCC
- beq _0810B64E
- cmp r1, 0xCC
- bgt _0810B62C
- cmp r1, 0x66
- beq _0810B63C
- b _0810B6E0
- .align 2, 0
-_0810B624: .4byte gTasks+0x8
-_0810B628: .4byte gPaletteFade
-_0810B62C:
- movs r0, 0x99
- lsls r0, 1
- cmp r1, r0
- beq _0810B660
- adds r0, 0x66
- cmp r1, r0
- beq _0810B68C
- b _0810B6E0
-_0810B63C:
- movs r0, 0xF6
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_81091D0
- b _0810B6E0
-_0810B64E:
- ldr r0, _0810B65C @ =gMain
- strh r5, [r0, 0x2E]
- strh r7, [r0, 0x30]
- ldrb r0, [r6]
- bl ListMenu_ProcessInput
- b _0810B6E0
- .align 2, 0
-_0810B65C: .4byte gMain
-_0810B660:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r6]
- movs r1, 0x2
- bl bag_menu_print_cursor_
- movs r0, 0x1
- bl sub_8109140
- ldr r1, _0810B688 @ =gSpecialVar_ItemId
- movs r2, 0xB6
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_8109890
- b _0810B6E0
- .align 2, 0
-_0810B688: .4byte gSpecialVar_ItemId
-_0810B68C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- bl sub_810BA3C
- movs r0, 0x6
- bl sub_810BA3C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r6]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- bl sub_810AECC
- ldr r0, _0810B6D4 @ =gUnknown_203AD10
- ldr r1, [r0]
- ldr r0, _0810B6D8 @ =PokeDude_InitTMCase
- str r0, [r1]
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, _0810B6DC @ =sub_810B070
- str r1, [r0]
- b _0810B6E6
- .align 2, 0
-_0810B6D4: .4byte gUnknown_203AD10
-_0810B6D8: .4byte PokeDude_InitTMCase
-_0810B6DC: .4byte sub_810B070
-_0810B6E0:
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
-_0810B6E6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810B5D4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 358ea8b32..fc7fc398d 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -22001,7 +22001,7 @@ GetItemIconPic: @ 8096674
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl sub_8098974
+ bl GetItemIconGfxPtr
pop {r1}
bx r1
thumb_func_end GetItemIconPic
@@ -22012,7 +22012,7 @@ GetItemIconPalette: @ 8096684
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl sub_8098974
+ bl GetItemIconGfxPtr
pop {r1}
bx r1
thumb_func_end GetItemIconPalette
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 1816b53e3..8f3f4bae7 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -28,6 +28,7 @@
#include "constants/union_room.h"
#include "constants/trade.h"
#include "constants/quest_log.h"
+#include "constants/daycare.h"
.include "asm/macros.inc"
.include "asm/macros/event.inc"
.set FALSE, 0
@@ -739,6 +740,7 @@ gStdScriptsEnd::
.include "data/maps/Route2_EastBuilding/text.inc"
.include "data/maps/Route2_ViridianForest_NorthEntrance/text.inc"
.include "data/maps/Route4_PokemonCenter_1F/text.inc"
+ .include "data/maps/Route5_PokemonDayCare/text.inc"
.include "data/maps/Route5_SouthEntrance/text.inc"
.include "data/maps/Route6_NorthEntrance/text.inc"
.include "data/maps/Route7_EastEntrance/text.inc"
@@ -1426,7 +1428,7 @@ EventScript_1A778C:: @ 81A778C
releaseall
end
-gUnknown_81A77A0:: @ 81A77A0
+EventScript_BagItemCanBeRegistered:: @ 81A77A0
msgbox Text_BagItemCanBeRegistered, MSGBOX_SIGN
end
@@ -1736,23 +1738,23 @@ EventScript_1A8E6F:: @ 81A8E6F
end
EventScript_1A8EAC:: @ 81A8EAC
- getstdstring 2, 24
+ getstdstring 2, STDSTRING_ITEMS_POCKET
return
EventScript_1A8EB1:: @ 81A8EB1
- getstdstring 2, 25
+ getstdstring 2, STDSTRING_KEY_ITEMS_POCKET
return
EventScript_1A8EB6:: @ 81A8EB6
- getstdstring 2, 26
+ getstdstring 2, STDSTRING_POKEBALLS_POCKET
return
EventScript_1A8EBB:: @ 81A8EBB
- getstdstring 2, 27
+ getstdstring 2, STDSTRING_TM_CASE
return
EventScript_1A8EC0:: @ 81A8EC0
- getstdstring 2, 28
+ getstdstring 2, STDSTRING_BERRY_POUCH
return
.include "data/scripts/seagallop.inc"
@@ -2209,6 +2211,7 @@ EventScript_1B2DF6:: @ 81B2DF6
.include "data/scripts/item_ball_scripts.inc"
.include "data/scripts/mystery_event_club.inc"
.include "data/scripts/day_care.inc"
+ .include "data/text/day_care.inc"
.include "data/scripts/flash.inc"
.include "data/scripts/repel.inc"
.include "data/scripts/safari_zone.inc"
diff --git a/data/graphics.s b/data/graphics.s
index cea2a0ab3..809385e49 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -13476,7 +13476,7 @@ gTrainerBackPic_Leaf:: @ 8E6C6BC
.incbin "graphics/trainers/back_pics/leaf_back_pic.4bpp"
.align 2
-gTrainerBackPic_PokeDude:: @ 8E6EEBC
+gTrainerBackPic_Pokedude:: @ 8E6EEBC
.incbin "graphics/trainers/back_pics/pokedude_back_pic.4bpp"
.align 2
@@ -13500,7 +13500,7 @@ gTrainerPalette_LeafBackPic:: @ 8E76EE4
.incbin "graphics/trainers/palettes/red_back_pic.gbapal.lz"
.align 2
-gTrainerPalette_PokeDudeBackPic:: @ 8E76F0C
+gTrainerPalette_PokedudeBackPic:: @ 8E76F0C
.incbin "graphics/trainers/palettes/pokedude_back_pic.gbapal.lz"
.align 2
@@ -14004,11 +14004,11 @@ gUnknown_8E83444:: @ 8E83444
.incbin "graphics/item_menu/bag_tilemap2.bin.lz" @ PC deposit items
.align 2
-gUnknown_8E835B4:: @ 8E835B4
+gBagBgPalette:: @ 8E835B4
.incbin "graphics/item_menu/bag_pal1.gbapal.lz" @ palette 1 (Boy + misc Pal)
.align 2
-gUnknown_8E83604:: @ 8E83604
+gBagBgPalette_FemaleOverride:: @ 8E83604
.incbin "graphics/item_menu/bag_pal2.gbapal.lz" @ palette 2 (Girl)
gUnknown_8E8362C:: @ 8E8362C
diff --git a/data/item_menu.s b/data/item_menu.s
deleted file mode 100644
index b5cc492e3..000000000
--- a/data/item_menu.s
+++ /dev/null
@@ -1,116 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/flags.h"
-#include "constants/moves.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_8452CF4:: @ 8452CF4
- .4byte 0x000001f0
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000011ed
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 30,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_8452CFC:: @ 8452CFC
- .4byte gUnknown_84162CD
- .4byte gUnknown_84162DE
- .4byte gUnknown_84162D3
-
-gUnknown_8452D08:: @ 8452D08
- .incbin "graphics/item_menu/bagmap_0.bin"
- .incbin "graphics/item_menu/bagmap_1.bin"
- .incbin "graphics/item_menu/bagmap_2.bin"
- .incbin "graphics/item_menu/bagmap_3.bin"
- .incbin "graphics/item_menu/bagmap_4.bin"
- .incbin "graphics/item_menu/bagmap_5.bin"
- .incbin "graphics/item_menu/bagmap_6.bin"
- .incbin "graphics/item_menu/bagmap_7.bin"
- .incbin "graphics/item_menu/bagmap_8.bin"
- .incbin "graphics/item_menu/bagmap_9.bin"
- .incbin "graphics/item_menu/bagmap_A.bin"
- .incbin "graphics/item_menu/bagmap_B.bin"
-
-gUnknown_8452EB8:: @ 8452EB8
- .4byte gOtherText_Use, sub_8109C50
- .4byte gOtherText_Toss, sub_8109CC0
- .4byte gUnknown_84161A9, sub_810A000
- .4byte gOtherText_Give, sub_810A0A8
- .4byte gFameCheckerText_Cancel, sub_810A2DC
- .4byte gOtherText_Use, sub_810A324
- .4byte gUnknown_84161E9, sub_8109C50
- .4byte gUnknown_84161F4, sub_8109C50
- .4byte gUnknown_84161F4, sub_810A324
- .4byte gUnknown_84161BC, sub_8109C50
- .4byte gUnknown_84161F9, sub_810A000
- .4byte gString_Dummy, NULL
-
-gUnknown_8452F18:: @ 8452F18
- .byte 0x00, 0x03, 0x01, 0x04
- .byte 0x00, 0x02, 0x04, 0x0b
- .byte 0x03, 0x01, 0x04, 0x0b
-
-gUnknown_8452F24:: @ 8452F24
- .byte 0x06, 0x03, 0x01, 0x04
-
-gUnknown_8452F28:: @ 8452F28
- .byte 0x03, 0x04
- .byte 0x04, 0x0b
- .byte 0x03, 0x04
-
-gUnknown_8452F2E:: @ 8452F2E
- .byte 0x07, 0x04
-
-gUnknown_8452F30:: @ 8452F30
- .byte 0x05, 0x04
-
-gUnknown_8452F32:: @ 8452F32
- .byte 0x04, 0x0b
-
-gUnknown_8452F34:: @ 8452F34
- .4byte sub_8109BB8
- .4byte sub_810A370
- .4byte sub_810A568
- .4byte sub_810AB40
- .4byte sub_810A468
- .4byte sub_8109BB8
- .4byte NULL
-
-gUnknown_8452F50:: @ 8452F50
- .4byte sub_8109EA8
- .4byte sub_8109DB0
-
-gUnknown_8452F58:: @ 8452F58
- .4byte sub_810A940
- .4byte sub_810A720
-
-gUnknown_8452F60:: @ 8452F60
- .string "{COLOR_HIGHLIGHT_SHADOW RED TRANSPARENT GREEN}$"
-
-gUnknown_8452F66:: @ 8452F66
- .string "{COLOR_HIGHLIGHT_SHADOW LIGHT_GRAY TRANSPARENT BLACK}$"
-
-gUnknown_8452F6C:: @ 8452F6C
- .byte 0, 8, 72, 1, 72, 72
- .2byte 0, 2, 111, 111
- .byte 0
- .align 2
-
-gUnknown_8452F7C:: @ 8452F7C
- .incbin "graphics/interface/select_button.4bpp"
diff --git a/data/maps/DiglettsCave_NorthEntrance/map.json b/data/maps/DiglettsCave_NorthEntrance/map.json
index b3571f8da..fa87e6f8a 100644
--- a/data/maps/DiglettsCave_NorthEntrance/map.json
+++ b/data/maps/DiglettsCave_NorthEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "DiglettsCave_NorthEntrance_EventScript_160EE8",
+ "script": "DiglettsCave_NorthEntrance_EventScript_Hiker",
"flag": "0"
}
],
diff --git a/data/maps/DiglettsCave_NorthEntrance/scripts.inc b/data/maps/DiglettsCave_NorthEntrance/scripts.inc
index a11fa4c3a..3bd05f5fd 100644
--- a/data/maps/DiglettsCave_NorthEntrance/scripts.inc
+++ b/data/maps/DiglettsCave_NorthEntrance/scripts.inc
@@ -1,6 +1,6 @@
DiglettsCave_NorthEntrance_MapScripts:: @ 8160EE7
.byte 0
-DiglettsCave_NorthEntrance_EventScript_160EE8:: @ 8160EE8
- msgbox gUnknown_817462C, MSGBOX_NPC
+DiglettsCave_NorthEntrance_EventScript_Hiker:: @ 8160EE8
+ msgbox DiglettsCave_NorthEntrance_RockTunnelPitchBlack, MSGBOX_NPC
end
diff --git a/data/maps/DiglettsCave_NorthEntrance/text.inc b/data/maps/DiglettsCave_NorthEntrance/text.inc
index 89dcb5a38..ac9c80755 100644
--- a/data/maps/DiglettsCave_NorthEntrance/text.inc
+++ b/data/maps/DiglettsCave_NorthEntrance/text.inc
@@ -1,4 +1,4 @@
-gUnknown_817462C:: @ 817462C
+DiglettsCave_NorthEntrance_RockTunnelPitchBlack:: @ 817462C
.string "I went inside ROCK TUNNEL, but it's\n"
.string "pitch-black and scary in there.\p"
.string "If I could get a POKéMON to use\n"
diff --git a/data/maps/DiglettsCave_SouthEntrance/map.json b/data/maps/DiglettsCave_SouthEntrance/map.json
index d713ceb6c..64f78c4bc 100644
--- a/data/maps/DiglettsCave_SouthEntrance/map.json
+++ b/data/maps/DiglettsCave_SouthEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "DiglettsCave_SouthEntrance_EventScript_160EFC",
+ "script": "DiglettsCave_SouthEntrance_EventScript_OldMan",
"flag": "0"
}
],
diff --git a/data/maps/DiglettsCave_SouthEntrance/scripts.inc b/data/maps/DiglettsCave_SouthEntrance/scripts.inc
index 2ee397c02..5851336cc 100644
--- a/data/maps/DiglettsCave_SouthEntrance/scripts.inc
+++ b/data/maps/DiglettsCave_SouthEntrance/scripts.inc
@@ -1,6 +1,6 @@
DiglettsCave_SouthEntrance_MapScripts:: @ 8160EFB
.byte 0
-DiglettsCave_SouthEntrance_EventScript_160EFC:: @ 8160EFC
- msgbox gUnknown_81746A7, MSGBOX_NPC
+DiglettsCave_SouthEntrance_EventScript_OldMan:: @ 8160EFC
+ msgbox DiglettsCave_SouthEntrance_Text_DiglettDugThisTunnel, MSGBOX_NPC
end
diff --git a/data/maps/DiglettsCave_SouthEntrance/text.inc b/data/maps/DiglettsCave_SouthEntrance/text.inc
index 4c97cdc0b..c0e8a86c0 100644
--- a/data/maps/DiglettsCave_SouthEntrance/text.inc
+++ b/data/maps/DiglettsCave_SouthEntrance/text.inc
@@ -1,4 +1,4 @@
-gUnknown_81746A7:: @ 81746A7
+DiglettsCave_SouthEntrance_Text_DiglettDugThisTunnel:: @ 81746A7
.string "Well, isn't this a surprise!\n"
.string "DIGLETT dug this long tunnel!\p"
.string "It goes right to VIRIDIAN CITY,\n"
diff --git a/data/maps/FourIsland/map.json b/data/maps/FourIsland/map.json
index f88bce64e..0a8842419 100644
--- a/data/maps/FourIsland/map.json
+++ b/data/maps/FourIsland/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "FourIsland_EventScript_167D55",
+ "script": "FourIsland_EventScript_DaycareMan",
"flag": "0"
},
{
diff --git a/data/maps/FourIsland/scripts.inc b/data/maps/FourIsland/scripts.inc
index 576e16390..85e1db283 100644
--- a/data/maps/FourIsland/scripts.inc
+++ b/data/maps/FourIsland/scripts.inc
@@ -69,66 +69,66 @@ Movement_167D52:: @ 8167D52
walk_in_place_fastest_right
step_end
-FourIsland_EventScript_167D55:: @ 8167D55
+FourIsland_EventScript_DaycareMan:: @ 8167D55
goto_if_questlog EventScript_ReleaseEnd
special sub_8112364
lock
faceplayer
special GetDaycareMonNicknames
specialvar VAR_RESULT, GetDaycareState
- compare VAR_RESULT, 1
- goto_if_eq EventScript_167D9B
- compare VAR_RESULT, 2
- goto_if_eq EventScript_167E0C
- compare VAR_RESULT, 3
- goto_if_eq EventScript_167E19
- msgbox gUnknown_81BF555
+ compare VAR_RESULT, DAYCARE_EGG_WAITING
+ goto_if_eq FourIsland_EventScript_DaycareEggWaiting
+ compare VAR_RESULT, DAYCARE_ONE_MON
+ goto_if_eq FourIsland_EventScript_CheckOnOneMon
+ compare VAR_RESULT, DAYCARE_TWO_MONS
+ goto_if_eq FourIsland_EventScript_CheckOnTwoMons
+ msgbox DayCare_Text_ImDaycareManSpeakToMyWife
release
end
-EventScript_167D9B:: @ 8167D9B
- msgbox gUnknown_81BF5E3, MSGBOX_YESNO
+FourIsland_EventScript_DaycareEggWaiting:: @ 8167D9B
+ msgbox DayCare_Text_DoYouWantEgg, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_167DD1
- msgbox gUnknown_81BF7B6, MSGBOX_YESNO
+ goto_if_eq FourIsland_EventScript_DaycareAcceptEgg
+ msgbox DayCare_Text_IWillKeepDoYouWantIt, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_167DD1
- msgbox gUnknown_81BF6CF
+ goto_if_eq FourIsland_EventScript_DaycareAcceptEgg
+ msgbox DayCare_Text_IllKeepIt
clearflag FLAG_PENDING_DAYCARE_EGG
special RejectEggFromDayCare
release
end
-EventScript_167DD1:: @ 8167DD1
+FourIsland_EventScript_DaycareAcceptEgg:: @ 8167DD1
specialvar VAR_RESULT, CalculatePlayerPartyCount
- compare VAR_RESULT, 6
- goto_if_ne EventScript_167DEB
- msgbox gUnknown_81BF6F0
+ compare VAR_RESULT, PARTY_SIZE
+ goto_if_ne FourIsland_EventScript_DaycareReceivedEgg
+ msgbox DayCare_Text_YouHaveNoRoomForIt
release
end
-EventScript_167DEB:: @ 8167DEB
+FourIsland_EventScript_DaycareReceivedEgg:: @ 8167DEB
textcolor 3
- message Text_1BF72A
+ message DayCare_Text_ReceivedEgg
call EventScript_1A6675
playfanfare MUS_FANFA1
waitfanfare
waitbuttonpress
- msgbox gUnknown_81BF755
+ msgbox DayCare_Text_TakeGoodCareOfIt
special GiveEggFromDaycare
clearflag FLAG_PENDING_DAYCARE_EGG
release
end
-EventScript_167E0C:: @ 8167E0C
+FourIsland_EventScript_CheckOnOneMon:: @ 8167E0C
special GetDaycareMonNicknames
- msgbox gUnknown_81BF69A
+ msgbox DayCare_Text_YourMonIsDoingFine
release
end
-EventScript_167E19:: @ 8167E19
+FourIsland_EventScript_CheckOnTwoMons:: @ 8167E19
special GetDaycareMonNicknames
- msgbox gUnknown_81BF789
+ msgbox DayCare_Text_YourMonsAreDoingFine
special SetDaycareCompatibilityString
special Special_ShowStringVar4AsFieldMessage
waitmessage
diff --git a/data/maps/FourIsland_PokemonDayCare/map.json b/data/maps/FourIsland_PokemonDayCare/map.json
index d6fd3c4f3..38520cc63 100644
--- a/data/maps/FourIsland_PokemonDayCare/map.json
+++ b/data/maps/FourIsland_PokemonDayCare/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "FourIsland_PokemonDayCare_EventScript_171940",
+ "script": "FourIsland_PokemonDayCare_EventScript_DaycareWoman",
"flag": "0"
}
],
diff --git a/data/maps/FourIsland_PokemonDayCare/scripts.inc b/data/maps/FourIsland_PokemonDayCare/scripts.inc
index d158be282..c6cf95b20 100644
--- a/data/maps/FourIsland_PokemonDayCare/scripts.inc
+++ b/data/maps/FourIsland_PokemonDayCare/scripts.inc
@@ -1,164 +1,164 @@
FourIsland_PokemonDayCare_MapScripts:: @ 817193F
.byte 0
-FourIsland_PokemonDayCare_EventScript_171940:: @ 8171940
+FourIsland_PokemonDayCare_EventScript_DaycareWoman:: @ 8171940
goto_if_questlog EventScript_ReleaseEnd
lock
faceplayer
specialvar VAR_RESULT, GetDaycareState
- compare VAR_RESULT, 1
- goto_if_eq EventScript_171A2E
- compare VAR_RESULT, 2
- goto_if_eq EventScript_171A52
- compare VAR_RESULT, 3
- goto_if_eq EventScript_171B86
- msgbox gUnknown_81BF7E4, MSGBOX_YESNO
+ compare VAR_RESULT, DAYCARE_EGG_WAITING
+ goto_if_eq FourIsland_PokemonDayCare_EggWaiting
+ compare VAR_RESULT, DAYCARE_ONE_MON
+ goto_if_eq FourIsland_PokemonDayCare_OneMonInDaycare
+ compare VAR_RESULT, DAYCARE_TWO_MONS
+ goto_if_eq FourIsland_PokemonDayCare_TwoMonsInDaycare
+ msgbox DayCare_Text_WouldYouLikeUsToRaiseMon, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171993
- msgbox gUnknown_81BF916
+ goto_if_eq FourIsland_PokemonDayCare_GiveMonToRaise
+ msgbox DayCare_Text_FineThenComeAgain
release
end
-EventScript_171993:: @ 8171993
+FourIsland_PokemonDayCare_GiveMonToRaise:: @ 8171993
specialvar VAR_RESULT, CountPartyNonEggMons
compare VAR_RESULT, 1
- goto_if_eq EventScript_171A1A
- msgbox gUnknown_81BF839
+ goto_if_eq FourIsland_PokemonDayCare_OnlyOneMonInParty
+ msgbox DayCare_Text_WhichMonShouldWeRaise
fadescreen FADE_TO_BLACK
special ChooseSendDaycareMon
waitstate
- compare VAR_0x8004, 6
- goto_if_ge EventScript_1719F7
+ compare VAR_0x8004, PARTY_SIZE
+ goto_if_ge FourIsland_PokemonDayCare_ComeAgain
specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
compare VAR_RESULT, 0
- goto_if_eq EventScript_171A24
- specialvar VAR_0x8005, GetSelectedMonNickAndSpecies
+ goto_if_eq FourIsland_PokemonDayCare_OnlyOneAliveMonInParty
+ specialvar VAR_0x8005, GetSelectedMonNicknameAndSpecies
waitse
playmoncry VAR_0x8005, 0
- msgbox gUnknown_81BF860
+ msgbox DayCare_Text_WellRaiseYourMon
waitmoncry
special StoreSelectedPokemonInDaycare
incrementgamestat GAME_STAT_USED_DAYCARE
specialvar VAR_RESULT, GetDaycareState
- compare VAR_RESULT, 2
- goto_if_eq EventScript_171A01
+ compare VAR_RESULT, DAYCARE_ONE_MON
+ goto_if_eq FourIsland_PokemonDayCare_CanRaiseOneMore
release
end
-EventScript_1719F7:: @ 81719F7
- msgbox gUnknown_81BF976
+FourIsland_PokemonDayCare_ComeAgain:: @ 81719F7
+ msgbox DayCare_Text_ComeAgain
release
end
-EventScript_171A01:: @ 8171A01
- msgbox gUnknown_81BF89F, MSGBOX_YESNO
+FourIsland_PokemonDayCare_CanRaiseOneMore:: @ 8171A01
+ msgbox DayCare_Text_WeCanRaiseOneMore, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171993
- goto EventScript_1719F7
+ goto_if_eq FourIsland_PokemonDayCare_GiveMonToRaise
+ goto FourIsland_PokemonDayCare_ComeAgain
end
-EventScript_171A1A:: @ 8171A1A
- msgbox gUnknown_81BFAAD
+FourIsland_PokemonDayCare_OnlyOneMonInParty:: @ 8171A1A
+ msgbox DayCare_Text_YouHaveJustOneMon
release
end
-EventScript_171A24:: @ 8171A24
- msgbox gUnknown_81BFB09
+FourIsland_PokemonDayCare_OnlyOneAliveMonInParty:: @ 8171A24
+ msgbox DayCare_Text_WhatWillYouBattleWith
release
end
-EventScript_171A2E:: @ 8171A2E
- msgbox gUnknown_81BF8F6
+FourIsland_PokemonDayCare_EggWaiting:: @ 8171A2E
+ msgbox DayCare_Text_HusbandWasLookingForYou
release
end
-EventScript_171A38:: @ 8171A38
- msgbox gUnknown_81BF9CC
+FourIsland_PokemonDayCare_MonHasGrownXLevels:: @ 8171A38
+ msgbox DayCare_Text_YourMonHasGrownXLevels
return
-EventScript_171A41:: @ 8171A41
+FourIsland_PokemonDayCare_DisplayLevelsGained:: @ 8171A41
specialvar VAR_RESULT, GetNumLevelsGainedFromDaycare
compare VAR_RESULT, 0
- call_if_ne EventScript_171A38
+ call_if_ne FourIsland_PokemonDayCare_MonHasGrownXLevels
return
-EventScript_171A52:: @ 8171A52
- msgbox gUnknown_81BF988
+FourIsland_PokemonDayCare_OneMonInDaycare:: @ 8171A52
+ msgbox DayCare_Text_GoodToSeeYou
setvar VAR_0x8004, 0
- call EventScript_171A41
- msgbox gUnknown_81BF89F, MSGBOX_YESNO
+ call FourIsland_PokemonDayCare_DisplayLevelsGained
+ msgbox DayCare_Text_WeCanRaiseOneMore, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171993
- msgbox gUnknown_81BFAE8, MSGBOX_YESNO
+ goto_if_eq FourIsland_PokemonDayCare_GiveMonToRaise
+ msgbox DayCare_Text_TakeYourMonBack, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171A90
- goto EventScript_1719F7
+ goto_if_eq FourIsland_PokemonDayCare_TryRetrieveMon
+ goto FourIsland_PokemonDayCare_ComeAgain
end
-EventScript_171A90:: @ 8171A90
+FourIsland_PokemonDayCare_TryRetrieveMon:: @ 8171A90
specialvar VAR_RESULT, CalculatePlayerPartyCount
- compare VAR_RESULT, 6
- goto_if_eq EventScript_171B67
+ compare VAR_RESULT, PARTY_SIZE
+ goto_if_eq FourIsland_PokemonDayCare_NoRoomInParty
specialvar VAR_RESULT, GetDaycareState
setvar VAR_0x8004, 0
- compare VAR_RESULT, 2
- goto_if_eq EventScript_171ACF
+ compare VAR_RESULT, DAYCARE_ONE_MON
+ goto_if_eq FourIsland_PokemonDayCare_CostPrompt
special ShowDaycareLevelMenu
waitstate
copyvar VAR_0x8004, VAR_RESULT
- compare VAR_RESULT, 2
- goto_if_eq EventScript_1719F7
- goto EventScript_171ACF
+ compare VAR_RESULT, DAYCARE_EXITED_LEVEL_MENU
+ goto_if_eq FourIsland_PokemonDayCare_ComeAgain
+ goto FourIsland_PokemonDayCare_CostPrompt
end
-EventScript_171ACF:: @ 8171ACF
+FourIsland_PokemonDayCare_CostPrompt:: @ 8171ACF
special GetDaycareCost
- msgbox gUnknown_81BFA3B, MSGBOX_YESNO
+ msgbox DayCare_Text_ItWillCostX, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171AEB
- goto EventScript_1719F7
+ goto_if_eq FourIsland_PokemonDayCare_CheckEnoughMoney
+ goto FourIsland_PokemonDayCare_ComeAgain
end
-EventScript_171AEB:: @ 8171AEB
+FourIsland_PokemonDayCare_CheckEnoughMoney:: @ 8171AEB
specialvar VAR_RESULT, IsEnoughForCostInVar0x8005
- compare VAR_RESULT, 1
- goto_if_eq EventScript_171B05
- msgbox gUnknown_81BF932
+ compare VAR_RESULT, TRUE
+ goto_if_eq FourIsland_PokemonDayCare_RetrieveMon
+ msgbox DayCare_Text_NotEnoughMoney
release
end
-EventScript_171B05:: @ 8171B05
- applymovement 1, Movement_171B71
+FourIsland_PokemonDayCare_RetrieveMon:: @ 8171B05
+ applymovement 1, FourIsland_PokemonDayCare_Movement_RetrieveMon
waitmovement 0
specialvar VAR_RESULT, TakePokemonFromDaycare
special SubtractMoneyFromVar0x8005
playse SE_REGI
- msgbox gUnknown_81BFA67
+ msgbox DayCare_Text_HeresYourMon
waitse
playmoncry VAR_RESULT, 0
textcolor 3
- msgbox gUnknown_81BFA85
+ msgbox DayCare_Text_TookBackMon
call EventScript_1A6675
waitmoncry
specialvar VAR_RESULT, GetDaycareState
- compare VAR_RESULT, 2
- goto_if_eq EventScript_171B4E
- goto EventScript_1719F7
+ compare VAR_RESULT, DAYCARE_ONE_MON
+ goto_if_eq FourIsland_PokemonDayCare_AskRetrieveOtherMon
+ goto FourIsland_PokemonDayCare_ComeAgain
end
-EventScript_171B4E:: @ 8171B4E
- msgbox gUnknown_81BF94F, MSGBOX_YESNO
+FourIsland_PokemonDayCare_AskRetrieveOtherMon:: @ 8171B4E
+ msgbox DayCare_Text_TakeOtherOneBackToo, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171A90
- goto EventScript_1719F7
+ goto_if_eq FourIsland_PokemonDayCare_TryRetrieveMon
+ goto FourIsland_PokemonDayCare_ComeAgain
end
-EventScript_171B67:: @ 8171B67
- msgbox gUnknown_81BF9EF
+FourIsland_PokemonDayCare_NoRoomInParty:: @ 8171B67
+ msgbox DayCare_Text_YourPartyIsFull
release
end
-Movement_171B71:: @ 8171B71
+FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71
delay_16
delay_16
face_right
@@ -180,30 +180,32 @@ Movement_171B71:: @ 8171B71
walk_slowest_down
step_end
-EventScript_171B85:: @ 8171B85
+@ Unused. Possibly a commented script, or a typo end added to the above Movement script
+FourIsland_PokemonDayCare_EventScript_UnusedEnd:: @ 8171B85
end
-EventScript_171B86:: @ 8171B86
- msgbox gUnknown_81BF988
+FourIsland_PokemonDayCare_TwoMonsInDaycare:: @ 8171B86
+ msgbox DayCare_Text_GoodToSeeYou
setvar VAR_0x8004, 0
- call EventScript_171A41
+ call FourIsland_PokemonDayCare_DisplayLevelsGained
setvar VAR_0x8004, 1
- call EventScript_171A41
- msgbox gUnknown_81BFAE8, MSGBOX_YESNO
+ call FourIsland_PokemonDayCare_DisplayLevelsGained
+ msgbox DayCare_Text_TakeYourMonBack, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_171A90
- msgbox gUnknown_81BF976
+ goto_if_eq FourIsland_PokemonDayCare_TryRetrieveMon
+ msgbox DayCare_Text_ComeAgain
release
end
-EventScript_171BBF:: @ 8171BBF
+@ Unused
+FourIsland_PokemonDayCare_EventScript_UnusedRetrieveMon:: @ 8171BBF
special ShowDaycareLevelMenu
waitstate
compare VAR_RESULT, 2
- goto_if_eq EventScript_1719F7
+ goto_if_eq FourIsland_PokemonDayCare_ComeAgain
copyvar VAR_0x8004, VAR_RESULT
specialvar VAR_RESULT, TakePokemonFromDaycare
- msgbox gUnknown_81BFA67
- msgbox gUnknown_81BF976
+ msgbox DayCare_Text_HeresYourMon
+ msgbox DayCare_Text_ComeAgain
release
end
diff --git a/data/maps/Route22_NorthEntrance/map.json b/data/maps/Route22_NorthEntrance/map.json
index 665477288..f8f624106 100644
--- a/data/maps/Route22_NorthEntrance/map.json
+++ b/data/maps/Route22_NorthEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route22_NorthEntrance_EventScript_1704FC",
+ "script": "Route22_NorthEntrance_EventScript_BoulderBadgeGuard",
"flag": "0"
}
],
@@ -65,7 +65,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 0,
- "script": "Route22_NorthEntrance_EventScript_17050D"
+ "script": "Route22_NorthEntrance_EventScript_BoulderBadgeGuardTrigger"
}
],
"bg_events": []
diff --git a/data/maps/Route22_NorthEntrance/scripts.inc b/data/maps/Route22_NorthEntrance/scripts.inc
index afbfbb165..edd436b48 100644
--- a/data/maps/Route22_NorthEntrance/scripts.inc
+++ b/data/maps/Route22_NorthEntrance/scripts.inc
@@ -1,18 +1,18 @@
Route22_NorthEntrance_MapScripts:: @ 81704FB
.byte 0
-Route22_NorthEntrance_EventScript_1704FC:: @ 81704FC
+Route22_NorthEntrance_EventScript_BoulderBadgeGuard:: @ 81704FC
lock
faceplayer
setvar VAR_TEMP_1, 1
- getstdstring 0, 15
- goto EventScript_1A7803
+ getstdstring 0, STDSTRING_BOULDER_BADGE
+ goto Route22_NorthEntrance_EventScript_BadgeGuard
end
-Route22_NorthEntrance_EventScript_17050D:: @ 817050D
+Route22_NorthEntrance_EventScript_BoulderBadgeGuardTrigger:: @ 817050D
lockall
setvar VAR_TEMP_1, 1
setvar VAR_0x8009, 1
- getstdstring 0, 15
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_BOULDER_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
diff --git a/data/maps/Route23/map.json b/data/maps/Route23/map.json
index 073a4a17c..36bee2780 100644
--- a/data/maps/Route23/map.json
+++ b/data/maps/Route23/map.json
@@ -34,7 +34,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_16850C",
+ "script": "Route23_EventScript_CascadeBadgeGuard",
"flag": "0"
},
{
@@ -47,7 +47,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_16851D",
+ "script": "Route23_EventScript_ThunderBadgeGuard",
"flag": "0"
},
{
@@ -60,7 +60,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_16852E",
+ "script": "Route23_EventScript_RainbowBadgeGuard",
"flag": "0"
},
{
@@ -73,7 +73,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_16853F",
+ "script": "Route23_EventScript_SoulBadgeGuard",
"flag": "0"
},
{
@@ -86,7 +86,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_168550",
+ "script": "Route23_EventScript_MarshBadgeGuard",
"flag": "0"
},
{
@@ -99,7 +99,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_168561",
+ "script": "Route23_EventScript_VolcanoBadgeGuard",
"flag": "0"
},
{
@@ -112,7 +112,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route23_EventScript_168572",
+ "script": "Route23_EventScript_EarthBadgeGuard",
"flag": "0"
}
],
@@ -154,7 +154,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 1,
- "script": "Route23_EventScript_168583"
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -163,7 +163,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 2,
- "script": "Route23_EventScript_168598"
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -172,7 +172,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 3,
- "script": "Route23_EventScript_1685AD"
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -181,7 +181,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -190,7 +190,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -199,7 +199,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 6,
- "script": "Route23_EventScript_1685EC"
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -208,7 +208,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -217,7 +217,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -226,7 +226,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -235,7 +235,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -244,7 +244,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -253,7 +253,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -262,7 +262,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -271,7 +271,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 7,
- "script": "Route23_EventScript_168601"
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -280,7 +280,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 6,
- "script": "Route23_EventScript_1685EC"
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -289,7 +289,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 6,
- "script": "Route23_EventScript_1685EC"
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -298,7 +298,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 6,
- "script": "Route23_EventScript_1685EC"
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -307,7 +307,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -316,7 +316,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -325,7 +325,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -334,7 +334,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -343,7 +343,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -352,7 +352,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 5,
- "script": "Route23_EventScript_1685D7"
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -361,7 +361,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 2,
- "script": "Route23_EventScript_168598"
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -370,7 +370,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 2,
- "script": "Route23_EventScript_168598"
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -379,7 +379,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 2,
- "script": "Route23_EventScript_168598"
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -388,7 +388,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 3,
- "script": "Route23_EventScript_1685AD"
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -397,7 +397,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 3,
- "script": "Route23_EventScript_1685AD"
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -406,7 +406,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 3,
- "script": "Route23_EventScript_1685AD"
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -415,7 +415,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -424,7 +424,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -433,7 +433,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -442,7 +442,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -451,7 +451,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -460,7 +460,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -469,7 +469,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -478,7 +478,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -487,7 +487,7 @@
"elevation": 1,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 4,
- "script": "Route23_EventScript_1685C2"
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -496,7 +496,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 1,
- "script": "Route23_EventScript_168583"
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -505,7 +505,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 1,
- "script": "Route23_EventScript_168583"
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -514,7 +514,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 1,
- "script": "Route23_EventScript_168583"
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
},
{
"type": "trigger",
@@ -523,7 +523,7 @@
"elevation": 0,
"var": "VAR_MAP_SCENE_ROUTE23",
"var_value": 1,
- "script": "Route23_EventScript_168583"
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
}
],
"bg_events": [
@@ -612,7 +612,7 @@
"x": 3,
"y": 31,
"elevation": 0,
- "script": "Route23_EventScript_168616"
+ "script": "Route23_EventScript_VictoryRoadGateSign"
}
]
}
diff --git a/data/maps/Route23/scripts.inc b/data/maps/Route23/scripts.inc
index b5c8da4f3..fd6c792f0 100644
--- a/data/maps/Route23/scripts.inc
+++ b/data/maps/Route23/scripts.inc
@@ -11,118 +11,118 @@ Route23_OnTransition:: @ 81684F1
setvar VAR_MAP_SCENE_VICTORY_ROAD_3F, 0
end
-Route23_EventScript_16850C:: @ 816850C
+Route23_EventScript_CascadeBadgeGuard:: @ 816850C
lock
faceplayer
setvar VAR_TEMP_1, 2
- getstdstring 0, 16
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_CASCADE_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_16851D:: @ 816851D
+Route23_EventScript_ThunderBadgeGuard:: @ 816851D
lock
faceplayer
setvar VAR_TEMP_1, 3
- getstdstring 0, 17
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_THUNDER_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_16852E:: @ 816852E
+Route23_EventScript_RainbowBadgeGuard:: @ 816852E
lock
faceplayer
setvar VAR_TEMP_1, 4
- getstdstring 0, 18
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_RAINBOW_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_16853F:: @ 816853F
+Route23_EventScript_SoulBadgeGuard:: @ 816853F
lock
faceplayer
setvar VAR_TEMP_1, 5
- getstdstring 0, 19
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_SOUL_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_168550:: @ 8168550
+Route23_EventScript_MarshBadgeGuard:: @ 8168550
lock
faceplayer
setvar VAR_TEMP_1, 6
- getstdstring 0, 20
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_MARSH_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_168561:: @ 8168561
+Route23_EventScript_VolcanoBadgeGuard:: @ 8168561
lock
faceplayer
setvar VAR_TEMP_1, 7
- getstdstring 0, 21
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_VOLCANO_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_168572:: @ 8168572
+Route23_EventScript_EarthBadgeGuard:: @ 8168572
lock
faceplayer
setvar VAR_TEMP_1, 8
- getstdstring 0, 22
- goto EventScript_1A786C
+ getstdstring 0, STDSTRING_EARTH_BADGE
+ goto Route23_EventScript_BadgeGuard
end
-Route23_EventScript_168583:: @ 8168583
+Route23_EventScript_CascadeBadgeGuardTrigger:: @ 8168583
lockall
setvar VAR_TEMP_1, 2
setvar VAR_0x8009, 1
- getstdstring 0, 16
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_CASCADE_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_168598:: @ 8168598
+Route23_EventScript_ThunderBadgeGuardTrigger:: @ 8168598
lockall
setvar VAR_TEMP_1, 3
setvar VAR_0x8009, 2
- getstdstring 0, 17
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_THUNDER_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_1685AD:: @ 81685AD
+Route23_EventScript_RainbowBadgeGuardTrigger:: @ 81685AD
lockall
setvar VAR_TEMP_1, 4
setvar VAR_0x8009, 3
- getstdstring 0, 18
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_RAINBOW_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_1685C2:: @ 81685C2
+Route23_EventScript_SoulBadgeGuardTrigger:: @ 81685C2
lockall
setvar VAR_TEMP_1, 5
setvar VAR_0x8009, 4
- getstdstring 0, 19
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_SOUL_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_1685D7:: @ 81685D7
+Route23_EventScript_MarshBadgeGuardTrigger:: @ 81685D7
lockall
setvar VAR_TEMP_1, 6
setvar VAR_0x8009, 5
- getstdstring 0, 20
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_MARSH_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_1685EC:: @ 81685EC
+Route23_EventScript_VolcanoBadgeGuardTrigger:: @ 81685EC
lockall
setvar VAR_TEMP_1, 7
setvar VAR_0x8009, 6
- getstdstring 0, 21
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_VOLCANO_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_168601:: @ 8168601
+Route23_EventScript_EarthBadgeGuardTrigger:: @ 8168601
lockall
setvar VAR_TEMP_1, 8
setvar VAR_0x8009, 7
- getstdstring 0, 22
- goto EventScript_1A796E
+ getstdstring 0, STDSTRING_EARTH_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
end
-Route23_EventScript_168616:: @ 8168616
- msgbox gUnknown_8188C19, MSGBOX_SIGN
+Route23_EventScript_VictoryRoadGateSign:: @ 8168616
+ msgbox Route23_Text_VictoryRoadGateSign, MSGBOX_SIGN
end
diff --git a/data/maps/Route23/text.inc b/data/maps/Route23/text.inc
index 6bdcaf47d..7429303cd 100644
--- a/data/maps/Route23/text.inc
+++ b/data/maps/Route23/text.inc
@@ -1,4 +1,4 @@
-gUnknown_8188C19:: @ 8188C19
+Route23_Text_VictoryRoadGateSign:: @ 8188C19
.string "VICTORY ROAD GATE -\n"
.string "POKéMON LEAGUE$"
diff --git a/data/maps/Route5_PokemonDayCare/map.json b/data/maps/Route5_PokemonDayCare/map.json
index 11c53b635..52cbb04ea 100644
--- a/data/maps/Route5_PokemonDayCare/map.json
+++ b/data/maps/Route5_PokemonDayCare/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "Route5_PokemonDayCare_EventScript_1BF398",
+ "script": "Route5_PokemonDayCare_EventScript_DaycareMan",
"flag": "0"
}
],
diff --git a/data/maps/Route5_PokemonDayCare/scripts.inc b/data/maps/Route5_PokemonDayCare/scripts.inc
index ebe6a8386..0f2ceb484 100644
--- a/data/maps/Route5_PokemonDayCare/scripts.inc
+++ b/data/maps/Route5_PokemonDayCare/scripts.inc
@@ -1,2 +1,4 @@
+@ Handled by data/scripts/day_care.inc
+
Route5_PokemonDayCare_MapScripts:: @ 816F8FF
.byte 0
diff --git a/data/maps/Route5_PokemonDayCare/text.inc b/data/maps/Route5_PokemonDayCare/text.inc
new file mode 100644
index 000000000..cada12ea5
--- /dev/null
+++ b/data/maps/Route5_PokemonDayCare/text.inc
@@ -0,0 +1,60 @@
+Route5_PokemonDayCare_Text_WantMeToRaiseMon:: @ 819DD66
+ .string "I run the DAY-CARE service.\p"
+ .string "Would you like me to raise one of\n"
+ .string "your POKéMON?$"
+
+Route5_PokemonDayCare_Text_ComeAgain:: @ 819DDB2
+ .string "Come again.$"
+
+Route5_PokemonDayCare_Text_WhichMonShouldIRaise:: @ 819DDBE
+ .string "Which POKéMON should I raise?$"
+
+Route5_PokemonDayCare_Text_ComeAnytimeYouLike:: @ 819DDDC
+ .string "Fine.\n"
+ .string "Come anytime you like.$"
+
+Route5_PokemonDayCare_Text_LookAfterMonForAWhile:: @ 819DDF9
+ .string "Fine, I'll look after your\n"
+ .string "{STR_VAR_1} for a while.$"
+
+Route5_PokemonDayCare_Text_ComeSeeMeInAWhile:: @ 819DE24
+ .string "Come see me in a while.$"
+
+Route5_PokemonDayCare_Text_MonNeedsToSpendMoreTime:: @ 819DE3C
+ .string "You're back already?\p"
+ .string "Your {STR_VAR_1} needs to spend\n"
+ .string "some more time with me.$"
+
+Route5_PokemonDayCare_Text_OweMeXForMonsReturn:: @ 819DE80
+ .string "You owe me ¥{STR_VAR_2} for the return\n"
+ .string "of this POKéMON.$"
+
+Route5_PokemonDayCare_Text_ThankYouHeresMon:: @ 819DEAF
+ .string "Thank you!\n"
+ .string "Here's your POKéMON.$"
+
+Route5_PokemonDayCare_Text_PlayerGotMonBack:: @ 819DECF
+ .string "{PLAYER} got {STR_VAR_1} back\n"
+ .string "from the DAY-CARE MAN.$"
+
+Route5_PokemonDayCare_Text_OnlyHaveOneMonWithYou:: @ 819DEF5
+ .string "Oh? You only have one POKéMON\n"
+ .string "with you.$"
+
+Route5_PokemonDayCare_Text_WhatWillYouBattleWith:: @ 819DF1D
+ .string "If you leave me that POKéMON,\n"
+ .string "what will you battle with?$"
+
+Route5_PokemonDayCare_Text_MonHasGrownByXLevels:: @ 819DF56
+ .string "Your {STR_VAR_1} has grown a lot.\n"
+ .string "Yes, quite a lot, I'd say.\p"
+ .string "Let me see…\n"
+ .string "By level, it's grown by {STR_VAR_2}.\p"
+ .string "Aren't I great?$"
+
+Route5_PokemonDayCare_Text_YouveGotNoRoomForIt:: @ 819DFC2
+ .string "You can't take this POKéMON back\n"
+ .string "if you've got no room for it.$"
+
+Route5_PokemonDayCare_Text_DontHaveEnoughMoney:: @ 819E001
+ .string "You don't have enough money.$"
diff --git a/data/maps/Route5_SouthEntrance/text.inc b/data/maps/Route5_SouthEntrance/text.inc
index 079423f34..749bcabe5 100644
--- a/data/maps/Route5_SouthEntrance/text.inc
+++ b/data/maps/Route5_SouthEntrance/text.inc
@@ -1,64 +1,3 @@
-Text_19DD66:: @ 819DD66
- .string "I run the DAY-CARE service.\p"
- .string "Would you like me to raise one of\n"
- .string "your POKéMON?$"
-
-Text_19DDB2:: @ 819DDB2
- .string "Come again.$"
-
-Text_19DDBE:: @ 819DDBE
- .string "Which POKéMON should I raise?$"
-
-Text_19DDDC:: @ 819DDDC
- .string "Fine.\n"
- .string "Come anytime you like.$"
-
-Text_19DDF9:: @ 819DDF9
- .string "Fine, I'll look after your\n"
- .string "{STR_VAR_1} for a while.$"
-
-Text_19DE24:: @ 819DE24
- .string "Come see me in a while.$"
-
-Text_19DE3C:: @ 819DE3C
- .string "You're back already?\p"
- .string "Your {STR_VAR_1} needs to spend\n"
- .string "some more time with me.$"
-
-Text_19DE80:: @ 819DE80
- .string "You owe me ¥{STR_VAR_2} for the return\n"
- .string "of this POKéMON.$"
-
-Text_19DEAF:: @ 819DEAF
- .string "Thank you!\n"
- .string "Here's your POKéMON.$"
-
-Text_19DECF:: @ 819DECF
- .string "{PLAYER} got {STR_VAR_1} back\n"
- .string "from the DAY-CARE MAN.$"
-
-Text_19DEF5:: @ 819DEF5
- .string "Oh? You only have one POKéMON\n"
- .string "with you.$"
-
-Text_19DF1D:: @ 819DF1D
- .string "If you leave me that POKéMON,\n"
- .string "what will you battle with?$"
-
-Text_19DF56:: @ 819DF56
- .string "Your {STR_VAR_1} has grown a lot.\n"
- .string "Yes, quite a lot, I'd say.\p"
- .string "Let me see…\n"
- .string "By level, it's grown by {STR_VAR_2}.\p"
- .string "Aren't I great?$"
-
-Text_19DFC2:: @ 819DFC2
- .string "You can't take this POKéMON back\n"
- .string "if you've got no room for it.$"
-
-Text_19E001:: @ 819E001
- .string "You don't have enough money.$"
-
Text_19E01E:: @ 819E01E
.string "きみの\n"
.string "みてみるかね?$"
diff --git a/data/maps/UndergroundPath_EastEntrance/map.json b/data/maps/UndergroundPath_EastEntrance/map.json
index 3e600d6ad..8a82619c0 100644
--- a/data/maps/UndergroundPath_EastEntrance/map.json
+++ b/data/maps/UndergroundPath_EastEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UndergroundPath_EastEntrance_EventScript_160EDE",
+ "script": "UndergroundPath_EastEntrance_EventScript_Woman",
"flag": "0"
}
],
diff --git a/data/maps/UndergroundPath_EastEntrance/scripts.inc b/data/maps/UndergroundPath_EastEntrance/scripts.inc
index 28a211c6f..88bc29730 100644
--- a/data/maps/UndergroundPath_EastEntrance/scripts.inc
+++ b/data/maps/UndergroundPath_EastEntrance/scripts.inc
@@ -1,6 +1,6 @@
UndergroundPath_EastEntrance_MapScripts:: @ 8160EDD
.byte 0
-UndergroundPath_EastEntrance_EventScript_160EDE:: @ 8160EDE
- msgbox gUnknown_81745D9, MSGBOX_NPC
+UndergroundPath_EastEntrance_EventScript_Woman:: @ 8160EDE
+ msgbox UndergroundPath_EastEntrance_Text_DoYouGoToCeladonDeptStore, MSGBOX_NPC
end
diff --git a/data/maps/UndergroundPath_EastEntrance/text.inc b/data/maps/UndergroundPath_EastEntrance/text.inc
index f44fb5a21..7333a73cc 100644
--- a/data/maps/UndergroundPath_EastEntrance/text.inc
+++ b/data/maps/UndergroundPath_EastEntrance/text.inc
@@ -1,4 +1,4 @@
-gUnknown_81745D9:: @ 81745D9
+UndergroundPath_EastEntrance_Text_DoYouGoToCeladonDeptStore:: @ 81745D9
.string "The DEPARTMENT STORE in CELADON\n"
.string "has a great selection.\p"
.string "Do you go there very often?$"
diff --git a/data/maps/UndergroundPath_NorthEntrance/map.json b/data/maps/UndergroundPath_NorthEntrance/map.json
index 18939c721..d5fbc5df9 100644
--- a/data/maps/UndergroundPath_NorthEntrance/map.json
+++ b/data/maps/UndergroundPath_NorthEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UndergroundPath_NorthEntrance_EventScript_160E39",
+ "script": "UndergroundPath_NorthEntrance_EventScript_Saige",
"flag": "0"
}
],
diff --git a/data/maps/UndergroundPath_NorthEntrance/scripts.inc b/data/maps/UndergroundPath_NorthEntrance/scripts.inc
index a06a23659..70a690828 100644
--- a/data/maps/UndergroundPath_NorthEntrance/scripts.inc
+++ b/data/maps/UndergroundPath_NorthEntrance/scripts.inc
@@ -1,39 +1,39 @@
UndergroundPath_NorthEntrance_MapScripts:: @ 8160E38
.byte 0
-UndergroundPath_NorthEntrance_EventScript_160E39:: @ 8160E39
+UndergroundPath_NorthEntrance_EventScript_Saige:: @ 8160E39
lock
faceplayer
setvar VAR_0x8008, INGAME_TRADE_NIDORAN
call EventScript_GetInGameTradeSpeciesInfo
- goto_if_set FLAG_DID_MS_NIDO_TRADE, EventScript_160EAB
+ goto_if_set FLAG_DID_MS_NIDO_TRADE, UndergroundPath_NorthEntrance_EventScript_AlreadyTraded
msgbox gUnknown_81A5AD6, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_160E93
+ goto_if_eq UndergroundPath_NorthEntrance_EventScript_DeclineTrade
call EventScript_ChooseMonForInGameTrade
compare VAR_0x8004, PARTY_SIZE
- goto_if_ge EventScript_160E93
+ goto_if_ge UndergroundPath_NorthEntrance_EventScript_DeclineTrade
call EventScript_GetInGameTradeSpecies
compare VAR_RESULT, VAR_0x8009
- goto_if_ne EventScript_160E9D
+ goto_if_ne UndergroundPath_NorthEntrance_EventScript_NotRequestedMon
call EventScript_DoInGameTrade
msgbox gUnknown_81A5B4A
setflag FLAG_DID_MS_NIDO_TRADE
release
end
-EventScript_160E93:: @ 8160E93
+UndergroundPath_NorthEntrance_EventScript_DeclineTrade:: @ 8160E93
msgbox gUnknown_81A5B08
release
end
-EventScript_160E9D:: @ 8160E9D
+UndergroundPath_NorthEntrance_EventScript_NotRequestedMon:: @ 8160E9D
getspeciesname 0, VAR_0x8009
msgbox gUnknown_81A5B18
release
end
-EventScript_160EAB:: @ 8160EAB
+UndergroundPath_NorthEntrance_EventScript_AlreadyTraded:: @ 8160EAB
msgbox gUnknown_81A5B60
release
end
diff --git a/data/maps/UndergroundPath_SouthEntrance/map.json b/data/maps/UndergroundPath_SouthEntrance/map.json
index e58624d4e..604e544cd 100644
--- a/data/maps/UndergroundPath_SouthEntrance/map.json
+++ b/data/maps/UndergroundPath_SouthEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UndergroundPath_SouthEntrance_EventScript_160EC0",
+ "script": "UndergroundPath_SouthEntrance_EventScript_Woman",
"flag": "0"
}
],
diff --git a/data/maps/UndergroundPath_SouthEntrance/scripts.inc b/data/maps/UndergroundPath_SouthEntrance/scripts.inc
index 1623d16d7..1bc0b2a31 100644
--- a/data/maps/UndergroundPath_SouthEntrance/scripts.inc
+++ b/data/maps/UndergroundPath_SouthEntrance/scripts.inc
@@ -1,6 +1,6 @@
UndergroundPath_SouthEntrance_MapScripts:: @ 8160EBF
.byte 0
-UndergroundPath_SouthEntrance_EventScript_160EC0:: @ 8160EC0
- msgbox gUnknown_8174559, MSGBOX_NPC
+UndergroundPath_SouthEntrance_EventScript_Woman:: @ 8160EC0
+ msgbox UndergroundPath_SouthEntrance_Text_PeopleLoseThingsInTheDarkness, MSGBOX_NPC
end
diff --git a/data/maps/UndergroundPath_SouthEntrance/text.inc b/data/maps/UndergroundPath_SouthEntrance/text.inc
index 07e9c0368..5e35c333d 100644
--- a/data/maps/UndergroundPath_SouthEntrance/text.inc
+++ b/data/maps/UndergroundPath_SouthEntrance/text.inc
@@ -1,4 +1,4 @@
-gUnknown_8174559:: @ 8174559
+UndergroundPath_SouthEntrance_Text_PeopleLoseThingsInTheDarkness:: @ 8174559
.string "People often lose things in the\n"
.string "darkness of the UNDERGROUND PATH.$"
diff --git a/data/maps/UndergroundPath_WestEntrance/map.json b/data/maps/UndergroundPath_WestEntrance/map.json
index ab685cca5..8e8d2f662 100644
--- a/data/maps/UndergroundPath_WestEntrance/map.json
+++ b/data/maps/UndergroundPath_WestEntrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UndergroundPath_WestEntrance_EventScript_160ECA",
+ "script": "UndergroundPath_WestEntrance_EventScript_BaldingMan",
"flag": "0"
}
],
diff --git a/data/maps/UndergroundPath_WestEntrance/scripts.inc b/data/maps/UndergroundPath_WestEntrance/scripts.inc
index 6b1c60710..35fab8e7a 100644
--- a/data/maps/UndergroundPath_WestEntrance/scripts.inc
+++ b/data/maps/UndergroundPath_WestEntrance/scripts.inc
@@ -1,6 +1,6 @@
UndergroundPath_WestEntrance_MapScripts:: @ 8160EC9
.byte 0
-UndergroundPath_WestEntrance_EventScript_160ECA:: @ 8160ECA
- msgbox gUnknown_817459B, MSGBOX_NPC
+UndergroundPath_WestEntrance_EventScript_BaldingMan:: @ 8160ECA
+ msgbox UndergroundPath_WestEntrance_Text_SleepyMonNearCeladon, MSGBOX_NPC
end
diff --git a/data/maps/UndergroundPath_WestEntrance/text.inc b/data/maps/UndergroundPath_WestEntrance/text.inc
index 5447a5206..6130a5244 100644
--- a/data/maps/UndergroundPath_WestEntrance/text.inc
+++ b/data/maps/UndergroundPath_WestEntrance/text.inc
@@ -1,4 +1,4 @@
-gUnknown_817459B:: @ 817459B
+UndergroundPath_WestEntrance_Text_SleepyMonNearCeladon:: @ 817459B
.string "I heard a sleepy POKéMON appeared\n"
.string "out near CELADON CITY, too.$"
diff --git a/data/maps/UnionRoom/map.json b/data/maps/UnionRoom/map.json
index 91cf2cb49..7427f28c3 100644
--- a/data/maps/UnionRoom/map.json
+++ b/data/maps/UnionRoom/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 0,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_16050C",
+ "script": "UnionRoom_EventScript_Attendant",
"flag": "0"
},
{
@@ -36,8 +36,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604DA",
- "flag": "FLAG_HIDE_UNION_ROOM_4"
+ "script": "UnionRoom_EventScript_Player4",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_4"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_7",
@@ -49,8 +49,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_160502",
- "flag": "FLAG_HIDE_UNION_ROOM_8"
+ "script": "UnionRoom_EventScript_Player8",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_8"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_6",
@@ -62,8 +62,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604F8",
- "flag": "FLAG_HIDE_UNION_ROOM_7"
+ "script": "UnionRoom_EventScript_Player7",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_7"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_5",
@@ -75,8 +75,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604EE",
- "flag": "FLAG_HIDE_UNION_ROOM_6"
+ "script": "UnionRoom_EventScript_Player6",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_6"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_4",
@@ -88,8 +88,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604E4",
- "flag": "FLAG_HIDE_UNION_ROOM_5"
+ "script": "UnionRoom_EventScript_Player5",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_5"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_2",
@@ -101,8 +101,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604D0",
- "flag": "FLAG_HIDE_UNION_ROOM_3"
+ "script": "UnionRoom_EventScript_Player3",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_3"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_1",
@@ -114,8 +114,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604C6",
- "flag": "FLAG_HIDE_UNION_ROOM_2"
+ "script": "UnionRoom_EventScript_Player2",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_2"
},
{
"graphics_id": "OBJECT_EVENT_GFX_VAR_0",
@@ -127,8 +127,8 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "UnionRoom_EventScript_1604BC",
- "flag": "FLAG_HIDE_UNION_ROOM_1"
+ "script": "UnionRoom_EventScript_Player1",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_1"
}
],
"warp_events": [
diff --git a/data/maps/UnionRoom/scripts.inc b/data/maps/UnionRoom/scripts.inc
index c948682ce..35222ba8b 100644
--- a/data/maps/UnionRoom/scripts.inc
+++ b/data/maps/UnionRoom/scripts.inc
@@ -4,14 +4,14 @@ UnionRoom_MapScripts:: @ 816047C
.byte 0
UnionRoom_OnResume:: @ 8160487
- setflag FLAG_HIDE_UNION_ROOM_1
- setflag FLAG_HIDE_UNION_ROOM_2
- setflag FLAG_HIDE_UNION_ROOM_3
- setflag FLAG_HIDE_UNION_ROOM_4
- setflag FLAG_HIDE_UNION_ROOM_5
- setflag FLAG_HIDE_UNION_ROOM_6
- setflag FLAG_HIDE_UNION_ROOM_7
- setflag FLAG_HIDE_UNION_ROOM_8
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_1
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_2
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_3
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_4
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_5
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_6
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_7
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_8
removeobject 9
removeobject 8
removeobject 7
@@ -26,7 +26,7 @@ UnionRoom_OnResume:: @ 8160487
UnionRoom_OnTransition:: @ 81604BB
end
-UnionRoom_EventScript_1604BC:: @ 81604BC
+UnionRoom_EventScript_Player1:: @ 81604BC
lock
faceplayer
setvar VAR_RESULT, 1
@@ -34,7 +34,7 @@ UnionRoom_EventScript_1604BC:: @ 81604BC
release
end
-UnionRoom_EventScript_1604C6:: @ 81604C6
+UnionRoom_EventScript_Player2:: @ 81604C6
lock
faceplayer
setvar VAR_RESULT, 2
@@ -42,7 +42,7 @@ UnionRoom_EventScript_1604C6:: @ 81604C6
release
end
-UnionRoom_EventScript_1604D0:: @ 81604D0
+UnionRoom_EventScript_Player3:: @ 81604D0
lock
faceplayer
setvar VAR_RESULT, 3
@@ -50,7 +50,7 @@ UnionRoom_EventScript_1604D0:: @ 81604D0
release
end
-UnionRoom_EventScript_1604DA:: @ 81604DA
+UnionRoom_EventScript_Player4:: @ 81604DA
lock
faceplayer
setvar VAR_RESULT, 4
@@ -58,7 +58,7 @@ UnionRoom_EventScript_1604DA:: @ 81604DA
release
end
-UnionRoom_EventScript_1604E4:: @ 81604E4
+UnionRoom_EventScript_Player5:: @ 81604E4
lock
faceplayer
setvar VAR_RESULT, 5
@@ -66,7 +66,7 @@ UnionRoom_EventScript_1604E4:: @ 81604E4
release
end
-UnionRoom_EventScript_1604EE:: @ 81604EE
+UnionRoom_EventScript_Player6:: @ 81604EE
lock
faceplayer
setvar VAR_RESULT, 6
@@ -74,7 +74,7 @@ UnionRoom_EventScript_1604EE:: @ 81604EE
release
end
-UnionRoom_EventScript_1604F8:: @ 81604F8
+UnionRoom_EventScript_Player7:: @ 81604F8
lock
faceplayer
setvar VAR_RESULT, 7
@@ -82,7 +82,7 @@ UnionRoom_EventScript_1604F8:: @ 81604F8
release
end
-UnionRoom_EventScript_160502:: @ 8160502
+UnionRoom_EventScript_Player8:: @ 8160502
lock
faceplayer
setvar VAR_RESULT, 8
@@ -90,7 +90,7 @@ UnionRoom_EventScript_160502:: @ 8160502
release
end
-UnionRoom_EventScript_16050C:: @ 816050C
+UnionRoom_EventScript_Attendant:: @ 816050C
lock
faceplayer
setvar VAR_RESULT, 9
@@ -98,7 +98,7 @@ UnionRoom_EventScript_16050C:: @ 816050C
release
end
-UnionRoom_EventScript_160516:: @ 8160516
+UnionRoom_EventScript_Unused:: @ 8160516
lockall
setvar VAR_RESULT, 10
waitstate
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index 9937bf704..8e3318c35 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -1,93 +1,93 @@
-Route5_PokemonDayCare_EventScript_1BF398:: @ 81BF398
+Route5_PokemonDayCare_EventScript_DaycareMan:: @ 81BF398
goto_if_questlog EventScript_ReleaseEnd
lock
faceplayer
showmoneybox 0, 0, 0
specialvar VAR_RESULT, IsThereMonInRoute5Daycare
- compare VAR_RESULT, 1
- goto_if_eq EventScript_1BF46E
- msgbox Text_19DD66, MSGBOX_YESNO
+ compare VAR_RESULT, TRUE
+ goto_if_eq Route5_PokemonDayCare_EventScript_CheckOnMon
+ msgbox Route5_PokemonDayCare_Text_WantMeToRaiseMon, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_1BF3DD
- msgbox Text_19DDB2
- goto EventScript_1BF541
+ goto_if_eq Route5_PokemonDayCare_EventScript_TryGiveMon
+ msgbox Route5_PokemonDayCare_Text_ComeAgain
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF3DD:: @ 81BF3DD
+Route5_PokemonDayCare_EventScript_TryGiveMon:: @ 81BF3DD
specialvar VAR_RESULT, CountPartyNonEggMons
compare VAR_RESULT, 1
- goto_if_eq EventScript_1BF452
- msgbox Text_19DDBE
+ goto_if_eq Route5_PokemonDayCare_EventScript_OnlyOneMonInParty
+ msgbox Route5_PokemonDayCare_Text_WhichMonShouldIRaise
fadescreen FADE_TO_BLACK
hidemoneybox 0, 0
special ChooseSendDaycareMon
waitstate
showmoneybox 0, 0, 0
- compare VAR_0x8004, 6
- goto_if_ge EventScript_1BF444
+ compare VAR_0x8004, PARTY_SIZE
+ goto_if_ge Route5_PokemonDayCare_EventScript_ComeAgain
specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
compare VAR_RESULT, 0
- goto_if_eq EventScript_1BF460
- specialvar VAR_0x8005, GetSelectedMonNickAndSpecies
- msgbox Text_19DDF9
+ goto_if_eq Route5_PokemonDayCare_EventScript_OnlyOneAliveMonInParty
+ specialvar VAR_0x8005, GetSelectedMonNicknameAndSpecies
+ msgbox Route5_PokemonDayCare_Text_LookAfterMonForAWhile
waitse
playmoncry VAR_0x8005, 0
- msgbox Text_19DE24
+ msgbox Route5_PokemonDayCare_Text_ComeSeeMeInAWhile
waitmoncry
special PutMonInRoute5Daycare
incrementgamestat GAME_STAT_USED_DAYCARE
- goto EventScript_1BF541
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF444:: @ 81BF444
- msgbox Text_19DDDC
- goto EventScript_1BF541
+Route5_PokemonDayCare_EventScript_ComeAgain:: @ 81BF444
+ msgbox Route5_PokemonDayCare_Text_ComeAnytimeYouLike
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF452:: @ 81BF452
- msgbox Text_19DEF5
- goto EventScript_1BF541
+Route5_PokemonDayCare_EventScript_OnlyOneMonInParty:: @ 81BF452
+ msgbox Route5_PokemonDayCare_Text_OnlyHaveOneMonWithYou
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF460:: @ 81BF460
- msgbox Text_19DF1D
- goto EventScript_1BF541
+Route5_PokemonDayCare_EventScript_OnlyOneAliveMonInParty:: @ 81BF460
+ msgbox Route5_PokemonDayCare_Text_WhatWillYouBattleWith
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF46E:: @ 81BF46E
+Route5_PokemonDayCare_EventScript_CheckOnMon:: @ 81BF46E
setvar VAR_0x8004, 0
specialvar VAR_RESULT, GetNumLevelsGainedForRoute5DaycareMon
compare VAR_RESULT, 0
- call_if_ne EventScript_1BF4AA
+ call_if_ne Route5_PokemonDayCare_EventScript_MonHasGrownByXLevels
compare VAR_RESULT, 0
- call_if_eq EventScript_1BF4B3
+ call_if_eq Route5_PokemonDayCare_EventScript_NotEnoughTime
special GetCostToWithdrawRoute5DaycareMon
- msgbox Text_19DE80, MSGBOX_YESNO
+ msgbox Route5_PokemonDayCare_Text_OweMeXForMonsReturn, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_1BF4BC
- goto EventScript_1BF444
+ goto_if_eq Route5_PokemonDayCare_EventScript_TryRetrieveMon
+ goto Route5_PokemonDayCare_EventScript_ComeAgain
end
-EventScript_1BF4AA:: @ 81BF4AA
- msgbox Text_19DF56
+Route5_PokemonDayCare_EventScript_MonHasGrownByXLevels:: @ 81BF4AA
+ msgbox Route5_PokemonDayCare_Text_MonHasGrownByXLevels
return
-EventScript_1BF4B3:: @ 81BF4B3
- msgbox Text_19DE3C
+Route5_PokemonDayCare_EventScript_NotEnoughTime:: @ 81BF4B3
+ msgbox Route5_PokemonDayCare_Text_MonNeedsToSpendMoreTime
return
-EventScript_1BF4BC:: @ 81BF4BC
+Route5_PokemonDayCare_EventScript_TryRetrieveMon:: @ 81BF4BC
specialvar VAR_RESULT, CalculatePlayerPartyCount
compare VAR_RESULT, PARTY_SIZE
- goto_if_eq EventScript_1BF533
+ goto_if_eq Route5_PokemonDayCare_EventScript_NoRoomInParty
specialvar VAR_RESULT, IsEnoughForCostInVar0x8005
- compare VAR_RESULT, 1
- goto_if_eq EventScript_1BF4EA
- msgbox Text_19E001
- goto EventScript_1BF541
+ compare VAR_RESULT, TRUE
+ goto_if_eq Route5_PokemonDayCare_EventScript_RetrieveMon
+ msgbox Route5_PokemonDayCare_Text_DontHaveEnoughMoney
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF4EA:: @ 81BF4EA
+Route5_PokemonDayCare_EventScript_RetrieveMon:: @ 81BF4EA
setvar VAR_0x8004, 0
specialvar VAR_RESULT, TakePokemonFromRoute5Daycare
special SubtractMoneyFromVar0x8005
@@ -97,159 +97,30 @@ EventScript_1BF4EA:: @ 81BF4EA
subvar VAR_RESULT, 1
getpartymonname 0, VAR_RESULT
copyvar VAR_RESULT, VAR_0x8008
- msgbox Text_19DEAF
+ msgbox Route5_PokemonDayCare_Text_ThankYouHeresMon
textcolor 3
waitse
playmoncry VAR_RESULT, 0
- msgbox Text_19DECF
+ msgbox Route5_PokemonDayCare_Text_PlayerGotMonBack
call EventScript_1A6675
waitmoncry
- goto EventScript_1BF541
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF533:: @ 81BF533
- msgbox Text_19DFC2
- goto EventScript_1BF541
+Route5_PokemonDayCare_EventScript_NoRoomInParty:: @ 81BF533
+ msgbox Route5_PokemonDayCare_Text_YouveGotNoRoomForIt
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
end
-EventScript_1BF541:: @ 81BF541
+Route5_PokemonDayCare_EventScript_CloseMoneyBox:: @ 81BF541
hidemoneybox 0, 0
release
end
-EventScript_81BF546:: @ 81BF546
+EventScript_EggHatch:: @ 81BF546
lockall
- msgbox Text_1BFB5A
+ msgbox DayCare_Text_Huh
special EggHatch
waitstate
releaseall
end
-
-gUnknown_81BF555:: @ 81BF555
- .string "I'm the DAY-CARE MAN.\p"
- .string "I help take care of the precious\n"
- .string "POKéMON of TRAINERS.\p"
- .string "If you'd like me to raise your\n"
- .string "POKéMON, have a word with my wife.$"
-
-gUnknown_81BF5E3:: @ 81BF5E3
- .string "Ah, it's you!\p"
- .string "We were raising your POKéMON, and\n"
- .string "my goodness, were we surprised!\p"
- .string "Your POKéMON had an EGG!\p"
- .string "We don't know how it got there,\n"
- .string "but your POKéMON had it.\p"
- .string "You do want it, yes?$"
-
-gUnknown_81BF69A:: @ 81BF69A
- .string "Ah, it's you! Good to see you.\n"
- .string "Your {STR_VAR_1}'s doing fine.$"
-
-gUnknown_81BF6CF:: @ 81BF6CF
- .string "Well then, I'll keep it.\n"
- .string "Thanks!$"
-
-gUnknown_81BF6F0:: @ 81BF6F0
- .string "You have no room for it…\n"
- .string "Come back when you've made room.$"
-
-Text_1BF72A:: @ 81BF72A
- .string "{PLAYER} received the EGG from\n"
- .string "the DAY-CARE MAN.$"
-
-gUnknown_81BF755:: @ 81BF755
- .string "Take good care of it.$"
-
-Text_1BF76B:: @ 81BF76B
- .string "ポケモンを ひきとりたい ときは\n"
- .string "ばさんに いって おくれ$"
-
-gUnknown_81BF789:: @ 81BF789
- .string "Ah, it's you! Your {STR_VAR_1} and\n"
- .string "{STR_VAR_2} are doing fine.$"
-
-gUnknown_81BF7B6:: @ 81BF7B6
- .string "I really will keep it.\n"
- .string "You do want this, yes?$"
-
-gUnknown_81BF7E4:: @ 81BF7E4
- .string "I'm the DAY-CARE LADY.\p"
- .string "We can raise POKéMON for you.\p"
- .string "Would you like us to raise one?$"
-
-gUnknown_81BF839:: @ 81BF839
- .string "Which POKéMON should we raise for\n"
- .string "you?$"
-
-gUnknown_81BF860:: @ 81BF860
- .string "Fine, we'll raise your {STR_VAR_1}\n"
- .string "for a while.\p"
- .string "Come back for it later.$"
-
-gUnknown_81BF89F:: @ 81BF89F
- .string "We can raise two of your POKéMON.\p"
- .string "Would you like us to raise one\n"
- .string "more POKéMON for you?$"
-
-gUnknown_81BF8F6:: @ 81BF8F6
- .string "My husband was looking for you.$"
-
-gUnknown_81BF916:: @ 81BF916
- .string "Oh, fine, then.\n"
- .string "Come again.$"
-
-gUnknown_81BF932:: @ 81BF932
- .string "You don't have enough money…$"
-
-gUnknown_81BF94F:: @ 81BF94F
- .string "Will you take back the other one,\n"
- .string "too?$"
-
-gUnknown_81BF976:: @ 81BF976
- .string "Fine.\n"
- .string "Come again.$"
-
-gUnknown_81BF988:: @ 81BF988
- .string "Ah, it's you!\n"
- .string "Good to see you.\p"
- .string "Your POKéMON can only be doing\n"
- .string "good!$"
-
-gUnknown_81BF9CC:: @ 81BF9CC
- .string "By level, your {STR_VAR_1} has\n"
- .string "grown by {STR_VAR_2}.$"
-
-gUnknown_81BF9EF:: @ 81BF9EF
- .string "Your POKéMON party is full.\n"
- .string "Make room, then come see me.$"
-
-Text_1BFA28:: @ 81BFA28
- .string "どっちの ポケモンを ひきとるかい?$"
-
-gUnknown_81BFA3B:: @ 81BFA3B
- .string "If you want your {STR_VAR_1} back,\n"
- .string "it will cost ¥{STR_VAR_2}.$"
-
-gUnknown_81BFA67:: @ 81BFA67
- .string "Perfect!\n"
- .string "Here's your POKéMON.$"
-
-gUnknown_81BFA85:: @ 81BFA85
- .string "{PLAYER} took back {STR_VAR_1} from\n"
- .string "the DAY-CARE LADY.$"
-
-gUnknown_81BFAAD:: @ 81BFAAD
- .string "Oh? But you have just one\n"
- .string "POKéMON.\p"
- .string "Come back another time.$"
-
-gUnknown_81BFAE8:: @ 81BFAE8
- .string "Will you take your POKéMON back?$"
-
-gUnknown_81BFB09:: @ 81BFB09
- .string "If you leave me that POKéMON,\n"
- .string "what will you battle with?\p"
- .string "Come back another time.$"
-
-Text_1BFB5A:: @ 81BFB5A
- .string "Huh?$"
diff --git a/data/scripts/obtain_item.inc b/data/scripts/obtain_item.inc
index 2452c5c5c..3ada6109c 100644
--- a/data/scripts/obtain_item.inc
+++ b/data/scripts/obtain_item.inc
@@ -35,31 +35,31 @@ EventScript_BufferPocketNameTryFanfare:: @ 81A66BC
end
EventScript_BufferItemsPocket:: @ 81A66F9
- getstdstring 2, 24
+ getstdstring 2, STDSTRING_ITEMS_POCKET
compare VAR_0x8007, TRUE
call_if_eq EventScript_PlayFanfareObtainedItem
return
EventScript_BufferKeyItemsPocket:: @ 81A6709
- getstdstring 2, 25
+ getstdstring 2, STDSTRING_KEY_ITEMS_POCKET
compare VAR_0x8007, TRUE
call_if_eq EventScript_PlayFanfareObtainedItem
return
EventScript_BufferPokeBallsPocket:: @ 81A6719
- getstdstring 2, 26
+ getstdstring 2, STDSTRING_POKEBALLS_POCKET
compare VAR_0x8007, TRUE
call_if_eq EventScript_PlayFanfareObtainedItem
return
EventScript_BufferTMCase:: @ 81A6729
- getstdstring 2, 27
+ getstdstring 2, STDSTRING_TM_CASE
compare VAR_0x8007, TRUE
call_if_eq EventScript_PlayFanfareObtainedTMHM
return
EventScript_BufferBerryPouch:: @ 81A6739
- getstdstring 2, 28
+ getstdstring 2, STDSTRING_BERRY_POUCH
compare VAR_0x8007, TRUE
call_if_eq EventScript_PlayFanfareObtainedItem
return
@@ -218,7 +218,7 @@ EventScript_TryPickUpHiddenCoins::
compare VAR_RESULT, FALSE
goto_if_eq EventScript_HiddenCoinsButCaseIsFull
addcoins VAR_0x8006
- getstdstring 1, 0x17
+ getstdstring 1, STDSTRING_COINS
call EventScript_PlayFanfareObtainedItem
call EventScript_FoundCoins
waitfanfare
@@ -230,7 +230,7 @@ EventScript_TryPickUpHiddenCoins::
EventScript_HiddenCoinsButCaseIsFull::
getnumberstring 0, VAR_0x8006
- getstdstring 1, 0x17
+ getstdstring 1, STDSTRING_COINS
msgbox Text_FoundXCoins
msgbox Text_CoinCaseIsFull
setvar VAR_RESULT, 0
@@ -239,7 +239,7 @@ EventScript_HiddenCoinsButCaseIsFull::
EventScript_NoCaseForHiddenCoins::
getnumberstring 0, VAR_0x8006
- getstdstring 1, 0x17
+ getstdstring 1, STDSTRING_COINS
msgbox Text_FoundXCoins
msgbox Text_NothingToPutThemIn
setvar VAR_RESULT, 0
diff --git a/data/scripts/route23.inc b/data/scripts/route23.inc
index 682fa7b1d..cfdfe53a7 100644
--- a/data/scripts/route23.inc
+++ b/data/scripts/route23.inc
@@ -1,11 +1,11 @@
-EventScript_1A77C9:: @ 81A77C9
+Route23_EventScript_MissingBoulderBadge:: @ 81A77C9
msgbox Text_OnlySkilledTrainersAllowedThrough
playse SE_BOO
msgbox Text_CantLetYouPass
release
end
-EventScript_1A77DE:: @ 81A77DE
+Route23_EventScript_MissingBadge:: @ 81A77DE
message Text_OnlyPassWithBadgeDontHaveYet
waitmessage
playse SE_BOO
@@ -15,7 +15,7 @@ EventScript_1A77DE:: @ 81A77DE
release
end
-EventScript_1A77EC:: @ 81A77EC
+Route23_EventScript_AlreadyRecognizedBoulderBadge:: @ 81A77EC
message Text_OhThatsBadgeGoRightAhead
waitmessage
playfanfare MUS_FANFA1
@@ -24,80 +24,81 @@ EventScript_1A77EC:: @ 81A77EC
release
end
-EventScript_1A77F9:: @ 81A77F9
+Route23_EventScript_AlreadyRecognizedBadge:: @ 81A77F9
msgbox Text_OnlyPassWithBadgeOhGoAhead
release
end
-EventScript_1A7803:: @ 81A7803
+@ Duplicate of the below, only used for Boulder Badge
+Route22_NorthEntrance_EventScript_BadgeGuard:: @ 81A7803
compare VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
- goto_if_ge EventScript_1A77EC
+ goto_if_ge Route23_EventScript_AlreadyRecognizedBoulderBadge
switch VAR_TEMP_1
- case 1, EventScript_1A78D5
- case 2, EventScript_1A78E4
- case 3, EventScript_1A78F3
- case 4, EventScript_1A7902
- case 5, EventScript_1A7911
- case 6, EventScript_1A7920
- case 7, EventScript_1A792F
- case 8, EventScript_1A793E
+ case 1, Route23_EventScript_CheckBoulderBadge
+ case 2, Route23_EventScript_CheckCascadeBadge
+ case 3, Route23_EventScript_CheckThunderBadge
+ case 4, Route23_EventScript_CheckRainbowBadge
+ case 5, Route23_EventScript_CheckSoulBadge
+ case 6, Route23_EventScript_CheckMarshBadge
+ case 7, Route23_EventScript_CheckVolcanoBadge
+ case 8, Route23_EventScript_CheckEarthBadge
end
-EventScript_1A786C:: @ 81A786C
+Route23_EventScript_BadgeGuard:: @ 81A786C
compare VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
- goto_if_ge EventScript_1A77F9
+ goto_if_ge Route23_EventScript_AlreadyRecognizedBadge
switch VAR_TEMP_1
- case 1, EventScript_1A78D5
- case 2, EventScript_1A78E4
- case 3, EventScript_1A78F3
- case 4, EventScript_1A7902
- case 5, EventScript_1A7911
- case 6, EventScript_1A7920
- case 7, EventScript_1A792F
- case 8, EventScript_1A793E
+ case 1, Route23_EventScript_CheckBoulderBadge
+ case 2, Route23_EventScript_CheckCascadeBadge
+ case 3, Route23_EventScript_CheckThunderBadge
+ case 4, Route23_EventScript_CheckRainbowBadge
+ case 5, Route23_EventScript_CheckSoulBadge
+ case 6, Route23_EventScript_CheckMarshBadge
+ case 7, Route23_EventScript_CheckVolcanoBadge
+ case 8, Route23_EventScript_CheckEarthBadge
end
-EventScript_1A78D5:: @ 81A78D5
- goto_if_set FLAG_BADGE01_GET, EventScript_1A794D
- goto EventScript_1A77C9
+Route23_EventScript_CheckBoulderBadge:: @ 81A78D5
+ goto_if_set FLAG_BADGE01_GET, Route23_EventScript_RecognizeBoulderBadge
+ goto Route23_EventScript_MissingBoulderBadge
end
-EventScript_1A78E4:: @ 81A78E4
- goto_if_set FLAG_BADGE02_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckCascadeBadge:: @ 81A78E4
+ goto_if_set FLAG_BADGE02_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A78F3:: @ 81A78F3
- goto_if_set FLAG_BADGE03_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckThunderBadge:: @ 81A78F3
+ goto_if_set FLAG_BADGE03_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A7902:: @ 81A7902
- goto_if_set FLAG_BADGE04_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckRainbowBadge:: @ 81A7902
+ goto_if_set FLAG_BADGE04_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A7911:: @ 81A7911
- goto_if_set FLAG_BADGE05_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckSoulBadge:: @ 81A7911
+ goto_if_set FLAG_BADGE05_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A7920:: @ 81A7920
- goto_if_set FLAG_BADGE06_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckMarshBadge:: @ 81A7920
+ goto_if_set FLAG_BADGE06_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A792F:: @ 81A792F
- goto_if_set FLAG_BADGE07_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckVolcanoBadge:: @ 81A792F
+ goto_if_set FLAG_BADGE07_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A793E:: @ 81A793E
- goto_if_set FLAG_BADGE08_GET, EventScript_1A795F
- goto EventScript_1A77DE
+Route23_EventScript_CheckEarthBadge:: @ 81A793E
+ goto_if_set FLAG_BADGE08_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
end
-EventScript_1A794D:: @ 81A794D
+Route23_EventScript_RecognizeBoulderBadge:: @ 81A794D
message Text_OhThatsBadgeGoRightAhead
waitmessage
playfanfare MUS_FANFA1
@@ -107,92 +108,92 @@ EventScript_1A794D:: @ 81A794D
release
end
-EventScript_1A795F:: @ 81A795F
+Route23_EventScript_RecognizeBadge:: @ 81A795F
msgbox Text_OnlyPassWithBadgeOhGoAhead
copyvar VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
release
end
-EventScript_1A796E:: @ 81A796E
+Route23_EventScript_BadgeGuardTrigger:: @ 81A796E
textcolor 0
applymovement VAR_0x8009, Movement_WalkInPlaceFastestLeft
waitmovement 0
switch VAR_TEMP_1
- case 1, EventScript_1A79D8
- case 2, EventScript_1A79E7
- case 3, EventScript_1A79F6
- case 4, EventScript_1A7A05
- case 5, EventScript_1A7A14
- case 6, EventScript_1A7A23
- case 7, EventScript_1A7A32
- case 8, EventScript_1A7A41
+ case 1, Route23_EventScript_CheckBoulderBadgeTrigger
+ case 2, Route23_EventScript_CheckCascadeBadgeTrigger
+ case 3, Route23_EventScript_CheckThunderBadgeTrigger
+ case 4, Route23_EventScript_CheckRainbowBadgeTrigger
+ case 5, Route23_EventScript_CheckSoulBadgeTrigger
+ case 6, Route23_EventScript_CheckMarshBadgeTrigger
+ case 7, Route23_EventScript_CheckVolcanoBadgeTrigger
+ case 8, Route23_EventScript_CheckEarthBadgeTrigger
end
-EventScript_1A79D8:: @ 81A79D8
- goto_if_set FLAG_BADGE01_GET, EventScript_1A7A96
- goto EventScript_1A7A50
+Route23_EventScript_CheckBoulderBadgeTrigger:: @ 81A79D8
+ goto_if_set FLAG_BADGE01_GET, Route23_EventScript_RecognizeBoulderBadgeTrigger
+ goto Route23_EventScript_MissingBoulderBadgeTrigger
end
-EventScript_1A79E7:: @ 81A79E7
- goto_if_set FLAG_BADGE02_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckCascadeBadgeTrigger:: @ 81A79E7
+ goto_if_set FLAG_BADGE02_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A79F6:: @ 81A79F6
- goto_if_set FLAG_BADGE03_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckThunderBadgeTrigger:: @ 81A79F6
+ goto_if_set FLAG_BADGE03_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A7A05:: @ 81A7A05
- goto_if_set FLAG_BADGE04_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckRainbowBadgeTrigger:: @ 81A7A05
+ goto_if_set FLAG_BADGE04_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A7A14:: @ 81A7A14
- goto_if_set FLAG_BADGE05_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckSoulBadgeTrigger:: @ 81A7A14
+ goto_if_set FLAG_BADGE05_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A7A23:: @ 81A7A23
- goto_if_set FLAG_BADGE06_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckMarshBadgeTrigger:: @ 81A7A23
+ goto_if_set FLAG_BADGE06_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A7A32:: @ 81A7A32
- goto_if_set FLAG_BADGE07_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckVolcanoBadgeTrigger:: @ 81A7A32
+ goto_if_set FLAG_BADGE07_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A7A41:: @ 81A7A41
- goto_if_set FLAG_BADGE08_GET, EventScript_1A7AA8
- goto EventScript_1A7A77
+Route23_EventScript_CheckEarthBadgeTrigger:: @ 81A7A41
+ goto_if_set FLAG_BADGE08_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
end
-EventScript_1A7A50:: @ 81A7A50
+Route23_EventScript_MissingBoulderBadgeTrigger:: @ 81A7A50
msgbox Text_OnlySkilledTrainersAllowedThrough
playse SE_BOO
msgbox Text_CantLetYouPass
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1A7AB7
+ applymovement OBJ_EVENT_ID_PLAYER, Route23_Movement_WalkDown
applymovement VAR_0x8009, Movement_WalkInPlaceFastestDown
waitmovement 0
releaseall
end
-EventScript_1A7A77:: @ 81A7A77
+Route23_EventScript_MissingBadgeTrigger:: @ 81A7A77
message Text_OnlyPassWithBadgeDontHaveYet
waitmessage
playse SE_BOO
waitbuttonpress
closemessage
waitse
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1A7AB7
+ applymovement OBJ_EVENT_ID_PLAYER, Route23_Movement_WalkDown
applymovement VAR_0x8009, Movement_WalkInPlaceFastestDown
waitmovement 0
releaseall
end
-EventScript_1A7A96:: @ 81A7A96
+Route23_EventScript_RecognizeBoulderBadgeTrigger:: @ 81A7A96
message Text_OhThatsBadgeGoRightAhead
waitmessage
playfanfare MUS_FANFA1
@@ -202,12 +203,12 @@ EventScript_1A7A96:: @ 81A7A96
releaseall
end
-EventScript_1A7AA8:: @ 81A7AA8
+Route23_EventScript_RecognizeBadgeTrigger:: @ 81A7AA8
msgbox Text_OnlyPassWithBadgeOhGoAhead
copyvar VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
releaseall
end
-Movement_1A7AB7:: @ 81A7AB7
+Route23_Movement_WalkDown:: @ 81A7AB7
walk_down
step_end
diff --git a/data/scripts/test.inc b/data/scripts/test.inc
index 55578f159..bd0497209 100644
--- a/data/scripts/test.inc
+++ b/data/scripts/test.inc
@@ -1,27 +1,27 @@
-EventScript_1C5550:: @ 81C5552
- msgbox Text_1C556D, MSGBOX_NPC
+Test_EventScript_NPC:: @ 81C5552
+ msgbox Test_Text_WelcomeToWorldOfPokemon, MSGBOX_NPC
end
-EventScript_1C555B:: @ 81C555B
- msgbox Text_1C558D, MSGBOX_SIGN
+Test_EventScript_Sign:: @ 81C555B
+ msgbox Test_Text_ThisIsASignpost, MSGBOX_SIGN
end
-EventScript_1C5564:: @ 81C5564
- msgbox Text_1C55A4, MSGBOX_SIGN
+Test_EventScript_CoordEvent:: @ 81C5564
+ msgbox Test_Text_ThisIsACoordEvent, MSGBOX_SIGN
end
-Text_1C556D:: @ 81C556D
+Test_Text_WelcomeToWorldOfPokemon:: @ 81C556D
.string "テストよう メッセージです!\n"
.string "ポケモンの せかいへ ようこそ!$"
-Text_1C558D:: @ 81C558D
+Test_Text_ThisIsASignpost:: @ 81C558D
.string "テストよう メッセージです!\n"
.string "かんばん です$"
-Text_1C55A4:: @ 81C55A4
+Test_Text_ThisIsACoordEvent:: @ 81C55A4
.string "テストよう メッセージです!\n"
.string "ざひょう チェックの イベントです$"
.align 2
-Text_1C55C8:: @ 81C55C8
+Test_Text_Empty:: @ 81C55C8
.string "$"
diff --git a/data/scripts/trainer_tower.inc b/data/scripts/trainer_tower.inc
index dd85dc53a..2a5a84f72 100644
--- a/data/scripts/trainer_tower.inc
+++ b/data/scripts/trainer_tower.inc
@@ -320,7 +320,7 @@ EventScript_1C5410:
message Text_ObtainedTheX
waitfanfare
waitmessage
- getstdstring 2, 24
+ getstdstring 2, STDSTRING_ITEMS_POCKET
msgbox Text_PutItemAway
call EventScript_1A6675
goto EventScript_1C544F
diff --git a/data/specials.inc b/data/specials.inc
index e76326401..92256dfab 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -194,7 +194,7 @@ gSpecials:: @ 815FD60
def_special RejectEggFromDayCare
def_special GiveEggFromDaycare
def_special SetDaycareCompatibilityString
- def_special GetSelectedMonNickAndSpecies
+ def_special GetSelectedMonNicknameAndSpecies
def_special StoreSelectedPokemonInDaycare
def_special ChooseSendDaycareMon
def_special ShowDaycareLevelMenu
diff --git a/data/strings.s b/data/strings.s
index 55c54f6c3..d25e28e94 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -411,7 +411,7 @@ gOtherText_Use::
gOtherText_Toss::
.string "TOSS$"
-gUnknown_84161A9::
+gOtherText_Register::
.string "REGISTER$"
gOtherText_Give::
@@ -420,7 +420,7 @@ gOtherText_Give::
gUnknown_84161B7::
.string "けってい$"
-gUnknown_84161BC::
+gOtherText_Walk::
.string "WALK$"
gFameCheckerText_Cancel:: @ 84161C1
@@ -447,16 +447,16 @@ gText_Take::
gText_Store::
.string "STORE$"
-gUnknown_84161E9::
+gOtherText_Check::
.string "CHECK$"
gUnknown_84161EF:: @ 84161EF
.string "NONE$"
-gUnknown_84161F4::
+gOtherText_Open::
.string "OPEN$"
-gUnknown_84161F9::
+gOtherText_Deselect::
.string "DESELECT$"
gUnknown_8416202:: @ 8416202
@@ -555,19 +555,19 @@ gUnknown_84162BD:: @ 84162BD
gText_Coins:: @ 84162C4
.string "{STR_VAR_1} COINS$"
-gUnknown_84162CD:: @ 0x84162CD
+gText_Items2:: @ 0x84162CD
.string "ITEMS$"
-gUnknown_84162D3:: @ 0x84162D3
+gText_PokeBalls2:: @ 0x84162D3
.string "POKé BALLS$"
-gUnknown_84162DE:: @ 0x84162DE
+gText_KeyItems2:: @ 0x84162DE
.string "KEY ITEMS$"
gText_DepositItem:: @ 84162E8
.string "DEPOSIT ITEM$"
-gUnknown_84162F5:: @ 84162F5
+gText_CloseBag:: @ 84162F5
.string "CLOSE BAG$"
gOtherText_StrVar1:: @ 84162FF
@@ -577,7 +577,7 @@ gText_IsSelected:: @ 8416301
.string " is\n"
.string "selected.$"
-gUnknown_841630F:: @ 841630F
+gText_CantWriteMailHere:: @ 841630F
.string "You can't write\n"
.string "MAIL here.$"
@@ -596,15 +596,15 @@ gText_TheStrVar1CantBeHeldHere:: @ 8416374
.string "The {STR_VAR_1} can't be held\n"
.string "here.$"
-gUnknown_841638F:: @ 841638F
+gText_DepositHowManyStrVars1:: @ 841638F
.string "Deposit how many\n"
.string "{STR_VAR_1}(s)?$"
-gUnknown_84163A7:: @ 84163A7
+gText_DepositedStrVar2StrVar1s:: @ 84163A7
.string "Deposited {STR_VAR_2}\n"
.string "{STR_VAR_1}(s).$"
-gUnknown_84163BB:: @ 84163BB
+gText_NoRoomToStoreItems:: @ 84163BB
.string "There's no room to\n"
.string "store items.$"
diff --git a/data/text/day_care.inc b/data/text/day_care.inc
new file mode 100644
index 000000000..1e1d391be
--- /dev/null
+++ b/data/text/day_care.inc
@@ -0,0 +1,130 @@
+@ Same as Hoenn's day-care text, used by the Four Island Day-Care. Unused text translated in Emerald
+
+DayCare_Text_ImDaycareManSpeakToMyWife:: @ 81BF555
+ .string "I'm the DAY-CARE MAN.\p"
+ .string "I help take care of the precious\n"
+ .string "POKéMON of TRAINERS.\p"
+ .string "If you'd like me to raise your\n"
+ .string "POKéMON, have a word with my wife.$"
+
+DayCare_Text_DoYouWantEgg:: @ 81BF5E3
+ .string "Ah, it's you!\p"
+ .string "We were raising your POKéMON, and\n"
+ .string "my goodness, were we surprised!\p"
+ .string "Your POKéMON had an EGG!\p"
+ .string "We don't know how it got there,\n"
+ .string "but your POKéMON had it.\p"
+ .string "You do want it, yes?$"
+
+DayCare_Text_YourMonIsDoingFine:: @ 81BF69A
+ .string "Ah, it's you! Good to see you.\n"
+ .string "Your {STR_VAR_1}'s doing fine.$"
+
+DayCare_Text_IllKeepIt:: @ 81BF6CF
+ .string "Well then, I'll keep it.\n"
+ .string "Thanks!$"
+
+DayCare_Text_YouHaveNoRoomForIt:: @ 81BF6F0
+ .string "You have no room for it…\n"
+ .string "Come back when you've made room.$"
+
+DayCare_Text_ReceivedEgg:: @ 81BF72A
+ .string "{PLAYER} received the EGG from\n"
+ .string "the DAY-CARE MAN.$"
+
+DayCare_Text_TakeGoodCareOfIt:: @ 81BF755
+ .string "Take good care of it.$"
+
+DayCare_Text_SeeWifeIfYouWantToPickUpMon:: @ 81BF76B
+ .string "ポケモンを ひきとりたい ときは\n"
+ .string "ばさんに いって おくれ$"
+
+DayCare_Text_YourMonsAreDoingFine:: @ 81BF789
+ .string "Ah, it's you! Your {STR_VAR_1} and\n"
+ .string "{STR_VAR_2} are doing fine.$"
+
+DayCare_Text_IWillKeepDoYouWantIt:: @ 81BF7B6
+ .string "I really will keep it.\n"
+ .string "You do want this, yes?$"
+
+DayCare_Text_WouldYouLikeUsToRaiseMon:: @ 81BF7E4
+ .string "I'm the DAY-CARE LADY.\p"
+ .string "We can raise POKéMON for you.\p"
+ .string "Would you like us to raise one?$"
+
+DayCare_Text_WhichMonShouldWeRaise:: @ 81BF839
+ .string "Which POKéMON should we raise for\n"
+ .string "you?$"
+
+DayCare_Text_WellRaiseYourMon:: @ 81BF860
+ .string "Fine, we'll raise your {STR_VAR_1}\n"
+ .string "for a while.\p"
+ .string "Come back for it later.$"
+
+DayCare_Text_WeCanRaiseOneMore:: @ 81BF89F
+ .string "We can raise two of your POKéMON.\p"
+ .string "Would you like us to raise one\n"
+ .string "more POKéMON for you?$"
+
+DayCare_Text_HusbandWasLookingForYou:: @ 81BF8F6
+ .string "My husband was looking for you.$"
+
+DayCare_Text_FineThenComeAgain:: @ 81BF916
+ .string "Oh, fine, then.\n"
+ .string "Come again.$"
+
+DayCare_Text_NotEnoughMoney:: @ 81BF932
+ .string "You don't have enough money…$"
+
+DayCare_Text_TakeOtherOneBackToo:: @ 81BF94F
+ .string "Will you take back the other one,\n"
+ .string "too?$"
+
+DayCare_Text_ComeAgain:: @ 81BF976
+ .string "Fine.\n"
+ .string "Come again.$"
+
+DayCare_Text_GoodToSeeYou:: @ 81BF988
+ .string "Ah, it's you!\n"
+ .string "Good to see you.\p"
+ .string "Your POKéMON can only be doing\n"
+ .string "good!$"
+
+DayCare_Text_YourMonHasGrownXLevels:: @ 81BF9CC
+ .string "By level, your {STR_VAR_1} has\n"
+ .string "grown by {STR_VAR_2}.$"
+
+DayCare_Text_YourPartyIsFull:: @ 81BF9EF
+ .string "Your POKéMON party is full.\n"
+ .string "Make room, then come see me.$"
+
+DayCare_Text_TakeBackWhichMon:: @ 81BFA28
+ .string "どっちの ポケモンを ひきとるかい?$"
+
+DayCare_Text_ItWillCostX:: @ 81BFA3B
+ .string "If you want your {STR_VAR_1} back,\n"
+ .string "it will cost ¥{STR_VAR_2}.$"
+
+DayCare_Text_HeresYourMon:: @ 81BFA67
+ .string "Perfect!\n"
+ .string "Here's your POKéMON.$"
+
+DayCare_Text_TookBackMon:: @ 81BFA85
+ .string "{PLAYER} took back {STR_VAR_1} from\n"
+ .string "the DAY-CARE LADY.$"
+
+DayCare_Text_YouHaveJustOneMon:: @ 81BFAAD
+ .string "Oh? But you have just one\n"
+ .string "POKéMON.\p"
+ .string "Come back another time.$"
+
+DayCare_Text_TakeYourMonBack:: @ 81BFAE8
+ .string "Will you take your POKéMON back?$"
+
+DayCare_Text_WhatWillYouBattleWith:: @ 81BFB09
+ .string "If you leave me that POKéMON,\n"
+ .string "what will you battle with?\p"
+ .string "Come back another time.$"
+
+DayCare_Text_Huh:: @ 81BFB5A
+ .string "Huh?$"
diff --git a/data/text/teachy_tv.inc b/data/text/teachy_tv.inc
index 3989aa5d1..ae0731142 100644
--- a/data/text/teachy_tv.inc
+++ b/data/text/teachy_tv.inc
@@ -19,7 +19,7 @@ gTeachyTvString_RegisterItem:: @ 841B81B
gTeachyTvString_Cancel:: @ 841B836
.string "CANCEL$"
-gTeachyTvText_PokeDudeSaysHello:: @ 841B83D
+gTeachyTvText_PokedudeSaysHello:: @ 841B83D
.string "Hey, all you TRAINERS out there!\n"
.string "HELLO, TRAINERS!\p"
.string "……… ……… ………\p"
@@ -164,7 +164,7 @@ gTeachyTvText_TMsScript1:: @ 841C459
.string "You can check them out in detail,\n"
.string "too.$"
-gPokeDudeText_TMTypes:: @ 841C587
+gPokedudeText_TMTypes:: @ 841C587
.string "POKé DUDE: NORMAL, WATER, GRASS…\n"
.string "TMs also come in types.\p"
.string "Check the type and teach it to\n"
@@ -175,7 +175,7 @@ gPokeDudeText_TMTypes:: @ 841C587
.string "GRASS-type POKéMON can learn.\p"
.string "There's one other thing!$"
-gPokeDudeText_ReadTMDescription:: @ 841C693
+gPokedudeText_ReadTMDescription:: @ 841C693
.string "Don't just look at the type, read\n"
.string "the description, too.\p"
.string "It will contain hints about what\n"
diff --git a/include/bag.h b/include/bag.h
index f82531778..fec9f67bf 100644
--- a/include/bag.h
+++ b/include/bag.h
@@ -1,18 +1,20 @@
#ifndef GUARD_BAG_H
#define GUARD_BAG_H
-void sub_810B858(void);
-void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx);
-void sub_810B958(const u8 * str);
-void sub_810B994(void);
-u8 sub_810B9DC(u8 a0, u8 a1);
-void sub_810BA3C(u8 a0);
-u8 sub_810BA70(u8 a0);
-void sub_810BA9C(u8 a0);
-u8 sub_810BAD8(u8 a0);
-void sub_810BAE8(u8 taskId, const struct YesNoFuncTable * ptrs);
-void sub_810BB14(u8 taskId, const struct YesNoFuncTable * ptrs);
-void sub_810BB40(void);
-void sub_810BB74(u8 windowId);
+#include "menu_helpers.h"
+
+void InitBagWindows(void);
+void BagPrintTextOnWindow(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+void BagPrintTextOnWin1CenteredColor0(const u8 * str, u8 unused);
+void BagDrawDepositItemTextBox(void);
+u8 ShowBagWindow(u8 whichWindow, u8 nItems);
+void HideBagWindow(u8 whichWindow);
+u8 OpenBagWindow(u8 whichWindow);
+void CloseBagWindow(u8 whichWindow);
+u8 GetBagWindow(u8 whichWindow);
+void BagCreateYesNoMenuBottomRight(u8 taskId, const struct YesNoFuncTable * ptrs);
+void BagCreateYesNoMenuTopRight(u8 taskId, const struct YesNoFuncTable * ptrs);
+void BagPrintMoneyAmount(void);
+void BagDrawTextBoxOnWindow(u8 windowId);
#endif //GUARD_BAG_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 06a0e2957..412856353 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_CONTROLLERS_H
#include "global.h"
+#include "battle.h"
enum
{
diff --git a/include/constants/daycare.h b/include/constants/daycare.h
new file mode 100644
index 000000000..103f920f2
--- /dev/null
+++ b/include/constants/daycare.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_DAYCARE_CONSTANTS_H
+#define GUARD_DAYCARE_CONSTANTS_H
+
+// Parent compatability scores
+#define PARENTS_INCOMPATIBLE 0
+#define PARENTS_LOW_COMPATIBILITY 20
+#define PARENTS_MED_COMPATABILITY 50
+#define PARENTS_MAX_COMPATABILITY 70
+
+// Daycare state
+#define DAYCARE_NO_MONS 0
+#define DAYCARE_EGG_WAITING 1
+#define DAYCARE_ONE_MON 2
+#define DAYCARE_TWO_MONS 3
+
+#define INHERITED_IV_COUNT 3
+#define EGG_HATCH_LEVEL 5
+#define EGG_GENDER_MALE 0x8000 // used to create a male egg from a female-only parent species (e.g. Nidoran)
+
+#define DAYCARE_LEVEL_MENU_EXIT 5
+#define DAYCARE_EXITED_LEVEL_MENU 2 // would be redundant with above if GF had used the same value
+
+// Array buffers
+#define EGG_MOVES_ARRAY_COUNT 10
+#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+
+#endif //GUARD_DAYCARE_CONSTANTS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 2f03573ab..26ffa8a7c 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -104,14 +104,14 @@
#define FLAG_HIDE_DOJO_HITMONLEE_BALL 0x060
#define FLAG_HIDE_DOJO_HITMONCHAN_BALL 0x061
#define FLAG_HIDE_CINNABAR_BILL 0x062
-#define FLAG_HIDE_UNION_ROOM_1 0x063
-#define FLAG_HIDE_UNION_ROOM_2 0x064
-#define FLAG_HIDE_UNION_ROOM_3 0x065
-#define FLAG_HIDE_UNION_ROOM_4 0x066
-#define FLAG_HIDE_UNION_ROOM_5 0x067
-#define FLAG_HIDE_UNION_ROOM_6 0x068
-#define FLAG_HIDE_UNION_ROOM_7 0x069
-#define FLAG_HIDE_UNION_ROOM_8 0x06A
+#define FLAG_HIDE_UNION_ROOM_PLAYER_1 0x063
+#define FLAG_HIDE_UNION_ROOM_PLAYER_2 0x064
+#define FLAG_HIDE_UNION_ROOM_PLAYER_3 0x065
+#define FLAG_HIDE_UNION_ROOM_PLAYER_4 0x066
+#define FLAG_HIDE_UNION_ROOM_PLAYER_5 0x067
+#define FLAG_HIDE_UNION_ROOM_PLAYER_6 0x068
+#define FLAG_HIDE_UNION_ROOM_PLAYER_7 0x069
+#define FLAG_HIDE_UNION_ROOM_PLAYER_8 0x06A
#define FLAG_HIDE_CINNABAR_SEAGALLOP 0x06B
#define FLAG_HIDE_SAFFRON_FAN_CLUB_BLACKBELT 0x06C
#define FLAG_HIDE_SAFFRON_FAN_CLUB_ROCKER 0x06D
diff --git a/include/constants/global.h b/include/constants/global.h
index 9aee27d8e..77ef6f203 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -36,6 +36,7 @@
#define MALE 0
#define FEMALE 1
+#define GENDER_COUNT 2
#define OPTIONS_BUTTON_MODE_HELP 0
#define OPTIONS_BUTTON_MODE_LR 1
diff --git a/include/constants/item_menu.h b/include/constants/item_menu.h
new file mode 100644
index 000000000..d173b9212
--- /dev/null
+++ b/include/constants/item_menu.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_CONSTANTS_ITEM_MENU_H
+#define GUARD_CONSTANTS_ITEM_MENU_H
+
+#define OPEN_BAG_ITEMS 0
+#define OPEN_BAG_KEYITEMS 1
+#define OPEN_BAG_POKEBALLS 2
+#define OPEN_BAG_LAST 3
+
+#define ITEMMENULOCATION_FIELD 0
+#define ITEMMENULOCATION_PARTY 1
+#define ITEMMENULOCATION_SHOP 2
+#define ITEMMENULOCATION_ITEMPC 3
+#define ITEMMENULOCATION_PCBOX 4
+#define ITEMMENULOCATION_BATTLE 5
+#define ITEMMENULOCATION_OLD_MAN 6
+#define ITEMMENULOCATION_TTVSCR_STATUS 7
+#define ITEMMENULOCATION_TTVSCR_CATCHING 8
+#define ITEMMENULOCATION_TTVSCR_REGISTER 9
+#define ITEMMENULOCATION_TTVSCR_TMS 10
+#define ITEMMENULOCATION_LAST 11
+
+#define ITEMMENUACTION_USE 0
+#define ITEMMENUACTION_TOSS 1
+#define ITEMMENUACTION_REGISTER 2
+#define ITEMMENUACTION_GIVE 3
+#define ITEMMENUACTION_CANCEL 4
+#define ITEMMENUACTION_BATTLE_USE 5
+#define ITEMMENUACTION_CHECK 6
+#define ITEMMENUACTION_OPEN 7
+#define ITEMMENUACTION_OPEN_BERRIES 8
+#define ITEMMENUACTION_WALK 9
+#define ITEMMENUACTION_DESELECT 10
+#define ITEMMENUACTION_DUMMY 11
+
+#endif //GUARD_CONSTANTS_ITEM_MENU_H
diff --git a/include/constants/menu.h b/include/constants/menu.h
index 6d72787dc..aed98dec4 100644
--- a/include/constants/menu.h
+++ b/include/constants/menu.h
@@ -78,4 +78,35 @@
#define LISTMENU_BERRY_POWDER 5
#define LISTMENU_TRAINER_TOWER_FLOORS 6
+// Std String Ids
+#define STDSTRING_COOL 0
+#define STDSTRING_BEAUTY 1
+#define STDSTRING_CUTE 2
+#define STDSTRING_SMART 3
+#define STDSTRING_TOUGH 4
+#define STDSTRING_COOL2 5
+#define STDSTRING_BEAUTY2 6
+#define STDSTRING_CUTE2 7
+#define STDSTRING_SMART2 8
+#define STDSTRING_TOUGH2 9
+#define STDSTRING_ITEMS 10
+#define STDSTRING_KEY_ITEMS 11
+#define STDSTRING_POKEBALLS 12
+#define STDSTRING_TMHMS 13
+#define STDSTRING_BERRIES 14
+#define STDSTRING_BOULDER_BADGE 15
+#define STDSTRING_CASCADE_BADGE 16
+#define STDSTRING_THUNDER_BADGE 17
+#define STDSTRING_RAINBOW_BADGE 18
+#define STDSTRING_SOUL_BADGE 19
+#define STDSTRING_MARSH_BADGE 20
+#define STDSTRING_VOLCANO_BADGE 21
+#define STDSTRING_EARTH_BADGE 22
+#define STDSTRING_COINS 23
+#define STDSTRING_ITEMS_POCKET 24
+#define STDSTRING_KEY_ITEMS_POCKET 25
+#define STDSTRING_POKEBALLS_POCKET 26
+#define STDSTRING_TM_CASE 27
+#define STDSTRING_BERRY_POUCH 28
+
#endif //GUARD_CONSTANTS_MENU_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index c6fc55003..dfbba41d9 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -40,6 +40,8 @@
#define EGG_GROUP_DRAGON 14
#define EGG_GROUP_UNDISCOVERED 15
+#define EGG_GROUPS_PER_MON 2
+
// Pokemon natures
#define NATURE_HARDY 0
#define NATURE_LONELY 1
diff --git a/include/constants/region_map.h b/include/constants/region_map.h
index bd087bd60..78dab242c 100644
--- a/include/constants/region_map.h
+++ b/include/constants/region_map.h
@@ -206,6 +206,8 @@
#define MAPSEC_SPECIAL_AREA 0xC4
#define MAPSEC_NONE 0xC5
-#define MAPSEC_IN_GAME_TRADE 0xFE
+#define METLOC_SPECIAL_EGG 0xFD
+#define METLOC_IN_GAME_TRADE 0xFE
+#define METLOC_FATEFUL_ENCOUNTER 0xFF
#endif //GUARD_CONSTANTS_REGION_MAP_H
diff --git a/include/data.h b/include/data.h
index 72e6b66fc..f308b044c 100644
--- a/include/data.h
+++ b/include/data.h
@@ -57,7 +57,7 @@ extern const struct SpriteFrameImage gUnknown_82346D8[];
extern const struct SpriteFrameImage gUnknown_82346F8[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_PokeDude[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Pokedude[];
extern const struct SpriteFrameImage gTrainerBackPicTable_OldMan[];
extern const struct SpriteFrameImage gTrainerBackPicTable_RSBrendan[];
extern const struct SpriteFrameImage gTrainerBackPicTable_RSMay[];
diff --git a/include/daycare.h b/include/daycare.h
index 08ca11187..71eada93e 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -3,8 +3,6 @@
#include "global.h"
-#define EGG_HATCH_LEVEL 5
-
u8 *GetMonNick(struct Pokemon *mon, u8 *dest);
u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest);
u8 CountPokemonInDaycare(struct DayCare *daycare);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 468b965d0..54eb2b2a9 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1162,7 +1162,7 @@ extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
extern const u8 gUnknown_81A4EB4[];
-extern const u8 EventScript_1C555B[];
+extern const u8 Test_EventScript_Sign[];
// new_game
extern const u8 EventScript_ResetAllMapFlags[];
@@ -1195,4 +1195,6 @@ extern const u8 Text_1A5D31[];
extern const u8 Text_1A5D6E[];
extern const u8 Text_1A5DB1[];
+extern const u8 EventScript_BagItemCanBeRegistered[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/gflib.h b/include/gflib.h
new file mode 100644
index 000000000..a6dfc62df
--- /dev/null
+++ b/include/gflib.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_GFLIB_H
+#define GUARD_GFLIB_H
+
+#include "global.h"
+
+#include "bg.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "dma3.h"
+#include "malloc.h"
+#include "sound.h"
+#include "text.h"
+#include "sprite.h"
+#include "window.h"
+#include "blit.h"
+#include "string_util.h"
+
+#endif //GUARD_GFLIB_H
diff --git a/include/graphics.h b/include/graphics.h
index a668364bd..e87acb556 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -1,7 +1,3 @@
-//
-// Created by scott on 10/21/2017.
-//
-
#ifndef GUARD_GRAPHICS_H
#define GUARD_GRAPHICS_H
@@ -2656,7 +2652,7 @@ extern const u32 gTrainerPalette_RSBrendan1[];
extern const u32 gTrainerPalette_RSMay1[];
extern const u32 gTrainerPalette_LeafBackPic[];
extern const u32 gTrainerPalette_RedBackPic[];
-extern const u32 gTrainerPalette_PokeDudeBackPic[];
+extern const u32 gTrainerPalette_PokedudeBackPic[];
extern const u32 gTrainerPalette_OldManBackPic[];
extern const u32 gTrainerPalette_PokemonBreederM[];
extern const u32 gTrainerPalette_RSPokemonBreederF[];
@@ -4358,7 +4354,7 @@ extern const u8 gBerryPouchBg1Tilemap[];
extern const u8 gTrainerBackPic_Red[];
extern const u8 gTrainerBackPic_Leaf[];
-extern const u8 gTrainerBackPic_PokeDude[];
+extern const u8 gTrainerBackPic_Pokedude[];
extern const u8 gTrainerBackPic_OldMan[];
extern const u8 gTrainerBackPic_RSBrendan[];
extern const u8 gTrainerBackPic_RSMay[];
@@ -4861,4 +4857,11 @@ extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
extern const u16 gUnknown_8D12404[];
+// item_menu
+extern const u32 gUnknown_8E830CC[];
+extern const u32 gUnknown_8E832C0[];
+extern const u32 gUnknown_8E83444[];
+extern const u32 gBagBgPalette[];
+extern const u32 gBagBgPalette_FemaleOverride[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 187674e83..27bd73e72 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -3,6 +3,7 @@
#include "global.h"
#include "task.h"
+#include "constants/item_menu.h"
// Exported type declarations
@@ -10,15 +11,15 @@
struct BagStruct
{
- void (*bagCallback)(void);
+ MainCallback bagCallback;
u8 location;
- u8 pocket;
- u16 unk6;
- u8 cursorPosition[6];
- u8 scrollPosition[6];
+ bool8 bagOpen;
+ u16 pocket;
+ u16 itemsAbove[3];
+ u16 cursorPos[3];
};
-extern struct BagStruct gUnknown_203ACFC;
+extern struct BagStruct gBagMenuState;
extern u16 gSpecialVar_ItemId;
@@ -26,19 +27,19 @@ extern u16 gSpecialVar_ItemId;
void sub_81AAC50(void);
void sub_81AAC70(void);
void CB2_SetUpReshowBattleScreenAfterMenu(void);
-void sub_81089BC(void);
-void sub_810B108(u8);
+void ResetBagCursorPositions(void);
+void InitPokedudeBag(u8);
void CB2_BagMenuFromStartMenu(void);
-void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
+void MoveItemSlotInList(struct ItemSlot * itemSlots_, u32 from, u32 to_);
void ItemMenu_StartFadeToExitCallback(u8 taskId);
-void sub_8108CB4(void);
+void Bag_BeginCloseWin0Animation(void);
void ItemMenu_SetExitCallback(void (*)(void));
-void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
-void sub_810A1F8(u8 taskId);
-void sub_8107ECC(void);
-void sub_810AF74(void);
-void sub_8108DC8(u8 pocketId);
-void sub_81089F4(u8 pocketId);
+void DisplayItemMessageInBag(u8 taskId, u8 fontId, const u8 * string, TaskFunc followUpFunc);
+void Task_ReturnToBagFromContextMenu(u8 taskId);
+void CB2_BagMenuFromBattle(void);
+void InitOldManBag(void);
+void Pocket_CalculateNItemsAndMaxShowed(u8 pocketId);
+void PocketCalculateInitialCursorPosAndItemsAbove(u8 pocketId);
void GoToBagMenu(u8 menuType, u8 pocket, MainCallback callback);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index b5b5c6b0b..fd66a9375 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -3,28 +3,26 @@
#include "global.h"
-extern void * gUnknown_2039884;
-
-extern const struct CompressedSpriteSheet gUnknown_83D41E4;
-extern const struct CompressedSpriteSheet gUnknown_83D41EC;
-extern const struct CompressedSpritePalette gUnknown_83D41F4;
+extern const struct CompressedSpriteSheet gSpriteSheet_Backpack;
+extern const struct CompressedSpriteSheet gSpriteSheet_Satchel;
+extern const struct CompressedSpritePalette gSpritePalette_BagOrSatchel;
extern const struct CompressedSpriteSheet gBagSwapSpriteSheet;
extern const struct CompressedSpritePalette gBagSwapSpritePalette;
void ResetItemMenuIconState(void);
-void sub_80985E4(void);
+void ItemMenuIcons_CreateInsertIndicatorBarHidden(void);
void DestroyItemMenuIcon(bool8 a0);
void CreateItemMenuIcon(u16 itemId, bool8 a0);
void CopyItemIconPicTo4x4Buffer(const void *src, void *dest);
u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId);
u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
void sub_80989A0(u16 itemId, u8 idx);
-void sub_80986A8(s16 x, u16 y);
-void sub_8098660(u8);
+void ItemMenuIcons_MoveInsertIndicatorBar(s16 x, u16 y);
+void ItemMenuIcons_ToggleInsertIndicatorBarVisibility(bool8 invisible);
void sub_8098528(u8);
void sub_8098580(void);
-const void * sub_8098974(u16 itemId, u8 ptrId);
-void sub_80984FC(u8 animNum);
+const void * GetItemIconGfxPtr(u16 itemId, u8 ptrId);
+void CreateBagOrSatchelSprite(u8 animNum);
#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/map_name_popup.h b/include/map_name_popup.h
index c8ce02c30..a7c1234c6 100644
--- a/include/map_name_popup.h
+++ b/include/map_name_popup.h
@@ -4,5 +4,6 @@
#include "global.h"
void CreateMapNamePopupIfNotAlreadyRunning(bool32 palIntoFadedBuffer);
+void DismissMapNamePopup(void);
#endif //GUARD_MAP_NAME_POPUP_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 1e75b336c..d26f50483 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -20,14 +20,14 @@ bool8 sub_80BF748(void);
bool8 MenuHelpers_LinkSomething(void);
void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinatesAndBgCntRegs(void);
-u8 sub_80BF8E4(void);
+u8 GetDialogBoxFontId(void);
bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
u8 GetLRKeysState(void);
u8 GetLRKeysPressedAndHeld(void);
bool8 itemid_link_can_give_berry(u16 itemId);
-bool8 itemid_80BF6D8_mail_related(u16 itemId);
+bool8 CanWriteMailHere(u16 itemId);
void ResetVramOamAndBgCntRegs(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/strings.h b/include/strings.h
index eace8d67e..7e8a4fbb4 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -112,8 +112,8 @@ extern const u8 gText_OhNoICantBuyThat[];
extern const u8 gText_HowManyWouldYouLikeToSell[];
extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[];
extern const u8 gText_TurnedOverItemsWorthYen[];
-extern const u8 gPokeDudeText_TMTypes[];
-extern const u8 gPokeDudeText_ReadTMDescription[];
+extern const u8 gPokedudeText_TMTypes[];
+extern const u8 gPokedudeText_ReadTMDescription[];
extern const u8 gFameCheckerText_Cancel[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gFameCheckerText_FameCheckerWillBeClosed[];
@@ -134,7 +134,7 @@ extern const u8 gTeachyTvString_CatchPkmn[];
extern const u8 gTeachyTvString_AboutTMs[];
extern const u8 gTeachyTvString_RegisterItem[];
extern const u8 gTeachyTvString_Cancel[];
-extern const u8 gTeachyTvText_PokeDudeSaysHello[];
+extern const u8 gTeachyTvText_PokedudeSaysHello[];
extern const u8 gTeachyTvText_BattleScript1[];
extern const u8 gTeachyTvText_StatusScript1[];
extern const u8 gTeachyTvText_MatchupsScript1[];
@@ -1038,4 +1038,22 @@ extern const u8 gText_SaveFailedScreen_CheckingBackupMemory[];
extern const u8 gText_SaveFailedScreen_BackupMemoryDamaged[];
extern const u8 gText_SaveFailedScreen_SaveCompleted[];
+// bag
+extern const u8 gText_DepositItem[];
+
+// item_menu
+extern const u8 gOtherText_Register[];
+extern const u8 gOtherText_Walk[];
+extern const u8 gOtherText_Check[];
+extern const u8 gOtherText_Open[];
+extern const u8 gOtherText_Deselect[];
+extern const u8 gText_Items2[];
+extern const u8 gText_PokeBalls2[];
+extern const u8 gText_KeyItems2[];
+extern const u8 gText_CloseBag[];
+extern const u8 gText_CantWriteMailHere[];
+extern const u8 gText_DepositHowManyStrVars1[];
+extern const u8 gText_DepositedStrVar2StrVar1s[];
+extern const u8 gText_NoRoomToStoreItems[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/teachy_tv.h b/include/teachy_tv.h
index 36bac6a67..3484f88c1 100644
--- a/include/teachy_tv.h
+++ b/include/teachy_tv.h
@@ -1,6 +1,16 @@
#ifndef GUARD_TEACHY_TV_H
#define GUARD_TEACHY_TV_H
+enum TeachyTvScript
+{
+ TTVSCR_BATTLE,
+ TTVSCR_STATUS,
+ TTVSCR_MATCHUPS,
+ TTVSCR_CATCHING,
+ TTVSCR_TMS,
+ TTVSCR_REGISTER
+};
+
void InitTeachyTvController(u8 mode, void (*cb)());
void CB2_ReturnToTeachyTV(void);
void SetTeachyTvControllerModeToResume(void);
diff --git a/include/tm_case.h b/include/tm_case.h
index f77eae457..22fb021e0 100644
--- a/include/tm_case.h
+++ b/include/tm_case.h
@@ -1,8 +1,18 @@
#ifndef GUARD_TM_CASE_H
#define GUARD_TM_CASE_H
+enum TmCaseType
+{
+ TMCASE_FROMFIELD,
+ TMCASE_FROMPARTYGIVE,
+ TMCASE_FROMMARTSELL,
+ TMCASE_FROMPOKEMONSTORAGEPC,
+ TMCASE_FROMBATTLE,
+ TMCASE_NA
+};
+
void InitTMCase(u8 a0, void (* a1)(void), u8 a2);
void ResetTMCaseCursorPos(void);
-void PokeDude_InitTMCase(void);
+void Pokedude_InitTMCase(void);
#endif //GUARD_TM_CASE_H
diff --git a/ld_script.txt b/ld_script.txt
index f07e480a2..016793dc9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -232,7 +232,7 @@ SECTIONS {
src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
src/list_menu.o(.text);
- asm/item_menu.o(.text);
+ src/item_menu.o(.text);
src/save_location.o(.text);
src/bag.o(.text);
src/trainer_pokemon_sprites.o(.text);
@@ -517,7 +517,7 @@ SECTIONS {
src/pokedex_screen.o(.rodata);
data/pokedex_screen.o(.rodata);
src/list_menu.o(.rodata);
- data/item_menu.o(.rodata);
+ src/item_menu.o(.rodata);
src/save_location.o(.rodata);
src/bag.o(.rodata);
src/trainer_pokemon_sprites.o(.rodata);
diff --git a/src/bag.c b/src/bag.c
index c30bc626d..049aa9f8f 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -10,17 +10,18 @@
#include "menu.h"
#include "money.h"
#include "bag.h"
+#include "strings.h"
-extern const u8 gText_DepositItem[];
+static const u16 sBagWindowPalF[] = INCBIN_U16("data/bag/bag_window_pal.gbapal");
-const u16 gUnknown_8453098[] = INCBIN_U16("data/bag/bag_window_pal.gbapal");
-const u8 gUnknown_84530B8[][3] = {
+static const u8 sTextColors[][3] = {
{0, 1, 2},
{0, 2, 3},
{0, 3, 2},
{0, 8, 9}
};
-const struct WindowTemplate gUnknown_84530C4[] = {
+
+static const struct WindowTemplate sDefaultBagWindowsStd[] = {
{
.bg = 0,
.tilemapLeft = 0x0b,
@@ -47,7 +48,8 @@ const struct WindowTemplate gUnknown_84530C4[] = {
.baseBlock = 0x01f8
}, DUMMY_WIN_TEMPLATE
};
-const struct WindowTemplate gUnknown_84530E4[] = {
+
+static const struct WindowTemplate sDefaultBagWindowsDeposit[] = {
{
.bg = 0,
.tilemapLeft = 0x0b,
@@ -74,7 +76,8 @@ const struct WindowTemplate gUnknown_84530E4[] = {
.baseBlock = 0x01f8
}, DUMMY_WIN_TEMPLATE
};
-const struct WindowTemplate gUnknown_8453104[] = {
+
+static const struct WindowTemplate sWindowTemplates[] = {
{
.bg = 0,
.tilemapLeft = 24,
@@ -99,122 +102,114 @@ const struct WindowTemplate gUnknown_8453104[] = {
.height = 3,
.paletteNum = 0xC,
.baseBlock = 0x272
- }
-};
-
-const struct WindowTemplate gUnknown_845311C = {
- .bg = 0,
- .tilemapLeft = 23,
- .tilemapTop = 15,
- .width = 6,
- .height = 4,
- .paletteNum = 0xF,
- .baseBlock = 0x28a
-};
-
-const struct WindowTemplate gUnknown_8453124 = {
- .bg = 0,
- .tilemapLeft = 21,
- .tilemapTop = 9,
- .width = 6,
- .height = 4,
- .paletteNum = 0xF,
- .baseBlock = 0x28a
-};
-
-const struct WindowTemplate gUnknown_845312C[] = {
- {
- .bg = 0x00,
- .tilemapLeft = 0x02,
- .tilemapTop = 0x0f,
- .width = 0x1a,
- .height = 0x04,
- .paletteNum = 0x0f,
- .baseBlock = 0x02a2
}, {
- .bg = 0x00,
- .tilemapLeft = 0x06,
- .tilemapTop = 0x0f,
- .width = 0x0e,
- .height = 0x04,
- .paletteNum = 0x0c,
- .baseBlock = 0x02a2
+ .bg = 0,
+ .tilemapLeft = 23,
+ .tilemapTop = 15,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x28a
}, {
- .bg = 0x00,
- .tilemapLeft = 0x06,
- .tilemapTop = 0x0f,
- .width = 0x0f,
- .height = 0x04,
- .paletteNum = 0x0c,
- .baseBlock = 0x02da
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 9,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x28a
}, {
- .bg = 0x00,
- .tilemapLeft = 0x06,
- .tilemapTop = 0x0f,
- .width = 0x10,
- .height = 0x04,
- .paletteNum = 0x0c,
- .baseBlock = 0x0316
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x2a2
}, {
- .bg = 0x00,
- .tilemapLeft = 0x06,
- .tilemapTop = 0x0f,
- .width = 0x17,
- .height = 0x04,
- .paletteNum = 0x0c,
- .baseBlock = 0x0356
+ .bg = 0,
+ .tilemapLeft = 6,
+ .tilemapTop = 15,
+ .width = 14,
+ .height = 4,
+ .paletteNum = 0xC,
+ .baseBlock = 0x2a2
}, {
- .bg = 0x00,
- .tilemapLeft = 0x16,
- .tilemapTop = 0x11,
- .width = 0x07,
- .height = 0x02,
- .paletteNum = 0x0f,
- .baseBlock = 0x020a
+ .bg = 0,
+ .tilemapLeft = 6,
+ .tilemapTop = 15,
+ .width = 15,
+ .height = 4,
+ .paletteNum = 0xC,
+ .baseBlock = 0x2da
}, {
- .bg = 0x00,
- .tilemapLeft = 0x16,
- .tilemapTop = 0x0f,
- .width = 0x07,
- .height = 0x04,
- .paletteNum = 0x0f,
- .baseBlock = 0x020a
+ .bg = 0,
+ .tilemapLeft = 6,
+ .tilemapTop = 15,
+ .width = 16,
+ .height = 4,
+ .paletteNum = 0xC,
+ .baseBlock = 0x316
}, {
- .bg = 0x00,
- .tilemapLeft = 0x16,
- .tilemapTop = 0x0d,
- .width = 0x07,
- .height = 0x06,
- .paletteNum = 0x0f,
- .baseBlock = 0x020a
+ .bg = 0,
+ .tilemapLeft = 6,
+ .tilemapTop = 15,
+ .width = 23,
+ .height = 4,
+ .paletteNum = 0xC,
+ .baseBlock = 0x356
}, {
- .bg = 0x00,
- .tilemapLeft = 0x16,
- .tilemapTop = 0x0b,
- .width = 0x07,
- .height = 0x08,
- .paletteNum = 0x0f,
- .baseBlock = 0x020a
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 17,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x20a
+ }, {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 15,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x20a
+ }, {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 13,
+ .width = 7,
+ .height = 6,
+ .paletteNum = 0xF,
+ .baseBlock = 0x20a
+ }, {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 11,
+ .width = 7,
+ .height = 8,
+ .paletteNum = 0xF,
+ .baseBlock = 0x20a
}
};
-const u8 gUnknown_8453174[] = {16, 8, 4};
+static const u8 sUnused_8453174[] = {16, 8, 4};
-EWRAM_DATA u8 gUnknown_203AD34[11] = {};
+static EWRAM_DATA u8 sOpenWindows[11] = {};
-void sub_810B858(void)
+void InitBagWindows(void)
{
u8 i;
- if (gUnknown_203ACFC.location != 3)
- InitWindows(gUnknown_84530C4);
+ if (gBagMenuState.location != 3)
+ InitWindows(sDefaultBagWindowsStd);
else
- InitWindows(gUnknown_84530E4);
+ InitWindows(sDefaultBagWindowsDeposit);
DeactivateAllTextPrinters();
TextWindow_SetUserSelectedFrame(0, 0x64, 0xE0);
TextWindow_LoadResourcesStdFrame0(0, 0x6D, 0xD0);
TextWindow_SetStdFrame0_WithPal(0, 0x81, 0xC0);
- LoadPalette(gUnknown_8453098, 0xF0, 0x20);
+ LoadPalette(sBagWindowPalF, 0xF0, 0x20);
for (i = 0; i < 3; i++)
{
FillWindowPixelBuffer(i, 0x00);
@@ -223,22 +218,22 @@ void sub_810B858(void)
ScheduleBgCopyTilemapToVram(0);
for (i = 0; i < 11; i++)
{
- gUnknown_203AD34[i] = 0xFF;
+ sOpenWindows[i] = 0xFF;
}
}
-void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx)
+void BagPrintTextOnWindow(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
{
- AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_84530B8[colorIdx], speed, str);
+ AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, sTextColors[colorIdx], speed, str);
}
-void sub_810B958(const u8 * str)
+void BagPrintTextOnWin1CenteredColor0(const u8 * str, u8 unused)
{
u32 x = 0x48 - GetStringWidth(1, str, 0);
- AddTextPrinterParameterized3(2, 1, x / 2, 1, gUnknown_84530B8[0], 0, str);
+ AddTextPrinterParameterized3(2, 1, x / 2, 1, sTextColors[0], 0, str);
}
-void sub_810B994(void)
+void BagDrawDepositItemTextBox(void)
{
u32 x;
DrawStdFrameWithCustomTileAndPalette(2, FALSE, 0x081, 0x0C);
@@ -246,77 +241,76 @@ void sub_810B994(void)
AddTextPrinterParameterized(2, 0, gText_DepositItem, x / 2, 1, 0, NULL);
}
-u8 sub_810B9DC(u8 a0, u8 a1)
+u8 ShowBagWindow(u8 whichWindow, u8 nItems)
{
- if (gUnknown_203AD34[a0] == 0xFF)
+ if (sOpenWindows[whichWindow] == 0xFF)
{
- gUnknown_203AD34[a0] = AddWindow(&gUnknown_8453104[a0 + a1]);
- if (a0 != 6)
+ sOpenWindows[whichWindow] = AddWindow(&sWindowTemplates[whichWindow + nItems]);
+ if (whichWindow != 6)
{
- DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(sOpenWindows[whichWindow], FALSE, 0x064, 0xE);
}
else
{
- DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(sOpenWindows[whichWindow], FALSE, 0x081, 0xC);
}
ScheduleBgCopyTilemapToVram(0);
}
- return gUnknown_203AD34[a0];
+ return sOpenWindows[whichWindow];
}
-void sub_810BA3C(u8 a0)
+void HideBagWindow(u8 whichWindow)
{
- ClearStdWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
- ClearWindowTilemap(gUnknown_203AD34[a0]);
- RemoveWindow(gUnknown_203AD34[a0]);
+ ClearStdWindowAndFrameToTransparent(sOpenWindows[whichWindow], FALSE);
+ ClearWindowTilemap(sOpenWindows[whichWindow]);
+ RemoveWindow(sOpenWindows[whichWindow]);
ScheduleBgCopyTilemapToVram(0);
- gUnknown_203AD34[a0] = 0xFF;
+ sOpenWindows[whichWindow] = 0xFF;
}
-u8 sub_810BA70(u8 a0)
+u8 OpenBagWindow(u8 whichWindow)
{
- if (gUnknown_203AD34[a0] == 0xFF)
+ if (sOpenWindows[whichWindow] == 0xFF)
{
- gUnknown_203AD34[a0] = AddWindow(&gUnknown_8453104[a0]);
+ sOpenWindows[whichWindow] = AddWindow(&sWindowTemplates[whichWindow]);
}
- return gUnknown_203AD34[a0];
+ return sOpenWindows[whichWindow];
}
-void sub_810BA9C(u8 a0)
+void CloseBagWindow(u8 whichWindow)
{
- if (gUnknown_203AD34[a0] != 0xFF)
+ if (sOpenWindows[whichWindow] != 0xFF)
{
- ClearDialogWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
- ClearWindowTilemap(gUnknown_203AD34[a0]);
- RemoveWindow(gUnknown_203AD34[a0]);
+ ClearDialogWindowAndFrameToTransparent(sOpenWindows[whichWindow], FALSE);
+ ClearWindowTilemap(sOpenWindows[whichWindow]);
+ RemoveWindow(sOpenWindows[whichWindow]);
PutWindowTilemap(1);
ScheduleBgCopyTilemapToVram(0);
- gUnknown_203AD34[a0] = 0xFF;
-
+ sOpenWindows[whichWindow] = 0xFF;
}
}
-u8 sub_810BAD8(u8 a0)
+u8 GetBagWindow(u8 whichWindow)
{
- return gUnknown_203AD34[a0];
+ return sOpenWindows[whichWindow];
}
-void sub_810BAE8(u8 taskId, const struct YesNoFuncTable * ptrs)
+void BagCreateYesNoMenuBottomRight(u8 taskId, const struct YesNoFuncTable * ptrs)
{
- CreateYesNoMenuWithCallbacks(taskId, &gUnknown_845311C, 2, 0, 2, 0x64, 0x0E, ptrs);
+ CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates[3], 2, 0, 2, 0x064, 0x0E, ptrs);
}
-void sub_810BB14(u8 taskId, const struct YesNoFuncTable * ptrs)
+void BagCreateYesNoMenuTopRight(u8 taskId, const struct YesNoFuncTable * ptrs)
{
- CreateYesNoMenuWithCallbacks(taskId, &gUnknown_8453124, 2, 0, 2, 0x064, 0x0E, ptrs);
+ CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates[4], 2, 0, 2, 0x064, 0x0E, ptrs);
}
-void sub_810BB40(void)
+void BagPrintMoneyAmount(void)
{
- PrintMoneyAmountInMoneyBoxWithBorder(sub_810B9DC(2, 0), 0x081, 0x0C, GetMoney(&gSaveBlock1Ptr->money));
+ PrintMoneyAmountInMoneyBoxWithBorder(ShowBagWindow(2, 0), 0x081, 0x0C, GetMoney(&gSaveBlock1Ptr->money));
}
-void sub_810BB74(u8 windowId)
+void BagDrawTextBoxOnWindow(u8 windowId)
{
DrawTextBorderOuter(windowId, 0x064, 0x0E);
}
diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c
index 6ae50d058..0807018a2 100644
--- a/src/battle_controller_oak_old_man.c
+++ b/src/battle_controller_oak_old_man.c
@@ -379,9 +379,9 @@ static void OpenBagAndChooseItem(void)
nullsub_44();
FreeAllWindowBuffers();
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
- sub_8107ECC();
+ CB2_BagMenuFromBattle();
else
- sub_810AF74();
+ InitOldManBag();
}
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 7f1f738a3..cb9e04a50 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -1330,7 +1330,7 @@ static void OpenBagAndChooseItem(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem;
nullsub_44();
FreeAllWindowBuffers();
- sub_8107ECC();
+ CB2_BagMenuFromBattle();
}
}
diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c
index 86da27ee3..d8ebe5ba4 100644
--- a/src/battle_controller_pokedude.c
+++ b/src/battle_controller_pokedude.c
@@ -23,6 +23,7 @@
#include "battle_interface.h"
#include "battle_message.h"
#include "reshow_battle_screen.h"
+#include "teachy_tv.h"
#include "constants/songs.h"
#include "constants/items.h"
#include "constants/moves.h"
@@ -733,15 +734,15 @@ static void OpenBagAndChooseItem(void)
FreeAllWindowBuffers();
switch (gSpecialVar_0x8004)
{
- case 1:
+ case TTVSCR_STATUS:
default:
- callbackId = 7;
+ callbackId = ITEMMENULOCATION_TTVSCR_STATUS;
break;
- case 3:
- callbackId = 8;
+ case TTVSCR_CATCHING:
+ callbackId = ITEMMENULOCATION_TTVSCR_CATCHING;
break;
}
- sub_810B108(callbackId);
+ InitPokedudeBag(callbackId);
}
}
diff --git a/src/battle_main.c b/src/battle_main.c
index 9f3477659..15c264369 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -86,7 +86,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum);
static void CB2_HandleStartBattle(void);
static void TryCorrectShedinjaLanguage(struct Pokemon *mon);
static void BattleMainCB1(void);
-static void CB2_QuitPokeDudeBattle(void);
+static void CB2_QuitPokedudeBattle(void);
static void sub_80111FC(struct Sprite *sprite);
static void sub_8011B94(void);
static void sub_8011BB0(void);
@@ -1438,7 +1438,7 @@ void BattleMainCB2(void)
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_DREW;
ResetPaletteFadeControl();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- SetMainCallback2(CB2_QuitPokeDudeBattle);
+ SetMainCallback2(CB2_QuitPokedudeBattle);
}
}
@@ -1454,7 +1454,7 @@ void FreeRestoreBattleData(void)
FreeBattleResources();
}
-static void CB2_QuitPokeDudeBattle(void)
+static void CB2_QuitPokedudeBattle(void)
{
UpdatePaletteFade();
if (!gPaletteFade.active)
diff --git a/src/battle_message.c b/src/battle_message.c
index 568682031..5bc0f113f 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -463,7 +463,7 @@ const u8 *const gPokeblockWasTooXStringTable[] = {
static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!");
static const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!");
-static const u8 sText_PokeDudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!");
+static const u8 sText_PokedudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!");
static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!");
static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!");
static const u8 sText_DontBeAThief[] = _("Don't be a thief!");
@@ -876,7 +876,7 @@ const u8 *const gBattleStringsTable[] = {
Text_1A5D31,
Text_1A5D6E,
Text_1A5DB1,
- sText_PokeDudeUsedItem,
+ sText_PokedudeUsedItem,
gUnknown_83FDA4D,
gUnknown_83FDA7A,
gUnknown_83FDA8C,
diff --git a/src/battle_setup.c b/src/battle_setup.c
index a46191509..06f65dae2 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -978,7 +978,7 @@ const u8 *BattleSetup_GetScriptAddrAfterBattle(void)
if (sTrainerBattleEndScript != NULL)
return sTrainerBattleEndScript;
else
- return EventScript_1C555B;
+ return Test_EventScript_Sign;
}
const u8 *BattleSetup_GetTrainerPostBattleScript(void)
@@ -986,7 +986,7 @@ const u8 *BattleSetup_GetTrainerPostBattleScript(void)
if (sTrainerABattleScriptRetAddr != NULL)
return sTrainerABattleScriptRetAddr;
else
- return EventScript_1C555B;
+ return Test_EventScript_Sign;
}
void ScrSpecial_ShowTrainerNonBattlingSpeech(void)
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index 711a17768..63677574b 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -1269,7 +1269,7 @@ static void Task_ContextMenu_Sell(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat);
- DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu);
+ DisplayItemMessageInBerryPouch(taskId, GetDialogBoxFontId(), gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu);
}
else
{
@@ -1285,7 +1285,7 @@ static void Task_ContextMenu_Sell(u8 taskId)
data[2] = 99;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell);
- DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_Sell_PrintSelectMultipleUI);
+ DisplayItemMessageInBerryPouch(taskId, GetDialogBoxFontId(), gStringVar4, Task_Sell_PrintSelectMultipleUI);
}
}
}
@@ -1295,7 +1295,7 @@ static void Task_AskSellMultiple(u8 taskId)
s16 * data = gTasks[taskId].data;
ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay);
- DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_SellMultiple_CreateYesNoMenu);
+ DisplayItemMessageInBerryPouch(taskId, GetDialogBoxFontId(), gStringVar4, Task_SellMultiple_CreateYesNoMenu);
}
static void Task_SellMultiple_CreateYesNoMenu(u8 taskId)
diff --git a/src/data.c b/src/data.c
index dddeeac51..891c9f94f 100644
--- a/src/data.c
+++ b/src/data.c
@@ -60,12 +60,12 @@ const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] =
gTrainerBackPic_Leaf + 0x2000, 0x0800,
};
-const struct SpriteFrameImage gTrainerBackPicTable_PokeDude[] =
+const struct SpriteFrameImage gTrainerBackPicTable_Pokedude[] =
{
- gTrainerBackPic_PokeDude, 0x0800,
- gTrainerBackPic_PokeDude + 0x0800, 0x0800,
- gTrainerBackPic_PokeDude + 0x1000, 0x0800,
- gTrainerBackPic_PokeDude + 0x1800, 0x0800,
+ gTrainerBackPic_Pokedude, 0x0800,
+ gTrainerBackPic_Pokedude + 0x0800, 0x0800,
+ gTrainerBackPic_Pokedude + 0x1000, 0x0800,
+ gTrainerBackPic_Pokedude + 0x1800, 0x0800,
};
const struct SpriteFrameImage gTrainerBackPicTable_OldMan[] =
diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h
index 2e107c21e..833a0cb28 100644
--- a/src/data/trainer_graphics/back_pic_anims.h
+++ b/src/data/trainer_graphics/back_pic_anims.h
@@ -16,7 +16,7 @@ static const union AnimCmd sAnimCmd_Leaf_1[] = {
ANIMCMD_END
};
-static const union AnimCmd sAnimCmd_PokeDude_1[] = {
+static const union AnimCmd sAnimCmd_Pokedude_1[] = {
ANIMCMD_FRAME(1, 24),
ANIMCMD_FRAME(2, 9),
ANIMCMD_FRAME(3, 24),
@@ -60,9 +60,9 @@ const union AnimCmd *const sBackAnims_Leaf[] = {
sAnimCmd_Leaf_1
};
-const union AnimCmd *const sBackAnims_PokeDude[] = {
+const union AnimCmd *const sBackAnims_Pokedude[] = {
sAnim_GeneralFrame0,
- sAnimCmd_PokeDude_1
+ sAnimCmd_Pokedude_1
};
const union AnimCmd *const sBackAnims_OldMan[] = {
@@ -85,6 +85,6 @@ const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] = {
sBackAnims_Leaf,
sBackAnims_RSBrendan,
sBackAnims_RSMay,
- sBackAnims_PokeDude,
+ sBackAnims_Pokedude,
sBackAnims_OldMan
};
diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h
index 86e7824c1..4d0c129a8 100644
--- a/src/data/trainer_graphics/back_pic_tables.h
+++ b/src/data/trainer_graphics/back_pic_tables.h
@@ -12,7 +12,7 @@ const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
{ (const u32 *)gTrainerBackPic_Leaf, 0x2800, 1 },
{ (const u32 *)gTrainerBackPic_RSBrendan, 0x2000, 2 },
{ (const u32 *)gTrainerBackPic_RSMay, 0x2000, 3 },
- { (const u32 *)gTrainerBackPic_PokeDude, 0x2000, 4 },
+ { (const u32 *)gTrainerBackPic_Pokedude, 0x2000, 4 },
{ (const u32 *)gTrainerBackPic_OldMan, 0x2000, 5 }
};
@@ -21,6 +21,6 @@ const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = {
{ gTrainerPalette_LeafBackPic, 1 },
{ gTrainerPalette_RSBrendan1, 2 },
{ gTrainerPalette_RSMay1, 3 },
- { gTrainerPalette_PokeDudeBackPic, 4 },
+ { gTrainerPalette_PokedudeBackPic, 4 },
{ gTrainerPalette_OldManBackPic, 5 }
};
diff --git a/src/daycare.c b/src/daycare.c
index b3e76faba..a377e97f5 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -37,9 +37,11 @@
#include "naming_screen.h"
#include "help_system.h"
#include "field_fadetransition.h"
+#include "constants/daycare.h"
+#include "constants/pokemon.h"
+#include "constants/region_map.h"
-#define EGG_MOVES_ARRAY_COUNT 10
-#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+// Combination of RSE's Day-Care (re-used on Four Island), FRLG's Day-Care, and egg_hatch.c
struct EggHatchData
{
@@ -119,7 +121,7 @@ static const struct ListMenuItem sLevelMenuItems[] =
{
{gExpandedPlaceholder_Empty, 0},
{gExpandedPlaceholder_Empty, 1},
- {gOtherText_Exit, 5}
+ {gOtherText_Exit, DAYCARE_LEVEL_MENU_EXIT}
};
static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
@@ -372,7 +374,7 @@ static const s16 sEggShardVelocities[][2] =
// code
-u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
+static u8 *DayCare_GetMonNickname(struct Pokemon *mon, u8 *dest)
{
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -380,7 +382,7 @@ u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
return StringCopy10(dest, nickname);
}
-u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
+static u8 *DayCare_GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest)
{
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -450,7 +452,7 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar
u8 mailId;
StringCopy(daycareMon->mail.OT_name, gSaveBlock2Ptr->playerName);
- GetMonNick(mon, daycareMon->mail.monName);
+ DayCare_GetMonNickname(mon, daycareMon->mail.monName);
// StripExtCtrlCodes(daycareMon->mail.monName);
// daycareMon->mail.gameLanguage = LANGUAGE_ENGLISH;
// daycareMon->mail.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE);
@@ -483,8 +485,8 @@ void StoreSelectedPokemonInDaycare(void)
static void ShiftDaycareSlots(struct DayCare *daycare)
{
// This condition is only satisfied when the player takes out the first pokemon from the daycare.
- if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0
- && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == 0)
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != SPECIES_NONE
+ && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == SPECIES_NONE)
{
daycare->mons[0].mon = daycare->mons[1].mon;
ZeroBoxMonData(&daycare->mons[1].mon);
@@ -512,11 +514,8 @@ static void ApplyDaycareExperience(struct Pokemon *mon)
while ((learnedMove = MonTryLearningNewMove(mon, firstMove)) != 0)
{
firstMove = FALSE;
- if (learnedMove == 0xFFFF)
- {
- // Mon already knows 4 moves.
+ if (learnedMove == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
- }
}
}
else
@@ -535,7 +534,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
u32 experience;
struct Pokemon pokemon;
- GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ DayCare_GetBoxMonNickname(&daycareMon->mon, gStringVar1);
species = GetBoxMonData(&daycareMon->mon, MON_DATA_SPECIES);
BoxMonToMon(&daycareMon->mon, &pokemon);
@@ -595,7 +594,7 @@ static u8 GetNumLevelsGainedForDaycareMon(struct DaycareMon *daycareMon)
{
u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
ConvertIntToDecimalStringN(gStringVar2, numLevelsGained, STR_CONV_MODE_LEFT_ALIGN, 2);
- GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ DayCare_GetBoxMonNickname(&daycareMon->mon, gStringVar1);
return numLevelsGained;
}
@@ -604,7 +603,7 @@ static u32 GetDaycareCostForSelectedMon(struct DaycareMon *daycareMon)
u32 cost;
u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
- GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ DayCare_GetBoxMonNickname(&daycareMon->mon, gStringVar1);
cost = 100 + 100 * numLevelsGained;
ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
return cost;
@@ -639,7 +638,7 @@ static void ClearDaycareMonMail(struct DayCareMail *mail)
{
s32 i;
- for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ for (i = 0; i < PLAYER_NAME_LENGTH/* + 1*/; i++)
mail->OT_name[i] = 0;
for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
mail->monName[i] = 0;
@@ -777,7 +776,7 @@ static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
static void _TriggerPendingDaycareMaleEgg(struct DayCare *daycare)
{
- daycare->offspringPersonality = (Random()) | (0x8000);
+ daycare->offspringPersonality = (Random()) | (EGG_GENDER_MALE);
FlagSet(FLAG_PENDING_DAYCARE_EGG);
}
@@ -815,7 +814,7 @@ static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv)
static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
{
u8 i;
- u8 selectedIvs[3];
+ u8 selectedIvs[INHERITED_IV_COUNT];
u8 availableIVs[NUM_STATS];
u8 whichParent[ARRAY_COUNT(selectedIvs)];
u8 iv;
@@ -829,17 +828,15 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
// Select the 3 IVs that will be inherited.
for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
{
- // Randomly pick an IV from the available list.
+ // Randomly pick an IV from the available list and stop from being chosen again.
selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
-
- // Remove the selected IV index from the available IV indices.
RemoveIVIndexFromList(availableIVs, selectedIvs[i]);
}
// Determine which parent each of the selected IVs should inherit from.
for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
{
- whichParent[i] = Random() % 2;
+ whichParent[i] = Random() % DAYCARE_MON_COUNT;
}
// Set each of inherited IVs on the egg mon.
@@ -921,14 +918,14 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
numSharedParentMoves = 0;
for (i = 0; i < MAX_MON_MOVES; i++)
{
- sHatchedEggMotherMoves[i] = 0;
- sHatchedEggFatherMoves[i] = 0;
- sHatchedEggFinalMoves[i] = 0;
+ sHatchedEggMotherMoves[i] = MOVE_NONE;
+ sHatchedEggFatherMoves[i] = MOVE_NONE;
+ sHatchedEggFinalMoves[i] = MOVE_NONE;
}
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
- sHatchedEggEggMoves[i] = 0;
+ sHatchedEggEggMoves[i] = MOVE_NONE;
for (i = 0; i < EGG_LVL_UP_MOVES_ARRAY_COUNT; i++)
- sHatchedEggLevelUpMoves[i] = 0;
+ sHatchedEggLevelUpMoves[i] = MOVE_NONE;
numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), sHatchedEggLevelUpMoves);
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -947,7 +944,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
if (sHatchedEggFatherMoves[i] == sHatchedEggEggMoves[j])
{
- if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xFFFF)
+ if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
break;
}
@@ -966,7 +963,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01/*_FOCUS_PUNCH*/ + j) && CanMonLearnTMHM(egg, j))
{
- if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xFFFF)
+ if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
}
}
@@ -991,7 +988,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
if (sHatchedEggLevelUpMoves[j] != MOVE_NONE && sHatchedEggFinalMoves[i] == sHatchedEggLevelUpMoves[j])
{
- if (GiveMoveToMon(egg, sHatchedEggFinalMoves[i]) == 0xFFFF)
+ if (GiveMoveToMon(egg, sHatchedEggFinalMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFinalMoves[i]);
break;
}
@@ -1036,7 +1033,7 @@ static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare
if (motherItem == ITEM_LIGHT_BALL || fatherItem == ITEM_LIGHT_BALL)
{
- if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == 0xFFFF)
+ if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(mon, MOVE_VOLT_TACKLE);
}
}*/
@@ -1044,13 +1041,13 @@ static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare
static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
{
u16 i;
- u16 species[2];
+ u16 species[DAYCARE_MON_COUNT];
u16 eggSpecies;
// Determine which of the daycare mons is the mother and father of the egg.
// The 0th index of the parentSlots array is considered the mother slot, and the
// 1st index is the father slot.
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
if (species[i] == SPECIES_DITTO)
@@ -1066,11 +1063,11 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
}
eggSpecies = GetEggSpecies(species[parentSlots[0]]);
- if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & 0x8000)
+ if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & EGG_GENDER_MALE)
{
eggSpecies = SPECIES_NIDORAN_M;
}
- if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & 0x8000)
+ if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE)
{
eggSpecies = SPECIES_VOLBEAT;
}
@@ -1078,19 +1075,19 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
// Make Ditto the "mother" slot if the other daycare mon is male.
if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE)
{
- u8 temp = parentSlots[1];
+ u8 ditto = parentSlots[1];
parentSlots[1] = parentSlots[0];
- parentSlots[0] = temp;
+ parentSlots[0] = ditto;
}
return eggSpecies;
}
-static void _GiveEggFromDaycare(struct DayCare *daycare) // give_egg
+static void _GiveEggFromDaycare(struct DayCare *daycare)
{
struct Pokemon egg;
u16 species;
- u8 parentSlots[2]; // 0th index is "mother" daycare slot, 1st is "father"
+ u8 parentSlots[DAYCARE_MON_COUNT];
bool8 isEgg;
species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots);
@@ -1118,7 +1115,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
u8 metLocation;
u8 isEgg;
- CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, FALSE, 0, FALSE, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -1129,7 +1126,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
SetMonData(mon, MON_DATA_LANGUAGE, &language);
if (setHotSpringsLocation)
{
- metLocation = 253; // hot springs; see PokemonSummaryScreen_PrintEggTrainerMemo
+ metLocation = METLOC_SPECIAL_EGG;
SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
}
@@ -1145,7 +1142,7 @@ static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *
u8 language;
personality = daycare->offspringPersonality | (Random() << 16);
- CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, TRUE, personality, FALSE, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -1161,7 +1158,7 @@ void GiveEggFromDaycare(void)
_GiveEggFromDaycare(&gSaveBlock1Ptr->daycare);
}
-static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
+static bool8 TryProduceOrHatchEgg(struct DayCare *daycare)
{
u32 i, validEggs = 0;
@@ -1171,15 +1168,16 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
daycare->mons[i].steps++, validEggs++;
}
- // try to trigger poke sex
- if (daycare->offspringPersonality == 0 && validEggs == 2 && (daycare->mons[1].steps & 0xFF) == 0xFF)
+ // Check if an egg should be produced
+ if (daycare->offspringPersonality == 0 && validEggs == DAYCARE_MON_COUNT && (daycare->mons[1].steps & 0xFF) == 0xFF)
{
- u8 loveScore = GetDaycareCompatibilityScore(daycare);
- if (loveScore > (Random() * 100u) / USHRT_MAX)
+ u8 compatability = GetDaycareCompatibilityScore(daycare);
+ if (compatability > (Random() * 100u) / USHRT_MAX)
TriggerPendingDaycareEgg();
}
- if (++daycare->stepCounter == 255) // hatch an egg
+ // Hatch Egg
+ if (++daycare->stepCounter == 255)
{
u32 steps;
@@ -1191,10 +1189,9 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
continue;
steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
- if (steps != 0) // subtract needed steps
+ if (steps != 0)
{
steps -= 1;
-
SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps);
}
else // hatch the egg
@@ -1212,7 +1209,7 @@ bool8 ShouldEggHatch(void)
{
if (GetBoxMonData(&gSaveBlock1Ptr->route5DayCareMon.mon, MON_DATA_SANITY_HAS_SPECIES))
gSaveBlock1Ptr->route5DayCareMon.steps++;
- return _DoEggActions_CheckHatch(&gSaveBlock1Ptr->daycare);
+ return TryProduceOrHatchEgg(&gSaveBlock1Ptr->daycare);
}
static bool8 IsEggPending(struct DayCare *daycare)
@@ -1226,22 +1223,22 @@ static bool8 IsEggPending(struct DayCare *daycare)
static void _GetDaycareMonNicknames(struct DayCare *daycare)
{
u8 text[12];
- if (GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) != 0)
+ if (GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
- GetBoxMonNick(&daycare->mons[0].mon, gStringVar1);
+ DayCare_GetBoxMonNickname(&daycare->mons[0].mon, gStringVar1);
GetBoxMonData(&daycare->mons[0].mon, MON_DATA_OT_NAME, text);
StringCopy(gStringVar3, text);
}
- if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0)
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
- GetBoxMonNick(&daycare->mons[1].mon, gStringVar2);
+ DayCare_GetBoxMonNickname(&daycare->mons[1].mon, gStringVar2);
}
}
-u16 GetSelectedMonNickAndSpecies(void)
+u16 GetSelectedMonNicknameAndSpecies(void)
{
- GetBoxMonNick(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
+ DayCare_GetBoxMonNickname(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
return GetBoxMonData(&gPlayerParty[GetCursorSelectionMonId()].box, MON_DATA_SPECIES);
}
@@ -1252,26 +1249,19 @@ void GetDaycareMonNicknames(void)
u8 GetDaycareState(void)
{
- // The daycare can be in 4 possible states:
- // 0: default state--no deposited mons, no egg
- // 1: there is an egg waiting for the player to pick it up
- // 2: there is a single pokemon in the daycare
- // 3: there are two pokemon in the daycare, no egg
-
u8 numMons;
if (IsEggPending(&gSaveBlock1Ptr->daycare))
{
- // There is an Egg waiting for the player.
- return 1;
+ return DAYCARE_EGG_WAITING;
}
numMons = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
if (numMons != 0)
{
- return numMons + 1;
+ return numMons + 1; // DAYCARE_ONE_MON or DAYCARE_TWO_MONS
}
- return 0;
+ return DAYCARE_NO_MONS;
}
u8 GetDaycarePokemonCount(void)
@@ -1283,15 +1273,15 @@ u8 GetDaycarePokemonCount(void)
return 0;
}
+// Determine if the two given egg group lists contain any of the
+// same egg groups.
static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
{
- // Determine if the two given egg group lists contain any of the
- // same egg groups.
s32 i, j;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < EGG_GROUPS_PER_MON; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < EGG_GROUPS_PER_MON; j++)
{
if (eggGroups1[i] == eggGroups2[j])
return TRUE;
@@ -1304,12 +1294,12 @@ static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
{
u32 i;
- u16 eggGroups[2][2];
- u16 species[2];
- u32 trainerIds[2];
- u32 genders[2];
+ u16 eggGroups[DAYCARE_MON_COUNT][EGG_GROUPS_PER_MON];
+ u16 species[DAYCARE_MON_COUNT];
+ u32 trainerIds[DAYCARE_MON_COUNT];
+ u32 genders[DAYCARE_MON_COUNT];
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
u32 personality;
@@ -1323,41 +1313,42 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
// check unbreedable egg group
if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED)
- return 0;
+ return PARENTS_INCOMPATIBLE;
// two Ditto can't breed
if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO)
- return 0;
+ return PARENTS_INCOMPATIBLE;
- // now that we checked, one ditto can breed with any other mon
+ // one parent is Ditto
if (eggGroups[0][0] == EGG_GROUP_DITTO || eggGroups[1][0] == EGG_GROUP_DITTO)
{
- if (trainerIds[0] == trainerIds[1]) // same trainer
- return 20;
+ if (trainerIds[0] == trainerIds[1])
+ return PARENTS_LOW_COMPATIBILITY;
- return 50; // different trainers, more chance of poke sex
+ return PARENTS_MED_COMPATABILITY;
}
+ // neither parent is Ditto
else
{
- if (genders[0] == genders[1]) // no homo
- return 0;
+ if (genders[0] == genders[1])
+ return PARENTS_INCOMPATIBLE;
if (genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
- return 0;
- if (!EggGroupsOverlap(eggGroups[0], eggGroups[1])) // not compatible with each other
- return 0;
+ return PARENTS_INCOMPATIBLE;
+ if (!EggGroupsOverlap(eggGroups[0], eggGroups[1]))
+ return PARENTS_INCOMPATIBLE;
- if (species[0] == species[1]) // same species
+ if (species[0] == species[1])
{
- if (trainerIds[0] == trainerIds[1]) // same species and trainer
- return 50;
+ if (trainerIds[0] == trainerIds[1])
+ return PARENTS_MED_COMPATABILITY; // same species, same trainer
- return 70; // different trainers, same species
+ return PARENTS_MAX_COMPATABILITY; // same species, different trainers
}
else
{
- if (trainerIds[0] != trainerIds[1]) // different trainers, different species
- return 50;
+ if (trainerIds[0] != trainerIds[1])
+ return PARENTS_MED_COMPATABILITY; // different species, different trainers
- return 20; // different species, same trainer
+ return PARENTS_LOW_COMPATIBILITY; // different species, same trainer
}
}
}
@@ -1374,13 +1365,13 @@ void SetDaycareCompatibilityString(void)
relationshipScore = GetDaycareCompatibilityScoreFromSave();
whichString = 0;
- if (relationshipScore == 0)
+ if (relationshipScore == PARENTS_INCOMPATIBLE)
whichString = 3;
- if (relationshipScore == 20)
+ if (relationshipScore == PARENTS_LOW_COMPATIBILITY)
whichString = 2;
- if (relationshipScore == 50)
+ if (relationshipScore == PARENTS_MED_COMPATABILITY)
whichString = 1;
- if (relationshipScore == 70)
+ if (relationshipScore == PARENTS_MAX_COMPATABILITY)
whichString = 0;
StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
@@ -1389,20 +1380,20 @@ void SetDaycareCompatibilityString(void)
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
{
u8 i;
- u8 symbolsCount[2]; // male, female
- symbolsCount[0] = symbolsCount[1] = 0;
+ u8 symbolsCount[GENDER_COUNT];
+ symbolsCount[MALE] = symbolsCount[FEMALE] = 0;
for (i = 0; name[i] != EOS; i++)
{
if (name[i] == CHAR_MALE)
- symbolsCount[0]++;
+ symbolsCount[MALE]++;
if (name[i] == CHAR_FEMALE)
- symbolsCount[1]++;
+ symbolsCount[FEMALE]++;
}
- if (genderRatio == MON_MALE && symbolsCount[0] != 0 && symbolsCount[1] == 0)
+ if (genderRatio == MON_MALE && symbolsCount[MALE] != 0 && symbolsCount[FEMALE] == 0)
return TRUE;
- if (genderRatio == MON_FEMALE && symbolsCount[1] != 0 && symbolsCount[0] == 0)
+ if (genderRatio == MON_FEMALE && symbolsCount[FEMALE] != 0 && symbolsCount[MALE] == 0)
return TRUE;
return FALSE;
@@ -1431,13 +1422,13 @@ static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
{
- u8 monNames[2][20];
+ u8 monNames[DAYCARE_MON_COUNT][20];
u8 i;
*dest = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- GetBoxMonNick(&daycare->mons[i].mon, monNames[i]);
+ DayCare_GetBoxMonNickname(&daycare->mons[i].mon, monNames[i]);
AppendMonGenderSymbol(monNames[i], &daycare->mons[i].mon);
}
@@ -1455,7 +1446,7 @@ static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
u8 text[20];
*dest = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
StringAppend(dest, gText_Lv);
level = GetLevelAfterDaycareSteps(&daycare->mons[i].mon, daycare->mons[i].steps);
@@ -1487,13 +1478,13 @@ static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
AddTextPrinter(&printer, 0xFF, NULL);
}
-static void DaycarePrintMonNick(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
+static void DaycarePrintMonNickname(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
{
- u8 nick[POKEMON_NAME_LENGTH * 2];
+ u8 nickname[POKEMON_NAME_LENGTH * 2];
- GetBoxMonNick(&daycare->mons[daycareSlotId].mon, nick);
- AppendMonGenderSymbol(nick, &daycare->mons[daycareSlotId].mon);
- DaycareAddTextPrinter(windowId, nick, 8, y);
+ DayCare_GetBoxMonNickname(&daycare->mons[daycareSlotId].mon, nickname);
+ AppendMonGenderSymbol(nickname, &daycare->mons[daycareSlotId].mon);
+ DaycareAddTextPrinter(windowId, nickname, 8, y);
}
static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
@@ -1519,7 +1510,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
{
if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
{
- DaycarePrintMonNick(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
+ DaycarePrintMonNickname(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
DaycarePrintMonLvl(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
}
}
@@ -1539,8 +1530,8 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
case 1:
gSpecialVar_Result = input;
break;
- case 5:
- gSpecialVar_Result = 2;
+ case DAYCARE_LEVEL_MENU_EXIT:
+ gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
break;
}
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
@@ -1551,7 +1542,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- gSpecialVar_Result = 2;
+ gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
@@ -1697,7 +1688,7 @@ static void AddHatchedMonToParty(u8 id)
GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN);
GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT);
- GetMonNick(mon, gStringVar1);
+ DayCare_GetMonNickname(mon, gStringVar1);
ball = ITEM_POKE_BALL;
SetMonData(mon, MON_DATA_POKEBALL, &ball);
@@ -1722,7 +1713,7 @@ static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId)
u8 nick[0x20];
struct DaycareMon *daycareMon = &daycare->mons[daycareId];
- GetBoxMonNick(&daycareMon->mon, nick);
+ DayCare_GetBoxMonNickname(&daycareMon->mon, nick);
if (daycareMon->mail.message.itemId != 0
&& (StringCompare(nick, daycareMon->mail.monName) != 0
|| StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
@@ -1963,7 +1954,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 5:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
+ DayCare_GetMonNickname(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF);
PlayFanfare(MUS_FANFA5);
@@ -1980,7 +1971,7 @@ static void CB2_EggHatch_1(void)
sEggHatchData->CB2_state++;
break;
case 8:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
+ DayCare_GetMonNickname(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1);
sEggHatchData->CB2_state++;
@@ -1997,7 +1988,7 @@ static void CB2_EggHatch_1(void)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
+ DayCare_GetMonNickname(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
diff --git a/src/graphics.c b/src/graphics.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/src/graphics.c
diff --git a/src/item_menu.c b/src/item_menu.c
new file mode 100644
index 000000000..ffba2eae9
--- /dev/null
+++ b/src/item_menu.c
@@ -0,0 +1,2400 @@
+#include "global.h"
+#include "gflib.h"
+#include "bag.h"
+#include "battle_controllers.h"
+#include "berry_pouch.h"
+#include "decompress.h"
+#include "event_scripts.h"
+#include "event_object_80688E4.h"
+#include "field_player_avatar.h"
+#include "graphics.h"
+#include "help_system.h"
+#include "item.h"
+#include "item_menu.h"
+#include "item_menu_icons.h"
+#include "item_use.h"
+#include "link.h"
+#include "list_menu.h"
+#include "load_save.h"
+#include "mail_data.h"
+#include "map_name_popup.h"
+#include "menu.h"
+#include "menu_indicators.h"
+#include "money.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "party_menu.h"
+#include "pokemon_storage_system.h"
+#include "scanline_effect.h"
+#include "script.h"
+#include "shop.h"
+#include "strings.h"
+#include "teachy_tv.h"
+#include "tm_case.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+#define FREE_IF_SET(ptr) ({ if (ptr) Free(ptr); })
+
+struct BagMenuAlloc
+{
+ MainCallback exitCB;
+ u8 itemOriginalLocation;
+ u8 pocketSwitchMode:4;
+ u8 itemMenuIcon:2;
+ u8 inhibitItemDescriptionPrint:2;
+ u16 contextMenuSelectedItem;
+ u8 pocketScrollArrowsTask;
+ u8 pocketSwitchArrowsTask;
+ u8 nItems[3];
+ u8 maxShowed[3];
+ u8 data[4];
+};
+
+struct BagSlots
+{
+ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT];
+ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT];
+ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT];
+ u16 itemsAbove[3];
+ u16 cursorPos[3];
+ u16 registeredItem;
+ u16 pocket;
+};
+
+EWRAM_DATA struct BagStruct gBagMenuState = {};
+static EWRAM_DATA struct BagMenuAlloc * sBagMenuDisplay = NULL;
+static EWRAM_DATA void * sBagBgTilemapBuffer = NULL;
+static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL;
+static EWRAM_DATA u8 (*sListMenuItemStrings)[19] = NULL;
+static EWRAM_DATA u8 sContextMenuItemsBuffer[4] = {};
+static EWRAM_DATA const u8 *sContextMenuItemsPtr = NULL;
+static EWRAM_DATA u8 sContextMenuNumItems = 0;
+static EWRAM_DATA struct BagSlots * sBackupPlayerBag = NULL;
+EWRAM_DATA u16 gSpecialVar_ItemId = ITEM_NONE;
+
+static void CB2_OpenBagMenu(void);
+static bool8 LoadBagMenuGraphics(void);
+static void FadeOutOfBagMenu(void);
+static void Task_WaitFadeOutOfBagMenu(u8 taskId);
+static void NullBagMenuBufferPtrs(void);
+static bool8 BagMenuInitBgsAndAllocTilemapBuffer(void);
+static bool8 DoLoadBagGraphics(void);
+static u8 CreateBagInputHandlerTask(u8 location);
+static bool8 TryAllocListMenuBuffers(void);
+static void Bag_BuildListMenuTemplate(u8 pocket);
+static void BagListMenuGetItemNameColored(u8 *dest, u16 itemId);
+static void BagListMenuMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static void BagListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y);
+static void bag_menu_print_cursor(u8 y, u8 colorIdx);
+static void PrintBagPocketName(void);
+static void PrintItemDescriptionOnMessageWindow(s32 itemIndex);
+static void CreatePocketScrollArrowPair(void);
+static void CreatePocketSwitchArrowPair(void);
+static void BagDestroyPocketSwitchArrowPair(void);
+static void CalculateInitialCursorPosAndItemsAbove(void);
+static void UpdatePocketScrollPositions(void);
+static void DestroyBagMenuResources(void);
+static void Task_ItemMenu_WaitFadeAndSwitchToExitCallback(u8 taskId);
+static void Task_AnimateWin0v(u8 taskId);
+static void ShowBagOrBeginWin0OpenTask(void);
+static void All_CalculateNItemsAndMaxShowed(void);
+static void Task_BagMenu_HandleInput(u8 taskId);
+static void Task_ItemContextMenuByLocation(u8 taskId);
+static void Bag_FillMessageBoxWithPalette(u32 a0);
+static u8 ProcessPocketSwitchInput(u8 taskId, u8 pocketId);
+static void SwitchPockets(u8 taskId, s16 direction, bool16 a2);
+static void Task_AnimateSwitchPockets(u8 taskId);
+static void BeginMovingItemInPocket(u8 taskId, s16 itemIndex);
+static void Task_MoveItemInPocket_HandleInput(u8 taskId);
+static void ExecuteMoveItemInPocket(u8 taskId, u32 itemIndex);
+static void AbortMovingItemInPocket(u8 taskId, u32 itemIndex);
+static void CopyBagListBgTileRowToTilemapBuffer(u8 a0);
+static void Task_ItemContext_FieldOrBattle(u8 taskId);
+static void Task_FieldItemContextMenuHandleInput(u8 taskId);
+static void Task_ItemMenuAction_Use(u8 taskId);
+static void Task_ItemMenuAction_Toss(u8 taskId);
+static void Task_ConfirmTossItems(u8 taskId);
+static void Task_TossItem_No(u8 taskId);
+static void Task_SelectQuantityToToss(u8 taskId);
+static void Task_TossItem_Yes(u8 taskId);
+static void Task_WaitAB_RedrawAndReturnToBag(u8 taskId);
+static void Task_ItemMenuAction_ToggleSelect(u8 taskId);
+static void Task_ItemMenuAction_Give(u8 taskId);
+static void Task_PrintThereIsNoPokemon(u8 taskId);
+static void Task_ItemMenuAction_Cancel(u8 taskId);
+static void Task_PrintItemCantBeHeld(u8 taskId);
+static void Task_WaitAButtonAndCloseContextMenu(u8 taskId);
+static void Task_ItemMenuAction_BattleUse(u8 taskId);
+static void Task_ItemContext_FieldGive(u8 taskId);
+static void GoToTMCase_Give(void);
+static void GoToBerryPouch_Give(void);
+static void ReturnToBagMenuFromSubmenu_Give(void);
+static void Task_ItemContext_PcBoxGive(u8 taskId);
+static void GoToTMCase_PCBox(void);
+static void GoToBerryPouch_PCBox(void);
+static void ReturnToBagMenuFromSubmenu_PCBox(void);
+static void Task_ItemContext_Sell(u8 taskId);
+static void GoToTMCase_Sell(void);
+static void GoToBerryPouch_Sell(void);
+static void ReturnToBagMenuFromSubmenu_Sell(void);
+static void Task_PrintSaleConfirmationText(u8 taskId);
+static void Task_ShowSellYesNoMenu(u8 taskId);
+static void Task_SellItem_No(u8 taskId);
+static void Task_InitSaleQuantitySelectInterface(u8 taskId);
+static void UpdateSalePriceDisplay(s32 price);
+static void Task_SelectQuantityToSell(u8 taskId);
+static void Task_SellItem_Yes(u8 taskId);
+static void Task_FinalizeSaleToShop(u8 taskId);
+static void Task_WaitPressAB_AfterSell(u8 taskId);
+static void Task_ItemContext_Deposit(u8 taskId);
+static void Task_SelectQuantityToDeposit(u8 taskId);
+static void Task_TryDoItemDeposit(u8 taskId);
+static bool8 BagIsTutorial(void);
+static void Task_Bag_OldManTutorial(u8 taskId);
+static void Task_Pokedude_FadeFromBag(u8 taskId);
+static void Task_Pokedude_WaitFadeAndExitBag(u8 taskId);
+static void Task_Bag_TeachyTvRegister(u8 taskId);
+static void Task_Bag_TeachyTvCatching(u8 taskId);
+static void Task_Bag_TeachyTvStatus(u8 taskId);
+static void Task_Bag_TeachyTvTMs(u8 taskId);
+
+static const struct BgTemplate sBgTemplates[2] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }
+};
+
+static const u8 *const sPocketNames[] = {
+ gText_Items2,
+ gText_KeyItems2,
+ gText_PokeBalls2
+};
+
+static const u16 sBagListBgTiles[][18] = {
+ INCBIN_U16("graphics/item_menu/bagmap_0.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_1.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_2.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_3.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_4.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_5.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_6.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_7.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_8.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_9.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_A.bin"),
+ INCBIN_U16("graphics/item_menu/bagmap_B.bin")
+};
+
+static const struct MenuAction sItemMenuContextActions[] = {
+ [ITEMMENUACTION_USE] = {gOtherText_Use, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_TOSS] = {gOtherText_Toss, {.void_u8 = Task_ItemMenuAction_Toss}},
+ [ITEMMENUACTION_REGISTER] = {gOtherText_Register, {.void_u8 = Task_ItemMenuAction_ToggleSelect}},
+ [ITEMMENUACTION_GIVE] = {gOtherText_Give, {.void_u8 = Task_ItemMenuAction_Give}},
+ [ITEMMENUACTION_CANCEL] = {gFameCheckerText_Cancel, {.void_u8 = Task_ItemMenuAction_Cancel}},
+ [ITEMMENUACTION_BATTLE_USE] = {gOtherText_Use, {.void_u8 = Task_ItemMenuAction_BattleUse}},
+ [ITEMMENUACTION_CHECK] = {gOtherText_Check, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_OPEN] = {gOtherText_Open, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_OPEN_BERRIES] = {gOtherText_Open, {.void_u8 = Task_ItemMenuAction_BattleUse}},
+ [ITEMMENUACTION_WALK] = {gOtherText_Walk, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_DESELECT] = {gOtherText_Deselect, {.void_u8 = Task_ItemMenuAction_ToggleSelect}},
+ [ITEMMENUACTION_DUMMY] = {gString_Dummy, {.void_u8 = NULL}}
+};
+
+static const u8 sContextMenuItems_Field[][4] = {
+ {
+ ITEMMENUACTION_USE,
+ ITEMMENUACTION_GIVE,
+ ITEMMENUACTION_TOSS,
+ ITEMMENUACTION_CANCEL
+ }, {
+ ITEMMENUACTION_USE,
+ ITEMMENUACTION_REGISTER,
+ ITEMMENUACTION_CANCEL,
+ ITEMMENUACTION_DUMMY
+ }, {
+ ITEMMENUACTION_GIVE,
+ ITEMMENUACTION_TOSS,
+ ITEMMENUACTION_CANCEL,
+ ITEMMENUACTION_DUMMY
+ }
+};
+
+static const u8 sContextMenuItems_CheckGiveTossCancel[] = {
+ ITEMMENUACTION_CHECK,
+ ITEMMENUACTION_GIVE,
+ ITEMMENUACTION_TOSS,
+ ITEMMENUACTION_CANCEL
+};
+
+static const u8 sContextMenuItems_GiveIfNotKeyItemPocket[][2] = {
+ {
+ ITEMMENUACTION_GIVE,
+ ITEMMENUACTION_CANCEL
+ }, {
+ ITEMMENUACTION_CANCEL,
+ ITEMMENUACTION_DUMMY
+ }, {
+ ITEMMENUACTION_GIVE,
+ ITEMMENUACTION_CANCEL
+ }
+};
+
+static const u8 sContextMenuItems_Open[] = {
+ ITEMMENUACTION_OPEN,
+ ITEMMENUACTION_CANCEL
+};
+
+static const u8 sContextMenuItems_BattleUse[] = {
+ ITEMMENUACTION_BATTLE_USE,
+ ITEMMENUACTION_CANCEL
+};
+
+static const u8 sContextMenuItems_Cancel[] = {
+ ITEMMENUACTION_CANCEL,
+ ITEMMENUACTION_DUMMY
+};
+
+static const TaskFunc sItemContextTaskFuncs[] = {
+ [ITEMMENULOCATION_FIELD] = Task_ItemContext_FieldOrBattle,
+ [ITEMMENULOCATION_PARTY] = Task_ItemContext_FieldGive,
+ [ITEMMENULOCATION_SHOP] = Task_ItemContext_Sell,
+ [ITEMMENULOCATION_ITEMPC] = Task_ItemContext_Deposit,
+ [ITEMMENULOCATION_PCBOX] = Task_ItemContext_PcBoxGive,
+ [ITEMMENULOCATION_BATTLE] = Task_ItemContext_FieldOrBattle,
+ [ITEMMENULOCATION_OLD_MAN] = NULL
+};
+
+static const struct YesNoFuncTable sYesNoMenu_Toss = {
+ Task_TossItem_Yes,
+ Task_TossItem_No
+};
+
+static const struct YesNoFuncTable sYesNoMenu_Sell = {
+ Task_SellItem_Yes,
+ Task_SellItem_No
+};
+
+static const u8 sListItemTextColor_RegularItem[] = _("{COLOR_HIGHLIGHT_SHADOW RED TRANSPARENT GREEN}");
+
+static const u8 sListItemTextColor_TmCase_BerryPouch[] = _("{COLOR_HIGHLIGHT_SHADOW LIGHT_GRAY TRANSPARENT BLACK}");
+
+static const struct ScrollArrowsTemplate sPocketSwitchArrowPairTemplate = {
+ .firstArrowType = SCROLL_ARROW_LEFT,
+ .firstX = 8,
+ .firstY = 72,
+ .secondArrowType = SCROLL_ARROW_RIGHT,
+ .secondX = 72,
+ .secondY = 72,
+ .fullyUpThreshold = 0,
+ .fullyDownThreshold = 2,
+ .tileTag = 111,
+ .palTag = 111,
+ .palNum = 0,
+};
+
+static const u8 sBlit_SelectButton[] = INCBIN_U8("graphics/interface/select_button.4bpp");
+
+void GoToBagMenu(u8 location, u8 pocket, MainCallback bagCallback)
+{
+ u8 i;
+
+ NullBagMenuBufferPtrs();
+ sBagMenuDisplay = Alloc(sizeof(struct BagMenuAlloc));
+ if (sBagMenuDisplay == NULL)
+ SetMainCallback2(bagCallback);
+ else
+ {
+ if (location != ITEMMENULOCATION_LAST)
+ gBagMenuState.location = location;
+ if (bagCallback != NULL)
+ gBagMenuState.bagCallback = bagCallback;
+ sBagMenuDisplay->exitCB = NULL;
+ sBagMenuDisplay->itemOriginalLocation = 0xFF;
+ sBagMenuDisplay->itemMenuIcon = 0;
+ sBagMenuDisplay->inhibitItemDescriptionPrint = FALSE;
+ sBagMenuDisplay->pocketScrollArrowsTask = 0xFF;
+ sBagMenuDisplay->pocketSwitchArrowsTask = 0xFF;
+ if (location == ITEMMENULOCATION_ITEMPC)
+ sBagMenuDisplay->pocketSwitchMode = 1;
+ else if (location == ITEMMENULOCATION_OLD_MAN)
+ sBagMenuDisplay->pocketSwitchMode = 2;
+ else
+ sBagMenuDisplay->pocketSwitchMode = 0;
+ for (i = 0; i < 4; i++)
+ {
+ sBagMenuDisplay->data[i] = 0;
+ }
+ if (pocket == OPEN_BAG_ITEMS || pocket == OPEN_BAG_KEYITEMS || pocket == OPEN_BAG_POKEBALLS)
+ gBagMenuState.pocket = pocket;
+ gTextFlags.autoScroll = FALSE;
+ gSpecialVar_ItemId = ITEM_NONE;
+ SetMainCallback2(CB2_OpenBagMenu);
+ }
+}
+
+void CB2_BagMenuFromStartMenu(void)
+{
+ GoToBagMenu(ITEMMENULOCATION_FIELD, OPEN_BAG_LAST, CB2_ReturnToFieldWithOpenMenu);
+}
+
+void CB2_BagMenuFromBattle(void)
+{
+ GoToBagMenu(ITEMMENULOCATION_BATTLE, OPEN_BAG_LAST, SetCB2ToReshowScreenAfterMenu2);
+}
+
+static void CB2_BagMenuRun(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ DoScheduledBgTilemapCopiesToVram();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_BagMenuRun(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_OpenBagMenu(void)
+{
+ while (1)
+ {
+ if ((u8)sub_80BF72C() == TRUE)
+ break;
+ if (LoadBagMenuGraphics() == TRUE)
+ break;
+ if (MenuHelpers_LinkSomething() == TRUE)
+ break;
+ }
+}
+
+static bool8 LoadBagMenuGraphics(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ClearScheduledBgCopiesToVram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 3:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ gMain.state++;
+ break;
+ case 4:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 5:
+ ResetItemMenuIconState();
+ gMain.state++;
+ break;
+ case 6:
+ if (!MenuHelpers_LinkSomething())
+ {
+ ResetTasks();
+ }
+ gMain.state++;
+ break;
+ case 7:
+ if (BagMenuInitBgsAndAllocTilemapBuffer())
+ {
+ sBagMenuDisplay->data[0] = 0;
+ gMain.state++;
+ }
+ else
+ {
+ FadeOutOfBagMenu();
+ return TRUE;
+ }
+ break;
+ case 8:
+ if (DoLoadBagGraphics() == TRUE)
+ gMain.state++;
+ break;
+ case 9:
+ InitBagWindows();
+ gMain.state++;
+ break;
+ case 10:
+ All_CalculateNItemsAndMaxShowed();
+ CalculateInitialCursorPosAndItemsAbove();
+ UpdatePocketScrollPositions();
+ gMain.state++;
+ break;
+ case 11:
+ if (!TryAllocListMenuBuffers())
+ {
+ FadeOutOfBagMenu();
+ return TRUE;
+ }
+ gMain.state++;
+ break;
+ case 12:
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ gMain.state++;
+ break;
+ case 13:
+ if (gBagMenuState.location != ITEMMENULOCATION_ITEMPC)
+ PrintBagPocketName();
+ else
+ BagDrawDepositItemTextBox();
+ gMain.state++;
+ break;
+ case 14:
+ taskId = CreateBagInputHandlerTask(gBagMenuState.location);
+ gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[8] = 0;
+ gMain.state++;
+ break;
+ case 15:
+ CreateBagOrSatchelSprite(gBagMenuState.pocket);
+ gMain.state++;
+ break;
+ case 16:
+ CreatePocketScrollArrowPair();
+ CreatePocketSwitchArrowPair();
+ gMain.state++;
+ break;
+ case 17:
+ ItemMenuIcons_CreateInsertIndicatorBarHidden();
+ gMain.state++;
+ break;
+ case 18:
+ ShowBagOrBeginWin0OpenTask();
+ gMain.state++;
+ break;
+ case 19:
+ if (gBagMenuState.location == ITEMMENULOCATION_ITEMPC)
+ HelpSystem_SetSomeVariable2(29);
+ else
+ HelpSystem_SetSomeVariable2(9);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(VBlankCB_BagMenuRun);
+ SetMainCallback2(CB2_BagMenuRun);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void FadeOutOfBagMenu(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ CreateTask(Task_WaitFadeOutOfBagMenu, 0);
+ SetVBlankCallback(VBlankCB_BagMenuRun);
+ SetMainCallback2(CB2_BagMenuRun);
+}
+
+static void Task_WaitFadeOutOfBagMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gBagMenuState.bagCallback);
+ DestroyBagMenuResources();
+ DestroyTask(taskId);
+ }
+}
+
+static void NullBagMenuBufferPtrs(void)
+{
+ sBagMenuDisplay = NULL;
+ sBagBgTilemapBuffer = NULL;
+ sListMenuItems = NULL;
+ sListMenuItemStrings = NULL;
+}
+
+static bool8 BagMenuInitBgsAndAllocTilemapBuffer(void)
+{
+ void **buff;
+ ResetAllBgsCoordinatesAndBgCntRegs();
+ buff = &sBagBgTilemapBuffer;
+ *buff = Alloc(0x800);
+ if (*buff == NULL)
+ return FALSE;
+ memset(*buff, 0, 0x800);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
+ SetBgTilemapBuffer(1, *buff);
+ ScheduleBgCopyTilemapToVram(1);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
+ ShowBg(0);
+ ShowBg(1);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ return TRUE;
+}
+
+static bool8 DoLoadBagGraphics(void)
+{
+ switch (sBagMenuDisplay->data[0])
+ {
+ case 0:
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gUnknown_8E830CC, 0, 0, 0);
+ sBagMenuDisplay->data[0]++;
+ break;
+ case 1:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ if (gBagMenuState.location != ITEMMENULOCATION_ITEMPC)
+ LZDecompressWram(gUnknown_8E832C0, sBagBgTilemapBuffer);
+ else
+ LZDecompressWram(gUnknown_8E83444, sBagBgTilemapBuffer);
+ sBagMenuDisplay->data[0]++;
+ }
+ break;
+ case 2:
+ LoadCompressedPalette(gBagBgPalette, 0x00, 0x60);
+ if (!BagIsTutorial() && gSaveBlock2Ptr->playerGender != MALE)
+ LoadCompressedPalette(gBagBgPalette_FemaleOverride, 0x00, 0x20);
+ sBagMenuDisplay->data[0]++;
+ break;
+ case 3:
+ if (BagIsTutorial() == TRUE || gSaveBlock2Ptr->playerGender == MALE)
+ LoadCompressedSpriteSheet(&gSpriteSheet_Backpack);
+ else
+ LoadCompressedSpriteSheet(&gSpriteSheet_Satchel);
+ sBagMenuDisplay->data[0]++;
+ break;
+ case 4:
+ LoadCompressedSpritePalette(&gSpritePalette_BagOrSatchel);
+ sBagMenuDisplay->data[0]++;
+ break;
+ case 5:
+ LoadCompressedSpriteSheet(&gBagSwapSpriteSheet);
+ sBagMenuDisplay->data[0]++;
+ break;
+ default:
+ LoadCompressedSpritePalette(&gBagSwapSpritePalette);
+ sBagMenuDisplay->data[0] = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 CreateBagInputHandlerTask(u8 location)
+{
+ switch (location)
+ {
+ case ITEMMENULOCATION_OLD_MAN:
+ return CreateTask(Task_Bag_OldManTutorial, 0);
+ case ITEMMENULOCATION_TTVSCR_REGISTER:
+ return CreateTask(Task_Bag_TeachyTvRegister, 0);
+ case ITEMMENULOCATION_TTVSCR_TMS:
+ return CreateTask(Task_Bag_TeachyTvTMs, 0);
+ case ITEMMENULOCATION_TTVSCR_STATUS:
+ return CreateTask(Task_Bag_TeachyTvStatus, 0);
+ case ITEMMENULOCATION_TTVSCR_CATCHING:
+ return CreateTask(Task_Bag_TeachyTvCatching, 0);
+ default:
+ return CreateTask(Task_BagMenu_HandleInput, 0);
+ }
+}
+
+static bool8 TryAllocListMenuBuffers(void)
+{
+ // The items pocket has the highest capacity, + 1 for CANCEL
+ sListMenuItems = Alloc((BAG_ITEMS_COUNT + 1) * sizeof(struct ListMenuItem));
+ if (sListMenuItems == NULL)
+ return FALSE;
+ sListMenuItemStrings = Alloc((BAG_ITEMS_COUNT + 1) * sizeof(*sListMenuItemStrings));
+ if (sListMenuItemStrings == NULL)
+ return FALSE;
+ return TRUE;
+}
+
+static void Bag_BuildListMenuTemplate(u8 pocket)
+{
+ u16 i;
+ struct BagPocket * bagPocket = &gBagPockets[pocket];
+ for (i = 0; i < sBagMenuDisplay->nItems[pocket]; i++)
+ {
+ BagListMenuGetItemNameColored(sListMenuItemStrings[i], bagPocket->itemSlots[i].itemId);
+ sListMenuItems[i].label = sListMenuItemStrings[i];
+ sListMenuItems[i].index = i;
+ }
+ StringCopy(sListMenuItemStrings[i], sListItemTextColor_RegularItem);
+ StringAppend(sListMenuItemStrings[i], gFameCheckerText_Cancel);
+ sListMenuItems[i].label = sListMenuItemStrings[i];
+ sListMenuItems[i].index = i;
+ gMultiuseListMenuTemplate.items = sListMenuItems;
+ gMultiuseListMenuTemplate.totalItems = sBagMenuDisplay->nItems[pocket] + 1;
+ gMultiuseListMenuTemplate.windowId = 0;
+ gMultiuseListMenuTemplate.header_X = 0;
+ gMultiuseListMenuTemplate.item_X = 9;
+ gMultiuseListMenuTemplate.cursor_X = 1;
+ gMultiuseListMenuTemplate.lettersSpacing = 0;
+ gMultiuseListMenuTemplate.itemVerticalPadding = 2;
+ gMultiuseListMenuTemplate.upText_Y = 2;
+ gMultiuseListMenuTemplate.maxShowed = sBagMenuDisplay->maxShowed[pocket];
+ gMultiuseListMenuTemplate.fontId = 2;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 0;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = BagListMenuMoveCursorFunc;
+ gMultiuseListMenuTemplate.itemPrintFunc = BagListMenuItemPrintFunc;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+ gMultiuseListMenuTemplate.scrollMultiple = 0;
+}
+
+static void BagListMenuGetItemNameColored(u8 *dest, u16 itemId)
+{
+ if (itemId == ITEM_TM_CASE || itemId == ITEM_BERRY_POUCH)
+ StringCopy(dest, sListItemTextColor_TmCase_BerryPouch);
+ else
+ StringCopy(dest, sListItemTextColor_RegularItem);
+ StringAppend(dest, ItemId_GetName(itemId));
+}
+
+static void BagListMenuMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (onInit != TRUE)
+ {
+ PlaySE(SE_BAG1);
+ sub_8098580();
+ }
+ if (sBagMenuDisplay->itemOriginalLocation == 0xFF)
+ {
+ DestroyItemMenuIcon(sBagMenuDisplay->itemMenuIcon ^ 1);
+ if (sBagMenuDisplay->nItems[gBagMenuState.pocket] != itemIndex)
+ CreateItemMenuIcon(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, itemIndex), sBagMenuDisplay->itemMenuIcon);
+ else
+ CreateItemMenuIcon(ITEM_N_A, sBagMenuDisplay->itemMenuIcon);
+ sBagMenuDisplay->itemMenuIcon ^= 1;
+ if (!sBagMenuDisplay->inhibitItemDescriptionPrint)
+ PrintItemDescriptionOnMessageWindow(itemIndex);
+ }
+}
+
+static void BagListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y)
+{
+ u16 bagItemId;
+ u16 bagItemQuantity;
+ if (sBagMenuDisplay->itemOriginalLocation != 0xFF)
+ {
+ if (sBagMenuDisplay->itemOriginalLocation == (u8)itemId)
+ bag_menu_print_cursor(y, 2);
+ else
+ bag_menu_print_cursor(y, 0xFF);
+ }
+ if (itemId != -2 && sBagMenuDisplay->nItems[gBagMenuState.pocket] != itemId)
+ {
+ bagItemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, itemId);
+ bagItemQuantity = BagGetQuantityByPocketPosition(gBagMenuState.pocket + 1, itemId);
+ if (gBagMenuState.pocket != POCKET_KEY_ITEMS - 1 && !itemid_is_unique(bagItemId))
+ {
+ ConvertIntToDecimalStringN(gStringVar1, bagItemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BagPrintTextOnWindow(windowId, 0, gStringVar4, 0x6e, y, 0, 0, 0xFF, 1);
+ }
+ else if (gSaveBlock1Ptr->registeredItem != ITEM_NONE && gSaveBlock1Ptr->registeredItem == bagItemId)
+ {
+ BlitBitmapToWindow(windowId, sBlit_SelectButton, 0x70, y, 0x18, 0x10);
+ }
+ }
+}
+
+static void bag_menu_print_cursor_(u8 taskId, u8 colorIdx)
+{
+ bag_menu_print_cursor(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx);
+}
+
+static void bag_menu_print_cursor(u8 y, u8 colorIdx)
+{
+ if (colorIdx == 0xFF)
+ {
+ FillWindowPixelRect(0, PIXEL_FILL(0), 1, y, GetMenuCursorDimensionByFont(2, 0), GetMenuCursorDimensionByFont(2, 1));
+ }
+ else
+ {
+ BagPrintTextOnWindow(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
+ }
+}
+
+static void PrintBagPocketName(void)
+{
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ BagPrintTextOnWin1CenteredColor0(sPocketNames[gBagMenuState.pocket], gBagMenuState.pocket);
+}
+
+static void PrintItemDescriptionOnMessageWindow(s32 itemIndex)
+{
+ const u8 *description;
+ if (itemIndex != sBagMenuDisplay->nItems[gBagMenuState.pocket])
+ description = ItemId_GetDescription(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, itemIndex));
+ else
+ description = gText_CloseBag;
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ BagPrintTextOnWindow(1, 2, description, 0, 3, 2, 0, 0, 0);
+}
+
+static void CreatePocketScrollArrowPair(void)
+{
+ sBagMenuDisplay->pocketScrollArrowsTask = AddScrollIndicatorArrowPairParameterized(
+ SCROLL_ARROW_UP,
+ 160,
+ 8,
+ 104,
+ sBagMenuDisplay->nItems[gBagMenuState.pocket] - sBagMenuDisplay->maxShowed[gBagMenuState.pocket] + 1,
+ 110,
+ 110,
+ &gBagMenuState.cursorPos[gBagMenuState.pocket]
+ );
+}
+
+static void CreatePocketSwitchArrowPair(void)
+{
+ if (sBagMenuDisplay->pocketSwitchMode != 1)
+ {
+ sBagMenuDisplay->pocketSwitchArrowsTask = AddScrollIndicatorArrowPair(&sPocketSwitchArrowPairTemplate, &gBagMenuState.pocket);
+ }
+}
+
+static void CreatePocketScrollArrowPair_SellQuantity(void)
+{
+ sBagMenuDisplay->contextMenuSelectedItem = 1;
+ sBagMenuDisplay->pocketScrollArrowsTask = AddScrollIndicatorArrowPairParameterized(
+ SCROLL_ARROW_UP,
+ 152,
+ 72,
+ 104,
+ 2,
+ 110,
+ 110,
+ &sBagMenuDisplay->contextMenuSelectedItem
+ );
+}
+
+static void CreateArrowPair_QuantitySelect(void)
+{
+ sBagMenuDisplay->contextMenuSelectedItem = 1;
+ sBagMenuDisplay->pocketScrollArrowsTask = AddScrollIndicatorArrowPairParameterized(
+ SCROLL_ARROW_UP,
+ 212,
+ 120,
+ 152,
+ 2,
+ 110,
+ 110,
+ &sBagMenuDisplay->contextMenuSelectedItem
+ );
+}
+
+static void BagDestroyPocketScrollArrowPair(void)
+{
+ if (sBagMenuDisplay->pocketScrollArrowsTask != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sBagMenuDisplay->pocketScrollArrowsTask);
+ sBagMenuDisplay->pocketScrollArrowsTask = 0xFF;
+ }
+ BagDestroyPocketSwitchArrowPair();
+}
+
+static void BagDestroyPocketSwitchArrowPair(void)
+{
+ if (sBagMenuDisplay->pocketSwitchArrowsTask != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sBagMenuDisplay->pocketSwitchArrowsTask);
+ sBagMenuDisplay->pocketSwitchArrowsTask = 0xFF;
+ }
+}
+
+void ResetBagCursorPositions(void)
+{
+ u8 i;
+ gBagMenuState.pocket = POCKET_ITEMS - 1;
+ gBagMenuState.bagOpen = FALSE;
+ for (i = 0; i < 3; i++)
+ {
+ gBagMenuState.itemsAbove[i] = 0;
+ gBagMenuState.cursorPos[i] = 0;
+ }
+}
+
+void PocketCalculateInitialCursorPosAndItemsAbove(u8 pocketId)
+{
+ if (gBagMenuState.cursorPos[pocketId] != 0 && gBagMenuState.cursorPos[pocketId] + sBagMenuDisplay->maxShowed[pocketId] > sBagMenuDisplay->nItems[pocketId] + 1)
+ {
+ gBagMenuState.cursorPos[pocketId] = (sBagMenuDisplay->nItems[pocketId] + 1) - sBagMenuDisplay->maxShowed[pocketId];
+ }
+ if (gBagMenuState.cursorPos[pocketId] + gBagMenuState.itemsAbove[pocketId] >= sBagMenuDisplay->nItems[pocketId] + 1)
+ {
+ if (sBagMenuDisplay->nItems[pocketId] + 1 < 2)
+ gBagMenuState.itemsAbove[pocketId] = 0;
+ else
+ gBagMenuState.itemsAbove[pocketId] = sBagMenuDisplay->nItems[pocketId];
+ }
+}
+
+static void CalculateInitialCursorPosAndItemsAbove(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ {
+ PocketCalculateInitialCursorPosAndItemsAbove(i);
+ }
+}
+
+static void UpdatePocketScrollPositions(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gBagMenuState.itemsAbove[i] > 3)
+ {
+ for (j = 0; j <= gBagMenuState.itemsAbove[i] - 3; gBagMenuState.itemsAbove[i]--, gBagMenuState.cursorPos[i]++, j++)
+ {
+ if (gBagMenuState.cursorPos[i] + sBagMenuDisplay->maxShowed[i] == sBagMenuDisplay->nItems[i] + 1)
+ break;
+ }
+ }
+ }
+}
+
+static void DestroyBagMenuResources(void)
+{
+ FREE_IF_SET(sBagMenuDisplay);
+ FREE_IF_SET(sBagBgTilemapBuffer);
+ FREE_IF_SET(sListMenuItems);
+ FREE_IF_SET(sListMenuItemStrings);
+ FreeAllWindowBuffers();
+}
+
+void ItemMenu_StartFadeToExitCallback(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_ItemMenu_WaitFadeAndSwitchToExitCallback;
+}
+
+static void Task_ItemMenu_WaitFadeAndSwitchToExitCallback(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active && FuncIsActiveTask(Task_AnimateWin0v) != TRUE)
+ {
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ if (sBagMenuDisplay->exitCB != NULL)
+ SetMainCallback2(sBagMenuDisplay->exitCB);
+ else
+ SetMainCallback2(gBagMenuState.bagCallback);
+ BagDestroyPocketScrollArrowPair();
+ DestroyBagMenuResources();
+ DestroyTask(taskId);
+ }
+}
+
+static void ShowBagOrBeginWin0OpenTask(void)
+{
+ u16 paldata = RGB_BLACK;
+ u8 taskId;
+
+ LoadPalette(&paldata, 0x00, 0x02);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ if (gBagMenuState.bagOpen == TRUE)
+ {
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 240));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 0));
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 240));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160));
+ taskId = CreateTask(Task_AnimateWin0v, 0);
+ gTasks[taskId].data[0] = 192;
+ gTasks[taskId].data[1] = -16;
+ gBagMenuState.bagOpen = TRUE;
+ }
+}
+
+void Bag_BeginCloseWin0Animation(void)
+{
+
+ u8 taskId = CreateTask(Task_AnimateWin0v, 0);
+ gTasks[taskId].data[0] = -16;
+ gTasks[taskId].data[1] = 16;
+ gBagMenuState.bagOpen = FALSE;
+}
+
+void CB2_SetUpReshowBattleScreenAfterMenu(void)
+{
+ gBagMenuState.bagOpen = FALSE;
+}
+
+static void Task_AnimateWin0v(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[0] += data[1];
+ if (data[0] > 160)
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160));
+ else
+ SetGpuReg(REG_OFFSET_WIN0V, data[0]);
+ if ((data[1] == 16 && data[0] == 160) || (data[1] == -16 && data[0] == 0))
+ DestroyTask(taskId);
+}
+
+void MoveItemSlotInList(struct ItemSlot * itemSlots_, u32 from, u32 to_)
+{
+ // dumb assignments needed to match
+ struct ItemSlot *itemSlots = itemSlots_;
+ u32 to = to_;
+
+ if (from != to)
+ {
+ s16 i, count;
+ struct ItemSlot firstSlot = itemSlots[from];
+
+ if (to > from)
+ {
+ to--;
+ for (i = from, count = to; i < count; i++)
+ itemSlots[i] = itemSlots[i + 1];
+ }
+ else
+ {
+ for (i = from, count = to; i > count; i--)
+ itemSlots[i] = itemSlots[i - 1];
+ }
+ itemSlots[to] = firstSlot;
+ }
+}
+
+void Pocket_CalculateNItemsAndMaxShowed(u8 pocketId)
+{
+ u16 i;
+ struct BagPocket * pocket = &gBagPockets[pocketId];
+ BagPocketCompaction(pocket->itemSlots, pocket->capacity);
+ sBagMenuDisplay->nItems[pocketId] = 0;
+ for (i = 0; i < pocket->capacity; i++)
+ {
+ if (pocket->itemSlots[i].itemId == ITEM_NONE)
+ break;
+ sBagMenuDisplay->nItems[pocketId]++;
+ }
+ if (sBagMenuDisplay->nItems[pocketId] + 1 > 6)
+ sBagMenuDisplay->maxShowed[pocketId] = 6;
+ else
+ sBagMenuDisplay->maxShowed[pocketId] = sBagMenuDisplay->nItems[pocketId] + 1;
+}
+
+static void All_CalculateNItemsAndMaxShowed(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ Pocket_CalculateNItemsAndMaxShowed(i);
+}
+
+void DisplayItemMessageInBag(u8 taskId, u8 fontId, const u8 * string, TaskFunc followUpFunc)
+{
+ s16 *data = gTasks[taskId].data;
+ data[10] = OpenBagWindow(5);
+ FillWindowPixelBuffer(data[10], PIXEL_FILL(1));
+ DisplayMessageAndContinueTask(taskId, data[10], 0x06D, 0x0D, fontId, GetTextSpeedSetting(), string, followUpFunc);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void ItemMenu_SetExitCallback(MainCallback cb)
+{
+ sBagMenuDisplay->exitCB = cb;
+}
+
+static u8 GetSelectedItemIndex(u8 pocket)
+{
+ return gBagMenuState.cursorPos[pocket] + gBagMenuState.itemsAbove[pocket];
+}
+
+static void Task_BagMenu_HandleInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 cursorPos;
+ u16 itemsAbove;
+ s32 input;
+
+ if (gPaletteFade.active)
+ return;
+ if (FuncIsActiveTask(Task_AnimateWin0v) == TRUE)
+ return;
+ if ((u8)sub_80BF72C() == TRUE)
+ return;
+ switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket))
+ {
+ case 1:
+ SwitchPockets(taskId, -1, FALSE);
+ return;
+ case 2:
+ SwitchPockets(taskId, 1, FALSE);
+ return;
+ default:
+ if (JOY_NEW(SELECT_BUTTON) && gBagMenuState.location == ITEMMENULOCATION_FIELD)
+ {
+ ListMenuGetScrollAndRow(data[0], &cursorPos, &itemsAbove);
+ if (cursorPos + itemsAbove != sBagMenuDisplay->nItems[gBagMenuState.pocket])
+ {
+ PlaySE(SE_SELECT);
+ BeginMovingItemInPocket(taskId, cursorPos + itemsAbove);
+ return;
+ }
+ }
+ break;
+ }
+ input = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ switch (input)
+ {
+ case LIST_NOTHING_CHOSEN:
+ return;
+ case LIST_CANCEL:
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = ITEM_NONE;
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = ItemMenu_StartFadeToExitCallback;
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ if (input == sBagMenuDisplay->nItems[gBagMenuState.pocket])
+ {
+ gSpecialVar_ItemId = ITEM_NONE;
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = ItemMenu_StartFadeToExitCallback;
+ }
+ else
+ {
+ BagDestroyPocketScrollArrowPair();
+ bag_menu_print_cursor_(data[0], 2);
+ data[1] = input;
+ data[2] = BagGetQuantityByPocketPosition(gBagMenuState.pocket + 1, input);
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, input);
+ gTasks[taskId].func = Task_ItemContextMenuByLocation;
+ }
+ break;
+ }
+}
+
+static void Task_ItemContextMenuByLocation(u8 taskId)
+{
+ Bag_FillMessageBoxWithPalette(1);
+ sItemContextTaskFuncs[gBagMenuState.location](taskId);
+}
+
+static void Task_RedrawArrowsAndReturnToBagMenuSelect(u8 taskId)
+{
+ Bag_FillMessageBoxWithPalette(0);
+ CreatePocketScrollArrowPair();
+ CreatePocketSwitchArrowPair();
+ gTasks[taskId].func = Task_BagMenu_HandleInput;
+}
+
+static void Bag_FillMessageBoxWithPalette(u32 a0)
+{
+ SetBgTilemapPalette(1, 0, 14, 30, 6, a0 + 1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+static u8 ProcessPocketSwitchInput(u8 taskId, u8 pocketId)
+{
+ u8 lrState;
+ if (sBagMenuDisplay->pocketSwitchMode != 0)
+ return 0;
+ lrState = GetLRKeysState();
+ if (JOY_NEW(DPAD_LEFT) || lrState == 1)
+ {
+ if (pocketId == POCKET_ITEMS - 1)
+ return 0;
+ PlaySE(SE_BAG2);
+ return 1;
+ }
+ if (JOY_NEW(DPAD_RIGHT) || lrState == 2)
+ {
+ if (pocketId >= POCKET_POKE_BALLS - 1)
+ return 0;
+ PlaySE(SE_BAG2);
+ return 2;
+ }
+ return 0;
+}
+
+static void SwitchPockets(u8 taskId, s16 direction, bool16 a2)
+{
+ s16 *data = gTasks[taskId].data;
+ data[13] = 0;
+ data[12] = 0;
+ data[11] = direction;
+ if (!a2)
+ {
+ ClearWindowTilemap(0);
+ ClearWindowTilemap(1);
+ ClearWindowTilemap(2);
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ ScheduleBgCopyTilemapToVram(0);
+ DestroyItemMenuIcon(sBagMenuDisplay->itemMenuIcon ^ 1);
+ BagDestroyPocketScrollArrowPair();
+ }
+ FillBgTilemapBufferRect_Palette0(1, 0x02D, 11, 1, 18, 12);
+ ScheduleBgCopyTilemapToVram(1);
+ sub_8098528(gBagMenuState.pocket + direction);
+ SetTaskFuncWithFollowupFunc(taskId, Task_AnimateSwitchPockets, gTasks[taskId].func);
+}
+
+static void Task_AnimateSwitchPockets(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!MenuHelpers_LinkSomething() && !BagIsTutorial())
+ {
+ switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket + data[11]))
+ {
+ case 1:
+ gBagMenuState.pocket += data[11];
+ SwitchTaskToFollowupFunc(taskId);
+ SwitchPockets(taskId, -1, TRUE);
+ return;
+ case 2:
+ gBagMenuState.pocket += data[11];
+ SwitchTaskToFollowupFunc(taskId);
+ SwitchPockets(taskId, 1, TRUE);
+ return;
+ }
+ }
+ switch (data[13])
+ {
+ case 0:
+ if (data[12] != 0x7FFF)
+ {
+ data[12]++;
+ CopyBagListBgTileRowToTilemapBuffer(data[12]);
+ if (data[12] == 12)
+ data[12] = 0x7FFF;
+ }
+ if (data[12] == 0x7FFF)
+ data[13]++;
+ break;
+ case 1:
+ gBagMenuState.pocket += data[11];
+ PrintBagPocketName();
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ PutWindowTilemap(1);
+ PutWindowTilemap(2);
+ ScheduleBgCopyTilemapToVram(0);
+ CreatePocketScrollArrowPair();
+ CreatePocketSwitchArrowPair();
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ }
+}
+
+static void BeginMovingItemInPocket(u8 taskId, s16 itemIndex)
+{
+ u16 itemsAbove;
+ u16 cursorPos;
+ s16 *data = gTasks[taskId].data;
+ ListMenuGetScrollAndRow(data[0], &cursorPos, &itemsAbove);
+ ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1);
+ data[1] = itemIndex;
+ sBagMenuDisplay->itemOriginalLocation = itemIndex;
+ StringCopy(gStringVar1, ItemId_GetName(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1])));
+ StringExpandPlaceholders(gStringVar4, gOtherText_WhereShouldTheStrVar1BePlaced);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ BagPrintTextOnWindow(1, 2, gStringVar4, 0, 3, 2, 0, 0, 0);
+ ItemMenuIcons_MoveInsertIndicatorBar(0, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
+ ItemMenuIcons_ToggleInsertIndicatorBarVisibility(FALSE);
+ BagDestroyPocketSwitchArrowPair();
+ bag_menu_print_cursor_(data[0], 2);
+ gTasks[taskId].func = Task_MoveItemInPocket_HandleInput;
+}
+
+static void Task_MoveItemInPocket_HandleInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s32 input;
+ u16 itemsAbove;
+ u16 cursorPos;
+ if ((u8)sub_80BF72C() == TRUE)
+ return;
+ input = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ ItemMenuIcons_MoveInsertIndicatorBar(0, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
+ if (JOY_NEW(SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sBagMenuDisplay->itemOriginalLocation = 0xFF;
+ ListMenuGetScrollAndRow(data[0], &cursorPos, &itemsAbove);
+ ExecuteMoveItemInPocket(taskId, cursorPos + itemsAbove);
+ return;
+ }
+ switch (input)
+ {
+ case LIST_NOTHING_CHOSEN:
+ return;
+ case LIST_CANCEL:
+ PlaySE(SE_SELECT);
+ sBagMenuDisplay->itemOriginalLocation = 0xFF;
+ ListMenuGetScrollAndRow(data[0], &cursorPos, &itemsAbove);
+ AbortMovingItemInPocket(taskId, cursorPos + itemsAbove);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sBagMenuDisplay->itemOriginalLocation = 0xFF;
+ ExecuteMoveItemInPocket(taskId, input);
+ break;
+ }
+}
+
+static void ExecuteMoveItemInPocket(u8 taskId, u32 itemIndex)
+{
+ s16 *data = gTasks[taskId].data;
+ if (data[1] == itemIndex || data[1] == itemIndex - 1)
+ {
+ AbortMovingItemInPocket(taskId, itemIndex);
+ }
+ else
+ {
+ MoveItemSlotInList(gBagPockets[gBagMenuState.pocket].itemSlots, data[1], itemIndex);
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ if (data[1] < itemIndex)
+ gBagMenuState.itemsAbove[gBagMenuState.pocket]--;
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ ItemMenuIcons_ToggleInsertIndicatorBarVisibility(TRUE);
+ CreatePocketSwitchArrowPair();
+ gTasks[taskId].func = Task_BagMenu_HandleInput;
+ }
+}
+
+static void AbortMovingItemInPocket(u8 taskId, u32 itemIndex)
+{
+ s16 *data = gTasks[taskId].data;
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ if (data[1] < itemIndex)
+ gBagMenuState.itemsAbove[gBagMenuState.pocket]--;
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ ItemMenuIcons_ToggleInsertIndicatorBarVisibility(TRUE);
+ CreatePocketSwitchArrowPair();
+ gTasks[taskId].func = Task_BagMenu_HandleInput;
+}
+
+static void InitQuantityToTossOrDeposit(u16 cursorPos, const u8 *str)
+{
+ u8 r4;
+ u8 r5 = ShowBagWindow(6, 2);
+ CopyItemName(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, cursorPos), gStringVar1);
+ StringExpandPlaceholders(gStringVar4, str);
+ BagPrintTextOnWindow(r5, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ r4 = ShowBagWindow(0, 0);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BagPrintTextOnWindow(r4, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+ CreateArrowPair_QuantitySelect();
+}
+
+static void UpdateQuantityToTossOrDeposit(s16 value, u8 ndigits)
+{
+ u8 r6 = GetBagWindow(0);
+ FillWindowPixelBuffer(r6, PIXEL_FILL(1));
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, ndigits);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BagPrintTextOnWindow(r6, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+}
+
+static void CopyBagListBgTileRowToTilemapBuffer(u8 frame)
+{
+ CopyToBgTilemapBufferRect(1, sBagListBgTiles[12 - frame], 11, 13 - frame, 18, 1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+static void OpenContextMenu(u8 taskId)
+{
+ u8 r6;
+ u8 r4;
+ switch (gBagMenuState.location)
+ {
+ case ITEMMENULOCATION_BATTLE:
+ case ITEMMENULOCATION_TTVSCR_STATUS:
+ if (gSpecialVar_ItemId == ITEM_BERRY_POUCH)
+ {
+ sContextMenuItemsBuffer[0] = ITEMMENUACTION_OPEN_BERRIES;
+ sContextMenuItemsBuffer[1] = ITEMMENUACTION_CANCEL;
+ sContextMenuItemsPtr = sContextMenuItemsBuffer;
+ sContextMenuNumItems = 2;
+ }
+ else if (ItemId_GetBattleUsage(gSpecialVar_ItemId))
+ {
+ sContextMenuItemsPtr = sContextMenuItems_BattleUse;
+ sContextMenuNumItems = 2;
+ }
+ else
+ {
+ sContextMenuItemsPtr = sContextMenuItems_Cancel;
+ sContextMenuNumItems = 1;
+ }
+ break;
+ case ITEMMENULOCATION_OLD_MAN:
+ case ITEMMENULOCATION_TTVSCR_CATCHING:
+ sContextMenuItemsPtr = sContextMenuItems_BattleUse;
+ sContextMenuNumItems = 2;
+ break;
+ default:
+ if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE)
+ {
+ if (gSpecialVar_ItemId == ITEM_TM_CASE || gSpecialVar_ItemId == ITEM_BERRY_POUCH)
+ {
+ sContextMenuItemsPtr = sContextMenuItems_Open;
+ sContextMenuNumItems = 2;
+ }
+ else
+ {
+ if (gBagMenuState.pocket == POCKET_KEY_ITEMS - 1)
+ sContextMenuNumItems = 1;
+ else
+ sContextMenuNumItems = 2;
+ sContextMenuItemsPtr = sContextMenuItems_GiveIfNotKeyItemPocket[gBagMenuState.pocket];
+ }
+ }
+ else
+ {
+ switch (gBagMenuState.pocket)
+ {
+ case OPEN_BAG_ITEMS:
+ sContextMenuNumItems = 4;
+ if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
+ sContextMenuItemsPtr = sContextMenuItems_CheckGiveTossCancel;
+ else
+ sContextMenuItemsPtr = sContextMenuItems_Field[gBagMenuState.pocket];
+ break;
+ case OPEN_BAG_KEYITEMS:
+ sContextMenuItemsPtr = sContextMenuItemsBuffer;
+ sContextMenuNumItems = 3;
+ sContextMenuItemsBuffer[2] = ITEMMENUACTION_CANCEL;
+ if (gSaveBlock1Ptr->registeredItem == gSpecialVar_ItemId)
+ sContextMenuItemsBuffer[1] = ITEMMENUACTION_DESELECT;
+ else
+ sContextMenuItemsBuffer[1] = ITEMMENUACTION_REGISTER;
+ if (gSpecialVar_ItemId == ITEM_TM_CASE || gSpecialVar_ItemId == ITEM_BERRY_POUCH)
+ sContextMenuItemsBuffer[0] = ITEMMENUACTION_OPEN;
+ else if (gSpecialVar_ItemId == ITEM_BICYCLE && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE))
+ sContextMenuItemsBuffer[0] = ITEMMENUACTION_WALK;
+ else
+ sContextMenuItemsBuffer[0] = ITEMMENUACTION_USE;
+ break;
+ case OPEN_BAG_POKEBALLS:
+ sContextMenuItemsPtr = sContextMenuItems_Field[gBagMenuState.pocket];
+ sContextMenuNumItems = 3;
+ break;
+ }
+ }
+ }
+ r6 = ShowBagWindow(10, sContextMenuNumItems - 1);
+ AddItemMenuActionTextPrinters(
+ r6,
+ 2,
+ GetMenuCursorDimensionByFont(2, 0),
+ 2,
+ GetFontAttribute(2, FONTATTR_LETTER_SPACING),
+ GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2,
+ sContextMenuNumItems,
+ sItemMenuContextActions,
+ sContextMenuItemsPtr
+ );
+ Menu_InitCursor(r6, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumItems, 0);
+ r4 = ShowBagWindow(6, 0);
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
+ BagPrintTextOnWindow(r4, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+}
+
+static void Task_ItemContext_FieldOrBattle(u8 taskId)
+{
+ OpenContextMenu(taskId);
+ gTasks[taskId].func = Task_FieldItemContextMenuHandleInput;
+}
+
+static void Task_FieldItemContextMenuHandleInput(u8 taskId)
+{
+ s8 input;
+ if ((u8)sub_80BF72C() != TRUE)
+ {
+ input = Menu_ProcessInputNoWrapAround();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ sItemMenuContextActions[ITEMMENUACTION_CANCEL].func.void_u8(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sItemMenuContextActions[sContextMenuItemsPtr[input]].func.void_u8(taskId);
+ break;
+ }
+ }
+}
+
+static void Task_ItemMenuAction_Use(u8 taskId)
+{
+ if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
+ {
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1)
+ Task_PrintThereIsNoPokemon(taskId);
+ else
+ ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
+ }
+}
+
+static void Task_ItemMenuAction_Toss(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ ClearWindowTilemap(GetBagWindow(10));
+ ClearWindowTilemap(GetBagWindow(6));
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ Task_ConfirmTossItems(taskId);
+ }
+ else
+ {
+ InitQuantityToTossOrDeposit(data[1], gText_TossOutHowManyStrVar1s);
+ gTasks[taskId].func = Task_SelectQuantityToToss;
+ }
+}
+
+static void Task_ConfirmTossItems(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_ThrowAwayStrVar2OfThisItemQM);
+ BagPrintTextOnWindow(ShowBagWindow(6, 1), 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ BagCreateYesNoMenuBottomRight(taskId, &sYesNoMenu_Toss);
+}
+
+static void Task_TossItem_No(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ HideBagWindow(6);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+}
+
+static void Task_SelectQuantityToToss(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ {
+ UpdateQuantityToTossOrDeposit(data[8], 3);
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ ClearWindowTilemap(GetBagWindow(6));
+ HideBagWindow(6);
+ HideBagWindow(0);
+ ScheduleBgCopyTilemapToVram(0);
+ BagDestroyPocketScrollArrowPair();
+ Task_ConfirmTossItems(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ HideBagWindow(6);
+ HideBagWindow(0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ BagDestroyPocketScrollArrowPair();
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+ }
+}
+
+static void Task_TossItem_Yes(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ HideBagWindow(6);
+ CopyItemName(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]), gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_ThrewAwayStrVar2StrVar1s);
+ BagPrintTextOnWindow(ShowBagWindow(6, 3), 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ gTasks[taskId].func = Task_WaitAB_RedrawAndReturnToBag;
+}
+
+static void Task_WaitAB_RedrawAndReturnToBag(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ HideBagWindow(6);
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ Pocket_CalculateNItemsAndMaxShowed(gBagMenuState.pocket);
+ PocketCalculateInitialCursorPosAndItemsAbove(gBagMenuState.pocket);
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+ }
+}
+
+static void Task_ItemMenuAction_ToggleSelect(u8 taskId)
+{
+ u16 itemId;
+ s16 *data = gTasks[taskId].data;
+ itemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]);
+ if (gSaveBlock1Ptr->registeredItem == itemId)
+ gSaveBlock1Ptr->registeredItem = ITEM_NONE;
+ else
+ gSaveBlock1Ptr->registeredItem = itemId;
+
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ CopyWindowToVram(0, 1);
+ Task_ItemMenuAction_Cancel(taskId);
+}
+
+static void Task_ItemMenuAction_Give(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 itemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]);
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 1);
+ if (!CanWriteMailHere(itemId))
+ DisplayItemMessageInBag(taskId, 2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
+ else if (!itemid_is_unique(itemId))
+ {
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ Task_PrintThereIsNoPokemon(taskId);
+ }
+ else
+ {
+ sBagMenuDisplay->exitCB = CB2_ChooseMonToGiveItem;
+ gTasks[taskId].func = ItemMenu_StartFadeToExitCallback;
+ }
+ }
+ else
+ Task_PrintItemCantBeHeld(taskId);
+}
+
+static void Task_PrintThereIsNoPokemon(u8 taskId)
+{
+ DisplayItemMessageInBag(taskId, 2, gText_ThereIsNoPokemon, Task_WaitAButtonAndCloseContextMenu);
+}
+
+static void Task_PrintItemCantBeHeld(u8 taskId)
+{
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_ItemCantBeHeld);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, Task_WaitAButtonAndCloseContextMenu);
+}
+
+static void Task_WaitAButtonAndCloseContextMenu(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ Task_ReturnToBagFromContextMenu(taskId);
+ }
+}
+
+void Task_ReturnToBagFromContextMenu(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ CloseBagWindow(5);
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ Pocket_CalculateNItemsAndMaxShowed(gBagMenuState.pocket);
+ PocketCalculateInitialCursorPosAndItemsAbove(gBagMenuState.pocket);
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+}
+
+static void unref_sub_810A288(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 itemsAbove;
+ u16 cursorPos;
+ ListMenuGetScrollAndRow(data[0], &cursorPos, &itemsAbove);
+ PrintItemDescriptionOnMessageWindow(cursorPos + itemsAbove);
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+}
+
+static void Task_ItemMenuAction_Cancel(u8 taskId)
+{
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(gTasks[taskId].data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+}
+
+static void Task_ItemMenuAction_BattleUse(u8 taskId)
+{
+ if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL)
+ {
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 1);
+ ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId);
+ }
+}
+
+static void Task_ItemContext_FieldGive(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 itemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]);
+ if (!CanWriteMailHere(itemId))
+ {
+ DisplayItemMessageInBag(taskId, 2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
+ }
+ else if (itemId == ITEM_TM_CASE)
+ {
+ ItemMenu_SetExitCallback(GoToTMCase_Give);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (itemId == ITEM_BERRY_POUCH)
+ {
+ ItemMenu_SetExitCallback(GoToBerryPouch_Give);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (gBagMenuState.pocket != POCKET_KEY_ITEMS - 1 && !itemid_is_unique(itemId))
+ {
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = ItemMenu_StartFadeToExitCallback;
+ }
+ else
+ {
+ Task_PrintItemCantBeHeld(taskId);
+ }
+}
+
+static void GoToTMCase_Give(void)
+{
+ InitTMCase(TMCASE_FROMPARTYGIVE, ReturnToBagMenuFromSubmenu_Give, FALSE);
+}
+
+static void GoToBerryPouch_Give(void)
+{
+ InitBerryPouch(BERRYPOUCH_FROMPARTYGIVE, ReturnToBagMenuFromSubmenu_Give, FALSE);
+}
+
+static void ReturnToBagMenuFromSubmenu_Give(void)
+{
+ CB2_SelectBagItemToGive();
+}
+
+static void Task_ItemContext_PcBoxGive(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 itemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]);
+ if (ItemIsMail(itemId) == TRUE)
+ {
+ DisplayItemMessageInBag(taskId, 2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
+ }
+ else if (itemId == ITEM_TM_CASE)
+ {
+ ItemMenu_SetExitCallback(GoToTMCase_PCBox);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (itemId == ITEM_BERRY_POUCH)
+ {
+ ItemMenu_SetExitCallback(GoToBerryPouch_PCBox);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (gBagMenuState.pocket != POCKET_KEY_ITEMS - 1 && !itemid_is_unique(itemId))
+ {
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = ItemMenu_StartFadeToExitCallback;
+ }
+ else
+ {
+ Task_PrintItemCantBeHeld(taskId);
+ }
+}
+
+static void GoToTMCase_PCBox(void)
+{
+ InitTMCase(TMCASE_FROMPOKEMONSTORAGEPC, ReturnToBagMenuFromSubmenu_PCBox, FALSE);
+}
+
+static void GoToBerryPouch_PCBox(void)
+{
+ InitBerryPouch(BERRYPOUCH_FROMPOKEMONSTORAGEPC, ReturnToBagMenuFromSubmenu_PCBox, FALSE);
+}
+
+static void ReturnToBagMenuFromSubmenu_PCBox(void)
+{
+ GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, sub_808CE60);
+}
+
+static void Task_ItemContext_Sell(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (gSpecialVar_ItemId == ITEM_TM_CASE)
+ {
+ ItemMenu_SetExitCallback(GoToTMCase_Sell);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (gSpecialVar_ItemId == ITEM_BERRY_POUCH)
+ {
+ ItemMenu_SetExitCallback(GoToBerryPouch_Sell);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (itemid_get_market_price(gSpecialVar_ItemId) == 0)
+ {
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat);
+ DisplayItemMessageInBag(taskId, GetDialogBoxFontId(), gStringVar4, Task_ReturnToBagFromContextMenu);
+ }
+ else
+ {
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ BagPrintMoneyAmount();
+ Task_PrintSaleConfirmationText(taskId);
+ }
+ else
+ {
+ if (data[2] > 99)
+ data[2] = 99;
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell);
+ DisplayItemMessageInBag(taskId, GetDialogBoxFontId(), gStringVar4, Task_InitSaleQuantitySelectInterface);
+ }
+ }
+}
+
+static void GoToTMCase_Sell(void)
+{
+ InitTMCase(TMCASE_FROMMARTSELL, ReturnToBagMenuFromSubmenu_Sell, FALSE);
+}
+
+static void GoToBerryPouch_Sell(void)
+{
+ InitBerryPouch(BERRYPOUCH_FROMMARTSELL, ReturnToBagMenuFromSubmenu_Sell, FALSE);
+}
+
+static void ReturnToBagMenuFromSubmenu_Sell(void)
+{
+ GoToBagMenu(ITEMMENULOCATION_SHOP, OPEN_BAG_LAST, CB2_ReturnToField);
+}
+
+static void Task_PrintSaleConfirmationText(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay);
+ DisplayItemMessageInBag(taskId, GetDialogBoxFontId(), gStringVar4, Task_ShowSellYesNoMenu);
+}
+
+static void Task_ShowSellYesNoMenu(u8 taskId)
+{
+ BagCreateYesNoMenuTopRight(taskId, &sYesNoMenu_Sell);
+}
+
+static void Task_SellItem_No(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ HideBagWindow(2);
+ CloseBagWindow(5);
+ PutWindowTilemap(2);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+}
+
+static void Task_InitSaleQuantitySelectInterface(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 r4 = ShowBagWindow(0, 1);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BagPrintTextOnWindow(r4, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1);
+ UpdateSalePriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1])) / 2 * data[8]);
+ BagPrintMoneyAmount();
+ CreatePocketScrollArrowPair_SellQuantity();
+ gTasks[taskId].func = Task_SelectQuantityToSell;
+}
+
+static void UpdateSalePriceDisplay(s32 amount)
+{
+ PrintMoneyAmount(GetBagWindow(0), 56, 10, amount, 0);
+}
+
+static void Task_SelectQuantityToSell(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ {
+ UpdateQuantityToTossOrDeposit(data[8], 2);
+ UpdateSalePriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1])) / 2 * data[8]);
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ HideBagWindow(0);
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ BagDestroyPocketScrollArrowPair();
+ Task_PrintSaleConfirmationText(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ HideBagWindow(0);
+ HideBagWindow(2);
+ CloseBagWindow(5);
+ PutWindowTilemap(2);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ BagDestroyPocketScrollArrowPair();
+ bag_menu_print_cursor_(data[0], 1);
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+ }
+}
+
+static void Task_SellItem_Yes(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, Task_FinalizeSaleToShop);
+}
+
+static void Task_FinalizeSaleToShop(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ PlaySE(SE_SHOP);
+ RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
+ RecordItemPurchase(gSpecialVar_ItemId, data[8], 2);
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ Pocket_CalculateNItemsAndMaxShowed(gBagMenuState.pocket);
+ PocketCalculateInitialCursorPosAndItemsAbove(gBagMenuState.pocket);
+ sBagMenuDisplay->inhibitItemDescriptionPrint = TRUE;
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ bag_menu_print_cursor_(data[0], 2);
+ BagDrawTextBoxOnWindow(GetBagWindow(2));
+ PrintMoneyAmountInMoneyBox(GetBagWindow(2), GetMoney(&gSaveBlock1Ptr->money), 0);
+ gTasks[taskId].func = Task_WaitPressAB_AfterSell;
+}
+
+static void Task_WaitPressAB_AfterSell(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ HideBagWindow(2);
+ PutWindowTilemap(2);
+ sBagMenuDisplay->inhibitItemDescriptionPrint = FALSE;
+ Task_ReturnToBagFromContextMenu(taskId);
+ }
+}
+
+static void Task_ItemContext_Deposit(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ Task_TryDoItemDeposit(taskId);
+ }
+ else
+ {
+ InitQuantityToTossOrDeposit(data[1], gText_DepositHowManyStrVars1);
+ gTasks[taskId].func = Task_SelectQuantityToDeposit;
+ }
+}
+
+static void Task_SelectQuantityToDeposit(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ {
+ UpdateQuantityToTossOrDeposit(data[8], 3);
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ ClearWindowTilemap(GetBagWindow(6));
+ HideBagWindow(6);
+ HideBagWindow(0);
+ ScheduleBgCopyTilemapToVram(0);
+ BagDestroyPocketScrollArrowPair();
+ Task_TryDoItemDeposit(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ HideBagWindow(6);
+ HideBagWindow(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ BagDestroyPocketScrollArrowPair();
+ Task_RedrawArrowsAndReturnToBagMenuSelect(taskId);
+ }
+}
+
+static void Task_TryDoItemDeposit(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (AddPCItem(gSpecialVar_ItemId, data[8]) == TRUE)
+ {
+ ItemUse_SetQuestLogEvent(28, 0, gSpecialVar_ItemId, 0xFFFF);
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_DepositedStrVar2StrVar1s);
+ BagPrintTextOnWindow(ShowBagWindow(6, 3), 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ gTasks[taskId].func = Task_WaitAB_RedrawAndReturnToBag;
+ }
+ else
+ {
+ DisplayItemMessageInBag(taskId, 2, gText_NoRoomToStoreItems, Task_WaitAButtonAndCloseContextMenu);
+ }
+}
+
+bool8 UseRegisteredKeyItemOnField(void)
+{
+ u8 taskId;
+ if (InUnionRoom() == TRUE)
+ return FALSE;
+ DismissMapNamePopup();
+ ChangeBgY(0, 0, 0);
+ if (gSaveBlock1Ptr->registeredItem != ITEM_NONE)
+ {
+ if (CheckBagHasItem(gSaveBlock1Ptr->registeredItem, 1) == TRUE)
+ {
+ ScriptContext2_Enable();
+ FreezeObjectEvents();
+ sub_805C270();
+ sub_805C780();
+ gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
+ taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1Ptr->registeredItem), 8);
+ gTasks[taskId].data[3] = 1;
+ return TRUE;
+ }
+ gSaveBlock1Ptr->registeredItem = ITEM_NONE;
+ }
+ ScriptContext1_SetupScript(EventScript_BagItemCanBeRegistered);
+ return TRUE;
+}
+
+static bool8 BagIsTutorial(void)
+{
+ if (
+ gBagMenuState.location == ITEMMENULOCATION_OLD_MAN
+ || gBagMenuState.location == ITEMMENULOCATION_TTVSCR_CATCHING
+ || gBagMenuState.location == ITEMMENULOCATION_TTVSCR_STATUS
+ || gBagMenuState.location == ITEMMENULOCATION_TTVSCR_REGISTER
+ || gBagMenuState.location == ITEMMENULOCATION_TTVSCR_TMS
+ )
+ return TRUE;
+ return FALSE;
+}
+
+static void BackUpPlayerBag(void)
+{
+ u32 i;
+ sBackupPlayerBag = AllocZeroed(sizeof(struct BagSlots));
+ memcpy(sBackupPlayerBag->bagPocket_Items, gSaveBlock1Ptr->bagPocket_Items, BAG_ITEMS_COUNT * sizeof(struct ItemSlot));
+ memcpy(sBackupPlayerBag->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, BAG_KEYITEMS_COUNT * sizeof(struct ItemSlot));
+ memcpy(sBackupPlayerBag->bagPocket_PokeBalls, gSaveBlock1Ptr->bagPocket_PokeBalls, BAG_POKEBALLS_COUNT * sizeof(struct ItemSlot));
+ sBackupPlayerBag->registeredItem = gSaveBlock1Ptr->registeredItem;
+ sBackupPlayerBag->pocket = gBagMenuState.pocket;
+ for (i = 0; i < 3; i++)
+ {
+ sBackupPlayerBag->itemsAbove[i] = gBagMenuState.itemsAbove[i];
+ sBackupPlayerBag->cursorPos[i] = gBagMenuState.cursorPos[i];
+ }
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_Items, BAG_ITEMS_COUNT);
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, BAG_KEYITEMS_COUNT);
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_PokeBalls, BAG_POKEBALLS_COUNT);
+ gSaveBlock1Ptr->registeredItem = ITEM_NONE;
+ ResetBagCursorPositions();
+}
+
+static void RestorePlayerBag(void)
+{
+ u32 i;
+ memcpy(gSaveBlock1Ptr->bagPocket_Items, sBackupPlayerBag->bagPocket_Items, BAG_ITEMS_COUNT * sizeof(struct ItemSlot));
+ memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sBackupPlayerBag->bagPocket_KeyItems, BAG_KEYITEMS_COUNT * sizeof(struct ItemSlot));
+ memcpy(gSaveBlock1Ptr->bagPocket_PokeBalls, sBackupPlayerBag->bagPocket_PokeBalls, BAG_POKEBALLS_COUNT * sizeof(struct ItemSlot));
+ gSaveBlock1Ptr->registeredItem = sBackupPlayerBag->registeredItem;
+ gBagMenuState.pocket = sBackupPlayerBag->pocket;
+ for (i = 0; i < 3; i++)
+ {
+ gBagMenuState.itemsAbove[i] = sBackupPlayerBag->itemsAbove[i];
+ gBagMenuState.cursorPos[i] = sBackupPlayerBag->cursorPos[i];
+ }
+ Free(sBackupPlayerBag);
+}
+
+void InitOldManBag(void)
+{
+ BackUpPlayerBag();
+ AddBagItem(ITEM_POTION, 1);
+ AddBagItem(ITEM_POKE_BALL, 1);
+ GoToBagMenu(ITEMMENULOCATION_OLD_MAN, OPEN_BAG_ITEMS, SetCB2ToReshowScreenAfterMenu2);
+}
+
+static void Task_Bag_OldManTutorial(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ switch (data[8])
+ {
+ case 102:
+ case 204:
+ PlaySE(SE_BAG2);
+ SwitchPockets(taskId, 1, FALSE);
+ break;
+ case 306:
+ PlaySE(SE_SELECT);
+ bag_menu_print_cursor_(data[0], 2);
+ Bag_FillMessageBoxWithPalette(1);
+ gSpecialVar_ItemId = ITEM_POKE_BALL;
+ OpenContextMenu(taskId);
+ break;
+ case 408:
+ PlaySE(SE_SELECT);
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 1);
+ DestroyListMenuTask(data[0], NULL, NULL);
+ RestorePlayerBag();
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = Task_Pokedude_FadeFromBag;
+ return;
+ }
+ data[8]++;
+ }
+}
+
+static void Task_Pokedude_FadeFromBag(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_Pokedude_WaitFadeAndExitBag;
+}
+
+static void Task_Pokedude_WaitFadeAndExitBag(u8 taskId)
+{
+ if (!gPaletteFade.active && FuncIsActiveTask(Task_AnimateWin0v) != TRUE)
+ {
+ if (sBagMenuDisplay->exitCB != NULL)
+ SetMainCallback2(sBagMenuDisplay->exitCB);
+ else
+ SetMainCallback2(gBagMenuState.bagCallback);
+ BagDestroyPocketScrollArrowPair();
+ DestroyBagMenuResources();
+ DestroyTask(taskId);
+ }
+}
+
+void InitPokedudeBag(u8 a0)
+{
+ MainCallback cb2;
+ u8 location;
+ BackUpPlayerBag();
+ AddBagItem(ITEM_POTION, 1);
+ AddBagItem(ITEM_ANTIDOTE, 1);
+ AddBagItem(ITEM_TEACHY_TV, 1);
+ AddBagItem(ITEM_TM_CASE, 1);
+ AddBagItem(ITEM_POKE_BALL, 5);
+ AddBagItem(ITEM_GREAT_BALL, 1);
+ AddBagItem(ITEM_NEST_BALL, 1);
+ switch (a0)
+ {
+ default:
+ cb2 = CB2_ReturnToTeachyTV;
+ location = a0;
+ break;
+ case 7:
+ cb2 = SetCB2ToReshowScreenAfterMenu2;
+ location = ITEMMENULOCATION_TTVSCR_STATUS;
+ break;
+ case 8:
+ cb2 = SetCB2ToReshowScreenAfterMenu2;
+ location = ITEMMENULOCATION_TTVSCR_CATCHING;
+ break;
+ }
+ GoToBagMenu(location, OPEN_BAG_ITEMS, cb2);
+}
+
+static bool8 Task_BButtonInterruptTeachyTv(u8 taskId)
+{
+ if (JOY_NEW(B_BUTTON))
+ {
+ RestorePlayerBag();
+ SetTeachyTvControllerModeToResume();
+ sBagMenuDisplay->exitCB = CB2_ReturnToTeachyTV;
+ gTasks[taskId].func = Task_Pokedude_FadeFromBag;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void Task_Bag_TeachyTvRegister(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active && Task_BButtonInterruptTeachyTv(taskId) != TRUE)
+ {
+ switch (data[8])
+ {
+ case 102:
+ PlaySE(SE_BAG2);
+ SwitchPockets(taskId, 1, FALSE);
+ break;
+ case 204:
+ PlaySE(SE_SELECT);
+ bag_menu_print_cursor_(data[0], 2);
+ Bag_FillMessageBoxWithPalette(1);
+ gSpecialVar_ItemId = ITEM_TEACHY_TV;
+ OpenContextMenu(taskId);
+ break;
+ case 306:
+ PlaySE(SE_SELECT);
+ Menu_MoveCursorNoWrapAround(1);
+ break;
+ case 408:
+ PlaySE(SE_SELECT);
+ gSaveBlock1Ptr->registeredItem = gSpecialVar_ItemId;
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ Bag_BuildListMenuTemplate(gBagMenuState.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]);
+ Bag_FillMessageBoxWithPalette(0);
+ bag_menu_print_cursor_(data[0], 1);
+ CopyWindowToVram(0, 1);
+ break;
+ case 510:
+ case 612:
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_DOWN;
+ ListMenu_ProcessInput(data[0]);
+ break;
+ case 714:
+ PlaySE(SE_SELECT);
+ DestroyListMenuTask(data[0], NULL, NULL);
+ RestorePlayerBag();
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = Task_Pokedude_FadeFromBag;
+ return;
+ }
+ data[8]++;
+ }
+}
+
+static void Task_Bag_TeachyTvCatching(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ if (Task_BButtonInterruptTeachyTv(taskId) == TRUE)
+ {
+ FreeRestoreBattleData();
+ LoadPlayerParty();
+ return;
+ }
+ switch (data[8])
+ {
+ case 102:
+ case 204:
+ PlaySE(SE_BAG2);
+ SwitchPockets(taskId, 1, FALSE);
+ break;
+ case 306:
+ case 408:
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_DOWN;
+ ListMenu_ProcessInput(data[0]);
+ break;
+ case 510:
+ case 612:
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_UP;
+ ListMenu_ProcessInput(data[0]);
+ break;
+ case 714:
+ PlaySE(SE_SELECT);
+ bag_menu_print_cursor_(data[0], 2);
+ Bag_FillMessageBoxWithPalette(1);
+ gSpecialVar_ItemId = ITEM_POKE_BALL;
+ OpenContextMenu(taskId);
+ break;
+ case 816:
+ PlaySE(SE_SELECT);
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 1);
+ DestroyListMenuTask(data[0], NULL, NULL);
+ RestorePlayerBag();
+ Bag_BeginCloseWin0Animation();
+ gTasks[taskId].func = Task_Pokedude_FadeFromBag;
+ return;
+ }
+ data[8]++;
+ }
+}
+
+static void Task_Bag_TeachyTvStatus(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ if (Task_BButtonInterruptTeachyTv(taskId) == TRUE)
+ {
+ FreeRestoreBattleData();
+ LoadPlayerParty();
+ return;
+ }
+ switch (data[8])
+ {
+ case 102:
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_DOWN;
+ ListMenu_ProcessInput(data[0]);
+ break;
+ case 204:
+ PlaySE(SE_SELECT);
+ bag_menu_print_cursor_(data[0], 2);
+ Bag_FillMessageBoxWithPalette(1);
+ gSpecialVar_ItemId = ITEM_ANTIDOTE;
+ OpenContextMenu(taskId);
+ break;
+ case 306:
+ PlaySE(SE_SELECT);
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 1);
+ DestroyListMenuTask(data[0], NULL, NULL);
+ RestorePlayerBag();
+ gItemUseCB = ItemUseCB_MedicineStep;
+ ItemMenu_SetExitCallback(ChooseMonForInBattleItem);
+ gTasks[taskId].func = Task_Pokedude_FadeFromBag;
+ return;
+ }
+ data[8]++;
+ }
+}
+
+static void Task_Bag_TeachyTvTMs(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active && Task_BButtonInterruptTeachyTv(taskId) != TRUE)
+ {
+ switch (data[8])
+ {
+ case 102:
+ PlaySE(SE_BAG2);
+ SwitchPockets(taskId, 1, 0);
+ break;
+ case 204:
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_DOWN;
+ ListMenu_ProcessInput(data[0]);
+ break;
+ case 306:
+ PlaySE(SE_SELECT);
+ bag_menu_print_cursor_(data[0], 2);
+ Bag_FillMessageBoxWithPalette(1);
+ gSpecialVar_ItemId = ITEM_TM_CASE;
+ OpenContextMenu(taskId);
+ break;
+ case 408:
+ PlaySE(SE_SELECT);
+ HideBagWindow(10);
+ HideBagWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 1);
+ DestroyListMenuTask(data[0], NULL, NULL);
+ RestorePlayerBag();
+ sBagMenuDisplay->exitCB = Pokedude_InitTMCase;
+ gTasks[taskId].func = Task_Pokedude_FadeFromBag;
+ return;
+ }
+ data[8]++;
+ }
+}
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index 0c2c60437..d389c7781 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -5,14 +5,14 @@
#include "malloc.h"
#include "constants/items.h"
-static EWRAM_DATA u8 gUnknown_2039878[12] = {0};
-EWRAM_DATA void * gUnknown_2039884 = NULL;
-static EWRAM_DATA void * gUnknown_2039888 = NULL;
+static EWRAM_DATA u8 sItemMenuIconSpriteIds[12] = {0};
+static EWRAM_DATA void * sItemIconTilesBuffer = NULL;
+static EWRAM_DATA void * sItemIconTilesBufferPadded = NULL;
static void sub_8098560(struct Sprite * sprite);
static void sub_80985BC(struct Sprite * sprite);
-static const struct OamData gUnknown_83D416C = {
+static const struct OamData sOamData_BagOrSatchel = {
.affineMode = ST_OAM_AFFINE_NORMAL,
.shape = ST_OAM_SQUARE,
.size = 3,
@@ -20,36 +20,36 @@ static const struct OamData gUnknown_83D416C = {
.paletteNum = 0
};
-static const union AnimCmd gUnknown_83D4174[] = {
+static const union AnimCmd sAnim_BagOrSatchel_OpenItemPocket[] = {
ANIMCMD_FRAME( 0, 5),
ANIMCMD_FRAME(0x40, 0),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_83D4180[] = {
+static const union AnimCmd sAnim_BagOrSatchel_OpenKeyItemPocket[] = {
ANIMCMD_FRAME( 0, 5),
ANIMCMD_FRAME(0x80, 0),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_83D418C[] = {
+static const union AnimCmd sAnim_BagOrSatchel_OpenPokeBallsPocket[] = {
ANIMCMD_FRAME( 0, 5),
ANIMCMD_FRAME(0xc0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_83D4198[] = {
- gUnknown_83D4180,
- gUnknown_83D418C,
- gUnknown_83D4174
+static const union AnimCmd *const sAnimTable_BagOrSatchel[] = {
+ sAnim_BagOrSatchel_OpenKeyItemPocket,
+ sAnim_BagOrSatchel_OpenPokeBallsPocket,
+ sAnim_BagOrSatchel_OpenItemPocket
};
-static const union AffineAnimCmd gUnknown_83D41A4[] = {
+static const union AffineAnimCmd sAffineAnim_Idle[] = {
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gUnknown_83D41B4[] = {
+static const union AffineAnimCmd sAffineAnim_Wobble[] = {
AFFINEANIMCMD_FRAME(0, 0, -2, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
AFFINEANIMCMD_FRAME(0, 0, -2, 4),
@@ -57,35 +57,35 @@ static const union AffineAnimCmd gUnknown_83D41B4[] = {
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gUnknown_83D41DC[] = {
- gUnknown_83D41A4,
- gUnknown_83D41B4
+static const union AffineAnimCmd *const sAffineAnimTable_BagOrSatchel[] = {
+ sAffineAnim_Idle,
+ sAffineAnim_Wobble
};
-const struct CompressedSpriteSheet gUnknown_83D41E4 = {
+const struct CompressedSpriteSheet gSpriteSheet_Backpack = {
gUnknown_8E8362C,
0x2000,
100
};
-const struct CompressedSpriteSheet gUnknown_83D41EC = {
+const struct CompressedSpriteSheet gSpriteSheet_Satchel = {
gUnknown_8E83DBC,
0x2000,
100
};
-const struct CompressedSpritePalette gUnknown_83D41F4 = {
+const struct CompressedSpritePalette gSpritePalette_BagOrSatchel = {
gUnknown_8E84560,
100
};
-static const struct SpriteTemplate gUnknown_83D41FC = {
+static const struct SpriteTemplate sSpriteTemplate_BagOrSatchel = {
100,
100,
- &gUnknown_83D416C,
- gUnknown_83D4198,
+ &sOamData_BagOrSatchel,
+ sAnimTable_BagOrSatchel,
NULL,
- gUnknown_83D41DC,
+ sAffineAnimTable_BagOrSatchel,
SpriteCallbackDummy
};
@@ -139,7 +139,7 @@ static const struct SpriteTemplate gUnknown_83D4250 = {
SpriteCallbackDummy
};
-static const struct OamData gUnknown_83D4268 = {
+static const struct OamData sOamData_ItemIcon = {
.affineMode = ST_OAM_AFFINE_OFF,
.shape = ST_OAM_SQUARE,
.size = 2,
@@ -147,26 +147,26 @@ static const struct OamData gUnknown_83D4268 = {
.paletteNum = 2
};
-static const union AnimCmd gUnknown_83D4270[] = {
+static const union AnimCmd sAnim_ItemIcon_0[] = {
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_83D4278[] = {
- gUnknown_83D4270
+static const union AnimCmd *const sAnimTable_ItemIcon[] = {
+ sAnim_ItemIcon_0
};
-static const struct SpriteTemplate gUnknown_83D427C = {
+static const struct SpriteTemplate sSpriteTemplate_ItemIcon = {
102,
102,
- &gUnknown_83D4268,
- gUnknown_83D4278,
+ &sOamData_ItemIcon,
+ sAnimTable_ItemIcon,
NULL,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
};
-static const void *const gUnknown_83D4294[][2] = {
+static const void *const sItemIconGfxPtrs[][2] = {
{gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
{gFile_graphics_items_icons_master_ball_sheet, gFile_graphics_items_icon_palettes_master_ball_palette},
{gFile_graphics_items_icons_ultra_ball_sheet, gFile_graphics_items_icon_palettes_ultra_ball_palette},
@@ -549,19 +549,19 @@ void ResetItemMenuIconState(void)
{
u16 i;
- for (i = 0; i < NELEMS(gUnknown_2039878); i++)
- gUnknown_2039878[i] = 0xFF;
+ for (i = 0; i < NELEMS(sItemMenuIconSpriteIds); i++)
+ sItemMenuIconSpriteIds[i] = 0xFF;
}
-void sub_80984FC(u8 animNum)
+void CreateBagOrSatchelSprite(u8 animNum)
{
- gUnknown_2039878[0] = CreateSprite(&gUnknown_83D41FC, 40, 68, 0);
+ sItemMenuIconSpriteIds[0] = CreateSprite(&sSpriteTemplate_BagOrSatchel, 40, 68, 0);
sub_8098528(animNum);
}
void sub_8098528(u8 animNum)
{
- struct Sprite * sprite = &gSprites[gUnknown_2039878[0]];
+ struct Sprite * sprite = &gSprites[sItemMenuIconSpriteIds[0]];
sprite->pos2.y = -5;
sprite->callback = sub_8098560;
StartSpriteAnim(sprite, animNum);
@@ -577,7 +577,7 @@ static void sub_8098560(struct Sprite * sprite)
void sub_8098580(void)
{
- struct Sprite * sprite = &gSprites[gUnknown_2039878[0]];
+ struct Sprite * sprite = &gSprites[sItemMenuIconSpriteIds[0]];
if (sprite->affineAnimEnded)
{
StartSpriteAffineAnim(sprite, 1);
@@ -594,40 +594,44 @@ static void sub_80985BC(struct Sprite * sprite)
}
}
-void sub_80985E4(void)
+void ItemMenuIcons_CreateInsertIndicatorBarHidden(void)
{
u8 i;
- u8 * ptr = &gUnknown_2039878[1];
+ u8 * ptr = &sItemMenuIconSpriteIds[1];
for (i = 0; i < 9; i++)
{
ptr[i] = CreateSprite(&gUnknown_83D4250, i * 16 + 0x60, 7, 0);
- if (i != 0)
+ switch (i)
{
- if (i == 8)
- StartSpriteAnim(&gSprites[ptr[i]], 2);
- else
- StartSpriteAnim(&gSprites[ptr[i]], 1);
+ case 0:
+ break;
+ case 8:
+ StartSpriteAnim(&gSprites[ptr[i]], 2);
+ break;
+ default:
+ StartSpriteAnim(&gSprites[ptr[i]], 1);
+ break;
}
gSprites[ptr[i]].invisible = TRUE;
}
}
-void sub_8098660(u8 flag)
+void ItemMenuIcons_ToggleInsertIndicatorBarVisibility(bool8 invisible)
{
u8 i;
- u8 * ptr = &gUnknown_2039878[1];
+ u8 * ptr = &sItemMenuIconSpriteIds[1];
for (i = 0; i < 9; i++)
{
- gSprites[ptr[i]].invisible = flag;
+ gSprites[ptr[i]].invisible = invisible;
}
}
-void sub_80986A8(s16 x, u16 y)
+void ItemMenuIcons_MoveInsertIndicatorBar(s16 x, u16 y)
{
u8 i;
- u8 * ptr = &gUnknown_2039878[1];
+ u8 * ptr = &sItemMenuIconSpriteIds[1];
for (i = 0; i < 9; i++)
{
@@ -636,15 +640,15 @@ void sub_80986A8(s16 x, u16 y)
}
}
-static bool8 sub_80986EC(void)
+static bool8 TryAllocItemIconTilesBuffers(void)
{
void ** ptr1, ** ptr2;
- ptr1 = &gUnknown_2039884;
+ ptr1 = &sItemIconTilesBuffer;
*ptr1 = Alloc(0x120);
if (*ptr1 == NULL)
return FALSE;
- ptr2 = &gUnknown_2039888;
+ ptr2 = &sItemIconTilesBufferPadded;
*ptr2 = AllocZeroed(0x200);
if (*ptr2 == NULL)
{
@@ -671,27 +675,27 @@ u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId)
struct CompressedSpritePalette spritePalette;
u8 spriteId;
- if (!sub_80986EC())
+ if (!TryAllocItemIconTilesBuffers())
return MAX_SPRITES;
- LZDecompressWram(sub_8098974(itemId, 0), gUnknown_2039884);
- CopyItemIconPicTo4x4Buffer(gUnknown_2039884, gUnknown_2039888);
- spriteSheet.data = gUnknown_2039888;
+ LZDecompressWram(GetItemIconGfxPtr(itemId, 0), sItemIconTilesBuffer);
+ CopyItemIconPicTo4x4Buffer(sItemIconTilesBuffer, sItemIconTilesBufferPadded);
+ spriteSheet.data = sItemIconTilesBufferPadded;
spriteSheet.size = 0x200;
spriteSheet.tag = tilesTag;
LoadSpriteSheet(&spriteSheet);
- spritePalette.data = sub_8098974(itemId, 1);
+ spritePalette.data = GetItemIconGfxPtr(itemId, 1);
spritePalette.tag = paletteTag;
LoadCompressedSpritePalette(&spritePalette);
- CpuCopy16(&gUnknown_83D427C, &template, sizeof(struct SpriteTemplate));
+ CpuCopy16(&sSpriteTemplate_ItemIcon, &template, sizeof(struct SpriteTemplate));
template.tileTag = tilesTag;
template.paletteTag = paletteTag;
spriteId = CreateSprite(&template, 0, 0, 0);
- Free(gUnknown_2039884);
- Free(gUnknown_2039888);
+ Free(sItemIconTilesBuffer);
+ Free(sItemIconTilesBufferPadded);
return spriteId;
}
@@ -702,17 +706,17 @@ u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origT
struct CompressedSpritePalette spritePalette;
u8 spriteId;
- if (!sub_80986EC())
+ if (!TryAllocItemIconTilesBuffers())
return MAX_SPRITES;
- LZDecompressWram(sub_8098974(itemId, 0), gUnknown_2039884);
- CopyItemIconPicTo4x4Buffer(gUnknown_2039884, gUnknown_2039888);
- spriteSheet.data = gUnknown_2039888;
+ LZDecompressWram(GetItemIconGfxPtr(itemId, 0), sItemIconTilesBuffer);
+ CopyItemIconPicTo4x4Buffer(sItemIconTilesBuffer, sItemIconTilesBufferPadded);
+ spriteSheet.data = sItemIconTilesBufferPadded;
spriteSheet.size = 0x200;
spriteSheet.tag = tilesTag;
LoadSpriteSheet(&spriteSheet);
- spritePalette.data = sub_8098974(itemId, 1);
+ spritePalette.data = GetItemIconGfxPtr(itemId, 1);
spritePalette.tag = paletteTag;
LoadCompressedSpritePalette(&spritePalette);
@@ -721,14 +725,14 @@ u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origT
template.paletteTag = paletteTag;
spriteId = CreateSprite(&template, 0, 0, 0);
- Free(gUnknown_2039884);
- Free(gUnknown_2039888);
+ Free(sItemIconTilesBuffer);
+ Free(sItemIconTilesBufferPadded);
return spriteId;
}
void CreateItemMenuIcon(u16 itemId, u8 idx)
{
- u8 * ptr = &gUnknown_2039878[10];
+ u8 * ptr = &sItemMenuIconSpriteIds[10];
u8 spriteId;
if (ptr[idx] == 0xFF)
@@ -747,7 +751,7 @@ void CreateItemMenuIcon(u16 itemId, u8 idx)
void DestroyItemMenuIcon(u8 idx)
{
- u8 * ptr = &gUnknown_2039878[10];
+ u8 * ptr = &sItemMenuIconSpriteIds[10];
if (ptr[idx] != 0xFF)
{
@@ -756,16 +760,16 @@ void DestroyItemMenuIcon(u8 idx)
}
}
-const void * sub_8098974(u16 itemId, u8 attrId)
+const void * GetItemIconGfxPtr(u16 itemId, u8 attrId)
{
if (itemId > ITEM_N_A)
itemId = ITEM_NONE;
- return gUnknown_83D4294[itemId][attrId];
+ return sItemIconGfxPtrs[itemId][attrId];
}
void sub_80989A0(u16 itemId, u8 idx)
{
- u8 * ptr = &gUnknown_2039878[10];
+ u8 * ptr = &sItemMenuIconSpriteIds[10];
u8 spriteId;
if (ptr[idx] == 0xFF)
diff --git a/src/item_pc.c b/src/item_pc.c
index 217acc829..7c7abdce3 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -348,7 +348,7 @@ static bool8 ItemPc_DoGfxSetup(void)
gMain.state++;
break;
case 14:
- sub_80985E4();
+ ItemMenuIcons_CreateInsertIndicatorBarHidden();
gMain.state++;
break;
case 15:
@@ -780,8 +780,8 @@ static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos)
StringExpandPlaceholders(gStringVar4, gOtherText_WhereShouldTheStrVar1BePlaced);
FillWindowPixelBuffer(1, 0x00);
ItemPc_AddTextPrinterParameterized(1, 2, gStringVar4, 0, 3, 2, 3, 0, 0);
- sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
- sub_8098660(0);
+ ItemMenuIcons_MoveInsertIndicatorBar(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
+ ItemMenuIcons_ToggleInsertIndicatorBarVisibility(FALSE);
ItemPc_PrintOrRemoveCursor(data[0], 2);
gTasks[taskId].func = Task_ItemPcMoveItemModeRun;
}
@@ -792,7 +792,7 @@ static void Task_ItemPcMoveItemModeRun(u8 taskId)
ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row);
- sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
+ ItemMenuIcons_MoveInsertIndicatorBar(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
if (JOY_NEW(A_BUTTON | SELECT_BUTTON))
{
PlaySE(SE_SELECT);
@@ -814,13 +814,13 @@ static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos)
ItemPc_MoveItemModeCancel(taskId, pos);
else
{
- ItemMenu_MoveItemSlotToNewPositionInArray(gSaveBlock1Ptr->pcItems, data[1], pos);
+ MoveItemSlotInList(gSaveBlock1Ptr->pcItems, data[1], pos);
DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
if (data[1] < pos)
sListMenuState.row--;
ItemPc_BuildListMenuTemplate();
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
- sub_8098660(1);
+ ItemMenuIcons_ToggleInsertIndicatorBarVisibility(TRUE);
gTasks[taskId].func = Task_ItemPcMain;
}
}
@@ -834,7 +834,7 @@ static void ItemPc_MoveItemModeCancel(u8 taskId, u32 pos)
sListMenuState.row--;
ItemPc_BuildListMenuTemplate();
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
- sub_8098660(1);
+ ItemMenuIcons_ToggleInsertIndicatorBarVisibility(TRUE);
gTasks[taskId].func = Task_ItemPcMain;
}
diff --git a/src/item_use.c b/src/item_use.c
index d5db22ca1..fc5703a75 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -154,7 +154,7 @@ static void sub_80A0FBC(u8 taskId)
{
ItemMenu_SetExitCallback(gUnknown_83E2954[itemType]);
if (itemType == 1)
- sub_8108CB4();
+ Bag_BeginCloseWin0Animation();
ItemMenu_StartFadeToExitCallback(taskId);
}
}
@@ -188,7 +188,7 @@ static void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str)
{
StringExpandPlaceholders(gStringVar4, str);
if (a1 == FALSE)
- DisplayItemMessageInBag(taskId, a2, gStringVar4, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, a2, gStringVar4, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, a2, gStringVar4, sub_80A112C);
}
@@ -345,7 +345,7 @@ void FieldUseFunc_CoinCase(u8 taskId)
StringExpandPlaceholders(gStringVar4, gUnknown_8416537);
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
- DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
}
@@ -356,7 +356,7 @@ void FieldUseFunc_PowderJar(u8 taskId)
StringExpandPlaceholders(gStringVar4, gUnknown_8416644);
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
- DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
}
@@ -384,7 +384,7 @@ void FieldUseFunc_PokeFlute(u8 taskId)
{
// Now that's a catchy tune!
if (gTasks[taskId].data[3] == 0)
- DisplayItemMessageInBag(taskId, 2, gUnknown_841665C, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gUnknown_841665C, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, 2, gUnknown_841665C, sub_80A112C);
}
@@ -401,7 +401,7 @@ static void sub_80A1674(u8 taskId)
if (WaitFanfare(FALSE))
{
if (gTasks[taskId].data[3] == 0)
- DisplayItemMessageInBag(taskId, 2, gUnknown_84166A7, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gUnknown_84166A7, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, 2, gUnknown_84166A7, sub_80A112C);
}
@@ -518,7 +518,7 @@ void BattleUseFunc_BerryPouch(u8 taskId)
static void InitBerryPouchFromBattle(void)
{
- InitBerryPouch(BERRYPOUCH_FROMBATTLE, sub_8107ECC, 0);
+ InitBerryPouch(BERRYPOUCH_FROMBATTLE, CB2_BagMenuFromBattle, 0);
}
void FieldUseFunc_TeachyTv(u8 taskId)
@@ -562,7 +562,7 @@ void FieldUseFunc_SuperRepel(u8 taskId)
}
else
// An earlier repel is still in effect
- DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, Task_ReturnToBagFromContextMenu);
}
static void sub_80A19E8(u8 taskId)
@@ -572,15 +572,15 @@ static void sub_80A19E8(u8 taskId)
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
sub_80A1A44();
- DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, Task_ReturnToBagFromContextMenu);
}
}
static void sub_80A1A44(void)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
- sub_8108DC8(ItemId_GetPocket(gSpecialVar_ItemId));
- sub_81089F4(ItemId_GetPocket(gSpecialVar_ItemId));
+ Pocket_CalculateNItemsAndMaxShowed(ItemId_GetPocket(gSpecialVar_ItemId));
+ PocketCalculateInitialCursorPosAndItemsAbove(ItemId_GetPocket(gSpecialVar_ItemId));
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gUnknown_841658C);
}
@@ -613,7 +613,7 @@ static void sub_80A1B48(u8 taskId)
if (++gTasks[taskId].data[8] > 7)
{
PlaySE(SE_BIDORO);
- DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, Task_ReturnToBagFromContextMenu);
}
}
@@ -745,18 +745,18 @@ void BattleUseFunc_PokeBallEtc(u8 taskId)
if (!IsPlayerPartyAndPokemonStorageFull())
{
RemoveBagItem(gSpecialVar_ItemId, 1);
- sub_8108CB4();
+ Bag_BeginCloseWin0Animation();
ItemMenu_StartFadeToExitCallback(taskId);
}
else
{
- DisplayItemMessageInBag(taskId, 2, gUnknown_8416631, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gUnknown_8416631, Task_ReturnToBagFromContextMenu);
}
}
void BattleUseFunc_PokeFlute(u8 taskId)
{
- sub_8108CB4();
+ Bag_BeginCloseWin0Animation();
ItemMenu_StartFadeToExitCallback(taskId);
}
@@ -764,7 +764,7 @@ void BattleUseFunc_GuardSpec(u8 taskId)
{
if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0))
{
- DisplayItemMessageInBag(taskId, 2, gText_WontHaveEffect, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, 2, gText_WontHaveEffect, Task_ReturnToBagFromContextMenu);
}
else
{
@@ -790,7 +790,7 @@ static void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId)
{
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
- sub_8108CB4();
+ Bag_BeginCloseWin0Animation();
ItemMenu_StartFadeToExitCallback(taskId);
}
}
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 905e3c1ea..dedd7aa9e 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -107,7 +107,7 @@ bool8 itemid_link_can_give_berry(u16 itemId)
return FALSE;
}
-bool8 itemid_80BF6D8_mail_related(u16 itemId)
+bool8 CanWriteMailHere(u16 itemId)
{
if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE)
return TRUE;
@@ -242,7 +242,7 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
return FALSE;
}
-u8 sub_80BF8E4(void)
+u8 GetDialogBoxFontId(void)
{
if (!ContextNpcGetTextColor())
return 4;
diff --git a/src/new_game.c b/src/new_game.c
index 471c49e67..381ba28c8 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -98,7 +98,7 @@ void ResetMenuAndMonGlobals(void)
gDifferentSaveFile = FALSE;
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
- sub_81089BC();
+ ResetBagCursorPositions();
ResetTMCaseCursorPos();
BerryPouch_CursorResetToTop();
ResetQuestLog();
diff --git a/src/party_menu.c b/src/party_menu.c
index d12a17e6c..b6ec995ff 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3451,7 +3451,7 @@ static void CursorCB_Give(u8 taskId)
void CB2_SelectBagItemToGive(void)
{
- GoToBagMenu(1, 3, CB2_GiveHoldItem);
+ GoToBagMenu(ITEMMENULOCATION_PARTY, OPEN_BAG_LAST, CB2_GiveHoldItem);
}
void CB2_GiveHoldItem(void)
@@ -4283,12 +4283,12 @@ void CB2_ShowPartyMenuForItemUse(void)
static void CB2_ReturnToBagMenu(void)
{
- GoToBagMenu(11, 3, NULL);
+ GoToBagMenu(ITEMMENULOCATION_LAST, OPEN_BAG_LAST, NULL);
}
static void CB2_ReturnToTMCaseMenu(void)
{
- InitTMCase(5, NULL, 0xFF);
+ InitTMCase(TMCASE_NA, NULL, 0xFF);
}
static void CB2_ReturnToBerryPouchMenu(void)
@@ -5904,7 +5904,7 @@ void OpenPartyMenuInBattle(void)
void ChooseMonForInBattleItem(void)
{
- InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_REUSABLE_ITEM, FALSE, PARTY_MSG_USE_ON_WHICH_MON, sub_8120FCC, sub_8107ECC);
+ InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_REUSABLE_ITEM, FALSE, PARTY_MSG_USE_ON_WHICH_MON, sub_8120FCC, CB2_BagMenuFromBattle);
nullsub_44();
UpdatePartyToBattleOrder();
}
@@ -5919,7 +5919,7 @@ void sub_81279E0(void)
FALSE,
PARTY_MSG_NONE,
sub_8120C3C,
- sub_8107ECC);
+ CB2_BagMenuFromBattle);
sub_80EB2F4(8);
}
else
@@ -5929,7 +5929,7 @@ void sub_81279E0(void)
if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
callback = CB2_ReturnToBerryPouchMenu;
else
- callback = sub_8107ECC;
+ callback = CB2_BagMenuFromBattle;
InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE,
GetPartyLayoutFromBattleType(),
PARTY_ACTION_USE_ITEM,
diff --git a/src/player_pc.c b/src/player_pc.c
index 00d41abe6..63870c86a 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -322,7 +322,7 @@ static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId)
if (!gPaletteFade.active)
{
CleanupOverworldWindowsAndTilemaps();
- GoToBagMenu(3, POCKET_ITEMS - 1, CB2_ReturnToField);
+ GoToBagMenu(ITEMMENULOCATION_ITEMPC, OPEN_BAG_ITEMS, CB2_ReturnToField);
gFieldCallback = CB2_ReturnFromDepositMenu;
DestroyTask(taskId);
}
diff --git a/src/pokemon.c b/src/pokemon.c
index 1270a25ed..5b715133b 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -1547,7 +1547,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
.paletteTag = 0,
.oam = &gOamData_824F018,
.anims = NULL,
- .images = gTrainerBackPicTable_PokeDude,
+ .images = gTrainerBackPicTable_Pokedude,
.affineAnims = gSpriteAffineAnimTable_82348C8,
.callback = sub_80120C4,
},
diff --git a/src/script_menu.c b/src/script_menu.c
index 42be3b539..72ff1dc9e 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -565,36 +565,37 @@ const struct MultichoiceListStruct gScriptMultiChoiceMenus[] = {
{ sScriptMultiChoiceMenu_TrainerTowerMode, NELEMS(sScriptMultiChoiceMenu_TrainerTowerMode) }
};
+// From Cool to Berries goes unused
const u8 *const gStdStringPtrs[] = {
- gText_Cool,
- gText_Beauty,
- gText_Cute,
- gText_Smart,
- gText_Tough,
- gText_Cool_2,
- gText_Beauty_2,
- gText_Cute_2,
- gText_Smart_2,
- gText_Tough_2,
- gText_Items,
- gText_KeyItems,
- gText_PokeBalls,
- gText_TMsAndHMs,
- gText_Berries,
- gText_Boulderbadge,
- gText_Cascadebadge,
- gText_Thunderbadge,
- gText_Rainbowbadge,
- gText_Soulbadge,
- gText_Marshbadge,
- gText_Volcanobadge,
- gText_Earthbadge,
- gText_Coins_2,
- gText_ItemsPocket,
- gText_KeyItemsPocket,
- gText_PokeBallsPocket,
- gText_TmCase,
- gText_BerryPouch_2
+ [STDSTRING_COOL] = gText_Cool,
+ [STDSTRING_BEAUTY] = gText_Beauty,
+ [STDSTRING_CUTE] = gText_Cute,
+ [STDSTRING_SMART] = gText_Smart,
+ [STDSTRING_TOUGH] = gText_Tough,
+ [STDSTRING_COOL2] = gText_Cool_2,
+ [STDSTRING_BEAUTY2] = gText_Beauty_2,
+ [STDSTRING_CUTE2] = gText_Cute_2,
+ [STDSTRING_SMART2] = gText_Smart_2,
+ [STDSTRING_TOUGH2] = gText_Tough_2,
+ [STDSTRING_ITEMS] = gText_Items,
+ [STDSTRING_KEY_ITEMS] = gText_KeyItems,
+ [STDSTRING_POKEBALLS] = gText_PokeBalls,
+ [STDSTRING_TMHMS] = gText_TMsAndHMs,
+ [STDSTRING_BERRIES] = gText_Berries,
+ [STDSTRING_BOULDER_BADGE] = gText_Boulderbadge,
+ [STDSTRING_CASCADE_BADGE] = gText_Cascadebadge,
+ [STDSTRING_THUNDER_BADGE] = gText_Thunderbadge,
+ [STDSTRING_RAINBOW_BADGE] = gText_Rainbowbadge,
+ [STDSTRING_SOUL_BADGE] = gText_Soulbadge,
+ [STDSTRING_MARSH_BADGE] = gText_Marshbadge,
+ [STDSTRING_VOLCANO_BADGE] = gText_Volcanobadge,
+ [STDSTRING_EARTH_BADGE] = gText_Earthbadge,
+ [STDSTRING_COINS] = gText_Coins_2,
+ [STDSTRING_ITEMS_POCKET] = gText_ItemsPocket,
+ [STDSTRING_KEY_ITEMS_POCKET] = gText_KeyItemsPocket,
+ [STDSTRING_POKEBALLS_POCKET] = gText_PokeBallsPocket,
+ [STDSTRING_TM_CASE] = gText_TmCase,
+ [STDSTRING_BERRY_POUCH] = gText_BerryPouch_2
};
static const u8 *const sDescriptionPtrs_CableClub_TradeBattleCancel[] = {
diff --git a/src/shop.c b/src/shop.c
index b410b32b9..865688928 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -307,7 +307,7 @@ static void Task_HandleShopMenuSell(u8 taskId)
static void CB2_GoToSellMenu(void)
{
- GoToBagMenu(2, POCKET_POKE_BALLS, CB2_ReturnToField);
+ GoToBagMenu(ITEMMENULOCATION_SHOP, OPEN_BAG_LAST, CB2_ReturnToField);
gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
}
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 11d4a80b1..1467131b0 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -34,16 +34,6 @@
#include "fieldmap.h"
#include "strings.h"
-enum TeachyTvScript
-{
- TTVSCR_BATTLE,
- TTVSCR_STATUS,
- TTVSCR_MATCHUPS,
- TTVSCR_CATCHING,
- TTVSCR_TMS,
- TTVSCR_REGISTER
-};
-
struct TeachyTvCtrlBlk
{
MainCallback callback;
@@ -805,7 +795,7 @@ static void TTVcmd_NpcMoveAndSetupTextPrinter(u8 taskId)
if (spriteAddr->pos2.x == 0x78)
{
StartSpriteAnim(&gSprites[data[1]], 0);
- TeachyTvInitTextPrinter(gTeachyTvText_PokeDudeSaysHello);
+ TeachyTvInitTextPrinter(gTeachyTvText_PokedudeSaysHello);
data[2] = 0;
++data[3];
}
@@ -1103,9 +1093,9 @@ static void TTVcmd_TaskBattleOrFadeByOptionChosen(u8 taskId)
static void TeachyTvSetupBagItemsByOptionChosen(void)
{
if (sStaticResources.whichScript == TTVSCR_TMS)
- sub_810B108(10);
+ InitPokedudeBag(ITEMMENULOCATION_TTVSCR_TMS);
else
- sub_810B108(9);
+ InitPokedudeBag(ITEMMENULOCATION_TTVSCR_REGISTER);
}
static void TeachyTvPostBattleFadeControl(u8 taskId)
diff --git a/src/tm_case.c b/src/tm_case.c
index 40509ed1b..d45061bde 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -67,7 +67,7 @@ struct UnkStruct_203B11C
static EWRAM_DATA struct UnkStruct_203B10C sTMCaseStaticResources = {};
static EWRAM_DATA struct UnkStruct_203B118 * sTMCaseDynamicResources = NULL;
-static EWRAM_DATA struct UnkStruct_203B11C * sPokeDudePackBackup = NULL;
+static EWRAM_DATA struct UnkStruct_203B11C * sPokedudePackBackup = NULL;
static EWRAM_DATA void * sTilemapBuffer = NULL; // tilemap buffer
static EWRAM_DATA struct ListMenuItem * sListMenuItemsBuffer = NULL;
static EWRAM_DATA u8 (* sListMenuStringsBuffer)[29] = NULL;
@@ -977,7 +977,7 @@ static void Task_SelectTMAction_FromSellMenu(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat);
- TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Subtask_CloseContextMenuAndReturnToMain);
+ TMCase_PrintMessageWithFollowupTask(taskId, GetDialogBoxFontId(), gStringVar4, Subtask_CloseContextMenuAndReturnToMain);
}
else
{
@@ -993,7 +993,7 @@ static void Task_SelectTMAction_FromSellMenu(u8 taskId)
data[2] = 99;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell);
- TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Task_InitQuantitySelectUI);
+ TMCase_PrintMessageWithFollowupTask(taskId, GetDialogBoxFontId(), gStringVar4, Task_InitQuantitySelectUI);
}
}
}
@@ -1004,7 +1004,7 @@ static void Task_AskConfirmSaleWithAmount(u8 taskId)
ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay);
- TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Task_PlaceYesNoBox);
+ TMCase_PrintMessageWithFollowupTask(taskId, GetDialogBoxFontId(), gStringVar4, Task_PlaceYesNoBox);
}
static void Task_PlaceYesNoBox(u8 taskId)
@@ -1133,13 +1133,13 @@ static void Task_AfterSale_ReturnToList(u8 taskId)
}
}
-void PokeDude_InitTMCase(void)
+void Pokedude_InitTMCase(void)
{
- sPokeDudePackBackup = AllocZeroed(sizeof(*sPokeDudePackBackup));
- memcpy(sPokeDudePackBackup->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
- memcpy(sPokeDudePackBackup->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
- sPokeDudePackBackup->unk_160 = sTMCaseStaticResources.selectedRow;
- sPokeDudePackBackup->unk_162 = sTMCaseStaticResources.scrollOffset;
+ sPokedudePackBackup = AllocZeroed(sizeof(*sPokedudePackBackup));
+ memcpy(sPokedudePackBackup->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
+ memcpy(sPokedudePackBackup->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
+ sPokedudePackBackup->unk_160 = sTMCaseStaticResources.selectedRow;
+ sPokedudePackBackup->unk_162 = sTMCaseStaticResources.scrollOffset;
ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM));
ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems));
ResetTMCaseCursorPos();
@@ -1234,7 +1234,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
break;
case 8:
FillBG2RowWithPalette_2timesNplus1(1);
- TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokeDudeText_TMTypes, 0);
+ TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokedudeText_TMTypes, 0);
gTasks[taskId].func = Task_TMCaseDude_Playback;
data[8]++;
break;
@@ -1256,7 +1256,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
break;
case 18:
FillBG2RowWithPalette_2timesNplus1(1);
- TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokeDudeText_ReadTMDescription, NULL);
+ TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokedudeText_ReadTMDescription, NULL);
gTasks[taskId].func = Task_TMCaseDude_Playback; // this function
data[8]++;
break;
@@ -1267,12 +1267,12 @@ static void Task_TMCaseDude_Playback(u8 taskId)
case 21:
if (!gPaletteFade.active)
{
- memcpy(gSaveBlock1Ptr->bagPocket_TMHM, sPokeDudePackBackup->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
- memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sPokeDudePackBackup->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
+ memcpy(gSaveBlock1Ptr->bagPocket_TMHM, sPokedudePackBackup->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
+ memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sPokedudePackBackup->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
DestroyListMenuTask(data[0], NULL, NULL);
- sTMCaseStaticResources.selectedRow = sPokeDudePackBackup->unk_160;
- sTMCaseStaticResources.scrollOffset = sPokeDudePackBackup->unk_162;
- Free(sPokeDudePackBackup);
+ sTMCaseStaticResources.selectedRow = sPokedudePackBackup->unk_160;
+ sTMCaseStaticResources.scrollOffset = sPokedudePackBackup->unk_162;
+ Free(sPokedudePackBackup);
CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
CB2_SetUpReshowBattleScreenAfterMenu();
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0);
diff --git a/src/trade_scene.c b/src/trade_scene.c
index 9e3c1d0ce..b420cb196 100644
--- a/src/trade_scene.c
+++ b/src/trade_scene.c
@@ -2443,7 +2443,7 @@ static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx)
const struct InGameTrade * inGameTrade = &sInGameTrades[inGameTradeIdx];
u8 level = GetMonData(&gPlayerParty[playerSlot], MON_DATA_LEVEL);
struct MailStruct mail;
- u8 metLocation = MAPSEC_IN_GAME_TRADE;
+ u8 metLocation = METLOC_IN_GAME_TRADE;
struct Pokemon * tradeMon = &gEnemyParty[0];
u8 mailNum;
CreateMon(tradeMon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId);
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 188ccd3aa..9ceae4842 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -335,45 +335,7 @@ gUnknown_203ACF0: @ 203ACF0
.align 2
.include "src/list_menu.o"
.align 2
-gUnknown_203ACFC: @ 203ACFC
- .space 0x6
-
-gUnknown_203AD02: @ 203AD02
- .space 0x2
-
-gUnknown_203AD04: @ 203AD04
- .space 0x6
-
-gUnknown_203AD0A: @ 203AD0A
- .space 0x6
-
-gUnknown_203AD10: @ 203AD10
- .space 0x4
-
-gUnknown_203AD14: @ 203AD14
- .space 0x4
-
-gUnknown_203AD18: @ 203AD18
- .space 0x4
-
-gUnknown_203AD1C: @ 203AD1C
- .space 0x4
-
-gUnknown_203AD20: @ 203AD20
- .space 0x4
-
-gUnknown_203AD24: @ 203AD24
- .space 0x4
-
-gUnknown_203AD28: @ 203AD28
- .space 0x4
-
-gUnknown_203AD2C: @ 203AD2C
- .space 0x4
-
-gSpecialVar_ItemId: @ 203AD30
- .space 0x4
-
+ .include "src/item_menu.o"
.align 2
.include "src/bag.o"
.align 2