diff options
-rw-r--r-- | asm/trade.s | 97 | ||||
-rw-r--r-- | src/trade.c | 60 |
2 files changed, 48 insertions, 109 deletions
diff --git a/asm/trade.s b/asm/trade.s index a155a892f..85043bfab 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -10,103 +10,6 @@ .set sub_804A96C_alt, sub_804A96C .endif - thumb_func_start sub_8049BC0 -sub_8049BC0: @ 8049BC0 - push {r4,r5,lr} - ldr r0, _08049BDC @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08049BE0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _08049BF0 - .align 2, 0 -_08049BDC: .4byte gMain -_08049BE0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08049BFC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_08049BF0: - bl MoveMenuCursor - ldr r1, _08049C5C @ =gUnknown_03004824 - ldr r1, [r1] - adds r1, 0x7C - strb r0, [r1] -_08049BFC: - ldr r0, _08049C60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08049C72 - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08049C6C - movs r0, 0x4 - bl sub_804AA0C - ldr r4, _08049C5C @ =gUnknown_03004824 - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x8C - ldr r1, _08049C64 @ =0x0000eeaa - strh r1, [r2] - adds r0, 0x8E - strh r5, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804AADC - ldr r2, _08049C68 @ =gSprites - ldr r0, [r4] - adds r0, 0x40 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x7B - movs r1, 0x64 - strb r1, [r0] - b _08049C84 - .align 2, 0 -_08049C5C: .4byte gUnknown_03004824 -_08049C60: .4byte gMain -_08049C64: .4byte 0x0000eeaa -_08049C68: .4byte gSprites -_08049C6C: - bl sub_8049804 - b _08049C84 -_08049C72: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08049C84 - movs r0, 0x5 - bl PlaySE - bl sub_8049804 -_08049C84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8049BC0 - thumb_func_start sub_8049C8C sub_8049C8C: @ 8049C8C push {r4,lr} diff --git a/src/trade.c b/src/trade.c index 32791dce7..5cddaf12f 100644 --- a/src/trade.c +++ b/src/trade.c @@ -72,7 +72,7 @@ struct TradeEwramSubstruct { /*0x0004*/ struct Window window; /*0x0034*/ u8 playerPartyIcons[6]; /*0x003a*/ u8 friendPartyIcons[6]; - /*0x0040*/ u8 unk_0040; + /*0x0040*/ u8 tradeMenuCursorSpriteIdx; /*0x0041*/ u8 tradeMenuCursorPosition; /*0x0042*/ u8 playerPartyCount; /*0x0043*/ u8 friendPartyCount; @@ -784,7 +784,7 @@ static void sub_8047EC0(void) break; case 12: sub_8047E44(); - gUnknown_03004824->unk_0040 = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2); + gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2); gUnknown_03004824->tradeMenuCursorPosition = 0; gMain.state ++; nullsub_5(6, 0); @@ -941,7 +941,7 @@ void sub_80484F4(void) gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009; else 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); + gUnknown_03004824->tradeMenuCursorSpriteIdx = 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; @@ -1627,15 +1627,15 @@ static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) 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; - gSprites[gUnknown_03004824->unk_0040].pos1.y = 0xa0; + StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 1); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = 0xe0; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = 0xa0; } else { - StartSpriteAnim(&gSprites[gUnknown_03004824->unk_0040], 0); - gSprites[gUnknown_03004824->unk_0040].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; - gSprites[gUnknown_03004824->unk_0040].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; + StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 0); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; } if (*tradeMenuCursorPosition != newPosition) { @@ -1717,7 +1717,7 @@ static void sub_8049620(void) HandleDestroyMenuCursors(); sub_804A80C(); gUnknown_03004824->unk_007b = 0; - gSprites[gUnknown_03004824->unk_0040].invisible = FALSE; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20); } @@ -1749,7 +1749,7 @@ static void sub_8049620(void) else { sub_8049620(); - gSprites[gUnknown_03004824->unk_0040].invisible = TRUE; + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE; } } else if (gMain.newKeys & B_BUTTON) @@ -1857,7 +1857,7 @@ static void sub_8049A20(void) sub_804AADC(3, 1); if (GetMenuCursorPos() == 0) { - gUnknown_03004824->unk_007c = MoveMenuCursor(1); + 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)); @@ -1865,6 +1865,42 @@ static void sub_8049A20(void) } } +/*static*/ void sub_8049BC0(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (GetMenuCursorPos() == 0) + { + sub_804AA0C(4); + gUnknown_03004824->linkData[0] = 0xeeaa; + gUnknown_03004824->linkData[1] = 0; + sub_804AADC(5, 0); + gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE; + gUnknown_03004824->unk_007b = 100; + } + else + { + sub_8049804(); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8049804(); + } +} + asm(".section .text.sub_804A96C"); /*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { |