From: K.Ohta Date: Thu, 12 Mar 2015 20:39:48 +0000 (+0900) Subject: [VM][FM7][UI] Improve quality of HOT-START(special reset) implementation. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=cac403472385f2cfe4d693e94ba0730ab6fc7bfa;p=csp-qt%2Fcommon_source_project-fm7.git [VM][FM7][UI] Improve quality of HOT-START(special reset) implementation. --- diff --git a/source/src/vm/fm7/display.cpp b/source/src/vm/fm7/display.cpp index 5a3a7bd11..181242e89 100644 --- a/source/src/vm/fm7/display.cpp +++ b/source/src/vm/fm7/display.cpp @@ -43,6 +43,7 @@ void DISPLAY::reset(void) register_event(this, EVENT_FM7SUB_VSTART, 1.0 * 1000.0, false, &vstart_event_id); register_event(this, EVENT_FM7SUB_DISPLAY_NMI, 20000.0, true, &nmi_event_id); // NEXT CYCLE_ for(i = 0; i < 8; i++) set_dpalette(i, i); + set_cyclesteal(config.dipswitch & 0x01); // CYCLE STEAL = bit0. // subcpu->reset(); } diff --git a/source/src/vm/fm7/fm7.cpp b/source/src/vm/fm7/fm7.cpp index f9db0661b..36b682b3f 100644 --- a/source/src/vm/fm7/fm7.cpp +++ b/source/src/vm/fm7/fm7.cpp @@ -319,9 +319,12 @@ void VM::special_reset() { // BREAK + RESET mainio->write_signal(FM7_MAINIO_PUSH_BREAK, 1, 1); - event->register_event(mainio, EVENT_UP_BREAK, 2000.0 * 1000.0, false, NULL); mainio->reset(); display->reset(); + subcpu->reset(); + maincpu->reset(); + mainio->write_signal(FM7_MAINIO_PUSH_BREAK, 1, 1); + event->register_event(mainio, EVENT_UP_BREAK, 10000.0 * 1000.0, false, NULL); } void VM::run() diff --git a/source/src/vm/fm7/fm7_mainio.cpp b/source/src/vm/fm7/fm7_mainio.cpp index b1b461fac..df6c62830 100644 --- a/source/src/vm/fm7/fm7_mainio.cpp +++ b/source/src/vm/fm7/fm7_mainio.cpp @@ -50,7 +50,7 @@ void FM7_MAINIO::reset(void) opn_cmdreg[i] = 0; opn_address[i] = 0; } - printf("MAINIO: RESET\n"); + // maincpu->reset(); } @@ -485,6 +485,8 @@ void FM7_MAINIO::set_opn(int index, uint8 val) case 0: // High inpedance break; case 1: // Read Data + opn[index]->write_io8(0, opn_address[index]); + opn_data[index] = opn[index]->read_io8(1); break; case 2: // Write Data //printf("OPN %d WRITE DATA %02x to REG ADDR=%02x\n", index, val, opn_address[index]);