--- nono/vm/vm_x68k.cpp 2026/04/29 17:05:24 1.1.1.12 +++ nono/vm/vm_x68k.cpp 2026/04/29 17:05:55 1.1.1.16 @@ -17,6 +17,7 @@ #include "nmi.h" #include "power.h" #include "renderer.h" +#include "sound.h" #include "x68kkbd.h" // コンストラクタ @@ -24,6 +25,12 @@ VM_X68030::VM_X68030() : inherited("X68030") { // 機種固有パラメータ + + // 実時間同期がちゃんと動作するにはゲスト OS の設定を要するため、 + // デフォルトは仮想時間同期にしておくほうがトラブルが少なそう。 + gConfig->SetDefault("clock-sync", "virtual"); + // MPU 種別。 + gConfig->SetDefault("mpu-type", "68030"); // MPU クロックの初期値は機種ごとに異なる。単位は MHz gConfig->SetDefault("mpu-clock", 25); // RAM 初期値は MAX にしておく @@ -33,15 +40,22 @@ VM_X68030::VM_X68030() // デバイス NEWDV(Power, new X68030PowerDevice()); - NEWDV(MPU, new MPU680x0Device()); + NEWDV(MPU, NewMPU680x0Device()); + NEWDV(Sound, new SoundRenderer()); NEWDV(Mainbus, new X68kMainbus()); NEWDV(Keyboard, new X68030Keyboard()); NEWDV(NMI, new NMIDevice()); - NEWDV(Renderer, new X68030Renderer()); + NEWDV(Renderer, new X68030VideoRenderer()); if (gMainApp.human_mode) { NEWDV(Human68k, new Human68kDevice()); } + + // バーストアクセスなし (回路図より) + auto mpu680x0 = GetMPU680x0Device(pMPU.get()); + if (mpu680x0) { + mpu680x0->EnableBurstAccess(false); + } } // デストラクタ