summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-02 14:28:29 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-02 14:28:29 -0400
commit765bed46b08990779c379204f5ac813b310b863d (patch)
tree287157203c8321e836e1981905a75bc5997f9440
parentc66dc8fe51e6d49bf761b30a8772ef879e5ebf2d (diff)
sub_8049860
-rw-r--r--asm/trade.s118
-rw-r--r--src/trade.c43
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) {