summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-03 11:35:23 -0400
committerscnorton <scnorton@biociphers.org>2017-09-03 11:35:23 -0400
commit257acf3e0766a3ec98066e016c6a1e6b6c44db70 (patch)
tree9cb78c128d7ca6f4b393a0bff25940c577f62b18
parent007f28e2d0b54f3ce06029a0a2101ae6388771e8 (diff)
sub_804DC18
-rw-r--r--asm/trade.s50
-rw-r--r--src/trade.c41
2 files changed, 30 insertions, 61 deletions
diff --git a/asm/trade.s b/asm/trade.s
index 6177232df..caadad6ee 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5395,56 +5395,6 @@ _0804DAD0: .4byte gEnemyParty
.section .text.sub_804DB2C
- thumb_func_start sub_804DC18
-sub_804DC18: @ 804DC18
- push {r4,lr}
- bl sub_804B2B0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_804D63C
- cmp r4, 0
- bne _0804DC64
- ldr r4, _0804DC7C @ =gUnknown_03004828
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x9C
- ldrh r1, [r0]
- ldr r0, _0804DC80 @ =0x00000101
- cmp r1, r0
- bne _0804DC64
- adds r1, r2, 0
- adds r1, 0x9E
- ldr r0, _0804DC84 @ =0x0000dcba
- strh r0, [r1]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x9E
- movs r2, 0x14
- bl SendBlock
- ldr r0, [r4]
- adds r0, 0x9C
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x9D
- strb r1, [r0]
-_0804DC64:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DC7C: .4byte gUnknown_03004828
-_0804DC80: .4byte 0x00000101
-_0804DC84: .4byte 0x0000dcba
- thumb_func_end sub_804DC18
-
thumb_func_start sub_804DC88
sub_804DC88: @ 804DC88
push {r4,r5,lr}
diff --git a/src/trade.c b/src/trade.c
index 982e6a319..2d045d3b5 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -32,7 +32,7 @@
asm(".set sub_804A96C_alt, sub_804A96C");
#endif
-#define Trade_SendData() SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData))
+#define Trade_SendData(ptr) SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20)
struct InGameTrade {
/*0x00*/ u8 name[11];
@@ -116,9 +116,10 @@ struct UnkStructF {
};
struct TradeEwramSubstruct2 {
- /*0x0000*/ u8 filler_0000[0x9e];
- /*0x009e*/ u16 unk_009e;
- /*0x00a0*/ u8 unk_00a0[0x18];
+ /*0x0000*/ u8 filler_0000[0x9c];
+ /*0x009c*/ u8 unk_009c;
+ /*0x009d*/ u8 unk_009d;
+ /*0x009e*/ u16 linkData[13];
/*0x00b8*/ u8 unk_00b8;
/*0x00b9*/ u8 unk_00b9;
/*0x00ba*/ u8 filler_00ba[3];
@@ -184,6 +185,7 @@ void sub_804A51C(u8, u8, u8, u8, u8, u8);
/*static*/ void sub_804DC18(void);
/*static*/ void sub_804BB78(void);
/*static*/ void sub_804D63C(void);
+/*static*/ bool8 sub_804B2B0(void);
extern u8 gUnknown_020297D8[2];
extern u8 *gUnknown_020296CC[13];
@@ -1693,7 +1695,7 @@ static void sub_8049620(void)
{
gUnknown_03004824->linkData[0] = 0xaabb;
gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition;
- Trade_SendData();
+ Trade_SendData(gUnknown_03004824);
}
else
{
@@ -1749,7 +1751,7 @@ static void sub_8049680(void)
{
gUnknown_03004824->linkData[i] = i;
}
- Trade_SendData();
+ Trade_SendData(gUnknown_03004824);
}
}
@@ -1858,7 +1860,7 @@ static void sub_8049A20(void)
gUnknown_03004824->linkData[0] = 0xbbbb;
if (sub_8007ECC())
{
- Trade_SendData();
+ Trade_SendData(gUnknown_03004824);
}
}
}
@@ -1888,7 +1890,7 @@ static void sub_8049AC0(void)
if (sub_8007ECC())
{
gUnknown_03004824->linkData[0] = 0xbbcc;
- Trade_SendData();
+ Trade_SendData(gUnknown_03004824);
}
}
gUnknown_03004824->unk_007b = 100;
@@ -1901,7 +1903,7 @@ static void sub_8049AC0(void)
gUnknown_03004824->unk_007c = MoveMenuCursor(+1);
}
gUnknown_03004824->linkData[0] = 0xbbcc;
- Trade_SendData();
+ Trade_SendData(gUnknown_03004824);
gUnknown_03004824->unk_007b = 100;
}
}
@@ -3094,7 +3096,7 @@ static void sub_804AB30(void)
switch (gUnknown_03004824->unk_08dc[i].unk_04)
{
case 0:
- Trade_SendData();
+ Trade_SendData(gUnknown_03004824);
break;
case 1:
sub_804AA0C(0);
@@ -3195,7 +3197,7 @@ void sub_804DB84(void)
DestroySprite(&gSprites[gUnknown_03004828->unk_00b8]);
FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->unk_00b9]);
sub_804BA94(gUnknown_020297D8[0], gUnknown_020297D8[1] % 6);
- gUnknown_03004828->unk_009e = 0xabcd;
+ gUnknown_03004828->linkData[0] = 0xabcd;
gUnknown_03004828->unk_00bd = 1;
SetMainCallback2(sub_804DC18);
}
@@ -3206,3 +3208,20 @@ void sub_804DB84(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+
+void sub_804DC18(void)
+{
+ u8 flag = sub_804B2B0();
+ sub_804D63C();
+ if (!flag && gUnknown_03004828->unk_009c == 1 && gUnknown_03004828->unk_009d == 1)
+ {
+ gUnknown_03004828->linkData[0] = 0xdcba;
+ Trade_SendData(gUnknown_03004828);
+ gUnknown_03004828->unk_009c = 2;
+ gUnknown_03004828->unk_009d = 2;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}