An emulator, assembler, and disassembler for the Sega Game Gear
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* Copyright (C) 2014-2016 Ben Kurtovic <ben.kurtovic@gmail.com>
  2. Released under the terms of the MIT License. See LICENSE for details. */
  3. #pragma once
  4. #include <stdbool.h>
  5. #include <stdint.h>
  6. #include "mmu.h"
  7. #define Z80_EXC_NOT_POWERED 0
  8. #define Z80_EXC_UNIMPLEMENTED_OPCODE 1
  9. /* Structs */
  10. typedef struct {
  11. uint8_t a, f, b, c, d, e, h, l;
  12. uint8_t a_, f_, b_, c_, d_, e_, h_, l_;
  13. uint16_t ix, iy, sp, pc;
  14. uint8_t i, r;
  15. bool im_a, im_b;
  16. bool iff1, iff2;
  17. } Z80RegFile;
  18. typedef struct {
  19. bool fresh;
  20. uint16_t last_addr;
  21. uint64_t counter;
  22. } Z80TraceInfo;
  23. typedef struct {
  24. Z80RegFile regfile;
  25. MMU *mmu;
  26. bool except;
  27. uint8_t exc_code, exc_data;
  28. double pending_cycles;
  29. Z80TraceInfo trace;
  30. } Z80;
  31. /* Functions */
  32. void z80_init(Z80*, MMU*);
  33. void z80_power(Z80*);
  34. bool z80_do_cycles(Z80*, double);
  35. void z80_dump_registers(const Z80*);