gb6/src/dmg.h

61 lines
1.2 KiB
C
Raw Permalink Normal View History

2019-04-16 06:25:00 +00:00
#ifndef _DMG_H
#define _DMG_H
2022-08-02 03:45:37 +00:00
#include "types.h"
2019-04-16 06:25:00 +00:00
#define FIELD_JOY 1
#define FIELD_ACTION 2
#define BUTTON_RIGHT (1 << 0)
#define BUTTON_LEFT (1 << 1)
#define BUTTON_UP (1 << 2)
#define BUTTON_DOWN (1 << 3)
#define BUTTON_A (1 << 0)
#define BUTTON_B (1 << 1)
#define BUTTON_SELECT (1 << 2)
#define BUTTON_START (1 << 3)
2022-08-04 06:57:14 +00:00
#define REG_TIMER_DIV 0xFF04
#define REG_TIMER_COUNT 0xFF05
#define REG_TIMER_MOD 0xFF06
#define REG_TIMER_CONTROL 0xFF07
#define TIMER_CONTROL_ENABLED (1 << 2)
2022-08-02 03:45:37 +00:00
struct cpu;
struct rom;
struct lcd;
2019-04-16 06:25:00 +00:00
struct dmg {
struct cpu *cpu;
struct rom *rom;
struct lcd *lcd;
2019-04-16 06:25:00 +00:00
u8 main_ram[0x2000];
u8 video_ram[0x2000];
u8 zero_page[0x80];
2022-07-14 06:26:59 +00:00
u32 last_lcd_update;
2022-08-04 06:57:14 +00:00
u32 last_timer_update;
2022-07-21 03:21:36 +00:00
int joypad_selected;
int action_selected;
u8 interrupt_enabled;
u8 interrupt_requested;
u8 joypad;
u8 action_buttons;
u16 timer_div;
u8 timer_count;
u8 timer_mod;
u8 timer_control;
2019-04-16 06:25:00 +00:00
};
2019-10-22 06:30:19 +00:00
void dmg_new(struct dmg *dmg, struct cpu *cpu, struct rom *rom, struct lcd *lcd);
void dmg_set_button(struct dmg *dmg, int field, int button, int pressed);
2019-04-16 06:25:00 +00:00
2019-10-22 06:30:19 +00:00
// why did i make these void *
2019-04-16 06:25:00 +00:00
u8 dmg_read(void *dmg, u16 address);
void dmg_write(void *dmg, u16 address, u8 data);
2019-10-22 06:30:19 +00:00
void dmg_step(void *dmg);
2019-04-16 06:25:00 +00:00
#endif