diff options
author | Diegoisawesome <diego@domoreaweso.me> | 2018-12-23 01:26:38 -0600 |
---|---|---|
committer | Diegoisawesome <diego@domoreaweso.me> | 2018-12-23 01:26:38 -0600 |
commit | a5c09bfec631c6437bd81c92d3878e7cdb1c8859 (patch) | |
tree | 021fa4d4cb90371553df30fe0c8ebb651d3c0fc7 /src | |
parent | a39783a637533814430fe4fcda5ad144839b8c12 (diff) |
S'more trade
Diffstat (limited to 'src')
-rw-r--r-- | src/trade.c | 96 |
1 files changed, 95 insertions, 1 deletions
diff --git a/src/trade.c b/src/trade.c index 212074513..c9a9db607 100644 --- a/src/trade.c +++ b/src/trade.c @@ -4,6 +4,7 @@ #include "bg.h" #include "cable_club.h" #include "data2.h" +#include "daycare.h" #include "event_data.h" #include "gpu_regs.h" #include "graphics.h" @@ -65,7 +66,7 @@ extern struct { u8 unk_A8; u8 unk_A9[11]; u8 filler_B4[0x8F0-0xB4]; - u8 tilemapBuffer[0x800]; + u16 tilemapBuffer[0x400]; // 8F0 } *gUnknown_0203229C; extern u8 *gUnknown_02032184; extern u8 *gUnknown_02032188[14]; @@ -94,6 +95,8 @@ extern const u8 gUnknown_0832DF99[][2]; extern const u8 gText_EmptyString7[]; extern const u8 gText_NewLine3[]; extern const u8 gText_FourQuestionMarks[]; +extern const u8 gUnknown_0832DE3E[][6][2]; +extern const u8 gUnknown_0832DE56[][6][2]; bool32 sub_8077260(void); void sub_80773D0(void); @@ -2509,3 +2512,94 @@ void sub_8079B84(u8 a0, u8 a1, u8 *a2) PutWindowTilemap(a1); CopyWindowToVram(a1, 3); } + +void sub_8079BE0(u8 a0) +{ + u8 i; + u8 sp[20]; + u8 sp14[32]; + struct Pokemon *mons = a0 == 0 ? gPlayerParty : gEnemyParty; + + for (i = 0; i < gUnknown_0203229C->unk_36[a0]; i++) + { + GetMonData(&mons[i], MON_DATA_NICKNAME, sp); + StringCopy10(sp14, sp); + sub_8079B84(a0, i, sp14); + } +} + +void sub_8079C4C(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) +{ + u8 r6; + u32 r2; + u8 gender; + u8 name[12]; + + CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_08DDD704, a4, a5, 6, 3, 0); + CopyBgTilemapBufferToVram(1); + + if (a0 == 0) + { + r6 = GetMonData(&gPlayerParty[a1], MON_DATA_LEVEL, NULL); + } + else + { + r6 = GetMonData(&gEnemyParty[a1], MON_DATA_LEVEL, NULL); + } + + if (gUnknown_0203229C->unk_51[a0][a1] == 0) + { + if (r6 / 10 != 0) + { + gUnknown_0203229C->tilemapBuffer[a2 + (a3 * 32)] = (r6 / 10) + 0x60; + } + gUnknown_0203229C->tilemapBuffer[a2 + (a3 * 32) + 1] = (r6 % 10) + 0x70; + } + else + { + gUnknown_0203229C->tilemapBuffer[a2 + (a3 * 32) - 32] = gUnknown_0203229C->tilemapBuffer[a2 + (a3 * 32) - 33]; + gUnknown_0203229C->tilemapBuffer[a2 + (a3 * 32) - 31] = gUnknown_0203229C->tilemapBuffer[a2 + (a3 * 32) - 36] | 0x400; + } + + if (gUnknown_0203229C->unk_51[a0][a1] != 0) + { + r2 = 0x480; + } + else + { + if (a0 == 0) + { + gender = GetMonGender(&gPlayerParty[a1]); + GetMonData(&gPlayerParty[a1], MON_DATA_NICKNAME, name); + } + else + { + gender = GetMonGender(&gEnemyParty[a1]); + GetMonData(&gEnemyParty[a1], MON_DATA_NICKNAME, name); + } + + switch (gender) + { + case MON_MALE: + r2 = !NameHasGenderSymbol(name, MON_MALE) ? 0x84 : 0x83; + break; + case MON_FEMALE: + r2 = !NameHasGenderSymbol(name, MON_FEMALE) ? 0x85 : 0x83; + break; + default: + r2 = 0x83; + break; + } + } + gUnknown_0203229C->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2; +} + +void sub_8079E44(u8 a0) +{ + int i; + + for (i = 0; i < gUnknown_0203229C->unk_36[a0]; i++) + { + sub_8079C4C(a0, i, gUnknown_0832DE3E[a0][i][0], gUnknown_0832DE3E[a0][i][1], gUnknown_0832DE56[a0][i][0], gUnknown_0832DE56[a0][i][1]); + } +} |