summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s97
-rw-r--r--src/trade.c60
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) {