Pokemon_New heap IDs

This commit is contained in:
Eduardo Quezada
2025-03-03 11:13:03 -03:00
parent cfbb0e1760
commit c2e5ee93bb
25 changed files with 60 additions and 49 deletions

View File

@@ -14,9 +14,15 @@ enum HeapId {
HEAP_ID_FIELDMAP = 11,
HEAP_ID_13 = 13,
HEAP_ID_COMMUNICATION = 15,
HEAP_ID_18 = 18,
HEAP_ID_POKEMON_SUMMARY_SCREEN = 19,
HEAP_ID_20 = 20,
HEAP_ID_26 = 26,
HEAP_ID_DISTORTION_WORLD_WARP = 30,
@@ -29,6 +35,11 @@ enum HeapId {
HEAP_ID_CHOOSE_STARTER_APP = 47,
HEAP_ID_53 = 53,
HEAP_ID_61 = 61,
HEAP_ID_62 = 62,
HEAP_ID_GAME_START = 77,
HEAP_ID_LIBRARY_TV = 120,

View File

@@ -821,7 +821,7 @@ static void JournalPrinter_PrintPlayedAtBattleFacility(JournalManager *journalMa
static void JournalPrinter_SetSpeciesName(JournalManager *journalManager, u16 species, u8 gender, u8 idx)
{
Pokemon *mon = Pokemon_New(42);
Pokemon *mon = Pokemon_New(HEAP_ID_JOURNAL);
sub_02074088(mon, species, 1, 32, gender, 0, 0);
StringTemplate_SetSpeciesName(journalManager->template, idx, Pokemon_GetBoxPokemon(mon));

View File

@@ -4207,7 +4207,7 @@ static void ov16_02261E8C(SysTask *param0, void *param1)
v7 = v0->unk_09;
}
v9 = Pokemon_New(5);
v9 = Pokemon_New(HEAP_ID_BATTLE);
for (i = 0; i < 6; i++) {
Party_AddPokemon(v0->unk_04->unk_00, v9);

View File

@@ -343,7 +343,7 @@ static void ov22_0225BC18(UnkStruct_ov22_0225B85C *param0)
sub_0202A524(param0->unk_04, v2);
StringTemplate_SetStrbuf(v1, 3, v2, v4, 1, GAME_LANGUAGE);
v5 = Pokemon_New(13);
v5 = Pokemon_New(HEAP_ID_13);
sub_0202A560(param0->unk_04, v5);
v6 = Pokemon_GetBoxPokemon(v5);
StringTemplate_SetNickname(v1, 4, v6);

View File

@@ -101,7 +101,7 @@ UnkStruct_ov87_021D106C *ov87_021D106C(UnkStruct_ov87_021D0D80 *param0, const Un
v0->unk_1F0 = StringTemplate_Default(61);
v0->unk_1F4 = Strbuf_Init(256, 61);
v0->unk_1F8 = Strbuf_Init(256, 61);
v0->unk_1FC = Pokemon_New(61);
v0->unk_1FC = Pokemon_New(HEAP_ID_61);
SetVBlankCallback(ov87_021D11AC, v0);
}

View File

@@ -2479,8 +2479,8 @@ static void ov88_0223E694(Party *param0, Party *param1, int param2, int param3,
{
Pokemon *v0, *v1;
v0 = Pokemon_New(26);
v1 = Pokemon_New(26);
v0 = Pokemon_New(HEAP_ID_26);
v1 = Pokemon_New(HEAP_ID_26);
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0, param2), v0);
Pokemon_Copy(Party_GetPokemonBySlotIndex(param1, param3), v1);

View File

@@ -792,7 +792,7 @@ static int ov94_02243398(UnkStruct_ov94_0223FD4C *param0)
param0->unk_36 = 0;
if (sub_0202DA60(param0->unk_00->unk_00)) {
Pokemon *v1 = Pokemon_New(62);
Pokemon *v1 = Pokemon_New(HEAP_ID_62);
sub_0202DA70(param0->unk_00->unk_00, v1);
StringTemplate_SetNickname(param0->unk_B8C, 0, Pokemon_GetBoxPokemon(v1));
@@ -812,7 +812,7 @@ static int ov94_02243398(UnkStruct_ov94_0223FD4C *param0)
param0->unk_36 = 0;
if (sub_0202DA60(param0->unk_00->unk_00)) {
Pokemon *v2 = Pokemon_New(62);
Pokemon *v2 = Pokemon_New(HEAP_ID_62);
sub_0202DA70(param0->unk_00->unk_00, v2);
StringTemplate_SetNickname(param0->unk_B8C, 0, Pokemon_GetBoxPokemon(v2));
@@ -1248,7 +1248,7 @@ static int ov94_02243AE8(UnkStruct_ov94_0223FD4C *param0)
static void ov94_02243B08(UnkStruct_ov94_0223FD4C *param0, int param1)
{
if (param0->unk_110 != 18) {
Pokemon *v0 = Pokemon_New(62);
Pokemon *v0 = Pokemon_New(HEAP_ID_62);
Pokemon_FromBoxPokemon(GetBoxedPokemonFrom(param0->unk_00->unk_0C, param0->unk_110, param0->unk_112), v0);
sub_0202DA7C(param0->unk_00->unk_00, v0, param0->unk_110);

View File

@@ -34,7 +34,7 @@ static const OverlayManagerTemplate Unk_ov94_0224636C = {
int ov94_022444C8(UnkStruct_ov94_0223FD4C *param0, int param1)
{
param0->unk_1104 = Pokemon_New(62);
param0->unk_1104 = Pokemon_New(HEAP_ID_62);
switch (param0->unk_24) {
case 7:
@@ -106,7 +106,7 @@ int ov94_02244678(UnkStruct_ov94_0223FD4C *param0, int param1)
}
} else if ((param0->unk_24 == 8) || (param0->unk_24 == 10)) {
Pokemon *v1 = ov94_022448AC(param0, param0->unk_24);
Pokemon *v5 = Pokemon_New(62);
Pokemon *v5 = Pokemon_New(HEAP_ID_62);
sub_0202DA70(param0->unk_00->unk_00, v5);

View File

@@ -1113,7 +1113,7 @@ void ov104_0222F7BC(int param0, int param1, void *param2, void *param3)
v0 = ov104_0223B7A8(v5->unk_10, 0);
v3 = Pokemon_StructSize();
v4 = Pokemon_New(11);
v4 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < v0; v1++) {
MI_CpuCopy8(&v6[v3 * v1], v4, v3);
@@ -1412,7 +1412,7 @@ void ov104_0222FB34(int param0, int param1, void *param2, void *param3)
v0 = ov104_0223BD70(v5->unk_10, 0);
v3 = Pokemon_StructSize();
v4 = Pokemon_New(11);
v4 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < v0; v1++) {
MI_CpuCopy8(&v6[v3 * v1], v4, v3);

View File

@@ -301,7 +301,7 @@ BOOL ov104_022334DC(UnkStruct_ov104_0222E930 *param0)
*v15 = v4->unk_3F0[v13].unk_04[v14];
break;
case 17:
v3 = Pokemon_New(11);
v3 = Pokemon_New(HEAP_ID_FIELDMAP);
ov104_0222DF40(&v4->unk_3F0[v13], v3, ov104_0223ADA0(v4));
*v15 = Pokemon_GetValue(v3, MON_DATA_TYPE_1, NULL);
Heap_FreeToHeap(v3);
@@ -313,7 +313,7 @@ BOOL ov104_022334DC(UnkStruct_ov104_0222E930 *param0)
v0[v10] = 0;
}
v3 = Pokemon_New(11);
v3 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v10 = 0; v10 < v5; v10++) {
ov104_0222DF40(&v4->unk_3F0[v10], v3, ov104_0223ADA0(v4));

View File

@@ -190,7 +190,7 @@ static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0)
}
for (v0 = 0; v0 < 6; v0++) {
v4 = Pokemon_New(11);
v4 = Pokemon_New(HEAP_ID_FIELDMAP);
ov104_0222DF40(&param0->unk_280[v0], v4, ov104_0223ADA0(param0));
ov104_0222E1C0(param0->unk_4F8, param0->unk_4D4, v4);
Heap_FreeToHeap(v4);
@@ -274,7 +274,7 @@ static void ov104_02233F1C(UnkStruct_ov104_0223ADA0 *param0)
ov104_0222E330(v4, v6, v5, v7, NULL, 4, 11, 179);
v1 = Pokemon_New(11);
v1 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < 4; v0++) {
ov104_0222DF40(&v4[v0], v1, ov104_0223ADA0(param0));
@@ -293,7 +293,7 @@ static void ov104_02233F1C(UnkStruct_ov104_0223ADA0 *param0)
ov104_0222E330(v4, v6, v5, v7, NULL, 4, 11, 179);
v1 = Pokemon_New(11);
v1 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < 4; v0++) {
ov104_0222DF40(&v4[v0], v1, ov104_0223ADA0(param0));
@@ -501,7 +501,7 @@ void ov104_0223449C(UnkStruct_ov104_0223ADA0 *param0)
Party_Init(param0->unk_4D4);
v3 = Pokemon_New(11);
v3 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v1; v0++) {
ov104_0222DF40(&param0->unk_280[param0->unk_4DC[v0]], v3, ov104_0223ADA0(param0));
@@ -592,7 +592,7 @@ void ov104_0223470C(UnkStruct_ov104_0223ADA0 *param0)
Party_Init(param0->unk_4D8);
v3 = Pokemon_New(11);
v3 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v2; v0++) {
ov104_0222DF40(&param0->unk_3F0[v0], v3, ov104_0223ADA0(param0));

View File

@@ -63,7 +63,7 @@ UnkStruct_ov104_0223B5C0 *ov104_02234DB4(SaveData *param0, u16 param1, u8 param2
v10->unk_6FC = param0;
v10->unk_00 = 11;
v10->unk_264 = Party_New(11);
v10->unk_D8C = Pokemon_New(11);
v10->unk_D8C = Pokemon_New(HEAP_ID_FIELDMAP);
v0 = v10->unk_6F8;
v1 = sub_0203026C(param0);

View File

@@ -232,7 +232,7 @@ static void ov104_022365F8(UnkStruct_ov104_0223BA10 *param0)
ov104_0222E330(v4, v6, v5, NULL, v7, 4, 11, 179);
v2 = Pokemon_New(11);
v2 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < 4; v1++) {
ov104_0222DF40(&v4[v1], v2, ov104_0223BA10(param0));

View File

@@ -303,7 +303,7 @@ static void ov104_02238114(UnkStruct_ov104_0223BFFC *param0)
ov104_0222E330(v4, v6, v5, NULL, v7, 4, 11, 179);
v2 = Pokemon_New(11);
v2 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < 4; v1++) {
ov104_0222DF40(&v4[v1], v2, ov104_0223BFFC(param0));

View File

@@ -364,7 +364,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
v4->terrain = TERRAIN_BATTLE_FACTORY;
Party_InitWithCapacity(v4->parties[0], v2);
v5 = Pokemon_New(11);
v5 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v2; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D4, v0), v5);
@@ -384,7 +384,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
v4->trainer[v0].header.aiMask = ov104_0223AEE4(param0);
}
v5 = Pokemon_New(11);
v5 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v3; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D8, v0), v5);
@@ -407,7 +407,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
ov104_0222E284(v4, &v6, v3, 3, 11);
Party_InitWithCapacity(v4->parties[3], ov104_0223AA74(param0->unk_04, 0));
v5 = Pokemon_New(11);
v5 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v3; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D8, (v3 + v0)), v5);
@@ -454,7 +454,7 @@ void ov104_0223ADB0(UnkStruct_ov104_0223ADA0 *param0)
ov104_0222E330(param0->unk_280, param0->unk_254, param0->unk_260, param0->unk_268, NULL, 6, 11, 179);
Party_Init(param0->unk_4D4);
v1 = Pokemon_New(11);
v1 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < 6; v0++) {
ov104_0222DF40(&param0->unk_280[v0], v1, ov104_0223ADA0(param0));
@@ -480,7 +480,7 @@ void ov104_0223AE30(UnkStruct_ov104_0223ADA0 *param0)
ov104_0222E330(v3, param0->unk_584, param0->unk_590, param0->unk_598, NULL, 2, 11, 179);
v2 = Pokemon_New(11);
v2 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < 2; v0++) {
ov104_0222DF40(&v3[v0], v2, ov104_0223ADA0(param0));

View File

@@ -1594,7 +1594,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
v8->terrain = TERRAIN_BATTLE_HALL;
Party_InitWithCapacity(v8->parties[0], v4);
v9 = Pokemon_New(11);
v9 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < v4; v1++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, param0->unk_260[v1]), v9);
@@ -1624,7 +1624,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
ov104_0223B518(&param0->unk_290[v6], v7, param0->unk_18[v6], &param0->unk_268[v6], v5, 11, 180);
v9 = Pokemon_New(11);
v9 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < v5; v1++) {
while (TRUE) {
@@ -1655,7 +1655,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
ov104_0222E284(v8, &v10, v5, 3, 11);
Party_InitWithCapacity(v8->parties[3], v5);
v9 = Pokemon_New(11);
v9 = Pokemon_New(HEAP_ID_FIELDMAP);
while (TRUE) {
if (ov104_0223B4A4(param0, v6) == 0) {

View File

@@ -185,7 +185,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
v4 = 2;
}
v6 = Pokemon_New(11);
v6 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v2; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_28, (v4 + v0)), v6);
@@ -206,7 +206,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
v5->trainer[v0].header.aiMask = ov104_0223BB10(param0);
}
v6 = Pokemon_New(11);
v6 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v3; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_2C, v0), v6);
@@ -229,7 +229,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
ov104_0222E284(v5, &v7, v3, 3, 11);
Party_InitWithCapacity(v5->parties[3], ov104_0223B7DC(param0->unk_10, 0));
v6 = Pokemon_New(11);
v6 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v3; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_2C, (v3 + v0)), v6);
@@ -324,7 +324,7 @@ void ov104_0223BAB8(UnkStruct_ov104_0223BA10 *param0)
Party_Init(param0->unk_2C);
v2 = ov104_0223B7DC(param0->unk_10, 1);
v3 = Pokemon_New(11);
v3 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v2; v0++) {
ov104_0222DF40(&param0->unk_288[v0], v3, ov104_0223BA10(param0));

View File

@@ -199,7 +199,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
v4 = 2;
}
v6 = Pokemon_New(11);
v6 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v2; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(v12, (v4 + v0)), v6);
@@ -219,7 +219,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
v5->trainer[v0].header.aiMask = ov104_0223C0D0(param0);
}
v6 = Pokemon_New(11);
v6 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v3; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, v0), v6);
@@ -242,7 +242,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
ov104_0222E284(v5, &v7, v3, 3, 11);
Party_InitWithCapacity(v5->parties[3], ov104_0223BDA4(param0->unk_10, 0));
v6 = Pokemon_New(11);
v6 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v0 = 0; v0 < v3; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, (v3 + v0)), v6);
@@ -316,7 +316,7 @@ void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0)
Party_Init(param0->unk_74);
v3 = ov104_0223BDA4(param0->unk_10, 1);
v5 = Pokemon_New(11);
v5 = Pokemon_New(HEAP_ID_FIELDMAP);
for (v1 = 0; v1 < v3; v1++) {
ov104_0222DF40(&param0->unk_330[v1], v5, ov104_0223BFFC(param0));

View File

@@ -4500,7 +4500,7 @@ static void BoxPokemon_CalcAbility(BoxPokemon *boxMon)
void sub_020780C4(Pokemon *mon, u32 monPersonality)
{
Pokemon *newMon = Pokemon_New(0);
Pokemon *newMon = Pokemon_New(HEAP_ID_SYSTEM);
Pokemon_Copy(mon, newMon);

View File

@@ -604,7 +604,7 @@ static void sub_0202FD30(UnkStruct_0202FD30 *param0, Party *party)
Pokemon *v1;
u8 v2 = 0;
v1 = Pokemon_New(11);
v1 = Pokemon_New(HEAP_ID_FIELDMAP);
Party_InitWithCapacity(party, param0->unk_00);

View File

@@ -275,7 +275,7 @@ static void sub_0204BAAC(FieldSystem *fieldSystem, void *param1)
u32 v16 = TrainerInfo_ID(v1);
u32 v17 = TrainerInfo_Gender(v1);
v6 = Pokemon_New(32);
v6 = Pokemon_New(HEAP_ID_FIELD_TASK);
Pokemon_Copy(v4, v6);
Pokemon_SetValue(v6, MON_DATA_OTNAME_STRBUF, v15);

View File

@@ -47,7 +47,7 @@ BOOL ScrCmd_253(ScriptContext *param0)
BOOL ScrCmd_254(ScriptContext *ctx)
{
PalParkTransfer *transferData = SaveData_PalParkTransfer(ctx->fieldSystem->saveData);
Pokemon *v1 = Pokemon_New(32);
Pokemon *v1 = Pokemon_New(HEAP_ID_FIELD_TASK);
u16 *destVar = ScriptContext_GetVarPointer(ctx);
if (GetPalParkTransferMonCount(transferData) == CATCHING_SHOW_MONS) {
@@ -64,7 +64,7 @@ BOOL ScrCmd_255(ScriptContext *param0)
{
PalParkTransfer *transferData = SaveData_PalParkTransfer(param0->fieldSystem->saveData);
PCBoxes *v1 = SaveData_PCBoxes(param0->fieldSystem->saveData);
Pokemon *v2 = Pokemon_New(32);
Pokemon *v2 = Pokemon_New(HEAP_ID_FIELD_TASK);
TrainerInfo *v3 = SaveData_GetTrainerInfo(param0->fieldSystem->saveData);
Pokedex *pokedex = SaveData_GetPokedex(param0->fieldSystem->saveData);
BOOL v5;

View File

@@ -1120,7 +1120,7 @@ static int sub_02086F3C(OverlayManager *param0, int *param1)
u16 v3[10 + 1];
Pokemon *v4;
v4 = Pokemon_New(18);
v4 = Pokemon_New(HEAP_ID_18);
Pokemon_InitWith(v4, v0->unk_04, 5, 10, 10, 10, 10, 10);
Heap_FreeToHeap(v4);
}
@@ -1398,7 +1398,7 @@ static void sub_0208737C(UnkStruct_02087A10 *param0, OverlayManager *param1)
if (param0->unk_00 == 1) {
Pokemon *v1;
v1 = Pokemon_New(18);
v1 = Pokemon_New(HEAP_ID_18);
Pokemon_InitWith(v1, param0->unk_04, 5, 10, 10, 10, 10, 10);
StringTemplate_SetSpeciesName(param0->unk_168, 0, Pokemon_GetBoxPokemon(v1));
Heap_FreeToHeap(v1);
@@ -1464,7 +1464,7 @@ static void sub_02087544(UnkStruct_02087A10 *param0, OverlayManager *param1)
}
if ((param0->unk_158 == 0) || sub_02086F14(param0->unk_D8)) {
Pokemon *v4 = Pokemon_New(18);
Pokemon *v4 = Pokemon_New(HEAP_ID_18);
Pokemon_InitWith(v4, param0->unk_04, 1, 0, 0, 0, 0, 0);
StringTemplate_SetSpeciesName(param0->unk_168, 0, Pokemon_GetBoxPokemon(v4));

View File

@@ -434,7 +434,7 @@ UnkStruct_02095C48 *sub_02093800(const UnkStruct_02093800 *param0)
v0->unk_148 = Party_New(20);
for (v2 = 0; v2 < 4; v2++) {
v0->unk_00.unk_00[v2] = Pokemon_New(20);
v0->unk_00.unk_00[v2] = Pokemon_New(HEAP_ID_20);
}
for (v2 = 0; v2 < 4; v2++) {

View File

@@ -91,7 +91,7 @@ static int sub_02097B18(OverlayManager *param0, int *param1)
v1 = OverlayManager_Args(param0);
v0->unk_00 = v1;
v0->unk_42C = NARC_ctor(NARC_INDEX_POKETOOL__POKE_EDIT__PL_POKE_DATA, 53);
v0->unk_428 = Pokemon_New(53);
v0->unk_428 = Pokemon_New(HEAP_ID_53);
v0->unk_D4.unk_00 = 0xFF;
v0->unk_418.unk_00 = 0;