summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s97
-rw-r--r--src/trade.c54
2 files changed, 47 insertions, 104 deletions
diff --git a/asm/trade.s b/asm/trade.s
index 5a2a2899b..5e9cb528f 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -495,103 +495,6 @@ _0804A2B0: .4byte gUnknown_03004824
.section .text.sub_804A9F4
- thumb_func_start sub_804AB30
-sub_804AB30: @ 804AB30
- push {r4,r5,lr}
- movs r4, 0
- ldr r3, _0804AB58 @ =gUnknown_03004824
-_0804AB36:
- ldr r0, [r3]
- lsls r1, r4, 3
- adds r2, r0, r1
- ldr r5, _0804AB5C @ =0x000008dc
- adds r0, r2, r5
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- beq _0804ABE2
- ldr r0, _0804AB60 @ =0x000008de
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0804AB64
- subs r0, 0x1
- strh r0, [r1]
- b _0804ABE2
- .align 2, 0
-_0804AB58: .4byte gUnknown_03004824
-_0804AB5C: .4byte 0x000008dc
-_0804AB60: .4byte 0x000008de
-_0804AB64:
- movs r1, 0x8E
- lsls r1, 4
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0804ABD2
- lsls r0, 2
- ldr r1, _0804AB7C @ =_0804AB80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804AB7C: .4byte _0804AB80
- .align 2, 0
-_0804AB80:
- .4byte _0804AB98
- .4byte _0804ABB4
- .4byte _0804ABBC
- .4byte _0804ABC4
- .4byte _0804ABC4
- .4byte _0804ABCC
-_0804AB98:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0804ABB0 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
- b _0804ABD2
- .align 2, 0
-_0804ABB0: .4byte gUnknown_03004824
-_0804ABB4:
- movs r0, 0
- bl sub_804AA0C
- b _0804ABD2
-_0804ABBC:
- movs r0, 0x2
- bl sub_804AA0C
- b _0804ABD2
-_0804ABC4:
- movs r0, 0x3
- bl sub_804AA0C
- b _0804ABD2
-_0804ABCC:
- movs r0, 0x3
- bl sub_804AA0C
-_0804ABD2:
- ldr r0, _0804ABF0 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r1, r5
- ldr r2, _0804ABF4 @ =0x000008dc
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- adds r3, r0, 0
-_0804ABE2:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804AB36
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804ABF0: .4byte gUnknown_03004824
-_0804ABF4: .4byte 0x000008dc
- thumb_func_end sub_804AB30
-
thumb_func_start sub_804ABF8
sub_804ABF8: @ 804ABF8
push {r4,lr}
diff --git a/src/trade.c b/src/trade.c
index 66f0b2b30..71cef2d08 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -30,6 +30,8 @@
#define sub_804A96C_alt sub_804A96C
#endif
+#define Trade_SendData() SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData))
+
struct InGameTrade {
/*0x00*/ u8 name[11];
/*0x0C*/ u16 species;
@@ -141,7 +143,7 @@ static void sub_8048AB4(void);
static void sub_804A940(struct UnkStructD *);
/*static*/ void sub_804B41C(void);
static void sub_8049DE0(void);
-/*static*/ void sub_804AB30(void);
+static void sub_804AB30(void);
/*static*/ void sub_8049ED4(u8);
static void sub_804A6DC(u8);
static void sub_804A938(struct UnkStructD *);
@@ -1662,7 +1664,7 @@ static void sub_8049620(void)
{
gUnknown_03004824->linkData[0] = 0xaabb;
gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition;
- SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ Trade_SendData();
}
else
{
@@ -1718,7 +1720,7 @@ static void sub_8049680(void)
{
gUnknown_03004824->linkData[i] = i;
}
- SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ Trade_SendData();
}
}
@@ -1827,7 +1829,7 @@ static void sub_8049A20(void)
gUnknown_03004824->linkData[0] = 0xbbbb;
if (sub_8007ECC())
{
- SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ Trade_SendData();
}
}
}
@@ -1857,7 +1859,7 @@ static void sub_8049AC0(void)
if (sub_8007ECC())
{
gUnknown_03004824->linkData[0] = 0xbbcc;
- SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ Trade_SendData();
}
}
gUnknown_03004824->unk_007b = 100;
@@ -1870,7 +1872,7 @@ static void sub_8049AC0(void)
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));
+ Trade_SendData();
gUnknown_03004824->unk_007b = 100;
}
}
@@ -2043,7 +2045,7 @@ static void sub_8049E9C(u8 a0)
// u8 r8 = temp0 % 6;
// s8 stringLength;
// u8 string[50];
-//
+//
// switch (gUnknown_03004824->unk_0080[a0])
// {
// case 1:
@@ -2549,6 +2551,44 @@ static void sub_804AADC(u16 a0, u8 a1)
}
}
+static void sub_804AB30(void)
+{
+ int i;
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_03004824->unk_08dc[i].unk_00)
+ {
+ if (gUnknown_03004824->unk_08dc[i].unk_02 != 0)
+ {
+ gUnknown_03004824->unk_08dc[i].unk_02 --;
+ continue;
+ }
+ switch (gUnknown_03004824->unk_08dc[i].unk_04)
+ {
+ case 0:
+ Trade_SendData();
+ break;
+ case 1:
+ sub_804AA0C(0);
+ break;
+ case 2:
+ sub_804AA0C(2);
+ break;
+ case 3:
+ sub_804AA0C(3);
+ break;
+ case 4:
+ sub_804AA0C(3);
+ break;
+ case 5:
+ sub_804AA0C(3);
+ break;
+ }
+ gUnknown_03004824->unk_08dc[i].unk_00 = 0;
+ }
+ }
+}
+
asm(".section .text.sub_804DAD4");
/*static*/ void sub_804DAD4(struct UnkStructC *arg0, struct InGameTrade *trade) {