An emulator, assembler, and disassembler for the Sega Game Gear
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 "io.h"
  7. #include "mmu.h"
  8. #include "psg.h"
  9. #include "rom.h"
  10. #include "z80.h"
  11. #define GG_FPS 60
  12. #define GG_EXC_BUFF_SIZE 128
  13. /* Structs, etc. */
  14. struct GameGear;
  15. typedef void (*GGFrameCallback)(struct GameGear*);
  16. typedef struct GameGear {
  17. Z80 cpu;
  18. MMU mmu;
  19. VDP vdp;
  20. PSG psg;
  21. IO io;
  22. bool powered;
  23. GGFrameCallback callback;
  24. char exc_buffer[GG_EXC_BUFF_SIZE];
  25. } GameGear;
  26. /* Functions */
  27. GameGear* gamegear_create();
  28. void gamegear_destroy(GameGear*);
  29. void gamegear_load(GameGear*, const ROM*);
  30. void gamegear_simulate(GameGear*);
  31. void gamegear_power_off(GameGear*);
  32. void gamegear_set_callback(GameGear*, GGFrameCallback);
  33. void gamegear_clear_callback(GameGear*);
  34. const char* gamegear_get_exception(GameGear*);
  35. void gamegear_print_state(const GameGear*);