summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-07-09 22:59:49 -0500
committercamthesaxman <cameronghall@cox.net>2017-07-09 22:59:49 -0500
commit5c2c970d012d37a2b582816c6d4636b531dfe3b8 (patch)
tree27ed9e2dec8f9d47732617615af4a394f011196b
parent968f050850a594d4ccca129abb70cfb8c5a29674 (diff)
decompile sub_80A6354 - sub_80A6D1C
-rw-r--r--asm/item_menu.s1268
-rw-r--r--data/item_menu.s34
-rw-r--r--include/battle_setup.h2
-rw-r--r--include/item_menu.h4
-rw-r--r--include/script.h14
-rw-r--r--include/songs.h10
-rw-r--r--src/battle_setup.c20
-rw-r--r--src/field_control_avatar.c2
-rw-r--r--src/field_map_obj_helpers.c2
-rw-r--r--src/item_menu.c419
-rw-r--r--src/script.c10
11 files changed, 440 insertions, 1345 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 18cc7fc98..c5d48b6eb 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -6,1274 +6,6 @@
.text
- thumb_func_start sub_80A6354
-sub_80A6354: @ 80A6354
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80A7590
- ldr r0, _080A63C4 @ =gTasks
- lsls r2, r5, 2
- adds r2, r5
- lsls r2, 3
- adds r2, r0
- ldr r4, _080A63C8 @ =gUnknown_03005D10
- ldr r3, _080A63CC @ =gUnknown_02038559
- movs r0, 0
- ldrsb r0, [r3, r0]
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0]
- adds r1, r0
- adds r1, 0x1
- strh r1, [r2, 0x1C]
- movs r0, 0
- ldrsb r0, [r3, r0]
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0]
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_80A48E8
- bl sub_80A73FC
- ldr r4, _080A63D0 @ =gScriptItemId
- ldrh r0, [r4]
- ldr r1, _080A63D4 @ =gStringVar2
- bl CopyItemName
- ldrh r0, [r4]
- bl ItemId_GetPrice
- lsls r0, 16
- cmp r0, 0
- bne _080A63E4
- ldr r4, _080A63D8 @ =gStringVar4
- ldr r1, _080A63DC @ =gOtherText_CantBuyThat
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080A63E0 @ =sub_80A6444
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl DisplayCannotUseItemMessage
- b _080A63FA
- .align 2, 0
-_080A63C4: .4byte gTasks
-_080A63C8: .4byte gUnknown_03005D10
-_080A63CC: .4byte gUnknown_02038559
-_080A63D0: .4byte gScriptItemId
-_080A63D4: .4byte gStringVar2
-_080A63D8: .4byte gStringVar4
-_080A63DC: .4byte gOtherText_CantBuyThat
-_080A63E0: .4byte sub_80A6444
-_080A63E4:
- ldr r4, _080A6400 @ =gStringVar4
- ldr r1, _080A6404 @ =gOtherText_HowManyToSell
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080A6408 @ =sub_80A648C
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl DisplayCannotUseItemMessage
-_080A63FA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6400: .4byte gStringVar4
-_080A6404: .4byte gOtherText_HowManyToSell
-_080A6408: .4byte sub_80A648C
- thumb_func_end sub_80A6354
-
- thumb_func_start sub_80A640C
-sub_80A640C: @ 80A640C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080A6440 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- movs r0, 0
- bl sub_80A7528
- adds r0, r4, 0
- bl sub_80A41D4
- bl ItemListMenu_InitMenu
- adds r0, r4, 0
- bl sub_80A37C0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6440: .4byte gTasks
- thumb_func_end sub_80A640C
-
- thumb_func_start sub_80A6444
-sub_80A6444: @ 80A6444
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080A6480 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x1F
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1F
- bl sub_80A36B8
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080A6484 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A6488 @ =sub_80A640C
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6480: .4byte gBGTilemapBuffers + 0x800
-_080A6484: .4byte gTasks
-_080A6488: .4byte sub_80A640C
- thumb_func_end sub_80A6444
-
- thumb_func_start sub_80A648C
-sub_80A648C: @ 80A648C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A64E8 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r0, _080A64EC @ =Task_BuyHowManyDialogueHandleInput
- str r0, [r4]
- ldr r0, _080A64F0 @ =gBGTilemapBuffers + 0x800
- movs r5, 0x2
- str r5, [sp]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A4008
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuDrawTextWindow
- movs r0, 0x1
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- movs r0, 0xB
- strh r0, [r4, 0xE]
- ldr r0, _080A64F4 @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- bne _080A64F8
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0xB
- bl sub_80A418C
- b _080A6506
- .align 2, 0
-_080A64E8: .4byte gTasks
-_080A64EC: .4byte Task_BuyHowManyDialogueHandleInput
-_080A64F0: .4byte gBGTilemapBuffers + 0x800
-_080A64F4: .4byte gUnknown_02038559
-_080A64F8:
- str r5, [sp]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0xB
- bl sub_80A418C
-_080A6506:
- ldr r0, _080A651C @ =gScriptItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl BuyMenuDisplayMessage
- bl sub_80A683C
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A651C: .4byte gScriptItemId
- thumb_func_end sub_80A648C
-
- thumb_func_start sub_80A6520
-sub_80A6520: @ 80A6520
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A6544 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A653E
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl BuyMenuPrintItemQuantityAndPrice
-_080A653E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6544: .4byte gMain
- thumb_func_end sub_80A6520
-
- thumb_func_start sub_80A6548
-sub_80A6548: @ 80A6548
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80A48F8
- ldr r1, _080A656C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A6570 @ =sub_80A6520
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A656C: .4byte gTasks
-_080A6570: .4byte sub_80A6520
- thumb_func_end sub_80A6548
-
- thumb_func_start sub_80A6574
-sub_80A6574: @ 80A6574
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x5F
- bl PlaySE
- ldr r0, _080A65A0 @ =gScriptItemId
- ldrh r0, [r0]
- ldr r1, _080A65A4 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r1
- ldrb r1, [r4, 0xA]
- bl sub_80A6870
- ldr r0, _080A65A8 @ =sub_80A6548
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A65A0: .4byte gScriptItemId
-_080A65A4: .4byte gTasks
-_080A65A8: .4byte sub_80A6548
- thumb_func_end sub_80A6574
-
- thumb_func_start sub_80A65AC
-sub_80A65AC: @ 80A65AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x7
- movs r1, 0x6
- movs r2, 0xD
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- ldr r0, _080A6600 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x6
- str r1, [sp]
- movs r1, 0x7
- movs r2, 0x6
- movs r3, 0x6
- bl sub_80A36B8
- ldr r0, _080A6604 @ =gScriptItemId
- ldrh r0, [r0]
- ldr r1, _080A6608 @ =gStringVar2
- bl CopyItemName
- ldr r4, _080A660C @ =gStringVar4
- ldr r1, _080A6610 @ =gOtherText_SoldItem
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080A6614 @ =sub_80A6574
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl DisplayCannotUseItemMessage
- adds r0, r5, 0
- bl sub_80A3D5C
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6600: .4byte gBGTilemapBuffers + 0x800
-_080A6604: .4byte gScriptItemId
-_080A6608: .4byte gStringVar2
-_080A660C: .4byte gStringVar4
-_080A6610: .4byte gOtherText_SoldItem
-_080A6614: .4byte sub_80A6574
- thumb_func_end sub_80A65AC
-
- thumb_func_start sub_80A6618
-sub_80A6618: @ 80A6618
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x7
- movs r1, 0x6
- movs r2, 0xD
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- ldr r0, _080A664C @ =gBGTilemapBuffers + 0x800
- movs r1, 0x6
- str r1, [sp]
- movs r1, 0x7
- movs r2, 0x6
- movs r3, 0x6
- bl sub_80A36B8
- adds r0, r4, 0
- bl BuyMenuPrintItemQuantityAndPrice
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A664C: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80A6618
-
- thumb_func_start sub_80A6650
-sub_80A6650: @ 80A6650
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80A5D78
- ldr r1, _080A666C @ =gUnknown_083C16FC
- adds r0, r4, 0
- bl DoYesNoFuncWithChoice
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A666C: .4byte gUnknown_083C16FC
- thumb_func_end sub_80A6650
-
- thumb_func_start Task_BuyHowManyDialogueHandleInput
-Task_BuyHowManyDialogueHandleInput: @ 80A6670
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, r5, 0
- adds r0, r5, 0
- bl sub_80A5350
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A66B4
- movs r0, 0x6
- movs r1, 0xB
- movs r2, 0xC
- movs r3, 0xB
- bl MenuZeroFillWindowRect
- ldr r0, _080A66AC @ =gScriptItemId
- ldrh r0, [r0]
- ldr r2, _080A66B0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- ldrh r1, [r1, 0xA]
- bl BuyMenuDisplayMessage
- b _080A6758
- .align 2, 0
-_080A66AC: .4byte gScriptItemId
-_080A66B0: .4byte gTasks
-_080A66B4:
- ldr r0, _080A6724 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A6744
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080A6728 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x3
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xD
- bl sub_80A36B8
- ldr r4, _080A672C @ =gStringVar1
- ldr r0, _080A6730 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemId_GetPrice
- lsls r0, 16
- lsrs r0, 17
- ldr r2, _080A6734 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- movs r2, 0xA
- ldrsh r1, [r1, r2]
- muls r1, r0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _080A6738 @ =gStringVar4
- ldr r1, _080A673C @ =gOtherText_CanPay
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080A6740 @ =sub_80A6650
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl DisplayCannotUseItemMessage
- b _080A6758
- .align 2, 0
-_080A6724: .4byte gMain
-_080A6728: .4byte gBGTilemapBuffers + 0x800
-_080A672C: .4byte gStringVar1
-_080A6730: .4byte gScriptItemId
-_080A6734: .4byte gTasks
-_080A6738: .4byte gStringVar4
-_080A673C: .4byte gOtherText_CanPay
-_080A6740: .4byte sub_80A6650
-_080A6744:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080A6758
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl BuyMenuPrintItemQuantityAndPrice
-_080A6758:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end Task_BuyHowManyDialogueHandleInput
-
- thumb_func_start sub_80A6760
-sub_80A6760: @ 80A6760
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080A6794 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- movs r0, 0
- bl sub_80A7528
- adds r0, r4, 0
- bl sub_80A41D4
- bl ItemListMenu_InitMenu
- adds r0, r4, 0
- bl sub_80A37C0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6794: .4byte gTasks
- thumb_func_end sub_80A6760
-
- thumb_func_start BuyMenuPrintItemQuantityAndPrice
-BuyMenuPrintItemQuantityAndPrice: @ 80A6798
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080A67E8 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x1F
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1F
- bl sub_80A36B8
- movs r0, 0
- movs r1, 0
- bl RemoveMoneyLabelObject
- movs r0, 0
- movs r1, 0x4
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080A67EC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A67F0 @ =sub_80A6760
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A67E8: .4byte gBGTilemapBuffers + 0x800
-_080A67EC: .4byte gTasks
-_080A67F0: .4byte sub_80A6760
- thumb_func_end BuyMenuPrintItemQuantityAndPrice
-
- thumb_func_start BuyMenuDisplayMessage
-BuyMenuDisplayMessage: @ 80A67F4
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl ItemId_GetPrice
- lsls r0, 16
- lsrs r0, 17
- muls r0, r5
- movs r1, 0x6
- movs r2, 0x6
- movs r3, 0xB
- bl sub_80B7A94
- ldr r6, _080A6838 @ =gStringVar1
- adds r0, r4, 0
- bl ItemId_GetPrice
- lsls r0, 16
- lsrs r0, 17
- adds r1, r0, 0
- muls r1, r5
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6838: .4byte gStringVar1
- thumb_func_end BuyMenuDisplayMessage
-
- thumb_func_start sub_80A683C
-sub_80A683C: @ 80A683C
- push {lr}
- sub sp, 0x4
- ldr r0, _080A6868 @ =gSaveBlock1
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_80B7C14
- ldr r0, _080A686C @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0xC
- bl sub_80A4008
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080A6868: .4byte gSaveBlock1
-_080A686C: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80A683C
-
- thumb_func_start sub_80A6870
-sub_80A6870: @ 80A6870
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _080A68A0 @ =gSaveBlock1 + 0x490
- bl ItemId_GetPrice
- lsls r0, 16
- lsrs r0, 17
- adds r1, r0, 0
- muls r1, r4
- adds r0, r5, 0
- bl sub_80B79B8
- ldr r0, [r5]
- movs r1, 0
- movs r2, 0
- bl sub_80B7BEC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A68A0: .4byte gSaveBlock1 + 0x490
- thumb_func_end sub_80A6870
-
- thumb_func_start sub_80A68A4
-sub_80A68A4: @ 80A68A4
- push {lr}
- bl sub_80A34B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A68BE
- ldr r0, _080A68C4 @ =sub_80A50C8
- movs r1, 0
- bl CreateTask
- ldr r1, _080A68C8 @ =gUnknown_02038563
- strb r0, [r1]
-_080A68BE:
- pop {r0}
- bx r0
- .align 2, 0
-_080A68C4: .4byte sub_80A50C8
-_080A68C8: .4byte gUnknown_02038563
- thumb_func_end sub_80A68A4
-
- thumb_func_start sub_80A68CC
-sub_80A68CC: @ 80A68CC
- push {lr}
- ldr r1, _080A68E4 @ =gUnknown_02038559
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _080A68E8 @ =gUnknown_03000701
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, _080A68EC @ =sub_80A68A4
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080A68E4: .4byte gUnknown_02038559
-_080A68E8: .4byte gUnknown_03000701
-_080A68EC: .4byte sub_80A68A4
- thumb_func_end sub_80A68CC
-
- thumb_func_start sub_80A68F0
-sub_80A68F0: @ 80A68F0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A6910 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080A6914 @ =sub_80546B8
- lsrs r2, r3, 16
- strh r2, [r1, 0x18]
- strh r3, [r1, 0x1A]
- bl sub_80A5AE4
- pop {r0}
- bx r0
- .align 2, 0
-_080A6910: .4byte gTasks
-_080A6914: .4byte sub_80546B8
- thumb_func_end sub_80A68F0
-
- thumb_func_start sub_80A6918
-sub_80A6918: @ 80A6918
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A6938 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080A693C @ =sub_80546B8
- lsrs r2, r3, 16
- strh r2, [r1, 0x18]
- strh r3, [r1, 0x1A]
- bl sub_80A5AAC
- pop {r0}
- bx r0
- .align 2, 0
-_080A6938: .4byte gTasks
-_080A693C: .4byte sub_80546B8
- thumb_func_end sub_80A6918
-
- thumb_func_start sub_80A6940
-sub_80A6940: @ 80A6940
- push {lr}
-_080A6942:
- bl sub_80A317C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A6968
- ldr r0, _080A6960 @ =sub_80A50C8
- movs r1, 0
- bl CreateTask
- ldr r1, _080A6964 @ =gUnknown_02038563
- strb r0, [r1]
- bl sub_80A699C
- b _080A6974
- .align 2, 0
-_080A6960: .4byte sub_80A50C8
-_080A6964: .4byte gUnknown_02038563
-_080A6968:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A6942
-_080A6974:
- pop {r0}
- bx r0
- thumb_func_end sub_80A6940
-
- thumb_func_start sub_80A6978
-sub_80A6978: @ 80A6978
- push {lr}
- ldr r1, _080A6990 @ =gUnknown_02038559
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _080A6994 @ =gUnknown_03000701
- movs r0, 0x5
- strb r0, [r1]
- ldr r0, _080A6998 @ =sub_80A6940
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080A6990: .4byte gUnknown_02038559
-_080A6994: .4byte gUnknown_03000701
-_080A6998: .4byte sub_80A6940
- thumb_func_end sub_80A6978
-
- thumb_func_start sub_80A699C
-sub_80A699C: @ 80A699C
- ldr r1, _080A69AC @ =gUnknown_03000704
- ldr r0, _080A69B0 @ =gUnknown_083C16B8
- str r0, [r1]
- ldr r1, _080A69B4 @ =gUnknown_02038564
- movs r0, 0x4
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080A69AC: .4byte gUnknown_03000704
-_080A69B0: .4byte gUnknown_083C16B8
-_080A69B4: .4byte gUnknown_02038564
- thumb_func_end sub_80A699C
-
- thumb_func_start sub_80A69B8
-sub_80A69B8: @ 80A69B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A69D8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080A69DC @ =sub_804E990
- lsrs r2, r3, 16
- strh r2, [r1, 0x18]
- strh r3, [r1, 0x1A]
- bl sub_80A5AE4
- pop {r0}
- bx r0
- .align 2, 0
-_080A69D8: .4byte gTasks
-_080A69DC: .4byte sub_804E990
- thumb_func_end sub_80A69B8
-
- thumb_func_start sub_80A69E0
-sub_80A69E0: @ 80A69E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A6A00 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080A6A04 @ =sub_804E990
- lsrs r2, r3, 16
- strh r2, [r1, 0x18]
- strh r3, [r1, 0x1A]
- bl sub_80A5AAC
- pop {r0}
- bx r0
- .align 2, 0
-_080A6A00: .4byte gTasks
-_080A6A04: .4byte sub_804E990
- thumb_func_end sub_80A69E0
-
- thumb_func_start sub_80A6A08
-sub_80A6A08: @ 80A6A08
- push {lr}
- bl sub_80A34B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A6A22
- ldr r0, _080A6A28 @ =sub_80A50C8
- movs r1, 0
- bl CreateTask
- ldr r1, _080A6A2C @ =gUnknown_02038563
- strb r0, [r1]
-_080A6A22:
- pop {r0}
- bx r0
- .align 2, 0
-_080A6A28: .4byte sub_80A50C8
-_080A6A2C: .4byte gUnknown_02038563
- thumb_func_end sub_80A6A08
-
- thumb_func_start sub_80A6A30
-sub_80A6A30: @ 80A6A30
- push {lr}
- ldr r0, _080A6A44 @ =gUnknown_03000701
- movs r1, 0x6
- strb r1, [r0]
- ldr r0, _080A6A48 @ =sub_80A6A08
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080A6A44: .4byte gUnknown_03000701
-_080A6A48: .4byte sub_80A6A08
- thumb_func_end sub_80A6A30
-
- thumb_func_start sub_80A6A4C
-sub_80A6A4C: @ 80A6A4C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A6A74 @ =gFieldCallback
- ldr r1, _080A6A78 @ =ItemStorage_ReturnToMenuAfterDeposit
- str r1, [r2]
- ldr r2, _080A6A7C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080A6A80 @ =c2_exit_to_overworld_2_switch
- lsrs r2, r3, 16
- strh r2, [r1, 0x18]
- strh r3, [r1, 0x1A]
- bl sub_80A5AE4
- pop {r0}
- bx r0
- .align 2, 0
-_080A6A74: .4byte gFieldCallback
-_080A6A78: .4byte ItemStorage_ReturnToMenuAfterDeposit
-_080A6A7C: .4byte gTasks
-_080A6A80: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end sub_80A6A4C
-
- thumb_func_start sub_80A6A84
-sub_80A6A84: @ 80A6A84
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r6, _080A6AE8 @ =gTasks + 0x8
- adds r0, r4, r6
- mov r8, r0
- ldr r0, _080A6AEC @ =gBGTilemapBuffers + 0x800
- bl sub_80A4DA4
- ldr r0, _080A6AF0 @ =gScriptItemId
- ldrh r0, [r0]
- ldr r1, _080A6AF4 @ =gStringVar1
- bl CopyItemName
- ldr r0, _080A6AF8 @ =gStringVar2
- mov r2, r8
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x7
- movs r1, 0x6
- movs r2, 0xB
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- movs r0, 0x7
- bl sub_80A7528
- adds r0, r5, 0
- bl sub_80A3D5C
- subs r6, 0x8
- adds r4, r6
- ldr r0, _080A6AFC @ =sub_80A5E1C
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6AE8: .4byte gTasks + 0x8
-_080A6AEC: .4byte gBGTilemapBuffers + 0x800
-_080A6AF0: .4byte gScriptItemId
-_080A6AF4: .4byte gStringVar1
-_080A6AF8: .4byte gStringVar2
-_080A6AFC: .4byte sub_80A5E1C
- thumb_func_end sub_80A6A84
-
- thumb_func_start sub_80A6B00
-sub_80A6B00: @ 80A6B00
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A6B54 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A6B1A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080A6B4C
-_080A6B1A:
- ldr r1, _080A6B58 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- ldr r1, _080A6B5C @ =gUnknown_03005D10
- ldr r0, _080A6B60 @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0]
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80A48E8
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_80A5D38
-_080A6B4C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6B54: .4byte gMain
-_080A6B58: .4byte gTasks
-_080A6B5C: .4byte gUnknown_03005D10
-_080A6B60: .4byte gUnknown_02038559
- thumb_func_end sub_80A6B00
-
- thumb_func_start sub_80A6B64
-sub_80A6B64: @ 80A6B64
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r5, r0, 3
- ldr r6, _080A6B9C @ =gTasks + 0x8
- adds r7, r5, r6
- ldr r0, _080A6BA0 @ =gScriptItemId
- mov r8, r0
- ldrh r0, [r0]
- bl ItemId_GetImportance
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080A6BA8
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, _080A6BA4 @ =sub_80A6B00
- str r1, [r0]
- movs r0, 0x9
- bl sub_80A7528
- b _080A6BD2
- .align 2, 0
-_080A6B9C: .4byte gTasks + 0x8
-_080A6BA0: .4byte gScriptItemId
-_080A6BA4: .4byte sub_80A6B00
-_080A6BA8:
- mov r1, r8
- ldrh r0, [r1]
- ldrh r1, [r7, 0x2]
- bl AddPCItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A6BC2
- adds r0, r4, 0
- bl sub_80A6A84
- b _080A6BD2
-_080A6BC2:
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, _080A6BDC @ =sub_80A6B00
- str r1, [r0]
- movs r0, 0x8
- bl sub_80A7528
-_080A6BD2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6BDC: .4byte sub_80A6B00
- thumb_func_end sub_80A6B64
-
- thumb_func_start sub_80A6BE0
-sub_80A6BE0: @ 80A6BE0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- adds r0, r4, 0
- bl sub_80A5350
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A6C58
- ldr r0, _080A6C18 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- ands r2, r1
- cmp r2, 0
- beq _080A6C20
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080A6C1C @ =gBGTilemapBuffers + 0x800
- bl sub_80A4DA4
- adds r0, r4, 0
- bl sub_80A6B64
- b _080A6C58
- .align 2, 0
-_080A6C18: .4byte gMain
-_080A6C1C: .4byte gBGTilemapBuffers + 0x800
-_080A6C20:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080A6C58
- ldr r1, _080A6C60 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x1C]
- ldr r1, _080A6C64 @ =gUnknown_03005D10
- ldr r0, _080A6C68 @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0]
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_80A48E8
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_80A5D38
-_080A6C58:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6C60: .4byte gTasks
-_080A6C64: .4byte gUnknown_03005D10
-_080A6C68: .4byte gUnknown_02038559
- thumb_func_end sub_80A6BE0
-
- thumb_func_start sub_80A6C6C
-sub_80A6C6C: @ 80A6C6C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A6CE4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- ldr r2, _080A6CE8 @ =gUnknown_03005D10
- ldr r6, _080A6CEC @ =gUnknown_02038559
- movs r0, 0
- ldrsb r0, [r6, r0]
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0]
- adds r1, r0
- adds r1, 0x1
- strh r1, [r5, 0x1C]
- movs r0, 0
- ldrsb r0, [r6, r0]
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0]
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80A48E8
- bl sub_80A73FC
- movs r0, 0x5
- bl PlaySE
- bl sub_80A7590
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0x4
- beq _080A6D0A
- ldr r0, _080A6CF0 @ =sub_80A6BE0
- str r0, [r5]
- movs r0, 0x6
- bl sub_80A7528
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0x3
- bne _080A6CF4
- movs r0, 0x3
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0x6
- movs r2, 0x9
- movs r3, 0x7
- bl sub_80A4DD8
- b _080A6D14
- .align 2, 0
-_080A6CE4: .4byte gTasks
-_080A6CE8: .4byte gUnknown_03005D10
-_080A6CEC: .4byte gUnknown_02038559
-_080A6CF0: .4byte sub_80A6BE0
-_080A6CF4:
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0x7
- movs r2, 0x9
- movs r3, 0x6
- bl sub_80A4DD8
- b _080A6D14
-_080A6D0A:
- movs r0, 0x1
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- bl sub_80A6B64
-_080A6D14:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A6C6C
-
- thumb_func_start sub_80A6D1C
-sub_80A6D1C: @ 80A6D1C
- push {r4,r5,lr}
- bl HideMapNamePopup
- ldr r0, _080A6D70 @ =gSaveBlock1
- ldr r1, _080A6D74 @ =0x00000496
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0
- beq _080A6D84
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _080A6D80
- bl ScriptContext2_Enable
- bl FreezeMapObjects
- bl sub_80594C0
- bl sub_80597F4
- ldr r1, _080A6D78 @ =gScriptItemId
- ldrh r0, [r4]
- strh r0, [r1]
- ldrh r0, [r4]
- bl ItemId_GetFieldFunc
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A6D7C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0xC]
- b _080A6D8A
- .align 2, 0
-_080A6D70: .4byte gSaveBlock1
-_080A6D74: .4byte 0x00000496
-_080A6D78: .4byte gScriptItemId
-_080A6D7C: .4byte gTasks
-_080A6D80:
- movs r0, 0
- strh r0, [r4]
-_080A6D84:
- ldr r0, _080A6D94 @ =Event_NoRegisteredItem
- bl ScriptContext1_SetupScript
-_080A6D8A:
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080A6D94: .4byte Event_NoRegisteredItem
- thumb_func_end sub_80A6D1C
-
thumb_func_start sub_80A6D98
sub_80A6D98: @ 80A6D98
push {lr}
diff --git a/data/item_menu.s b/data/item_menu.s
index 99c69c1ba..7f65afdc6 100644
--- a/data/item_menu.s
+++ b/data/item_menu.s
@@ -3,40 +3,6 @@
.section .rodata
-gUnknown_083C16B8:: @ 83C16B8
- .byte 7, 9, 8, 2
-
- .align 2
-gUnknown_083C16BC:: @ 83C16BC
- .4byte sub_80A59D0
- .4byte sub_80A599C
- .4byte sub_80A7024
- .4byte sub_80A70D8
- .4byte sub_80A6214
- .4byte sub_80A61EC
- .4byte sub_80A6354
- .4byte sub_80A631C
- .4byte sub_80A6918
- .4byte sub_80A68F0
- .4byte sub_80A59D0
- .4byte sub_80A69B8
- .4byte sub_80A6C6C
- .4byte sub_80A6A4C
-
- .align 2
-gUnknown_083C16F4:: @ 83C16F4
- .4byte sub_80A5E60
- .4byte sub_80A5E90
-
- .align 2
-gUnknown_083C16FC:: @ 83C16FC
- .4byte sub_80A65AC
- .4byte sub_80A6618
-
- .align 1
-gUnknown_083C1704:: @ 83C1704
- .2byte 0x41EE, 0x7FFF
-
gUnknown_083C1708:: @ 83C1708
.byte 4, 5
diff --git a/include/battle_setup.h b/include/battle_setup.h
index e88aefe6d..c8c463f6d 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -87,7 +87,7 @@ bool32 battle_exit_is_player_defeat(u32 a1);
//void sub_80822BC(void);
//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data);
//void battle_80801F0(void);
-u8 *TrainerBattleConfigure(u8 *data);
+u8 *TrainerBattleConfigure(const u8 *data);
void TrainerWantsBattle(u8, u8 *);
bool32 GetTrainerFlagFromScriptPointer(u8 *data);
//void sub_8082524(void);
diff --git a/include/item_menu.h b/include/item_menu.h
index bbe4ac94a..1a0050334 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -6,10 +6,8 @@
void sub_80A3684(void);
void ClearBag(void);
void sub_80A3E0C(void);
-//void sub_80A3FA0(u16 *, u32, u32, u32, u32, u32);
void sub_80A3FA0(u16 *a, u8 b, u8 c, u8 d, u8 e, u16 f);
void sub_80A4164(u8 *, u16, enum StringConvertMode, u8);
-//void sub_80A418C(u16, enum StringConvertMode, int, int, int);
void sub_80A418C(u16 a, enum StringConvertMode b, u8 c, u8 d, u8 e);
void sub_80A53F8(void);
void HandleItemMenuPaletteFade(u8);
@@ -21,7 +19,7 @@ void sub_80A5D04(void);
void sub_80A6300(void);
void sub_80A68CC();
void sub_80A6A30(void);
-int sub_80A6D1C(void);
+bool32 sub_80A6D1C(void);
void sub_80A6DCC(void);
void sub_80A7094(u8);
u8 sub_80A7D8C(u8 berry, int i, int i1);
diff --git a/include/script.h b/include/script.h
index 5577fcb01..e35ec7608 100644
--- a/include/script.h
+++ b/include/script.h
@@ -12,8 +12,8 @@ struct ScriptContext
u8 mode;
u8 comparisonResult;
u8 (*nativePtr)(void);
- u8 *scriptPtr;
- u8 *stack[20];
+ const u8 *scriptPtr;
+ const u8 *stack[20];
ScrCmdFunc *cmdTable;
ScrCmdFunc *cmdTableEnd;
u32 data[4];
@@ -22,12 +22,12 @@ struct ScriptContext
#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))
void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd);
-u8 SetupBytecodeScript(struct ScriptContext *ctx, void *ptr);
+u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
void SetupNativeScript(struct ScriptContext *ctx, void *ptr);
void StopScript(struct ScriptContext *ctx);
u8 RunScript(struct ScriptContext *ctx);
-u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr);
-u8 *ScriptPop(struct ScriptContext *ctx);
+u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
+const u8 *ScriptPop(struct ScriptContext *ctx);
void ScriptJump(struct ScriptContext *ctx, u8 *ptr);
void ScriptCall(struct ScriptContext *ctx, u8 *ptr);
void ScriptReturn(struct ScriptContext *ctx);
@@ -38,10 +38,10 @@ void ScriptContext2_Disable(void);
bool8 ScriptContext2_IsEnabled(void);
void ScriptContext1_Init(void);
bool8 ScriptContext2_RunScript(void);
-void ScriptContext1_SetupScript(u8 *ptr);
+void ScriptContext1_SetupScript(const u8 *ptr);
void ScriptContext1_Stop(void);
void EnableBothScriptContexts(void);
-void ScriptContext2_RunNewScript(u8 *ptr);
+void ScriptContext2_RunNewScript(const u8 *ptr);
u8 *mapheader_get_tagged_pointer(u8 tag);
void mapheader_run_script_by_tag(u8 tag);
u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
diff --git a/include/songs.h b/include/songs.h
index a813cc785..8cf7ee5e9 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -94,11 +94,11 @@ enum
SE_T_KAMI2,
SE_ELEBETA,
/*0x5A*/ SE_HINSI,
- SE_EXPMAX,
- SE_TAMAKORO,
- SE_TAMAKORO_E,
- SE_BASABASA,
- SE_REGI,
+ /*0x5B*/ SE_EXPMAX,
+ /*0x5C*/ SE_TAMAKORO,
+ /*0x5D*/ SE_TAMAKORO_E,
+ /*0x5E*/ SE_BASABASA,
+ /*0x5F*/ SE_REGI,
SE_C_GAJI,
SE_C_MAKU_U,
SE_C_MAKU_D,
diff --git a/src/battle_setup.c b/src/battle_setup.c
index adcbe8eaa..04674e739 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -845,17 +845,17 @@ void HandleFirstBattleEnd(void)
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
-u32 TrainerBattleLoadArg32(u8 *ptr)
+u32 TrainerBattleLoadArg32(const u8 *ptr)
{
return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
}
-u16 TrainerBattleLoadArg16(u8 *ptr)
+u16 TrainerBattleLoadArg16(const u8 *ptr)
{
return ptr[0] | (ptr[1] << 8);
}
-u8 TrainerBattleLoadArg8(u8 *ptr)
+u8 TrainerBattleLoadArg8(const u8 *ptr)
{
return ptr[0];
}
@@ -867,16 +867,16 @@ u16 trainerflag_opponent(void)
bool32 battle_exit_is_player_defeat(u32 a1)
{
- switch (a1 - 1)
+ switch (a1)
{
- case 1:
case 2:
- return TRUE;
- case 0:
case 3:
+ return TRUE;
+ case 1:
case 4:
case 5:
case 6:
+ case 7:
return FALSE;
}
return FALSE;
@@ -895,7 +895,7 @@ void sub_80822BC(void)
gTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data)
+void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, const u8 *data)
{
while (1)
{
@@ -923,7 +923,7 @@ void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data)
*(u32 *)specs->ptr = 0;
break;
case 6:
- *(u8 **)specs->ptr = data;
+ *(const u8 **)specs->ptr = data;
return;
}
specs++;
@@ -939,7 +939,7 @@ void battle_80801F0(void)
}
}
-u8 *TrainerBattleConfigure(u8 *data)
+u8 *TrainerBattleConfigure(const u8 *data)
{
sub_80822BC();
gTrainerBattleMode = TrainerBattleLoadArg8(data);
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 2d8140be5..a4f52f4b9 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -206,7 +206,7 @@ int sub_8068024(struct FieldInput *input)
sub_8071310();
return TRUE;
}
- if (input->pressedSelectButton && sub_80A6D1C() == 1)
+ if (input->pressedSelectButton && sub_80A6D1C() == TRUE)
return TRUE;
return FALSE;
}
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 17584c96a..46784cff3 100644
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c
@@ -34,7 +34,7 @@ bool8 FreezeMapObject(struct MapObject *mapObject)
}
}
-void FreezeMapObjects()
+void FreezeMapObjects(void)
{
u8 i;
for (i = 0; i < 16; i++)
diff --git a/src/item_menu.c b/src/item_menu.c
index eebf5ab13..5c859e684 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -3,6 +3,7 @@
#include "data2.h"
#include "decompress.h"
#include "field_effect.h"
+#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
#include "graphics.h"
#include "item.h"
@@ -11,10 +12,13 @@
#include "item_use.h"
#include "mail_data.h"
#include "main.h"
+#include "map_name_popup.h"
#include "menu.h"
#include "menu_helpers.h"
+#include "money.h"
#include "palette.h"
#include "party_menu.h"
+#include "player_pc.h"
#include "pokemon_menu.h"
#include "rom4.h"
#include "script.h"
@@ -56,6 +60,7 @@ extern const u8 *gUnknown_03000704;
extern struct UnknownStruct1 gUnknown_03005D10[];
extern struct ItemSlot *gUnknown_03005D24; // selected pocket item slots
extern bool8 gLinkOpen;
+extern const u8 Event_NoRegisteredItem[];
extern void gpu_pal_allocator_reset__manage_upper_four(void);
extern void sub_80F9020(void);
@@ -71,6 +76,8 @@ extern bool8 sub_807D770(void);
extern u8 sub_80F931C();
extern void sub_808A3F8(u8);
extern void sub_80B3050(void);
+extern void sub_80546B8(u8);
+extern void sub_804E990(u8);
extern const struct CompressedSpriteSheet gUnknown_083C1CC8;
extern const struct CompressedSpriteSheet gUnknown_083C1CD0;
@@ -128,11 +135,42 @@ const u8 gUnknown_083C16AE[][2] =
{2, 0},
};
-//const u8 gUnknown_083C16B8[] = {7, 9, 8, 2};
+const u8 gUnknown_083C16B8[] = {7, 9, 8, 2};
+
+void sub_80A59D0(u8);
+void sub_80A599C(u8);
+void sub_80A61EC(u8);
+void sub_80A6214(u8);
+void sub_80A631C(u8);
+void sub_80A6354(u8);
+void sub_80A68F0(u8);
+void sub_80A6918(u8);
+void sub_80A69B8(u8);
+void sub_80A6A4C(u8);
+void sub_80A6C6C(u8);
+void sub_80A7024(u8);
+void sub_80A70D8(u8);
+
+const TaskFunc gUnknown_083C16BC[][2] =
+{
+ {sub_80A59D0, sub_80A599C},
+ {sub_80A7024, sub_80A70D8},
+ {sub_80A6214, sub_80A61EC},
+ {sub_80A6354, sub_80A631C},
+ {sub_80A6918, sub_80A68F0},
+ {sub_80A59D0, sub_80A69B8},
+ {sub_80A6C6C, sub_80A6A4C},
+};
+
+void sub_80A5E60(u8);
+void sub_80A5E90(u8);
-extern const TaskFunc gUnknown_083C16BC[][2];
+const struct YesNoFuncTable gUnknown_083C16F4 = {sub_80A5E60, sub_80A5E90};
-extern const struct YesNoFuncTable gUnknown_083C16F4;
+void sub_80A65AC(u8);
+void sub_80A6618(u8);
+
+const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618};
void sub_80A34E8(void);
bool8 sub_80A3520(void);
@@ -156,7 +194,15 @@ void sub_80A5AE4(u8);
void sub_80A5BF8(u8);
void Task_CallItemUseOnFieldCallback(u8);
void HandleItemMenuPaletteFade(u8);
+void sub_80A6444(u8);
+void sub_80A648C(u8);
+void Task_BuyHowManyDialogueHandleInput(u8);
void sub_8064E2C(void);
+void BuyMenuPrintItemQuantityAndPrice(u8);
+void BuyMenuDisplayMessage(u16, u16);
+void sub_80A683C(void);
+void sub_80A6870(u16, u8);
+void sub_80A699C(void);
void ItemListMenu_InitMenu(void);
void sub_80A73C0(void);
void sub_80A73F0(void);
@@ -459,16 +505,12 @@ void ClearBag(void)
sub_80A3684();
}
-extern const u16 gUnknown_083C1704[];
-
void sub_80A3740(void)
{
- u16 arr[2];
+ const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE};
- // TODO: This is a local array
- memcpy(arr, gUnknown_083C1704, 4);
- LoadPalette(&arr[1], 0xD1, sizeof(arr[1]));
- LoadPalette(&arr[0], 0xD8, sizeof(arr[0]));
+ LoadPalette(&colors[1], 0xD1, sizeof(colors[1]));
+ LoadPalette(&colors[0], 0xD8, sizeof(colors[0]));
}
void sub_80A3770(void)
@@ -2795,3 +2837,360 @@ void sub_80A631C(u8 taskId)
gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch;
sub_80A5AE4(taskId);
}
+
+void sub_80A6354(u8 taskId)
+{
+ sub_80A7590();
+ gTasks[taskId].data[10] = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 + 1;
+ sub_80A48E8(taskId, gUnknown_03005D10[gUnknown_02038559].unk0, gUnknown_03005D10[gUnknown_02038559].unk0);
+ sub_80A73FC();
+ CopyItemName(gScriptItemId, gStringVar2);
+ if (ItemId_GetPrice(gScriptItemId) == 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_CantBuyThat);
+ DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6444, 1);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_HowManyToSell);
+ DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A648C, 1);
+ }
+}
+
+void sub_80A640C(u8 taskId)
+{
+ gTasks[taskId].data[10] = 0;
+ sub_80A7528(0);
+ sub_80A41D4(taskId);
+ ItemListMenu_InitMenu();
+ sub_80A37C0(taskId);
+}
+
+void sub_80A6444(u8 taskId)
+{
+ sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31);
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ gTasks[taskId].func = sub_80A640C;
+}
+
+void sub_80A648C(u8 taskId)
+{
+ gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput;
+ sub_80A4008(gBGTilemapBuffers[1], 1, 11, 12, 2);
+ MenuDrawTextWindow(0, 10, 13, 13);
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[3] = 11;
+ if (gUnknown_02038559 + 1 == 4) // if (gUnknown_02038559 == 3)
+ sub_80A418C(1, 1, 1, 11, 3);
+ else
+ sub_80A418C(1, 1, 1, 11, 2);
+ BuyMenuDisplayMessage(gScriptItemId, 1);
+ sub_80A683C();
+}
+
+void sub_80A6520(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BuyMenuPrintItemQuantityAndPrice(taskId);
+ }
+}
+
+void sub_80A6548(u8 taskId)
+{
+ sub_80A48F8(taskId);
+ gTasks[taskId].func = sub_80A6520;
+}
+
+void sub_80A6574(u8 taskId)
+{
+ PlaySE(SE_REGI);
+ sub_80A6870(gScriptItemId, gTasks[taskId].data[1]);
+ gTasks[taskId].func = sub_80A6548;
+}
+
+void sub_80A65AC(u8 taskId)
+{
+ MenuZeroFillWindowRect(7, 6, 13, 12);
+ sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6);
+ CopyItemName(gScriptItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem);
+ DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6574, 1);
+ sub_80A3D5C(taskId);
+}
+
+void sub_80A6618(u8 taskId)
+{
+ MenuZeroFillWindowRect(7, 6, 13, 12);
+ sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6);
+ BuyMenuPrintItemQuantityAndPrice(taskId);
+}
+
+void sub_80A6650(u8 taskId)
+{
+ sub_80A5D78();
+ DoYesNoFuncWithChoice(taskId, &gUnknown_083C16FC);
+}
+
+void Task_BuyHowManyDialogueHandleInput(u8 taskId)
+{
+ if (sub_80A5350(taskId) == TRUE)
+ {
+ MenuZeroFillWindowRect(6, 11, 12, 11);
+ BuyMenuDisplayMessage(gScriptItemId, gTasks[taskId].data[1]);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(0, 10, 13, 13);
+ sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3);
+ ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gScriptItemId) / 2 * gTasks[taskId].data[1], 0, 6);
+ StringExpandPlaceholders(gStringVar4, gOtherText_CanPay);
+ DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6650, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BuyMenuPrintItemQuantityAndPrice(taskId);
+ }
+}
+
+void sub_80A6760(u8 taskId)
+{
+ gTasks[taskId].data[10] = 0;
+ sub_80A7528(0);
+ sub_80A41D4(taskId);
+ ItemListMenu_InitMenu();
+ sub_80A37C0(taskId);
+}
+
+void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
+{
+ sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31);
+ RemoveMoneyLabelObject(0, 0);
+ MenuZeroFillWindowRect(0, 4, 13, 13);
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ gTasks[taskId].func = sub_80A6760;
+}
+
+void BuyMenuDisplayMessage(u16 itemId, u16 quantity)
+{
+ sub_80B7A94(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11);
+ ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(itemId) / 2 * quantity, 0, 6);
+}
+
+void sub_80A683C(void)
+{
+ sub_80B7C14(gSaveBlock1.money, 0, 0);
+ sub_80A4008(gBGTilemapBuffers[1], 1, 1, 12, 2);
+}
+
+void sub_80A6870(u16 itemId, u8 quantity)
+{
+ sub_80B79B8(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity);
+ sub_80B7BEC(gSaveBlock1.money, 0, 0);
+}
+
+void sub_80A68A4(void)
+{
+ if (sub_80A34B4() == TRUE)
+ gUnknown_02038563 = CreateTask(sub_80A50C8, 0);
+}
+
+void sub_80A68CC(void)
+{
+ gUnknown_02038559 = 3;
+ gUnknown_03000701 = 4;
+ SetMainCallback2(sub_80A68A4);
+}
+
+void sub_80A68F0(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)sub_80546B8 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80546B8;
+ sub_80A5AE4(taskId);
+}
+
+void sub_80A6918(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)sub_80546B8 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80546B8;
+ sub_80A5AAC(taskId);
+}
+
+void sub_80A6940(void)
+{
+ while (1)
+ {
+ if (sub_80A317C() == TRUE)
+ {
+ gUnknown_02038563 = CreateTask(sub_80A50C8, 0);
+ sub_80A699C();
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_80A6978(void)
+{
+ gUnknown_02038559 = 3;
+ gUnknown_03000701 = 5;
+ SetMainCallback2(sub_80A6940);
+}
+
+void sub_80A699C(void)
+{
+ gUnknown_03000704 = gUnknown_083C16B8;
+ gUnknown_02038564 = 4;
+}
+
+void sub_80A69B8(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)sub_804E990 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_804E990;
+ sub_80A5AE4(taskId);
+}
+
+void sub_80A69E0(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)sub_804E990 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_804E990;
+ sub_80A5AAC(taskId);
+}
+
+void sub_80A6A08(void)
+{
+ if (sub_80A34B4() == TRUE)
+ gUnknown_02038563 = CreateTask(sub_80A50C8, 0);
+}
+
+void sub_80A6A30(void)
+{
+ gUnknown_03000701 = 6;
+ SetMainCallback2(sub_80A6A08);
+}
+
+void sub_80A6A4C(u8 taskId)
+{
+ gFieldCallback = ItemStorage_ReturnToMenuAfterDeposit;
+ gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16;
+ gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch;
+ sub_80A5AE4(taskId);
+}
+
+void sub_80A6A84(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+
+ sub_80A4DA4(gBGTilemapBuffers[1]);
+ CopyItemName(gScriptItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, taskData[1], 0, 3);
+ MenuZeroFillWindowRect(7, 6, 11, 13);
+ sub_80A7528(7);
+ sub_80A3D5C(taskId);
+ gTasks[taskId].func = sub_80A5E1C;
+}
+
+void sub_80A6B00(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ gTasks[taskId].data[10] = 0;
+ sub_80A48E8(taskId, gUnknown_03005D10[gUnknown_02038559].unk0, gUnknown_03005D10[gUnknown_02038559].unk0);
+ PlaySE(SE_SELECT);
+ sub_80A5D38(taskId);
+ }
+}
+
+void sub_80A6B64(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+
+ if (ItemId_GetImportance(gScriptItemId) == 2)
+ {
+ gTasks[taskId].func = sub_80A6B00;
+ sub_80A7528(9);
+ }
+ else
+ {
+ if (AddPCItem(gScriptItemId, taskData[1]) == TRUE)
+ {
+ sub_80A6A84(taskId);
+ }
+ else
+ {
+ gTasks[taskId].func = sub_80A6B00;
+ sub_80A7528(8);
+ }
+ }
+}
+
+void sub_80A6BE0(u8 taskId)
+{
+ if (sub_80A5350(taskId) == TRUE)
+ return;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_80A4DA4(gBGTilemapBuffers[1]);
+ sub_80A6B64(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].data[10] = 0;
+ sub_80A48E8(taskId, gUnknown_03005D10[gUnknown_02038559].unk0, gUnknown_03005D10[gUnknown_02038559].unk0);
+ PlaySE(SE_SELECT);
+ sub_80A5D38(taskId);
+ }
+}
+
+void sub_80A6C6C(u8 taskId)
+{
+ gTasks[taskId].data[10] = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 + 1;
+ sub_80A48E8(taskId, gUnknown_03005D10[gUnknown_02038559].unk0, gUnknown_03005D10[gUnknown_02038559].unk0);
+ sub_80A73FC();
+ PlaySE(SE_SELECT);
+ sub_80A7590();
+ if (gUnknown_02038559 != 4)
+ {
+ gTasks[taskId].func = sub_80A6BE0;
+ sub_80A7528(6);
+ if (gUnknown_02038559 + 1 == 4) // if (gUnknown_02038559 == 3)
+ sub_80A4DD8(taskId, 6, 9, 7, 3, 3);
+ else
+ sub_80A4DD8(taskId, 7, 9, 6, 3, 2);
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 1;
+ sub_80A6B64(taskId);
+ }
+}
+
+bool32 sub_80A6D1C(void)
+{
+ HideMapNamePopup();
+ if (gSaveBlock1.registeredItem != 0)
+ {
+ if (CheckBagHasItem(gSaveBlock1.registeredItem, 1) == TRUE)
+ {
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_80594C0();
+ sub_80597F4();
+ gScriptItemId = gSaveBlock1.registeredItem;
+ taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1.registeredItem), 8);
+ gTasks[taskId].data[2] = 1;
+ return TRUE;
+ }
+ gSaveBlock1.registeredItem = 0;
+ }
+ ScriptContext1_SetupScript(Event_NoRegisteredItem);
+ return TRUE;
+}
diff --git a/src/script.c b/src/script.c
index 488a67de1..c27eb22fe 100644
--- a/src/script.c
+++ b/src/script.c
@@ -34,7 +34,7 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable
ctx->stack[i] = 0;
}
-u8 SetupBytecodeScript(struct ScriptContext *ctx, void *ptr)
+u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr)
{
ctx->scriptPtr = ptr;
ctx->mode = 1;
@@ -106,7 +106,7 @@ u8 RunScript(struct ScriptContext *ctx)
return 1;
}
-u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr)
+u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr)
{
if (ctx->stackDepth + 1 >= 20)
{
@@ -120,7 +120,7 @@ u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr)
}
}
-u8 *ScriptPop(struct ScriptContext *ctx)
+const u8 *ScriptPop(struct ScriptContext *ctx)
{
if (ctx->stackDepth == 0)
return NULL;
@@ -202,7 +202,7 @@ bool8 ScriptContext2_RunScript(void)
return 1;
}
-void ScriptContext1_SetupScript(u8 *ptr)
+void ScriptContext1_SetupScript(const u8 *ptr)
{
InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd);
SetupBytecodeScript(&sScriptContext1, ptr);
@@ -221,7 +221,7 @@ void EnableBothScriptContexts()
ScriptContext2_Enable();
}
-void ScriptContext2_RunNewScript(u8 *ptr)
+void ScriptContext2_RunNewScript(const u8 *ptr)
{
InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd);
SetupBytecodeScript(&sScriptContext2, ptr);