File: gb.h

package info (click to toggle)
cen64 0.3%2Bgit20180227-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 4,460 kB
  • sloc: ansic: 23,713; asm: 772; cpp: 663; makefile: 14
file content (65 lines) | stat: -rw-r--r-- 2,438 bytes parent folder | download | duplicates (2)
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