--- nono/vm/vm_luna.cpp 2026/04/29 17:05:25 1.1.1.13 +++ nono/vm/vm_luna.cpp 2026/04/29 17:05:43 1.1.1.16 @@ -13,15 +13,14 @@ #include "dipsw.h" #include "lcd.h" #include "lunakbd.h" -#include "mainapp.h" #include "mainbus_luna.h" #include "mpu64180.h" #include "mpu680x0.h" #include "mpu88xx0.h" -#include "msxdos.h" #include "nmi.h" #include "power.h" #include "renderer.h" +#include "ssg.h" #include "xpbus.h" // @@ -32,6 +31,9 @@ VM_LUNA::VM_LUNA(const char *name_) : inherited(name_) { + // 実時間に同期したほうが便利。 + gConfig->SetDefault("clock-sync", "real"); + // RTC epoch は NetBSD/luna68k, OpenBSD/luna88k をデフォルトにしておく。 gConfig->SetDefault("rtc-epoch-year", 1970); @@ -61,6 +63,8 @@ VM_LUNA1::VM_LUNA1() : inherited("LUNA-I") { // 機種固有パラメータ + // MPU 種別。 + gConfig->SetDefault("mpu-type", "68030"); // MPU クロックの初期値は機種ごとに異なる。単位は MHz gConfig->SetDefault("mpu-clock", 20); // RAM 初期値は MAX にしておく @@ -71,8 +75,15 @@ VM_LUNA1::VM_LUNA1() gConfig->Add("!sysclk-freq", 60); // デバイス - NEWDV(MPU, new MPU680x0Device()); + NEWDV(MPU, NewMPU680x0Device()); NEWDV(Mainbus, new Luna1Mainbus()); + NEWDV(SSG, new SSGDevice()); + + // バーストアクセスたぶんあり + auto mpu680x0 = GetMPU680x0Device(pMPU.get()); + if (mpu680x0) { + mpu680x0->EnableBurstAccess(true); + } } // デストラクタ @@ -102,6 +113,8 @@ VM_LUNA88K::VM_LUNA88K() // デバイス (順序に注意) NEWDV(MPU, new MPU88xx0Device()); NEWDV(Mainbus, new Luna88kMainbus()); + + // バーストアクセスあり (m88k では常に有効) } // デストラクタ