2019-03-22 20:16:26 +01:00
|
|
|
#ifndef GUARD_EREADER_HELPERS_H
|
|
|
|
#define GUARD_EREADER_HELPERS_H
|
|
|
|
|
2019-09-03 03:37:52 +02:00
|
|
|
#include "trainer_hill.h"
|
|
|
|
|
2021-10-26 19:37:24 +02:00
|
|
|
enum {
|
|
|
|
EREADER_XFR_STATE_INIT = 0,
|
|
|
|
EREADER_XFR_STATE_HANDSHAKE,
|
|
|
|
EREADER_XFR_STATE_START,
|
|
|
|
EREADER_XFR_STATE_TRANSFER,
|
|
|
|
EREADER_XFR_STATE_TRANSFER_DONE,
|
|
|
|
EREADER_XFR_STATE_CHECKSUM,
|
|
|
|
EREADER_XFR_STATE_DONE
|
|
|
|
};
|
|
|
|
|
|
|
|
#define EREADER_XFER_EXE 1
|
|
|
|
#define EREADER_XFER_CHK 2
|
|
|
|
#define EREADER_XFER_SHIFT 0
|
|
|
|
#define EREADER_XFER_MASK ((EREADER_XFER_EXE | EREADER_XFER_CHK) << EREADER_XFER_SHIFT)
|
|
|
|
|
|
|
|
#define EREADER_CANCEL_TIMEOUT 1
|
|
|
|
#define EREADER_CANCEL_KEY 2
|
|
|
|
#define EREADER_CANCEL_SHIFT 2
|
|
|
|
#define EREADER_CANCEL_TIMEOUT_MASK (EREADER_CANCEL_TIMEOUT << EREADER_CANCEL_SHIFT)
|
|
|
|
#define EREADER_CANCEL_KEY_MASK (EREADER_CANCEL_KEY << EREADER_CANCEL_SHIFT)
|
|
|
|
#define EREADER_CANCEL_MASK ((EREADER_CANCEL_TIMEOUT | EREADER_CANCEL_KEY) << EREADER_CANCEL_SHIFT)
|
|
|
|
|
|
|
|
#define EREADER_CHECKSUM_OK 1
|
|
|
|
#define EREADER_CHECKSUM_ERR 2
|
|
|
|
#define EREADER_CHECKSUM_SHIFT 4
|
|
|
|
#define EREADER_CHECKSUM_OK_MASK (EREADER_CHECKSUM_OK << EREADER_CHECKSUM_SHIFT)
|
|
|
|
#define EREADER_CHECKSUM_MASK ((EREADER_CHECKSUM_OK | EREADER_CHECKSUM_ERR) << EREADER_CHECKSUM_SHIFT)
|
|
|
|
|
2019-09-03 20:35:01 +02:00
|
|
|
struct EReaderTrainerHillTrainer
|
2019-03-22 20:16:26 +01:00
|
|
|
{
|
2021-04-25 00:04:27 +02:00
|
|
|
u8 trainerNum;
|
|
|
|
struct TrainerHillTrainer trainer;
|
2022-03-04 17:02:19 +01:00
|
|
|
struct TrainerHillFloorMap map;
|
2019-09-03 03:37:52 +02:00
|
|
|
u32 checksum;
|
2019-09-03 20:35:01 +02:00
|
|
|
}; // size=0x274
|
2019-03-22 20:16:26 +01:00
|
|
|
|
2019-04-04 17:55:18 +02:00
|
|
|
struct EReaderTrainerHillSet
|
|
|
|
{
|
2021-04-25 00:04:27 +02:00
|
|
|
u8 numTrainers;
|
2019-09-03 03:37:52 +02:00
|
|
|
u8 id;
|
2021-05-04 21:43:24 +02:00
|
|
|
u16 dummy; // Only read in an assert.
|
2019-09-03 03:37:52 +02:00
|
|
|
u32 checksum;
|
2021-04-25 00:04:27 +02:00
|
|
|
struct EReaderTrainerHillTrainer trainers[6];
|
2019-04-04 17:55:18 +02:00
|
|
|
u8 unk_ec0[40];
|
2019-09-03 20:35:01 +02:00
|
|
|
}; // size = 0xf00
|
2019-04-04 17:55:18 +02:00
|
|
|
|
2021-04-25 00:04:27 +02:00
|
|
|
bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet *);
|
|
|
|
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *);
|
2019-04-04 17:55:18 +02:00
|
|
|
bool32 ReadTrainerHillAndValidate(void);
|
2021-04-23 23:04:44 +02:00
|
|
|
int EReaderHandleTransfer(u8, size_t, const void *, void *);
|
|
|
|
void EReaderHelper_Timer3Callback(void);
|
|
|
|
void EReaderHelper_SerialCallback(void);
|
2019-09-03 03:37:52 +02:00
|
|
|
void EReaderHelper_SaveRegsState(void);
|
|
|
|
void EReaderHelper_RestoreRegsState(void);
|
2021-04-23 23:04:44 +02:00
|
|
|
void EReaderHelper_ClearSendRecvMgr(void);
|
2019-03-22 20:16:26 +01:00
|
|
|
|
|
|
|
#endif // GUARD_EREADER_HELPERS_H
|