mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
initial documentation of trainer card code (#612)
This commit is contained in:
parent
286d5f943f
commit
5c654664e4
|
|
@ -17,15 +17,15 @@ RECORD_UNK_015
|
|||
RECORD_UNK_016
|
||||
RECORD_UNK_017
|
||||
RECORD_UNK_018
|
||||
RECORD_UNK_019
|
||||
RECORD_LOCAL_LINK_TRADES
|
||||
RECORD_UNK_020
|
||||
RECORD_UNK_021
|
||||
RECORD_UNK_022
|
||||
RECORD_LOCAL_LINK_BATTLE_WINS
|
||||
RECORD_LOCAL_LINK_BATTLE_LOSSES
|
||||
RECORD_UNK_023
|
||||
RECORD_UNK_024
|
||||
RECORD_WIFI_TRADES
|
||||
RECORD_UNK_025
|
||||
RECORD_UNK_026
|
||||
RECORD_UNK_027
|
||||
RECORD_WIFI_BATTLE_WINS
|
||||
RECORD_WIFI_BATTLE_LOSSES
|
||||
RECORD_UNK_028
|
||||
RECORD_UNK_029
|
||||
RECORD_UNK_030
|
||||
|
|
|
|||
|
|
@ -614,7 +614,7 @@ TEXT_BANK_ABILITY_DESCRIPTIONS
|
|||
TEXT_BANK_UNK_0613
|
||||
TEXT_BANK_UNK_0614
|
||||
TEXT_BANK_UNK_0615
|
||||
TEXT_BANK_UNK_0616
|
||||
TEXT_BANK_TRAINER_CARD
|
||||
TEXT_BANK_UNK_0617
|
||||
TEXT_BANK_NPC_TRAINER_NAMES
|
||||
TEXT_BANK_TRAINER_CLASS_NAMES
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ enum HeapId {
|
|||
HEAP_ID_22,
|
||||
HEAP_ID_23,
|
||||
HEAP_ID_24,
|
||||
HEAP_ID_25,
|
||||
HEAP_ID_TRAINER_CARD_SCREEN,
|
||||
HEAP_ID_26,
|
||||
HEAP_ID_27,
|
||||
HEAP_ID_28,
|
||||
|
|
@ -143,6 +143,7 @@ enum HeapSize {
|
|||
|
||||
HEAP_SIZE_CHOOSE_STARTER_APP = 0x40000,
|
||||
HEAP_SIZE_LIBRARY_TV = 0x40000,
|
||||
HEAP_SIZE_TRAINER_CARD_SCREEN = 0x28000,
|
||||
HEAP_SIZE_MINING = 0x50000,
|
||||
HEAP_SIZE_DISTORTION_WORLD_WARP = 0x50000,
|
||||
HEAP_SIZE_GAME_START = 0x20000,
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV71_0223C69C_H
|
||||
#define POKEPLATINUM_OV71_0223C69C_H
|
||||
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "strbuf.h"
|
||||
|
||||
void ov71_0223C69C(BgConfig *param0, Window *param1);
|
||||
void ov71_0223C6D4(Window *param0);
|
||||
void ov71_0223C6F0(Window *param0, const TrainerCard *param1);
|
||||
void ov71_0223CA28(Window *param0, const TrainerCard *param1);
|
||||
void ov71_0223CD44(Window *param0, const u8 param1, const u8 param2);
|
||||
void ov71_0223CDE8(Window *param0, const TrainerCard *param1, Strbuf *param2);
|
||||
void ov71_0223CECC(Window *param0, const BOOL param1, Strbuf *param2);
|
||||
|
||||
#endif // POKEPLATINUM_OV71_0223C69C_H
|
||||
|
|
@ -3,19 +3,33 @@
|
|||
|
||||
#include <nnsys.h>
|
||||
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "overlay071/struct_ov71_0223C444.h"
|
||||
#include "overlay071/struct_ov71_0223D238.h"
|
||||
#include "overlay071/struct_ov71_0223D324.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "strbuf.h"
|
||||
#include "trainer_card.h"
|
||||
|
||||
enum TrainerCardWindows {
|
||||
TRAINER_CARD_WINDOW_ID,
|
||||
TRAINER_CARD_WINDOW_NAME,
|
||||
TRAINER_CARD_WINDOW_MONEY,
|
||||
TRAINER_CARD_WINDOW_POKEDEX,
|
||||
TRAINER_CARD_WINDOW_SCORE,
|
||||
TRAINER_CARD_WINDOW_TIME,
|
||||
TRAINER_CARD_WINDOW_ADVENTURE_STARTED,
|
||||
TRAINER_CARD_WINDOW_HOF_DEBUT,
|
||||
TRAINER_CARD_WINDOW_TIMES_LINKED,
|
||||
TRAINER_CARD_WINDOW_LINK_BATTLES,
|
||||
TRAINER_CARD_WINDOW_LINK_TRADES,
|
||||
TRAINER_CARD_WINDOW_COUNT
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
BgConfig *unk_00;
|
||||
Window unk_04[11];
|
||||
TrainerCard *unk_B4;
|
||||
BgConfig *bgConfig;
|
||||
Window windows[TRAINER_CARD_WINDOW_COUNT];
|
||||
TrainerCard *trainerCard;
|
||||
u8 unk_B8[12288];
|
||||
void *unk_30B8;
|
||||
NNSG2dCharacterData *unk_30BC;
|
||||
|
|
@ -36,8 +50,8 @@ typedef struct {
|
|||
void *unk_335C;
|
||||
NNSG2dScreenData *unk_3360;
|
||||
UnkStruct_ov71_0223C444 unk_3364;
|
||||
Strbuf *unk_336C;
|
||||
Strbuf *unk_3370;
|
||||
Strbuf *unusedStrbuf;
|
||||
Strbuf *colonStrbuf;
|
||||
u8 unk_3374[8];
|
||||
u8 unk_337C;
|
||||
u8 unk_337D;
|
||||
|
|
|
|||
16
include/overlay071/trainer_card_display_text.h
Normal file
16
include/overlay071/trainer_card_display_text.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef POKEPLATINUM_TRAINERCARD_DISPLAY_TEXT_H
|
||||
#define POKEPLATINUM_TRAINERCARD_DISPLAY_TEXT_H
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "strbuf.h"
|
||||
#include "trainer_card.h"
|
||||
|
||||
void TrainerCard_AddWindows(BgConfig *bgConfig, Window *windows);
|
||||
void TrainerCard_RemoveWindows(Window *windows);
|
||||
void TrainerCard_DrawFrontText(Window *windows, const TrainerCard *trainerCard);
|
||||
void TrainerCard_DrawBackText(Window *windows, const TrainerCard *trainerCard);
|
||||
void TrainerCard_ClearWindows(Window *windows, const u8 start, const u8 end);
|
||||
void TrainerCard_DrawUpdatedTime(Window *windows, const TrainerCard *trainerCard, Strbuf *unused);
|
||||
void TrainerCard_BlinkPlaytimeColon(Window *window, const BOOL showColon, Strbuf *strbuf);
|
||||
|
||||
#endif // POKEPLATINUM_TRAINERCARD_DISPLAY_TEXT_H
|
||||
|
|
@ -1,6 +1,12 @@
|
|||
#ifndef POKEPLATINUM_PLAYTIME_H
|
||||
#define POKEPLATINUM_PLAYTIME_H
|
||||
|
||||
#define SECONDS_PER_MINUTE 60
|
||||
#define MINUTES_PER_HOUR 60
|
||||
#define PLAYTIME_MAX_HOURS 999
|
||||
#define PLAYTIME_MAX_MINUTES (MINUTES_PER_HOUR - 1)
|
||||
#define PLAYTIME_MAX_SECONDS (SECONDS_PER_MINUTE - 1)
|
||||
|
||||
typedef struct PlayTime {
|
||||
u16 hours;
|
||||
u8 minutes;
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_0202C834_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_0202C834_DECL_H
|
||||
|
||||
typedef struct UnkStruct_0202C834_t UnkStruct_0202C834;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0202C834_DECL_H
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_0202C844_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_0202C844_DECL_H
|
||||
|
||||
typedef struct UnkStruct_0202C844_t UnkStruct_0202C844;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0202C844_DECL_H
|
||||
|
|
@ -3,12 +3,11 @@
|
|||
|
||||
#include <nitro/math.h>
|
||||
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
#include "functypes/funcptr_020598EC.h"
|
||||
|
||||
#include "party.h"
|
||||
#include "sys_task_manager.h"
|
||||
#include "trainer_card.h"
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0205964C_H
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_02072014_H
|
||||
#define POKEPLATINUM_STRUCT_02072014_H
|
||||
|
||||
#include "struct_defs/struct_02072014_sub1.h"
|
||||
|
||||
#include "play_time.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk_00;
|
||||
u8 unk_01;
|
||||
u8 unk_02;
|
||||
u8 unk_03;
|
||||
u8 unk_04_0 : 1;
|
||||
u8 unk_04_1 : 1;
|
||||
u8 unk_04_2 : 1;
|
||||
u8 unk_04_3 : 1;
|
||||
u8 padding_04_4 : 4;
|
||||
u8 unk_05;
|
||||
u8 padding_06[2];
|
||||
u16 unk_08[8];
|
||||
const PlayTime *playTime;
|
||||
u32 unk_1C;
|
||||
u32 unk_20;
|
||||
u32 unk_24;
|
||||
u16 unk_28;
|
||||
u16 playTimeHours;
|
||||
u16 unk_2C;
|
||||
u8 playTimeMinutes;
|
||||
u8 unk_2F;
|
||||
u8 unk_30;
|
||||
u8 unk_31;
|
||||
u8 unk_32;
|
||||
u8 unk_33;
|
||||
u8 unk_34;
|
||||
u8 unk_35;
|
||||
u8 padding_36[2];
|
||||
u32 unk_38;
|
||||
u32 unk_3C;
|
||||
u32 unk_40;
|
||||
u32 unk_44;
|
||||
UnkStruct_02072014_sub1 unk_48[8];
|
||||
u8 unk_68[1536];
|
||||
u16 unk_668;
|
||||
u16 unk_66A;
|
||||
} TrainerCard;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_02072014_H
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_02072014_SUB1_H
|
||||
#define POKEPLATINUM_STRUCT_02072014_SUB1_H
|
||||
|
||||
typedef struct {
|
||||
int unk_00_0 : 1;
|
||||
int unk_00_1 : 31;
|
||||
} UnkStruct_02072014_sub1;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_02072014_SUB1_H
|
||||
61
include/trainer_card.h
Normal file
61
include/trainer_card.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef POKEPLATINUM_TRAINER_CARD_H
|
||||
#define POKEPLATINUM_TRAINER_CARD_H
|
||||
|
||||
#include "constants/string.h"
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
|
||||
#include "play_time.h"
|
||||
|
||||
typedef struct {
|
||||
int unk_00_0 : 1;
|
||||
int unk_00_1 : 31;
|
||||
} TrainerCard_sub1;
|
||||
|
||||
typedef struct TrainerCard {
|
||||
u8 gameVersion;
|
||||
u8 regionCode;
|
||||
u8 unk_02;
|
||||
u8 stars;
|
||||
u8 unk_04_0 : 1;
|
||||
u8 unk_04_1 : 1;
|
||||
u8 gender : 1;
|
||||
u8 pokedexObtained : 1;
|
||||
u8 padding_04_4 : 4;
|
||||
u8 unk_05;
|
||||
u8 padding_06[2];
|
||||
u16 name[TRAINER_NAME_LEN + 1];
|
||||
const PlayTime *playTime;
|
||||
u32 money;
|
||||
u32 seenPokemon;
|
||||
u32 score;
|
||||
u16 id;
|
||||
u16 playTimeHours;
|
||||
u16 hofDebutHour;
|
||||
u8 playTimeMinutes;
|
||||
u8 adventureStartedYear;
|
||||
u8 adventureStartedMonth;
|
||||
u8 adventureStartedDay;
|
||||
u8 hofDebutYear;
|
||||
u8 hofDebutMonth;
|
||||
u8 hofDebutDay;
|
||||
u8 hofDebutMinute;
|
||||
u8 padding_36[2];
|
||||
u32 timesLinked;
|
||||
u32 linkBattleWins;
|
||||
u32 linkBattleLosses;
|
||||
u32 linkTrades;
|
||||
TrainerCard_sub1 unk_48[8];
|
||||
u8 signature[1536];
|
||||
u16 checksum;
|
||||
u16 unk_66A;
|
||||
} TrainerCard;
|
||||
|
||||
void TrainerCard_Init(const u8 param0, const u8 param1, const u8 param2, const u8 param3, FieldSystem *fieldSystem, TrainerCard *trainerCard);
|
||||
TrainerCard *TrainerCard_New(const u16 headID);
|
||||
void TrainerCard_Free(TrainerCard *trainerCard);
|
||||
u8 TrainerCard_CalculateStars(FieldSystem *fieldSystem);
|
||||
void sub_020721D4(FieldSystem *fieldSystem, const TrainerCard *trainerCard);
|
||||
void sub_02072204(FieldSystem *fieldSystem);
|
||||
|
||||
#endif // POKEPLATINUM_trainer_card_H
|
||||
24
include/trainer_card_save_data.h
Normal file
24
include/trainer_card_save_data.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#ifndef POKEPLATINUM_TRAINERCARD_SAVEDATA_H
|
||||
#define POKEPLATINUM_TRAINERCARD_SAVEDATA_H
|
||||
|
||||
#include "badges.h"
|
||||
#include "savedata.h"
|
||||
|
||||
typedef struct TrainerCardBadge {
|
||||
int cleanliness;
|
||||
} TrainerCardBadge;
|
||||
|
||||
typedef struct TrainerCardSaveData {
|
||||
TrainerCardBadge badges[MAX_BADGES];
|
||||
u8 signature[1536];
|
||||
} TrainerCardSaveData;
|
||||
|
||||
int TrainerCardSaveData_Size(void);
|
||||
void TrainerCardSaveData_Init(TrainerCardSaveData *tcSaveData);
|
||||
TrainerCardSaveData *SaveData_GetTrainerCardSaveData(SaveData *saveData);
|
||||
u8 *TrainerCardSaveData_GetSignature(TrainerCardSaveData *tcSaveData);
|
||||
TrainerCardBadge *TrainerCardSaveData_GetTrainerCardBadges(TrainerCardSaveData *tcSaveData);
|
||||
int TrainerCardBadge_GetCleanliness(const u8 badgeID, TrainerCardBadge *badges);
|
||||
void TrainerCardBadge_SetCleanliness(const u8 badgeID, const int cleanliness, TrainerCardBadge *badges);
|
||||
|
||||
#endif // POKEPLATINUM_TRAINERCARD_SAVEDATA_H
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef POKEPLATINUM_UNK_0202C7FC_H
|
||||
#define POKEPLATINUM_UNK_0202C7FC_H
|
||||
|
||||
#include "struct_decls/struct_0202C834_decl.h"
|
||||
#include "struct_decls/struct_0202C844_decl.h"
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
int TrainerCard_SaveSize(void);
|
||||
void TrainerCard_Init(UnkStruct_0202C834 *param0);
|
||||
UnkStruct_0202C834 *sub_0202C834(SaveData *saveData);
|
||||
u8 *sub_0202C840(UnkStruct_0202C834 *param0);
|
||||
UnkStruct_0202C844 *sub_0202C844(UnkStruct_0202C834 *param0);
|
||||
int sub_0202C848(const u8 param0, UnkStruct_0202C844 *param1);
|
||||
void sub_0202C850(const u8 param0, const int param1, UnkStruct_0202C844 *param2);
|
||||
|
||||
#endif // POKEPLATINUM_UNK_0202C7FC_H
|
||||
|
|
@ -10,7 +10,6 @@
|
|||
#include "struct_defs/struct_0203E348.h"
|
||||
#include "struct_defs/struct_02042434.h"
|
||||
#include "struct_defs/struct_020684D0.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
#include "struct_defs/struct_02097728.h"
|
||||
#include "struct_defs/struct_02098C44.h"
|
||||
#include "struct_defs/struct_020997B8.h"
|
||||
|
|
@ -24,6 +23,7 @@
|
|||
#include "field_task.h"
|
||||
#include "pokemon.h"
|
||||
#include "savedata.h"
|
||||
#include "trainer_card.h"
|
||||
|
||||
void FieldSystem_StartBattleProcess(FieldSystem *fieldSystem, FieldBattleDTO *dto);
|
||||
void sub_0203D1E4(FieldSystem *fieldSystem, void *param1);
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ int FieldSystem_GetDayOfMonth(const FieldSystem *fieldSystem);
|
|||
int FieldSystem_GetWeek(const FieldSystem *fieldSystem);
|
||||
int FieldSystem_GetHour(const FieldSystem *fieldSystem);
|
||||
int FieldSystem_GetMinute(const FieldSystem *fieldSystem);
|
||||
void sub_02055BF4(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2);
|
||||
void sub_02055C10(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2);
|
||||
void FieldSystem_GetStartTimestamp(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2);
|
||||
void FieldSystem_GetFirstCompletionTimestamp(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2);
|
||||
void FieldSystem_RecordFirstCompletion(const FieldSystem *fieldSystem);
|
||||
BOOL FieldSystem_HasPenalty(FieldSystem *fieldSystem);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
#ifndef POKEPLATINUM_UNK_02071D40_H
|
||||
#define POKEPLATINUM_UNK_02071D40_H
|
||||
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
|
||||
void sub_02071D40(const u8 param0, const u8 param1, const u8 param2, const u8 param3, FieldSystem *param4, TrainerCard *param5);
|
||||
TrainerCard *sub_02071F04(const u16 headID);
|
||||
void sub_02071F20(TrainerCard *param0);
|
||||
u8 sub_02071F28(FieldSystem *fieldSystem);
|
||||
void sub_020721D4(FieldSystem *fieldSystem, const TrainerCard *param1);
|
||||
void sub_02072204(FieldSystem *fieldSystem);
|
||||
|
||||
#endif // POKEPLATINUM_UNK_02071D40_H
|
||||
|
|
@ -125,7 +125,7 @@ Static main
|
|||
Object main.nef.p/src_record_mixed_rng.c.o
|
||||
Object main.nef.p/src_coins.c.o
|
||||
Object main.nef.p/src_journal.c.o
|
||||
Object main.nef.p/src_unk_0202C7FC.c.o
|
||||
Object main.nef.p/src_trainer_card_save_data.c.o
|
||||
Object main.nef.p/src_unk_0202C858.c.o
|
||||
Object main.nef.p/src_unk_0202C9F4.c.o
|
||||
Object main.nef.p/src_play_time.c.o
|
||||
|
|
@ -283,7 +283,7 @@ Static main
|
|||
Object main.nef.p/src_platform_lift.c.o
|
||||
Object main.nef.p/src_persisted_map_features_init.c.o
|
||||
Object main.nef.p/src_map_header_util.c.o
|
||||
Object main.nef.p/src_unk_02071D40.c.o
|
||||
Object main.nef.p/src_trainer_card.c.o
|
||||
Object main.nef.p/src_unk_020722AC.c.o
|
||||
Object main.nef.p/src_unk_02073700.c.o
|
||||
Object main.nef.p/src_unk_02073838.c.o
|
||||
|
|
@ -1248,7 +1248,7 @@ Overlay overlay71
|
|||
{
|
||||
After overlay12
|
||||
Object main.nef.p/src_overlay071_ov71_0223B140.c.o
|
||||
Object main.nef.p/src_overlay071_ov71_0223C69C.c.o
|
||||
Object main.nef.p/src_overlay071_trainer_card_display_text.c.o
|
||||
Object main.nef.p/src_overlay071_ov71_0223CF0C.c.o
|
||||
Object main.nef.p/src_overlay071_ov71_0223D324.c.o
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,95 +1,95 @@
|
|||
<?xml version="1.0"?>
|
||||
<body language="English">
|
||||
<key value="16542" />
|
||||
<row id="pl_msg_00000616_00000" index="0">
|
||||
<row id="TrainerCard_Text_IDNo" index="0">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">IDNo.</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00001" index="1">
|
||||
<row id="TrainerCard_Text_Name" index="1">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">NAME</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00002" index="2">
|
||||
<row id="TrainerCard_Text_Money" index="2">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">MONEY</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00003" index="3">
|
||||
<row id="TrainerCard_Text_Pokedex" index="3">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">POKéDEX</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00004" index="4">
|
||||
<row id="TrainerCard_Text_Score" index="4">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">SCORE</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00005" index="5">
|
||||
<row id="TrainerCard_Text_Time" index="5">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">TIME</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00006" index="6">
|
||||
<row id="TrainerCard_Text_AdventureStarted" index="6">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">ADVENTURE STARTED</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00007" index="7">
|
||||
<row id="TrainerCard_Text_HallOfFameDebut" index="7">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">HALL OF FAME DEBUT</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00008" index="8">
|
||||
<row id="TrainerCard_Text_TimesLinked" index="8">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">TIMES LINKED</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00009" index="9">
|
||||
<row id="TrainerCard_Text_LinkBattles" index="9">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">LINK BATTLES</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00010" index="10">
|
||||
<row id="TrainerCard_Text_LinkTrades" index="10">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">LINK TRADES</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00011" index="11">
|
||||
<row id="TrainerCard_Text_Colon" index="11">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">:</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00012" index="12">
|
||||
<row id="TrainerCard_Text_TwoDashes" index="12">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">--</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00013" index="13">
|
||||
<row id="TrainerCard_Text_BlankTime_Unused" index="13">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">--:--</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00014" index="14">
|
||||
<row id="TrainerCard_Text_Format_Money" index="14">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">${STRVAR_1 55, 5, 0}</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00015" index="15">
|
||||
<row id="TrainerCard_Text_Format_HHMMWithColon" index="15">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">{STRVAR_1 51, 0, 0}:{STRVAR_1 51, 1, 0}</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00016" index="16">
|
||||
<row id="TrainerCard_Text_Format_HHMMWithoutColon" index="16">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">{STRVAR_1 51, 0, 0} {STRVAR_1 51, 1, 0}</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00017" index="17">
|
||||
<row id="TrainerCard_Text_Format_MMDD20YY" index="17">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">{STRVAR_1 74, 3, 0} {STRVAR_1 51, 4, 0}, 20{STRVAR_1 51, 2, 0}</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00018" index="18">
|
||||
<row id="TrainerCard_Text_W" index="18">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">W</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00019" index="19">
|
||||
<row id="TrainerCard_Text_L" index="19">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">L</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00020" index="20">
|
||||
<row id="TrainerCard_Text_BlankDate" index="20">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">--- --, ----</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00021" index="21">
|
||||
<row id="TrainerCard_Text_Format_Number_1" index="21">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">{STRVAR_1 52, 5, 0}</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000616_00022" index="22">
|
||||
<row id="TrainerCard_Text_Format_Number_2" index="22">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">{STRVAR_1 55, 5, 0}</language>
|
||||
</row>
|
||||
|
|
@ -2153,16 +2153,16 @@ static BOOL ov16_0223DB1C(ApplicationManager *appMan)
|
|||
switch (v0->resultMask) {
|
||||
case BATTLE_RESULT_WIN:
|
||||
if (!sub_020389B8()) {
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_UNK_021);
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_LOCAL_LINK_BATTLE_WINS);
|
||||
} else {
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_UNK_026);
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_WIFI_BATTLE_WINS);
|
||||
}
|
||||
break;
|
||||
case BATTLE_RESULT_LOSE:
|
||||
if (!sub_020389B8()) {
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_UNK_022);
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_LOCAL_LINK_BATTLE_LOSSES);
|
||||
} else {
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_UNK_027);
|
||||
GameRecords_IncrementRecordValue(v0->records, RECORD_WIFI_BATTLE_LOSSES);
|
||||
}
|
||||
break;
|
||||
case BATTLE_RESULT_DRAW:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#include "struct_decls/struct_02029894_decl.h"
|
||||
#include "struct_defs/struct_0205964C.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
#include "functypes/funcptr_020598EC.h"
|
||||
|
|
@ -27,12 +26,12 @@
|
|||
#include "script_manager.h"
|
||||
#include "sys_task.h"
|
||||
#include "sys_task_manager.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_02033200.h"
|
||||
#include "unk_020363E8.h"
|
||||
#include "unk_020366A0.h"
|
||||
#include "unk_0205A0D8.h"
|
||||
#include "unk_02071D40.h"
|
||||
#include "unk_02099500.h"
|
||||
|
||||
static void FieldCommMan_RunTask(SysTask *task, void *unused);
|
||||
|
|
@ -181,7 +180,7 @@ void FieldCommMan_EnterBattleRoom(FieldSystem *fieldSystem)
|
|||
}
|
||||
}
|
||||
|
||||
sub_02071D40(0, 0, 0, 0xff, sFieldCommMan->fieldSystem, sFieldCommMan->trainerCard[netId]);
|
||||
TrainerCard_Init(0, 0, 0, 0xff, sFieldCommMan->fieldSystem, sFieldCommMan->trainerCard[netId]);
|
||||
}
|
||||
|
||||
CommTiming_StartSync(95);
|
||||
|
|
|
|||
|
|
@ -106,15 +106,15 @@ static u8 sUsesHighLimit[MAX_RECORDS] = {
|
|||
[RECORD_UNK_016] = TRUE,
|
||||
[RECORD_UNK_017] = TRUE,
|
||||
[RECORD_UNK_018] = TRUE,
|
||||
[RECORD_UNK_019] = TRUE,
|
||||
[RECORD_LOCAL_LINK_TRADES] = TRUE,
|
||||
[RECORD_UNK_020] = TRUE,
|
||||
[RECORD_UNK_021] = TRUE,
|
||||
[RECORD_UNK_022] = TRUE,
|
||||
[RECORD_LOCAL_LINK_BATTLE_WINS] = TRUE,
|
||||
[RECORD_LOCAL_LINK_BATTLE_LOSSES] = TRUE,
|
||||
[RECORD_UNK_023] = TRUE,
|
||||
[RECORD_UNK_024] = TRUE,
|
||||
[RECORD_WIFI_TRADES] = TRUE,
|
||||
[RECORD_UNK_025] = TRUE,
|
||||
[RECORD_UNK_026] = TRUE,
|
||||
[RECORD_UNK_027] = TRUE,
|
||||
[RECORD_WIFI_BATTLE_WINS] = TRUE,
|
||||
[RECORD_WIFI_BATTLE_LOSSES] = TRUE,
|
||||
[RECORD_UNK_028] = TRUE,
|
||||
[RECORD_UNK_029] = TRUE,
|
||||
[RECORD_UNK_030] = TRUE,
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ pokeplatinum_c = files(
|
|||
'unk_0202ACE0.c',
|
||||
'record_mixed_rng.c',
|
||||
'journal.c',
|
||||
'unk_0202C7FC.c',
|
||||
'trainer_card_save_data.c',
|
||||
'unk_0202C858.c',
|
||||
'unk_0202C9F4.c',
|
||||
'play_time.c',
|
||||
|
|
@ -269,7 +269,7 @@ pokeplatinum_c = files(
|
|||
'platform_lift.c',
|
||||
'persisted_map_features_init.c',
|
||||
'map_header_util.c',
|
||||
'unk_02071D40.c',
|
||||
'trainer_card.c',
|
||||
'unk_020722AC.c',
|
||||
'unk_02073700.c',
|
||||
'unk_02073838.c',
|
||||
|
|
@ -798,7 +798,7 @@ pokeplatinum_c = files(
|
|||
'overlay070/ov70_0226CC74.c',
|
||||
'overlay070/ov70_0226CE54.c',
|
||||
'overlay071/ov71_0223B140.c',
|
||||
'overlay071/ov71_0223C69C.c',
|
||||
'overlay071/trainer_card_display_text.c',
|
||||
'overlay071/ov71_0223CF0C.c',
|
||||
'overlay071/ov71_0223D324.c',
|
||||
'overlay072/ov72_0223D7A0.c',
|
||||
|
|
|
|||
|
|
@ -3,13 +3,15 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "generated/genders.h"
|
||||
|
||||
#include "struct_defs/struct_02099F80.h"
|
||||
|
||||
#include "overlay071/ov71_0223C69C.h"
|
||||
#include "overlay071/ov71_0223CF0C.h"
|
||||
#include "overlay071/ov71_0223D324.h"
|
||||
#include "overlay071/struct_ov71_0223B620.h"
|
||||
#include "overlay071/struct_ov71_0223C444.h"
|
||||
#include "overlay071/trainer_card_display_text.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "graphics.h"
|
||||
|
|
@ -30,6 +32,8 @@
|
|||
#include "unk_020393C8.h"
|
||||
#include "vram_transfer.h"
|
||||
|
||||
#include "res/text/bank/trainer_card.h"
|
||||
|
||||
typedef struct {
|
||||
const TouchScreenRect *unk_00[2];
|
||||
} UnkStruct_ov71_0223D4D0;
|
||||
|
|
@ -37,17 +41,17 @@ typedef struct {
|
|||
static void ov71_0223B620(UnkStruct_ov71_0223B620 *param0);
|
||||
static void ov71_0223B668(UnkStruct_ov71_0223B620 *param0);
|
||||
static void ov71_0223B688(void);
|
||||
static void ov71_0223B858(BgConfig *param0);
|
||||
static void ov71_0223B968(UnkStruct_ov71_0223B620 *param0, NARC *param1);
|
||||
static void ov71_0223BBDC(BgConfig *param0);
|
||||
static void ov71_0223B858(BgConfig *bgConfig);
|
||||
static void ov71_0223B968(UnkStruct_ov71_0223B620 *param0, NARC *narc);
|
||||
static void ov71_0223BBDC(BgConfig *bgConfig);
|
||||
static BOOL ov71_0223BC20(UnkStruct_ov71_0223B620 *param0);
|
||||
static BOOL ov71_0223BDF8(UnkStruct_ov71_0223B620 *param0);
|
||||
static BOOL ov71_0223C334(UnkStruct_ov71_0223B620 *param0, const u8 *param1);
|
||||
static int ov71_0223BEF8(UnkStruct_ov71_0223B620 *param0);
|
||||
static void ov71_0223BFBC(UnkStruct_ov71_0223B620 *param0);
|
||||
static void ov71_0223B6A8(const u8 param0, const u8 param1, NARC *param2);
|
||||
static void ov71_0223B768(const u8 param0, NARC *param1);
|
||||
static void ov71_0223B820(const u8 param0, NARC *param1);
|
||||
static void ov71_0223B6A8(const u8 stars, const u8 pokedexObtained, NARC *narc);
|
||||
static void ov71_0223B768(const u8 gameVersion, NARC *narc);
|
||||
static void ov71_0223B820(const u8 param0, NARC *narc);
|
||||
static void ov71_0223C0D8(UnkStruct_ov71_0223B620 *param0, const u8 param1);
|
||||
static void ov71_0223C128(UnkStruct_ov71_0223B620 *param0, const u8 param1);
|
||||
static void ov71_0223C18C(void *param0);
|
||||
|
|
@ -61,11 +65,11 @@ static void ov71_0223C444(UnkStruct_ov71_0223C444 *param0);
|
|||
static void ov71_0223C44C(UnkStruct_ov71_0223C444 *param0);
|
||||
static void ov71_0223C45C(UnkStruct_ov71_0223C444 *param0);
|
||||
static void ov71_0223C4DC(const u8 *param0, u8 *param1);
|
||||
static void ov71_0223C530(BgConfig *param0, const int param1, const u8 *param2);
|
||||
static void ov71_0223C594(const int param0);
|
||||
static void ov71_0223C530(BgConfig *bgConfig, const int param1, const u8 *param2);
|
||||
static void ov71_0223C594(const int unused);
|
||||
static void ov71_0223C5A4(UnkStruct_ov71_0223B620 *param0, const u8 param1);
|
||||
static int ov71_0223C60C(BgConfig *param0, const TouchScreenRect *rect);
|
||||
static int ov71_0223C654(BgConfig *param0, const TouchScreenRect *rect);
|
||||
static int ov71_0223C60C(BgConfig *bgConfig, const TouchScreenRect *rect);
|
||||
static int ov71_0223C654(BgConfig *bgConfig, const TouchScreenRect *rect);
|
||||
|
||||
static const u8 Unk_ov71_0223D4B0[5] = {
|
||||
0x1,
|
||||
|
|
@ -150,19 +154,19 @@ int ov71_0223B140(ApplicationManager *appMan, int *param1)
|
|||
GXS_SetVisiblePlane(0);
|
||||
|
||||
SetAutorepeat(4, 8);
|
||||
Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_25, 0x28000);
|
||||
Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_TRAINER_CARD_SCREEN, HEAP_SIZE_TRAINER_CARD_SCREEN);
|
||||
|
||||
v1 = NARC_ctor(NARC_INDEX_GRAPHIC__TRAINER_CASE, HEAP_ID_25);
|
||||
v0 = ApplicationManager_NewData(appMan, sizeof(UnkStruct_ov71_0223B620), HEAP_ID_25);
|
||||
v1 = NARC_ctor(NARC_INDEX_GRAPHIC__TRAINER_CASE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
v0 = ApplicationManager_NewData(appMan, sizeof(UnkStruct_ov71_0223B620), HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
memset(v0, 0, sizeof(UnkStruct_ov71_0223B620));
|
||||
|
||||
v0->unk_B4 = ApplicationManager_Args(appMan);
|
||||
v0->unk_00 = BgConfig_New(HEAP_ID_25);
|
||||
v0->trainerCard = ApplicationManager_Args(appMan);
|
||||
v0->bgConfig = BgConfig_New(HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
ov71_0223B620(v0);
|
||||
ov71_0223B688();
|
||||
ov71_0223B858(v0->unk_00);
|
||||
ov71_0223B858(v0->bgConfig);
|
||||
ov71_0223B968(v0, v1);
|
||||
|
||||
EnableTouchPad();
|
||||
|
|
@ -177,7 +181,7 @@ int ov71_0223B140(ApplicationManager *appMan, int *param1)
|
|||
u8 v3[8];
|
||||
|
||||
for (v2 = 0; v2 < 8; v2++) {
|
||||
if (v0->unk_B4->unk_48[v2].unk_00_0) {
|
||||
if (v0->trainerCard->unk_48[v2].unk_00_0) {
|
||||
v3[v2] = 1;
|
||||
} else {
|
||||
v3[v2] = 0;
|
||||
|
|
@ -187,24 +191,24 @@ int ov71_0223B140(ApplicationManager *appMan, int *param1)
|
|||
ov71_0223D070(&v0->unk_30E4, v3);
|
||||
}
|
||||
|
||||
ov71_0223C69C(v0->unk_00, v0->unk_04);
|
||||
TrainerCard_AddWindows(v0->bgConfig, v0->windows);
|
||||
|
||||
{
|
||||
u8 v4;
|
||||
|
||||
for (v4 = 0; v4 < 8; v4++) {
|
||||
if ((v0->unk_B4->unk_02 >> v4) & 0x1) {
|
||||
if ((v0->trainerCard->unk_02 >> v4) & 0x1) {
|
||||
ov71_0223C128(v0, v4);
|
||||
}
|
||||
}
|
||||
|
||||
Bg_CopyTilemapBufferToVRAM(v0->unk_00, 3);
|
||||
Bg_CopyTilemapBufferToVRAM(v0->bgConfig, BG_LAYER_MAIN_3);
|
||||
}
|
||||
|
||||
ov71_0223C6F0(v0->unk_04, v0->unk_B4);
|
||||
TrainerCard_DrawFrontText(v0->windows, v0->trainerCard);
|
||||
|
||||
if (v0->unk_B4->unk_04_1) {
|
||||
ov71_0223CECC(&(v0->unk_04[5]), 1, v0->unk_3370);
|
||||
if (v0->trainerCard->unk_04_1) {
|
||||
TrainerCard_BlinkPlaytimeColon(&(v0->windows[TRAINER_CARD_WINDOW_TIME]), TRUE, v0->colonStrbuf);
|
||||
}
|
||||
|
||||
v0->unk_30C0 = 0;
|
||||
|
|
@ -220,8 +224,8 @@ int ov71_0223B140(ApplicationManager *appMan, int *param1)
|
|||
for (v6 = 0; v6 < 8; v6++) {
|
||||
v0->unk_3374[v6] = 0;
|
||||
|
||||
if (v0->unk_B4->unk_48[v6].unk_00_0) {
|
||||
v5 = ov71_0223C40C(v0->unk_B4->unk_48[v6].unk_00_1);
|
||||
if (v0->trainerCard->unk_48[v6].unk_00_0) {
|
||||
v5 = ov71_0223C40C(v0->trainerCard->unk_48[v6].unk_00_1);
|
||||
|
||||
if (v5 <= 4) {
|
||||
if (v5 == 4) {
|
||||
|
|
@ -245,7 +249,7 @@ int ov71_0223B140(ApplicationManager *appMan, int *param1)
|
|||
SetVBlankCallback(ov71_0223C18C, NULL);
|
||||
DrawWifiConnectionIcon();
|
||||
Sound_SetPlayerVolume(1, (127 / 3));
|
||||
StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_UNK_3, FADE_TYPE_UNK_3, FADE_TO_BLACK, 6, 1, HEAP_ID_25);
|
||||
StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_UNK_3, FADE_TYPE_UNK_3, FADE_TO_BLACK, 6, 1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
NARC_dtor(v1);
|
||||
|
||||
return 1;
|
||||
|
|
@ -285,10 +289,10 @@ int ov71_0223B388(ApplicationManager *appMan, int *param1)
|
|||
} else {
|
||||
u8 v2 = v0->unk_30D4 - 1;
|
||||
|
||||
if (v0->unk_B4->unk_48[v2].unk_00_0) {
|
||||
if (v0->trainerCard->unk_48[v2].unk_00_0) {
|
||||
u8 v3;
|
||||
|
||||
v3 = ov71_0223C40C(v0->unk_B4->unk_48[v2].unk_00_1);
|
||||
v3 = ov71_0223C40C(v0->trainerCard->unk_48[v2].unk_00_1);
|
||||
ov71_0223D338(&v0->unk_3354, v2, v3);
|
||||
}
|
||||
}
|
||||
|
|
@ -305,7 +309,7 @@ int ov71_0223B388(ApplicationManager *appMan, int *param1)
|
|||
v0->unk_3381 = 2;
|
||||
}
|
||||
|
||||
if (v0->unk_B4->unk_04_0) {
|
||||
if (v0->trainerCard->unk_04_0) {
|
||||
ov71_0223C44C(&v0->unk_3364);
|
||||
}
|
||||
|
||||
|
|
@ -315,12 +319,12 @@ int ov71_0223B388(ApplicationManager *appMan, int *param1)
|
|||
} else if (v1 == 4) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
|
||||
StartScreenFade(FADE_MAIN_THEN_SUB, FADE_TYPE_UNK_4, FADE_TYPE_UNK_4, FADE_TO_BLACK, 6, 1, HEAP_ID_25);
|
||||
StartScreenFade(FADE_MAIN_THEN_SUB, FADE_TYPE_UNK_4, FADE_TYPE_UNK_4, FADE_TO_BLACK, 6, 1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
*param1 = 2;
|
||||
}
|
||||
}
|
||||
|
||||
ov71_0223C5A4(v0, v0->unk_B4->unk_04_1);
|
||||
ov71_0223C5A4(v0, v0->trainerCard->unk_04_1);
|
||||
} break;
|
||||
case 2:
|
||||
if (IsScreenFadeDone()) {
|
||||
|
|
@ -386,13 +390,13 @@ int ov71_0223B5B8(ApplicationManager *appMan, int *param1)
|
|||
Heap_FreeToHeap(v0->unk_30B8);
|
||||
Heap_FreeToHeap(v0->unk_335C);
|
||||
|
||||
ov71_0223C6D4(v0->unk_04);
|
||||
ov71_0223BBDC(v0->unk_00);
|
||||
TrainerCard_RemoveWindows(v0->windows);
|
||||
ov71_0223BBDC(v0->bgConfig);
|
||||
|
||||
DisableTouchPad();
|
||||
ApplicationManager_FreeData(appMan);
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
Heap_Destroy(HEAP_ID_25);
|
||||
Heap_Destroy(HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Sound_SetPlayerVolume(1, 127);
|
||||
|
||||
return 1;
|
||||
|
|
@ -400,23 +404,19 @@ int ov71_0223B5B8(ApplicationManager *appMan, int *param1)
|
|||
|
||||
static void ov71_0223B620(UnkStruct_ov71_0223B620 *param0)
|
||||
{
|
||||
param0->unk_336C = Strbuf_Init(3 + 1, HEAP_ID_25);
|
||||
param0->unk_3370 = Strbuf_Init(5, HEAP_ID_25);
|
||||
param0->unusedStrbuf = Strbuf_Init(4, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
param0->colonStrbuf = Strbuf_Init(5, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
{
|
||||
MessageLoader *v0;
|
||||
MessageLoader *messageLoader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_TRAINER_CARD, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
v0 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0616, HEAP_ID_25);
|
||||
|
||||
MessageLoader_GetStrbuf(v0, 11, param0->unk_3370);
|
||||
MessageLoader_Free(v0);
|
||||
}
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Colon, param0->colonStrbuf);
|
||||
MessageLoader_Free(messageLoader);
|
||||
}
|
||||
|
||||
static void ov71_0223B668(UnkStruct_ov71_0223B620 *param0)
|
||||
{
|
||||
Strbuf_Free(param0->unk_336C);
|
||||
Strbuf_Free(param0->unk_3370);
|
||||
Strbuf_Free(param0->unusedStrbuf);
|
||||
Strbuf_Free(param0->colonStrbuf);
|
||||
}
|
||||
|
||||
static void ov71_0223B688(void)
|
||||
|
|
@ -437,35 +437,35 @@ static void ov71_0223B688(void)
|
|||
GXLayers_SetBanks(&v0);
|
||||
}
|
||||
|
||||
static void ov71_0223B6A8(const u8 param0, const u8 param1, NARC *param2)
|
||||
static void ov71_0223B6A8(const u8 stars, const u8 pokedexObtained, NARC *narc)
|
||||
{
|
||||
{
|
||||
void *v0;
|
||||
NNSG2dPaletteData *v1;
|
||||
|
||||
if (param1) {
|
||||
switch (param0) {
|
||||
if (pokedexObtained) {
|
||||
switch (stars) {
|
||||
case 0:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 0, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 0, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 1:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 1, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 1, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 2:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 2, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 2, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 3:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 3, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 3, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 4:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 4, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 4, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 5:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 5, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 5, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param2, 6, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 6, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -482,29 +482,29 @@ static void ov71_0223B6A8(const u8 param0, const u8 param1, NARC *param2)
|
|||
}
|
||||
}
|
||||
|
||||
static void ov71_0223B768(const u8 param0, NARC *param1)
|
||||
static void ov71_0223B768(const u8 gameVersion, NARC *narc)
|
||||
{
|
||||
void *v0;
|
||||
NNSG2dPaletteData *v1;
|
||||
|
||||
switch (param0) {
|
||||
case 10:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 7, &v1, HEAP_ID_25);
|
||||
switch (gameVersion) {
|
||||
case VERSION_DIAMOND:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 7, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 11:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 8, &v1, HEAP_ID_25);
|
||||
case VERSION_PEARL:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 8, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 12:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 10, &v1, HEAP_ID_25);
|
||||
case VERSION_PLATINUM:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 10, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 7:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 11, &v1, HEAP_ID_25);
|
||||
case VERSION_HEARTGOLD:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 11, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
case 8:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 12, &v1, HEAP_ID_25);
|
||||
case VERSION_SOULSILVER:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 12, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
default:
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 9, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 9, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -516,13 +516,13 @@ static void ov71_0223B768(const u8 param0, NARC *param1)
|
|||
Heap_FreeToHeap(v0);
|
||||
}
|
||||
|
||||
static void ov71_0223B820(const u8 param0, NARC *param1)
|
||||
static void ov71_0223B820(const u8 param0, NARC *narc)
|
||||
{
|
||||
void *v0;
|
||||
u8 *v1;
|
||||
NNSG2dPaletteData *v2;
|
||||
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 48, &v2, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 48, &v2, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
v1 = (u8 *)(v2->pRawData);
|
||||
|
||||
DC_FlushRange(&v1[2 * 16 * param0], 2 * 16);
|
||||
|
|
@ -531,7 +531,7 @@ static void ov71_0223B820(const u8 param0, NARC *param1)
|
|||
Heap_FreeToHeap(v0);
|
||||
}
|
||||
|
||||
static void ov71_0223B858(BgConfig *param0)
|
||||
static void ov71_0223B858(BgConfig *bgConfig)
|
||||
{
|
||||
GX_SetDispSelect(GX_DISP_SELECT_SUB_MAIN);
|
||||
|
||||
|
|
@ -563,8 +563,8 @@ static void ov71_0223B858(BgConfig *param0)
|
|||
0
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_SUB_3, &v1, 2);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_SUB_3);
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_SUB_3, &v1, BG_TYPE_STATIC_WITH_AFFINE);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_SUB_3);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -584,8 +584,8 @@ static void ov71_0223B858(BgConfig *param0)
|
|||
0
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_SUB_1, &v2, 0);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_SUB_1);
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_SUB_1, &v2, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_SUB_1);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -605,8 +605,8 @@ static void ov71_0223B858(BgConfig *param0)
|
|||
0
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_SUB_2, &v3, 1);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_SUB_2);
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_SUB_2, &v3, BG_TYPE_AFFINE);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_SUB_2);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -626,8 +626,8 @@ static void ov71_0223B858(BgConfig *param0)
|
|||
0
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_MAIN_2, &v4, 0);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_MAIN_2);
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_MAIN_2, &v4, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_MAIN_2);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -647,45 +647,45 @@ static void ov71_0223B858(BgConfig *param0)
|
|||
0
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_MAIN_3, &v5, 1);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_MAIN_3);
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_MAIN_3, &v5, BG_TYPE_AFFINE);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_MAIN_3);
|
||||
}
|
||||
}
|
||||
|
||||
static void ov71_0223B968(UnkStruct_ov71_0223B620 *param0, NARC *param1)
|
||||
static void ov71_0223B968(UnkStruct_ov71_0223B620 *param0, NARC *narc)
|
||||
{
|
||||
{
|
||||
void *v0;
|
||||
NNSG2dPaletteData *v1;
|
||||
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(param1, 0, &v1, HEAP_ID_25);
|
||||
v0 = Graphics_GetPlttDataFromOpenNARC(narc, 0, &v1, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
DC_FlushRange(v1->pRawData, 2 * 16 * 16);
|
||||
GXS_LoadBGPltt(v1->pRawData, 0, 2 * 16 * 16);
|
||||
Heap_FreeToHeap(v0);
|
||||
}
|
||||
|
||||
ov71_0223B6A8(param0->unk_B4->unk_03, param0->unk_B4->unk_04_3, param1);
|
||||
ov71_0223B6A8(param0->trainerCard->stars, param0->trainerCard->pokedexObtained, narc);
|
||||
|
||||
{
|
||||
void *v2;
|
||||
NNSG2dPaletteData *v3;
|
||||
|
||||
v2 = Graphics_GetPlttDataFromOpenNARC(param1, 13, &v3, HEAP_ID_25);
|
||||
v2 = Graphics_GetPlttDataFromOpenNARC(narc, 13, &v3, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
DC_FlushRange(v3->pRawData, 16 * 2 * 16);
|
||||
GX_LoadBGPltt(v3->pRawData, 0, 16 * 2 * 16);
|
||||
Heap_FreeToHeap(v2);
|
||||
}
|
||||
|
||||
ov71_0223B768(param0->unk_B4->unk_00, param1);
|
||||
ov71_0223B768(param0->trainerCard->gameVersion, narc);
|
||||
|
||||
if (param0->unk_B4->unk_05 == 0xff) {
|
||||
if (param0->trainerCard->unk_05 == 0xff) {
|
||||
s32 v4, v5, v6;
|
||||
|
||||
switch (param0->unk_B4->unk_00) {
|
||||
case 10:
|
||||
case 11:
|
||||
switch (param0->trainerCard->gameVersion) {
|
||||
case VERSION_DIAMOND:
|
||||
case VERSION_PEARL:
|
||||
v4 = 32;
|
||||
v5 = 42;
|
||||
v6 = 26;
|
||||
|
|
@ -700,7 +700,7 @@ static void ov71_0223B968(UnkStruct_ov71_0223B620 *param0, NARC *param1)
|
|||
{
|
||||
BOOL v7;
|
||||
|
||||
param0->unk_30B8 = LoadMemberFromOpenNARC(param1, v4, 0, HEAP_ID_25, 0);
|
||||
param0->unk_30B8 = LoadMemberFromOpenNARC(narc, v4, 0, HEAP_ID_TRAINER_CARD_SCREEN, 0);
|
||||
GF_ASSERT(param0->unk_30B8 != NULL);
|
||||
|
||||
v7 = NNS_G2dGetUnpackedBGCharacterData(param0->unk_30B8, ¶m0->unk_30BC);
|
||||
|
|
@ -708,57 +708,57 @@ static void ov71_0223B968(UnkStruct_ov71_0223B620 *param0, NARC *param1)
|
|||
}
|
||||
|
||||
if (v6 != -1) {
|
||||
Graphics_LoadPaletteFromOpenNARC(param1, v6, 4, (4 * 32), (2 * 32), HEAP_ID_25);
|
||||
Graphics_LoadPaletteFromOpenNARC(narc, v6, 4, (4 * 32), (2 * 32), HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
}
|
||||
|
||||
if (param0->unk_B4->unk_04_2 == 0) {
|
||||
param0->unk_335C = Graphics_GetScrnDataFromOpenNARC(param1, v5, 0, ¶m0->unk_3360, HEAP_ID_25);
|
||||
if (param0->trainerCard->gender == GENDER_MALE) {
|
||||
param0->unk_335C = Graphics_GetScrnDataFromOpenNARC(narc, v5, 0, ¶m0->unk_3360, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
} else {
|
||||
param0->unk_335C = Graphics_GetScrnDataFromOpenNARC(param1, v5 + 1, 0, ¶m0->unk_3360, HEAP_ID_25);
|
||||
param0->unk_335C = Graphics_GetScrnDataFromOpenNARC(narc, v5 + 1, 0, ¶m0->unk_3360, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
}
|
||||
} else {
|
||||
{
|
||||
BOOL v8;
|
||||
|
||||
param0->unk_30B8 = LoadMemberFromOpenNARC(param1, Unk_ov71_0223D604[param0->unk_B4->unk_05], 0, HEAP_ID_25, 0);
|
||||
param0->unk_30B8 = LoadMemberFromOpenNARC(narc, Unk_ov71_0223D604[param0->trainerCard->unk_05], 0, HEAP_ID_TRAINER_CARD_SCREEN, 0);
|
||||
GF_ASSERT(param0->unk_30B8 != NULL);
|
||||
|
||||
v8 = NNS_G2dGetUnpackedBGCharacterData(param0->unk_30B8, ¶m0->unk_30BC);
|
||||
GF_ASSERT(v8);
|
||||
|
||||
param0->unk_335C = Graphics_GetScrnDataFromOpenNARC(param1, 49, 0, ¶m0->unk_3360, HEAP_ID_25);
|
||||
param0->unk_335C = Graphics_GetScrnDataFromOpenNARC(narc, 49, 0, ¶m0->unk_3360, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
ov71_0223B820(param0->unk_B4->unk_05, param1);
|
||||
ov71_0223B820(param0->trainerCard->unk_05, narc);
|
||||
}
|
||||
}
|
||||
|
||||
ov71_0223C390(param0);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(param1, 27, param0->unk_00, 6, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(param1, 35, param0->unk_00, 6, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(narc, 27, param0->bgConfig, BG_LAYER_SUB_2, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, 35, param0->bgConfig, BG_LAYER_SUB_2, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(param1, 28, param0->unk_00, 5, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(param1, 37, param0->unk_00, 5, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(narc, 28, param0->bgConfig, BG_LAYER_SUB_1, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, 37, param0->bgConfig, BG_LAYER_SUB_1, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(param1, 29, param0->unk_00, 2, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(param1, 38, param0->unk_00, 2, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(narc, 29, param0->bgConfig, BG_LAYER_MAIN_2, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, 38, param0->bgConfig, BG_LAYER_MAIN_2, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(param1, 30, param0->unk_00, 3, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(param1, 39, param0->unk_00, 3, 0, 0, 0, HEAP_ID_25);
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(narc, 30, param0->bgConfig, BG_LAYER_MAIN_3, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, 39, param0->bgConfig, BG_LAYER_MAIN_3, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
ov71_0223C4DC(param0->unk_B4->unk_68, param0->unk_B8);
|
||||
ov71_0223C4DC(param0->trainerCard->signature, param0->unk_B8);
|
||||
}
|
||||
|
||||
static void ov71_0223BBDC(BgConfig *param0)
|
||||
static void ov71_0223BBDC(BgConfig *bgConfig)
|
||||
{
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_BG3 | GX_PLANEMASK_OBJ, 0);
|
||||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ, 0);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_SUB_3);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_SUB_2);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_SUB_1);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_MAIN_2);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_MAIN_3);
|
||||
Heap_FreeToHeap(param0);
|
||||
Bg_FreeTilemapBuffer(bgConfig, BG_LAYER_SUB_3);
|
||||
Bg_FreeTilemapBuffer(bgConfig, BG_LAYER_SUB_2);
|
||||
Bg_FreeTilemapBuffer(bgConfig, BG_LAYER_SUB_1);
|
||||
Bg_FreeTilemapBuffer(bgConfig, BG_LAYER_MAIN_2);
|
||||
Bg_FreeTilemapBuffer(bgConfig, BG_LAYER_MAIN_3);
|
||||
Heap_FreeToHeap(bgConfig);
|
||||
}
|
||||
|
||||
static BOOL ov71_0223BC20(UnkStruct_ov71_0223B620 *param0)
|
||||
|
|
@ -798,19 +798,19 @@ static BOOL ov71_0223BC20(UnkStruct_ov71_0223B620 *param0)
|
|||
case 2:
|
||||
if (param0->unk_30C0 == 0) {
|
||||
param0->unk_30C0 = 1;
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_GRAPHIC__TRAINER_CASE, 36, param0->unk_00, 6, 0, 0, 0, HEAP_ID_25);
|
||||
ov71_0223CD44(param0->unk_04, 0, 6);
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_GRAPHIC__TRAINER_CASE, 36, param0->bgConfig, BG_LAYER_SUB_2, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
TrainerCard_ClearWindows(param0->windows, TRAINER_CARD_WINDOW_ID, TRAINER_CARD_WINDOW_ADVENTURE_STARTED);
|
||||
ov71_0223C3E8(param0);
|
||||
Bg_ClearTilemap(param0->unk_00, BG_LAYER_SUB_3);
|
||||
ov71_0223CA28(param0->unk_04, param0->unk_B4);
|
||||
ov71_0223C530(param0->unk_00, 7, param0->unk_B8);
|
||||
Bg_ClearTilemap(param0->bgConfig, BG_LAYER_SUB_3);
|
||||
TrainerCard_DrawBackText(param0->windows, param0->trainerCard);
|
||||
ov71_0223C530(param0->bgConfig, BG_LAYER_SUB_3, param0->unk_B8);
|
||||
} else {
|
||||
param0->unk_30C0 = 0;
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_GRAPHIC__TRAINER_CASE, 35, param0->unk_00, 6, 0, 0, 0, HEAP_ID_25);
|
||||
ov71_0223CD44(param0->unk_04, 7, 10);
|
||||
Bg_ClearTilemap(param0->unk_00, BG_LAYER_SUB_3);
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_GRAPHIC__TRAINER_CASE, 35, param0->bgConfig, BG_LAYER_SUB_2, 0, 0, FALSE, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
TrainerCard_ClearWindows(param0->windows, TRAINER_CARD_WINDOW_HOF_DEBUT, TRAINER_CARD_WINDOW_LINK_TRADES);
|
||||
Bg_ClearTilemap(param0->bgConfig, BG_LAYER_SUB_3);
|
||||
ov71_0223C390(param0);
|
||||
ov71_0223C6F0(param0->unk_04, param0->unk_B4);
|
||||
TrainerCard_DrawFrontText(param0->windows, param0->trainerCard);
|
||||
}
|
||||
|
||||
param0->unk_337E++;
|
||||
|
|
@ -925,19 +925,19 @@ static int ov71_0223BEF8(UnkStruct_ov71_0223B620 *param0)
|
|||
BOOL v1 = 0;
|
||||
v0 = 0;
|
||||
|
||||
param0->unk_30D4 = 0xffffffff;
|
||||
param0->unk_30D4 = TOUCHSCREEN_INPUT_NONE;
|
||||
|
||||
if (gSystem.touchPressed) {
|
||||
param0->unk_30C4 = 1;
|
||||
}
|
||||
|
||||
param0->unk_30D4 = ov71_0223C60C(param0->unk_00, Unk_ov71_0223D4D0[param0->unk_B4->unk_04_0].unk_00[param0->unk_337C]);
|
||||
param0->unk_30D4 = ov71_0223C60C(param0->bgConfig, Unk_ov71_0223D4D0[param0->trainerCard->unk_04_0].unk_00[param0->unk_337C]);
|
||||
|
||||
if (param0->unk_30D4 != 0xffffffff) {
|
||||
if (param0->unk_30D4 != TOUCHSCREEN_INPUT_NONE) {
|
||||
v1 = 1;
|
||||
v0 = 1;
|
||||
} else if (gSystem.touchHeld) {
|
||||
param0->unk_30D4 = ov71_0223C654(param0->unk_00, Unk_ov71_0223D4D0[param0->unk_B4->unk_04_0].unk_00[param0->unk_337C]);
|
||||
param0->unk_30D4 = ov71_0223C654(param0->bgConfig, Unk_ov71_0223D4D0[param0->trainerCard->unk_04_0].unk_00[param0->unk_337C]);
|
||||
|
||||
if (param0->unk_30C4) {
|
||||
v1 = 1;
|
||||
|
|
@ -966,8 +966,8 @@ static void ov71_0223BFBC(UnkStruct_ov71_0223B620 *param0)
|
|||
v0 = 0;
|
||||
|
||||
if ((gSystem.touchX != 0xffff) && (gSystem.touchY != 0xffff) && (param0->unk_30DC != 0xffff) && (param0->unk_30E0 != 0xffff)) {
|
||||
if ((param0->unk_30D4 != 0xffffffff) && (param0->unk_30D4 != 0)) {
|
||||
if (param0->unk_B4->unk_48[param0->unk_30D4 - 1].unk_00_0) {
|
||||
if ((param0->unk_30D4 != TOUCHSCREEN_INPUT_NONE) && (param0->unk_30D4 != 0)) {
|
||||
if (param0->trainerCard->unk_48[param0->unk_30D4 - 1].unk_00_0) {
|
||||
if (param0->unk_30DC > gSystem.touchX) {
|
||||
v1 = param0->unk_30DC - gSystem.touchX;
|
||||
param0->unk_3364.unk_02 = -1;
|
||||
|
|
@ -1025,7 +1025,7 @@ static void ov71_0223C0D8(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
|||
u16 v1;
|
||||
u8 v2, v3;
|
||||
|
||||
v0 = (u16 *)Bg_GetTilemapBuffer(param0->unk_00, 2);
|
||||
v0 = (u16 *)Bg_GetTilemapBuffer(param0->bgConfig, BG_LAYER_MAIN_2);
|
||||
v1 = (4 * 32) + (4 * param1);
|
||||
|
||||
for (v3 = 0; v3 < 4; v3++) {
|
||||
|
|
@ -1034,7 +1034,7 @@ static void ov71_0223C0D8(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
|||
}
|
||||
}
|
||||
|
||||
Bg_CopyTilemapBufferToVRAM(param0->unk_00, 2);
|
||||
Bg_CopyTilemapBufferToVRAM(param0->bgConfig, BG_LAYER_MAIN_2);
|
||||
}
|
||||
|
||||
static void ov71_0223C128(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
||||
|
|
@ -1053,7 +1053,7 @@ static void ov71_0223C128(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
|||
v4 += (v5 * 7);
|
||||
v6 += (v7 * 7);
|
||||
|
||||
v0 = (u8 *)Bg_GetTilemapBuffer(param0->unk_00, 3);
|
||||
v0 = (u8 *)Bg_GetTilemapBuffer(param0->bgConfig, BG_LAYER_MAIN_3);
|
||||
v1 = (5 * 32 + 26);
|
||||
|
||||
for (v3 = 0; v3 < 5; v3++) {
|
||||
|
|
@ -1076,16 +1076,16 @@ static void ov71_0223C1AC(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
|||
int v0;
|
||||
u8 v1, v2;
|
||||
|
||||
v0 = (param0->unk_B4->unk_48[param1].unk_00_1) + 1;
|
||||
v0 = (param0->trainerCard->unk_48[param1].unk_00_1) + 1;
|
||||
|
||||
if (v0 < 200) {
|
||||
v2 = ov71_0223C40C(param0->unk_B4->unk_48[param1].unk_00_1);
|
||||
v2 = ov71_0223C40C(param0->trainerCard->unk_48[param1].unk_00_1);
|
||||
|
||||
param0->unk_3374[param1]++;
|
||||
|
||||
if (param0->unk_3374[param1] >= Unk_ov71_0223D4B0[v2]) {
|
||||
param0->unk_3374[param1] = 0;
|
||||
(param0->unk_B4->unk_48[param1].unk_00_1)++;
|
||||
(param0->trainerCard->unk_48[param1].unk_00_1)++;
|
||||
|
||||
v1 = ov71_0223C40C(v0);
|
||||
GF_ASSERT(v2 <= v1);
|
||||
|
|
@ -1175,18 +1175,18 @@ static void ov71_0223C390(UnkStruct_ov71_0223B620 *param0)
|
|||
{
|
||||
u32 v0 = param0->unk_3360->szByte;
|
||||
|
||||
Bg_LoadTiles(param0->unk_00, 7, param0->unk_30BC->pRawData, param0->unk_30BC->szByte, 0);
|
||||
Bg_LoadTiles(param0->bgConfig, BG_LAYER_SUB_3, param0->unk_30BC->pRawData, param0->unk_30BC->szByte, 0);
|
||||
|
||||
if (Bg_GetTilemapBuffer(param0->unk_00, 7) != NULL) {
|
||||
Bg_LoadTilemapBuffer(param0->unk_00, 7, param0->unk_3360->rawData, v0);
|
||||
if (Bg_GetTilemapBuffer(param0->bgConfig, BG_LAYER_SUB_3) != NULL) {
|
||||
Bg_LoadTilemapBuffer(param0->bgConfig, BG_LAYER_SUB_3, param0->unk_3360->rawData, v0);
|
||||
}
|
||||
|
||||
Bg_CopyTilemapBufferRangeToVRAM(param0->unk_00, 7, param0->unk_3360->rawData, v0, 0);
|
||||
Bg_CopyTilemapBufferRangeToVRAM(param0->bgConfig, BG_LAYER_SUB_3, param0->unk_3360->rawData, v0, 0);
|
||||
}
|
||||
|
||||
static void ov71_0223C3E8(UnkStruct_ov71_0223B620 *param0)
|
||||
{
|
||||
Bg_FillTilemapRect(param0->unk_00, 7, 0, 20, 6, 6, 9, 16);
|
||||
Bg_FillTilemapRect(param0->bgConfig, BG_LAYER_SUB_3, 0, 20, 6, 6, 9, 16);
|
||||
}
|
||||
|
||||
static const u8 ov71_0223C40C(const int param0)
|
||||
|
|
@ -1262,15 +1262,15 @@ static void ov71_0223C4DC(const u8 *param0, u8 *param1)
|
|||
}
|
||||
}
|
||||
|
||||
static void ov71_0223C530(BgConfig *param0, const int param1, const u8 *param2)
|
||||
static void ov71_0223C530(BgConfig *bgConfig, const int bgLayer, const u8 *param2)
|
||||
{
|
||||
u16 *v0;
|
||||
u8 v1, v2;
|
||||
u16 v3;
|
||||
|
||||
Bg_LoadTiles(param0, param1, param2, (24 * 8 * 64), 1);
|
||||
Bg_LoadTiles(bgConfig, bgLayer, param2, (24 * 8 * 64), 1);
|
||||
|
||||
v0 = (u16 *)Bg_GetTilemapBuffer(param0, param1);
|
||||
v0 = (u16 *)Bg_GetTilemapBuffer(bgConfig, bgLayer);
|
||||
v3 = 0;
|
||||
|
||||
for (v2 = 0; v2 < 8; v2++) {
|
||||
|
|
@ -1280,16 +1280,12 @@ static void ov71_0223C530(BgConfig *param0, const int param1, const u8 *param2)
|
|||
}
|
||||
}
|
||||
|
||||
Bg_CopyTilemapBufferToVRAM(param0, param1);
|
||||
Bg_CopyTilemapBufferToVRAM(bgConfig, bgLayer);
|
||||
}
|
||||
|
||||
static void ov71_0223C594(const int param0)
|
||||
static void ov71_0223C594(const int unused)
|
||||
{
|
||||
if (param0 == 1) {
|
||||
Sound_PlayEffect(SEQ_SE_DP_CARD11);
|
||||
} else {
|
||||
Sound_PlayEffect(SEQ_SE_DP_CARD11);
|
||||
}
|
||||
Sound_PlayEffect(SEQ_SE_DP_CARD11);
|
||||
}
|
||||
|
||||
static void ov71_0223C5A4(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
||||
|
|
@ -1300,27 +1296,27 @@ static void ov71_0223C5A4(UnkStruct_ov71_0223B620 *param0, const u8 param1)
|
|||
|
||||
if (!param0->unk_30C0) {
|
||||
if (param0->unk_3382 == 15) {
|
||||
ov71_0223CDE8(param0->unk_04, param0->unk_B4, param0->unk_336C);
|
||||
TrainerCard_DrawUpdatedTime(param0->windows, param0->trainerCard, param0->unusedStrbuf);
|
||||
|
||||
ov71_0223CECC(&(param0->unk_04[5]), 1, param0->unk_3370);
|
||||
TrainerCard_BlinkPlaytimeColon(&(param0->windows[TRAINER_CARD_WINDOW_TIME]), TRUE, param0->colonStrbuf);
|
||||
} else if (param0->unk_3382 == 0) {
|
||||
ov71_0223CECC(&(param0->unk_04[5]), 0, param0->unk_3370);
|
||||
TrainerCard_BlinkPlaytimeColon(&(param0->windows[TRAINER_CARD_WINDOW_TIME]), FALSE, param0->colonStrbuf);
|
||||
}
|
||||
}
|
||||
|
||||
param0->unk_3382 = (param0->unk_3382 + 1) % 30;
|
||||
}
|
||||
|
||||
static int ov71_0223C60C(BgConfig *param0, const TouchScreenRect *rect)
|
||||
static int ov71_0223C60C(BgConfig *bgConfig, const TouchScreenRect *rect)
|
||||
{
|
||||
int v0 = TouchScreen_CheckRectanglePressed(rect);
|
||||
|
||||
if (v0 != 0xffffffff) {
|
||||
if (v0 != TOUCHSCREEN_INPUT_NONE) {
|
||||
if (v0 != 0) {
|
||||
u16 v1 = 0x40;
|
||||
|
||||
if (Bg_DoesPixelAtXYMatchVal(param0, 2, gSystem.touchX, gSystem.touchY, &v1) == 0) {
|
||||
return 0xffffffff;
|
||||
if (Bg_DoesPixelAtXYMatchVal(bgConfig, BG_LAYER_MAIN_2, gSystem.touchX, gSystem.touchY, &v1) == 0) {
|
||||
return TOUCHSCREEN_INPUT_NONE;
|
||||
}
|
||||
} else {
|
||||
return v0;
|
||||
|
|
@ -1330,16 +1326,16 @@ static int ov71_0223C60C(BgConfig *param0, const TouchScreenRect *rect)
|
|||
return v0;
|
||||
}
|
||||
|
||||
static int ov71_0223C654(BgConfig *param0, const TouchScreenRect *rect)
|
||||
static int ov71_0223C654(BgConfig *bgConfig, const TouchScreenRect *rect)
|
||||
{
|
||||
int v0 = TouchScreen_CheckRectangleHeld(rect);
|
||||
|
||||
if (v0 != 0xffffffff) {
|
||||
if (v0 != TOUCHSCREEN_INPUT_NONE) {
|
||||
if (v0 != 0) {
|
||||
u16 v1 = 0x40;
|
||||
|
||||
if (Bg_DoesPixelAtXYMatchVal(param0, 2, gSystem.touchX, gSystem.touchY, &v1) == 0) {
|
||||
return 0xffffffff;
|
||||
if (Bg_DoesPixelAtXYMatchVal(bgConfig, BG_LAYER_MAIN_2, gSystem.touchX, gSystem.touchY, &v1) == 0) {
|
||||
return TOUCHSCREEN_INPUT_NONE;
|
||||
}
|
||||
} else {
|
||||
return v0;
|
||||
|
|
|
|||
|
|
@ -1,298 +0,0 @@
|
|||
#include "overlay071/ov71_0223C69C.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/heap.h"
|
||||
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "font.h"
|
||||
#include "message.h"
|
||||
#include "play_time.h"
|
||||
#include "strbuf.h"
|
||||
#include "string_template.h"
|
||||
#include "text.h"
|
||||
|
||||
static void ov71_0223CD64(Window *param0, const u32 param1, const u32 param2, const u32 param3, Strbuf *param4, const u32 param5, const u8 param6, const int param7);
|
||||
static void ov71_0223CDB0(Window *param0, const u32 param1, const u32 param2, const u32 param3, const Strbuf *param4);
|
||||
|
||||
static const WindowTemplate Unk_ov71_0223D670[] = {
|
||||
{ 0x7, 0x2, 0x4, 0x11, 0x2, 0xF, 0x6F },
|
||||
{ 0x7, 0x2, 0x6, 0x11, 0x2, 0xF, 0x91 },
|
||||
{ 0x7, 0x2, 0x9, 0x11, 0x2, 0xF, 0xB3 },
|
||||
{ 0x7, 0x2, 0xC, 0x11, 0x2, 0xF, 0xD5 },
|
||||
{ 0x7, 0x2, 0xF, 0x11, 0x2, 0xF, 0xF7 },
|
||||
{ 0x7, 0x2, 0x12, 0x1C, 0x2, 0xF, 0x119 },
|
||||
{ 0x7, 0x2, 0x14, 0x1C, 0x2, 0xF, 0x151 },
|
||||
{ 0x7, 0x2, 0x2, 0x1C, 0x4, 0xF, 0xC1 },
|
||||
{ 0x7, 0x2, 0x7, 0x1C, 0x2, 0xF, 0x131 },
|
||||
{ 0x7, 0x2, 0x9, 0x1C, 0x2, 0xF, 0x169 },
|
||||
{ 0x7, 0x2, 0xB, 0x1C, 0x2, 0xF, 0x1A1 }
|
||||
};
|
||||
|
||||
void ov71_0223C69C(BgConfig *param0, Window *param1)
|
||||
{
|
||||
u8 v0;
|
||||
const WindowTemplate *v1 = Unk_ov71_0223D670;
|
||||
|
||||
for (v0 = 0; v0 < 11; v0++) {
|
||||
Window_AddFromTemplate(param0, ¶m1[v0], &v1[v0]);
|
||||
}
|
||||
|
||||
Bg_FillTilesRange(param0, 7, 0, 1, 0);
|
||||
}
|
||||
|
||||
void ov71_0223C6D4(Window *param0)
|
||||
{
|
||||
u16 v0;
|
||||
|
||||
for (v0 = 0; v0 < 11; v0++) {
|
||||
Window_Remove(¶m0[v0]);
|
||||
}
|
||||
}
|
||||
|
||||
static const int Unk_ov71_0223D644[] = {
|
||||
0x0,
|
||||
0x1,
|
||||
0x2,
|
||||
0x3,
|
||||
0x4,
|
||||
0x5,
|
||||
0x6,
|
||||
0x7,
|
||||
0x8,
|
||||
0x9,
|
||||
0xA
|
||||
};
|
||||
|
||||
void ov71_0223C6F0(Window *param0, const TrainerCard *param1)
|
||||
{
|
||||
u8 v0;
|
||||
MessageLoader *v1;
|
||||
Strbuf *v2;
|
||||
|
||||
Window_FillRectWithColor(¶m0[0], 0, 0, 0, 17 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[1], 0, 0, 0, 17 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[2], 0, 0, 0, 17 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[3], 0, 0, 0, 17 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[4], 0, 0, 0, 17 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[5], 0, 0, 0, 28 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[6], 0, 0, 0, 28 * 8, 2 * 8);
|
||||
|
||||
v1 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0616, HEAP_ID_25);
|
||||
v2 = Strbuf_Init(32, HEAP_ID_25);
|
||||
|
||||
for (v0 = 0; v0 < 7; v0++) {
|
||||
if ((v0 != 3) || (v0 == 3) && (param1->unk_04_3)) {
|
||||
MessageLoader_GetStrbuf(v1, Unk_ov71_0223D644[v0], v2);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[v0], FONT_SYSTEM, v2, 0, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Strbuf *v3 = Strbuf_Init(32, HEAP_ID_25);
|
||||
StringTemplate *v4 = StringTemplate_New(6, 32, HEAP_ID_25);
|
||||
|
||||
ov71_0223CD64(¶m0[0], (8 * 17), 0, 0, v2, param1->unk_28, 5, 2);
|
||||
Strbuf_CopyChars(v2, param1->unk_08);
|
||||
ov71_0223CDB0(¶m0[1], (8 * 17), 0, 0, v2);
|
||||
|
||||
{
|
||||
u32 v5;
|
||||
|
||||
StringTemplate_SetNumber(v4, 5, param1->unk_1C, 6, 0, 1);
|
||||
MessageLoader_GetStrbuf(v1, 14, v3);
|
||||
StringTemplate_Format(v4, v2, v3);
|
||||
|
||||
v5 = (8 * 17) - Font_CalcStrbufWidth(FONT_SYSTEM, v2, 0);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[2], FONT_SYSTEM, v2, v5, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
if (param1->unk_04_3) {
|
||||
u32 v6;
|
||||
|
||||
StringTemplate_SetNumber(v4, 5, param1->unk_20, 3, 0, 1);
|
||||
MessageLoader_GetStrbuf(v1, 21, v3);
|
||||
StringTemplate_Format(v4, v2, v3);
|
||||
|
||||
v6 = (8 * 17) - Font_CalcStrbufWidth(FONT_SYSTEM, v2, 0);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[3], FONT_SYSTEM, v2, v6, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
ov71_0223CD64(¶m0[4], (8 * 17), 0, 0, v2, param1->unk_24, 9, 1);
|
||||
|
||||
{
|
||||
u32 v7;
|
||||
|
||||
if (param1->unk_04_1) {
|
||||
StringTemplate_SetNumber(v4, 0, PlayTime_GetHours(param1->playTime), 3, 1, 1);
|
||||
StringTemplate_SetNumber(v4, 1, PlayTime_GetMinutes(param1->playTime), 2, 2, 1);
|
||||
MessageLoader_GetStrbuf(v1, 16, v3);
|
||||
} else {
|
||||
StringTemplate_SetNumber(v4, 0, param1->playTimeHours, 3, 1, 1);
|
||||
StringTemplate_SetNumber(v4, 1, param1->playTimeMinutes, 2, 2, 1);
|
||||
MessageLoader_GetStrbuf(v1, 15, v3);
|
||||
}
|
||||
|
||||
StringTemplate_Format(v4, v2, v3);
|
||||
v7 = (8 * 28) - Font_CalcStrbufWidth(FONT_SYSTEM, v2, 0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[5], FONT_SYSTEM, v2, v7, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
{
|
||||
u32 v8;
|
||||
|
||||
StringTemplate_SetNumber(v4, 2, param1->unk_2F, 2, 2, 1);
|
||||
StringTemplate_SetMonthName(v4, 3, param1->unk_30);
|
||||
StringTemplate_SetNumber(v4, 4, param1->unk_31, 2, 2, 1);
|
||||
MessageLoader_GetStrbuf(v1, 17, v3);
|
||||
StringTemplate_Format(v4, v2, v3);
|
||||
|
||||
v8 = (8 * 28) - Font_CalcStrbufWidth(FONT_SYSTEM, v2, 0);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[6], FONT_SYSTEM, v2, v8, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
Strbuf_Free(v3);
|
||||
StringTemplate_Free(v4);
|
||||
}
|
||||
|
||||
Strbuf_Free(v2);
|
||||
MessageLoader_Free(v1);
|
||||
}
|
||||
|
||||
void ov71_0223CA28(Window *param0, const TrainerCard *param1)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
Window_FillRectWithColor(¶m0[7], 0, 0, 0, 28 * 8, 4 * 8);
|
||||
Window_FillRectWithColor(¶m0[8], 0, 0, 0, 28 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[9], 0, 0, 0, 28 * 8, 2 * 8);
|
||||
Window_FillRectWithColor(¶m0[10], 0, 0, 0, 28 * 8, 2 * 8);
|
||||
MessageLoader *messageLoader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0616, HEAP_ID_25);
|
||||
Strbuf *strbuf = Strbuf_Init(32, HEAP_ID_25);
|
||||
|
||||
for (i = 7; i < 11; i++) {
|
||||
MessageLoader_GetStrbuf(messageLoader, Unk_ov71_0223D644[i], strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[i], FONT_SYSTEM, strbuf, 0, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
Strbuf *strbuf2 = Strbuf_Init(32, HEAP_ID_25);
|
||||
StringTemplate *template = StringTemplate_New(6, 32, HEAP_ID_25);
|
||||
|
||||
if (param1->unk_33 != 0) {
|
||||
StringTemplate_SetNumber(template, 2, param1->unk_32, 2, 2, 1);
|
||||
StringTemplate_SetMonthName(template, 3, param1->unk_33);
|
||||
StringTemplate_SetNumber(template, 4, param1->unk_34, 2, 2, 1);
|
||||
StringTemplate_SetNumber(template, 0, param1->unk_2C, 3, 1, 1);
|
||||
StringTemplate_SetNumber(template, 1, param1->unk_35, 2, 2, 1);
|
||||
MessageLoader_GetStrbuf(messageLoader, 17, strbuf2);
|
||||
StringTemplate_Format(template, strbuf, strbuf2);
|
||||
} else {
|
||||
MessageLoader_GetStrbuf(messageLoader, 12, strbuf2);
|
||||
StringTemplate_SetStrbuf(template, 0, strbuf2, 0, FALSE, GAME_LANGUAGE);
|
||||
StringTemplate_SetStrbuf(template, 1, strbuf2, 0, FALSE, GAME_LANGUAGE);
|
||||
MessageLoader_GetStrbuf(messageLoader, 20, strbuf);
|
||||
}
|
||||
|
||||
u32 xOffset = 28 * 8 - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[7], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
MessageLoader_GetStrbuf(messageLoader, 15, strbuf2);
|
||||
StringTemplate_Format(template, strbuf, strbuf2);
|
||||
xOffset = 28 * 8 - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[7], FONT_SYSTEM, strbuf, xOffset, 16, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
StringTemplate_SetNumber(template, 5, param1->unk_38, 6, 0, 1);
|
||||
MessageLoader_GetStrbuf(messageLoader, 22, strbuf2);
|
||||
StringTemplate_Format(template, strbuf, strbuf2);
|
||||
xOffset = 28 * 8 - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[8], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
MessageLoader_GetStrbuf(messageLoader, 18, strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[9], FONT_SYSTEM, strbuf, 14 * 8, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
ov71_0223CD64(¶m0[9], 28 * 8, 0, 0, strbuf, param1->unk_40, 4, 1);
|
||||
MessageLoader_GetStrbuf(messageLoader, 19, strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[9], FONT_SYSTEM, strbuf, 22 * 8, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
ov71_0223CD64(¶m0[9], 28 * 8, 8 * 8, 0, strbuf, param1->unk_3C, 4, 1);
|
||||
StringTemplate_SetNumber(template, 5, param1->unk_44, 6, 0, 1);
|
||||
MessageLoader_GetStrbuf(messageLoader, 22, strbuf2);
|
||||
StringTemplate_Format(template, strbuf, strbuf2);
|
||||
xOffset = 28 * 8 - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[10], FONT_SYSTEM, strbuf, xOffset, 0, 0, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
Strbuf_Free(strbuf2);
|
||||
StringTemplate_Free(template);
|
||||
Strbuf_Free(strbuf);
|
||||
MessageLoader_Free(messageLoader);
|
||||
}
|
||||
|
||||
void ov71_0223CD44(Window *param0, const u8 param1, const u8 param2)
|
||||
{
|
||||
u8 v0;
|
||||
|
||||
for (v0 = param1; v0 <= param2; v0++) {
|
||||
Window_ClearAndCopyToVRAM(¶m0[v0]);
|
||||
}
|
||||
}
|
||||
|
||||
static void ov71_0223CD64(Window *param0, const u32 param1, const u32 param2, const u32 param3, Strbuf *param4, const u32 param5, const u8 param6, const int param7)
|
||||
{
|
||||
u32 v0;
|
||||
|
||||
Strbuf_FormatInt(param4, param5, param6, param7, 1);
|
||||
v0 = Font_CalcStrbufWidth(FONT_SYSTEM, param4, 0);
|
||||
Text_AddPrinterWithParamsAndColor(param0, FONT_SYSTEM, param4, param1 - (v0 + param2), param3, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
static void ov71_0223CDB0(Window *param0, const u32 param1, const u32 param2, const u32 param3, const Strbuf *param4)
|
||||
{
|
||||
u32 v0 = Font_CalcStrbufWidth(FONT_SYSTEM, param4, 0);
|
||||
Text_AddPrinterWithParamsAndColor(param0, FONT_SYSTEM, param4, param1 - (v0 + param2), param3, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
void ov71_0223CDE8(Window *param0, const TrainerCard *param1, Strbuf *param2)
|
||||
{
|
||||
int v0;
|
||||
|
||||
GF_ASSERT(param1->playTime != NULL);
|
||||
|
||||
v0 = PlayTime_GetHours(param1->playTime);
|
||||
|
||||
if (v0 > 999) {
|
||||
v0 = 999;
|
||||
}
|
||||
|
||||
Window_FillRectWithColor(¶m0[5], 0, 184, 0, 40, 2 * 8);
|
||||
|
||||
{
|
||||
u32 v1;
|
||||
MessageLoader *v2 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0616, HEAP_ID_25);
|
||||
Strbuf *v3 = Strbuf_Init(32, HEAP_ID_25);
|
||||
Strbuf *v4 = Strbuf_Init(32, HEAP_ID_25);
|
||||
StringTemplate *v5 = StringTemplate_New((1 + 1), 32, HEAP_ID_25);
|
||||
|
||||
StringTemplate_SetNumber(v5, 0, PlayTime_GetHours(param1->playTime), 3, 1, 1);
|
||||
StringTemplate_SetNumber(v5, 1, PlayTime_GetMinutes(param1->playTime), 2, 2, 1);
|
||||
MessageLoader_GetStrbuf(v2, 16, v4);
|
||||
StringTemplate_Format(v5, v3, v4);
|
||||
v1 = (8 * 28) - Font_CalcStrbufWidth(FONT_SYSTEM, v3, 0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0[5], FONT_SYSTEM, v3, v1, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
MessageLoader_Free(v2);
|
||||
Strbuf_Free(v3);
|
||||
Strbuf_Free(v4);
|
||||
StringTemplate_Free(v5);
|
||||
}
|
||||
}
|
||||
|
||||
void ov71_0223CECC(Window *param0, const BOOL param1, Strbuf *param2)
|
||||
{
|
||||
if (param1) {
|
||||
Text_AddPrinterWithParamsAndColor(param0, FONT_SYSTEM, param2, (207 - 2), 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
} else {
|
||||
Window_FillRectWithColor(param0, 0, (207 - 2), 0, 5, 2 * 8);
|
||||
Window_CopyToVRAM(param0);
|
||||
}
|
||||
}
|
||||
|
|
@ -60,16 +60,16 @@ void ov71_0223CF0C(UnkStruct_ov71_0223D238 *param0, NARC *param1)
|
|||
NNS_G2dInitOamManagerModule();
|
||||
RenderOam_Init(0, 128, 0, 32, 0, 128, 0, 32, 25);
|
||||
|
||||
param0->unk_00 = SpriteList_InitRendering((8 + 8 + 8 + 1), ¶m0->unk_04, HEAP_ID_25);
|
||||
param0->unk_00 = SpriteList_InitRendering((8 + 8 + 8 + 1), ¶m0->unk_04, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
param0->unk_190[v0] = SpriteResourceCollection_New(Unk_ov71_0223D6C8[v0], v0, HEAP_ID_25);
|
||||
param0->unk_190[v0] = SpriteResourceCollection_New(Unk_ov71_0223D6C8[v0], v0, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
}
|
||||
|
||||
param0->unk_1A0[0][0] = SpriteResourceCollection_AddTilesFrom(param0->unk_190[0], param1, 33, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_25);
|
||||
param0->unk_1A0[0][1] = SpriteResourceCollection_AddPaletteFrom(param0->unk_190[1], param1, 14, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 9, HEAP_ID_25);
|
||||
param0->unk_1A0[0][2] = SpriteResourceCollection_AddFrom(param0->unk_190[2], param1, 44, 0, 1, 2, HEAP_ID_25);
|
||||
param0->unk_1A0[0][3] = SpriteResourceCollection_AddFrom(param0->unk_190[3], param1, 46, 0, 1, 3, HEAP_ID_25);
|
||||
param0->unk_1A0[0][0] = SpriteResourceCollection_AddTilesFrom(param0->unk_190[0], param1, 33, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
param0->unk_1A0[0][1] = SpriteResourceCollection_AddPaletteFrom(param0->unk_190[1], param1, 14, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 9, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
param0->unk_1A0[0][2] = SpriteResourceCollection_AddFrom(param0->unk_190[2], param1, 44, 0, 1, 2, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
param0->unk_1A0[0][3] = SpriteResourceCollection_AddFrom(param0->unk_190[3], param1, 46, 0, 1, 3, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
SpriteTransfer_RequestChar(param0->unk_1A0[0][0]);
|
||||
SpriteTransfer_RequestPlttWholeRange(param0->unk_1A0[0][1]);
|
||||
|
|
@ -119,7 +119,7 @@ void ov71_0223D070(UnkStruct_ov71_0223D238 *param0, const u8 *param1)
|
|||
v3.affineZRotation = 0;
|
||||
v3.priority = 2;
|
||||
v3.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
||||
v3.heapID = HEAP_ID_25;
|
||||
v3.heapID = HEAP_ID_TRAINER_CARD_SCREEN;
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
v3.position.x = FX32_ONE * Unk_ov71_0223D73C[v0].unk_00;
|
||||
|
|
@ -223,7 +223,7 @@ static void ov71_0223D2F4(void)
|
|||
CharTransfer_Init(&v0);
|
||||
}
|
||||
|
||||
PlttTransfer_Init(2, HEAP_ID_25);
|
||||
PlttTransfer_Init(2, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
CharTransfer_ClearBuffers();
|
||||
PlttTransfer_Clear();
|
||||
}
|
||||
|
|
|
|||
372
src/overlay071/trainer_card_display_text.c
Normal file
372
src/overlay071/trainer_card_display_text.c
Normal file
|
|
@ -0,0 +1,372 @@
|
|||
#include "overlay071/trainer_card_display_text.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/heap.h"
|
||||
|
||||
#include "overlay071/struct_ov71_0223B620.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "font.h"
|
||||
#include "message.h"
|
||||
#include "play_time.h"
|
||||
#include "strbuf.h"
|
||||
#include "string_template.h"
|
||||
#include "text.h"
|
||||
#include "trainer_card.h"
|
||||
|
||||
#include "res/text/bank/trainer_card.h"
|
||||
|
||||
#define TRAINER_CARD_WINDOW_PARTIAL_WIDTH 17
|
||||
#define TRAINER_CARD_WINDOW_FULL_WIDTH 28
|
||||
#define TRAINER_CARD_WINDOW_HEIGHT 2
|
||||
|
||||
static void TrainerCard_DrawNumber(Window *window, const u32 windowWidth, const u32 endXOffset, const u32 yOffset, Strbuf *strbuf, const u32 num, const u8 maxDigits, enum PaddingMode paddingMode);
|
||||
static void TrainerCard_DrawString(Window *window, const u32 windowWidth, const u32 endXOffset, const u32 yOffset, const Strbuf *strbuf);
|
||||
|
||||
static const WindowTemplate sTrainerCardWindowTemplates[] = {
|
||||
[TRAINER_CARD_WINDOW_ID] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 4,
|
||||
.width = TRAINER_CARD_WINDOW_PARTIAL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x6F,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_NAME] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 6,
|
||||
.width = TRAINER_CARD_WINDOW_PARTIAL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x91,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_MONEY] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 9,
|
||||
.width = TRAINER_CARD_WINDOW_PARTIAL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0xB3,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_POKEDEX] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 12,
|
||||
.width = TRAINER_CARD_WINDOW_PARTIAL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0xD5,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_SCORE] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
.width = TRAINER_CARD_WINDOW_PARTIAL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0xF7,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_TIME] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 18,
|
||||
.width = TRAINER_CARD_WINDOW_FULL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x119,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_ADVENTURE_STARTED] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 20,
|
||||
.width = TRAINER_CARD_WINDOW_FULL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x151,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_HOF_DEBUT] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = TRAINER_CARD_WINDOW_FULL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT * 2,
|
||||
.palette = 15,
|
||||
.baseTile = 0xC1,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_TIMES_LINKED] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 7,
|
||||
.width = TRAINER_CARD_WINDOW_FULL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x131,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_LINK_BATTLES] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 9,
|
||||
.width = TRAINER_CARD_WINDOW_FULL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x169,
|
||||
},
|
||||
[TRAINER_CARD_WINDOW_LINK_TRADES] = {
|
||||
.bgLayer = BG_LAYER_SUB_3,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 11,
|
||||
.width = TRAINER_CARD_WINDOW_FULL_WIDTH,
|
||||
.height = TRAINER_CARD_WINDOW_HEIGHT,
|
||||
.palette = 15,
|
||||
.baseTile = 0x1A1,
|
||||
}
|
||||
};
|
||||
|
||||
void TrainerCard_AddWindows(BgConfig *bgConfig, Window *windows)
|
||||
{
|
||||
u8 i;
|
||||
const WindowTemplate *templates = sTrainerCardWindowTemplates;
|
||||
|
||||
for (i = 0; i < TRAINER_CARD_WINDOW_COUNT; i++) {
|
||||
Window_AddFromTemplate(bgConfig, &windows[i], &templates[i]);
|
||||
}
|
||||
|
||||
Bg_FillTilesRange(bgConfig, BG_LAYER_SUB_3, 0, 1, 0);
|
||||
}
|
||||
|
||||
void TrainerCard_RemoveWindows(Window *windows)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < TRAINER_CARD_WINDOW_COUNT; i++) {
|
||||
Window_Remove(&windows[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static const int sTrainerCardTextFields[] = {
|
||||
TrainerCard_Text_IDNo,
|
||||
TrainerCard_Text_Name,
|
||||
TrainerCard_Text_Money,
|
||||
TrainerCard_Text_Pokedex,
|
||||
TrainerCard_Text_Score,
|
||||
TrainerCard_Text_Time,
|
||||
TrainerCard_Text_AdventureStarted,
|
||||
TrainerCard_Text_HallOfFameDebut,
|
||||
TrainerCard_Text_TimesLinked,
|
||||
TrainerCard_Text_LinkBattles,
|
||||
TrainerCard_Text_LinkTrades
|
||||
};
|
||||
|
||||
void TrainerCard_DrawFrontText(Window *windows, const TrainerCard *trainerCard)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_ID], 0, 0, 0, TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_NAME], 0, 0, 0, TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_MONEY], 0, 0, 0, TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_POKEDEX], 0, 0, 0, TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_SCORE], 0, 0, 0, TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_TIME], 0, 0, 0, TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_ADVENTURE_STARTED], 0, 0, 0, TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
|
||||
MessageLoader *messageLoader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_TRAINER_CARD, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Strbuf *strbuf = Strbuf_Init(32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
for (i = TRAINER_CARD_WINDOW_ID; i < TRAINER_CARD_WINDOW_HOF_DEBUT; i++) {
|
||||
if (i != TRAINER_CARD_WINDOW_POKEDEX || i == TRAINER_CARD_WINDOW_POKEDEX && trainerCard->pokedexObtained) {
|
||||
MessageLoader_GetStrbuf(messageLoader, sTrainerCardTextFields[i], strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[i], FONT_SYSTEM, strbuf, 0, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
}
|
||||
|
||||
Strbuf *fmtString = Strbuf_Init(32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
StringTemplate *template = StringTemplate_New(6, 32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
TrainerCard_DrawNumber(&windows[TRAINER_CARD_WINDOW_ID], TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, 0, 0, strbuf, trainerCard->id, 5, PADDING_MODE_ZEROES);
|
||||
Strbuf_CopyChars(strbuf, trainerCard->name);
|
||||
TrainerCard_DrawString(&windows[TRAINER_CARD_WINDOW_NAME], TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, 0, 0, strbuf);
|
||||
|
||||
StringTemplate_SetNumber(template, 5, trainerCard->money, 6, PADDING_MODE_NONE, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_Money, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
|
||||
u32 xOffset = TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_MONEY], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
if (trainerCard->pokedexObtained) {
|
||||
StringTemplate_SetNumber(template, 5, trainerCard->seenPokemon, 3, PADDING_MODE_NONE, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_Number_1, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
|
||||
xOffset = TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_POKEDEX], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
TrainerCard_DrawNumber(&windows[TRAINER_CARD_WINDOW_SCORE], TRAINER_CARD_WINDOW_PARTIAL_WIDTH * TILE_WIDTH_PIXELS, 0, 0, strbuf, trainerCard->score, 9, PADDING_MODE_SPACES);
|
||||
|
||||
if (trainerCard->unk_04_1) {
|
||||
StringTemplate_SetNumber(template, 0, PlayTime_GetHours(trainerCard->playTime), 3, PADDING_MODE_SPACES, CHARSET_MODE_EN);
|
||||
StringTemplate_SetNumber(template, 1, PlayTime_GetMinutes(trainerCard->playTime), 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_HHMMWithoutColon, fmtString);
|
||||
} else {
|
||||
StringTemplate_SetNumber(template, 0, trainerCard->playTimeHours, 3, PADDING_MODE_SPACES, CHARSET_MODE_EN);
|
||||
StringTemplate_SetNumber(template, 1, trainerCard->playTimeMinutes, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_HHMMWithColon, fmtString);
|
||||
}
|
||||
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_TIME], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
StringTemplate_SetNumber(template, 2, trainerCard->adventureStartedYear, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
StringTemplate_SetMonthName(template, 3, trainerCard->adventureStartedMonth);
|
||||
StringTemplate_SetNumber(template, 4, trainerCard->adventureStartedDay, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_MMDD20YY, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
|
||||
xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_ADVENTURE_STARTED], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
Strbuf_Free(fmtString);
|
||||
StringTemplate_Free(template);
|
||||
|
||||
Strbuf_Free(strbuf);
|
||||
MessageLoader_Free(messageLoader);
|
||||
}
|
||||
|
||||
void TrainerCard_DrawBackText(Window *windows, const TrainerCard *trainerCard)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_HOF_DEBUT], 0, 0, 0, TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, (TRAINER_CARD_WINDOW_HEIGHT * 2) * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_TIMES_LINKED], 0, 0, 0, TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_LINK_BATTLES], 0, 0, 0, TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_LINK_TRADES], 0, 0, 0, TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
|
||||
MessageLoader *messageLoader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_TRAINER_CARD, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Strbuf *strbuf = Strbuf_Init(32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
for (i = TRAINER_CARD_WINDOW_HOF_DEBUT; i < TRAINER_CARD_WINDOW_COUNT; i++) {
|
||||
MessageLoader_GetStrbuf(messageLoader, sTrainerCardTextFields[i], strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[i], FONT_SYSTEM, strbuf, 0, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
Strbuf *fmtString = Strbuf_Init(32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
StringTemplate *template = StringTemplate_New(6, 32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
if (trainerCard->hofDebutMonth != 0) {
|
||||
StringTemplate_SetNumber(template, 2, trainerCard->hofDebutYear, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
StringTemplate_SetMonthName(template, 3, trainerCard->hofDebutMonth);
|
||||
StringTemplate_SetNumber(template, 4, trainerCard->hofDebutDay, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
StringTemplate_SetNumber(template, 0, trainerCard->hofDebutHour, 3, PADDING_MODE_SPACES, CHARSET_MODE_EN);
|
||||
StringTemplate_SetNumber(template, 1, trainerCard->hofDebutMinute, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_MMDD20YY, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
} else {
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_TwoDashes, fmtString);
|
||||
StringTemplate_SetStrbuf(template, 0, fmtString, 0, FALSE, GAME_LANGUAGE);
|
||||
StringTemplate_SetStrbuf(template, 1, fmtString, 0, FALSE, GAME_LANGUAGE);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_BlankDate, strbuf);
|
||||
}
|
||||
|
||||
u32 xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_HOF_DEBUT], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_HHMMWithColon, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_HOF_DEBUT], FONT_SYSTEM, strbuf, xOffset, 16, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
StringTemplate_SetNumber(template, 5, trainerCard->timesLinked, 6, PADDING_MODE_NONE, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_Number_2, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_TIMES_LINKED], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_W, strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_LINK_BATTLES], FONT_SYSTEM, strbuf, 14 * TILE_WIDTH_PIXELS, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
TrainerCard_DrawNumber(&windows[TRAINER_CARD_WINDOW_LINK_BATTLES], TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, 0, 0, strbuf, trainerCard->linkBattleLosses, 4, PADDING_MODE_SPACES);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_L, strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_LINK_BATTLES], FONT_SYSTEM, strbuf, 22 * TILE_WIDTH_PIXELS, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
TrainerCard_DrawNumber(&windows[TRAINER_CARD_WINDOW_LINK_BATTLES], TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS, 8 * TILE_WIDTH_PIXELS, 0, strbuf, trainerCard->linkBattleWins, 4, PADDING_MODE_SPACES);
|
||||
|
||||
StringTemplate_SetNumber(template, 5, trainerCard->linkTrades, 6, PADDING_MODE_NONE, CHARSET_MODE_EN);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_Number_2, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(0, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_LINK_TRADES], FONT_SYSTEM, strbuf, xOffset, 0, 0, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
Strbuf_Free(fmtString);
|
||||
StringTemplate_Free(template);
|
||||
Strbuf_Free(strbuf);
|
||||
MessageLoader_Free(messageLoader);
|
||||
}
|
||||
|
||||
void TrainerCard_ClearWindows(Window *windows, const u8 start, const u8 end)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = start; i <= end; i++) {
|
||||
Window_ClearAndCopyToVRAM(&windows[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void TrainerCard_DrawNumber(Window *window, const u32 windowWidth, const u32 endXOffset, const u32 yOffset, Strbuf *strbuf, const u32 num, const u8 maxDigits, enum PaddingMode paddingMode)
|
||||
{
|
||||
Strbuf_FormatInt(strbuf, num, maxDigits, paddingMode, CHARSET_MODE_EN);
|
||||
u32 width = Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, strbuf, windowWidth - (width + endXOffset), yOffset, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
static void TrainerCard_DrawString(Window *window, const u32 windowWidth, const u32 endXOffset, const u32 yOffset, const Strbuf *strbuf)
|
||||
{
|
||||
u32 width = Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, strbuf, windowWidth - (width + endXOffset), yOffset, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
void TrainerCard_DrawUpdatedTime(Window *windows, const TrainerCard *trainerCard, Strbuf *unused)
|
||||
{
|
||||
GF_ASSERT(trainerCard->playTime != NULL);
|
||||
|
||||
int hoursUnused = PlayTime_GetHours(trainerCard->playTime);
|
||||
|
||||
if (hoursUnused > PLAYTIME_MAX_HOURS) {
|
||||
hoursUnused = PLAYTIME_MAX_HOURS;
|
||||
}
|
||||
|
||||
Window_FillRectWithColor(&windows[TRAINER_CARD_WINDOW_TIME], 0, 184, 0, 5 * TILE_WIDTH_PIXELS, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
|
||||
MessageLoader *messageLoader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_TRAINER_CARD, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Strbuf *strbuf = Strbuf_Init(32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
Strbuf *fmtString = Strbuf_Init(32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
StringTemplate *template = StringTemplate_New(2, 32, HEAP_ID_TRAINER_CARD_SCREEN);
|
||||
|
||||
StringTemplate_SetNumber(template, 0, PlayTime_GetHours(trainerCard->playTime), 3, 1, 1);
|
||||
StringTemplate_SetNumber(template, 1, PlayTime_GetMinutes(trainerCard->playTime), 2, 2, 1);
|
||||
MessageLoader_GetStrbuf(messageLoader, TrainerCard_Text_Format_HHMMWithoutColon, fmtString);
|
||||
StringTemplate_Format(template, strbuf, fmtString);
|
||||
u32 xOffset = TRAINER_CARD_WINDOW_FULL_WIDTH * TILE_WIDTH_PIXELS - Font_CalcStrbufWidth(FONT_SYSTEM, strbuf, 0);
|
||||
Text_AddPrinterWithParamsAndColor(&windows[TRAINER_CARD_WINDOW_TIME], FONT_SYSTEM, strbuf, xOffset, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
MessageLoader_Free(messageLoader);
|
||||
Strbuf_Free(strbuf);
|
||||
Strbuf_Free(fmtString);
|
||||
StringTemplate_Free(template);
|
||||
}
|
||||
|
||||
void TrainerCard_BlinkPlaytimeColon(Window *window, const BOOL showColon, Strbuf *strbuf)
|
||||
{
|
||||
if (showColon) {
|
||||
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, strbuf, 205, 0, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
} else {
|
||||
Window_FillRectWithColor(window, 0, 205, 0, 5, TRAINER_CARD_WINDOW_HEIGHT * TILE_HEIGHT_PIXELS);
|
||||
Window_CopyToVRAM(window);
|
||||
}
|
||||
}
|
||||
|
|
@ -48,9 +48,9 @@
|
|||
#include "text.h"
|
||||
#include "touch_pad.h"
|
||||
#include "touch_screen.h"
|
||||
#include "trainer_card_save_data.h"
|
||||
#include "unk_02012744.h"
|
||||
#include "unk_02015920.h"
|
||||
#include "unk_0202C7FC.h"
|
||||
#include "vram_transfer.h"
|
||||
|
||||
static void inline_ov72_0223E2A4(UnkStruct_ov72_0223DB98 *param0, int param1);
|
||||
|
|
@ -137,7 +137,7 @@ int ov72_0223D7A0(ApplicationManager *appMan, int *param1)
|
|||
{
|
||||
SaveData *saveData = (SaveData *)ApplicationManager_Args(appMan);
|
||||
|
||||
v0->unk_5BFC = (u8 *)sub_0202C840(sub_0202C834(saveData));
|
||||
v0->unk_5BFC = (u8 *)TrainerCardSaveData_GetSignature(SaveData_GetTrainerCardSaveData(saveData));
|
||||
v0->records = (GameRecords *)SaveData_GetGameRecords((SaveData *)ApplicationManager_Args(appMan));
|
||||
v0->options = SaveData_GetOptions((SaveData *)ApplicationManager_Args(appMan));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2505,7 +2505,7 @@ static void ov88_0223E694(Party *param0, Party *param1, int param2, int param3,
|
|||
Pokemon_Copy(v1, Party_GetPokemonBySlotIndex(param0, param2));
|
||||
Pokemon_Copy(v0, Party_GetPokemonBySlotIndex(param1, param3));
|
||||
ov88_0223E7F0(param4->unk_1C, v1);
|
||||
GameRecords_IncrementRecordValue(param4->records, RECORD_UNK_019);
|
||||
GameRecords_IncrementRecordValue(param4->records, RECORD_LOCAL_LINK_TRADES);
|
||||
Heap_FreeToHeap(v0);
|
||||
Heap_FreeToHeap(v1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -656,7 +656,7 @@ static int ov94_022431F0(UnkStruct_ov94_0223FD4C *param0)
|
|||
ov94_02243E2C(param0->unk_00->wiFiHistory, ¶m0->unk_A4C);
|
||||
GameRecords_IncrementTrainerScore(param0->unk_00->records, TRAINER_SCORE_EVENT_UNK_25);
|
||||
ov94_02243E48(param0->unk_00->unk_2C, ¶m0->unk_A4C);
|
||||
GameRecords_IncrementRecordValue(param0->unk_00->records, RECORD_UNK_024);
|
||||
GameRecords_IncrementRecordValue(param0->unk_00->records, RECORD_WIFI_TRADES);
|
||||
sub_0206D104(SaveData_GetTVBroadcast(param0->unk_00->saveData));
|
||||
break;
|
||||
case -5:
|
||||
|
|
@ -929,7 +929,7 @@ static int ov94_02243658(UnkStruct_ov94_0223FD4C *param0)
|
|||
|
||||
GameRecords_IncrementTrainerScore(param0->unk_00->records, TRAINER_SCORE_EVENT_UNK_25);
|
||||
ov94_02243E48(param0->unk_00->unk_2C, ¶m0->unk_12C);
|
||||
GameRecords_IncrementRecordValue(param0->unk_00->records, RECORD_UNK_024);
|
||||
GameRecords_IncrementRecordValue(param0->unk_00->records, RECORD_WIFI_TRADES);
|
||||
|
||||
TVBroadcast *broadcast = SaveData_GetTVBroadcast(param0->unk_00->saveData);
|
||||
sub_0206D104(broadcast);
|
||||
|
|
|
|||
|
|
@ -2,12 +2,6 @@
|
|||
|
||||
#include <nitro.h>
|
||||
|
||||
#define SECONDS_PER_MINUTE 60
|
||||
#define MINUTES_PER_HOUR 60
|
||||
#define PLAYTIME_MAX_HOURS 999
|
||||
#define PLAYTIME_MAX_MINUTES (MINUTES_PER_HOUR - 1)
|
||||
#define PLAYTIME_MAX_SECONDS (SECONDS_PER_MINUTE - 1)
|
||||
|
||||
void PlayTime_Init(PlayTime *playTime)
|
||||
{
|
||||
playTime->hours = 0;
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@
|
|||
#include "savedata_misc.h"
|
||||
#include "special_encounter.h"
|
||||
#include "system_data.h"
|
||||
#include "trainer_card_save_data.h"
|
||||
#include "unk_02014D38.h"
|
||||
#include "unk_0202602C.h"
|
||||
#include "unk_0202854C.h"
|
||||
#include "unk_020298BC.h"
|
||||
#include "unk_0202ACE0.h"
|
||||
#include "unk_0202C7FC.h"
|
||||
#include "unk_0202C858.h"
|
||||
#include "unk_0202C9F4.h"
|
||||
#include "unk_0202CC64.h"
|
||||
|
|
@ -65,7 +65,7 @@ const SaveTableEntry gSaveTable[] = {
|
|||
{ SAVE_TABLE_ENTRY_POFFINS, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)PoffinCase_SaveSize, (SaveEntryInitFunc)PoffinCase_Init },
|
||||
{ SAVE_TABLE_ENTRY_RECORD_MIXED_RNG, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)RecordMixedRNG_SaveSize, (SaveEntryInitFunc)RecordMixedRNG_Init },
|
||||
{ SAVE_TABLE_ENTRY_JOURNAL, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)Journal_SaveSize, (SaveEntryInitFunc)Journal_Init10 },
|
||||
{ SAVE_TABLE_ENTRY_TRAINER_CARD, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)TrainerCard_SaveSize, (SaveEntryInitFunc)TrainerCard_Init },
|
||||
{ SAVE_TABLE_ENTRY_TRAINER_CARD, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)TrainerCardSaveData_Size, (SaveEntryInitFunc)TrainerCardSaveData_Init },
|
||||
{ SAVE_TABLE_ENTRY_GAME_RECORDS, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)GameRecords_SaveSize, (SaveEntryInitFunc)GameRecords_Init },
|
||||
{ SAVE_TABLE_ENTRY_SEAL_CASE, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)SealCase_SaveSize, (SaveEntryInitFunc)SealCase_Init },
|
||||
{ SAVE_TABLE_ENTRY_CHATOT, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)ChatotCry_SaveSize, (SaveEntryInitFunc)ChatotCry_Init },
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@
|
|||
#include "system_flags.h"
|
||||
#include "system_vars.h"
|
||||
#include "text.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_data.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_02014D38.h"
|
||||
|
|
@ -214,7 +215,6 @@
|
|||
#include "unk_0206CCB0.h"
|
||||
#include "unk_0206F314.h"
|
||||
#include "unk_02070428.h"
|
||||
#include "unk_02071D40.h"
|
||||
#include "unk_020722AC.h"
|
||||
#include "unk_0207DA28.h"
|
||||
#include "unk_02097B18.h"
|
||||
|
|
@ -7384,7 +7384,7 @@ static BOOL ScrCmd_2BE(ScriptContext *ctx)
|
|||
FieldSystem *fieldSystem = ctx->fieldSystem;
|
||||
u16 *v1 = ScriptContext_GetVarPointer(ctx);
|
||||
|
||||
*v1 = sub_02071F28(fieldSystem);
|
||||
*v1 = TrainerCard_CalculateStars(fieldSystem);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
#include "struct_defs/struct_0203D8AC.h"
|
||||
#include "struct_defs/struct_02068630.h"
|
||||
#include "struct_defs/struct_020708E0.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
#include "struct_defs/struct_02097728.h"
|
||||
#include "struct_defs/struct_02098C44.h"
|
||||
|
||||
|
|
@ -71,6 +70,7 @@
|
|||
#include "system_flags.h"
|
||||
#include "system_vars.h"
|
||||
#include "text.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_02014A84.h"
|
||||
#include "unk_0202D778.h"
|
||||
|
|
@ -85,7 +85,6 @@
|
|||
#include "unk_020683F4.h"
|
||||
#include "unk_0206B9D8.h"
|
||||
#include "unk_0207064C.h"
|
||||
#include "unk_02071D40.h"
|
||||
#include "unk_0207AE68.h"
|
||||
#include "unk_0207CB08.h"
|
||||
#include "unk_020972FC.h"
|
||||
|
|
@ -1355,9 +1354,9 @@ static BOOL StartMenu_TrainerCard(FieldTask *taskMan)
|
|||
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
StartMenu *menu = FieldTask_GetEnv(taskMan);
|
||||
|
||||
menu->taskData = sub_02071F04(HEAP_ID_FIELDMAP);
|
||||
menu->taskData = TrainerCard_New(HEAP_ID_FIELDMAP);
|
||||
|
||||
sub_02071D40(1, 1, 0, 0xff, fieldSystem, (TrainerCard *)menu->taskData);
|
||||
TrainerCard_Init(1, 1, 0, 0xff, fieldSystem, (TrainerCard *)menu->taskData);
|
||||
sub_0203E09C(fieldSystem, (TrainerCard *)menu->taskData);
|
||||
|
||||
menu->callback = sub_0203BF00;
|
||||
|
|
@ -1370,7 +1369,7 @@ static BOOL sub_0203BF00(FieldTask *taskMan)
|
|||
StartMenu *menu = FieldTask_GetEnv(taskMan);
|
||||
|
||||
sub_020721D4(fieldSystem, (TrainerCard *)menu->taskData);
|
||||
sub_02071F20((TrainerCard *)menu->taskData);
|
||||
TrainerCard_Free((TrainerCard *)menu->taskData);
|
||||
FieldSystem_StartFieldMap(fieldSystem);
|
||||
|
||||
menu->state = START_MENU_STATE_12;
|
||||
|
|
|
|||
281
src/trainer_card.c
Normal file
281
src/trainer_card.c
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
#include "trainer_card.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "generated/game_records.h"
|
||||
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/underground_record.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
|
||||
#include "charcode_util.h"
|
||||
#include "field_system.h"
|
||||
#include "field_task.h"
|
||||
#include "game_records.h"
|
||||
#include "heap.h"
|
||||
#include "play_time.h"
|
||||
#include "pokedex.h"
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "system_flags.h"
|
||||
#include "trainer_card_save_data.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_0202854C.h"
|
||||
#include "unk_0203061C.h"
|
||||
#include "unk_0203D1B8.h"
|
||||
#include "unk_020559DC.h"
|
||||
#include "unk_0205B33C.h"
|
||||
#include "vars_flags.h"
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
TrainerCard *unk_04;
|
||||
} UnkStruct_02072204;
|
||||
|
||||
static void sub_02072014(u8 param0, u8 gameVersion, u8 stars, u8 param3, u8 regionCode, TrainerCard *trainerCard);
|
||||
static void TrainerCard_SetTrainerInfo(u16 id, u8 gender, const u16 *name, u32 money, u32 seenPokemon, BOOL pokedexObtained, u32 score, TrainerCard *trainerCard);
|
||||
static void TrainerCard_SetDates(u8 gameCompleted, const PlayTime *playTime, const RTCDate *adventureStartedDate, const RTCDate *hofDebutDate, const RTCTime *hofDebutTime, u8 param5, TrainerCard *trainerCard);
|
||||
static void TrainerCard_SetLinkDataAndSignature(u32 param0, u32 param1, u32 param2, u32 param3, const u8 *param4, TrainerCard *trainerCard);
|
||||
static void sub_0207216C(TrainerInfo *param0, FieldSystem *fieldSystem, TrainerCard *trainerCard);
|
||||
static BOOL sub_02072230(FieldTask *param0);
|
||||
|
||||
void TrainerCard_Init(u8 param0, u8 param1, u8 param2, u8 param3, FieldSystem *fieldSystem, TrainerCard *trainerCard)
|
||||
{
|
||||
SaveData *saveData = FieldSystem_GetSaveData(fieldSystem);
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(saveData);
|
||||
GameRecords *gameRecords = SaveData_GetGameRecords(saveData);
|
||||
|
||||
trainerCard->unk_05 = param3;
|
||||
|
||||
sub_02072014(param0, GAME_VERSION, TrainerCard_CalculateStars(fieldSystem), param2, TrainerInfo_RegionCode(trainerInfo), trainerCard);
|
||||
|
||||
TrainerCard_SetTrainerInfo(TrainerInfo_ID_LowHalf(trainerInfo), TrainerInfo_Gender(trainerInfo), TrainerInfo_Name(trainerInfo), TrainerInfo_Money(trainerInfo), Pokedex_CountSeen(SaveData_GetPokedex(fieldSystem->saveData)), Pokedex_IsObtained(SaveData_GetPokedex(fieldSystem->saveData)), GameRecords_GetTrainerScore(gameRecords), trainerCard);
|
||||
|
||||
RTCDate adventureStartedDate;
|
||||
RTCDate firstCompletionDate;
|
||||
RTCTime firstCompletionTime;
|
||||
PlayTime *playTime = SaveData_GetPlayTime(saveData);
|
||||
|
||||
FieldSystem_GetStartTimestamp(fieldSystem, &adventureStartedDate, &firstCompletionTime);
|
||||
FieldSystem_GetFirstCompletionTimestamp(fieldSystem, &firstCompletionDate, &firstCompletionTime);
|
||||
TrainerCard_SetDates(SystemFlag_CheckGameCompleted(SaveData_GetVarsFlags(fieldSystem->saveData)), playTime, &adventureStartedDate, &firstCompletionDate, &firstCompletionTime, param1, trainerCard);
|
||||
|
||||
TrainerCardSaveData *tcSaveData = SaveData_GetTrainerCardSaveData(fieldSystem->saveData);
|
||||
u32 timesLinked = GameRecords_GetRecordValue(gameRecords, RECORD_UNK_091) + GameRecords_GetRecordValue(gameRecords, RECORD_LOCAL_LINK_TRADES) + GameRecords_GetRecordValue(gameRecords, RECORD_WIFI_TRADES) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_020) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_025) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_032);
|
||||
u32 linkBattleWins = GameRecords_GetRecordValue(gameRecords, RECORD_LOCAL_LINK_BATTLE_WINS) + GameRecords_GetRecordValue(gameRecords, RECORD_WIFI_BATTLE_WINS);
|
||||
u32 linkBattleLosses = GameRecords_GetRecordValue(gameRecords, RECORD_LOCAL_LINK_BATTLE_LOSSES) + GameRecords_GetRecordValue(gameRecords, RECORD_WIFI_BATTLE_LOSSES);
|
||||
u32 linkTrades = GameRecords_GetRecordValue(gameRecords, RECORD_LOCAL_LINK_TRADES) + GameRecords_GetRecordValue(gameRecords, RECORD_WIFI_TRADES);
|
||||
|
||||
TrainerCard_SetLinkDataAndSignature(timesLinked, linkBattleWins, linkBattleLosses, linkTrades, TrainerCardSaveData_GetSignature(tcSaveData), trainerCard);
|
||||
|
||||
sub_0207216C(trainerInfo, fieldSystem, trainerCard);
|
||||
|
||||
int i, checksum = 0;
|
||||
u8 *v15 = (u8 *)trainerCard;
|
||||
|
||||
for (i = 0; i < sizeof(TrainerCard); i++) {
|
||||
checksum ^= v15[i];
|
||||
}
|
||||
|
||||
trainerCard->checksum = checksum;
|
||||
|
||||
trainerCard->unk_66A = 0;
|
||||
}
|
||||
|
||||
TrainerCard *TrainerCard_New(u16 heapID)
|
||||
{
|
||||
TrainerCard *trainerCard = Heap_AllocFromHeap(heapID, sizeof(TrainerCard));
|
||||
|
||||
memset(trainerCard, 0, sizeof(TrainerCard));
|
||||
return trainerCard;
|
||||
}
|
||||
|
||||
void TrainerCard_Free(TrainerCard *trainerCard)
|
||||
{
|
||||
Heap_FreeToHeap(trainerCard);
|
||||
}
|
||||
|
||||
u8 TrainerCard_CalculateStars(FieldSystem *fieldSystem)
|
||||
{
|
||||
u8 trainerCardStars;
|
||||
|
||||
SaveData *saveData = FieldSystem_GetSaveData(fieldSystem);
|
||||
GameRecords *gameRecords = SaveData_GetGameRecords(saveData);
|
||||
VarsFlags *varsFlags = SaveData_GetVarsFlags(saveData);
|
||||
UndergroundRecord *undergroundRecord = SaveData_UndergroundRecord(saveData);
|
||||
BattleFrontier *frontier = SaveData_GetBattleFrontier(saveData);
|
||||
trainerCardStars = 0;
|
||||
|
||||
if (SystemFlag_CheckGameCompleted(varsFlags)) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if (Pokedex_NationalDexCompleted(SaveData_GetPokedex(saveData))) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if ((sub_02030698(frontier, 0, 0xff) >= 100) || (sub_02030698(frontier, 2, 0xff) >= 100) || (sub_02030698(frontier, 4, 0xff) >= 100) || (sub_02030698(frontier, 6, 0xff) >= 100) || (sub_02030698(frontier, 8, 0xff) >= 100)) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if (SystemFlag_CheckContestMaster(varsFlags, CONTEST_TYPE_COOL) || SystemFlag_CheckContestMaster(varsFlags, CONTEST_TYPE_CUTE) || SystemFlag_CheckContestMaster(varsFlags, CONTEST_TYPE_SMART) || SystemFlag_CheckContestMaster(varsFlags, CONTEST_TYPE_TOUGH) || SystemFlag_CheckContestMaster(varsFlags, CONTEST_TYPE_BEAUTY)) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if (UndergroundRecord_HasPlatBaseFlag(undergroundRecord) == TRUE) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
return trainerCardStars;
|
||||
}
|
||||
|
||||
static void sub_02072014(u8 param0, u8 gameVersion, u8 stars, u8 param3, u8 regionCode, TrainerCard *trainerCard)
|
||||
{
|
||||
trainerCard->unk_04_0 = param0;
|
||||
trainerCard->gameVersion = gameVersion;
|
||||
trainerCard->stars = stars;
|
||||
trainerCard->regionCode = regionCode;
|
||||
trainerCard->unk_02 = param3;
|
||||
}
|
||||
|
||||
static void TrainerCard_SetTrainerInfo(u16 id, u8 gender, const u16 *name, u32 money, u32 seenPokemon, BOOL pokedexObtained, u32 score, TrainerCard *trainerCard)
|
||||
{
|
||||
trainerCard->id = id;
|
||||
trainerCard->gender = gender;
|
||||
|
||||
CharCode_CopyNumChars(trainerCard->name, name, TRAINER_NAME_LEN + 1);
|
||||
|
||||
trainerCard->money = money;
|
||||
trainerCard->seenPokemon = seenPokemon;
|
||||
trainerCard->pokedexObtained = pokedexObtained;
|
||||
trainerCard->score = score;
|
||||
}
|
||||
|
||||
static void TrainerCard_SetDates(u8 gameCompleted, const PlayTime *playTime, const RTCDate *adventureStartedDate, const RTCDate *firstCompletionDate, const RTCTime *firstCompletionTime, const u8 param5, TrainerCard *trainerCard)
|
||||
{
|
||||
trainerCard->playTimeHours = PlayTime_GetHours(playTime);
|
||||
trainerCard->playTimeMinutes = PlayTime_GetMinutes(playTime);
|
||||
trainerCard->adventureStartedYear = adventureStartedDate->year;
|
||||
trainerCard->adventureStartedMonth = adventureStartedDate->month;
|
||||
trainerCard->adventureStartedDay = adventureStartedDate->day;
|
||||
|
||||
if (gameCompleted) {
|
||||
trainerCard->hofDebutYear = firstCompletionDate->year;
|
||||
trainerCard->hofDebutMonth = firstCompletionDate->month;
|
||||
trainerCard->hofDebutDay = firstCompletionDate->day;
|
||||
trainerCard->hofDebutHour = firstCompletionTime->hour;
|
||||
trainerCard->hofDebutMinute = firstCompletionTime->minute;
|
||||
} else {
|
||||
trainerCard->hofDebutYear = 0;
|
||||
trainerCard->hofDebutMonth = 0;
|
||||
trainerCard->hofDebutDay = 0;
|
||||
trainerCard->hofDebutHour = 0;
|
||||
trainerCard->hofDebutMinute = 0;
|
||||
}
|
||||
|
||||
trainerCard->unk_04_1 = param5;
|
||||
|
||||
if (param5) {
|
||||
trainerCard->playTime = playTime;
|
||||
} else {
|
||||
trainerCard->playTime = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void TrainerCard_SetLinkDataAndSignature(u32 timesLinked, u32 linkBattleWins, u32 linkBattleLosses, u32 linkTrades, const u8 *signature, TrainerCard *trainerCard)
|
||||
{
|
||||
trainerCard->timesLinked = timesLinked;
|
||||
|
||||
if (trainerCard->timesLinked > 999999) {
|
||||
trainerCard->timesLinked = 999999;
|
||||
}
|
||||
|
||||
trainerCard->linkBattleWins = linkBattleWins;
|
||||
trainerCard->linkBattleLosses = linkBattleLosses;
|
||||
|
||||
if (trainerCard->linkBattleWins > 9999) {
|
||||
trainerCard->linkBattleWins = 9999;
|
||||
}
|
||||
|
||||
if (trainerCard->linkBattleLosses > 9999) {
|
||||
trainerCard->linkBattleLosses = 9999;
|
||||
}
|
||||
|
||||
trainerCard->linkTrades = linkTrades;
|
||||
|
||||
if (trainerCard->linkTrades > 99999) {
|
||||
trainerCard->linkTrades = 99999;
|
||||
}
|
||||
|
||||
MI_CpuCopy8(signature, trainerCard->signature, 24 * 8 * 8);
|
||||
}
|
||||
|
||||
static void sub_0207216C(TrainerInfo *param0, FieldSystem *fieldSystem, TrainerCard *trainerCard)
|
||||
{
|
||||
u8 v0;
|
||||
TrainerCardSaveData *v1 = SaveData_GetTrainerCardSaveData(fieldSystem->saveData);
|
||||
TrainerCardBadge *v2 = TrainerCardSaveData_GetTrainerCardBadges(v1);
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
if (TrainerInfo_HasBadge(param0, v0)) {
|
||||
trainerCard->unk_48[v0].unk_00_0 = 1;
|
||||
} else {
|
||||
trainerCard->unk_48[v0].unk_00_0 = 0;
|
||||
}
|
||||
|
||||
trainerCard->unk_48[v0].unk_00_1 = TrainerCardBadge_GetCleanliness(v0, v2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_020721D4(FieldSystem *fieldSystem, const TrainerCard *trainerCard)
|
||||
{
|
||||
u8 v0;
|
||||
TrainerCardSaveData *v1 = SaveData_GetTrainerCardSaveData(fieldSystem->saveData);
|
||||
TrainerCardBadge *v2 = TrainerCardSaveData_GetTrainerCardBadges(v1);
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
TrainerCardBadge_SetCleanliness(v0, trainerCard->unk_48[v0].unk_00_1, v2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_02072204(FieldSystem *fieldSystem)
|
||||
{
|
||||
UnkStruct_02072204 *v0 = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELDMAP, sizeof(UnkStruct_02072204));
|
||||
|
||||
v0->unk_00 = 0;
|
||||
v0->unk_04 = (TrainerCard *)sub_0205C17C(fieldSystem->unk_7C);
|
||||
|
||||
FieldTask_InitCall(fieldSystem->task, sub_02072230, v0);
|
||||
}
|
||||
|
||||
static BOOL sub_02072230(FieldTask *param0)
|
||||
{
|
||||
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0);
|
||||
UnkStruct_02072204 *v1 = FieldTask_GetEnv(param0);
|
||||
|
||||
switch (v1->unk_00) {
|
||||
case 0:
|
||||
sub_0205C214(fieldSystem->unk_7C);
|
||||
v1->unk_00 = 1;
|
||||
case 1:
|
||||
if (v1->unk_04->unk_66A != 0) {
|
||||
v1->unk_00 = 10;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
sub_0203E09C(fieldSystem, v1->unk_04);
|
||||
v1->unk_00 = 11;
|
||||
break;
|
||||
case 11:
|
||||
if (!FieldSystem_IsRunningApplication(fieldSystem)) {
|
||||
sub_0205C1F0(fieldSystem->unk_7C);
|
||||
Heap_FreeToHeap(v1);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
50
src/trainer_card_save_data.c
Normal file
50
src/trainer_card_save_data.c
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#include "trainer_card_save_data.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
int TrainerCardSaveData_Size(void)
|
||||
{
|
||||
return sizeof(TrainerCardSaveData);
|
||||
}
|
||||
|
||||
void TrainerCardSaveData_Init(TrainerCardSaveData *tcSaveData)
|
||||
{
|
||||
memset(tcSaveData, 0, sizeof(TrainerCardSaveData));
|
||||
|
||||
int badgeID;
|
||||
TrainerCardBadge *badges;
|
||||
|
||||
badges = TrainerCardSaveData_GetTrainerCardBadges(tcSaveData);
|
||||
|
||||
for (badgeID = 0; badgeID < MAX_BADGES; badgeID++) {
|
||||
TrainerCardBadge_SetCleanliness(badgeID, 140, badges);
|
||||
}
|
||||
}
|
||||
|
||||
TrainerCardSaveData *SaveData_GetTrainerCardSaveData(SaveData *saveData)
|
||||
{
|
||||
return SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_TRAINER_CARD);
|
||||
}
|
||||
|
||||
u8 *TrainerCardSaveData_GetSignature(TrainerCardSaveData *tcSaveData)
|
||||
{
|
||||
return tcSaveData->signature;
|
||||
}
|
||||
|
||||
TrainerCardBadge *TrainerCardSaveData_GetTrainerCardBadges(TrainerCardSaveData *tcSaveData)
|
||||
{
|
||||
return tcSaveData->badges;
|
||||
}
|
||||
|
||||
int TrainerCardBadge_GetCleanliness(const u8 badgeID, TrainerCardBadge *badges)
|
||||
{
|
||||
return badges[badgeID].cleanliness;
|
||||
}
|
||||
|
||||
void TrainerCardBadge_SetCleanliness(const u8 badgeID, const int cleanliness, TrainerCardBadge *badges)
|
||||
{
|
||||
badges[badgeID].cleanliness = cleanliness;
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
#include "unk_0202C7FC.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
typedef struct UnkStruct_0202C844_t {
|
||||
int unk_00;
|
||||
} UnkStruct_0202C844;
|
||||
|
||||
typedef struct UnkStruct_0202C834_t {
|
||||
UnkStruct_0202C844 unk_00[8];
|
||||
u8 unk_20[1536];
|
||||
} UnkStruct_0202C834;
|
||||
|
||||
int TrainerCard_SaveSize(void)
|
||||
{
|
||||
return sizeof(UnkStruct_0202C834);
|
||||
}
|
||||
|
||||
void TrainerCard_Init(UnkStruct_0202C834 *param0)
|
||||
{
|
||||
memset(param0, 0, sizeof(UnkStruct_0202C834));
|
||||
|
||||
{
|
||||
int v0;
|
||||
UnkStruct_0202C844 *v1;
|
||||
|
||||
v1 = sub_0202C844(param0);
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
sub_0202C850(v0, 140, v1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_0202C834 *sub_0202C834(SaveData *saveData)
|
||||
{
|
||||
return SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_TRAINER_CARD);
|
||||
}
|
||||
|
||||
u8 *sub_0202C840(UnkStruct_0202C834 *param0)
|
||||
{
|
||||
return param0->unk_20;
|
||||
}
|
||||
|
||||
UnkStruct_0202C844 *sub_0202C844(UnkStruct_0202C834 *param0)
|
||||
{
|
||||
return param0->unk_00;
|
||||
}
|
||||
|
||||
int sub_0202C848(const u8 param0, UnkStruct_0202C844 *param1)
|
||||
{
|
||||
return param1[param0].unk_00;
|
||||
}
|
||||
|
||||
void sub_0202C850(const u8 param0, const int param1, UnkStruct_0202C844 *param2)
|
||||
{
|
||||
param2[param0].unk_00 = param1;
|
||||
}
|
||||
|
|
@ -9,7 +9,6 @@
|
|||
#include "struct_decls/struct_02029C68_decl.h"
|
||||
#include "struct_decls/struct_02029D04_decl.h"
|
||||
#include "struct_decls/struct_0202A750_decl.h"
|
||||
#include "struct_decls/struct_0202C834_decl.h"
|
||||
#include "struct_decls/struct_0207AE68_decl.h"
|
||||
#include "struct_decls/struct_0209747C_decl.h"
|
||||
#include "struct_defs/choose_starter_data.h"
|
||||
|
|
@ -31,7 +30,6 @@
|
|||
#include "struct_defs/struct_02042434.h"
|
||||
#include "struct_defs/struct_020684D0.h"
|
||||
#include "struct_defs/struct_0206BC70.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
#include "struct_defs/struct_0208737C.h"
|
||||
#include "struct_defs/struct_02097728.h"
|
||||
#include "struct_defs/struct_02098C44.h"
|
||||
|
|
@ -112,10 +110,11 @@
|
|||
#include "system_data.h"
|
||||
#include "system_flags.h"
|
||||
#include "system_vars.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_card_save_data.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_02017498.h"
|
||||
#include "unk_020298BC.h"
|
||||
#include "unk_0202C7FC.h"
|
||||
#include "unk_0202C858.h"
|
||||
#include "unk_0202D05C.h"
|
||||
#include "unk_0202D778.h"
|
||||
|
|
@ -1312,7 +1311,7 @@ void FieldSystem_LaunchChooseStarterApp(FieldSystem *fieldSystem, ChooseStarterD
|
|||
|
||||
void sub_0203E0D0(FieldSystem *fieldSystem)
|
||||
{
|
||||
UnkStruct_0202C834 *v0 = sub_0202C834(fieldSystem->saveData);
|
||||
TrainerCardSaveData *v0 = SaveData_GetTrainerCardSaveData(fieldSystem->saveData);
|
||||
|
||||
FS_EXTERN_OVERLAY(overlay72);
|
||||
|
||||
|
|
|
|||
|
|
@ -142,8 +142,8 @@ static void sub_02055B64(FieldSystem *fieldSystem, s32 param1, const RTCTime *rt
|
|||
|
||||
enum TimeOfDay FieldSystem_GetTimeOfDay(const FieldSystem *fieldSystem)
|
||||
{
|
||||
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
return TimeOfDayForHour(v0->time.hour);
|
||||
GameTime *gameTime = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
return TimeOfDayForHour(gameTime->time.hour);
|
||||
}
|
||||
|
||||
int FieldSystem_GetMonth(const FieldSystem *fieldSystem)
|
||||
|
|
@ -176,23 +176,23 @@ int FieldSystem_GetMinute(const FieldSystem *fieldSystem)
|
|||
return gameTime->time.minute;
|
||||
}
|
||||
|
||||
void sub_02055BF4(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2)
|
||||
void FieldSystem_GetStartTimestamp(const FieldSystem *fieldSystem, RTCDate *destDate, RTCTime *destTime)
|
||||
{
|
||||
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
RTC_ConvertSecondToDateTime(param1, param2, v0->startTimestamp);
|
||||
GameTime *gameTime = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
RTC_ConvertSecondToDateTime(destDate, destTime, gameTime->startTimestamp);
|
||||
}
|
||||
|
||||
void sub_02055C10(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2)
|
||||
void FieldSystem_GetFirstCompletionTimestamp(const FieldSystem *fieldSystem, RTCDate *destDate, RTCTime *destTime)
|
||||
{
|
||||
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
RTC_ConvertSecondToDateTime(param1, param2, v0->firstCompletionTimestamp);
|
||||
GameTime *gameTime = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
RTC_ConvertSecondToDateTime(destDate, destTime, gameTime->firstCompletionTimestamp);
|
||||
}
|
||||
|
||||
void FieldSystem_RecordFirstCompletion(const FieldSystem *fieldSystem)
|
||||
{
|
||||
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
GameTime *gameTime = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
|
||||
v0->firstCompletionTimestamp = GetTimestamp();
|
||||
gameTime->firstCompletionTimestamp = GetTimestamp();
|
||||
}
|
||||
|
||||
BOOL FieldSystem_HasPenalty(FieldSystem *fieldSystem)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
#include "struct_defs/struct_02098C44.h"
|
||||
|
||||
#include "applications/pokemon_summary_screen/main.h"
|
||||
|
|
@ -37,6 +36,7 @@
|
|||
#include "string_template.h"
|
||||
#include "system.h"
|
||||
#include "text.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_0202602C.h"
|
||||
#include "unk_0202D778.h"
|
||||
|
|
@ -1012,7 +1012,7 @@ static BOOL sub_0205B140(FieldTask *param0)
|
|||
v1->unk_00 = Strbuf_Init((100 * 2), HEAP_ID_FIELD);
|
||||
v1->unk_04 = Strbuf_Init((100 * 2), HEAP_ID_FIELD);
|
||||
|
||||
MessageLoader_GetStrbuf(v1->unk_1C, 2 + v2->unk_03, v1->unk_00);
|
||||
MessageLoader_GetStrbuf(v1->unk_1C, 2 + v2->stars, v1->unk_00);
|
||||
StringTemplate_SetPlayerName(v1->unk_18, 0, CommInfo_TrainerInfo(v1->unk_24));
|
||||
StringTemplate_Format(v1->unk_18, v1->unk_04, v1->unk_00);
|
||||
FieldMessage_AddWindow(fieldSystem->bgConfig, &v1->unk_08, 3);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
#include "struct_defs/sentence.h"
|
||||
#include "struct_defs/struct_0203330C.h"
|
||||
#include "struct_defs/struct_0205B4F8.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
|
||||
|
|
@ -26,13 +25,13 @@
|
|||
#include "string_template.h"
|
||||
#include "sys_task.h"
|
||||
#include "sys_task_manager.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_02014A84.h"
|
||||
#include "unk_02014D38.h"
|
||||
#include "unk_02033200.h"
|
||||
#include "unk_020366A0.h"
|
||||
#include "unk_0205C980.h"
|
||||
#include "unk_02071D40.h"
|
||||
#include "unk_02095E98.h"
|
||||
#include "unk_02099500.h"
|
||||
|
||||
|
|
@ -1369,11 +1368,11 @@ static void sub_0205C160(UnkStruct_0205B43C *param0)
|
|||
|
||||
void *sub_0205C17C(UnkStruct_0205B43C *param0)
|
||||
{
|
||||
param0->unk_184 = sub_02071F04(HEAP_ID_SYSTEM);
|
||||
param0->unk_188[0] = sub_02071F04(HEAP_ID_SYSTEM);
|
||||
param0->unk_188[1] = sub_02071F04(HEAP_ID_SYSTEM);
|
||||
param0->unk_184 = TrainerCard_New(HEAP_ID_SYSTEM);
|
||||
param0->unk_188[0] = TrainerCard_New(HEAP_ID_SYSTEM);
|
||||
param0->unk_188[1] = TrainerCard_New(HEAP_ID_SYSTEM);
|
||||
|
||||
sub_02071D40(0, 0, 0, sub_0205CA14(TrainerInfo_Gender(param0->unk_08), TrainerInfo_Appearance(param0->unk_08), 0), param0->fieldSystem, param0->unk_184);
|
||||
TrainerCard_Init(0, 0, 0, sub_0205CA14(TrainerInfo_Gender(param0->unk_08), TrainerInfo_Appearance(param0->unk_08), 0), param0->fieldSystem, param0->unk_184);
|
||||
|
||||
return (void *)param0->unk_188[CommSys_CurNetId() ^ 1];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,28 +3,25 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_decls/struct_0202C834_decl.h"
|
||||
#include "struct_decls/struct_0202C844_decl.h"
|
||||
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "trainer_card_save_data.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_0202C7FC.h"
|
||||
|
||||
void sub_0206C2D0(SaveData *saveData, const s32 param1)
|
||||
{
|
||||
u8 v0;
|
||||
int v1;
|
||||
UnkStruct_0202C834 *v2;
|
||||
UnkStruct_0202C844 *v3;
|
||||
TrainerCardSaveData *v2;
|
||||
TrainerCardBadge *v3;
|
||||
TrainerInfo *v4;
|
||||
|
||||
if (param1 <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
v2 = sub_0202C834(saveData);
|
||||
v3 = sub_0202C844(v2);
|
||||
v2 = SaveData_GetTrainerCardSaveData(saveData);
|
||||
v3 = TrainerCardSaveData_GetTrainerCardBadges(v2);
|
||||
v4 = SaveData_GetTrainerInfo(saveData);
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
|
|
@ -32,7 +29,7 @@ void sub_0206C2D0(SaveData *saveData, const s32 param1)
|
|||
continue;
|
||||
}
|
||||
|
||||
v1 = sub_0202C848(v0, v3);
|
||||
v1 = TrainerCardBadge_GetCleanliness(v0, v3);
|
||||
|
||||
if ((0 < v1) && (v1 < 200)) {
|
||||
v1 -= (10 * param1);
|
||||
|
|
@ -45,6 +42,6 @@ void sub_0206C2D0(SaveData *saveData, const s32 param1)
|
|||
v1 = 0;
|
||||
}
|
||||
|
||||
sub_0202C850(v0, v1, v3);
|
||||
TrainerCardBadge_SetCleanliness(v0, v1, v3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,307 +0,0 @@
|
|||
#include "unk_02071D40.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "generated/game_records.h"
|
||||
|
||||
#include "struct_decls/struct_0202C834_decl.h"
|
||||
#include "struct_decls/struct_0202C844_decl.h"
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
#include "struct_defs/underground_record.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
|
||||
#include "charcode_util.h"
|
||||
#include "field_system.h"
|
||||
#include "field_task.h"
|
||||
#include "game_records.h"
|
||||
#include "heap.h"
|
||||
#include "play_time.h"
|
||||
#include "pokedex.h"
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "system_flags.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_0202854C.h"
|
||||
#include "unk_0202C7FC.h"
|
||||
#include "unk_0203061C.h"
|
||||
#include "unk_0203D1B8.h"
|
||||
#include "unk_020559DC.h"
|
||||
#include "unk_0205B33C.h"
|
||||
#include "vars_flags.h"
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
TrainerCard *unk_04;
|
||||
} UnkStruct_02072204;
|
||||
|
||||
static void sub_02072014(const u8 param0, const u8 param1, const u8 param2, const u8 param3, const u8 param4, TrainerCard *param5);
|
||||
static void sub_02072038(const u16 param0, const u8 param1, const u16 *param2, const u32 param3, const u32 param4, const BOOL param5, const u32 param6, TrainerCard *param7);
|
||||
static void sub_0207207C(const u8 param0, const PlayTime *playTime, const RTCDate *param2, const RTCDate *param3, const RTCTime *param4, const u8 param5, TrainerCard *param6);
|
||||
static void sub_02072120(const u32 param0, const u32 param1, const u32 param2, const u32 param3, const u8 *param4, TrainerCard *param5);
|
||||
static void sub_0207216C(TrainerInfo *param0, FieldSystem *fieldSystem, TrainerCard *param2);
|
||||
static BOOL sub_02072230(FieldTask *param0);
|
||||
|
||||
void sub_02071D40(const u8 param0, const u8 param1, const u8 param2, const u8 param3, FieldSystem *fieldSystem, TrainerCard *param5)
|
||||
{
|
||||
TrainerInfo *trainerInfo;
|
||||
GameRecords *gameRecords;
|
||||
SaveData *saveData = FieldSystem_GetSaveData(fieldSystem);
|
||||
trainerInfo = SaveData_GetTrainerInfo(saveData);
|
||||
gameRecords = SaveData_GetGameRecords(saveData);
|
||||
|
||||
param5->unk_05 = param3;
|
||||
|
||||
{
|
||||
u8 v3;
|
||||
|
||||
v3 = sub_02071F28(fieldSystem);
|
||||
sub_02072014(param0, GAME_VERSION, v3, param2, TrainerInfo_RegionCode(trainerInfo), param5);
|
||||
}
|
||||
|
||||
sub_02072038(TrainerInfo_ID_LowHalf(trainerInfo), TrainerInfo_Gender(trainerInfo), TrainerInfo_Name(trainerInfo), TrainerInfo_Money(trainerInfo), Pokedex_CountSeen(SaveData_GetPokedex(fieldSystem->saveData)), Pokedex_IsObtained(SaveData_GetPokedex(fieldSystem->saveData)), GameRecords_GetTrainerScore(gameRecords), param5);
|
||||
|
||||
{
|
||||
RTCDate v4;
|
||||
RTCDate v5;
|
||||
RTCTime v6;
|
||||
PlayTime *playTime;
|
||||
|
||||
playTime = SaveData_GetPlayTime(saveData);
|
||||
|
||||
sub_02055BF4(fieldSystem, &v4, &v6);
|
||||
sub_02055C10(fieldSystem, &v5, &v6);
|
||||
sub_0207207C(SystemFlag_CheckGameCompleted(SaveData_GetVarsFlags(fieldSystem->saveData)), playTime, &v4, &v5, &v6, param1, param5);
|
||||
}
|
||||
|
||||
{
|
||||
u32 v8, v9, v10, v11;
|
||||
UnkStruct_0202C834 *v12;
|
||||
|
||||
v12 = sub_0202C834(fieldSystem->saveData);
|
||||
v8 = GameRecords_GetRecordValue(gameRecords, RECORD_UNK_091) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_019) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_024) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_020) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_025) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_032);
|
||||
v9 = GameRecords_GetRecordValue(gameRecords, RECORD_UNK_021) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_026);
|
||||
v10 = GameRecords_GetRecordValue(gameRecords, RECORD_UNK_022) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_027);
|
||||
v11 = GameRecords_GetRecordValue(gameRecords, RECORD_UNK_019) + GameRecords_GetRecordValue(gameRecords, RECORD_UNK_024);
|
||||
|
||||
sub_02072120(v8, v9, v10, v11, sub_0202C840(v12), param5);
|
||||
}
|
||||
|
||||
sub_0207216C(trainerInfo, fieldSystem, param5);
|
||||
|
||||
{
|
||||
int v13, v14 = 0;
|
||||
u8 *v15 = (u8 *)param5;
|
||||
|
||||
for (v13 = 0; v13 < sizeof(TrainerCard); v13++) {
|
||||
v14 ^= v15[v13];
|
||||
}
|
||||
|
||||
param5->unk_668 = v14;
|
||||
}
|
||||
|
||||
param5->unk_66A = 0;
|
||||
}
|
||||
|
||||
TrainerCard *sub_02071F04(const u16 heapID)
|
||||
{
|
||||
TrainerCard *v0 = Heap_AllocFromHeap(heapID, sizeof(TrainerCard));
|
||||
|
||||
memset(v0, 0, sizeof(TrainerCard));
|
||||
return v0;
|
||||
}
|
||||
|
||||
void sub_02071F20(TrainerCard *param0)
|
||||
{
|
||||
Heap_FreeToHeap(param0);
|
||||
}
|
||||
|
||||
u8 sub_02071F28(FieldSystem *fieldSystem)
|
||||
{
|
||||
u8 trainerCardStars;
|
||||
SaveData *saveData;
|
||||
GameRecords *gameRecords;
|
||||
VarsFlags *varsFlags;
|
||||
UndergroundRecord *undergroundRecord;
|
||||
BattleFrontier *frontier;
|
||||
|
||||
saveData = FieldSystem_GetSaveData(fieldSystem);
|
||||
gameRecords = SaveData_GetGameRecords(saveData);
|
||||
varsFlags = SaveData_GetVarsFlags(saveData);
|
||||
undergroundRecord = SaveData_UndergroundRecord(saveData);
|
||||
frontier = SaveData_GetBattleFrontier(saveData);
|
||||
trainerCardStars = 0;
|
||||
|
||||
if (SystemFlag_CheckGameCompleted(varsFlags)) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if (Pokedex_NationalDexCompleted(SaveData_GetPokedex(saveData))) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if ((sub_02030698(frontier, 0, 0xff) >= 100) || (sub_02030698(frontier, 2, 0xff) >= 100) || (sub_02030698(frontier, 4, 0xff) >= 100) || (sub_02030698(frontier, 6, 0xff) >= 100) || (sub_02030698(frontier, 8, 0xff) >= 100)) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if (SystemFlag_CheckContestMaster(varsFlags, 0) || SystemFlag_CheckContestMaster(varsFlags, 1) || SystemFlag_CheckContestMaster(varsFlags, 3) || SystemFlag_CheckContestMaster(varsFlags, 4) || SystemFlag_CheckContestMaster(varsFlags, 2)) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
if (UndergroundRecord_HasPlatBaseFlag(undergroundRecord) == TRUE) {
|
||||
trainerCardStars++;
|
||||
}
|
||||
|
||||
return trainerCardStars;
|
||||
}
|
||||
|
||||
static void sub_02072014(const u8 param0, const u8 param1, const u8 param2, const u8 param3, const u8 param4, TrainerCard *param5)
|
||||
{
|
||||
param5->unk_04_0 = param0;
|
||||
param5->unk_00 = param1;
|
||||
param5->unk_03 = param2;
|
||||
param5->unk_01 = param4;
|
||||
param5->unk_02 = param3;
|
||||
}
|
||||
|
||||
static void sub_02072038(const u16 param0, const u8 param1, const u16 *param2, const u32 param3, const u32 param4, const BOOL param5, const u32 param6, TrainerCard *param7)
|
||||
{
|
||||
param7->unk_28 = param0;
|
||||
param7->unk_04_2 = param1;
|
||||
|
||||
CharCode_CopyNumChars(param7->unk_08, param2, 7 + 1);
|
||||
|
||||
param7->unk_1C = param3;
|
||||
param7->unk_20 = param4;
|
||||
param7->unk_04_3 = param5;
|
||||
param7->unk_24 = param6;
|
||||
}
|
||||
|
||||
static void sub_0207207C(const u8 param0, const PlayTime *playTime, const RTCDate *param2, const RTCDate *param3, const RTCTime *param4, const u8 param5, TrainerCard *trainerCard)
|
||||
{
|
||||
trainerCard->playTimeHours = PlayTime_GetHours(playTime);
|
||||
trainerCard->playTimeMinutes = PlayTime_GetMinutes(playTime);
|
||||
trainerCard->unk_2F = param2->year;
|
||||
trainerCard->unk_30 = param2->month;
|
||||
trainerCard->unk_31 = param2->day;
|
||||
|
||||
if (param0) {
|
||||
trainerCard->unk_32 = param3->year;
|
||||
trainerCard->unk_33 = param3->month;
|
||||
trainerCard->unk_34 = param3->day;
|
||||
trainerCard->unk_2C = param4->hour;
|
||||
trainerCard->unk_35 = param4->minute;
|
||||
} else {
|
||||
trainerCard->unk_32 = 0;
|
||||
trainerCard->unk_33 = 0;
|
||||
trainerCard->unk_34 = 0;
|
||||
trainerCard->unk_2C = 0;
|
||||
trainerCard->unk_35 = 0;
|
||||
}
|
||||
|
||||
trainerCard->unk_04_1 = param5;
|
||||
|
||||
if (param5) {
|
||||
trainerCard->playTime = playTime;
|
||||
} else {
|
||||
trainerCard->playTime = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_02072120(const u32 param0, const u32 param1, const u32 param2, const u32 param3, const u8 *param4, TrainerCard *param5)
|
||||
{
|
||||
param5->unk_38 = param0;
|
||||
|
||||
if (param5->unk_38 > 999999) {
|
||||
param5->unk_38 = 999999;
|
||||
}
|
||||
|
||||
param5->unk_3C = param1;
|
||||
param5->unk_40 = param2;
|
||||
|
||||
if (param5->unk_3C > 9999) {
|
||||
param5->unk_3C = 9999;
|
||||
}
|
||||
|
||||
if (param5->unk_40 > 9999) {
|
||||
param5->unk_40 = 9999;
|
||||
}
|
||||
|
||||
param5->unk_44 = param3;
|
||||
|
||||
if (param5->unk_44 > 99999) {
|
||||
param5->unk_44 = 99999;
|
||||
}
|
||||
|
||||
MI_CpuCopy8(param4, param5->unk_68, 24 * 8 * 8);
|
||||
}
|
||||
|
||||
static void sub_0207216C(TrainerInfo *param0, FieldSystem *fieldSystem, TrainerCard *param2)
|
||||
{
|
||||
u8 v0;
|
||||
UnkStruct_0202C834 *v1 = sub_0202C834(fieldSystem->saveData);
|
||||
UnkStruct_0202C844 *v2 = sub_0202C844(v1);
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
if (TrainerInfo_HasBadge(param0, v0)) {
|
||||
param2->unk_48[v0].unk_00_0 = 1;
|
||||
} else {
|
||||
param2->unk_48[v0].unk_00_0 = 0;
|
||||
}
|
||||
|
||||
param2->unk_48[v0].unk_00_1 = sub_0202C848(v0, v2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_020721D4(FieldSystem *fieldSystem, const TrainerCard *param1)
|
||||
{
|
||||
u8 v0;
|
||||
UnkStruct_0202C834 *v1 = sub_0202C834(fieldSystem->saveData);
|
||||
UnkStruct_0202C844 *v2 = sub_0202C844(v1);
|
||||
|
||||
for (v0 = 0; v0 < 8; v0++) {
|
||||
sub_0202C850(v0, param1->unk_48[v0].unk_00_1, v2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_02072204(FieldSystem *fieldSystem)
|
||||
{
|
||||
UnkStruct_02072204 *v0 = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELDMAP, sizeof(UnkStruct_02072204));
|
||||
|
||||
v0->unk_00 = 0;
|
||||
v0->unk_04 = (TrainerCard *)sub_0205C17C(fieldSystem->unk_7C);
|
||||
|
||||
FieldTask_InitCall(fieldSystem->task, sub_02072230, v0);
|
||||
}
|
||||
|
||||
static BOOL sub_02072230(FieldTask *param0)
|
||||
{
|
||||
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0);
|
||||
UnkStruct_02072204 *v1 = FieldTask_GetEnv(param0);
|
||||
|
||||
switch (v1->unk_00) {
|
||||
case 0:
|
||||
sub_0205C214(fieldSystem->unk_7C);
|
||||
v1->unk_00 = 1;
|
||||
case 1:
|
||||
if (v1->unk_04->unk_66A != 0) {
|
||||
v1->unk_00 = 10;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
sub_0203E09C(fieldSystem, v1->unk_04);
|
||||
v1->unk_00 = 11;
|
||||
break;
|
||||
case 11:
|
||||
if (!FieldSystem_IsRunningApplication(fieldSystem)) {
|
||||
sub_0205C1F0(fieldSystem->unk_7C);
|
||||
Heap_FreeToHeap(v1);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "struct_defs/struct_02039A58.h"
|
||||
#include "struct_defs/struct_02072014.h"
|
||||
|
||||
#include "overlay023/ov23_0223E140.h"
|
||||
#include "overlay023/ov23_022416A8.h"
|
||||
|
|
@ -18,6 +17,7 @@
|
|||
|
||||
#include "comm_player_manager.h"
|
||||
#include "field_comm_manager.h"
|
||||
#include "trainer_card.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_02032798.h"
|
||||
#include "unk_0204FA34.h"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user