#ifndef GB_H #define GB_H #include enum { GB_TIMERS_DIV = 0, GB_TIMERS_TIMA, GB_TIMERS_TMA, GB_TIMERS_TAC, }; typedef struct gb_timers_t { ut64 seek; ut32 fd; ut16 odiv; ut16 div; ut8 buf[4]; ut8 otma; st8 tima_wait; bool check_fedge; } GBTimers; GBTimers *gb_timers_open(RIO *io); void gb_timers_update(GBTimers *timers, ut32 cycles); void gb_timers_close(RIO *io, GBTimers *timers); typedef struct gb_joypad_t { ut8 *keys; int fd; ut16 up; ut16 down; ut16 left; ut16 right; ut16 a; ut16 b; ut16 start; ut16 select; ut8 data; ut8 odata; } GBJoypad; GBJoypad *gb_joypad_open(RIO *io); void gb_joypad_update(GBJoypad *joypad); void gb_joypad_close(RIO *io, GBJoypad *joypad); //int gb_mbc1_open(RIO *io, char *path); extern RIOPlugin r_io_plugin_gb_timers; extern RIOPlugin r_io_plugin_gb_mbc1; extern RIOPlugin r_io_plugin_gb_mbc2; #endif