summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s120
-rw-r--r--src/trade.c45
2 files changed, 44 insertions, 121 deletions
diff --git a/asm/trade.s b/asm/trade.s
index b44f74453..a155a892f 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -10,126 +10,6 @@
.set sub_804A96C_alt, sub_804A96C
.endif
- thumb_func_start sub_8049AC0
-sub_8049AC0: @ 8049AC0
- push {r4,lr}
- ldr r0, _08049ADC @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08049AE0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _08049AF0
- .align 2, 0
-_08049ADC: .4byte gMain
-_08049AE0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08049AFC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_08049AF0:
- bl MoveMenuCursor
- ldr r1, _08049B20 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x7C
- strb r0, [r1]
-_08049AFC:
- ldr r0, _08049B24 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08049B64
- movs r0, 0x5
- bl PlaySE
- bl GetMenuCursorPos
- lsls r0, 24
- cmp r0, 0
- bne _08049B28
- bl sub_8049A20
- b _08049B56
- .align 2, 0
-_08049B20: .4byte gUnknown_03004824
-_08049B24: .4byte gMain
-_08049B28:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804AADC
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08049B56
- ldr r4, _08049B5C @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x8C
- ldr r1, _08049B60 @ =0x0000bbcc
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
-_08049B56:
- ldr r0, _08049B5C @ =gUnknown_03004824
- ldr r0, [r0]
- b _08049BAA
- .align 2, 0
-_08049B5C: .4byte gUnknown_03004824
-_08049B60: .4byte 0x0000bbcc
-_08049B64:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08049BB0
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804AADC
- bl GetMenuCursorPos
- lsls r0, 24
- cmp r0, 0
- bne _08049B8C
- movs r0, 0x1
- bl MoveMenuCursor
- ldr r1, _08049BB8 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x7C
- strb r0, [r1]
-_08049B8C:
- ldr r4, _08049BB8 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x8C
- ldr r1, _08049BBC @ =0x0000bbcc
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
- ldr r0, [r4]
-_08049BAA:
- adds r0, 0x7B
- movs r1, 0x64
- strb r1, [r0]
-_08049BB0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08049BB8: .4byte gUnknown_03004824
-_08049BBC: .4byte 0x0000bbcc
- thumb_func_end sub_8049AC0
-
thumb_func_start sub_8049BC0
sub_8049BC0: @ 8049BC0
push {r4,r5,lr}
diff --git a/src/trade.c b/src/trade.c
index d0a375b0f..32791dce7 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1797,7 +1797,7 @@ static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition)
return retval;
}
-/*static*/ void sub_8049A20(void)
+static void sub_8049A20(void)
{
u8 unk_0051[12];
int i;
@@ -1822,6 +1822,49 @@ static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition)
}
}
+/*static*/ void sub_8049AC0(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)
+ {
+ sub_8049A20();
+ }
+ else
+ {
+ sub_804AADC(3, 1);
+ if (sub_8007ECC())
+ {
+ gUnknown_03004824->linkData[0] = 0xbbcc;
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ }
+ }
+ gUnknown_03004824->unk_007b = 100;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_804AADC(3, 1);
+ if (GetMenuCursorPos() == 0)
+ {
+ gUnknown_03004824->unk_007c = MoveMenuCursor(1);
+ }
+ gUnknown_03004824->linkData[0] = 0xbbcc;
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ gUnknown_03004824->unk_007b = 100;
+ }
+}
+
asm(".section .text.sub_804A96C");
/*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) {