gbemu/include/cpu.h

45 lines
684 B
C
Raw Normal View History

2025-01-30 14:30:19 -07:00
#pragma once
#include <common.h>
2025-01-30 16:27:27 -07:00
#include <instructions.h>
typedef struct {
u8 a;
u8 f;
u8 b;
u8 c;
u8 d;
u8 e;
u8 h;
u8 l;
u16 pc;
u16 sp;
} cpu_registers;
typedef struct {
cpu_registers regs;
//current fetch...
u16 fetched_data;
u16 mem_dest;
bool dest_is_mem;
u8 cur_opcode;
instruction *cur_inst;
bool halted;
bool stepping;
2025-01-30 18:38:29 -07:00
bool int_master_enabled;
2025-01-30 16:27:27 -07:00
} cpu_context;
2025-01-30 14:30:19 -07:00
void cpu_init();
2025-01-30 17:03:56 -07:00
bool cpu_step();
typedef void (*IN_PROC)(cpu_context *);
IN_PROC inst_get_processor(in_type type);
#define CPU_FLAG_Z BIT(ctx->regs.f, 7)
2025-01-30 18:38:29 -07:00
#define CPU_FLAG_C BIT(ctx->regs.f, 4)
u16 cpu_read_reg(reg_type rt);