diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/choose_party.c | 2 | ||||
-rw-r--r-- | src/party_menu.c | 83 |
2 files changed, 78 insertions, 7 deletions
diff --git a/src/choose_party.c b/src/choose_party.c index ed96bf3a7..223c97f69 100644 --- a/src/choose_party.c +++ b/src/choose_party.c @@ -68,12 +68,10 @@ extern void CreatePartyMenuMonIcon(); extern void CreateHeldItemIcon_806DCD4(int, u8, int); extern u8 GetMonStatusAndPokerus(); extern void PartyMenuPrintHP(); -extern void PartyMenuPutStatusTilemap(u8, int, u8); extern void PrintPartyMenuMonNickname(); extern bool8 sub_80F9344(void); extern void sub_806D4AC(); extern void sub_806D3B4(); -extern void PartyMenuDoPrintLevel(u8, u8, u8); extern void box_print(u8, int, const u8 *); extern void sub_806BCE8(void); diff --git a/src/party_menu.c b/src/party_menu.c index 467820111..541c04fdc 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -91,8 +91,6 @@ extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; extern u8 gUnknown_02039460[]; extern u8 gTileBuffer[]; -extern void PartyMenuWriteTilemap(u8, u8 b, u8 c); - static void sub_806E884(u8 taskId); static void sub_8070D90(u8 taskId); @@ -120,10 +118,85 @@ void sub_806AEDC(void) #define WINDOW_RIGHT (29) #endif -extern void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status); -extern void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level); +u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer) +{ + GetMonData(pokemon, MON_DATA_NICKNAME, stringBuffer); + return StringGetEnd10(stringBuffer); +} + +void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status) +{ + u8 i; + u8 x = gUnknown_08376738[b][monIndex].x - 1; + u8 y = gUnknown_08376738[b][monIndex].y + 1; + u16 *vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); + u8 var1 = status * 4; + + for (i = 0; i < 4; i++) + { + vramPtr[i] = (0x18C + var1 + i) | -0x5000; + } +} + +static void PartyMenuClearLevelStatusTilemap(u8 monIndex) +{ + u8 isLinkDoubleBattle; + u8 b; + u8 x; + u8 y; + u16 *vramPtr; + u8 i; + + isLinkDoubleBattle = IsLinkDoubleBattle(); + if (isLinkDoubleBattle == TRUE) + { + b = 2; + } + else + { + b = IsDoubleBattle(); + } + + x = gUnknown_08376738[b][monIndex].x - 1; + y = gUnknown_08376738[b][monIndex].y + 1; + + vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); + for (i = 0; i < 4; i++) + { + vramPtr[i] = 0; + } +} + +static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y) +{ + u16 *vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); + *vramPtr = a + 0x10C; +} + +void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level) +{ + u8 *stringVar; + u32 var1; + u8 x = gUnknown_08376738[b][monIndex].x; + u8 y = gUnknown_08376738[b][monIndex].y; + + PartyMenuWriteTilemap(0x40, x - 1, y + 1); + + stringVar = gStringVar1; + stringVar[0] = 0xFC; + stringVar[1] = 0x12; + stringVar[2] = 0x8; + + ConvertIntToDecimalString(&stringVar[3], level); + + var1 = 0; + CpuFastSet(&var1, gUnknown_02039460, 0x1000020); + sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x200 + (monIndex * 0x400)), 32); +} + void PartyMenuPrintLevel(u8 monIndex, u8 b, struct Pokemon *pokemon) { u16 level = GetMonData(pokemon, MON_DATA_LEVEL); @@ -214,7 +287,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100, gStringVar1); + sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x300 + (monIndex * 0x400)), 64); } |