public RealChip() { log.ForcedWrite("RealChip:Ctr:STEP 00(Start)"); int n = 0; try { nScci = new NScci.NScci(); n = nScci.NSoundInterfaceManager_.getInterfaceCount(); if (n == 0) { nScci.Dispose(); nScci = null; log.ForcedWrite("RealChip:Ctr:Not found SCCI."); } else { log.ForcedWrite(string.Format("RealChip:Ctr:Found SCCI.(Interface count={0})", n)); getScciInstances(); nScci.NSoundInterfaceManager_.setLevelDisp(false); } } catch { nScci = null; } log.ForcedWrite("RealChip:Ctr:STEP 01"); try { nc86ctl = new Nc86ctl.Nc86ctl(); nc86ctl.initialize(); n = nc86ctl.getNumberOfChip(); if (n == 0) { nc86ctl.deinitialize(); nc86ctl = null; log.ForcedWrite("RealChip:Ctr:Not found G.I.M.I.C."); } else { log.ForcedWrite(string.Format("RealChip:Ctr:Found G.I.M.I.C.(Interface count={0})", n)); Nc86ctl.NIRealChip nirc = nc86ctl.getChipInterface(0); nirc.reset(); } } catch { nc86ctl = null; } log.ForcedWrite("RealChip:Ctr:STEP 02(Success)"); }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { if (scci != null) { scci.Dispose(); scci = null; } if (c86 != null) { c86.deinitialize(); c86 = null; } }
public void Close() { if (nScci != null) { try { nScci.Dispose(); } catch { } nScci = null; } if (nc86ctl != null) { try { nc86ctl.deinitialize(); } catch { } nc86ctl = null; } }
private static RSoundChip CheckDevice() { SChipType ct = null; int iCount = 0; switch (device) { case 1: //GIMIC存在チェック nc86ctl = new Nc86ctl.Nc86ctl(); nc86ctl.initialize(); iCount = nc86ctl.getNumberOfChip(); if (iCount == 0) { nc86ctl.deinitialize(); nc86ctl = null; Log.WriteLine(LogLevel.ERROR, "Not found G.I.M.I.C."); device = 0; break; } for (int i = 0; i < iCount; i++) { NIRealChip rc = nc86ctl.getChipInterface(i); NIGimic2 gm = rc.QueryInterface(); ChipType cct = gm.getModuleType(); int o = -1; if (cct == ChipType.CHIP_YM2608 || cct == ChipType.CHIP_YMF288 || cct == ChipType.CHIP_YM2203) { ct = new SChipType(); ct.SoundLocation = -1; ct.BusID = i; string seri = gm.getModuleInfo().Serial; if (!int.TryParse(seri, out o)) { o = -1; ct = null; continue; } ct.SoundChip = o; ct.ChipName = gm.getModuleInfo().Devname; ct.InterfaceName = gm.getMBInfo().Devname; break; } } RC86ctlSoundChip rsc = null; if (ct == null) { nc86ctl.deinitialize(); nc86ctl = null; Log.WriteLine(LogLevel.ERROR, "Not found G.I.M.I.C.(OPNA module)"); device = 0; } else { rsc = new RC86ctlSoundChip(-1, ct.BusID, ct.SoundChip); rsc.c86ctl = nc86ctl; rsc.init(); rsc.SetMasterClock(7987200); //SoundBoardII rsc.setSSGVolume(63); //PC-8801 } return(rsc); case 2: //SCCI存在チェック nScci = new NScci.NScci(); iCount = nScci.NSoundInterfaceManager_.getInterfaceCount(); if (iCount == 0) { nScci.Dispose(); nScci = null; Log.WriteLine(LogLevel.ERROR, "Not found SCCI."); device = 0; break; } for (int i = 0; i < iCount; i++) { NSoundInterface iIntfc = nScci.NSoundInterfaceManager_.getInterface(i); NSCCI_INTERFACE_INFO iInfo = nScci.NSoundInterfaceManager_.getInterfaceInfo(i); int sCount = iIntfc.getSoundChipCount(); for (int s = 0; s < sCount; s++) { NSoundChip sc = iIntfc.getSoundChip(s); int t = sc.getSoundChipType(); if (t == 1) { ct = new SChipType(); ct.SoundLocation = 0; ct.BusID = i; ct.SoundChip = s; ct.ChipName = sc.getSoundChipInfo().cSoundChipName; ct.InterfaceName = iInfo.cInterfaceName; goto scciExit; } } } scciExit :; RScciSoundChip rssc = null; if (ct == null) { nScci.Dispose(); nScci = null; Log.WriteLine(LogLevel.ERROR, "Not found SCCI(OPNA module)."); device = 0; } else { rssc = new RScciSoundChip(0, ct.BusID, ct.SoundChip); rssc.scci = nScci; rssc.init(); } return(rssc); } return(null); }
private void Form1_Shown(object sender, EventArgs e) { for (int i = 0; i < 1; i++) { try { MsgDisp("SCCI:処理開始"); MsgDisp("SCCI:コンストラクタ開始"); scci = new NScci.NScci(); MsgDisp("SCCI:コンストラクタ終了"); MsgDisp("SCCI:getInterfaceCount開始"); int n = scci.NSoundInterfaceManager_.getInterfaceCount(); MsgDisp("SCCI:getInterfaceCount完了"); if (n == 0) { MsgDisp("SCCI:SCCI見つからず"); scci.Dispose(); scci = null; } else { for (int j = 0; j < n; j++) { MsgDisp(string.Format("SCCI:====================== Interface {0}", j)); MsgDisp("SCCI:getInterface 開始"); NSoundInterface nsif = scci.NSoundInterfaceManager_.getInterface(j); MsgDisp("SCCI:getInterface 完了"); MsgDisp("SCCI:getSoundChipCount 開始"); int c = nsif.getSoundChipCount(); MsgDisp("SCCI:getSoundChipCount 完了"); for (int k = 0; k < c; k++) { MsgDisp("SCCI:------------------- Chip Information"); MsgDisp("SCCI:getSoundChip 開始"); NSoundChip nsc = nsif.getSoundChip(k); MsgDisp("SCCI:getSoundChip 完了"); MsgDisp("SCCI:getSoundChipInfo 開始"); NSCCI_SOUND_CHIP_INFO nssci = nsc.getSoundChipInfo(); MsgDisp("SCCI:getSoundChipInfo 完了"); MsgDisp(string.Format("SCCI:cSoundChipName {0}", nssci.cSoundChipName)); MsgDisp(string.Format("SCCI:dClock {0}", nssci.dClock)); MsgDisp(string.Format("SCCI:iSoundChip {0}", nssci.iSoundChip)); MsgDisp(string.Format("SCCI:bIsUsed {0}", nssci.bIsUsed)); } } if (scci != null) { scci.Dispose(); scci = null; } } } catch (Exception escci) { MsgDisp("SCCI:Exception発生"); MsgDisp(string.Format("SCCI:Message:{0}", escci.Message)); MsgDisp(string.Format("SCCI:StackTrace:{0}", escci.StackTrace)); } try { MsgDisp("c86ctl:処理開始"); MsgDisp("c86ctl:Nc86ctl 開始"); c86 = new Nc86ctl.Nc86ctl(); MsgDisp("c86ctl:Nc86ctl 完了"); MsgDisp("c86ctl:initialize 開始"); c86.initialize(); MsgDisp("c86ctl:initialize 完了"); MsgDisp("c86ctl:getNumberOfChip 開始"); int nc = c86.getNumberOfChip(); MsgDisp("c86ctl:getNumberOfChip 完了"); if (nc == 0) { MsgDisp("c86ctl:deinitialize 開始"); c86.deinitialize(); MsgDisp("c86ctl:deinitialize 完了"); MsgDisp("c86ctl:c86ctl見つからず"); c86.Dispose(); c86 = null; } else { MsgDisp("c86ctl:getChipInterface 開始"); NIRealChip nirc = c86.getChipInterface(0); MsgDisp("c86ctl:getChipInterface 完了"); MsgDisp("c86ctl:reset 開始"); nirc.reset(); MsgDisp("c86ctl:reset 完了"); MsgDisp("c86ctl:QueryInterface 開始"); NIGimic2 nig = nirc.QueryInterface(); MsgDisp("c86ctl:QueryInterface 完了"); UInt16 aa = 0; UInt16 bb = 0; UInt16 cc = 0; UInt16 dd = 0; MsgDisp("c86ctl:getFWVer 開始"); nig.getFWVer(ref aa, ref bb, ref cc, ref dd); MsgDisp(string.Format("c86ctl:getFWVer 完了({0}.{1}.{2}.{3})", aa, bb, cc, dd)); MsgDisp("c86ctl:getMBInfo 開始"); Devinfo dv = nig.getMBInfo(); MsgDisp(string.Format("c86ctl:getMBInfo 完了 {0}", dv.Devname)); MsgDisp("c86ctl:getModuleType 開始"); ChipType tp = nig.getModuleType(); MsgDisp(string.Format("c86ctl:getModuleType 完了 {0}", tp)); MsgDisp("c86ctl:getModuleInfo 開始"); Devinfo di = nig.getModuleInfo(); MsgDisp(string.Format("c86ctl:getModuleInfo 完了 {0}", di.Devname)); MsgDisp("c86ctl:getSSGVolume 開始"); byte vol = nig.getSSGVolume(); MsgDisp(string.Format("c86ctl:getSSGVolume 完了 {0}", vol)); MsgDisp("c86ctl:getPLLClock 開始"); uint clock = nig.getPLLClock(); MsgDisp(string.Format("c86ctl:getPLLClock 完了 {0}", clock)); } } catch (Exception ec86) { MsgDisp("c86ctl:Exception発生"); MsgDisp(string.Format("c86ctl:Message:{0}", ec86.Message)); MsgDisp(string.Format("c86ctl:StackTrace:{0}", ec86.StackTrace)); } } }