summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-02 14:12:51 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-02 14:12:51 -0400
commit28615f2924d208b97de19f7376d6eea3278ed779 (patch)
treecb8efad75c511a3c6c8f18571e227b01d4cfcf06
parent249dda4489a31e5b7e1b283a32d3e830cfb46926 (diff)
sub_8049680
-rw-r--r--asm/trade.s183
-rw-r--r--src/trade.c96
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) {