mirror of
https://github.com/pret/pokefirered.git
synced 2026-04-17 06:56:02 -05:00
130 lines
3.7 KiB
C
130 lines
3.7 KiB
C
#ifndef GUARD_MEVENT_SERVER_H
|
|
#define GUARD_MEVENT_SERVER_H
|
|
|
|
#include "global.h"
|
|
|
|
#define ME_SEND_BUF_SIZE 0x400
|
|
|
|
struct mevent_srv_sub
|
|
{
|
|
s32 seqno;
|
|
u8 sendPlayerNo;
|
|
u8 recvPlayerNo;
|
|
u16 recvIdent;
|
|
u16 recvCounter;
|
|
u16 recvCRC;
|
|
u16 recvSize;
|
|
u16 sendIdent;
|
|
u16 sendCounter;
|
|
u16 sendCRC;
|
|
u16 sendSize;
|
|
void * recvBfr;
|
|
const void * sendBfr;
|
|
u32 (*recvFunc)(struct mevent_srv_sub *);
|
|
u32 (*sendFunc)(struct mevent_srv_sub *);
|
|
};
|
|
|
|
struct send_recv_header
|
|
{
|
|
u16 ident;
|
|
u16 crc;
|
|
u16 size;
|
|
};
|
|
|
|
struct mevent_client_cmd
|
|
{
|
|
u32 instr;
|
|
u32 parameter;
|
|
};
|
|
|
|
// Client commands
|
|
#define CLI_RETURN(x) {.instr = 1, .parameter = x}
|
|
#define CLI_RECEIVE(x) {.instr = 2, .parameter = x}
|
|
#define CLI_WAITSND {.instr = 3, .parameter = 0}
|
|
#define CLI_JUMPBUF {.instr = 4, .parameter = 0}
|
|
#define CLI_SNDHEAD {.instr = 8, .parameter = 0}
|
|
#define CLI_VLDNEWS {.instr = 9, .parameter = 0}
|
|
#define CLI_RECVSAV {.instr = 10, .parameter = 0}
|
|
#define CLI_RECVBUF {.instr = 12, .parameter = 0}
|
|
#define CLI_REQWORD {.instr = 13, .parameter = 0}
|
|
#define CLI_SNDWORD {.instr = 14, .parameter = 0}
|
|
#define CLI_RECVMON {.instr = 16, .parameter = 0}
|
|
#define CLI_RECVRAM {.instr = 17, .parameter = 0}
|
|
#define CLI_SENDALL {.instr = 20, .parameter = 0}
|
|
|
|
struct mevent_client
|
|
{
|
|
u32 unk_00;
|
|
u32 param;
|
|
u32 mainseqno;
|
|
u32 flag;
|
|
u32 cmdidx;
|
|
void * sendBuffer;
|
|
void * recvBuffer;
|
|
struct mevent_client_cmd * cmdBuffer;
|
|
void * buffer;
|
|
struct mevent_srv_sub manager;
|
|
};
|
|
|
|
struct mevent_server_cmd
|
|
{
|
|
u32 instr;
|
|
bool32 flag;
|
|
void * parameter;
|
|
};
|
|
|
|
// Server commands
|
|
#define SRV_RETURN(x) {.instr = 0, .flag = x}
|
|
#define SRV_WAITSND {.instr = 1}
|
|
#define SRV_RECV(x) {.instr = 2, .flag = x}
|
|
#define SRV_BRANCH(y) {.instr = 3, .parameter = (void *)y}
|
|
#define SRV_BRANCHIF(x, y) {.instr = 4, .flag = x, .parameter = (void *)y}
|
|
#define SRV_READ_1442CC {.instr = 5}
|
|
#define SRV_VALID_1442CC {.instr = 6}
|
|
#define SRV_CHECK_1442CC_14 {.instr = 7}
|
|
#define SRV_READWORD {.instr = 8}
|
|
#define SRV_SEND_CARD {.instr = 13}
|
|
#define SRV_SEND_NEWS {.instr = 14}
|
|
#define SRV_BUFFER_SEND {.instr = 15}
|
|
#define SRV_SEND(x, y) {.instr = 18, .flag = x, .parameter = (void *)y}
|
|
#define SRV_SENDSTR(x, y) {.instr = 20, .flag = x, .parameter = (void *)y}
|
|
#define SRV_BUFFER_CARD {.instr = 26}
|
|
#define SRV_BUFFER_NEWS {.instr = 27}
|
|
#define SRV_RAM_SCRIPT_IF_VALID {.instr = 28}
|
|
|
|
struct mevent_srv_common
|
|
{
|
|
u32 unk_00;
|
|
u32 param;
|
|
u32 mainseqno;
|
|
u32 cmdidx;
|
|
const struct mevent_server_cmd * cmdBuffer;
|
|
void * recvBuffer;
|
|
struct MEWonderCardData * card;
|
|
struct MEWonderNewsData * news;
|
|
struct MEventClientHeaderStruct * mevent_unk1442cc;
|
|
void * sendBuffer1;
|
|
u32 sendBuffer1Size;
|
|
void * sendBuffer2;
|
|
u32 sendBuffer2Size;
|
|
u32 sendWord;
|
|
struct mevent_srv_sub manager;
|
|
};
|
|
|
|
u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr);
|
|
u32 mevent_srv_sub_send(struct mevent_srv_sub * svr);
|
|
void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo);
|
|
void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size);
|
|
void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest);
|
|
|
|
void mevent_client_do_init(void);
|
|
u32 mevent_client_do_exec(u16 * a0);
|
|
void mevent_client_inc_flag(void);
|
|
void * mevent_client_get_buffer(void);
|
|
void mevent_client_set_param(u32 a0);
|
|
void mevent_srv_init_wnews(void);
|
|
void mevent_srv_new_wcard(void);
|
|
u32 mevent_srv_common_do_exec(u16 * a0);
|
|
|
|
#endif //GUARD_MEVENT_SERVER_H
|