mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Documentation of ereader helpers, 2
This commit is contained in:
parent
c46f271f67
commit
8db03ba6fa
@ -3,9 +3,10 @@
|
||||
|
||||
struct Unk81D38FC
|
||||
{
|
||||
u8 unk0[12];
|
||||
u8 unkC[0x148];
|
||||
u8 unk154[0x11C];
|
||||
u8 unk0;
|
||||
u8 filler_1[3];
|
||||
u8 unk4[0x148];
|
||||
u8 unk14C[0x124];
|
||||
int checksum;
|
||||
};
|
||||
|
||||
@ -38,7 +39,7 @@ struct Unk81D3998
|
||||
};
|
||||
|
||||
bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer);
|
||||
bool32 TryWriteTrainerHill(struct Unk81D38FC *arg0);
|
||||
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0);
|
||||
bool32 ReadTrainerHillAndValidate(void);
|
||||
int sub_81D3D70(u8, u32, u32*, u32*);
|
||||
void sub_81D3F9C(void);
|
||||
|
@ -38,7 +38,7 @@ IWRAM_DATA u16 gUnknown_030012F0;
|
||||
IWRAM_DATA u16 gUnknown_030012F2;
|
||||
IWRAM_DATA u16 gUnknown_030012F4;
|
||||
|
||||
extern const u8 gUnknown_08625B6C[];
|
||||
extern const u8 gUnknown_08625B6C[][0x148];
|
||||
|
||||
static u8 sub_81D38D4(void)
|
||||
{
|
||||
@ -47,7 +47,7 @@ static u8 sub_81D38D4(void)
|
||||
|
||||
static bool32 Struct_Unk81D38FC_ValidateChecksum(struct Unk81D38FC *arg0)
|
||||
{
|
||||
int checksum = CalcByteArraySum(arg0->unk0, 0x270);
|
||||
int checksum = CalcByteArraySum((u8 *)arg0, 0x270);
|
||||
if (checksum != arg0->checksum)
|
||||
return FALSE;
|
||||
|
||||
@ -89,56 +89,47 @@ static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 TryWriteTrainerHill_r(struct Unk81D38FC *arg0, u8 *buffer2)
|
||||
static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct Unk81D3998 *buffer2)
|
||||
{
|
||||
int i;
|
||||
const u8 *ereaderVals;
|
||||
|
||||
memset(buffer2, 0, 0x1000);
|
||||
buffer2[0] = arg0->unk0[0];
|
||||
buffer2[1] = sub_81D38D4();
|
||||
buffer2[2] = (arg0->unk0[0] + 1) / 2;
|
||||
buffer2->unk_000 = arg0->unk_0;
|
||||
buffer2->unk_001 = sub_81D38D4();
|
||||
buffer2->unk_002 = (arg0->unk_0 + 1) / 2;
|
||||
|
||||
for (i = 0; i < arg0->unk0[0]; i++)
|
||||
for (i = 0; i < arg0->unk_0; i++)
|
||||
{
|
||||
if (!(i & 1))
|
||||
{
|
||||
u8 *var0 = &buffer2[(i / 2) * 0x3B8];
|
||||
u8 *var1 = arg0[i].unk0;
|
||||
var0[8] = var1[8];
|
||||
memcpy(&var0[0x29C], &var1[0x154], 0x124);
|
||||
var0 += 0xC;
|
||||
var1 += 0xC;
|
||||
memcpy(var0, var1, 0x148);
|
||||
buffer2->unk_008[i / 2].unk_000[0] = arg0->unk_8[i].unk0;
|
||||
memcpy(buffer2->unk_008[i / 2].unk_294, arg0->unk_8[i].unk14C, 0x124);
|
||||
memcpy(buffer2->unk_008[i / 2].unk_004, arg0->unk_8[i].unk4, 0x148);
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 *var0 = &buffer2[(i / 2) * 0x3B8];
|
||||
u8 *var1 = arg0[i].unk0;
|
||||
var0[9] = var1[8];
|
||||
memcpy(&var0[0x154], &var1[0xC], 0x148);
|
||||
buffer2->unk_008[i / 2].unk_000[1] = arg0->unk_8[i].unk0;
|
||||
memcpy(buffer2->unk_008[i / 2].unk_14C, arg0->unk_8[i].unk4, 0x148);
|
||||
}
|
||||
}
|
||||
|
||||
if (i & 1)
|
||||
{
|
||||
u8 *var0 = &buffer2[(i / 2) * 0x3B8];
|
||||
var0 += 0x154;
|
||||
|
||||
ereaderVals = gUnknown_08625B6C;
|
||||
memcpy(var0, &ereaderVals[(i / 2) * 0x148], 0x148);
|
||||
u8 * dest = buffer2->unk_008[i / 2].unk_14C;
|
||||
const u8 (* src)[0x148] = gUnknown_08625B6C;
|
||||
memcpy(dest, src[i / 2], 0x148);
|
||||
}
|
||||
|
||||
((int *)buffer2)[1] = CalcByteArraySum(buffer2 + 8, 0xEE0);
|
||||
buffer2->checksum = CalcByteArraySum((u8 *)buffer2->unk_008, sizeof(struct Unk81D3998) - offsetof(struct Unk81D3998, unk_008));
|
||||
if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != 1)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 TryWriteTrainerHill(struct Unk81D38FC *arg0)
|
||||
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0)
|
||||
{
|
||||
u8 *var0 = AllocZeroed(0x1000);
|
||||
struct Unk81D3998 *var0 = AllocZeroed(0x1000);
|
||||
bool32 result = TryWriteTrainerHill_r(arg0, var0);
|
||||
Free(var0);
|
||||
return result;
|
||||
|
@ -416,7 +416,7 @@ static void sub_81D5084(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
if (TryWriteTrainerHill((struct Unk81D38FC *)&gDecompressionBuffer))
|
||||
if (TryWriteTrainerHill((struct EReaderTrainerHillSet *)&gDecompressionBuffer))
|
||||
{
|
||||
AddTextPrinterToWindow1(gUnknown_085EE0FA);
|
||||
sub_81D505C(&data->unk0);
|
||||
|
Loading…
Reference in New Issue
Block a user