diff --git a/asm/include/main_0202B568.inc b/asm/include/main_0202B568.inc index e1bd5c0e..3efde11c 100644 --- a/asm/include/main_0202B568.inc +++ b/asm/include/main_0202B568.inc @@ -1,7 +1,4 @@ #pragma once -.public ADVANCED_MENU_DEFAULT_WINDOW_PARAMS -.public CalcMenuHeightDiv8__02031AA4 -.public DeleteWindow .public GetMaxItemsOnPage .public GetNumItemsOnPage .public GetPageItemYOffset @@ -9,24 +6,15 @@ .public GetSelectedMenuItemIdx .public GetTotalNumMenuItems .public GetWindowContents -.public GetWindowRectangle -.public InitWindowInput .public IsMenuOptionActive -.public MemAlloc -.public MemFree -.public NewWindowScreenCheck .public PlayWindowInputSound -.public UpdateAdvancedMenu .public UpdateWindow .public sub_020263C8 -.public sub_020265A8 .public sub_02027B1C .public sub_0202810C .public sub_0202812C -.public sub_0202830C .public sub_02028948 .public sub_0202A03C -.public sub_02031A5C .public sub_02031C74 .public sub_02031C84 .public sub_02031C98 @@ -35,5 +23,4 @@ .public sub_020323F8 .public sub_0203250C .public sub_02032684 -.public sub_02032984 .public sub_02033758 diff --git a/asm/include/main_0202BA20.inc b/asm/include/main_0202BA20.inc new file mode 100644 index 00000000..c5833b4d --- /dev/null +++ b/asm/include/main_0202BA20.inc @@ -0,0 +1,12 @@ +#pragma once +.public ADVANCED_MENU_DEFAULT_WINDOW_PARAMS +.public CalcMenuHeightDiv8__02031AA4 +.public GetWindowContents +.public GetWindowRectangle +.public InitWindowInput +.public MemAlloc +.public NewWindowScreenCheck +.public UpdateAdvancedMenu +.public sub_020265A8 +.public sub_02031A5C +.public sub_02032984 diff --git a/asm/include/main_0202BC60.inc b/asm/include/main_0202BC60.inc new file mode 100644 index 00000000..75b2597d --- /dev/null +++ b/asm/include/main_0202BC60.inc @@ -0,0 +1,3 @@ +#pragma once +.public GetWindowContents +.public sub_0202830C diff --git a/asm/include/main_0202BCDC.inc b/asm/include/main_0202BCDC.inc new file mode 100644 index 00000000..30543a07 --- /dev/null +++ b/asm/include/main_0202BCDC.inc @@ -0,0 +1,2 @@ +#pragma once +.public GetWindowContents diff --git a/asm/include/main_0202F190.inc b/asm/include/main_0202F190.inc index 7833ba78..b46d832b 100644 --- a/asm/include/main_0202F190.inc +++ b/asm/include/main_0202F190.inc @@ -8,8 +8,6 @@ .public DeleteWindow .public DrawTextInWindow .public GetPressedButtons -.public GetSelectedItemOnPage -.public GetSelectedMenuItemIdx .public GetWindowContents .public GetWindowRectangle .public InitPortraitParams @@ -54,8 +52,4 @@ .public sub_0202812C .public sub_0202836C .public sub_02028770 -.public sub_020288DC -.public sub_020289B8 -.public sub_02028A08 -.public sub_02032984 .public sub_02048240 diff --git a/asm/include/main_020307B8.inc b/asm/include/main_020307B8.inc new file mode 100644 index 00000000..bc3bf7bb --- /dev/null +++ b/asm/include/main_020307B8.inc @@ -0,0 +1,3 @@ +#pragma once +.public GetWindowContents +.public sub_02032984 diff --git a/asm/include/main_02030850.inc b/asm/include/main_02030850.inc new file mode 100644 index 00000000..af77516a --- /dev/null +++ b/asm/include/main_02030850.inc @@ -0,0 +1,7 @@ +#pragma once +.public DeleteWindow +.public GetWindowContents +.public MemFree +.public sub_0202812C +.public sub_0202836C +.public sub_020288DC diff --git a/asm/include/main_020308A0.inc b/asm/include/main_020308A0.inc new file mode 100644 index 00000000..3c7c1302 --- /dev/null +++ b/asm/include/main_020308A0.inc @@ -0,0 +1,8 @@ +#pragma once +.public DeleteWindow +.public GetSelectedItemOnPage +.public GetSelectedMenuItemIdx +.public GetWindowContents +.public MemFree +.public sub_020289B8 +.public sub_02028A08 diff --git a/asm/main_0202B568.s b/asm/main_0202B568.s index acc3e272..9f929512 100644 --- a/asm/main_0202B568.s +++ b/asm/main_0202B568.s @@ -344,232 +344,3 @@ _0202B9F4: bl UpdateWindow ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} arm_func_end sub_0202B934 - - arm_func_start SetSimpleMenuField0x1AC -SetSimpleMenuField0x1AC: ; 0x0202BA0C - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetWindowContents - str r4, [r0, #0x1ac] - ldmia sp!, {r4, pc} - arm_func_end SetSimpleMenuField0x1AC - - arm_func_start CreateAdvancedMenu -CreateAdvancedMenu: ; 0x0202BA20 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x28 - sub sp, sp, #0x400 - mov r6, r0 - mov sl, r1 - mov r0, #0x1b0 - mov r1, #8 - mov sb, r2 - mov r8, r3 - bl MemAlloc - mov r5, r0 - cmp r6, #0 - ldreq r0, _0202BBE8 ; =ADVANCED_MENU_DEFAULT_WINDOW_PARAMS - add r4, sp, #0x18 - ldmeqia r0, {r0, r1, r2, r3} - stmeqia r4, {r0, r1, r2, r3} - ldmneia r6, {r0, r1, r2, r3} - stmneia r4, {r0, r1, r2, r3} - ldrne r0, _0202BBEC ; =UpdateAdvancedMenu - orr sl, sl, #0x8000 - strne r0, [sp, #0x18] - ldrb r0, [sp, #0x1e] - orreq sl, sl, #0x300000 - str r5, [sp, #0x24] - cmp r0, #0 - bne _0202BADC - mov r7, #0 - mov r6, r7 - add r4, sp, #0x28 - b _0202BABC -_0202BA98: - mov r0, r4 - mov r1, r6 - blx r8 - cmp r0, #0 - beq _0202BAB8 - bl sub_020265A8 - cmp r0, r7 - movgt r7, r0 -_0202BAB8: - add r6, r6, #1 -_0202BABC: - ldr r0, [sp, #0x448] - cmp r6, r0 - blt _0202BA98 - mov r0, sl - mov r1, sb - add r2, r7, #0x10 - bl sub_02031A5C - strb r0, [sp, #0x1e] -_0202BADC: - ldrb r0, [sp, #0x1f] - add r2, sp, #0x400 - add r3, sp, #0x400 - cmp r0, #0 - add r2, r2, #0x48 - bne _0202BB0C - add r3, r3, #0x4c - mov r0, sl - mov r1, sb - bl CalcMenuHeightDiv8__02031AA4 - strb r0, [sp, #0x1f] - b _0202BB1C -_0202BB0C: - add r3, r3, #0x4c - mov r0, sl - mov r1, sb - bl CalcMenuHeightDiv8__02031AA4 -_0202BB1C: - tst sl, #0x200000 - ldrneb r1, [sp, #0x1c] - ldrneb r0, [sp, #0x1e] - subne r0, r1, r0 - strneb r0, [sp, #0x1c] - tst sl, #0x100000 - ldrneb r1, [sp, #0x1d] - ldrneb r0, [sp, #0x1f] - subne r0, r1, r0 - strneb r0, [sp, #0x1d] - ldr r0, _0202BBEC ; =UpdateAdvancedMenu - cmp sb, #0 - str r0, [r5] - str sl, [r5, #0xfc] - beq _0202BB78 - add r6, r5, #0x100 - mov r4, #9 -_0202BB60: - ldmia sb!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0202BB60 - ldmia sb, {r0, r1} - stmia r6, {r0, r1} -_0202BB78: - mov r2, #0 - str r2, [r5, #0x18c] - str r8, [r5, #0x198] - str r2, [r5, #0x1a4] - str r2, [r5, #0x19c] - strb r2, [r5, #0x1a0] - strb r2, [r5, #0x1a1] - str r2, [r5, #0x1a8] - add r0, sp, #0x18 - mov r1, #3 - str r2, [r5, #0x1ac] - bl NewWindowScreenCheck - add r1, sp, #8 - mov r6, r0 - bl GetWindowRectangle - ldr r0, [sp, #0x448] - add r3, sp, #8 - str r0, [sp] - ldr r4, [sp, #0x44c] - mov r1, sl - add r0, r5, #4 - add r2, r5, #0x100 - str r4, [sp, #4] - bl InitWindowInput - mov r0, r6 - add sp, sp, #0x28 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0202BBE8: .word ADVANCED_MENU_DEFAULT_WINDOW_PARAMS -_0202BBEC: .word UpdateAdvancedMenu - arm_func_end CreateAdvancedMenu - - arm_func_start ResumeAdvancedMenu -ResumeAdvancedMenu: ; 0x0202BBF0 - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #1 - str r1, [r0, #0x19c] - mov r1, #0 - strb r1, [r0, #0x1a0] - strb r1, [r0, #0x1a1] - str r1, [r0, #0x1a4] - ldr r1, [r0, #0xfc] - bic r1, r1, #0x800000 - str r1, [r0, #0xfc] - add r0, r0, #4 - bl sub_02032984 - ldmia sp!, {r3, pc} - arm_func_end ResumeAdvancedMenu - - arm_func_start sub_0202BC28 -sub_0202BC28: ; 0x0202BC28 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r1, [r0, #0x19c] - cmp r1, #3 - moveq r1, #2 - streq r1, [r0, #0x19c] - ldmia sp!, {r3, pc} - arm_func_end sub_0202BC28 - - arm_func_start CloseAdvancedMenu -CloseAdvancedMenu: ; 0x0202BC44 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetWindowContents - bl MemFree - mov r0, r4 - bl DeleteWindow - ldmia sp!, {r4, pc} - arm_func_end CloseAdvancedMenu - - arm_func_start sub_0202BC60 -sub_0202BC60: ; 0x0202BC60 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - ldr r0, [r4, #0x19c] - cmp r0, #3 - cmpne r0, #4 - cmpne r0, #0xa - cmpne r0, #8 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #1 - strb r0, [r4, #0x1a0] - mov r2, #0 - strb r0, [r4, #0x1a1] - mov r0, r5 - sub r1, r2, #5 - str r2, [r4, #0x1a4] - bl sub_0202830C - mov r0, #6 - str r0, [r4, #0x19c] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0202BC60 - - arm_func_start IsAdvancedMenuActive2 -IsAdvancedMenuActive2: ; 0x0202BCBC - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0x19c] - cmp r0, #7 - cmpne r0, #8 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsAdvancedMenuActive2 - - arm_func_start IsAdvancedMenuActive -IsAdvancedMenuActive: ; 0x0202BCDC - stmdb sp!, {r3, lr} - bl GetWindowContents - ldrb r0, [r0, #0x1a0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsAdvancedMenuActive diff --git a/asm/main_0202BA20.s b/asm/main_0202BA20.s new file mode 100644 index 00000000..73d40e17 --- /dev/null +++ b/asm/main_0202BA20.s @@ -0,0 +1,162 @@ + .include "asm/macros.inc" + .include "main_0202BA20.inc" + + .text + + arm_func_start CreateAdvancedMenu +CreateAdvancedMenu: ; 0x0202BA20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x28 + sub sp, sp, #0x400 + mov r6, r0 + mov sl, r1 + mov r0, #0x1b0 + mov r1, #8 + mov sb, r2 + mov r8, r3 + bl MemAlloc + mov r5, r0 + cmp r6, #0 + ldreq r0, _0202BBE8 ; =ADVANCED_MENU_DEFAULT_WINDOW_PARAMS + add r4, sp, #0x18 + ldmeqia r0, {r0, r1, r2, r3} + stmeqia r4, {r0, r1, r2, r3} + ldmneia r6, {r0, r1, r2, r3} + stmneia r4, {r0, r1, r2, r3} + ldrne r0, _0202BBEC ; =UpdateAdvancedMenu + orr sl, sl, #0x8000 + strne r0, [sp, #0x18] + ldrb r0, [sp, #0x1e] + orreq sl, sl, #0x300000 + str r5, [sp, #0x24] + cmp r0, #0 + bne _0202BADC + mov r7, #0 + mov r6, r7 + add r4, sp, #0x28 + b _0202BABC +_0202BA98: + mov r0, r4 + mov r1, r6 + blx r8 + cmp r0, #0 + beq _0202BAB8 + bl sub_020265A8 + cmp r0, r7 + movgt r7, r0 +_0202BAB8: + add r6, r6, #1 +_0202BABC: + ldr r0, [sp, #0x448] + cmp r6, r0 + blt _0202BA98 + mov r0, sl + mov r1, sb + add r2, r7, #0x10 + bl sub_02031A5C + strb r0, [sp, #0x1e] +_0202BADC: + ldrb r0, [sp, #0x1f] + add r2, sp, #0x400 + add r3, sp, #0x400 + cmp r0, #0 + add r2, r2, #0x48 + bne _0202BB0C + add r3, r3, #0x4c + mov r0, sl + mov r1, sb + bl CalcMenuHeightDiv8__02031AA4 + strb r0, [sp, #0x1f] + b _0202BB1C +_0202BB0C: + add r3, r3, #0x4c + mov r0, sl + mov r1, sb + bl CalcMenuHeightDiv8__02031AA4 +_0202BB1C: + tst sl, #0x200000 + ldrneb r1, [sp, #0x1c] + ldrneb r0, [sp, #0x1e] + subne r0, r1, r0 + strneb r0, [sp, #0x1c] + tst sl, #0x100000 + ldrneb r1, [sp, #0x1d] + ldrneb r0, [sp, #0x1f] + subne r0, r1, r0 + strneb r0, [sp, #0x1d] + ldr r0, _0202BBEC ; =UpdateAdvancedMenu + cmp sb, #0 + str r0, [r5] + str sl, [r5, #0xfc] + beq _0202BB78 + add r6, r5, #0x100 + mov r4, #9 +_0202BB60: + ldmia sb!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0202BB60 + ldmia sb, {r0, r1} + stmia r6, {r0, r1} +_0202BB78: + mov r2, #0 + str r2, [r5, #0x18c] + str r8, [r5, #0x198] + str r2, [r5, #0x1a4] + str r2, [r5, #0x19c] + strb r2, [r5, #0x1a0] + strb r2, [r5, #0x1a1] + str r2, [r5, #0x1a8] + add r0, sp, #0x18 + mov r1, #3 + str r2, [r5, #0x1ac] + bl NewWindowScreenCheck + add r1, sp, #8 + mov r6, r0 + bl GetWindowRectangle + ldr r0, [sp, #0x448] + add r3, sp, #8 + str r0, [sp] + ldr r4, [sp, #0x44c] + mov r1, sl + add r0, r5, #4 + add r2, r5, #0x100 + str r4, [sp, #4] + bl InitWindowInput + mov r0, r6 + add sp, sp, #0x28 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0202BBE8: .word ADVANCED_MENU_DEFAULT_WINDOW_PARAMS +_0202BBEC: .word UpdateAdvancedMenu + arm_func_end CreateAdvancedMenu + + arm_func_start ResumeAdvancedMenu +ResumeAdvancedMenu: ; 0x0202BBF0 + stmdb sp!, {r3, lr} + bl GetWindowContents + mov r1, #1 + str r1, [r0, #0x19c] + mov r1, #0 + strb r1, [r0, #0x1a0] + strb r1, [r0, #0x1a1] + str r1, [r0, #0x1a4] + ldr r1, [r0, #0xfc] + bic r1, r1, #0x800000 + str r1, [r0, #0xfc] + add r0, r0, #4 + bl sub_02032984 + ldmia sp!, {r3, pc} + arm_func_end ResumeAdvancedMenu + + arm_func_start sub_0202BC28 +sub_0202BC28: ; 0x0202BC28 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldr r1, [r0, #0x19c] + cmp r1, #3 + moveq r1, #2 + streq r1, [r0, #0x19c] + ldmia sp!, {r3, pc} + arm_func_end sub_0202BC28 diff --git a/asm/main_0202BC60.s b/asm/main_0202BC60.s new file mode 100644 index 00000000..bec60be2 --- /dev/null +++ b/asm/main_0202BC60.s @@ -0,0 +1,31 @@ + .include "asm/macros.inc" + .include "main_0202BC60.inc" + + .text + + arm_func_start sub_0202BC60 +sub_0202BC60: ; 0x0202BC60 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetWindowContents + mov r4, r0 + ldr r0, [r4, #0x19c] + cmp r0, #3 + cmpne r0, #4 + cmpne r0, #0xa + cmpne r0, #8 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #1 + strb r0, [r4, #0x1a0] + mov r2, #0 + strb r0, [r4, #0x1a1] + mov r0, r5 + sub r1, r2, #5 + str r2, [r4, #0x1a4] + bl sub_0202830C + mov r0, #6 + str r0, [r4, #0x19c] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0202BC60 diff --git a/asm/main_0202BCDC.s b/asm/main_0202BCDC.s new file mode 100644 index 00000000..37c20839 --- /dev/null +++ b/asm/main_0202BCDC.s @@ -0,0 +1,16 @@ + .include "asm/macros.inc" + .include "main_0202BCDC.inc" + + .text + + arm_func_start IsAdvancedMenuActive +IsAdvancedMenuActive: ; 0x0202BCDC + stmdb sp!, {r3, lr} + bl GetWindowContents + ldrb r0, [r0, #0x1a0] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsAdvancedMenuActive diff --git a/asm/main_0202F190.s b/asm/main_0202F190.s index f0a4c03f..2a4ec088 100644 --- a/asm/main_0202F190.s +++ b/asm/main_0202F190.s @@ -1695,217 +1695,3 @@ SetAdvancedTextBoxPartialMenu: ; 0x0203077C str r1, [r0, #0x104] ldmia sp!, {r4, pc} arm_func_end SetAdvancedTextBoxPartialMenu - - arm_func_start SetAdvancedTextBoxField0x1C4 -SetAdvancedTextBoxField0x1C4: ; 0x020307A4 - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetWindowContents - strb r4, [r0, #0x1c4] - ldmia sp!, {r4, pc} - arm_func_end SetAdvancedTextBoxField0x1C4 - - arm_func_start sub_020307B8 -sub_020307B8: ; 0x020307B8 - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #1 - str r1, [r0, #0x1bc] - mov r1, #0 - strb r1, [r0, #0x1c0] - strb r1, [r0, #0x1c1] - ldr r1, [r0, #0x104] - bic r1, r1, #0x800000 - str r1, [r0, #0x104] - add r0, r0, #4 - bl sub_02032984 - ldmia sp!, {r3, pc} - arm_func_end sub_020307B8 - - arm_func_start sub_020307EC -sub_020307EC: ; 0x020307EC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - mov r0, r5 - bl GetWindowContents - ldr r0, [r0, #0x1bc] - cmp r0, #7 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _02030828 - mov r0, r5 - bl sub_020307B8 - ldmia sp!, {r3, r4, r5, pc} -_02030828: - ldr r0, [r4, #0x1bc] - cmp r0, #6 - moveq r0, #0 - streq r0, [r4, #0x1bc] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020307EC - - arm_func_start SetAdvancedTextBoxField0x1C2 -SetAdvancedTextBoxField0x1C2: ; 0x0203083C - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #1 - strb r1, [r0, #0x1c2] - ldmia sp!, {r3, pc} - arm_func_end SetAdvancedTextBoxField0x1C2 - - arm_func_start CloseAdvancedTextBox2 -CloseAdvancedTextBox2: ; 0x02030850 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl sub_0202836C - mov r0, r5 - bl sub_020288DC - mov r0, r5 - bl sub_0202812C - mov r0, r5 - bl GetWindowContents - mov r4, r0 - mov r0, r5 - bl DeleteWindow - mov r0, r4 - bl MemFree - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CloseAdvancedTextBox2 - - arm_func_start SetAdvancedTextBoxState5 -SetAdvancedTextBoxState5: ; 0x0203088C - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #5 - str r1, [r0, #0x1bc] - ldmia sp!, {r3, pc} - arm_func_end SetAdvancedTextBoxState5 - - arm_func_start CloseAdvancedTextBox -CloseAdvancedTextBox: ; 0x020308A0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - mov r0, r5 - bl DeleteWindow - mov r0, r4 - bl MemFree - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CloseAdvancedTextBox - - arm_func_start IsAdvancedTextBoxActive -IsAdvancedTextBoxActive: ; 0x020308C4 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0x1bc] - cmp r0, #6 - cmpne r0, #7 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsAdvancedTextBoxActive - -#ifndef JAPAN - arm_func_start sub_020308E4 -sub_020308E4: ; 0x020308E4 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldrb r1, [r0, #0x1c0] - cmp r1, #0 - ldrneb r0, [r0, #0x1c1] - cmpne r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_020308E4 -#endif - - arm_func_start sub_02030908 -sub_02030908: ; 0x02030908 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldrb r1, [r0, #0x1c0] - cmp r1, #0 - beq _02030938 - ldrb r1, [r0, #0x1c1] - cmp r1, #0 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r0, #4 - bl GetSelectedItemOnPage - ldmia sp!, {r3, pc} -_02030938: - mvn r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_02030908 - - arm_func_start GetDigitInputResult -GetDigitInputResult: ; 0x02030940 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldrb r1, [r0, #0x1c0] - cmp r1, #0 - beq _02030970 - ldrb r1, [r0, #0x1c1] - cmp r1, #0 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r0, #4 - bl GetSelectedMenuItemIdx - ldmia sp!, {r3, pc} -_02030970: - mvn r0, #0 - ldmia sp!, {r3, pc} - arm_func_end GetDigitInputResult - - arm_func_start sub_02030978 -sub_02030978: ; 0x02030978 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl GetWindowContents - mov r1, r0 - strh r5, [r1, #0xfc] - strh r4, [r1, #0xfe] - mov r0, r7 - mov r2, r6 - mov r3, r5 - add r1, r1, #4 - str r4, [sp] - bl sub_020289B8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02030978 - - arm_func_start sub_020309B8 -sub_020309B8: ; 0x020309B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GetWindowContents - mov r1, r0 - strh r6, [r1, #0xfc] - ldr r4, [sp, #0x28] - strh r5, [r1, #0xfe] - add ip, r1, #0x100 - ldr lr, [sp, #0x2c] - strh r4, [ip] - strh lr, [ip, #2] - str r5, [sp] - mov r0, r8 - add r1, r1, #4 - mov r2, r7 - mov r3, r6 - stmib sp, {r4, lr} - bl sub_02028A08 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end sub_020309B8 diff --git a/asm/main_020307B8.s b/asm/main_020307B8.s new file mode 100644 index 00000000..0ac2c021 --- /dev/null +++ b/asm/main_020307B8.s @@ -0,0 +1,46 @@ + .include "asm/macros.inc" + .include "main_020307B8.inc" + + .text + + arm_func_start sub_020307B8 +sub_020307B8: ; 0x020307B8 + stmdb sp!, {r3, lr} + bl GetWindowContents + mov r1, #1 + str r1, [r0, #0x1bc] + mov r1, #0 + strb r1, [r0, #0x1c0] + strb r1, [r0, #0x1c1] + ldr r1, [r0, #0x104] + bic r1, r1, #0x800000 + str r1, [r0, #0x104] + add r0, r0, #4 + bl sub_02032984 + ldmia sp!, {r3, pc} + arm_func_end sub_020307B8 + + arm_func_start sub_020307EC +sub_020307EC: ; 0x020307EC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetWindowContents + mov r4, r0 + mov r0, r5 + bl GetWindowContents + ldr r0, [r0, #0x1bc] + cmp r0, #7 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + beq _02030828 + mov r0, r5 + bl sub_020307B8 + ldmia sp!, {r3, r4, r5, pc} +_02030828: + ldr r0, [r4, #0x1bc] + cmp r0, #6 + moveq r0, #0 + streq r0, [r4, #0x1bc] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_020307EC diff --git a/asm/main_02030850.s b/asm/main_02030850.s new file mode 100644 index 00000000..814a2631 --- /dev/null +++ b/asm/main_02030850.s @@ -0,0 +1,23 @@ + .include "asm/macros.inc" + .include "main_02030850.inc" + + .text + + arm_func_start CloseAdvancedTextBox2 +CloseAdvancedTextBox2: ; 0x02030850 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl sub_0202836C + mov r0, r5 + bl sub_020288DC + mov r0, r5 + bl sub_0202812C + mov r0, r5 + bl GetWindowContents + mov r4, r0 + mov r0, r5 + bl DeleteWindow + mov r0, r4 + bl MemFree + ldmia sp!, {r3, r4, r5, pc} + arm_func_end CloseAdvancedTextBox2 diff --git a/asm/main_020308A0.s b/asm/main_020308A0.s new file mode 100644 index 00000000..885dfa3d --- /dev/null +++ b/asm/main_020308A0.s @@ -0,0 +1,130 @@ + .include "asm/macros.inc" + .include "main_020308A0.inc" + + .text + + arm_func_start CloseAdvancedTextBox +CloseAdvancedTextBox: ; 0x020308A0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetWindowContents + mov r4, r0 + mov r0, r5 + bl DeleteWindow + mov r0, r4 + bl MemFree + ldmia sp!, {r3, r4, r5, pc} + arm_func_end CloseAdvancedTextBox + + arm_func_start IsAdvancedTextBoxActive +IsAdvancedTextBoxActive: ; 0x020308C4 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldr r0, [r0, #0x1bc] + cmp r0, #6 + cmpne r0, #7 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end IsAdvancedTextBoxActive + +#ifndef JAPAN + arm_func_start sub_020308E4 +sub_020308E4: ; 0x020308E4 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldrb r1, [r0, #0x1c0] + cmp r1, #0 + ldrneb r0, [r0, #0x1c1] + cmpne r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_020308E4 +#endif + + arm_func_start sub_02030908 +sub_02030908: ; 0x02030908 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldrb r1, [r0, #0x1c0] + cmp r1, #0 + beq _02030938 + ldrb r1, [r0, #0x1c1] + cmp r1, #0 + mvnne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r0, #4 + bl GetSelectedItemOnPage + ldmia sp!, {r3, pc} +_02030938: + mvn r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_02030908 + + arm_func_start GetDigitInputResult +GetDigitInputResult: ; 0x02030940 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldrb r1, [r0, #0x1c0] + cmp r1, #0 + beq _02030970 + ldrb r1, [r0, #0x1c1] + cmp r1, #0 + mvnne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r0, #4 + bl GetSelectedMenuItemIdx + ldmia sp!, {r3, pc} +_02030970: + mvn r0, #0 + ldmia sp!, {r3, pc} + arm_func_end GetDigitInputResult + + arm_func_start sub_02030978 +sub_02030978: ; 0x02030978 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl GetWindowContents + mov r1, r0 + strh r5, [r1, #0xfc] + strh r4, [r1, #0xfe] + mov r0, r7 + mov r2, r6 + mov r3, r5 + add r1, r1, #4 + str r4, [sp] + bl sub_020289B8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02030978 + + arm_func_start sub_020309B8 +sub_020309B8: ; 0x020309B8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GetWindowContents + mov r1, r0 + strh r6, [r1, #0xfc] + ldr r4, [sp, #0x28] + strh r5, [r1, #0xfe] + add ip, r1, #0x100 + ldr lr, [sp, #0x2c] + strh r4, [ip] + strh lr, [ip, #2] + str r5, [sp] + mov r0, r8 + add r1, r1, #4 + mov r2, r7 + mov r3, r6 + stmib sp, {r4, lr} + bl sub_02028A08 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end sub_020309B8 diff --git a/include/main_0202AAA8.h b/include/main_0202AAA8.h index 2330131f..d15ff7fd 100644 --- a/include/main_0202AAA8.h +++ b/include/main_0202AAA8.h @@ -11,8 +11,15 @@ struct unk_0202AAA8 { s32 field_0x19C; u8 field_0x1A0; s32 field_0x1A4; - u8 field_0x1A8[8]; + u8 field_0x1A8[4]; + s32 field_0x1AC; s32 field_0x1B0; + u8 field_0x1B4[8]; + s32 field_0x1BC; + u8 field_0x1C0[2]; + u8 field_0x1C2; + u8 field_0x1C3; + u8 field_0x1C4; }; void *GetWindowContents(s32 window_id); diff --git a/include/main_0202BA0C.h b/include/main_0202BA0C.h new file mode 100644 index 00000000..f49079e8 --- /dev/null +++ b/include/main_0202BA0C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0202BA0C_H +#define PMDSKY_MAIN_0202BA0C_H + +void SetSimpleMenuField0x1AC(s32 window_id, s32 value); + +#endif diff --git a/include/main_0202BC44.h b/include/main_0202BC44.h new file mode 100644 index 00000000..c04c5a49 --- /dev/null +++ b/include/main_0202BC44.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0202BC44_H +#define PMDSKY_MAIN_0202BC44_H + +void CloseAdvancedMenu(s32 window_id); + +#endif diff --git a/include/main_0202BCBC.h b/include/main_0202BCBC.h new file mode 100644 index 00000000..f603e338 --- /dev/null +++ b/include/main_0202BCBC.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0202BCBC_H +#define PMDSKY_MAIN_0202BCBC_H + +u32 IsAdvancedMenuActive2(s32 window_id); + +#endif diff --git a/include/main_020307A4.h b/include/main_020307A4.h new file mode 100644 index 00000000..55d39db2 --- /dev/null +++ b/include/main_020307A4.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_020307A4_H +#define PMDSKY_MAIN_020307A4_H + +void SetAdvancedTextBoxField0x1C4(s32 window_id, u8 value); + +#endif diff --git a/include/main_0203083C.h b/include/main_0203083C.h new file mode 100644 index 00000000..aa703d49 --- /dev/null +++ b/include/main_0203083C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0203083C_H +#define PMDSKY_MAIN_0203083C_H + +void SetAdvancedTextBoxField0x1C2(s32 window_id); + +#endif diff --git a/include/main_0203088C.h b/include/main_0203088C.h new file mode 100644 index 00000000..3bcb3294 --- /dev/null +++ b/include/main_0203088C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0203088C_H +#define PMDSKY_MAIN_0203088C_H + +void SetAdvancedTextBoxState5(s32 window_id); + +#endif diff --git a/main.lsf b/main.lsf index c9d0dce7..c80b49f2 100644 --- a/main.lsf +++ b/main.lsf @@ -156,12 +156,24 @@ Static main Object asm/main_0202B530.o Object src/main_0202B558.o Object asm/main_0202B568.o + Object src/main_0202BA0C.o + Object asm/main_0202BA20.o + Object src/main_0202BC44.o + Object asm/main_0202BC60.o + Object src/main_0202BCBC.o + Object asm/main_0202BCDC.o Object src/main_0202BCFC.o Object asm/main_0202BD10.o Object src/main_0202C748.o Object asm/main_0202C75C.o Object src/main_0202F180.o Object asm/main_0202F190.o + Object src/main_020307A4.o + Object asm/main_020307B8.o + Object src/main_0203083C.o + Object asm/main_02030850.o + Object src/main_0203088C.o + Object asm/main_020308A0.o Object src/main_02030A18.o Object asm/main_02030A2C.o Object src/main_02030A40.o diff --git a/src/main_0202BA0C.c b/src/main_0202BA0C.c new file mode 100644 index 00000000..0313aa14 --- /dev/null +++ b/src/main_0202BA0C.c @@ -0,0 +1,10 @@ +#include "main_0202BA0C.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" + +void SetSimpleMenuField0x1AC(s32 window_id, s32 value) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x1AC = value; +} diff --git a/src/main_0202BC44.c b/src/main_0202BC44.c new file mode 100644 index 00000000..d603c5ff --- /dev/null +++ b/src/main_0202BC44.c @@ -0,0 +1,9 @@ +#include "main_0202BC44.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" + +void CloseAdvancedMenu(s32 window_id) +{ + MemFree(GetWindowContents(window_id)); + DeleteWindow(window_id); +} diff --git a/src/main_0202BCBC.c b/src/main_0202BCBC.c new file mode 100644 index 00000000..e5652a91 --- /dev/null +++ b/src/main_0202BCBC.c @@ -0,0 +1,12 @@ +#include "main_0202BCBC.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" + +u32 IsAdvancedMenuActive2(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + s32 state = w->field_0x19C; + + return state != 7 && state != 8; +} diff --git a/src/main_020307A4.c b/src/main_020307A4.c new file mode 100644 index 00000000..f8d4afda --- /dev/null +++ b/src/main_020307A4.c @@ -0,0 +1,10 @@ +#include "main_020307A4.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" + +void SetAdvancedTextBoxField0x1C4(s32 window_id, u8 value) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x1C4 = value; +} diff --git a/src/main_0203083C.c b/src/main_0203083C.c new file mode 100644 index 00000000..3d943cbb --- /dev/null +++ b/src/main_0203083C.c @@ -0,0 +1,10 @@ +#include "main_0203083C.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" + +void SetAdvancedTextBoxField0x1C2(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x1C2 = 1; +} diff --git a/src/main_0203088C.c b/src/main_0203088C.c new file mode 100644 index 00000000..19e5b168 --- /dev/null +++ b/src/main_0203088C.c @@ -0,0 +1,10 @@ +#include "main_0203088C.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" + +void SetAdvancedTextBoxState5(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x1BC = 5; +}