#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