Mercurial > repos > blastem
diff sms.c @ 1209:5ee6b6345ea9
Implement SMS hardware soft reset (note only available on real hardware on the Genesis in PBC mode)
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 27 Jan 2017 22:30:52 -0800 |
parents | aee2177a1630 |
children | 071e761bcdcf |
line wrap: on
line diff
--- a/sms.c Fri Jan 27 21:27:37 2017 -0800 +++ b/sms.c Fri Jan 27 22:30:52 2017 -0800 @@ -202,6 +202,9 @@ zdebugger(sms->z80, sms->z80->pc); } z80_run(sms->z80, target_cycle); + if (sms->z80->reset) { + z80_clear_reset(sms->z80, sms->z80->current_cycle + 128*15); + } target_cycle = sms->z80->current_cycle; vdp_run_context(sms->vdp, target_cycle); psg_run(sms->psg, target_cycle); @@ -236,6 +239,13 @@ run_sms(system); } +static void soft_reset(system_header *system) +{ + sms_context *sms = (sms_context *)system; + z80_assert_reset(sms->z80, sms->z80->current_cycle); + sms->z80->target_cycle = sms->z80->sync_cycle = sms->z80->current_cycle; +} + static void free_sms(system_header *system) { sms_context *sms = (sms_context *)system; @@ -341,6 +351,7 @@ sms->header.free_context = free_sms; sms->header.get_open_bus_value = get_open_bus_value; sms->header.request_exit = request_exit; + sms->header.soft_reset = soft_reset; sms->header.inc_debug_mode = inc_debug_mode; sms->header.inc_debug_pal = inc_debug_pal;