diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-02 14:28:29 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-02 14:28:29 -0400 |
commit | 765bed46b08990779c379204f5ac813b310b863d (patch) | |
tree | 287157203c8321e836e1981905a75bc5997f9440 | |
parent | c66dc8fe51e6d49bf761b30a8772ef879e5ebf2d (diff) |
sub_8049860
-rw-r--r-- | asm/trade.s | 118 | ||||
-rw-r--r-- | src/trade.c | 43 |
2 files changed, 41 insertions, 120 deletions
diff --git a/asm/trade.s b/asm/trade.s index 0694e3b0a..103fdbbaa 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -10,124 +10,6 @@ .set sub_804A96C_alt, sub_804A96C .endif - thumb_func_start sub_8049860 -sub_8049860: @ 8049860 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0804987C @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049880 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049890 - .align 2, 0 -_0804987C: .4byte gMain -_08049880: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804989C - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049890: - bl MoveMenuCursor - ldr r1, _080498D8 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_0804989C: - ldr r0, _080498DC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049938 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080498E0 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080498D8 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x7B - movs r1, 0x2 - strb r1, [r0] - b _0804994A - .align 2, 0 -_080498D8: .4byte gUnknown_03004824 -_080498DC: .4byte gMain -_080498E0: - ldr r4, _08049910 @ =gUnknown_03004824 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x51 - adds r1, r2, 0 - adds r1, 0x42 - ldrb r1, [r1] - adds r2, 0x41 - ldrb r2, [r2] - bl sub_80499F0 - lsls r0, 24 - cmp r0, 0 - bne _08049914 - movs r0, 0x3 - movs r1, 0x2 - bl sub_804AADC - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x8 - strb r1, [r0] - b _0804994A - .align 2, 0 -_08049910: .4byte gUnknown_03004824 -_08049914: - bl sub_8049620 - ldr r2, _08049934 @ =gSprites - ldr r0, [r4] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0804994A - .align 2, 0 -_08049934: .4byte gSprites -_08049938: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804994A - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_0804994A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8049860 - thumb_func_start sub_8049954 sub_8049954: @ 8049954 push {lr} diff --git a/src/trade.c b/src/trade.c index faa931e37..b8732aeea 100644 --- a/src/trade.c +++ b/src/trade.c @@ -76,7 +76,7 @@ struct TradeEwramSubstruct { /*0x0042*/ u8 playerPartyCount; /*0x0043*/ u8 friendPartyCount; /*0x0044*/ u8 tradeMenuOptionsActive[13]; - /*0x0051*/ u8 filler_0051[0x24]; + /*0x0051*/ u8 unk_0051[0x24]; /*0x0075*/ u8 unk_0075; /*0x0076*/ u8 filler_0076[4]; /*0x007a*/ u8 unk_007a; @@ -147,6 +147,7 @@ static void sub_8048AB4(void); /*static*/ void sub_8049E9C(u8); /*static*/ void sub_804AADC(u8, u8); /*static*/ void sub_804A80C(void); +/*static*/ bool8 sub_80499F0(const u8 *, u8, u8); extern u8 gUnknown_020297D8[2]; extern u8 *gUnknown_020296CC[13]; @@ -1641,7 +1642,7 @@ static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) *tradeMenuCursorPosition = newPosition; } -/*static*/ void sub_8049620(void) +static void sub_8049620(void) { sub_804AA0C(0); gUnknown_03004824->unk_007b = 5; @@ -1718,6 +1719,44 @@ static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); } +/*static*/ void sub_8049860(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 2; + } + else if (!sub_80499F0(gUnknown_03004824->unk_0051, gUnknown_03004824->playerPartyCount, gUnknown_03004824->tradeMenuCursorPosition)) + { + sub_804AADC(3, 2); + gUnknown_03004824->unk_007b = 8; + } + else + { + sub_8049620(); + gSprites[gUnknown_03004824->unk_0040].invisible = TRUE; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + asm(".section .text.sub_804A96C"); /*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { |