summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2016-12-28 20:02:09 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2016-12-28 17:02:09 -0800
commit3af3ef6c2cf6ad58aceee3588f5cc26ee12f3003 (patch)
treeb5766b8335ee989ff23dd1cd851b2d87440012c4
parentc1041cee814c7be8a73af3a90cd37c4a345c2ffc (diff)
begin decompiling script_menu.c (#140)
-rw-r--r--asm/script_menu.s123
-rw-r--r--ld_script.txt1
-rw-r--r--src/script_menu.c46
3 files changed, 50 insertions, 120 deletions
diff --git a/asm/script_menu.s b/asm/script_menu.s
index bd6180940..ab1b72340 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -6,125 +6,8 @@
.text
- thumb_func_start sub_80B5054
-sub_80B5054: @ 80B5054
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- lsls r3, 24
- lsrs r5, r3, 24
- ldr r0, _080B5098 @ =sub_80B52B4
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080B50A4
- ldr r1, _080B509C @ =gScriptResult
- movs r0, 0xFF
- strh r0, [r1]
- ldr r1, _080B50A0 @ =gMultichoiceLists
- lsls r0, r4, 3
- adds r0, r1
- ldrb r2, [r0, 0x4]
- ldr r3, [r0]
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_80B5138
- movs r0, 0x1
- b _080B50A6
- .align 2, 0
-_080B5098: .4byte sub_80B52B4
-_080B509C: .4byte gScriptResult
-_080B50A0: .4byte gMultichoiceLists
-_080B50A4:
- movs r0, 0
-_080B50A6:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B5054
-
- thumb_func_start sub_80B50B0
-sub_80B50B0: @ 80B50B0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B5100 @ =sub_80B52B4
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080B510C
- ldr r1, _080B5104 @ =gScriptResult
- movs r0, 0xFF
- strh r0, [r1]
- ldr r1, _080B5108 @ =gMultichoiceLists
- lsls r0, r5, 3
- adds r0, r1
- ldrb r2, [r0, 0x4]
- ldr r3, [r0]
- str r6, [sp]
- str r4, [sp, 0x4]
- mov r0, r8
- adds r1, r7, 0
- bl sub_80B5138
- movs r0, 0x1
- b _080B510E
- .align 2, 0
-_080B5100: .4byte sub_80B52B4
-_080B5104: .4byte gScriptResult
-_080B5108: .4byte gMultichoiceLists
-_080B510C:
- movs r0, 0
-_080B510E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B50B0
-
- thumb_func_start GetStringWidthInTilesForScriptMenu
-GetStringWidthInTilesForScriptMenu: @ 80B511C
- push {lr}
- adds r1, r0, 0
- ldr r0, _080B5134 @ =gWindowConfig_81E6CE4
- bl GetStringWidthGivenWindowConfig
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0x7
- lsrs r0, r1, 3
- pop {r1}
- bx r1
- .align 2, 0
-_080B5134: .4byte gWindowConfig_81E6CE4
- thumb_func_end GetStringWidthInTilesForScriptMenu
-
- thumb_func_start sub_80B5138
-sub_80B5138: @ 80B5138
+ thumb_func_start DrawMultichoiceMenu
+DrawMultichoiceMenu: @ 80B5138
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -247,7 +130,7 @@ _080B51B8:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_80B5138
+ thumb_func_end DrawMultichoiceMenu
thumb_func_start sub_80B5230
sub_80B5230: @ 80B5230
diff --git a/ld_script.txt b/ld_script.txt
index 462418395..b96164483 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -126,6 +126,7 @@ SECTIONS {
asm/contest.o(.text);
asm/shop.o(.text);
src/berry.o(.text);
+ src/script_menu.o(.text);
asm/script_menu.o(.text);
asm/naming_screen.o(.text);
src/money.o(.text);
diff --git a/src/script_menu.c b/src/script_menu.c
new file mode 100644
index 000000000..d8d76c27c
--- /dev/null
+++ b/src/script_menu.c
@@ -0,0 +1,46 @@
+#include "global.h"
+#include "task.h"
+#include "text.h"
+#include "menu.h"
+
+extern void sub_80B52B4(u8);
+extern void DrawMultichoiceMenu(u8, u8, u8, u8 *, int, int);
+
+struct MultichoiceStruct
+{
+ u8 *textPtr;
+ u8 var;
+};
+
+extern struct MultichoiceStruct gMultichoiceLists[];
+
+extern u16 gScriptResult;
+
+bool8 sub_80B5054(u8 var1, u8 var2, u8 var3, u8 var4)
+{
+ if(FuncIsActiveTask(sub_80B52B4) == 1)
+ return FALSE;
+ else
+ {
+ gScriptResult = 0xFF;
+ DrawMultichoiceMenu(var1, var2, gMultichoiceLists[var3].var, gMultichoiceLists[var3].textPtr, var4, 0);
+ return TRUE;
+ }
+}
+
+bool8 sub_80B50B0(u8 var1, u8 var2, u8 var3, u8 var4, u8 var5)
+{
+ if(FuncIsActiveTask(sub_80B52B4) == 1)
+ return FALSE;
+ else
+ {
+ gScriptResult = 0xFF;
+ DrawMultichoiceMenu(var1, var2, gMultichoiceLists[var3].var, gMultichoiceLists[var3].textPtr, var4, var5);
+ return TRUE;
+ }
+}
+
+u8 GetStringWidthInTilesForScriptMenu(u8 *str)
+{
+ return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8;
+}