diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-05-14 19:34:04 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-05-14 19:34:04 -0400 |
commit | d8ce874f29cb6d21f3348f62ebe05ce004ac3c38 (patch) | |
tree | c73368a47a301db9b82c8a99f5513c7c63c20cd8 | |
parent | f999ebede0e0012cc68be71841edd3910168c105 (diff) |
decompile up to sub_813AF3C
-rw-r--r-- | asm/player_pc.s | 271 | ||||
-rw-r--r-- | src/player_pc.c | 129 |
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; +} |