gb6/src/dmg.h

47 lines
1.0 KiB
C
Raw Normal View History

2019-04-16 06:25:00 +00:00
#ifndef _DMG_H
#define _DMG_H
#include "cpu.h"
#include "rom.h"
2022-06-21 00:09:29 +00:00
#include "lcd.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)
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-07-21 03:21:36 +00:00
int joypad_selected;
int action_selected; // non-0 if A/B/start/select selected, 0 for directions
u8 interrupt_enabled;
u8 interrupt_requested;
u8 joypad;
u8 action_buttons;
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