diff options
author | scnorton <scnorton@biociphers.org> | 2017-09-03 11:35:23 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-09-03 11:35:23 -0400 |
commit | 257acf3e0766a3ec98066e016c6a1e6b6c44db70 (patch) | |
tree | 9cb78c128d7ca6f4b393a0bff25940c577f62b18 | |
parent | 007f28e2d0b54f3ce06029a0a2101ae6388771e8 (diff) |
sub_804DC18
-rw-r--r-- | asm/trade.s | 50 | ||||
-rw-r--r-- | src/trade.c | 41 |
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(); +} |