diff --git a/src/data/trade.h b/src/data/trade.h index 4ed39f6cd..8601af2a8 100644 --- a/src/data/trade.h +++ b/src/data/trade.h @@ -276,48 +276,65 @@ static const u8 sTradeMonSpriteCoords[(PARTY_SIZE * 2) + 1][2] = {23, 18} // CANCEL }; -static const u8 sTradeMonLevelCoords[][PARTY_SIZE][2] = +static const u8 sTradeMonLevelCoords[][2][2] = { + // Your party { - // Your party {5, 4}, {12, 4}, + }, + { {5, 9}, {12, 9}, + }, + { {5, 14}, {12, 14}, }, + // Friend's party { - // Friend's party + {20, 4}, {27, 4}, + }, + { {20, 9}, {27, 9}, + }, + { {20, 14}, - {27, 14} - } + {27, 14}, + }, }; -static const u8 sTradeMonBoxCoords[][PARTY_SIZE][2] = +static const u8 sTradeMonBoxCoords[][2][2] = { + // Your party { - // Your party {1, 3}, {8, 3}, + }, + { {1, 8}, {8, 8}, + }, + { {1, 13}, {8, 13}, }, + // Friend's party { - // Friend's party {16, 3}, {23, 3}, + }, + { {16, 8}, {23, 8}, + }, + { {16, 13}, - {23, 13} - } + {23, 13}, + }, }; static const u8 sUnref_0832DE6E[] = diff --git a/src/trade.c b/src/trade.c index 6f5bf3603..bec2f0487 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1988,73 +1988,28 @@ static void DrawTradeMenuPartyMonInfo(u8 whichParty, u8 monIdx, u8 x, u8 y, u8 w sTradeMenuData->tilemapBuffer[(y - 1) * 32 + x + 1] = symbolTile; } -// Very close but loop preamble not working. -#ifdef NONMATCHING static void DrawTradeMenuPartyInfo(u8 whichParty) { - int i; - + s32 i; for (i = 0; i < sTradeMenuData->partyCounts[whichParty]; i++) { - DrawTradeMenuPartyMonInfo(whichParty, i, - sTradeMonLevelCoords[whichParty][i][0], - sTradeMonLevelCoords[whichParty][i][1], - sTradeMonBoxCoords[whichParty][i][0], - sTradeMonBoxCoords[whichParty][i][1]); + const u8 (*r5)[2]; + const u8 (*r4)[2]; + u32 r0 = 3 * whichParty; + const u8 (*r1)[2][2] = sTradeMonLevelCoords; + + r5 = r1[r0]; + r4 = sTradeMonBoxCoords[r0]; + DrawTradeMenuPartyMonInfo( + whichParty, + i, + r5[i][0], + r5[i][1], + r4[i][0], + r4[i][1] + ); } } -#else -NAKED -static void DrawTradeMenuPartyInfo(u8 whichParty) -{ - asm_unified("push {r4-r7,lr}\n\ - sub sp, 0x8\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - movs r7, 0\n\ - ldr r0, =sTradeMenuData\n\ - ldr r0, [r0]\n\ - adds r0, 0x36\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - cmp r7, r0\n\ - bge _08079E94\n\ - lsls r0, r6, 1\n\ - adds r0, r6\n\ - ldr r1, =sTradeMonLevelCoords\n\ - lsls r0, 2\n\ - adds r5, r0, r1\n\ - ldr r1, =sTradeMonBoxCoords\n\ - adds r4, r0, r1\n\ -_08079E6A:\n\ - lsls r1, r7, 24\n\ - lsrs r1, 24\n\ - ldrb r2, [r5]\n\ - ldrb r3, [r5, 0x1]\n\ - ldrb r0, [r4]\n\ - str r0, [sp]\n\ - ldrb r0, [r4, 0x1]\n\ - str r0, [sp, 0x4]\n\ - adds r0, r6, 0\n\ - bl DrawTradeMenuPartyMonInfo\n\ - adds r5, 0x2\n\ - adds r4, 0x2\n\ - adds r7, 0x1\n\ - ldr r0, =sTradeMenuData\n\ - ldr r0, [r0]\n\ - adds r0, 0x36\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - cmp r7, r0\n\ - blt _08079E6A\n\ -_08079E94:\n\ - add sp, 0x8\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool"); -} -#endif // NONMATCHING static void ResetTradeMenuPartyPositions(u8 whichParty) {