diff options
-rw-r--r-- | asm/trade.s | 80 | ||||
-rw-r--r-- | src/trade.c | 33 |
2 files changed, 29 insertions, 84 deletions
diff --git a/asm/trade.s b/asm/trade.s index 6e11cdaf2..b44f74453 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -10,86 +10,6 @@ .set sub_804A96C_alt, sub_804A96C .endif - thumb_func_start sub_8049A20 -sub_8049A20: @ 8049A20 - push {r4,r5,lr} - sub sp, 0xC - movs r2, 0 - ldr r0, _08049A80 @ =gUnknown_03004824 - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0x42 - adds r5, r0, 0 - ldrb r0, [r3] - cmp r2, r0 - bge _08049A4C - adds r4, r1, 0 - adds r4, 0x51 -_08049A3A: - mov r1, sp - adds r0, r1, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - ldrb r0, [r3] - cmp r2, r0 - blt _08049A3A -_08049A4C: - adds r4, r5, 0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x42 - ldrb r1, [r1] - adds r0, 0x41 - ldrb r2, [r0] - mov r0, sp - bl sub_80499F0 - lsls r0, 24 - cmp r0, 0 - bne _08049A88 - movs r0, 0x3 - movs r1, 0x2 - bl sub_804AADC - ldr r0, [r4] - adds r0, 0x8C - ldr r1, _08049A84 @ =0x0000bbcc - strh r1, [r0] - movs r0, 0xB4 - movs r1, 0 - bl sub_804AADC - b _08049AB4 - .align 2, 0 -_08049A80: .4byte gUnknown_03004824 -_08049A84: .4byte 0x0000bbcc -_08049A88: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804AADC - ldr r0, [r5] - adds r0, 0x8C - ldr r1, _08049ABC @ =0x0000bbbb - strh r1, [r0] - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08049AB4 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r5] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_08049AB4: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08049ABC: .4byte 0x0000bbbb - thumb_func_end sub_8049A20 - thumb_func_start sub_8049AC0 sub_8049AC0: @ 8049AC0 push {r4,lr} diff --git a/src/trade.c b/src/trade.c index 493730095..d0a375b0f 100644 --- a/src/trade.c +++ b/src/trade.c @@ -149,7 +149,7 @@ static void sub_8048AB4(void); /*static*/ void sub_8049E9C(u8); /*static*/ void sub_804AADC(u8, u8); /*static*/ void sub_804A80C(void); -/*static*/ u8 sub_80499F0(const u8 *, u8, u8); +static u8 sub_80499F0(const u8 *, u8, u8); extern u8 gUnknown_020297D8[2]; extern u8 *gUnknown_020296CC[13]; @@ -1652,7 +1652,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, 20); + SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData)); } else { @@ -1708,7 +1708,7 @@ static void sub_8049620(void) { gUnknown_03004824->linkData[i] = i; } - SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, 20); + SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData)); } } @@ -1783,7 +1783,7 @@ static void sub_8049620(void) } } -/*static*/ u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition) +static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition) { u8 retval = 0; int i; @@ -1797,6 +1797,31 @@ static void sub_8049620(void) return retval; } +/*static*/ void sub_8049A20(void) +{ + u8 unk_0051[12]; + int i; + for (i = 0; i < gUnknown_03004824->playerPartyCount; i ++) + { + unk_0051[i] = gUnknown_03004824->unk_0051[i]; + } + if (sub_80499F0(unk_0051, gUnknown_03004824->playerPartyCount, gUnknown_03004824->tradeMenuCursorPosition) == 0) + { + sub_804AADC(3, 2); + gUnknown_03004824->linkData[0] = 0xbbcc; + sub_804AADC(0xb4, 0); + } + else + { + sub_804AADC(3, 1); + gUnknown_03004824->linkData[0] = 0xbbbb; + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData)); + } + } +} + asm(".section .text.sub_804A96C"); /*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { |