Added return value to GB_run API.

This commit is contained in:
Lior Halphon 2018-01-31 15:18:04 +02:00
parent bc55531204
commit 95234036bb
3 changed files with 8 additions and 2 deletions

View File

@ -271,15 +271,17 @@ exit:
return;
}
void GB_run(GB_gameboy_t *gb)
uint8_t GB_run(GB_gameboy_t *gb)
{
GB_debugger_run(gb);
gb->cycles_since_run = 0;
GB_cpu_run(gb);
if (gb->vblank_just_occured) {
GB_update_joyp(gb);
GB_rtc_run(gb);
GB_debugger_handle_async_commands(gb);
}
return gb->cycles_since_run;
}
uint64_t GB_run_frame(GB_gameboy_t *gb)

View File

@ -483,6 +483,7 @@ struct GB_gameboy_internal_s {
uint32_t ram_size; // Different between CGB and DMG
uint8_t boot_rom[0x900];
bool vblank_just_occured; // For slow operations involving syscalls; these should only run once per vblank
uint8_t cycles_since_run; // How many cycles have passed since the last call to GB_run()
);
};
@ -506,7 +507,9 @@ bool GB_is_cgb(GB_gameboy_t *gb);
void GB_free(GB_gameboy_t *gb);
void GB_reset(GB_gameboy_t *gb);
void GB_switch_model_and_reset(GB_gameboy_t *gb, bool is_cgb);
void GB_run(GB_gameboy_t *gb);
/* Returns the time passed, in 4MHz ticks. */
uint8_t GB_run(GB_gameboy_t *gb);
/* Returns the time passed since the last frame, in nanoseconds */
uint64_t GB_run_frame(GB_gameboy_t *gb);

View File

@ -153,6 +153,7 @@ void GB_advance_cycles(GB_gameboy_t *gb, uint8_t cycles)
gb->cycles_since_ir_change += cycles;
gb->cycles_since_input_ir_change += cycles;
gb->cycles_since_last_sync += cycles;
gb->cycles_since_run += cycles;
GB_dma_run(gb);
GB_hdma_run(gb);
GB_apu_run(gb);