mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
83 lines
1.5 KiB
C++
83 lines
1.5 KiB
C++
/*!
|
|
* @file kmemcard.h
|
|
* Memory card interface. Very messy code.
|
|
*/
|
|
|
|
|
|
#ifndef JAK_KMEMCARD_H
|
|
#define JAK_KMEMCARD_H
|
|
|
|
#include "common/common_types.h"
|
|
#include "kmachine.h"
|
|
|
|
void kmemcard_init_globals();
|
|
|
|
constexpr s32 SAVE_SIZE = 0x2b3; // likely different by versions!
|
|
|
|
enum MemoryCardOperationKind {
|
|
NO_OP = 0,
|
|
FORMAT = 1,
|
|
UNFORMAT = 2,
|
|
CREATE_FILE = 3,
|
|
SAVE = 4,
|
|
LOAD = 5,
|
|
};
|
|
|
|
struct MemoryCardOperation {
|
|
uint32_t operation;
|
|
uint32_t param;
|
|
uint32_t param2;
|
|
uint32_t result;
|
|
uint32_t f_10;
|
|
Ptr<u8> data_ptr;
|
|
Ptr<u8> data_ptr2;
|
|
};
|
|
|
|
struct mc_file_info {
|
|
u32 present;
|
|
u8 data[64];
|
|
};
|
|
|
|
struct mc_file_info_2 {
|
|
u32 present;
|
|
u32 pad1;
|
|
u32 pad2;
|
|
u8 data[64];
|
|
};
|
|
|
|
struct mc_slot_info {
|
|
u32 handle;
|
|
u32 known;
|
|
u32 formatted;
|
|
u32 initted;
|
|
u32 last_file;
|
|
u32 mem_required;
|
|
u32 mem_actual;
|
|
mc_file_info files[4];
|
|
};
|
|
|
|
struct mc_info {
|
|
s32 p0;
|
|
s32 handle;
|
|
s32 inited;
|
|
s32 mem_actual;
|
|
s32 last_file;
|
|
mc_file_info_2 files[4];
|
|
};
|
|
|
|
s32 new_mc_handle();
|
|
u32 mc_checksum(Ptr<u8> data, s32 size);
|
|
u32 handle_to_slot(s32 p1, s32 p2);
|
|
void MC_run();
|
|
void MC_set_language(s32 lang);
|
|
u64 MC_format(s32 param);
|
|
u64 MC_unformat(s32 param);
|
|
u64 MC_createfile(s32 param, Ptr<u8> data);
|
|
u64 MC_save(s32 param, s32 param2, Ptr<u8> data, Ptr<u8> data2);
|
|
u64 MC_load(s32 param, s32 param2, Ptr<u8> data);
|
|
void MC_makefile(s32 port, s32 size);
|
|
u32 MC_check_result();
|
|
void MC_get_status(s32 slot, Ptr<mc_slot_info> info);
|
|
|
|
#endif // JAK_KMEMCARD_H
|