summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-05-14 19:34:04 -0400
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-05-14 19:34:04 -0400
commitd8ce874f29cb6d21f3348f62ebe05ce004ac3c38 (patch)
treec73368a47a301db9b82c8a99f5513c7c63c20cd8
parentf999ebede0e0012cc68be71841edd3910168c105 (diff)
decompile up to sub_813AF3C
-rw-r--r--asm/player_pc.s271
-rw-r--r--src/player_pc.c129
2 files changed, 125 insertions, 275 deletions
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 5e2adb775..0d3189b61 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -6,277 +6,6 @@
.text
- thumb_func_start sub_813AD58
-sub_813AD58: @ 813AD58
- push {lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r2, _0813AD74 @ =0xffff0009
- adds r0, r1, r2
- cmp r0, 0x8
- bhi _0813ADE8
- lsls r0, 2
- ldr r1, _0813AD78 @ =_0813AD7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813AD74: .4byte 0xffff0009
-_0813AD78: .4byte _0813AD7C
- .align 2, 0
-_0813AD7C:
- .4byte _0813ADE0
- .4byte _0813ADD8
- .4byte _0813ADD0
- .4byte _0813ADC8
- .4byte _0813ADC0
- .4byte _0813ADB8
- .4byte _0813ADB0
- .4byte _0813ADA8
- .4byte _0813ADA0
-_0813ADA0:
- ldr r1, _0813ADA4 @ =gMenuText_GoBackToPrev
- b _0813ADF0
- .align 2, 0
-_0813ADA4: .4byte gMenuText_GoBackToPrev
-_0813ADA8:
- ldr r1, _0813ADAC @ =gOtherText_HowManyToWithdraw
- b _0813ADF0
- .align 2, 0
-_0813ADAC: .4byte gOtherText_HowManyToWithdraw
-_0813ADB0:
- ldr r1, _0813ADB4 @ =gOtherText_WithdrewThing
- b _0813ADF0
- .align 2, 0
-_0813ADB4: .4byte gOtherText_WithdrewThing
-_0813ADB8:
- ldr r1, _0813ADBC @ =gOtherText_HowManyToToss
- b _0813ADF0
- .align 2, 0
-_0813ADBC: .4byte gOtherText_HowManyToToss
-_0813ADC0:
- ldr r1, _0813ADC4 @ =gOtherText_ThrewAwayItem
- b _0813ADF0
- .align 2, 0
-_0813ADC4: .4byte gOtherText_ThrewAwayItem
-_0813ADC8:
- ldr r1, _0813ADCC @ =gOtherText_NoMoreRoom
- b _0813ADF0
- .align 2, 0
-_0813ADCC: .4byte gOtherText_NoMoreRoom
-_0813ADD0:
- ldr r1, _0813ADD4 @ =gOtherText_TooImportant
- b _0813ADF0
- .align 2, 0
-_0813ADD4: .4byte gOtherText_TooImportant
-_0813ADD8:
- ldr r1, _0813ADDC @ =gOtherText_OkayToThrowAwayPrompt
- b _0813ADF0
- .align 2, 0
-_0813ADDC: .4byte gOtherText_OkayToThrowAwayPrompt
-_0813ADE0:
- ldr r1, _0813ADE4 @ =gOtherText_SwitchWhichItem
- b _0813ADF0
- .align 2, 0
-_0813ADE4: .4byte gOtherText_SwitchWhichItem
-_0813ADE8:
- adds r0, r1, 0
- bl ItemId_GetDescription
- adds r1, r0, 0
-_0813ADF0:
- movs r0, 0x30
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- adds r0, r1, 0
- movs r1, 0x8
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813AD58
-
- thumb_func_start sub_813AE0C
-sub_813AE0C: @ 813AE0C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _0813AE48 @ =gTasks + 0x8
- adds r4, r1, r2
- ldrh r1, [r4]
- ldrh r2, [r4, 0x2]
- adds r1, r2
- lsls r1, 16
- lsrs r5, r1, 16
- bl sub_813ABE8
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0813AE62
- lsls r0, r5, 16
- asrs r1, r0, 16
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _0813AE50
- ldr r0, _0813AE4C @ =0x0000ffff
- bl sub_813AD58
- b _0813AE62
- .align 2, 0
-_0813AE48: .4byte gTasks + 0x8
-_0813AE4C: .4byte 0x0000ffff
-_0813AE50:
- ldr r0, _0813AE68 @ =gSaveBlock1
- lsls r1, 2
- adds r1, r0
- movs r0, 0x93
- lsls r0, 3
- adds r1, r0
- ldrh r0, [r1]
- bl sub_813AD58
-_0813AE62:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AE68: .4byte gSaveBlock1
- thumb_func_end sub_813AE0C
-
- thumb_func_start sub_813AE6C
-sub_813AE6C: @ 813AE6C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- ldr r0, _0813AEF8 @ =gTasks + 0x8
- adds r5, r0
- bl sub_80F944C
- bl LoadScrollIndicatorPalette
- bl sub_813AF04
- movs r0, 0xF
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r0, 0
- movs r1, 0xC
- movs r2, 0xE
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r0, 0
- movs r1, 0
- movs r2, 0xB
- movs r3, 0x3
- bl MenuDrawTextWindow
- ldr r0, _0813AEFC @ =gSaveBlock1
- movs r1, 0x93
- lsls r1, 3
- adds r0, r1
- ldrh r0, [r0]
- bl sub_813AD58
- ldr r0, _0813AF00 @ =gUnknown_084062C0
- lsls r4, 3
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- movs r2, 0x1
- bl MenuPrint
- adds r0, r6, 0
- bl sub_813ABE8
- ldrb r3, [r5, 0x8]
- ldrb r0, [r5]
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x2
- bl InitMenu
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AEF8: .4byte gTasks + 0x8
-_0813AEFC: .4byte gSaveBlock1
-_0813AF00: .4byte gUnknown_084062C0
- thumb_func_end sub_813AE6C
-
- thumb_func_start sub_813AF04
-sub_813AF04: @ 813AF04
- push {lr}
- sub sp, 0x8
- ldr r1, _0813AF38 @ =gUnknown_08406334
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- add r0, sp, 0x4
- movs r1, 0xDF
- movs r2, 0x2
- bl LoadPalette
- mov r0, sp
- adds r0, 0x2
- movs r1, 0xD1
- movs r2, 0x2
- bl LoadPalette
- mov r0, sp
- movs r1, 0xD8
- movs r2, 0x2
- bl LoadPalette
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0813AF38: .4byte gUnknown_08406334
- thumb_func_end sub_813AF04
-
- thumb_func_start sub_813AF3C
-sub_813AF3C: @ 813AF3C
- push {r4,lr}
- movs r2, 0
- movs r1, 0x6
- ldr r4, _0813AF70 @ =gSaveBlock1
- ldr r3, _0813AF74 @ =0x00002b6c
-_0813AF46:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, 0
- beq _0813AF5C
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_0813AF5C:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _0813AF46
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0813AF70: .4byte gSaveBlock1
-_0813AF74: .4byte 0x00002b6c
- thumb_func_end sub_813AF3C
-
thumb_func_start sub_813AF78
sub_813AF78: @ 813AF78
push {r4-r7,lr}
diff --git a/src/player_pc.c b/src/player_pc.c
index f0f0709b1..d24dbecb7 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -21,28 +21,41 @@ enum
QUANTITY,
};
+// special item description handlers
+enum
+{
+ ITEMPC_SWITCH_WHICH_ITEM = 0xFFF7,
+ ITEMPC_OKAY_TO_THROW_AWAY,
+ ITEMPC_TOO_IMPORTANT,
+ ITEMPC_NO_MORE_ROOM,
+ ITEMPC_THREW_AWAY_ITEM,
+ ITEMPC_HOW_MANY_TO_TOSS,
+ ITEMPC_WITHDREW_THING,
+ ITEMPC_HOW_MANY_TO_WITHDRAW,
+ ITEMPC_GO_BACK_TO_PREV
+};
+
extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);
extern void DoPlayerPCDecoration(u8);
extern void BuyMenuFreeMemory(void);
extern void DestroyVerticalScrollIndicator(u8);
-extern u8 sub_813AF3C(void);
extern void sub_813AF78(void);
extern void sub_813B108(u8);
extern void sub_813B174(u8);
extern void sub_80A6A30(void);
extern u8 sub_807D770(void);
-extern void sub_813AE6C(u8, u8);
-extern void sub_813AD58(u16);
-extern void sub_813AE0C(u8);
extern void sub_80F996C(u8);
extern void sub_80A418C(u16, enum StringConvertMode, int, int, int);
extern void sub_80F98DC(int);
extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8);
extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args
+extern void sub_80F944C(void);
+extern void LoadScrollIndicatorPalette(void);
extern u8 gOtherText_NoItems[];
extern u16 gNewGamePCItems[];
+extern u16 gUnknown_08406334[3];
extern u8 gOtherText_WhatWillYouDo[];
extern u8 gOtherText_NoMailHere[];
@@ -57,7 +70,16 @@ extern u8 gUnknown_08406327[];
extern u8 gUnknown_08406330[];
extern u8 gUnknown_0840631E[];
extern u8 gUnknown_08406318[];
+extern u8 gMenuText_GoBackToPrev[];
extern u8 gOtherText_CancelNoTerminator[];
+extern u8 gOtherText_HowManyToWithdraw[];
+extern u8 gOtherText_WithdrewThing[];
+extern u8 gOtherText_HowManyToToss[];
+extern u8 gOtherText_ThrewAwayItem[];
+extern u8 gOtherText_NoMoreRoom[];
+extern u8 gOtherText_TooImportant[];
+extern u8 gOtherText_OkayToThrowAwayPrompt[];
+extern u8 gOtherText_SwitchWhichItem[];
extern u8 gUnknown_030007B4;
extern u8 unk_201FE00[];
@@ -86,6 +108,11 @@ void sub_813A984(u8);
void sub_813A9EC(u8);
void sub_813AA30(u8, u8);
void sub_813ABE8(u8);
+void sub_813AD58(u16);
+void sub_813AE0C(u8);
+void sub_813AE6C(u8, u8);
+void sub_813AF04(void);
+u8 sub_813AF3C(void);
void NewGameInitPCItems(void)
{
@@ -825,3 +852,97 @@ weirdCase:
else
DestroyVerticalScrollIndicator(1);
}
+
+void sub_813AD58(u16 itemId)
+{
+ u8 *string;
+
+ switch(itemId)
+ {
+ case ITEMPC_GO_BACK_TO_PREV:
+ string = gMenuText_GoBackToPrev;
+ break;
+ case ITEMPC_HOW_MANY_TO_WITHDRAW:
+ string = gOtherText_HowManyToWithdraw;
+ break;
+ case ITEMPC_WITHDREW_THING:
+ string = gOtherText_WithdrewThing;
+ break;
+ case ITEMPC_HOW_MANY_TO_TOSS:
+ string = gOtherText_HowManyToToss;
+ break;
+ case ITEMPC_THREW_AWAY_ITEM:
+ string = gOtherText_ThrewAwayItem;
+ break;
+ case ITEMPC_NO_MORE_ROOM:
+ string = gOtherText_NoMoreRoom;
+ break;
+ case ITEMPC_TOO_IMPORTANT:
+ string = gOtherText_TooImportant;
+ break;
+ case ITEMPC_OKAY_TO_THROW_AWAY:
+ string = gOtherText_OkayToThrowAwayPrompt;
+ break;
+ case ITEMPC_SWITCH_WHICH_ITEM:
+ string = gOtherText_SwitchWhichItem;
+ break;
+ default:
+ string = ItemId_GetDescription(itemId);
+ break;
+ }
+
+ sub_8072AB0(string, 8, 0x68, 0x68, 0x30, 1);
+}
+
+void sub_813AE0C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 var = data[1] + data[0];
+
+ sub_813ABE8(taskId);
+
+ if(data[9] == 0)
+ {
+ if(var == data[2])
+ sub_813AD58(0xFFFF);
+ else
+ sub_813AD58(gSaveBlock1.pcItems[var].itemId);
+ }
+}
+
+void sub_813AE6C(u8 taskId, u8 var)
+{
+ s16 *data = gTasks[taskId].data;
+
+ sub_80F944C();
+ LoadScrollIndicatorPalette();
+ sub_813AF04();
+ MenuDrawTextWindow(0xF, 0, 0x1D, 0x13);
+ MenuDrawTextWindow(0, 0xC, 0xE, 0x13);
+ MenuDrawTextWindow(0, 0, 0xB, 3);
+ sub_813AD58(gSaveBlock1.pcItems[0].itemId);
+ MenuPrint(gUnknown_084062C0[var].text, 1, 1);
+ sub_813ABE8(taskId);
+ InitMenu(0, 0x10, 2, data[4], data[0], 0xD);
+}
+
+void sub_813AF04(void)
+{
+ u16 arr[3];
+
+ memcpy(arr, gUnknown_08406334, sizeof(arr));
+ LoadPalette(&arr[2], 0xDF, 2);
+ LoadPalette(&arr[1], 0xD1, 2);
+ LoadPalette(&arr[0], 0xD8, 2);
+}
+
+u8 sub_813AF3C(void)
+{
+ u8 i, j;
+
+ for(i = 0, j = 6; j < 16; j++)
+ if(gSaveBlock1.mail[j].itemId != 0)
+ i++;
+
+ return i;
+}