summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-12-17 22:56:37 -0800
committerYamaArashi <shadow962@live.com>2016-12-17 22:56:37 -0800
commitb3187c45ff041df8b8404548ef8f3f221a752939 (patch)
tree20e717875333519769bb5b8d3b4972ac5f0adbe2
parent507f88dc3cf05854b58b5832221e758a57db48ca (diff)
decompile InitPlayerPCMenu
-rw-r--r--asm/player_pc.s53
-rw-r--r--src/player_pc.c42
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;
-}*/
+}