diff options
| -rw-r--r-- | asm/player_pc.s | 53 | ||||
| -rw-r--r-- | src/player_pc.c | 42 | 
2 files changed, 19 insertions, 76 deletions
| diff --git a/asm/player_pc.s b/asm/player_pc.s index 26e3576f3..3c9c069d6 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -6,59 +6,6 @@  	.text -	thumb_func_start InitPlayerPCMenu -InitPlayerPCMenu: @ 8139CF4 -	push {r4,r5,lr} -	sub sp, 0x8 -	adds r4, r0, 0 -	lsls r4, 24 -	lsrs r4, 24 -	ldr r5, _08139D50 @ =gUnknown_030007B4 -	ldrb r3, [r5] -	lsls r3, 1 -	adds r3, 0x1 -	lsls r3, 24 -	lsrs r3, 24 -	movs r0, 0 -	movs r1, 0 -	movs r2, 0xA -	bl MenuDrawTextWindow -	ldrb r2, [r5] -	ldr r3, _08139D54 @ =gUnknown_08406298 -	ldr r0, _08139D58 @ =gUnknown_02039314 -	ldr r0, [r0] -	str r0, [sp] -	movs r0, 0x1 -	movs r1, 0x1 -	bl PrintMenuItemsReordered -	ldrb r3, [r5] -	movs r0, 0 -	str r0, [sp] -	movs r0, 0x9 -	str r0, [sp, 0x4] -	movs r0, 0 -	movs r1, 0x1 -	movs r2, 0x1 -	bl InitMenu -	ldr r1, _08139D5C @ =gTasks -	lsls r0, r4, 2 -	adds r0, r4 -	lsls r0, 3 -	adds r0, r1 -	ldr r1, _08139D60 @ =PlayerPCProcessMenuInput -	str r1, [r0] -	add sp, 0x8 -	pop {r4,r5} -	pop {r0} -	bx r0 -	.align 2, 0 -_08139D50: .4byte gUnknown_030007B4 -_08139D54: .4byte gUnknown_08406298 -_08139D58: .4byte gUnknown_02039314 -_08139D5C: .4byte gTasks -_08139D60: .4byte PlayerPCProcessMenuInput -	thumb_func_end InitPlayerPCMenu -  	thumb_func_start PlayerPCProcessMenuInput  PlayerPCProcessMenuInput: @ 8139D64  	push {r4,r5,lr} diff --git a/src/player_pc.c b/src/player_pc.c index b8eb1b6d7..79d7a671b 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -1,25 +1,22 @@  #include "global.h"  #include "item.h"  #include "task.h" +#include "menu.h" -/*  -this file is way too hard. I'm coming back to this one later. For one, InitPlayerPCMenu  -is treated as a u8 (wtf?) in BedroomPC and PlayerPC for some insanely stupid reason, which means -when it actually is decompiled there's almost no way this'll match anymore. script_menu.s probably -needs to be decompiled before this. -*/ - -extern void DisplayItemMessageOnField(u8, u8*, u8*, u16); +extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);  extern u16 gNewGamePCItems[]; -extern u8 InitPlayerPCMenu;  extern u8 gOtherText_WhatWillYouDo[]; -extern u32 gUnknown_02039314; -extern u32 gUnknown_084062B8[]; -extern u32 gUnknown_084062BC[]; -extern u8 gUnknown_030007B4[][2]; +extern u8 *gUnknown_02039314; +extern struct MenuAction gUnknown_08406298[]; +extern u8 gUnknown_084062B8[]; +extern u8 gUnknown_084062BC[]; +extern u8 gUnknown_030007B4; + +void InitPlayerPCMenu(u8 taskId); +void PlayerPCProcessMenuInput(u8 taskId);  void NewGameInitPCItems(void)  { @@ -39,27 +36,26 @@ void BedroomPC(void)  {  	u8 taskId; -	gUnknown_02039314 = (int)&gUnknown_084062B8; -	gUnknown_030007B4[0][0] = 4; +	gUnknown_02039314 = gUnknown_084062B8; +	gUnknown_030007B4 = 4;  	taskId = CreateTask(TaskDummy, 0); -	DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, &InitPlayerPCMenu, 0); +	DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);  }  void PlayerPC(void)  {  	u8 taskId; -	gUnknown_02039314 = (int)&gUnknown_084062BC; -	gUnknown_030007B4[0][0] = 3; +	gUnknown_02039314 = gUnknown_084062BC; +	gUnknown_030007B4 = 3;  	taskId = CreateTask(TaskDummy, 0); -	DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, &InitPlayerPCMenu, 0); +	DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0);  } -// not done -/*void InitPlayerPCMenu(u8 taskId) +void InitPlayerPCMenu(u8 taskId)  { -	MenuDrawTextWindow(0, 0, 10, gUnknown_030007B4[1][0]); +	MenuDrawTextWindow(0, 0, 10, gUnknown_030007B4 * 2 + 1);  	PrintMenuItemsReordered(1, 1, gUnknown_030007B4, gUnknown_08406298, gUnknown_02039314);  	InitMenu(0, 1, 1, gUnknown_030007B4, 0, 9);  	gTasks[taskId].func = PlayerPCProcessMenuInput; -}*/ +} | 
