diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2016-12-28 20:02:09 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2016-12-28 17:02:09 -0800 |
commit | 3af3ef6c2cf6ad58aceee3588f5cc26ee12f3003 (patch) | |
tree | b5766b8335ee989ff23dd1cd851b2d87440012c4 | |
parent | c1041cee814c7be8a73af3a90cd37c4a345c2ffc (diff) |
begin decompiling script_menu.c (#140)
-rw-r--r-- | asm/script_menu.s | 123 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/script_menu.c | 46 |
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; +} |