diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-02 14:12:51 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-02 14:12:51 -0400 |
commit | 28615f2924d208b97de19f7376d6eea3278ed779 (patch) | |
tree | cb8efad75c511a3c6c8f18571e227b01d4cfcf06 | |
parent | 249dda4489a31e5b7e1b283a32d3e830cfb46926 (diff) |
sub_8049680
-rw-r--r-- | asm/trade.s | 183 | ||||
-rw-r--r-- | src/trade.c | 96 |
2 files changed, 74 insertions, 205 deletions
diff --git a/asm/trade.s b/asm/trade.s index d7fea9a6f..e33814899 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -10,189 +10,6 @@ .set sub_804A96C_alt, sub_804A96C .endif - thumb_func_start sub_8049680 -sub_8049680: @ 8049680 - push {r4,lr} - sub sp, 0x8 - ldr r0, _080496A0 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080496A8 - ldr r0, _080496A4 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496A0: .4byte gMain -_080496A4: .4byte gUnknown_03004824 -_080496A8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080496C4 - ldr r0, _080496C0 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x1 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496C0: .4byte gUnknown_03004824 -_080496C4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080496E0 - ldr r0, _080496DC @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x2 - bl sub_8049560 - b _080496F4 - .align 2, 0 -_080496DC: .4byte gUnknown_03004824 -_080496E0: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080496F4 - ldr r0, _08049750 @ =gUnknown_03004824 - ldr r0, [r0] - adds r0, 0x41 - movs r1, 0x3 - bl sub_8049560 -_080496F4: - ldr r0, _08049754 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080497B6 - movs r0, 0x5 - bl PlaySE - ldr r4, _08049750 @ =gUnknown_03004824 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x41 - ldrb r1, [r1] - cmp r1, 0x5 - bhi _0804975C - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x12 - movs r2, 0xE - movs r3, 0x1C - bl DrawTextWindow - ldr r3, _08049758 @ =gUnknown_0820C320 - movs r0, 0x13 - movs r1, 0xF - movs r2, 0x2 - bl PrintMenuItems - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x13 - movs r2, 0xF - movs r3, 0x2 - bl InitMenu - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x1 - strb r1, [r0] - b _080497B6 - .align 2, 0 -_08049750: .4byte gUnknown_03004824 -_08049754: .4byte gMain -_08049758: .4byte gUnknown_0820C320 -_0804975C: - cmp r1, 0xB - bhi _0804977A - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x2 - strb r1, [r0] - b _080497B6 -_0804977A: - cmp r1, 0xC - bne _080497B6 - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0x18 - movs r2, 0xE - movs r3, 0x1D - bl DrawTextWindow - movs r0, 0x18 - movs r1, 0xE - movs r2, 0x4 - bl InitYesNoMenu - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x4 - strb r1, [r0] - ldr r0, _080497F4 @ =gUnknown_0820C14C - ldr r0, [r0, 0x10] - ldr r1, [r4] - adds r1, 0x7E - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _080497F8 @ =0x06010000 - adds r1, r2 - movs r2, 0x14 - bl sub_804ACD8 -_080497B6: - ldr r0, _080497FC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080497EC - movs r2, 0 - ldr r3, _08049800 @ =gUnknown_03004824 -_080497C8: - ldr r0, [r3] - lsls r1, r2, 1 - adds r0, 0x8C - adds r0, r1 - strh r2, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _080497C8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08049800 @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x8C - movs r2, 0x14 - bl SendBlock -_080497EC: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080497F4: .4byte gUnknown_0820C14C -_080497F8: .4byte 0x06010000 -_080497FC: .4byte gMain -_08049800: .4byte gUnknown_03004824 - thumb_func_end sub_8049680 - thumb_func_start sub_8049804 sub_8049804: @ 8049804 push {lr} diff --git a/src/trade.c b/src/trade.c index a313106ea..a96a68f66 100644 --- a/src/trade.c +++ b/src/trade.c @@ -72,7 +72,7 @@ struct TradeEwramSubstruct { /*0x0034*/ u8 playerPartyIcons[6]; /*0x003a*/ u8 friendPartyIcons[6]; /*0x0040*/ u8 unk_0040; - /*0x0041*/ u8 unk_0041; + /*0x0041*/ u8 tradeMenuCursorPosition; /*0x0042*/ u8 playerPartyCount; /*0x0043*/ u8 friendPartyCount; /*0x0044*/ u8 tradeMenuOptionsActive[13]; @@ -781,7 +781,7 @@ static void sub_8047EC0(void) case 12: sub_8047E44(); gUnknown_03004824->unk_0040 = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2); - gUnknown_03004824->unk_0041 = 0; + gUnknown_03004824->tradeMenuCursorPosition = 0; gMain.state ++; nullsub_5(6, 0); break; @@ -933,11 +933,11 @@ static void sub_8047EC0(void) case 12: sub_8047E44(); unkStructF = &ewram_2010000.unk_08000; - if (gUnknown_03004824->unk_0041 < 6) - gUnknown_03004824->unk_0041 = unkStructF->unk_0009; + if (gUnknown_03004824->tradeMenuCursorPosition < 6) + gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009; else - gUnknown_03004824->unk_0041 = unkStructF->unk_0009 + 6; - gUnknown_03004824->unk_0040 = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[gUnknown_03004824->unk_0041][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_03004824->unk_0041][1] * 8, 2); + gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009 + 6; + gUnknown_03004824->unk_0040 = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][1] * 8, 2); gMain.state = 15; nullsub_5(6, 0); break; @@ -1003,7 +1003,7 @@ static void sub_80489F4(void) { if (!gPaletteFade.active) { - gUnknown_020297D8[0] = gUnknown_03004824->unk_0041; + gUnknown_020297D8[0] = gUnknown_03004824->tradeMenuCursorPosition; gUnknown_020297D8[1] = gUnknown_03004824->unk_008a; sub_800832C(); gUnknown_03004824->unk_007b = 13; @@ -1500,7 +1500,7 @@ static void sub_80491E4(u8 mpId, u8 status) break; case 0xdddd: gUnknown_03004824->unk_008a = ((u8 *)gBlockRecvBuffer[0])[1 * sizeof(u16)] + 6; - sub_8049E9C(gUnknown_03004824->unk_0041); + sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition); sub_8049E9C(gUnknown_03004824->unk_008a); gUnknown_03004824->unk_007b = 7; break; @@ -1529,7 +1529,7 @@ static void sub_80492D8(void) { gUnknown_03004824->unk_007b = 6; gUnknown_03004824->linkData[0] = 0xdddd; - gUnknown_03004824->linkData[1] = gUnknown_03004824->unk_0041; + gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition; sub_804AADC(5, 0); gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0; } @@ -1603,25 +1603,25 @@ static void sub_80494D8(void) sub_80492D8(); } -static u8 sub_8049514(u8 a0, u8 a1) +static u8 sub_8049514(u8 oldPosition, u8 direction) { int i; - u8 retval = 0; + u8 newPosition = 0; for (i = 0; i < PARTY_SIZE; i ++) { - if (gUnknown_03004824->tradeMenuOptionsActive[gTradeNextSelectedMonTable[a0][a1][i]] == TRUE) + if (gUnknown_03004824->tradeMenuOptionsActive[gTradeNextSelectedMonTable[oldPosition][direction][i]] == TRUE) { - retval = gTradeNextSelectedMonTable[a0][a1][i]; + newPosition = gTradeNextSelectedMonTable[oldPosition][direction][i]; break; } } - return retval; + return newPosition; } -/*static*/ void sub_8049560(u8 *a0, u8 a1) +static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) { - u8 v0 = sub_8049514(*a0, a1); - if (v0 == 12) // CANCEL + u8 newPosition = sub_8049514(*tradeMenuCursorPosition, direction); + if (newPosition == 12) // CANCEL { StartSpriteAnim(&gSprites[gUnknown_03004824->unk_0040], 1); gSprites[gUnknown_03004824->unk_0040].pos1.x = 0xe0; @@ -1630,14 +1630,14 @@ static u8 sub_8049514(u8 a0, u8 a1) else { StartSpriteAnim(&gSprites[gUnknown_03004824->unk_0040], 0); - gSprites[gUnknown_03004824->unk_0040].pos1.x = gTradeMonSpriteCoords[v0][0] * 8 + 32; - gSprites[gUnknown_03004824->unk_0040].pos1.y = gTradeMonSpriteCoords[v0][1] * 8; + gSprites[gUnknown_03004824->unk_0040].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; + gSprites[gUnknown_03004824->unk_0040].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; } - if (*a0 != v0) + if (*tradeMenuCursorPosition != newPosition) { PlaySE(SE_SELECT); } - *a0 = v0; + *tradeMenuCursorPosition = newPosition; } /*static*/ void sub_8049620(void) @@ -1647,7 +1647,7 @@ static u8 sub_8049514(u8 a0, u8 a1) if (GetMultiplayerId() == 1) { gUnknown_03004824->linkData[0] = 0xaabb; - gUnknown_03004824->linkData[1] = gUnknown_03004824->unk_0041; + gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition; SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, 20); } else @@ -1656,6 +1656,58 @@ static u8 sub_8049514(u8 a0, u8 a1) } } +/*static*/ void sub_8049680(void) +{ + int i; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 0); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 1); + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 2); + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 3); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) + { + DrawTextWindow(&gUnknown_03004824->window, 18, 14, 28, 19); + PrintMenuItems(19, 15, 2, gUnknown_0820C320); + InitMenu(0, 19, 15, 2, 0, 9); + gUnknown_03004824->unk_007b = 1; + } + else if (gUnknown_03004824->tradeMenuCursorPosition < 2 * PARTY_SIZE) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004824->unk_007b = 2; + } + else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE) + { + DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + InitYesNoMenu(24, 14, 4); + gUnknown_03004824->unk_007b = 4; + sub_804ACD8(gUnknown_0820C14C[4], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); + } + } + if (gMain.newKeys & R_BUTTON) + { + for (i = 0; i < 10; i ++) + { + gUnknown_03004824->linkData[i] = i; + } + SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, 20); + } +} + asm(".section .text.sub_804A96C"); /*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { |