#ifndef __MAPPER_H__ #define __MAPPER_H__ #include #include #include typedef struct mapper_t mapper_t; typedef struct mapper_funcs_t { int (*read)(void*, int); void (*write)(void*, int, int); void (*kill)(void*); } mapper_funcs_t; #define MAPPER_DIRECT 0 #define MAPPER_LIST_END 1 #include "mapper_direct.h" /* mapper_init * Initializes the mapper_t struct. * [in/out] mapper_t** mapper - The return pointer. Expects NULL. * [in] int* memory - The memory buffer to use. * [in] int mapper - The mapper to use. */ void mapper_init(mapper_t** mapper, int* memory, int mapper_type); /* mapper_kill * Kills the mapper_t struct. * [in] mapper_t* maper - The memory mapper. */ void mapper_kill(mapper_t* mapper); /* mapper_read * Reads 1 byte from memory. * [in] mapper_t* mapper - The memory mapper. * [in] int address - The 16bit address to read from. * Returns: The byte at the requested address. */ int mapper_read(mapper_t* mapper, int address); /* mapper_read16 * Reads 2 bytes from memory. * [in] mapper_t* mapper - The memory mapper. * [in] int address - The 16bit address to read from. * Returns: The bytes at the requested address. */ int mapper_read16(mapper_t* mapper, int address); /* mapper_write * Writes 1 byte from memory. * [in] mapper_t* mapper - The memory mapper. * [in] int address - The 16bit address to write to. * [in] int value - The byte to write. */ void mapper_write(mapper_t* mapper, int address, int value); #endif