diff options
-rw-r--r-- | asm/trade.s | 97 | ||||
-rw-r--r-- | src/trade.c | 54 |
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) { |