diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core.meta b/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core.meta new file mode 100644 index 00000000..dc5545bc --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 799083da753bb1c4a906a6fbe48281d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core/MAME.Core.dll b/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core/MAME.Core.dll new file mode 100644 index 00000000..33c96eef Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core/MAME.Core.dll differ diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core/MAME.Core.dll.meta b/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core/MAME.Core.dll.meta new file mode 100644 index 00000000..e9ce1de3 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Plugins/Mame.Core/MAME.Core.dll.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 271a8a6401146c04ab5fb754032a2dd5 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME.meta new file mode 100644 index 00000000..e4690ced --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61f0db825f947a34b8a0fbd5817485ae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/UMAME.prefab b/AxibugEmuOnline.Client/Assets/Resources/MAME/UMAME.prefab new file mode 100644 index 00000000..2155aea7 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/UMAME.prefab @@ -0,0 +1,557 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3471319444171359706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319444171359701} + - component: {fileID: 3471319444171359703} + - component: {fileID: 3471319444171359700} + m_Layer: 5 + m_Name: Game + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3471319444171359701 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444171359706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3471319446025011658} + - {fileID: 3471319444327146586} + m_Father: {fileID: 3471319444310732615} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3471319444171359703 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444171359706} + m_CullTransparentMesh: 1 +--- !u!114 &3471319444171359700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444171359706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3471319444260926850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319444260926876} + - component: {fileID: 3471319444260926877} + m_Layer: 0 + m_Name: UMAME + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3471319444260926876 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444260926850} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3471319446102792544} + - {fileID: 3471319445075249870} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3471319444260926877 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444260926850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 49349ac585d920c4f937c48232c8dfd7, type: 3} + m_Name: + m_EditorClassIdentifier: + mUniVideoPlayer: {fileID: 0} + mFPS: {fileID: 0} + bQuickTestRom: 0 + mQuickTestRom: +--- !u!1 &3471319444310732612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319444310732615} + - component: {fileID: 3471319444310732608} + - component: {fileID: 3471319444310732609} + - component: {fileID: 3471319444310732614} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3471319444310732615 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444310732612} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3471319444171359701} + m_Father: {fileID: 3471319446102792544} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &3471319444310732608 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444310732612} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &3471319444310732609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444310732612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &3471319444310732614 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444310732612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &3471319444327146587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319444327146586} + - component: {fileID: 3471319444327146580} + - component: {fileID: 3471319444327146581} + m_Layer: 5 + m_Name: FPS + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3471319444327146586 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444327146587} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3471319444171359701} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 454.963, y: -46.19702} + m_SizeDelta: {x: 871.1646, y: 70.007} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3471319444327146580 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444327146587} + m_CullTransparentMesh: 1 +--- !u!114 &3471319444327146581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319444327146587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 41 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 107 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: fps +--- !u!1 &3471319445075249871 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319445075249870} + - component: {fileID: 3471319445075249864} + - component: {fileID: 3471319445075249865} + m_Layer: 0 + m_Name: Audio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3471319445075249870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319445075249871} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3471319444260926876} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &3471319445075249864 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319445075249871} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_Resource: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &3471319445075249865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319445075249871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89abab1d3b1020340a147d74e60751ce, type: 3} + m_Name: + m_EditorClassIdentifier: + m_as: {fileID: 3471319445075249864} +--- !u!1 &3471319446025011659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319446025011658} + - component: {fileID: 3471319446025011652} + - component: {fileID: 3471319446025011653} + m_Layer: 5 + m_Name: GameRawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3471319446025011658 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319446025011659} + m_LocalRotation: {x: 1, y: 0, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3471319444171359701} + m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1862.1006, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3471319446025011652 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319446025011659} + m_CullTransparentMesh: 1 +--- !u!114 &3471319446025011653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319446025011659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1 &3471319446102792545 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471319446102792544} + m_Layer: 0 + m_Name: Video + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3471319446102792544 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3471319446102792545} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3471319444310732615} + m_Father: {fileID: 3471319444260926876} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/UMAME.prefab.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/UMAME.prefab.meta new file mode 100644 index 00000000..e8a1f747 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/UMAME.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1cb6308e67105bf48aea153ebcdb2d76 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu.meta new file mode 100644 index 00000000..780194d0 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7288a5cba2eb779418cc490967d981b2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/000-lo.lo.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/000-lo.lo.bytes new file mode 100644 index 00000000..af71e079 Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/000-lo.lo.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/000-lo.lo.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/000-lo.lo.bytes.meta new file mode 100644 index 00000000..a8186523 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/000-lo.lo.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 65816e3cba19de446b225f8eead5ec1f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/1.png.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/1.png.bytes new file mode 100644 index 00000000..f27f069a Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/1.png.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/1.png.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/1.png.bytes.meta new file mode 100644 index 00000000..ea4912f8 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/1.png.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8653d87eab52e6941a87038ef06a2dea +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/cus64-64a1.mcu.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/cus64-64a1.mcu.bytes new file mode 100644 index 00000000..48e314f0 Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/cus64-64a1.mcu.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/cus64-64a1.mcu.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/cus64-64a1.mcu.bytes.meta new file mode 100644 index 00000000..74537d77 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/cus64-64a1.mcu.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 59fd575d698130a43a79dc166d4051d3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/mame.xml.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/mame.xml.bytes new file mode 100644 index 00000000..dafa9ea7 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/mame.xml.bytes @@ -0,0 +1,8046 @@ + + + + + airduel + 270 + Air Duel (Japan, M72) + 1990 + Irem + + + + + + + + Lightning Swords + 1991 + Irem + + + ltswords + + Ken-Go (set 1) + 1991 + Irem + + + ltswords + + Ken-Go (set 2) + 1991 + Irem + + + + + + Gunforce - Battle Fire Engulfed Terror Island (World) + 1991 + Irem + + + gunforce + + Gunforce - Battle Fire Engulfed Terror Island (Japan) + 1991 + Irem + + + gunforce + + Gunforce - Battle Fire Engulfed Terror Island (US) + 1991 + Irem America + + + + + Blade Master (World) + 1991 + Irem + + + bmaster + + Cross Blades! (Japan) + 1991 + Irem + + + + 270 + Lethal Thunder (World) + 1991 + Irem + + + lethalth + 270 + Thunder Blaster (Japan) + 1991 + Irem + + + + + Undercover Cops (World) + 1992 + Irem + + + uccops + + Undercover Cops (US) + 1992 + Irem + + + uccops + + Undercover Cops - Alpha Renewal Version + 1992 + Irem + + + uccops + + Undercover Cops (Japan) + 1992 + Irem + + + + + Mystic Riders (World) + 1992 + Irem + + + mysticri + + Mahou Keibitai Gun Hohki (Japan) + 1992 + Irem + + + + + + Major Title 2 (World, set 1) + 1992 + Irem + + + + majtitl2 + + Major Title 2 (Japan) + 1992 + Irem + + + majtitl2 + + The Irem Skins Game (US set 1) + 1992 + Irem America + + + majtitl2 + + The Irem Skins Game (US set 2) + 1992 + Irem America + + + + + Hook (World) + 1992 + Irem + + + hook + + Hook (US) + 1992 + Irem America + + + hook + + Hook (Japan) + 1992 + Irem + + + + + + R-Type Leo (World) + 1992 + Irem + + + rtypeleo + + R-Type Leo (Japan) + 1992 + Irem + + + + + In The Hunt (World) + 1993 + Irem + + + inthunt + + In The Hunt (US) + 1993 + Irem America + + + inthunt + + Kaitei Daisensou (Japan) + 1993 + Irem + + + + + Ninja Baseball Bat Man (World) + 1993 + Irem + + + nbbatman + + Ninja Baseball Bat Man (US) + 1993 + Irem America + + + nbbatman + + Yakyuu Kakutou League-Man (Japan) + 1993 + Irem + + + + + + Superior Soldiers (US) + 1993 + Irem America + + + ssoldier + + Perfect Soldiers (Japan) + 1993 + Irem + + + + + + Gun Force II (US) + 1994 + Irem + + + gunforc2 + + Geo Storm (Japan) + 1994 + Irem + + + + 90 + Tokio / Scramble Formation (newer) + 1986 + Taito Corporation + + + tokio + 90 + Tokio / Scramble Formation (older) + 1986 + Taito Corporation + + + tokio + 90 + Tokio / Scramble Formation (US) + 1986 + Taito America Corporation (Romstar license) + + + tokio + 90 + Tokio / Scramble Formation (bootleg) + 1986 + bootleg + + + + + Bubble Bobble (Japan, Ver 0.1) + 1986 + Taito Corporation + + + bublbobl + + Bubble Bobble (Japan, Ver 0.0) + 1986 + Taito Corporation + + + bublbobl + + Bubble Bobble (US, Ver 5.1) + 1986 + Taito America Corporation (Romstar license) + + + bublbobl + + Bubble Bobble (US, Ver 1.0) + 1986 + Taito America Corporation (Romstar license) + + + bublbobl + + Bobble Bobble (bootleg of Bubble Bobble) + 1986 + bootleg + + + bublbobl + + Super Bobble Bobble (bootleg, set 1) + 1986 + bootleg (Datsu) + + + bublbobl + + Super Bobble Bobble (bootleg, set 2) + 1986 + bootleg + + + bublbobl + + Super Bobble Bobble (bootleg, set 3) + 1986 + bootleg + + + bublbobl + + Super Bobble Bobble (bootleg, set 4) + 1986 + bootleg + + + bublbobl + + Super Bubble Bobble (bootleg) + 1986 + bootleg + + + bublbobl + + Bubble Bobble (bootleg with 68705) + 1986 + bootleg + + + bublbobl + + Dream Land / Super Dream Land (bootleg of Bubble Bobble) + 1987 + bootleg + + + bublbobl + + Bubble Bobble ('bootleg redux' hack for Bobble Bobble PCB) + 2013 + bootleg (Punji) + + + bublbobl + + Bubble Bobble (for Bobble Bobble PCB) + 2013 + bootleg (Aladar) + + + bublbobl + + Bubble Bobble: Lost Cave V1.2 + 2013 + hack (Bisboch and Aladar) + + + bublbobl + + Bubble Bobble: Lost Cave V1.2 (for Bobble Bobble PCB) + 2013 + hack (Bisboch and Aladar) + + + bublbobl + + Bubble Bobble: Lost Cave V1.1 + 2012 + hack (Bisboch and Aladar) + + + bublbobl + + Bubble Bobble: Lost Cave V1.0 + 2012 + hack (Bisboch and Aladar) + + + + + Operation Wolf (World, set 1) + 1987 + Taito Corporation Japan + + + opwolf + + Operation Wolf (World, set 2) + 1987 + Taito Corporation Japan + + + opwolf + + Operation Wolf (Japan) + 1987 + Taito Corporation + + + opwolf + + Operation Wolf (US) + 1987 + Taito America Corporation + + + opwolf + + Operation Bear (bootleg of Operation Wolf) + 1987 + bootleg (Bear Corporation Korea) + + + opwolf + + Operation Wolf (Japan, prototype) + 1987 + Taito Corporation + + + + + + Silent Dragon (World) + 1992 + Taito Corporation Japan + + + silentd + + Silent Dragon (Japan) + 1992 + Taito Corporation + + + silentd + + Silent Dragon (US) + 1992 + Taito America Corporation + + + + + + Puzzle Bobble (Japan, B-System) + 1994 + Taito Corporation + + + + + + Ghosts'n Goblins (World? set 1) + 1985 + Capcom + + + gng + + Ghosts'n Goblins (World? set 2) + 1985 + Capcom + + + gng + + Ghosts'n Goblins (bootleg with Cross) + 1985 + bootleg + + + gng + + Ghosts'n Goblins (prototype) + 1985 + Capcom + + + gng + + Ghosts'n Goblins (Italian bootleg, harder) + 1985 + bootleg + + + gng + + Ghosts'n Goblins (World? set 3) + 1985 + Capcom + + + gng + + Ghosts'n Goblins (US) + 1985 + Capcom (Taito America license) + + + gng + + Makai-Mura (Japan) + 1985 + Capcom + + + gng + + Makai-Mura (Japan Revision C) + 1985 + Capcom + + + gng + + Makai-Mura (Japan Revision G) + 1985 + Capcom + + + + + Diamond Run + 1989 + KH Video + + + + + Street Fighter (US, set 1) + 1987 + Capcom + + + sf + + Street Fighter (US, set 2) (protected) + 1987 + Capcom + + + sf + + Street Fighter (Japan) (protected) + 1987 + Capcom + + + sf + + Street Fighter (Japan, pneumatic buttons) + 1987 + Capcom + + + sf + + Street Fighter (World, pneumatic buttons) + 1987 + Capcom + + + sf + + Street Fighter (prototype) + 1987 + Capcom + + + + + Forgotten Worlds (World, newer) + 1988 + Capcom + + + forgottn + + Forgotten Worlds (World) + 1988 + Capcom + + + forgottn + + Forgotten Worlds (USA, B-Board 88621B-2, Rev. C) + 1988 + Capcom + + + forgottn + + Forgotten Worlds (USA, B-Board 88618B-2, Rev. E) + 1988 + Capcom + + + forgottn + + Forgotten Worlds (USA, B-Board 88618B-2, Rev. C) + 1988 + Capcom + + + forgottn + + Forgotten Worlds (USA, B-Board 88618B-2, Rev. A) + 1988 + Capcom + + + forgottn + + Forgotten Worlds (USA, B-Board 88618B-2, Rev. AA) + 1988 + Capcom + + + forgottn + + Lost Worlds (Japan) + 1988 + Capcom + + + forgottn + + Lost Worlds (Japan Old Ver.) + 1988 + Capcom + + + + + Ghouls'n Ghosts (World) + 1988 + Capcom + + + ghouls + + Ghouls'n Ghosts (USA) + 1988 + Capcom + + + ghouls + + Daimakaimura (Japan) + 1988 + Capcom + + + ghouls + + Daimakaimura (Japan Resale Ver.) + 1988 + Capcom + + + + + Strider (USA, B-Board 89624B-2) + 1989 + Capcom + + + strider + + Strider (USA, B-Board 89624B-3) + 1989 + Capcom + + + strider + + Strider (USA, B-Board 90629B-3, buggy Street Fighter II conversion) + 1989 + bootleg (Capcom) + + + strider + + Strider Hiryu (Japan) + 1989 + Capcom + + + strider + + Strider Hiryu (Japan Resale Ver.) + 1989 + Capcom + + + + + Dynasty Wars (USA, B-Board 89624B-?) + 1989 + Capcom + + + dynwar + + Dynasty Wars (USA, B-Board 88622B-3) + 1989 + Capcom + + + dynwar + + Tenchi wo Kurau (Japan) + 1989 + Capcom + + + dynwar + + Tenchi wo Kurau (Japan Resale Ver.) + 1989 + Capcom + + + + + Willow (World) + 1989 + Capcom + + + willow + + Willow (USA) + 1989 + Capcom + + + willow + + Willow (USA Old Ver.) + 1989 + Capcom + + + willow + + Willow (Japan) + 1989 + Capcom + + + + + U.N. Squadron (US) + 1989 + Capcom / Daipro + + + unsquad + + Area 88 (Japan) + 1989 + Capcom / Daipro + + + unsquad + + Area 88 (Japan Resale Ver.) + 1989 + Capcom / Daipro + + + + + Final Fight (World, set 1) + 1989 + Capcom + + + ffight + + Final Fight (World, set 2) + 1989 + Capcom + + + ffight + + Final Fight (USA, set 1) + 1989 + Capcom + + + ffight + + Final Fight (USA, set 2) + 1989 + Capcom + + + ffight + + Final Fight (USA 900112) + 1989 + Capcom + + + ffight + + Final Fight (USA 900424) + 1989 + Capcom + + + ffight + + Final Fight (USA 900613) + 1989 + Capcom + + + ffight + + Final Fight (Japan) + 1989 + Capcom + + + ffight + + Final Fight (Japan 900112) + 1989 + Capcom + + + ffight + + Final Fight (Japan 900305) + 1989 + Capcom + + + ffight + + Final Fight (Japan 900613) + 1989 + Capcom + + + ffight + + Street Smart / Final Fight (Japan, hack) + 1989 + bootleg + + + + 270 + 1941: Counter Attack (World 900227) + 1990 + Capcom + + + 1941 + 270 + 1941: Counter Attack (World) + 1990 + Capcom + + + 1941 + 270 + 1941: Counter Attack (USA 900227) + 1990 + Capcom + + + 1941 + 270 + 1941: Counter Attack (Japan) + 1990 + Capcom + + + + 270 + Mercs (World 900302) + 1990 + Capcom + + + mercs + 270 + Mercs (USA 900608) + 1990 + Capcom + + + mercs + 270 + Mercs (USA 900302) + 1990 + Capcom + + + mercs + 270 + Senjou no Ookami II (Japan 900302) + 1990 + Capcom + + + + + Mega Twins (World 900619) + 1990 + Capcom + + + mtwins + + Chiki Chiki Boys (Japan 900619) + 1990 + Capcom + + + + + Magic Sword: Heroic Fantasy (World 900725) + 1990 + Capcom + + + msword + + Magic Sword: Heroic Fantasy (World 900623) + 1990 + Capcom + + + msword + + Magic Sword: Heroic Fantasy (USA 900725) + 1990 + Capcom + + + msword + + Magic Sword: Heroic Fantasy (Japan 900623) + 1990 + Capcom + + + + + Carrier Air Wing (World 901012) + 1990 + Capcom + + + cawing + + Carrier Air Wing (World 901009) + 1990 + Capcom + + + cawing + + Carrier Air Wing (USA 901012) + 1990 + Capcom + + + cawing + + U.S. Navy (Japan 901012) + 1990 + Capcom + + + + + Nemo (World 901130) + 1990 + Capcom + + + nemo + + Nemo (World 901109) + 1990 + Capcom + + + nemo + + Nemo (Japan 901120) + 1990 + Capcom + + + + + Street Fighter II: The World Warrior (World 910522) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (World 910214) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (World 910318) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (World 910228) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910206) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910214) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910306) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910318) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910228) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910411) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910522, Rev. G) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 910522, Rev. I) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (USA 911101) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (Japan 911210) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (Japan 910214) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (Japan 910306) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (Japan 910411) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (Japan 910522) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (Japan 920312) + 1991 + Capcom + + + sf2 + + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 1) + 1992 + bootleg + + + sf2 + + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 3) + 1992 + bootleg + + + sf2 + + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 4) + 1992 + bootleg + + + sf2 + + Street Fighter II: The World Warrior (Quicken Pt-I, bootleg) + 1991 + bootleg + + + sf2 + + Street Fighter II: The World Warrior (Thunder Edition, bootleg) + 1991 + bootleg + + + + + Three Wonders (World 910520) + 1991 + Capcom + + + 3wonders + + Three Wonders (World 910513) + 1991 + Capcom + + + 3wonders + + Three Wonders (USA 910520) + 1991 + Capcom + + + 3wonders + + Wonder 3 (Japan 910520) + 1991 + Capcom + + + 3wonders + + Three Wonders (bootleg) + 1991 + bootleg + + + 3wonders + + Three Wonders (hack) + 1991 + bootleg + + + + + The King of Dragons (World 910805) + 1991 + Capcom + + + kod + + The King of Dragons (World 910711) + 1991 + Capcom + + + kod + + The King of Dragons (USA 910910) + 1991 + Capcom + + + kod + + The King of Dragons (Japan 910805, B-Board 90629B-3) + 1991 + Capcom + + + kod + + The King of Dragons (Japan 910805, B-Board 89625B-1) + 1991 + Capcom + + + + + Captain Commando (World 911202) + 1991 + Capcom + + + captcomm + + Captain Commando (World 911014) + 1991 + Capcom + + + captcomm + + Captain Commando (USA 910928) + 1991 + Capcom + + + captcomm + + Captain Commando (Japan 911202) + 1991 + Capcom + + + captcomm + + Captain Commando (Japan 910928) + 1991 + Capcom + + + captcomm + + Captain Commando (bootleg) + 1991 + bootleg + + + + + Knights of the Round (World 911127) + 1991 + Capcom + + + knights + + Knights of the Round (USA 911127) + 1991 + Capcom + + + knights + + Knights of the Round (Japan 911127, B-Board 91634B-2) + 1991 + Capcom + + + knights + + Knights of the Round (Japan 911127, B-Board 89625B-1) + 1991 + Capcom + + + + + Street Fighter II': Champion Edition (World 920513) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (World 920313) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (USA 920313) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (USA 920513) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (USA 920803) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (Japan 920322) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (Japan 920513) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (Japan 920803) + 1992 + Capcom + + + sf2ce + + Street Fighter II': Champion Edition (Hung Hsi, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Rainbow, bootleg, set 1) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Rainbow, bootleg, set 2) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Rainbow, bootleg, set 3) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Red Wave, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (V004, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Accelerator!, bootleg, set 2) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Accelerator Pt.II, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (L735 Test Rom, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (protected bootleg on non-dash board) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition ('Taiwan' bootleg with PAL) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M2, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M3, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M4, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M5, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M6, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M7, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M8, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (M10, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (YYC, bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg) + 1992 + bootleg + + + sf2ce + + Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg) + 1992 + bootleg + + + + + Adventure Quiz Capcom World 2 (Japan 920611) + 1992 + Capcom + + + cworld2j + + Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery) + 1992 + Capcom + + + cworld2j + + Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2) + 1992 + Capcom + + + + 270 + Varth: Operation Thunderstorm (World 920714) + 1992 + Capcom + + + varth + 270 + Varth: Operation Thunderstorm (World 920612) + 1992 + Capcom + + + varth + 270 + Varth: Operation Thunderstorm (USA 920612) + 1992 + Capcom (Romstar license) + + + varth + 270 + Varth: Operation Thunderstorm (Japan 920714) + 1992 + Capcom + + + varth + 270 + Varth: Operation Thunderstorm (Japan Resale Ver. 920714) + 1992 + Capcom + + + + + Quiz & Dragons: Capcom Quiz Game (USA 920701) + 1992 + Capcom + + + qad + + Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921) + 1994 + Capcom + + + + + Warriors of Fate (World 921031) + 1992 + Capcom + + + wof + + Warriors of Fate (World 921002) + 1992 + Capcom + + + wof + + Warriors of Fate (USA 921031) + 1992 + Capcom + + + wof + + Sangokushi II (Asia 921005) + 1992 + Capcom + + + wof + + Tenchi wo Kurau II: Sekiheki no Tatakai (Japan 921031) + 1992 + Capcom + + + + + Huo Feng Huang (Chinese bootleg of Sangokushi II) + 1999 + bootleg + + + + + Street Fighter II': Hyper Fighting (World 921209) + 1992 + Capcom + + + sf2hf + + Street Fighter II': Hyper Fighting (USA 921209) + 1992 + Capcom + + + sf2hf + + Street Fighter II' Turbo: Hyper Fighting (Japan 921209) + 1992 + Capcom + + + + + Cadillacs and Dinosaurs (World 930201) + 1993 + Capcom + + + dino + + Cadillacs and Dinosaurs (USA 930201) + 1993 + Capcom + + + dino + + Cadillacs: Kyouryuu Shin Seiki (Japan 930201) + 1993 + Capcom + + + + + Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs) + 1993 + bootleg + + + + + The Punisher (World 930422) + 1993 + Capcom + + + punisher + + The Punisher (USA 930422) + 1993 + Capcom + + + punisher + + The Punisher (Hispanic 930422) + 1993 + Capcom + + + punisher + + The Punisher (Japan 930422) + 1993 + Capcom + + + + + Biaofeng Zhanjing (Chinese bootleg of The Punisher) + 1993 + bootleg + + + + + Saturday Night Slam Masters (World 930713) + 1993 + Capcom + + + slammast + + Saturday Night Slam Masters (USA 930713) + 1993 + Capcom + + + slammast + + Muscle Bomber: The Body Explosion (Japan 930713) + 1993 + Capcom + + + + + Muscle Bomber Duo: Ultimate Team Battle (World 931206) + 1993 + Capcom + + + mbombrd + + Muscle Bomber Duo: Heat Up Warriors (Japan 931206) + 1993 + Capcom + + + + + Pnickies (Japan 940608) + 1994 + Compile (Capcom license) + + + + + Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123) + 1995 + Capcom + + + + + Mega Man: The Power Battle (CPS1, USA 951006) + 1995 + Capcom + + + megaman + + Mega Man: The Power Battle (CPS1, Asia 951006) + 1995 + Capcom + + + megaman + + Rockman: The Power Battle (CPS1, Japan 950922) + 1995 + Capcom + + + + + + Pokonyan! Balloon (Japan 940322) + 1994 + Capcom + + + + + Pang! 3 (Euro 950601) + 1995 + Mitchell + + + pang3 + + Pang! 3 (Euro 950511) + 1995 + Mitchell + + + pang3 + + Pang! 3: Kaitou Tachi no Karei na Gogo (Japan 950511) + 1995 + Mitchell + + + pang3 + + Pang! 3 (bootleg) + 1995 + bootleg + + + + + Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031) + 1994 + Capcom + + + + + Street Fighter Zero (CPS Changer, Japan 951020) + 1995 + Capcom + + + sfzch + + Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727) + 1995 + Capcom + + + sfzch + + Street Fighter Zero (CPS Changer, Brazil 950727) + 1995 + Capcom + + + + + Super Street Fighter II: The New Challengers (World 931005) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (World 930911) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (USA 930911) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (Asia 931005) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (Asia 930914) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (Japan 931005) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (Japan 930911) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (Japan 930910) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The New Challengers (Hispanic 930911) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The Tournament Battle (World 931119) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The Tournament Battle (World 930911) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The Tournament Battle (Japan 931005) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The Tournament Battle (Japan 930911) + 1993 + Capcom + + + ssf2 + + Super Street Fighter II: The Tournament Battle (Hispanic 931005) + 1993 + Capcom + + + + + Eco Fighters (World 931203) + 1993 + Capcom + + + ecofghtr + + Eco Fighters (USA 940215) + 1993 + Capcom + + + ecofghtr + + Eco Fighters (USA 931203) + 1993 + Capcom + + + ecofghtr + + Ultimate Ecology (Japan 931203) + 1993 + Capcom + + + ecofghtr + + Eco Fighters (Asia 931203) + 1993 + Capcom + + + ecofghtr + + Eco Fighters (Hispanic 931203) + 1993 + Capcom + + + + + Dungeons & Dragons: Tower of Doom (Euro 940412) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Euro 940113) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (USA 940125) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (USA 940113) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Japan 940412) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Japan 940125) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Japan 940113) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Asia 940412) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Asia 940113) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Hispanic 940412) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Hispanic 940125) + 1993 + Capcom + + + ddtod + + Dungeons & Dragons: Tower of Doom (Hispanic 940113) + 1993 + Capcom + + + + + Super Street Fighter II Turbo (World 940223) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II Turbo (Asia 940223) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II Turbo (Hispanic 940223) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II Turbo (USA 940323) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II Turbo (USA 940223) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II X: Grand Master Challenge (Japan 940311) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II X: Grand Master Challenge (Japan 940223) + 1994 + Capcom + + + ssf2t + + Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version) + 1994 + Capcom + + + + + Alien vs. Predator (Euro 940520) + 1994 + Capcom + + + avsp + + Alien vs. Predator (USA 940520) + 1994 + Capcom + + + avsp + + Alien vs. Predator (Japan 940520) + 1994 + Capcom + + + avsp + + Alien vs. Predator (Asia 940520) + 1994 + Capcom + + + avsp + + Alien vs. Predator (Hispanic 940520) + 1994 + Capcom + + + + + Darkstalkers: The Night Warriors (Euro 940705) + 1994 + Capcom + + + dstlk + + Darkstalkers: The Night Warriors (USA 940818) + 1994 + Capcom + + + dstlk + + Darkstalkers: The Night Warriors (USA 940705) + 1994 + Capcom + + + dstlk + + Darkstalkers: The Night Warriors (Asia 940705) + 1994 + Capcom + + + dstlk + + Darkstalkers: The Night Warriors (Hispanic 940818) + 1994 + Capcom + + + dstlk + + Vampire: The Night Warriors (Japan 940705) + 1994 + Capcom + + + dstlk + + Vampire: The Night Warriors (Japan 940705 alt) + 1994 + Capcom + + + dstlk + + Vampire: The Night Warriors (Japan 940630) + 1994 + Capcom + + + + + Ring of Destruction: Slammasters II (Euro 940902) + 1994 + Capcom + + + ringdest + + Ring of Destruction: Slammasters II (Asia 940831) + 1994 + Capcom + + + ringdest + + Ring of Destruction: Slammasters II (Hispanic 940902) + 1994 + Capcom + + + ringdest + + Super Muscle Bomber: The International Blowout (Japan 940831) + 1994 + Capcom + + + ringdest + + Super Muscle Bomber: The International Blowout (Japan 940808) + 1994 + Capcom + + + + + Armored Warriors (Euro 941024) + 1994 + Capcom + + + armwar + + Armored Warriors (Euro 941011) + 1994 + Capcom + + + armwar + + Armored Warriors (USA 941024) + 1994 + Capcom + + + armwar + + Armored Warriors (USA 940920) + 1994 + Capcom + + + armwar + + Powered Gear: Strategic Variant Armor Equipment (Japan 941024) + 1994 + Capcom + + + armwar + + Powered Gear: Strategic Variant Armor Equipment (Japan 940916) + 1994 + Capcom + + + armwar + + Armored Warriors (Asia 941024) + 1994 + Capcom + + + armwar + + Armored Warriors (Asia 940920) + 1994 + Capcom + + + + + X-Men: Children of the Atom (Euro 950331) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Euro 950105) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (USA 950105) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Hispanic 950331) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Hispanic 950105) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Japan 950105) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Japan 941222) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Japan 941219) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Japan 941217) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Japan 941208 rent version) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Asia 950105) + 1994 + Capcom + + + xmcota + + X-Men: Children of the Atom (Asia 941217) + 1994 + Capcom + + + + + Night Warriors: Darkstalkers' Revenge (Euro 950316) + 1995 + Capcom + + + nwarr + + Night Warriors: Darkstalkers' Revenge (USA 950406) + 1995 + Capcom + + + nwarr + + Night Warriors: Darkstalkers' Revenge (Hispanic 950403) + 1995 + Capcom + + + nwarr + + Night Warriors: Darkstalkers' Revenge (Brazil 950403) + 1995 + Capcom + + + nwarr + + Night Warriors: Darkstalkers' Revenge (Asia 950302) + 1995 + Capcom + + + nwarr + + Vampire Hunter: Darkstalkers' Revenge (Japan 950316) + 1995 + Capcom + + + nwarr + + Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version) + 1995 + Capcom + + + nwarr + + Vampire Hunter: Darkstalkers' Revenge (Japan 950307) + 1995 + Capcom + + + nwarr + + Vampire Hunter: Darkstalkers' Revenge (Japan 950302) + 1995 + Capcom + + + + + Cyberbots: Fullmetal Madness (Euro 950424) + 1995 + Capcom + + + cybots + + Cyberbots: Fullmetal Madness (USA 950424) + 1995 + Capcom + + + cybots + + Cyberbots: Fullmetal Madness (Japan 950420) + 1995 + Capcom + + + + + Street Fighter Alpha: Warriors' Dreams (Euro 950727) + 1995 + Capcom + + + sfa + + Street Fighter Alpha: Warriors' Dreams (Euro 950718) + 1995 + Capcom + + + sfa + + Street Fighter Alpha: Warriors' Dreams (Euro 950627) + 1995 + Capcom + + + sfa + + Street Fighter Alpha: Warriors' Dreams (Euro 950605) + 1995 + Capcom + + + sfa + + Street Fighter Alpha: Warriors' Dreams (USA 950627) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Asia 950627) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Asia 950605) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Japan 950727) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Japan 950627) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Japan 950605) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Hispanic 950718) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Hispanic 950627) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Brazil 951109) + 1995 + Capcom + + + sfa + + Street Fighter Zero (Brazil 950727) + 1995 + Capcom + + + + + Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version) + 1995 + Capcom + + + mmancp2u + + Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version) + 1995 + Capcom + + + mmancp2u + + Rockman: The Power Battle (CPS2, Japan 950922) + 1995 + Capcom + + + + + Marvel Super Heroes (Euro 951024) + 1995 + Capcom + + + msh + + Marvel Super Heroes (USA 951024) + 1995 + Capcom + + + msh + + Marvel Super Heroes (Japan 951117) + 1995 + Capcom + + + msh + + Marvel Super Heroes (Japan 951024) + 1995 + Capcom + + + msh + + Marvel Super Heroes (Asia 951024) + 1995 + Capcom + + + msh + + Marvel Super Heroes (Hispanic 951117) + 1995 + Capcom + + + msh + + Marvel Super Heroes (Brazil 951117) + 1995 + Capcom + + + + 270 + 19XX: The War Against Destiny (USA 951207) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Asia 960104) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Asia 951207) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Japan 960104, yellow case) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Japan 951225) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Japan 951207) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Hispanic 951218) + 1996 + Capcom + + + 19xx + 270 + 19XX: The War Against Destiny (Brazil 951218) + 1996 + Capcom + + + + + Dungeons & Dragons: Shadow over Mystara (Euro 960619) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Euro 960223) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Euro 960209) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Euro 960208) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (USA 960619) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (USA 960209) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Japan 960619) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Japan 960206) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Asia 960619) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Asia 960208) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Hispanic 960223) + 1996 + Capcom + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (Brazil 960223) + 1996 + Capcom + + + + + Street Fighter Alpha 2 (Euro 960229) + 1996 + Capcom + + + sfa2 + + Street Fighter Alpha 2 (USA 960430) + 1996 + Capcom + + + sfa2 + + Street Fighter Alpha 2 (USA 960306) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Japan 960430) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Japan 960227) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Asia 960227) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Brazil 960531) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Brazil 960304) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Hispanic 960304) + 1996 + Capcom + + + sfa2 + + Street Fighter Zero 2 (Oceania 960229) + 1996 + Capcom + + + + + Street Fighter Zero 2 Alpha (Asia 960826) + 1996 + Capcom + + + sfz2al + + Street Fighter Zero 2 Alpha (Japan 960805) + 1996 + Capcom + + + sfz2al + + Street Fighter Zero 2 Alpha (Hispanic 960813) + 1996 + Capcom + + + sfz2al + + Street Fighter Zero 2 Alpha (Brazil 960813) + 1996 + Capcom + + + + + Super Puzzle Fighter II Turbo (Euro 960529) + 1996 + Capcom + + + spf2t + + Super Puzzle Fighter II Turbo (USA 960620) + 1996 + Capcom + + + spf2t + + Super Puzzle Fighter II X (Japan 960531) + 1996 + Capcom + + + spf2t + + Super Puzzle Fighter II Turbo (Asia 960529) + 1996 + Capcom + + + spf2t + + Super Puzzle Fighter II Turbo (Hispanic 960531) + 1996 + Capcom + + + + + Mega Man 2: The Power Fighters (USA 960708) + 1996 + Capcom + + + megaman2 + + Mega Man 2: The Power Fighters (Asia 960708) + 1996 + Capcom + + + megaman2 + + Rockman 2: The Power Fighters (Japan 960708) + 1996 + Capcom + + + megaman2 + + Mega Man 2: The Power Fighters (Hispanic 960712) + 1996 + Capcom + + + + + Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826) + 1996 + Capcom + + + + + X-Men Vs. Street Fighter (Euro 961004) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Euro 960910) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (USA 961023) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (USA 961004) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (USA 960910) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Japan 961023) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Japan 961004) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Japan 960910) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Japan 960909) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Asia 961023) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Asia 961004) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Asia 960919) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Asia 960910) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Hispanic 961004) + 1996 + Capcom + + + xmvsf + + X-Men Vs. Street Fighter (Brazil 961023) + 1996 + Capcom + + + + + Battle Circuit (Euro 970319) + 1997 + Capcom + + + batcir + + Battle Circuit (Asia 970319) + 1997 + Capcom + + + batcir + + Battle Circuit (Japan 970319) + 1997 + Capcom + + + + + Vampire Savior: The Lord of Vampire (Euro 970519) + 1997 + Capcom + + + vsav + + Vampire Savior: The Lord of Vampire (USA 970519) + 1997 + Capcom + + + vsav + + Vampire Savior: The Lord of Vampire (Japan 970519) + 1997 + Capcom + + + vsav + + Vampire Savior: The Lord of Vampire (Asia 970519) + 1997 + Capcom + + + vsav + + Vampire Savior: The Lord of Vampire (Hispanic 970519) + 1997 + Capcom + + + + + Marvel Super Heroes Vs. Street Fighter (Euro 970625) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (USA 970827) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (USA 970625) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Japan 970707) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Japan 970702) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Japan 970625) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Hispanic 970625) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Asia 970625) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Asia 970620) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Brazil 970827) + 1997 + Capcom + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (Brazil 970625) + 1997 + Capcom + + + + + Capcom Sports Club (Euro 971017) + 1997 + Capcom + + + csclub + + Capcom Sports Club (Euro 970722) + 1997 + Capcom + + + csclub + + Capcom Sports Club (Asia 970722) + 1997 + Capcom + + + csclub + + Capcom Sports Club (Japan 970722) + 1997 + Capcom + + + csclub + + Capcom Sports Club (Japan 970722, yellow case) + 1997 + Capcom + + + csclub + + Capcom Sports Club (Hispanic 970722) + 1997 + Capcom + + + + + Super Gem Fighter Mini Mix (USA 970904) + 1997 + Capcom + + + sgemf + + Pocket Fighter (Japan 970904) + 1997 + Capcom + + + sgemf + + Super Gem Fighter: Mini Mix (Asia 970904) + 1997 + Capcom + + + sgemf + + Super Gem Fighter: Mini Mix (Hispanic 970904) + 1997 + Capcom + + + + + Vampire Hunter 2: Darkstalkers Revenge (Japan 970929) + 1997 + Capcom + + + vhunt2 + + Vampire Hunter 2: Darkstalkers Revenge (Japan 970913) + 1997 + Capcom + + + + + Vampire Savior 2: The Lord of Vampire (Japan 970913) + 1997 + Capcom + + + + + Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (USA 980123) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (USA 971222) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123) + 1998 + Capcom + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123) + 1998 + Capcom + + + + + Street Fighter Alpha 3 (Euro 980904) + 1998 + Capcom + + + sfa3 + + Street Fighter Alpha 3 (USA 980904) + 1998 + Capcom + + + sfa3 + + Street Fighter Alpha 3 (USA 980629) + 1998 + Capcom + + + sfa3 + + Street Fighter Alpha 3 (USA 980616, SAMPLE Version) + 1998 + Capcom + + + sfa3 + + Street Fighter Alpha 3 (Hispanic 980904) + 1998 + Capcom + + + sfa3 + + Street Fighter Alpha 3 (Hispanic 980629) + 1998 + Capcom + + + sfa3 + + Street Fighter Alpha 3 (Brazil 980629) + 1998 + Capcom + + + sfa3 + + Street Fighter Zero 3 (Japan 980904) + 1998 + Capcom + + + sfa3 + + Street Fighter Zero 3 (Japan 980727) + 1998 + Capcom + + + sfa3 + + Street Fighter Zero 3 (Japan 980629) + 1998 + Capcom + + + sfa3 + + Street Fighter Zero 3 (Asia 980904) + 1998 + Capcom + + + sfa3 + + Street Fighter Zero 3 (Asia 980701) + 1998 + Capcom + + + + + Jyangokushi: Haoh no Saihai (Japan 990527) + 1999 + Capcom + + + + + Hyper Street Fighter II: The Anniversary Edition (USA 040202) + 2004 + Capcom + + + hsf2 + + Hyper Street Fighter II: The Anniversary Edition (Asia 040202) + 2004 + Capcom + + + hsf2 + + Hyper Street Fighter II: The Anniversary Edition (Japan 040202) + 2004 + Capcom + + + hsf2 + + Hyper Street Fighter II: The Anniversary Edition (Japan 031222) + 2004 + Capcom + + + + + Giga Wing (USA 990222) + 1999 + Takumi (Capcom license) + + + gigawing + + Giga Wing (Japan 990223) + 1999 + Takumi (Capcom license) + + + gigawing + + Giga Wing (Asia 990222) + 1999 + Takumi (Capcom license) + + + gigawing + + Giga Wing (Hispanic 990222) + 1999 + Takumi (Capcom license) + + + gigawing + + Giga Wing (Brazil 990222) + 1999 + Takumi (Capcom license) + + + + + Mars Matrix: Hyper Solid Shooting (USA 000412) + 2000 + Takumi (Capcom license) + + + mmatrix + + Mars Matrix: Hyper Solid Shooting (Japan 000412) + 2000 + Takumi (Capcom license) + + + + + Mighty! Pang (Euro 001010) + 2000 + Mitchell (Capcom license) + + + mpang + + Mighty! Pang (Euro 000925) + 2000 + Mitchell (Capcom license) + + + mpang + + Mighty! Pang (USA 001010) + 2000 + Mitchell (Capcom license) + + + mpang + + Mighty! Pang (Japan 001011) + 2000 + Mitchell (Capcom license) + + + + + Puzz Loop 2 (Euro 010302) + 2001 + Mitchell (Capcom license) + + + pzloop2 + + Puzz Loop 2 (Japan 010226) + 2001 + Mitchell (Capcom license) + + + pzloop2 + + Puzz Loop 2 (Japan 010205) + 2001 + Mitchell (Capcom license) + + + + + Janpai Puzzle Choukou (Japan 010820) + 2001 + Mitchell (Capcom license) + + + + 270 + Dimahoo (Euro 000121) + 2000 + Eighting / Raizing (Capcom license) + + + dimahoo + 270 + Dimahoo (USA 000121) + 2000 + Eighting / Raizing (Capcom license) + + + dimahoo + 270 + Great Mahou Daisakusen (Japan 000121) + 2000 + Eighting / Raizing (Capcom license) + + + + + 1944: The Loop Master (USA 000620) + 2000 + Eighting / Raizing (Capcom license) + + + 1944 + + 1944: The Loop Master (Japan 000620) + 2000 + Eighting / Raizing (Capcom license) + + + + + Progear (USA 010117) + 2001 + Cave (Capcom license) + + + progear + + Progear no Arashi (Japan 010117) + 2001 + Cave (Capcom license) + + + progear + + Progear (Asia 010117) + 2001 + Cave (Capcom license) + + + ddtod + + Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg) + 1993 + bootleg + + + ecofghtr + + Eco Fighters (World 931203 Phoenix Edition) (bootleg) + 1993 + bootleg + + + ssf2 + + Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg) + 1993 + bootleg + + + ssf2 + + Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg) + 1993 + bootleg + + + armwar + + Armored Warriors (Euro 941011 Phoenix Edition) (bootleg) + 1994 + bootleg + + + avsp + + Alien vs. Predator (Euro 940520 Phoenix Edition) (bootleg) + 1994 + bootleg + + + dstlk + + Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg) + 1994 + bootleg + + + ringdest + + Ring of Destruction: Slammasters II (Euro 940902 Phoenix Edition) (bootleg) + 1994 + bootleg + + + ssf2t + + Super Street Fighter II Turbo (Asia 940223 Phoenix Edition) (bootleg) + 1994 + bootleg + + + ssf2t + + Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg) + 1994 + bootleg + + + xmcota + + X-Men: Children of the Atom (Euro 950105 Phoenix Edition) (bootleg) + 1994 + bootleg + + + msh + + Marvel Super Heroes (US 951024 Phoenix Edition) (bootleg) + 1995 + bootleg + + + cybots + + Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg) + 1995 + bootleg + + + cybots + + Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg) + 1995 + bootleg + + + nwarr + + Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg) + 1995 + bootleg + + + sfa + + Street Fighter Alpha: Warriors' Dreams (Euro 950727 Phoenix Edition) (bootleg) + 1995 + bootleg + + + 19xx + 270 + 19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg) + 1996 + bootleg + + + ddsom + + Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg) + 1996 + bootleg + + + + megaman2 + + Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg) + 1996 + bootleg + + + sfa2 + + Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg) + 1996 + bootleg + + + sfa2 + + Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg) + 1996 + bootleg + + + spf2t + + Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg) + 1996 + bootleg + + + spf2t + + Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg) + 1996 + bootleg + + + sfz2al + + Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg) + 1996 + bootleg + + + xmvsf + + X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg) + 1996 + bootleg + + + batcir + + Battle Circuit (Euro 970319 Phoenix Edition) (bootleg) + 1997 + bootleg + + + csclub + + Capcom Sports Club (Euro 970722 Phoenix Edition) (bootleg) + 1997 + bootleg + + + mshvsf + + Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg) + 1997 + bootleg + + + sgemf + + Super Gem Fighter Mini Mix (USA 970904 Phoenix Edition) (bootleg) + 1997 + bootleg + + + vsav + + Vampire Savior: The Lord of Vampire (Euro 970519 Phoenix Edition) (bootleg) + 1997 + bootleg + + + vhunt2 + + Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg) + 1997 + bootleg + + + vsav2 + + Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg) + 1997 + bootleg + + + mvsc + + Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg) + 1998 + bootleg + + + sfa3 + + Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg) + 1998 + bootleg + + + sfa3 + + Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg) + 1998 + bootleg + + + gigawing + + Giga Wing (USA 990222 Phoenix Edition) (bootleg) + 1999 + bootleg + + + gigawing + + Giga Wing (Japan 990223 Phoenix Edition) (bootleg) + 1999 + bootleg + + + 1944 + + 1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg) + 2000 + bootleg + + + dimahoo + 270 + Dimahoo (USA 000121 Phoenix Edition) (bootleg) + 2000 + bootleg + + + mmatrix + + Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg) + 2000 + bootleg + + + progear + + Progear (USA 010117 Phoenix Edition) (bootleg) + 2001 + bootleg + + + progear + + Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg) + 2001 + bootleg + + + progear + + Progear no Arashi (Japan 010117) (decrypted bootleg) + 2001 + bootleg + + + hsf2 + + Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg) + 2004 + bootleg + + + + + Pocket Gal (Japan) + 1987 + Data East Corporation + + + pcktgal + + Pocket Gal (bootleg) + 1987 + bootleg + + + pcktgal + + Pocket Gal 2 (English) + 1989 + Data East Corporation + + + pcktgal + + Pocket Gal 2 (Japanese) + 1989 + Data East Corporation + + + pcktgal + + Super Pool III (English) + 1989 + Data East Corporation + + + pcktgal + + Super Pool III (I-Vics) + 1990 + Data East Corporation (I-Vics license) + + + + 90 + Pinball Action (set 1) + 1989 + Tehkan + + + pbaction + 90 + Pinball Action (set 2) + 1989 + Tehkan + + + pbaction + 90 + Pinball Action (set 3, encrypted) + 1989 + Tehkan + + + pbaction + 90 + Pinball Action (set 4, encrypted) + 1989 + Tehkan + + + pbaction + 90 + Pinball Action (set 5, encrypted) + 1989 + Tehkan + + + + + Cue Brick (World, version D) + 1985 + Konami + + + + + M.I.A. - Missing in Action (version T) + 1989 + Konami + + + mia + + M.I.A. - Missing in Action (version S) + 1989 + Konami + + + + + Teenage Mutant Ninja Turtles (World 4 Players, version X) + 1989 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (US 4 Players, version R) + 1989 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (US 4 Players, version J) + 1989 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (US 4 Players, version H) + 1989 + Konami + + + tmnt + + Teenage Mutant Hero Turtles (UK 4 Players, version F) + 1989 + Konami + + + tmnt + + Teenage Mutant Hero Turtles (UK 4 Players, version S) + 1989 + Konami + + + tmnt + + Teenage Mutant Hero Turtles (UK 4 Players, version ?) + 1989 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (Japan 4 Players, version 2) + 1990 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (Asia 4 Players, version ?) + 1989 + Konami + + + tmnt + + Teenage Mutant Hero Turtles (UK 2 Players, version U) + 1989 + Konami + + + tmnt + + Teenage Mutant Hero Turtles (UK 2 Players, version ?) + 1989 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (Japan 2 Players, version 1) + 1990 + Konami + + + tmnt + + Teenage Mutant Ninja Turtles (Oceania 2 Players, version ?) + 1989 + Konami + + + + + Punk Shot (US 4 Players) + 1990 + Konami + + + punkshot + + Punk Shot (US 2 Players) + 1990 + Konami + + + punkshot + + Punk Shot (Japan 2 Players) + 1990 + Konami + + + + 90 + Lightning Fighters (World) + 1990 + Konami + + + lgtnfght + 90 + Lightning Fighters (Asia) + 1990 + Konami + + + lgtnfght + 90 + Lightning Fighters (US) + 1990 + Konami + + + lgtnfght + 90 + Trigon (Japan) + 1990 + Konami + + + + 90 + Bells & Whistles (World, version L) + 1991 + Konami + + + blswhstl + 90 + Bells & Whistles (Asia, version M) + 1991 + Konami + + + blswhstl + 90 + Detana!! Twin Bee (Japan, version J) + 1991 + Konami + + + + + Golfing Greats + 1991 + Konami + + + glfgreat + + Golfing Greats (Japan) + 1991 + Konami + + + + + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA) + 1991 + Konami + + + tmnt2 + + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA) + 1991 + Konami + + + tmnt2 + + Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA) + 1991 + Konami + + + tmnt2 + + Teenage Mutant Hero Turtles - Turtles in Time (4 Players ver EAA) + 1991 + Konami + + + tmnt2 + + Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA) + 1991 + Konami + + + + + Quiz Gakumon no Susume (Japan ver. JA2 Type L) + 1993 + Konami + + + + + Sunset Riders (4 Players ver EAC) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver EAA) + 1991 + Konami + + + ssriders + + Sunset Riders (2 Players ver EBD) + 1991 + Konami + + + ssriders + + Sunset Riders (2 Players ver EBC) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver UDA) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver UAC) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver UAB) + 1991 + Konami + + + ssriders + + Sunset Riders (2 Players ver UBC) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver ADD) + 1991 + Konami + + + ssriders + + Sunset Riders (2 Players ver ABD) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver JAD) + 1991 + Konami + + + ssriders + + Sunset Riders (4 Players ver JAC) + 1991 + Konami + + + ssriders + + Sunset Riders (2 Players ver JBD) + 1991 + Konami + + + + + + Thunder Cross II (World) + 1991 + Konami + + + thndrx2 + + Thunder Cross II (Asia) + 1991 + Konami + + + thndrx2 + + Thunder Cross II (Japan) + 1991 + Konami + + + + + Premier Soccer (ver EAB) + 1993 + Konami + + + prmrsocr + + Premier Soccer (ver JAB) + 1993 + Konami + + + + + NAM-1975 (NGM-001 ~ NGH-001) + 1990 + SNK + + + + + Baseball Stars Professional (NGM-002) + 1990 + SNK + + + bstars + + Baseball Stars Professional (NGH-002) + 1990 + SNK + + + + + Top Player's Golf (NGM-003 ~ NGH-003) + 1990 + SNK + + + + + Mahjong Kyo Retsuden (NGM-004 ~ NGH-004) + 1990 + SNK + + + + + Riding Hero (NGM-006 ~ NGH-006) + 1990 + SNK + + + ridhero + + Riding Hero (set 2) + 1990 + SNK + + + + + Alpha Mission II / ASO II - Last Guardian (NGM-007 ~ NGH-007) + 1991 + SNK + + + alpham2 + + Alpha Mission II / ASO II - Last Guardian (prototype) + 1991 + SNK + + + + + Cyber-Lip (NGM-010) + 1990 + SNK + + + + + The Super Spy (NGM-011 ~ NGH-011) + 1990 + SNK + + + + + Mutation Nation (NGM-014 ~ NGH-014) + 1992 + SNK + + + + + King of the Monsters (set 1) + 1991 + SNK + + + kotm + + King of the Monsters (set 2) + 1991 + SNK + + + + + Sengoku / Sengoku Denshou (NGM-017 ~ NGH-017) + 1991 + SNK + + + sengoku + + Sengoku / Sengoku Denshou (NGH-017, US) + 1991 + SNK + + + + + Burning Fight (NGM-018 ~ NGH-018) + 1991 + SNK + + + burningf + + Burning Fight (NGH-018, US) + 1991 + SNK + + + burningf + + Burning Fight (prototype, ver 23.3, 910326) + 1991 + SNK + + + burningf + + Burning Fight (prototype, older) + 1991 + SNK + + + + + League Bowling (NGM-019 ~ NGH-019) + 1990 + SNK + + + + + Ghost Pilots (NGM-020 ~ NGH-020) + 1991 + SNK + + + gpilots + + Ghost Pilots (NGH-020, US) + 1991 + SNK + + + + + Puzzled / Joy Joy Kid (NGM-021 ~ NGH-021) + 1990 + SNK + + + + + Quiz Daisousa Sen - The Last Count Down (NGM-023 ~ NGH-023) + 1991 + SNK + + + quizdais + + Quiz Daisousa Sen - The Last Count Down (Korean release) + 1991 + SNK + + + + + Last Resort + 1992 + SNK + + + lresort + + Last Resort (prototype) + 1992 + SNK + + + + + Eight Man (NGM-025 ~ NGH-025) + 1991 + SNK / Pallas + + + + + Legend of Success Joe / Ashita no Joe Densetsu + 1991 + SNK + + + + + 2020 Super Baseball (set 1) + 1991 + SNK / Pallas + + + 2020bb + + 2020 Super Baseball (set 2) + 1991 + SNK / Pallas + + + 2020bb + + 2020 Super Baseball (set 3) + 1991 + SNK / Pallas + + + + + Soccer Brawl (NGM-031) + 1991 + SNK + + + socbrawl + + Soccer Brawl (NGH-031) + 1991 + SNK + + + + + Fatal Fury - King of Fighters / Garou Densetsu - Shukumei no Tatakai (NGM-033 ~ NGH-033) + 1991 + SNK + + + + + Robo Army + 1991 + SNK + + + + + Football Frenzy (NGM-034 ~ NGH-034) + 1992 + SNK + + + + + King of the Monsters 2 - The Next Thing (NGM-039 ~ NGH-039) + 1992 + SNK + + + kotm2 + + King of the Monsters 2 - The Next Thing (prototype) + 1992 + SNK + + + + + Sengoku 2 / Sengoku Denshou 2 + 1993 + SNK + + + + + Baseball Stars 2 + 1992 + SNK + + + + + Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042 ~ NGH-042) + 1992 + SNK + + + + + 3 Count Bout / Fire Suplex (NGM-043 ~ NGH-043) + 1993 + SNK + + + + + Art of Fighting / Ryuuko no Ken (NGM-044 ~ NGH-044) + 1992 + SNK + + + + + Samurai Shodown / Samurai Spirits (NGM-045) + 1993 + SNK + + + samsho + + Samurai Shodown / Samurai Spirits (NGH-045) + 1993 + SNK + + + + + Top Hunter - Roddy & Cathy (NGM-046) + 1994 + SNK + + + tophuntr + + Top Hunter - Roddy & Cathy (NGH-046) + 1994 + SNK + + + + + Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (NGM-047 ~ NGH-047) + 1992 + SNK + + + + + Super Sidekicks / Tokuten Ou + 1992 + SNK + + + + + The King of Fighters '94 (NGM-055 ~ NGH-055) + 1994 + SNK + + + + + Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056) + 1994 + SNK + + + aof2 + + Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056) + 1994 + SNK + + + + + Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 1) + 1993 + SNK + + + fatfursp + + Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 2) + 1993 + SNK + + + + + Savage Reign / Fu'un Mokushiroku - Kakutou Sousei + 1995 + SNK + + + + + Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - Real Fight Football (NGM-061 ~ NGH-061) + 1994 + SNK + + + + + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (NGM-063 ~ NGH-063) + 1994 + SNK + + + samsho2 + + Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II) + 1994 + SNK + + + + + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (NGM-069 ~ NGH-069) + 1995 + SNK + + + + + Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - Eikou e no Michi + 1995 + SNK + + + + + The King of Fighters '95 (NGM-084) + 1995 + SNK + + + kof95 + + The King of Fighters '95 (NGM-084, alt board) + 1995 + SNK + + + kof95 + + The King of Fighters '95 (NGH-084) + 1995 + SNK + + + + + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087) + 1995 + SNK + + + samsho3 + + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087) + 1995 + SNK + + + samsho3 + + Fighters Swords (Korean release of Samurai Shodown III) + 1995 + SNK + + + + + Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095 ~ NGH-095) + 1995 + SNK + + + rbff1 + + Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision) + 1995 + SNK + + + + + Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden + 1996 + SNK + + + aof3 + + Art of Fighting 3 - The Path of the Warrior (Korean release) + 1996 + SNK + + + + + The King of Fighters '96 (NGM-214) + 1996 + SNK + + + kof96 + + The King of Fighters '96 (NGH-214) + 1996 + SNK + + + + + The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero + 1996 + SNK + + + + + Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle + 1996 + SNK + + + kizuna + + Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version + 1996 + SNK + + + + + Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222 ~ NGH-222) + 1996 + SNK + + + samsho4 + + Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV) + 1996 + SNK + + + + + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special + 1996 + SNK + + + rbffspec + + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release) + 1996 + SNK + + + + + The King of Fighters '97 (NGM-2320) + 1997 + SNK + + + kof97 + + The King of Fighters '97 (NGH-2320) + 1997 + SNK + + + kof97 + + The King of Fighters '97 (Korean release) + 1997 + SNK + + + kof97 + + The King of Fighters '97 Plus (bootleg) + 1997 + bootleg + + + kof97 + + The King of Fighters '97 Chongchu Jianghu Plus 2003 (bootleg) + 1997 + bootleg + + + kof97 + + King of Gladiator (The King of Fighters '97 bootleg) + 1997 + bootleg + + + + + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340) + 1997 + SNK + + + lastblad + + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340) + 1997 + SNK + + + lastblad + + The Last Soldier (Korean release of The Last Blade) + 1997 + SNK + + + + + + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGM-2400) + 1998 + SNK + + + rbff2 + + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGH-2400) + 1998 + SNK + + + rbff2 + + Real Bout Fatal Fury 2 - The Newcomers (Korean release) + 1998 + SNK + + + + + Metal Slug 2 - Super Vehicle-001/II (NGM-2410 ~ NGH-2410) + 1998 + SNK + + + mslug2 + + Metal Slug 2 Turbo (NGM-9410) + 2015 + Hack + + + + + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420) + 1998 + SNK + + + kof98 + + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420, alt board) + 1998 + SNK + + + kof98 + + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board) + 1998 + SNK + + + kof98 + + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board 2) + 1998 + SNK + + + kof98 + + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGH-2420) + 1998 + SNK + + + + + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430 ~ NGH-2430) + 1998 + SNK + + + + + Neo-Geo Cup '98 - The Road to the Victory + 1998 + SNK + + + + + Metal Slug X - Super Vehicle-001 (NGM-2500 ~ NGH-2500) + 1999 + SNK + + + + + The King of Fighters '99 - Millennium Battle (NGM-2510) + 1999 + SNK + + + kof99 + + The King of Fighters '99 - Millennium Battle (NGH-2510) + 1999 + SNK + + + kof99 + + The King of Fighters '99 - Millennium Battle (earlier) + 1999 + SNK + + + kof99 + + The King of Fighters '99 - Millennium Battle (Korean release) + 1999 + SNK + + + kof99 + + The King of Fighters '99 - Millennium Battle (prototype) + 1999 + SNK + + + + + Garou - Mark of the Wolves (NGM-2530) + 1999 + SNK + + + garou + + Garou - Mark of the Wolves (NGM-2530 ~ NGH-2530) + 1999 + SNK + + + garou + + Garou - Mark of the Wolves (prototype) + 1999 + SNK + + + garou + + Garou - Mark of the Wolves (bootleg) + 1999 + bootleg + + + + + Metal Slug 3 (NGM-2560) + 2000 + SNK + + + mslug3 + + Metal Slug 3 (NGH-2560) + 2000 + SNK + + + mslug3 + + Metal Slug 6 (Metal Slug 3 bootleg) + 2000 + bootleg + + + + + The King of Fighters 2000 (NGM-2570 ~ NGH-2570) + 2000 + SNK + + + kof2000 + + The King of Fighters 2000 (not encrypted) + 2000 + SNK + + + + + Zupapa! + 2001 + SNK + + + + + Sengoku 3 / Sengoku Densho 2001 + 2001 + Noise Factory / SNK + + + + + The King of Fighters 2001 (NGM-262?) + 2001 + Eolith / SNK + + + kof2001 + + The King of Fighters 2001 (NGH-2621) + 2001 + Eolith / SNK + + + kof2001 + + Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg) + 2003 + bootleg + + + kof2001 + + Crouching Tiger Hidden Dragon 2003 Super Plus (The King of Fighters 2001 bootleg) + 2003 + bootleg + + + kof2001 + + Crouching Tiger Hidden Dragon 2003 Super Plus alternate (The King of Fighters 2001 bootleg) + 2003 + bootleg + + + + + The King of Fighters 2002 (NGM-2650 ~ NGH-2650) + 2002 + Eolith / Playmore + + + kof2002 + + The King of Fighters 2002 (bootleg) + 2002 + bootleg + + + kof2002 + + The King of Fighters 2002 Plus (bootleg set 1) + 2002 + bootleg + + + kof2002 + + The King of Fighters 2002 Plus (bootleg set 2) + 2002 + bootleg + + + kof2002 + + The King of Fighters 2002 Magic Plus (bootleg) + 2002 + bootleg + + + kof2002 + + The King of Fighters 2002 Magic Plus II (bootleg) + 2002 + bootleg + + + kof2002 + + The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg) + 2002 + bootleg + + + kof2002 + + The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg) + 2005 + bootleg + + + kof2002 + + The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg) + 2004 + bootleg + + + kof2002 + + The King of Fighters Special Edition 2004 (The King of Fighters 2002 bootleg) + 2004 + bootleg + + + + + Metal Slug 5 (NGM-2680) + 2003 + SNK Playmore + + + mslug5 + + Metal Slug 5 (NGH-2680) + 2003 + SNK Playmore + + + mslug5 + + Metal Slug 5 Plus (bootleg) + 2003 + bootleg + + + + + SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690) + 2003 + SNK Playmore + + + svc + + SNK vs. Capcom - SVC Chaos (bootleg) + 2003 + bootleg + + + svc + + SNK vs. Capcom - SVC Chaos Plus (bootleg set 1) + 2003 + bootleg + + + svc + + SNK vs. Capcom - SVC Chaos Plus (bootleg set 2) + 2003 + bootleg + + + svc + + SNK vs. Capcom - SVC Chaos Super Plus (bootleg) + 2003 + bootleg + + + + + Samurai Shodown V / Samurai Spirits Zero (NGM-2700) + 2003 + Yuki Enterprise / SNK Playmore + + + samsho5 + + Samurai Shodown V / Samurai Spirits Zero (NGH-2700) + 2003 + Yuki Enterprise / SNK Playmore + + + samsho5 + + Samurai Shodown V / Samurai Spirits Zero (bootleg) + 2003 + bootleg + + + + + The King of Fighters 2003 (NGM-2710) + 2003 + SNK Playmore + + + kof2003 + + The King of Fighters 2003 (NGH-2710) + 2003 + SNK Playmore + + + kof2003 + + The King of Fighters 2003 (bootleg set 1) + 2003 + bootleg + + + kof2003 + + The King of Fighters 2003 (bootleg set 2) + 2003 + bootleg + + + kof2003 + + The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg) + 2003 + bootleg + + + kof2003 + + The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg) + 2003 + bootleg + + + + + Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720) + 2004 + Yuki Enterprise / SNK Playmore + + + samsh5sp + + Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 2nd release, less censored) + 2004 + Yuki Enterprise / SNK Playmore + + + samsh5sp + + Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 1st release, censored) + 2004 + Yuki Enterprise / SNK Playmore + + + + + Magician Lord (NGM-005) + 1990 + Alpha Denshi Co. + + + maglord + + Magician Lord (NGH-005) + 1990 + Alpha Denshi Co. + + + + + Ninja Combat (NGM-009) + 1990 + Alpha Denshi Co. + + + ncombat + + Ninja Combat (NGH-009) + 1990 + Alpha Denshi Co. + + + + + Blue's Journey / Raguy (ALM-001 ~ ALH-001) + 1990 + Alpha Denshi Co. + + + + + Crossed Swords (ALM-002 ~ ALH-002) + 1991 + Alpha Denshi Co. + + + + + Thrash Rally (ALM-003 ~ ALH-003) + 1991 + Alpha Denshi Co. + + + + + Ninja Commando + 1992 + Alpha Denshi Co. + + + + + World Heroes (ALM-005) + 1992 + Alpha Denshi Co. + + + wh1 + + World Heroes (ALH-005) + 1992 + Alpha Denshi Co. + + + wh1 + + World Heroes (set 3) + 1992 + Alpha Denshi Co. + + + + + World Heroes 2 (ALM-006 ~ ALH-006) + 1993 + ADK + + + + + World Heroes 2 Jet (ADM-007 ~ ADH-007) + 1994 + ADK / SNK + + + + + Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008 ~ ADH-008) + 1994 + ADK / SNK + + + + + World Heroes Perfect + 1995 + ADK / SNK + + + + + Shougi No Tatsujin - Master of Shougi + 1995 + ADK / SNK + + + + + Over Top + 1996 + ADK + + + + + Ninja Master's - Haoh-ninpo-cho + 1996 + ADK / SNK + + + + + Twinkle Star Sprites + 1996 + ADK / SNK + + + + + Zintrick / Oshidashi Zentrix (bootleg of CD version) + 1996 + bootleg + + + + + Crossed Swords 2 (bootleg of CD version) + 1996 + bootleg (Razoola) + + + + + Viewpoint + 1992 + Sammy / Aicom + + + + + Janshin Densetsu - Quest of Jongmaster + 1994 + Aicom + + + + + Pulstar + 1995 + Aicom + + + + + Blazing Star + 1998 + Yumekobo + + + + + Prehistoric Isle 2 + 1999 + Yumekobo + + + + + Spin Master / Miracle Adventure + 1993 + Data East Corporation + + + + + Windjammers / Flying Power Disc + 1994 + Data East Corporation + + + + + Karnov's Revenge / Fighter's History Dynamite + 1994 + Data East Corporation + + + + + Street Hoop / Street Slam / Dunk Dream (DEM-004 ~ DEH-004) + 1994 + Data East Corporation + + + + + Ghostlop (prototype) + 1996 + Data East Corporation + + + + + Magical Drop II + 1996 + Data East Corporation + + + + + Magical Drop III + 1997 + Data East Corporation + + + + + Nightmare in the Dark + 2000 + Eleven / Gavaking + + + nitd + + Nightmare in the Dark (bootleg) + 2001 + bootleg + + + + + Gururin + 1994 + Face + + + + + Money Puzzle Exchanger / Money Idol Exchanger + 1997 + Face + + + + + + Panic Bomber + 1994 + Eighting / Hudson + + + + + Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den + 1995 + Hudson + + + + + Neo Bomberman + 1997 + Hudson + + + + + Minasan no Okagesamadesu! Dai Sugoroku Taikai (MOM-001 ~ MOH-001) + 1990 + Monolith Corp. + + + + + Bakatonosama Mahjong Manyuuki (MOM-002 ~ MOH-002) + 1991 + Monolith Corp. + + + + + Neo Turf Masters / Big Tournament Golf + 1996 + Nazca + + + + + Metal Slug - Super Vehicle-001 + 1996 + Nazca + + + + + Zed Blade / Operation Ragnarok + 1994 + NMK + + + + + Strikers 1945 Plus + 1999 + Psikyo + + + + + Quiz King of Fighters (SAM-080 ~ SAH-080) + 1995 + Saurus + + + quizkof + + Quiz King of Fighters (Korean release) + 1995 + Saurus + + + + + Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi + 1995 + Saurus + + + + + Ragnagard / Shin-Oh-Ken + 1996 + Saurus + + + + + Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219) + 1996 + Saurus + + + + + Choutetsu Brikin'ger - Iron Clad (prototype) + 1996 + Saurus + + + ironclad + + Choutetsu Brikin'ger - Iron Clad (prototype, bootleg) + 1996 + bootleg + + + + + Stakes Winner 2 + 1996 + Saurus + + + + + Shock Troopers (set 1) + 1997 + Saurus + + + shocktro + + Shock Troopers (set 2) + 1997 + Saurus + + + + + Shock Troopers - 2nd Squad + 1998 + Saurus + + + shocktr2 + + Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg) + 1998 + bootleg + + + + + Galaxy Fight - Universal Warriors + 1995 + Sunsoft + + + + + Waku Waku 7 + 1996 + Sunsoft + + + + + Puzzle Bobble / Bust-A-Move (Neo-Geo, NGM-083) + 1994 + Taito + + + pbobblen + + Puzzle Bobble / Bust-A-Move (Neo-Geo, bootleg) + 1994 + bootleg + + + + + Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo) + 1999 + Taito (SNK license) + + + + + Pochi and Nyaa + 2003 + Aiky / Taito + + + + + Chibi Marukochan Deluxe Quiz + 1995 + Takara + + + + + Double Dragon (Neo-Geo) + 1995 + Technos Japan + + + + + Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer + 1995 + Technos Japan + + + + + Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu + 1996 + Technos Japan + + + + + Tecmo World Soccer '96 + 1996 + Tecmo + + + + + Fight Fever (set 1) + 1994 + Viccom + + + fightfev + + Fight Fever (set 2) + 1994 + Viccom + + + + + Power Spikes II (NGM-068) + 1994 + Video System Co. + + + + + Aero Fighters 2 / Sonic Wings 2 + 1994 + Video System Co. + + + + + Aero Fighters 3 / Sonic Wings 3 + 1995 + Video System Co. + + + + + Pop 'n Bounce / Gapporin + 1997 + Video System Co. + + + + + Idol Mahjong Final Romance 2 (Neo-Geo, bootleg of CD version) + 1995 + bootleg + + + + + Andro Dunos (NGM-049 ~ NGH-049) + 1992 + Visco + + + + + Puzzle De Pon! + 1995 + Taito (Visco license) + + + + + Neo Mr. Do! + 1996 + Visco + + + + + Goal! Goal! Goal! + 1995 + Visco + + + + + Neo Drift Out - New Technology + 1996 + Visco + + + + + Breakers + 1996 + Visco + + + puzzledp + + Puzzle De Pon! R! + 1997 + Taito (Visco license) + + + + + Breakers Revenge + 1998 + Visco + + + + + Battle Flip Shot + 1998 + Visco + + + + + Captain Tomaday + 1999 + Visco + + + + + Ganryu / Musashi Ganryuki + 1999 + Visco + + + + + Bang Bead + 2000 + Visco + + + + + Bang Bang Busters (2010 NCI release) + 2000 + Visco + + + + + Metal Slug 4 (NGM-2630) + 2002 + Mega / Playmore + + + mslug4 + + Metal Slug 4 (NGH-2630) + 2002 + Mega / Playmore + + + mslug4 + + Metal Slug 4 Plus (bootleg) + 2002 + bootleg + + + + + Rage of the Dragons (NGM-2640?) + 2002 + Evoga / Playmore + + + rotd + + Rage of the Dragons (NGH-2640?) + 2002 + Evoga / Playmore + + + + + Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660 ~ NGH-2660) + 2002 + Noise Factory / Atlus + + + matrim + + Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) + 2002 + bootleg + + + + + Jockey Grand Prix (set 1) + 2001 + Sun Amusement / BrezzaSoft + + + jockeygp + + Jockey Grand Prix (set 2) + 2001 + Sun Amusement / BrezzaSoft + + + + + + Last Hope (bootleg AES to MVS conversion, no coin support) + 2005 + NG:DEV.TEAM + + + + + 180 + Shadowland (YD3) + 1987 + Namco + + + shadowld + 180 + Yokai Douchuuki (Japan, new version (YD2, Rev B)) + 1987 + Namco + + + shadowld + 180 + Yokai Douchuuki (Japan, old version (YD1)) + 1987 + Namco + + + + 90 + Dragon Spirit (new version (DS3)) + 1987 + Namco + + + dspirit + 90 + Dragon Spirit (DS2) + 1987 + Namco + + + dspirit + 90 + Dragon Spirit (old version (DS1)) + 1987 + Namco + + + + 90 + Blazer (Japan) + 1987 + Namco + + + + 90 + Quester (Japan) + 1987 + Namco + + + quester + 90 + Quester Special Edition (Japan) + 1987 + Namco + + + + 270 + Pac-Mania + 1987 + Namco + + + pacmania + 270 + Pac-Mania (111187 sound program) + 1987 + Namco + + + pacmania + 90 + Pac-Mania (Japan) + 1987 + Namco + + + + 270 + Galaga '88 + 1987 + Namco + + + galaga88 + 90 + Galaga '88 (02-03-88) + 1987 + Namco + + + galaga88 + 90 + Galaga '88 (Japan) + 1987 + Namco + + + + 180 + World Stadium (Japan) + 1988 + Namco + + + + 180 + Beraboh Man (Japan, Rev C) + 1988 + Namco + + + berabohm + 180 + Beraboh Man (Japan, Rev B) + 1988 + Namco + + + + + 180 + Bakutotsu Kijuutei + 1988 + Namco + + + + 180 + World Court (Japan) + 1988 + Namco + + + + 180 + Splatter House (World, new version (SH3)) + 1988 + Namco + + + splatter + 180 + Splatter House (World, old version (SH2)) + 1988 + Namco + + + splatter + 180 + Splatter House (Japan, SH1) + 1988 + Namco + + + + 180 + Face Off (Japan 2 Players) + 1988 + Namco + + + + 90 + Rompers (Japan, new version (Rev B)) + 1989 + Namco + + + rompers + 90 + Rompers (Japan, old version) + 1989 + Namco + + + + 90 + Blast Off (Japan) + 1989 + Namco + + + ws + 180 + World Stadium '89 (Japan) + 1989 + Namco + + + + 90 + Dangerous Seed (Japan) + 1989 + Namco + + + ws + 180 + World Stadium '90 (Japan) + 1990 + Namco + + + + + Pistol Daimyo no Bouken (Japan) + 1990 + Namco + + + + + Boxy Boy (SB?) + 1990 + Namco + + + boxyboy + + Souko Ban Deluxe (Japan, SB1) + 1990 + Namco + + + + 90 + Puzzle Club (Japan prototype) + 1990 + Namco + + + + + Tank Force (US, 2 Player) + 1991 + Namco + + + tankfrce + + Tank Force (US, 4 Player) + 1991 + Namco + + + tankfrce + + Tank Force (Japan) + 1991 + Namco + + + + + Dragon World (World, V040O) + 1997 + IGS + + + drgnwrld + + Dragon World (World, V030O) + 1995 + IGS + + + drgnwrld + + Dragon World (World, V021O) + 1995 + IGS + + + drgnwrld + + Zhong Guo Long (Japan, V021J) + 1995 + IGS / Alta + + + drgnwrld + + Zhong Guo Long (Japan, V020J) + 1995 + IGS / Alta + + + drgnwrld + + Zhong Guo Long (China, V010C) + 1995 + IGS + + + drgnwrld + + Dong Fang Zhi Zhu (Hong Kong, V011H) + 1995 + IGS + + + drgnwrld + + Dragon World (Korea, V040K) + 1995 + IGS + + + + + + Oriental Legend / Xi You Shi E Zhuan (ver. 126) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. 112) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. 112, Chinese Board) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. ???, Chinese Board) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. 111, Chinese Board) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. 111, Taiwanese Board) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. 111, Korean Board) + 1997 + IGS + + + orlegend + + Oriental Legend / Xi You Shi E Zhuan (ver. 105, Korean Board) + 1997 + IGS + + + diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/mame.xml.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/mame.xml.bytes.meta new file mode 100644 index 00000000..13fc5299 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/mame.xml.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 61b2fc8f46ed4f64da4d5f87cd7362c2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/neogeo_mainbios.rom.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/neogeo_mainbios.rom.bytes new file mode 100644 index 00000000..ed9c5088 Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/neogeo_mainbios.rom.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/neogeo_mainbios.rom.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/neogeo_mainbios.rom.bytes.meta new file mode 100644 index 00000000..05a03d0d --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/neogeo_mainbios.rom.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bb2d5e2ca3a42074897b32eb592df77c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_m01s.rom.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_m01s.rom.bytes new file mode 100644 index 00000000..7055f76d Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_m01s.rom.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_m01s.rom.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_m01s.rom.bytes.meta new file mode 100644 index 00000000..1884be73 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_m01s.rom.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 422f76db48bff6940ae7ab6677628565 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_mainbios.rom.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_mainbios.rom.bytes new file mode 100644 index 00000000..555d65f5 Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_mainbios.rom.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_mainbios.rom.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_mainbios.rom.bytes.meta new file mode 100644 index 00000000..8b42faf3 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_mainbios.rom.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d3a1ac26f228c844fbdabcdb4c2a5710 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_t01s.rom.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_t01s.rom.bytes new file mode 100644 index 00000000..27cdfd80 Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_t01s.rom.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_t01s.rom.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_t01s.rom.bytes.meta new file mode 100644 index 00000000..54b15d39 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/pgm_t01s.rom.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d319336d09b4a184fbdd51107048ab45 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/readme.txt.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/readme.txt.bytes new file mode 100644 index 00000000..ddb75e10 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/readme.txt.bytes @@ -0,0 +1,10 @@ +锘緿etail: https://www.codeproject.com/Articles/1275365/MAME-NET +You should install Microsoft .NET Framework 3.5 or higher before running the program. You should download MAME.NET ROM files in roms directory. +Hotkey: F3 -- soft reset, F7 -- load state, Shift+F7 -- save state, F8 -- replay input, Shift+F8 -- record input (start and stop), 0-9 and A-Z after state related hotkey -- handle certain files, F10 -- toggle global throttle, P -- pause and continue, shift+P -- skip a frame. +Control key: 1 -- P1 start, 2 -- P2 start, 5 -- P1 coin, 6 -- P2 coin, R -- Service 1, T -- Service, W -- P1 up, S -- P1 down, A -- P1 left, D -- P1 right, J -- P1 button1, K -- P1 button 2, L -- P1 button 3, U -- P1 button 4, I -- P1 button 5, O -- P1 button 6, Up -- P2 up, Down -- P2 down, Left -- P2 left, Right -- P2 right, NumPad1 -- P2 button 1, NumPad2 -- P2 button 2, NumPad3 -- P2 button 3, NumPad4 -- P2 button 4, NumPad5 -- P2 button 5, NumPad6 -- P2 button 6. +Mouse supported games: Operation Wolf. +When the ROMs of a game are loaded, the emulator is auto paused. Press P to continue. +Occasionally GDI+ error occurs and a red cross is shown. You can click "File-Reset picturebox" to handle the error. +MAME.NET ROM files: https://pan.baidu.com/s/14bR2wEzU2Qqx5hM7hJXMZA https://drive.google.com/folderview?id=11brIxHTJ_M4yOkm08wR3LOibZyEitcAw +program reference: https://pan.baidu.com/s/1u9B9tBH0SNcJA3vIu75awA https://drive.google.com/folderview?id=1-BEXXjVYUK5s2zDAp4AfQzCbpcGrcItF +Email: shunninghuang@gmail.com diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/readme.txt.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/readme.txt.bytes.meta new file mode 100644 index 00000000..5749631d --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/readme.txt.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0a511236317e4874594088e125a1a39c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sfix.sfix.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sfix.sfix.bytes new file mode 100644 index 00000000..bf5e7e7d Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sfix.sfix.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sfix.sfix.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sfix.sfix.bytes.meta new file mode 100644 index 00000000..6e100691 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sfix.sfix.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 60a7b0e5c8b772d409dcbec7b6695f74 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sm1.sm1.bytes b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sm1.sm1.bytes new file mode 100644 index 00000000..984b1b5a Binary files /dev/null and b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sm1.sm1.bytes differ diff --git a/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sm1.sm1.bytes.meta b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sm1.sm1.bytes.meta new file mode 100644 index 00000000..f170efda --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Resources/MAME/emu/sm1.sm1.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6d2848c0a1e76cf49b3e091adc79da62 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator.meta new file mode 100644 index 00000000..0f36387b --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b56c11278238d6c4e902a42ae6948279 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator.meta new file mode 100644 index 00000000..1b3f838a --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6019649657419e146ab2b4796835be14 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common.meta new file mode 100644 index 00000000..a7f98652 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99dcde864a2f2cd41a7fa7e6289820c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common/UniMAMESetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common/UniMAMESetting.cs new file mode 100644 index 00000000..d17b093e --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common/UniMAMESetting.cs @@ -0,0 +1,16 @@ +锘縰sing UnityEngine; + + +public class UniMAMESetting +{ + public static UniMAMESetting instance + { + get + { + if (mInstance == null) + mInstance = new UniMAMESetting(); + return mInstance; + } + } + private static UniMAMESetting mInstance; +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common/UniMAMESetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common/UniMAMESetting.cs.meta new file mode 100644 index 00000000..3b19409d --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/Common/UniMAMESetting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e93a2fd757533948a43218e424841a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs new file mode 100644 index 00000000..2dd71b3f --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs @@ -0,0 +1,229 @@ +using AxiReplay; +using MAME.Core; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using AxibugEmuOnline.Client; +using AxibugEmuOnline.Client.ClientCore; +using AxibugProtobuf; +using static AxibugEmuOnline.Client.NesControllerMapper; +using VirtualNes.Core; +using System.Linq; +using AxibugEmuOnline.Client.Event; + +public class UMAME : MonoBehaviour, IEmuCore +{ + public static UMAME instance { get; private set; } + public MAMEEmu emu { get; private set; } + UniLog mUniLog; + UniMouse mUniMouse; + [HideInInspector] + public UniVideoPlayer mUniVideoPlayer; + UniSoundPlayer mUniSoundPlayer; + UniKeyboard mUniKeyboard; + UniResources mUniResources; + + public Text mFPS; + private Canvas mCanvas; + public List HadGameList = new List(); + string mChangeRomName = string.Empty; + public UniTimeSpan mTimeSpan; + public bool bQuickTestRom = false; + public string mQuickTestRom = string.Empty; + public ReplayWriter mReplayWriter; + public ReplayReader mReplayReader; + public long currEmuFrame => emu.currEmuFrame; + public static System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); + public static bool bInGame { get; private set; } + public static bool bLogicUpdatePause { get; private set; } + public string EmuDataPath { get { return App.PersistentDataPath(Platform); } } + public string RomPath => EmuDataPath + "/RemoteRoms/"; + public string SavePath => EmuDataPath + "/sav/"; + public RomPlatformType Platform { get { return mPlatform; } } + RomPlatformType mPlatform = RomPlatformType.Cps1; + public uint Frame => (uint)emu.currEmuFrame; + void Awake() + { + + + //设为60帧 + Application.targetFrameRate = 60; + // 强制横屏 + Screen.orientation = ScreenOrientation.LandscapeLeft; + instance = this; + mFPS = GameObject.Find("FPS").GetComponent(); + mCanvas = GameObject.Find("Canvas").GetComponent(); + mCanvas.worldCamera = Camera.main; + emu = new MAMEEmu(); + mUniLog = new UniLog(); + mUniMouse = this.gameObject.AddComponent(); + mUniVideoPlayer = this.gameObject.AddComponent(); + mUniSoundPlayer = GameObject.Find("Audio").transform.GetComponent(); + mUniKeyboard = this.gameObject.AddComponent(); + mUniResources = new UniResources(); + mChangeRomName = string.Empty; + mTimeSpan = new UniTimeSpan(); + emu.Init(RomPath, mUniLog, mUniResources, mUniVideoPlayer, mUniSoundPlayer, mUniKeyboard, mUniMouse, mTimeSpan); + } + void OnEnable() + { + } + void OnDisable() + { + StopGame(); + } + #region 实现接口 + public object GetState() + { + return SaveState(); + } + public byte[] GetStateBytes() + { + return SaveState(); + } + public void LoadState(object state) + { + LoadState((byte[])state); + } + public void LoadStateFromBytes(byte[] data) + { + LoadState(data); + } + public void Pause() + { + bLogicUpdatePause = false; + } + public void Resume() + { + bLogicUpdatePause = true; + } + public MsgBool StartGame(RomFile romFile) + { + mPlatform = romFile.Platform; + mTimeSpan.InitStandTime(); + if (LoadGame(romFile.FileName, false)) + return true; + else + return "Rom加载失败"; + } + public void Dispose() + { + StopGame(); + } + public void DoReset() + { + StopGame(); + LoadGame(mChangeRomName, false); + } + public IControllerSetuper GetControllerSetuper() + { + return mUniKeyboard.ControllerMapper; + } + #endregion + bool LoadGame(string loadRom, bool bReplay = false) + { + //Application.targetFrameRate = 60; + mReplayWriter = new ReplayWriter(mChangeRomName, "fuck", ReplayData.ReplayFormat.FM32IP64, Encoding.UTF8); + mChangeRomName = loadRom; + StopGame(); + //读取ROM + emu.LoadRom(mChangeRomName); + //读取成功 + if (emu.bRom) + { + if (bReplay) + { + string Path = SavePath + Machine.sName + ".rp"; + mReplayReader = new ReplayReader(Path); + mUniKeyboard.SetRePlay(true); + } + + //读取ROM之后获得宽高初始化画面 + int _width; int _height; IntPtr _framePtr; + emu.GetGameScreenSize(out _width, out _height, out _framePtr); + App.log.Debug($"_width->{_width}, _height->{_height}, _framePtr->{_framePtr}"); + mUniVideoPlayer.Initialize(_width, _height, _framePtr); + //初始化音频 + mUniSoundPlayer.Initialize(); + //开始游戏 + emu.StartGame(); + bInGame = true; + bLogicUpdatePause = true; + return true; + } + else + { + App.log.Debug($"ROM加载失败"); + return false; + } + } + void Update() + { + mFPS.text = ($"fpsv {mUniVideoPlayer.videoFPS.ToString("F2")} fpsa {mUniSoundPlayer.audioFPS.ToString("F2")}"); + + if (!bInGame) + return; + + if (bLogicUpdatePause) + { + //采集本帧Input + mUniKeyboard.UpdateInputKey(); + //放行下一帧 + //emu.UnlockNextFreme(); + //推帧 + emu.UpdateFrame(); + } + + mUniVideoPlayer.ApplyFilterEffect(); + mUniVideoPlayer.ApplyScreenScaler(); + } + public void SaveReplay() + { + string Path = SavePath + Machine.sName + ".rp"; + string dbgPath = SavePath + Machine.sName + ".rpwrite"; + mReplayWriter.SaveData(Path, true, dbgPath); + } + public void StopGame() + { + if (bInGame) + { + emu.StopGame(); + mUniVideoPlayer.StopVideo(); + mUniSoundPlayer.StopPlay(); + bInGame = false; + bLogicUpdatePause = false; + } + } + byte[] SaveState() + { + if (!Directory.Exists(SavePath)) + Directory.CreateDirectory(SavePath); + + MemoryStream ms = new MemoryStream(); + BinaryWriter bw = new BinaryWriter(ms); + emu.SaveState(bw); + byte[] data = ms.ToArray(); + bw.Close(); + ms.Close(); + + return data; + + + //byte[] screenData = UMAME.instance.mUniVideoPlayer.GetScreenImg(); + + //FileStream fsImg = new FileStream(SavePath + Machine.sName + ".jpg", FileMode.Create); + //fsImg.Write(screenData, 0, screenData.Length); + //fsImg.Close(); + } + void LoadState(byte[] data) + { + MemoryStream fs = new MemoryStream(data); + BinaryReader br = new BinaryReader(fs); + emu.LoadState(br); + br.Close(); + fs.Close(); + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs.meta new file mode 100644 index 00000000..1c16f56d --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49349ac585d920c4f937c48232c8dfd7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface.meta new file mode 100644 index 00000000..221c4fcf --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9747519294fc9f04fbb6f1657c6d1dca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs new file mode 100644 index 00000000..ecd178e6 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs @@ -0,0 +1,386 @@ +using AxibugEmuOnline.Client.Event; +using MAME.Core; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class UniKeyboard : MonoBehaviour, IKeyboard +{ + public MameControllerMapper ControllerMapper { get; private set; } + bool bReplayMode; + PlayMode mPlayMode; + ReplayMode mReplayMode; + + void Awake() + { + ControllerMapper = new MameControllerMapper(); + Init(false); + } + + public ulong GetPressedKeys() + { + ulong InputData; + if (!bReplayMode) + InputData = mPlayMode.GetPressedKeys(); + else + InputData = mReplayMode.GetPressedKeys(); + return InputData; + } + + public void UpdateInputKey() + { + UpdateLogic(); + } + + #region + + public void SetRePlay(bool IsReplay) + { + bReplayMode = IsReplay; + } + + public void Init(bool IsReplay) + { + bReplayMode = IsReplay; + mPlayMode = new PlayMode(this); + mReplayMode = new ReplayMode(); + } + + public void UpdateLogic() + { + if (bReplayMode) return; + mPlayMode.UpdateLogic(); + } + public class PlayMode + { + UniKeyboard mUniKeyboard; + ulong tempInputAllData = 0; + public ulong CurryInpuAllData = 0; + + public PlayMode(UniKeyboard uniKeyboard) + { + this.mUniKeyboard = uniKeyboard; + } + + public void UpdateLogic() + { + tempInputAllData = 0; + tempInputAllData |= mUniKeyboard.ControllerMapper.Controller0.GetSingleAllInput(); + tempInputAllData |= mUniKeyboard.ControllerMapper.Controller1.GetSingleAllInput(); + tempInputAllData |= mUniKeyboard.ControllerMapper.Controller2.GetSingleAllInput(); + tempInputAllData |= mUniKeyboard.ControllerMapper.Controller3.GetSingleAllInput(); + CurryInpuAllData = tempInputAllData; + } + + public ulong GetPressedKeys() + { + UMAME.instance.mReplayWriter.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, CurryInpuAllData); + return CurryInpuAllData; + } + } + public class ReplayMode + { + ulong currInputData; + + public ReplayMode() + { + } + + public ulong GetPressedKeys() + { + int targetFrame = (int)UMAME.instance.mUniVideoPlayer.mFrame; + AxiReplay.ReplayStep stepData; + //有变化 + if (UMAME.instance.mReplayReader.NextFramebyFrameIdx(targetFrame, out stepData)) + { + currInputData = stepData.InPut; + } + return currInputData; + } + } + #endregion +} + +public class MameControllerMapper : IControllerSetuper +{ + public MameSingleConoller Controller0 { get; } = new MameSingleConoller(0); + public MameSingleConoller Controller1 { get; } = new MameSingleConoller(1); + public MameSingleConoller Controller2 { get; } = new MameSingleConoller(2); + public MameSingleConoller Controller3 { get; } = new MameSingleConoller(3); + + ulong mCurrAllInput; + + public void SetConnect(uint? con0ToSlot = null, + uint? con1ToSlot = null, + uint? con2ToSlot = null, + uint? con3ToSlot = null) + { + Controller0.ConnectSlot = con0ToSlot; + Controller1.ConnectSlot = con1ToSlot; + Controller2.ConnectSlot = con2ToSlot; + Controller3.ConnectSlot = con3ToSlot; + } + + public int? GetSlotConnectingControllerIndex(int slotIndex) + { + if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return 0; + else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return 1; + else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return 2; + else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return 3; + else return null; + } + + public IController GetSlotConnectingController(int slotIndex) + { + if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return Controller0; + else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return Controller1; + else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return Controller2; + else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return Controller3; + else return null; + } + static HashSet s_temp = new HashSet(); + public uint? GetFreeSlotIndex() + { + s_temp.Clear(); + s_temp.Add(0); + s_temp.Add(1); + s_temp.Add(2); + s_temp.Add(3); + + if (Controller0.ConnectSlot.HasValue) s_temp.Remove(Controller0.ConnectSlot.Value); + if (Controller1.ConnectSlot.HasValue) s_temp.Remove(Controller1.ConnectSlot.Value); + if (Controller2.ConnectSlot.HasValue) s_temp.Remove(Controller2.ConnectSlot.Value); + if (Controller3.ConnectSlot.HasValue) s_temp.Remove(Controller3.ConnectSlot.Value); + + if (s_temp.Count > 0) return s_temp.First(); + else return null; + } + + + public void LetControllerConnect(int conIndex, uint slotIndex) + { + MameSingleConoller targetController; + switch (conIndex) + { + case 0: targetController = Controller0; break; + case 1: targetController = Controller1; break; + case 2: targetController = Controller2; break; + case 3: targetController = Controller3; break; + default: + throw new System.Exception($"Not Allowed conIndex Range: {conIndex}"); + break; + } + if (targetController.ConnectSlot.HasValue) return; + + targetController.ConnectSlot = slotIndex; + Eventer.Instance.PostEvent(EEvent.OnControllerConnectChanged); + } + +} + +/// +/// MAME控制器 +/// +public class MameSingleConoller : IController +{ + public KeyCode INSERT_COIN, GAMESTART, + UP, DOWN, LEFT, RIGHT, + BTN_A, BTN_B, BTN_C, BTN_D, BTN_E, BTN_F; + + public MotionKey tg_INSERT_COIN, tg_GAMESTART, + tg_UP, tg_DOWN, tg_LEFT, tg_RIGHT, + tg_BTN_A, tg_BTN_B, tg_BTN_C, tg_BTN_D, tg_BTN_E, tg_BTN_F; + + ulong mTempSingleAllInput; + + int mControllerIndex; + uint? mConnectSlot; + + /// + /// 指示该手柄连接的手柄插槽 + /// 这个值代表了该手柄在实际游戏中控制的Player + /// [0,3] 例外:为空代表未连接 + /// + public uint? ConnectSlot + { + get { return mConnectSlot; } + set { mConnectSlot = value; this.ResetTargetMotionKey(); } + } + + /// + /// 控制器编号 + /// 此编号并非对应游戏中的player1,player2,player3,player4,仅仅作为本地4个手柄的实例 + /// [0,3] + /// + public int ControllerIndex + { + get { return mControllerIndex; } + set { mControllerIndex = value; this.LoadControlKeyForConfig(); } + } + public MameSingleConoller(int controllerIndex) + { + ControllerIndex = controllerIndex; + } + + public bool AnyButtonDown() + { + //if (Input.GetKeyDown(INSERT_COIN)) return true; + //if (Input.GetKeyDown(GAMESTART)) return true; + //if (Input.GetKeyDown(UP)) return true; + //if (Input.GetKeyDown(DOWN)) return true; + //if (Input.GetKeyDown(LEFT)) return true; + //if (Input.GetKeyDown(RIGHT)) return true; + //if (Input.GetKeyDown(BTN_A)) return true; + //if (Input.GetKeyDown(BTN_B)) return true; + //if (Input.GetKeyDown(BTN_C)) return true; + //if (Input.GetKeyDown(BTN_D)) return true; + //if (Input.GetKeyDown(BTN_E)) return true; + //if (Input.GetKeyDown(BTN_F)) return true; + return mTempSingleAllInput > 0; + } + public ulong GetSingleAllInput() + { + if (!ConnectSlot.HasValue) + return 0; + mTempSingleAllInput = 0; + if (Input.GetKey(INSERT_COIN)) return mTempSingleAllInput |= (ulong)tg_INSERT_COIN; + if (Input.GetKey(GAMESTART)) return mTempSingleAllInput |= (ulong)tg_GAMESTART; + if (Input.GetKey(UP)) return mTempSingleAllInput |= (ulong)tg_UP; + if (Input.GetKey(DOWN)) return mTempSingleAllInput |= (ulong)tg_DOWN; + if (Input.GetKey(LEFT)) return mTempSingleAllInput |= (ulong)tg_LEFT; + if (Input.GetKey(RIGHT)) return mTempSingleAllInput |= (ulong)tg_RIGHT; + if (Input.GetKey(BTN_A)) return mTempSingleAllInput |= (ulong)tg_BTN_A; + if (Input.GetKey(BTN_B)) return mTempSingleAllInput |= (ulong)tg_BTN_B; + if (Input.GetKey(BTN_C)) return mTempSingleAllInput |= (ulong)tg_BTN_C; + if (Input.GetKey(BTN_D)) return mTempSingleAllInput |= (ulong)tg_BTN_D; + if (Input.GetKey(BTN_E)) return mTempSingleAllInput |= (ulong)tg_BTN_E; + if (Input.GetKey(BTN_F)) return mTempSingleAllInput |= (ulong)tg_BTN_F; + return mTempSingleAllInput; + } + +} + +public static class MameSingleControllSetter +{ + public static void LoadControlKeyForConfig(this MameSingleConoller singlecontrol) + { + //TODO 等待支持配置,或统一 + switch (singlecontrol.ControllerIndex) + { + case 0: + singlecontrol.INSERT_COIN = KeyCode.Alpha5; + singlecontrol.GAMESTART = KeyCode.Alpha1; + singlecontrol.UP = KeyCode.W; + singlecontrol.DOWN = KeyCode.S; + singlecontrol.LEFT = KeyCode.A; + singlecontrol.RIGHT = KeyCode.D; + singlecontrol.BTN_A = KeyCode.J; + singlecontrol.BTN_B = KeyCode.K; + singlecontrol.BTN_C = KeyCode.L; + singlecontrol.BTN_D = KeyCode.U; + singlecontrol.BTN_E = KeyCode.I; + singlecontrol.BTN_F = KeyCode.O; + break; + case 1: + singlecontrol.INSERT_COIN = KeyCode.KeypadMultiply; + singlecontrol.GAMESTART = KeyCode.KeypadDivide; + singlecontrol.UP = KeyCode.UpArrow; + singlecontrol.DOWN = KeyCode.DownArrow; + singlecontrol.LEFT = KeyCode.LeftArrow; + singlecontrol.RIGHT = KeyCode.RightArrow; + singlecontrol.BTN_A = KeyCode.Keypad1; + singlecontrol.BTN_B = KeyCode.Keypad2; + singlecontrol.BTN_C = KeyCode.Keypad3; + singlecontrol.BTN_D = KeyCode.Keypad4; + singlecontrol.BTN_E = KeyCode.Keypad5; + singlecontrol.BTN_F = KeyCode.Keypad6; + break; + case 2: + break; + case 3: + break; + } + } + + public static void ResetTargetMotionKey(this MameSingleConoller singlecontrol) + { + if (!singlecontrol.ConnectSlot.HasValue) + { + singlecontrol.tg_INSERT_COIN + = singlecontrol.tg_GAMESTART + = singlecontrol.tg_UP + = singlecontrol.tg_DOWN + = singlecontrol.tg_LEFT + = singlecontrol.tg_RIGHT + = singlecontrol.tg_BTN_A + = singlecontrol.tg_BTN_B + = singlecontrol.tg_BTN_C + = singlecontrol.tg_BTN_D + = singlecontrol.tg_BTN_E + = singlecontrol.tg_BTN_F + = MotionKey.FinalKey; + return; + } + switch (singlecontrol.ConnectSlot.Value) + { + case 0: + singlecontrol.tg_INSERT_COIN = MotionKey.P1_INSERT_COIN; + singlecontrol.tg_GAMESTART = MotionKey.P1_GAMESTART; + singlecontrol.tg_UP = MotionKey.P1_UP; + singlecontrol.tg_DOWN = MotionKey.P1_DOWN; + singlecontrol.tg_LEFT = MotionKey.P1_LEFT; + singlecontrol.tg_RIGHT = MotionKey.P1_RIGHT; + singlecontrol.tg_BTN_A = MotionKey.P1_BTN_1; + singlecontrol.tg_BTN_B = MotionKey.P1_BTN_2; + singlecontrol.tg_BTN_C = MotionKey.P1_BTN_3; + singlecontrol.tg_BTN_D = MotionKey.P1_BTN_4; + singlecontrol.tg_BTN_E = MotionKey.P1_BTN_5; + singlecontrol.tg_BTN_F = MotionKey.P1_BTN_6; + break; + case 1: + singlecontrol.tg_INSERT_COIN = MotionKey.P2_INSERT_COIN; + singlecontrol.tg_GAMESTART = MotionKey.P2_GAMESTART; + singlecontrol.tg_UP = MotionKey.P2_UP; + singlecontrol.tg_DOWN = MotionKey.P2_DOWN; + singlecontrol.tg_LEFT = MotionKey.P2_LEFT; + singlecontrol.tg_RIGHT = MotionKey.P2_RIGHT; + singlecontrol.tg_BTN_A = MotionKey.P2_BTN_1; + singlecontrol.tg_BTN_B = MotionKey.P2_BTN_2; + singlecontrol.tg_BTN_C = MotionKey.P2_BTN_3; + singlecontrol.tg_BTN_D = MotionKey.P2_BTN_4; + singlecontrol.tg_BTN_E = MotionKey.P2_BTN_5; + singlecontrol.tg_BTN_F = MotionKey.P2_BTN_6; + break; + //后续修改后 支持P3 P4 + case 2: + singlecontrol.tg_INSERT_COIN = MotionKey.FinalKey; + singlecontrol.tg_GAMESTART = MotionKey.FinalKey; + singlecontrol.tg_UP = MotionKey.FinalKey; + singlecontrol.tg_DOWN = MotionKey.FinalKey; + singlecontrol.tg_LEFT = MotionKey.FinalKey; + singlecontrol.tg_RIGHT = MotionKey.FinalKey; + singlecontrol.tg_BTN_A = MotionKey.FinalKey; + singlecontrol.tg_BTN_B = MotionKey.FinalKey; + singlecontrol.tg_BTN_C = MotionKey.FinalKey; + singlecontrol.tg_BTN_D = MotionKey.FinalKey; + singlecontrol.tg_BTN_E = MotionKey.FinalKey; + singlecontrol.tg_BTN_F = MotionKey.FinalKey; + break; + case 3: + singlecontrol.tg_INSERT_COIN = MotionKey.FinalKey; + singlecontrol.tg_GAMESTART = MotionKey.FinalKey; + singlecontrol.tg_UP = MotionKey.FinalKey; + singlecontrol.tg_DOWN = MotionKey.FinalKey; + singlecontrol.tg_LEFT = MotionKey.FinalKey; + singlecontrol.tg_RIGHT = MotionKey.FinalKey; + singlecontrol.tg_BTN_A = MotionKey.FinalKey; + singlecontrol.tg_BTN_B = MotionKey.FinalKey; + singlecontrol.tg_BTN_C = MotionKey.FinalKey; + singlecontrol.tg_BTN_D = MotionKey.FinalKey; + singlecontrol.tg_BTN_E = MotionKey.FinalKey; + singlecontrol.tg_BTN_F = MotionKey.FinalKey; + break; + } + } +} + diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs.meta new file mode 100644 index 00000000..ad9d3271 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 383edf8c0a98c9345849990416ef860f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniLog.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniLog.cs new file mode 100644 index 00000000..f0bee0a6 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniLog.cs @@ -0,0 +1,10 @@ +using AxibugEmuOnline.Client.ClientCore; +using MAME.Core; + +public class UniLog : ILog +{ + public void Log(string msg) + { + App.log.Debug(msg); + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniLog.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniLog.cs.meta new file mode 100644 index 00000000..0969732c --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniLog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41107c5bd92323948a491a37e8760f3a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniMouse.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniMouse.cs new file mode 100644 index 00000000..e4a1af5f --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniMouse.cs @@ -0,0 +1,23 @@ +using MAME.Core; +using UnityEngine; + +public class UniMouse : MonoBehaviour, IMouse +{ + static int mX, mY; + public byte[] buttons = new byte[2]; + void Update() + { + mX = (int)Input.mousePosition.x; + mY = (int)Input.mousePosition.y; + buttons[0] = Input.GetMouseButton(0) ? (byte)1 : (byte)0; + buttons[1] = Input.GetMouseButton(1) ? (byte)1 : (byte)0; + } + + public void MouseXY(out int X, out int Y, out byte[] MouseButtons) + { + X = mX; + Y = mY * -1; + MouseButtons = buttons; + } + +} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniMouse.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniMouse.cs.meta new file mode 100644 index 00000000..c267820e --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniMouse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e566345b50ca464fb8bd492a22c043b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniResources.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniResources.cs new file mode 100644 index 00000000..28aab6e6 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniResources.cs @@ -0,0 +1,29 @@ +using MAME.Core; +using UnityEngine; + +public class UniResources : IResources +{ + const string ResourceRoot = "MAME/emu/"; + + public byte[] mcu => Resources.Load(ResourceRoot + "cus64-64a1.mcu").bytes; + + public byte[] sfix => Resources.Load(ResourceRoot + "sfix.sfix").bytes; + + public byte[] _000_lo => Resources.Load(ResourceRoot + "000-lo.lo").bytes; + + public byte[] sm1 => Resources.Load(ResourceRoot + "sm1.sm1").bytes; + + public byte[] mainbios => Resources.Load(ResourceRoot + "neogeo_mainbios.rom").bytes; + + public byte[] pgmmainbios => Resources.Load(ResourceRoot + "pgm_mainbios.rom").bytes; + + public byte[] pgmvideobios => Resources.Load(ResourceRoot + "pgm_t01s.rom").bytes; + + public byte[] pgmaudiobios => Resources.Load(ResourceRoot + "pgm_m01s.rom").bytes; + + public byte[] _1 => Resources.Load(ResourceRoot + "1.png").bytes; + + public byte[] readme => Resources.Load(ResourceRoot + "readme.txt").bytes; + + public string mame => Resources.Load(ResourceRoot + "mame.xml").text;//ok +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniResources.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniResources.cs.meta new file mode 100644 index 00000000..db9a2eea --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniResources.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: badc6676adc52b34da8dbda2d4aa0aba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniSoundPlayer.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniSoundPlayer.cs new file mode 100644 index 00000000..6b206190 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniSoundPlayer.cs @@ -0,0 +1,93 @@ +using MAME.Core; +using System; +using UnityEngine; + +public class UniSoundPlayer : MonoBehaviour, ISoundPlayer +{ + [SerializeField] + private AudioSource m_as; + private RingBuffer _buffer = new RingBuffer(4096); + private TimeSpan lastElapsed; + public double audioFPS { get; private set; } + float lastData = 0; + + + void Awake() + { + AudioClip dummy = AudioClip.Create("dummy", 1, 2, AudioSettings.outputSampleRate, false); + dummy.SetData(new float[] { 1, 1 }, 0); + m_as.clip = dummy; + m_as.loop = true; + m_as.spatialBlend = 1; + } + + public void Initialize() + { + if (!m_as.isPlaying) + { + m_as.Play(); + } + } + + public void StopPlay() + { + if (m_as.isPlaying) + { + m_as.Stop(); + } + } + + void OnAudioFilterRead(float[] data, int channels) + { + if (!UMAME.bInGame) return; + int step = channels; + for (int i = 0; i < data.Length; i += step) + { + float rawFloat = lastData; + float rawData; + if (_buffer.TryRead(out rawData)) + { + rawFloat = rawData; + } + + data[i] = rawFloat; + for (int fill = 1; fill < step; fill++) + data[i + fill] = rawFloat; + lastData = rawFloat; + } + } + + public void SubmitSamples(byte[] buffer, int samples_a) + { + var current = UMAME.sw.Elapsed; + var delta = current - lastElapsed; + lastElapsed = current; + audioFPS = 1d / delta.TotalSeconds; + + + for (int i = 0; i < samples_a; i++) + { + short left = BitConverter.ToInt16(buffer, i * 2 * 2); + //short right = BitConverter.ToInt16(buffer, i * 2 * 2 + 2); + _buffer.Write(left / 32767.0f); + //_buffer.Write(right / 32767.0f); + } + } + + public void BufferWirte(int Off, byte[] Data) + { + } + + public void GetCurrentPosition(out int play_position, out int write_position) + { + play_position = 0; + write_position = 0; + } + + public void SetVolume(int Vol) + { + if (m_as) + return; + m_as.volume = Vol; + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniSoundPlayer.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniSoundPlayer.cs.meta new file mode 100644 index 00000000..0049c499 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniSoundPlayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89abab1d3b1020340a147d74e60751ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniTimeSpan.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniTimeSpan.cs new file mode 100644 index 00000000..aeab7d5f --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniTimeSpan.cs @@ -0,0 +1,68 @@ +using MAME.Core; +using System.Diagnostics; + +public class UniTimeSpan : ITimeSpan +{ + public ulong tick; + double startUs; + //double tickDetailus = 16666.666667; + double tickDetailus = 16.666667;//16微秒 (越小越决定tick精度越小) + object tickLock = new object(); + + public void InitStandTime() + { + startUs = GetCurrUs(); + } + + /// + /// 获取当前毫秒 + /// + /// + public double GetCurrUs() + { + return (double)UMAME.sw.ElapsedTicks * 1000000 / Stopwatch.Frequency; + } + + /// + /// 获取当前毫秒 + /// + /// + public double GetRunUs() + { + return ((double)UMAME.sw.ElapsedTicks * 1000000 / Stopwatch.Frequency) - startUs; + } + + public void SetTick(ulong nexttick) + { + //lock (tickLock) + { + tick = nexttick; + } + } + + //这个函数无意义 + public uint GetTickCount() + { + //lock (tickLock) + { + //return (uint)(tick * tickDetail); + return 0; + } + } + + public bool QueryPerformanceCounter(ref long lpPerformanceCount) + { + lock (tickLock) + { + //lpPerformanceCount = (long)tick; + lpPerformanceCount = (long)(GetRunUs() / tickDetailus); + return true; + } + } + + public bool QueryPerformanceFrequency(ref long PerformanceFrequency) + { + PerformanceFrequency = (long)(1000000 / tickDetailus); + return true; + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniTimeSpan.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniTimeSpan.cs.meta new file mode 100644 index 00000000..a61d7478 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniTimeSpan.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a35bf49414a7b194eb8d359004336a8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniVideoPlayer.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniVideoPlayer.cs new file mode 100644 index 00000000..e099b012 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniVideoPlayer.cs @@ -0,0 +1,100 @@ +using AxibugEmuOnline.Client.ClientCore; +using AxibugProtobuf; +using MAME.Core; +using System; +using UnityEngine; +using UnityEngine.UI; + +public class UniVideoPlayer : MonoBehaviour, IVideoPlayer +{ + public Vector2Int mScreenSize { get; private set; } + [SerializeField] + private int mDataLenght; + [SerializeField] + private Texture2D m_rawBufferWarper; + [SerializeField] + private RawImage m_drawCanvas; + [SerializeField] + private RectTransform m_drawCanvasrect; + //int[] mFrameData; + IntPtr mFrameDataPtr; + + private TimeSpan lastElapsed; + public double videoFPS { get; private set; } + public ulong mFrame { get; private set; } + bool bInit = false; + + private void Awake() + { + mFrame = 0; + m_drawCanvas = GameObject.Find("GameRawImage").GetComponent(); + m_drawCanvasrect = m_drawCanvas.GetComponent(); + } + + public void Initialize(int width, int height,IntPtr framePtr) + { + m_drawCanvas.color = Color.white; + + if (m_rawBufferWarper == null || mScreenSize.x != width || mScreenSize.y != height) + { + mScreenSize = new Vector2Int(width, height); + mDataLenght = width * height * 4; + //mFrameData = new int[mWidth * mHeight]; + //MAME来的是BGRA32,好好好 BGRA->RGBA + m_rawBufferWarper = new Texture2D(mScreenSize.x, mScreenSize.y, TextureFormat.RGBA32, false); + m_rawBufferWarper.filterMode = FilterMode.Point; + } + + mFrameDataPtr = framePtr; + m_drawCanvas.texture = m_rawBufferWarper; + bInit = true; + + //float targetWidth = ((float)mScreenSize.x/ mScreenSize.y) * m_drawCanvasrect.rect.height ; + //m_drawCanvasrect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, targetWidth); + } + + public void StopVideo() + { + bInit = false; + m_drawCanvas.color = new Color(0,0,0,0); + } + + //void Update() + //{ + // if (!bInit) return; + // //m_rawBufferWarper.LoadRawTextureData(mFrameDataPtr, mDataLenght); + // //m_rawBufferWarper.Apply(); + //} + + public void SubmitVideo(int[] data, long frame_number) + { + mFrame = (ulong)frame_number; + UMAME.instance.mTimeSpan.SetTick(mFrame); + var current = UMAME.sw.Elapsed; + var delta = current - lastElapsed; + lastElapsed = current; + videoFPS = 1d / delta.TotalSeconds; + //mFrameData = data; + + //Debug.Log($"frame_number -> {frame_number}"); + m_rawBufferWarper.LoadRawTextureData(mFrameDataPtr, mDataLenght); + m_rawBufferWarper.Apply(); + + } + + public byte[] GetScreenImg() + { + return (m_drawCanvas.texture as Texture2D).EncodeToJPG(); + } + + + public void ApplyFilterEffect() + { + App.settings.Filter.ExecuteFilterRender(m_rawBufferWarper, m_drawCanvas); + } + + public void ApplyScreenScaler() + { + App.settings.ScreenScaler.CalcScale(m_drawCanvas, UMAME.instance.Platform); + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniVideoPlayer.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniVideoPlayer.cs.meta new file mode 100644 index 00000000..8aeb67dd --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniVideoPlayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f675565b1f4ed7744a8ea9788c92429d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/AudioProvider.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/AudioProvider.cs similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/AudioProvider.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/AudioProvider.cs diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/AudioProvider.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/AudioProvider.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/AudioProvider.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/AudioProvider.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreDebuger.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreDebuger.cs similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreDebuger.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreDebuger.cs diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreDebuger.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreDebuger.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreDebuger.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreDebuger.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreSupporter.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreSupporter.cs similarity index 99% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreSupporter.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreSupporter.cs index 5031ab68..e1c2aea1 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreSupporter.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreSupporter.cs @@ -12,9 +12,9 @@ namespace AxibugEmuOnline.Client public class CoreSupporter : ISupporterImpl { private NesControllerMapper m_controllerMapper; - public CoreSupporter(NesControllerMapper conMapper) - { - m_controllerMapper = conMapper; + public CoreSupporter(NesControllerMapper conMapper) + { + m_controllerMapper = conMapper; } public Stream OpenRom(string fname) @@ -107,9 +107,9 @@ namespace AxibugEmuOnline.Client uint LastTestInput = 0; public void SampleInput(uint frameIndex) { - if (InGameUI.Instance.IsNetPlay) + if (InGameUI.Instance.IsNetPlay) { - int targetFrame; ReplayStep replayData; int frameDiff; bool inputDiff; + int targetFrame; ReplayStep replayData; int frameDiff; bool inputDiff; if (App.roomMgr.netReplay.TryGetNextFrame((int)frameIndex, out replayData, out frameDiff, out inputDiff)) { if (inputDiff) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreSupporter.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreSupporter.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/CoreSupporter.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/CoreSupporter.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesControllerMapper.cs similarity index 99% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesControllerMapper.cs index f656e589..f2b58e5d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesControllerMapper.cs @@ -1,4 +1,4 @@ -锘縰sing AxibugEmuOnline.Client.Common; +锘縰sing AxibugEmuOnline.Client.Common; using AxibugEmuOnline.Client.Event; using System.Collections.Generic; using System.Linq; @@ -21,8 +21,8 @@ namespace AxibugEmuOnline.Client m_states[0] = m_states[1] = m_states[2] = m_states[3] = 0; if (Controller0.ConnectSlot.HasValue) m_states[Controller0.ConnectSlot.Value] = Controller0.GetButtons(); - else if (Controller0.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 0); - + else if (Controller0.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 0); + if (Controller1.ConnectSlot.HasValue) m_states[Controller1.ConnectSlot.Value] = Controller1.GetButtons(); else if (Controller1.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 1); @@ -45,73 +45,73 @@ namespace AxibugEmuOnline.Client Controller1.ConnectSlot = con1ToSlot; Controller2.ConnectSlot = con2ToSlot; Controller3.ConnectSlot = con3ToSlot; - } - - public int? GetSlotConnectingControllerIndex(int slotIndex) - { - if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return 0; - else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return 1; - else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return 2; - else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return 3; - else return null; - } - - public IController GetSlotConnectingController(int slotIndex) - { - if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return Controller0; - else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return Controller1; - else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return Controller2; - else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return Controller3; - else return null; - } - - //static HashSet s_temp = new HashSet(4); - //浣庣増鏈笉鑳借繖鏍峰垵濮嬪寲 - static HashSet s_temp = new HashSet(); - public uint? GetFreeSlotIndex() - { - s_temp.Clear(); - s_temp.Add(0); - s_temp.Add(1); - s_temp.Add(2); - s_temp.Add(3); - - if (Controller0.ConnectSlot.HasValue) s_temp.Remove(Controller0.ConnectSlot.Value); - if (Controller1.ConnectSlot.HasValue) s_temp.Remove(Controller1.ConnectSlot.Value); - if (Controller2.ConnectSlot.HasValue) s_temp.Remove(Controller2.ConnectSlot.Value); - if (Controller3.ConnectSlot.HasValue) s_temp.Remove(Controller3.ConnectSlot.Value); - - if (s_temp.Count > 0) return s_temp.First(); - else return null; - } - - public void LetControllerConnect(int conIndex, uint slotIndex) - { - Controller targetController; - switch (conIndex) - { - case 0: targetController = Controller0; break; - case 1: targetController = Controller1; break; - case 2: targetController = Controller2; break; - case 3: targetController = Controller3; break; - default: - throw new System.Exception($"Not Allowed conIndex Range: {conIndex}"); - break; - } - //var targetController = conIndex switch - //{ - // 0 => Controller0, - // 1 => Controller1, - // 2 => Controller2, - // 3 => Controller3, - // _ => throw new System.Exception($"Not Allowed conIndex Range: {conIndex}") - //}; - - if (targetController.ConnectSlot.HasValue) return; - - targetController.ConnectSlot = slotIndex; - - Eventer.Instance.PostEvent(EEvent.OnControllerConnectChanged); + } + + public int? GetSlotConnectingControllerIndex(int slotIndex) + { + if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return 0; + else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return 1; + else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return 2; + else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return 3; + else return null; + } + + public IController GetSlotConnectingController(int slotIndex) + { + if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return Controller0; + else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return Controller1; + else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return Controller2; + else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return Controller3; + else return null; + } + + //static HashSet s_temp = new HashSet(4); + //浣庣増鏈笉鑳借繖鏍峰垵濮嬪寲 + static HashSet s_temp = new HashSet(); + public uint? GetFreeSlotIndex() + { + s_temp.Clear(); + s_temp.Add(0); + s_temp.Add(1); + s_temp.Add(2); + s_temp.Add(3); + + if (Controller0.ConnectSlot.HasValue) s_temp.Remove(Controller0.ConnectSlot.Value); + if (Controller1.ConnectSlot.HasValue) s_temp.Remove(Controller1.ConnectSlot.Value); + if (Controller2.ConnectSlot.HasValue) s_temp.Remove(Controller2.ConnectSlot.Value); + if (Controller3.ConnectSlot.HasValue) s_temp.Remove(Controller3.ConnectSlot.Value); + + if (s_temp.Count > 0) return s_temp.First(); + else return null; + } + + public void LetControllerConnect(int conIndex, uint slotIndex) + { + Controller targetController; + switch (conIndex) + { + case 0: targetController = Controller0; break; + case 1: targetController = Controller1; break; + case 2: targetController = Controller2; break; + case 3: targetController = Controller3; break; + default: + throw new System.Exception($"Not Allowed conIndex Range: {conIndex}"); + break; + } + //var targetController = conIndex switch + //{ + // 0 => Controller0, + // 1 => Controller1, + // 2 => Controller2, + // 3 => Controller3, + // _ => throw new System.Exception($"Not Allowed conIndex Range: {conIndex}") + //}; + + if (targetController.ConnectSlot.HasValue) return; + + targetController.ConnectSlot = slotIndex; + + Eventer.Instance.PostEvent(EEvent.OnControllerConnectChanged); } /// @@ -174,28 +174,28 @@ namespace AxibugEmuOnline.Client return res; } - public bool AnyButtonDown() - { - return - UP.IsDown || - DOWN.IsDown || - LEFT.IsDown || - RIGHT.IsDown || - A.IsDown || - B.IsDown || - SELECT.IsDown || - START.IsDown || - MIC.IsDown; + public bool AnyButtonDown() + { + return + UP.IsDown || + DOWN.IsDown || + LEFT.IsDown || + RIGHT.IsDown || + A.IsDown || + B.IsDown || + SELECT.IsDown || + START.IsDown || + MIC.IsDown; } public static KeyListener GetKey(int controllerInput, EnumButtonType nesConBtnType) { - string configKey = $"NES_{controllerInput}_{nesConBtnType}"; - - //PSV骞冲彴鍥哄畾閿 - if (UnityEngine.Application.platform == RuntimePlatform.PSP2) + string configKey = $"NES_{controllerInput}_{nesConBtnType}"; + + //PSV骞冲彴鍥哄畾閿 + if (UnityEngine.Application.platform == RuntimePlatform.PSP2) { - return KeyListener.GetPSVitaKey(controllerInput, nesConBtnType); + return KeyListener.GetPSVitaKey(controllerInput, nesConBtnType); } if (PlayerPrefs.HasKey(configKey)) @@ -251,10 +251,10 @@ namespace AxibugEmuOnline.Client { m_keyListener = Controller.GetKey(m_hostController.ControllerIndex, m_buttonType); } - } - //low C# readonly - //public readonly struct KeyListener - + } + //low C# readonly + //public readonly struct KeyListener + public struct KeyListener { private readonly KeyCode m_key; @@ -269,7 +269,7 @@ namespace AxibugEmuOnline.Client { m_key = KeyCode.None; - int result; + int result; if (int.TryParse(confStr, out result)) m_key = (KeyCode)result; } @@ -278,9 +278,9 @@ namespace AxibugEmuOnline.Client { return Input.GetKey(m_key); } - public bool IsDown() - { - return Input.GetKeyDown(m_key); + public bool IsDown() + { + return Input.GetKeyDown(m_key); } public override string ToString() @@ -343,9 +343,9 @@ namespace AxibugEmuOnline.Client } return default(KeyListener); - } - - + } + + public static KeyListener GetPSVitaKey(int controllerIndex, EnumButtonType nesConBtnType) { switch (controllerIndex) @@ -376,6 +376,6 @@ namespace AxibugEmuOnline.Client } return default(KeyListener); } - } + } } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesControllerMapper.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesControllerMapper.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs similarity index 99% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs index 12f82c07..b70030d8 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs @@ -20,12 +20,12 @@ namespace AxibugEmuOnline.Client public NES NesCore { get; private set; } /// 鏄惁鏆傚仠 - public bool IsPause { get; private set; } + public bool IsPause { get; private set; } public NesControllerMapper ControllerMapper { get; private set; } - private void Awake() - { - ControllerMapper = new NesControllerMapper(); + private void Awake() + { + ControllerMapper = new NesControllerMapper(); } private void Start() @@ -51,8 +51,8 @@ namespace AxibugEmuOnline.Client var screenBuffer = NesCore.ppu.GetScreenPtr(); VideoProvider.SetDrawData(screenBuffer); - } - + } + VideoProvider.ApplyScreenScaler(); VideoProvider.ApplyFilterEffect(); } @@ -178,17 +178,17 @@ namespace AxibugEmuOnline.Client return true; - } - - - public IControllerSetuper GetControllerSetuper() - { - return ControllerMapper; - } - - public void Dispose() - { - StopGame(); + } + + + public IControllerSetuper GetControllerSetuper() + { + return ControllerMapper; + } + + public void Dispose() + { + StopGame(); } #if UNITY_EDITOR @@ -219,7 +219,7 @@ namespace AxibugEmuOnline.Client UnityEditor.EditorUtility.SetDirty(db); UnityEditor.AssetDatabase.SaveAssets(); - } -#endif + } +#endif } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.mat b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.mat similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.mat rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.mat diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.mat.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.mat.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.mat.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.mat.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.shader b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.shader similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.shader rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.shader diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.shader.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.shader.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator_Screen.shader.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator_Screen.shader.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PaletteDefine.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PaletteDefine.cs similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PaletteDefine.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PaletteDefine.cs diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PaletteDefine.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PaletteDefine.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PaletteDefine.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PaletteDefine.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PatternViewer.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PatternViewer.cs similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PatternViewer.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PatternViewer.cs diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PatternViewer.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PatternViewer.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/PatternViewer.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/PatternViewer.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/RomDB.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/RomDB.cs similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/RomDB.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/RomDB.cs diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/RomDB.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/RomDB.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/RomDB.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/RomDB.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/VideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/VideoProvider.cs similarity index 99% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/VideoProvider.cs rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/VideoProvider.cs index f75af24d..e6603d77 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/VideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/VideoProvider.cs @@ -83,9 +83,9 @@ namespace AxibugEmuOnline.Client App.settings.Filter.ExecuteFilterRender(rt_gpu, Image); } - public void ApplyScreenScaler() - { - App.settings.ScreenScaler.CalcScale(Image, RomPlatformType.Nes); + public void ApplyScreenScaler() + { + App.settings.ScreenScaler.CalcScale(Image, RomPlatformType.Nes); } private unsafe void PrepareUI(uint* screenData) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/VideoProvider.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/VideoProvider.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/VideoProvider.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/VideoProvider.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs index 6cd6ad7a..ee2b4477 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs @@ -54,6 +54,12 @@ namespace AxibugEmuOnline.Client.Manager { case RomPlatformType.Nes: m_emuCore = GameObject.Instantiate(Resources.Load("NES/NesEmulator")).GetComponent(); + break; + case RomPlatformType.Cps1: + case RomPlatformType.Cps2: + case RomPlatformType.Igs: + case RomPlatformType.Neogeo: + m_emuCore = GameObject.Instantiate(Resources.Load("MAME/UMAME")).GetComponent(); break; } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs index 41af7649..94e7576f 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs @@ -106,6 +106,11 @@ namespace AxibugEmuOnline.Client switch (platform) { case RomPlatformType.Nes: return new Vector2Int(256, 240); + case RomPlatformType.Cps1: + case RomPlatformType.Cps2: + case RomPlatformType.Neogeo: + case RomPlatformType.Igs: + return UMAME.instance.mUniVideoPlayer.mScreenSize; default: throw new System.NotImplementedException($"鏈疄鐜扮殑骞冲彴:{platform}"); } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UMame.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/UMame.meta new file mode 100644 index 00000000..a9b1f05c --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UMame.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea791d3660bb49a4d94f1d824a488569 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Web/Controllers/ApiController.cs b/AxibugEmuOnline.Web/Controllers/ApiController.cs index ad17256d..aaf2803c 100644 --- a/AxibugEmuOnline.Web/Controllers/ApiController.cs +++ b/AxibugEmuOnline.Web/Controllers/ApiController.cs @@ -66,7 +66,7 @@ namespace AxibugEmuOnline.Web.Controllers MySqlConnection conn = SQLPool.DequeueSQLConn("RomList"); { string platformCond = ""; - if (GType > (int)RomPlatformType.Invalid && GType < (int)RomPlatformType.All) + if (Ptype > (int)RomPlatformType.Invalid && Ptype < (int)RomPlatformType.All) { platformCond = $" and PlatformType = '{Ptype}' "; } @@ -176,7 +176,7 @@ namespace AxibugEmuOnline.Web.Controllers MySqlConnection conn = SQLPool.DequeueSQLConn("MarkList"); { string platformCond = ""; - if (GType > (int)RomPlatformType.Invalid && GType < (int)RomPlatformType.All) + if (Ptype > (int)RomPlatformType.Invalid && Ptype < (int)RomPlatformType.All) { platformCond = $" and romlist.PlatformType = '{Ptype}' "; } @@ -288,7 +288,7 @@ LIMIT ?offset, ?pageSize;"; Resp_RomInfo resp = new Resp_RomInfo(); MySqlConnection conn = SQLPool.DequeueSQLConn("NesRomList"); { - string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType`,mlist.`parentids` FROM romlist where id = ?romid;"; + string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType`,`parentids` FROM romlist where id = ?romid;"; using (var command = new MySqlCommand(query, conn)) { // 设置参数值 diff --git a/AxibugEmuOnline.Web/Properties/PublishProfiles/FolderProfile.pubxml.user b/AxibugEmuOnline.Web/Properties/PublishProfiles/FolderProfile.pubxml.user index df8a9f26..18d2e951 100644 --- a/AxibugEmuOnline.Web/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/AxibugEmuOnline.Web/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>G:\Sin365\AxibugEmuOnline\AxibugEmuOnline.Web\bin\Release\net8.0\publish\ - True|2025-01-13T07:57:42.8554189Z||;True|2025-01-13T15:56:16.9992929+08:00||;True|2025-01-09T15:00:13.8691822+08:00||;True|2025-01-09T14:47:16.4993283+08:00||;True|2025-01-09T14:47:09.3814423+08:00||;True|2025-01-09T14:38:36.2730244+08:00||;True|2025-01-08T13:35:26.6793825+08:00||;True|2025-01-07T10:37:18.6461694+08:00||;True|2024-09-12T14:18:38.6992653+08:00||;True|2024-09-12T14:08:58.4526827+08:00||;True|2024-08-22T14:13:06.3067002+08:00||;True|2024-08-14T10:33:10.9180984+08:00||;True|2024-08-13T18:28:27.5050523+08:00||;True|2024-08-13T18:25:47.6591234+08:00||;True|2024-08-13T18:25:17.5344107+08:00||;True|2024-08-13T17:46:23.4523329+08:00||; + True|2025-01-23T06:10:54.0851574Z||;True|2025-01-23T13:21:13.2937446+08:00||;True|2025-01-23T13:15:40.1876887+08:00||;True|2025-01-13T15:57:42.8554189+08:00||;True|2025-01-13T15:56:16.9992929+08:00||;True|2025-01-09T15:00:13.8691822+08:00||;True|2025-01-09T14:47:16.4993283+08:00||;True|2025-01-09T14:47:09.3814423+08:00||;True|2025-01-09T14:38:36.2730244+08:00||;True|2025-01-08T13:35:26.6793825+08:00||;True|2025-01-07T10:37:18.6461694+08:00||;True|2024-09-12T14:18:38.6992653+08:00||;True|2024-09-12T14:08:58.4526827+08:00||;True|2024-08-22T14:13:06.3067002+08:00||;True|2024-08-14T10:33:10.9180984+08:00||;True|2024-08-13T18:28:27.5050523+08:00||;True|2024-08-13T18:25:47.6591234+08:00||;True|2024-08-13T18:25:17.5344107+08:00||;True|2024-08-13T17:46:23.4523329+08:00||; \ No newline at end of file