78 lines
2.6 KiB
C
78 lines
2.6 KiB
C
#include "../config.h"
|
|
#include "../lib/libpcp/libpcp.h"
|
|
#include "callbacks.h"
|
|
|
|
void mxkPcpAbGameId(pcpa_t* stream, void* data) { pcpaSetSendPacket(stream, AB_GAMEID, Config.appboot_gameid); }
|
|
void mxkPcpAbSystemFlag(pcpa_t* stream, void* data) {
|
|
char sf[3];
|
|
snprintf(sf, 3, "%02X", Config.appboot_systemflag);
|
|
pcpaSetSendPacket(stream, AB_SYSTEMFLAG, sf);
|
|
}
|
|
void mxkPcpAbModelType(pcpa_t* stream, void* data) {
|
|
char mt[16];
|
|
snprintf(mt, 16, "%02X", Config.appboot_modeltype);
|
|
pcpaSetSendPacket(stream, AB_MODELTYPE, mt);
|
|
}
|
|
void mxkPcpAbFormatType(pcpa_t* stream, void* data) {
|
|
char ft[16];
|
|
snprintf(ft, 16, "%02X", Config.appboot_formattype);
|
|
pcpaSetSendPacket(stream, AB_FORMATTYPE, ft);
|
|
}
|
|
void mxkPcpAbRegion(pcpa_t* stream, void* data) {
|
|
char rg[16];
|
|
snprintf(rg, 16, "%02X", Config.appboot_region);
|
|
pcpaSetSendPacket(stream, AB_REGION, rg);
|
|
}
|
|
void mxkPcpAbPlatformId(pcpa_t* stream, void* data) {
|
|
pcpaSetSendPacket(stream, AB_PLATFORMID, Config.appboot_platformid);
|
|
}
|
|
void mxkPcpAbNetworkAddress(pcpa_t* stream, void* data) {
|
|
pcpaSetSendPacket(stream, AB_NETWORKADDRESS, Config.appboot_network);
|
|
}
|
|
void mxkPcpAbDvd(pcpa_t* stream, void* data) {
|
|
char dvd[16];
|
|
snprintf(dvd, 16, "%02X", Config.appboot_dvdflag);
|
|
pcpaSetSendPacket(stream, AB_DVD, dvd);
|
|
}
|
|
|
|
#define SEED_BUF_MAX 1024
|
|
byte SEED_BUF[SEED_BUF_MAX];
|
|
int SEED_BUF_LEN = 0;
|
|
void mxkPcpAbSeed(pcpa_t* stream, void* data) {
|
|
if (SEED_BUF_LEN == 0) {
|
|
FILE* fCert;
|
|
fopen_s(&fCert, Config.appboot_seed, "r");
|
|
if (fCert == NULL)
|
|
SEED_BUF_LEN = -1;
|
|
else {
|
|
fseek(fCert, 0, SEEK_END);
|
|
SEED_BUF_LEN = ftell(fCert);
|
|
if (SEED_BUF_LEN > SEED_BUF_MAX) SEED_BUF_LEN = SEED_BUF_MAX;
|
|
rewind(fCert);
|
|
|
|
fread(SEED_BUF, SEED_BUF_LEN, 1, fCert);
|
|
fclose(fCert);
|
|
}
|
|
}
|
|
|
|
if (SEED_BUF_LEN == -1) {
|
|
// TODO: Fix this maybe?
|
|
pcpaSetBinaryMode(stream, binary_mode_none);
|
|
pcpaSetSendPacket(stream, AB_SEED, "-1");
|
|
return;
|
|
}
|
|
|
|
pcpaSetBinaryMode(stream, binary_mode_send);
|
|
pcpaSetBeforeBinaryModeCallBackFunc(stream, mxkBinaryCallback, NULL);
|
|
|
|
BINARY_DATA_LEN = SEED_BUF_LEN;
|
|
memcpy(BINARY_DATA, SEED_BUF, SEED_BUF_LEN);
|
|
pcpaSetRecvBinaryBuffer(stream, BINARY_DATA, BINARY_DATA_LEN);
|
|
|
|
pcpaSetSendPacket(stream, AB_SEED, "0");
|
|
pcpaAddSendPacket(stream, "port", "40107");
|
|
char sSize[16]; // todo: nicer lol
|
|
_itoa_s(SEED_BUF_LEN, sSize, sizeof sSize, 10);
|
|
pcpaAddSendPacket(stream, "size", sSize);
|
|
}
|