1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
//
// si/gb.h: Game Boy pak definitions
//
// CEN64: Cycle-Accurate Nintendo 64 Emulator.
// Copyright (C) 2016, Jason Benaim.
//
// This file is subject to the terms and conditions defined in
// 'LICENSE', which is part of this source code package.
//
#ifndef __si_gb_h__
#define __si_gb_h__
#include "pak.h"
struct gb_cart {
int mbc_type;
int cartrom_num_banks;
int reg_rom_bank_low; // low bits of ROM bank
int reg_rom_bank_high; // high bits of ROM bank
uint8_t* bootrom;
size_t bootromsize;
uint8_t* cartrom;
uint8_t* cartromValid;
uint8_t* cartrom_bank_zero;
uint8_t* cartrom_bank_n;
uint8_t* cartromValid_bank_n;
uint16_t cart_bank_num;
size_t cartromsize;
uint8_t* extram;
uint8_t* extramValidRead;
uint8_t* extramValidWrite;
uint8_t* extram_bank;
uint8_t* extram_bank_validRead;
uint8_t* extram_bank_validWrite;
uint8_t extram_bank_num;
int extramEnabled;
size_t extram_size;
int extram_num_banks;
int battery_backed;
void (*cleanup)(void);
char savename[256];
int huc3_ram_mode;
FILE *fd;
int chardev_mode;
};
struct controller;
uint8_t gb_read(struct controller *controller, uint16_t address);
void gb_write(struct controller *controller, uint16_t address, uint8_t data);
void gb_init(struct controller *controller);
extern void mbc_mbc3_install( struct controller *controller );
uint8_t mbc_mbc3_read_ff( struct controller *controller, uint16_t address );
void mbc_mbc3_write_dummy( struct controller *controller, uint16_t address, uint8_t data );
uint8_t mbc_mbc3_read_bank_0( struct controller *controller, uint16_t address );
uint8_t mbc_mbc3_read_bank_n( struct controller *controller, uint16_t address );
void mbc_mbc3_write_ram_enable( struct controller *controller, uint16_t address, uint8_t data );
void mbc_mbc3_write_rom_bank_select( struct controller *controller, uint16_t address, uint8_t data );
void mbc_mbc3_write_ram_bank_select( struct controller *controller, uint16_t address, uint8_t data );
void mbc_mbc3_write_clock_data_latch( struct controller *controller, uint16_t address, uint8_t data );
uint8_t mbc_mbc3_read_extram( struct controller *controller, uint16_t address );
void mbc_mbc3_write_extram( struct controller *controller, uint16_t address, uint8_t data );
uint8_t mbc_mbc3_read_rtc( struct controller *controller, uint16_t address );
void mbc_mbc3_write_rtc( struct controller *controller, uint16_t address, uint8_t data );
#endif
|