From 69b3a5e584e34a98bc19cf5c66cc6051f568352d Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Mon, 29 Jul 2024 09:25:19 +0800 Subject: [PATCH 1/5] 123 --- .../Assets/VirtualNes.Core/Mapper/Mapper.cs | 1 + .../Assets/VirtualNes.Core/NES.cs | 20 ++++++ .../Assets/VirtualNes.Core/PPU.cs | 62 +++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs index 75c6b555..9dfefae3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs @@ -78,6 +78,7 @@ namespace VirtualNes.Core public static Mapper CreateMapper(NES parent, int no) { + //todo : 实现加载mapper switch (no) { default: diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs index 118698e4..997017e6 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs @@ -8,6 +8,8 @@ namespace VirtualNes.Core { public class NES { + public const int FETCH_CYCLES = 8; + public CPU cpu; public PPU ppu; public APU apu; @@ -181,7 +183,25 @@ namespace VirtualNes.Core if (RenderMethod < EnumRenderMethod.POST_RENDER) { EmulationCPU(nescfg.ScanlineCycles); + ppu.FrameStart(); + ppu.ScanlineNext(); + mapper.HSync(scanline); + ppu.ScanlineStart(); } + else + { + EmulationCPU(nescfg.HDrawCycles); + ppu.FrameStart(); + ppu.ScanlineNext(); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 32); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + } + else if (scanline < 240) + { + } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs index f5b64b3d..ef7e7fae 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs @@ -363,6 +363,68 @@ namespace VirtualNes.Core MemoryUtility.memset(lpColormode, 0, (int)(Screen.SCREEN_HEIGHT)); } + internal void FrameStart() + { + if ((MMU.PPUREG[1] & (PPU_SPDISP_BIT | PPU_BGDISP_BIT)) != 0) + { + MMU.loopy_v = MMU.loopy_t; + loopy_shift = MMU.loopy_x; + loopy_y = (ushort)((MMU.loopy_v & 0x7000) >> 12); + } + + if (lpScreen != null) + { + MemoryUtility.memset(lpScreen, 0x3F, (int)Screen.SCREEN_WIDTH); + } + if (lpColormode != null) + { + lpColormode[0] = 0; + } + } + + internal void ScanlineNext() + { + if ((MMU.PPUREG[1] & (PPU_BGDISP_BIT | PPU_SPDISP_BIT)) != 0) + { + if ((MMU.loopy_v & 0x7000) == 0x7000) + { + MMU.loopy_v &= 0x8FFF; + if ((MMU.loopy_v & 0x03E0) == 0x03A0) + { + MMU.loopy_v ^= 0x0800; + MMU.loopy_v &= 0xFC1F; + } + else + { + if ((MMU.loopy_v & 0x03E0) == 0x03E0) + { + MMU.loopy_v &= 0xFC1F; + } + else + { + MMU.loopy_v += 0x0020; + } + } + } + else + { + MMU.loopy_v += 0x1000; + } + loopy_y = (ushort)((MMU.loopy_v & 0x7000) >> 12); + } + } + + internal void ScanlineStart() + { + if ((MMU.PPUREG[1] & (PPU_BGDISP_BIT | PPU_SPDISP_BIT)) != 0) + { + MMU.loopy_v = (ushort)((MMU.loopy_v & 0xFBE0) | (MMU.loopy_t & 0x041F)); + loopy_shift = MMU.loopy_x; + loopy_y = (ushort)((MMU.loopy_v & 0x7000) >> 12); + nes.mapper.PPU_Latch((ushort)(0x2000 + (MMU.loopy_v & 0x0FFF))); + } + } + private enum Screen { SCREEN_WIDTH = 256 + 16, From 1f317c1b000ffa5b66c1053f6bd409d51c43ca21 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Tue, 30 Jul 2024 11:57:09 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=BF=AD=E4=BB=A3=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Scene/EmuTest.unity | 221 ++++- .../Script/NesEmulator/CoreSupporter.cs | 28 + .../Assets/Script/NesEmulator/NesEmulator.cs | 23 +- .../New Render Texture.renderTexture | 38 + .../New Render Texture.renderTexture.meta | 8 + .../Script/NesEmulator/VideoProvider.cs | 25 + .../Script/NesEmulator/VideoProvider.cs.meta | 11 + .../Assets/VirtualNes.Core/ApuEX/APU_FDS.cs | 11 +- .../Assets/VirtualNes.Core/ApuEX/APU_FME7.cs | 9 +- .../VirtualNes.Core/ApuEX/APU_INTERNAL.cs | 9 +- .../Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs | 11 +- .../Assets/VirtualNes.Core/ApuEX/APU_N106.cs | 9 +- .../Assets/VirtualNes.Core/ApuEX/APU_VRC7.cs | 9 +- .../Assets/VirtualNes.Core/Cheat.cs | 16 + .../VirtualNes.Core/CoreLibs/MemoryUtility.cs | 19 +- .../Assets/VirtualNes.Core/MMU.cs | 3 + .../Assets/VirtualNes.Core/Mapper/Mapper.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper004.cs | 576 +++++++++++++ .../VirtualNes.Core/Mapper/Mapper004.cs.meta | 11 + .../Assets/VirtualNes.Core/NES.cs | 770 +++++++++++++++++- .../Assets/VirtualNes.Core/PAD.cs | 36 + .../Assets/VirtualNes.Core/PPU.cs | 750 ++++++++++++++++- .../Assets/VirtualNes.Core/ROM.cs | 7 +- .../Supporter/EmulatorConfig/CfgGraphics.cs | 33 + .../Supporter/EmulatorConfig/CfgMovie.cs | 10 +- .../Supporter/EmulatorConfig/CfgPath.cs | 21 +- .../VirtualNes.Core/Supporter/Supporter.cs | 18 + 27 files changed, 2625 insertions(+), 62 deletions(-) create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs.meta create mode 100644 AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs create mode 100644 AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity b/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity index 2d477ba1..c3cf3001 100644 --- a/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity +++ b/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity @@ -152,6 +152,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 39557e19783acee499ace6c68549e8f8, type: 3} m_Name: m_EditorClassIdentifier: + VideoProvider: {fileID: 1295252151} --- !u!4 &149545948 Transform: m_ObjectHideFlags: 0 @@ -162,7 +163,8 @@ Transform: 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_Children: [] + m_Children: + - {fileID: 1295252150} m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -259,6 +261,78 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &861747459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 861747460} + - component: {fileID: 861747462} + - component: {fileID: 861747461} + m_Layer: 5 + m_Name: RawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &861747460 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861747459} + 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_Children: [] + m_Father: {fileID: 1727033528} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &861747461 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861747459} + 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: 1, g: 1, b: 1, 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_Texture: {fileID: 8400000, guid: ffe34aaf87e4b9942b4c2ac05943d444, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &861747462 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861747459} + m_CullTransparentMesh: 1 --- !u!1 &1232273651 GameObject: m_ObjectHideFlags: 0 @@ -342,6 +416,51 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1295252149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1295252150} + - component: {fileID: 1295252151} + m_Layer: 0 + m_Name: VideoProvider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1295252150 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295252149} + 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_Children: + - {fileID: 1727033528} + m_Father: {fileID: 149545948} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1295252151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295252149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83fbe375412d1af4482ae76e81c1dda2, type: 3} + m_Name: + m_EditorClassIdentifier: + Image: {fileID: 861747461} --- !u!1 &1359344831 GameObject: m_ObjectHideFlags: 0 @@ -408,3 +527,103 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1727033527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727033528} + - component: {fileID: 1727033531} + - component: {fileID: 1727033530} + - component: {fileID: 1727033529} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1727033528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727033527} + 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_Children: + - {fileID: 861747460} + m_Father: {fileID: 1295252150} + m_RootOrder: 0 + 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!114 &1727033529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727033527} + 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!114 &1727033530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727033527} + 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!223 &1727033531 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727033527} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs index 0c3fb5c2..7cb639b3 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs @@ -64,5 +64,33 @@ namespace AxibugEmuOnline.Client } public EmulatorConfig Config { get; private set; } = new EmulatorConfig(); + + public void PrepareDirectory(string directPath) + { + Directory.CreateDirectory($"{Application.persistentDataPath}/{directPath}"); + } + + public void SaveFile(byte[] fileData, string directPath, string fileName) + { + PrepareDirectory(directPath); + + var fileFullpath = $"{Application.persistentDataPath}/{directPath}/{fileName}"; + File.WriteAllBytes(fileFullpath, fileData); + } + + public Stream OpenFile(string directPath, string fileName) + { + try + { + var data = File.ReadAllBytes($"{Application.persistentDataPath}/{directPath}/{fileName}"); + if (data == null) return null; + return new MemoryStream(data); + } + catch + { + return null; + } + + } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs index a22cab92..411c3c0a 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; using VirtualNes.Core; using VirtualNes.Core.Debug; @@ -8,6 +9,8 @@ namespace AxibugEmuOnline.Client { private NES m_nesIns; + public VideoProvider VideoProvider; + private void Start() { StartGame("Kirby.nes"); @@ -19,8 +22,17 @@ namespace AxibugEmuOnline.Client Supporter.Setup(new CoreSupporter()); Debuger.Setup(new CoreDebuger()); - m_nesIns = new NES(romName); - m_nesIns.Command(NESCOMMAND.NESCMD_HWRESET); + + try + { + m_nesIns = new NES(romName); + m_nesIns.Command(NESCOMMAND.NESCMD_HWRESET); + } + catch (Exception ex) + { + m_nesIns = null; + Debug.LogError(ex); + } } public void StopGame() @@ -31,7 +43,12 @@ namespace AxibugEmuOnline.Client private void Update() { - m_nesIns?.EmulateFrame(true); + if (m_nesIns != null) + { + m_nesIns.EmulateFrame(true); + var screenBuffer = m_nesIns.ppu.GetScreenPtr(); + VideoProvider.SetDrawData(screenBuffer, PPU.SCREEN_WIDTH, PPU.SCREEN_HEIGHT); + } } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture new file mode 100644 index 00000000..67213061 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Render Texture + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 3 + m_Width: 272 + m_Height: 240 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthFormat: 2 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture.meta b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture.meta new file mode 100644 index 00000000..bfd7ec1a --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/New Render Texture.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffe34aaf87e4b9942b4c2ac05943d444 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs new file mode 100644 index 00000000..f0772714 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.UI; + +namespace AxibugEmuOnline.Client +{ + public class VideoProvider : MonoBehaviour + { + public RawImage Image; + + private Texture2D wrapTex; + + public void SetDrawData(byte[] data, int width, int height) + { + if (wrapTex == null) wrapTex = new Texture2D(width, height); + + var colors = data.Select(d => new Color((d / 255f), (d / 255f), (d / 255f), 1)).ToArray(); + wrapTex.SetPixels(colors); + wrapTex.Apply(); + Graphics.Blit(wrapTex, Image.texture as RenderTexture); + } + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs.meta b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs.meta new file mode 100644 index 00000000..a7c1dff0 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83fbe375412d1af4482ae76e81c1dda2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FDS.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FDS.cs index 56943b56..d273fc4b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FDS.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FDS.cs @@ -9,22 +9,23 @@ namespace VirtualNes.Core public override void Reset(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Setup(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Write(ushort addr, byte data) { - throw new System.NotImplementedException(); + //todo : 实现 } public override int Process(int channel) { - throw new System.NotImplementedException(); + //todo : 实现 + return 0; } internal void SyncWrite(ushort addr, byte data) @@ -34,7 +35,7 @@ namespace VirtualNes.Core private void WriteSub(ushort addr, byte data, FDSSOUND ch, double rate) { - throw new NotImplementedException(); + //todo : 实现 } private class FDSSOUND diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs index e567bb24..28717444 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs @@ -6,22 +6,23 @@ namespace VirtualNes.Core { public override void Reset(float fClock, int nRate) { - throw new NotImplementedException(); + //todo : 实现 } public override void Setup(float fClock, int nRate) { - throw new NotImplementedException(); + //todo : 实现 } public override void Write(ushort addr, byte data) { - throw new NotImplementedException(); + //todo : 实现 } public override int Process(int channel) { - throw new NotImplementedException(); + //todo : 实现 + return 0; } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs index 5f1fb969..1b887559 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs @@ -127,22 +127,23 @@ namespace VirtualNes.Core public override void Reset(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : ʵ } public override void Setup(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : ʵ } public override void Write(ushort addr, byte data) { - throw new System.NotImplementedException(); + //todo : ʵ } public override int Process(int channel) { - throw new System.NotImplementedException(); + //todo : ʵ + return 0; } internal byte SyncRead(ushort addr) diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs index 0b0d4de1..30ffb1e2 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs @@ -6,27 +6,28 @@ namespace VirtualNes.Core { public override void Reset(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Setup(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Write(ushort addr, byte data) { - throw new System.NotImplementedException(); + //todo : 实现 } public override int Process(int channel) { - throw new System.NotImplementedException(); + //todo : 实现 + return 0; } internal void SyncWrite(ushort addr, byte data) { - throw new NotImplementedException(); + //todo : 实现 } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_N106.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_N106.cs index e34a56fc..2fe943e4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_N106.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_N106.cs @@ -4,22 +4,23 @@ { public override void Reset(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Setup(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Write(ushort addr, byte data) { - throw new System.NotImplementedException(); + //todo : 实现 } public override int Process(int channel) { - throw new System.NotImplementedException(); + //todo : 实现 + return 0; } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC7.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC7.cs index f15b9d22..448ddd0f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC7.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC7.cs @@ -4,22 +4,23 @@ { public override void Reset(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Setup(float fClock, int nRate) { - throw new System.NotImplementedException(); + //todo : 实现 } public override void Write(ushort addr, byte data) { - throw new System.NotImplementedException(); + //todo : 实现 } public override int Process(int channel) { - throw new System.NotImplementedException(); + //todo : 实现 + return 0; } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Cheat.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Cheat.cs index f1d47667..57780261 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Cheat.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Cheat.cs @@ -2,6 +2,22 @@ { public class CHEATCODE { + // 埲壓偺俀偮偼OR儅僗僋 + public const int CHEAT_ENABLE = 1 << 0; + public const int CHEAT_KEYDISABLE = 1 << 1; + + // 彂偒崬傒庬椶 + public const int CHEAT_TYPE_ALWAYS = 0; // 忢偵彂偒崬傒 + public const int CHEAT_TYPE_ONCE = 1; // 侾夞偩偗彂偒崬傒 + public const int CHEAT_TYPE_GREATER = 2; // 僨乕僞傛傝戝偒偄帪 + public const int CHEAT_TYPE_LESS = 3; // 僨乕僞傛傝彫偝偄帪 + + // 僨乕僞挿 + public const int CHEAT_LENGTH_1BYTE = 0; + public const int CHEAT_LENGTH_2BYTE = 1; + public const int CHEAT_LENGTH_3BYTE = 2; + public const int CHEAT_LENGTH_4BYTE = 3; + public byte enable; public byte type; public byte length; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs index 71a82caf..b6a45c32 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs @@ -1,17 +1,26 @@ -using System.Runtime.CompilerServices; +using System; +using System.Runtime.CompilerServices; namespace VirtualNes.Core { public static class MemoryUtility { - public static void ZEROMEMORY(byte[] array, uint length) + public static void ZEROMEMORY(byte[] array, int length) { - memset(array, 0, length); + Array.Clear(array, 0, array.Length); } - public static void memset(byte[] array, byte value, uint length) + public static void memset(byte[] array, byte value, int length) { - Unsafe.InitBlock(ref array[0], value, length); + memset(array, 0, value, length); + } + + public static void memset(byte[] array, int offset, byte value, int length) + { + for (int i = offset; i < length; i++) + { + array[i] = value; + } } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs index b3d409f6..790f5ed2 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs @@ -67,6 +67,9 @@ namespace VirtualNes public const byte VRAM_MIRROR4L = 0x03; // PA10 L屌掕 $2000-$23FF偺儈儔乕 public const byte VRAM_MIRROR4H = 0x04; // PA10 H屌掕 $2400-$27FF偺儈儔乕 + // Frame-IRQ儗僕僗僞($4017) + public static int FrameIRQ; + internal static void SetPROM_Bank(byte page, Memory ptr, byte type) { CPU_MEM_BANK[page] = ptr; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs index 9dfefae3..542201a2 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs @@ -5,6 +5,7 @@ namespace VirtualNes.Core public abstract class Mapper { protected NES nes; + public Mapper(NES parent) { nes = parent; @@ -81,8 +82,10 @@ namespace VirtualNes.Core //todo : 实现加载mapper switch (no) { + case 4: + return new Mapper004(parent); default: - throw new NotImplementedException($"Mapper#{no} is not Impl"); + throw new NotImplementedException($"Mapper#{no:000} is not Impl"); } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs new file mode 100644 index 00000000..0106263f --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs @@ -0,0 +1,576 @@ +using Codice.CM.Client.Differences; +using System; + +namespace VirtualNes.Core +{ + public class Mapper004 : Mapper + { + private const int MMC3_IRQ_KLAX = 1; + private const int MMC3_IRQ_SHOUGIMEIKAN = 2; + private const int MMC3_IRQ_DAI2JISUPER = 3; + private const int MMC3_IRQ_DBZ2 = 4; + private const int MMC3_IRQ_ROCKMAN3 = 5; + + protected byte[] reg = new byte[8]; + protected byte prg0, prg1; + protected byte chr01, chr23, chr4, chr5, chr6, chr7; + protected byte we_sram; + + protected byte irq_type; + protected byte irq_enable; + protected byte irq_counter; + protected byte irq_latch; + protected byte irq_request; + protected byte irq_preset; + protected byte irq_preset_vbl; + + protected byte vs_patch; + protected byte vs_index; + + private byte[] VS_TKO_Security = new byte[32] + { + 0xff, 0xbf, 0xb7, 0x97, 0x97, 0x17, 0x57, 0x4f, + 0x6f, 0x6b, 0xeb, 0xa9, 0xb1, 0x90, 0x94, 0x14, + 0x56, 0x4e, 0x6f, 0x6b, 0xeb, 0xa9, 0xb1, 0x90, + 0xd4, 0x5c, 0x3e, 0x26, 0x87, 0x83, 0x13, 0x00 + }; + + public Mapper004(NES parent) : base(parent) { } + + public override void Reset() + { + for (int i = 0; i < 8; i++) + { + reg[i] = 0x00; + } + + prg0 = 0; + prg1 = 1; + SetBank_CPU(); + + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + SetBank_PPU(); + + we_sram = 0; // Disable + irq_enable = 0; // Disable + irq_counter = 0; + irq_latch = 0xFF; + irq_request = 0; + irq_preset = 0; + irq_preset_vbl = 0; + + // IRQ僞僀僾愝掕 + nes.SetIrqType(NES.IRQMETHOD.IRQ_CLOCK); + irq_type = 0; + + uint crc = nes.rom.GetPROM_CRC(); + + if (crc == 0x5c707ac4) + { // Mother(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0xcb106f49) + { // F-1 Sensation(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x1170392a) + { // Karakuri Kengou Den - Musashi Road - Karakuri Nin Hashiru!(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x14a01c70) + { // Gun-Dec(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0xeffeea40) + { // For Klax(J) + irq_type = MMC3_IRQ_KLAX; + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0xc17ae2dc) + { // God Slayer - Haruka Tenkuu no Sonata(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x126ea4a0) + { // Summer Carnival '92 - Recca(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x1f2f4861) + { // J League Fighting Soccer - The King of Ace Strikers(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x5a6860f1) + { // Shougi Meikan '92(J) + irq_type = MMC3_IRQ_SHOUGIMEIKAN; + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0xae280e20) + { // Shougi Meikan '93(J) + irq_type = MMC3_IRQ_SHOUGIMEIKAN; + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0xe19a2473) + { // Sugoro Quest - Dice no Senshi Tachi(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x702d9b33) + { // Star Wars - The Empire Strikes Back(Victor)(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0xa9a0d729) + { // Dai Kaijuu - Deburas(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0xc5fea9f2) + { // Dai 2 Ji - Super Robot Taisen(J) + irq_type = MMC3_IRQ_DAI2JISUPER; + } + if (crc == 0xd852c2f7) + { // Time Zone(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0xecfd3c69) + { // Taito Chase H.Q.(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x7a748058) + { // Tom & Jerry (and Tuffy)(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0xaafe699c) + { // Ninja Ryukenden 3 - Yomi no Hakobune(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x6cc62c06) + { // Hoshi no Kirby - Yume no Izumi no Monogatari(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x877dba77) + { // My Life My Love - Boku no Yume - Watashi no Negai(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x6f96ed15) + { // Max Warrior - Wakusei Kaigenrei(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x8685f366) + { // Matendouji(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x8635fed1) + { // Mickey Mouse 3 - Yume Fuusen(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x26ff3ea2) + { // Yume Penguin Monogatari(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x7671bc51) + { // Red Ariimaa 2(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0xade11141) + { // Wanpaku Kokkun no Gourmet World(J) + nes.SetIrqType(NES.IRQMETHOD.IRQ_HSYNC); + } + if (crc == 0x7c7ab58e) + { // Walkuere no Bouken - Toki no Kagi Densetsu(J) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + if (crc == 0x26ff3ea2) + { // Yume Penguin Monogatari(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x126ea4a0) + { // Summer Carnival '92 Recca(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + + if (crc == 0x1d2e5018 // Rockman 3(J) + || crc == 0x6b999aaf) + { // Megaman 3(U) + irq_type = MMC3_IRQ_ROCKMAN3; + } + + if (crc == 0xd88d48d7) + { // Kick Master(U) + irq_type = MMC3_IRQ_ROCKMAN3; + } + + if (crc == 0xA67EA466) + { // Alien 3(U) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + + if (crc == 0xe763891b) + { // DBZ2 + irq_type = MMC3_IRQ_DBZ2; + } + + // VS-Unisystem + vs_patch = 0; + vs_index = 0; + + if (crc == 0xeb2dba63 // VS TKO Boxing + || crc == 0x98cfe016) + { // VS TKO Boxing (Alt) + vs_patch = 1; + } + if (crc == 0x135adf7c) + { // VS Atari RBI Baseball + vs_patch = 2; + } + if (crc == 0xf9d3b0a3 // VS Super Xevious + || crc == 0x9924980a // VS Super Xevious (b1) + || crc == 0x66bb838f) + { // VS Super Xevious (b2) + vs_patch = 3; + } + } + + private void SetBank_PPU() + { + if (MMU.VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + MMU.SetVROM_8K_Bank(chr4, chr5, chr6, chr7, + chr01, chr01 + 1, chr23, chr23 + 1); + } + else + { + MMU.SetVROM_8K_Bank(chr01, chr01 + 1, chr23, chr23 + 1, + chr4, chr5, chr6, chr7); + } + } + else + { + if ((reg[0] & 0x80) != 0) + { + MMU.SetCRAM_1K_Bank(4, (chr01 + 0) & 0x07); + MMU.SetCRAM_1K_Bank(5, (chr01 + 1) & 0x07); + MMU.SetCRAM_1K_Bank(6, (chr23 + 0) & 0x07); + MMU.SetCRAM_1K_Bank(7, (chr23 + 1) & 0x07); + MMU.SetCRAM_1K_Bank(0, chr4 & 0x07); + MMU.SetCRAM_1K_Bank(1, chr5 & 0x07); + MMU.SetCRAM_1K_Bank(2, chr6 & 0x07); + MMU.SetCRAM_1K_Bank(3, chr7 & 0x07); + } + else + { + MMU.SetCRAM_1K_Bank(0, (chr01 + 0) & 0x07); + MMU.SetCRAM_1K_Bank(1, (chr01 + 1) & 0x07); + MMU.SetCRAM_1K_Bank(2, (chr23 + 0) & 0x07); + MMU.SetCRAM_1K_Bank(3, (chr23 + 1) & 0x07); + MMU.SetCRAM_1K_Bank(4, chr4 & 0x07); + MMU.SetCRAM_1K_Bank(5, chr5 & 0x07); + MMU.SetCRAM_1K_Bank(6, chr6 & 0x07); + MMU.SetCRAM_1K_Bank(7, chr7 & 0x07); + } + } + } + + public override byte ReadLow(ushort addr) + { + if (vs_patch == 0) + { + if (addr >= 0x5000 && addr <= 0x5FFF) + { + return MMU.XRAM[addr - 0x4000]; + } + } + else if (vs_patch == 1) + { + // VS TKO Boxing Security + if (addr == 0x5E00) + { + vs_index = 0; + return 0x00; + } + else if (addr == 0x5E01) + { + return VS_TKO_Security[(vs_index++) & 0x1F]; + } + } + else if (vs_patch == 2) + { + // VS Atari RBI Baseball Security + if (addr == 0x5E00) + { + vs_index = 0; + return 0x00; + } + else if (addr == 0x5E01) + { + if (vs_index++ == 9) + return 0x6F; + else + return 0xB4; + } + } + else if (vs_patch == 3) + { + // VS Super Xevious + switch (addr) + { + case 0x54FF: + return 0x05; + case 0x5678: + if (vs_index != 0) + return 0x00; + else + return 0x01; + case 0x578f: + if (vs_index != 0) + return 0xD1; + else + return 0x89; + case 0x5567: + if (vs_index != 0) + { + vs_index = 0; + return 0x3E; + } + else + { + vs_index = 1; + return 0x37; + } + default: + break; + } + } + + return base.ReadLow(addr); + } + + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x5000 && addr <= 0x5FFF) + { + MMU.XRAM[addr - 0x4000] = data; + } + else + { + base.WriteLow(addr, data); + } + } + + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + reg[1] = data; + + switch (reg[0] & 0x07) + { + case 0x00: + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x01: + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + case 0xA000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if ((data & 0x01) != 0) MMU.SetVRAM_Mirror(MMU.VRAM_HMIRROR); + else MMU.SetVRAM_Mirror(MMU.VRAM_VMIRROR); + } + break; + case 0xA001: + reg[3] = data; + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes->GetScanline(), nes->cpu->GetTotalCycles() ); + break; + case 0xC000: + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes->GetScanline(), nes->cpu->GetTotalCycles() ); + reg[4] = data; + if (irq_type == MMC3_IRQ_KLAX || irq_type == MMC3_IRQ_ROCKMAN3) + { + irq_counter = data; + } + else + { + irq_latch = data; + } + if (irq_type == MMC3_IRQ_DBZ2) + { + irq_latch = 0x07; + } + break; + case 0xC001: + reg[5] = data; + if (irq_type == MMC3_IRQ_KLAX || irq_type == MMC3_IRQ_ROCKMAN3) + { + irq_latch = data; + } + else + { + if ((nes.GetScanline() < 240) || (irq_type == MMC3_IRQ_SHOUGIMEIKAN)) + { + irq_counter |= 0x80; + irq_preset = 0xFF; + } + else + { + irq_counter |= 0x80; + irq_preset_vbl = 0xFF; + irq_preset = 0; + } + } + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + irq_request = 0; + + nes.cpu.ClrIRQ(CPU.IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 1; + irq_request = 0; + + // nes->cpu->ClrIRQ( IRQ_MAPPER ); + break; + } + } + + public override void Clock(int cycles) + { + + } + + public override void HSync(int scanline) + { + if (irq_type == MMC3_IRQ_KLAX) + { + if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if (irq_counter == 0) + { + irq_counter = irq_latch; + irq_request = 0xFF; + } + if (irq_counter > 0) + { + irq_counter--; + } + } + } + if (irq_request != 0) + { + nes.cpu.SetIRQ(CPU.IRQ_MAPPER); + } + } + else if (irq_type == MMC3_IRQ_ROCKMAN3) + { + if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if ((--irq_counter) == 0) + { + irq_request = 0xFF; + irq_counter = irq_latch; + } + } + } + if (irq_request != 0) + { + nes.cpu.SetIRQ(CPU.IRQ_MAPPER); + } + } + else + { + if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) + { + if (irq_preset_vbl != 0) + { + irq_counter = irq_latch; + irq_preset_vbl = 0; + } + if (irq_preset != 0) + { + irq_counter = irq_latch; + irq_preset = 0; + if (irq_type == MMC3_IRQ_DAI2JISUPER && scanline == 0) + { + irq_counter--; + } + } + else if (irq_counter > 0) + { + irq_counter--; + } + + if (irq_counter == 0) + { + if (irq_enable != 0) + { + irq_request = 0xFF; + + nes.cpu.SetIRQ(CPU.IRQ_MAPPER); + } + irq_preset = 0xFF; + } + } + } + } + + private void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + MMU.SetPROM_32K_Bank(MMU.PROM_8K_SIZE - 2, prg1, prg0, MMU.PROM_8K_SIZE - 1); + } + else + { + MMU.SetPROM_32K_Bank(prg0, prg1, MMU.PROM_8K_SIZE - 2, MMU.PROM_8K_SIZE - 1); + } + } + } +} diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs.meta b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs.meta new file mode 100644 index 00000000..cdf97fb6 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1be6fcc00c619e84cbf0d5d92701b2e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs index 997017e6..d6359e23 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs @@ -1,8 +1,15 @@ +using Codice.CM.Client.Differences; +using Google.Protobuf.Collections; using System; using System.Collections.Generic; using System.IO; +using System.Linq; +using System.Numerics; using System.Text; +using UnityEngine.UIElements; +using UnityEngine; using VirtualNes.Core.Debug; +using Unity.VisualScripting.Antlr3.Runtime.Tree; namespace VirtualNes.Core { @@ -30,6 +37,9 @@ namespace VirtualNes.Core private bool m_bMoviePlay; private bool m_bMovieRec; private Stream m_fpMovie; + private uint m_MovieControl; + private int m_MovieStepTotal; + private int m_MovieStep; private bool m_bTapePlay; private bool m_bTapeRec; private Stream m_fpTape; @@ -60,9 +70,107 @@ namespace VirtualNes.Core private int NES_scanline; private EnumRenderMethod RenderMethod; private bool bZapper; + private int ZapperX; + private int ZapperY; private long base_cycles; private long emul_cycles; + private byte[] m_PadImg = new byte[226] + { + 28, 8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, + 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, + 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, + 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + + private byte[] m_KeyImg0 = new byte[6] + { + 2, 2, + 0x2A, 0x2A, + 0x2A, 0x2A, + }; + + private byte[] m_KeyImg1 = new byte[8] + { + 3, 3, + 0x2A, 0x2A, 0x2A, + 0x2A, 0x2A, 0x2A, + }; + + private byte[] m_KeyImg2 = new byte[18] + { + 4, 4, + 0xFF, 0x2A, 0x2A, 0xFF, + 0x2A, 0x2A, 0x2A, 0x2A, + 0x2A, 0x2A, 0x2A, 0x2A, + 0xFF, 0x2A, 0x2A, 0xFF, + }; + + private byte[] Font6x8 = new byte[768] + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00, + 0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x00, + 0x20,0x78,0xA0,0x70,0x28,0xF0,0x20,0x00,0x48,0xB0,0x50,0x20,0x50,0x68,0x90,0x00, + 0x40,0xA0,0xA8,0x68,0x90,0x90,0x68,0x00,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00, + 0x10,0x20,0x40,0x40,0x40,0x20,0x10,0x00,0x40,0x20,0x10,0x10,0x10,0x20,0x40,0x00, + 0x00,0x88,0x50,0x20,0x50,0x88,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0x00, + 0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0xF8,0x00, + 0x70,0x88,0x08,0x30,0x40,0x80,0xF8,0x00,0x70,0x88,0x08,0x30,0x08,0x88,0x70,0x00, + 0x30,0x50,0x90,0x90,0xF8,0x10,0x10,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0xF0,0x00, + 0x70,0x88,0x80,0xF0,0x88,0x88,0x70,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x00, + 0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x00,0x70,0x88,0x88,0x78,0x08,0x88,0x70,0x00, + 0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x40,0x00, + 0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x00,0x00,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00, + 0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00,0x70,0x88,0x08,0x10,0x20,0x00,0x20,0x00, + 0x30,0x48,0x88,0x98,0xA8,0xA8,0x78,0x00,0x20,0x50,0x50,0x88,0xF8,0x88,0x88,0x00, + 0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00, + 0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00, + 0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x70,0x88,0x80,0xB8,0x88,0x88,0x70,0x00, + 0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0xF8,0x00, + 0x38,0x08,0x08,0x08,0x08,0x88,0x70,0x00,0x88,0x88,0x90,0xE0,0x90,0x88,0x88,0x00, + 0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x88,0xD8,0xA8,0xA8,0xA8,0xA8,0xA8,0x00, + 0x88,0xC8,0xA8,0xA8,0xA8,0x98,0x88,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00, + 0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00,0x70,0x88,0x88,0x88,0xA8,0x90,0x68,0x00, + 0xF0,0x88,0x88,0xF0,0x88,0x88,0x88,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00, + 0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00, + 0x88,0x88,0x88,0x50,0x50,0x50,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0xD8,0x88,0x00, + 0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00,0x88,0x88,0x88,0x70,0x20,0x20,0x20,0x00, + 0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x70,0x00, + 0x88,0x50,0xF8,0x20,0xF8,0x20,0x20,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x70,0x00, + 0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00, + 0x80,0xC0,0xE0,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0xF8,0x00, + 0x80,0x80,0x80,0xF0,0x88,0x88,0xF0,0x00,0x00,0x00,0x78,0x80,0x80,0x80,0x78,0x00, + 0x08,0x08,0x08,0x78,0x88,0x88,0x78,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x78,0x00, + 0x18,0x20,0xF8,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x78,0x88,0x78,0x08,0xF0,0x00, + 0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x00,0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x00, + 0x20,0x00,0x20,0x20,0x20,0x20,0xC0,0x00,0x80,0x80,0x88,0x90,0xE0,0x90,0x88,0x00, + 0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00, + 0x00,0x00,0xF0,0x88,0x88,0x88,0x88,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00, + 0x00,0x00,0xF0,0x88,0xF0,0x80,0x80,0x00,0x00,0x00,0x78,0x88,0x78,0x08,0x08,0x00, + 0x00,0x00,0xB8,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x78,0x80,0x70,0x08,0xF0,0x00, + 0x20,0x20,0xF8,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x70,0x00, + 0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x00,0x00,0x00,0x88,0xA8,0xA8,0xD8,0x88,0x00, + 0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00,0x00,0x00,0x88,0x88,0x78,0x08,0xF0,0x00, + 0x00,0x00,0xF8,0x08,0x70,0x80,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + }; + public NES(string fname) { Debuger.Log("VirtuaNES - CSharpCore\n"); @@ -113,6 +221,11 @@ namespace VirtualNes.Core Debuger.Log("Allocating PPU..."); ppu = new PPU(this); + var screenBuffer = new byte[PPU.SCREEN_WIDTH * PPU.SCREEN_HEIGHT]; + var colormode = new byte[PPU.SCREEN_HEIGHT]; + + ppu.SetScreenPtr(screenBuffer, colormode); + Debuger.Log("Allocating APU..."); apu = new APU(this); @@ -121,10 +234,124 @@ namespace VirtualNes.Core Debuger.Log("Loading ROM Image..."); rom = new ROM(fname); + + mapper = Mapper.CreateMapper(this, rom.GetMapperNo()); + + Debuger.Log("OK"); + + Debuger.Log($"{rom.GetRomName()}"); + Debuger.Log($"Mapper : #{rom.GetMapperNo():D3}"); + Debuger.Log($"PRG SIZE : {16 * rom.GetPROM_SIZE():4:0000}K"); + Debuger.Log($"CHR SIZE : {8 * rom.GetVROM_SIZE():4:0000}K"); + + Debuger.Log($"V MIRROR :{rom.IsVMIRROR()}"); + Debuger.Log($"4 SCREEN :{rom.Is4SCREEN()}"); + Debuger.Log($"SAVE RAM :{rom.IsSAVERAM()}"); + Debuger.Log($"TRAINER :{rom.IsTRAINER()}"); + Debuger.Log($"VS-Unisystem :{rom.IsVSUNISYSTEM()}"); + + NesSub_MemoryInitial(); + LoadSRAM(); + LoadDISK(); } catch (Exception ex) { Debuger.LogError(ex.ToString()); + throw ex; + } + } + + private void LoadDISK() + { + //todo : ŵȡ֧ + } + + private void LoadSRAM() + { + if (rom.IsNSF()) + return; + + MemoryUtility.ZEROMEMORY(MMU.WRAM, MMU.WRAM.Length); + + if (!rom.IsSAVERAM()) + return; + + var saveFileDir = Supporter.Config.path.szSavePath; + var saveFileName = $"{rom.GetRomName()}.sav"; + + var fp = Supporter.OpenFile(saveFileDir, saveFileName); + + try + { + if (fp == null) + { + throw new Exception("not find ram file to read"); + } + + Debuger.Log("Loading SAVERAM..."); + + int size = (int)fp.Length; + if (size <= 128 * 1024) + { + fp.Read(MMU.WRAM, 0, size); + } + Debuger.Log("OK."); + fp.Close(); + } + catch (Exception ex) + { + fp?.Close(); + fp = null; + } + } + + private void NesSub_MemoryInitial() + { + int i; + + // NA + MemoryUtility.ZEROMEMORY(MMU.RAM, MMU.RAM.Length); + MemoryUtility.ZEROMEMORY(MMU.WRAM, MMU.WRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.DRAM, MMU.DRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.ERAM, MMU.ERAM.Length); + MemoryUtility.ZEROMEMORY(MMU.XRAM, MMU.XRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.CRAM, MMU.CRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.VRAM, MMU.VRAM.Length); + + MemoryUtility.ZEROMEMORY(MMU.SPRAM, MMU.SPRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.BGPAL, MMU.BGPAL.Length); + MemoryUtility.ZEROMEMORY(MMU.SPPAL, MMU.SPPAL.Length); + + MemoryUtility.ZEROMEMORY(MMU.CPUREG, MMU.CPUREG.Length); + MemoryUtility.ZEROMEMORY(MMU.PPUREG, MMU.PPUREG.Length); + + MMU.FrameIRQ = 0xC0; + + MMU.PROM = MMU.VROM = null; + + // 0 Zh~΍ + MMU.PROM_8K_SIZE = MMU.PROM_16K_SIZE = MMU.PROM_32K_SIZE = 1; + MMU.VROM_1K_SIZE = MMU.VROM_2K_SIZE = MMU.VROM_4K_SIZE = MMU.VROM_8K_SIZE = 1; + + // ftHgoNݒ + for (i = 0; i < 8; i++) + { + MMU.CPU_MEM_BANK[i] = null; + MMU.CPU_MEM_TYPE[i] = MMU.BANKTYPE_ROM; + MMU.CPU_MEM_PAGE[i] = 0; + } + + // RAM/WRAM + MMU.SetPROM_Bank(0, MMU.RAM, MMU.BANKTYPE_RAM); + MMU.SetPROM_Bank(3, MMU.WRAM, MMU.BANKTYPE_RAM); + + // _~[ + MMU.SetPROM_Bank(1, MMU.XRAM, MMU.BANKTYPE_ROM); + MMU.SetPROM_Bank(2, MMU.XRAM, MMU.BANKTYPE_ROM); + + for (i = 0; i < 8; i++) + { + MMU.CRAM_USED[i] = 0; } } @@ -201,9 +428,391 @@ namespace VirtualNes.Core } else if (scanline < 240) { + if (RenderMethod < EnumRenderMethod.POST_RENDER) + { + if (RenderMethod == EnumRenderMethod.POST_ALL_RENDER) + EmulationCPU(nescfg.ScanlineCycles); + if (bDraw) + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + } + else + { + if (pad.IsZapperMode() && scanline == ZapperY) + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + } + else + { + if (!ppu.IsSprite0(scanline)) + { + ppu.DummyScanline(scanline); + } + else + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + } + } + } + ppu.ScanlineNext(); // ̈ʒuŃX^[n͉ʂႤ + if (RenderMethod == EnumRenderMethod.PRE_ALL_RENDER) + EmulationCPU(nescfg.ScanlineCycles); + mapper.HSync(scanline); + ppu.ScanlineStart(); + } + else + { + if (RenderMethod == EnumRenderMethod.POST_RENDER) + EmulationCPU(nescfg.HDrawCycles); + if (bDraw) + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + } + else + { + if (pad.IsZapperMode() && scanline == ZapperY) + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + } + else + { + if (!ppu.IsSprite0(scanline)) + { + ppu.DummyScanline(scanline); + } + else + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + } + } + } + if (RenderMethod == EnumRenderMethod.PRE_RENDER) + EmulationCPU(nescfg.HDrawCycles); + ppu.ScanlineNext(); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 32); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + } + else if (scanline == 240) + { + mapper.VSync(); + if (RenderMethod < EnumRenderMethod.POST_RENDER) + { + EmulationCPU(nescfg.ScanlineCycles); + mapper.HSync(scanline); + } + else + { + EmulationCPU(nescfg.HDrawCycles); + mapper.HSync(scanline); + EmulationCPU(nescfg.HBlankCycles); + } + } + else if (scanline <= nescfg.TotalScanlines - 1) + { + pad.VSync(); + + // VBLANK + if (scanline == nescfg.TotalScanlines - 1) + { + ppu.VBlankEnd(); + } + if (RenderMethod < EnumRenderMethod.POST_RENDER) + { + if (scanline == 241) + { + ppu.VBlankStart(); + if ((MMU.PPUREG[0] & PPU.PPU_VBLANK_BIT) != 0) + { + cpu.NMI(); + } + } + EmulationCPU(nescfg.ScanlineCycles); + mapper.HSync(scanline); + } + else + { + if (scanline == 241) + { + ppu.VBlankStart(); + if ((MMU.PPUREG[0] & PPU.PPU_VBLANK_BIT) != 0) + { + cpu.NMI(); + } + } + EmulationCPU(nescfg.HDrawCycles); + mapper.HSync(scanline); + EmulationCPU(nescfg.HBlankCycles); + } + + if (scanline == nescfg.TotalScanlines - 1) + { + break; + } + } + if (pad.IsZapperMode()) + { + if (scanline == ZapperY) + bZapper = true; + else + bZapper = false; + } + + scanline++; + NES_scanline = scanline; + } + } + else + { + bZapper = false; + while (true) + { + ppu.SetRenderScanline(scanline); + + if (scanline == 0) + { + // _~[XLC + // H-Draw (4fetches*32) + EmulationCPU(FETCH_CYCLES * 128); + ppu.FrameStart(); + ppu.ScanlineNext(); + EmulationCPU(FETCH_CYCLES * 10); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 22); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + else if (scanline < 240) + { + // XN[`(Scanline 1`239) + if (bDraw) + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + ppu.ScanlineNext(); + EmulationCPU(FETCH_CYCLES * 10); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 22); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + else + { + if (pad.IsZapperMode() && scanline == ZapperY) + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + ppu.ScanlineNext(); + EmulationCPU(FETCH_CYCLES * 10); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 22); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + else + { + if (!ppu.IsSprite0(scanline)) + { + // H-Draw (4fetches*32) + EmulationCPU(FETCH_CYCLES * 128); + ppu.DummyScanline(scanline); + ppu.ScanlineNext(); + EmulationCPU(FETCH_CYCLES * 10); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 22); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + else + { + ppu.Scanline(scanline, Supporter.Config.graphics.bAllSprite, Supporter.Config.graphics.bLeftClip); + ppu.ScanlineNext(); + EmulationCPU(FETCH_CYCLES * 10); + mapper.HSync(scanline); + EmulationCPU(FETCH_CYCLES * 22); + ppu.ScanlineStart(); + EmulationCPU(FETCH_CYCLES * 10 + nescfg.ScanlineEndCycles); + } + } + } + } + else if (scanline == 240) + { + // _~[XLC (Scanline 240) + mapper.VSync(); + + EmulationCPU(nescfg.HDrawCycles); + // H-Sync + mapper.HSync(scanline); + + EmulationCPU(nescfg.HBlankCycles); + } + else if (scanline <= nescfg.TotalScanlines - 1) + { + pad.VSync(); + + // VBLANK + if (scanline == nescfg.TotalScanlines - 1) + { + ppu.VBlankEnd(); + } + if (scanline == 241) + { + ppu.VBlankStart(); + if ((MMU.PPUREG[0] & PPU.PPU_VBLANK_BIT) != 0) + { + cpu.NMI(); + } + } + EmulationCPU(nescfg.HDrawCycles); + + // H-Sync + mapper.HSync(scanline); + + EmulationCPU(nescfg.HBlankCycles); + + if (scanline == nescfg.TotalScanlines - 1) + { + break; + } + } + if (pad.IsZapperMode()) + { + if (scanline == ZapperY) + bZapper = true; + else + bZapper = false; + } + + scanline++; + NES_scanline = scanline; + } + } + + if (bDraw) + { + DrawPad(); + } + } + + private void DrawPad() + { + if (m_bMoviePlay) + { + int offset_h = 12; + int offset_v = Supporter.Config.graphics.bAllLine ? (240 - 18) : (240 - 22); + + if (Supporter.Config.movie.bPadDisplay) + { + uint dwData = pad.GetSyncData(); + for (int i = 0; i < 4; i++) + { + byte Data = (byte)(dwData >> (i * 8)); + if ((m_MovieControl & (1 << i)) != 0) + { + DrawBitmap(offset_h, offset_v, m_PadImg); + + // KEY + if ((Data & (1 << 4)) != 0) DrawBitmap(offset_h + 3, offset_v + 1, m_KeyImg0); // U + if ((Data & (1 << 5)) != 0) DrawBitmap(offset_h + 3, offset_v + 5, m_KeyImg0); // D + if ((Data & (1 << 6)) != 0) DrawBitmap(offset_h + 1, offset_v + 3, m_KeyImg0); // L + if ((Data & (1 << 7)) != 0) DrawBitmap(offset_h + 5, offset_v + 3, m_KeyImg0); // R + + // START,SELECT + if ((Data & (1 << 2)) != 0) DrawBitmap(offset_h + 9, offset_v + 5, m_KeyImg1); // SELECT + if ((Data & (1 << 3)) != 0) DrawBitmap(offset_h + 13, offset_v + 5, m_KeyImg1); // START + + // A,B + if ((Data & (1 << 0)) != 0) DrawBitmap(offset_h + 23, offset_v + 3, m_KeyImg2); // A + if ((Data & (1 << 1)) != 0) DrawBitmap(offset_h + 18, offset_v + 3, m_KeyImg2); // B + + offset_h += 30; + } } } + + if (Supporter.Config.movie.bTimeDisplay) + { + // Time display + int t = m_MovieStep; + int h = t / 216000; + t -= h * 216000; + int m = t / 3600; + t -= m * 3600; + int s = t / 60; + t -= s * 60; + + string szTemp = $"{h:00}:{m:00}:{s:00}.{t * 100 / 60:00}"; + DrawString(256 - 80 + 0, offset_v - 1, szTemp, 0x1F); + DrawString(256 - 80 + 0, offset_v + 1, szTemp, 0x1F); + DrawString(256 - 80 - 1, offset_v + 0, szTemp, 0x1F); + DrawString(256 - 80 + 1, offset_v + 0, szTemp, 0x1F); + DrawString(256 - 80, offset_v, szTemp, 0x30); + } + } + } + + internal void DrawString(int x, int y, string str, byte col) + { + foreach (var @char in str) + { + DrawFont(x, y, (byte)@char, col); + x += 6; + } + } + + internal void DrawFont(int x, int y, byte chr, byte col) + { + int i; + int pFnt; + int pPtr; + var Scn = ppu.GetScreenPtr(); + int pScn = 8; + + + if (chr < 0x20 || chr > 0x7F) + return; + chr -= 0x20; + pFnt = chr * 8; + pPtr = pScn + (256 + 16) * y + x; + for (i = 0; i < 8; i++) + { + if ((Font6x8[pFnt + i] & 0x80) != 0) Scn[pPtr + 0] = col; + if ((Font6x8[pFnt + i] & 0x40) != 0) Scn[pPtr + 1] = col; + if ((Font6x8[pFnt + i] & 0x20) != 0) Scn[pPtr + 2] = col; + if ((Font6x8[pFnt + i] & 0x10) != 0) Scn[pPtr + 3] = col; + if ((Font6x8[pFnt + i] & 0x08) != 0) Scn[pPtr + 4] = col; + if ((Font6x8[pFnt + i] & 0x04) != 0) Scn[pPtr + 5] = col; + pPtr += (256 + 16); + } + } + + private void DrawBitmap(int x, int y, byte[] bitMap) + { + int i, j; + int h, v; + var Scn = ppu.GetScreenPtr(); + int pScn = 8 + (256 + 16) * y + x; + int pPtr; + + int lpBitmap = 0; + h = bitMap[lpBitmap++]; + v = bitMap[lpBitmap++]; + + for (j = 0; j < v; j++) + { + pPtr = pScn; + for (i = 0; i < h; i++) + { + if (bitMap[lpBitmap] != 0xFF) + { + Scn[pPtr] = bitMap[lpBitmap]; + } + lpBitmap++; + pPtr++; + } + pScn += 256 + 16; } } @@ -227,27 +836,27 @@ namespace VirtualNes.Core SaveTurboFile(); // RAM Clear - MemoryUtility.ZEROMEMORY(MMU.RAM, (uint)MMU.RAM.Length); + MemoryUtility.ZEROMEMORY(MMU.RAM, MMU.RAM.Length); if (rom.GetPROM_CRC() == 0x29401686) - { // Minna no Taabou no Nakayoshi Dai Sakusen(J) - MemoryUtility.memset(MMU.RAM, 0xFF, (uint)MMU.RAM.Length); + { // Minna no Taabou no Nakayoshi Dai Sakusen(J) + MemoryUtility.memset(MMU.RAM, 0xFF, MMU.RAM.Length); } // RAM set if (!rom.IsSAVERAM() && rom.GetMapperNo() != 20) { - MemoryUtility.memset(MMU.WRAM, 0xFF, (uint)MMU.WRAM.Length); + MemoryUtility.memset(MMU.WRAM, 0xFF, MMU.WRAM.Length); } - MemoryUtility.ZEROMEMORY(MMU.CRAM, (uint)MMU.CRAM.Length); - MemoryUtility.ZEROMEMORY(MMU.VRAM, (uint)MMU.VRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.CRAM, MMU.CRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.VRAM, MMU.VRAM.Length); - MemoryUtility.ZEROMEMORY(MMU.SPRAM, (uint)MMU.SPRAM.Length); - MemoryUtility.ZEROMEMORY(MMU.BGPAL, (uint)MMU.BGPAL.Length); - MemoryUtility.ZEROMEMORY(MMU.SPPAL, (uint)MMU.SPPAL.Length); + MemoryUtility.ZEROMEMORY(MMU.SPRAM, MMU.SPRAM.Length); + MemoryUtility.ZEROMEMORY(MMU.BGPAL, MMU.BGPAL.Length); + MemoryUtility.ZEROMEMORY(MMU.SPPAL, MMU.SPPAL.Length); - MemoryUtility.ZEROMEMORY(MMU.CPUREG, (uint)MMU.CPUREG.Length); - MemoryUtility.ZEROMEMORY(MMU.PPUREG, (uint)MMU.PPUREG.Length); + MemoryUtility.ZEROMEMORY(MMU.CPUREG, MMU.CPUREG.Length); + MemoryUtility.ZEROMEMORY(MMU.PPUREG, MMU.PPUREG.Length); m_bDiskThrottle = false; @@ -365,7 +974,7 @@ namespace VirtualNes.Core { if (m_bNsfInit) { - MemoryUtility.ZEROMEMORY(MMU.RAM, (uint)MMU.RAM.Length); + MemoryUtility.ZEROMEMORY(MMU.RAM, MMU.RAM.Length); if ((rom.GetNsfHeader().ExtraChipSelect & 0x04) == 0) { MemoryUtility.ZEROMEMORY(MMU.RAM, 0x2000); @@ -427,7 +1036,54 @@ namespace VirtualNes.Core internal void CheatCodeProcess() { - //todo : ʵ + foreach (var it in m_CheatCode) + { + if ((it.enable & CHEATCODE.CHEAT_ENABLE) == 0) + continue; + + switch (it.type) + { + case CHEATCODE.CHEAT_TYPE_ALWAYS: + CheatWrite(it.length, it.address, it.data); + break; + case CHEATCODE.CHEAT_TYPE_ONCE: + CheatWrite(it.length, it.address, it.data); + it.enable = 0; + break; + case CHEATCODE.CHEAT_TYPE_GREATER: + if (CheatRead(it.length, it.address) > it.data) + { + CheatWrite(it.length, it.address, it.data); + } + break; + case CHEATCODE.CHEAT_TYPE_LESS: + if (CheatRead(it.length, it.address) < it.data) + { + CheatWrite(it.length, it.address, it.data); + } + break; + } + } + } + + private uint CheatRead(byte length, ushort addr) + { + uint data = 0; + for (int i = 0; i <= length; i++) + { + data |= (uint)(Read((ushort)(addr + i)) * (1 << (i * 8))); + } + + return data; + } + + private void CheatWrite(int length, ushort addr, uint data) + { + for (int i = 0; i <= length; i++) + { + Write((ushort)(addr + i), (byte)(data & 0xFF)); + data >>= 8; + } } public void Dispose() @@ -515,7 +1171,23 @@ namespace VirtualNes.Core private void SaveTurboFile() { - //todo : ʵ + int i; + + if (pad.GetExController() != (int)EXCONTROLLER.EXCONTROLLER_TURBOFILE) + return; + + for (i = 0; i < MMU.ERAM.Length; i++) + { + if (MMU.ERAM[i] != 0x00) + break; + } + + if (i < MMU.ERAM.Length) + { + Debuger.Log("Saving TURBOFILE..."); + + Supporter.SaveFile(MMU.ERAM, Supporter.Config.path.szSavePath, "TurboFile.vtf"); + } } internal void Clock(int cycles) @@ -564,7 +1236,53 @@ namespace VirtualNes.Core internal void Tape(int cycles) { - //todo : ʵTape (ĿǼ¼ҲPlay,ȼܵ) + if (!(IsTapePlay() || IsTapeRec())) + { + return; + } + + if ((m_TapeCycles -= (double)cycles) > 0) + return; + + m_TapeCycles += (nescfg.CpuClock / 32000.0); + // m_TapeCycles += (nescfg->CpuClock / 22050.0); // xă_ۂ + + if (m_bTapePlay) + { + int data = m_fpTape.ReadByte(); + if (data != -1) //EOF + { + if ((data & 0xFF) >= 0x8C) + { + m_TapeOut = 0x02; + } + else + if ((data & 0xFF) <= 0x74) + { + m_TapeOut = 0x00; + } + } + else + { + TapeStop(); + } + } + if (m_bTapeRec) + { + m_fpTape.WriteByte((m_TapeIn & 7) == 7 ? (byte)0x90 : (byte)0x70); + } + } + + private void TapeStop() + { + if (!m_bBarcode) + { + cpu.SetClockProcess(false); + } + + m_bTapePlay = m_bTapeRec = false; + m_fpTape?.Dispose(); + m_fpTape = null; } internal byte Read(ushort addr) @@ -593,7 +1311,7 @@ namespace VirtualNes.Core return MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF]; } - return 0x00; // Warning\h + return 0x00; // Warning\h } private byte ReadReg(ushort addr) @@ -825,5 +1543,25 @@ namespace VirtualNes.Core { return bFrameIRQ; } + + internal EnumRenderMethod GetRenderMethod() + { + return RenderMethod; + } + + internal void SetIrqType(IRQMETHOD nType) + { + nIRQtype = (int)nType; + } + + internal int GetScanline() + { + return NES_scanline; + } + + public enum IRQMETHOD + { + IRQ_HSYNC = 0, IRQ_CLOCK = 1 + } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs index 46aac06e..df417bbb 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs @@ -404,6 +404,42 @@ namespace VirtualNes.Core expad.Reset(); } } + + internal bool IsZapperMode() + { + return bZapperMode; + } + + internal void VSync() + { + padbitsync[0] = padbit[0]; + padbitsync[1] = padbit[1]; + padbitsync[2] = padbit[2]; + padbitsync[3] = padbit[3]; + micbitsync = micbit; + } + + internal uint GetSyncData() + { + uint ret; + ret = (uint)(padbit[0] | (padbit[1] << 8) | (padbit[2] << 16) | (padbit[3] << 24)); + ret |= (uint)(micbit << 8); + return ret; + } + + internal void SetSyncData(uint data) + { + micbit = (byte)((data & 0x00000400) >> 8); + padbit[0] = (byte)data; + padbit[1] = (byte)(data >> 8); + padbit[2] = (byte)(data >> 16); + padbit[3] = (byte)(data >> 24); + } + + internal int GetExController() + { + return excontroller_select; + } } public enum VSType diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs index ef7e7fae..fff8fe77 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs @@ -1,10 +1,18 @@ using Codice.CM.Client.Differences; +using Microsoft.Win32; using System; +using System.IO; +using Unity.VisualScripting.Antlr3.Runtime.Tree; +using UnityEngine; +using static VirtualNes.Core.PPU; namespace VirtualNes.Core { public class PPU { + public const int SCREEN_WIDTH = 256 + 16; + public const int SCREEN_HEIGHT = 240; + private static byte[][] CreateCOLORMAP() { byte[][] res = new byte[5][]; @@ -199,7 +207,7 @@ namespace VirtualNes.Core ScanlineNo = scanline; if (scanline < 240) { - lpScanline = (int)(Screen.SCREEN_WIDTH) * scanline; + lpScanline = (SCREEN_WIDTH) * scanline; } } @@ -358,9 +366,9 @@ namespace VirtualNes.Core loopy_shift = 0; if (lpScreen != null) - MemoryUtility.memset(lpScreen, 0x3F, (int)(Screen.SCREEN_WIDTH) * (int)(Screen.SCREEN_HEIGHT)); + MemoryUtility.memset(lpScreen, 0x3F, SCREEN_WIDTH * SCREEN_HEIGHT); if (lpColormode != null) - MemoryUtility.memset(lpColormode, 0, (int)(Screen.SCREEN_HEIGHT)); + MemoryUtility.memset(lpColormode, 0, SCREEN_HEIGHT); } internal void FrameStart() @@ -374,7 +382,7 @@ namespace VirtualNes.Core if (lpScreen != null) { - MemoryUtility.memset(lpScreen, 0x3F, (int)Screen.SCREEN_WIDTH); + MemoryUtility.memset(lpScreen, 0x3F, SCREEN_WIDTH); } if (lpColormode != null) { @@ -425,10 +433,738 @@ namespace VirtualNes.Core } } - private enum Screen + private byte[] BGwrite = new byte[33 + 1]; + private byte[] BGmono = new byte[33 + 1]; + private byte[] SPwrite = new byte[33 + 1]; + + internal void Scanline(int scanline, bool bMax, bool bLeftClip) { - SCREEN_WIDTH = 256 + 16, - SCREEN_HEIGHT = 240 + int pScn = 0; + int pBGw = 0; + byte chr_h = 0, chr_l = 0, attr = 0; + + MemoryUtility.ZEROMEMORY(BGwrite, BGwrite.Length); + MemoryUtility.ZEROMEMORY(BGmono, BGmono.Length); + + // Linecolor mode + lpColormode[scanline] = (byte)(((MMU.PPUREG[1] & PPU_BGCOLOR_BIT) >> 5) | ((MMU.PPUREG[1] & PPU_COLORMODE_BIT) << 7)); + + // Render BG + if ((MMU.PPUREG[1] & PPU_BGDISP_BIT) == 0) + { + MemoryUtility.memset(lpScreen, lpScanline, MMU.BGPAL[0], SCREEN_WIDTH); + if (nes.GetRenderMethod() == EnumRenderMethod.TILE_RENDER) + { + nes.EmulationCPU(NES.FETCH_CYCLES * 4 * 32); + } + } + else + { + if (nes.GetRenderMethod() != EnumRenderMethod.TILE_RENDER) + { + if (!bExtLatch) + { + // Without Extension Latch + pScn = lpScanline + (8 - loopy_shift); + pBGw = 0; + + int tileofs = (MMU.PPUREG[0] & PPU_BGTBL_BIT) << 8; + int ntbladr = 0x2000 + (MMU.loopy_v & 0x0FFF); + int attradr = 0x23C0 + (MMU.loopy_v & 0x0C00) + ((MMU.loopy_v & 0x0380) >> 4); + int ntbl_x = ntbladr & 0x001F; + int attrsft = (ntbladr & 0x0040) >> 4; + var pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + + int tileadr; + int cache_tile = unchecked((int)(0xFFFF0000)); + byte cache_attr = 0xFF; + + chr_h = chr_l = attr = 0; + + attradr &= 0x3FF; + + + for (int i = 0; i < 33; i++) + { + + tileadr = tileofs + pNTBL[ntbladr & 0x03FF] * 0x10 + loopy_y; + attr = (byte)(((pNTBL[attradr + (ntbl_x >> 2)] >> ((ntbl_x & 2) + attrsft)) & 3) << 2); + + if (cache_tile == tileadr && cache_attr == attr) + { + lpScreen[pScn + 0] = lpScreen[pScn - 8]; + lpScreen[pScn + 0 + 1] = lpScreen[pScn - 8 + 1]; + lpScreen[pScn + 0 + 2] = lpScreen[pScn - 8 + 2]; + lpScreen[pScn + 0 + 3] = lpScreen[pScn - 8 + 3]; + + lpScreen[pScn + 4] = lpScreen[pScn - 4]; + lpScreen[pScn + 4 + 1] = lpScreen[pScn - 4 + 1]; + lpScreen[pScn + 4 + 2] = lpScreen[pScn - 4 + 2]; + lpScreen[pScn + 4 + 3] = lpScreen[pScn - 4 + 3]; + + BGwrite[pBGw + 0] = BGwrite[pBGw - 1]; + } + else + { + cache_tile = tileadr; + cache_attr = attr; + chr_l = MMU.PPU_MEM_BANK[tileadr >> 10].Span[tileadr & 0x03FF]; + chr_h = MMU.PPU_MEM_BANK[tileadr >> 10].Span[(tileadr & 0x03FF) + 8]; + BGwrite[pBGw] = (byte)(chr_h | chr_l); + + int pBGPAL = attr; + { + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + lpScreen[pScn + 0] = MMU.BGPAL[pBGPAL + (c1 >> 6)]; + lpScreen[pScn + 4] = MMU.BGPAL[pBGPAL + ((c1 >> 2) & 3)]; + lpScreen[pScn + 1] = MMU.BGPAL[pBGPAL + ((c1 >> 6))]; + lpScreen[pScn + 5] = MMU.BGPAL[pBGPAL + ((c2 >> 2) & 3)]; + lpScreen[pScn + 2] = MMU.BGPAL[pBGPAL + ((c1 >> 4) & 3)]; + lpScreen[pScn + 6] = MMU.BGPAL[pBGPAL + (c1 & 3)]; + lpScreen[pScn + 3] = MMU.BGPAL[pBGPAL + ((c2 >> 4) & 3)]; + lpScreen[pScn + 7] = MMU.BGPAL[pBGPAL + (c2 & 3)]; + } + } + pScn += 8; + pBGw++; + + // Character latch(For MMC2/MMC4) + if (bChrLatch) + { + nes.mapper.PPU_ChrLatch((ushort)(tileadr)); + } + + if (++ntbl_x == 32) + { + ntbl_x = 0; + ntbladr ^= 0x41F; + attradr = 0x03C0 + ((ntbladr & 0x0380) >> 4); + pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + } + else + { + ntbladr++; + } + } + } + else + { + // With Extension Latch(For MMC5) + pScn = lpScanline + (8 - loopy_shift); + pBGw = 0; + + int ntbladr = 0x2000 + (MMU.loopy_v & 0x0FFF); + int ntbl_x = ntbladr & 0x1F; + + int cache_tile = unchecked((int)(0xFFFF0000)); + byte cache_attr = 0xFF; + + byte exattr = 0; + chr_h = chr_l = attr = 0; + + for (int i = 0; i < 33; i++) + { + nes.mapper.PPU_ExtLatchX(i); + nes.mapper.PPU_ExtLatch((ushort)ntbladr, ref chr_l, ref chr_h, ref exattr); + attr = (byte)(exattr & 0x0C); + + if (cache_tile != ((chr_h << 8) + chr_l) || cache_attr != attr) + { + cache_tile = ((chr_h << 8) + chr_l); + cache_attr = attr; + BGwrite[pBGw] = (byte)(chr_h | chr_l); + + int pBGPAL = attr; + { + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + lpScreen[pScn + 0] = MMU.BGPAL[pBGPAL + (c1 >> 6)]; + lpScreen[pScn + 4] = MMU.BGPAL[pBGPAL + ((c1 >> 2) & 3)]; + lpScreen[pScn + 1] = MMU.BGPAL[pBGPAL + (c2 >> 6)]; + lpScreen[pScn + 5] = MMU.BGPAL[pBGPAL + ((c2 >> 2) & 3)]; + lpScreen[pScn + 2] = MMU.BGPAL[pBGPAL + ((c1 >> 4) & 3)]; + lpScreen[pScn + 6] = MMU.BGPAL[pBGPAL + (c1 & 3)]; + lpScreen[pScn + 3] = MMU.BGPAL[pBGPAL + ((c2 >> 4) & 3)]; + lpScreen[pScn + 7] = MMU.BGPAL[pBGPAL + (c2 & 3)]; + } + } + else + { + lpScreen[pScn + 0] = lpScreen[pScn - 8]; + lpScreen[pScn + 0 + 1] = lpScreen[pScn - 8 + 1]; + lpScreen[pScn + 0 + 2] = lpScreen[pScn - 8 + 2]; + lpScreen[pScn + 0 + 3] = lpScreen[pScn - 8 + 3]; + + lpScreen[pScn + 4] = lpScreen[pScn - 4]; + lpScreen[pScn + 4 + 1] = lpScreen[pScn - 4 + 1]; + lpScreen[pScn + 4 + 2] = lpScreen[pScn - 4 + 2]; + lpScreen[pScn + 4 + 3] = lpScreen[pScn - 4 + 3]; + + BGwrite[pBGw + 0] = BGwrite[pBGw - 1]; + } + pScn += 8; + pBGw++; + + if (++ntbl_x == 32) + { + ntbl_x = 0; + ntbladr ^= 0x41F; + } + else + { + ntbladr++; + } + } + } + } + else + { + if (!bExtLatch) + { + // Without Extension Latch + if (!bExtNameTable) + { + pScn = lpScanline + (8 - loopy_shift); + pBGw = 0; + + int ntbladr = 0x2000 + (MMU.loopy_v & 0x0FFF); + int attradr = 0x03C0 + ((MMU.loopy_v & 0x0380) >> 4); + int ntbl_x = ntbladr & 0x001F; + int attrsft = (ntbladr & 0x0040) >> 4; + var pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + + int tileadr = 0; + int cache_tile = unchecked((int)(0xFFFF0000)); + byte cache_attr = 0xFF; + + chr_h = chr_l = attr = 0; + + for (int i = 0; i < 33; i++) + { + tileadr = ((MMU.PPUREG[0] & PPU_BGTBL_BIT) << 8) + pNTBL[ntbladr & 0x03FF] * 0x10 + loopy_y; + + if (i != 0) + { + nes.EmulationCPU(NES.FETCH_CYCLES * 4); + } + + attr = (byte)(((pNTBL[attradr + (ntbl_x >> 2)] >> ((ntbl_x & 2) + attrsft)) & 3) << 2); + + if (cache_tile != tileadr || cache_attr != attr) + { + cache_tile = tileadr; + cache_attr = attr; + + chr_l = MMU.PPU_MEM_BANK[tileadr >> 10].Span[tileadr & 0x03FF]; + chr_h = MMU.PPU_MEM_BANK[tileadr >> 10].Span[(tileadr & 0x03FF) + 8]; + lpScreen[pBGw] = (byte)(chr_l | chr_h); + + int pBGPAL = attr; + { + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + lpScreen[pScn + 0] = MMU.BGPAL[pBGPAL + (c1 >> 6)]; + lpScreen[pScn + 4] = MMU.BGPAL[pBGPAL + ((c1 >> 2) & 3)]; + lpScreen[pScn + 1] = MMU.BGPAL[pBGPAL + ((c2 >> 6))]; + lpScreen[pScn + 5] = MMU.BGPAL[pBGPAL + ((c2 >> 2) & 3)]; + lpScreen[pScn + 2] = MMU.BGPAL[pBGPAL + ((c1 >> 4) & 3)]; + lpScreen[pScn + 6] = MMU.BGPAL[pBGPAL + (c1 & 3)]; + lpScreen[pScn + 3] = MMU.BGPAL[pBGPAL + ((c2 >> 4) & 3)]; + lpScreen[pScn + 7] = MMU.BGPAL[pBGPAL + (c2 & 3)]; + } + } + else + { + lpScreen[pScn + 0] = lpScreen[pScn - 8]; + lpScreen[pScn + 0 + 1] = lpScreen[pScn - 8 + 1]; + lpScreen[pScn + 0 + 2] = lpScreen[pScn - 8 + 2]; + lpScreen[pScn + 0 + 3] = lpScreen[pScn - 8 + 3]; + + lpScreen[pScn + 4] = lpScreen[pScn - 4]; + lpScreen[pScn + 4 + 1] = lpScreen[pScn - 4 + 1]; + lpScreen[pScn + 4 + 2] = lpScreen[pScn - 4 + 2]; + lpScreen[pScn + 4 + 3] = lpScreen[pScn - 4 + 3]; + + BGwrite[pBGw + 0] = BGwrite[pBGw - 1]; + } + pScn += 8; + pBGw++; + + // Character latch(For MMC2/MMC4) + if (bChrLatch) + { + nes.mapper.PPU_ChrLatch((ushort)(tileadr)); + } + + if (++ntbl_x == 32) + { + ntbl_x = 0; + ntbladr ^= 0x41F; + attradr = 0x03C0 + ((ntbladr & 0x0380) >> 4); + pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + } + else + { + ntbladr++; + } + } + } + else + { + pScn = lpScanline + (8 - loopy_shift); + pBGw = 0; + + int ntbladr; + int tileadr; + int cache_tile = unchecked((int)(0xFFFF0000)); + byte cache_attr = 0xFF; + + chr_h = chr_l = attr = 0; + + ushort loopy_v_tmp = MMU.loopy_v; + + for (int i = 0; i < 33; i++) + { + if (i != 0) + { + nes.EmulationCPU(NES.FETCH_CYCLES * 4); + } + + ntbladr = 0x2000 + (MMU.loopy_v & 0x0FFF); + tileadr = ((MMU.PPUREG[0] & PPU_BGTBL_BIT) << 8) + MMU.PPU_MEM_BANK[ntbladr >> 10].Span[ntbladr & 0x03FF] * 0x10 + ((MMU.loopy_v & 0x7000) >> 12); + attr = (byte)(((MMU.PPU_MEM_BANK[ntbladr >> 10].Span[0x03C0 + ((ntbladr & 0x0380) >> 4) + ((ntbladr & 0x001C) >> 2)] >> (((ntbladr & 0x40) >> 4) + (ntbladr & 0x02))) & 3) << 2); + + if (cache_tile != tileadr || cache_attr != attr) + { + cache_tile = tileadr; + cache_attr = attr; + + chr_l = MMU.PPU_MEM_BANK[tileadr >> 10].Span[tileadr & 0x03FF]; + chr_h = MMU.PPU_MEM_BANK[tileadr >> 10].Span[(tileadr & 0x03FF) + 8]; + BGwrite[pBGw] = (byte)(chr_l | chr_h); + + int pBGPAL = attr; + { + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + lpScreen[pScn + 0] = MMU.BGPAL[pBGPAL + (c1 >> 6)]; + lpScreen[pScn + 4] = MMU.BGPAL[pBGPAL + ((c1 >> 2) & 3)]; + lpScreen[pScn + 1] = MMU.BGPAL[pBGPAL + (c2 >> 6)]; + lpScreen[pScn + 5] = MMU.BGPAL[pBGPAL + ((c2 >> 2) & 3)]; + lpScreen[pScn + 2] = MMU.BGPAL[pBGPAL + ((c1 >> 4) & 3)]; + lpScreen[pScn + 6] = MMU.BGPAL[pBGPAL + (c1 & 3)]; + lpScreen[pScn + 3] = MMU.BGPAL[pBGPAL + ((c2 >> 4) & 3)]; + lpScreen[pScn + 7] = MMU.BGPAL[pBGPAL + (c2 & 3)]; + } + } + else + { + lpScreen[pScn + 0] = lpScreen[pScn - 8]; + lpScreen[pScn + 0 + 1] = lpScreen[pScn - 8 + 1]; + lpScreen[pScn + 0 + 2] = lpScreen[pScn - 8 + 2]; + lpScreen[pScn + 0 + 3] = lpScreen[pScn - 8 + 3]; + + lpScreen[pScn + 4] = lpScreen[pScn - 4]; + lpScreen[pScn + 4 + 1] = lpScreen[pScn - 4 + 1]; + lpScreen[pScn + 4 + 2] = lpScreen[pScn - 4 + 2]; + lpScreen[pScn + 4 + 3] = lpScreen[pScn - 4 + 3]; + + BGwrite[pBGw + 0] = BGwrite[pBGw - 1]; + } + pScn += 8; + pBGw++; + + // Character latch(For MMC2/MMC4) + if (bChrLatch) + { + nes.mapper.PPU_ChrLatch((ushort)tileadr); + } + + if ((MMU.loopy_v & 0x1F) == 0x1F) + { + MMU.loopy_v ^= 0x041F; + } + else + { + MMU.loopy_v++; + } + } + MMU.loopy_v = loopy_v_tmp; + } + } + else + { + // With Extension Latch(For MMC5) + pScn = lpScanline + (8 - loopy_shift); + pBGw = 0; + + int ntbladr = 0x2000 + (MMU.loopy_v & 0x0FFF); + int ntbl_x = ntbladr & 0x1F; + + int cache_tile = unchecked((int)0xFFFF0000); + byte cache_attr = 0xFF; + + byte exattr = 0; + chr_h = chr_l = attr = 0; + + for (int i = 0; i < 33; i++) + { + if (i != 0) + { + nes.EmulationCPU(NES.FETCH_CYCLES * 4); + } + nes.mapper.PPU_ExtLatchX(i); + nes.mapper.PPU_ExtLatch((ushort)ntbladr, ref chr_l, ref chr_h, ref exattr); + attr = (byte)(exattr & 0x0C); + + if (cache_tile != ((chr_h << 8) + chr_l) || cache_attr != attr) + { + cache_tile = ((chr_h << 8) + chr_l); + cache_attr = attr; + BGwrite[pBGw] = (byte)(chr_l | chr_h); + + int pBGPAL = attr; + { + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + lpScreen[pScn + 0] = MMU.BGPAL[pBGPAL + ((c1 >> 6))]; + lpScreen[pScn + 4] = MMU.BGPAL[pBGPAL + ((c1 >> 2) & 3)]; + lpScreen[pScn + 1] = MMU.BGPAL[pBGPAL + ((c2 >> 6))]; + lpScreen[pScn + 5] = MMU.BGPAL[pBGPAL + ((c2 >> 2) & 3)]; + lpScreen[pScn + 2] = MMU.BGPAL[pBGPAL + ((c1 >> 4) & 3)]; + lpScreen[pScn + 6] = MMU.BGPAL[pBGPAL + (c1 & 3)]; + lpScreen[pScn + 3] = MMU.BGPAL[pBGPAL + ((c2 >> 4) & 3)]; + lpScreen[pScn + 7] = MMU.BGPAL[pBGPAL + (c2 & 3)]; + } + } + else + { + lpScreen[pScn + 0] = lpScreen[pScn - 8]; + lpScreen[pScn + 0 + 1] = lpScreen[pScn - 8 + 1]; + lpScreen[pScn + 0 + 2] = lpScreen[pScn - 8 + 2]; + lpScreen[pScn + 0 + 3] = lpScreen[pScn - 8 + 3]; + + lpScreen[pScn + 4] = lpScreen[pScn - 4]; + lpScreen[pScn + 4 + 1] = lpScreen[pScn - 4 + 1]; + lpScreen[pScn + 4 + 2] = lpScreen[pScn - 4 + 2]; + lpScreen[pScn + 4 + 3] = lpScreen[pScn - 4 + 3]; + + BGwrite[pBGw + 0] = BGwrite[pBGw - 1]; + } + pScn += 8; + pBGw++; + + if (++ntbl_x == 32) + { + ntbl_x = 0; + ntbladr ^= 0x41F; + } + else + { + ntbladr++; + } + } + } + } + if ((MMU.PPUREG[1] & PPU_BGCLIP_BIT) == 0 && bLeftClip) + { + pScn = lpScanline + 8; + for (int i = 0; i < 8; i++) + { + lpScreen[i] = MMU.BGPAL[0]; + } + } + } + + // Render sprites + var temp = ~PPU_SPMAX_FLAG; + MMU.PPUREG[2] = (byte)(MMU.PPUREG[2] & temp); + + // 昞帵婜娫奜偱偁傟偽僉儍儞僙儖 + if (scanline > 239) + return; + + if ((MMU.PPUREG[1] & PPU_SPDISP_BIT) == 0) + { + return; + } + + int spmax = 0; + int spraddr = 0, sp_y = 0, sp_h = 0; + chr_h = chr_l = 0; + + + pBGw = 0; + int pSPw = 0; + int pBit2Rev = 0; + + MemoryUtility.ZEROMEMORY(SPwrite, SPwrite.Length); + + spmax = 0; + Sprite sp = new Sprite(MMU.SPRAM, 0); + sp_h = (MMU.PPUREG[0] & PPU_SP16_BIT) != 0 ? 15 : 7; + + // Left clip + if (bLeftClip && ((MMU.PPUREG[1] & PPU_SPCLIP_BIT) == 0)) + { + SPwrite[0] = 0xFF; + } + + for (int i = 0; i < 64; i++, sp.AddOffset(1)) + { + sp_y = scanline - (sp.y + 1); + // 僗僉儍儞儔僀儞撪偵SPRITE偑懚嵼偡傞偐傪僠僃僢僋 + if (sp_y != (sp_y & sp_h)) + continue; + + if ((MMU.PPUREG[0] & PPU_SP16_BIT) == 0) + { + // 8x8 Sprite + spraddr = ((MMU.PPUREG[0] & PPU_SPTBL_BIT) << 9) + (sp.tile << 4); + if ((sp.attr & SP_VMIRROR_BIT) == 0) + spraddr += sp_y; + else + spraddr += 7 - sp_y; + } + else + { + // 8x16 Sprite + spraddr = ((sp.tile & 1) << 12) + ((sp.tile & 0xFE) << 4); + if ((sp.attr & SP_VMIRROR_BIT) == 0) + spraddr += ((sp_y & 8) << 1) + (sp_y & 7); + else + spraddr += ((~sp_y & 8) << 1) + (7 - (sp_y & 7)); + } + // Character pattern + chr_l = MMU.PPU_MEM_BANK[spraddr >> 10].Span[spraddr & 0x3FF]; + chr_h = MMU.PPU_MEM_BANK[spraddr >> 10].Span[(spraddr & 0x3FF) + 8]; + + // Character latch(For MMC2/MMC4) + if (bChrLatch) + { + nes.mapper.PPU_ChrLatch((ushort)spraddr); + } + + // pattern mask + if ((sp.attr & SP_HMIRROR_BIT) != 0) + { + chr_l = Bit2Rev[pBit2Rev + chr_l]; + chr_h = Bit2Rev[pBit2Rev + chr_h]; + } + byte SPpat = (byte)(chr_l | chr_h); + + // Sprite hitcheck + if (i == 0 && (MMU.PPUREG[2] & PPU_SPHIT_FLAG) == 0) + { + int BGpos = ((sp.x & 0xF8) + ((loopy_shift + (sp.x & 7)) & 8)) >> 3; + int BGsft = 8 - ((loopy_shift + sp.x) & 7); + + var temp1 = BGwrite[pBGw + BGpos + 0] << 8; + var temp2 = BGwrite[pBGw + BGpos + 1]; + byte BGmsk = (byte)((temp1 | temp2) >> BGsft); + + if ((SPpat & BGmsk) != 0) + { + MMU.PPUREG[2] |= PPU_SPHIT_FLAG; + } + } + + // Sprite mask + int SPpos = sp.x / 8; + int SPsft = 8 - (sp.x & 7); + byte SPmsk = (byte)((SPwrite[pSPw + SPpos + 0] << 8 | SPwrite[pSPw + SPpos + 1]) >> SPsft); + ushort SPwrt = (ushort)(SPpat << SPsft); + SPwrite[pSPw + SPpos + 0] = (byte)(SPwrite[pSPw + SPpos + 0] | SPwrt >> 8); + SPwrite[pSPw + SPpos + 1] = (byte)(SPwrite[pSPw + SPpos + 1] | SPwrt & 0xFF); + SPpat = (byte)(SPpat & ~SPmsk); + + if ((sp.attr & SP_PRIORITY_BIT) != 0) + { + // BG > SP priority + int BGpos = ((sp.x & 0xF8) + ((loopy_shift + (sp.x & 7)) & 8)) >> 3; + int BGsft = 8 - ((loopy_shift + sp.x) & 7); + byte BGmsk = (byte)(((BGwrite[pBGw + BGpos + 0] << 8) | BGwrite[pBGw + BGpos + 1]) >> BGsft); + + SPpat = (byte)(SPpat & ~BGmsk); + } + + // Attribute + int pSPPAL = (sp.attr & SP_COLOR_BIT) << 2; + // Ptr + pScn = lpScanline + sp.x + 8; + + if (!bExtMono) + { + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + if ((SPpat & 0x80) != 0) lpScreen[pScn + 0] = MMU.SPPAL[pSPPAL + (c1 >> 6)]; + if ((SPpat & 0x08) != 0) lpScreen[pScn + 4] = MMU.SPPAL[pSPPAL + ((c1 >> 2) & 3)]; + if ((SPpat & 0x40) != 0) lpScreen[pScn + 1] = MMU.SPPAL[pSPPAL + ((c2 >> 6))]; + if ((SPpat & 0x04) != 0) lpScreen[pScn + 5] = MMU.SPPAL[pSPPAL + ((c2 >> 2) & 3)]; + if ((SPpat & 0x20) != 0) lpScreen[pScn + 2] = MMU.SPPAL[pSPPAL + ((c1 >> 4) & 3)]; + if ((SPpat & 0x02) != 0) lpScreen[pScn + 6] = MMU.SPPAL[pSPPAL + (c1 & 3)]; + if ((SPpat & 0x10) != 0) lpScreen[pScn + 3] = MMU.SPPAL[pSPPAL + ((c2 >> 4) & 3)]; + if ((SPpat & 0x01) != 0) lpScreen[pScn + 7] = MMU.SPPAL[pSPPAL + (c2 & 3)]; + } + else + { + // Monocrome effect (for Final Fantasy) + byte mono = BGmono[((sp.x & 0xF8) + ((loopy_shift + (sp.x & 7)) & 8)) >> 3]; + + int c1 = ((chr_l >> 1) & 0x55) | (chr_h & 0xAA); + int c2 = (chr_l & 0x55) | ((chr_h << 1) & 0xAA); + if ((SPpat & 0x80) != 0) lpScreen[pScn + 0] = (byte)(MMU.SPPAL[pSPPAL + (c1 >> 6)] | mono); + if ((SPpat & 0x08) != 0) lpScreen[pScn + 4] = (byte)(MMU.SPPAL[pSPPAL + ((c1 >> 2) & 3)] | mono); + if ((SPpat & 0x40) != 0) lpScreen[pScn + 1] = (byte)(MMU.SPPAL[pSPPAL + (c2 >> 6)] | mono); + if ((SPpat & 0x04) != 0) lpScreen[pScn + 5] = (byte)(MMU.SPPAL[pSPPAL + ((c2 >> 2) & 3)] | mono); + if ((SPpat & 0x20) != 0) lpScreen[pScn + 2] = (byte)(MMU.SPPAL[pSPPAL + ((c1 >> 4) & 3)] | mono); + if ((SPpat & 0x02) != 0) lpScreen[pScn + 6] = (byte)(MMU.SPPAL[pSPPAL + (c1 & 3)] | mono); + if ((SPpat & 0x10) != 0) lpScreen[pScn + 3] = (byte)(MMU.SPPAL[pSPPAL + ((c2 >> 4) & 3)] | mono); + if ((SPpat & 0x01) != 0) lpScreen[pScn + 7] = (byte)(MMU.SPPAL[pSPPAL + (c2 & 3)] | mono); + } + + if (++spmax > 8 - 1) + { + if (!bMax) + break; + } + } + if (spmax > 8 - 1) + { + MMU.PPUREG[2] |= PPU_SPMAX_FLAG; + } + } + + internal bool IsSprite0(int scanline) + { + // 僗僾儔僀僩orBG旕昞帵偼僉儍儞僙儖(僸僢僩偟側偄) + if ((MMU.PPUREG[1] & (PPU_SPDISP_BIT | PPU_BGDISP_BIT)) != (PPU_SPDISP_BIT | PPU_BGDISP_BIT)) + return false; + + // 婛偵僸僢僩偟偰偄偨傜僉儍儞僙儖 + if ((MMU.PPUREG[2] & PPU_SPHIT_FLAG) != 0) + return false; + + if ((MMU.PPUREG[0] & PPU_SP16_BIT) == 0) + { + // 8x8 + if ((scanline < MMU.SPRAM[0] + 1) || (scanline > (MMU.SPRAM[0] + 7 + 1))) + return false; + } + else + { + // 8x16 + if ((scanline < MMU.SPRAM[0] + 1) || (scanline > (MMU.SPRAM[0] + 15 + 1))) + return false; + } + + return true; + } + + internal void DummyScanline(int scanline) + { + int i; + int spmax; + int sp_h; + + MMU.PPUREG[2] = (byte)(MMU.PPUREG[2] & ~PPU_SPMAX_FLAG); + + // 僗僾儔僀僩旕昞帵偼僉儍儞僙儖 + if ((MMU.PPUREG[1] & PPU_SPDISP_BIT) == 0) + return; + + // 昞帵婜娫奜偱偁傟偽僉儍儞僙儖 + if (scanline < 0 || scanline > 239) + return; + + Sprite sp = new Sprite(MMU.SPRAM, 0); + sp_h = (MMU.PPUREG[0] & PPU_SP16_BIT) != 0 ? 15 : 7; + + spmax = 0; + // Sprite Max check + for (i = 0; i < 64; i++, sp.AddOffset(1)) + { + // 僗僉儍儞儔僀儞撪偵SPRITE偑懚嵼偡傞偐傪僠僃僢僋 + if ((scanline < sp.y + 1) || (scanline > (sp.y + sp_h + 1))) + { + continue; + } + + if (++spmax > 8 - 1) + { + MMU.PPUREG[2] |= PPU_SPMAX_FLAG; + break; + } + } + } + + internal void VBlankEnd() + { + MMU.PPUREG[2] = (byte)(MMU.PPUREG[2] & ~PPU_VBLANK_FLAG); + // VBlank扙弌帪偵僋儕傾偝傟傞 + // 僄僉僒僀僩僶僀僋偱廳梫 + MMU.PPUREG[2] = (byte)(MMU.PPUREG[2] & ~PPU_SPHIT_FLAG); + } + + internal void VBlankStart() + { + MMU.PPUREG[2] |= PPU_VBLANK_FLAG; + } + + public byte[] GetScreenPtr() + { + return lpScreen; + } + + internal void SetScreenPtr(byte[] screenBuffer, byte[] colormode) + { + lpScreen = screenBuffer; + lpColormode = colormode; + } + + internal bool IsDispON() + { + return (MMU.PPUREG[1] & (PPU_BGDISP_BIT | PPU_SPDISP_BIT)) != 0; + } + + public struct Sprite + { + public byte y + { + get => raw[offset + 0]; + set => raw[offset + 0] = value; + } + + public byte tile + { + get => raw[offset + 1]; + set => raw[offset + 1] = value; + } + public byte attr + { + get => raw[offset + 2]; + set => raw[offset + 2] = value; + } + public byte x + { + get => raw[offset + 3]; + set => raw[offset + 3] = value; + } + + private byte[] raw; + private int offset; + + public Sprite(byte[] raw, int offset) + { + this.raw = raw; + this.offset = offset * 4; + } + + public void AddOffset(int offset) + { + this.offset += offset * 4; + } } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs index 51b6a87b..b7aacbdd 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs @@ -218,7 +218,7 @@ namespace VirtualNes.Core } Supporter.GetFilePathInfo(fname, out fullpath, out path); - + name = Path.GetFileNameWithoutExtension(fullpath); if (!bNSF) { mapper = (header.control1 >> 4) | (header.control2 & 0xF0); @@ -396,6 +396,11 @@ namespace VirtualNes.Core { return nsfheader; } + + internal string GetRomPath() + { + return path; + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgGraphics.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgGraphics.cs index 21851f87..d3e1f640 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgGraphics.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgGraphics.cs @@ -2,5 +2,38 @@ { public class CfgGraphics { + public bool bAspect = false; + public bool bAllSprite = true; + public bool bAllLine = false; + public bool bFPSDisp = false; + public bool bTVFrame = false; + public bool bScanline = false; + public int nScanlineColor = 75; + public bool bSyncDraw = false; + public bool bFitZoom = false; + + public bool bLeftClip = true; + + public bool bWindowVSync = false; + + public bool bSyncNoSleep = false; + + public bool bDiskAccessLamp = false; + + public bool bDoubleSize = false; + public bool bSystemMemory = false; + public bool bUseHEL = false; + + public bool bNoSquareList = false; + + public int nGraphicsFilter = 0; + + public uint dwDisplayWidth = 640; + public uint dwDisplayHeight = 480; + public uint dwDisplayDepth = 16; + public uint dwDisplayRate = 0; + + public bool bPaletteFile = false; + public char[] szPaletteFile = new char[260]; } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs index d8d718cf..0e0dcbf5 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs @@ -1,6 +1,14 @@ -namespace VirtualNes.Core +using System; + +namespace VirtualNes.Core { public class CfgMovie { + public byte[] bUsePlayer = new byte[4] { 0xFF, 0x00, 0x00, 0x00 }; + public bool bRerecord = true; + public bool bLoopPlay = false; + public bool bResetRec = false; + public bool bPadDisplay = false; + public bool bTimeDisplay = false; } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs index a89aa6b9..6a282593 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs @@ -1,6 +1,25 @@ -namespace VirtualNes.Core +using System; + +namespace VirtualNes.Core { public class CfgPath { + public bool bRomPath = true; + public bool bSavePath = true; + public bool bStatePath = true; + public bool bSnapshotPath = true; + public bool bMoviePath = true; + public bool bWavePath = true; + public bool bCheatPath = true; + public bool bIpsPath = true; + + public string szRomPath = "roms"; + public string szSavePath = "save"; + public string szStatePath = "state"; + public string szSnapshotPath = "snapshot"; + public string szMoviePath = "movie"; + public string szWavePath = "wave"; + public string szCheatPath = "cheatcode"; + public string szIpsPath = "ips"; } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs index cc417af9..6f6d40ec 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs @@ -35,6 +35,20 @@ namespace VirtualNes.Core s_support.SaveDISKToFile(diskFileContent, romName); } + public static void PrepareDirectory(string directPath) + { + s_support.PrepareDirectory(directPath); + } + + public static void SaveFile(byte[] fileData, string directPath, string fileName) + { + s_support.SaveFile(fileData, directPath, fileName); + } + public static Stream OpenFile(string directPath, string fileName) + { + return s_support.OpenFile(directPath, fileName); + } + public static EmulatorConfig Config => s_support.Config; } @@ -46,5 +60,9 @@ namespace VirtualNes.Core void SaveSRAMToFile(byte[] sramContent, string romName); void SaveDISKToFile(byte[] diskFileContent, string romName); EmulatorConfig Config { get; } + + void PrepareDirectory(string directPath); + void SaveFile(byte[] fileData, string directPath, string fileName); + Stream OpenFile(string directPath, string fileName); } } From 938482c3bd0ba2d083fbbaac0d76e6b8f87e8c83 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Tue, 30 Jul 2024 12:00:24 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=9C=A8vs2022=E4=B8=AD=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=9A=84virtuaNes=20cpp=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- virtuanessrc097-master/.gitignore | 167 + virtuanessrc097-master/AboutDlg.cpp | Bin 0 -> 4402 bytes virtuanessrc097-master/AboutDlg.h | Bin 0 -> 1262 bytes virtuanessrc097-master/App.cpp | Bin 0 -> 3446 bytes virtuanessrc097-master/App.h | Bin 0 -> 4684 bytes virtuanessrc097-master/Archive.cpp | Bin 0 -> 15562 bytes virtuanessrc097-master/Archive.h | Bin 0 -> 474 bytes virtuanessrc097-master/AviConvDlg.cpp | Bin 0 -> 35300 bytes virtuanessrc097-master/AviConvDlg.h | Bin 0 -> 3126 bytes virtuanessrc097-master/AviWriter.cpp | Bin 0 -> 12340 bytes virtuanessrc097-master/AviWriter.h | Bin 0 -> 2450 bytes virtuanessrc097-master/CHyperLink.h | Bin 0 -> 12152 bytes virtuanessrc097-master/ChatDlg.cpp | Bin 0 -> 14804 bytes virtuanessrc097-master/ChatDlg.h | Bin 0 -> 2106 bytes virtuanessrc097-master/CheatDlg.cpp | Bin 0 -> 76766 bytes virtuanessrc097-master/CheatDlg.h | Bin 0 -> 7096 bytes virtuanessrc097-master/Com.cpp | Bin 0 -> 1242 bytes virtuanessrc097-master/Com.h | Bin 0 -> 576 bytes virtuanessrc097-master/Config.cpp | Bin 0 -> 78346 bytes virtuanessrc097-master/Config.h | Bin 0 -> 35614 bytes virtuanessrc097-master/ControllerDlg.cpp | Bin 0 -> 30752 bytes virtuanessrc097-master/ControllerDlg.h | Bin 0 -> 3060 bytes virtuanessrc097-master/Crclib.cpp | Bin 0 -> 2626 bytes virtuanessrc097-master/Crclib.h | Bin 0 -> 898 bytes virtuanessrc097-master/DatachBarcodeDlg.cpp | Bin 0 -> 8374 bytes virtuanessrc097-master/DatachBarcodeDlg.h | Bin 0 -> 1628 bytes virtuanessrc097-master/DebugOut.cpp | Bin 0 -> 2570 bytes virtuanessrc097-master/DebugOut.h | Bin 0 -> 1448 bytes virtuanessrc097-master/DipSwitchDlg.cpp | Bin 0 -> 6318 bytes virtuanessrc097-master/DipSwitchDlg.h | Bin 0 -> 1130 bytes virtuanessrc097-master/DirectDraw.cpp | Bin 0 -> 104224 bytes virtuanessrc097-master/DirectDraw.h | Bin 0 -> 21904 bytes virtuanessrc097-master/DirectInput.cpp | Bin 0 -> 26636 bytes virtuanessrc097-master/DirectInput.h | Bin 0 -> 3792 bytes virtuanessrc097-master/DirectSound.cpp | Bin 0 -> 27064 bytes virtuanessrc097-master/DirectSound.h | Bin 0 -> 5844 bytes virtuanessrc097-master/Doc/Copying.txt | Bin 0 -> 30828 bytes virtuanessrc097-master/Doc/ReadmeSrc.txt | Bin 0 -> 158 bytes virtuanessrc097-master/EmuThread.cpp | Bin 0 -> 57460 bytes virtuanessrc097-master/EmuThread.h | Bin 0 -> 7304 bytes virtuanessrc097-master/EmulatorDlg.cpp | Bin 0 -> 9682 bytes virtuanessrc097-master/EmulatorDlg.h | Bin 0 -> 1374 bytes virtuanessrc097-master/English.vlp | Bin 0 -> 73728 bytes virtuanessrc097-master/ExtSoundFile.h | Bin 0 -> 2548 bytes virtuanessrc097-master/FolderDlg.cpp | Bin 0 -> 19532 bytes virtuanessrc097-master/FolderDlg.h | Bin 0 -> 2042 bytes virtuanessrc097-master/GameOptionDlg.cpp | Bin 0 -> 9562 bytes virtuanessrc097-master/GameOptionDlg.h | Bin 0 -> 1332 bytes virtuanessrc097-master/GraphicsDlg.cpp | Bin 0 -> 17412 bytes virtuanessrc097-master/GraphicsDlg.h | Bin 0 -> 1694 bytes virtuanessrc097-master/JoyAxisDlg.cpp | Bin 0 -> 7796 bytes virtuanessrc097-master/JoyAxisDlg.h | Bin 0 -> 1638 bytes virtuanessrc097-master/LanguageDlg.cpp | Bin 0 -> 3658 bytes virtuanessrc097-master/LanguageDlg.h | Bin 0 -> 1178 bytes virtuanessrc097-master/LauncherDlg.cpp | Bin 0 -> 100024 bytes virtuanessrc097-master/LauncherDlg.h | Bin 0 -> 8226 bytes virtuanessrc097-master/MMTimer.cpp | Bin 0 -> 2228 bytes virtuanessrc097-master/MMTimer.h | Bin 0 -> 1088 bytes virtuanessrc097-master/Macro.h | Bin 0 -> 1344 bytes virtuanessrc097-master/MainFrame.cpp | Bin 0 -> 174514 bytes virtuanessrc097-master/MainFrame.h | Bin 0 -> 10642 bytes virtuanessrc097-master/MemoryView.cpp | Bin 0 -> 27712 bytes virtuanessrc097-master/MemoryView.h | Bin 0 -> 2158 bytes virtuanessrc097-master/MovieDlg.cpp | Bin 0 -> 4846 bytes virtuanessrc097-master/MovieDlg.h | Bin 0 -> 1134 bytes virtuanessrc097-master/MovieInfoDlg.cpp | Bin 0 -> 3998 bytes virtuanessrc097-master/MovieInfoDlg.h | Bin 0 -> 1258 bytes virtuanessrc097-master/NES/APU.cpp | Bin 0 -> 31876 bytes virtuanessrc097-master/NES/APU.h | Bin 0 -> 5888 bytes virtuanessrc097-master/NES/ApuEX/APU_FDS.cpp | Bin 0 -> 19468 bytes virtuanessrc097-master/NES/ApuEX/APU_FDS.h | Bin 0 -> 4606 bytes virtuanessrc097-master/NES/ApuEX/APU_FME7.cpp | Bin 0 -> 17140 bytes virtuanessrc097-master/NES/ApuEX/APU_FME7.h | Bin 0 -> 4636 bytes .../NES/ApuEX/APU_INTERFACE.h | Bin 0 -> 3300 bytes .../NES/ApuEX/APU_INTERNAL.cpp | Bin 0 -> 58766 bytes .../NES/ApuEX/APU_INTERNAL.h | Bin 0 -> 11816 bytes virtuanessrc097-master/NES/ApuEX/APU_MMC5.cpp | Bin 0 -> 16218 bytes virtuanessrc097-master/NES/ApuEX/APU_MMC5.h | Bin 0 -> 4092 bytes virtuanessrc097-master/NES/ApuEX/APU_N106.cpp | Bin 0 -> 8434 bytes virtuanessrc097-master/NES/ApuEX/APU_N106.h | Bin 0 -> 3042 bytes virtuanessrc097-master/NES/ApuEX/APU_VRC6.cpp | Bin 0 -> 11274 bytes virtuanessrc097-master/NES/ApuEX/APU_VRC6.h | Bin 0 -> 3388 bytes virtuanessrc097-master/NES/ApuEX/APU_VRC7.cpp | Bin 0 -> 4264 bytes virtuanessrc097-master/NES/ApuEX/APU_VRC7.h | Bin 0 -> 2222 bytes .../NES/ApuEX/emu2413/2413tone.h | Bin 0 -> 3732 bytes .../NES/ApuEX/emu2413/emu2413.c | 1545 +++++ .../NES/ApuEX/emu2413/emu2413.h | Bin 0 -> 7866 bytes .../NES/ApuEX/emu2413/vrc7tone.h | Bin 0 -> 3724 bytes virtuanessrc097-master/NES/CPU.h | Bin 0 -> 5054 bytes virtuanessrc097-master/NES/Cheat.h | Bin 0 -> 1498 bytes virtuanessrc097-master/NES/Cpu.cpp | Bin 0 -> 73900 bytes virtuanessrc097-master/NES/IPS.cpp | Bin 0 -> 7934 bytes virtuanessrc097-master/NES/IPS.h | Bin 0 -> 500 bytes virtuanessrc097-master/NES/MMU.cpp | Bin 0 -> 13450 bytes virtuanessrc097-master/NES/MMU.h | Bin 0 -> 7582 bytes virtuanessrc097-master/NES/Mapper/EEPROM.h | Bin 0 -> 16568 bytes virtuanessrc097-master/NES/Mapper/Mapper.cpp | Bin 0 -> 4100 bytes virtuanessrc097-master/NES/Mapper/Mapper.h | Bin 0 -> 4842 bytes .../NES/Mapper/Mapper000.cpp | Bin 0 -> 1656 bytes virtuanessrc097-master/NES/Mapper/Mapper000.h | Bin 0 -> 734 bytes .../NES/Mapper/Mapper001.cpp | Bin 0 -> 14678 bytes virtuanessrc097-master/NES/Mapper/Mapper001.h | Bin 0 -> 1312 bytes .../NES/Mapper/Mapper002.cpp | Bin 0 -> 2462 bytes virtuanessrc097-master/NES/Mapper/Mapper002.h | Bin 0 -> 912 bytes .../NES/Mapper/Mapper003.cpp | Bin 0 -> 2236 bytes virtuanessrc097-master/NES/Mapper/Mapper003.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper004.cpp | Bin 0 -> 24966 bytes virtuanessrc097-master/NES/Mapper/Mapper004.h | Bin 0 -> 1942 bytes .../NES/Mapper/Mapper005.cpp | Bin 0 -> 32308 bytes virtuanessrc097-master/NES/Mapper/Mapper005.h | Bin 0 -> 3304 bytes .../NES/Mapper/Mapper006.cpp | Bin 0 -> 3296 bytes virtuanessrc097-master/NES/Mapper/Mapper006.h | Bin 0 -> 1264 bytes .../NES/Mapper/Mapper007.cpp | Bin 0 -> 1992 bytes virtuanessrc097-master/NES/Mapper/Mapper007.h | Bin 0 -> 834 bytes .../NES/Mapper/Mapper008.cpp | Bin 0 -> 896 bytes virtuanessrc097-master/NES/Mapper/Mapper008.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper009.cpp | Bin 0 -> 4094 bytes virtuanessrc097-master/NES/Mapper/Mapper009.h | Bin 0 -> 1206 bytes .../NES/Mapper/Mapper010.cpp | Bin 0 -> 4070 bytes virtuanessrc097-master/NES/Mapper/Mapper010.h | Bin 0 -> 1206 bytes .../NES/Mapper/Mapper011.cpp | Bin 0 -> 1180 bytes virtuanessrc097-master/NES/Mapper/Mapper011.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper012.cpp | Bin 0 -> 10536 bytes virtuanessrc097-master/NES/Mapper/Mapper012.h | Bin 0 -> 1810 bytes .../NES/Mapper/Mapper013.cpp | Bin 0 -> 956 bytes virtuanessrc097-master/NES/Mapper/Mapper013.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper015.cpp | Bin 0 -> 3780 bytes virtuanessrc097-master/NES/Mapper/Mapper015.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper016.cpp | Bin 0 -> 16778 bytes virtuanessrc097-master/NES/Mapper/Mapper016.h | Bin 0 -> 2078 bytes .../NES/Mapper/Mapper017.cpp | Bin 0 -> 3864 bytes virtuanessrc097-master/NES/Mapper/Mapper017.h | Bin 0 -> 1226 bytes .../NES/Mapper/Mapper018.cpp | Bin 0 -> 11034 bytes virtuanessrc097-master/NES/Mapper/Mapper018.h | Bin 0 -> 1286 bytes .../NES/Mapper/Mapper019.cpp | Bin 0 -> 13804 bytes virtuanessrc097-master/NES/Mapper/Mapper019.h | Bin 0 -> 1486 bytes .../NES/Mapper/Mapper021.cpp | Bin 0 -> 9096 bytes virtuanessrc097-master/NES/Mapper/Mapper021.h | Bin 0 -> 1296 bytes .../NES/Mapper/Mapper022.cpp | Bin 0 -> 2594 bytes virtuanessrc097-master/NES/Mapper/Mapper022.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper023.cpp | Bin 0 -> 10054 bytes virtuanessrc097-master/NES/Mapper/Mapper023.h | Bin 0 -> 1330 bytes .../NES/Mapper/Mapper024.cpp | Bin 0 -> 5334 bytes virtuanessrc097-master/NES/Mapper/Mapper024.h | Bin 0 -> 1262 bytes .../NES/Mapper/Mapper025.cpp | Bin 0 -> 10728 bytes virtuanessrc097-master/NES/Mapper/Mapper025.h | Bin 0 -> 1418 bytes .../NES/Mapper/Mapper026.cpp | Bin 0 -> 5952 bytes virtuanessrc097-master/NES/Mapper/Mapper026.h | Bin 0 -> 1258 bytes .../NES/Mapper/Mapper027.cpp | Bin 0 -> 8444 bytes virtuanessrc097-master/NES/Mapper/Mapper027.h | Bin 0 -> 1300 bytes .../NES/Mapper/Mapper032.cpp | Bin 0 -> 3288 bytes virtuanessrc097-master/NES/Mapper/Mapper032.h | Bin 0 -> 1106 bytes .../NES/Mapper/Mapper033.cpp | Bin 0 -> 8528 bytes virtuanessrc097-master/NES/Mapper/Mapper033.h | Bin 0 -> 1326 bytes .../NES/Mapper/Mapper034.cpp | Bin 0 -> 1426 bytes virtuanessrc097-master/NES/Mapper/Mapper034.h | Bin 0 -> 892 bytes .../NES/Mapper/Mapper040.cpp | Bin 0 -> 2262 bytes virtuanessrc097-master/NES/Mapper/Mapper040.h | Bin 0 -> 1188 bytes .../NES/Mapper/Mapper041.cpp | Bin 0 -> 2038 bytes virtuanessrc097-master/NES/Mapper/Mapper041.h | Bin 0 -> 1166 bytes .../NES/Mapper/Mapper042.cpp | Bin 0 -> 2734 bytes virtuanessrc097-master/NES/Mapper/Mapper042.h | Bin 0 -> 1196 bytes .../NES/Mapper/Mapper043.cpp | Bin 0 -> 3720 bytes virtuanessrc097-master/NES/Mapper/Mapper043.h | Bin 0 -> 1410 bytes .../NES/Mapper/Mapper044.cpp | Bin 0 -> 10540 bytes virtuanessrc097-master/NES/Mapper/Mapper044.h | Bin 0 -> 1600 bytes .../NES/Mapper/Mapper045.cpp | Bin 0 -> 13056 bytes virtuanessrc097-master/NES/Mapper/Mapper045.h | Bin 0 -> 1982 bytes .../NES/Mapper/Mapper046.cpp | Bin 0 -> 2866 bytes virtuanessrc097-master/NES/Mapper/Mapper046.h | Bin 0 -> 1208 bytes .../NES/Mapper/Mapper047.cpp | Bin 0 -> 9392 bytes virtuanessrc097-master/NES/Mapper/Mapper047.h | Bin 0 -> 1600 bytes .../NES/Mapper/Mapper048.cpp | Bin 0 -> 4474 bytes virtuanessrc097-master/NES/Mapper/Mapper048.h | Bin 0 -> 1212 bytes .../NES/Mapper/Mapper050.cpp | Bin 0 -> 2648 bytes virtuanessrc097-master/NES/Mapper/Mapper050.h | Bin 0 -> 1250 bytes .../NES/Mapper/Mapper051.cpp | Bin 0 -> 3906 bytes virtuanessrc097-master/NES/Mapper/Mapper051.h | Bin 0 -> 1224 bytes .../NES/Mapper/Mapper057.cpp | Bin 0 -> 2722 bytes virtuanessrc097-master/NES/Mapper/Mapper057.h | Bin 0 -> 1084 bytes .../NES/Mapper/Mapper058.cpp | Bin 0 -> 1432 bytes virtuanessrc097-master/NES/Mapper/Mapper058.h | Bin 0 -> 820 bytes .../NES/Mapper/Mapper060.cpp | Bin 0 -> 1924 bytes virtuanessrc097-master/NES/Mapper/Mapper060.h | Bin 0 -> 912 bytes .../NES/Mapper/Mapper061.cpp | Bin 0 -> 1492 bytes virtuanessrc097-master/NES/Mapper/Mapper061.h | Bin 0 -> 820 bytes .../NES/Mapper/Mapper062.cpp | Bin 0 -> 1730 bytes virtuanessrc097-master/NES/Mapper/Mapper062.h | Bin 0 -> 820 bytes .../NES/Mapper/Mapper064.cpp | Bin 0 -> 8364 bytes virtuanessrc097-master/NES/Mapper/Mapper064.h | Bin 0 -> 1422 bytes .../NES/Mapper/Mapper065.cpp | Bin 0 -> 5110 bytes virtuanessrc097-master/NES/Mapper/Mapper065.h | Bin 0 -> 1300 bytes .../NES/Mapper/Mapper066.cpp | Bin 0 -> 1526 bytes virtuanessrc097-master/NES/Mapper/Mapper066.h | Bin 0 -> 884 bytes .../NES/Mapper/Mapper067.cpp | Bin 0 -> 4450 bytes virtuanessrc097-master/NES/Mapper/Mapper067.h | Bin 0 -> 1256 bytes .../NES/Mapper/Mapper068.cpp | Bin 0 -> 5430 bytes virtuanessrc097-master/NES/Mapper/Mapper068.h | Bin 0 -> 1286 bytes .../NES/Mapper/Mapper069.cpp | Bin 0 -> 5816 bytes virtuanessrc097-master/NES/Mapper/Mapper069.h | Bin 0 -> 1294 bytes .../NES/Mapper/Mapper070.cpp | Bin 0 -> 2060 bytes virtuanessrc097-master/NES/Mapper/Mapper070.h | Bin 0 -> 830 bytes .../NES/Mapper/Mapper071.cpp | Bin 0 -> 1532 bytes virtuanessrc097-master/NES/Mapper/Mapper071.h | Bin 0 -> 884 bytes .../NES/Mapper/Mapper072.cpp | Bin 0 -> 1774 bytes virtuanessrc097-master/NES/Mapper/Mapper072.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper073.cpp | Bin 0 -> 2830 bytes virtuanessrc097-master/NES/Mapper/Mapper073.h | Bin 0 -> 1194 bytes .../NES/Mapper/Mapper074.cpp | Bin 0 -> 10642 bytes virtuanessrc097-master/NES/Mapper/Mapper074.h | Bin 0 -> 1712 bytes .../NES/Mapper/Mapper075.cpp | Bin 0 -> 2706 bytes virtuanessrc097-master/NES/Mapper/Mapper075.h | Bin 0 -> 1076 bytes .../NES/Mapper/Mapper076.cpp | Bin 0 -> 2076 bytes virtuanessrc097-master/NES/Mapper/Mapper076.h | Bin 0 -> 1066 bytes .../NES/Mapper/Mapper077.cpp | Bin 0 -> 1058 bytes virtuanessrc097-master/NES/Mapper/Mapper077.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper078.cpp | Bin 0 -> 1440 bytes virtuanessrc097-master/NES/Mapper/Mapper078.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper079.cpp | Bin 0 -> 990 bytes virtuanessrc097-master/NES/Mapper/Mapper079.h | Bin 0 -> 816 bytes .../NES/Mapper/Mapper080.cpp | Bin 0 -> 3328 bytes virtuanessrc097-master/NES/Mapper/Mapper080.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper082.cpp | Bin 0 -> 3454 bytes virtuanessrc097-master/NES/Mapper/Mapper082.h | Bin 0 -> 1080 bytes .../NES/Mapper/Mapper083.cpp | Bin 0 -> 7844 bytes virtuanessrc097-master/NES/Mapper/Mapper083.h | Bin 0 -> 1428 bytes .../NES/Mapper/Mapper085.cpp | Bin 0 -> 7050 bytes virtuanessrc097-master/NES/Mapper/Mapper085.h | Bin 0 -> 1258 bytes .../NES/Mapper/Mapper086.cpp | Bin 0 -> 1980 bytes virtuanessrc097-master/NES/Mapper/Mapper086.h | Bin 0 -> 882 bytes .../NES/Mapper/Mapper087.cpp | Bin 0 -> 892 bytes virtuanessrc097-master/NES/Mapper/Mapper087.h | Bin 0 -> 816 bytes .../NES/Mapper/Mapper088.cpp | Bin 0 -> 3380 bytes virtuanessrc097-master/NES/Mapper/Mapper088.h | Bin 0 -> 1106 bytes .../NES/Mapper/Mapper089.cpp | Bin 0 -> 1258 bytes virtuanessrc097-master/NES/Mapper/Mapper089.h | Bin 0 -> 798 bytes .../NES/Mapper/Mapper090.cpp | Bin 0 -> 14302 bytes virtuanessrc097-master/NES/Mapper/Mapper090.h | Bin 0 -> 2140 bytes .../NES/Mapper/Mapper091.cpp | Bin 0 -> 3044 bytes virtuanessrc097-master/NES/Mapper/Mapper091.h | Bin 0 -> 1194 bytes .../NES/Mapper/Mapper092.cpp | Bin 0 -> 2322 bytes virtuanessrc097-master/NES/Mapper/Mapper092.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper093.cpp | Bin 0 -> 982 bytes virtuanessrc097-master/NES/Mapper/Mapper093.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper094.cpp | Bin 0 -> 908 bytes virtuanessrc097-master/NES/Mapper/Mapper094.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper095.cpp | Bin 0 -> 5178 bytes virtuanessrc097-master/NES/Mapper/Mapper095.h | Bin 0 -> 1294 bytes .../NES/Mapper/Mapper096.cpp | Bin 0 -> 1824 bytes virtuanessrc097-master/NES/Mapper/Mapper096.h | Bin 0 -> 1182 bytes .../NES/Mapper/Mapper097.cpp | Bin 0 -> 1188 bytes virtuanessrc097-master/NES/Mapper/Mapper097.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper099.cpp | Bin 0 -> 2192 bytes virtuanessrc097-master/NES/Mapper/Mapper099.h | Bin 0 -> 896 bytes .../NES/Mapper/Mapper100.cpp | Bin 0 -> 8750 bytes virtuanessrc097-master/NES/Mapper/Mapper100.h | Bin 0 -> 1526 bytes .../NES/Mapper/Mapper101.cpp | Bin 0 -> 1050 bytes virtuanessrc097-master/NES/Mapper/Mapper101.h | Bin 0 -> 884 bytes .../NES/Mapper/Mapper105.cpp | Bin 0 -> 5970 bytes virtuanessrc097-master/NES/Mapper/Mapper105.h | Bin 0 -> 1328 bytes .../NES/Mapper/Mapper107.cpp | Bin 0 -> 938 bytes virtuanessrc097-master/NES/Mapper/Mapper107.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper108.cpp | Bin 0 -> 822 bytes virtuanessrc097-master/NES/Mapper/Mapper108.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper109.cpp | Bin 0 -> 3940 bytes virtuanessrc097-master/NES/Mapper/Mapper109.h | Bin 0 -> 1240 bytes .../NES/Mapper/Mapper110.cpp | Bin 0 -> 2240 bytes virtuanessrc097-master/NES/Mapper/Mapper110.h | Bin 0 -> 1084 bytes .../NES/Mapper/Mapper112.cpp | Bin 0 -> 5034 bytes virtuanessrc097-master/NES/Mapper/Mapper112.h | Bin 0 -> 1300 bytes .../NES/Mapper/Mapper113.cpp | Bin 0 -> 2670 bytes virtuanessrc097-master/NES/Mapper/Mapper113.h | Bin 0 -> 884 bytes .../NES/Mapper/Mapper114.cpp | Bin 0 -> 5206 bytes virtuanessrc097-master/NES/Mapper/Mapper114.h | Bin 0 -> 1514 bytes .../NES/Mapper/Mapper115.cpp | Bin 0 -> 9444 bytes virtuanessrc097-master/NES/Mapper/Mapper115.h | Bin 0 -> 1878 bytes .../NES/Mapper/Mapper116.cpp | Bin 0 -> 10726 bytes virtuanessrc097-master/NES/Mapper/Mapper116.h | Bin 0 -> 1722 bytes .../NES/Mapper/Mapper117.cpp | Bin 0 -> 3564 bytes virtuanessrc097-master/NES/Mapper/Mapper117.h | Bin 0 -> 1176 bytes .../NES/Mapper/Mapper118.cpp | Bin 0 -> 7536 bytes virtuanessrc097-master/NES/Mapper/Mapper118.h | Bin 0 -> 1502 bytes .../NES/Mapper/Mapper119.cpp | Bin 0 -> 9902 bytes virtuanessrc097-master/NES/Mapper/Mapper119.h | Bin 0 -> 1546 bytes .../NES/Mapper/Mapper122.cpp | Bin 0 -> 926 bytes virtuanessrc097-master/NES/Mapper/Mapper122.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper133.cpp | Bin 0 -> 1032 bytes virtuanessrc097-master/NES/Mapper/Mapper133.h | Bin 0 -> 816 bytes .../NES/Mapper/Mapper134.cpp | Bin 0 -> 2614 bytes virtuanessrc097-master/NES/Mapper/Mapper134.h | Bin 0 -> 1106 bytes .../NES/Mapper/Mapper135.cpp | Bin 0 -> 3752 bytes virtuanessrc097-master/NES/Mapper/Mapper135.h | Bin 0 -> 1214 bytes .../NES/Mapper/Mapper140.cpp | Bin 0 -> 934 bytes virtuanessrc097-master/NES/Mapper/Mapper140.h | Bin 0 -> 826 bytes .../NES/Mapper/Mapper142.cpp | Bin 0 -> 3486 bytes virtuanessrc097-master/NES/Mapper/Mapper142.h | Bin 0 -> 1226 bytes .../NES/Mapper/Mapper151.cpp | Bin 0 -> 1804 bytes virtuanessrc097-master/NES/Mapper/Mapper151.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper160.cpp | Bin 0 -> 7372 bytes virtuanessrc097-master/NES/Mapper/Mapper160.h | Bin 0 -> 1274 bytes .../NES/Mapper/Mapper164.cpp | Bin 0 -> 5614 bytes virtuanessrc097-master/NES/Mapper/Mapper164.h | Bin 0 -> 1460 bytes .../NES/Mapper/Mapper165.cpp | Bin 0 -> 5342 bytes virtuanessrc097-master/NES/Mapper/Mapper165.h | Bin 0 -> 1554 bytes .../NES/Mapper/Mapper167.cpp | Bin 0 -> 3574 bytes virtuanessrc097-master/NES/Mapper/Mapper167.h | Bin 0 -> 1204 bytes .../NES/Mapper/Mapper180.cpp | Bin 0 -> 860 bytes virtuanessrc097-master/NES/Mapper/Mapper180.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper181.cpp | Bin 0 -> 1040 bytes virtuanessrc097-master/NES/Mapper/Mapper181.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper182.cpp | Bin 0 -> 3838 bytes virtuanessrc097-master/NES/Mapper/Mapper182.h | Bin 0 -> 1220 bytes .../NES/Mapper/Mapper183.cpp | Bin 0 -> 7226 bytes virtuanessrc097-master/NES/Mapper/Mapper183.h | Bin 0 -> 1224 bytes .../NES/Mapper/Mapper185.cpp | Bin 0 -> 2056 bytes virtuanessrc097-master/NES/Mapper/Mapper185.h | Bin 0 -> 842 bytes .../NES/Mapper/Mapper187.cpp | Bin 0 -> 11584 bytes virtuanessrc097-master/NES/Mapper/Mapper187.h | Bin 0 -> 1778 bytes .../NES/Mapper/Mapper188.cpp | Bin 0 -> 1442 bytes virtuanessrc097-master/NES/Mapper/Mapper188.h | Bin 0 -> 802 bytes .../NES/Mapper/Mapper189.cpp | Bin 0 -> 13200 bytes virtuanessrc097-master/NES/Mapper/Mapper189.h | Bin 0 -> 1794 bytes .../NES/Mapper/Mapper190.cpp | Bin 0 -> 10710 bytes virtuanessrc097-master/NES/Mapper/Mapper190.h | Bin 0 -> 1676 bytes .../NES/Mapper/Mapper191.cpp | Bin 0 -> 4230 bytes virtuanessrc097-master/NES/Mapper/Mapper191.h | Bin 0 -> 1460 bytes .../NES/Mapper/Mapper193.cpp | Bin 0 -> 1474 bytes virtuanessrc097-master/NES/Mapper/Mapper193.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper194.cpp | Bin 0 -> 758 bytes virtuanessrc097-master/NES/Mapper/Mapper194.h | Bin 0 -> 792 bytes .../NES/Mapper/Mapper198.cpp | Bin 0 -> 6080 bytes virtuanessrc097-master/NES/Mapper/Mapper198.h | Bin 0 -> 1498 bytes .../NES/Mapper/Mapper200.cpp | Bin 0 -> 1412 bytes virtuanessrc097-master/NES/Mapper/Mapper200.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper201.cpp | Bin 0 -> 1218 bytes virtuanessrc097-master/NES/Mapper/Mapper201.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper202.cpp | Bin 0 -> 2038 bytes virtuanessrc097-master/NES/Mapper/Mapper202.h | Bin 0 -> 1054 bytes .../NES/Mapper/Mapper222.cpp | Bin 0 -> 2170 bytes virtuanessrc097-master/NES/Mapper/Mapper222.h | Bin 0 -> 820 bytes .../NES/Mapper/Mapper225.cpp | Bin 0 -> 2894 bytes virtuanessrc097-master/NES/Mapper/Mapper225.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper226.cpp | Bin 0 -> 2608 bytes virtuanessrc097-master/NES/Mapper/Mapper226.h | Bin 0 -> 1076 bytes .../NES/Mapper/Mapper227.cpp | Bin 0 -> 2320 bytes virtuanessrc097-master/NES/Mapper/Mapper227.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper228.cpp | Bin 0 -> 2090 bytes virtuanessrc097-master/NES/Mapper/Mapper228.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper229.cpp | Bin 0 -> 1538 bytes virtuanessrc097-master/NES/Mapper/Mapper229.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper230.cpp | Bin 0 -> 2258 bytes virtuanessrc097-master/NES/Mapper/Mapper230.h | Bin 0 -> 836 bytes .../NES/Mapper/Mapper231.cpp | Bin 0 -> 1504 bytes virtuanessrc097-master/NES/Mapper/Mapper231.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper232.cpp | Bin 0 -> 2210 bytes virtuanessrc097-master/NES/Mapper/Mapper232.h | Bin 0 -> 1168 bytes .../NES/Mapper/Mapper233.cpp | Bin 0 -> 1974 bytes virtuanessrc097-master/NES/Mapper/Mapper233.h | Bin 0 -> 810 bytes .../NES/Mapper/Mapper234.cpp | Bin 0 -> 2718 bytes virtuanessrc097-master/NES/Mapper/Mapper234.h | Bin 0 -> 1184 bytes .../NES/Mapper/Mapper235.cpp | Bin 0 -> 3870 bytes virtuanessrc097-master/NES/Mapper/Mapper235.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper236.cpp | Bin 0 -> 3292 bytes virtuanessrc097-master/NES/Mapper/Mapper236.h | Bin 0 -> 1094 bytes .../NES/Mapper/Mapper240.cpp | Bin 0 -> 1092 bytes virtuanessrc097-master/NES/Mapper/Mapper240.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper241.cpp | Bin 0 -> 914 bytes virtuanessrc097-master/NES/Mapper/Mapper241.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper242.cpp | Bin 0 -> 810 bytes virtuanessrc097-master/NES/Mapper/Mapper242.h | Bin 0 -> 806 bytes .../NES/Mapper/Mapper243.cpp | Bin 0 -> 2986 bytes virtuanessrc097-master/NES/Mapper/Mapper243.h | Bin 0 -> 1086 bytes .../NES/Mapper/Mapper244.cpp | Bin 0 -> 1022 bytes virtuanessrc097-master/NES/Mapper/Mapper244.h | Bin 0 -> 802 bytes .../NES/Mapper/Mapper245.cpp | Bin 0 -> 8460 bytes virtuanessrc097-master/NES/Mapper/Mapper245.h | Bin 0 -> 1696 bytes .../NES/Mapper/Mapper246.cpp | Bin 0 -> 2018 bytes virtuanessrc097-master/NES/Mapper/Mapper246.h | Bin 0 -> 812 bytes .../NES/Mapper/Mapper248.cpp | Bin 0 -> 6806 bytes virtuanessrc097-master/NES/Mapper/Mapper248.h | Bin 0 -> 1642 bytes .../NES/Mapper/Mapper249.cpp | Bin 0 -> 14360 bytes virtuanessrc097-master/NES/Mapper/Mapper249.h | Bin 0 -> 1780 bytes .../NES/Mapper/Mapper251.cpp | Bin 0 -> 4064 bytes virtuanessrc097-master/NES/Mapper/Mapper251.h | Bin 0 -> 1248 bytes .../NES/Mapper/Mapper252.cpp | Bin 0 -> 7836 bytes virtuanessrc097-master/NES/Mapper/Mapper252.h | Bin 0 -> 1324 bytes .../NES/Mapper/Mapper254.cpp | Bin 0 -> 10202 bytes virtuanessrc097-master/NES/Mapper/Mapper254.h | Bin 0 -> 1788 bytes .../NES/Mapper/Mapper255.cpp | Bin 0 -> 4294 bytes virtuanessrc097-master/NES/Mapper/Mapper255.h | Bin 0 -> 1248 bytes .../NES/Mapper/MapperFDS.cpp | Bin 0 -> 28242 bytes virtuanessrc097-master/NES/Mapper/MapperFDS.h | Bin 0 -> 4316 bytes .../NES/Mapper/MapperFactory.cpp | Bin 0 -> 31310 bytes .../NES/Mapper/MapperNSF.cpp | Bin 0 -> 76842 bytes virtuanessrc097-master/NES/Mapper/MapperNSF.h | Bin 0 -> 3738 bytes virtuanessrc097-master/NES/Nes.cpp | Bin 0 -> 204464 bytes virtuanessrc097-master/NES/Nes.h | Bin 0 -> 18460 bytes virtuanessrc097-master/NES/PAD.cpp | Bin 0 -> 36724 bytes virtuanessrc097-master/NES/PAD.h | Bin 0 -> 7720 bytes virtuanessrc097-master/NES/PPU.cpp | Bin 0 -> 51042 bytes virtuanessrc097-master/NES/PPU.h | Bin 0 -> 8094 bytes virtuanessrc097-master/NES/PadEX/EXPAD.h | Bin 0 -> 2112 bytes .../NES/PadEX/EXPAD_CrazyClimber.cpp | Bin 0 -> 2800 bytes .../NES/PadEX/EXPAD_CrazyClimber.h | Bin 0 -> 986 bytes .../NES/PadEX/EXPAD_ExcitingBoxing.cpp | Bin 0 -> 2678 bytes .../NES/PadEX/EXPAD_ExcitingBoxing.h | Bin 0 -> 1134 bytes .../NES/PadEX/EXPAD_FamlyTrainer.cpp | Bin 0 -> 4768 bytes .../NES/PadEX/EXPAD_FamlyTrainer.h | Bin 0 -> 1128 bytes .../NES/PadEX/EXPAD_Gyromite.cpp | Bin 0 -> 3820 bytes .../NES/PadEX/EXPAD_Gyromite.h | Bin 0 -> 1078 bytes .../NES/PadEX/EXPAD_HyperShot.cpp | Bin 0 -> 970 bytes .../NES/PadEX/EXPAD_HyperShot.h | Bin 0 -> 872 bytes .../NES/PadEX/EXPAD_Keyboard.cpp | Bin 0 -> 10824 bytes .../NES/PadEX/EXPAD_Keyboard.h | Bin 0 -> 986 bytes .../NES/PadEX/EXPAD_Mahjang.cpp | Bin 0 -> 4536 bytes .../NES/PadEX/EXPAD_Mahjang.h | Bin 0 -> 1108 bytes .../NES/PadEX/EXPAD_OekakidsTablet.cpp | Bin 0 -> 4010 bytes .../NES/PadEX/EXPAD_OekakidsTablet.h | Bin 0 -> 1268 bytes .../NES/PadEX/EXPAD_Paddle.cpp | Bin 0 -> 3006 bytes .../NES/PadEX/EXPAD_Paddle.h | Bin 0 -> 1282 bytes .../NES/PadEX/EXPAD_SpaceShadowGun.cpp | Bin 0 -> 2972 bytes .../NES/PadEX/EXPAD_SpaceShadowGun.h | Bin 0 -> 1210 bytes .../NES/PadEX/EXPAD_Supor_Keyboard.cpp | Bin 0 -> 14020 bytes .../NES/PadEX/EXPAD_Supor_Keyboard.h | Bin 0 -> 1010 bytes .../NES/PadEX/EXPAD_Toprider.cpp | Bin 0 -> 11298 bytes .../NES/PadEX/EXPAD_Toprider.h | Bin 0 -> 1274 bytes .../NES/PadEX/EXPAD_TurboFile.cpp | Bin 0 -> 2132 bytes .../NES/PadEX/EXPAD_TurboFile.h | Bin 0 -> 1010 bytes .../NES/PadEX/EXPAD_VSUnisystem.cpp | Bin 0 -> 1896 bytes .../NES/PadEX/EXPAD_VSUnisystem.h | Bin 0 -> 846 bytes .../NES/PadEX/EXPAD_VSZapper.cpp | Bin 0 -> 4964 bytes .../NES/PadEX/EXPAD_VSZapper.h | Bin 0 -> 1250 bytes .../NES/PadEX/EXPAD_Zapper.cpp | Bin 0 -> 2934 bytes .../NES/PadEX/EXPAD_Zapper.h | Bin 0 -> 1124 bytes virtuanessrc097-master/NES/ROM.cpp | Bin 0 -> 25072 bytes virtuanessrc097-master/NES/ROM.h | Bin 0 -> 11126 bytes virtuanessrc097-master/NES/ROMDB.cpp | Bin 0 -> 8470 bytes virtuanessrc097-master/NES/ROMDB.h | Bin 0 -> 2150 bytes virtuanessrc097-master/NES/ROM_Patch.cpp | Bin 0 -> 21850 bytes virtuanessrc097-master/NES/State.h | Bin 0 -> 13962 bytes virtuanessrc097-master/NES/VS_Setting.h | Bin 0 -> 8612 bytes virtuanessrc097-master/NES/VsUnisystem.cpp | Bin 0 -> 58526 bytes virtuanessrc097-master/NES/VsUnisystem.h | Bin 0 -> 868 bytes virtuanessrc097-master/NameTableView.cpp | Bin 0 -> 8880 bytes virtuanessrc097-master/NameTableView.h | Bin 0 -> 1606 bytes virtuanessrc097-master/NetPlay.cpp | Bin 0 -> 43714 bytes virtuanessrc097-master/NetPlay.h | Bin 0 -> 6460 bytes virtuanessrc097-master/NetPlayDlg.cpp | Bin 0 -> 31626 bytes virtuanessrc097-master/NetPlayDlg.h | Bin 0 -> 2152 bytes virtuanessrc097-master/PaletteEdit.cpp | Bin 0 -> 28690 bytes virtuanessrc097-master/PaletteEdit.h | Bin 0 -> 2748 bytes virtuanessrc097-master/PaletteView.cpp | Bin 0 -> 6662 bytes virtuanessrc097-master/PaletteView.h | Bin 0 -> 1582 bytes virtuanessrc097-master/Pathlib.cpp | Bin 0 -> 6622 bytes virtuanessrc097-master/Pathlib.h | Bin 0 -> 2394 bytes virtuanessrc097-master/PatternView.cpp | Bin 0 -> 9712 bytes virtuanessrc097-master/PatternView.h | Bin 0 -> 1744 bytes virtuanessrc097-master/Plugin.cpp | Bin 0 -> 4458 bytes virtuanessrc097-master/Plugin.h | Bin 0 -> 2698 bytes virtuanessrc097-master/Pngwrite.h | Bin 0 -> 6814 bytes virtuanessrc097-master/Recent.cpp | Bin 0 -> 11618 bytes virtuanessrc097-master/Recent.h | Bin 0 -> 1582 bytes virtuanessrc097-master/Registry.cpp | Bin 0 -> 10422 bytes virtuanessrc097-master/Registry.h | Bin 0 -> 2136 bytes virtuanessrc097-master/Render.h | Bin 0 -> 35054 bytes virtuanessrc097-master/Render16bpp.h | Bin 0 -> 39150 bytes virtuanessrc097-master/Render24bpp.h | Bin 0 -> 41542 bytes virtuanessrc097-master/Render32bpp.h | Bin 0 -> 39262 bytes virtuanessrc097-master/Render8bpp.h | Bin 0 -> 14876 bytes virtuanessrc097-master/RomInfoDlg.cpp | Bin 0 -> 4146 bytes virtuanessrc097-master/RomInfoDlg.h | Bin 0 -> 2044 bytes virtuanessrc097-master/ShortcutDlg.cpp | Bin 0 -> 19252 bytes virtuanessrc097-master/ShortcutDlg.h | Bin 0 -> 2162 bytes virtuanessrc097-master/SimpleVirusChecker.c | 227 + virtuanessrc097-master/SimpleVirusChecker.h | Bin 0 -> 2202 bytes virtuanessrc097-master/SoundDlg.cpp | Bin 0 -> 10082 bytes virtuanessrc097-master/SoundDlg.h | Bin 0 -> 1322 bytes virtuanessrc097-master/Typedef.h | Bin 0 -> 3206 bytes virtuanessrc097-master/VirtuaNES.dsp | 5871 +++++++++++++++++ virtuanessrc097-master/VirtuaNES.dsw | 29 + virtuanessrc097-master/VirtuaNES.opt | Bin 0 -> 55808 bytes virtuanessrc097-master/VirtuaNES.rc | 120 + virtuanessrc097-master/VirtuaNES.sln | 26 + virtuanessrc097-master/VirtuaNES.vcxproj | 2426 +++++++ .../VirtuaNES.vcxproj.filters | 1565 +++++ virtuanessrc097-master/VirtuaNESres.h | Bin 0 -> 55952 bytes virtuanessrc097-master/WaveRec.cpp | Bin 0 -> 2608 bytes virtuanessrc097-master/WaveRec.h | Bin 0 -> 1822 bytes virtuanessrc097-master/WinMain.cpp | Bin 0 -> 11734 bytes virtuanessrc097-master/Wnd.cpp | Bin 0 -> 5862 bytes virtuanessrc097-master/Wnd.h | Bin 0 -> 12564 bytes virtuanessrc097-master/WndHook.cpp | Bin 0 -> 3492 bytes virtuanessrc097-master/WndHook.h | Bin 0 -> 1416 bytes virtuanessrc097-master/hq2x.h | Bin 0 -> 52902 bytes virtuanessrc097-master/interp.h | Bin 0 -> 20892 bytes virtuanessrc097-master/lq2x.h | Bin 0 -> 34334 bytes virtuanessrc097-master/lzAscii.h | Bin 0 -> 5490 bytes virtuanessrc097-master/lzSight.h | Bin 0 -> 1178 bytes virtuanessrc097-master/lzTVlayer.h | Bin 0 -> 184978 bytes virtuanessrc097-master/nx_2xSaI.h | Bin 0 -> 57186 bytes virtuanessrc097-master/nx_Scale2x.h | Bin 0 -> 20190 bytes virtuanessrc097-master/nx_Super2xSaI.h | Bin 0 -> 55408 bytes virtuanessrc097-master/nx_SuperEagle.h | Bin 0 -> 45570 bytes virtuanessrc097-master/nx_hq2x.h | Bin 0 -> 23002 bytes virtuanessrc097-master/res/CheatImageList.bmp | Bin 0 -> 630 bytes .../res/LauncherImageList.bmp | Bin 0 -> 886 bytes .../res/VirtuaNES.exe.manifest | 24 + virtuanessrc097-master/res/VirtuaNES.ico | Bin 0 -> 766 bytes virtuanessrc097-master/res/header_down.ico | Bin 0 -> 318 bytes virtuanessrc097-master/res/header_up.ico | Bin 0 -> 318 bytes virtuanessrc097-master/resource.h | Bin 0 -> 1010 bytes virtuanessrc097-master/zlib/unzip.c | 1294 ++++ virtuanessrc097-master/zlib/unzip.h | Bin 0 -> 20412 bytes virtuanessrc097-master/zlib/zconf.h | Bin 0 -> 16180 bytes virtuanessrc097-master/zlib/zlib.h | Bin 0 -> 83588 bytes 515 files changed, 13294 insertions(+) create mode 100644 virtuanessrc097-master/.gitignore create mode 100644 virtuanessrc097-master/AboutDlg.cpp create mode 100644 virtuanessrc097-master/AboutDlg.h create mode 100644 virtuanessrc097-master/App.cpp create mode 100644 virtuanessrc097-master/App.h create mode 100644 virtuanessrc097-master/Archive.cpp create mode 100644 virtuanessrc097-master/Archive.h create mode 100644 virtuanessrc097-master/AviConvDlg.cpp create mode 100644 virtuanessrc097-master/AviConvDlg.h create mode 100644 virtuanessrc097-master/AviWriter.cpp create mode 100644 virtuanessrc097-master/AviWriter.h create mode 100644 virtuanessrc097-master/CHyperLink.h create mode 100644 virtuanessrc097-master/ChatDlg.cpp create mode 100644 virtuanessrc097-master/ChatDlg.h create mode 100644 virtuanessrc097-master/CheatDlg.cpp create mode 100644 virtuanessrc097-master/CheatDlg.h create mode 100644 virtuanessrc097-master/Com.cpp create mode 100644 virtuanessrc097-master/Com.h create mode 100644 virtuanessrc097-master/Config.cpp create mode 100644 virtuanessrc097-master/Config.h create mode 100644 virtuanessrc097-master/ControllerDlg.cpp create mode 100644 virtuanessrc097-master/ControllerDlg.h create mode 100644 virtuanessrc097-master/Crclib.cpp create mode 100644 virtuanessrc097-master/Crclib.h create mode 100644 virtuanessrc097-master/DatachBarcodeDlg.cpp create mode 100644 virtuanessrc097-master/DatachBarcodeDlg.h create mode 100644 virtuanessrc097-master/DebugOut.cpp create mode 100644 virtuanessrc097-master/DebugOut.h create mode 100644 virtuanessrc097-master/DipSwitchDlg.cpp create mode 100644 virtuanessrc097-master/DipSwitchDlg.h create mode 100644 virtuanessrc097-master/DirectDraw.cpp create mode 100644 virtuanessrc097-master/DirectDraw.h create mode 100644 virtuanessrc097-master/DirectInput.cpp create mode 100644 virtuanessrc097-master/DirectInput.h create mode 100644 virtuanessrc097-master/DirectSound.cpp create mode 100644 virtuanessrc097-master/DirectSound.h create mode 100644 virtuanessrc097-master/Doc/Copying.txt create mode 100644 virtuanessrc097-master/Doc/ReadmeSrc.txt create mode 100644 virtuanessrc097-master/EmuThread.cpp create mode 100644 virtuanessrc097-master/EmuThread.h create mode 100644 virtuanessrc097-master/EmulatorDlg.cpp create mode 100644 virtuanessrc097-master/EmulatorDlg.h create mode 100644 virtuanessrc097-master/English.vlp create mode 100644 virtuanessrc097-master/ExtSoundFile.h create mode 100644 virtuanessrc097-master/FolderDlg.cpp create mode 100644 virtuanessrc097-master/FolderDlg.h create mode 100644 virtuanessrc097-master/GameOptionDlg.cpp create mode 100644 virtuanessrc097-master/GameOptionDlg.h create mode 100644 virtuanessrc097-master/GraphicsDlg.cpp create mode 100644 virtuanessrc097-master/GraphicsDlg.h create mode 100644 virtuanessrc097-master/JoyAxisDlg.cpp create mode 100644 virtuanessrc097-master/JoyAxisDlg.h create mode 100644 virtuanessrc097-master/LanguageDlg.cpp create mode 100644 virtuanessrc097-master/LanguageDlg.h create mode 100644 virtuanessrc097-master/LauncherDlg.cpp create mode 100644 virtuanessrc097-master/LauncherDlg.h create mode 100644 virtuanessrc097-master/MMTimer.cpp create mode 100644 virtuanessrc097-master/MMTimer.h create mode 100644 virtuanessrc097-master/Macro.h create mode 100644 virtuanessrc097-master/MainFrame.cpp create mode 100644 virtuanessrc097-master/MainFrame.h create mode 100644 virtuanessrc097-master/MemoryView.cpp create mode 100644 virtuanessrc097-master/MemoryView.h create mode 100644 virtuanessrc097-master/MovieDlg.cpp create mode 100644 virtuanessrc097-master/MovieDlg.h create mode 100644 virtuanessrc097-master/MovieInfoDlg.cpp create mode 100644 virtuanessrc097-master/MovieInfoDlg.h create mode 100644 virtuanessrc097-master/NES/APU.cpp create mode 100644 virtuanessrc097-master/NES/APU.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_FDS.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_FDS.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_FME7.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_FME7.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_INTERFACE.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_INTERNAL.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_INTERNAL.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_MMC5.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_MMC5.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_N106.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_N106.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_VRC6.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_VRC6.h create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_VRC7.cpp create mode 100644 virtuanessrc097-master/NES/ApuEX/APU_VRC7.h create mode 100644 virtuanessrc097-master/NES/ApuEX/emu2413/2413tone.h create mode 100644 virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.c create mode 100644 virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.h create mode 100644 virtuanessrc097-master/NES/ApuEX/emu2413/vrc7tone.h create mode 100644 virtuanessrc097-master/NES/CPU.h create mode 100644 virtuanessrc097-master/NES/Cheat.h create mode 100644 virtuanessrc097-master/NES/Cpu.cpp create mode 100644 virtuanessrc097-master/NES/IPS.cpp create mode 100644 virtuanessrc097-master/NES/IPS.h create mode 100644 virtuanessrc097-master/NES/MMU.cpp create mode 100644 virtuanessrc097-master/NES/MMU.h create mode 100644 virtuanessrc097-master/NES/Mapper/EEPROM.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper000.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper000.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper001.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper001.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper002.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper002.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper003.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper003.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper004.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper004.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper005.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper005.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper006.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper006.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper007.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper007.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper008.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper008.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper009.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper009.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper010.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper010.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper011.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper011.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper012.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper012.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper013.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper013.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper015.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper015.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper016.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper016.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper017.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper017.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper018.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper018.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper019.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper019.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper021.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper021.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper022.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper022.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper023.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper023.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper024.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper024.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper025.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper025.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper026.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper026.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper027.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper027.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper032.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper032.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper033.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper033.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper034.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper034.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper040.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper040.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper041.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper041.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper042.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper042.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper043.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper043.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper044.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper044.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper045.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper045.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper046.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper046.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper047.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper047.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper048.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper048.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper050.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper050.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper051.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper051.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper057.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper057.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper058.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper058.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper060.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper060.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper061.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper061.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper062.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper062.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper064.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper064.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper065.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper065.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper066.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper066.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper067.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper067.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper068.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper068.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper069.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper069.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper070.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper070.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper071.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper071.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper072.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper072.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper073.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper073.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper074.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper074.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper075.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper075.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper076.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper076.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper077.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper077.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper078.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper078.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper079.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper079.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper080.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper080.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper082.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper082.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper083.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper083.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper085.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper085.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper086.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper086.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper087.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper087.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper088.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper088.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper089.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper089.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper090.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper090.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper091.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper091.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper092.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper092.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper093.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper093.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper094.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper094.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper095.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper095.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper096.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper096.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper097.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper097.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper099.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper099.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper100.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper100.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper101.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper101.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper105.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper105.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper107.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper107.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper108.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper108.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper109.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper109.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper110.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper110.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper112.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper112.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper113.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper113.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper114.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper114.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper115.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper115.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper116.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper116.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper117.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper117.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper118.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper118.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper119.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper119.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper122.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper122.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper133.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper133.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper134.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper134.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper135.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper135.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper140.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper140.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper142.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper142.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper151.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper151.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper160.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper160.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper164.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper164.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper165.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper165.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper167.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper167.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper180.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper180.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper181.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper181.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper182.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper182.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper183.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper183.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper185.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper185.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper187.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper187.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper188.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper188.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper189.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper189.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper190.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper190.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper191.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper191.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper193.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper193.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper194.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper194.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper198.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper198.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper200.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper200.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper201.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper201.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper202.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper202.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper222.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper222.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper225.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper225.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper226.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper226.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper227.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper227.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper228.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper228.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper229.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper229.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper230.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper230.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper231.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper231.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper232.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper232.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper233.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper233.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper234.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper234.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper235.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper235.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper236.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper236.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper240.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper240.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper241.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper241.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper242.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper242.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper243.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper243.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper244.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper244.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper245.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper245.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper246.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper246.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper248.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper248.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper249.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper249.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper251.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper251.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper252.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper252.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper254.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper254.h create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper255.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/Mapper255.h create mode 100644 virtuanessrc097-master/NES/Mapper/MapperFDS.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/MapperFDS.h create mode 100644 virtuanessrc097-master/NES/Mapper/MapperFactory.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/MapperNSF.cpp create mode 100644 virtuanessrc097-master/NES/Mapper/MapperNSF.h create mode 100644 virtuanessrc097-master/NES/Nes.cpp create mode 100644 virtuanessrc097-master/NES/Nes.h create mode 100644 virtuanessrc097-master/NES/PAD.cpp create mode 100644 virtuanessrc097-master/NES/PAD.h create mode 100644 virtuanessrc097-master/NES/PPU.cpp create mode 100644 virtuanessrc097-master/NES/PPU.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_CrazyClimber.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_CrazyClimber.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_ExcitingBoxing.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_ExcitingBoxing.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_FamlyTrainer.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_FamlyTrainer.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Gyromite.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Gyromite.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_HyperShot.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_HyperShot.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Keyboard.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Keyboard.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Mahjang.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Mahjang.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_OekakidsTablet.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_OekakidsTablet.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Paddle.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Paddle.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_SpaceShadowGun.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_SpaceShadowGun.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Supor_Keyboard.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Supor_Keyboard.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Toprider.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Toprider.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_TurboFile.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_TurboFile.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_VSUnisystem.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_VSUnisystem.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_VSZapper.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_VSZapper.h create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Zapper.cpp create mode 100644 virtuanessrc097-master/NES/PadEX/EXPAD_Zapper.h create mode 100644 virtuanessrc097-master/NES/ROM.cpp create mode 100644 virtuanessrc097-master/NES/ROM.h create mode 100644 virtuanessrc097-master/NES/ROMDB.cpp create mode 100644 virtuanessrc097-master/NES/ROMDB.h create mode 100644 virtuanessrc097-master/NES/ROM_Patch.cpp create mode 100644 virtuanessrc097-master/NES/State.h create mode 100644 virtuanessrc097-master/NES/VS_Setting.h create mode 100644 virtuanessrc097-master/NES/VsUnisystem.cpp create mode 100644 virtuanessrc097-master/NES/VsUnisystem.h create mode 100644 virtuanessrc097-master/NameTableView.cpp create mode 100644 virtuanessrc097-master/NameTableView.h create mode 100644 virtuanessrc097-master/NetPlay.cpp create mode 100644 virtuanessrc097-master/NetPlay.h create mode 100644 virtuanessrc097-master/NetPlayDlg.cpp create mode 100644 virtuanessrc097-master/NetPlayDlg.h create mode 100644 virtuanessrc097-master/PaletteEdit.cpp create mode 100644 virtuanessrc097-master/PaletteEdit.h create mode 100644 virtuanessrc097-master/PaletteView.cpp create mode 100644 virtuanessrc097-master/PaletteView.h create mode 100644 virtuanessrc097-master/Pathlib.cpp create mode 100644 virtuanessrc097-master/Pathlib.h create mode 100644 virtuanessrc097-master/PatternView.cpp create mode 100644 virtuanessrc097-master/PatternView.h create mode 100644 virtuanessrc097-master/Plugin.cpp create mode 100644 virtuanessrc097-master/Plugin.h create mode 100644 virtuanessrc097-master/Pngwrite.h create mode 100644 virtuanessrc097-master/Recent.cpp create mode 100644 virtuanessrc097-master/Recent.h create mode 100644 virtuanessrc097-master/Registry.cpp create mode 100644 virtuanessrc097-master/Registry.h create mode 100644 virtuanessrc097-master/Render.h create mode 100644 virtuanessrc097-master/Render16bpp.h create mode 100644 virtuanessrc097-master/Render24bpp.h create mode 100644 virtuanessrc097-master/Render32bpp.h create mode 100644 virtuanessrc097-master/Render8bpp.h create mode 100644 virtuanessrc097-master/RomInfoDlg.cpp create mode 100644 virtuanessrc097-master/RomInfoDlg.h create mode 100644 virtuanessrc097-master/ShortcutDlg.cpp create mode 100644 virtuanessrc097-master/ShortcutDlg.h create mode 100644 virtuanessrc097-master/SimpleVirusChecker.c create mode 100644 virtuanessrc097-master/SimpleVirusChecker.h create mode 100644 virtuanessrc097-master/SoundDlg.cpp create mode 100644 virtuanessrc097-master/SoundDlg.h create mode 100644 virtuanessrc097-master/Typedef.h create mode 100644 virtuanessrc097-master/VirtuaNES.dsp create mode 100644 virtuanessrc097-master/VirtuaNES.dsw create mode 100644 virtuanessrc097-master/VirtuaNES.opt create mode 100644 virtuanessrc097-master/VirtuaNES.rc create mode 100644 virtuanessrc097-master/VirtuaNES.sln create mode 100644 virtuanessrc097-master/VirtuaNES.vcxproj create mode 100644 virtuanessrc097-master/VirtuaNES.vcxproj.filters create mode 100644 virtuanessrc097-master/VirtuaNESres.h create mode 100644 virtuanessrc097-master/WaveRec.cpp create mode 100644 virtuanessrc097-master/WaveRec.h create mode 100644 virtuanessrc097-master/WinMain.cpp create mode 100644 virtuanessrc097-master/Wnd.cpp create mode 100644 virtuanessrc097-master/Wnd.h create mode 100644 virtuanessrc097-master/WndHook.cpp create mode 100644 virtuanessrc097-master/WndHook.h create mode 100644 virtuanessrc097-master/hq2x.h create mode 100644 virtuanessrc097-master/interp.h create mode 100644 virtuanessrc097-master/lq2x.h create mode 100644 virtuanessrc097-master/lzAscii.h create mode 100644 virtuanessrc097-master/lzSight.h create mode 100644 virtuanessrc097-master/lzTVlayer.h create mode 100644 virtuanessrc097-master/nx_2xSaI.h create mode 100644 virtuanessrc097-master/nx_Scale2x.h create mode 100644 virtuanessrc097-master/nx_Super2xSaI.h create mode 100644 virtuanessrc097-master/nx_SuperEagle.h create mode 100644 virtuanessrc097-master/nx_hq2x.h create mode 100644 virtuanessrc097-master/res/CheatImageList.bmp create mode 100644 virtuanessrc097-master/res/LauncherImageList.bmp create mode 100644 virtuanessrc097-master/res/VirtuaNES.exe.manifest create mode 100644 virtuanessrc097-master/res/VirtuaNES.ico create mode 100644 virtuanessrc097-master/res/header_down.ico create mode 100644 virtuanessrc097-master/res/header_up.ico create mode 100644 virtuanessrc097-master/resource.h create mode 100644 virtuanessrc097-master/zlib/unzip.c create mode 100644 virtuanessrc097-master/zlib/unzip.h create mode 100644 virtuanessrc097-master/zlib/zconf.h create mode 100644 virtuanessrc097-master/zlib/zlib.h diff --git a/virtuanessrc097-master/.gitignore b/virtuanessrc097-master/.gitignore new file mode 100644 index 00000000..7d002f6b --- /dev/null +++ b/virtuanessrc097-master/.gitignore @@ -0,0 +1,167 @@ +VirtuaNES.exe +VirtuaNES.ini + +################# +## Eclipse +################# +.vs/ +debug/ +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds +*.dotCover + +## TODO: If you have NuGet Package Restore enabled, uncomment this +#packages/ + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + + + +############ +## Windows +############ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +# Mac crap +.DS_Store diff --git a/virtuanessrc097-master/AboutDlg.cpp b/virtuanessrc097-master/AboutDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fff98b8f5555b2aac44b85dac7583c0092268053 GIT binary patch literal 4402 zcmdUy-EJdA5QXd3NW6pP70A(|WcU>dup+U&jurnzv9mz}WF?#6wUpRV>_DUyFN3&; zOSt0^cnib@SKK1tJKgT|j6Fj(>;giTJ!4Pxsj5?_tJ;73zF`~ovc1IThL!EdgvY zI@iwP7a`npYaZK~T{(=hy>DN*-%f1G-OSeQi9K+U<=M`7ddliEJF*Mb-DW+vONTyM zU|!)tQICjv0>(LLGmwt#vCCv;bK-i>`OlBHVvj($#O{h!U2^O5O(=?`QV@B?>ew8! zW@J4+=eJmI5!1yjHhcJ= zC+{u3HTb^GXVYn*YPA)NHOEO<+jH8GCL%)BX{ZB|bkwo|o?76v;i_q`S&8d}UnXR# z$i`%TMx3gmM^8sr!@9#uDwO`x(dEUGwO1@H*7a-`&t>OX_rX&(kNmabpbHZXG6)zo zVxBmao!t>@h~gTyPbP<4x8Y3;HExg(owB6sxzlhq$83Z{)`^wsg13-OwjRq?Vpo+J zP>I$0ZrUb@Qy8D3FI7ey?hvg!l~Jfyp7g4nG9k{u=2NGQlKWjd>XN4=@PrtvybbcT z`Ssef!dD#HBeHFRI_J5%%7}Fnm!FuI3U5&4wr>enh&-^1@d?+#enqhtDma`v6&ONSmc+aaoEA-6@^7Yn|A zetqQa2!?&s#)am6PT@}^6(s~0)1E4lLZ?sr^IuzS6`e__YrrB z_Z-Foo8n44t#-q|_P_Mnbv*WoQazzhWp-$e@0IVHX&l0(4qI}Gxd)wZzPg9e^t5y^20t;zy&V*FXevPp6 zW=GjRhnq{R#xAz9y+RDHyG|YM;&lc_)Mm{65qa#x(gAV$nY66wS3$kDhkPdF_kh>C z&xMpYERXcob0P^Vz2`z+d09Oq(~p++>vF|{BEu95dK|#?HFbFwC1yKUFMa0<+&l{>tKP-S-Q)C3`g2%`nw%5g znC>mKa6e}^_->iDkTO0f@Y!(PzD4)#lC>sU-unA)eZ@XxClx=>%PHdPbfC$isS+^K zar+o6nOrtq=e$qsF<-ydcNulY#?6WsTeldw6eE^n4C^RkxX`vv18|IhiTn*Ohe>vxL(vlMWT=Vv^tIN08dg?y^-dvN1ygBC4RE6aoq?3ExL18vT z`*hXvZGDBc^BT+rP04t+DcX18%;`09cP7*4&3~5Bw5R_Av+2`$RP)^#&g$g9<=CG- z`t*4J@3_I7J7s6GAD~B1P`7NeCcAt5+$@fH`Ly`&#~D@eC!?Ehu>b%7 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/AboutDlg.h b/virtuanessrc097-master/AboutDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..7f5935431a40ce9ca792eecfa483467103fa03a7 GIT binary patch literal 1262 zcmbW1&2G~`6ot>$NW6ndH*`Zruqzc(h@%z}H&JQTWt60*STt^w9}q&kOvN6SbjKs` z7KjBawutt-Gd6N4pn$BgCwJ~W=iHyn<&UPCx~Utyn~L?xeRm(+XZOv0bZ_0c`|94i zckYY3aFvgJH*{}F#3 zBi4~;yQjNwbYW}3J@9YiO-oCqzR*~wTKWuPZR;f&Sw3g%=DMS2dQd7g`>O9;3(dU$ zN$IsD#{5pGV4egXDfSG5g9FEPq3T1E!Gsvh~GKhF?yJ@MonnCOQ6P^|m+3}OmQXeIoD}E^+JLrv=-~#mp8CunHulo#q(;hH`Zy&^c zR$9|+`P$^Su_iy!dU{-o4rl8}w^3jdn3eUbGpvttMEr4AT9^HUn#5c1{@a~nSzH0!4!ev1 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/App.cpp b/virtuanessrc097-master/App.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4db97f86455eac7a8e0817cf93b3f003ccdcc033 GIT binary patch literal 3446 zcmcgv&ubG=5T26|!K3$Wy`(C35cJUEAx+XBG`~#J#2P}VHfaKNThg=zrQR+0FL)3s z-qeFg4&qH(JctMBsbCK(t$6BH)NkI~?PinBHmM*>_H8zA=KJQGd2e3+{2r!ZI!9-5 zA0~sI@-83pEB?iA_&Xo*Yu>~2HoxElZn8a3#tT#Ya^~1529@9|uW;hJ_(wk7_L#puQyLA71vr%9%GaOFX5J^KnJTu zL>>mec`%Upyje+fSr2Q|vdtj6C0e&4Vk;I$N7{U{dB|^($tLo9z%Th3a%-x4li%UF z$scjw;U9hInNqo5P`tgg)D^X_P`1>4hqr+0Ji9UTh%(|4Wfe7GLZN;z_W1*UMZ9i= zI4VQ(-I<3f#i6~4%Jo8Vl-%W?Q15`hAdXK^ElBH+Kc~kk`rDAIp)l$(lR8&*QVgdfOk`I(70eFjmM+vOb zxRUr>?)po~TFYrDF#|>XX3ij^)A%G&B?;e|NqCa{`*}-aMhHy(=H$VB3e2Luvyxz* z1*>snHj0l#JZo8qx?YNu;8*sdC{2Jx3^pmO@Fe*7V~GYCrBq7cWPvJpQd3!9mXhO~ z!jk;xJ$n*pqJd<}Plt^1FMP)p?|wN7yOhd_KaS)!0)!0mJccoeCqG`DYS`9(R&M2O ziwy8?AFJPM-dZCQ_PyhFYTqlS?tW60VdO2`2d30!4sk{?#-McXY#qzoiPhrP*RlLp zwk1^2=^3BaTC;YnyJtz(R2F-atjB4qj%7_J)M^W#us+?^oqH!+v2V0=i|+l$d*?2w z-03}8pHpO4m^ki9MbDnGhR#w$Cv*4G7~am|tv6DTbf2<&LX9dEM4uS2PH65Eg`OJ# zf}A4dR9Qy{)8{m;cSUtK@t}K^0Yd0M5ffKdWwPvf@Zas+qG^6mT&$;&h V2!osxT9xx$;Q@12ovNLz`~~K&G5P=i literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/App.h b/virtuanessrc097-master/App.h new file mode 100644 index 0000000000000000000000000000000000000000..71a71a931e8fc95b9725ff739c639996768a6ad4 GIT binary patch literal 4684 zcmb_gJ!~9B6n<5tMM_D(D9srG9tA;>0FraDuoa(ku`hCv67dgeZ^@5e1?^sUqQm9~)88M!@&Y+<4}8XZFqkt!{U3=jVOzd+&WS zyZ`(>F5_}kp2B%tQu#zZRQu|4^;q3gzp1~}7wQr2zf+&8J+-53KVJDeCQVt9mMlw# zYa&ZHsxl#U97{4Sv-me7=jF6a;>T7q%JgqyWH$1s(8vXC<3%}+nP*^Q0v4C_nbvCk zCl+Z--jsFeX|$=lB3FT)*f(&uDKE&HymsJKzVD`V(X)xZqx4%x&&yuV5cWx#!*LeB zd1>HGwqDn$C*%THp;sKoA8}s-#!Wi&sbfk#bvmH^dJM7RA6UHVxfxT zR&^#A+hjdoO@1$nV+-g^Ee*CBB>pp^nL$)9A?GGhB^}&%V55sOGjJ7NkBP%PN_=XV zV;RWT!CPG`#+v4id0ZXHb4J+6xU@0J>z~7w&&0URnEo(Yam%q$ zaRiK6qaQQ+WIP^JAY(IT^)R|)R3&f6YD>AD!)XdNgu3BuIaMKpF>kDv#2K5?y9X+S zo7>iYxd%>9%4W}NfQ^Y?)x+%geVwgPZTmIr`%|pGa+|T5Ew?_%rPV3NW(t<=O4P$0 z*8xUv3)jKQqn3om7gdrfQp0}b4D`^%{HJ0RP-l7?~f1fm;OHwTs>O!gDXSP1KRdA!zl78Ft&mtLsZzq#;hfNOATwq zJDO9wLuJO9!;fa7SB4m(a70bSXq$TETjjGD4i{Tf8)n70i#M9b>eq8ex|Lq2X57x$ zVk}!(Lo-ydbDlu9Jqz!R;>Kq1xwQFzQtyd5ZyS7XVExIEb38ADIp327y~dMwuJx&$ zQ6H$5dU~myUBvZW93ga}RVkc_21%$c2KO<^!EPnIPY=(-JTv=Z<_Hml)|!w9F0VPN zxN>le&y#F_yuGi!LezKgmb<4uQ@8Pk+tTM9^)>Ey)DJj6P=6efu|XyFZSLyX@96Ub zbqChmeYq{SvYDvZ{cic}yXt%O3p^~J+wOiXf9k=G*yW>&7DDMwPyRYaQ1HD&`_~czF!NYSm@}nF`lf1J%K|B-J!*m#&S(!kxE|pokAtiq!wmc;!tXlvJHj(yb(HTq{{juP9qIr8 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Archive.cpp b/virtuanessrc097-master/Archive.cpp new file mode 100644 index 0000000000000000000000000000000000000000..16472715b0d2db5805cd68f707a6709a97671037 GIT binary patch literal 15562 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

-WUoeU%`$LA% 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 bZz&%$aZNkLcCpcY-S5gBBD(s$UEclyBs9eF literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/AviWriter.cpp b/virtuanessrc097-master/AviWriter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d6e92a303a641a48d4fb879da783efd314cb6bfa GIT binary patch literal 12340 zcmds7ZBrCS5T37>s{DroD;8=*$cvRSm86uHNGYN~B<2f+2uO(s1t%uauR`9(X4#QE{!_`(e#q|)^ zrx$dj=ie1P8H8O>z6mcP^>o+?=eYaUt(pxl!*rGYHCF6``ZyS!?0tf}JK-RZq6eB| zT)hUD0i>A$&%^LMd=3ex!EqlPzYJes54k@bu0@XAXA{kBM%GvR zt-ybbCtCX33m^5uFJURHhqbVZ?^S%Shi9PahpW-Prh~UG_u7X}jDj=l`a7gO#+{iC zYv^Z{px1$Z7W?kvvl)IvOfWO#^Iha^9v_aLGmjRb%i2iGNqF3ceFumpX5cCICl87L z6If38FJk|D6Yc#1Ir0Qv-HAEEeW(HVo`IxW(dLV=$;~jIct((cvAvJAZ?JlZHMG0N z(%Hz{8=x7&-$Vn(b{cQ}@D)Duh^4vcvH5U&^zA(%dsrNlEc$1Rb%NxTJNBoKji*DwU;aA+Mv0w_ zQGTwyK}qj&^mesJ4{;=sW!_vx48B4%XjW=ZwuegSrKY~^dgVJ%&$bS;WCvd-_&kk) zsaW%+(`V1M4xCv7cI44<`Bw6l&^m8jgvCPHqb18oCz0F7=Xc3|{`t-DJ!;aSt4cQt z7B8)!eNKVQM8OwWLo`ae(Dm>mdNjdwc2<`ki;{PGcGJG=>%2kCOMSB%agGYj3R|z|DWdp(LJ?JKfkv|TU5-zNzMjhSP~y+Vz?x@>3Q}{LB~wCTjNwe#W0XOom)BBp zR15Wvr;?sR^dHy13Kgwu+&xBVRo1CR>BL+1P3eRzC@DO<&i3-YHLa+r7qEocHD`!6>nror z*@4!!x~&BpnsdZ%x^eo^mB&3u%@g(+rZ&`ph_@T307Nk&Qcah|h%Y-=^4BV47T zwe!u9Y6D!Av(I04S~WantnJ}rC)*satS*W+m(@*5FK?Ni*S>pkI>OHTF|HoL(rc)P zoQ-g*wjR%GJo&wZ*3Ft&pBFLmWS!W^D);yfSY)<-G?!W8oA}d*lsc2|!^RTH#C}g> z6qIO)T*)b@`DR?jnb`mz_6?kpHgzt`H5+>YJEw1Ap98G74=tkS9iBn##Ip_Cv!?nC ztZ^A28;H2_UMbCb@*)?tLzn&D;_NLpQT(vobw9OQm;DB@cSvn$HW2w_GHF)sw(mW7 z!F#HrevcH8hx@HZWO#t!!YmM&qnp>$1-cAt;a zVgSBP%XP7N={%l00|^ec5#%*kdi)4rzJ)3no%?`;@IrOt+L7x*?&-&As% zB%MY#j`c2w9En!UY3-w$?=3HbOM9$)loj+U$4JR{((i0Q5570G_r4Y_nY`}*6rGRQX zUe~(+Ca?YGIki7KCtuTj-9NjCyS%P@Dy@p8n%?9m@uF+QSM1Cr@7rAmT|6q zjmJ4dp7u30tfMDO2$!GTCgqbO9QlmLwQ)Ky2b;JeIw;!sOzN_q#+1f($=BVrr-aSi zq=dDMw0syp!Lr|DnPzz|_&2@h$Xoe^RUYRy`C%Q%-=8Wq&rs>vgTH6V-|+G`ZTp~{ z8=bu@&w9nFn05*29N08!p3(g&^D1mvKNptHXUvy(7w1CNTuz0S>*@6WGpwOy+N7#a z4#@GlSYzgJmGUp!L^N87XWLu{jc9$lY~QL&d9H8K!Wa=hn?4?m7DgQhea+v+5tT?^ zwho`pN17RQvhoJwI<&NC>ps8B-zBbqFV9MQaero$`JR0JtWU4S!l{-0?AgDwXpd&K z>=p2rD3|m1|J}}Q(f4t!&UrhnEq1TR;Eix&blRF^LNW=$T94g^usavO+@qa*PjZOv zlQRi+zyn0|urM{zxYFO-w8ct8VT6@g(tVSl$-T9>ddk_I-u7dP+4})LVtJxF#rGn literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/AviWriter.h b/virtuanessrc097-master/AviWriter.h new file mode 100644 index 0000000000000000000000000000000000000000..715b1d65eb4c020d8f190330e98470e57f37e3d6 GIT binary patch literal 2450 zcmbuB-)|B@5Xa{g6aNQHU#c;Z=$kbfq{WgHXpUNZYg&E?2^{30^r310boDc{x83DH zY%oN-*_)Z~kDZ;n-@htSk(cs<|0`0Ks$5EgzjYbQLKm=y(zkR zZx!dD-Vi+|=cDax&p4FVa+E(`5uI@^w_r>_c-)E+GL%sXlo>ybZ_6CNQ#s^}d+ep~ zT-tg>#Z2C?*7LoVDRJdB&Dz3P-Gnnbt|i~N@g=*VK}8F9rc4!m zJNU^|jP6iv3ZnY78SfB6Pi$iNZu9le^I7WOGmcYnY80b8^m}4=vYD%xN7JE$UY$hB zbpOm6o~lxqy~m+_og>)s*( xJ)ZsEkFIsmiTRkIq-tL(KXL}ajm=!;@ervvfTg}a^n0k3e@DGS{eIs=e*k5cb*caW literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/CHyperLink.h b/virtuanessrc097-master/CHyperLink.h new file mode 100644 index 0000000000000000000000000000000000000000..5465a7001005a50f6688f044d19a9eddb1e924bc GIT binary patch literal 12152 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 V(Tat8hQIq#zdeFHdf4C0{~HI`C>H<# literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/ChatDlg.cpp b/virtuanessrc097-master/ChatDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2bfe5d30b5f887196ffacfd5833d032937d9f937 GIT binary patch literal 14804 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 Do1Us; literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/ChatDlg.h b/virtuanessrc097-master/ChatDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..1e97d6a71603e7a70a9894678d404e31fbafc4a4 GIT binary patch literal 2106 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 I8a4|4|8lm|R{#J2 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/CheatDlg.h b/virtuanessrc097-master/CheatDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..ff3b7ee9c08d2d7bc9e41ca463c54959474d277d GIT binary patch literal 7096 zcmeHMOK%%h6h7NQV!=Nc(hW$6jLHU;s*-CvO;kUE9jB@gikx_wSR{5dw);@kzrltb zVh<8x!3w(J^&`551^)n1zVDv7xpy3oGvlDpO31Q3o;mkB&wC!%FaKVbb$L_Xz~{Pz z@;v%0`X%}?`YQS|`ZM|_`a1d}`aZJH`F%}>@<2v1kQm>A?BP|#Yg6h{ksYZ?L+;?- zmb7rUAwArw<4rnUuPcYZh*wyD9wU@{hT8{n9XuLFjux&ekbr!f=^ZQmNDky!W=4Zh zZptHQM197%n#lWdB)3vYc|S{g4BClImry)}RtKOMOR|KD7>VI~m{QGvOMZv&!btjZ z0-TAQ;_3ibq2W4^kBnrCHCclls0TGz%h6yBXh*>7gTJFAp8Eeg`2V@*e?FlF`rto- zx2n=Ls}qA$!xPGT1MgE1j8zJHfHe@Ev2%3iSZfdyzyvC4m0E`-*svpMk1Spn< zGM^d=rl6oNW6)cf-TF4L8^9t)4=V=7s+7k^vRd{)HH3X8sqQt%*_IBZ2(VvbJZ%|y zn)p01(L~}2)+Znl8m12xyAQAclBJ_&|q*0jp&tZ1TaFl zKj`I}v3);-KZRFM@oe5&>Zd;PL*A3y8B6+6=kx4 zp*xnIjk z9wQ{U`;^Dbm$VDpa|cf^AzL>0TL0zSZLx+uW1(>&IhN_e+N#yDyqy+H z=I3oc&-s2T9%c6+9rtxMXI_MruQ9b`)vh4xFxwW7GuwGuty{=DJIFg5azEWqHDGI3 z5hEV8xA^R==I%m|7(JVdY9C>dMW_WUyURnis&ASuv4uJwV7Kg{#@dXa9an%3gIUz4 z=o;CwbZRG8F^IK~ym|yp80A&0(VWVR&3-BNdb+^t3AnNX%d)O(hIhSRkah(s>j*j6 z?sqG#RwMh|-@QJHc0V(dn**S*O7vh~*0HB)4Pni_k2`f(Msxihtni6M$S#q5h<7BP zLI>OD*m}Tj<`Hn1@!4(1OYqtS@U(v@hPP1wZv#@XX3}HoHDA;2IbE+CO;^{|AzE#h zAr{frAzFQxA^Q3T@+=c|`Ej5T)G-k_gTyv!VhLX3``%Kz|-uQv(a=O zMfG!0^VZ83yUh;$;7jJuq~C(muhH+%e)`-^r=-tLCsph;oo;Mis$&OfA9J;{irsGj=tv=&43FQYUHtu~}oDhCQp!?yg?_AF(6!59MZr z%S3FsXnj3nG(VuoJ^g%& z9(*5t)dRekxfIL)-{vOjto=XBcG|bjdhPiM!|_>kw%~V#*T9eGBm4)=>hw0|{Br-G HQQm(5LWA(b literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Com.cpp b/virtuanessrc097-master/Com.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6756f272b47f3de76001733efbf0e329551c6ecd GIT binary patch literal 1242 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 PjvCU+zneLLwcq~->>0wf literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Config.h b/virtuanessrc097-master/Config.h new file mode 100644 index 0000000000000000000000000000000000000000..22cbbab0551b15a51d95f5961869251e7426c353 GIT binary patch literal 35614 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/ControllerDlg.cpp b/virtuanessrc097-master/ControllerDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bb0fd9a5b31ddda418209f5217e5b2f7f6facadd GIT binary patch literal 30752 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 Jf7tWL{{z>^f_MM` literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/ControllerDlg.h b/virtuanessrc097-master/ControllerDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..86bb4da7b90196a52ac444bf70bf97797ceb39d2 GIT binary patch literal 3060 zcmd6pJ#Q015Qe8cB>uyZG=LB}pbH;Tu)~MINt8GO6rspTY-5qwmOnrU@n;Y{NK|x` z{1pl+S_C}r?rm<5IM@&hbUNSoZg%FKnRjOQ$M*$Wu+w&m-vvwUefBl`lzqv*WuLQ; z*_-S&^1JLU|2||vOV4@hSj)P$XHA}oZF5z)R&B-Vw$AfD*D_L-=WV{;gMM{xJ*uLs4PDU^Xe)*T@xnn%f zk<}hrEqt{jO<5Ge27ZR*Rn?K6Q1*Dg4~BuQ@x6^y<-c$)a`(x=4*xr>Pg&(L$lgnb zA^yJT-XwODimT@GGr(R0KTSK!`b}4XI#L&@Y8R01U~>gIB`$AWIJ8dqQahJtCCOR2 zYR~vK;OgYHX(9K>Xc=FEUeDwWN7b8ClrZc_X- zSmQMUpT(UGt|i#L?6|ZN8YB_UBlu!cde8M zuTkM`_0U=+uhCP`?nQRI)?_=O+dalmn}i6r!4}w{I(c3yQysGE>*=%fD&p*PhMkmI zelE?<0L_^?IjWM~8uy;dw3s+6>tZI%?ziZGHFDMj!vN1+IH(>J*UGFCB46?INPXm? z>%hR%<2hPzJm!>Vlzbe}z3P^N^KoBjO{nt*dLz2M@7NRApiT`MMK8u#DM#}E^hded zew_d*oX}o0z0b;a>U6+Cp3&KDtkCgwI{ubD%DZ3L*3{L^sWAD(4$WRM!6S>;Ozz*K zdVaF_N{&D(o6|l0Zbtm8Su@Gbs@;p?{c{w`nRd_p6Ic;1T4aBWmC=lL%5ziu)EG{r z?1(A767K;I?Ydp!ypdWwC*vJbvvvmt6tVa@)r{t9lJA;+GM9JmVmg<#3Z72a*dTK4 zxTC|JHq1?-D=f+Lm}rBZp8~P&B<2-onli#LRXjhv)?|$pm*1c<+u23PgNLmnRe4;> zt}M3blyYYMnJCV=KUHmzE1f{%xOBGAT-PZnIXva){B!&%OLf_@7|FE#bsn!e0qV3J OPA6xG^KVbvs^3p5$-I&P literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Crclib.cpp b/virtuanessrc097-master/Crclib.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3587caa693b73031f3ae210d357aeeb1502310dc GIT binary patch literal 2626 zcmd5;(P|Sx6g{si_z%&7>{>OGC>YvWuqMSq)Dly)6qVXGxG}8|O%+AIM)1*RAH{$0 zAL2)-=gefXn`}00K%oqq-JQ(6_uPBWJ;|TnWt4Fq=lEGh33t%q_1%0iKg?GX4uJ?s$IT}E#a(>>lF zV;L3hKN%q@?#*E;;?q@8wd>egs)nuu+qPD_7J&z!sjNoiDH-g4Za=liY%HB_A}tg z4rF^_s>2cY{F#7N-p5ONO!^SgkL!EDo@Lq5W_NbR+z9Z|##0u-L>_&{5u23z=G0Q| zKE_)zG`0*7+N)eX%M#W{9+X=ewf7y8=_Rajsb`)!8?0B`T0G^xGRSf*9M>*lmE>ie ztHft@M>uAA6bkvg%z7_#d0zS|1oU*oIU4YO!gHUj=SzH=UxlQG^O)c`{cri;XLqu` zSyuSidED@R)bX>&5ZBv97~=BTBOm;XMYflVbYHB}`J%l)#Vbz2;e=9VJE8g1w7D5} z%AjeNCUj@$WPh~hCbYvCeX9#G&%60t<&)ml?0Z&&-S^^q{v0N}jYhsSlk=y^D?mV{ z@~FDBN>J%-)@%z=*G}LxqD1#peLs0M_8`5aKh9F86fdnLm9chA{|+RG1I~GmN~K?m zB1>_kQ;Jm?YhR)pPHD3`6;opz!gN0K^weodqA0~!mCW~9<5rxi*8k**{%1%9CmG?C bBaac)6t;Xu$fNu$)_bo&X$E-yP51aOhRaH7 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Crclib.h b/virtuanessrc097-master/Crclib.h new file mode 100644 index 0000000000000000000000000000000000000000..558aa9fa03008f5c4827ef6fb34b456105865a0f GIT binary patch literal 898 zcmb7CK}y3w6n(2g1n*GjrlOcpcPc{L6cnnJP*D*HHHjFkwKQo3i+6D80R)$>U5a<` z4)GA``;!z}Nwh9ze&*%U4hCAIh)vvR9S_(13bBj} zZ0Wj68lUENh+T0-Q%q47UYlshdXioQ9ciT=Z#(1vfUI?m801CdM;bF=v4`io%;3}<`q^bYQI22P+~mf; z9Txo>eQ_sxJmGW>h;H*O+WI9{aD+vy5I@bSV)7+qX(si|qAXJiIB$7nembGM^j4YT EH(M%;hyVZp literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DatachBarcodeDlg.cpp b/virtuanessrc097-master/DatachBarcodeDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3a1c4b586243e433102007621890ef8b2a9fe258 GIT binary patch literal 8374 zcmd5>OK)366rQb-_z!L>TBo$>ZOa0sEy%ImBs7VG?KFKsNE0WHn%a@=v{bZWOT`|x z2(e;Qq;5cLkh-Akx?=?r>_EVVEdsvp98YHM_+H|;NrkM~_i^Stzw?;MKYyPzC(VoI z1$>`0SyME5Q^Q}uOqr+AU(qA{eHT5AoYM1Z=+o%;=!@tf?!SucI{qFutEO(& z%!X;=H)|Hnw3#z!%xSY^W=sh@=WxaEB7SFkPjn^Mte8!+Ej+U3oVg=>R!s|69W!Pc z<~7msusn~`u7K(mJ}ahc+Tilv)E!W*f=g>4x=m2t*oCqSnp?2h$xXA0+$cZYmfPS% zJ6f27n*s<@4_k< z({z3XSk@FYuX|k6EL;Tbsz=w4(h;DZ(&@E^nZR!wS1s{%5gH95r39~UBRd=7zvW#e zG7mL(((Pm%>A5<1x`@+Gtp`6vkE5@V`Cm$|7m>-6z3ity)&s{eC-q|%oLNJrVRI4Rc}Ooq&T*5$Zxc_NKvoy;Hekgjyt$5bd*RMH zR|B6*;9Y|TmUAAlVOHM;-!6Q!H?BporDiJ7^2!cR;#u>yg*@9E$AVa1^)xJqy&X?C zjn|{-$LLQ~Y(~&}xBxw7@v*hnk5-bm;`EHgG>eAz_4;u zN>Mx=T2bibtB)iN|)nkIa0b$(CkWu{k=KY!4QzQyeI5Hs21==$+?Thp9M+-HE(sOt_FC6pG zWE46!B+m4d&Ndm`uZcZ}0&ge+DTn^$G}4A$8Po;#71mZa9a&%hEYt6A@V1+Lf5qJs zc>R;g)Q;Z^z35rg(T90Nb5%6y*OJ%?^`JKwcC@%Jo*~_BSib>IgJLY+XKW5z3|a5Q zkunP3S_*6XY`OXV59Q0(RM(7$i$y_%&gK>PlD(1$@_8~^M}P@`idq+3v&yntkKuO( z`0yv8dC+&T(nizD)(Vs!jf>HP=#9$iN0vS*9`ws*N<4@P#w_kT-_FoJrz6+;mTTTw zEL&7+JY7_^#>@hDlLJRKZRVkFK0lWsVFh82odC)vC1-2mjS)m?klK|d{W`K}q%UR~ zF=FVC^2$w(i^bk>s32Z8P>mWu+le8OH3kH5kILG5Na|zMt3X8S5j-7Mw;Moi7a#6K zhu4nlw>;e#KR+{x(JCzHqTaA7YYuAGga~B@+Wumvi889^EMjjv>af;YFH**^Jk-{B z2Z*G~>vt74&Z7&kQ&-Vft^&JRa}R(1o2z(R0e;y}{G4=|rkPEz(O=qArs2UlA~lQe z4nE7kRXwqW>Ez3P)<3D1uzm^Jl%%6grZ~= z8MH^SmV|pOYUA@dxGEM(POf0KT5-?0*h5(klcbxPn49ONiY&q!-K)ACCD9ts-e;}8 zq2A*_49|M(UbSvQOKe}$3eio#d;iqOnxP2de8zJ;qMVa=RnR^qzNjJZ7X<4L!=%nh z)^g_43C*IWKMU@InjKm9ux|R;e=j+|{U1H#GCIje%x%r@cs9CKI$^ka=jYH~@-aU9 z44#c~y==VqODlKIF}Oz0iXbPmKcBP%H_)f=0O_s=Q#*eOWGvaIme7M)*R>j)#Z#S( z-u}4p!T4R>yS)>=+1tPE#g_%-WpPilqkmfCys3N+uG;!ipRYf|oEXMq;W^av^jj!9 z^d9R%Hu&hiJR@^%6YuO9z(LGE+8KD-H1~@Cvco}GnhUUr`Is;zGB{zs2{^FMyWHhpCJk@oqe8$R6To&&*?Qp z{9VkgNmVwSn*Fn6Juj-E608$849-n^r$stXxx)X#uqTu- zA%&-1ltK-7zB?I6_n#}Coi6)_%<#NXXM=;U_=*T$dNLx@Q52$t|FPvsWLNOj0cLN- z&g=Av*1Kp2duzaETjHi@%YuWW(Ytekh0|EW`Y{slkMuM{?~x}tWon4u;gU= z8L@$U&^1RvaTL5AFKb~2IY?`=c*{I-6vx0l2c3?9KkL~U;EY#xrQ*bwcMAV)4<(WZ t^*e!Im8ANzM%pXO(dH;~`HaWux@fOdnkhO5@g!nDGnG5zFjtfE;$NqP=;QzZ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DatachBarcodeDlg.h b/virtuanessrc097-master/DatachBarcodeDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..816ae73decff948618186d0c85a37bb3d4d6e252 GIT binary patch literal 1628 zcmb`I!EVz)5QgV!q`reGmvSL1xD`~%wW}5>X(A}%SfzH$cEQvv%VI5f!zvoL#T~`RD&<$D7~3I?|C1xy5fsLP;c&BkouZg9 z>&mlwRpUILXUgDAZ-DP_&QP9P_6KsGoLw|UXgRjugt1qzH12X4$yCnGVJMH}6^_+! z!K{*daweo)b}*NroWWDcjM<1; zXj#YdaE-c6YN1}##pWeW{SJw)sK4&zkj%l1M(fBG(@A%JTRpx z?&hrCt*a1_t3cxzj)YiW(?VXu(qL5c%oHfQ?n?@OS#!@~D{@Sjg=ifTqmjz%J6!wd zDOW_l?^$0(GO#>tTo1%PQ31|!`Z7n|9F7deDOxAy&vSb0z`m!5K5hGIBO12I)Mt2J zRH}`;I@4;c^u$n?|EnlAPZc%OUArnrOrGSjMlo*m3rgWyuz1WmN2@HphxPl>-kje6 z*AZQ#+A2C&JNo+SVp!UJ?kl#=Yjdt^2QPNsckkP!vp~O%F&I6y{lCC%y7YRdw|4d) DY((%o literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DebugOut.cpp b/virtuanessrc097-master/DebugOut.cpp new file mode 100644 index 0000000000000000000000000000000000000000..65fab74092d1b973b5a12802979673ba31dfc321 GIT binary patch literal 2570 zcmcguTWb?R6h3`i!DnCB6v{>=*}k^;khI<)Hlb+=63ddNn;3{`Nn#4s_~476F9m<0 zzrcT>e&3wg?Bv!)N@UpE%sF$u^PS7=pWk`O%YC_rdtQ9mmsn2agS7E}j^|J=%sr9d zb5lCflcsdBat3){GLBx^$mir8W+}~UZ*JYg%qgtwPGknK)xg!k&OWYl*x;NG?Uz!J zL%a>-3SV8w4KNPyd=L9|IlI-Hc;-9^H=YEWjK{)}Z}p z?qs1Qo?)P6Y{hsFU~6BVNl}jF1>}ACgyG*PRfg=5-P;3iHG?&cgfgmeP(O+9x%JQW zGk~SV96iCx0qm48eArUnJ>vtl9^Pt~zNqIOye0w{SBkcZnDq^|HrQAm6JJVUG5i*O z4(s8M@GX4KOd%UvmSe*Pxn?HmEZ;_mYzMqDKT_+8N#oZ=ZZv@9|HO?5>F;gvo8~dm zBH~ww-E1^h*=>49jZGE4Gvi<5$y#Zk*5VcLF;8mHicoPCjK{JqoC`2pF;!T=YIc%K zx>j1a=H{7aBbPikExw!L8UaPqR1WKQS)4WEWS%Ihs3dlZ7COVwAkPU0u`p}aTf0f8 z@=OnHp)+kuXvWE;;zo!?1b;e+$`F;r@1z=aO*>&9tMrOXM1H_E*WVwDQ-Hv3uwx6?ua?E+Bpd8^vQ(_7QM02L=<4*nM;+hxtqB z@YJApJORRma$RsVEf;_h?H`Yj8Om4^1=m6oYtx!!oe}CIhODu`YG+NY>;i+Hq`nl# zzpi>=(sjRt8`s}MWu6uisjqRZ{@`%q`e!*^qm8>)@GPrZtE<=XmgPCk8{!_r!x+8~ zaCc9He>oGB@7aCT|7H7=lhsa~`Q7h&mZUw#{V&lh;J;8?w!npc(<^$i-cFMu3Y@-| TwHR`UTx8#Q`lU=S@4J5i86JEO literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DebugOut.h b/virtuanessrc097-master/DebugOut.h new file mode 100644 index 0000000000000000000000000000000000000000..9bf1db3471680d6589778029cdba92e2ac79e1ac GIT binary patch literal 1448 zcmcIk+e!mL3_Y(a_zxomX+>JlHx)r!QK4S&LLa4MJ#Zwz@dg1EsW6R|32SC-0SKs|jM!wQjq8?>Co_P;#+%hL& z;jo2AW+S=u`7cEoH`rD^zOzrM$v}O&ndOLnf+3pq(8L{)Q|i`aB#9v&9c+$Khj`{` zJl5}lu@ind6ji0Ro(M~al|Wg`vqps*naZcCb%}m;oKo!zobz{vQV>mWn&glYtx7as z-xIB?!;A8gDz|8vkn@J_L^G_56UY&A=2iN}j58pYFnVYseG=wo42t9>?2Wl&N8M4c zRqmGcabvs?EB9?vy`E}pO8eR@6TxbgBS=l}$+6D}F}cXv8RvUIU5}|y#2#p9PfV+2 zvyfL(uo9}!R3y{wEzmy3lb#HSHcQWl(OT@A9MNVg%6h|Qq@#V2PgseWz4CECTG$*G-2@E$TrayvxXeX_)w=eA;HmSz)T{%4kQ k51o;dsa8T=gHJiyvMwm#@b2KnuMzSc4JD!PyJZYv;Y7A literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DipSwitchDlg.cpp b/virtuanessrc097-master/DipSwitchDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f2eeb2ed7305dd59758c6025a60f794ee614d01a GIT binary patch literal 6318 zcmcgwOK)366h2EX692)ZqH;*n3}pdIOQpniQmb(sB~C&_g_T#6(8P{nr%hCZTG47KlAaY(Ojku>k%6OC-dK1uIx0;QQv>$;>#{57L4xzwSMA9^d)SnKSqAzs6)t zo|9+sIVL&z#{6QwHQ$@B&Bx{=^PBn9d}4kzUl=FB?{l&tn{rcjq=E08EK6Btm#`b32HsCzHRl9ZXuRkM71jWkoUfJLn73y7#zYH5!(XF z4d~ee-YsZb1p-7~BfMt5Yr;i z-@*5>MSK$){F-j~EMrYS-9>2K2Xd@|Hjv+zA{e8*@=<7I{*1c(()?*Yx3ySArA?>R zwEzth_*cUJNqkP*ddy1!+OqWzTLw5CRa>vDQ?Ds+>$(DstnD)JD&lhjR;$o|K@xm7 zaD}+Et({eP-n2|r?Zibr|IGYkem6fveiyL5f){%QyF}=BmUpo{y(?o~Rj$LAob`pj zb29kag0)>h)H5eK3g83#(&@cZDsiYgkm7SMuXJkk%;X zEkmoQ#(AtSL5dt8drI;;qO8jj7`zC-%lKZwyM{XzWavWbX9Dk%%!p`h3mUZk<`78} zJmA$l_%R1R=JBR3_8RsAVxXP(p4CpY`PST2V12qT?%isL2!(pQ{TO+&E`ekT7%##e zv8h>nhx%l^o8=ooe<+BJ5hdVr6NqTlkxw}wkdxQ&W(Ep21H_*Am4TMl$|U?Tz(}R9 z3?%~tl>K|dJ}tE*-uO#11wn~2YEg7qs_o;^M5s5!igQIvZl#ebr(9=h0GBrIvv01aF=n%B)>dH2a;j5D0Sx7I)`W(^nW9T6crR(;&~`sYOs~01Y{KVu6qnbbeoVpZ8Ot}Pvw^%iT`Ci6(`&38 z_0Lt`Wn76Xf;$bXQu#ryxhau4$d*}jgc-bYavrZxQge2Q2%M}zmp19Ev-XIM&Py(f ztblu1OB7mG%V}@A+n55n!X!>Bs2z-;qM5cqX#nkb(0jncx*p+{{tT$5DAHy&g{} zJ`=th#F_iADv0L~Z=FP|3?~EVcGArhx zJq?AE73ZY5F8OqXJ-qjBs1sAXl5rB-kYl{o*1$KA}IS>n#><#Y-!SWfplMRBI)DU=9>>--+# zdX4t3C!5}BDSKL1-W|RF;o72k*W3j69)f)hmiOR6OOsqYwMYApIwNg7yFOq0nMyKl-;Q MgwN#ID?8En2fs3!SpWb4 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DipSwitchDlg.h b/virtuanessrc097-master/DipSwitchDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..6d23e34323208fd9119d3412a95fc4b7cd587be3 GIT binary patch literal 1130 zcmbu8y-piZ5QR_cNW8-Wjnl+eqyvOx*$6DWwuM2I$QT1F*^6bblLF;sqV%DqOGLwa zP*Ly-z&Ceyt&Kw{h*o#+&&)k@&dl8Br-~|C(g*$(1^Vso-L1QGzuXV^-95T%_tQPN z8<%_7ysAiNigl_1b4ka1HPzKnM_nB;AF$u$q^TWj4Yk-eb;!v!!~9d66d?j@@EEawrJUC%cG`GS+7 zkGW2aF^W#uM_2;9Q#{jft?4atGT4v>5GyJ{HuEJ$izzk8J?TpL{~jOmh!y#%9E7oH5S3%xc=@ ztI~7ZzQ$Ghu}mCOYz(a%Lp*lamDGkugAozY@@Tv-!8h(j-wufTjBtT-j#$G|pCh)l zS3pQ@uOYmCy9NvE#X*+Cl*d~r`Rh$J+Do%)jL;u@Rn~Jgbj{c&3mK27a?j^G&Gxr~ VeH9MYefHAxu2=^3eJ|bEy#OVIrLh12 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DirectDraw.cpp b/virtuanessrc097-master/DirectDraw.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cfe9093c5bb7b37abdc4efcee5215371d2229d16 GIT binary patch literal 104224 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 OJLfH1y@qI)>-T@M#uGpQ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DirectInput.h b/virtuanessrc097-master/DirectInput.h new file mode 100644 index 0000000000000000000000000000000000000000..ee4d7ad61479aecab04e7bc76eab6a5c73d650c2 GIT binary patch literal 3792 zcmbW4&2Af26vxkYka&k7-4u$*Bu!id0m=DL>&8hV$4v=QWu=LeT8We3#Dxfzx8MbM z0UiPgv4jn**&?xG5B&c3&dr?}e}p1y?3uae{j76b(et50GGZgV5tcT2RX)15XU_{+OcU@!+B3yS}Q@77p{e)}IYJ9&QtM7B}F?P_9Rs&0E zuA7;1py)ezsIJZzRzDwEU0}6rzg6-eY_)=gR>^}_KP;^lJ@~kUuIyo(-D-eW9h&7a z%)u-%ilW5ajl?L{4Hr+0IApTwaoMqE+i^k6cl1|W?|^F)bY5=3#aG6^Muyr`*0=Dp zLu4Jt&P6+6m!d?I9C(REG^)70++4}hVkuKmqG)L}Q(jK&trH`7EbeTSC|c6)mZSG_ z_e+*)4tqH|NkmIEhq`RZ=dqmcnnmoP8@$%CW0JMJ|F$_v_OQ7~b>8DzfCJP4le#Q) zvKU4u!o%E-@8UYALk||)yT!&H)etR-cLP&-v92~!26R+% zXV0;Ixk8=%2&qk%HO(d~baBd=EKTiGT0(e^^+Wu$V0kgU zX0h&wpI0!vyo`OIp^=)!ncsu12tyHs82g~8exw8s# zsBv!kIt5Lp9f6`I(f?-8&K@w`NqN#x^!wmG zpk~&&zXrRXv=n=Y#7`@+9xl*0Cu@Gf*DP3`pnl8#%zk8k`e|f>l6Pfbbhdv$oIcW1 zB9TnMKUqg-=?;>r`l##UcmYC17A8bLV~zJ+v?CnKw@_4Poi|~&P&3naZ(213#`SgJ zIjWl3$WiL{IO#3JDB_fq+|>DPGK Oe3pNQoqY3ulm7w|!YNz; literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DirectSound.cpp b/virtuanessrc097-master/DirectSound.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cd01df0b7edb56702c489a233832b6c82861e5c0 GIT binary patch literal 27064 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 RRw{D--aoNeZ6M8m{tuiDm{R}% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/DirectSound.h b/virtuanessrc097-master/DirectSound.h new file mode 100644 index 0000000000000000000000000000000000000000..56324a6ea4b3e46a0c0253f61ae5aab6c4bcd8a1 GIT binary patch literal 5844 zcmbVQ&1+m$6hGS$+`9F(g_0Jvw{;;{6_Tc-fqa>yrlrU@Z6dsFPx^W@Z-|wDxa_@U{-(*^bX*%zndp>{Xch9~5JvbzX zoC*1wpIy@Z(7h|o~flt#5xCUlV0j&Xkcfxp*fbVL26uxfx4HT!LKF! zIw=RSPFL08XV2$%E3!iW=dp4Q$cb%OW`jRnUln4M-OXxRe#;ux(IH*rXd8XG3dvrc zYmI1_r@HcjUv+V(Ld6_VW(9p^SHc*$o#ur+zXVCs6{9FrJm|WG?A~^tx@+!=yY9y1w%2ygbz2AW{wA-o z&SZotzpK1n!b-A9OHRw{$eu+o==}}EaL4_TM^UsHVxpZ?L{)Z*(Zx12TWOSi_OYSt z7%-CBkwaJ4&;>F7WuE_bTcy?m3r>N@iLf^E)q%~h_mdT00XuOQ&#+T0Ly{ALu^jCi z3oanf%rz$ka(k@B zzb@zfXXw`mQ>$4ic68=Hw8I&aJ8};?tE~nr<%&%KL5t8pJQo!ZM#d(BQo`1cUg8=AJUvef^<21 zhQ;7FXPmQg4td80Q^$t@|^1my;Dcfje_rN@tmv5dyEo88IKq{YG2M zutTp}n7)V_PN_X_H?~=noB$rUqQB#xO+g3YFQef1Jp5)J4(~|C8ZFkKE65Ggc4S0t zDi>R140Vs@HF&;z)=r>GoxFNhE%QvHEJj$iH7v5?`n0cM{gKGqGUBTGl^9KRD)-TJ zpT<2Ha5Sht?wL_7*qUHNj~XPjVW$f=S@P=^q;9IPI)(9JO2B>7L;y z26j*2;89>QhCAF18beF;VD%E?9|nnn|{ZcR-t+Lp)^DFt2EI@%~n1*y{6>;^(gW z%iX|9;pV_u!R9BOu5E_mG-~tcvftVCzJXI#6J5XJeIo)Dh04IG+XL!hN0H4qb;X*~ zli(Mab-!|-dvABsK7l)%IzBwZ6z$BT%57NYE^#TEuJ5|v&_O@pbWpbQ=(ggWB#!TE z22h}W&dhDROCQxwb_nM! zo(I?;8FYpFl40C!cC0G*-21OSx&8F)Z6M-meztme?SZ!k_5X<4U&jg3^lJpWG5X*Q zl;J{I!0xB)_UANmpgh(Ov!TkunNLvlYi#W*$2~ zrfx|rgW99t`;&Y5Zo~MDT^vi8-uR|PZxwk*v;mY=omY9AkvhkQ8;O0u899$P%I4!9 KaN5J)DE|+sMBu6b literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Doc/Copying.txt b/virtuanessrc097-master/Doc/Copying.txt new file mode 100644 index 0000000000000000000000000000000000000000..47a5504c0a29f3b79476975ff03088425a3171b1 GIT binary patch literal 30828 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 VZtU&w!oQCY+`#3-e>nj={tvnPs^I_t literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Doc/ReadmeSrc.txt b/virtuanessrc097-master/Doc/ReadmeSrc.txt new file mode 100644 index 0000000000000000000000000000000000000000..b1c1ad59112553e83df42daf06d0f54691cc9e98 GIT binary patch literal 158 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/EmuThread.h b/virtuanessrc097-master/EmuThread.h new file mode 100644 index 0000000000000000000000000000000000000000..ad51812e6758d047eea544ed036010f303de470b GIT binary patch literal 7304 zcmbVRO>Y}T7@q5b_z&Ck5~_X-L0q6ka^j?oh#lAKBvgPxnrsuRjbrS%P*C9q@Dn&v zm8u|tgpep4iiA|!6I>|bP%4mmfcC}>RlxJiyVKcO?|PlcaVtMOE>3Ue&R(fcI6rBwYa@vGPI%-XAV|QP5@wASo5YM~N^Q95mO~C3dKD1&YK|HJ51Q4mgUv0y` zS3)}jTsrV}8(NL#x&l2fLeD0?>nYlN94BDQC1@Ha5iy$gw!xqWT^wBzUq+Vru^54E z*gi<{8us7>Z0MHK5bH8NYh%#R#~UU3(E9BX8sbEqVnnEql;n8>?{|Pazk+_>M2W1{ zv2Ry3kR5AS4UsqWX9w?yHM3?7$o7%9b*#1UUB>f!W|cUc1w|WlFPb-j$;uWe93P3@ z0C~Bh77-~`tTw>4hwpY0*_V^w)F~@7N=1Kqja7&qZ6WS^(3xmb=VIORc1)^g6aImE z-&D3NPe(!SK~g=h=wJ2U`nIW+fkA8lZHON$BT#VfoFptb%7+P)M?UIVHKg*Z3I>H*Oqg#_Wcu;@3zN4Mj zHuVRKlY=w*!^A?X8}~-|RMbg4twK|t1BYRqMdo*$B;Vpx`C7lJPwRh9f7D#jtGcSE z&z(0siJ~BBdCq~y0zMJ&r;bE!75uBPkeo$Br<;qOVP1lNF$RL{9OP6oI0*J~rY*vz zmN{1(PO|QHM(P#l*MO$Py9Ff1pYUg$Sk)gXVu>?ncRSV z6?F#sN8nNcN6X8nmQ`jxPufLLRw2{*JI^mu84ss9L8NalElSg^>{Wa`bh8Gw)HrmR(?rV_dz=)qIjheFkw5I`1<41yE zk=BIKya+Di*kbkZ5wm?$Xilzm;Maqvr4O__MD9wGEn>Z&t7VnZMNJ+Tv4GO7L|@02 zi469jJY7fW$m&5%_v>Z1e?LBUyPaQ(t(t~aJ!1{Kb!)j`JqILjf6 z-2hU~!mo4iDr<$M6G<&(Zc|Moisq0XtP*9?iY=;w`&rbAO?-xH5-pjAw3F~o(^L+Z z#iC1^Vj46R)J*E*Yn-Mc&a)=|i)r>=b8QbOJO$66o3AhafnMUyP@m^iSw@KGR?7-_Q$+j!t`dx`-HPBew%+C!IF$k<9lt>g^>piTq+e z$9}K_O#RjHNp~vT7%@Co$Zgj|@~+{)j(`;{L>*r-r^aDC^PG>=A;X#XBgZX3y>@!> zZqNlE*9p5-_FBB7#s%xV`Sn4;d#mG+wcYgyw0F2ij-gM!c5bKZ`ignbYW65~#Cr%d z?JZ+`-ctt8d<~1Z7rmcK*_8F)JWy+z6TX8;;QgQI@n$9Ub{A_sybtky6LBs6=G(qH zfSZFKulB}34~FV;lDjTiD9w6uuhLEoNpsnemX~LtJ?CUTAg5fBowU-YKZ?xgXWls; z&Qg&qSrowY%rn~|))CuIB4=5Q9?FuL0V5-exLZAfNsipX`IOI@dc>&l%#kc7?fJvk zu&Ae`w!Aflh>N{z+eOT8;8tn19VKO4%>`dpWO=f6#bPagJCxZkxcGHw`X1{VWZAi| zgPJoTJ40YUzlJa83h7E^eacRp)0{O^>FCdC++%nqh1jtTPU(F2xw)K}gM68{&4UkT z8LXwY28yNrUN^xA5tZ~N`<{8|n4Uq%yk*_Q*#g#=QIF#LhtYlW?zL9UO4bdUk{AZN6`1PvK?HP@hwJUVdHQ#eCxv%*$`~i zm##78`=*{?;_vkHf*5QeL+lJSU(3;ZDyU(c{db@EAss6g!(Z^9nk)J`D#b1RapIR@ z&-&eDzBXxmv;AiaxN*W8tJl;UIUcBs8}?mgHjbWgX5Y`*z^VVqeVd6SpFg-et~Zw#(-h6xYi&vUhn2xK0{ u$(fqIy~LPhafRJw0JMgu=$y-P3hsCw1U+X_>`3g?;Q(TNum20Ae*XhJzhiL# literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/EmulatorDlg.cpp b/virtuanessrc097-master/EmulatorDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f20382df76a1b0700efda3f19032640dcd4848e4 GIT binary patch literal 9682 zcmd5?&u<%55T2`%_#a#sB)3J)wjd6rAUTfhxJ?`r+m!M{QJSQ#i(^NzQ(6%J4D^7w zfYb{W2aqZu@fUDGAPyWraN>%9?|b8y_jbMO^`<`(tzvKNxAVT4`DWhCB>(-pAPe%m zJcri>$;;=#FTroYpTR%Dx50P8{ovE!ui&fT%i#CmVPIGJ@26#3cI2k?WPta)T$8#q z54TCLi?MTM5 zZ`OAws}ArCadd%WAe*uaL?hY5-Il?|C${A^BQYL9LEeIdeXKjcQw^YP;WtVlmO=uS zf-GUp4LsA8HN1{fR+oTjFJ(;=`;W0_A9!wfYm;zagT~w5x@n6Qpv^AO^^N2q^jgAw z*L#Mtm*BP9#8WM3U&3z{{Jx0Sn(=K>$_bLrcs%+wcocjC7JY44W2LScHjo8QcG0kA z6?>35b!h`b9s91pmNj`va(Ex$lL0I-#&mUT#5!DZ$0(=FIy z2$}sui5d$Jf}exGgC9Z~l=1v3F7ld;_U#gfCcK`y*74k$Tm^!>(Tw-;n#4a_Hha?t z)Iw#HVUvMjxzizRm3Uc8kWz)b4rH|trIF1yA(31ePhks7+JFRFq8RZ-*vHXTWE#EQ zhIfA&}|udm0<_V>hhtcjAcd{bB0E8(;&|S zqh4j;8klo~8HjuNndv-suEXwqeA6|)UxQDaemTTlI)>`RCrxAd>p-&}LXnQ43Y26I zIj|}Bj5V^NV06*z)rr5zm8;OsS|lAs2^hveQUww{)mriayqeu2ZTO5Cu#Jn}A;SzAJ;shTXc0#vk41y{pxBpt~L zII#&&R81WBfr_W<4z7V`m-)TJGqQsyCrc~xHh#(`jx1-xh`MGU<|>{O%pN>B4)9Kn zR*>cCAx2Sl#;MJpBHsBvnvQ4YbKei-ObL4v!5w&pRRQ}6pD$_^tqmWd zBf5_cNk3z?(85~gB0aC`kVMP#93A1>M84WFC*>|qNqgSYO4QXqIiuNN1Cm$FDtmsl z5f`kNscRd|WG%`noznPwXL4_=6h=2!6y*Zeyea|e1mC*HiM|PJttsS1)OLP_lg8)) z^bVg(RTCKt&^S0Tx@vr|4yeeRM(2y>_2eKV&$R2U%R3Vm1qS1V6Jtg4f^2UAYcfVZ zR+S4cH1#uPZszlx$v6A*E+XO;d4EzlYnQ<3!yd9TYyL5+R93h;Z(xiSutM||_OjT3_X5WD9^yb@^{cN-=eG?VdL_JpiDv>R3Kh2z8ajXfjd_MzWy z;tXN0l84vw@;ZK)SzFjayRQvogeV@auyye5$x{I&s*KBXN?|;+%VB)8@73qe$+-za z-q9a+KH8dooJ~Z&YybMlaIiOp<$%@Ih@Il!+-P#{l^N4H2`hQ(}swn zdHnX|({TS9Wo%Ad|9Tu6SvInt=e^EZqPnC~*jktL(OkngTdkiS*%`k60i069RwV_mCkAhTS@O z&}_qO<=dx)`iE7O#-;zwbnmZn!c)KanS{S1dkr_~u~m?+II5k)v%zO!;qZ>}w$=QX z$N4lwu2+j5PX)(QxQ(o8E4a99J$>3@sV9=rG0kE8FBQyPcAzhz?cMbJK`e zm(QBuWwF%kX`(|FXR9oeJY{$mWbsqQ*@&iXl|0RJh)$tHm@hLXO&1-isQ0qW^&Fyk z@$h7hpD{W_^LZ|5Vx{>=r&ec?olbIPH~X|6pfU{iKTp0^o$l!4CJb7q^6v+JKQ~>i zs^@6&%4Cx3{#MKyEp7&5|9by;RiOX(`)5%N`ujzz!e~TAvyOT(sl!t{XxBc!75)Ed oaFKM>nmYXd3(vxy;T^MD^gKER|35DH_jYSXzwe&a1v^{)50{jsMF0Q* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/EmulatorDlg.h b/virtuanessrc097-master/EmulatorDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..5963471b6d072b3c7ebc66882f26809fa8173c5b GIT binary patch literal 1374 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 kTQh!PWzjiHDia>kb+yXLh<{9 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/FolderDlg.cpp b/virtuanessrc097-master/FolderDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f58b913f267bb4c24e76799e43c2aab58b332503 GIT binary patch literal 19532 zcmeI3O>Y}T7{}*`k@ya7D%3=x=|X`+fJ&+JQmb(r#ZFTxt)ezb(+I~2iBsC5@?j7c zP9SjsaY5q52jGgtfdfLExFX8`Kaa;VyF2U5+G`WU%8FlSpSPL$%`?wzUjBVWT~V*8 zSMhvBRnaZbu#B-HDo2kJUA8m#^)K>Z)Vi zey`W+6xYy>J=oDv57YrHI#EY>x2zseGH4+ zu-1A-xeMsAZ%3(b?96{442g#s)E-JzUd$WUHrC>h_vAWd)L+Yb@X%eXY^xCUk%qb z@ZjjyXvzOXHY(1c|4JN;j9h8X~d;S&Yn@jua!rcN^%R#lD6$MEd~09QWoU=XZGYTrC_+ zcOcoXrwK2fz?)(;wVOH86U>=nqPj7#|27KjzZxRRRU<2wHNyJ}v*S=ntgYzpxwanT*9ttGL%b~4uS4=v^a!u#>P`9NC|66iU53;yerLw8 zhwC~z)+97Ze-rT+``7TUiTSY(rjfwYn&zY({o)F@gkQJ$=724PE*MKap+54F3B&B2;wvV3Rs(r*RJHGCUCvj=O=L2K_yU-c$ z`wBSHLhNP6)Zo8aw_NfXzOVPlPThxy95Xhq|IChP^DJ}-?@i`mJqXie86Tp{Fn@S$ zmh)ly4EKlEm}GsJ-Z=Y*)$Z~>M6c!luo^A%L-d(7U|4M~_e1pAbzoSHhW#PhWGzT* z5^j)9P0c3ZLme}Uv$lojr+CkKc>sDCvXC3hFMacL5#KWxW}B>;dZL~Wn5#utW9M?H zJ%i?RF&5eR9&Xd1IbV!bNhXBbb~YD^u+Zg3sBMGUQG`{NEul6I;!6=0x%>&WX)uF| zu*xth)S@g-<;g(|<;1&f^`Yh$vz#Wlv<5D<7rO9;#=W!Mu7Jd7xM{ zlhU}Uujr`Ds8`+ZNsdde^lD-aWLq^vU@!Xh`kK{E#ygSCZQ?ffE&aZX&BrTFLtzn0;a7Ij7 zr?N4WD~gUGb);kFkBV>UXa8tY(=&85dC7S+nzZy-A5C6- zOj=oXRbRwzXb1ZYdoIKMgs*;S&cuh`t+*%RuW|z%wipx6qyPFtJJByD;wfq&50tbOU+n8usucH_rzS zP)pnN)Rwl;CCw${5fmcbslcWPDoCyw&1si>IMMecW^&o!KQ z%1QrjztYG)OrHpo;5+(07`G+Qb*r&B+u0^{Fjm`m57{omNTuy8 zT5t8P<5;#b{k16L*PMDCSILMlcDb6Y93gQ$)-BMutE+vRs8qhA-bJ;~%px})D~JT^ zpH1zT+zZE;@wBN4yIBcM-|ZkH!DtZc_7RC)NMmg^{=4h5*lH@UwSGU@UgWtLtCZWY z$n}?2CD)X=o~$S_Qf`HmV`UttZ^^M>dx-Vg{1q$uW9oaZETP*lj5FDqdymSvDd*F9 zemLjft;@I)*0L7{RSkTz&mFfV>3E;0uj*cs?!Q2~>>1*Ya+gnGtg~{ZUN{cgncd`M zdFRu5o`~nK`<2Wqvpczy+m}`Szp^{`3@y0>8kKr>_KlBw@v7Hk>6fkhJTY+4c|u9T zl7uA*<-dK>=lMnRFgX*)MMYb+pCk|cTF(y&vrZ^W29^vg87K@KG)G3u23^VH;+{EO zoFw&pI?oUD{C7H(#4Cwc5>JSiJwrz0os~N-+S$7wCdoU$*7HNWtb3+P=9SDVnJ3H} tG)G3Go-27=+>^VsCds_C#`D8F-+h-Q>q^#@tP|E{&5zMIXQbw1+&>B(bjbh! literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/FolderDlg.h b/virtuanessrc097-master/FolderDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..d16e783178a49d6e42145dba0a9c5890b2fe4931 GIT binary patch literal 2042 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 SNiMwy{9h-R>H49p?(jc$z=lTv literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/GameOptionDlg.h b/virtuanessrc097-master/GameOptionDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..514e62014eec79f57f708ef38721fd8f093cc13b GIT binary patch literal 1332 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 Q?qYp8>J+tjYscfy0Qg5*lK=n! literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/GraphicsDlg.h b/virtuanessrc097-master/GraphicsDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..7c9926135b5fb37cdbf98b0844f679ab90164d4b GIT binary patch literal 1694 zcmb`I%We}v5Jm5Hkobqe*@O*l!7d;q$ByC%zl5<^TE?->2*2J^^WP zZIoY;VmqnxK9 z8p9rWmS}2kWx;L^R>H{={l}i$4qWC`{er!n#Q281hVjnl&7bdhOO*CXQ%6*@@U`1p zjA62X(c}_Nqn zpAzct`Hr)>FctwR_|@^)2X~WwCFMT@-&D%`wm`HQtLM})Wo^zj z(W+qgy>8=F?Y!6DaLOQ6&RI3}B*!A0{d;s7ZERu&8yv2RQXzf_(i)W24cJ(Bjlo*^ zx4rAtu?ZjiH_VPlE0e`0>eUT!8+2e>ucJo) resQC;$!imSaZlM4CfLHPgb93~JKw_FZY}#~$Y$jZsMq;tFt$GdN#^-- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/JoyAxisDlg.cpp b/virtuanessrc097-master/JoyAxisDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fd41cc33a2330807e79f6d51e22f7cb4ab9f5cdd GIT binary patch literal 7796 zcmc&(O>bLO5S^`&_zzYpP)ca~($X%{07~pMF^QANc4$h7th7yxi{nJL1Lf-vu;2%< z1oj}YfgKVOzk)qt!HNwl;G8?}`rd2b7dwvI%Bth{-n}z(XU?3NdHwI-8*)QlmY48- zL-O)d@<;Mr@^kWA@@?{K@_q8pSJ%G$dhZw9`zHA-`2lzS#8bQ8|9eFq%b^@eQ`-2O zm-|wZO}QmEr7jz?B1^cco9`n2meV_waK-F-BrQ2JGV-!0ADerR?FX9$BSo&Qg#yb24Jc`lbp?TKGp47LXS_Wdqma_$#!jjtDbm zlpeEh7f*L#f7R$_jC|`W@?P*6Qfh}s&Ep!~Oulbj$%ygQ31ZbLHhQHCt?FPV}U z)2i`>kxmUCVOJAgJkQtUCFNYAw}+2bC%rm@PZWQQ87mggXz^_Qy^Lp@IQ1INNqmh$ zYz|(p4=`=0eJ|CtFRwz{JZki!BsifvWe(XmTI+*;49LNgXq}%xtDk+7X}vjt)(X&O z5jW{+Z%w54@?L&pBE6UQ^X)*d%N(usW#sqj$n1$#b!LDs!)0ukJM4pVSh)f;??4yX zq-OGG2ALG=g~(7@y~O*-ni(%glw}<1wLazLO{_^$wora#2XPFBIYsY9+ua`9iG}$| zCMtkk+NK9*hsHX`Uc6&C`}%HWS}}-;o?$$ea#q`u zT253cN6^zT=TipHL%Vuou!6cws)KDSuxl0H+VS1R9`0K-ejMEC*WRqXb25khWHZa4 z8UN0+C$bdqEgeoX#Oe#eKCq)v^Ovvn}CypHvR z?A3@2)_8V|td#6}v_nmT6R7>#J64eSU7){;ICo^vbQinOK(45vmd+tQcVxexr`hOb zE?Z2JcQ_pm&qB-&TkAPxHci*Ji7w|j-JgX^PQ|B?$GBxj6&bX0vUIB9RU?=|S z;tuaCGS9O}Ic^i^CI{_d$3EEP5p1Q6%+|2#Kd+dQAsEvNVnKvfOxMR*jy+hINqWk` z&dkNu&mYC^^E!n^C3{r<)){OVlZs0s#Lbh$yRsu|jxxA=8sj0&*4y9|dTG*5dDm5b+pp~5r0%Zm2ll}* z>Y4q3mt&RXA~-F8y^A9|#rUl4dPS8oeay!7#_?-=upHj#@m&=sOTS-K)VgP%r(IBY zta;4!Rb+*?kqvIPTkv|)N#(mqB$Ur7ZW{94#1YEpyfzK_{tOpt;AA!(4Ou?o3^pAN zSzh9_Z zm^Zd|PSV#8GIe$b%J+oqK1bDgeGjdE2>q;A_I=N=$8FVey|>oc@tBWqjmP!mH8vJS+vLvS5NtjD5Ww?ca~8yn3io^>UiBi&oi zm@MwL@AKmsG+uQ5_xaC0%D%SjXulY5`v2QO{=SS?!~fTK_I?fZWqVfhsB5}-i>i=W ShciJZg7Nd=vhRBwOZ^X-1Zdj; literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/JoyAxisDlg.h b/virtuanessrc097-master/JoyAxisDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..6548adc53832b05c8195ea3de070a012644e6ed2 GIT binary patch literal 1638 zcmbW1%Zd|06o&t81mB^}Y@CIrRd6wi5R!3>=7x!=3=(1{$pmvF>5Pi_0xo<2m+D@Z zx)TInMO?UdrGBTXn{FPJupzU&FWI$M8$|Cj1<} z3xB*k_u|$5C+1#<-^2IJd}B3S?S4b$Msh;wtE-YPzqy?y01PiYjZ5`I4%v zm34=iU2co@7=HHvobG>Otm6c_>liQTB0Oan^YFLa)3__~OyXj!j)qz|CxNc&G0x1_ zgwb5*b*O8xTAN>uoh#DJ#rNZ=1$!*6PgcijYlO48ri?m_0>%;8R~+Ks6=czG{KlL; zhB-?Zc+N(G<4fnUhgFk%^w-{RxqCazAv+c2F|K^FzJ|>US1nU4@MV^+03HYYTWBS-Sh_|^b zYueIL31Sl@tFPIKaO@PUAFJf5iT~?#s#jLv3@o>gsDeYZS@m{Pm<99{@wcw+cudRt z(4j^fqgo9n$eufKT+^+Mbgk|#IB(X6z6O0h{_SoRrO5ssNDEM+6RJu6w%(bq!VG8E zO4aNzuJ~ow*!uE}tz!LuBSXj3sFNaDT4E$UzFPnLx}eK?5bv~38qmFMly~DUdYM~AI_j+^MAWJ{S9m7@xlNA literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/LanguageDlg.cpp b/virtuanessrc097-master/LanguageDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..57e626d720781324a1e1c93a5a1895f51468f663 GIT binary patch literal 3658 zcmc&%Piqr#5S{A^eup)^L=^i&Z?y{TCdSYt4f$g)LTQ^e2GXQ72^Pff;3x1PUOXv! zQM?Eq)DPfQ@L0r?S5e=aU$*<-Mx~X|&F*IA&CHuOv)i9P=4D>a${8Hz#g#+z%{({X z%}evfJT{NaSM$s~HHYSv@omE2bJCG**^!8RBdtm*kFI*UZvvM>3XuweL=?Ch%b%UF0#44cSFTBiX~* zmgYu}j$Bp5^bB%x3kdtLo4~7vY@4_u3UkS2WDu^ z%s%qj4B2MoT~{8vT7Qshmh~F=>4Z>|{N~WT4ds$dbWvXc5xOBCVi#aln)bB`u9k3B z#Pu?cB~?ORybPrCA1h6)~u@vb2yx8F4FMz9bjL!S?`n z24G^0-+IWt4?R&6;fOEHC+PfxYTB>DgKrfdYL;pZS7Cj9OPg8Lo|%>5w<;^h!__=^ z?#G?Q*VEV@Dy|%1c-jXlxc^631)$sjUK?1gBQz>?2Z$4(jT3m$iq?TZCh}9}{0gES ziCeLQ>`e>3$m;!qEC6>1u7}VeJ4E(wVtX*23*B3Vatb(qgHW#bR5y;^=bY~2R|j}R z47$Ax&Qu*W46&nlHxIlzkQ(@_A|vjA9`+AaWH;A+MGxkr ziu_8)aGf<1WW{#Xq6CqB)mpasWN=_v#7wjijeN9})7)=+oE7&rdX@{-Wck_!BZEj! z$h9li@aIMDr+1Ln>|(It9cX#V8ni+sF#ucIf1IAO|gQ z#i``E-Ij3%()C2HOsE>0FSksvO~`B;xakw;p_hdjCXU-bm@w;g5);Na@riO&8Pq$U zhW-?tY*+Z~Pj-7)t6tF&$Tzc*!arjqYR{?j$SKZ73q0{RUgwg3PC literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/LanguageDlg.h b/virtuanessrc097-master/LanguageDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..21805b61919cf108965235d8235c0504bb664ea5 GIT binary patch literal 1178 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/LauncherDlg.h b/virtuanessrc097-master/LauncherDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..9643a897dcd6e0623cdc6b3f750af41103dd2096 GIT binary patch literal 8226 zcmeHMOK%%h6u#R*;y(-#tE_Gm{y|acBghikz|Lo_pSJ|MlmZTXV0w*YJPMh3-Z4Tl8b} zbM!~_L-bAbb@XfWUG#1ABKkg37(Q>ifje@EJ9K?K1GkUAs%yB4>$(=cZMt>0>uPwj zfs-x&u7R@}-q$>|V3GR+VCt`o9T+s8AgDew~8 zF)Wj~19t*EV|RvcJ$ws2)kF8e0`6`>7nFrk+?vBt-UHkoL+f?uiaKiG*>SOldG7z8 zK_`y^IRLeL{!QR1DvyEp0pUt`$e)wb2`K9+Js}3o6TCmeUmx=3&(84f7*?X>Ujib3 z-UGf-!Fdgmw!PN{;CF=20eBzI?_WGu%vSG#*Y^=DReX8~jTE0uaB~8BDaTp7J>Z-#A%51_FC(2ONo;}rI|GlwD1!7Llbz`_XV z8}BDo>ND^;M!b0+9FQOKKf?Q(+jF1JXj1>D-afP_t);OrdH5Z`#o(pvyovK2{4qP1!R+8{qx6)yz5H$k)@eY7U3?bf zUkt-MQHLhVaMa)nWoI$;AA^haQV8mpbt(p*pOivTS1rKR@vH*23+P39>i~{aYk0;B zs8hdNz*x@T2F_ZZn#yQnQgUqG3mGe-{fD04ZTM0Heo7C2gl8YMtm>nRIhm2cxM{!_ zDxgH~3gPDxHO%PmLNANX?_P4=0j&{er?Dq-mB!yLco^d|xxlB5r8F)B;v*%}U337;8deT1_@&;F zBX(W~sGY2K(hCWMcFdHZgTD$g@w)F=nYT&Z!ZiW0fjAG4&k{(KK&KPPH304*Bsli^ z5S#*Qqg`cZC1jtT#g?y*VFqe>JXOyL_l{#(c-v>YGExn^N^VM!`LLzPmbRLtOJ@HjAlf^}eu_Su{@#)EbXT!&yx!&^i!BSS9bSyM;g&Mdqn-5Xh3YX8MaMkb#ktSXiGs@_pQZTZ+$=`25?@9}htcOU+h-J3mt zmr|d3jDpMZ$tjClu_Ep`Uvna3S4V7i=c4!a@Sc(PF`mq`ocQgwA?=i8(_p8^{6>en zoO~6#>Aj9xgju?Y4<{Ds8mv`<+MLs89(!T$+(koZ*ZWHcu8T}m4nNV>H>>`LCB$6t0Un8IiCN*3oPvK4VH zi&Nn(PTBJ6gtT1T+n$qsOM-_4lzB zB2)X3d`Hyuoe+Ot(0=G*PuRg3H@amwVt>xgkF#eP6mtcCjp|@>;_S?QTN&&lKy`7> u9_$<+nNtM%Ri&1R_o^EbnSfM#i#oj9-ZtDv@Rxb%ecnLrTICmd()$}XqK7{K literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/MMTimer.cpp b/virtuanessrc097-master/MMTimer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..25f213499fabfaa0dc51a6510bef3e01ae67760e GIT binary patch literal 2228 zcmb7FyKWOv5S@}m;vbBWqFpQ49g2MEn6l zLKGBK(71#SQADDFo|+Z`=ic3$efWu1-shb==bSk+{`)6IDY`)CaZXW;$~2-~8d8t; z$fORgZM;>_4(W`oA5oVV5p6iqW)P8dRfO zKvjpXlUx+89aN`?>X>u@%}rU8LvKe8;E8G>;-l|$GNd9$@~n9-NrV4@HXG&Y3;tfc zdVHIoL;Jg2>c~ z;MK)$Hr>RXgS&lrPVAhfAbINzqkAv*D-h5=B#z{^4#&Nt&hS=2v#*&Cx;F_HkRzJJ@{7i zlR2fDf~gLNtpimFs9NAzLGKjgQ=Jmvwjw#ra)Zz)taBdGS#T^tr48&Qa>OSbk-@hC zFvZ|f<<-8dK@@ci*!RKAM%6@(lGt$((_ARRpgV|;OQdce`IQQH%Jk~^HH!LLsQzSv zTh#5!t@FGQ)-dSN0x_%q68`AMRj=W|;;6-v;57@2hQx%%pc`Gs>?-jwm#EaT>I zjhAz>$|OANW>cLj=G+i2bD*|{>Eg~kg~(S)lVALmI;OKfO%3?LpDwOm>Yqp`QH?hLboK>x` zHag~rLTw;>8rj5=#4my8j_kcH;5NZn2bwfpmY598{pfem6VqplQcF42t<-!h!CZ+D IGHXKnf2)jRwEzGB literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/MMTimer.h b/virtuanessrc097-master/MMTimer.h new file mode 100644 index 0000000000000000000000000000000000000000..b6b22a5fde75a85725cc6902139e69bd6d09b8da GIT binary patch literal 1088 zcmb7DO-lk%6g{iJp#NaHQHXrit|F++k~Gl_mts2VfM3mMVNtY=b}jn>ZQAq?`V~Rz zTD5K$^l|Qc4oXge4D&wjyZ794&wcOvD~1?mFwHTBAkyfefi7$`VWGmgM60)VxOVB$ z;n#*kyB8^QnBG;i7-ew|pvZ5Nh-u`J1oq{SzE@vBZy*UaCR|htnm-Klr=sBTm=7wLUut=hHPRkliSY^f*prXG}^ zuD`SHFjI~F_xj|YrJjFjbSyu-QQb@>b*hrk>K^fq7>)Y_{PU5D!um|!x4cx7ca};_ I@?wS250@dd8~^|S literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Macro.h b/virtuanessrc097-master/Macro.h new file mode 100644 index 0000000000000000000000000000000000000000..2145b808ff0373a7cf8bb38ee8aa170bb166345f GIT binary patch literal 1344 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/MemoryView.h b/virtuanessrc097-master/MemoryView.h new file mode 100644 index 0000000000000000000000000000000000000000..9cc093f654cfc2d0370a8ac9275c9a3bbf15a373 GIT binary patch literal 2158 zcmb`I%Wl(95Qb-KB;LWan<61%!LA^rkU(3Jo0?MSstT!_L`s|}msSPAE3xJ|cmj}E zz%wA=`_GAMrzKKJkY)S$c+Nlb&-M4Of)(tx-QroW(7r@pqaV@d=v(wN`WStWK1Jz2 zy*I6Ar#k>PM<|s(S3oRdwiXP zz0Ey>$s1&Q=nIkbSkm;)VdejCyPaSj?-F>4vu_MW8#{$xAYNi1p4qPOmf5jocjx>9 z`>@2;OvWSmjH}xjy2f0+c{EO04`I5J&4ylVx$^WSDdcF=>PR-G=ZPT%F;=WsW%M{`MY PKb;wO;Q#M)U)=uy0)#bh literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/MovieDlg.cpp b/virtuanessrc097-master/MovieDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..167bcb48ebe375f4bde0177cc7363dae547cec51 GIT binary patch literal 4846 zcmcInOK%cU6h2Eaaqki_F>PYnYwN1Mf&)b?IF(YXQG>O#*jS;V)JKeoYgZ=z1LIzo zy7MRaFVux`;nvspoy&EGGD8`PnJ_cVJ@=gNJnnby{quWTrsaqn#(i4S^2z)(@6BiP z!+bPv%xm+_yfbgjSM$L*neg+t)MZ^ZWK)`Wre#Hnaz$okMru-$ykzmOruQ74oEqMsc>%g!D`vFdB%^?ScZrqpPOBVm~_ZhCQYX+IQ zK*NM)x(rRsc2TOZRD|{t{4dB!N#WVVmnM*PFt&+kZUHGXW3`9Td5|vSVy&=B!sw!~ z^vV-U5%YXmfaSDW=DV}h>qqolPi=efvGh-e2h2^aoUJ}xy;^FRN8}S--<-wXnC+Ef z1Q@+4qSc>+IhljTmgc6e(W9T2u)b(1jcT;jv4}BNXcKXE9zWImrSv;1xsA~j^igAw ziHp$wSnPbR73yakSeukBKx+r%T%QfhYpQ>YFf+9PpDp@|R)#OjQo;N@q?irn(UW;- z;i~tsu8J6&M0DwQs(VFwK?@Dcvh}O`JB&e9GOs{Mvvot61w~*>m`L(C$X2kUz%*HWDdds-jjr)Jz`t1;xe8c$yLBqb8>i z&l*rKL52~I(>VopTSlbUwH{XG3EtXrQ;gh}3$RncXdeE}BQqt{7UX0&Br^v@a%yZy zW)FyDW^71K9}vmx*pS#Yp4UvXntWtDw{OK%P$jIH4y4zyhLhF=t@7vWkrRrjt}JSs zdka?Vv4J&9yJW{Ttd2H%X;K92XFjs92zyz%v9HG^*lB@3$(mdxN$rto$er|ZSes<< zI_8iGw@0*Fg++F&WR|P2$vsw_ZOdYef6#>-S48tQ`(SP$U$e6Z{A}e%6^jbaeGoEWXB{(!fZTVBxJ`VNWyG9UL<74 zBuK(+JUS9GQZFa6mq*u!-PeZubuxZf>!@b@ebJZMuG4tyC(y!OfU)bPyd}x2Cbtg zFSrx7Y~onkadmJev1hP6cI~!byE8HS8Tb0`G{k)kdxJa0j@m23C)oenGsBkl_D-H| aqfaU}UU8=!7eDsp;bRs)$pfbEb>D8;@eaHI zTNb_=&L?uPAxuJ^a2XbwB*OsS@IVx$XD z2{rF~SL?VKlkW-NDd-4PP_)zEykc>G-A78C&P8~bpfPyGQ}R7Hz(bu~ zb8(8RzE;3}MsJsRM211R&E5pIA=QbrTBy(1v(MP;vX{Uz?8+QKoYz=jrxg@Jxk^Oy+{13KXTK{YGr&pMQ5*4yP^ksVX(XgI|nY4PRe0O}c aL#@9T`mqesrqllVd?uD){I|c}+&u$+;HhN* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/MovieInfoDlg.cpp b/virtuanessrc097-master/MovieInfoDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4b18542a835aed72d1e3a8d54f43d595e1f6ca7f GIT binary patch literal 3998 zcmcgvO-~b16usM;_#c`vnwE$>6pcY8fzs9nN=YdniJA&bDI}$B=zv7RA8>2@1ID$w zb?3%kVB8wECc1NJ)N|gOVcwLfrLmf(Gt-%S&%Ni|`|iB{`Z*?Ja#1eeI3`IsQ9sm2 zd_O!MUwf}!sh8@TdaK^3FY28NtnBk8aiu0(vLj8Lld>uWS&$oYU8*uKS((PKsy@!* zT=ee{;ga^*l!okUjHKL^C;FZ%EnIcvnrzFI&MnTigQqokH)LJf@at#o$(}~9`E}NQ3M?B4fk9hrsA27KyL z!qMwvJ&l~&eQXvH-$Tp>^4YL#d*!_f#;#>|R$m9TYRLicYN%)v6>cH#267I$5q%a_ z&ij>J0{?0J%HsD7j(Ob+DarK2N^6Y*jFRpZ_DG17(mhoKBKxW!6+|o`$~?5o%T-C> z+{B$GGWGCm2TC-ME30bI?JP5}F5<(kWIx(j#^n;VXD$W!m1GW)lR7f5gGf;x@xB=y zI|GjMrx+RJ+|*syID-{Msltz$r+jWf#HeQ7R#brMRiIYyT1?6$kXyP|u2zwJ?_)(X zViMhDx`w^RE^k8bfccTGV?y8OYS_cm1n`I$R%8a~hhqG>-iS{<*x$6x1J%QGPJ}xA znwlq-X2s^f-LNR@4k^j9l;NL+6{}+AO9^YT;9KTUp)^z`|AhaEW5Eb@bc5;dMP%PX zHF!6LDlH;*8Q&tXxW;y{zRBB6hGUH$_E-_UoA0Z0ub!nMrltlbj2%^)vpNCGEIN1@ z@u)>b>*@5VaIeS@p|)f3GMZ&jf3i=2^HW5qp=xb;fa!iyZpkBSI+|*8YPX>uYv*BR zkdN(2O&z%`O2+m439f>(V^u4KSXI0S%80s&s@8zZiQNMB6(Af+4o8JbOyP5TAWx-z zjpxLGp7c#yN*U%$x_3Qw4GfdXFlwV>7r{#8nPw_B6j-?`1q&(Z84Q zlv9x&wvJ){nL2UxoL~D1Swj_wX%voX8)6TK*d^ztp&C|Mm z-K+xZZQq(++}WkDVwH?o$6$sT<5nJ$RxI_&yaP?tff|Jr?~z8|cr&nrQn@Axy5>ymZl?Blz36H{*wcPf~F zW}iyUsG6CBIrMe-A+Mwyoxb-t9fm!hqFfyr^*{DIBq7JhgM0K2j@=oZcV2Nld#Ajk ztNBm*gdH}VIo3U)qYA`NXDYxhHl55$hP$H*s=JI?VR}8ZGw*-y(`L`LkKhiJZy4L} w-|QP0DSn^84$I=b>>`VBzt`)%7wnn;mbtxe{yz%X5r?6K{cj+gMqw}f1~8*Rp#T5? literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/MovieInfoDlg.h b/virtuanessrc097-master/MovieInfoDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..4bdf656130b865df288b7abef4759fe6ef4ef063 GIT binary patch literal 1258 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/APU.h b/virtuanessrc097-master/NES/APU.h new file mode 100644 index 0000000000000000000000000000000000000000..938d8e60b0aa9e7c579c2976631b27791d9372dd GIT binary patch literal 5888 zcmd5=Yfl?T6un=kQvZVsQk6t)<# zcV}nz)!LLIv?6wP?(^K|_|xAH-LcASdWKtk@5NV?0N^hhcd?#%Q&!ML+W@QA#Qcqz`q-KYBsOR;&}6TjU6yzD=Ho_EZ1O+I80|l6b9K`^WGjh95@ycr@qx@~d>DAv?(bCaR%n z&y+{0hloqOBu^RNq1Es`;@5|k7W8(k_KwxHo4j#Wj!}anSy)SJ@{_!S<+S@8-)8ci zoXRh@lIc;N_6#wbgThmlOI-uirA*+JdPw@U3aM*|e*~MRu)xz*$qg~>!LtMS`T|~i z&Z6CGX(avteM6qEM7_Br^{(tf_LC*4+lWnfN!kvow7#^}ZP?M0&}w4Inpsbx;qq-C z8QHRbnl~MJDLvUnCO(F~XV9oo$YyCZ*AKAs8M2UEPA5CQR{9LJJ+V=qBhoHENaraG zqRDyjJe3iiY3#}I!Jbc$#eYHi5E6d0Z%h*Dd(fql9$2lBojGIMZSE)1jl2ct6z>+u zzY)Ctm~uNB>LT4aCUrx+o^3%rY=yJl;@htDx+wym5R@L^Z&106?sl$^iD z$sYgiPBzsD($>H%nHR->meDMki08^ia3 z_4W{`9H4e;_RRotJ#wK1hdANXQ;dpS-+=F*q7dq5{H|jI`TnaNd91qVtL(}lQel4T zX%pL41F;YD;~1Q*CSvU|%gf&bZs(vQ)y(qmK$b^pgpA)pWKZzKpe2q?c%kN0(!^5Q7ed^EBXe}W2a<1#;|aNDOGK8*3L%K zAJw+d9&bZduXcJ<(MPn)RwGq~6W^DiRE`mQC?gOeR71`zk59Fo|2IAnrc;a@ce%!j z&sOXNZ`^DNJLC=!Vpm<3*UfI7Y257G%yqNe?Y`XVr^qbMzA&#`UC)tW%zGDmllBi| zEn-*qXD-7{IxEZ0ShJiVQ;WwS<-dXjeq(83!uRmUNI$SR70*<<*21cu8R#FN2I;@I z()n%B8>fZSq6Oa5qrmp;j`lj0pY^cJv(O{og*0dVqz-3=yEC#6YOE;NcX{Rwqm-?f z;x5A}>h>7zA*<*sBEv4H-Pz}KeuAlAoV}~)x(VM_)pa&_wJd)GDG?<9R_ z<317Dste!pmy?qe1<%JD{RH&fUh`icR3A6q^MKcegf}8)uO5q(GtfX#*K2z{zEeyASrUQR*F{*WnF+;bEQ_`%3`tf6M$r^%?d{1bP4f literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_FDS.cpp b/virtuanessrc097-master/NES/ApuEX/APU_FDS.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5481c2a0307717429e4898349637e21d5723f88b GIT binary patch literal 19468 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_FME7.cpp b/virtuanessrc097-master/NES/ApuEX/APU_FME7.cpp new file mode 100644 index 0000000000000000000000000000000000000000..85ca987c6193535a5771fff1b09ef7ee73349df0 GIT binary patch literal 17140 zcmeHO-BKLK74F+jRo-EpR8flvFtb<^k{zWa47SR$>=KHcm{KS#K&C7s8CE~GB;VV) zi|_nCd5t_m9wEv1^_jyt-7~X03pOGyYD?_wO!xWu&Tn^*{`;TBaP~gG4Zn#}^~2fu z5Tz!$*2B}VAJ)U;up35@cP)GrR>S2}le|r?(?jkybUz4t;YFhJ>B;pxavuTx9azHj z9)<#+5_T)X75pv3GM=8ET#v$5IE+5=6%g76Lc8G`NHAZ07UQ@4P35ADXX!(~|2^d2 z4-dj4`1>}H?uXxn>*15|=dgL?^9$h%+~sJQ!Ew8B-cIO+mGA*(+{R}$+`_DT;p6zd zj{7%3<1WT5AI+xzeT>`>&p_o75PTB3j)3at_`L&c$>m1)D`u`@ZZ6H$a22D{`J15f z6tfTUqzD_~K6v~Q|6WE~J=}W%KUoWZz&*KMb=U8?>lJr>!(Cr@*H_&2GOj7F^0@4t zU2@kK-Sykk0O{JMKC=Wr^c^{TD%VL#P8!5wfQ;-#}h=`2(_%ay2IDG$@5L>@JMrbme=wELz< z={&7;9w-rJdN5D(*U2qDY_RxwOsf}~#aI#5Vy6+)wD`|s;iU!(pU1RTE6Yu9I;L}r zuXn1{?3Z>>qkWyOS81sgUH?j+={mX}^XO^JNpl`KPFv{?(F;8XVvq3|q4zrPXkGvV zt3QRSOaIRuO>XC=zJ^tfb=0!D@2JlEn$zlQe3hFv=jC?(wPwC~?Q)rj`A-GZ~a%0A!MVt#ycYv6pB zW7_T@kGo%Mcfh`t`KcFIVzM6V^7pLHnMZCYYu(N*?43`ad3Eo50~9aScCW|pc5`JQ zpULAUkLX58Y%-3TtWqXZlW{*6r8c?p4qVn#2{1^yD1z-?!&~_-RA5x&!QZ{x=E(;HdLga2EM7 z_KrS`J19e(pzsWX%#|dX2 zC#fs(9P~l>GRk-pC#k%@AMRiuko%^TmGY_XGNK1=a*`(c^IY^Zj6Q%IAK{y)(+4=2 zCK@yNot~J|Qw~AlTRh=A4ujf=*~nKo^gw$Y_5G+j(XZ3BXP%9z`HI0LiFmHO0jl>KB(i5-q8@ybQi)_aUJDgIqj*ZqtU+n>QJb)r z<-`Kq6~BC>($kFN>FK>TY9gWGx&YhK_lW-i_;crkUPB4XBMEGbAO9HV=6t_JHR68b z8b02$w&2ytmx8ChL%L*JxIa#2)>HkxqscqDL?NK70M)%Z{yz6>a@QXuPK38 zU(V@Gf*yR6e(ZgOeV2O4HO$msd;=r*65*dBNv{xo1H7TYXqyFnL1GRbxPT0y*`bGc zR*V)aL>Itu86V~mW|Se$R^P$6#c-jb%M;vw_#6HWFqZTdW9Fg1iB))S8=YbwbL0&q z^}k+)St@gRB(oylJdQr6Sb7Vs1N{+De-e?*b55FTWS&LC_{^44K3Qga5Z~k2jPIj7 z#@{b1UA(*^T@O#ciQ{%~szk4sOi6UTRR>9a<=aA+V2=WKXMsGe^DaKTI}1A)4r>3d zD0~VT_M!~*)K5`!?%yM=pcX6L&^oUgNJNovHXT)|&{au3(B zK01}YV)Yuc__hr*1hZ>9m(><7Dm!uiB9YIe6$zAQ58R$dOgMvDr8CoPPP%-rif1} zjD%%;&qZl$9COMXG|-q3?v}6Q_vcZLEyS#OK;1%@GF*LCnxu*8p?HY&+ySH1bqTx4 zbUBmhrSmXfe}w;WdKE#)`VOi7+9_D|HN7-5?bT3cJ<{IBSMp8V=X;X$0#9c-+OCWPZnP@=o80B*AUNBWW0}REJ}~ogd;m>eHX*(uV5!JC4GkW zKD5EWSwS)yz4QY5fRuM?hi)EwBS9}mekFO@LrzV5e~WCNb>^$Ab7KNlb!wC1)@Pvl zZ1$DRfbH3+eNJ0u>W1Qb6LAvG)Aalnd1~|AGwa&O9qszXPt$w87wiM8<8xuRZ~*TV zF1ar^;imp6-}09gSh8XBYWEZHVE-l^0c*eJPVu;XcqIFgw*Ds{C2PUF^P%Ukr#%2Q z)@1f2N}22Jedx*+5&8S7tYerHtfsxjuX>M^OCtT)Qk>~mqp||}=jLYxXDo$(6lM6= zy;paCEFKmg7T?Fa1=c4+Jb88ZS@HMV+QqCwPX8`+D!Iwm!%9V0d2M6NIz8y^(NRm= zh;jCNKh9l?G`^1b{Sx*|yC|-mh@E)mOpC=NcPe(;$#UL2x-8n~Y%ewDTe9~qzv<6awgwPvgSb6Cawpk@PBLcbO>KQ|9;!^TF8 zUztvdEb6VO8lv=})Ot;RBGHA%ETUZ zh&8|LESU_Gd2>&L6l{N4eBC^LTz|0=^P=`)cVe_zua@=&w!0$!{W8`or7j4w9*yEo zzmH_mN2;5m%6gfvzMJEQ`%sFA&X!(cp|O+jF=umyyKp^D)TNobjZSlfw2hY7kf-&i zko&T$$nKeEFN%X%S9iq)dFk0a_WAmv{!I8tR+XOWPmMd@^-Sz(-NzbEe)~0&?5CxD z7h_m!L6c9I#`VbZoxb-vzn*w`)Mcgfr5|XXpGv8|XR+DbiK?&KIG@ur zBbm?VmTcFEl~eYRMKX39(`nHLry7i4Xb^! zX-D5_KX+b7=gDr?G~{a7zopa%Rjp;}rR(@#eRq$}D>&mx%&rn6w1b=ksx)FBouw!4 zHt*!;&*Nwtc3n@Od%#09tjkK2Nv92e+cW5DgIll=k(_Hk^` JPVYE2_#gjxpfmsg literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_FME7.h b/virtuanessrc097-master/NES/ApuEX/APU_FME7.h new file mode 100644 index 0000000000000000000000000000000000000000..a49008dabd7ea6b335ccf506b116af84dce149d1 GIT binary patch literal 4636 zcmd5<{ZA7?5S?Go#Q))x#Gp}WA@Ku$LMTd7E8$RLh-vC^U}I@Zdwi(DKV5xq_O`os zw3kvyLpGu1Zgytgn>VxDe}9+c?ydWBPqPZ;?kuu2F0V*Vr7My27$nQ4uuEf$or!tFB9?Ch;5K9l=hVop# z;~8xy*{7&nAA1c7XHQm&zK>D&7@F)&;ny-q-gc4m4!B$cgEepOxEN%ym^TqpaYOKH z{o2ZevI^XNFz^jlZR8h@Y_7&83%`{Mf5)mmx$1jS9?P5T-Jg+H8`-_3*Fes|OB*}} zz)B1WI%E;qY@&)Ev3nQa55YhOcCq}Br}*Dw7=q~?AY`A1UQFjPQg5fgd0QU$ve}ZT z$30}Y1AT?a;s9%)*}au7TDuTWm|ZKEoyk2wr%(~GVjikDizJjFE>`*8zB0oY zu|_(8Rt@%i*9A~Z3foh)3p0fVP?F6lP0gG=8u4d zGuE9M##gad!mKY{)|L&Yx&SC_p7w2?k3bRo6Uan!+OuZ|PrqSS`#d^Rizez~HMoyE z>;>*R6>qNDK8a^`6unza{0%0j(|RLRT7_nD7VO zn3%Y6X+AJ5VSOg^IL~w@ao?%eQ_W$Hf>=Q)Ayx2>uFq z6u=`un`qkmoA7>u)@hlNw1Tl1dU`BIaqNvHyf4Xo9Y;qfVZRjqBaUCJv>>@mA!Lgq zYXrC$WkT}bG9#8vMfPV?7&&x-_P~(&Rne={6g|Qi&+RwAfoj&kLG$tEvr^r$cjQcP z5!;*R$G|Ge%B?}kn@}hK=gz{rb9l~z+Z0_v1uQc5i38nv|1lN^n5u$+oyXX6c;ozK zyn8tOvgF>a+T- zzNxo(epH{fvPbXLPxN@EcZvoEIF4tw1X+!mv<0>$th^>80h2BKU|YSu|K)jGJ$(@^ zZ>S^nQaw`@$r7MltZ;FPG({_ZXC3oUAPE)g_%xsdYt6NZ!0`_15JRRaGHugEylVv= z)IW(Rd>=T_%c1M|D4I8D`e#Z>mL_UA?o4TOY8E6@8jOGkf_HGy$=P~0@D(Iiz^NXi#3TFhL1g%hFc*4If){i%&)+wgTGIgW|=( zkaxo<@oKXBS&f{WgL!in^LPo`=+jZ3&xht@WVI%+f^T8|w`6O7Uj9AUyHQtdxPKcQ F@gKd%wc-E( literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_INTERNAL.cpp b/virtuanessrc097-master/NES/ApuEX/APU_INTERNAL.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5f2eb072c75a9f0e9785068f4385a9a978abc299 GIT binary patch literal 58766 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_N106.cpp b/virtuanessrc097-master/NES/ApuEX/APU_N106.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a9a2c06c71b5e54f7490dc9cd1799fc59dea9478 GIT binary patch literal 8434 zcmd5>U2hvj6rI;a;+3}w2TX-NtdL{V|`4f(3=v?;VaBOZC= zNAeSZbLRT)-I-lGj#@?0%1*L7bLZT1&%JYJ^WVQW-SxZPb?;^grc0#6^tP>7wpG1pZ^_{Lr1jmmT==fxF`# zy6@bRT=g?@rq(ik0@<1AO;gJc9^!J)#|#xFz=$u&m;`>sEm0 zd(7g`b=<%2+U^m?%zIp1FGjuS7EAZ)F7@Mo^WTY&M$Ngs8*4vh-)4_spKBdwH`d>gwE8h)n0QMNsWylH{|3^=DSqUk=v#oS84O5M%5Tlv$LzkdtQWPFEg)mpXbUz>(ck$b{&y@~-3v-1# z8)K}>At$QEIcSjka4|O+VQN|H;YL1_`P)OCX(5|3WQMR?ALJ`5lwz2~^K*RKd5sy* zYICGjc1>U4n#-+T24@+YYT+VZ4VBsu6vezq5UG%7VT*{3?T~4rPX_EI$k~&eQH_<@ zXm~c~@SS@9XY+jLeA^?;52-okU%U%XVkOoJiJ(+1uD?03EV)kWJ@>+EkfVz#QtxPK z0iUq8a^@Cv!+M_#w2)yBFuO8hAJt;l*Sco|EZpUacPFv`h?b~Rx!PV=uYkvVPjl@R zz2+)Uz5Nb$;_yj~uk}{&5gSpaj`*q(a*w_pXqY(1M>_Wwkk008D$;7Kn#r@kOWaNL zYT5${YJO|2DDHK2tZ?pojs|$p%n^G{M49zaEb7i=_Cy0ZhrQ-*t`EIiw8VUDMe((a z6l*cY37?no-Lj5}s@ekcI-DOW%x0eYeVN%H8OJUq%mvvmje&7hJ3mAVii?$`J6Khj zi`O1^t%V_LaThy`)==H-mOK?MWe)ofL1oOGBZJzdSz2ASN|Jl2J0Xt}t6@D5Gg4X5 zokWo?K#$YV_jv4BysXn<^c1I7aP8A#UFmbJqx7d9?X*ObI>EPq3@~K6`fJQ$rzgsa z*Dmh#?TVeAc&l(IL%MP?8aiJ6BJOZJI|@ZAIE^9gR)(JtXrKE`x!Z~R8tFtoLN}m2 z%r@%85iXwN*+0|P1TIm?D0XybiTAO1j(Yv((JXRm(IiqqOZ6!X&ZCT3fih(}3xQwNTQuaag#PaouJ5|?xw_FPYB zG3TM@O984i;66rFd4eZ)>0Clgo49W~l(CX{O&F)DQX4Ufw|hPwZExe5U;E8?lhbMJ zd*}&yV}32<`DFDa9!Yx_MM2I5vd4rhD;HWz!*@1Qu+8;k@6xkzh`_3-_K?MDIN|3v zpjYemUZF#(AvIR&-p0)Pw=YDr4fUR(J7v$5f`$0Kk-giQ$~jW@_--e*z;26Y1i7Yi z+;;8^-!p_bRRQB=!_vsC4ArBVA669W+!J`t%ELXZ=lg+CvDEilvcrg88TFZhl@9pY zf+89|d#XMCzOOam7MzBez9mb{VO|0_53@gsB>eFnjXohn_O^Jn~&pO9c zmf(E3kFJSXz=|$&Oc5GO*0=KMdD!S_&#hSzUFquTn?0|AQ$|DVX_o1D^{)!4#z0R# zveW4)wzz_5NmdAFF++=QCS$Km$<%o`H^f-Xha&ISS8G+>j`&~1FJ78zwE9=Qua=#9 z9X!dq<8`Qu@AAX9*0EM+kul+0f9trY4!%o{M}+yr7;;=_MWdx1iTS|H9R9X^9q69} zwfVv9Si%2v6ju#(B&?|kM&HHTKpnvur~du5c8u1)s%|ctq309DKYR^F&AL0?dx=oi zl1S@%`d<*k$X>4ezZc#mvuefGFI!Nq%U1MB(bBk)SV5e~-{m54@6wUDXht~_!)A;Z T37uW$aok7@x1fAqHWL2>2F@zX literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_N106.h b/virtuanessrc097-master/NES/ApuEX/APU_N106.h new file mode 100644 index 0000000000000000000000000000000000000000..3e98e5b629dedb919cf22526ab0aa60875da0104 GIT binary patch literal 3042 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_VRC6.h b/virtuanessrc097-master/NES/ApuEX/APU_VRC6.h new file mode 100644 index 0000000000000000000000000000000000000000..995c8023bc6870c439e37cef91e655d1cc2b60fd GIT binary patch literal 3388 zcmdT`ZEq4m5T37R;(u6eVyaOKG%;E~RkYQJ)BsA1F$9kTiNKw36sxH}U43Temfhp1 zvBn@~!`tobGtV<`%a8ASw0-L;T@hA>wr6pa*715yF-@pTV;X|(YidxH?ro6wMZ7i_ zxjG^+h5FAq)tlqB5br6a6d@B%cZEt=W#p|y5Aa^5``FzauMw(Z237{O5mOHl>eCs1 z-O1LTeCm6i7jxXE#dW_U{3p;6K}SFxtV4Q9ukdNBzC+Kbj{2|R>0^3=7hCCRJvT&# zqD!A%htL*Z`&5C48hjnXGc&4-*B99n%X~s1jc6|H4PB=N)UcKq-)3}|KHwSKUSyvl za|xKM3TMwzS;ZbB?;&b3{ta9kL5^DsoEvlm4OM(|KA01;=W3cEcJ_>ox}gJ9RRVSI zVKs!US=tnF8SSg+^iLeflOpym-K2-v-nS*H_3U;THK0>y9wJ5obVT49q55~h<_H-& z!RZ#h_n~eCyO2K8ZTwb-22pH4A@{KHd^*IYpv|H4Zy~m`xe*Cs8w?w$9Rn6Utf{bj zL~kT722Yq>H^)x72j~LMb|{)>f@W2PsH`ruan+B!vl=gZ{#djf0VSeOe|)|v{5XP5 zWZ?@wU4H!BG{NXptXL1*b3|)U;nXG`SO07cIypYh*RRhe5*hXpil-iGRki0kDnPZQ zu$_yY$tpBJC0R~^L}x&6X`kL@HK|Cx4c`D=>4RulxBmVhQ*3M6-{V^288HT1-M9EQ zPl;rc>zX?}^gLLLewIUrZ+BuKr_!Y<=9K!%dvQv&0wZ8K9JkvOq%)u-U_4veoFiuq zOpYolmgnHH%th|8Taw-4p6~zP%zC=tTd62HnMVp)uN{|Su`iB zJAOuNuwi^3ZIx3IOZ%ee zH4vXA(Z}A)%V@1)s%0hHS3Juv#9hnxU4#ms=K59b+-<@re2aC&Uhfo*AkUp4x=iPr Z&YW}4+fJsL|C0ssU(3)n;9TZE%}@1@ld}K- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_VRC7.cpp b/virtuanessrc097-master/NES/ApuEX/APU_VRC7.cpp new file mode 100644 index 0000000000000000000000000000000000000000..aa8ec4517d78028dfa98e05bf22298f0efaaba90 GIT binary patch literal 4264 zcmd5<+fGwK6y2}K#D6H7kaNJowA>0J34$1dDFhK>2x%&9flyk3A{c@XJo?}V_zS-H z;y?HY{(~{T_-fR(X3liZ>4kDhnr6~NJ9B3C+H0@9_weuUu=L)zD|a-ig!IlJORaD% zN>wV7mwnj<+BI2`Ihp7p?smAk$6OW+9K!q4nAhFIb)v1;q$Wi~!ug#Rg^@zsluY88 zk_=Y6hpP-#9064V+Neqa43*>^ekH>(tpA#492YV6(xC3|1Aj%fq%6nqr3gRn$*e5P zOUcz$KO{St<=gx;u1?8R)0{7Xe)mj2Jz2tu&oOe^+Ai4hVQEChkW-U*j^gtGGd@rd zPYr8noRP**SW{RFFjU~@ z32gC1>y@YDNK`i0qx%EQTVJBy9O9%Se2hP>cN!ZWkU0cyUrydYPc=kfM|0AA26=Hi z-TEqKv+@M1)(_fn>vm64W}sA~*&=dk4XS0d_jR<%ObRS#LM}Wxk8nb@lI`S&PaB5a zm6*p?3v-C=5-Q}Pj$&ifxYM0#_gJLV&-;!FVwPPuI@EJnN2hqnUKbyWC>nY4lSMXA zz2;4F5|1Xcr>b>eG-XxVcd(>N>Oxg7=9MqW?B|bt2kXjYhUMAu@)l?8A_u)DF33=v z_XW-OtgHfE3B1$(mh5Tvp8+rDE7(J2F{k6%coQz2V%tZ-F=@4zgWhb0^tRITV7?Hd zJpyBlyNcC^7g|Zj$X7DZ$a|)JtbP# zy*e6d)~di_aq2z?E>;#YoT&GWc9uq3T5@r+_ne~6@$EL1iu_m$1|4TCws;RPx@)d5 zrZTjyFUyDzYlu0UTCsJ6ohgrM!me4y{BewjyKZyoxx%&fq^PksYPE8vl6uF-1K={ zHlU$XeHR*Ru(t^eT%)1`na0S35n_+>V8x6}H-Ai~CSh8N6(Uw$Jcap?ZzsU1mlqtYrLds~W$L zM&>h-?dprk*>GTUVsG=KU}$1Ff7iyfvr?@Vfwp zjx{?)Fllr)(7=}AZc{VOn;jJx-{*rls)+wp1-R+>4Yzc%GK^ch;U~a5(c5Rd@^sGH E|L>>+o&W#< literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/APU_VRC7.h b/virtuanessrc097-master/NES/ApuEX/APU_VRC7.h new file mode 100644 index 0000000000000000000000000000000000000000..527485a13070d539dc4af5643f1e90c82800d3d9 GIT binary patch literal 2222 zcmd6n-ER_65XH~yn)pAg_N5xNUnXjOs#O{zQiE0E6TxL0i4?F4R%7%}SAR2iFAKCJ zH8F%tV0Z7Gk8{qtm+URk&VhsDU~tr_f8;*Yfj~pI}+Sq~K=pD~E^=-XWgZZzs`dlygnOBGoaXmVe|8w+J z8CqUzPrFp8Q|o}rhN$6HUzaNp`9PWanmGDYw{-y<<1*x}&;xy9&3u>nkLlb9lWjKBMm$Gda9Q-l(AIb^_+6YH&E@t*WsMQ_fsX;Qx@x-dpfDwl;kQTE`l(OR4sm z!V$3_@#=v!o%&qHVby=QF0&E)zH&MDrtauzx%X?DHCC>6Eo-8$Xw*Z~1l~DVb56@9 zXliuynCKJUPf??fU#8Ex$9F)OqIwgCcIMNWnpMWPo^1lp|CO;--ZQypY=N-Jtfipn zV&{(TnLc6c(%wYV-h=Xvs2Qai4A(i_#@|5BTKF?*NPu` zMN=zt&AQA$$axH!I(C;X#6Gp*7FI(qgJPAj9}0L=^5$@(&OFz8K@G-hCXn~Em{Lb z)FJPHx-NqgY7n4nZ_qV`!GOE&@GkZ4!G`&5lof^V`O`1_Qo!g)?nO)H~%wi|~+x!(-K6MCGubP(=>P zi9kA`2ApV9RR-K77&m4f=*DmX>I>LVjZIYstN}N>-Z)bkL?|tS4gFDjv(v4O-PHO( zd-{yMhG{c@{V>l-r^Vi_oE=GV@-J)e6~fJ@o;*Svy5eCFyG+JwR3LI HFARPF!Q-bI literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.c b/virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.c new file mode 100644 index 00000000..b11fecb7 --- /dev/null +++ b/virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.c @@ -0,0 +1,1545 @@ +/*********************************************************************************** + + emu2413.c -- YM2413 emulator written by Mitsutaka Okazaki 2001 + + 2001 01-08 : Version 0.10 -- 1st version. + 2001 01-15 : Version 0.20 -- semi-public version. + 2001 01-16 : Version 0.30 -- 1st public version. + 2001 01-17 : Version 0.31 -- Fixed bassdrum problem. + : Version 0.32 -- LPF implemented. + 2001 01-18 : Version 0.33 -- Fixed the drum problem, refine the mix-down method. + -- Fixed the LFO bug. + 2001 01-24 : Version 0.35 -- Fixed the drum problem, + support undocumented EG behavior. + 2001 02-02 : Version 0.38 -- Improved the performance. + Fixed the hi-hat and cymbal model. + Fixed the default percussive datas. + Noise reduction. + Fixed the feedback problem. + 2001 03-03 : Version 0.39 -- Fixed some drum bugs. + Improved the performance. + 2001 03-04 : Version 0.40 -- Improved the feedback. + Change the default table size. + Clock and Rate can be changed during play. + 2001 06-24 : Version 0.50 -- Improved the hi-hat and the cymbal tone. + Added VRC7 patch (OPLL_reset_patch is changed). + Fix OPLL_reset() bug. + Added OPLL_setMask, OPLL_getMask and OPLL_toggleMask. + Added OPLL_writeIO. + + References: + fmopl.c -- 1999,2000 written by Tatsuyuki Satoh (MAME development). + s_opl.c -- 2001 written by mamiya (NEZplug development). + fmgen.cpp -- 1999,2000 written by cisc. + fmpac.ill -- 2000 created by NARUTO. + MSX-Datapack + YMU757 data sheet + YM2143 data sheet + +**************************************************************************************/ +#include +#include +#include +#include +#include "emu2413.h" + +#if defined(_MSC_VER) +#define INLINE __inline +#elif defined(__GNUC__) +#define INLINE __inline__ +#else +#define INLINE +#endif + +#define OPLL_TONE_NUM 2 +static unsigned char default_inst[OPLL_TONE_NUM][(16+3)*16]= +{ + { +#include "2413tone.h" + }, + { +#include "vrc7tone.h" + } +}; + +/* Size of Sintable ( 1 -- 18 can be used, but 7 -- 14 recommended.)*/ +#define PG_BITS 9 +#define PG_WIDTH (1<>(b)) + +/* Leave the lower b bit(s). */ +#define LOWBITS(c,b) ((c)&((1<<(b))-1)) + +/* Expand x which is s bits to d bits. */ +#define EXPAND_BITS(x,s,d) ((x)<<((d)-(s))) + +/* Expand x which is s bits to d bits and fill expanded bits '1' */ +#define EXPAND_BITS_X(x,s,d) (((x)<<((d)-(s)))|((1<<((d)-(s)))-1)) + +/* Adjust envelope speed which depends on sampling rate. */ +#define rate_adjust(x) (uint32)((double)(x)*clk/72/rate + 0.5) /* +0.5 to round */ + +#define MOD(x) ch[x]->mod +#define CAR(x) ch[x]->car + +/* Sampling rate */ +static uint32 rate ; +/* Input clock */ +static uint32 clk ; + +/* WaveTable for each envelope amp */ +static uint32 fullsintable[PG_WIDTH] ; +static uint32 halfsintable[PG_WIDTH] ; +static uint32 snaretable[PG_WIDTH] ; + +static int32 noiseAtable[64] = { + -1,1,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0, + -1,1,0,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0,0 +} ; + +static int32 noiseBtable[8] = { + -1,1,-1,1,0,0,0,0 +} ; + +static uint32 *waveform[5] = {fullsintable,halfsintable,snaretable} ; + +/* LFO Table */ +static int32 pmtable[PM_PG_WIDTH] ; +static int32 amtable[AM_PG_WIDTH] ; + +/* Noise and LFO */ +static uint32 pm_dphase ; +static uint32 am_dphase ; + +/* dB to Liner table */ +static int32 DB2LIN_TABLE[(DB_MUTE + DB_MUTE)*2] ; + +/* Liner to Log curve conversion table (for Attack rate). */ +static uint32 AR_ADJUST_TABLE[1<=DB_MUTE) DB2LIN_TABLE[i] = 0 ; + DB2LIN_TABLE[i+ DB_MUTE + DB_MUTE] = -DB2LIN_TABLE[i] ; + } +} + +/* Liner(+0.0 - +1.0) to dB((1<0) noiseAtable[i] = DB_POS(0) ; + else if(noiseAtable[i]<0) noiseAtable[i] = DB_NEG(0) ; + else noiseAtable[i] = DB_MUTE - 1 ; + } + + for( i = 0 ; i < 8 ; i++ ) + { + if(noiseBtable[i]>0) noiseBtable[i] = DB_POS(0) ; + else if(noiseBtable[i]<0) noiseBtable[i] = DB_NEG(0) ; + else noiseBtable[i] = DB_MUTE - 1 ; + } + +} + +/* Table for Pitch Modulator */ +static void makePmTable(void) +{ + int i ; + + for(i = 0 ; i < PM_PG_WIDTH ; i++ ) + pmtable[i] = (int32)((double)PM_AMP * pow(2,(double)PM_DEPTH*sin(2.0*PI*i/PM_PG_WIDTH)/1200)) ; +} + +/* Table for Amp Modulator */ +static void makeAmTable(void) +{ + int i ; + + for(i = 0 ; i < AM_PG_WIDTH ; i++ ) + amtable[i] = (int32)((double)AM_DEPTH/2/DB_STEP * (1.0 + sin(2.0*PI*i/PM_PG_WIDTH))) ; +} + +/* Phase increment counter table */ +static void makeDphaseTable(void) +{ + uint32 fnum, block , ML ; + uint32 mltable[16]={ 1,1*2,2*2,3*2,4*2,5*2,6*2,7*2,8*2,9*2,10*2,10*2,12*2,12*2,15*2,15*2 } ; + + for(fnum=0; fnum<512; fnum++) + for(block=0; block<8; block++) + for(ML=0; ML<16; ML++) + dphaseTable[fnum][block][ML] = rate_adjust(((fnum * mltable[ML])<>(20-DP_BITS)) ; +} + +static void makeTllTable(void) +{ +#define dB2(x) (uint32)((x)*2) + + static uint32 kltable[16] = { + dB2( 0.000),dB2( 9.000),dB2(12.000),dB2(13.875),dB2(15.000),dB2(16.125),dB2(16.875),dB2(17.625), + dB2(18.000),dB2(18.750),dB2(19.125),dB2(19.500),dB2(19.875),dB2(20.250),dB2(20.625),dB2(21.000) + } ; + + int32 tmp ; + int fnum, block ,TL , KL ; + + for(fnum=0; fnum<16; fnum++) + for(block=0; block<8; block++) + for(TL=0; TL<64; TL++) + for(KL=0; KL<4; KL++) + { + if(KL==0) + { + tllTable[fnum][block][TL][KL] = TL2EG(TL) ; + } + else + { + tmp = kltable[fnum] - dB2(3.000) * (7 - block) ; + if(tmp <= 0) + tllTable[fnum][block][TL][KL] = TL2EG(TL) ; + else + tllTable[fnum][block][TL][KL] = (uint32)((tmp>>(3-KL))/EG_STEP) + TL2EG(TL) ; + } + } +} + +/* Rate Table for Attack */ +static void makeDphaseARTable(void) +{ + int AR,Rks,RM,RL ; + + for(AR=0; AR<16; AR++) + for(Rks=0; Rks<16; Rks++) + { + RM = AR + (Rks>>2) ; + if(RM>15) RM = 15 ; + RL = Rks&3 ; + switch(AR) + { + case 0: + dphaseARTable[AR][Rks] = 0 ; + break ; + case 15: + dphaseARTable[AR][Rks] = EG_DP_WIDTH ; + break ; + default: + dphaseARTable[AR][Rks] = rate_adjust(( 3 * (RL + 4) << (RM + 1))) ; + break ; + } + } +} + +/* Rate Table for Decay */ +static void makeDphaseDRTable(void) +{ + int DR,Rks,RM,RL ; + + for(DR=0; DR<16; DR++) + for(Rks=0; Rks<16; Rks++) + { + RM = DR + (Rks>>2) ; + RL = Rks&3 ; + if(RM>15) RM = 15 ; + switch(DR) + { + case 0: + dphaseDRTable[DR][Rks] = 0 ; + break ; + default: + dphaseDRTable[DR][Rks] = rate_adjust((RL + 4) << (RM - 1)); + break ; + } + } +} + +static void makeRksTable(void) +{ + + int fnum8, block, KR ; + + for(fnum8 = 0 ; fnum8 < 2 ; fnum8++) + for(block = 0 ; block < 8 ; block++) + for(KR = 0; KR < 2 ; KR++) + { + if(KR!=0) + rksTable[fnum8][block][KR] = ( block << 1 ) + fnum8 ; + else + rksTable[fnum8][block][KR] = block >> 1 ; + } +} + + +void dump2patch(unsigned char *dump, OPLL_PATCH *patch) +{ + patch[0].AM = (dump[0]>>7)&1 ; + patch[1].AM = (dump[1]>>7)&1 ; + patch[0].PM = (dump[0]>>6)&1 ; + patch[1].PM = (dump[1]>>6)&1 ; + patch[0].EG = (dump[0]>>5)&1 ; + patch[1].EG = (dump[1]>>5)&1 ; + patch[0].KR = (dump[0]>>4)&1 ; + patch[1].KR = (dump[1]>>4)&1 ; + patch[0].ML = (dump[0])&15 ; + patch[1].ML = (dump[1])&15 ; + patch[0].KL = (dump[2]>>6)&3 ; + patch[1].KL = (dump[3]>>6)&3 ; + patch[0].TL = (dump[2])&63 ; + patch[0].FB = (dump[3])&7 ; + patch[0].WF = (dump[3]>>3)&1 ; + patch[1].WF = (dump[3]>>4)&1 ; + patch[0].AR = (dump[4]>>4)&15 ; + patch[1].AR = (dump[5]>>4)&15 ; + patch[0].DR = (dump[4])&15 ; + patch[1].DR = (dump[5])&15 ; + patch[0].SL = (dump[6]>>4)&15 ; + patch[1].SL = (dump[7]>>4)&15 ; + patch[0].RR = (dump[6])&15 ; + patch[1].RR = (dump[7])&15 ; +} + +static void makeDefaultPatch() +{ + int i, j ; + + for(i=0;ieg_mode) + { + case ATTACK: + return dphaseARTable[slot->patch->AR][slot->rks] ; + + case DECAY: + return dphaseDRTable[slot->patch->DR][slot->rks] ; + + case SUSHOLD: + return 0 ; + + case SUSTINE: + return dphaseDRTable[slot->patch->RR][slot->rks] ; + + case RELEASE: + if(slot->sustine) + return dphaseDRTable[5][slot->rks] ; + else if(slot->patch->EG) + return dphaseDRTable[slot->patch->RR][slot->rks] ; + else + return dphaseDRTable[7][slot->rks] ; + + case FINISH: + return 0 ; + + default: + return 0 ; + } +} + +/************************************************************* + + OPLL internal interfaces + +*************************************************************/ +#define SLOT_BD1 12 +#define SLOT_BD2 13 +#define SLOT_HH 14 +#define SLOT_SD 15 +#define SLOT_TOM 16 +#define SLOT_CYM 17 + +#define UPDATE_PG(S) (S)->dphase = dphaseTable[(S)->fnum][(S)->block][(S)->patch->ML] +#define UPDATE_TLL(S)\ +(((S)->type==0)?\ +((S)->tll = tllTable[((S)->fnum)>>5][(S)->block][(S)->patch->TL][(S)->patch->KL]):\ +((S)->tll = tllTable[((S)->fnum)>>5][(S)->block][(S)->volume][(S)->patch->KL])) +#define UPDATE_RKS(S) (S)->rks = rksTable[((S)->fnum)>>8][(S)->block][(S)->patch->KR] +#define UPDATE_WF(S) (S)->sintbl = waveform[(S)->patch->WF] +#define UPDATE_EG(S) (S)->eg_dphase = calc_eg_dphase(S) +#define UPDATE_ALL(S)\ + UPDATE_PG(S);\ + UPDATE_TLL(S);\ + UPDATE_RKS(S);\ + UPDATE_WF(S); \ + UPDATE_EG(S) /* EG should be last */ + +/* Force Refresh (When external program changes some parameters). */ +void OPLL_forceRefresh(OPLL *opll) +{ + int i ; + + if(opll==NULL) return ; + + for(i=0; i<18 ;i++) + { + UPDATE_PG(opll->slot[i]) ; + UPDATE_RKS(opll->slot[i]) ; + UPDATE_TLL(opll->slot[i]) ; + UPDATE_WF(opll->slot[i]) ; + UPDATE_EG(opll->slot[i]) ; + } +} + +/* Slot key on */ +INLINE static void slotOn(OPLL_SLOT *slot) +{ + slot->eg_mode = ATTACK ; + slot->phase = 0 ; + slot->eg_phase = 0 ; +} + +/* Slot key off */ +INLINE static void slotOff(OPLL_SLOT *slot) +{ + if(slot->eg_mode == ATTACK) + slot->eg_phase = EXPAND_BITS(AR_ADJUST_TABLE[HIGHBITS(slot->eg_phase,EG_DP_BITS-EG_BITS)],EG_BITS,EG_DP_BITS) ; + slot->eg_mode = RELEASE ; +} + +/* Channel key on */ +INLINE static void keyOn(OPLL *opll, int i) +{ + if(!opll->slot_on_flag[i*2]) slotOn(opll->MOD(i)) ; + if(!opll->slot_on_flag[i*2+1]) slotOn(opll->CAR(i)) ; + opll->ch[i]->key_status = 1 ; +} + +/* Channel key off */ +INLINE static void keyOff(OPLL *opll, int i) +{ + if(opll->slot_on_flag[i*2+1]) slotOff(opll->CAR(i)) ; + opll->ch[i]->key_status = 0 ; +} + +INLINE static void keyOn_BD(OPLL *opll){ keyOn(opll,6) ; } +INLINE static void keyOn_SD(OPLL *opll){ if(!opll->slot_on_flag[SLOT_SD]) slotOn(opll->CAR(7)) ; } +INLINE static void keyOn_TOM(OPLL *opll){ if(!opll->slot_on_flag[SLOT_TOM]) slotOn(opll->MOD(8)) ; } +INLINE static void keyOn_HH(OPLL *opll){ if(!opll->slot_on_flag[SLOT_HH]) slotOn(opll->MOD(7)) ; } +INLINE static void keyOn_CYM(OPLL *opll){ if(!opll->slot_on_flag[SLOT_CYM]) slotOn(opll->CAR(8)) ; } + +/* Drum key off */ +INLINE static void keyOff_BD(OPLL *opll){ keyOff(opll,6) ; } +INLINE static void keyOff_SD(OPLL *opll){ if(opll->slot_on_flag[SLOT_SD]) slotOff(opll->CAR(7)) ; } +INLINE static void keyOff_TOM(OPLL *opll){ if(opll->slot_on_flag[SLOT_TOM]) slotOff(opll->MOD(8)) ; } +INLINE static void keyOff_HH(OPLL *opll){ if(opll->slot_on_flag[SLOT_HH]) slotOff(opll->MOD(7)) ; } +INLINE static void keyOff_CYM(OPLL *opll){ if(opll->slot_on_flag[SLOT_CYM]) slotOff(opll->CAR(8)) ; } + +/* Change a voice */ +INLINE static void setPatch(OPLL *opll, int i, int num) +{ + opll->ch[i]->patch_number = num ; + opll->MOD(i)->patch = opll->patch[num*2+0] ; + opll->CAR(i)->patch = opll->patch[num*2+1] ; +} + +/* Change a rythm voice */ +INLINE static void setSlotPatch(OPLL_SLOT *slot, OPLL_PATCH *patch) +{ + slot->patch = patch ; +} + +/* Set sustine parameter */ +INLINE static void setSustine(OPLL *opll, int c, int sustine) +{ + opll->CAR(c)->sustine = sustine ; + if(opll->MOD(c)->type) opll->MOD(c)->sustine = sustine ; +} + +/* Volume : 6bit ( Volume register << 2 ) */ +INLINE static void setVolume(OPLL *opll, int c, int volume) +{ + opll->CAR(c)->volume = volume ; +} + +INLINE static void setSlotVolume(OPLL_SLOT *slot, int volume) +{ + slot->volume = volume ; +} + +/* Set F-Number ( fnum : 9bit ) */ +INLINE static void setFnumber(OPLL *opll, int c, int fnum) +{ + opll->CAR(c)->fnum = fnum ; + opll->MOD(c)->fnum = fnum ; +} + +/* Set Block data (block : 3bit ) */ +INLINE static void setBlock(OPLL *opll, int c, int block) +{ + opll->CAR(c)->block = block ; + opll->MOD(c)->block = block ; +} + +/* Change Rythm Mode */ +INLINE static void setRythmMode(OPLL *opll, int mode) +{ + opll->rythm_mode = mode ; + + if(mode) + { + opll->ch[6]->patch_number = 16 ; + opll->ch[7]->patch_number = 17 ; + opll->ch[8]->patch_number = 18 ; + setSlotPatch(opll->slot[SLOT_BD1], opll->patch[16*2+0]) ; + setSlotPatch(opll->slot[SLOT_BD2], opll->patch[16*2+1]) ; + setSlotPatch(opll->slot[SLOT_HH], opll->patch[17*2+0]) ; + setSlotPatch(opll->slot[SLOT_SD], opll->patch[17*2+1]) ; + opll->slot[SLOT_HH]->type = 1 ; + setSlotPatch(opll->slot[SLOT_TOM], opll->patch[18*2+0]) ; + setSlotPatch(opll->slot[SLOT_CYM], opll->patch[18*2+1]) ; + opll->slot[SLOT_TOM]->type = 1 ; + } + else + { + setPatch(opll, 6, opll->reg[0x36]>>4) ; + setPatch(opll, 7, opll->reg[0x37]>>4) ; + opll->slot[SLOT_HH]->type = 0 ; + setPatch(opll, 8, opll->reg[0x38]>>4) ; + opll->slot[SLOT_TOM]->type = 0 ; + } + + if(!opll->slot_on_flag[SLOT_BD1]) + opll->slot[SLOT_BD1]->eg_mode = FINISH ; + if(!opll->slot_on_flag[SLOT_BD2]) + opll->slot[SLOT_BD2]->eg_mode = FINISH ; + if(!opll->slot_on_flag[SLOT_HH]) + opll->slot[SLOT_HH]->eg_mode = FINISH ; + if(!opll->slot_on_flag[SLOT_SD]) + opll->slot[SLOT_SD]->eg_mode = FINISH ; + if(!opll->slot_on_flag[SLOT_TOM]) + opll->slot[SLOT_TOM]->eg_mode = FINISH ; + if(!opll->slot_on_flag[SLOT_CYM]) + opll->slot[SLOT_CYM]->eg_mode = FINISH ; + +} + +void OPLL_copyPatch(OPLL *opll, int num, OPLL_PATCH *patch) +{ + memcpy(opll->patch[num],patch,sizeof(OPLL_PATCH)) ; +} + +/*********************************************************** + + Initializing + +***********************************************************/ + +static void OPLL_SLOT_reset(OPLL_SLOT *slot) +{ + slot->sintbl = waveform[0] ; + slot->phase = 0 ; + slot->dphase = 0 ; + slot->output[0] = 0 ; + slot->output[1] = 0 ; + slot->feedback = 0 ; + slot->eg_mode = SETTLE ; + slot->eg_phase = EG_DP_WIDTH ; + slot->eg_dphase = 0 ; + slot->rks = 0 ; + slot->tll = 0 ; + slot->sustine = 0 ; + slot->fnum = 0 ; + slot->block = 0 ; + slot->volume = 0 ; + slot->pgout = 0 ; + slot->egout = 0 ; + slot->patch = &null_patch ; +} + +static OPLL_SLOT *OPLL_SLOT_new(void) +{ + OPLL_SLOT *slot ; + + slot = malloc(sizeof(OPLL_SLOT)) ; + if(slot == NULL) return NULL ; + + return slot ; +} + +static void OPLL_SLOT_delete(OPLL_SLOT *slot) +{ + free(slot) ; +} + +static void OPLL_CH_reset(OPLL_CH *ch) +{ + if(ch->mod!=NULL) OPLL_SLOT_reset(ch->mod) ; + if(ch->car!=NULL) OPLL_SLOT_reset(ch->car) ; + ch->key_status = 0 ; +} + +static OPLL_CH *OPLL_CH_new(void) +{ + OPLL_CH *ch ; + OPLL_SLOT *mod, *car ; + + mod = OPLL_SLOT_new() ; + if(mod == NULL) return NULL ; + + car = OPLL_SLOT_new() ; + if(car == NULL) + { + OPLL_SLOT_delete(mod) ; + return NULL ; + } + + ch = malloc(sizeof(OPLL_CH)) ; + if(ch == NULL) + { + OPLL_SLOT_delete(mod) ; + OPLL_SLOT_delete(car) ; + return NULL ; + } + + mod->type = 0 ; + car->type = 1 ; + ch->mod = mod ; + ch->car = car ; + + return ch ; +} + + +static void OPLL_CH_delete(OPLL_CH *ch) +{ + OPLL_SLOT_delete(ch->mod) ; + OPLL_SLOT_delete(ch->car) ; + free(ch) ; +} + +OPLL *OPLL_new(void) +{ + OPLL *opll ; + OPLL_CH *ch[9] ; + OPLL_PATCH *patch[19*2] ; + int i, j ; + + for( i = 0 ; i < 19*2 ; i++ ) + { + patch[i] = calloc(sizeof(OPLL_PATCH),1) ; + if(patch[i] == NULL) + { + for ( j = i ; i > 0 ; i++ ) free(patch[j-1]) ; + return NULL ; + } + } + + for( i = 0 ; i < 9 ; i++ ) + { + ch[i] = OPLL_CH_new() ; + if(ch[i]==NULL) + { + for ( j = i ; i > 0 ; i++ ) OPLL_CH_delete(ch[j-1]) ; + for ( j = 0 ; j < 19*2 ; j++ ) free(patch[j]) ; + return NULL ; + } + } + + opll = malloc(sizeof(OPLL)) ; + if(opll == NULL) return NULL ; + + + for ( i = 0 ; i < 19*2 ; i++ ) + + opll->patch[i] = patch[i] ; + + + for ( i = 0 ; i <9 ; i++) + { + opll->ch[i] = ch[i] ; + opll->slot[i*2+0] = opll->ch[i]->mod ; + opll->slot[i*2+1] = opll->ch[i]->car ; + } + + for ( i = 0 ; i < 18 ; i++) + { + opll->slot[i]->plfo_am = &opll->lfo_am ; + opll->slot[i]->plfo_pm = &opll->lfo_pm ; + } + + opll->mask = 0 ; + + OPLL_reset(opll) ; + OPLL_reset_patch(opll,0) ; + + opll->masterVolume = 32 ; + + return opll ; + +} + +void OPLL_delete(OPLL *opll) +{ + int i ; + + for ( i = 0 ; i < 9 ; i++ ) + OPLL_CH_delete(opll->ch[i]) ; + + for ( i = 0 ; i < 19*2 ; i++ ) + free(opll->patch[i]) ; + + free(opll) ; +} + +/* Reset patch datas by system default. */ +void OPLL_reset_patch(OPLL *opll, int type) +{ + int i ; + + for ( i = 0 ; i < 19*2 ; i++ ) + OPLL_copyPatch(opll, i, &default_patch[type%OPLL_TONE_NUM][i]) ; +} + +/* Reset whole of OPLL except patch datas. */ +void OPLL_reset(OPLL *opll) +{ + int i ; + + if(!opll) return ; + + opll->adr = 0 ; + + opll->output[0] = 0 ; + opll->output[1] = 0 ; + + opll->pm_phase = 0 ; + opll->am_phase = 0 ; + + opll->noise_seed =0xffff ; + opll->noiseA = 0 ; + opll->noiseB = 0 ; + opll->noiseA_phase = 0 ; + opll->noiseB_phase = 0 ; + opll->noiseA_dphase = 0 ; + opll->noiseB_dphase = 0 ; + opll->noiseA_idx = 0 ; + opll->noiseB_idx = 0 ; + + for(i = 0; i < 9 ; i++) + { + OPLL_CH_reset(opll->ch[i]) ; + setPatch(opll,i,0) ; + } + + for ( i = 0 ; i < 0x40 ; i++ ) OPLL_writeReg(opll, i, 0) ; + +} + +void OPLL_setClock(uint32 c, uint32 r) +{ + clk = c ; + rate = r ; + makeDphaseTable() ; + makeDphaseARTable() ; + makeDphaseDRTable() ; + pm_dphase = (uint32)rate_adjust(PM_SPEED * PM_DP_WIDTH / (clk/72) ) ; + am_dphase = (uint32)rate_adjust(AM_SPEED * AM_DP_WIDTH / (clk/72) ) ; +} + +void OPLL_init(uint32 c, uint32 r) +{ + makePmTable() ; + makeAmTable() ; + makeDB2LinTable() ; + makeAdjustTable() ; + makeTllTable() ; + makeRksTable() ; + makeSinTable() ; + makeDefaultPatch() ; + OPLL_setClock(c,r) ; +} + +void OPLL_close(void) +{ +} + +/********************************************************* + + Generate wave data + +*********************************************************/ +/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 2PI). */ +#if ( SLOT_AMP_BITS - PG_BITS ) > 0 +#define wave2_2pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS )) +#else +#define wave2_2pi(e) ( (e) << ( PG_BITS - SLOT_AMP_BITS )) +#endif + +/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 4PI). */ +#if ( SLOT_AMP_BITS - PG_BITS - 1 ) == 0 +#define wave2_4pi(e) (e) +#elif ( SLOT_AMP_BITS - PG_BITS - 1 ) > 0 +#define wave2_4pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 1 )) +#else +#define wave2_4pi(e) ( (e) << ( 1 + PG_BITS - SLOT_AMP_BITS )) +#endif + +/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 8PI). */ +#if ( SLOT_AMP_BITS - PG_BITS - 2 ) == 0 +#define wave2_8pi(e) (e) +#elif ( SLOT_AMP_BITS - PG_BITS - 2 ) > 0 +#define wave2_8pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 2 )) +#else +#define wave2_8pi(e) ( (e) << ( 2 + PG_BITS - SLOT_AMP_BITS )) +#endif + +/* 16bit rand */ +INLINE static uint32 mrand(uint32 seed) +{ + return ((seed>>15)^((seed>>12)&1)) | ((seed<<1)&0xffff) ; +} + +INLINE static uint32 DEC(uint32 db) +{ + if(dbnoise_seed = mrand(opll->noise_seed) ; + opll->whitenoise = opll->noise_seed & 1 ; + + opll->noiseA_phase = (opll->noiseA_phase + opll->noiseA_dphase) ; + opll->noiseB_phase = (opll->noiseB_phase + opll->noiseB_dphase) ; + + if(opll->noiseA_phase<(1<<11)) + { + if(opll->noiseA_phase>16) opll->noiseA = DB_MUTE - 1 ; + } + else + { + opll->noiseA_phase &= (1<<11)-1 ; + opll->noiseA_idx = (opll->noiseA_idx+1)&63 ; + opll->noiseA = noiseAtable[opll->noiseA_idx] ; + } + + if(opll->noiseB_phase<(1<<12)) + { + if(opll->noiseB_phase>16) opll->noiseB = DB_MUTE - 1 ; + } + else + { + opll->noiseB_phase &= (1<<12)-1 ; + opll->noiseB_idx = (opll->noiseB_idx+1)&7 ; + opll->noiseB = noiseBtable[opll->noiseB_idx] ; + } + +} + +/* Update AM, PM unit */ +INLINE static void update_ampm(OPLL *opll) +{ + opll->pm_phase = (opll->pm_phase + pm_dphase)&(PM_DP_WIDTH - 1) ; + opll->am_phase = (opll->am_phase + am_dphase)&(AM_DP_WIDTH - 1) ; + opll->lfo_am = amtable[HIGHBITS(opll->am_phase, AM_DP_BITS - AM_PG_BITS)] ; + opll->lfo_pm = pmtable[HIGHBITS(opll->pm_phase, PM_DP_BITS - PM_PG_BITS)] ; +} + +/* PG */ +INLINE static uint32 calc_phase(OPLL_SLOT *slot) +{ + if(slot->patch->PM) + slot->phase += (slot->dphase * (*(slot->plfo_pm))) >> PM_AMP_BITS ; + else + slot->phase += slot->dphase ; + + slot->phase &= (DP_WIDTH - 1) ; + + return HIGHBITS(slot->phase, DP_BASE_BITS) ; +} + +/* EG */ +INLINE static uint32 calc_envelope(OPLL_SLOT *slot) +{ + #define S2E(x) (SL2EG((int)(x/SL_STEP))<<(EG_DP_BITS-EG_BITS)) + static uint32 SL[16] = { + S2E( 0), S2E( 3), S2E( 6), S2E( 9), S2E(12), S2E(15), S2E(18), S2E(21), + S2E(24), S2E(27), S2E(30), S2E(33), S2E(36), S2E(39), S2E(42), S2E(48) + } ; + + uint32 egout ; + + switch(slot->eg_mode) + { + + case ATTACK: + slot->eg_phase += slot->eg_dphase ; + if(EG_DP_WIDTH & slot->eg_phase) + { + egout = 0 ; + slot->eg_phase= 0 ; + slot->eg_mode = DECAY ; + UPDATE_EG(slot) ; + } + else + { + egout = AR_ADJUST_TABLE[HIGHBITS(slot->eg_phase, EG_DP_BITS - EG_BITS)] ; + } + break; + + case DECAY: + slot->eg_phase += slot->eg_dphase ; + egout = HIGHBITS(slot->eg_phase, EG_DP_BITS - EG_BITS) ; + if(slot->eg_phase >= SL[slot->patch->SL]) + { + if(slot->patch->EG) + { + slot->eg_phase = SL[slot->patch->SL] ; + slot->eg_mode = SUSHOLD ; + UPDATE_EG(slot) ; + } + else + { + slot->eg_phase = SL[slot->patch->SL] ; + slot->eg_mode = SUSTINE ; + UPDATE_EG(slot) ; + } + egout = HIGHBITS(slot->eg_phase, EG_DP_BITS - EG_BITS) ; + } + break; + + case SUSHOLD: + egout = HIGHBITS(slot->eg_phase, EG_DP_BITS - EG_BITS) ; + if(slot->patch->EG == 0) + { + slot->eg_mode = SUSTINE ; + UPDATE_EG(slot) ; + } + break; + + case SUSTINE: + case RELEASE: + slot->eg_phase += slot->eg_dphase ; + egout = HIGHBITS(slot->eg_phase, EG_DP_BITS - EG_BITS) ; + if(egout >= (1<eg_mode = FINISH ; + egout = (1<patch->AM) egout = EG2DB(egout+slot->tll) + *(slot->plfo_am) ; + else egout = EG2DB(egout+slot->tll) ; + + if(egout >= DB_MUTE) egout = DB_MUTE-1; + return egout ; + +} + +INLINE static int32 calc_slot_car(OPLL_SLOT *slot, int32 fm) +{ + slot->egout = calc_envelope(slot) ; + slot->pgout = calc_phase(slot) ; + if(slot->egout>=(DB_MUTE-1)) return 0 ; + + return DB2LIN_TABLE[slot->sintbl[(slot->pgout+wave2_8pi(fm))&(PG_WIDTH-1)] + slot->egout] ; +} + + +INLINE static int32 calc_slot_mod(OPLL_SLOT *slot) +{ + int32 fm ; + + slot->output[1] = slot->output[0] ; + slot->egout = calc_envelope(slot) ; + slot->pgout = calc_phase(slot) ; + + if(slot->egout>=(DB_MUTE-1)) + { + slot->output[0] = 0 ; + } + else if(slot->patch->FB!=0) + { + fm = wave2_4pi(slot->feedback) >> (7 - slot->patch->FB) ; + slot->output[0] = DB2LIN_TABLE[slot->sintbl[(slot->pgout+fm)&(PG_WIDTH-1)] + slot->egout] ; + } + else + { + slot->output[0] = DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout] ; + } + + slot->feedback = (slot->output[1] + slot->output[0])>>1 ; + + return slot->feedback ; + +} + +INLINE static int32 calc_slot_tom(OPLL_SLOT *slot) +{ + + slot->egout = calc_envelope(slot) ; + slot->pgout = calc_phase(slot) ; + if(slot->egout>=(DB_MUTE-1)) return 0 ; + + return DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout] ; + +} + +/* calc SNARE slot */ +INLINE static int32 calc_slot_snare(OPLL_SLOT *slot, uint32 whitenoise) +{ + slot->egout = calc_envelope(slot) ; + slot->pgout = calc_phase(slot) ; + if(slot->egout>=(DB_MUTE-1)) return 0 ; + + if(whitenoise) + return DB2LIN_TABLE[snaretable[slot->pgout] + slot->egout] + DB2LIN_TABLE[slot->egout + 6] ; + else + return DB2LIN_TABLE[snaretable[slot->pgout] + slot->egout] ; +} + +INLINE static int32 calc_slot_cym(OPLL_SLOT *slot, int32 a, int32 b, int32 c) +{ + slot->egout = calc_envelope(slot) ; + if(slot->egout>=(DB_MUTE-1)) return 0 ; + + return DB2LIN_TABLE[slot->egout+a] + + (( DB2LIN_TABLE[slot->egout+b] + DB2LIN_TABLE[slot->egout+c] ) >> 2 ); +} + +INLINE static int32 calc_slot_hat(OPLL_SLOT *slot, int32 a, int32 b, int32 c, uint32 whitenoise) +{ + slot->egout = calc_envelope(slot) ; + if(slot->egout>=(DB_MUTE-1)) return 0 ; + + if(whitenoise) + { + return DB2LIN_TABLE[slot->egout+a] + + (( DB2LIN_TABLE[slot->egout+b] + DB2LIN_TABLE[slot->egout+c] ) >> 2 ); + } + else + { + return 0 ; + } +} + +int16 OPLL_calc(OPLL *opll) +{ + int32 inst = 0 , perc = 0 , out = 0 ; + int32 rythmC = 0, rythmH = 0; + int i ; + + update_ampm(opll) ; + update_noise(opll) ; + + for(i = 0 ; i < 6 ; i++) + if(!(opll->mask&OPLL_MASK_CH(i))&&(opll->CAR(i)->eg_mode!=FINISH)) + inst += calc_slot_car(opll->CAR(i),calc_slot_mod(opll->MOD(i))) ; + + if(!opll->rythm_mode) + { + for(i = 6 ; i < 9 ; i++) + if(!(opll->mask&OPLL_MASK_CH(i))&&(opll->CAR(i)->eg_mode!=FINISH)) + inst += calc_slot_car(opll->CAR(i),calc_slot_mod(opll->MOD(i))) ; + } + else + { + opll->MOD(7)->pgout = calc_phase(opll->MOD(7)) ; + opll->CAR(8)->pgout = calc_phase(opll->CAR(8)) ; + if(opll->MOD(7)->phase<256) rythmH = DB_NEG(12.0) ; else rythmH = DB_MUTE - 1 ; + if(opll->CAR(8)->phase<256) rythmC = DB_NEG(12.0) ; else rythmC = DB_MUTE - 1 ; + + if(!(opll->mask&OPLL_MASK_BD)&&(opll->CAR(6)->eg_mode!=FINISH)) + perc += calc_slot_car(opll->CAR(6),calc_slot_mod(opll->MOD(6))) ; + + if(!(opll->mask&OPLL_MASK_HH)&&(opll->MOD(7)->eg_mode!=FINISH)) + perc += calc_slot_hat(opll->MOD(7), opll->noiseA, opll->noiseB, rythmH, opll->whitenoise) ; + + if(!(opll->mask&OPLL_MASK_SD)&&(opll->CAR(7)->eg_mode!=FINISH)) + perc += calc_slot_snare(opll->CAR(7), opll->whitenoise) ; + + if(!(opll->mask&OPLL_MASK_TOM)&&(opll->MOD(8)->eg_mode!=FINISH)) + perc += calc_slot_tom(opll->MOD(8)) ; + + if(!(opll->mask&OPLL_MASK_CYM)&&(opll->CAR(8)->eg_mode!=FINISH)) + perc += calc_slot_cym(opll->CAR(8), opll->noiseA, opll->noiseB, rythmC) ; + } + +#if SLOT_AMP_BITS > 8 + inst = (inst >> (SLOT_AMP_BITS - 8)) ; + perc = (perc >> (SLOT_AMP_BITS - 9)) ; +#else + inst = (inst << (8 - SLOT_AMP_BITS)) ; + perc = (perc << (9 - SLOT_AMP_BITS)) ; +#endif + + out = ((inst + perc) * opll->masterVolume ) >> 2 ; + + if(out>32767) return 32767 ; + if(out<-32768) return -32768 ; + + return (int16)out ; + +} + +uint32 OPLL_setMask(OPLL *opll, uint32 mask) +{ + uint32 ret ; + + if(opll) + { + ret = opll->mask ; + opll->mask = mask ; + return ret ; + } + else return 0 ; +} + +uint32 OPLL_toggleMask(OPLL *opll, uint32 mask) +{ + uint32 ret ; + + if(opll) + { + ret = opll->mask ; + opll->mask ^= mask ; + return ret ; + } + else return 0 ; +} + +/**************************************************** + + Interfaces + +*****************************************************/ + +void OPLL_writeReg(OPLL *opll, uint32 reg, uint32 data){ + + int i,v,ch ; + + data = data&0xff ; + reg = reg&0x3f ; + + switch(reg) + { + case 0x00: + opll->patch[0]->AM = (data>>7)&1 ; + opll->patch[0]->PM = (data>>6)&1 ; + opll->patch[0]->EG = (data>>5)&1 ; + opll->patch[0]->KR = (data>>4)&1 ; + opll->patch[0]->ML = (data)&15 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_PG(opll->MOD(i)) ; + UPDATE_RKS(opll->MOD(i)) ; + UPDATE_EG(opll->MOD(i)) ; + } + } + break ; + + case 0x01: + opll->patch[1]->AM = (data>>7)&1 ; + opll->patch[1]->PM = (data>>6)&1 ; + opll->patch[1]->EG = (data>>5)&1 ; + opll->patch[1]->KR = (data>>4)&1 ; + opll->patch[1]->ML = (data)&15 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_PG(opll->CAR(i)) ; + UPDATE_RKS(opll->CAR(i)) ; + UPDATE_EG(opll->CAR(i)) ; + } + } + break; + + case 0x02: + opll->patch[0]->KL = (data>>6)&3 ; + opll->patch[0]->TL = (data)&63 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_TLL(opll->MOD(i)) ; + } + } + break ; + + case 0x03: + opll->patch[1]->KL = (data>>6)&3 ; + opll->patch[1]->WF = (data>>4)&1 ; + opll->patch[0]->WF = (data>>3)&1 ; + opll->patch[0]->FB = (data)&7 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_WF(opll->MOD(i)) ; + UPDATE_WF(opll->CAR(i)) ; + } + } + break ; + + case 0x04: + opll->patch[0]->AR = (data>>4)&15 ; + opll->patch[0]->DR = (data)&15 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_EG(opll->MOD(i)) ; + } + } + break ; + + case 0x05: + opll->patch[1]->AR = (data>>4)&15 ; + opll->patch[1]->DR = (data)&15 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_EG(opll->CAR(i)) ; + } + } + break ; + + case 0x06: + opll->patch[0]->SL = (data>>4)&15 ; + opll->patch[0]->RR = (data)&15 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_EG(opll->MOD(i)) ; + } + } + break ; + + case 0x07: + opll->patch[1]->SL = (data>>4)&15 ; + opll->patch[1]->RR = (data)&15 ; + for(i=0;i<9;i++) + { + if(opll->ch[i]->patch_number==0) + { + UPDATE_EG(opll->CAR(i)) ; + } + } + break ; + + case 0x0e: + + if(opll->rythm_mode) + { + opll->slot_on_flag[SLOT_BD1] = (opll->reg[0x0e]&0x10) | (opll->reg[0x26]&0x10) ; + opll->slot_on_flag[SLOT_BD2] = (opll->reg[0x0e]&0x10) | (opll->reg[0x26]&0x10) ; + opll->slot_on_flag[SLOT_SD] = (opll->reg[0x0e]&0x08) | (opll->reg[0x27]&0x10) ; + opll->slot_on_flag[SLOT_HH] = (opll->reg[0x0e]&0x01) | (opll->reg[0x27]&0x10) ; + opll->slot_on_flag[SLOT_TOM] = (opll->reg[0x0e]&0x04) | (opll->reg[0x28]&0x10) ; + opll->slot_on_flag[SLOT_CYM] = (opll->reg[0x0e]&0x02) | (opll->reg[0x28]&0x10) ; + } + else + { + opll->slot_on_flag[SLOT_BD1] = (opll->reg[0x26]&0x10) ; + opll->slot_on_flag[SLOT_BD2] = (opll->reg[0x26]&0x10) ; + opll->slot_on_flag[SLOT_SD] = (opll->reg[0x27]&0x10) ; + opll->slot_on_flag[SLOT_HH] = (opll->reg[0x27]&0x10) ; + opll->slot_on_flag[SLOT_TOM] = (opll->reg[0x28]&0x10) ; + opll->slot_on_flag[SLOT_CYM] = (opll->reg[0x28]&0x10) ; + } + + if(((data>>5)&1)^(opll->rythm_mode)) + { + setRythmMode(opll,(data&32)>>5) ; + } + + if(opll->rythm_mode) + { + if(data&0x10) keyOn_BD(opll) ; else keyOff_BD(opll) ; + if(data&0x8) keyOn_SD(opll) ; else keyOff_SD(opll) ; + if(data&0x4) keyOn_TOM(opll) ; else keyOff_TOM(opll) ; + if(data&0x2) keyOn_CYM(opll) ; else keyOff_CYM(opll) ; + if(data&0x1) keyOn_HH(opll) ; else keyOff_HH(opll) ; + } + + UPDATE_ALL(opll->MOD(6)) ; + UPDATE_ALL(opll->CAR(6)) ; + UPDATE_ALL(opll->MOD(7)) ; + UPDATE_ALL(opll->CAR(7)) ; + UPDATE_ALL(opll->MOD(8)) ; + UPDATE_ALL(opll->CAR(8)) ; + break ; + + case 0x0f: + break ; + + case 0x10: case 0x11: case 0x12: case 0x13: + case 0x14: case 0x15: case 0x16: case 0x17: + case 0x18: + ch = reg-0x10 ; + setFnumber(opll, ch, data + ((opll->reg[0x20+ch]&1)<<8)) ; + UPDATE_ALL(opll->MOD(ch)); + UPDATE_ALL(opll->CAR(ch)); + switch(reg) + { + case 0x17: + opll->noiseA_dphase = (data + ((opll->reg[0x27]&1)<<8)) << ((opll->reg[0x27]>>1)&7) ; + break ; + case 0x18: + opll->noiseB_dphase = (data + ((opll->reg[0x28]&1)<<8)) << ((opll->reg[0x28]>>1)&7) ; + break; + default: + break ; + } + break ; + + case 0x20: case 0x21: case 0x22: case 0x23: + case 0x24: case 0x25: case 0x26: case 0x27: + case 0x28: + + ch = reg - 0x20 ; + setFnumber(opll, ch, ((data&1)<<8) + opll->reg[0x10+ch]) ; + setBlock(opll, ch, (data>>1)&7 ) ; + opll->slot_on_flag[ch*2] = opll->slot_on_flag[ch*2+1] = (opll->reg[reg])&0x10 ; + + if(opll->rythm_mode) + { + switch(reg) + { + case 0x26: + opll->slot_on_flag[SLOT_BD1] |= (opll->reg[0x0e])&0x10 ; + opll->slot_on_flag[SLOT_BD2] |= (opll->reg[0x0e])&0x10 ; + break ; + + case 0x27: + opll->noiseA_dphase = (((data&1)<<8) + opll->reg[0x17] ) << ((data>>1)&7) ; + opll->slot_on_flag[SLOT_SD] |= (opll->reg[0x0e])&0x08 ; + opll->slot_on_flag[SLOT_HH] |= (opll->reg[0x0e])&0x01 ; + break; + + case 0x28: + opll->noiseB_dphase = (((data&1)<<8) + opll->reg[0x18] ) << ((data>>1)&7); + opll->slot_on_flag[SLOT_TOM] |= (opll->reg[0x0e])&0x04 ; + opll->slot_on_flag[SLOT_CYM] |= (opll->reg[0x0e])&0x02 ; + break ; + + default: + break ; + } + } + + if((opll->reg[reg]^data)&0x20) setSustine(opll, ch, (data>>5)&1) ; + if(data&0x10) keyOn(opll, ch) ; else keyOff(opll, ch) ; + UPDATE_ALL(opll->MOD(ch)) ; + UPDATE_ALL(opll->CAR(ch)) ; + break ; + + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: + i = (data>>4)&15 ; + v = data&15 ; + if((opll->rythm_mode)&&(reg>=0x36)) + { + switch(reg) + { + case 0x37 : + setSlotVolume(opll->MOD(7), i<<2) ; + break ; + case 0x38 : + setSlotVolume(opll->MOD(8), i<<2) ; + break ; + } + } + else + { + setPatch(opll, reg-0x30, i) ; + } + + setVolume(opll, reg-0x30, v<<2) ; + UPDATE_ALL(opll->MOD(reg-0x30)) ; + UPDATE_ALL(opll->CAR(reg-0x30)) ; + break ; + + default: + break ; + + } + + opll->reg[reg] = (unsigned char)data ; + +} + +void OPLL_writeIO(OPLL *opll, uint32 adr, uint32 val) +{ + adr &= 0xff ; + if(adr == 0x7C) opll->adr = val ; + else if(adr == 0x7D) OPLL_writeReg(opll, opll->adr, val) ; +} diff --git a/virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.h b/virtuanessrc097-master/NES/ApuEX/emu2413/emu2413.h new file mode 100644 index 0000000000000000000000000000000000000000..c10558b72eb872649e2428f001eae79190b97049 GIT binary patch literal 7866 zcmcIp`%fE35T0MD)c@gBq{^kF;E*PvX)2jlK*4~pOIo4mM2rE4mxb*R+U8$x`+Yl% zclRFPvs#_*?7N$t=Qp#nd;k1BD?K@pD>;@feiKP$U7GT%Je6lsmnGb9;`~~^lG%Hj z9;mwyQYtn1dakK-q%RjTlEL_wbY1x@LtJmbHIZ**6=x!U-b?H{&B%$gdA?a)*JK+9 zZTL<0WLNg3EiE@L0oSYr+0hM**>aYpPV)}*rM6w@Uc-|M9Mrcj*U)z;-;K4ra9*U0 zEKk#D3ts(yH0sG^p+*DfN{>x$x%#)r=Ndj@q2IG02Srh z=~~4ij;B?{GUkvm^b@1`%F&VD#+cof8`PP+vWI$q5zl|Zc?m6#;l&Hbnbj{r-s`&# zp55T+Ax3;|mY784w2Rzs!&kg|8cJ1-G;dG9qYFtNz_TOgc&nM5rMreML)gjdA!^Qh zM;Y2+Qav59bOZ}V4olZ=w#)lJ*80TdeFD9if2^npFhbnZR(e@|Q3J&r%m=Y$mPKmY zoU2@{Rv(~6=y%oi9r%3$Um~0olx4o8WihvYpivw_&R`iYstxw$MN%;s!F4E^kQv~qjTd8eJw~hNVgHoZNa2 zql)+rFoIQ)a*8-B-&Tf-x&0a^Ycnf1>ww;GxH=a~ig7uF6^iZ|jPZxcX~Rn5n-ts7 zN8^~t_qczH`#by&;7d|aTV9o>T;dJt!~nGUNUF>tzRdm;jAFJW=^zF+2hM>;#~NjH)PiR`Lvw!Lb@P&PBZbA3)$z*Z4l!$S zwAs`8(xSe@EVc~yvvLZ4VO7c6kN}O$h16v(F~l4;8<d1|(V+CEV*BvxE za}}+Lkvbo-Lyu=@)_`yh_ulm$N#HBv7SC>sj#V$4KYEZ$D-+-=zZS4+LGE!(SfyF3 z!!FZ!hmo;r9aeRtQym)M)Sp0p$d$Ffiu9tn!lPmbmJ<`4(Ti3AXsa7VUYLxn|O!`XY5tPvbhCffF5&2I}P2Sml$nf-# z1w~_QTyanEEwpbTd*gLHqv~s{&bFMD&rlndgZz%^!r9y^#33@dydoSpgy{arn(H^i z{gIe^xDyfX5>Uc2dWNtba%55GGC~gOK1>&u*a)keR>cz6qp=p#V(y=EE$=%ZRte9? zS10py9HGl`R}$B1(@)=PrKUgPb(BVJ5tV@S2|COtxIRa9w*Q=|U*L{>h{YQELDI7F zXV(POFzlo(=9ZDAy{w+C+A7ybi$yoK5QVcT=&N{;9bQ9~Wbsg|j!+?PIg>$2ES zx+BqbI;*FuNFSDk8DbE!78-uv9}&pFOkHoI6Ge{>NJcL2)dT1LPDw>pv>YW-I9+V$16@Cs$*Q8e=f>HJzGdFToH?fx5&Z68 zQK=$BwOw^lW^_FFhtXB$!k2BBCpJF_d@ z_2;OAp7f~?y{P*`?|Pf@>x>UN>QN60`kw!Sp69jyhqHo86%<6^0r;!nK{c?cuU#eh z9ow^RwX%W;1+{qcr7#Ve3La%@CilNq34U{3*33#)5WqSr6{b<=f`i(EFEV8l_LFI~ zu+BaA7pN0&|}Z`3Ia}}nx&V)gr4Bc;f&(? t_6id6%Qw=}$tPr-OqcM|ckW-$oy@7pTWRS8GCj$D1#!J`lX%Nn^b31rrKA7= literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/CPU.h b/virtuanessrc097-master/NES/CPU.h new file mode 100644 index 0000000000000000000000000000000000000000..81864335b0227951ceb71a1fd7e83a860c990e2e GIT binary patch literal 5054 zcmd5g5=6uny`@gEG8P^f^qRR>iwV$nKj6-}E4H?%WFsOqGl6HVG=oOGrU4D8wP zBVZ33c1SGY53u16AjFa_0?v8Yug`W~OjcE8IdNXzJ@?*ozn=g7XGQMb^}4)ftP17s zTx7{-*ZXo$B3Xl_v9#qQe0OCisq}8i_IY;Q9&;_@Z(ptp9^al_FTr+SCb)WXnX_RH zafxIVabtW|a5GA`XV*YZWelrAxd20Fu<=uw;@7*`wPL>YvuGD>yh|7Je#zK>2|s%9 zBajnZn(-&nlop|K!FO)aI<5WgKQN;J;Dc0ug zy#VuFWW`Y2KJFzVV={&T9nj}h@)T$vTOPfu;I+)^7JTVJ=QA%#;z40QDWfF77~@Xm1wPMUbq(+}8y>6{Y&?f$6Yx!YiN#yLz!z=$n?n^U3;kad~9vr z`YdZoA|HBouifZg0&DCjwnsRL1WfLsN_EB7$GX=lD^*AJ#*nhRH!64UK|>o?16Ha8 zGo{Lpyaa2EzB4bXWI8}^qQ-Y}dWw-An*JCfU!I~uC&;1Sd+JdQ+2hZ1>v0j?+Ek4G zeEbts7B#jJ1NL@C;T-y{)+)cq#eqBo3pM!ycMH7dGvo6taxPc$sG4(!(A$N6o|t^P zEaoA&i=`v`H<8*#ciDyoKB)w|50G{9q++j>WptiY!$?t|+U~kOPkdTC*ICsRr&WN+ zPE1wN*FZiqNP!#~f9hCa);_@ZiY%jtw6S-HIHai63;ZTNJD*mkp6r&fm$n45C6B>O z15cYd40{@7mpeyXX#s1SbID#ljCMBN^0<#YYmYr^cAl2);`yM1cyNBZEK`3uKhxx^ z=*O?WjDCy$ihhp1!RPnUuhAd)B+@JFNN#4VPG+w2&QEUjn5)X~2%K?3^|9-I#+B}= z0a52a*&cyqvP6DEWWH($&>{O+=Pc)B3XtPg+U}vQJWmPEJ~k_;!^SrR!Wpi#gg=Ca zGawx0{PWAb14$ca&R_QM(*l~+6#&awafG_8wnKe*fecey>_lT1D*Ea6XjQuZ$(5Bq z0F#rf@~PWd%?Uroye)EUBv}^hA}+R11en~kF2>0sZ@o&{x0q0v z4dwG}Xlg;rCaJ;v@6AlvwUjC0#PaP^5ti;Fd<10!fN#-eJ@FbY+0v@6g}HfMD!O#vrsqfeTfUvBDBdP4YrB)!xE6z*!QAAO+%9+D&khU=}Pcl zxE2JL{)_JX4=$wXnLF=e3J;RVkeB!7-gD;MJ9B1oRz@E^3=kpazrh|y4Ix&sj4i%5 z(c~_YE6&;6;`}9yh&ZJ7 z0bb&vW*u?PeU~`f#aptC$l2veF-nSv@E~Jd#3E<^v@W*>a(xoXfwZxKQ~4p^rKrLh zdlDvH3E7optgtU3Yd5%!081Q#JBeafN7@}9`-qqhJK4mh$B{Aw34>MO6#nh4%g>X~ zvhZQ|+caHUWPVKkJu^=mdwvmH@vy<1*s6!E%!$40VXKO@HCrEc>5dUA$b|Mp?B{rceCBqbLCLwb^rhX literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Cpu.cpp b/virtuanessrc097-master/NES/Cpu.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7fdbd33503bf958bc6c68bc72c3d4c4f00b808a6 GIT binary patch literal 73900 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/IPS.h b/virtuanessrc097-master/NES/IPS.h new file mode 100644 index 0000000000000000000000000000000000000000..67ca52d19e4b566993722defc272bcf3e4a9219f GIT binary patch literal 500 zcma)(%Sr=55Jk^c!GCCzjfyDfG9n}@B1{tTL2wmAHhUv$@>^o}4I*-}Hf98l~!LBN20GExy{J7T9)cf4|-*|3FLO literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/MMU.cpp b/virtuanessrc097-master/NES/MMU.cpp new file mode 100644 index 0000000000000000000000000000000000000000..33d429b76fbbd43cda989290a38bcb3eab387ac8 GIT binary patch literal 13450 zcmd^FON>-S6s>KWxOHcI0W`zUsrdm4k~n-PFayjCKZ)ruFhI*U%m9PL7#D0@xx&OH zx^ZD}V-#IrVghVTAOu_)L1Q9F;({$f&#l|HZ&kfl-LGdFB{7}p?y1kITjzeOUjO~1 z+dO-(=go6Ys?0n)FJh@kt`W1&j6u#}Gii>R;Btoj+wpYplhAP_i40l$7jub z>)gIla&>NnR!Adm*EKT}XzSmT>kK$2R;R)BF;9kGWAW;N-mK}xdoR9c&aR5|*lL&U z_aA}&r<}IQF7`vl1I{*<8h&-VPks;Ode%IW_?nL$OkxK$a6D-$W~Ui4Bc>0mR?TMk zz?=B5>fYDlbGY8ZGilB~bHto-7@1jR&N!U?;N=WBdes~gsAkYs^-7c4qF`U+n{X z!#=W?EcI?i`=Hrv#=%9!@F-?x7z_XNdmOl1 zfh)6VH0fi!V5O~CX@fUbR=RAj+Q;^~{SNPUY}YBmpg)#lYpGrFsG?oZOuBb?uM>jRzN|N<9LHP^XyJWk~4f_K=FXH_tTZFf^ftNuNo0RIB z{nTCt(${#uYVQ_e?eegi?eKg13#3zzP>$Al2oyt79Nn83s8-)Ow4>{k?kVJHO-ZCL z>~Hoy_I1VH#NT6hsUoUeJ3KVvDJ9pBK)CDt=Z^go>|cZ*J+Qaz?`Xg7A&0V#!KXy4 z7WtCw!bVnc8Tz|#KMPP)zCn00S^Z{Mmmsj0iPh4GoAx2>;JS-KI+s>&K9@%Lb4hxR z1`q8wu!k!VBFD5*c+iH1JQB@Bo)JXaDfqzxXLYpSrS;>kGj z&_TS8Kmv;J!pQz<`2y;0i);O?^A|DpvEeFO)^zTKk%v^pufQ&tf zHbUEpTsMkXSAjgo@j8LLT1D>jk*4Z=W%y*RiKN|NOe9UCo$e^wOn^3x+JKnMT%~y& zJ39awC$R&PhyK`BN3qXga}Az&#r_OWdQ`XDFdvgA(l~$j(w2dn={jrSEQ$~DENSy+ zsWj`s^hwA}^&eF_^rGGnS5~G9Y7Jg=rl3>B8~7VRmfDP0Y=(9;eXNGcz`&Wh! zZR0H5-SFQy#Xq?X)lX$n~ryPz{1$i9lDThN=Ecyz0mL4C6 ztSqfF&Hj0*w9m&&V`&|b$I`xXSXvk4v9!;}YQ9guD##=Hy*_4ouYOgK$MbuAJeD!e zIoJV{hCa zM_=ymX+#H+GLFAIPJ6=$9QTGXIPNXlfk?o+<*a+n-nO5k7QSAu_m_V7$sX=M;4&b^ zz8d~0qY?A`-zt2rsQ$7#($hu-nTM(twSz%qn`7p%%MaG&28}vdJlIYg0wJg8{zA)>EYKE-iMvvqphIufT->k!9fCGVXDVkc~l+4pY;%4wWqkybEV znTaQmpNQ@ydrVQu^-2LX#2}9{;B7O(KWRj@z*>Lg0vVhb*6qkqq`kh zF@>0BR@Racaa@dbn`Szcp$y-W4+p(?I6KB;YtL&^?1Gphs}^Y&fkkRle-ob-uB+~j zmTqu0YAYH?!4Qp}J4j7mh6l;}{tB&Zto4rjqkZ#N4xv<5tdAaVtyZN5^(G)vhguI+~ky=BAfojd0eAbESG=y<WkFpjI(JPwz6a{Zo8vtFA@)d%3LgksEBe^_zRV6|2q6EA{(1dN#ejanBfM zVac`mye_gm&Acva%r&o5ok@2N`P&}hV>N!2M89H@Tgw@6LafLQpUi!KOV_E}cxwNp zd-ju#Q8K>M^@8H&y}JE+p&VKmE%?;z$BZ&8bhch7CwCYlIVTrI%5rEi3#odc99kGd z)Ad3*v@oVJnjcxqXsC5Ajk8qe>V;;zY*sIbchYYaXX;s+_nO`@S$IQ@W+6PyX#+Q6vzCifkh@uLbk{2 zVE+24x+y(Bj6mi5TXz&ceGsk4Jw?pul>6oGG=5`y$UUv_$NA6g_Tg@H3QxHz?i9|_ zZ-js86OGrs`Z?BDxP>#qzdLKK7@)LFz$fUVKDaS)RC+ V<%?Tc-u!K_dSt$W`+vl!e*gxNDUSdE literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/MMU.h b/virtuanessrc097-master/NES/MMU.h new file mode 100644 index 0000000000000000000000000000000000000000..c9049a4698065d5f2b12ec89287dcce466e60b84 GIT binary patch literal 7582 zcmd5>&u<$=6n@tr@joo2hZMDVoZnJUP0}q(`?CyN;z3=^)HFbI&Im%mZ(lkbj9AS;Ccgh=kZ&$R|jWT zl3oWVp%c=ywYo|-Lf$$$y*>u#%<2ZXu6sK4lEKKsZ-#pD-HYqM##NjjJ6XB^=Qa4h zVZF_9@d0$aY-8gz$;jDX`3~!K+%l5+;!n4=p$=Oru%(O27zK=Z{7%v|jnWjZ$B+?Y z_L?7h5Z|V&xR>QTAcT0sunxuws~px%n$f}V0tzgkw2p2 z%>S@o=ET{bM{fBHkLtLeHkNK8@eejJRK$-^^1muxsw&^Afei;U~r3f``rgCh7b$@E+UDeqjED z54Vxw&&+-EJMQm!a?fb<4p0H8Q z%$#ms=V{1R&?FwDD*5OpCZ82ux)VW{>pqL_EE>luw1l3r0u3hNu~||ZdpwO!rt0J{ z1mR3XhUk2A_K(jLJ1uhL?E%!p64uo#7&U0eE1$A=0{O<NfP}7td-m$egp2lkEt-)n>iWW1D1h5N$)|@Dd_5+ zaZi!_lvgbOsc0CkIVw-NETe||b6B2x7RC!d>u;Oq&kS4PYKP-z`}1p+cIL0cKUMJA zg`Sn`T@e|&3_kol@+27NU0W47SEC*}+4MykTG7U~V{!y@>+}(32dzGx<4X43Y^fgu z8gYDI*PH+v$eto-X%Obx*%Fm5?5GYwiWcH8u2iD${$***sI+8@UtN|)pfBraP>s!$ zsH}YK-QL){eeiAeNOC#i+v;NDa3je{m+bAVLzEe3YkJH&Nm2`rLXuRLqmUHNL(Ys> z=czO1LB#4QyV7v?#G_sB{@55Fh`l=)dzU+Ti&wEbNVMnBsbl4H;Bz2CS z{dk45SI#AlqE3h;-}BLII*7=3_IIvaqEP{z!a4?betwSccl~y3CLu02SLuVbllvOi zH^~XnF8axbwx105wc6ouPa%6&+2wVkr{a@WJxkRSNIg3%H~Z}_yAS7m7)#7Di#e8A z<20UemYxWyw0y>S1w=FNB>9|1<_olvK!6HjH0QwS-DY( zIxnl08fRe(T?9PB`3mpHGywB#=g}(_k_)fDt&@q{y!7<({X-x zhzqfZ`4-}W%{A`LS2Cda+VwX*%4eCX-&yEW!#dQk=kXQ0*Gktfj5yW8>}z52DG{Gr zafko+!WWBtUL*T-JyGdH9FJ2SXNJu4e&kKGkmWuTT Mc0!&1Z^E literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/EEPROM.h b/virtuanessrc097-master/NES/Mapper/EEPROM.h new file mode 100644 index 0000000000000000000000000000000000000000..c48c2a5153791fe22675687b680da2390c23f174 GIT binary patch literal 16568 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper.cpp b/virtuanessrc097-master/NES/Mapper/Mapper.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5d1042eae3b0d27dc4ab26e8d75d2519978d0dfe GIT binary patch literal 4100 zcmd5;e{a%I6g~ge#P9IJ%mTy-Z2roeBrwpJ30n|@W?2>-osz&t7!wzxA6-57zLvJw zvc-_vyzpAu`|dmUoZENr?_VVpv6Z1wL<#qCk8=?wLn8@S8%?|;&KCNZz~z|YDn;B$ zxYFaUjZ4Nn#J5P)>EW8|?la8D{Y41FHp)6moVS@zWjx{A^l*)s5m!WIFeXC-GIWj` z{`0@KlHS=lip#gi!Zpm-Dm=%G>$3s%np3++_=2jQMsc>Ht*Cl= zC%X|XKZPvg5#-36OS@})#v$jKuE-@|$npJ+o;sET!JBM5W-Aua5eD(U1IAnziP}hgCpJ_;x*?Q z^DLbG{})$}s5&@^AhPJv#FdO9%vAcgtZH3y)Wt_?xGKxiozVA^^mQn_XkISI0wccetFg#;z<(DpS$l5>Qf0tM3PG(+jo4sfx7Td#07dyo+ zNBDo9(b!&B`tk|moq7=&6!>J9KU+2Ok+%hn_`A+ObdKBU=h9yBtAsU!2Y8H%c6M95 zf5z${!|)82sx8>18yCi|EzpF6Xur*-@hHcvjYr#B0y22Jd9`Ks|?% zIhvD#=&9lUp(5_H~#G=Mb-fuPR>hf0>=LzusVzBW$y`un8g+zAd8;{YrE* zR^lo7ci4X&vH!B2PK(#N_C5zVUhG?CPgB7Tt7Y(PQ&ChrE>G}6xpELFw!BY%!DN9^ z`7w#_=gbGYK3M&)%K5#$t9ZUr(IIvCTe}{kACd*v%Yu0I9+Ed-e?vcguITew_B36O OibiwCk29)ipv@o39kH?i literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper.h b/virtuanessrc097-master/NES/Mapper/Mapper.h new file mode 100644 index 0000000000000000000000000000000000000000..5d7ae6b20b9a67950465c285f0ed46360152877b GIT binary patch literal 4842 zcmd59#Q)F$F+k83#ArlKv_L?i7|P2}q?A<}p^)zKFa&?Pdd}Rvo!RXJ zY6u}4%I?m6oH_R~cmMt=%d|XyMAx*G<*7Wu@3fR2(KQHHO_rn%oa@q%GhDHB9u)N; zTo1=xO-`}rmR#lb{cyN0o%d8yaNiCv%t-~;EHbGgbME&QRv!-6F)|_ns*;?5p+hkA zU4G%os;%tq^f!;oBp$AcL+-IPA;(v?%@=7iM)^_ z`QW-ufB7-kY$3a1SV>Xkr?5nA>WvN6OA%@I0%gm~lf^uyF=R&r_B*id<%p+@tK{%A zj}qLUIjIzqW}kB0p-Mzxf!%1Ki%o6hd((lFj&rt)c0vuVT|0|s*#7~%wczuudlTjQ z-Xv@)0`~4R_#t;~R|8WSsz@#zrzvbTU@MZ}1sf(wzfs1*GWN{ATEu1RoA8t1FU?RD zeOy4lg=j>`RFj;PDOh}uze>QES)7nJu76Zer4zE8T|^MOdhWPdw%!xp>US6TTfi3! zS=yBiAX&s+1E>zMHiP?5@=dl7!4lpyAltwlF<#4!vmY{YH+w+88#Q9S{(LsgWB;?rDRRJjW>g8WzH&Li8fk$Ko?qPk4?OYgPK$r1az=~$xFt+H)Gd3z${j=Nil5}}#f*)pZ0~im%PFM}rAE;M_%we$i zyq;>YE3qCTL|_jZ>!=T{N9}Y`&&obJ+lK3I)-z@@1VtPBu(gUV`~{~{6&E{l9rdlA zZ@T%Xy}1{;=aSt&-1A`UyFgDSRU$;hmAheANyE<5ybkP}=tzdW*RDw~$!Ew`16kXr zA{tz`{UXL3D#oShqRRTcpN!Qk@m%M9Dxd0e)XuyD^a=Vb&-t?Kr`>dwz|)v>RsN(HR4PU~-oNfiGn^CR zHrDN=qcr6YP=Wl<=_Q4oqbz%ix#F2nOPu>mgJ^os(%Z3A;f>P?Cok)=qvN2J&OM;% z-|dPB%Wk3~+xo3@TizI3YTa|T=gvmUBYw5rH46q=>>q`&Zl1vlBiunRI?l~H;mT3Z z3getYD~~bEF6*Cl$WfY=kl^kDcl{aqgg(B3s70uy1hrs#^-N3W!roJH8U1|C^~AfK zi)PPzAWv(k2Af(qBjO(El~I)s zJGxeO6;hlOm399eQgS^ham=y{Y9wNu&01@1a34V7?TpNQ~-QZAPx5Nhn zJP)L@%jJO(z{vFS2WUP#+nj&-KJ9^Tye9MRg40&Zu}WzPjD+K``ODbMjMxfYRVPPF zL&PEXVw+gR0qeJ z#Km+x=pNHy$Sl;udaUibqC@|frwtg_9FIKxbB>|`J{MSB&{swF^3=P}%2-6)LsdL7 z&Z;3z1shCz6S7*LsNn#WR@p7Wy*fv{P46ViS72q+R19y2y>xa1jkDcjd+|)|%Wu7X hy)mXay5?eQI9mbV>i+5IbnG2>YvW^C{@T^h+b^7m#VG&) literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper000.h b/virtuanessrc097-master/NES/Mapper/Mapper000.h new file mode 100644 index 0000000000000000000000000000000000000000..c1966ec39f317bcd8a14c094f0229257d77515fd GIT binary patch literal 734 zcmd5(y$*sv80(6O@4$Gv=!~ka)D=|!b}NV0{;#jej2ZHC zoZn)NJ?7@?c|QSX)cl(9Xj}j89Cv>;QncvIU7Hg$D48nf+m1dJPYp+>)khP#p(Goa TUC*35G%LQ~yf^mAb+5Sx!5>k} literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper001.cpp b/virtuanessrc097-master/NES/Mapper/Mapper001.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9c182f9cbcc4570ae09decf0862ee33f7ecc5066 GIT binary patch literal 14678 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 A7XSbN literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper001.h b/virtuanessrc097-master/NES/Mapper/Mapper001.h new file mode 100644 index 0000000000000000000000000000000000000000..dbca37af87311c8dcd4ec025d480bacefc8a803c GIT binary patch literal 1312 zcmd6lOH0F05QWb+g8w1QDuN2G+FgBs(1)~25fMpW8q_v4sV++Yy86vc(nJXA!bKU{ z-rhNL=FFM<`EjW2i(TzFRleE^6cH0GbVMA>Cpro>Q^M^`W6il~6Q^0$5dRrl80V=oGr$n}&h9RGe`Ns2-C$;M~-$ zu2JW66Mzjkh$+n}!tx-R&Q9md|1odeWNvc66DyK159l1zVt>t`s_XtVfk{sey) zxZu;hryCSBIHz-#XUwY$KAWYbtCI4Fn_P3bwuNS!^{=%yZ-lD3^K9h4$LuHdA@|SA zUQeP2$8Juh-lw?SQP1r$;r%>qc2nfusS5N8hi&_J)DYB6&p$GaP`-38t6Gn}yGPyW iME4auF*-v{(PHl+#SY<{mZmdzLUwM7Cz&(rEdK>K>ZWG^ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper002.cpp b/virtuanessrc097-master/NES/Mapper/Mapper002.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a23301868051e321f52d634627b58416ce751f44 GIT binary patch literal 2462 zcmd5-?{5-85Pe_I#Q$OY#Xw>s$Bzm%lGs8G+NuR>qhFc>j!Hx@fInjOUsvDE-geJ} zqiWPNo4vc-?#`QeZ)W!Uw>!9g<0fvXR|ZFj@Qx$K93_r23{LO_T|DKQ`Hw?ba(-Pm z#>B4=m|=_|f;F7&Vwa4?Sa2>;Kv5&P&}V?2{(Y8kdWH&FevC8hk^3p$aK9n*xA_e9 z>37z3Uk@F;LL1vWC%f|3L#`HaPjSWPfXYVnXn@yTxzAbpX|;t@>fA+(I|s~wL9%PA zv23Hse>1!#auW|TQS9^FzQ$_tM6-YljWix_&7ywNsLMoXpieIv>Z!p6&&Wy1MBy&N zgx`V{5!=w#1O8bussbJ*yt?cNc-DJrSw7&Yh#tq}tczoQ&8S(dJ{{23A=PLrcG~N& zmzlRIf*5ycyMj7)_|;b{=?GeieNMzF*N*X?xC{Djs9Rnf|00H~lxWcZGRKH94A&?j zc{$Wt3?ZJ#80waIo(buY6*>*PhcWRcTnulIEwLi-Y7wIai$ zA_G{iY~AM9k)W3teaL5pGwVr@wJv?-T;Gnnf<`;$-!a!jU)!UE?W~IBj7Q$DU+IIV z%I%U091`;*`4vWNmoY>ha?G`l?cpV!Yc&q}Uus`s5e(Nk9Sd8jI`+~KQP_}| ziQW^EJ>3&qFl^Y} zdGqGY+k7AUYF~8p;8lg1$f+bUt@T7aD)_d~ zbD*sXRHf` nKaVLd=~j3(iT|cd{yWjBf8ZytaeUcKV>LMwo2snAADY|``#Nmm literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper003.cpp b/virtuanessrc097-master/NES/Mapper/Mapper003.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0ef3c78dbcbc5f6b41573b0a0f52da3fd2249107 GIT binary patch literal 2236 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper004.h b/virtuanessrc097-master/NES/Mapper/Mapper004.h new file mode 100644 index 0000000000000000000000000000000000000000..f0273462573e8eef52c0428fa0be56832789b3b4 GIT binary patch literal 1942 zcmd6n-D?v;6vgjrg#Hiv7^Tow>j&+dQL&JI(6kg03F{`*rJAJ4wzZW0>+0{^$z~^E z6Q%f2hJ@LfbI<)ackb_B8}|6tnmzHT65F@bMy$S#ZIiWa3G2Xe8(6{Vz=>R2zrva@?M@?jYoF`{f8jm_ z*~a1q9z}9yhuFPir<)$JD2mdy;y&Xh_r3|%^|tF+m;MsiQY_NHGCquJG5Z$k3{mI8 z^V*}vCwR{6*7a3o>NER@61UVpo3oqnopLJ02h_B(4Svs|1#RYiuSK-m~T*|ivnYE|1rH^%pm9X5>!DyXl|CTpvs~|=)I;s4_2Wv zYIX%ueKB6ars-37e#<>-MqI+CJ}y>pskY@5Sk4xsx^$~1TR<EeQRI&j| literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper005.cpp b/virtuanessrc097-master/NES/Mapper/Mapper005.cpp new file mode 100644 index 0000000000000000000000000000000000000000..190f0b5290aeb5f3f98e1ff835b287e3a77dbbb9 GIT binary patch literal 32308 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper005.h b/virtuanessrc097-master/NES/Mapper/Mapper005.h new file mode 100644 index 0000000000000000000000000000000000000000..8f663936bed7e53684121af9d53fa88ab7e75ed9 GIT binary patch literal 3304 zcmd5;(M}UV6uqx&;y?7km})d`E1-cVKt*B;gqENoq*-Vwjis&aRzO1hBtOAl&~Ne8 zsOQY=bY^F_EgB!lrtNn3-ZS@}d+we2{p*R`zU!{sQBf77Dv=CuwPYwEu0<)}+LDg+ zB*xR8G^LLxRb1=ITUz}8i!7PAZX08a>sY$rYJ@AuWo;Rp3}h@vu;uH;&wbLBujqKX~VGLT*1jPQx2 z2&5IqW=-Bn9cyZv2-X#Nodb)}?8`QMU*L{!nuv#yXnz-fA8$HJJK8(n_Yu6!dIg|G z@QCIj{u`Fhz-zF22`-OSUYp>#j+ICFAK@vh*8@K`JKujtc4SW)VCn)0A zcoz zQ2A}-8OSEy)FyVd#ELqi-U`5>uEzN7;a?qk*#k=}xYt^Ac`)7VrRWdGh#YNJPpLh%G*fw(<4OcM^Ki>VxoDP!ELKt2hbCzRRdY~!3i_YMzxUf z?kS#F?MO{LMm7s!@kR(S`jUImfh@>jPDb3F#>ibO)92T6!dckP&7~xo3E%ewEOc=- zk`5!s_8IZIIq@tx3_r_cI6^L*Cb2^8qbJyf{RGLaRykKMu0N-f_SJFt-g&yQt54&D z>y}mAJ|FJd7sy<{H+uj(#iE=2V7ApIGCzS|en*+!FbXhOwl|H%bd@n1qxdqWh^v)g zGF5`4!VP4gRdN6h4xzc{iRN5xOL&(?)l9f^ir5>daTT+!ir+O^#h&se2a$H)!>{4b z@JCo2f5Z2e&}Tl4wF9gT;F{=Y?R#{fj1O4XOmKFH-^I*g0sGS~=IJzlo-a%{PxIfO z;cs@%Jm2j6u~Db@-E8HJB~M^2L^w=kXLs{<_<6fHo|au&S-#a7=1Ny}s-Ca*zn-kF zCdlPtqBPzwO*)ACLI*o1cih%wf3at;8lJ|`2hSPrQL%M(l9<2q&pRRcxHZ&y6+ Y=^&m?wcg#6!`~w7(~CVhUMKzh2cGG(`2YX_ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper006.cpp b/virtuanessrc097-master/NES/Mapper/Mapper006.cpp new file mode 100644 index 0000000000000000000000000000000000000000..97f92e41461f880535cb58876f4277c994326d40 GIT binary patch literal 3296 zcmd5;?{Csz5WcT9@qg&2g-(rhFtgxX;^r2Jpc|Mix){TNMKUv4$0kPiudC19_1d?k z10>EYZ)l<1d+$BZb3gj~*HgNG>mfamsC;Tsmqu6vil~hBjC`y;tX;WRX(EfC-tA(R zEUx>;7{_%@Uuj5v@(MVsQH|Q*@DiUfl_(G-Kji9BN1pD(;w|=mq6)3iYuvZN{W+b% z-UsuKaSh{ZHNLOoSwPRl569pkf>W_SOuU8St3wU?Aesf(V<+3$sr5#|$>|v$-C*~C zz6g?OKRY<}rC^xvhvT)FBf0?I0nm2o1l|WYU&IRefomuvW@(OIV43AWAg1e;Tmjd}`yQy6o31 z;d4Ahp$hW%WxY11yq+MA0Z^VLs(D~#8ui{Cp{^tIQrvFVE|2+erq4WL&F5*<>(DUF zp`MrX=F3C2bLV(MTVQj9?B{PgP%sj-2ckXWK0pn%kQ@70yZD`FARjHWlGleLT`P>V zsPam;)TL%FPYIqG0sTZhY4x~SxM)0;e-sbL!ZC3?C9DR$L2U;~Y@4)68~E+UXnm)s zH%-KwTK^xl`pAS+FnI;_#~D`KInC3isKZ%j;=X2j%+C?+s>}3No?FXy)%;8h@#c}A zi8=*K2^P(|3Th)jg=`^@U3BVk)`T)n)K3|6INiTE{yIA9chqbzu1n4_AN9+Xb`IT! zQqSz!ogy~3i}NizNz5i&k&iGjL&RKh@;C1_yTb=ZI%PGJxi&a1n_B#q#XX|918K+M zcbTGk$)Ds-^VzkcI+=Gr?s2m^n`*=FChU1}r8-dL8Wq)%xz2ACoUu)G&vfdKgb`P% z5gntCe8h9cWLmiW!T4BBddwb*G8D zB?>99@%YP;MuaxrFCZG2qtOO zeV-18^c$dDP^r!vS6N2Nh=%SIN=`YaUWkX0Zeh@4>}j`2*Si}%^FGi`i(SS{?YX_z z*cdc_$ KS^665YW))(l%Y2O literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper007.cpp b/virtuanessrc097-master/NES/Mapper/Mapper007.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f974e42c27557b151c51a5fd38a5b1d850dc10f4 GIT binary patch literal 1992 zcmd6o>u(Z46vfZiHSvE~znGe6q!l03Xaa0~L{NiT;wOTDmdK+4G>z4NUH#oVEIUxq zYGTq%W_H<``#R^`;m7xzx_INVE_qg|n(FG9G0;pU#$BbV>V;a&CTFUw;XP&Ne-1+_ z&+DQgW_f+qR73TZ`~tIm?Ss-lbLK)jy5^Of`kH`lm#;k?f!_mWN%wunye4|(HZPYb zcXUg8dZvzQSWWa1Z)TC=Gg##ohgcXp9p(`BX5=^X)A7zzP8okKmDPy6gxHzdzL$|l z59=N$EW?S{azhW@>sa>ocq7j`KI>jQJdaeTL^Y;U zvS{m(KW83!p%KrqBQRu5iFCws4X`y9N$^FdakV9Z9(rrUkUk!+u*E6Q&wO< jWOSacjeEANCvKnXIsuoFb7ESx|EPcU8{d$LVwQdaFvI#b literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper007.h b/virtuanessrc097-master/NES/Mapper/Mapper007.h new file mode 100644 index 0000000000000000000000000000000000000000..21a69fd5c827c872d61d0e852b361407b63a6af1 GIT binary patch literal 834 zcmd6lL2JT55QX101^+{isR;Ha*i(ugtzd=FO>UL{3v=nBt80##u9d#2ytLE#GWz%l&E@Ac+V~D*D z&Tf+;Ef!>_Tfc!=8TB0rHB!CRRJT|KW hwf6p%?>Sl<4VS*iwbpp_+0M6~5{<@IwD?0?I|E7WVe|k1 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper008.cpp b/virtuanessrc097-master/NES/Mapper/Mapper008.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dd1f4ccbada119205fc29e7490b9851af1f36f21 GIT binary patch literal 896 zcmd5)-wVM|7(K6)|6xzsO4$#wC=UxS5{)cRTFrwLVreD+I?nyX$P^E1o$hzL-|jv4 zoU?m5SCK!IP!v@f1_-ew7TCcgTxdj(=*sLM5vcBep;Ef*%3ESe*8v+W5uuQgSrbk8 z%y7>ULx&+wj#3L4OLxQ_L!O<(fsH4U?~U`Y3$ zL^UJw)us9O@>;{>h<*`kTI*aOq^dag^yf V;X8B5)h2%R`^saY@swBU{|Y&JWL^LO literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper008.h b/virtuanessrc097-master/NES/Mapper/Mapper008.h new file mode 100644 index 0000000000000000000000000000000000000000..a87c7cea06c811b9f1b7108e9153229aa3e2cc95 GIT binary patch literal 806 zcmd6lK??y<6ot>0@*gaR6lEiJ!VZO!Ykn@SPQ^r?~W!>J-E}-{|V~neAu5O)6I%|)s zh}{gGBP&yYQZIM#$}j1Zkd4VNHHAMwEu=Og(_r7%N(;Xq5%G*w=vc25*52zk{*3Ti O#1nj2MV!ZOdH*MyN?tes literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper009.cpp b/virtuanessrc097-master/NES/Mapper/Mapper009.cpp new file mode 100644 index 0000000000000000000000000000000000000000..76c18de9633a897da1cc678980c00c8867ce5c4b GIT binary patch literal 4094 zcmd5}Lvr6vl2gticgtr98_HO92IYNIKn6eKbHb@k28&CTx7 zUavhrkWCBh&hE~8GxKKo`{x-wyz!VGIj>^sP>(J#hBTon#!HGZ-q47~G{x+g26Ta$ z4n~t|Zj~+m|6rEXuZPAM`*i~zMqneF!Pz!#(+SwR!e>frwC<4ncHa?o-RvnD&-=?i@a>Rx)=Egb@z_!Nu3KPdZ1&oKOqD^>F$CYn%lQdXGE!{DHfl84WY;ihj9Mm~lQw zcgIx0UsYn}x!MJBOq!_?V$^e49677~#A-W-ZRELzR~!QlX(AmScQ|M45jpg0h)| z(rRy2l#+dAQHmdBP_}YVnu-)fDY{TTmXe_wOYx%&%7Yw~rirVfTs4*1|a?ic5NK(ngRr?s7`xLz`+ZASOcvh{I!?jeWE6Ar?@OS8Rn$>DI>Cm@WVGU#D zt~fQ%YTc96a+cO*t^Hauu8moFvCQkUT0x@9mRoo5PNNm4s$3i&*HaOE_bX#QK6`0s z4=b+rSsg5ckE1#-eynfB;}^b?T3$b09KTQ-vI$Tk5&J@RUFGQ7w!yi!(oDwY3LRZ+WLae1&Go?glnrKd>iQVbipIXNMo2iuZ zIyS|O*H|BDwZwvhs#Vb>(MluoVzPg0YY1yUUpc4hBZu%R)VK7YuFgHKV?VZyl)p0` z>sH=fh2BMuWvsRF=+-&VCtHl!WuRwpmOQB{Ak{Jk#rc3vvERLM7^qFfJ)Wa_!r29W zT|@O?7ZP#gI=mcfzh6fk_4UT>nNr>G`D6UU==(T!6GA=0e!+L?d)d7--!WB`@vp

vVJ@bBn=l`x3-RO0bO$xNJ5o!arjT&P>P>F^Tz)E8JuUFsf+}!RS z+;MO*X)Z_U?%UaUZ+`6Z_x>3@yyr1JGG2w$rXEf33~5Sbs^AUjoJKUJImX5`pc{;| z@ieH4Z~yOMmDI0?rWpHm3nfO-BUqtXjcU|^UNgLN+M!*;6O`+eGU-SA$_Bdu>T2j zhj`1F599GlJYJ2~*){v|oWJJ48|Qswub<#Er!Vv!+A$5F1+d+fpX2WEd()X%FK{WexuakitYLn`6F zGO_Yy^YF@$G#>-RsAqCDFsS1QRg2;nAa9a6TcH{?=;G6p>J}mhy1pq{=W4U z`!46J+P78$u>NWoyV)ceCmGJnSx=v}<&~8sQi;AFnlEf2Ac?blU(d3U!O~XWwk#$8 z+}LizQv4{wvYEls_L00Sr85+drDUkaQv4{w@+5<$?TXv7+%}dzOYx%!OYItNKhTO( zZnnqptwAcy_U&VH&b3jeQ#?0#xj%8$$;@lapW#0~5j$qJTirvP5;JsJ&SbuCHO?nLr<~% z-9Fg|i}2&9rp1r@TmJa@_oSwCp01Cd-y4!0uqeN@_$B#e$Is`tS^Ru{$==~m79&r)X z_-^i3h>Ll?64Q_D5GiCT@iZsX5X5H!r>;IOiRPZ`B z#f;ZPA855?1qW5DqfM%n#>6E=|JK$J*1o@LOx=49;nm3R=w5xDdtAqSY#te3XKbrh zon4LEWsF6vwejdyInXC_Oqgb%CvcYROf`@iIfL?iM5V+}-#CoaCF2guksWb%f!)-z z2Cxh9IAR@Efwf<+r=Es-jj9$>%Vz4W#0W}5BjD$e;g;n@W} z&?6`PU0gqpvR+M-5FG1$#e2rrfbNEL(!k#8Rn@AxIAZbvM28)b40T_7ugPpHRwa#ng2h`R4RBa zn_|Z689gRS6fDrJsiu0UG-b`St_|`&YM#Gbt6U+USfOL}j2Gele#%9amRfZ5 Jb9QsxKLFW|iZK8H literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper011.h b/virtuanessrc097-master/NES/Mapper/Mapper011.h new file mode 100644 index 0000000000000000000000000000000000000000..70a7dd1adc19cd0cd7d33a908b9585ac05f2ec86 GIT binary patch literal 810 zcmd6kL2JTr48`BIgMEh{I}x^B>&@xW4cwr3{Ll7Km|EIy7xAmBzl0VQdL2l}pEP-S zc}-5oXWgGY>cLgTS}3T(3e|eiD;8sK+UWj}4M*SAZUeZd%F zuYaj9?&@m$lbm!E@#8a*Gg}Rtb02_#U aE}K_@+d0SD-yFStzC?@l6kYDnX*dJ)WM8iU literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper012.cpp b/virtuanessrc097-master/NES/Mapper/Mapper012.cpp new file mode 100644 index 0000000000000000000000000000000000000000..058cc9aebef5012b965647e8c5c49c2c462de35d GIT binary patch literal 10536 zcmd5?`)?CR5Z+&1ssFplC3Ly9aXzT4T^*_m%%d-v}@Kf7=5^S%4dOI5hv+`8MtXUh#-+jU&m75J>UCHKV5 z`QN-gi4V1;a(!zWqg?OZ8@J;&T_dBj3+{ru3mxv`d*GU`<#%%E|2EtU%pBlu;cmEF z?mqtS;Cl(*w)+qd~%?44fomqm*0D! z-^Q3yDvjLl4DWZ!x%a%>OTfZw_orKP%Wl;@@cWRN!u7p-p5e*6%F(3Ra4(05N@b9d zuA3c7(JiHrksj{LoL({_c;w#al97Hnr=N_>mm~A#NV?nA>~23mCu^|i09tufa^Vge zL*H3}HTE(3-0gx^bhHEdx0tsDP3nkgpw7$ncuS{=49Q;HWXB_~@?U zqn1`Vh?}?IM{FLHv?&#Fq3Bh9<7n344cv81YY0?d$;B7?$|J0|<9B!yyZr#9J#x3< zK`Y?64j~Tqlgw zc^#@2s5#S@N-EYd8<}oH&XNN(o{?jy zGgbo3ek#}3*U@Z+B&8!R+702N$3wJD@lJulDN*Ti<5jb`VwE7uaHFR zfUhNq0CXB6h<;d@GZh{jFVY4}{?uFSxPD=I=xAVC|Wl^n# z-f8}kR^LjUdLXM39kX~B`iYL_*WvsyZkSh%lXEme=_B5&MG`D>vIE&o>D`LH_ zM19!kf*-pF4Lv~?I15^ypK#yXIN7k@ZU4J^o}7Xx)~hmp9ob}USud2MdTo)pdOVel z`aQax>gynsvK`4DN@*jZ zl<{4mAFmVBxM{>RZud;%c27>mLLJCjRlam|1hM0kE>SQVB1m@73~W3DEVgjU#!f)b z?@UTXEx6+CLDWH?O41`IL%GPN#dn& z>QBWs$v<543k|9?p(u#RlHh02&ukoaVowbV^iQ}z^a&u237JsjrG<9KgjFM4M| zYX-i>ppjU1(Lm+)6cQ|y-M3a#N+;vzlX2_1InL*;&%ospzM@O|UC5z>>zIOwk16bI zRCw64TUo)^@vls0=!mcEi)lMs#r7c@!7Zvw_ z@l4aSu3|k`Oldk-%DBe~sk?y%l$w^*w+mugvqg?pJAa*X2B>Y~EJ2?NpYfTPI_u)| z3|C@#sT=FeqNc-Hik14F#i!$Z7JTxa75b9wo0`abmc9*SbmD2MBkfl7%^PwmaI#}w zDoCX_84vL`!K0-l{iz)2AAEBVnDTQJ! z^r~1U;v%JveMxrEMEA+lww8}x9Xul*oo8OfHNu_K1JhMv&kCtSYv>L_&kA{q7pA;J fYV|E!q3a`~&I#Xxne2DrEJet;S>ksxOMLA=SRx^J literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper012.h b/virtuanessrc097-master/NES/Mapper/Mapper012.h new file mode 100644 index 0000000000000000000000000000000000000000..950a4074e845b4bd2e219835ffcbdd721ef123c9 GIT binary patch literal 1810 zcmd6nQBTxR5QWd{n)o03xEd1$MGd^ItC0kSun?lgkkV~%Bf`=x5<>Xv>UVBidR@C4 zo(#EZGxyHSnVBTNUFZnA3D$q}YlQ276WgqZlPF! zK1YlD*C%#sV~cCu1awF4>8H-fYK*iC&Wx{AAEb>sgI0e)qzT#_eWC+x<1s`^@gAdl zf;`YC?U7x=Ns4WXv>a=T_?IBw6|Y5WVpW+ti^W)t*L=ohO+Okp&yxf{UIHd*zwiDne|u-&M(GSBWu5_(uNBL(pi za@f^AEN&oIy^8zPc(-`&$Ch>?_NSaQHOIbY$V}bU*Y!@x>MYckh5witt9TgRcFi%4 zcq=>umR4@(r|pvG^jKf?T3(4ax2osS?nNZ8Me@r?e$^5G zlI#xYQUO0dYJF8@TfqeFIaa=JX}HgM2U25|!P*6u?s&1p&aX!qYH9A=zY)#dIcUD2 z9KwU?~8&e zdCQYpueUBz@fXJn&P+zXsW@10UP265KPIJwXWCJKCFU6NDdGNsOS{tQW$0Ls+YORB bk)WbVm*I)t@04=CMK8IUlBq9PKmFeU5eI5F literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper013.h b/virtuanessrc097-master/NES/Mapper/Mapper013.h new file mode 100644 index 0000000000000000000000000000000000000000..0ead83a4af2dd4a0d60d6a4539db91359f9f6d79 GIT binary patch literal 806 zcmd6lI}5@<5QL{y@IR!CBBbFOHfwjnT;cjjcFYWvT5&k7c%>WF~nIH&u)`TIw?a{ z%r1gw&pIfCsaq&`)fY@ksV3AHyn#pq*c`nvl{)*LmYSn2Amc!~Cy&j_L1n&w?Y}Wv PANdp=){zvsOELcrn7&wdiNV)e#4)+DL~%BZ8q(L^6<_{bx{;qyL?9kkG)^*M8oM?Upr)p#s^ z7?y&#R*f+e*E70gpaE|NXGIiIA%_EALnM)sle~%ba3!;s^tj-=x5y%cbN-gdeFts& zC&>0TtuHnsHp}M}4g_N)HcAvV>eyloO+l@3#|n;!RA=N3u9;m*xWP4!dDr0lkeAuX zpa&5T@FFNibrW6iw((1hy*y?`UC!(={#O(vYtrPxV0kiHco2kOr;V}aG?ww7W~$)u zl#>%A$B|pSEKV5NCVAbGYz=s`F+{=5tGH=l$?6ducTdF)>l__-U&YNh@s2pt#FHo% zR&i0x$74um-t?c}E2=Z^G883Kbmm<}ZT(txXIDgybzv*Q)UqHO1{TqXP$2m{Uoj)i#dtQP*~^x^`CA}X07>>{{$}fz6}5X literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper015.h b/virtuanessrc097-master/NES/Mapper/Mapper015.h new file mode 100644 index 0000000000000000000000000000000000000000..5a79a8fde0826c27637103222c9d70146857319e GIT binary patch literal 806 zcmd6kI|~9q41}ju@IPF6ilSH8XeU~#pn_PgcLyGb9=;m!ud82{^97a`5_ZWZlgVsy zyEgTIR#Dlj3N(~cj-}eErATcBScKnFLzy<*5s_FcUb)X2;`e4#dg%JMiJ7igYi6~_ zN?)heVJ5kbT7t_!f6mqz&i;Szn2wKp;|r-DX`rcUp4YLTlx-Y%RXNt}eRmE2 zb@A-hxulb}s7mlA@a#DUg)nss1+V;^P8r#h{9I%3eb^ke37I;6PYcb^77%eD-IK?9 Y<)F5{KK6Hl)<--;hgGCS>{9f<19{nAmjD0& literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper016.cpp b/virtuanessrc097-master/NES/Mapper/Mapper016.cpp new file mode 100644 index 0000000000000000000000000000000000000000..71e1d432618ca88e8c2bda2e62825abd65c70a7e GIT binary patch literal 16778 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper016.h b/virtuanessrc097-master/NES/Mapper/Mapper016.h new file mode 100644 index 0000000000000000000000000000000000000000..b09f70d9e88dbe40f9a21b672481311e2797f566 GIT binary patch literal 2078 zcmd6o-D?v;6vglB3jPm^zC;l}qWI80nbu+@+LDb_5s@`nY|wm|Y^tU7U$6eo%uZ%a zwpPT4G9;VXIrrQ%=iZt8ym(;OZ``ySPE~5JEVmh>u(>_7NA}cGMu)c(8}dD3mRY%) z&v`4v{~vNG=(=u>N!M+>nApI++7b^69JpoA8Hd)h1AM%1$Gj0zAK`LaFp@@(w}_v? z^auP0vpam0tzPLCxg$o1Gdo{tPwd2| zs2ZZZ2hV~}X)TzxD+L{UXMOVd^&DiEi0@!hJHm~g?ea_ShbWPT5E+?|SQ)`v{4w?( z(IHz3Tkd-CD#m6VS8>Vp`rcpQ=c%i?`1WzQ&vQYwbUIYG3F@1*?65us`Neq>Vh8Z4 zGvsNE^Lf?tsqGOZ$9Aio4(KX>9_K_(aX=Y$K1+s}=2cCivl(wohlw$PPdn+-v(eMQ zDtCfT@lKeBx-}_WxJsyg@+7BcidAQf6N}Z&ROVKW+OPm=ldzld#G}mL*o$AKFjn#f(`8J~aq@h^VD4vFR&t&etea4C0yrY`$hNfOx=j;3f-+86~7fK2f Ak^lez literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper017.cpp b/virtuanessrc097-master/NES/Mapper/Mapper017.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a354172b152ff7cc93342ebda98181b963b8fec0 GIT binary patch literal 3864 zcmd5^zrEkZ zED5fM#u($erb{}fE=2*(8q}aea5%zeOmkFIp4_NsL@o7p9}@4O`-PThk>28a6WkBz z0`e7b{}j(yJ&oj=l55c}eL_4IpvO|v_hanV=!H6$F-JgrrtBYOr^k*>mamW?6|6>D zBXE(LGa|Zm&PwPT{OZB0Hl0!*zbf<+pL&Xk@o1S2*t~+=7&6IJsXpwCsY72q33F;$ zRE}Z&T%FRyiQg3$$B4rry@Aa(;@O1+v${zi>4VDpt~#}icWxX<&}UnWhhrw%K8GFb za3)0XdqT^I8dp;z&4$Q|ikwtck};mzmd+TC!Yh?Ady2ON9wb>bWoH*soLPrBX-Dbn z`13gtQ1nwQc5FqLqfu_PnX`HdtscC*$l@A-mAu#6_vG~sSTTOv`S|xf9~Ij4J=WEg z_j&~}j6JW*tAbGvz~~4yz5ynOs15%08qrIXrw1zT?DGLCY!7*{kF|xreeZpwY}=0w zqg)K4^eb*It5~z6vz70NI#!K-qK3Fm+g3J2sQ>aDVH`{Uh=VaO7RE7$wM*|%$F&U8 zI<34s0+!S@i(Ly>Twf=!io5b$((%p2l z>zE926vTnMk+~rI!%zGL;^%L5+GdHwvXH;mvnCX~`nU1NLX`Z2sf5No6QT6@% z|C#Qhf1IHPuh28b4g!0|<4GlSCrY&M5@WgjXTObiFbn-ar|YEMj4QQ*uE$Xt0Qb4- zf}C5NKR4-(DKm^zrdxaN{Nl^{bH+wGkLX(EzOjIOi_wMnRC^K%cVvAt>psjgKygRr zIhOlx*p^t4-ejc3Qy;xOOXa0qUTj&7VVc!yjuX?vZsDWM5H35@tUXcIG^e&5-4S%I z%$_kVWX3fRwAB5=(;~Cp#NB7+wISZP88f64beYe1&nyU1n;$_opWPVquu;X$dxC86 zHQhKA>8|8-{d;6~-+5x?y1bk3A#XJg!iwM*N!L3qJB=4#*LbJ@J7m5?y3C8#)&Bnh Dj34MR literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper017.h b/virtuanessrc097-master/NES/Mapper/Mapper017.h new file mode 100644 index 0000000000000000000000000000000000000000..57fd2b1d295689fbf18c2ce96d57c02dfeb8dfcb GIT binary patch literal 1226 zcmd6lPfNo<5XIj$g5M#>DuQ}a+FMaks8-ra@gy+`Sdca*sedSbb@ey9iHT6bi%^Cn zo832W-n`k*k9}=kY-`J@3U#SS8Ida2fev+~kT@ew-S=3pE^POI!(6I$ZJJ}IE7l`k z6-2PswJ!c-TIwF$4D?TLjbY{bYh$`@XB}UM{3~WK)~@4?m`|#?O8$0utXg|^9cnii zL#*`f*sXG)XDv{buo}Tr@RaJn)T)6ie;0@g|JfSY=X~MVQKVsLMnp4So@=Cl~o4?({1+@%q?54=p5xu09>ORVb z=nP;ks8r*|70Nm^Cqn05$#in+g=iS*2JJo8-leufb#}vN+6TIB^_;O&Yi{S7XXesh zbFJSDRSVZ&?A{5}^*+=d2l$lhNq2NUhu`j4`aL`EYJ-VkTY@vk@?TMQn@i^K&~o0C N%<$K{?Nz*2=U;48o1_2$ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper018.cpp b/virtuanessrc097-master/NES/Mapper/Mapper018.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4451d6d6d7d19fd401fcb3d47f2328c2ec7bef25 GIT binary patch literal 11034 zcmd5?Yf~Fn4Aob6rvJfwVIXOyHs)QD86Ku>N`PXTOxs}?z;5CR0cuE^HqBpedvs-4 zdl%WeYrK@%@$2rrl8%m~U0?0L|9njk@A#6w2v$|;1)b0pjt=#xMs-@IDvswEJ;&G? zUE)^@$1;u@Erzo^WAX=kN$q-Q9%H*cz!zO=Q^oPwDy`B1{B@1j4b9MOK=LWPSLipa z>|wM@-_tG~;QP5;*#KI=H-_hWjD-?MnBj0z-l=r#R{wMQ7&)ofXXKKC{0 zoVmfAeb}`Ji;uzI4|s3EhF_>jPiPLhWVNnp_^&lg{9(JL@sN092Y8ie?{H|ApfOXZB&q6;1sQ2$*HATjl!eZW{K$&0!`dQcW07 zR?T~bnC*sa;W*Uzu7Zg+j$X+84f+{6n>gPN*}^Qv_3@hi2vRtYSdOk%o+W=cYfeIi zt)Omx4A-L?zOD9a5l5<4vf7}M&7{VrA)i-o!-GE@Dsg6=hFQ`FWR(s(kh)htbcwMTa>VE0eiK z#GL3Gk2yc@vQd@KTyczk-ffP^yCsJ`87q^$_#cAkE6Sdr^7AemRr%~q4x^uU%MNog zRwi@t-LvQ$k2yc@vQd@KTyczk-ffM@yA_8$87q^$_zqh16=hFQ`FWR(s(kh)htbcw zI#@lzo&oPM+J6KcEt9>a=$fY*$K%h>K9xBdTlpN0gVfK#rjvu-uC*Zc&KRS-`(1Rm zEPKC1ER6HXvm>8{cjYFpy>V`gYcE^N`-}N^>XuVGb$RWL<9$4P#oA)_*3k(XouPi* za-`V~lk9f$?yGhOY!6xEle?Dbonl!b{UNWXbK4KHA8YzPLuLm(rE9!v7tYSIJ;SAQ zSC7%zeC^M%UD?cu5B$uqK9=N#`r{e;NA(a<=9i_!F0)x2_se1_RkGDAEsaB2m>S@Z zrNtdfMr*yJGxTNNhwj!U{Mthw@_>E}`~C9m7`>!*^l$c49in_*92HG*&Z@^4E2HOb zK#dwHUrA@p=05Guq09Orc!oQ9(($!3-{CwX<=wEj1IB)`SW_RT zb!(L8*Z4A*M%J!qxYy5J4zqeVo+O%ibokga*46OhT(Tg4cZuWV5?vqZBWv&cjQ+$J zKb>$LbTadwLcVRlvwN_FbxTai-O6_8LADTAVxLH|jEF15F?61zBP476JQq0?Lt0^;h7BxPPW{tX8D+GTBK>_Rp-&s*JS7Yl%G2y2ueE zN9^}Q#Q9GHuj`y-E%c&<=b3$R6*T*11{El6p;j=xk}&qEVD+#y#<;gO?K`$_@;Kuf zW%%RkcQO3pf${L$+WWyjAN9=)|H6>*#UbNM(RfjRG3s&srEAOcmsL)VL9II$i>8^c znReaOT#hS~T>GSw+@71xDxR%!?5P)7Et#!ny_I@L6wl0Kk9Yr|_Y1qI)clkT%W1

|T_-+!>pTC?QSc*uG_qJ<|GKES>f?BpkfI^lk22R7SN5m&Gv zejZ{n&x>6}&x&b}jh`M<))W=bGC XKx7YRFTL6r5N)i>U(M{vYGLU=7$i>- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper018.h b/virtuanessrc097-master/NES/Mapper/Mapper018.h new file mode 100644 index 0000000000000000000000000000000000000000..c872a3a5aa20e460f56e51f4ad6d7926374db27a GIT binary patch literal 1286 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 a6O?@2q(HRk*6}@%< literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper021.cpp b/virtuanessrc097-master/NES/Mapper/Mapper021.cpp new file mode 100644 index 0000000000000000000000000000000000000000..70547eba9439eceb49d4407a7d4bd1c674867f3b GIT binary patch literal 9096 zcmd5>{cjsZ5S?F*#Q)$QP~@~!*s+^0TBIaR)v8Hp6VwV&Rk=<8t0f6ZC_$nBI`H1k zO?LOZd*^dGRGs3F+u7Nj_uh^#GynYkm3(^F=kl4`Raf?9EN8fmeGe+)aGp#zMV%86koU`mxTySAQ;ZlMeBH^1Vek6dxZ z?Xt;=VT2>u%SOqF4Z+3zKbrAhrwTpAs*081e41+fIL~l+erI#G>By^o_AHcDss6VU zsx<%oo8JVVE%csc3;udDTl|H;UXaUdypQ}8Ys+g?v-cpAyW>5?KFY|F!5B4-Dvv71 zM;TP>qt>V_>U`W?xreKZmE!%kfk73!gFrngoJN)7IrR+^>d9RqW<-gW{CW4IIzqhG9Y-daq4&4Bb$N6}$P| zpg84o1IKf@;ch}5daq4&=znmg4qb0Cb>wq{qLR-I9M9#3dQ{q1PjigY>e+RfA)NzP z6YT4~Hrdzegt4#dHDzC;%I5}-=W;`R)a|p|9D^!$^SMEB%I5}-=W@eZLLGXqO?9kA z&kefXV(Q4}21O;G8#tcJ4fUwBub$=@rPZVL{x~;Sjk#PI?z#FEtIy%c;!3Fh&ro-l zKjR!PpYg?Z|FMjfW2r(ruS&)ft1kXeSMdl{%X(z4BjEXpy9LHr9~F64i*DhsT;o)q z)s=tNc}`HByg=>#8&rJG&~4zS9q8lS)ia;FIwvce&!L)q)Ip!&+D+6ro8XtvWyGhP z%kubGmCo1jbG6>I509f&L$8CXzGo)YhcS=-B!#uYaBjNyLhP+;WLj&N4fgY9D|@jb z&E~(@iT733hQ&R94~UA?4i@X~*1?;|pHMA3XzYT<{T{2d8&A0tG|Rlr^rz3CqC4mm zgsbxOu_D=b>&KlKTiMU7)i*PY z;?vGPaJU!i^O}b3eSR$;qM!I4@g5>>c5aVdj@<(WzKeP0^u)YyU1X$r`_~)TE%{FM zug{|1wLQJFn{5$VbhPZs#?8~CVH5Iib7(uj33!DWREychIL6k#s%zF|Wp?nZ)+ zE$CqhzfN4oR}5{YKVQ1W{7mdYd+Y=M|4f9~D{97#;bcr$lp*r$t`TX^lFc&f7<+H6 cJe93I_S&~I-vi+7wc&kRF80=Wu0l@!1uzL(rT_o{ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper021.h b/virtuanessrc097-master/NES/Mapper/Mapper021.h new file mode 100644 index 0000000000000000000000000000000000000000..9630c951b893b6d00a585272bea8b5e5f9658b2f GIT binary patch literal 1296 zcmd6mTT22_6ouF81pSBe(1S&gMFidb~U-=5(oZRke**(4IQj5c~*p zAVU7Tcq=+2Ls2{UeGu7AmAh3=f0?nA^|fe>Szm2E`dLQ`eq^o0gab`<2QCKvom@U#4)lU1G0FvKY1&0( zDv+t1b})NyQ7Ps%;@zpGQzG{9!c_Tn{EDvBq&vr52sXsaa?RJP!bcxIx;|fxshXhM zdi9K2FY~dczGIt`EgJd!){g@lGD(#7T%os9)tRZrOJj;_q$r!ucyOM(G1?5-YDfKZ zUC@0QKjA3PPZmAPXFSw(mYaIOO*U^nwocE+(|==)s{vj0J>PBr+d5sb^nBqHeND Q*+elqS!|R}^PXn-0_mryg#Z8m literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper022.cpp b/virtuanessrc097-master/NES/Mapper/Mapper022.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e539aa4ebe10b647e722957e4f3535af4047075b GIT binary patch literal 2594 zcmd5-T}uK{5IwIO^dI&q5{leD%}~%342!}dsh2R_XsI+*`XKu2)tR}wt(IH5yALvW z#htlx=A4-wKR?zmf3}DPt;)s`T6m_ z6U;I$aK;*JK4~$wrAU%JU^&3EW@+PA^8~l0BKteaLYsF*C*k~p98a;lua!l8f9hpa z7*%UiYZ|S@aF*K^u3587lsjJusZySgBkxW?4l^#H;8&PszeclrxKVy#Y{8EerWS7n zW_ZZkQ_{X4QJ+4o$B*rth||T$nc+v6c`~_Js6x zdXA$EH&KgZDVzfZ2L67 O<-ZdH--7vXHs=?3hcoH` literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper022.h b/virtuanessrc097-master/NES/Mapper/Mapper022.h new file mode 100644 index 0000000000000000000000000000000000000000..455b6acca96b4cf40e711c55715264b661cae20b GIT binary patch literal 810 zcmd6kL2Cj*429p-LjS`Yw^C4gw5Mu&5*2Kzc$~U>7-;KKS3$(TZu=$dqJqaBB+QUW zUS8fLzlV;l&u(?&s)9y}DzQR8>goXt*icJ-llfBO^{%M~o~g8TY|xYA4EtYZQ)+Zw z+r&)QLZ3`zg|#kDt;Zxvt@Qyefj*zDG3@+*r)g_YjV9%IQ+QUKN*PR#wSr@QMyEu!ARjc-go1@- i-cT2aM6eOB;j(@uxTSL}{Laza#1mSqrl@24TEicC_F!26 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper023.cpp b/virtuanessrc097-master/NES/Mapper/Mapper023.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c7ff8ba10eccd3b5c66832101e32f8d0fcb5c8f2 GIT binary patch literal 10054 zcmd5?X;T|V5bdvz21f=vF2{d8$$Qgk z&5Sh5%Ca_bZLOr;>6z|+{kms&M*sZ%gM4|%*YcIKDwi!ekk>elq$4$%lX=N;{3K^` zik4T>#?@olmL}SAIhXfNHkUOgN7->5M9J*>(h#FvZ-Gf$4kb%qwjwLQ=t$n+JeNtC za-Mu}pBZpG#L)qo2atFP#BSiM$)9qodt7sp)RM_D^mH&rE_dag?Bbg-&>q*iSJ&~q zBziR?Gq{?Tgh+_ShIS-b=7=kfrNxQ`g^gUfSZ z@;-gLb?9s@q%O2#m z(V79z4o;1o*V)0?ublSVPM7z#iGEGT;t>5dm`PUp(Tv5*KzdP@r6E`Gs{xH!x4NtX z^$W-Q-yK78Sk7A00v`_$Yu1r7CzHd{4(_!ePoA&_kx`TKV>g>J-1`eh%7Pa3FCl8n zK{#(SjAwQ#Sy?Zt1t~TA(JjTz#fhRaAdnmsF$t$kn z8FMBuf}fpeo!R7Dc-L1Gtsy&zBWvx6i`o(Fn{wlNxfb&OBB(lyDt$eHHSf`zvkarj ztnn50jl6UCaqghcW@j!F!Iht1uOYkVe~j55{GzJ>M>Z_i47 zQmz*~pIfC=eeoFmo{=>%p6XRSsKBZAFkYYHbq()q-s@t&bGeQq$4ngCUj+tMF;jld zmEaKa(&JE1L|^Y!8GU^(v*@e77`^`JU*`FIiRW>~#acPnc;3gJSI>ZP;n2J!zvmJW z)_YY(Sl_G-Yt=VOgw?a+9M|@Aj+c90eT2u0LvfBP4(S}9PcT65Rmp&PH*XmORNv?f zD9&;9Je}j^o>$L+apACjNsc!X5!QQEMp)k^EW)a9lnAS5#W}9+=^QWjy!r@_7l+~; zR~*tgzK~#m-m8)U`fO?pP<^8_pg70X^K_1vdtN;Q#)ZSiB{_aI5n;VoWrTGt!Xm8t zMv1U`R-EJ7p3d=d&#RB{cyTDsam68>)$z>Oty?3?bP~g6Kjbbw*vOit+{e7>><|rx3F^d07ty*q^n~6 zZ)bz==IUjf&!c(yxsk2P=kyz?`W@%5`8~M9np(Mv*F3FnYUkD3JZr)=7;7!sYt=~p zALzt6Zgvi$2C#lAY6wfmp*j& zDQuNFjf?l)R)DRauOeZ@XWaUDsBb#L>K%4k+HN<7_Lczw#3E!q zQ8LFq{8M}~9u}=IQ>_nW>zMQUW#gI_OZ#<68+kBp)4)YDY8qHfV8@Yq{Hl-j^lVlg z!$)EhxywDs|2`5S_KL8@#&EJon3o~)+`VB`e3Y!0NypfGX^m6Aw8vieg>39P@b=vB OV_VJh(#5d~WAZQPXy!iv literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper023.h b/virtuanessrc097-master/NES/Mapper/Mapper023.h new file mode 100644 index 0000000000000000000000000000000000000000..d1e84a664b1b2f01367a3cb782283bcc50b94f36 GIT binary patch literal 1330 zcmd6nPfNo<5XIj$g5P0}RRl#(>aA6wSpU#gMMNZ~L4(%DHVPtsb@ex!q={9;gNL%D zon+q3zIktxkM~v0-&)jyXXSLDP$?_cSZi9>h8$~OBR!BAD&g)_UA4$LWqR>gr>4gl z_P>^?RPvfP#f(>^dlZ?lf*)1eLWxvQx(1hk{;I8Yc=hwuFtq?c8(_@*pR5~HM?I6Jx1tp=livpst-EiB$=YdWwzGbciN+B%>Tsq zH$E1JOcEEIn{Yc)hnd=BdQ)7lK-qkzgY(*Dcr!*p$NpWNzIpk(e^jw-zf{FFDk(55b@ zzE;_U{G+Z=&)#f1rSUJQ2u@G_yxEtbJSE?|**lTpY+8F&@XLB)1>ep*SjQzSp>@8|gkbv1TEd!$_b@Ax|rzsQ3gSiKI zE2N)vhBe0Y0@yWy*$O^+`V^6=!^$n>dXNcIrLLi;M|HYPm8iqY4J5825*$fDHRI<2 zeBMViXEcY*@8It`^tSQNr19+??giqzm0U7%HQJ^xRHj+HH+;Q-x2O71itQGCGy0iT zV!hz$WceH^cIvB@77u(+t&M;l4WeSJjX1mTac@LwLj zZsMK?$D*07LzXK>q?U|S9{39iK>|+;*oC4zoi~2E-f2y-h6}{egqsFrZB>&VJ6*0;fU-i6%i zX4VAY%yple!|igv9MA4nCU%#`w(CYaPrK%Q7vE7MF1^t5R?PBfHCh^QKYf3Q_lAWG zc885r%eE^?5A(ay%j-rgb5%!U9%fm3wyhKGzryU%&=$-7t|3#yFv~IxWMSFgE1tGI zmqDJ(&&qQa{YNa1o97Ri#XN4Fv#2VGdE7iNW)QQ?BmShJGkSEgRxZ0cWwe60uKeCF z7W{mwh4?8zZPyL28aZ~1qS9(XIK$rjFn z-@$9Y&$?5#tpw?0qDON0bR|3@K0BQ~II}=nlruEr?H{&2_1n12tKqzK2QO-fn}2&~ znmXPE2KI#5F?n#=*P&DN)USBX*;3Tq`qP}VWFaQ$XWf-8#$=F!_g<@g|UtRs}YfCF|@Zf>G zK(^i4-PxJf@2?~6-r3ilW98{uzG6#P4q_QRS{2j>Z_$QqN=)Nro8v{ zqME}R{y&bXl=Ip(#f(?L#=d5p%2w6ts1R$eM{p77-`ZM-h1;);sk=AZ`cOun@ zxV}EBhj^0kWV+k5vUgQx7Z^hr_YREf}1rpG6qF{#H5I9NZ!*( zJu1$Le5%Lf4vCw(*AR9dZ+x&mQQm8PUJE@Y=<)3Owb^P2I?$(6)VQqIn){wE-A(hz zTYuwYvCk%9#<>Z%o;vK*CNo&!1{uosGaWpqU4l1L6!e(i*DdTD#HmJQee&v}pXt!i zO=;_xH~GHh+76ser@z*kRxzw5Zok0&kMTCuFju*PA5*>Sfz9o!v>O(#oZCbN^qaf8 nVqbOc@FvdgbAk&`D@^K6G0*ON>Rs9;=NsWd>PgCVnRWO9P$8k) literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper025.cpp b/virtuanessrc097-master/NES/Mapper/Mapper025.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3340ccd55d1de058ef8545c32747239dfcbb0761 GIT binary patch literal 10728 zcmd5?{ZAW55S?FLssDo;wUJ30)dmwBl2if{@=+iOkfdJ`0%H$5>nc2JD`}d#kyLAgCG+cZV~l>i0rq{_m0E(cd6@@CeL2Nv z0G_5ClK1X!P4*mX4e<033~u5-S-p!-Q*IA`-NFAB4*h*yuH!cuwmxd$y)Uoi7hL-i z=k02GR+A6Ik<8}Sxy=*!^%x#+Ne8NK$p(D*S?+M2w3V`4HET z@uqx>zb*IITjsf-RdIU@ty3Ak_FVtW4du5L@tajoef8GrLF}m?!xUAVOY#C^tjiLV z?t!fyyrKSwz<&xQzsI>FWF^1d&v4SkbzK*cs&)-#IX~i%jpKmpO-- z5m+16iu)L68}0kh>=dmJaWv%7Fxr{3H5}e6#mu}o#8r%yRp;Gnc)RP^TSFvnAa~}$ z{bPLFgnH{Zw+5{D@GZ~CDF3&ie_w7Q(s$u!C+Gh%#$~Lnqm>BxeHCa9@u|yCXl2x# z;rk7I9>MAupF@1_;_PvNb#k1W;A{ohE`zfVujZUevp|{G$#8B0qvrD~{3q5klE z@N3N>{|&$E;GJ1Ga9Mx)+2EW-q;{ZbPj-NE7k+9*w0OKM&N}+`@oPCZD#DuZWCxyf zFi-B`DDr3#+#aEo(Z!r$9isw^ILind;Nb6PF2X_|CeI({&6X@6x>ib~OXmw#m$F&y z1^nN4-m;on9jXJK)1pR~x>TZ*Wyxene0DeH!2Ez<(DlGw|kD#QGKIqm9ctZ(j1d zuU1+)H=q?Wl;F=`LwE`zQ*%qeh#|nxU#D~ZoU2kJn4fO zA_!51K6K9SJgk>-eQ1~XpmQR}+;Paakx_n(nBj#4!{sc@j`Scus?VkxxVcztEQ7&V z$=LH-3D1pD#)IWf6LId*Tm1MK=beJua=aQwwL^K}9mxXnYHL`lcqeh|PvWh_HsNyNtBIEdo@ zALRPaMwLamMTOQCjfz%KF;eaApxq*(ab6{gYRXqGP8#RcF;u8XC7K^gjg@8{bHgb*a$jHuz#;}JaceHqJn=r8}lO6cp2@XS3Y;b=bQM6g)?aE zL)=Fe8Ci)VR#8m{5u0l71nr*Ja@0-C#2$4zw$p8n`s6u^xrjC7>O#PWa-4rX`pxvuqj=FmF$LAoees@G}PbbvXb5*K4?e2k0 zT^(;+brn@{Zfkowx64siukQF9j8eBax0Q!KNG31<4vZ1ac(Q>bZ(cU zu3r7|IY_I&G$Oa#33c^cmFmX#LOR~K>ME+@+}8GVZkMC3UfuCI7^QA;ZYvMz+@4LS zuji^%U!QKRvg>%0sb8GiiaMR!<*2Jye|!$o>falY+cy*H>bWY_jh|3-ym8f4RK>Zi z?djYuM_s+T<8v@d-QwI<9@4ozmr!5NRjK}5G;iy8lc`^v+lo4!+vTXMSATpC((2n9 zZoE3HyQJB@%?8$O^DUDr?N_CHSnoJsqxTkJ?jw^Cc-MZZZcF&$*y*$4* zmwo;og|s-|m5DgtQ+Rd#A=P3`Tvq*0!Ao)eD=%^W8~Xe{dTPzZ)^2U@l&f_bN9jHG zci5lRof7U)nyrt*}6j~HlCDkIXN`^A8h0oWx&BtjAD?!&X zYwJ}Zww*`6k5INN$6BE8MR5Pg-YV(IU&Eb7?#_ohaJCBUW2OkVt(?C<-;**H!*?;R zyS3tQyqK%E*csc0kK8}=V}?EG?%xbn+-!Hij~Hfw;pCn?>x*7d9_M_6CbrVI9z2@t zJ1p#7_aL)-TgBISZ0Sr2cXNFu*OgVR->P4ECHL#f_D%m^JZ3hqcK!y6Y`7g-?mu(v z70evAj$d~x_;K8PoOhRwqxY8V*@JH~nMQ_+mV6KDC48eI#(fyCc8%Kll_InC?-j+C zepSIN^Qvi|{t4AA<0@+XUIT}XVg6l1#$5%2^qEDdmi*P$}+|kppFgsv2`1SswXZei_h@~! H2i5UEGekTt literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper025.h b/virtuanessrc097-master/NES/Mapper/Mapper025.h new file mode 100644 index 0000000000000000000000000000000000000000..6eb1d09aa16ebe3e57ba1be46566072be6660990 GIT binary patch literal 1418 zcmd6nOH0F05QWdSg8w1QDuNGmV|T3zVtvquA|i54gNCZDH3}mBb@iK@-X_*6E?mf^ zWpd}t%$YNjyuU5$|DAcwc~+73ZlYUSBgsa;?U@uF9s-6~h~#N1N#uv+AK;FmGY1=Yq33jYa}QoITN zNGCcZVhhU=-NUzpUDv5Pu#32HU>#P-HC?ZP9s~5~`+U1})d3yr*(+*XrekgTk#_v1 zMffeh@iE)cNiybKhufi=^t6koJ;AldDC^I3h`e?gvl*daME#b!u&-g~8kO}4(M3Mf zp{b)%*F$bXzvb8_oK2_S#+p_`SPguCvH$Ne+g!t-a>et%(wSB{=aZQg{uIQ$E>Ona zTHC2T?M)zBI%r*E?X+moupqV74V& z!03$-gOSvM16OY z6e+k2KyjXgKYP4ZNk`U(W*A!u&`ZEOK}-#UMT!0?p0Dxlc>LxZ_deu!Joc&@baDCBlJva`@TSjnaUH=k z2KY}qK82ln@Xsw+@fn_uVdot=z&L@19nA0HdIUvnzACmcIwzUyFnqR6OBfm}y!AgxBBA{hIyd)Hn0 z;3f3yhd8Dc%ny^G`x)jKH@osP?9ss!@fhJp94V*ejw|^)?7~>*K17bI6IsHq0a+j7 z8vC4TNq;{L`ADfY162cFVDlDP9@|Y=G@k|5f}F8*77g^n*N}w1e4dH$Jn!!(ypx<% zI@5$y#WStanbk;>tfs6_9MgO1Oc6JoDdMIx<=l2lx#>(1H=Q9jw}so4Ii)_a^Ah&I zK@@VN@Qsg{i)Wj7_ag@H`MDO}ZDVjQwpvjH(Cf1vYZB29qXZXP4|^nK^vj&C$fypxtggRUjNg{ z3Al}VHVpOVd8mY}JkQY~bWte}G4dS(rJq%!te=!?WT^Ssmgm|SL#wsLd${K8tFm1r z<+W8sJ+{rcC1bwv+Ty;N`+MKS=l>67?LlVmL}*+67Qi#kK03Z*+*9;s{7S%1m}s$9 zd>B`Z#c{Tk?w$T6Vg)C*m@6%`Jvqf~gl;%*HM5KF!j9ScZmx;#WZZpK_G^lBdx-O8 zRX)P6RcilYt6MBRg%w7KCGFMw@Q~jTYgT9No7det`I_5kwfZS{Rx=($=19< zxfEl%A}bjSs8@1@J=Aqb&tX3{A0|a8unQqV ihL>q-v{@XSmWbtP9S7}gY+oXlr*++(whXlxo&Ny)efanQ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper026.h b/virtuanessrc097-master/NES/Mapper/Mapper026.h new file mode 100644 index 0000000000000000000000000000000000000000..82d6093813dc058505a03b281f763a8c0f355647 GIT binary patch literal 1258 zcmd6mPfx;75X9$-iQl0|G$j5xcz~0jCPWkiDDh+}kl3iSmSSQEUtRs}YfCF3MsMUL z<+VGrJ3G64eI980&aQTxDo%ntb*N*V$m3ip)Rf4p0^aV_Q_DrFy3r}Pn)^K> z7Q=jZ>>1BJ$F>arKju=dYug+%T_e5V$c$6j=vtkgBhB>)E&%=0Tg$L;{gp9w_hnPQ zD*S7mtFL{R*LO}&mGEXRTeb4+s?;tphFECnvRmZ}GYU~P=GJ3QHmgKcGBq*KoiskIMe! z>>{7}&|%|?t|PwW{g$~MG@DO<|bdcHd#$B rS5=@!6A0&vrG5Hv<6JTc#}-$GGl)O=+C1J literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper027.cpp b/virtuanessrc097-master/NES/Mapper/Mapper027.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5b44c61905709549f924402e538c644726e194ae GIT binary patch literal 8444 zcmd5>{cjUT5S?FLssDq2ik#4@b`tVcs6?EEMC1cv1ZpdUz;VF}IB61Ss+NDf?Rz^n z-re)woo#H2EPvh2&dz&pX76tH-+z9PukZD(eB+|3%aOd2OT2n=B~4kDb*ba^NG@c6 zGw-F3f6wGp+OmpY4S9|;SMpBI@NeIZx{yWu{`?nNvberB#u(Q}AnyZrEy3BAY=NVm zT;qKMmKGh7zuad{esi2Pz|nym%Ts)l)%$oi<;U#bJ$!Fu|L({g{3EO8p$5)-@|fH}V+Voq*MsvVshJgzs(m9bgPOYsz={Y`ITwx#8?O zVDuN+mG3c*R>kLAIJ+3Jv4dPb!OS~gunUY`SdiBNV!DRMpK$B~6~JE)b8)s^MNntc zpbwQ9t@ot*-lA^SF-IGi+F2E;vbC%NA7Y+Y$g4j1zJ`Ybyc+n$>brCrX*Sgmr;kmU zW6ljQmKq(o7~dl1GZ)D*cAJRHRBw({vSMA7tFM(+I2ij1%&l$t86587 z*BOrA;7tbU-Kz9j{%~Gc5A;J-Il3+jcsJ!1%r(K?o*NlfcNex?J8I5q1D||tWpzvC zRhhWL%`4aKc(ve&d~IpPgq5}CaD`|rn>qdyqU<667*`nUc)nLFd~5yF*K07;1OD@2 zEwLU$J{~0as780UG=luB7Ee6$W@2W~*Fv_2-@-Q{T9!-|Cuu`BYx)P_!vWk zt8(bZhdF5|iP#vN-v9oH|EjFeD%Px64(ijg#-C>mhxHp*F0T!yPl#{4`L`2UY5tqT zYk$Ml74I4Jn5`CjZWW>~f8*U4#^G0~CM^7wja+*L^*Y@uxJt)S#6I%a=r`s~akY}X zRpZjA^Qi6#@2pn80G|8`qPd`$!d&t9a;=0`dThR0>AjR`r87>a)k;#UYFx9`YH~bj zt=c7ZwVcpOkIh#ry{|Q`bjC@wQe5e}s>U^2ttQ7)rd7JGRuWq2vH5DX;_f(1E1hvV ztjcc}AO^zq6)lNxWttPb6WAoKY?@vuDopDmF6j!>gs&UO$tI6?{X_c<4y9urI z*nG9pJ9*PeXPi!}bX`^BN^4cey~T8Q7n37OtF>EFS!)Tk^w@mW(x*yOOJ|%^Eyb0t ztZH1dR%>!ZWoo5sYdxWs9-FUP>(Mn!XPi#0bZu4RN~<+(WlfGJtra^pqdgeyjpn&T4qZ>(+En!Q($|`7U1<9l#H+1KEb}EBE~W#PtQ(33!4TkI*-Gj90#+$EU06 zCoV-9*O_&ILo9q=Ek_xvSo~C3v}Vo=bD6qv#v1O??zl%DpEHG<=!x=qdI|4*AIQ4t z=`J``3cI?q)w>LPyb2X#w=PB49mr$U&Ue~}=g7K2)-6@+HY&B>VCQ@$hP{$-ucC}y z+Z~xF)7C*BzvH}*p30x-l6SLe)_tLC*AW?@*4aU4-!<+qTW`;pDayxDuJa>D`L_KE z_J_1@7b;~lj*jC_RDNAlow$ovoZ+^D9i!LDJs{o5AnrHdB)$fvRtN1#sTX!i&0q0~ zSlrPz1Ti}9!}*M}Jksy+mF}RI{SoLoZqI=GX^i#|i2aVj<%rVb?ip?(LMo8jGrWxU z3+;}KJBWtLFwwFuo5On$<0H&38$;U`u8l7+f;nThF?X@G?+BUoXiYDH7u_FSg8B=% z@^K#DpRkdBM^Wb(Ux`Cx8uw(ryb>Yz%9?3oJed-PGGv~eZZhpvvQcIobMLKHr@Xc2 YUVG@~y9K^|Zg}5*b+t%}wF)))4~=;p*Z=?k literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper027.h b/virtuanessrc097-master/NES/Mapper/Mapper027.h new file mode 100644 index 0000000000000000000000000000000000000000..34a5ae7d3d87034b5a4270aeaf26b356fc1e785b GIT binary patch literal 1300 zcmd6mUrPc}5XH~y27QNpv?+1vGR4MKm%5&SUcL)zI@iH`sxvRQN-y=4IOHaT|sRkv7XiC zRB>5-ZLt6UGLM(VnAekuQ8@@%j=HX??3?Y>YR4Szm=J7V2BBCL2 zAHVBl9I*???h@N#U)Hr+u=BYIzy|EHT8sTE%szjPITr)-4jHZR}^c&$%Og|qE4P7!piG89|UZX5~ zUeC0s=^{7zfSYXQd~OZSrqy3_O|Jp0`fk3C`*!g+(J|BCbNnB4qXXTht|f@f3lAk@ zz3L8a?BBI_7|#6tiR#dC4ANAMf5F+SAK}*H43l^`?`MBTAH-9RmrWGmQ{q}O%`}aF E0mdY!SO5S3 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper032.cpp b/virtuanessrc097-master/NES/Mapper/Mapper032.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ca26dc46a6e60d4a34e2317eccf95d3e83d7bfbb GIT binary patch literal 3288 zcmd5;TW=Ck5T4gH@jvWSLlcQhp{2!W09ro-6 zc6l%%C%f#PIXjo{n+t#cJf_WC59xt;<)o5=j{4 zFR5L&x0Ah^qi_-lus>}Gq>B3 zM{0Xam!kiCVLhpn&--N2nXl>7Nl#-N9^FgyYU_vwh_FXTh8fJY5Bf*4~=lEUR-vH0~|#6xouVRasP4 zTs;kN#9>sfZYym{eT{s-zP Bg(3g| literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper032.h b/virtuanessrc097-master/NES/Mapper/Mapper032.h new file mode 100644 index 0000000000000000000000000000000000000000..8e645d132af7c3fab9a42645fa36cd412690d846 GIT binary patch literal 1106 zcmd6m%}T>i5QWb+g71)J6hW)Ic31qN5UrR>aT(j71#LqT-ITt%`pr$!#FB*@p$tjp z&dfb?=1lwjb*lZdLmfC)zHSvO#S&#Y(}m9EV1wrVeRH?*YsVa3oqdQovsw=*x|-*BTE&Wj(DtFdv^i7 zn;NTFYva(Zv!_q3U^T~kV6!<-p#Y>o#h}Sg>9io5ke_Ny{UvBIcjshI@P~TR1a3Z& zn96vIQ}(j$`MRcK#y58rhG%{Zlcef71bwU!P9rkWwl1owjGxWnyV(o0&9vk+fzu=X z2l(ZT?fL544W4Nk>b}K0CDJu}2xpu0uXkOV literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper033.cpp b/virtuanessrc097-master/NES/Mapper/Mapper033.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b4a6a18ae8e90331a3163d248869f67957afea3c GIT binary patch literal 8528 zcmd5?Yi|=r6un=04Bd$C!Wq{!Tu<@wt2!q{`%hbmRzQSBA16ix?TkHs1E-L=MCE zRm{|78Bflg)u5G3u20Qklf^b_NZJ}W>b}N!u34B{9M821bItMGQemz&p1WF@TN=;RM{}yj7UVgRN3i@R zeDVs|ZO9M!ybb*avJXGd)?edU4^Lm&4(qmLLw=TZ`3C#AYVv#?vzHUzec222pN_ew zG`T(#LqJVbR+r4E)#PJ@g*ABwU7pAqaM6XmyP!eD44~;T(TyPMN~75i2L z_7q*U(FtD#?sh?GA9U_uH*vEGl=bj=adhHe!(wj&k8eds21-gX!`?%zCMtL21D+4V z%5A*;FhV*Js`hZH73uG#h1JX0*@YLD@K?j&`OahoG7Ok`gJl>w;o zb02^DZBS8@HmF?%%{o4tK%d*>E@&MUP(%@&lkjnM(+9dK}&r_=tif@c?Cja`hTApKrM`w?XP9WzAjZCIuwe}sQkleq;8 z(-wP>xRuz08Ezkxh!~<{5UkBpIzVisPv7G09XvS(Kuy1*Z#&SX9`Mox&jzSyBrw!( zfEqE`g(vhhK2InY^MysdG*);_pwuTg{gj>ObckrkH#`eH(B_Fq3B7x9ZHpWj(USEu}R z24$s`uV1{{$e>T`0oSt*|F{=a&X0Iwvc@$GXXoeSl@9kSx|PokEVv6#?vE?Ja?jTP zgJ);U**Z6ig+g|``J6S|IeBDz8GRPBY8R6dHcYd36Jh+^j|N`d#CE1 z()~_H2adOS43S@P;Wzrw~Bl*3>oEd$TZ9?k3shVGSMT9 zw00|xsncv4W4cVM7F}%SN$*r>iK^PfXWO+Y;>7OF=0W=WNG(HpDq&tP;)$IX zYfd7n991ew9#wj4Vkq*u?DXqTtLSLG)2u%8*036{dLMHSRpkd*use!!57Dt?sFdl6 z0b(F~N!~uieM_1(G>)D|47I+Y$o9 z<8g;u!?T`N?wae^UscI^^U~TzCfz{Cd$%-)62X%@Ah$}Y=M}jU^)Zwv?sfdTebdi; zE;5`H(KRpr6s2zA`S50Plp`RIHd{>_*pAdX#Ejyt3~9Ef3eIe8k-nph)<0cLnAhB^ z?!P$p>sw}kS+_Te^SBq|F1?kpKHGm?nDonrbt2mLc|WJrr|s9@JZ!&qZ?>P3=t(ut z+B&VM?UsbU3+DZq=UgxRCZl%|Mp3&r<4mv3rl1|QQP3`IJ_<{r`!@>OP0dH)YC=J~ zBBP+TD~lo)|MEH({hL}T^>1}5sh+8qO-g!u9^C4k?pC->wA;t~=tumn@hG4o#`E6z zzH9>-j`_WhKaB|2NB_EkPyYJHIYyE^vX1bZWq${E*Ss- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper033.h b/virtuanessrc097-master/NES/Mapper/Mapper033.h new file mode 100644 index 0000000000000000000000000000000000000000..9e8efe2c821f4fc4ce1c53cb157c0fb539a363e9 GIT binary patch literal 1326 zcmd6m(M!Tm6vn?-gZ_s-S_Bn6MEYhK36`OTL`1APY81NW3_|?ZtKYeEZH7oMfm}AP z_k8D^?|k3g*XO=AZ*6PKvGQ~&Uok6Gq5~bVJXW96NU6qde@f&~C%i58U&~a=d2O0v z#w*Y(s!Ujwm8#WHCe~Ds;3Ck=+FFH~o3D(ixsz4(s^nj(sh)OST_1l!jqt?N4v%#! zdsn4*fic8Pb64FuSM-jTk%sKL)S2+4s#2-GU{J&dbTaQl;sbTSpHa;xcSvN9eM7h0 zkS4n!=P6HK=Xb9Q_@ZaaubQ;meCdznZ`R2Z-a~LNMZ5@n{W%^7K zE;u(}*HN39T10w|iQ#$+l+9;4cuu<%ZxZ_1?e6LZ{&n`5MrD2S?4q7=Z|k}=cg#u7 zxt!aEvnlo0T$?wB)!5A!xc3lmGaYiBD~|t@?sTmCC8Y|4xu2rz^N*uNEF%9+4=6JN uW%n~&g9>0X1!+nqYjE~8lso3LL^zcBmCsS!tsXT~bTs#0O80NR=<^LbBB%2J literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper034.cpp b/virtuanessrc097-master/NES/Mapper/Mapper034.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7746ff44502aadff31cea995b8d12775366b953a GIT binary patch literal 1426 zcmd6lUrPc}5XH~y4f+oEF~QKag~Z-Oh3GFTiN46DD~h0zQ9<<8t21+3*NqLgl|Y8Q zy0bI)oco*m`BB3D#UT#VmBkeTJTO8$qKp&xu#9WWu;7bVUSQ68OZG*sp006aRqHx9 z#{f-Eqq60@Osjx1)fLZ%jwibR-CEsC>?!pYk<-X)T#p>a9mEZ8Yd3Am1@7ghd^Fba`saOu&wS|B_r+?3cYpnCd=J_s=tp*ejDUr2L9g zv=|Le%n>roXPMBZ3rAQw4eseTq{950yX4Xon<v?wa|WN)H3jZg*gxSAXSqQSoh$ye9@W{D(%^iU|skT5&@ z=FOY8w`)tU7j?aPRe{EG%7{cewe_j40wPkX4L417{Ml;%9p=(q*Q+^Zx>j1_$eyS@ zb*+a(nT}e5OF=(+YYZ2^Ulr5ym1le*{gH;6>cjIo-Y4Nr4xHZkY+Cj0LS~m3LtK=5 zcAH$&Nn2FKWZ&@Y`3?$U`YIHZ_j4wt+$I{)a|RV?t_ghuG6zQtqCwu*LNhc5R2&_S g?03e$aoGkLGq+yV%Ku{=xYtv*v-wF;%Zsgk0QCZC`~Uy| literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper040.cpp b/virtuanessrc097-master/NES/Mapper/Mapper040.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ed8b98f9bbf659b261ef4b1c931a916f19c923f5 GIT binary patch literal 2262 zcmd5-T~8WO5IwKk#Q(5Qq?!^}!H=Le5w+3!4UI;LAqq4S4MnhM)A-lbGqXGFU04+! zH0I{sEW0yv&zw0kJUve1^Q{SdQB*#5agH`u104j&bNgInzAs`HKlPWqdH*FW8LrR9 znBeN+51OdMOW~}50!rkt%YBQlnAA-E>*>*}gBw)&twpvkaLp$lE8GE=25hcr-5UBX z_j|00L_gq7`@~SiBDQ%J8MB2e-s&TVZ#?I@C;O2Hy>hJUpkH47=JX8oTySE9w>R-y z?>Oq;KcjKV*up6`)ZT~XY-nTaVYH&P80UjB5uT&)eN0xH$<0>x_8L8rAtt zm?+`|zZ6@Y?{B%~Mu~1XySURRHC$>O^Y)RUZGd}v2fD=5&9BC2Qg2VK79*=dR8NoZ zN2$BmNxi$s;yY^W#J~EqMwN8PYzc>oD}1W5?yFS50a2AS7t@c#xu8dbsIL08_ZZPd zxjH7wd;H*X@35SbI?Z7rVfAqtt)*o2HV;-)w_1aJGOX8m)s!hIqje9MxvS#zI*hCB zP4@af>Y^6aevc~lsS&AWi^{MWk<_wvsMRPrZ<6XY+bq>)_Ho?hXgax?mzgZtrR&v{ z8u#-{mLbn(??)PcP1zxP9>!&{OtyOLh_ZIRO^O|MPdpdeT0M6nv{7MY&-h*@v~lBd zY5g$8>TE%3GsW4EVeeKjGvsNkhF+u3w;lf9$TS)ceHvc*@0MIFGsADThA^~xDJvKM EGZ{@1TL1t6 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper040.h b/virtuanessrc097-master/NES/Mapper/Mapper040.h new file mode 100644 index 0000000000000000000000000000000000000000..4043b5f0dfae64253cc75217dd022e3e148bd5cc GIT binary patch literal 1188 zcmd6lK}*9x5QX2hg8yNURRl#mwYQ>TrCMn##gnXQ4h3mrS_LWn>*_a~tVv4`UWBr2 z*qwbd^WK|$f1PUo)}ampE2leoWvo=W&UC?ctReA^&UG7Z7Ww~WE=6AZ=9uwH^omyt zR%54YEj-Hft`~4q(3{>`g;mg3$FxFZSG^|r_qt*d$DyugKB;C}ayw#MxBBdw^sX?5 zSZN)qTjz#8G>6rM(||e)_EJqMwMz!o` z8LZ|(UlP6(=3Dp}oo?V$t~WiSZAN|j%hKQJ6|Pp8=xQEGa6=c!nzwGE-Z2o!( zONQ&eF($Zf$we1!1T#1*pny6#yx|-ojf`gUpld)DJGj6x`8^?P8=STik9Q)hskKB3 z&`>`$`rK!REMt zz3qnJaq*?srf)bsq{ewfto(ack7|`3v$o0nV{&AuN{O3JPaoCQFgpaMBFW}0&(432 zxl2XDkygd`mTI-i8v~9Wr|8t5?DD)!J5hCAZ~NRjd~c+CB%(+AnaAe49)GS(!TeiI z8k1Qbb%_+aLk4A&I&u{p;#Cw>Kt25fK+< zNIRK1GjrxlKHhh=ezvI%&nni1oH8s?u00)UUomz}^hqVLnVxw+Qd=orJLC=X-)1UR zyw*)I<26AMrvi&ss@6e~OfPx>mxBJTt#z3D{hFALkF4s~qW)5+8fx43b=)H10wr%- zJT|R)yB4!+j3MS)`0h42(kqutHO0H8Pr*~FMW=3HQ0K=?O35bbQ}YHY)>s4TPVgK( zrXY6kd%D#KjxiBOg~R)~{|_KKEVEcf5|hz)Pprb}k2TvN5Gy6$JY^mWxxAtSPCf78))`)#f5o55=4uQ2hy fQ!c*Lp;A5a{2z6v1Ko!^R+TAw*hP|1wFvo7slAc} literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper042.cpp b/virtuanessrc097-master/NES/Mapper/Mapper042.cpp new file mode 100644 index 0000000000000000000000000000000000000000..90ea3f38f76242a6f1ed0559a46da5951a153446 GIT binary patch literal 2734 zcmd5;?`so55Pe@y=>M>vic-b9#6qb*z-mj2jkZZ?QIV3S5kpIimsne*|GM_g>`k(F zxg-}*D9c@z+u4~nZ{E)4@1Li*e`5s?6qQ2*Z45ZNND<>1YH%F#HAN5KIp5;^3^)2+ z*8bNJmJHW@V@z;ek&PbC5tVSZiA^-g;gHV=5AjGd`K|AWyHfnXDcAbS{IGSbaOp%EWq_l{knI;Z}L~ z?<&M{sSHcj#sD=?b_@;hrx5FxJ zV_b80%u&~!VSXKY6Lm#_RZP`+wxT6;Vc1sHQ;Z#rWjYa0XUwO|co&&^EJhiIB!|JO zR*bQc<>OT-ReG)3ZRpuZsrhtVZNIY1^*!2&%9~RNySU8Q2rIwH=kZ*h%Vb@vl(qEI zyh?@LdEMZe)z}%IS+TyQ56d>x!y->%Jtr~ebrNY| sFP5QLCR3LAYI)o0nD^QDM3L>1S5zXxVmqdaoHE>n#_FZmA1npbmr?bq8M5a=G&nWL?TX|l?YX_8WR2Yr3@ zn5)ap(6tzDSfXr3^CEEna`uzaFF?aUFHF!TE_|wcR8{Zz%!{6$Ym=vBs+sGxJv5tF zf2}pYQdBK`zR2G(`z?H|oNnM#rgyzE+Z=xT%aWh%{YFLbtw5R=S&6GUP4TaAv*@xd G@4o?}MwX=j literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper043.cpp b/virtuanessrc097-master/NES/Mapper/Mapper043.cpp new file mode 100644 index 0000000000000000000000000000000000000000..78e36fa36cf42ffa2f593ca19996c986fc533e36 GIT binary patch literal 3720 zcmd50nrM-9FXI}jIeIK{)xr;k$Rfv~pDndRjo^POn=lV-d{{16SGP`bD z#Kf)(oT7^(1UWHV!3vs;;eelW%%P~B{L*(ou0Foukas;s`y;;aTZlD&O89{-J`XdL z9qJmA`ka*gnATB=Eddb{O}o_kn)V!`ffsylP<{_5v>+ss_xP^xQ;g+jxvIR+@|BgZ zr0<%(A9ymH_AWlDj(4&CvdU>;8y~Q#^dZcDvo@g~wYKEx2ym(KaBtDLf%kYzxszhw zCN?{a+jq5Wk8x?@38l*Ukw!6#it|A*SRxYggjiKv5}pDIDH*H$B^>pbqsWuQ(;Z@x zSbN4_=P`mkVm81c)_HP@ulnt23P;Ht%Y}ecg7J`ld-U97?W_Juq<@~sFX%}*I$5Cq zX8)qzn0G}S#L|=4X7$X)_7^=#>$JKNTbFQORTZ0z)gC?QYA#D&jv^y@YB39mRhzVJ zp5^0}cvn#Gw)mDB5**gzs;cp{5@o-S&w%+Mwsi1W^Tf0{StTs1UY{c%ZCfilP<@go zD^a}$#3g%MnRr{Bcw0-|THQ>l@_JOKewB+=0sD;PPn+E!$*56l%QI?}IpOE(^ct6D z)aa1$eVNwB`ivTvX7+J;Mve6;HM;s6?UPqkV^WEeI_3YY$I<>^y-TdH>hyEX`96II zN_@VF?qk;Zy{3V3Zm+Q^XxaxdQ2Poob^q-(Jtz~9dZ+S#EG}dN!?6k@^vwL#{K3eHFqNEuQ>ff zdM&-SN8MeuDmx)=!cxO5KT7FYZ#3DMFX$Aia+~(C%Sz62tt*$yqy}fLcz1n_Wpj2o z=S9O1OLy)(O1CK*eHdXq9%1W6_ILXFY!TB7=2%OozHGcwr~V!lGViijpF#GZ1D?ws zZAkbVwoQt8%G-uy&^#krpsao3lI2XJ;drO_LAt4QhU@u|XSMvFB_5f7=7rIw?R2!` IJoLTz3wDuSY(+FP+=rCMn#;z?qfLqXb@r2e7wtE<1+Bu$hkA_!$k z*`0m!X7;`5``f-YZ*6PKb>-nqR$ zS|zMTt!gbainP!@xGCt*+8V>sy|0RCxkw#fll)6{abnl;`uG!Srj*kTpH-`R*Q9od zF~m|U$8MDydeWS(ChUgrBz&owFtzgzI=a=EdfB}XvQNe{7*97Ekafb&;uAWt9*WG8 zxvLkjF?CY->ofPrEoymi`C$ET_)4yydifjU-@5y%0qN^tc(Vaibh%{+Z97n~jv&i>c?)!%)|F z*=C>3K-K>uyW}%1`nsz45)r9$*nF@V_-(GeH=?V#n~1>uPMF+#mEwnQL literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper044.cpp b/virtuanessrc097-master/NES/Mapper/Mapper044.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9bfd6e47fe9e98d602549df5bec78cdb056044f7 GIT binary patch literal 10540 zcmdT~ZBH9V5Z?cD5h&%EsH`2P9(OZVv=pS#aIs=C{CJ$Htq?*^{nS~%)B4&3GN zTHS5CWA_->x^5Z2PVwFJGL)O=L6#KPr^Xm@{q8>C`QN!(31|1+eYXz|&+)l%OYV+; zl8^qo1}1yBdgy)zUtipiS>C_wHeiVl?pOcoJFjmKx}RazH*OQZ zHobmo5?xoYOdrP)Y`2QfA#~lrM`th2-yF_gbJqcmBg{JRNOs&)_dPTmXqw&TOO$&>OEl=i9NM8@^#^ADVYB@^flZSJ{|Ah8^|vfLGe9x99`dfuP=>QvinBQu zXUbIkbjnr(YgNh=k;Nz&1tC)+5ocrNs_s0n)ndW%KwRnzJE0E~=a&t&p6-ab#yE!E73M9I&-W-xn0ZCkSBGRHs~d zWSwAb`@ruMcCl^^aA-|$Bik6?fgJY~`#u}T89{3SvcozxU-OHxnrC4>&bGRytd3<} z>wc+)$~d#?na`-~hWD{1D_^NXsXA(^kh|~+Z+6|@9OI*{v22a2rj@(!8OzqmI9>!x zx#ikfSkjt(HXKr!#g&A5P$vt=xLpW6$9C+8*yCUN9s4HsECU~3&wa(nNPCXm$}ZxP zRoPZa%uVK0tIV+W&}Zq+_$*qjbN|ezS>*FbWXLxw;7NO~ZDgH4!SCUaL+MAH`#SLy z46_f#oniUzY6+Q@J{d}G4EI^govav(66;=qb=*B)%g6P+W(l)7yJli@X7WeCbdD>} zD)YE%(1?q@E1oUPOSizmG7h~j-uLpp;=Rmj)w^UJvpACoH&3YY2JvS0x5AuIB`rBn z@2L-?Vtg#sC20qQd&QRT z2`s^S;hMpfg*)+Ypz{j5i9Tu|*`N1u^{+shd+L_AZOHcIdD~g@9w7>}tELFTYxBX< znGy@LwXk7W8gt^Mn~B8`Oy;1fcQV;ZdEODSV7SzB^J3=z=P~n-n#Fhrb4>oKm*y(# z;*{m8+&;FhJLS2JovAdpY2PHBAu|oj4=A8(k|#ShtYza?muV zM8n;9il$wXXJ$jQG9?=B$Wt_2BhuAiHZ-eKqT#MQMZ=lrgC-~Mg?=L)w-gVr&I?ga z_7g-)Ltp0XcRhlTsp9Co5az6+A!n>%Lu3+xygDyLIoUGijI&pBW}`U>t5)5dOfhZV zTDe)07qSurkhUbY7fIo97n0KIZ2*{UN_gKd59Sj+_eyNOGk5|U6hbiOMO_p)%Eoz@7?DWJ~t#_xgad#({Hg;7y z?cgYn#-!uOe z8`95AhxnoD5DEHOC_z7rCG3qK@dNr{EMf2chy*<`maw;fM1sB;OYmQb5C^?cCDbcI pe~YE*o2hi{aiMN{XDV$TN6n!$y;G&t>qN%BB{MM6%?9R^{{l^)7eoL6 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper044.h b/virtuanessrc097-master/NES/Mapper/Mapper044.h new file mode 100644 index 0000000000000000000000000000000000000000..d8c5aba67e6f208b89f20e7b943dd64ba6b4e616 GIT binary patch literal 1600 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 OK0l*_=yB=0pZ^2v;yl#= literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper045.h b/virtuanessrc097-master/NES/Mapper/Mapper045.h new file mode 100644 index 0000000000000000000000000000000000000000..7069ad79a23638f4ffb6291a850c04bc16e1c899 GIT binary patch literal 1982 zcmd6nZ%Z3N5XPUkDfBzs%d}Mb$3#Wn*(w#%Dn^karCgIEJ(PI8oGnHC>e}DzX1i;- z1fdpWNix}e=9!siX7~2yr5@jUswXb1Odpi1Vil_ONT7dnhwc6(@aMC=*=b9PPnDVfJ? zyuZy;rd@KV9ojOs3e7V|n_{lQHr4KHfJ%Fu3|(c08_rRtm?@jNZZveeCSFDkhdM@& zEo`rPs(A2@e5UL`2Z@dqJE7*(*K{-G@9S&zR%CVI>KnQ5G1KC82z~3g{3klqhCct9 zfp}`O)S&6N*0Wj@UI&{4i!|X~i1wSrUTyIkB=fqJiDzqJ=l0M(BJA(q^Pyg0q)nk)DAoVhZ{l?q%#r zz}Y+C@2|&L4@zd(Pju*Xyw5}M4U=Z~yf@8f+Q|8GoU!ekX;4{h`~67*3)9Sev!T6n}QE^)*42!|LDH9!~lxHECV z{Pqx+G_U{WnB?_D^<8vO%J6InOY|(k1LpwKm@!IT&2Nd$Cb+^G{XM5^E1VT9kHq3Y ztQv^b#$u9diF+oQtaIP)aBVWuH`>TC^IfBo3(hVx>{DHzxCkzC%-A+@E$nkfRAo8d zOzwF+IU#44c_i2+|FhvgF>D*;YtzjR5p(>%j#C_Alm9xV*4pNM@{X@vbjT^9D|q4D z3OGCMaqAOXd}ao#9QEOoUwQW(-Qws^6}$bb0ar%T#$JoH*>Whb2B${&13dY zzMSHHbH3v-uPZ5bxp~UG_r+WFUn)w9m;Z9d~n7dJsJ6+#lZuxG|{*Wi{bcKhxn;v)mJNS@&!3)EZl+pB_IGU!VHx^s=X6439bQcRg-+0ZH{g2alcIjX zza1XCtv$P#yPF)#SZWo}?dC|Y%q~-cHw0(FQz!C!9{fC#7<2)#~a7&wA!WL^KJqv`hBTI)B5)htY5 x8h#TdUh0rlTTp+0wioxh;oH5frdii#sA6+TziOK)kBAm<_nZEqVz5T36_;y+x!AP0!>CAO1>G$>6=8)#{oKr291PLo~u|3`2*!L9nr(50xi|SY(BQn-6jSXgFgVNY=Ha0Ac zNp7-7)@Ebx@id`RH-F#fvG%dX^2}N?KY3!k?1?q8Czj1mW(D7$2hibyZWmtVINhV4 zT%1azcVOj^VlSf5T$s`y@W}+xF@gtA@h_Hp0P$ff5t6vxcsw1cw*W7X4Bu0jit9Z2R z`EqQOY2xTmq)PD`V{59v&f#zNJ?97WF~6x@?>e6`Mua{YgO*o=j;eW2)Jt!s`Sh&^~`Jaj4c(;POa5*^+jkY!BgK_ zoCUt63~>#O)m9lP?{ATLHZT6Bsa=?|$~Gc5)GV}(Q1CioYr+4e*~%Q7DaNZ_S8t=$ zIhyGDa($Zg=V+p9+x2NOn4^iVtJkN=u%t;?bv4zb8j0HE(%KwNwBoudO=J~eO{?=h z#Ki3y>|UwGL|wUc9)?wdV~m4R7jaFx?JE3-SZ}7dv=+CK`xxH^9rptJZoTm{S!+O^ z6IY(i`97)TTZM~N_6c!O(SNnpK8tzp)Y!gX%e$^hRDbyPYpP52JO_<*iEGg`J*46Y zS4g$@u#p~h)iuYDb)sYRu5Vl?x`SGL>f-Nl(If6-ci<4QvyDoA4{L8ZCKuaOt0#Z8 z*SV}E&c&}ntMXg2zj-BjAG!1wY%(t9ExqwMp1FrTMZU7V=2iM#RDm(&R#Eda9&q(i zrr2~8TvOb1b!AvFDXy5Gcn3%Pv$rIb zr;E$)EhQ$6_C^tlOY{wT$PILP{UW9eKNo8-sL{Z7cYI$i<~dx*Q*6~n&$Sw!Z7jvL zO-_TzQuBK4#dEFmpw(~f?04NhX=A_iNV{qea;`RCJ;bw`i-&Hll%27voNu}}sd!wC z5xm{qOQKIK!zw7NLDeCml-!i&0ZVZwCf*iJo=*L|XNqLea?jPGqT1k?` z{b5^4t4Wf$|7$Bru%NApSi7C0Re}>;% zxV0`+IvKwija$FW<2hCb{a)60&TXGVj^~hqvm&IheKD;O!g1Rdl5sl+6&-AEN5<_e zRK{(;MaJzsRK{%|MEgs>!wq$@eFmisyV{W2tgF;<=gQ~pY)7-R_EN&BdF{yOjeO#C z{W0f9nZ}Zw>Z>&@=Jdqg=p+V}(z-jJf~}(z;zL3#Z=WzUcMsZ^%QnhUW@Z_;34GG4u4WDJG&xl zrx-!Zu~6Biasls{kkyD*hk2&_g(xypEn<-R`>f>B>(FnYj}{{?XjzON(YHstjt6wP zBL;6QVl7&$b2VB2gBjP&7iU{$f6cx8qz<-X*PupS)}Hd&;;ks}k$K8S$ICt$xFUx@ zp@p$@D3KPmaUvD!?6!p_Rcg>KE4qpD>&8mIK3Ppvf42G`aa*(w@!SfE{}_)r!&9;YsaJL>q^8d~ zz9D@cUUEEAcg(MdY>2i?IVj00-f5lak(jaZ(=>ux5i|?kn_~q3~9#Q(5~a4-7NcbCdT0@&UFV2KOO7P)#H=i3*+vX|xcV|Cv<0UgIjr%fZ_g z-hY>U?6nc?L-~rQVP_)fKEt^_&U90!Xj>pn?DS<5R&2n&eVLS!yv5%o$ZpFQ*hJmW za4(v>J2_|0HKiu+r7F+y9ZwD4FJgE6+6&dYd#zWcCAGTqYU{G>!OCq}hTReTi6D`& zX~TyeELgz1j(jsut0})K_^x6itZ^h#0_5eB@z6=rSYOCAFg*(yGtd&jciIxl6)t`m z$_nD%GLh{WysHf%bh8RRYB_i$vfz+Le~-A_i<4xrCU7r($;%A&Sj5sAu;jTIz3KtFf>#(nj)xkvziBH{G!+s6_u}6c>$|1Ua8tf%9e#i}AEiPiL1{%lmeSW`xmjnBWIdiOQ+>`W&YvpMynG?2VZ zW(|}161a#4mC*oa2@Ojl-&IaWww7crmM4yRPA&}iIgv<)LB^Mq^~#(mfm_cT7MbKK zR<^?`8KG8k4bsRMdw8<}HpgEGX}088tiM{4+89Tx(Vov%u4Tb1;JI;qt}=&Jm+dtT za47z+P|ixudt$6lSLiS~IuBJEnV6M3s)yy3wS&G`lT|Es#FFte-iIx^D3{A0uL+rm z@u~PXmb>M}XcPE3N93A@MO)Urj%YfLeQK;_U$`1@wNv?ke((|RnLVu`>kapc*L&8F zcvp>|EM-n65u#_+D_U^VFWhxtfm}bIKk+VLeX~~jJRs|)=hoNs*`yEdEWM3;^al?X BF1Y{z literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper048.h b/virtuanessrc097-master/NES/Mapper/Mapper048.h new file mode 100644 index 0000000000000000000000000000000000000000..c277e264b658e4a2549c39ac27c0926ebdafa8ba GIT binary patch literal 1212 zcmd6lK}*9>5QOJi!T*qB6+s0L+TN-a3)M-uudCm_Bqo(2UWD>U zdEK3zot=H3ABWn$v#TAa%G0%cC7ej9j&!0^d7LrPSea(-ey(Gkk-c|0%m2qQmr7mR z=9uXU^nxpMPGh5MEnG>o&=a^A^t!jkuypg)F)bI_#Mh+$MqQ1x?|6Oo6KTp$JnivW zxBBjy^sX?5SZd|it#d@rr!Z3xetFH;kycA=okPv~U3kH}9n0Dl3SPi;u%fO|&| zypS%pka)&d^8D;|h5mO`2XOV6XH3nUe?BpDX-b#%THCy*OVp+gYwV`Q>U^e%3cVea z4b*3z9+{C-VYpF&vf0c7&-s?Imy~YyvWL1udz*XiPu-icy5h4v^mSXCIU!PNuGjX_ zY%cw^*1SqkHFNU??l)wwxre344X6M4drwt7CiALCW}ed5US0GHDxl8-q#2X)%>QqO zQpoGFA!d1<=&Oe6D=NWkOIzxI;Sv2<6|MV8e)<^UHPNBEtc^hXqrUJKYnxuxz04+Y z&po2NBz{*-J!5QPKhkF+#=5N=j5Y2kCjRn%8}8R!(QDJa?yl(7a4+M~DjD9%PF6eT zH`FIT_nR|JYK}>wCwiy0+r|nQM{w4#&#h+>JfGL8BcG1T+;3Y`?Q@eub{TkP``lGW zkI3WzUi4YB8*1sTUVDCh=8x%yhV2k?4JWId`Ndkps>%*+#s+rB%i`baw8?vz|foT!UA93;{-PDeHXvQ~xdkCK=+(}2T9F_E~3yU9U zkJe_T$cIR$d=K!lYAK#3+~J}sNEucE?G)QJ&N!tvLFO0x&#u&1xlgOlwP>)iLo>^Z zncBTs#`avED>+YgQH}3cY`J2~fjj6-^qPE!o*Xq5z;zObHF5TfLhaua-yI&S_2|!;5+R1rdHkk^lez literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper050.h b/virtuanessrc097-master/NES/Mapper/Mapper050.h new file mode 100644 index 0000000000000000000000000000000000000000..bbf697cf266f6850c71b15b86a0dc53f02cd5e22 GIT binary patch literal 1250 zcmd6lPfNo<5XIj$g5P0}RRl%w(%y;{E7eL{DV}6)awtd})B2Cnude=PlaPqjiwI>& z*qwdz=FOY^ct6zktzGQ|RZf@kN?D0A9qEM6v4+IkI@U!vS>*qhxm4=fHpfiYL=Ski zU_~2UYvNI=C*6aag8u5QF|0y=bxbovHt{vczfy-u><3=Yd=kyHa`MtwKS0U(UIsSBsBLl zIwBsdXZJH}#n?m7%b$58o#W6OzDxpF7tcm0Sa9}4Z4xu|SDJD+?0q?%p&<)s(`|iP zrpK$KaHUPpef4my%gr$KXSiX3G6&6R7pAjh`Wf{c8V0(-l@|Ma3iSz;*%hDp+tYQ; z&6LP@A0tq6YR5G#zvo)NDXQk7ze)JVyq?^La(WRyWqQ;dz0KgaH=Go2!?LG%k~@@V Ju8TWk`2?@5oNxdD literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper051.cpp b/virtuanessrc097-master/NES/Mapper/Mapper051.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3ae50aa5500aee4940b895b54b614dd18b96619c GIT binary patch literal 3906 zcmeHK?@Jp&5Pe^-;Qw%+Bn31kDvD{9Qi`aF7(@*kR51P5t8Zp+?k;$D z$=MT9D9bI&?#}GYn>V|2kAL1{`q~WMs8v3;afCiw7uN`|fDk@g$o39BT(WmFGW)ts zP%^uw4KcCn7FR^111|%!CYsnIhBy2MsNt=8@}RwkV`6-XbK>`jUx1I%`~@|3DBWk>nv-*u{6%?4;AXT0HwRtvbX9d}VJ^H9gIzHBRQYo;!&z2V_H!o^-KA z8}E3oj|1%RoHdS)Xmy7><~Ux(4}8NqM;*=&_{n*4hI!w^smhzw3Q-7fk45&zHMr{X1n4iu}@a^nVp;5 zx2HLjWTa>@pLcaNJBu5dYqj_$8EO{PY4tE-f11;iXq?Z~DETP5#s9Jz7YZ~wUX<0i zn4?j=b{Sn(<5Gb}cZ-Z_JZ2=jjQ)9?T^=zvHiT2g28msk7cLWu`1LQdLA`2m;aJRu#tYf7@k%d69;g4`4cRYl-b;~(<8wBY ztsC2XS8n;*w6%(s+FNRfE!O=>josIGIbFZ>@so1_ezBLo3#(wPu5#;Pyl!=+Tc5m| blK%jy9?My0);QY|Tg^JNCcQ4UrmcGd+py`g literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper051.h b/virtuanessrc097-master/NES/Mapper/Mapper051.h new file mode 100644 index 0000000000000000000000000000000000000000..0e611e6be5488007ad65e688681402933dc79caa GIT binary patch literal 1224 zcmd6m%}T>i5QWdSg70vbRTS;QO}ncfwSbv)ds0oPEemu=#+38bM7?Jkctbukm`uDBmBM|bkB5- zNJwso_cPXj{_lT8EEw3GaJm8~<9F%1+LY#p@QX_(eI_1i0Mlzuf=ymfW*KW!$9Y9_ zHkP5QgU?7~IQ8%g<(jHh)is`}GtgZ_if? tL1i!GMXKsPn#?4rlSYI-fn27)Y literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper057.cpp b/virtuanessrc097-master/NES/Mapper/Mapper057.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ccf84825306093e31b110b7ae5bdf8f4b94ff9c6 GIT binary patch literal 2722 zcmd5;VM_u*5Pe@S=s(;i(G2o5HH?Cypr|M`iiikHD=A7;EQtPk^=8&}ukO@SiekC- z+}V9I^JaGDKHit`|HeG#)G8kbsH4r%LvLxF~g~2^lN@tug!UrKY~1(6~Pvl2nSZHk1*GUi4uKYAop2j zLw2Ccc_+4gzgJOB#ThgO>eaNGN;7E6&!nk5gQh}6(;HWsc+fi+zK6+p9T&mUFqexO z!Thg8FHXzPM=nl_$@*#YV_ekYv_ySzm0MzDvwynkBXz`7AA9rS>W|#&jPOf>MOiKTpPILGxz*-U3{0U_z BIl2G< literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper057.h b/virtuanessrc097-master/NES/Mapper/Mapper057.h new file mode 100644 index 0000000000000000000000000000000000000000..50fd44a4d5c32eec9dc0f08ce5a5ea3b29d7aaaa GIT binary patch literal 1084 zcmd6kK}*9x5QX2hg8yNUQ3Sn+(B6s)LbTE-#pBup35X3z^iulQ)o(Ug8=(hpmL}dz9D8DZg%k{)Zgh!nT`XmXFrAB)be-4W8H?kOX$7D7-FqWV7JaAeQ1TM zoM;YD!_z8(Y0@i*`MCWB{Yo$eD5r&H)LjyJIC63)#8W-#0ga9u57rY!#;&XF(dnAr zHQy#+jMHL|rlRjYg@2|LbvIOsP%ef(tD!*LdORKG!1(CdA#e!%1WHmd|EM zbw5yEaT7HUYg07atbeVwc`H<{f@jO{&e>AuLv(5s^uP438@|K^^RDQzn?7fC-_!|$ A#sB~S literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper058.cpp b/virtuanessrc097-master/NES/Mapper/Mapper058.cpp new file mode 100644 index 0000000000000000000000000000000000000000..01c04d4de72769fe68843fc26507819d3ff8ec8c GIT binary patch literal 1432 zcmd5+(MrQW5S-Tt{=+?$7KA3I#?pddQLso+($bfLSgAz>>94DEn{LnASo0vX zEVl`{z1i8>y?lPuv3s_UJz-_g!x+!B6jS&(LK9|7W>r#NyQY}s^@<5HB=8C}YoUdh z8oqGNP(@8Dc^B`YFJG@2amBND2yuu@K0DO@2@i}n)c$}z5U=lsIPC>ShI@${E>Qx( z=%b5UobzmrOEYRt7u_t#_#J;Pd2(N-+7ag^W38#M8nLn%XJjy@LJ9Y5H67ewAlwpu zpK;lY7F~I2ReH*x!WbWKXwVnewn~|atNOR(*c$B`c ztMBlOI$m9Br7R<=b3zMN*t(v0RQ$iE;3tcae}J4t_$Le3RqdM3$;DHNq8PUJq3PWxG zuZ@XprHe1*{0_DE9r$R`k zrBmSh{`F(-%ZM>VDa6=wZp}=SBV}*Ge1$Vk)Tmg|#A;@qQMMMu<(4C{-;}C-J)~iiIW60=8 z@y{6DC5v0^bF{Dd45CAZcl_<9kW9u8&Tn$Ijuv}g>+CV^lUYS=H^tvYn-OxBfb(@` z9$~_7mB^PIJw@kpxc5B6s7eo=l9?b(@TgqsSRu|mXU2@aRpckmc##feaT=v@u408+ zIX3foWLGPwq*!KGT`XxuYjMn!=NeKWQBTx0HO_mW8t=$!Si^dbwcN|RUh~d5yJMb1rEt9;QSlAa1?ZVZtKSM4KS{=y4VPdD~ieu z`JhkD3DPR&wJP@8a?Eu}@tXX4yhFQm^sJWUP>uV_qZT$17g5iRZoXvN)3>NYzl8c$h3c7P<%;VkjFVTZm&zu5?Ol)LsHyG(uj78aK2-CUv#i_Y-DUJXV{&!KzjE?U)eD+EsxofZ zYPZ^jzNRVBMr-sI>?WWLS%b{=&}fVK_%7xsDZzM9spfj3ZphBTQINCF13hbo`jis~ x*0GC>*0ln+4jjwyEtu!1CRQe4o*EzDPD;+XzmpxcM&^>4tgCNWcMXH(e*ma&Y3u+1 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper061.cpp b/virtuanessrc097-master/NES/Mapper/Mapper061.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c934f6ca3521e6ec289e880a67fe314a0e4ef1dc GIT binary patch literal 1492 zcmd5*(MrQW5S-T&{D*rg4Jck}DJ6>9>t~zT5LOx;M0ldbn8Kg|ANrrns+96tH^nTk7fdk15Ne5L0Rn{7 zaK`T$Rd~|Lo16+=xxFCboUu39MGa^Cx2XLi#>8uCzs1v+(;=IJ>!OWo9Alet7FF)I zujgS;>VC+%3iCeSenj4}FzJ(Jh$Ci-*zJ%$TeF2LT#|$4O+;)Ym2CF3%NbrJ%K-P1 zCymyq5Nj}J-$tVJPmIEVnXGC`5Qb-vsFwHHXy;o^)glLj6XCGXNU^TMEqjc~W1J{w z@3Or7Ozo_%mhlyN`P{1fYu827Ds@`U(8E5>=UcuL<4_gWnsW*aJqNTp|L(;X-Q=fj zS^dTz)-S5*CQ)%h?n;DHNq8PUJq3PWxG zuZ@XprHe1*{0_DE9r$R`k zrBmSh{`F(-%ZM>VDa6=wZp}=SBV}*Ge1$Vk)Tmg|#A;@qQMMMu<(4C{-;}C-J)AQ7z31V1lJc|&a zM-OMb=Ge!9RPru&3)eDx#fVF?LwI!goX;-3f54RSiry zTzQ>U!(Xgw)>~ccq64eF=dRg%dY_~nu&F7ZwVHP~cA%PX6?lDS{rvBg^?L>0Ysi~B e&_=rlRR+17r$kh{MaLDXn0yKD~dL{3#Hvjcfbo(dtE zmQI21``3@TFC)efr4VD!xivFQj+DI#^A*lGQKMo-6RVkdM%h{rms^g+ep9OU^^A&S L#<*JJlt}*rR*79y literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper064.cpp b/virtuanessrc097-master/NES/Mapper/Mapper064.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bdc3f1b9d6e99056c39cac6b7b3618a0de5aadb3 GIT binary patch literal 8364 zcmd5>e{T~<5S@QriSKYlZInWz+Kv+frAUN?5|tE43bdtFWs;Oe4N2+*D607Ch4*$c z-XFKVyPV?|Sx(M(?`CJ-yxF^*egE%Q^6`Bx$tTXMLN;Y6$N22YNV>8t11a$N0lyFB zh5K8`7BDa6xg5!Y^xSn~F8V{3%&(7)G5Yly@$bv7bTXXXkQ-oWPfqYXm3jHXMe>jP z+mUT|_8|}taPM!jD1G@3|5w55q5KJaA^z%$yS6PG^0TZv#=o5L^#cBW?R;gN9Yp!N z^XbXh<6h(w@r77)7N19J1YvYt;BAbKybHz}ftwfd4BGn@m~Zg4GriK8{`gEc@pmMD zflq372%R3_NYzPuhGkredx=c$jxj{$aXY}hg3VK4N6umsTz{gy19*2TJMxFKHF;bz zph~hD3&-{B)hY5Ryxw=-Q(;e`zAah9(Gbz^;u>|eDnFsx*KxG#yc^;uR4*%W4cAxY zv3v^)kAbGO%kr6g4sHkXBebu_eH{M+zAih<;V7YPRayrTzH#1>4_Y+*9IXB=ck#E2 zN=dc0101>OIMj+mb>V?3w}bPhAFn7IT`hNE+k6P|UT-mefH87-uf`ZppF;d|=g|;# zu4m2DTqM0Hl9Zu1vbY8rNo&NLPzk;)2|HC|%x>PfHe+_0sD4^@nq;7zc2-L4)W1p9&$Lb7b*{GO0w}wYLzi@wsX@7Qz*w zF=YLSaJ^ripAD6EBWT^O`BB4hs`5$J;#_J}@yf&OhaPG#f-CfR9c|e2`)POjzD&qm zA#;e7J%KK|k70aiw#qTBS7a*g7HL$W_5UMFhpzLpAh(d4WAvVQbO$Tmk*kA8u0B{1 zkI?PfM3p?mXFXFJO_|AOJI72e-`XX#?1dWn?^LWBZ{8Cln@3<*yRIAZJ^EP%e!s<+ zeZv#{3j1Gv<^Acn+PqE`N!>B}Q)Fy}{+Fsq=MG~ht_t=Duez>dII^kl4LV}`&Ku5$ zlP%nG7TB?m`JQ~o!r2`*l8-KbPXYaDWu#;9PMz`M$QGbkZ@u3BO?adrsx|@nrIQ3&$mOA7}S`*t56Ug9zV~Cu7_v;+YWPyYPnKnGmr!-ZipH3NsZV z2PLG{T!>mKp~`Px^nJO6^I120SHRUg<|NJtS5O6WsEB9aY6bVQCRnrPb*%qt3q9;G z)>-JEv84Itj8M0qbRSPn?$Vqu)0P*%A7i<<7!2XFZMjboKHEfunKqWf-1?XxN4L{keX+UMEu%n#AjM2hy=PSI3GijK3(J7~LFAJsN&A2M&l6rwg%10MkV CE$=4) literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper064.h b/virtuanessrc097-master/NES/Mapper/Mapper064.h new file mode 100644 index 0000000000000000000000000000000000000000..da7831dc74dbaadac4b61cabaea0c88393f0099d GIT binary patch literal 1422 zcmd6mNlODk5QX10g8yNTQ507^=*A8IGWl-90h!kUuu;1tc{2^>Uz9E(s z*895Uh8(d9IZv25&(Bx~XwgH97q~o~QqdLvKp##`%fqVqox=%re^6~O;WuROb87l_ z$*=THaews0#R1$K2=?)fflD&S_Q6^p-dOk&vTk5^mITxdlgMx zQ}-V0RNJbqxp&EDH8*rw(W}qNw0axlYzqI?*Xr$)RnPS)aNm$Sk?N55r{?m1(w(++ zU#MJKW9+YbK$kAj?cPQ+P#vO$6-3(28ofwa0_<-vnc{r!7z0UXE=K=-Tq3l~}7nv$Tda zm&J!8v9Uytp}8z~W7WLKwZOO!v;w|_hh6M);4-ovB|bX zv7KiJz>G6X1g6`2AOO$pm7jW6)^UF1>?fD4yn>c97EHlo_NR)w^4M@-N%qEuM2+`O zU+`gesF7Waui}k&(T>cvy$Rq;H%2VLXc*&T=8x9g%+#zHk{`3O6D^H}oq_To#tg`d zShio2AeJ4A+agx+A~v37qcTC7cZ{OT8k4WvVDp*e>js$A7p`p!2bp!-$Tb^a;ufwI z5C5`!X72cQRdphNeOXOsye{^zs&lrtx3RJ2wQ(GaN9WzbFh>@Ft&Y$lEutRjYNGa< z$=~T5ujkp`1y=2yG?w8oo7fdtJvmPjkM`9*!yebAf0FL1{p?$(P3nKQO%FSvgosGrMvgkxSgGS za;==sp^aOuTF<$v;-9+TWm=HQ7ldrPH-SojO!Up{(GOp3c0!s;H~rCVI0|R6(}jK>Ya% zUtQk#bFu36lpgMVwZ`naIzHpL-p!zf+Z;9-L_g(?Dfa^>h@d(>soWjn{SrSucMRZ* zKb~2=OEN~2MRYMfNB)ly4G~f1tBv^GM!1FDd5%c7qy;PKYw2vJ0 z5#QN5-_F!lP7iDTG?+4lPIDjqPI9Kp}7*FPmY3Yp|w{NZSELu-+B)XGt|NDEvA;UzQmN~| zIcB;-J>%7kQ`_oV17{M=^#E=H`n$JQVd46#VjAvdTRorro-Q=hzN;I!iNwnI+T$^{ z>g;^D*BC=Av~<;txu!QwQ8ngmz+`7UnS3fW3kB==2&M_qi1TGhg(f_U(H+*)gN0tY7NJi{jiecHN;f&}M+*2hlq>|0R)R#FqpKXh$ zOEOYd-xQgC;|l0JDtc_uO!bY@hRb^)LhN&qS>7NZLam3pla&+3*GOSUC4bX=TdXKkm1&2G2hMjgc`59 rr}r3s+t_He3Hh9A>_CnQVVi?9r_vu$_TQ*7n#u{@=aa}4E{p6h6t$(D literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper066.cpp b/virtuanessrc097-master/NES/Mapper/Mapper066.cpp new file mode 100644 index 0000000000000000000000000000000000000000..76f52927dd8195045146595f88e8609dd9898d74 GIT binary patch literal 1526 zcmd6mYfA!A5Qg8c8}uK}r%*`BE*3^YRz_4*8cBVLEe)d5DCt7<*Q;k{**3cog&@P8 zy_`Ak%seyu@;ss8vr&zBRzX{eb%nKctx1)zfK~b0QH%AAw>izI$WGDsY=01Dl+wJ0 zjhN+it1dKJioRf0R#|lz-f;DlQ{F3i^fgk$zwY3%&DkSOYf2m36UyiK2iT9Z7Jbb; z=iRTNbscI|195DFZ-5d z7crSe+OkQ=*3gQ{uMMZVc6sU&we2<3w4_b^Ry~J=jO7sN$u*PpH~npT#yxa5(Z6%` zCLOI)K_Gq$yY~K6b)Y?uXn#8U_1DZ3Kn%hXLmF|6 s)7Fa`t0`5mz@MCTJX8H?Mm{S}qWNCs?<8&V|H^O>JQB_S&`4Ok0)jHRl>h($ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper066.h b/virtuanessrc097-master/NES/Mapper/Mapper066.h new file mode 100644 index 0000000000000000000000000000000000000000..4c7c704ef8982fc0e30eea17ca539f2add093a38 GIT binary patch literal 884 zcmd6lPYVH26vfY$@*QS5q)?*RiJd=%lI1Y7m=Y6%g?x4V-bE-W3#Hq8y?4*O=bn4t zJD*DWKg%g=syy`+D8VAFRaOo2uom8>LiU(jT~$>;Duy}y7v`pP*Y$4`bGqhQFpmwE zc{{ZRQ%SVdjJTNS*V#ITgZ1|u(=g9FKA-%)IvS~9yaDeM@g^y^Jj+#kemkGqj~Ewm z(9zgk<&1V(p(^AwglEG_<-^pxDR|%$D#f6Yy5#JMnrJ{)8_ocR5WL8_rK!d!^z5Ic fV4vB(=W)sts;x}T-1d;p@BWys0`p#d$6GfS4rFRc literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper067.cpp b/virtuanessrc097-master/NES/Mapper/Mapper067.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d0e1c25bf9300a79047a84e153046ca67dc20d7f GIT binary patch literal 4450 zcmd5?f(3JP7iNArbl8`K&#ZEGpv2;QJ!Y$B?VXwI;SqKr*uFA{Pv{+ zdLc3_cb|(HdrU7)>7 zC%6k}0iQg*j>rt4NlpO5fz}Z3M9j_EjX-8bkH1gNkA7+-Vx; zOH|eYuxbI-B68qBd<*CrnmOA8szDP+vnCN3;M%7v{NBQIwkN>uEWID*RtEc=l^RXX zz%DYBvtm`OJ;L5Sv8Rq$HIStxiBuJlF4GED6JAuQ4g{*WbCJr>FUd^3-X;Gxp|vA9 z$^ILz0sPp*>Pc)C=?i^^rT|Y`kZp-ZKHX}iPe0_8HXVuGwmYCH$mZ!1_{`y3bA$0y z+&O-X*gkM!skxz4Y4kpxL1`K9+h+C2c<;iCeP}rzRc%!3tBJH~1x>ECJdswdmdUj) zPNa2K^5CvolVe*+&}?=0WW=^%Ce0yxT&{35jg^zwG@J5vN^*;{uZESQpUBZHn6Qql z&W&<axXpQNhwt_hYZgOAo?+`}i`UTsT>d63p?UCtSk6o8zMN-`4R zKFyYy-2cHLxhAR!Soj`W7s{j4hke$5PR7w3u=N#S<-jl?wnzQ3@ ztFgbE?RWxZUQ;eGZ+(7q2&=3=eL9{uUaup%{O>~N(GI54LvVz3L_J~LoM~Y4y1!_Kgr1MkUm;#Rng9R* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper067.h b/virtuanessrc097-master/NES/Mapper/Mapper067.h new file mode 100644 index 0000000000000000000000000000000000000000..90ead44029efc04d9bd86fd31d471f3adc1fa09a GIT binary patch literal 1256 zcmd6mPfNo<6vXFR!S9e`6+uBzXm9lo6sncBQanjaqXeamX%wXNtE<1a$u_C=;K4&# zl5ThB&6_vVetjNl`_`^@oT@-q3YD^AWjfM{P8G0*defBmOpnU>UPlEwb{NC`=Q5YP zu5EM7bVYi>t2wK&=7)E!g&QfpJ%CF^r*C2yFo;A;@sW^Rw3(Ud-^~8Llq#jHrq9;k+~zzJF0?sRz2GBI9%Jm`#W6Lneqz ztsPYL)nk?}H^UWfSfXq$n?G=#@rM2oYhoVRanv{5swWM%bBP*S;W8e$^XPoi;z0|XhEHPOTt@i^n%Ct5Y5$%T0a z#Hx!gcu#yk5}zgBIufNu8mW=ltC2b$$2;yDS$gqqIxbQMw3^89it@aqq@OU02A=b` zMN9YajnajbSm;cw|LFn z@=#mDxk0W&WJR()O1*_u{*#dd<8Om#%I-qx=9dhnb?!7rt_|KIR|t#$D!I3?gJ;}% zhqB1pshG!|s})V$HEZAC15uhXnmd$L%Yb@_?fP*91W+2ajKd*Gsq!vknNeox9d(g+ z2~Kwp_{@t=MaIRLUH{p5V26>cm?gO`R^n=-y*k&GN?hkmq*dqIs>F4EB(CCjY1=-@ z;H-JwWpUNa*-AaYJZMZT1LSh`TKg0=i@B?H z;-$&lrL-2|LE6F0;bWm*>he^S!XjjTlbSQbj^PC>Yt3XP>2$>Z@6+No112+AxxE*2 z_7)ExZ*TF%Ny#0>T~!*BBDu5T-nUQ09#efetB%|h`;2eJySbJla)WNO)pITLTP zyFcZ1%v;Vvk}>SeF6Y~PlkQwjID@@ec6U}TOBZooACq%_{wd<@YdnXI3R>sK)@Z!f zOY(MpBNfrUmFuoLJVAE(jYLkydXnDYHx74hJ~1-*UDrwGw;Sobv?~<~*TMQ7mrvnN z1xg_!K83{4;1?npu@vRC+@N2}*M`xwRGC~KuX?M5O5rqBy^|D9Q=#y+)IFT0LXp(+ EFQT-QqW}N^ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper068.h b/virtuanessrc097-master/NES/Mapper/Mapper068.h new file mode 100644 index 0000000000000000000000000000000000000000..e65078bd0318bb9df4091d04d16bbca00df80561 GIT binary patch literal 1286 zcmd6mPfNo<5XIj$g5P0}sR()yk@jR!ArP%JN)hp}CQ*XYh9-(o`qkAplYbkipm-@u zN-{h1X6853ug?Q)-`T~ER%LJri<~FL5{Ed(2@Fq!H_Z9Fz!OS-yIuxIwD>sHJBc$G z(|^f`>MKBi0j+;KLaC{1+lWbBFXO;RJ7<|8;oFot1)q{L9AMNk_c+Bn z+%Tud=R^H0BczfUCj36*n^+Q^c|W$(m)IFSGG<7Bh~B4Clg&`i($~_~Xu9?OSF7q@ zHp<|F6l7lu%_sHAyCt2pp2V1)P7snoz?-P`i)t@nCTxw)qpbJdklPfu#og_p ziSG1-YKUuxLQc!3{zKL*)PEZ*{pPH0q5Nb0O}H-=hlaYR^*`gD|K^8!3)~HebzkQ7 cjp${hBy&nzt#0NKttET0+|UA0(P*S0HXctg>z>1 zW*)nKp$O$ewc544Gjkv3o_ptxzx;PsuHW^8+%Q(9av*&m=9vK5 z6L}599^$UZPx;$Zynio87#ko4FXb)1O`DTJHzP8^oKZB3wk3!aH9vtBzrwyFS(BRl zjL$8|9>^QmMBP8)Sv5~Lvtj0SWmo<*F|N%SuR_MH+zYGw6fB|qrjPFGvJc1;X= z^2uZXefR|ux`<{IcpS=aK(HnIz_bOAoK4o2GuSYJ*1s^~$JUOvO14XW7y?KuZ49j!z0U<5N9XNYW)cOPhd-C^0$hoBA(<~z5`7I+(V4;GnF2m z=itRBJkRBCFgt}MDXbj=x7U!z@8k|^14nDHXD??q^E1Kad|4dN9pL*1aBe}Si%d}# z^NBGe;}7th0B713MyZE5?IUJKK&%6)Z9ESH$v%6OsYL|)kX(}nJU#)MMFiVGih24D zSTGAylUWn|CPo&S6sQojSu-ul^lbv%M_8M}t5G21g4Ex0yoq(pw(4ai zu^u`<=T)j_kZrvnmder;o*d&Enf%{EjC#N_#T&A`k8fdB8_NeHh5V-+U7gAbepQf% z9Xxp{8!d~O4SiE76Emxk&uZp%k-qvBQ}t`zuQmPn4RR!wSi1$$j= zFExfX)2n95+bZ6wmu0JJrK{HFtg4r;x;JOldg-eB(W+uKwzb=@#ulR$6Riq*0PZ3h zl`x0tb1^#hZ4tvp!4}QWn*rNb45My>WlpQcs}8HUyM#N8YK(Wq;!d+R*BhHxDsge| z9u&NrZ%uu!H8Jzmu9%;j-=O{8m1*Dl2JP!hYoC>At%3zUcXZ#Zpg-{I3ei*!y7>?D z-JL8;z%{*WJlV%=nx5+bYe%?-xLFb1$Wx57pI~hQil%aar z&a{Q7j`B{DjL@F)0E~HpEACa44a?ZxnQD94sbSS{l;@6kR4eK>c0lfLtf>FszHa_* zU$MXRl|HM#{w}j28$h6evF{me%L0GjnZ}2(>bFeX*qJET!*T7$+_>L$^M3%#TArc8 z9#MO{Sv!Ahqn_Iq?@O62L-5j`R(H|O_kezeemXPfyD@%+J*d{o@@%zz!zy}gJ@wgh z)-H1LJ!I>tkCC@Ee%9%avv_~LL|3)OnRLhO7rxz&J+Z~{+6`~7@pbu;a`nYlWm{Di ztuJcztp6RzK%Ey`sCy@KhL`hA8EZcmk2_Cx3Gi}{Qj|bC)H(R zU&X&Hbq|^UqaOap$p2Tmi0%dA+BK(3o~g;;ee8^5?G1(okPPX8)ZSBA{DYZqtrK57~3=5qe&d6eF%uWGg0<$J{L SN$1k{cy8!}ojc8Y-@~toC)mCK literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper069.h b/virtuanessrc097-master/NES/Mapper/Mapper069.h new file mode 100644 index 0000000000000000000000000000000000000000..9b0b86d544605d213a473de8d13ed8041b7a1a95 GIT binary patch literal 1294 zcmd6n%SyvQ6o$_>g6}ZPDvGWY+g-h2p;|GO;!4IeYEYWkMxm6xy84}&+$vqTa8ZVY z$(-ANzBAp(VdZOfKZW#me%WUN@Gawtb~B8C;phfH{<@+3Lm7x3L445izEUn(=KpRkjnf zDFv_H*VG%M_cTSLA+xH|9&~T%J}&y~($PTraOhzPE5EStQYOmIINmw)oKnxA{8sMh zxx?ObZ89yR>wK!cFE1~cHFF(V88F-%v75b-8($m6AwIvYu{JpMaVfz6KTcpka literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper070.cpp b/virtuanessrc097-master/NES/Mapper/Mapper070.cpp new file mode 100644 index 0000000000000000000000000000000000000000..160c78c694b9f6f24472920ca9489cdcdba26c0d GIT binary patch literal 2060 zcmd6oZ%-3J5XPUkXX1CbSB54wUbRZ8k%T`*5DJ7N5Pd^R55h%g4WeQQUtRspY|pz^ zt2Ks%Z1%F<*?s1jXJ)qFzdh0Y8xQrsS;gwArw@!1T`JK$GiEHaJ5a_q=hwWNYUl;i zYx)|I9^?g>?^i?cv-a@Z;QCjwB8tyHOt!@l9^eRoK{a`I#Oh=2A{>>6d*jN`K2lHm?3d($kJ=E=~D9-UOh z-n&UvnvOMB!FU8tqHBLQYxL(L`72|H$d$bZe~P)}Q(z@pt6+qj6;)pCxX`)59-%k9IR%>~e?7X~x?~KQrk(K&mUZkK{IXn)_gw_WxxaJP<@R4NJL0 eTzil1CaP*oO|9dztj_<5YaDlL3^&wq`2GMZWB^P6 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper070.h b/virtuanessrc097-master/NES/Mapper/Mapper070.h new file mode 100644 index 0000000000000000000000000000000000000000..17d6ef3cf6efc330fbdd48c193a8ace77a562ec8 GIT binary patch literal 830 zcmd6lL2JT55QX101^+{isR$}a1$ztjs6s0QkEsbXASTr4Mf~fw-;4=b@LG^zmff8< zZ(iQ!=iJxhMMqDrD%4D=Dk9gn1{#wg5p%m$##(S1YowuGNUQxPF&zE-ZZQ+TxyKjLKi8W+)OFsJ_sMyan$t6B({A4`V)hkd zh@(!|?F8L|f>8NKLKf ku~`+U()-uGW@x==X!`=!TI11IGv9g&G^XBh!Jnx80tB#O_5c6? literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper071.cpp b/virtuanessrc097-master/NES/Mapper/Mapper071.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8b5bd8d74f0f54b3855d189d69ead1f53a55c1d5 GIT binary patch literal 1532 zcmd5*T}#725S-Tt{)aqC1B#6nKO#QZR^LaA7lQ%syx?LYLo?`|l8y46a2}OmMwm zfCxQUKWOH`gHOFie4bH)qfFj(wb0h=87ofNdyP$O;Dqlgm3>5?^)|I%YNvlbB`5raut_2ClZ^P zfF0tDJl6=f+F$zaTOqeGd&(LP_8F4dN-{FRhS931mdnaXwJM4xiy`K0A!a=fce#am zS&yiiDA>iFvNxK=+>fR(l|M@yW2qjyNtKtl#$w*6X_&_ITvo=a#m>6mO&zGSTI?7y z27H81cBjEAaiEV1jYLmVMl_7hKv8|Ab-^ICy7VpBmkEbSZbk2X0SQ#J$p8QV literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper071.h b/virtuanessrc097-master/NES/Mapper/Mapper071.h new file mode 100644 index 0000000000000000000000000000000000000000..76e1aebfc9bc1b53532307b67319a59568713754 GIT binary patch literal 884 zcmd6kL2JT55QX2>g8w1Mv=pi*!QO0pvkFxR9@k_Kfwl=o+e64-w|=uEXhA3*3Nmb% zyq$UT=Izh^LDv_3-2_#UUgcC0UK{~hL1r|a4rGhM0PaiSu6 zXI&fPP^q2P)R}9)y)}k9>~~r-4#+vanEshww9sAPb-a()r?&jva%|e^+r`X2)>uWY zCa~M&p1xF|DkFP?r{ZiC!}QoHINm2r%DMHL((_GKqB&j9a5@+=?(fMbT4{;G2*gqE e{$RVD$CQ^$D}tIdd^0xh@SLq|vTw1b-R1y;s%mfm literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper072.cpp b/virtuanessrc097-master/NES/Mapper/Mapper072.cpp new file mode 100644 index 0000000000000000000000000000000000000000..71119648af75b9b212bf9d0b8910945d5d69f423 GIT binary patch literal 1774 zcmd6n?@kj@5XH~en)nVkBsLHgx3y7H|0J|sjFMKuf`~COg`zezK-!`Z;}iJK>ThPb zU0Vy{H?rC7?c6gnXU@#MzkWW@&3kU^ma__KtE&^90}Ykvv8oC@udoiV?duramd+hf zVP}BltD}SVKpp82>j+z4WALBd-(vjlV=6^nH%&3)^@Ym&>ZvqGv%2cqM3oWmSc_Wn zO1}BGq|B`wAYSA9K@U-Ro!`cVev4?8=pNsSe+%S_<1)R}JEgjhpP??_w+=1oiRU%W zB^ZB%Ptco5_UV|04~k49*ID#5(;`Pn-#u6Uy^cyd%$ZHffwS5{kxjK=&_&rEdsbgV zyUbk5s)v2dYZ)ziuI$Hcn`eG zVWMpG35pzQmvXpD*BIwIxuXt6f1`du&-Ls=izf4wIG3_>D=<%|Fcq&e$3zwZM2u6N zsmD%di~cmUtrv7~n{L^REoc>ci;mWH2cMeWVr^mF;>~SUZ11@>7F_Sh$hux+juSjT zN9Gwj#0_e)Hq=$Ii@xM_#_0L^C~-!to^7a9OUvCN(vZDw)WQ)lX@tD_G0N`}p55QWcHq3@7ol!Dq#L3g4XL4~#;U8YIEV5p&qmLk4->o-G!S-9y=h8yOd zIdkUc=I?i)`?Cjiy{kY=MJljVUmEIJPYSRFXbu)@5ARJs&KMENLB5?G=mXZLcAzC# zrV9Sn^G)NwW?O3dy0?v4Uoo>sOj@dQb8BNJE_7fkIlG9twRdX@C!ep)89Q=IFC>4Z zxn9+G-H7)|*>=UP$FXW{{gB#MjxkO;ySi2G=*YWeO7LFLDLIuwlqPit*Z77?_LeE} vjn?pIs72%^L>}>{dgq^*<0aq~r_r%m1+2a2$No*|wZSv`u#B|E&UO6@b8lnN literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper073.cpp b/virtuanessrc097-master/NES/Mapper/Mapper073.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4c05d7d66f83c14b1e03d498b8adad28743aa16b GIT binary patch literal 2830 zcmd5;{ZAS}5PiR%iT}g>WRSKgD6tf+iJ&G%R0>T^YYai8k*Gky`VsYCSKsX3c%L+P zi6mxom*sYL=gphhH#|Rm#`_!dm@}wc?4g4ZM-O8Z@CD0oId(C`fGd~i^Vd%_QS(-0 zbv8p-Qe5wiF~N0BPWm{7lfYR86>`+WgwGXnSTvE`o43PVWBf&%Yr^RXE;w`XjZXoq z5t}Z({G;6!ZN?ERLE)ffd^G6qfJoZR%M$a|MwMp|a8B=X?nl0h=IvXSja>^n_>C=m z;y$sOzFy?&qKEL&;7r5AA#wK&enE0bluc}M)**MNToa#F{K5}naQUS}+YV=8&L+4q zr*v^>b&r0|JuYk> zqQ1)szBThnSD$m-?LUq?LWxlYUbY`zdDy*6;A4Kz zQw?4IzT+d^VPYZ{ol&Lh7hQ7kJX9I?)h`CTH@ zxP!UT2=hG8<~h$=USRbfu|G$5h8eSa(^plUH6?vATMS94*_b#mR7>SiwW73 zOn2VQy!WPjf1PUo&Y=zhE2mp|C7ej9&UB%3InIq{nv!`}%-f^-YUdft{?9R&3SRr> znDH9x4M*mj+D_LR_>yR;7jQA?-`-k>RnS+(G{ViUes${abftlgLtoE+B6hOi?TE*w zRd-isc8M{>O6$QQk?>O;?Hvwx<2WzlAPnX4scOt&RCb0W=A#he)T LGB2|k>pcGhMjw_| literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper074.cpp b/virtuanessrc097-master/NES/Mapper/Mapper074.cpp new file mode 100644 index 0000000000000000000000000000000000000000..577606811b1272c54f480e5afd20071217f5591a GIT binary patch literal 10642 zcmd5?YfoE85Z$k?)c;^2H6o&@HW-_vNu}_}L&a$Vc{FV!M1W9KN{DfqL^OZB?KwMl zJiF_?#@7ZKUHNf$XJ=>6oSmKBd;k6CJNM;XU%RioRdv^OJMIM6zU#S$>$sMy<9g%{ z-LdPV^w{mWwG@c#Q^HuZ|}8hWb#2-^FOh?(}-0y5wo zG?8WfL`o#r+za;;c({fU?ZWQeLh9JJnRh>+>@CL5fA>+=2Tq%4(e+;6gy+fJ(Ca57 zta{@aZT%=G7ZF8vpuGWq?|{=OlT)3>#2QfI=xCq#lyiy^h|#Hw?>_K(i+j$cM{XTb zoOw?%uQqVEjnS;5d=1~5zF+0O%nkV_R_D#-7wGR0z3uy+6xBM$vxlqazJ>M`_Yys? z+;70-nzupixeg5<-M!+Xb!wBKYz(5Ij#oWSsWdL6k&QCLQfc%Msn@>G9Yjd$A!lbZYiF~>P8(5*Ry;yQ zj4O1C7VV2IA*vx-A`!=L#ml^L5B{*R$*5BV^Vm=}hfmJ37$39D){pQ{ZP`&_+p(NXm%9v1U#^^r*T z9J=oMe5i}wd$=@nx0(m2e+W5dPH~nYR_|j?l+~*SYwE=+WbMl}KOd=i64c{pt82>Q zNYrzYJof172#>Z#>eg&GmlLaZ!uYE4w7e|$71YPII*-WGSXQSw`ej=z`BA)u@VuC)AEKy5!mz3u5Vc>~+EjM7zSso8Bn~Gw^G^e`=%!IV-e9o{6%fORdp1 zvE7mdX`Mx?w6%HL=CQ1OGJCmG8)qKJI2c0uPk!Z_j6QG2o$fR&JIc)mjR&&-)7??a z&xROh(QD@%i#VV95iv^7yEtB}UG{ZbK;RcduX)IFH>@XT_P^oF%iGDGRQL?Pqrh>`H5MNoG&#aWYgK8vncOZo&ba`c(Nj^zF1?u zi2p+0>KP>QlmAN|Kl$Gd{&(=7V=(RPLt8OZG#$K~i%J+}t)6$Rr`5^=YRjXyg|nd* zzb>=_9ny!4yo!!+d}?P^J3?G!EYyQm{ zW@A3g#RFsAxSXDhk)t>svM*#&$cA(*=W{yr;iQ}nJvk|-Lw`=n>Cmf_aymqrXG_&s z8TzFBKoyxxHbc#1(ozvPG&ehgbBMxWm(o~wldE1^!Q#gA&rJ8cl zd0ajUe(IBp;iDiK>zvllf~o4f7(NQRvCe7jjAP|AGcb;u(`brg=ro$*cv_~(BI`wD z>XvKD8y$jFm_W@}o;XS4^{vv7sT<@Gbz6WQ}>+3C;vGHE6Ibw2z38y9y_s!wWi z=Mj?kjEc;mrKXX)zj!r@XRxk3p~Yea^K-G?w8^PT6Fa}*C)bx{;aPFoqpOqcXNFh2 zJO;LoSKoKJ#q`?1}C9_6cx`d2kVLw46k5v*^x`@3-iBt<0w+-;Q~O z?>qSDo>=9i{$^5dXMU`2A{)^5lG8IfhZ>r=k0lrvV+ng+p?i|J-cHt~-rj2w8|-vk z_Z4w_JBOBfd&foE+o`Xf^n_<_u`W9+RoVE&D3&&KReJagNo+8jRWd%k620O(#*Xt& zem3xoh3^JjJp)6|DYN7aE5*hbsP9ynoG?-)^^8d0Xd+g1oVyyE#iL}M=@3?`4v`@1 zLJ6`mmasRf#3N*7EMad}i3E8WOV}G$B0*-x5{#*#9pt7;sOLlW#nNPIDjoAL)J?9Y W(#Ah(4yDP}R66EhC~ZCvZ~g~8#~Q2v literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper074.h b/virtuanessrc097-master/NES/Mapper/Mapper074.h new file mode 100644 index 0000000000000000000000000000000000000000..821b926069aaab24f11ab386df4a6ffc05c9fb41 GIT binary patch literal 1712 zcmd6nUrQT76vfZ$7W@wTn2Mm)w2Hn(TPnmxTt%c5SvMgDHO9?qDdJae`@6F{?idr% zC&Q31GxyB7_uN1G@9(naZ!PG9iz?QhQjJ(WhNNRUCQe&wk7s0o#>DlV{THg zDLcl;z$4sAXxCVQFcj$P@eMSLB# z(Y1>uaj_UKsZgfTG7`Hi7E~$6UrY=KIzqt~`!ZV*tUgEnb@B9Teo8H2yo$b+P>;^WQjbcXpHfJG^<#|BYl%44-7Iu+MSquA67wF!me~xBM lU4rKjyZ>fv0(Z;Jm`#*@EzT;>R%?G}8v6LEd-tJI`yaS++`j+- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper075.cpp b/virtuanessrc097-master/NES/Mapper/Mapper075.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e327ac430f24214963b79c1033121489f435c3c3 GIT binary patch literal 2706 zcmd5-T}vB56g{s~@ITB`iO|xlMyshls8zI8lth%a6iH*O!B#^oR%rXztLNU?>&%7? z$w~_{?2^p=I``bOGk1Sq;pwdzJX2I2d+1=m)x!{Vyv71N*Lz&yl9uo2^WPC#*g(dJ zcij6%-!APQZ?Q=KI#-C2$j2{X$#6Y2#st?5d+y^Du7tBDn&ha5Yd$|v!>o4lOWzJ{ z-94bkK4VWXk2x}Yf_1Wai3|FBa`=MpOyALSN&VW`!AET3CF8_vygj3J7H_n!V0J`& zruk)tp?Wc=_g;2{7GsJ+2>b$VlSVWbCpj$$Kt52V9OqCS#FCNCNX@> zEPe9Z(~geWPm3D#Wbu@1sNAgM0}jcR=T3*d9sVj#;~GCTOBd&w$D%!+E8<&h5x1;S zZo14S6Lz%SVk!4(=2LduADwjII%Th+C{t`MS1E_6X^^czqhpVa!F;IbIfer z)Tye_NkAvFT~i(Ik%uAI6(7-Hv~1J9LqE|>OQTbiJ)Qx92S=OFyN=Q0^B#@K8?-76 zm`O3Yv~w&yp{%pXs{bFIRoAH9Fw@@>ZJw1kJf+)u`rB=>%Ud(v4FgWB vcqRWYq_vyQJ${k2Xt z&~D)M>?dU>Q~q{%tXp+=b$YKbhL~v{*sXI-pKL5s!YP7h!ZTGJrgo`dl^@b6Bb$;R zst>*ko2ND*v&Xrk2i>C0apOVyB~Q`Iw&!$4$1&eYKp3B$JxbEDX9xDadT2T)Gg#sV zCCc>K94^d0#oI9sIC@9Aqko%oF=KVUMfHl$yzJ?wqC4ki-RwOy+oXT3wRv+?je=is gcqi+Yber^mE7qVE-w zNMN7e1*-dqd)m8Hc9pxQdtjMUyE680hFz@DPpn4Yd%TTdQ*ni}L&i56|MVZ->x=1P z8(Z|ssizCe*|HA&43~b+0h)skMK$|4dR16yO{&#Ueidp{!VX#Z)VR(&$+UnfPMEpN z6Q8!evXtnSX9q7DrG`6=W4(o0IGY-M<#ik?{mN|Py7GT7vODOxyZw_WgDI^6W3>E!WeR+0Y!GGQh|wmmPnmPHu(7aRQV Aq5uE@ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper076.h b/virtuanessrc097-master/NES/Mapper/Mapper076.h new file mode 100644 index 0000000000000000000000000000000000000000..21c29e09d54f3d5d5185977d5fee6d67f64458b9 GIT binary patch literal 1066 zcmd6m%}T>i5QWdSg3sVxrXr{t#dcRz5Na!prF0|2Hb}sqkfef?zJd?wgQ(x!CMH4` zf}1iVcXH><%$YOf>+?|CXS>?*tembDDaB%CI?}05dX@{DCeM zYTwt5*h{QuzXwy@x;1we(7VPMVyTs{Zk=0tWrvC8cq8iMJOz7ft6MUt;}be1L}TJk z6Aj5Y$BW3G6Fb1~X{uY;Ic_4b5nfem-Oo1YbV=8YGxr#)X?_Hoxa`}b{!o2*T@eX? zaAAoujy8+)^B3rwp@O6PNMjgu@z--UXRNa8dNxa6Hx1?~Hx=h*ZXeDz>tAzi-V|2$ gkHqZV-gEY|)}d0W<@rC9dK*4L1=B7rv8yun4J0v!&j0`b literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper077.cpp b/virtuanessrc097-master/NES/Mapper/Mapper077.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a523ee202ff8f0170909c8347ec4106ebff02c5e GIT binary patch literal 1058 zcmd6mU2DQH6o%j14*U-RVOSWbRUA|p*r_mvC@RXXMxnhZe&R$n#J{e4b4qIcfLYju z9Qu`|bGuAHJt^74pp2x&IZ~ zlBw(7jOn^ISRg_G>%>Fs%!P|SjeYT2qX1i0vX#4qfwcCR(Ixwd3LL!i>Cx>R6Xq*% zX`?QLp3P9Bgu2E&osoumCDo9*E-43^D)Tb)-9lA`axzjip(-hAm#pwFpJSf8h&Ds< zGp4&fnjFdJ9t7;utMKrFAg8w1lB^ANm1bZv?(1QxLARf174}n@k5(NqVb@iJisS!N(Aj5{) znKy4<-kwiGJzjM66jVi;$|)nfa=mCoM8pR-uMOEd{aimfkhigsdf*NFUtumax*p9j z)3wG0r-JC*IMKK^#)(WjeS=Fu-}+??RrtR)W*jQ__+sW~xc{ks;I&uq`c=v8nPc19 z?-8^6iZMi`V_>(<9qqM6RYJCar{I)|VS23DElrF1?0rRLx#usLQEIs@`It@MSq fh>8R0{&;Lx25KAT*WsI>wW+7*unAw+j`jWva&}<4 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper078.cpp b/virtuanessrc097-master/NES/Mapper/Mapper078.cpp new file mode 100644 index 0000000000000000000000000000000000000000..867ee96587ddae2e3c2587edeeb4876c0c60f415 GIT binary patch literal 1440 zcmd5+VM_u*6r8UY^dB}!@gPY}N{j@}EK4agvm%Hi4J6Z0i6Hvx)x3ADcUKlsUu3y; z-8VaLcHX;tdtJxkjb$vUDuV_*JaF_dMjBhl!*CpOcfh?HjF7}G=LzmP8?HSf$LQ+` zSJ86f|3h4|x)#kb(e=pt_tAwj$Fl+oXws1hpD7)4^(N0cJ80?d2@%IUdyNfbam3#; zy&U3>cth{kIA?SYka@+mP{Sqmkm5N(eIL&->S9~-ie`t3Z)l-!#Q?7)>*C%>ii!k{}n3`)2v|yHm|4|YF$$(GM7}h z#kWH0HlVi>lWK<@`CRP`HosImrx|UQ1QkBVhdEY=$v=5Rq zrwtNBN#-iOOzT;L75Wn06{c{9*p9O51D>>gJp}E0AlggX@eO(B4FU((g>k-~?&%Of**RF2> literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper078.h b/virtuanessrc097-master/NES/Mapper/Mapper078.h new file mode 100644 index 0000000000000000000000000000000000000000..a97c1f147d87f848c59d7924ba910e47895b76f1 GIT binary patch literal 806 zcmd6lOKZYV5QWb+1^+{qi4^LtVs~mcLMvz?xV$x41bhUOb|d-g)o(6|4{+B_7;>4M zd*;mKOiq6<>R$Bpypzi9%88!c=e}wTQ|>BhgI=&p-r?k_y7VUY)ta^oZioMv&po zdvE66Ip==!K0l7wzfq=St~^)Fc+{Bl#4#<}c#Q!IR@ynFY2RUO*CS9$zV?k+@b$u4 zR5IKj%sO-!is7?jLzS9!@@}(ZWUDvIxK{1Gm^Qf3voFFcmdf{H?^V^cilFAC^31wx$*5|MWN3AF@z)b1p^V)x3?>(U4PlnTbrMj03&* znQ&_kGp%nFp|_xs+@{`ARYm>3De8(y;&*4o{HjuqT0MFqTq8d-C+oyD-bN9pbW%E@ LW&Y#c{N(lpUgd9b literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper079.h b/virtuanessrc097-master/NES/Mapper/Mapper079.h new file mode 100644 index 0000000000000000000000000000000000000000..ff744378afc39921741dbec1740772dee19f17e8 GIT binary patch literal 816 zcmd6kI}5@<5QL{y@IR!Cq9|C1+KF~PKn1ZpO^SeM@L7m|UH$e*P{CG^<-*?X?CfOj zaj)zDqNJi%6=)=7_R>R-Z33t`NkJAKh{7qRXnfbePZ6^$gRw=ZSQXvvipTG#8o%XZkr1_ zYlo_cYzohTb5saZH&gKHFW8jOjWuNE0xHl#6XyD44vq*!mAt2==4cG4I3^rf&S+ax Xa68Ym_TLEAc|Adq&BR&lmMM7xHD_No literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper080.cpp b/virtuanessrc097-master/NES/Mapper/Mapper080.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ff746bf1f3101396fb52bea8c4591241c4d3aefe GIT binary patch literal 3328 zcmdT`VM`-15Pe@)@IUM)v7p#(t=5WyJuAv7N)^4kFQT@hD5q%EgTudm`exF&*=<@k zcNILsrfHIyd6{{c$;+QPe7-h`2}KoS2Pe2?>*5Y&)cM712b{e`4>uftLxNe(mr>I- zS^tP8Ub478o5uv#BfW8n4kC}w8fc(RAKvrpVHzbp$#3l=?Cb0vckEL37*$m8mA_4T z`6sTpKc;tQ*eBYjJL|e{A6xi=7NbykXFZ{g5|-7jV2+6RT=gHmSz@9`76V#A`n zr@ZJo!-eXx()lx;QC1=o(aXQENSzxTHTuzsIBz19o_bh(rr)rvVwKS&QwNnX7FCltEbbup1lQm%i={JQ>%eiYh$rG zA82)9ELLlQRu_Y;n(FEI@-Hw*YoPm{7!UKmI97eA)}8et zsK#?MT8>p8stsqo2&(X#(_xi6XH9!xZSG~Pxi5ctzxrNg_C+OCAm#Uaxyj^A)4u}2 CW`XYj literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper080.h b/virtuanessrc097-master/NES/Mapper/Mapper080.h new file mode 100644 index 0000000000000000000000000000000000000000..d412d7cd9314a257e1ac1ea245949442542d7bdc GIT binary patch literal 812 zcmd6lPYVHI5XPS?4o<<6kV37`LsEvEroNTOAd*Y>4Xr_we4Y*IF9XIh*#%xyiQFhr8WSr=XGlfz5i6THB@Mslssgv_S+M&91=ZsN6$3SxqR z&fnwOU7~(PoBY4$Z;$-{#2Jxf#Y;Y0`gAi_b>0A5_=G-Qah=SX{=LPo^MUOVP8I*) zpY;$^<~Lwtu)fB#Lr7~Pixe&6CeVPxO)*`XEX;gFc3 z-4xrz|E>6kind9-BW7^O8NyZ%AF1>{--aBY@D~3iGdAi=t{1Emd{-R1I_BntYbEyy zv-OA7(#KoAb^qo+;kaenY9ZuSW*99vezQtgQm?JAYgnTye8vUkh9fC{s5gH0%2_a4 zE3#m;D~QKrGG**%fwB_vmF1&VJ0Ht4=fhOhZ1`9#&E7Vi$N!5IX`j64d=BrafT&< z%6VyUt8ld*a20nZrZ@0U`*63A(@1(p+hgS0m(jdD^(xv9EBgOzZ&b7$R$Y19L!OkU zJQsiQbe;q@{T^I8$-EB6b{^8VI7Jq*ZMvrNz0-jHUD3~hc05QOI%!T*qB6hRS0X>ZjELbcLZipSUl35X3z)I;fCSHFFEF%f$3B9!H| z%kJ##?rgq3kF|TYuRS+as9Pl}uuP>+bfHs)*aOjAwO06-#Lso+;+Fd_GnLx8c1Z{hh{&b?A5#?vv@2n}j;xS-1Y} zB6@ciL#(xN?AAHZJGac0;?3Zxc(o#!hJJ!Bzo3)dKGTGn4^RtDsk(wQfgvS-gg??F z-^my+C0_Gdwx*-qFw`|1CI6K}7_0dS^JKpB2=*zx0^N{_e{iu!*_5_T=oF|?xI_p0 zMrWGSe~8~~+TXIR?)Xg6iSB!I7ev~b`?a>WZTi<*+qYng=+NpExcQ&G Q;%!Zi5~g0}@f)B2226K^`v3p{ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper083.cpp b/virtuanessrc097-master/NES/Mapper/Mapper083.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7caa7479696fab2165ac8ab5736a2dcd0a0498ed GIT binary patch literal 7844 zcmeHMZBH9V5T37BssF)>RAeVb^&4QNG*Wm8phBAj5}Kw_M1Zy^lv10di9-H*+vnN! z-0be%**>6EK2)c}KHu)VJp0V-?C|$rU&*I;eJ-Cls~WN+2Xc<pMA- zGr7R8XL2OJ=K{IrbE-uUT`+`&@|w@Sz`|5$#J=a~5dzx%oGFrN}= zT_zvhr~iHeoz(XbR(%h9Ut(py#ot|6@T08b%{?chCtZAxHSIbdY$nHW?h2T4Ca;~` zwtR_s9rw2f8~D`2Gi9kgW^*U9nd5cLN6a{uQ-@pVZCxA8+St!|*iPH3-^VtWVfZx1 zu#;d|hMSG{mc*!q_=LI+aXhbqA*1|# zJo6Add^3*gVKA4Y{K#|6ybxMrl2wLh)ETsnWFGt(LfUWc+XjBS2rym+Vyi9+C`Gy2 zk-jW~BWt)HfR8EfQr(?^CA7itT9IdnqV_i>DB z#5D5}bKvPaS%9^SGOo4xqQ9m-FiJ0g@en8*|GVISIpbBUS>@xBnirkkb^)hYN0`4g z3&p;hY>Q39(pzaZHxcI^-4>A3x%aT%gFLov_OzV140SK%%(FJ=(x`Jc5n&Dy~@>s7IK zWrp{R+Uoh-eZu#~>ULhIl(D*ek8UQpfz?e*mT~oS_A@5Zil&47o>o=;DA$DComIl3 zlTdEcrOOI!_?}8mRi zV|DMP?HMHN<#A=zb>G#wJD5Afr4_fmd5ZU27{`j3dxhZdZ``>NWCCk8!DGH(AXgfzNSl$bGNE~L4#c#@i&DQ8(5YK_-s zy4Hn>`FU2YVZ~M47mB|6oNk#g&ReP0YLt17iMi-=Y6A^QOEM~-pFh?`QA(&ZS`>~ zW3u%>ifdOFft1_yyqG;Ys2xIHr;IJy(Q|P;J2tc0(XVNT&tf-k$3jgzd|tbGI~F55 zZYqxIqISJ}W}>oKA4FKCdv^7ys)-8E zchGst^Od7Nt5xq*#kjBAL)gUr`5rar;kd5!-T#rxV%8_(4oROsBps6S`Yqn0HL7%M zT0bwN%f(JTvn2Ismwj?Y>?>gQufmg?>L}KedcvD5)vuPy=6^$`*V)!%vwFQs&K~4# zp*y%yQn6QO0re_HZazTHP*C31Wx_7{VQ;~}UDxkpN0eQqZJaKwhji{%C}hGp{^Mg^ ziIBl+5l7hRTSr)3pP}RU94C<%kWD7&h_EMpJ3mj{#){9m8NGZ)n)^b{OZg~8G317h zER#Pd%#88(b3MvLWLl@0y?%B8>*1?t7{-dY+O8uEV?{h2VHhjoIwD2TuS6LtL|tc< WA?jyRK9NsH#t2qxA@+W*$M+weFz8+Y literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper083.h b/virtuanessrc097-master/NES/Mapper/Mapper083.h new file mode 100644 index 0000000000000000000000000000000000000000..d4fe2b477ba3293f13bb89525df8e8047baefeec GIT binary patch literal 1428 zcmd6nPfNo<5XI*j!S9e`6+yv^v^W1@p;~DxMMPvxg9fFIO{$dAude=PlTBg?){~Sa zWwZNc=FNMPetquC=B;hnvaEc$6eBS!l&KuZksON8I+2NtWp4NS{vS(Ka=bQ8G36D= zD_SKiuU54tD#bFBM{p77pW14Mh3&73Y1)&zd=28Sf0FhWp`P; zPNOg9=%Jk_malfHdxNrJp7nH_ z_YZsrs_9E{Uq(mVzk$$sHuif73zW;^Faca<;8gEvj#_1-lb_nU*-W}FBD~R?Fz;ZQ G$A1G@owXPM literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper085.cpp b/virtuanessrc097-master/NES/Mapper/Mapper085.cpp new file mode 100644 index 0000000000000000000000000000000000000000..325371355e2367dfe4557e9d882a97ef7361b5dc GIT binary patch literal 7050 zcmd5=Yi|=*5S_1EssCXmq$ngswQ(pRRge;6O4@`%9D!PdqTo0X0e0#*kP7kF+n#gB zlY95=wQCElZ14Kc&g0CP`T>wEdmc@@inoX7>PzKoR69;{qJZVZ`Gq0|TH8B0&z6-xAAWeAD)DG5drN!R)L3_kyk zXpW^NcaigB*@fN#-dT0N{ebVL@Y_pnI=Qaw$)D1ZJ9w{ryotAO2T`6m-DH$nZYK0m zHWtIp{PfalJ?Ukr|0~|^BXZ^;tEUaCJ1*X8J;aHhTgcuS5No(6@-mV~@)F)3;x_`q zBYZTQ16aKTCJ*u75Vga*Us6cZhqhygW?nVY1~K>AlpWW={{&YLoFzpln$+)O zSRzl3;O9X8c6USkH^AKv*!l_f$)+nv(YqKKi{Tk7pHgF&@e@4nySr1|y@O;de_;Fy zTo~f5A-wx_!fN$6!n+o&vWfg3z#@5jfbTK%4Drmko`Ne~)X0`&QU^>s#6M4gUAawLGKW@GiWW6h%}_6a!a4NyT~3U{F_1aMHFA}_ zi@YDfVvK({$B-Gx+3Zq2J1v}jm|J^0mK8iT;Ok?2x3HF2Ml?#+%89E?R?{`c8}8bg zpb+KEOW8Wza9)PK*$m3}-yn)Uth~ROaq_Khf{DdmHQ|>Zw^=AX2ZpoIy*a&lFcTI( z)v}r&FD)nIO=gMXtrQ-4d?iPd{4!o}eV8_1`9ALCpkwobUmMC-63?#m8(|(BrHB@- zE?&1^Vbq&Cx-IrBi)|#C8AYX-$sA8+mOGJp>#vWj3^m;&6yEY;hgK$?higc+f_<{z9eCO8 zi7a>W5%zI*>4}ef0zFS3U}rJH#j_~S1b*ZN&VqZ8<9R2YTfxigNQ)oo{zwyphx zc+#=(dW$VSnbV@4t?F0|Biz6_(4WncQS!+UoL&EujQ;eg$M}-mFDfgFYl-98TGGx{ zy5D43Dm#1Sd%?3Iukd_T+#fSL{%o1$ta_N&H#5E7`_Nw-E$WnM?)+J&cXKvx<77T^ ztbXp;PJTbf+5Z65@C;Y7r=fbL%aNi}oFk4G+G#-_s(j=_l858cY-&(rBF8P5wFX7;E$ihy)U6O zJC)n;!}rU)FGUu#yJ`CJt10XU`byDtLhD2GS6wN}4OWfa)#XeV9U%5SyRLs_{jPmf zrtfZDxLh!H%m0PE0xGZZKk>0>L-trMDA~+NCTE~f_HITti{Tn(lGO>n*T9k$%r>vU zwAYR?p+}x6YGe9Z+D9d^D^m}bJS4b^(I>;qqBYqh7G9R9rDZ)9x;C0#qL!BRv3uDv IJ_6C3|fOEEEoude=P+tLagyqJ(p zVY~BY=FNNC@2^8`-`drVW98{ezG7CWL`OQ+u{_qLCVC_Cs))Bc_0`sii&*r3mZ?mFVDB~kKMMOj5o<{1CamLOkdra(r zeM|Qm!p`Hw2kWydYOVHbqsIh2o?X2TQw>1}`gDpKm(^Tz-_r$I3I9`9-}uf`u z3un{mueqjG46BLLJ8-{ayv;N$RIcGiqIW$oxqX#(!@{L=>!^TwGj~_)t1cW~$Ju>O dap7r+$=oUX*`3e4%c>aH2nQ@L%y};I>>m_3pdbJM literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper086.cpp b/virtuanessrc097-master/NES/Mapper/Mapper086.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2ca596e1950bc1e40e03e68476b7eb4eaa51df7b GIT binary patch literal 1980 zcmd6n-%b-z5XQgT)%XqzYD1&cZ9ya@l2}`eB7q=KNKD95&@?5*Kt&38;k9=@nor^r zsJ}Vu>FGa(#2a$b?d~}<-^_g9ocZ+p5LucImDT_qRp z8R?DNUBhA(-(AhX+A{wYcx|hNeGK;xc^2KXrL7c}}WOaD7B|7pW(<&fEy^5``tfv-;?d>O8?d1IQ$M(0R zsPEm|=U=*et)1j+68yuxFfZ@7O5Rnq60_|lE6H+_i-V76;W^o~QM$=ZEHED|w>F(w z&>noBxyncFQ;)mKnO6dLPHm%30&+){m~7BwQfAsdq~IJfbsj&$yL>-le( zOU+#S=9tYDaUf_yBwH>tu61#s(x=|Qm7ur1GKQt^*T!_c@)uu5|2@t>>BM>M1qyv= zN_Na=YVEhk(B5DSvDC`hO*zqwmn@ZYdW2`fH&q7HRXxGxet=TRZJ|4Q=AZ_8pz9jW z07K6GDd(PE^~{7Rl>k2cvh6Cqu*HJeV@uI66-*;nivG{pYTes#C%*O2^`dXTp4U1{ Nb~4?f?poEm`~df(YexV8 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper087.cpp b/virtuanessrc097-master/NES/Mapper/Mapper087.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0edcd138fc06feab382d4613fec9dfd887c633f2 GIT binary patch literal 892 zcmd6lPfG$(6vcmAg}%dEi35Q%Dk&4S5L=lP77eXJmqJXddneC5Ae)n8a=I{8wZ3(lqQ&A4RZIij!mW9iM6;kos=<(f0S z<@!F=^7H(RptI!O>O+;|MDW_?x<9eO*SJkZ@a8vN^>6cPpWR~J!-!KMF&4q4weEHN E0L8~+M*si- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper087.h b/virtuanessrc097-master/NES/Mapper/Mapper087.h new file mode 100644 index 0000000000000000000000000000000000000000..a6e36ed76d0553dc384d2054fd63c4895194dad6 GIT binary patch literal 816 zcmd6kOKSpA4292Dq5ol)V=4Hkbc*hzU1=*+L0sNCv$)Xe;Bz7Vb=xnO8B}oTLPCbz z+tonty7bB!;i|5NW8=`rv+?vrtoHLn_O z)6Q=fGy8-w#9oKMZj&q8a#638=nI||zE%uVw@`4ZPnhJXW*X450~KkaA$@N|4vrMW n6LC*djnNp9adbGMlF_E-;1+>t7QQK}%e+UC^<+ivP$>Ba!Vh3W literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper088.cpp b/virtuanessrc097-master/NES/Mapper/Mapper088.cpp new file mode 100644 index 0000000000000000000000000000000000000000..251bc5f0ff5009f7a3d718f5bc0bee370a6309ca GIT binary patch literal 3380 zcmd5;{cjRM5PiR%iT}g>)JU|EqkL41Bo>HPfhrgqHO3%UZDUIbMXWLY>*|}?+wR^0 z6$nk5&0VkiG4tll%v=8cd5GIL?&6N33eiR%BaS1Ck;g7a$kE~K83s7Vg#SexW?t5A zY6wdf*KK1=a81d^31S3uIIE(HE;+p5Gr>LNG?HKX4$#xtSKM*Hv!Aeo0$%d(9$6mZ z8~2Cg{(&+rZ?|(-_w}%k_h@39=dNFmcshs2>Q^uaMEphVzrFGvrEG?%;R#Pkesg>* zW{cXLGg#7?owoqLJ+C81Hevl7)1p|9n(RvUhpZ0iqqbr`W(=`%-(l{0tdJ@*d%&+Z%zc-09Wv15*DQblCQKNbz{BR>XLQa zLw-G^d&S>nEo`a3BHsp)sT1j^r>X*N+8uM8^AY_1%073AT69swb3O0l35fSJi7Bhb z>w0O;crp2u$O3kdaMY((IUMtNjZ(a3Gh}(*qA$rs9u@WKtB!c{E&F+rH5Z@J(nU&Y zvrwak_^N2)Srk*+dpersyc>nyg!e*<%X!|7lKYBW)ZVe)@24uzWln6(&#BBi_IK7m zP}(Sh;u;9b8%0oB13_h@2+9i(WPc?rt^@ymF}YtR`;|5PrnA4i-_^9H&brQOxYcM| z`tl~NyT20Mob#_);4I9hfr#&k3l=|G$d(z&kE&keYx9CWf*1tbT_&^pva$fE| aqs>MmmiOG^?Iri_YM$*qAbu?h-}66QV30rn literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper088.h b/virtuanessrc097-master/NES/Mapper/Mapper088.h new file mode 100644 index 0000000000000000000000000000000000000000..8a36d983c07b3775aa632936be5b9f7818702f8a GIT binary patch literal 1106 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper092.cpp b/virtuanessrc097-master/NES/Mapper/Mapper092.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6e54e364ad69371ea5c16264279d441f226ed566 GIT binary patch literal 2322 zcmd5-ZBG+H5PrU%iT`0kVpF2x9`D6qLVH)Oq)I4=_!8363WNqoTeXDn3;fUOGjrYB zJFHF7FU@B6Zf9p_o}HO}_Ses6n7#H84-}O_9Zg)ZbtCp^acn%r>xrUB;x( zK0p!kdXgI*12j~+LyfoGdxRxMd7IzzD0)Rk%Hj#fP)D!1u6hmB@BuNNa-V4ZeO)p% zkLT)FFb72Zg?J3!rQY*4Mc=?7by)9e=aG6J0dCb-GENhv1J;?;Nk>r~Fe1B%h@i>H zwz($fE8~zg7xS-8`G8$KiuDAiR7b@1GWPM37WSzvXPm$GjwGxf7 z;IifGA;jt*m9?s;_9t>aEYFb5q~y{tFI}x-lUB}j_~HrpCRNjPxRP4V^2%nB}^J(bl+{ znjz2EBM&rEdCb+Op1DIGo literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper092.h b/virtuanessrc097-master/NES/Mapper/Mapper092.h new file mode 100644 index 0000000000000000000000000000000000000000..3ddb21f5528dad18153639fe3578fdbc3e21736a GIT binary patch literal 806 zcmd6lL2JT55QX10h5m;e(^9bQO}&*0B3Pjo#ABL-8Y(rI*doEd-ulguU=Ch-lVQW| zn>TM}-{$YPr^}0LUHMd@rixV%nYOxDUyllj3FsOu(FWd|_Re@9Gght-t(+g~9p0Bd z!At#+si;`Ff~ov3%%yg&OLNTTN^m6Ro~44bt_`?vp&g#AaU$W=_0|+>zh9R#aO9j` zME#3Kn(NkeW8Npj>x$D2%er;-BYK}W#;A30b?Y4Ho0rU$vU^3RWL1h#8a5N0@(ViI zOJ?L3n!$fYEv7albI1NkOa6%wyA-@)wK~?TfVJ`Z#J?%Cws_7QR*^N>q3M4Fl?`L$ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper093.cpp b/virtuanessrc097-master/NES/Mapper/Mapper093.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2e0c03898394fe408bc468cc7baec108dadd1878 GIT binary patch literal 982 zcmd6lT}uK{5Qg7dgZ{(0Y$2)5h%~wp3!Z<15bGv&VPIy!;(k*d_0>i7MW-9!i9eRIB^oqhe&dHy`p21S?A=c0PvW%>Mf z@AH-aLa56>mP2BwGgv;mw=PWDYT+Y;?Er;M*wl@#m^iSK`Cn&!tw(elXNy%qhlFu_ Z(H_}i`Ft~aDays~uTlPG3f{cPlJK%S zJ3DVDyZ=YsUo=#ARgvBlR1m3FdeXDniin}UmGfR|t~KAW2HO1pmWbNdig}EmkXbQLP}QD6LR*Bf(Y(;sX^Ciho^uW-g8316;T$ zLng`GbLXDVLy1 zEqpB-G4u5z8Wj_gADFdiGZe!oUC*RsKFQ2;!pN(qQk-b-r8Dg7-WBCLZln)lzph+( z{#5Q@x)H}*&|^dFP4)YFq1B8%Kljb^U!0Hi?JN17x|6Y74mnh(QqxYfW@mOe=S&`g zDy6igpJd$^Q&wF2{z^2p^Yu&=OLV>Q>4`3-fC@2u><`^u{6j?&smhmOc( P#PeF-Gcrhs6k?tOBe!Mj literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper094.h b/virtuanessrc097-master/NES/Mapper/Mapper094.h new file mode 100644 index 0000000000000000000000000000000000000000..0ba086dd4da5b4eaab21326ecab6d6c91da75604 GIT binary patch literal 810 zcmd6kPiw+p491_U!oEX~bqsVehPfqtL&8!R4SYcWVq=|G#rg&okHfV)_T_Yotf#4csTwLTg?P+@_u1 zE@t)#V~DMG&Tf-y+HlKUDbWu+D}1dOruS08sXk#+PBo(*X`&$=UqpfKl-d*Vho%~% gE+P}a2BM0~<`v+U&XM>xMQ@eQ(PBMWncI~bjx^<7{{R30 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper095.cpp b/virtuanessrc097-master/NES/Mapper/Mapper095.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2112e5f43dc92956374ff75ba8d80c86ac1a3059 GIT binary patch literal 5178 zcmd5=X-^bE5UsCc;(yprMxw;M7x73$AriT=s6>q+D~n)MAS@mU;jgRjbx~72y*skt znkAE&boc9{s$Nxh_5A*IPp;o{Q*H#QDzYj)Il{9m$5NI1(vk|EHMD+}9XXT})M`N5 z=vk55@(lfYvIpb<^#%DR1N7nO8Pxyfp_NRo>t->^^&L8YlD=dkY&I|R(uEZUcu!!Z znV`vO_-3%pE-Y4&M|i996K_=>oMT5o_fR*q*j_ttujTzW!wL)F;6Oghwmg*$c@*UxO+IHnju=3xeS8ZHkt-F+3cgeKw(rDc!aJJ3@Yii?^ ziH(s=96;iM%*tcfp1wgZIe-^2Vpc=TKK!a5*jfWKoA9K0%(RZuOEA_&+Zv*75hb#w zEV~>RdF2+?`4l3Q{;-94yO^y4|LNm7mb)k~$Q!Ihujr%w1TR;jmgXS?`4MKJWjK$G zuE;Ia=+le%s{f>()eC%Oq1RmKRfUFX!wkL}M~AJiS`y99?N;vbqkE-nXs-`pwH_kJ zSJ;6zjN4ekT0ugKCX@7G6v_0WqQ+dwMwmWsr#dX4Bh()lp-)1Du42?NoI z7bCeVO?e*1yZl_wqJm|{;#KEf88LUPgY957S&A%}iTk74IrSH_oOw%C7+u45D{?`P ziajN^?6^Cd%40i~?{KkJ>cLC!;i6SJRxRn?H`=e*Q*B`DWirawh^9IgeT_ZLd#(n07shCHW#YMWC zrP<@%+K`GJg?CiH^QmS{JSCb zkb&Dt!V})nxk7e6i@waul+#*Nu7+~?I9lCuM4m{a^W|}5Gk;3uC|_G;F2_^ZXxXbX zWP%NS*zI-H-V-F$9kEoM}24$Z)lmRnJ|9hEyMdk)OFt3j~=jb&hT1sB;>RZYDSxj`3E4`z@QZw-eOw z*+e@D>Njnoa|vp9?eXJs1@{%+1}|rA+d=KW0cD}}U2FR*qI?i114W!(?>IRy-0kc* sSt#P3DRX|ZP{jR@0dcZW#QhHfaq>{a{f`21GEv0+4+C*>p}1QA4^iAw(*OVf literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper095.h b/virtuanessrc097-master/NES/Mapper/Mapper095.h new file mode 100644 index 0000000000000000000000000000000000000000..e93f56e691c84eba7ada4ea12052ab4c8fc38f45 GIT binary patch literal 1294 zcmd6mUrPc}5XH}{LEm8?HG;I#NZ-tYz*JgAdWuaKlm3ZXFXC6PeskA#Z(s>Q27F}TfpJghgymn17<2BGTozGagt*TY&eu5qk;KrbTYHJx5u0J1Bbtl{M<%w_U zQlSo9-Ux+bG`D$}(pJr%U7p$*#t;iFU3ROS(+3k9YlwAAo*BP6(=4dAVvza!R2sXP z8i&5xL^QA>qKEhnvFo~17j^+B5!eVT&6U)%2?n~N>XfhD5yQpKj$jk7>ek8MRuf*= zpu#mS1aBzgXuSlk|2g_j-OcO5st1D_o}^E|$22<2XT3Dl@t99INjdwmO*mVxe~q<% zC$O@&5;J%EA2Odrhg7MY<3C#Kot<0kh!pX7?bZk2!ip=>4R7U7%j?mpikG?QCF|tGeIYu%&7M literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper096.cpp b/virtuanessrc097-master/NES/Mapper/Mapper096.cpp new file mode 100644 index 0000000000000000000000000000000000000000..48c9dbe3aabcbc2bbabc0f58c22a57bb130f575c GIT binary patch literal 1824 zcmd5+YfA!A5ItWv=s)Zy(F$^P>0uaT4~SM0dq_lt@-m_!i$_3F&M&fcxuT0aCb z+^gO@cjnBQGk(0UV*YFq3kH>sCb}5XVvJD6Cf4B78a#bOk9(iL))6A$OOP2sGD8rtOWiEE4^N~V%mvwLJV#vLxn?-iM=bLmNtoRqO;yd{%| z6BDP!n8(a^jVdZQ;-~G)12g!Hw!%Fyd&TTk{w_`8Xbks4Z_*jgnPJCdXtK5uZNMeb z(>I6o5+rTvAWG$UOA!CXO@~qYWF|JTJ0{j1BX!AVk9Sf@0~a{OKEH|X##~a3pj968 zu;Shp_`Zx6t~4*Udgb4Bq?pR;UWP>AW1Hr)1GYoi%;x8#g%-}(&&X7IgZm6#zBACr zt??`-%=u8X2dq>~5Z8^$r25L_R3iBalTMRPfi9-hyFvc~-&+2(^6c6@*y{6hV7r;t z=g(g6Ci)CB^q=nJ67{)EHQ8yim8t3#`EL}QlC$H+< Apa1{> literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper096.h b/virtuanessrc097-master/NES/Mapper/Mapper096.h new file mode 100644 index 0000000000000000000000000000000000000000..fffc0f6614a137ca3c1750f9df1281e9542275dd GIT binary patch literal 1182 zcmd6mK}*9x5QX10g8yNURRpbwV!ahB2-TKGDIy}V2^tg|+UTY9udCl|5)-8dFG5+8 zYos$+i5%?<0CiO4VKT z4PXy+4l4Y{h2RZk9hwu)yO%Sa86G;+kI>blrYl`)I#gxXe5SfjFLmb`Cza-AZXeC& z)n9Y1-wah#-`~XFW2Rg9P}K{({zu(vUv~|sEHkCk!ksFso@Iy!dHFX#H|D)8IlchW C?vm&L literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper097.cpp b/virtuanessrc097-master/NES/Mapper/Mapper097.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a6131b11c5d6ef70872893d5fb762945a75bdef0 GIT binary patch literal 1188 zcmd6m-Ae*d5XFD58}vWyQzR6v6>8Q?_CX?2tfACPEVzO6VOT^E{p;14v2{1I@FkGp zUe`Nk=bSln_v3wo#fxQ@TvbS$ga<{+h=?7kgo>vArQGSM$~I*xT6X@QVJ>C57R@o! z^~{g~eS#UD)u|K9u}7^ZRw;QWuf7L#{PawSQ@wk|7Mry6+mQG7+z20%XKSA8Xa<)Y zu`cY|pZT)qBj0UGC3c1GY& zQR=FCawO(Z6%#qzSI&BEaKX8H4|S3Vn>eFY&va&8Wp9P-2@~5QWb+g}y_UX(`l#RE#^Z3l~OJvItZY{M&@Qy7ik&)D+wnWSB5_ z=FFLsncw59?#~|e;8lg1$f?9KZPZa;J%!kqSEdzFPhGv~9k={{nr-Q<>)tkIx)S}c zt1TAX+*-_bO6|1-mxKPhTVtsF|Fto(&)njR=>OD*W_tF#&R=A$9j_3?uTL^_BHaNEHSnnbD3euqUY>5T^+qYQ1o=TOH1(RH{a`YEnC zyH&}l;@qPQ(H2qH4@z=8-Nbk5Y+(!g9FMSv3pBV>WiPWYv74@l`(i`5wZ=1Yua@Z( znK70*mUJxZxTbP;Gu@B;yTUK^$Ni@zC6(|NOUx?qsMwO%cLLAGni*$nnmp_DjX_AHqH=vREETw8qRUdIG7fX4Gc9V6UMA?e#R(j z;xlKm(qYbvW|3s5TEvC@N~U{=by`qnmph{z_cYoDl$O#GvpKLA5YC@89aTp0)`V}* z<(l|*Mx9;FnPTrG!VM!we-oZfUhH!Tn-e}8PC@2Jo{4EwOq|9MvW%P+1wMBSwFvqA zGkzi>?6Z58EYH!XtiVC2Dk*vEv(8tE;ti|2%)X3OjymI|uGLIp&`05rEAmn__>Hll zZ-$Qu%OQC`9B(FCEghw&{I6la?@z5NU7g8V!uMqnU$ZzA|AK`@=uTEUxei5QWb+g71)J6pP(jcVd@XsQtm^waFr2+hAg8DSh?oH`9bh$W|!BgnRFt zIdf(vKgWAro?Yw8RmFNyP=RIoQeO{PjLr0>o~BwUSE(IdfmnLX;{RbbrAF7KP0VyH z^vSGBEb5%vfT6^!GWJn%yTPqmdv^)7 z&lp4Ob#Qj89BHF9s!~p4cuKrd0@Guy;7RYAP%px_jtQVm#atuq&z$TfMTaS9^3J@L zHz%6=ztWv~M{ZLohAV&#Ek4s)z_E6Yg@03eJ@wFJMoibbS=A~mBd0@S%WCwYj{O3K CMQdUJ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper100.cpp b/virtuanessrc097-master/NES/Mapper/Mapper100.cpp new file mode 100644 index 0000000000000000000000000000000000000000..29a64604d920ef5ffbf1df74814215fef24f8b8a GIT binary patch literal 8750 zcmd5>ZEq7t5T37BssAB-K_D8{Z*js)k-!8Il~4#Rs70u99k;chkUF7Fh4|}jpV_%5 zv%BZ>IpIitc5mjHm%W|&@87TG^ZR@$Uj(VvWLL&=fX`Is(v=QAYxq3E^`RWe zOeXRgW98eGk@N#qIokgyN|ft!LrmrROWp#HeJK`Tc0+E+UchV$)UL?Ypvn92Tgb1N zImg{K*#WZO<9~+lH~4nsW_fiB|6AqNHMxeXtN3z-0`sTxo4mlxm$+|pkAuB#mQVQ* z{#DWf_MC%TZONy^_q*l&E}j?P@0Ir-LznNM<%YeAqhRmU-(8lb*nN)GXW=R8d(YwhdvXt>G2(q6w68F}D?cK3 zw=voe&l_Wu#`&TA9ad3nbREuKlgqg3$T4PXhE)vH=$?RA?O6n_t-#emP9gRl|DBWg zrxb3X0vKza7$d&??xMB33)k+}tnE_d8Zs-HRMc`L>OZN51$0X#Q6ypwmE*M0uXAkW zI13P&%K^>%K;6+uXQbZTLEd#wCTD^Cmu9YNOp@0;j#rEAq0}6S)E>(5aY!)kS4V=8 zY;oPYFeG{{`vh|yk*IpYr?+muWu2J0FH)yL%Q|uYxk#NhTGolX=y~YmIl7u%h84Zi z_rp5*^2o^F*iN74Hftnd9zHKg22zJfo;mY;(KaRn?3MX0Xx3pyZXc6+U(q*@T$+#D ziSqp0yeBie*-kXLpq*$7ZvyQik!QGOB$z)8iQ$DI(e|Fq(^{QpfBHABEmShvwQf@e zI}e@O-jkbh;d$uP_MY67Rom3b^K5)BXg;IeS#tjC)tu36FJ`X3gfp{N@YdxvPK0me zk1*Q7odHfWBb;ux@p%-gFN;oUT!#_rCs;qd+D@o-nmeIZw2L##JUq>6T~2ub`VRQC zsO2M}sEED`F)%_EY974tNvP4NUp_&NY8PIt z=lbmh9@>m4>pJnCLR~h`tjn?7$7i{9&ByImHE*hPJwSB*gX}OVwYPfoVW>#F0XDOc zIr7RD^T8El5UpLroVUvwv*rk`0983|1&$u}-0Pt#lvakgwp&a45oRsTSXLiAK<=o^ zS6qRylKMsZw79l%2^err8ei-16`fa|tCgAh+9YWnA!a@8XZUH!HFduj zh}$wG=V)J{*^9Mu?6Kivj_lulSMj9!laS7SUp~vYyg$%K4?%kh>;q_>l&4Xxvf8*C zDy}x}MPuE)iO|_4_4-{bDZOab&V%n#ajzuS%ih~NL4F&XUN$zpY}}7{2GMvU8V{qf z)mP~$r?=b~d18u8aD-Ua+PYfdA+n#>xDNu-F+Oc{u?~_B7Bi&wv{GHPgY^OuY@Osz z`Uv@qem$dm^;YTH&wPnhwBtZuisyI1k!6r_EEk@3-`W zlG^eKAjx4$J zoVj{@Kg1iZ_FB&0pJNZEpIMKV+L{(|N7nhwzsbqWr*FXKu^Ittp_D^UWzJzfo^oiG zj5*ZH$zgWZ6L`#_)<`+@JR5VUr>7jb9O~;SM=pnYd&;5Jq4+84?@EI tDlv!pe9EEOGUkXerT4{t9dla@a6NLTp6zQ}6y)6Q*}8Jf?YNtt{103%=r#ZV literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper100.h b/virtuanessrc097-master/NES/Mapper/Mapper100.h new file mode 100644 index 0000000000000000000000000000000000000000..03e1704a2db51d02c7d7539c188a1c61e19c63bc GIT binary patch literal 1526 zcmd5*T}#725S-Tv{)c<4B518&v~R77g?`br6cLe_hBhc|OjAKh|GGMRmzXm|@xh03 zv`p@1cV}nsKHd+peQOsxT9rZvE*e(?8>a2afGqPMrW7GCA?xmRTH9to~_SJWoD`;3bOMtD+N6Dd9E-l^kxUT%QGHC0ENEj2`w zM7r$8Pjok^uZK4KYVpL;T7>5$Ea_3aP};wk^NCnbQNsWuc2FlaKG`0n(OEw6qK&@Q zdB~kqvmM)}X7TE;vEo-qRSVspr~fCMukkT;x}^0_afb`se@!hrl?+q9UYU-;6$>9* zxLOeHVa9k9ZLoAKpfu+s|<~N!?EhC&YpP literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper101.cpp b/virtuanessrc097-master/NES/Mapper/Mapper101.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0e7d39c29487c566c11cd447d85bf7dc3d7c23d6 GIT binary patch literal 1050 zcmd6lOH0F05QWb+g8$*J#6Y2G3nG=eD7sOLQXj>Y1k*xLRJ7HC_}A5MCfpXGh{R19 zGRe%H$2sTb>$9o#vrTO{s-S^#Jz--#tEG%5U`J%{$=&Kv+q&dzrWfLpvun<#L^HCv zQm?n3|C*^3ajlzThU*nAN)<|0Xx3F%L-a9?rYM#=lXv%t&OLiZ#VNfv>Zq+_-hK3Y z&>i&w*@#S+Y8oxtzSv5deu)B*c*_!d+c zwmvt1p+mk3{{wQzXFDR#QWNiwT|xWmQI%<~9lV)g42zDa&2PNowk@BNq27{bqKau9 QzNUIzrqzwsMO~r&207n-9smFU literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper101.h b/virtuanessrc097-master/NES/Mapper/Mapper101.h new file mode 100644 index 0000000000000000000000000000000000000000..668878e68a7e2046fe765e1c0aa0ef4a3b6ccf09 GIT binary patch literal 884 zcmd6lOKSo_5QOWhkpHm9RRW1ua}&LYi4YCqak9II0nx=rJcxfi@$1ft21Jltq}gSr zAJsM0{qy~#`?CktomHY&1(jH#rCNICORzrP8NN&lrTQSY(TaN{HYK*^w!s_J@O-QJ zubE0mUiYS$@ybvn@a~mr7gcMcK#3}!ubq%b0SQtd5g~;H5mi+b87H9@)Ij3!5cID@&zYO+ z*_j=C97`ayauDKDP-QPm?+}kIR_!DCfr7InIg#Y)D$)UW0e2MIr81=gwL2Csvek?EL zZ+tnxx7$wUBc3)cq`X8GNwgahovcJRkRTiCzPv!>BSdF@=(j>Xz)OBPMl^lo=iD(T zl+tJhkbDjCE@eESXe_v9~mCiii7XUD3Hk06}?X19&n5#ti#Xcfbcs2U@zCOrq=@4A}w*v-9DSLrzy{FhC9 z-+~;g*RIo4_dkv5W%NIvs$Z+eB=&sY$m?-0$>w*6J+!dhuwc=9cASA*oa=q8yTplW zHJ`(37*>ZqDiBvDa&P@&O)8+l-d44@qPok$&AgqR(Wo& zHfEyEfU-75SHS6G@}rg#mN;|c)p<2qo0qT(v})eyO6k2>ae5b!UCzu!{3^MLcea|- zhFv*Z%X8SG{dsKNgsm88M$HC7tuLbWD_-#-+(Rs-V7WbnMU7_7Ho3Gr5lbrH>PUb9c9aJ^rcNFFr+$ zD=+R2vB$eBPjKCD>><;;i6iJf!4Bgb`bNQiqPh1_zkKd~sLEpEL1Am^tQ?rm` zC*%HW3ppbz2M!7C8uf{t@DkX-C+^GZXpj?cab`3apXS)Un{O;C;}0cEaO(hnZ##X> zoxhDy*|o83y2GtYv$~mP>yE?kS`F25^W4W|7r>Mj5Mn+SkguyQ!U{+o;K@8s%^}q= zdtKN@_IdL2<1wqFq!Ag4mIcEs)t&L&m09$7+Nd;2b!j4M(uPuej%&IVQIocM6Q0$1 X-4*JM*KN}Nl+d65O-ESmY5e~KrUu$# literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper105.h b/virtuanessrc097-master/NES/Mapper/Mapper105.h new file mode 100644 index 0000000000000000000000000000000000000000..1a537801d84da11a6f7329221cf80e7d4d98e26b GIT binary patch literal 1328 zcmd6n%SyvQ6o&t81>YgdDuN2SX?OL4LcL&>A|hpMiw3lNHlslc^tiW#mU>>XTFHELCB!F{F|-4PcP{Zm`3F!%hbF)hDSSFcI_ zsSecBy07a{-`vPpt?}4xRqvYIUB+0%Tnk^_Zf@umr()b|=z=;aPo^f7+Bt&qyw6Rs z_ueq{bwc_5%}LhJ>;%P$1u9&o3eK7nobjtl(_+` zxgY7!cbr9Aed|S=JD7}f%pI_usSBrLPI}*Qy*$eJnGTWHF2kFI`yw!0=nC|0=0T&X zK1Fs}&#-rOUSVy$UdOi!X4C1fxyE+}s;TEU^zRYg1|15O8(t^#WKdC~aITDcqf&5g zfWlMwTEF~`yYo?L&58Bcy>7Il+x+x5l0?touwHb&*T>&=g1?3~#FQB9?-FnnjAMKZ Kt_HS?{QL`(@~$%g literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper107.cpp b/virtuanessrc097-master/NES/Mapper/Mapper107.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7a64b8d2f6c7eee734fe6dee83cae22be47422c7 GIT binary patch literal 938 zcmd6lQA+|r6otQ61OLN3g$s&pJ`@W3u;_zGC>lw=#G(>Qpkg6H^w-lf*G3Tv5`2)$ z%eT7W!*{I@N<^mQ)Aj-byX^_lRqYEkZt3VuYmaR| zAny$~pv{OD71epv-}zYCh{jRhr+weuYsXy=_%EyakJ6zgBA3poF&|1*UsK|wW};Xc t$CPIt#o6g56E-tu{`FH_DebEh61fv`EvMF6wG)*F7NOqHd2ni{d<&(1ZbJY7 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper107.h b/virtuanessrc097-master/NES/Mapper/Mapper107.h new file mode 100644 index 0000000000000000000000000000000000000000..5313a12b2865a879b766a1bf63a4d1cf84cbf08f GIT binary patch literal 806 zcmd6ky$ZrW5QL{y@EuY{5!6c1PP9}(1+hGnAOX?fUn9P{`t6x$3QG%FF6`~j&Q9hY z_m=)IYN~owfyQ#mh(rf<)K*skVbzUNMdU*|cH3*0cM7~Ae;4Lbq3hoqGhLCk_;4gD zUtR0rMW(aX;9ky^y)}lb|GzS(=PTd%Lf9r6X|9Inb-Y5t3!J#sIkv6LAF}&{F~n6j z&u*J5y6}FfVzL=LN6twhO#NKJr@v%VN;jdu)D-*>HpgsCr%680N(;0FR2)e6=CNHF WsJ)+${5M8xQBTof6G>jX<@=v7M_~s5 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper108.cpp b/virtuanessrc097-master/NES/Mapper/Mapper108.cpp new file mode 100644 index 0000000000000000000000000000000000000000..28f12ac8ce08d740d383b1cd2f693b02575cde9b GIT binary patch literal 822 zcmd6lJqyAx7=)j-g8!kTg5XD&Qn&iCh$vMkP9oHy2r4Qfh<{zZ#EOCz+$=B2858TLHKc^cpG4}TA(cPximIRF3v literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper108.h b/virtuanessrc097-master/NES/Mapper/Mapper108.h new file mode 100644 index 0000000000000000000000000000000000000000..9d4f0bff200c1433b0087646b13b4ba507e5228f GIT binary patch literal 806 zcmd5(!3u&<5S*()|KQOgsBU4msAB~cNXM7HgAgfcUBq9nW*1EZ@5%DyxjQ>Ej_=nL z{i`7c>dM6y1}V$pjyYyn!2MH6O0}=PB__T?T$xqIaynD)maYN3x5s#>~|D8we1|x_9rLv2%gC`QYig-JaC*#TCk!e{u zXyyTxVoojR0rteN$!544aWdh3g)>g{=CWgmG+!RkN{LEzKh$SLuXR7B581F)udMVx Dj~-l! literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper109.cpp b/virtuanessrc097-master/NES/Mapper/Mapper109.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ebf47e037091c47821de54f0a06285e0d5cbf22a GIT binary patch literal 3940 zcmd5#`?gax@?RQ7oRV3AbT>DMg?!nvMfC?bcE+v z7Ui0*IML6Ba`ztG+{4q9JEyaK)!o9nr?9vyxn%Mf->cwvUp~SLwG-H~6~xexw}{AC z=VNO&pH6tO`E1I3J~3~o9K)_`VLaCzIc~G~8Eg!(10t+K;_@=0AG-Tl_}sxh_rT^z zHsI^4^05Q1dh!512k<_G#tpo$$_t#-HM|Y=j1KS?N8kwSX^Ys&tFNYBA|5BQJJ1+5 zu&-~@(yVAAw#Iz}{4)}qD0vDTl{&IE$Eij~i6k(=&+<)%ARQ~8d#EuPx)j7{Y(MvjOtXrA8E*!z88HZNJhOLmTz?617!1uywIUeb~m?mEuI zrd-#(@;=IV%(vT?;wZE35ne(^pVwl$#v&{Hd>A`57TLGvv)HY%XjQ|jrsdT<*)_o3 zcZ9ldthcL?R+tUk3&XwZP%#&??NDA}t|_na$@`(*XdHt{(=(~(P%O_%^3bJheO{7h zXO-IIt&%)1$=fBl=Uup?o1M-SJ;yUUm%PdH?l~Wqej5z`uE?liBg4*`vsk4^u46r( t3Ln89Igj;t9(@Eoav$q46MO_c#vs-UEZfPjeJ~c)dfuBuEKJW>{|$Cj(fuLoC{clwstdxatKa->X-zOOuE?LZ z)47~EbEf_J+}GxvZEZPLo~{*W#)%ZGt^*y*ldlt<>QZfWc^l}7sHY1uBC-?gA_Yh6XD7mkmRpmU# esBasKRve4%`*;&H3efmj_vqC}<>E_OW?0{SF`kY9 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper110.cpp b/virtuanessrc097-master/NES/Mapper/Mapper110.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8586a435fb8db7a943eddc5436d4c55af5a4ee35 GIT binary patch literal 2240 zcmd6nT}uK%6o%j14f+pz6$(MSW*?Z{NL^(l8c9UN)>=tXl4e2m*Q@u;FgrWzrdDJ! z><4GgoO#YWXU@m_3g&MtVnI>)*hhpOM+XlGIRg0qG(;uCHE)Uu*AVyUB8HcvSp^j| zsbQbb00k6PCNJvkp{1-1dK_@=8CFrk9=|nee}^0T`%3pBwwx75$%@Uf{zB*R{5rT& zakf=F6HD7e+S2wnwbP`W+Kk#|Mjh0d{gWbXGm9p67%!q4F+G;~U&ApDvCF@h_5mM1 zqe7qSCDsM5RUETg{CpU#JkCc-M~}HYqpWH&puRdwFUizoWcOQQ99a`!BT-WP&y_Y2 zl{T8>?-Dw@WO=QQF0brhnb({cGB?fX+Z=2S$XXeB^kTPry6VWBTMIV2RVYkpq4&|8 z<7&=E{Rw4hL>U`TD$`KfGnx%oc>M`Cw!{=_W%F@ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper110.h b/virtuanessrc097-master/NES/Mapper/Mapper110.h new file mode 100644 index 0000000000000000000000000000000000000000..2d745885b4e8e276533ea1249c3bb1c623cf91bd GIT binary patch literal 1084 zcmd6mK}*9x5QX10g8yNUQ3Unc-iiuBwbCfXM^+f+M=X%oqlx=m#XO2$w z(9>OTGvt8HZIk}B*5)lxwGOT=!*9xlY9CskqM(1p_hs(cHdlOYwf|O~)p-l?94o~Gqe5m^O4-WabNB^t%|ZK9qD6qo{MH9=b25jw5-yWa!2GV9$a~B@z;~T{iTRX3?Fw@3e)YKz{u9uQ(|GiI zW$?X{%-wZ*uOJ@2$!9r~RoRg@&JLZaQjg>l^j8uWgEz@VZ{!xKL+g~o>$~8aBSo0 z7~d~&5ii^->ma=U5y_Dd4*yUrvy>HO-UcitUdP zB+oEc>?P&;;MVLQ68s9Gp37tOtc=w&_Dg8p3_L|Yl!X|FJAk@{TEw0rM;Q6D2|hDG zVFyTVWA`4y&o6P`#eRGT6z37qB@Az^`e8Dkl6REHM(JA#koEf7j=F35R)_SBbAZKS zQ4G81@MxYVN5|bXo~&hP=5x^h(yX4L8FL`>w&`{AK5ArW!kl}%nlv*sVUE9DOtUSTR>$Pn+SnW$=dF0Rjb5)kX1(gz^?K-VSmPd`dteVVFV9dx zPUWk6TE~|b-JsO(NOVVwE+Np}Ki5BLg4 zyZzf7x&;4)btZfZ>Gc$~k$P^Xp0&rZI&h8EEGE;Pf1bv(*iU9Z^THBF6CR&&om9o` z>Jm;A-V*9gB~7!-Iyl#MkyUwyu`|yGcDp~}^xgiY+^a#<{EPE!KRC-;{PJ|`_k((coID#J z;LZx|rch5_D)?*t9VstdMbcg*n#T8PP6rrcpuszllmE zuYFTYc!hYURw>PDRBb>_Vtn9*xQOWA+De9v_Ge-Sy3>@e#q(oa!^g4a4LBc}M#j|< zAE{=}uEp9lMi3ipHM>-{@X0AgoTY^+^Q3$-w3umFFsS1*R*H1?!eNF9Ph8OpczVv* z34I3-xFb88I{~o)y)su`PbO&NhE)^(r;3sLBz{0Pi=wW>{1dq3b<2of;rs$69Hkdq z`_HIvLKSRQpW>bjhV=73%^u6sbw26Eg=a92xl?jB&${F+z5eyA^c$1aS~Uyxch33b zI+RLT%72MR^zc-vUPmRv5^YsC_d5-!5U<3w`JT!Y@>Q2_WxeVde&6uV4gaFZTr!V1 j51HbkVqM<`UvG-T_zG`$<~P8j?#(x67whd{w?*9_mgl3O literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper113.cpp b/virtuanessrc097-master/NES/Mapper/Mapper113.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f058d1c66b5a34149cf588bd86d150e8b849bbbf GIT binary patch literal 2670 zcmd^=Yikox5Qg8cEBGIlqNPQHxwOqiT1nDkiWW;^TNOc~jaZ_oM6m_wUssxJ6+8y_6 z=rm2|Zy%%N&ixIG6Q= z&lXfi8geIAQTKT-x%Z%1b9z1P>Xmk=N;yYf!p5o|I^Wmzd-cZQG}6TXh4XVA zK1X!e2@D2$3du8<@ewq-+9u*YWRKA>0xiANb8?M&(&t9sWn?}A(QV`{9q2I@4$wA! zOS+@GP+Zds>XCde^F7AnCXx#FUPF7yc}aWpe$4yG)v=&0Y+KEG%z)MCBhj18svGi; zsQH=8%O=I5@ODinoj~w%q1%k-VI9zmAth_v>0;Ag^cQ zi^%f5%Pw1>cW)(#0|wx~+%_IcO_mw63r?BYXEcAN1mmk5q!S+dS`q@35jdI7;syQc$yd9L@Kx_PO<@-<1)Gq?P BLgfGe literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper113.h b/virtuanessrc097-master/NES/Mapper/Mapper113.h new file mode 100644 index 0000000000000000000000000000000000000000..18d755fb7156a82f111dff6b33e2b409d921e716 GIT binary patch literal 884 zcmd6kPiw+J5XIj$g?@(|)6ycPH+yR>c<4X05PIAu0fSP5ru86x_3CeiNGu2<^dQ47 zyEAXzyqQ`5c654nt}|B^>sdh+R%oUh>{c=MrUzYXNG#Kc*ca%&|Hh6q%zv9rX{+nh zCT6-aO_;zOi}p^f%S0-D>l0iF`tNLwVd?$tV!H0x$Cr@*qDOXc>AZpc*dA(r7aXg$ zySs$iEyfT_t(@H|NBYqeRXMK#JabO11g5)2K^sr0R1z)pM9uL0~q%3Ii+iKT_X7=_l%nIb_WvMn7c>QRHsMyz6b1&=n(QX%IPNVh1^|o zLFAgWPA}*_O<^8O4IeKsdYx|f?RMym=zcn|T$J>&Y>muI^V6l(dfCfR|97#&*koYO z0lh^`Eoi)pk3F}e=MVkoeBk99;Mx^G*J+D(G2RJe^yv=XEMNvd-M|%lZq{DYOGvy5 z=Bsz=X@;>beT0{7*!%?SPvLbpkv6Gg$h9FCOQ_Bx%^y_^26WbthkaaK z;mbXG4vY8kb|3FgB}Zk38h(}?lQSkMgN+G$w2C;Mz@l;OB3?7=FY2!`+oEL7G3#>r zf;e+r(|9Vg+p=1f`#9e3n0-L+Wj$-Q$6KrqwK$AN8P<)nsEsQ8N%*u1%U!Jb20iYt z3;wkSR;>W{orp0Rh2Dnixd&D-L)u^>qwQ#2#gk)|C!S}R(~{^jky{WU1qEdy610wK;-hg7{hmo|I2N-jxdZ$}vGNKIrGvo_tG@P5$ijaBlnt~%#cwz{%vP2EG^Jw{#J!K&wu%@*GV-Apx{ zH?D`MNME6;-LKiYml++G$8-(Vma`rru-xxyyn48@rV@8VqKmF;-So%T1w&h4sy}UXjXQwfl1Nm&%rIona(K3k zt9-5+uSw5op{Dvon)G~TorU*oDduw#TCq2&jui3Y+&boxtm$sRb3fjX`9#Nb$q&u@ zBt4{wN_mFr-IUV|pW+y+4ODbL>zoMdLk9ebljaFn;U~;6!~E9Q7~ADfhI;!Fo-9bD zT*GY6hk>+8EG81Il0+eFj8E5Qk#+F@H?LrUtyI_MvNUtDEbaAHB`41apF#P2@%J-g zc=CGn%vhc*VvQsV(AUU4J0@xR?4JzJPAp-&CB>d=g-KMS?-n&vv9zPF|G{w{RX1l! Hr8SOU*CK}a literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper114.h b/virtuanessrc097-master/NES/Mapper/Mapper114.h new file mode 100644 index 0000000000000000000000000000000000000000..8b5c8f677ca9ab071575cf0393f8c621dcf4bafa GIT binary patch literal 1514 zcmd6mTT22_6ouF81pSA3vTA@t2IBv^_X5)m?vLrA6Or4aG2SKmI)=$JzYJtPP9 zT=w2)oo{WwK999~V_$ntm9HBG8ZaUab;3B6|4+jxCAxNvnCS}j0;>_j%cPcv+dvbw ziR%)*&ekf--22iodAE~QFGv2ZE>+i|s~g}?q@KpC4*1w@Y438}y^67jndYv#-R$XI zeN=Ur)u=P#GggjDg;+syp19xSzAiD5%4B{J>#L~>*%!+FA26u;=I+$YY?t-B8q^~P( z9P&GIFEu_k58xZcB#Th0K+RK$lln5Q9!D8rGn)Ypb>%bf(8; zk8Ng$8E0K;zfmhh!vr$Mc=$`4bwKDSE_&J2ck#n|Fh$X Q`Y&w8R)56KV_in)8y(TYasU7T literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper115.cpp b/virtuanessrc097-master/NES/Mapper/Mapper115.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b0f0724ce14b77aef3cde5372412333fd22c27c4 GIT binary patch literal 9444 zcmd5>VQ&*h5Z$k?)c;_USmt+FdKVU-grA}FZna{L+p8k-U2yAg)-D!U&mDN{`xucKujOm<7>)lHy-VzL zT{!BZnDHDlkmbAZxqUF6EPM{%dJ^v9YJzC<3KC!7`VMx6r|_{po^a*~uJR~zn0X9G zQh!Q*sGvXOS>0pcE&A6YTX-#WO|)Vb)Tb550+s>vDFKbZRoZtdm(YkNAxBCA$f2T1&bRd0XFUd2v>Z$oX&)I@0LwaP)Ggjv0QG^M0?@+X)4de)o=@O zct89WuO8sZ2$61#+-L)zM=^^pMPrR4JUq%Wu2~QBa_0NDV;%DlS=cnrW_6mk+(-KZ z$g$#i5_{(nLs>D=VQt%eW0r9)k1Cur>;O?z)yTrfa8OOBd^!M|d8+sJ6NfU;GQPWT#raoxB{zZ0#Me z;i(&I!@P=8^tgn0LqA9*Z&l|mj3~_9niA_#Vi=ag^_VB-xuV8)Yw=Xjti||dRp|jD zOXsfGL z1+adpTO!X!E&-wPDC=PzyW3^(l6BnxsH*bhdX+2WIgQs6s@`oqe!jPi6Fr{r=>&~f zOC#2~8rQE`p$y}Rh1z)Uy0o1nY1CZ9%_QP$yi|f`mChI8ter2f-bMvR}OhSYszQ4Fs8hgbF`|LA)DI^WJE zFA|PEgIO}=wRu+abcvpI4Gg}5{eV^cDB8BG^a`ZqT^4!zl@BkTY4t=it$oBy#@DWE zBGXU1CSzXLnRs^Kv7`MQ`Yi4H>0*(h-j6$McP@PlYfn1YNqJkh@o8ht1n2F$$ohCX z&NFrHR-4E${OtT7@+plyXYp?CAbT&T-G^`L6ycR)P?GQYUf}m8zKYzEv-az?c0ciB z`vCh`-rwIQS-YQg+W7uX$=baRw}|F%T&&$IMr*In?^U0**XQ@z%G&Gmd(C6*{$|VO z_d3Gb{r#4;JAT&gZ@H}9@w0Y+*Twc>f}gV3w7yDhF$CJeTC#cmoJ%{hlCI~+%*CjK zV_eSX@^Kw;F~;*A8_zK}i8M1Z2}hkXjvH@LY)1Nqv6WYg_IJLu;(L$t_qo)|0P+XnGZ@*i1GZ!ypmo@7UdE={dNiS!(4*meAzzpnmf_pZCr zqd}j@roHLz?0nyRGjsj@>xu5)dZ-7ERjT*OG-Va4)Mu?J)fRh|Y7Kdo8e^qe=krnL ztnl37{EVHMPBmfwt@FYEW|c?t?y2Pp`G|A81|iyZ2&V_pOqq zSB~BpHJB;stfp0NigI7^Gv)rSxkb2gy2n22Zl^0=kNY3AO>aDMajjE|rbny}h8Fi! z5A5J$9#^_}2?6Sj%G#z`r2kUE{UUOtVCR{SIpUM1$P1+eM#4uxI?v*frJ1Fb{0}ed{HgnF;*O z+ZbDhW@kh%8WlFlc25HkcR3l({cJkT%M>$JQ&)+aN>|{ea5&HrdTd}XD&F1>@l4qP zQx$ZaveV`q=WDu|@^`&!`A%Uqarx!$dqk&r9a_A^@juZgz0&7-4}?>TaH6NK*52+% z_Or-dU2=O6`Sr=S?X`fD^ERs*9B+FZZ+jeXuew;?ejeFtk^LgFUp8nr^De>rt}oPb zjIK7PMF+3eD@Vt3Jgrx%C4Tl+sOiDeTTr)kNwrPWAyZ(}6?~I<7bJAhCI1Mf$)aCd n*^*B5-P=|*OvezOHSuf~&d72L)Faomt@gM3?%(jeZgTkp4}kLJ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper116.cpp b/virtuanessrc097-master/NES/Mapper/Mapper116.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d1119f65e037960e6065b7b57bd42fe1f3c27774 GIT binary patch literal 10726 zcmeHN+iny`5bf8Al;=D}T0lV%$I9Nk1_F_cZ7zuc2XhG_#9HiySQz81O#(vvL%ul4 zIbBm*-90_KV-OY+(Q53S?dt04Q}>?v_n&Xw$M^Z%edeWVxf^ci_VF3HvFqS7a4olt z-^T9HZQ%co+rzh(yMXKMZ$JFKtA-v2{vRGN3m3MP)4tHm9 zDTe~{NA9V6h?$S@yUcxs`Q$+93isCkm+$+ae~K}o)VsCGOr0YmortdEl&&-3Ep*+I zZXJ8Q1r#35p;M#`-O%!PpqW3Q=@B$ObdMqPsN6C67G=C!fo&a3 z#?=aB<`%s5rH^-vhU#nTG0J}zvvbx-UW{M`I4~Z}yYFG8j0#u4ZRnok`*qmaPx$r% z(PZQ;?}}T3*KNRuXlt^T?P^x!xew0tl@WNnfJe}l@54iHyA^yJVwG)Be1q?o-2=oQ zuCndrAL3gWt5z^}86I*Kv+shEoKC{i>GAh*wIJsu_Z4iv?|#PJN_p4ycWeHx2j0vc z4{(uo+x-eGPWts#meb(y3W&&ulBqm4!e0%;s~*D*_z``17yIQHBW+B#g)H{cqb@V< z0Fgt?*@ZN(F`M>q;O80A1-MBBI5R=3#0REsrxSoPMx7$0Y7S|;;<;jQMJr)r}v5WdU- zn#0?Z9A34Es!gOhi=3)dRm&mOW54DQxzB7aCub)sXJ@LMDN^z7)O*^FaXm(glEqTc zze1#hBFwUiluMm1%*Lg<>}N9r7gvR0_?HrB}RKy&_4cAz;< zcF;Yh9dv7UpgCN3kfJ`jeo)k#V%e*aMC*s+lcZlGiPkR1C&@yMBw9BepCp5dB-&v} zwPe|RmZjul+flr3u|^h+0Uu5l$;o2bIlGP{+|rbM(487*wKh2sR6}D_HP3yOa~(OS zk2+!*)!8aOHz&1CSf^7;<)e0Dk(9AZVzhWN`=BM?-`&8hF+SSA+Q>DGvyNpa$huIg zR`qo47I@F|f##g=P38P9sK=36^Hgst>a#VvJVm4Zsl2s^$aNa39q}CLBt(1leT`Jo zp|3TSK99^oBk9u)D3)C8V744mO~u(?H8f}>M-D|r*klaR(b0U5X!V+PAJ$bYqk|Zi z9USXJ>E$+IvrFib*5QFwZ)l1_UK@*zP{{42iCu_4HSaI3!INJj5^ee3P|vdtlD>@b zfH=M>t6z;hXArFz7p;S9p+=XUit&h5W0m5fr|7z#JMSyWxSCYns@2pUWH!&j;&~Pk zb!LpAQJWWrUA@_a+Q3cUYp$aQ*h4?d4)v*z#-Z)yIY@LAKC`Wg$e!}?oV^C`@_oDT zYvELYeK`Aa>%^-lYXldat-+S{w4i{^??dlf*pXy-^9-IEhy6CG=)c5Z9i2DNJ(aU~ zR?5rn=Rn(a3pll6#Xi8iuPfFdSPG}6=c)r_NI7TCovhmW;pu8OILi!u_ z@OwT45@YN;)VJj;^D&9%a^jFfk~v*YsP>Uv>oU4pZEWxJs0wU-UES7>?Z$lILwe@> z>`_qCz1DfCWEidX0A%>Jz_}a699z2Lo2lRA{am_}nPY!sFr_Uqo zd)uGy)z6d4RV}{moVtl@+QZn|of&I)XN;$^5nt2QQT1deJUKlzeRiSQvhJKxHOv#< zRKo?T9X`L(bC$-$1@|RDm zoRxAJOyROv%SG%>)~5dRYl-HCif1*N;V4m^4NgZdeCnaT^ywi-w0WgjYF0erX=`Y$ zRsy{AAqT zMv!sCPsZ(?1dewD{Iv28>;F*JF3{G!Ds5c%$JBCHN@3o)+V+k z{0wuU;M+Da4?{g)qX~6$f8#p=e2RJe{uX+e`hoP=x?}SG-D~TymIcOO%MJfj^Bc@;l9>up$j|g4cKjdk`ZkCF literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper116.h b/virtuanessrc097-master/NES/Mapper/Mapper116.h new file mode 100644 index 0000000000000000000000000000000000000000..6a3adaf254d445c905431dca2323b94c70448d1b GIT binary patch literal 1722 zcmd6nL2uJQ5QX2>NSrw#`IsUk2!$54Ct8Xq3ZzO}Dukdij@4SAG&n94RrwG6V&I!y zJG+FmLU5^8jwicsX5PG+_0J#obp6&%-Egc@y;PWeWO zZf9A%4*svSgYtJ=TQH_Bo?>Oh7=gHpy`?wWhhxf4hDU~Vb;N&*wOGM(RQZM$x#PBr zPWxn@@;_tO)E~n>aPj^&Q>mU&Q{~Xc*Qzwn41J15i7jgFQ+uLaPKK^7!`U4$l&NOw zrmiD39k0lj!eO8T)Y!!K%Ezj=-XWf8(bHa};)I=L`dJ@L_rLYEdMB_tb@k=$cf`ba z9onuXj{mXV>apI<=OCO~gk#-zo%VJ&vL8hD>J{F-2-l_FcHTmsTqk7mdA#lOc-!ak z_Nt5J?T3;5D6-cgd%elFSa(Uj&pM))V|2CqTFiO*X-b$OkI7N-44h3sHAe;ZEzZ6T zH4}JpNzNUe(`!?7$eptL6|l*C1`_7yoUg7a@+YqCYsnn?*=>6oZtoDDHSz2we5A&0 RvL0M=(-*OO3)opx%P$iN*plZ04AA-71J$HggQ>c0ttDWKN?XYNO=29!S30nUlP`%y&D+ zUEh<@7~)3!j>Br$wi!%Ps}%iLG+ zeeJ=XYxD-~g5eYl`RxGfXQ;4UdL#A3ybVyp_E2fhP>Z_o6<1aF&2QI2?HBUu;7e4V zJ8&6AcqgcMK6tUdmtYeL&vf0>YQFBU+!ckZ@UkX5&-!{H7B%!9&!p-nE5G`V_2KT& z=+gn-Avn!3b4n-R%xjbDJ$yI4hWl*N)@rZT$#`jjYkCJ+59}j9+Nzne&pUrTc|GAc zTJlzyzCqXdQS2;_n4-SU5p^AO;YZH+^T@;-d$r$n){e&ebY|T9-yk=7(s5~rc8utc z`?0BxL!Bj!23-KU}1&bC3u*3MvKX_()K^D*ui?){2!cC&0Dw#{CYuiDuR KjTP_0=K2@Jt+luS literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper117.h b/virtuanessrc097-master/NES/Mapper/Mapper117.h new file mode 100644 index 0000000000000000000000000000000000000000..d9cf7f666d49c82da6d8853a0f9ae04d741cba61 GIT binary patch literal 1176 zcmd6lK}*9x5QX2hg8w1MR0Q!Pw6|i_LbcLXiYJLl4nb*SnkrKI*VS(}iHVql7oiME zHal^|1QX*ESQ{qe>F=KbBC#_gtY9n8By{YSRmj911mnvQR z=9uXU^^7ZPqSNYH4_8vWdIXn%{^_kTY+Zj%OwaAK@%fy;(U3_TIo^Qz#LOh;&*os& znzQq%U1JQf)y}b7<&IvNWul1H6rMFt&Q!bVmkR3qf=UV5nEXN$@aM1voQ=pFvmWT4 z`!Hk`v7hs_@m!((9mOF$okj88}>{LJpajA8H zs)@$*G9oi`3Jhnr)=<`$_3t^)a%PfI%cK5Ocj)f3F1%^_Qk|~(O!ru~jeb*hYQ42* zV>FvXe?6O`Xytkf-8*8Q#hfZ{JNT37MGy3|gxhXa{O#0lR0!V&r1_AQIIEK2Na12p IVOQq90PLZbFaQ7m literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper118.cpp b/virtuanessrc097-master/NES/Mapper/Mapper118.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b417e776f781cc87619c3c086433e7a518c87fc7 GIT binary patch literal 7536 zcmds6ZEqVz5T37x#D6efszf2ecKni-wo;pd8j+OX02QDrauZXmmf|`oEvoX@f#=!r zcy{;B^4UsBgidkpZf0la<(b{txqtrtLT=vmseBT&YRI7sWrAxYQ)%Jal?JYT`A&}U z{}9)n?1XoG|1mFm$@IEu9;04=${#Y8Gbt*3c1P~W06sj&--T?*X0YT#_}!N$@;ye4 z<;(C)S%v%xX;W}E@V+7U@Ye)gpYG!S?(Atxw(zuxKb2Ns>=d)SkY6zJ8Q$yI_ZUwJ zD*ZB=X#)Nipc$v}==;{}eQQ4UIN0zIxOgoun5__xfU|Q@pTpkK3}0jLzrnZ>Fk%#sYn_p&!2er}zJQD==2a9MHckF3NWTd9 zNIBesWm)+Y(#K&IqV*}TI*>=W8zPg>K>Hl`59KFhC^35$<{RQJ&fo&}zY9_rU&^u3 z4Y`GO+OQGk;Yy{pnXl*tdMWi3HCr~aDg7|&UcgJcQie-0KYEln zv(BsjBvDCA4i6I+giYTu2kzve_SD5u};a0*B#PU z^PTzOLxjXw%Ky=KM5v=Q&uQCLQ>+qkRY*NW{+uK3n%B(zIHzMz*4-gFhF89alq2yq zR+}7wb#tFH#E9Z^)q0?sq&BAO0XYnF>)Gf#{>`zmeZ_HP<-)zqEWD1m?Od@OJFBc-{RNuXiR5Ex60f%TN^84Ox|{4_ zH_3Mt+nqWKsxNwi>#^45Rn>KseYrlAQKd_|@|!N*TDs&l{Caw5eVy*Irbn-q9@S?R zi$H<12+!}^avvU;;B3OXJ)C)_IMEK!4`JP}cPFSAAK*-Qgnf8`x0}gsyxgaDR){MG zv!%bLEq;El&Iv`K{?g`U=cdP~VgG_pPG@$rhtYt4h>q9r$~gFowo{r_kya0ERB+x8 zYZ2?tTjA7HmUTC9uqwD6s{HhPV6r_<>|1G^_A#HHQzxj?pFroT^My&UEJ+cO&ZgO< zJ&w;H&&H&gwGEV1&9p2RO`7M1)&=Z)ajaf$sUy;`m|~9nRouFY+L(IyP3uEnz3gsP zBrRUatB_-PkXGTH`MJ%IX7%n-IGM5kw1d78J5biQVZJ(bH|b7ogO?|N>w)=wGrV6s zPEYt&#a%*%o&DlIklO50s&un`(C2O~nOk*ssku$LZuD>cjL+lby@RSa)vfp~=c?oC z=W&m#Mb>9fJL98C_Qluf ze@~L$w;_w&aL-G%iJa`EKf^C8Vaqw=Q~K?U?t3ZeEv!8@-mwx(;CGXhgV;$q+8KxU zv2~7}jPAW`rF-3{I(R=@>0XN|-Fn&uY^DufBiY^)?|!MSUV|8Ky6dIf?p@=~ceVO! z&;j~y?5+Oyn2J$kSkW&mX02L5f7=_yhj&Oc zio{vU;a^6SgE&h${L6uI5NRoge?L$TVlCzHuL#OPv>As*J;qaPxneKpP7xJ*f#}P* P9Z{4Va}#~at?~I6VPJ0l literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper118.h b/virtuanessrc097-master/NES/Mapper/Mapper118.h new file mode 100644 index 0000000000000000000000000000000000000000..bd5b7bafb15e0cc217bf48808df541f9c11b5527 GIT binary patch literal 1502 zcmd6mT}uK{5QgX0p#QL!7D3uKdZ!f$n&t-*5wWd{EtPKTR)qN1t7p!-?k1ab6Ubq8 z&Y5>+-g)Poug_gszqKhFhLt4^vBhV(5=fDCA{MJASJL6X!K%u>In(q1T&hycYuyx6 zUXDDW)r6JHRIP+MzP!pkI1ltsZ8gKx^q0nz%t=h!)k!lCeMT~lsuWra|VgOPbCkpi@z^T@TX+6i5=kC!LG=) zbm3-kVuQ37d6sKk!2bi*4!LUd($JJKhuO&p!%(>c_omFn5&B<7rs zt;1PW`fIHA>%(en`g6?hfVoCG#2V)e|DoLQGH(~tO1zq3C zo}KmW`D`B~vTWJ6v$ON^?9Pk#zkk1`>-YMSz6esa=m#3m8D2vgQ5&yqYT@-09ncyb z(vKMD-=E{fR#LgHo5fhJzv(TV(g_tMHoHx?VXYyZ<9$IZv>G(|5Izf7cYvqI^at$t zE#B+&O&DRW1^o`bBg|>h9zBNTTUf>DdFX=aoKF4!e z;}YxWN(Ft4Ry+g!ON=R{NW*gS^Y-|8dn{!^Pl8tWpv4<{MMtzt`}A|rGS-9j8-c6N zx3y(tgEq&UHzu5Aq=V-oOD7rWPDZ-PNN+OIOGf&Wk^W>P)nLC=gZI$$2tFJ^(?2I% zSdU`7TkgZc=NNrKuR$yRI|cn;m^XxVbi^!MXXY^w@D8&tz+;4UV~iA7QTV?G_c9cj zXJ;Yw891GWRTyp0u)7cGKE4fr>JyB8h41(17hv!KzMX{i2KeUDd`|BJ7xo?V(b+A! ziC^nthV zngih4Rw$FRT`FfgBd2MUTFYyw7F#Dqt+y7-=OtmQ#@1qrQ=A{{g{R}w`UrOa9%y`m z)8yCS$7!y@+3!}hvw875%r={dwdz`xsRfrhufU#R-Mytnk{A_?n`U*ibLaZ#xY4kV ze1h_+p&DL=-!>c8iO>G4)~VC5P8_waTBmNqI`PSM)jIX2bn-b)ZeP@kBz#KMJ-zxF zNi-|^RFcG}ZJDe-lI&E(-i=I5lapNI%?;!$obRsDU7YK0kuUMLJv`|k_Us}WJ;3X6 z$P&vUoAOb6SlqG9LA=9}Z3j8`5#F2&@oJJU+sH$V?SYOfmP6oiHHln9T@QwcdwQlewxPi zY;R~b9%of*h5mw8u-dTvY?OT=pKPsJmB~Zw$bWF69FO&uI`}-~zi(ib({S4GzGiM8 zCY6`uzAM<zjy)*;@bk4cS1%M3AMid9J<{qs&(r57 zUg9oJD%NctiN%W|vCdysV$ZWm;@$!h3$8?BoxiNao@bTB{RJf63_C?6*7?gy?0K5R zjDE(IB4Y)SO*=KWfR5Efe$8d8P~8dg=QvesVx9llNYAZf+T}HCFQi$wL^I>moMyRo zsx{->Vo{&r`u&?wNTslX#+%>#=dFv^xCoMeeo`9@j-BTI2+X6Cf9Z(s!I|DLqT}c_Yn*%a#-9qi9#N8Y(tM$~B z*7syQwOLoG(=JW@n)(qs3AOm=f8YP2h5!Hn literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper119.h b/virtuanessrc097-master/NES/Mapper/Mapper119.h new file mode 100644 index 0000000000000000000000000000000000000000..196f6a68abf68aa82821dfaba851c9bc4295edfe GIT binary patch literal 1546 zcmd6mTT8=05QWcc1^+`Hs|eojZ{AR7t5`)uL}FVssBKN7BH~|Hzu6>a4Xya#Ls`=9 z<;={Pb9O&JW;K3eQWK6akO2Y-`b-8sh(lsg&~? zH^q!sOZR9sU{r>xwt*&nJ?R=;1p248mf_9y=VLb9&aiw{;v3pkQ`0VQh(G2=!fJ}o zs`=hksa;?U@uqi|-6~h~jEfOoR&-3B0bimjnKm;9#rYYPBImtvIMX2!JIq3&+nmiX z-_p5GU>C3xf(@DFxytqS>ERXTE$Rh2psN%92dqPOO{*?!%JFss0`0*%c4(_%_t7Fl zy6I%Rx8QfE8hssb(sW!5*UV7XqiGR1{Sy3%sTaWESf_Nb$voA`*C>xJ@)`G~zg_jCV@~Is zdsgj+x1M`npe%a~YTn_})dH{HJWp3k-hA1cuXyv-A(>xbcZEYS+B}TtAma29l-={t zy`#>MOgXBBVoxB=?f4g*z1p&Fra;6kO7B#zb@2w8d(`fRX$*k#961B!|1?IU@=V6ON;le)O&+;;Bh zJ>|e_d^rC{#YFd5sN0NF>3#Lu6ZIW)qDR9;s64ZP!LGXMYp literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper122.h b/virtuanessrc097-master/NES/Mapper/Mapper122.h new file mode 100644 index 0000000000000000000000000000000000000000..af2b12135863e77dc99234647d752a84c2a3ea0f GIT binary patch literal 812 zcmd6kPiw+Z5X9%2Lcc?fX{iLogV>w2w`xHJ@%S_;1d0hw)I-Quum1KC{}j9yWO>QU z?(FPj_V63){^C&&UR9{EoC+e3?P1MkjkHn9MedzQ6-CMZ7TGt^i|+UA;8#SwsbU<&{M literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper133.cpp b/virtuanessrc097-master/NES/Mapper/Mapper133.cpp new file mode 100644 index 0000000000000000000000000000000000000000..84a2054943a06ccd1629ffbea37686c0be7ba7f1 GIT binary patch literal 1032 zcmd6mTT8=05QV?j2>yqCDh&vx(Fdt07%vFgTI!{U6bZCK5L8rD5dV7X*-1B1kkS{S z95$EDoSidgCez6}%ZF7~OqHWU&XX|anHC#@6VBOVpJNW`>aBkA-~I#Mp`dBm-155K zc%)!N^oL(<+Vth$i`FYmVyooSu92MdyFEpmiF+%5Q%-cxrLm9b%GB|0r;S4d4m@F<)%&!t*>W2P*z>8_nFy^A#8JucOg nj%xNj$~665xqef*;uZM6WB6mQRM_IkFjNljK*(Aut-JFLI{0@; literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper133.h b/virtuanessrc097-master/NES/Mapper/Mapper133.h new file mode 100644 index 0000000000000000000000000000000000000000..9ed882827044d2d9ab35f742c5c54b2167f71328 GIT binary patch literal 816 zcmd6kON+ul5QOXMg8w1MtOz3B+|&AiJ!lqG5RbDahk$5UUx$#t?)vqRkO*EEq?ypu zU0q$N`MdS>dePRKR~2Y3r;JGStG)(AKrHpCvA#4_#I4S(_g`TyRk~iyG1Ilx4zG?x z>#1u)oXK?754aTcqqoM8`~PcVhQ9KQFJwN#|D`&f*YQ4y_BwHU=h(L9+lB0|F^0%h zcy`;|(nSYU#bgV3j+~Q1m_AAcb$`vKly0IKGgnZ7*7{~{LgwIzL3GJS+GvHwfQnOk4krQC-zj6xmEt){0We9R@OAg#Z8m literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper134.cpp b/virtuanessrc097-master/NES/Mapper/Mapper134.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8df1c6aa239b80e70c6418618beaea3ad7e445cd GIT binary patch literal 2614 zcmd5-{Yx7`5PiR1q5s4E6e1LQr)ezK3Z@?@HCB>Vks{@)X$`hDXt9F!U$4HIy}8}X zMsiXLGF(1xW@p~Koqc=r_bDEpJ;ozNm78e4+v0;d?`2uZ|O2P?Dz`8((H3vDcDCs+EJkV$#F!-)4>`|j}m>i6-MHYW+$9rUB zfY+>FkkunbNH0C?;{#_d<(q;l3dJWijLmbdmt2Q9);zX4MT@Z+F45r>XMBXwv|5*N zMWH*C1W_4xPO>Lzhxoy|DPHpN^(}9P<#LBy^cP|tG3QC}c2Q@j&a|5jqn0tD8{G5xNSrN}!AdA*{{biJPNEg4(Nj_@4kwU}#-Y2U%2bh=7Q zc@EsfJIwMqAK9}AS;)lvU29gQ8&$F1eE&IBaT>oxIR;`hF=z8TUXHMg@l|I(&hO{m zsg9iGbyb}{Pt6(al#eKm_iWI=$vDxc0X?Qeepg2LUY?wUez_Y&(R_xxbMMa0J-dIW zEe=5(VcsUnYSUp|$=zZ~=QVkjx^`5N+T}@;iOtE)HBY1GsChQ0)p0gc;Iuq%o?CZY z#2RcfW*sG*!ySC&jnb!b$_>-wo^MmTKT(~Wwyt4K@AiY>T}yQ^$6K`nb`|QLo9yNq zKV+>7&c#qwTeM!LY>UXercac)P|YXABl>35of_Jya^Af1y1lG>7b~yh<-WM(MiQ3p ahuc(J81p@NWL}$n59YP~^J}GtY23F%UM>;< literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper134.h b/virtuanessrc097-master/NES/Mapper/Mapper134.h new file mode 100644 index 0000000000000000000000000000000000000000..aeeb145ef8e5133e46a2330fedba4813003173c2 GIT binary patch literal 1106 zcmd6m%}T>i5QWb+g70vbRRj@TwJYln3bmESQe4I)Xh3afqAp5bUH#@JF%ez35z26r z$(@-qXU>q1_kC@iZEMT3a=KEa980y-fetZ;g*w)WE_9|bU#(}c|1wjl;k9Xs8LwE6 zXjNdr57mxPrO(OrqC4_3vcGF<2rEBdH>dA!e#7fgKSuvhyB;@UKdGKo^0mXUZr$DW z=-uX6#!73CZk+?YY5}VRZwgMqDb)jMP%~)bb2?>2Q;n#3Bg<*733aD<5f}*>d-y}$ z>IROEn}~`CuR*N3+8&+G!CCSye2yWTAHgZDyAQ#i&@a#>k?<=oth0=%P2{`^B`Pn` z!qI)I84L#a)wJD7o9Y(NW*O)f)u^#ZNeb{Y=KBj6~qpa)LC)kUKcmMzZ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper135.cpp b/virtuanessrc097-master/NES/Mapper/Mapper135.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0f22917055ecb2ad5239f62f03294544fbd41c49 GIT binary patch literal 3752 zcmd5AtZgTsOGDDUOlU@U@P049MR#pD$R(im~Lo`Al$xPu!Q{8J`SKirEwLo#Fg; z!X`ZLamQCLzUb$IL!w?5+D zJ-jovSc#to_dHA-(2i4TpP*09z8YNz#4*4NY8;b`V@f>Y?;hUcEj=vd%$PgI29b0) z?yk9CXUR@scDqw7@h!tQbjVr8N4BKJKCwPF_mKor8SlyRlaQnEUc7#HZicmj8%cj8 z<_XU{3ufzd)y6^VF?inkQp9oJ%IA6`^4Uv%Xv(sj)Y&RqHv-eLB;;<(_W{1>jgqLlLc zfH|;#%S2k6r>fc%&rPOGrW`mf3{uQo+$6K(r{rA;x|L|bUtd`#L}=vbZRaiLVz zzkEGS*j=gCj%f9kx%D1zf0y<8Ls9RnN40Sn%vtZs@zRV#+N=)4#YoetJ-u3l_1OET z?JMfK3RU(DKj^QvXHk#yltU5WXSJr;j;Y(_K16;#O+(A{4ta2vx}>|*&@mc98&p&7 zQp0M+hP;6d-gjnor9*nq4RgxSbXV%hltudVH{W|*awhIrFX?5vL+4YrYjK^TUCo14 z*PX-?t%}4+(L32QHW5XIlMCjJjSqA?L-yueBPh$aYxYKSLOp^3x~no{*Z_}A6nY+JS@9K4v2 zO<{KD&6_uG+n?`a?cUngo>LX-RRKCTQhn$N+zj-lx5lt^^VKnJce0JIL46#3`qUg%Q=$<(3!YpJm^!5bpC8j{MmAB8nlDhH#u`v}K@`I=1#v{& z)r0QP7;+L*5ffF6MOVAWP*?C|{4X5Fm@SUcl$71O@DJ!0=!Q(R#ziH{l-fk0b0Np& z3@<{uk93cM4skJUebTDh^Vuvt4Qt9%PAbjyTASTw{cEkwo1$v&oSV4cDYsPk;GHVI zo{8SzuDq|Z0dLJS98KOJ^S9WwHg-)A^;~^t_=3}v%<$K4C0VQRcN}q=<3fy!FM7n0 MAwK%|VO8?{0?NRb?*IS* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper140.cpp b/virtuanessrc097-master/NES/Mapper/Mapper140.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e8bbec92fc4bab58cac127e47593a02729573c90 GIT binary patch literal 934 zcmd6lL2Ck041~X{g8yMp;(}0ZJ&1w_se)LsXsOhT2&=FNDk`lY{p;0vS)Wpn>a7xz zw}i}OGVK26f%}ULX;T%@Va!r7VMUP=1%iJH=aScTZ;m-#pDc)pNL}!(LWQ0@Tq`%^ z2TKD~gDH@_riy;lohf2@yH=L)- zSNOkePf~BWZJ@s+)@2i3E$Y?>R3IHU-GdM*X>}0)di7>;$-sLutjx~7dGmbp zevQ$+=%Z&OhL6oR0yG-`*KuT3Hvpsooo&r9Z z=CuO%?zSItUP6q)nw?K#6+-OTy=11z6caIGzQ74bDpjm#c4%gfS7v9#rIsnO--Zj1@8Q+y>8T?8qd)lfr&{EYdWkfWkn@=M#p zt9cX)St4Zn64bNREImHs8V8KXG45c4kvL?Xldo;o!x5`U1Ftm){a2f{ZIe~5&irlA zFL`5oCk1(0m0pZ_aUNNXh-d$FWtrBUtR|ALQErymYotRjs`C}Ca_JU$#$0L@NNQWl zsO{cTw5?~B9Lk>?}1rSq7#AgV^@xx7AV(if-H-Q@J)XJ(l|_F1W-d1I(N#V3s+T4eQ* z|7Gq=Rs+M7lu7fZNv_gIdywc@r9W19UyIe$N&HU literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper142.h b/virtuanessrc097-master/NES/Mapper/Mapper142.h new file mode 100644 index 0000000000000000000000000000000000000000..38152d474a4c88c85a01f828e2302b9b0e09135d GIT binary patch literal 1226 zcmd6lK}*9x5QX10g8w1MDuO7U+FMbvQmwR=;z`ytNT9SaZ3QX)>*_a~q)AH;UWBqF z%+9=-dGls}zRz`d=U7LcRj3C!rJPuqE_9_!g`5HYHuk;0ndkqHsZ{bhG{uZpqzPKh zIl*4lnrM`2sW)&5=xuGS!phHA$27fXU%dwTkGf$Kr@pRZKe47-a693%ZuQ+Y=v`q9 zvC`UCx6Xk+HG|a{t52Od-$D&4wF(ARd_<>&XiPlRNIf#Hu^icBVrSTGy=Vx#5RU`v zu*zDy{qC6I3+9op*I}w5=s9|Ce1MrC$Y&$Q_3sWy3vr<}Q-+l8}f_19d} zD}~j}&lmasnEmEDmP!X6^R8FFyUAv6RXm}_2XT8P&cDKVgUVG8&^pINbX$TmrLqEL Q91@hxb*i literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper151.cpp b/virtuanessrc097-master/NES/Mapper/Mapper151.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8c63e5bdb0168f39b6ce1a85245a40e03cc0108a GIT binary patch literal 1804 zcmd6n?MuR76vfZi1^o{Lza(T$Q!}N&w<01EEv3GQO(n5rsFe}@>(#k;Tk6n?Ngxl; zCeO<~zkBX=pC7wezp;r8r804j79Ke|7$S}or-?dhh~WwjdKlrAbIkn*?)>Kvmwc{u zb4<9NF`yr97z;ehB8w_L8gY)Xg{WrorcZ-z%4&rtE_kR4I!p b0w9!UueGE`CGn$3#aJb%dPD0>V?TpO^` z^6Ml(UF5x@=H|vXG`6r$BS|a^6XsDyl6hvRlp?iInehEExZ0yqhd0OkJ){pW*ztU- z)5Qu`?p0qpPc-&5MvmOl8`7ao5)L?|OT~G~*TB2?mb@3Um2kk3CzVA$H|}a|>4j{P zRhw*20k#Nf9o^|Ft4sWs4r|ba@8h9aO+IF6q8Wg%;1Ylue@h?vLoT zM6q$F4hf~)4%W!#UFm1Hq8Yj+BkTEV(Cc7dyWKk5)k!kVa`>Giw{NN0p+?{9S6Q3a w%!krUt)y8DrI}tyv%FNZ{{78JF8N}FaaXy*3UI{yW4$!0o`ob`2YX_ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper151.h b/virtuanessrc097-master/NES/Mapper/Mapper151.h new file mode 100644 index 0000000000000000000000000000000000000000..0bb6b1cdf10011436e9b1e1787ae612f9f74c483 GIT binary patch literal 812 zcmd6lL2JT55QX10LjOaKu~dqOUi2pRSOskrk6V+&f^9+*3q}0vZNJ&7Ng-Du3==jp zZ{NJU$#%tgCB|nXavN zcvTWnt7{|NDYVxsI1l>2x5jV?-`B*9LZyu_;r>jIY~nWXI`)&Xk&3rIY15j!OPF0_ z3~|sgu-oKFpUP2{a$3Msl9dve#wP`Jf6XKxHlAp$Iru4Tj=L$HJI)hr^o+KciUa8` eJb(X(O)S9Xfn^(>DT=Lr?s*j1-Rx99qU0ATtY8WN literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper160.cpp b/virtuanessrc097-master/NES/Mapper/Mapper160.cpp new file mode 100644 index 0000000000000000000000000000000000000000..04459fbf9f15f07cbd5f93be368cbe8def69d350 GIT binary patch literal 7372 zcmd5>TW`}!5T4f{@gKqqI^0B^)G;jrDJiWu0!nGQ2oOS{6sSO@gd9#$;jaVV>~z+< z_B!izK|)s3RWdu5Z?3!k`Qs}6ea~4sW3=kiJ(|)Xo;{jTMk89HKAtUFqboF~5BT*p zo_#tn-}7&O>S2^rufGj3*6Ry>1P-sM7r<$Ydj=jC=(>^1I`^RQj6Olu z9wbfa6+F5Jnj1!<(3Ld1u<$?7%|SD3q~e&E(=NTMQOvOK4R$gP?;vwdUrl8B^1fT` zVu(HguYIEpBlHC5ZPP8RBqnDDiwQlYhrp%}&#+!otbFu8)BlDGYs`FfH`Db=ebj?R zQ{%rLd~rnA@X62Wi4S|gvg$|ij_bu`qm!$NV$Azr8EmHTc=>HeYL+N9|1DAniBd;N zQY9LzD6a%i-bW0vpGp*OoW$!9;(ucN>-vq6T^xCtgLjX<9-`0kXBZSIG?2oAB}viACGMx z$Qrsp8TnevS!$d5A^8-lAB&_)*J&$N?eQy@NcL-p=GLO@uBK zhOGsArA&9B$xSD}a$YN^j&kO!&xMQk#b+4N)2~5wo-z|^j=7q(l~AoU@i~{hd0?i~ zD|8c?bBJk|S8JFCW|*4BL%Wc3oW`WPpnElii&rdM{+(ysuDL&#t4u#oAw{S18@ zQ|nh)y?bKWCZ^>+W*@E_2e6w@c0339GqYCiI-Sm9efowc#7QUyIOVJuzV576oyD6w zL$!OCb?%g*cjRzScB`@Y3 z1qEhcU8%NBbgA0<(b`tqHLK4pyIQxa4ZDibrE2SUoVMEXNt+{~FsE%|_BSyrKSy4?z$f3I zT!iG#;V-DqQorL}Khd=eH)k<5Rn)&vCE8Rxr?u_3bNLLQc`#Rrm;=X&1Uc)-bJC3)Ql3njL zos;|TIiy7m%!x8SDwxxQD;m@=zT`kr@b2Q}LId6#((EnQO%3D@>W y+(q>8yM#0(Lbl5rHI8M)Ni9@r-+rc7YR0NcT_T|G>Xe$%QtBogO5Ti_i^?xgL75x? literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper160.h b/virtuanessrc097-master/NES/Mapper/Mapper160.h new file mode 100644 index 0000000000000000000000000000000000000000..2ddc77b84b981dea9826663d0e56d6f76f7199a7 GIT binary patch literal 1274 zcmd6nPfNo<5XIlMg5M#>DvEmXU{BURSg2OoO7SEyjWi%_Oj1EgzqTMZ{dhmn=B;gQIaQvnP-7O)icpCE7H`RTkOA`JcHdRO%DhVsDib?9mcI_2Hx)V!KfYc=0)fTv4TCk|~jOp|5$bQ2c3 z+vw}5OJ5x#1Ev+_PI}WkIL+d&%EgJT~wXNoRmG+ zbGv9Zul|~Ae#NMox&8w8J7&JQk7d0EJ|%k51HDb*w_6r|P46cvfNu`cyhwh**%zKM ki^&>{-MA;R?Y>N?oH0lHr^xS&X^xmgK9^kYvWS`XPyZL9b^rhX literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper164.cpp b/virtuanessrc097-master/NES/Mapper/Mapper164.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ac77aaf8f2dc041e5f758a88c709e35c83bb8042 GIT binary patch literal 5614 zcmd5=YfoE85S_2C)ca2cp=apq9Vh_MDwN zclSPwOOjU670KSayYo16W_H$p|MghDzUN!{##t4~feht6o^$yi4Ox@6M0gJ6O5Vs@ ze4XR%0B@Hv!6UnO$ESVzkTtuHpRz-j@on>q=K%0;QQlt|C>p z>ks#D3D}*>Z?Y2t*W!bN<9)fHHH43AD^7bDYkm&2lnN5tY4e4aSo^nlv$koQVn zK;90d4T0eZ^FLs`C9k1}I!4ZhVFtO0jIq~ttOL0^EH)&oVhESu*+AYw7p+%>P2vW; zeUhM691UA*n3iIE?!!I5CXf6bteHAiM8Koi7ma)9i}597#Q$&MMvV5F<7FL@@n|ax z2jI&t{sxHSraYH@IZa|k)Em;0e(hWcaYx(Ke}$z#OPOK%_GM&;}BVASQ@WO;+gG7%==|IpUpj=o!o8qPhbV> zsqvFGoB^pB*kNO4w<5rurDR^YTuEw(a-s}utMU_`)r8q5J-b7z4&%|r9*sdg$q3ap z1DecN)__W4XBhD}vAwKZ-MDgEfJHQ(w z9$`+;23<|eh*PnL=Ghot8ke}w@2a`V>#a7^b}x$hXS zwp4&>7{gi;xwI9_<*X%g$ctK>D_L)fGGPT3JpwXUV97gRG{u{-p&N|Xkr$&x3z5_> z5%#YHxng@mztY~EIX(^(&Jt(Og+^i2Te+yeM2z=f-=cUg_EjsS_cHY0A(pP@Y-)kY z`}f%7*~C-4m`in3`m`0<=&KgiO=FSCtwAQo+tUe z-_jAc6=|#QkMffoc0arPefq`GGwUK`g`#d>EayAGh}H1F$z9WCb;sUSJ1cTE&R0hM zVb$Yvv;M;6`xuy8)`qcN9#8g5W61c3sxc4pmUWX^7UuX}>>JMve@;I1jPzYnct&c5 zY@^O@x;op*R9RxI$a>A(zf8Mo8=%spJKbN9XOTR^$#abVnGxxpeTd%0;(dct)6Uyg z&Wca9fckw`%nsoUF<_sP?v2Y>$8-4uPMxW%-qtmTGZ(oT_Vjb?%6eu#PjOycp>Mv0 z-0RraqMO1VSTM((g7=P1oXb0iQF#9-l6SjQ-Z8N6Au6v6WR;+A0$mx1}-z}UZ$Ec@0cQ!x6SSvy&$w#%b1cVhAMOtO^R?$Snw;`1kIE{@}8P001 zR~D{mNyn|Re#@#sR{IQ|u_x4emX5yZV>fGENjveQ2cL}ry!Vj7^jl>a9{J8ZtwYZi zVwkni)(u=%s8su=n0foy%V+mn>~yWpYL}TszU;gw_APfKFiEz~(5VDo@`e${kI^#g zXfge2BKCbZVw}R+vYV?VGBgT2Vau>V8PiNWN_(Q#*f(WnEoGT$N~5H{_0h}HQ=S&J z6u)j`eTtFZ62seU*oB++kh_&6TSC2K@N0}Nzbb#iTdP{yr&%pgkF2&_EM-tyyJyfT zcBbcyA?mySPUM+Zbi*?%*t;?(7V|i*>C>%X$Erwtj_1Yb*JDPrFX#k0=FcuaT6TUM zA%54Wg-5`c+}B@c!YUAfh1n|q9`|l$x1wpkDCmvH@{DU5xixyj4A(T1H6fF@oA-Ow z5HeQx{(BGk8xgtt5Dzt5(tepG>bZGfYt%2lhMwCRf7;V4`fD?xUw$wB4!!&bb1T)> literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper164.h b/virtuanessrc097-master/NES/Mapper/Mapper164.h new file mode 100644 index 0000000000000000000000000000000000000000..03fb9594e1b364e93c9384363f6130fabe0230c8 GIT binary patch literal 1460 zcmd6nOHaa35QWdSCjN)63>p(9J{G#eS4=>RV9=GRK$M8kh_A%(*VS*P)D|tqg$r_1 zdheYxuXCn+ysv5g)}j`?s!%mWidkJfsH|;mDrB8%sJ8C7edJW*G|-5>p+X&T?yKWS zL;ue*meRWBjWMgso;H0)Ffme4$lMNG#Cp;-xE|g3I7uvsG${) z8^L}TB}|iL9?O>3uSD()V~976J-THM^o(vjbPIGwoROiK7!%ygv$zi)#)>! zw-E}axCVGb8Skb~NF4jho_G&9HDUQ2mUh`E+U0diy|Z}6KoxE?C1P%hI5Z_qyTAHc zzcEz}y}!2qc9^+@hcsW{_1|bq>%P)i`e`rEut(Z(_G1*fCtC+Tk|=2fJs3+^PP1o| c+Hm$N*a!SyU1`tftaz%wW0R@Mu;WSIPY$rWK>z>% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper165.cpp b/virtuanessrc097-master/NES/Mapper/Mapper165.cpp new file mode 100644 index 0000000000000000000000000000000000000000..70e7e9b9c44a71a4f06448a55d2c3487e8c27a00 GIT binary patch literal 5342 zcmd5=ZBG+H5T36!@jvvFktnfOsv?L9FA|BM#EM3ZA%zMy0yd=r3E{7+&$H9HeYrcJ z*bviP?{0T?c4nS=+xzqTk^FzZyK=`#RhJFvNFTp%GLTH3$YZJFw<4@xz;jQ2Vw5Xy{-c#luK&$ql>~{Wli45d)#}t7H~CWe)RSn_u0|g19^bADO|>(=Fr%eFIf2%&b!A)#PGy?}K(9<3?rkI-ZTjvwU3}at~z*esCl|WE&W7%9hhXS1R{iAU`PKs^iAh zOQYk>(Qd7LHyxiTj2~eCp>WpZK7$vo_eZbgJTc# zosmydH`PyldRkt%X!s?3(mj`*=Ign98$h#*eTe6KpuU9|AzErJMS(o8@|Ta0vIm`& z(?@v=UMt|#0rxKE9^!dPK4A~?@4EdvZYOd-cXF%j$8zd8(R!51IMn4H-WqZS4)heF z6noV!Xc@^hM>XrH8t`T1Tf;cB0R66!`<+Q*enqMjoz#a&Q>02URH_}fX9vFMcPNuH zE0r^=kkf0FS}WGjEY^^x1#3~hSQ1(_w3bqYkz&^JSgaz#yk@F%4>^L!#Zh2U&Nv`) zUI$&3TD{z!q%E_l${ONN4=LBi;(IdMXuM2Ln~+nAPqRWJ%S@Be=(g}_RcK@RbTZo9 zCO%IJ8pZX?G)f~T_5JdUGmh^+t&k-3{Ygt=b-PN|*rOLO$KG! zd}Z*FbRK0Jwe|;8s6})?+ql>t4)VUn&%DCi8tC4+dgkk*%5Z^da^Nb?P5FPgg1^_G zEa#QkGR}Ec4Q4L2Wf^bw1be8bzo6kT@}(m61@NGxysqCdRQo*nm_?Op(;+~tW~3>v zakmbSb;e?hJ%;s#eD=v#>8rSfl7yBUR}$v^P?CT1 zr&MR2^oH1B2VTvy0X@LR`WV}X$8-N8R`e>HCtB=6Ng1AK)JDsBPH7dqG~Czty+B`{ z+P|J>l_Gy;rnfF<-JJh;R#hwV9K}A+pBor=#V$X!pQkv41&?8MJ;PW}f6sY-2H#)B zlg1n6^Z7koXB{NzS4uGOF=Z#E_|#Pu7d+wW-aL1P_O~iiB?V6+sV9_6@iO1xdQ#8| z;~~|Ch4}@e4KL^EQ%_>+$b$ad)pyd8ujSWCoaXz{N#1G>&-UJ`iYh7jW#B9RiKb<4 zqtp3k$-F<^b3TL3ZM|i`aD4`fcs^b4I}2Uk%;i-6zFO-1Ofuif`FpHYg6r3cb#xny zg4;(c#K%z3FEM6C>){L?`|{w?GfJzrF$M863PZ^6r1-`2)|IOLiC;X=92s&Tf-wba TM@T^ojl!c8(-23cQH}os=N5hx literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper165.h b/virtuanessrc097-master/NES/Mapper/Mapper165.h new file mode 100644 index 0000000000000000000000000000000000000000..a146d022f8d57e746e9f946a5aa0512ccfe51748 GIT binary patch literal 1554 zcmd5+!AiqG5PjDO{zHyc1g)Y-dy85Ssuj~xM5Lr`NQ1TwX{?9RUsvDEW}B!v=tauX z?d;CXo0&JW`FKCX_N`s)XjU$65Fp_Sk)n<>oWj-BLd=_x@)f2S;)U{*rwdG|nentx z?UH*+ImVo~#`iyW;nr5OZ9Gd}BQh6|p9P#st{dbm!K*SH)B0;i1YxE1m2Db&Q-xQf z|1CS_V_$It?cod=Pka1Hv~tI5j9u7>#R_Xhm&i^YXUX2i81sCe_dP?6c+DUBKI6rV z7Ex{o;Xlo-j9ga_BOjOKlM3%QvOXZoDeIe7=;gI!d=+CedzVXq{T^L4{yU-PW-Q*ecpW5!zn|j<4f5 z$=c8`K1@;CB-hv1=lIz7{{HoZZr^p6?zpIY+NK^2aP{dcl_{hO`M7pzOhXh2t0n=JNb2D^v8 z!*yf)W!d4rz;(0^n|-LVjo&@+yFlM#Hhg%v1giUpu?Aer?x}*O_rSa0m{CN`l18ao zwhVA>XclHwdp2Uj#Iv(ZAA!puF!H+m%qkIfqz-jlnGb*}*%dw{-nkEGCPH8>(FUoNovOihJ7m$CgbEdKD zc_Zc#>zz3`?Xav`aee`{bBrOTnt67sT+#=VOw?o7f@j1UD}bqzD#-6UR7(8319j8@ ze+FAbZjYNi_Ep{K25pX$2xOG;%xl>Moi5UMXyg(0{y6GJD2daWRoEMX}0eg~-Pd%wE= zx5sSeJ}i7HdHv7yc+c1Kka=Fbx9{wc{7?Ae6k*H>ewoK{#+pwmE`HdnB-wB`>=c9~iL literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper180.cpp b/virtuanessrc097-master/NES/Mapper/Mapper180.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1160a3bd45e2d75ca9f782f42ab6b9ce397be082 GIT binary patch literal 860 zcmd6lQA+|*5QV?j75WeRBrXKC1t#_;`VeA?hN3UBx`q;1=o&)w*R6ABxds{Hiy*_y zz094NbLMcrw^y8>T~IJqAuST#WmA^KRJbOTJu+v)OmWPbjFqCxpVFL4p4Yi4=6HSZ zCOuMue>AI7r6Ubj@{AIZZSrX`pljK-DxTCk;+7klI&0E?!K>;+(>>zeIviRctQULf z?fPQt>hi#lhI%5o$M7h>)s=%70bhod$7A;E>xay>-PBn1wM&P(7$njp)!U`+H3mEz kw^aE|?pV6%p66dJV#<3w%QnkTC`y}+{LW_O3gxVS0O|~2kN^Mx literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper180.h b/virtuanessrc097-master/NES/Mapper/Mapper180.h new file mode 100644 index 0000000000000000000000000000000000000000..01b3ac49848c8fbff8cc566e6c221f358a007626 GIT binary patch literal 810 zcmd6kOKZYV5QWdyg8$(zQxRHslI}#8D%66wym^2D(O}e#_}5#%xg;3DZ6OSI80K;2 z+%tc_AL^d<^%ht;&E-{MxsDoXtWP;?p+c#)_(W%&RN*cEpJpmGyt<~C@k+Hrs|xGA zR4qoG5}gwIOuc7q4dEL8*Y1f!<`rJV{6aIWGzhq!`{del3#WIUZEN2yV)vuRI0eIrCO^XNH7XPiK4+D#8+3pvuR8UQi@k) zImxowowGBO@2?fjUd(IGw(@nTSdYYwp43vC;}g47uXSftUwg`wTb@zRmFj^?tb007 z^={LV&AHkChEu8BYt|HVd%eIqRU+>X%{uC+k3!F!T!BJk@?lR;CssYCBBvP+MqMXyuPK@o;1sg@YQCr4e3}KRzViB7A(Qdr+cIa-rJ4LR=q1DZHs1`T;|- BdRG7d literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper181.h b/virtuanessrc097-master/NES/Mapper/Mapper181.h new file mode 100644 index 0000000000000000000000000000000000000000..4550016c904fa164fb9539e5312702bd248cd10e GIT binary patch literal 812 zcmd6kK}*9x5QX101^+{isR*K{Qg6kAg;t>orN=eNVNu#(V?{#$y7ikOp%r@aREAxK zx9`1~o!S3f>-^$EJ?|>jOhFY<>O(gga8lv{G}oJ>sU}*f_Iw3iD{2iA^bYey->$xO zooW9YHl?nwbDNm;mGj@A4UwFj+K``D`qV4D2>b7B&7txC9dm|`obt=iKWeOJUAk{z zKc(*>RUgEv9q%rq_JL!JMmu-6%89n@EUF-zAs1$wQQ#4<&7J5Q; rk7vN4;Qfkxq$S%QlNI1Kr*pH46|A+p literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper182.cpp b/virtuanessrc097-master/NES/Mapper/Mapper182.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9abe244883716dd748e736e155664652b3e90f2f GIT binary patch literal 3838 zcmd5usNzW!T$e zPmu7zY&b8svorHNGqW@P`}>-n-g-{Y#H)~M)TSX;k4BWGBIPK=YEX&RsYSPwoibh1 zfG#0*Plxh;A#yCcs>Lj+Ur&uO_UjI~`_!et!`U`%Qxoir@w=fEr3J}vc?RH-zcwIo zjI&=U50(${cMse%t0{1pp;vfjQbm!|n@sxyN)8hs}69D!Yld<~~YSl9S5F1vGp{VL=*N1Ae4 zxo2BFFmAjFuoq4;%AQWvd-|Z>bNJB%(#vVi#F6g`@{EH#nj=2+g^0EQ*)q>Y$zvlP zIko9ViMfeJDjFZ&v;3RN%O=!aYMMc767PLvRhnMn-PQ-|Gi$z9Q^!eK-6~bBKAw2b z;&bzl_vU-DDV1WQWN(MX?dF{5FJ{-=R7ngh%WGcHBxzli*ZdOr3M=4sBf)O`{*T_+ z8!NE8xrE(SvI)&3rpDDT9Rke;Y@A$D%w^vcb|&fd~W{vd#&lVTF24e zpz^-H>ysbg#vfyr*ul**M5pGr68g(X`p=2c-Rlu7dtV$!2UXxB5)(;JIQB#6Igr(GkK@7u3lG` zCv5Ei7Lm;e&44;)6`oz0<*r2JLeNDsFpxOKbISB4qlaf5)%Z|O+3L}^$L3TExpN0^ zTQU#w49d2TfWS_RLx~Mfayst~=`$+v3%>K*Yi12a$a~r8o^l(_x~ODsM$(OfkzKq- mj=(=pt&hW_(^C9@Ge)Oa)oULjKBuybJud5Fva*amits;w+0pR; literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper182.h b/virtuanessrc097-master/NES/Mapper/Mapper182.h new file mode 100644 index 0000000000000000000000000000000000000000..59d2d784f31fc3a80368a59e7db4b59e4e10a91a GIT binary patch literal 1220 zcmd6m(M!T$6vfZ0LI1-ZEsCh8&^NP4vJ5q(r&x2yD0Iyki1@Epzx!=#OC);eK|UsT z-#z!9bI+ZhA1B(qv#&j;%G0fU#hg%yPIay`d7OJ)=vV_S@=RMZP4xn5sT&th9L})+ zbRJOQVjO!07lHoit#w$r`Kp+PyV=&SPW_!O*}$9Jb z9i+S+@EBWlcXhZ+j3HK9yY9wZ(>q&>G$!iPXU>zVPN!zBpv;e8ipYlKJ&n|(qD|ye zJtlWV+|r|lsPnk-!TLl+uT8#dW>}&;aQ!+=H3U89-RIW4n!>eNZ(o3?D^w>AZ5*b_ zDt)F2bKNcU_0(mq4w-?|Vz@z$vKh?_&-s_Kp9DS+4ShW@L6bQ1sp?TtUG_6Cy8JK7 z$zyJcnX9#3G@Dm{tu?=5RL$Icf%_e^-^|B?ujcemzV}t$M`Ygg#LQE8?duDFK?U$E VK$=HMjx+WMPcw%z=5?Mk6<>rKo4f!3 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper183.cpp b/virtuanessrc097-master/NES/Mapper/Mapper183.cpp new file mode 100644 index 0000000000000000000000000000000000000000..28e5321723f73fdbef3ef1b6f10a4a54c828a7db GIT binary patch literal 7226 zcmd5=YflqF6un<-;(y>1DIl?h0tL|o5QGTG!$8y!0|j-XB9@96<*%#f%(v+&yWm1N4J(Ea2UlArFqB)hJ4 z3q4+7>|1a=Ank`o0Rx9}*1M`jo06)-R3+cDZ(co7?CH+1Ln-ObXF4~``po#vo{v0M!$@OBBd>iDc+ zl_;_j+S99|Q=OX2DVd2W%kf9Z`2qKT8?)GZ9dT zZN)33dz>kxaq}vqNW%4#jbtzi6^AKYKa&A<*jBtclkPcf>S)~l)Ct#5Hj=@plOI#K zex7F3Pc5Jj+lp66|23FG8aJ;(iX>b=*+>SXP;r>T^)nSvhi%2HqyMf<9gW+cI^p`s zMlu+6@?#3u&vHinOa~NVTk#6%KT%UiJ%hT?L6HSar);x*&cxQFegBN zrBB1R<&h+#$EUi^vv|ch0m<`sGXM06uA4rcE%5Pp;B*PF(N4Yog=*y{i9w==`iW*Cgqt z&~>P%T!&sWOFz%L`Gz6%r&#Cb@J*ip^BFuuep|x&Z@T)}c27oD$~M^DKwWL&S`O4q zXRccPy}OUASZ6=rVK&+^)muGxTAU)I2=`c%zT0ROYI^u?=`i}!y{f<$PWzAPk^b5l zf*!gHRGs7R`?sYoE6(?4>Cx-cGsLp7x{2pg3#>BpV~6rR81Q%O(0Hv%orU|C&DUL} zEA)z=ZRXc9Lt`(^!FYm$xMu9Ro>$>rc&``8VAuJ^^s1TnIVNxn7dveP(rr-fLqW oYlJ@f?K79;N)Z{C#)2^yVv4&nS>PCQYGbUg&x-cVW;My&U%AwShyVZp literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper183.h b/virtuanessrc097-master/NES/Mapper/Mapper183.h new file mode 100644 index 0000000000000000000000000000000000000000..ff192227a216541f7b8dbba3c0d5e16064b2f860 GIT binary patch literal 1224 zcmd6mOH0F05QWb+g8$(zTMlu61@Lf3zD%ydP}9%@DeTU~45MXH4!!I^JAy|oTYKVKEo@HgA~)u_MHsruUUeM9yW zYr+Pcci-5myQ{%nVr)N4t$cT54)o6U5{)?Z=riLtXRCEJa|LC72vb5fChs&ck zA=M*t`R6n5#{u@3k1NpQCI>^TK)m=Imz*pF=}WH%!pvocUDssHiUcnHL>h zS0+!nDQ2$LcF=5I{kGQpN>OEBSBxw6KT`2#6ix?T|5$f?qxb8rmDz;+n;xj0z;5qg gyhdf72RNN!BDfadjA@#qOhJOLnadgbD$kk1Z*3KuyZ`_I literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper185.cpp b/virtuanessrc097-master/NES/Mapper/Mapper185.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cb39766b00015d4152df335f9f13ace145a55b13 GIT binary patch literal 2056 zcmd5+YflgO=Z5qSNNUUg9iWuOpYtOy2!!Dpv z=od3tmYunebI-kJo*q~6{?i-{%7VVd7knF>g*J0sA&MAb_hZ;|@L93&DR}1*+w*h85zk|t&o|bX zHtq$P3AEN-e8({>?eJOGsw?5w7yTL_PbM-%EjDSc*$$krS6|tyU$h!fA7Y)R?QdGz zhy(0!xw_*xZpn!4y0f)b7UdRBIR!`9A`4C8ZH5uMI!B+eq58Up{QEZ3*DC$0I%h6# z2Nzm#6v?4$Ajc`oQ`sfvC`~GK(^R99AGq7+q!~_-d?m3L&am`owvOyfwNcHlY2=hO zi4xk1)zxpvQ;RFm>Dt5@dnQ_FDSvfEESwF)xpB27@o5TM0twnCCw>X-S%&qeR97R6 z^gLdV^@%dAPrB+;XQIYwMOuZ)R9FSCseWIc)-fZrsZzNa;>wQV$aKj~Aosv@9MP$- z2rBG?)&AcwQlD(qam~{P-=b}?b-H>zdRDo1(ckXpFX@+C($C&ji{mUTna|#Ei{~pn Klh5kH{{91YE%T%R literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper185.h b/virtuanessrc097-master/NES/Mapper/Mapper185.h new file mode 100644 index 0000000000000000000000000000000000000000..0c8fed21d85b69a46786775dd290cce3be199233 GIT binary patch literal 842 zcmd5)y9&ZU5S%uG|By0@AQpne&PS<&3SxO`AP1r$i8dj>uFftwV!+NOECpD{!tUwLI45pL>qj~SWv zy}N+>sC%TNK&k99*~62&vfQDEEqOAY907WmRtoC+fs?H6RWuy1A!5OsA^O7FfcF`W q*i)VS3d3H*o8yvs&A$<`%e~YgJ=L4jr?}GKaF$wyGpaCURsR6)S7#Xj literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper187.cpp b/virtuanessrc097-master/NES/Mapper/Mapper187.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b0e5aeb8772dee8562f17a2fdb52c67fb27048d4 GIT binary patch literal 11584 zcmeHNZBJB36rQi!r2k?4LO?WS7Z9XsqX?1IcdVv04M9L9QlNkpYy9hNpJ&dVJ!j_5 zy?c2{p-FQCyLaz7XU^+0XJ+o-e|;A&-}PLNCmRxzNS68jf(k zh3g1+%V9gb3-9rrRNe4P{M^I0KK^bFc*u8_i(XQ_E}O@w*B@aIe%K71g3lJhLU<0Z z97d0ghlyy(m-v4rJPt3wwH>~X_mtHMZz1gK(orQ`|52IzDAay&+D$(siqeDdY4x-GOXD;tXPaGfv_{;m~8RqL_Cd2S`v<$<(REDALXc<29ydH+Vqh`l4+^PFQ6ouKA?9hcAur;c15M>5RI$g}ck*0&k0WwLh0=H>Fd!pPOdZFvwkooVv< z#iQZLtF<%euj>0z$trKto7ju2qn8)IX^)~Eh|lJ z9cibk5x)XFkkwC$dWK1olhsbUx+-E1#T|qyuXW7KSKn!ibnT1ShsjEZc)OI$s6wfT zWbqguVB5s7yJ9DGjGoH(!fJ)0#Op9SjA*ljNl41;CDmmL*vpP6_lQUNAApt%5nVKo z)aGW{y)(%+-Oc_g3gzhPY4Z%TXNEv&W(kE_*FK``prpc@<01YsJuIT^tJ+8~uh={y z@-(~pXYzV;M5oUr+jRFH7&Tvd+BOkQSEs3OY>!A|+-z^V>L4o2068>*scf(RdE1)y zfT^w4y{G!rjU5#9vt+Nfb+Ip#7T-(*`#o2nJV5`pX z7@;?2FsMhVg*Hj8|0ZAU4O+!*@sGMblbOy`6& zw!{QpKE8@7ikr4`I)y&Dlre$^FR_n*H=ZXw!s`0~m!5#xlLvUd0y>^N`4a@uxha#| zkMVNE80rb0q45;JR^HU2hUxW)6x8hS0K5Jv{fGJS)#oT9Q9Z% z@`WW@r6+ z!KzIABRk)kMn}juQ*<|-KG43C>lB_d={@^Uf6s2w-^+Ti`o_X2tjIODowTav>~s7Z zHC}IBgR9aF+G`E4N|JLh8F?k8_LY1H|Klvb(c=2_mn;wUrNy|Xv3tOGyqv97|8 zx(|94-W!WH_K@=&|0=L?JNyZ6@5MJ6#G~9jBZd)kH11Wsn3>|SnRtRH^m+=Qdj#q? zvDx;@MXsH(rF6E3tMWV=rnI&~QH-sporh(jr_!bfl}f%@p|<|hQ}Qj6T&^K+90j=~MTN5gaKi>?}ZN5%44>qu=skE%&)M55>`={(2sSuZ14RKTe literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper187.h b/virtuanessrc097-master/NES/Mapper/Mapper187.h new file mode 100644 index 0000000000000000000000000000000000000000..65df954699ea8440699e28bff52fea13d09ea764 GIT binary patch literal 1778 zcmd6nUr*FP6vfYLP5cghT#O0Pn5gh3LL^y*@FzrxA*I_uqi$EWh=lOf)!)6dvn_2U zCccmf>~!Ybd(WJ6XMX=$)x#T)^~hPJdaq0~MxhHm(<{AH%Gg)UcfqLn+ES@AoijI7 zs!#q~F?-J6>qU&k{m(F!BCm(0nDNT>6|LrsWKgv=PCwJ7PQjI+?`mrqZv1?0%$lzZ zxHoraM_SSPg25Yo z)B*Lveg<+(#FdQ4k#>lB%goj%-UCf!llh39(z_(a_9LH?CDuyGm4VM%JchE31{mC* zr+elNJgM;H3+LHJ*8^DOx^_=ZjiJ-LL;Gt@!89>*zB1O#;VBx%xKPi!)^1DX3eEjw zc4ty5WH?YPwcbI|Fg+@ z*F>JeXNq6#{ciR`KdF48Z}6C)U%!__jr$NWM?tmB?{3V~tyaSJJJtHgWT|jMUj$SR zr%Q5%H?z+y;_OYSU5meCtaEekf<7j^Nv6UTmBZ}|sOV8i=Y{@?{xo-NpVQQ^4_cpS UgKjyb--mjni{0&DZx{Oi0SSktO3E-}IrSBfbT9C2B$Hg6v=rp^%7%|?cO{{2PwBgI{od!z+p!ehihUo)5=JovxOByUwdQTE73LGVHmltLZ15%fDH5zkdF{0G^6kdIgx6wmfA!}^vLd%usd!;&OIyB23)9_3LU9BGKT(5m`e{`|K^zK zT5F332O{|DS_dC;d|82Wpg+AehO_^_cTC4;zVSu8A8UZub^eQo*afpp&DTQeS8Sz7Jc>+k{Gk@1B;Lqb(#8 dgN&a%If%@^UHd&jr}ekILxZ8yGIuF^-vL7JVV?j1 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper189.cpp b/virtuanessrc097-master/NES/Mapper/Mapper189.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ee8917b8123494ce66322f5d584036948469a657 GIT binary patch literal 13200 zcmeHN-ELDy5Z+r?>N^||LXH5{PV6L5K!T7!T1vuCp%kT22!TdWNRv=fAufB$#-R$%R&-JPFrW@l&j-+#UepWf%o@I~Y*3*UvUu!ql1*bm*X z7%qkkpZnnu-*@mi#J82O8(xH;(I!-0+z89zUYKdXgJ0G2^Ql>odio98-wn?~tHg$v!X-$& z6Aq#U+mM|j-p7AiurBSo4vIC5-3)WE=(qU)IR&7I5*1H({?uXUzBlLJ7^uqbt z{<#tTvm^Sun0+RE9eE|!ElBx1^7Jt0xSQ}q`Ye}DyKQ*JKIq9e>9w~Nq-PfTm7dwbIPK}-cj@UBdir@!ztA(E_skc1 z7V@5jyhkjpl5fJQ>+lESA=U4G_!aiwf%Uh-)9?x{<;_@w z)Y%+(zC{N0TJzme@$eC>vm3E;8<=?)k*D^|qNbmLLRNo_m6ySX;Aso3G=geGYUks! za28aZAb6r4XtOH=JRdUVD(kpE9hquYnw|pUn3c_i@MxE5!7TyQd@{Loq=CS98)yNd@6&-y5Aw1XuaNx zt^=1uNDK1yqg`ov#xspTv-o{Jk3zchwlIQ}edJk0+BDidw^rA+JFe~dsi#+qO-qh$ zt|xks>a6S9+P76A(D3MtR9mdt6m57^wXBZ?BQdF$FR4Pk16%^)0X42J;t$z&k204;P)(_D~wNX zxbpa!yq)68=V(56^ErX{|MBUkC5Pn!pY6f@!}7t@ekWrOMb(F-(qT0Sf7-k1&a8{b zvE(FsHlA-i-DO9|8p=vM@%nQXPdiOcc5R%+)6*T}^9)X^S8>XlLEUG#pX=xuR;4p} zPN6uRbu zJ)Jk@pc-$+K^fL~q8Dvy6^RwxBb)|BCL)NnG*)=Tmc-Qt+N^;YezcOse1;>la5{Vg z9j~Kx2J^}1G`_vVOj1p<(Z#i8j;3o@)iSL%rJQFu=c?x{`~;q=Y7tpp^W1RNK1GN8 zf1ElRYj?-3pdCPi)E{f)oJXxA)t%+2eYpwnm3>x458y9SeGvV2aMxir&}zNa?^Q>J zMU6^YgB-4l3znY3#yeQ?Wg%*oanUX1!tM-?&qYyFsf1c}>;%^Ti_w>LYOgV3+G~q) z7Vj^VQ;T^kh?QP@93?Solm*RGbSHTJI zi>Av-uYwcaPfeGTeg!A=hm+()<7XMhH6EqjcP&P>)C09vtr*hkw#L5Zxj=oEp%s2| z+kDRY{G#aD%hxEaDNAnbR@ygiUhZg&sjUi2DL??!!4HX`QzVE0x}Xk&+`OrBEDB;1p@;|){D zX@q;l#kdQmJE6{PcHo;Au>(&9H^9>Yep#zL6X*=(x=dH29+mzSbZ`M59hcsobDWK} zEH)iqK9;klqs&kGq997-^ z`S>UAUxwd@SWd)>y?r}3xL=ZAh&JozH|f_nNL}h^c{L;B`fk*`YfA>F*7$(28nt~6 ztjMzWE%mQq3`^yiBeQ6aLPe4767^bYCfRwHqst1a8LhpIr{!W~tkM?OYAVU`IH{Jb znP!G1QT$ZPq!>7kMOpojiiO}tb9j2SaNJH1&x(L%B`HG1j-uVVSq1Outlf!c70=OG z#rr1bbs_p=I_u=TN>xt~-kVUHQc2ZFGMQ!M<&DfWKOtW}7B1AxRgG%()H*DQCe=Rl z*mH&HT<=sBHra$bF`niQdaf9uyEp^3fy{x~T@#kU3R^$4{H zEUob~l`Xu_-NDXth)k9*B^h0BBd^z&Lm9G7Mt;t(8Sq}|yHi%OG$$a1)s!^)^A}Gs zo7V?LR(gr=pDXkenZCbQ=(pFYT)$uFwHK=FwKq>1Rs75gg|YThm18qhT{rOW75r(I z>d!2GrVM$0kv7e(JvHmVMe1VyE0z`wn-o=5**G55{q!i4MJRd}bPzb)taP8^E2Xs!QPLXZv zix(8B4cRF#;su_YDg>n#>qf8ERjS4mZD^A7)p7YdZHrW5clyJqbu4b@pn*y J6GNMz{XeCRDYF0o literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper189.h b/virtuanessrc097-master/NES/Mapper/Mapper189.h new file mode 100644 index 0000000000000000000000000000000000000000..a13de7fc3fdfcd28ca56803f904d73e223cc4663 GIT binary patch literal 1794 zcmd6n%We}v6hvz~Nc_Vr4MO6T@JM#%X~_`F;}D?;SrgkztVFh%ae`2kWj1^Zf5txm z=iauNwi(206SZu0&s5*8uBtoVzTVc=8`pKsS*3cVTrL7#JQ{kT9qsC= zo~f%Ff5|N7bJZL)od!C=yONRAy12!CXFAmZxH0HeudTwl>m6gZ{7GHC2K!&5W2T#4 zH}`x@JRhd4ofc=Q!PynY5a+t^>UMHMYNoInGV79`(v#M}qwQME9;b~xe{J@Cz}ZxL zc-zI>lyioRLbsSVNoEh8DNk~CHaeXPEos6%QiHDccD*v=X@)V91@-%h<>OV`1=*I4D=u>sda!yUD8p~V~P zdedygETD{oIhVTIbJA3JkM~f17nQep6I@;87pH1_oLND zG~bNo52E?QUz|Or+IxH-p>6K{I;!EYL=Cv>Dai0O4*e2yUE=KP@bisBGBUEUQKM0; eV}H>>`ylHyIiU}S3!dh{m|TVQ1obZ#@4f@Ek?MW` literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper190.cpp b/virtuanessrc097-master/NES/Mapper/Mapper190.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3061eb5bca165ea06a1e5c9eaeb8acc8ff20f47d GIT binary patch literal 10710 zcmdT~Yf}_g5bdv%s{Dt^7Xl_$c9EAFslpW_r96~GE2b<<7f?z>vo1a=`qz`3bDQ4# zm^(Yef{Hc80y8~*yHB6)+xOo6@84hK{9WJ6ch0I(*5!%3#B?p4NQrAh_T^B9 zxO*r&@(Op>arNYqdrFD3zlf6Ab>0x8U2lQIKF}yKm|c-8at~;|!Ou{pWyX2(kNYfS z+uhxQ#3tT-3>0VOHhy0R_J{HU@+ENp8J}JE=_Qw(+_tRALs^xJc#l%`&%1a!BUjzH zhGii)?X^)~ zN8ZbV+=PEO;K`CK%8Ik66h%VcE#!BM@e-UP0!Pqv4R2nBRzANCOZLFSg%KAD`2;Py za^TQy*3}*9+QvwiVTDKH(+C;*Fp$4t13CUgo=xdA=ib|dhSEi%1gfjx#VRZ;!JQH@F&#vslnck%P&lMCGatjoKCb8B zjJK4ywHv2i=S%QfH4;7I<&kRQ{R1Gf?~u9UJSCfrZzXWq!8LHay)J*k-&H){!TlkA z$X1S~{4h^$LJv`1176g;56J`k-^2aa@&SKs;rS~!W*?tK?>P|eJ6xv0p-r&xN5`TW zJoSDXZ_O(DY|Nbp?!0J|v5Zk9Q$zecR_2AVr2q%sIg4ozaWIKgC-YDlQ((mRz@!5f z5DAXRt6k0T*>3MW1v0zP{o*)|dOsa)b%N1Y`>nQ&8%>$RtW|#u^J!S6Tp;H3S`qI$ zyr*Oe`lqvKn>?e#*u?QETVb^rS)bZwmZf}H!ied3Cy%jK#x5{Fa2di{G8}P3u~~+ z?@@4X$}ymeJmvKWC^HW&U(y<6m1Er8%NUNUK#XHpYtlG+4#fP5bH}Pgn5~T25HTH~ zUKQCG`wFoG**ze01i4|9g|U{iLDk09Sm`G*XkXJ$Q_brUX0BV^>wp<)j>VWW3wec@ zhgG?cs$uh2%pk2(R)KQwm?f6!VGZ_kay&PxR_jQ{y}=yv&vV(G^OTusbK&0cT(}Lk zkRfDRiHzBoXP9HGA9;xToDoZ8f9YmE);mA%(c;kiw2#Q4mPXHH(pXV0uqb|#L- z`9M-DO$RHA({Yl0>v`a0o=?sBbuvyCLEW;Mp8U-5Hs-8WYj!)n@>vD0_IJ9Pu?}y+ z^>!cSBe1T@vdWuet`nqvY1Im=p3M_h^E+4@=Binog`poDAzc01n$7o(d3}6KBXobX z3($3IdtU*$17J1wCpSBG-K$d8bE+J^V+EYtTs4?5>7 zEJl^@+UTz-bU4$sd-)fzlAFPfe7-(f&W7C$*L1oLw*F=g{X^5tm7XQ|ex!+?Hjme9 zV3n-*P<>NBt6f6d3Oastn{RTlZML5XOm6=q%vsFjmih4QFsG^ZHzWUbnR9ykzYKH2 zby@g#Zl3eKFLzj0+{z-{QA^Krt-?$P^-A|iWq#*mQ1l3%g7oz_k7`n>O6{3*NY0 z%#h!kN#FOoZH8?egZQkDd1fR20DbmOjQK_6UObY0Gey_u-d3NfmYEywdk0%U zk>89Wp3j`!VI1qSU1vts#F@}^u46u|%XWW`POW~Hx4%xxkZsHcZ(%*plQ=KzI;Pyg z_;$uxA{r?}UgPApGdiU;RKrM^|CH=jBxC$T+1ZM0S|@b=r(T{Q>q(s7qYHJ-jh?6L zBHd*UW#?;UxrPcQ7qXJN)(YhoM{>DSewA#W$vnyCiS)_hl#2|z9d>ILL$ldr*SlVpQO(KP$~eS=aW&ao#6nrd JR%JDU{{vJy1{eSU literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper190.h b/virtuanessrc097-master/NES/Mapper/Mapper190.h new file mode 100644 index 0000000000000000000000000000000000000000..6e1b733e3c207d1ba33c6e6c88ca0f992337ffa5 GIT binary patch literal 1676 zcmd6n%}c{T5XIj$g8xH~RRk4JDqj3TL9JLtJV{Io2DR2UDkA>t>ThPVCYCBac#t7w zyE`9m-kaTz_eK3bo7Ie?N_D7A1FWZ^mbI!SrPz@Q^;NRlS6BD!9AaBq@l*5odoz|I zuK&iE;mUOjS0gN$$l4m54D_fg{0h9kb88u1y}zcN=Lp z$&h*}7*2Eslk2R5UQMlHbe+#QJkW7NfdM@QyQW6I;h__)9Zi-TCCJpG0?{2rtnks^r+U zZoJmCm8Qvh2QzW@>)x8RbC5)zaSjUle9$Ev^x?v8ys`0TrSyKs fbH&&8)>*b}CD_8v3%*gkf|(2x8kDpBx2onRMXT7B literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper191.cpp b/virtuanessrc097-master/NES/Mapper/Mapper191.cpp new file mode 100644 index 0000000000000000000000000000000000000000..166ba3eb1027a397084190bc7e3f1514a761cad0 GIT binary patch literal 4230 zcmd59#Q(6LNC`f=yG0bs2dX9zQLshu5knTJrO{vms3gX}uAVc~yE8jo zQg#yw*-UqL?qklq=kA^9-#-uK_FZ@7jzJa6E6HVoYba-u$PCWJ6xaYxDMf zDvvRnL+=7(EXOi}RV?rDd}{1kvS<7}z}tQJT7>la7qjGWRoRtsy}=qi*_QVO#)*70 z=&Ed+&-u7+8GqMyNB& zScCME6!rsyy@%>Ml`nFDI^2=BCKhXLJs-&l>_g9y*m?EpP}%u3K%)BD%=`%=9AS;a zDUNak5xyH{*rD7BP`WJ4<7*#rjNxl2Tj1v>B8_DqwceNKc*?=_F*NSsxrh4S#g`gm zCWl3ir!vFmu%|CZOFwEIvUmguYa~JjFQtR*lfl&~gAwMH=Qem=E7ntvsc~p@a&Y8k ztNbRFev>QxhB5d^!Z?V-U(=7k%50Um2o_|;!%Lm{Tv{#uR>jPDhoKy;l@UYYW$}Mw zNJ|-a7}6WWkX?ZxyFm<{84Tf9eRFlOJcC7hV?7LEHzd3EnqQkMGZ@C$6WAwQKUu&V zdqP{-E7|*Pr`tn6TE~uafH6irpA~zFlWah?3BA7QUbJ?d!D1ZB*JtcnZx@&SMqHK8k1K1u7SAa4;_B2`i#)lw>hrbSc&++;J*u%5YtqG4pRbk1 zYnAz`-)VB3^oQuaJm>Lr$gZ)4Q>HrwPE1Ak-~0q8bDr4jX;piS)+ePrcUh@^r@k}| zq3h;VJC|(ySz1E~H`aun4Z-|9DR3$+m88^uLJyKji-o&6s9Ev!Xhh rNt?N{7AsdT^~DU9wODg{sTT8C)?&5jrCQ9VYK1v-xR_U~Wi$8>qW$#t literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper191.h b/virtuanessrc097-master/NES/Mapper/Mapper191.h new file mode 100644 index 0000000000000000000000000000000000000000..d62675a627160fae5e02a9c7afde5cbbf5a9c829 GIT binary patch literal 1460 zcmd5+%TB^j5Ix(P_z!nkjW2Yguo5591Ocgv#u!r`DMSMe6kQO0T|G0mFGv@}6=_PQ z_ntX(=FEiOpF?ckvyClPWpD={A)h`bDB+B+froQk;09Ny>(?y4H$3%;i}()FL%=M9 zXT~GVbMd4+2mIP6*A8#jf5fFsS5e-wu6x#~qJfuGV~DY;E6V-?*J9L!a}H_$Bj}YWbaVSv$iB zVvdEfOJxUNoSE#BgBE$Fd?UDIs>BMi`?hXfL`01_-$b=J{T43C>64+y`#r{0Zo~r> z8lL!M^HVlkQD$gxt-E4aQ4qo^u}?kyxU%e4gS8yo^2SSXUW^iz(v49EB04;w4~Df{ zcx3$wW7}!I%OpGF6Gv-k=5&WVDRMyimQL5rm3~928f$-D{q1o=)`!F=NA(AI#VOuW z-?Lj`2ymp{+PGAJ>S92gMcKHd88$x7#U};X1MWaTh7S81;Uh*Q`iGo~ol&Aa+X_!N XrW)tH^B<~7_lq}Z7290FF5&Q!Mx literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper193.cpp b/virtuanessrc097-master/NES/Mapper/Mapper193.cpp new file mode 100644 index 0000000000000000000000000000000000000000..538aaa64378ee2550a1835a751e0d8d5e6398f40 GIT binary patch literal 1474 zcmd5*T}#725S-Tt{)aqCgNjKiRU;Ivwkm#9TCwPhXcILQT4_ra#J{f2UVCZM1Wmw) zvfSO~Zf|yHZu9-Mh2^tVtf;C?T;Kt(v;adm*h3kzSI039=(W*A1K0FQxa4}olS5ei z_Ba{{@r)OYx%TOqI8itQdc{pt(seDHVp5lk2?pfqN9@w-c~quF6-FFms%EKsA8IzJ zr|e!aqDhtSskVzVt~I_wA3esK8K-TW;*QF1@`X$y?$6LdJgFNu5uT&abiBlx(7AQ? zdGu~7x1GTMRC%UzoV}6JHNv~Y9tz1Xz&Uk#Q?+%-w8g$L$j`j!TqV`bJl6aZB>uK|0DOj9M!HC9KFR$41% z-{N`dIh+{pbu*Q6Uhk%u@mgwwR(q`QR5ep1(VrI7MN~g(YY0d8fA=*t7kP%~bAN!^ zV|_Z@Ir9loIpvh=e?L2)-nSa7IO^okt#d*DieVMtjlkKnQf69GJ!5doPw5nq4b|t) zfvPF5V8rY_It18GU-&IlM3V<+`p@_kd!IHs*L4o0W|GMa3(Mi(|7+e5C1)vCR zAShg5E*WfL1acP$moelsWHO{MaAFB5D+ViuAYjN9191t127@M8M>Uw_WC#X}1^`v~ z1NFu;7&90#cmruCV2I~2WCPVJFks3CGk7vYF}O150%Jn~XreXPv|2DpjC;a?@t6s8 zO)A*@aG>2m3@$*E5`lh50m|tB*-i|R3?V=}6o4X$K(&crn?R=Ha=QhF%Z)v}S4}jOD;+Zkge(sS^fAN$Iv(e%{j{CSt#@bX?EI%>F1eGsWh8xV zv12+BORLPuWG*3&aESAX{!LRdB3;y;{9>d4 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper198.cpp b/virtuanessrc097-master/NES/Mapper/Mapper198.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2c28c0693d3e3ae25a2eed51166bfda229396316 GIT binary patch literal 6080 zcmd5=ZBG+H5T37R;(x#|M1sU#=?f~7AYvqn67VHz3<0UyphzkziQ%uS&$H9%beFq& z)Pm%4?cL7o-0U;2yT5j(5;Dy1$On0YnQt+!bB{5f5~y7!C*fb855fNd zG~+ZL9nbsY`C#r=(EA>I;Xw9f8Q>DI>kC0n~pQLh?QV;$?-Rc9$N@-wB z=QI*Zb3kb(l-7XKN+|6Cr9GgeE7(X@;OP9#jxVvsZt(rbu-lJdx0mu1_Pvkq?!W`~ zz;Of5_v96+b4x>8Jh98xZE^pmL4~*$9{#!)B72> z!=6iDWxhIw2huy41L6$z4xYpOmj$kcz*R$DG{5p3RvYB7)EDXNX(Xq)h&-pc(s);{ zU7+28Ui*VQkzr-0^~?+P%uDq26{Todmev&-Vl`pLiqWEeu_i=y7%k<9Gp^y~)_4GW znD6PDt71d$B7BN8i}7*IJmdc_&FUqXvEr~2nO^6Q(R_&}tZ)~rNuxv)R@95tq*StT`qZNQYH|z@ z&zfGp)H*L9YdLgQ>!^Oc@HOq&o$?U$HSleQUXb65Ep2@i*T8PKy5tulC69x8oUg4a zu{$h}yP{eUTXbcFMH>^5U95NWA7yLD5?5Elq%{%Q#d^2TC|fOEz2hs-EJb?|TXEc* za4(X^j>_E#p3dFIJoa;s!mdO2hwKZTx)5kvh>h2X#yRkEZ)6$CpKD>fe4cic7E>pX zVG%XF53Zt{fn020pe3VD%rj|1PV%xF@PiI(n z=wDF#+1{VFwLLrW)8}TuPoG;u&uu)b=9;;g`IL(p*5~tWHX32)=ybl39%t1uAE>^D z@w6ygQ)5WuazxTKC_ZP8?H!yrbx=ikuE3KxTIMn0&UV&}F@DQ^D4WPh(_wVVWS+%y zCyz~C6FGTmWmU!E&iIsmE1~3-s*bgw{4w{xfJIe_OJ-2Gp?J%=r*)t_rBwx^vMI-lCt(IyAubeMw{HV(x{ z`>VU)Qv7J+n8SCD%0U~)9DZh~9JF!F;b(`+K`X}`euk(Vv~$eiXNk%|ODl)k_77)y B(hC3p literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper198.h b/virtuanessrc097-master/NES/Mapper/Mapper198.h new file mode 100644 index 0000000000000000000000000000000000000000..4ec47a32fce0c667e9dddf202dea8dcb3298fe68 GIT binary patch literal 1498 zcmd5+%TB^T6g}IT_zzv8F%b}azz!dY39nEMF~*qTAvPLlO4SA7*VS{Uoz6(QVBvyH z25x8WMno zmJF_4V@z<3@lLLmTwWn-4RR9U10(u{^#04OWLW9`T%U$MDau!3d>7XUaH#Vt>LY3- zd^+HkYOZ!A*0w(4vBFwsm&zVKsbWYiJq(y<$(^9YOw9~|y&tktsI?aiL-ZJNMN2Vy z!n-5dEj-|k=zN|i`YKvBm$^-ANnD%NzgVv*pBq_(!o+Ti#NbH#mPzt)!}>A*ml~_g zwb+WROtb!5?6XIl9&ULPS$-)5lWTHts<=f@jMB9AAK^uLC z!H6dYvl}aY3wPVbO24urB3o$v#`<@{SxLFDy2vce@W{9QDW3p)D;Z`eYo$}WQs6bl zEB(s+YRE*SPgQ;)>{HFL>yCZu*k@VhO@z{Uj5_nn8j5QWce3VnyYDixF(D=PM?Vxb~ZNs3}`O28DPMT?dqh_7CIX4V)(QvaYJ z!)~(K+1Z)zOjbWPI6u3@g=S^YL4Z$Mh$%`a(hSXAzZWpV7zM87>;IZiit;))Vv^T4 zCZsWhlfkTxIy^F*aeUz#Ijv-|smFn@J6(D`@%$@pNx02tgZ#&M=NUuxdCsoRv1d*F ze6;X_2WnB;voBiZaHn^t?{!g0-CNd(qWp2^DyehA$swgTt*5uC)=ktP_ZV0@4*e~g z*xOc|B(t5{QfssGACLGesl8@c#algft ZbiS9Mu;ePlhyFFE#eUooTdJ}>@(bu7rXm0U literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper200.h b/virtuanessrc097-master/NES/Mapper/Mapper200.h new file mode 100644 index 0000000000000000000000000000000000000000..27ccb1128522f740342d42f18a50d7b9ec331745 GIT binary patch literal 810 zcmd6kI}5@<5QL{y@IR!CV(?LFCt9kYf>@p=MLLv^nz&{R%2k?5$txNe{x;4 z1($;U^wt;(|9|h8fv~MGRD$L=mxgk@ireSX2~yk%$T+XlaWG#joD_cGhf6BmOxQ zWXNvVd9yR~oBjQ{$MsnbH&T_x3nIMJCip-I9|1Hi8&vhH5dNB2ASUQS&%O+9V zj?-lJd)i2Ec0Fe@eZK7(=Q5G1`kX);kE|f#G{^KA>J1FgC11^xh}wvM`%_d-p)lIb zOruU!!FfD)qeh+{A8URkH;b6dEo0)``JJjNOl(HOB%Q-|cbxN%lGwlR;27g;etRZF!B&vv?l!x#vy|xKwc~z8Ec#osDHXc@ZDOWtqb;*KVwJB`>ocEB zXRX1dpg(783|Ieu@0h-ieB%qLpK7dy8lKm&pM-s!_^NZP+xzZ9dY2eOTy^v8*14jK z_Na>S=I|UjCxtK#as_2RqEkvXAs;BxjEWJSqdF$n#2;#aXChlxMUY`e znVoyjnX~8K{r=j+`i)I&C@UW|wDHW*#Sr@lIDL)`4)}i;J@mO|bWiqIIYcGHYuywR zUT+vsj}E*Un&pv4of^Jyj*voHZ}O?DhlcK6@x&!#@2F>pGyaySeIJiJ?<0#Ht|4a{ zM{~r58kck8gsVrU51O~>pbBOKRotSY=Y1H4hNC@w_=jQOV0aiS$7oHWP6Z!m(PKU8 z(^Y0Is!_)Yv$m;fhtEWT5^iv<{5sqpaf%{>V7Qu_nJ6Dc6nH8iLRK9dF?DZeksEl$ zz2cjAL3Oc=`t#nyHn&i!!NFL7+yB|caJia=qe-MoLM>u&armU8hgo*W56j+ fwogv^yvlRZZ|j=J)^wZ_HpBn9n=!fNR*@<{-B9~& literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper202.h b/virtuanessrc097-master/NES/Mapper/Mapper202.h new file mode 100644 index 0000000000000000000000000000000000000000..43c8ae0d40d1cffbb911ce202c6a2e2b1b0d4b21 GIT binary patch literal 1054 zcmd6k&1=Fy5XIkBq5ngUv9wf$Ui2o-tskI*c-)#C0!2e(KS2D~TYob|5+NsPL55vs zXWzbg^Y-`WPL~%~>bj~(PYNoCOz#@1&x(kF?#XYJYt26Jn$`a^%%!8QOLNS0t@MUh zCDCbhZG=08KJ*GM2Yu?TG3s~DznrJ%k~^sNQmau6Aqh|>$N9>@X=DR(#I6D>7IVMHZ> y4PsOoD(5_r`5a5v&Vv35Ei~lJ}$@aBwiAi72m>|Lk&XUaPsH4ja zXMCQpjgmTf)73#w|GgmMoM&%PWzJ{(^_l$x#>Bhuu*0>iYmBTZu7@_R(ZVjz32OCz znY$$%f9poLQ||s;xt!t?tP9(v?K4Ij^>mj>{`ZtWIoD8s9p*G;P56knc&E?(HgS?f zH_@wM`b)|Kaz@NJROW&5G|3cjG9&IuK0dB+$-G?t6A&AylCWE^GrTCv5ckSsPrKM6 z*261Kxq6(`Vn#!<$&?*M)fDA%`oivLEl&Gqiu>ASvNt<1VYsD>kSgQ(937-p8@W^u z3aa`mRpT3D?pON8$VBpcHL8^*3IC>Q-lP1gC%L?ux3j2fRo{X+l% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper222.h b/virtuanessrc097-master/NES/Mapper/Mapper222.h new file mode 100644 index 0000000000000000000000000000000000000000..9c58181224a2b05149bcf2904a503cc9bb99d2dc GIT binary patch literal 820 zcmd5(!3u&v5PesJ{$Y<6LD11|QO61@kdB+~L5P&JF5<6OZw8kPyeGrT?97`t&$sW_ z9K(w-MykqS3yXr`aK}Q!;6EWQd0j(uOmro<(yNjY^tu+&w*n7bh|7rn^;Q^a{l6|I z(n=p+$oU;MIAW^2mhaxWp*G>$x|UD)3R0I z`~K}??#qaAL>a``b8gMdk|Skr#(ae{PSj{vvBX+to>8_I#O2D7=r^TmU(cvWW?Wlq IS|!r|08Hs!P5=M^ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper225.cpp b/virtuanessrc097-master/NES/Mapper/Mapper225.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f1755eea427c2eaccb587edc043d21efbd66053d GIT binary patch literal 2894 zcmd6pTT8=05QWcc1ph;xr1gSLuc9beR4h`IDvG{{+NwoSQ4vA<*VQw#rb)KxHmL}* zWZO-)-^`qyne^*(8UJt0Vn)64(Z&UyIC^+SnWF}uqrq=W=;MKNpm*f%-wshJ^y|MV zCVsu)k&1NTrD(Q_RdlG~3$IrcP}E31boOwlcMrH@pT9jvh3f9{vq|kAaL4^VN?7C^ z=v>yh!gUdA$`Jb=tzYZj;~^JCyp7pdVOHDaV>{f=f} znK>gvY9qaZH??!LS#QrAkG!O7NPe0pyL{f_N_tF3Ibl5vxa#3vd((96V+UIzn-pCz zCOYZz((~%lbPu>+qZEUGFbtap3 guF9J(OKs18lcToZlUOcA?F^m7a_O1O&-lNRZ%a>aQ~&?~ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper225.h b/virtuanessrc097-master/NES/Mapper/Mapper225.h new file mode 100644 index 0000000000000000000000000000000000000000..1bcaff77e4580bf46c38cf9ebe1ebd0c52b49728 GIT binary patch literal 806 zcmd6kPYVH26vfY$@*QS5M53hFi6sgp%g4-ON=#`oqNwc_sn^> zYg7Lh6_vfJKw~+jM683_L`MP9C2J_rj=SY6R{d?5OAlTD=9uZ)Xp2`FQTpmy4}Ve} zwFZ}f{`A%u&i?=2F+E@T#uqX_(MWUEJg?(@V%{U?tIDx$?{62f`-L&YSr^Z4n@c)r zkE)1l22aMx6~fdn6ukONHYIdp`b$m04`Fl6Ms(`r1Ff_`TR_EubWa}Jm4e#)`HjCL Qv_9$yI&2~?YL{aF9mZH)bN~PV literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper226.cpp b/virtuanessrc097-master/NES/Mapper/Mapper226.cpp new file mode 100644 index 0000000000000000000000000000000000000000..298db315596be94f8a66a2861ca7a0404968d99d GIT binary patch literal 2608 zcmd5-+e!mL3_Y(a_z!&&*9*3`RjC(H6ck%5ttcWQN~;t_i;4*9ud62+<8F6HcdZCz zn9g>R$()>IlJ~bcjNTZ>n4&76fiv_uy12tU#{vo*i(F^X!wr8+x+A;)JA@^}HEN6r zu1DOGkq!b6XEoH&B8T^!512%#o;>SsfVS>7sjU9KDC{svdnFQCX7Vp&hf zZ2{xa#U+j@IiYM-b(}nsl~S_TFAG_C4|zk6XuEpQ9AZ#`V-c{^3W1a*pd;w)=~{> z77bg4*u;~#eHWzzvaqgEYLJ~fj$2NNP$W5^e201x&z9QB!k*vu_7Aor?<_6>&OdX= zWymCv#yy_UNR$}C5NjMIt}oQ_X)RILX_Zr2l4s7A#5BYTN0qDdI}hXY9>#x;kuQ7F zZ)qv@k}8_H#>*5cnC5$nURS`kmB&uiW2ZcXodu7bVel+^>?HAg_jdC5>*Fn6mHxt; z^bpIIymoxN4THzWTN00}ngPD!FImC!WnB_&wiRE_C9!5(@iCXoxNIvv-Ujo{v6jE% zv{|bjS=-y%Nv!kK(Tw$(zGjM46zduNfgTvIZdP?gBkF{vAv;bZKf*ezy>znQA+#H# Q&SaPkp=m@Y4RaFV2gTPq^Z)<= literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper226.h b/virtuanessrc097-master/NES/Mapper/Mapper226.h new file mode 100644 index 0000000000000000000000000000000000000000..c17f212da5f0da4ad4aec5c391f3c6297c29b00f GIT binary patch literal 1076 zcmd6mK}*9>5QOI%!T*qB6h-u)(B6s)LbTE-MZ`mFf&|2dBzh_R>*}{JNs~ejUWBqF zd3`%OJ3C8%zE8A!v9CR+%Ga%8a((I*Tn2jETVq(c`TCfVyBXpOsK3*dA{{#3nEj;eqvF>Ak9F(sE}(aZ zF~mx1$8McHeQAlRgwqV3lBZGt)3{O4<>z$D$fo4ynu5QCEv7ahbHsU~Cq1Ce=OzXj zZ+Plnwmo0hbS(Im4q<$Dj!}{}JtweF6{6{eOtis84a)S{9KM^q!rKA|e0tCHNdGbC zddB{IZFR?IUWU5w>CU+snmt6bP5Rebn>R<*()qP;?}XjdKD0i0PXC*p`G37Mj$2iR M7v^8uRIHoaFZPjx%K!iX literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper227.cpp b/virtuanessrc097-master/NES/Mapper/Mapper227.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e748a4935d9231196810c5fcead81f4988d21493 GIT binary patch literal 2320 zcmd5-?@Izf5Pe@S=zqAri1vf-Qd5kAte^-fER;Tlp@9?{CJ~hXy7gw)P48UK?IMt2 z_m11Sw{PCe?0$`Rv3jeTR+V~8wrDv}R1d$>_wujz5cfA5i}x|e)bseKPm^!KUtHs?^y z=G`aGfx;N6*@Z=udF+xyN1-;kV;!eNZjpJLYqCofceuqF-`e~>=gWo=+W@?CFv3qhf22ePpTlC64Ii6saXz}!rBbCgqW!Tk(|yq%DXR{Q zcS%xJ>+?PShf8*}8rh$dL7xL5PS~Tm#zR*6@2gy^lZ;!8;r^w{mdBAk$H`GdwTWhY z`Dv&-cJ}nr_e+B({js`VYCKT~v_6O2Ez^~Au3ykkZlZcb%SB4MV>c48rH*x+--);o A?f?J) literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper227.h b/virtuanessrc097-master/NES/Mapper/Mapper227.h new file mode 100644 index 0000000000000000000000000000000000000000..2e59dcec46e2581a76fd43c62f541ce49d114d45 GIT binary patch literal 806 zcmd6kI}5@<5QL{y@IR!CqWEY8?LZY)da+McbJ9+GxwJj-ZsgwH~`k zb=DeQ0{eHjrf~KD_s!|~OrBmy|3o9rRr9)z_lbFn6JJ%1P5XYkkl7!OF|N9Kb(>t$ zMSEODL^E`boRdP7`k8}IeaWPRYD|5pDf}U7j^2n$op_*?7I+KDIGFCOW3y6Nd*8qD ScZAnhKEa1|#98i^&3^(5Yh9E8 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper228.cpp b/virtuanessrc097-master/NES/Mapper/Mapper228.cpp new file mode 100644 index 0000000000000000000000000000000000000000..558224d2f3ab67af7cb07b0e7a73936ceae6c949 GIT binary patch literal 2090 zcmd5+T}uK{5IwIq=s)a}Xa>1{q?iRpMG;b1C_RO#l^7Z(6{LT?Iy38aS65ei2xPeK zdhg7+XU@#d&-WfS&$h9ptQ=I(z$>kd0n)Sr99kJo4ADU!J^ssaUv~f3L?z2>(-ae4 z?^L6M7R&<8iYTH=4d1wih$EqyeCe;jjqYC4rzkOI^U0NGH>DVRM9WWd6C6XGK9olj&&p&z*40QG>%vtI&Xj>+e>PNY!?WT< zHA7^}Xr!Ekhf5AtSMhit=Qg9efn6UhvjQ!>63wrMVUCZQpVikvjG1`qq}T;s)q{Ci z{w0(&12@1j8ZEm3&FYavGJxYT6fNdEGu&rc?Fo<74zk3V?bLNJav=<_o_YI_rH8eViFOqobW5_-$hqId+w(FQ*K6ZPWlwC7`3Zas{om;`R$~>}O$9y7l#K6SKbNS~9CGD7~Fp zi}_^QX@)MKex0p39OC<)HLb|J^GnGe=uczSqOW5=o^9mZsvN8Kyt|az4~;1fI!1S^ zT+*Ih1}*p+;j`uBN^xoz9X#R_Dg~mR_(VhWJ=`3*3nD*!cQw^Ny(KUXrMvrBtqj#V W=G#By(Oh3?e4r1@@CA1)>R$ljK3-P< literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper229.cpp b/virtuanessrc097-master/NES/Mapper/Mapper229.cpp new file mode 100644 index 0000000000000000000000000000000000000000..da91ce55c255c60e562c8cef547c7f335b154992 GIT binary patch literal 1538 zcmd5*+e*Vg5IwIe_z!t1#tWwLUh%=AMUkRJY4J%4i4v4nVi7_5>((>dZnNoXOdo_Y zOfI`KXV09O9e-_O`D_&{nw5t(dU&NJ$Pm(w;L&za#}-ob`K;>|S^ZxVl?<s2?rIe&y4pF(0v>iGCH%2 z!_xSX&Z@$(%Pyy6nCLUR;I?$*5Kf6uGYr;JlkjeKSm xC$emw!f8KUhH~1ezEN#rWV8WYZd1NbFOHfvq6R9hcqN*~#qf z+R*<+StYM3)KE@2k!q(V(N;*b6sxXG8}8U=Ec@Fqmma$Q%`wxp(i*S!MDW$M4*uji zY6&g_{pqbSoc;g3V>&+bjW42qq=BZYdS1tVQucA+tHQBq@4Jhb{lXaHtcz#2$$?JV zqAKAvfoIP-D1xb5D0tQ9OvRt{?G`&a%> Q(E7+{=&+8o$X$y0cg(_FdjJ3c literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper230.cpp b/virtuanessrc097-master/NES/Mapper/Mapper230.cpp new file mode 100644 index 0000000000000000000000000000000000000000..93ff703761eae71854258a084c9595baabe264a1 GIT binary patch literal 2258 zcmd5-T}uK%6g{sS^dI&~v=4GOO*48(GLn!&L#Y>8&_F5;iweTOUY)tK>yF#*x-0}T z%nUmpXU;kI&g{?k0XDB}V@p`s=)l7Z%NTRGI7AsXi_5Z)38riv8BwGETa-%yuT67I z@p{LMj*MW%c-BAzU3&P+`i3G(qU1|ji@P2;X4Byro-yRA4}O(cgB4a}?v!(7ocQ|} z{2Jp)(9`!g#va8v+u1!~eM1G;)HY-mxVU29WNu9HDBR1~BMZlGD}G<)Sjjjuo@W+( z2S+|;P5O{cUAXkn#ywihM|aJ<%2$(<@?jxPW{Ki}k(e-sV^KYzBVC*m(PQLCoKr3| zafe%Su{q*#ttTfc^dO#DA|7=`>oh&rE*F=l6qpmAtTpP}p%1%qTSKiD)?-#hK^kV% zzxbF23PT49bV2cReO6|sW?>eu*1^S6t;!KIwifd{ui{nQS`J*DuTdvgar5xi`Jav( z<(u?EWbr4-_tro8ZsJCDWZ|3SyNO%R5zi#wP2A%Mu6|ck9wy(1O3Hoc^L06sH@8EC ox%>s@^74c;ea^SJPQA|EKj+8a&cMeIB^m!R6<_~Fv`*dr0wrq;MF0Q* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper230.h b/virtuanessrc097-master/NES/Mapper/Mapper230.h new file mode 100644 index 0000000000000000000000000000000000000000..a79f471147140ef04049dd88dfb3ab67641a233d GIT binary patch literal 836 zcmd6kPiw+Z5X9#i!S9e`EJ~}r=}qd<7OWtilM1``b1C1FwQC@A0xb zGdtP++db<3qOO{|iZxVFN#t6pqh~!SCOSk*g}%7kp0Vt0!=`lbb#D_hU#UKs)ryF& zPOZy)N`31CTmkxWwx+Q0|2xNYJ#$Sjf&Z$3-u2+Rf&Jv{W6f8CW8Kbom(cr!F~mk& zSGUfQezd?<#%qMminCUNQm=Aws!!-tP|c}N^alO~wE#Dx(&XLORAaowWCF-=)UjSA isD<-WzcakN zaBIGDJzREhIru`VTJ&E@L{2e{;Ko8C|G#CS`;Ewhd_L#i3p zdeoc#GSAnn9y++gxyD<#8m>wb-6*YL@Ts-pZxww5PRN+*M#^eHEg{axVn|OS-fi=L z8@ISoZV}Jt+@ea*9Z#pqWm#-6#=|?er*kJ6d0pl1)s~g(WaqG3XmNT4%{eQoEfqX# zr_xm%bAt!wOIIvTxE)r))2F_;PljFk-P^qD`|6BC-K55?Ot-6{92B6)%S@D2;c{4j zlAgS3T#gD*vRsm>O6EB4q;$OT<3+j`v8OW0r}|#HoVyvT`AMehIcrbgc0k$}_M- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper231.h b/virtuanessrc097-master/NES/Mapper/Mapper231.h new file mode 100644 index 0000000000000000000000000000000000000000..95cb9761b235422a536820ac7f0cf88daca53fe3 GIT binary patch literal 806 zcmd6kI}5@<5QL{y@IR!CqWJ1!Ct9kYf>@p=ML;z8YQ(>;etX6j*b1`TaoL@noy=Y@ zb^TwIRP?F>4dj#&iMDE~t)>E^rG{!swdTHOEc@Fqmma$Q%`wxp)C#Y5MB%Gz5&mR4 zXaOz-{pqbSoc#a2VRt9S0`Y4-WB>pF literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper232.cpp b/virtuanessrc097-master/NES/Mapper/Mapper232.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5db96744927b05883b1c131a31d409142461d525 GIT binary patch literal 2210 zcmd5+X-fi86g^)j=s(OS(H3%AtSp6WBQjbHq9Q_Y3TYEtq5A99x$k-BjXL2ZeUQtH z&U@#*d+xc*_ty+Y&&DxkSozpP9W7djHfAx$$EO|Qnd?uqHXiuB&96IR9?h;G{@+9; z%^X#Qjd6&Nxs(Ozb;(g>X z#dl!d4!H!u)v$vzY+{<(5!CPd0e5p)F@A-!$NYu3#yRi5;9iMO9&dcsJ1B<;dJy>z z;xoE!kOC+4)?}n1s?_S$#C5`$kFY_%b!yijLL#W(6vvFn=Ze%>o&UNuYvRhB*Hb>q z5&Hu9i^&-us?Uli4o;xF#Ss^h`NHB5AJ`*3kdU3=81H?~p~+j2r|_LR$%%Vjne zS%$16w*i)@OPLmQGHB0#azDf^dpP93ehyCGwTMFoa;qxoV>RNr1#9sf^zw8S<@8sU zd3J%#gtD{s+Rw}RTu$)mCDwR4U8Dx$nz%~Ru1Obx){>2&x7%$G$9sL=^gy<&H$S2; z@tMN}dwsG~<65zUZ(c}!b9_?tPpE#*g~XffESVdc?_#Q3<6P7CYmIgL!dkDH`65$E z`nJmH>84MME8TOa#aStRq|;I>K~^*m7UOC|F|uMY=~>F8l>Yh~OZDh@I^N1sF^;F> H9cTFiT~!V} literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper232.h b/virtuanessrc097-master/NES/Mapper/Mapper232.h new file mode 100644 index 0000000000000000000000000000000000000000..25bcb50a2738ce39b16a86cef3a3fbef4fa5bb86 GIT binary patch literal 1168 zcmd6mOH0F05QWb+g8$(zqX>fT+FkL1P^~sfDdHkFK>}(+Qgu=K*VS)sQWGJFh>J3$ zo!mL|IA?A?-uJb6wyiBcmD9Omt%5k?NU^IPLIQ zxAyKrdN&wDEVc60t#hDP_LwQb8~Z(`R0^rouP12Y6FOx?Qw_;^1LZW)h`b}bm>LO) zJ^X>Dx@JbliQSeM@8^ntt5q?uJK=P~Oa=d??`Kn*AHy%LnGBe9#O#62h(uqws74uU zQ^$El7i_FRR|k`^ZeY{Luas-6w$5(q8JD3hTPoz7bn!PGO}F3X8sD6$=6(w^|C_M! fN{2@E>Kn9s@t|A2+`D?4mYbo7?If-9R(0$X25*x5 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper233.cpp b/virtuanessrc097-master/NES/Mapper/Mapper233.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6947de06b426bf6a7b1b736dd486082ad2c60c3d GIT binary patch literal 1974 zcmd5+VM_u*5Pe@S=s(;iQ7gK;t`fr_%P>L;3#CtCXds1#Nd)0vx8Ba)dbf9hrxD1o zd&l0~n>TM}_ItjM&9iN62`d*Z^zcR-V1fV#G?y0geGfy7xchRVPXE`GN`}{_DW-UR zU`$2&aDLIOiYnUF@SSUlB1)3Um+TJi8=6!xsQR;ZWJsN!L^L)ysA}Mskc!+2DKmJ~z zkB3h(_r%*>_-6B~WU>n-ZgCN>AXq*w8MjQ#od{KD>rmsgW?9U`rI@O7je_|wkCtNU z>{sD=ycE;sIV0-qbi#(e_bboU*uwd)o+gk6>J4r?%3?k&Q9hY z_qP5oYN~owfu?dwiC8Cf)guC;Pu^0Z19!()toqw9mr7m#=9uZ)X^&SKQTgiH0Dn@Q zwFQ@e{`A%uuKxetF#})u#uqX_(?m-(Jg?(@V%{U?tIn})?{62f`-L&YRX5LWn=88L zh^mNe0Z+!s6~Z(u6ukOtHYIdp`hnJ(GchJ}Oh@#Zp literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper234.cpp b/virtuanessrc097-master/NES/Mapper/Mapper234.cpp new file mode 100644 index 0000000000000000000000000000000000000000..73e60d0a4845c1f4c0409de7178dc9c52da96f42 GIT binary patch literal 2718 zcmeHIT}uNo5S-T&{14}gw4m58@v91o7DYvA#Udh7XqBR9Q4vA=*VWmLYjR#&uMdh3 z67DOzm(0v2legD7{Jl1b2}KoSA1(CQI=Dj#WmFKeN$(T7m_-ru+9SO`+e9V9_16>= zT#vY=B5gziG+V|p>eTR_*8_6ME0brvM`&p8Au|s6?>SX2VVBPhs(gbh=Eo>thWDc0 zOL{N!JC79|L*|cIp$;x_%G@)?R`o9z_pxFs*8dzK3xgIJ3Z5ph*0ISq>1lIr!MA}E z9AS%ZZT3I#N;2)@LjSgZVyu1Od_s+Fk=SEQv-xpjR1-N%%oFA@OuvY_yK$$!XpqeE zDtLtqr|A??M^_K8zNsuRr6c3sx2 zGgf`25~70D;yW$=D;%!d->qRU3;}ImJsVp55~rJfR+0#fF|$=6!oO3{JA1uGes<^b%)msD~*a k8Q!%mLwa0Bc7%J}O>(Y`htOv9=bT|SgqGn^8s-q;J85f4)Bpeg literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper234.h b/virtuanessrc097-master/NES/Mapper/Mapper234.h new file mode 100644 index 0000000000000000000000000000000000000000..bdea659f4004ea88febaee8d9d2bb999a5e02575 GIT binary patch literal 1184 zcmd6mOH0F06oh9R!T*qD6-9h)+FemWh*la)5pi*Cg9OEfB#Kb_*VXUbrcHz_bRm>W z+S~J(Gczas`aIC)oo#J-R-vxslyMT}I?}OD6ml&3p;Y@i)TxhH^nZ`JwBogCjv23s zUT~%01g)-h@h8)p9;r*I{^_kD%)P#5P1i@-@H+Hg>s+yRJ+5OviC$ImYlp|CHFwux zc3oo?b1gi&O%C*~8LXzDh73a%%qfTLVm0P^=F_tdZ%Rexc7CZTeyWp z9F?vW$L3g?&wMM=fI56gifv|W;k*L87KWjf7|(0f?2 zqZ}tgGz>LDN00l`tENw@?i$aOM7n9{&xo{n7{S@J|F+lkX0V!h-zWZa%8r*lto#l< j|0mt^PkpF1XI&{?*dCH~N4?FMXbEG7;^)T37ghf^Bbt+5 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper235.cpp b/virtuanessrc097-master/NES/Mapper/Mapper235.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a6c520eee060875ca2c5a591f7b742ecc5a07f50 GIT binary patch literal 3870 zcmeHKYflqF6g^+Z#Q(6L2&Edg4{9x90uds?SBin4F+^z91_NeAXaf9o^~}9H-N!8J z(xM^8Oor{wvhz*UgLCF22c5=70U3ADDSzWIAg4HEX7~El&6*2U`u3r&0DW{YmYW= zVw2BRTK))!B3CG1(c8)0-)X!T4$?^C*fxC4#|_xO7iyVQ7%zXn`C;k5c# z$(%;+grOHk_{4py(L9I4nIj`(&XzD!!xN4cQ7#J3g!I;R?l~qB^nHA%eH>r9uMCZ7 zA#0t4qpmQtMSHy!*_TD84%%2CdwGjkZ?!RFEtkZMVjF(*OjtU=XZecLD!?3Xr8Udr z8XS-V>r*B^r@qnS`#!lEa`$keso`q=yvn5K6YU$~b=45mA7?>Ot5ru(|1-EGJ41XC z{cXflvr&Wg>6Th4o7w&~D`jIy-!y(SE-u8AtW|A>spbQJ+k%g1!?HO0Z$YgS(^#;Y zf3!>dW48Egva{$ESU0IUW)kZ~nX*gCv|6QWqRS5c4b6c54ZkjG&QDjxwp1`>Y=ODI z9_M~nTWrS7S63fp(L-r5@{$Tw4W;9uXdSwqEDt@Dye!$Qdmi@_)nxSfO7|5OV>-TU z|2aEf)5zlUm6xSB8WP^}{!!F@xtL6JEQ$u#zht|?JihP0u3yw{Y=s@@COfiSb~|hA z0<|m5@>_f1Mqsg}DgW)bgxP6?R{in5UMwjKB9d+fGH?9!r1_n+R`;3>;} vpIFZ`{+*4$t23MXPa)qmR+r)#B~0W<`#@HPyf>%yxJtwA5^URZDbv3I^RLg1 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper235.h b/virtuanessrc097-master/NES/Mapper/Mapper235.h new file mode 100644 index 0000000000000000000000000000000000000000..12ae633605d5eb38dfd94744b0d435598340d5b5 GIT binary patch literal 806 zcmd6kISay25QL{y@IR!CqIhAWooK0o3S#+8QUpYUS0ny)_1j0hz*dmu9hse-o$R|^ z>-xVaspwq=8p$am67AGdTO9>Nle3|kQf=6q9y9!xVN-he`nQRhuSjcVwI>Q+r`BaU znT}e)OJRS`))dbE|K2%Wk9^Y$sUK^onJQk_@jeN!ap0@WvTpBh7t;I1F~(UJuWp?S zI%$imnA;ScJ?o$lrC#pfm0!>)C7Y06XaawLnxi%*Q{~>*QggfoAP%N`>R7J~*4EcY Sevk3`z*Br!MUrEey#F2O>Rp5Y literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper236.cpp b/virtuanessrc097-master/NES/Mapper/Mapper236.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e773c4fa207b43608870be629c43f3a39ad75e1c GIT binary patch literal 3292 zcmeHJYfBqJ6g^+J(EqTXMEjtdU27z@g$9*Ml}b_+Eh5pRH24ZCRxtkc>bZAzGP^q= zyDEWvD8o*4?wvd5p8J@2`1b*`H(ukFq6)Ev4h9@OTp~t-C4?Nyh&bM(k8{p7U6b`` z4q?gSnl;7**9|VnM;E~u&KhW-MGmj{U1J^#>dBqX0ouB{O^qMidq|dJeCKbI+@Irw z`XSkV$GN7n(_B`)Ha4)2HAW&XkxQf&@JY`V%mI$lGeUf(?2JBiiN^dFrJDC6{W2eS znI(OC*i+2A^rwYYTIUQ{7o{v6$>wdc{#1};u;Wo{@hUZ6`e4*$xVk$lDNIheG0LV(IfH42fqk=OP;>>vkBSubOpRjNB#11wY9+C;3MC z2K6LATWZIhKAwZ>ws$7jcAj0~ujbV;{wOw=r}+pUGon&sfqE@Hs*!RNmsZTc3ia3Z5mk<8pPF`Yw6)e023vt3K8v zW=@Y0ILR=Yk4UXTL=x09`>QbUKO!d1&xwe1hH2G^%SqEe*V*-7l9Q%lCRz0vD6i*Y z{rFhpT+gdkmBsq;ttOt;^7@g^KdorZT1R_19utGS9X~^S*3EmT`m3kSo_E8}*VfmJ zef?}=JM-2VXtd=uBd?BblQ+7&AD)KJqA}PU OR*TM}$;t(57TqJR=8hBq literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper236.h b/virtuanessrc097-master/NES/Mapper/Mapper236.h new file mode 100644 index 0000000000000000000000000000000000000000..cb644f836746775d5298623748f59b6699cc69ea GIT binary patch literal 1094 zcmd6m%Syvw5QWdSg75GzqbS}$q}>%2gleU!6qjj}MNr$2L^q|cu72|;F%i0OBa|WO zbS`JkoFQMIC)z#R*PdtPbgxJmmMGV`E_5k}UFj4%R;nfMGas|~f10V(@Y*%SjMqZ1 zXjNdnt*Z4=C)2y;)TLDa*47Z#e!p%_-$%CL1@u4YMxhQpZp3{Ou2J&ufXAkFZx=AT zt+9%=HXhw3_w=C^tYW+gI0a9s0Hi_9pv}*il#)%zJIyqv;~FobJ0^F8Kh(3PuyaHr zY9qV`tD0vQbh>3~&Trvs4AcAwHc35q2>w_jc-@f+f9k@z$~f9C&hKBMZ;lF%=@UJ{ zV1Qrk+1;_}Zt-lFksdqDGa?P=Ztn=rw(DPeZQl%5E3etYzhmxG>Ch@weLHiomwNFk WzR?q-M0EqhNKwZ0OzQqko%;p?KZW%G literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper240.cpp b/virtuanessrc097-master/NES/Mapper/Mapper240.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d191dbb1ea65512d6505b96017e46ed697e2fd0c GIT binary patch literal 1092 zcmd6l+e!m55Qe|o3cf?GmM$o|wTM*hMe%^tqO@YMH?q)*MX=%-#8+4UOwAr}#Ver< znd~NiCNp2=^J9(0vt^bnD@Tu%JK2PL8Z=qQ$qw~@tGTP$acq9XHBVCe_5UzWDde?i z#C%?UJTqg;III6By%sI{;`N~MNS)Zuy_v5uu+>v3PDK8a4KeR(?ikk_>78C+MLsc~ zE4NHH;D{0Xtm>Rs{l1@QH)i|$-YHiW`#ifjDaG?zN60ednXBiwm$NL!f46()zR0Oo z(O;g>P~A2apNV>F#*5`P6q7!C$|Duwu@t_-4i}uMVyBf1#cT?V5b>%tNsu!wfxkMK0Kt84|Yg)WO{cnz;rVuB8u_DngTAY5% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper240.h b/virtuanessrc097-master/NES/Mapper/Mapper240.h new file mode 100644 index 0000000000000000000000000000000000000000..29917e0b036dbb26f48e18afe674424e8a98f541 GIT binary patch literal 812 zcmd6k%}T>i5QWdSLf;|FD1uVDio2q?XjQ0%(C%)NfB`X~t-2_Ab@iJ|(xi~B5Qh6V zbLPysGrvDK8lH`H;Z+5Cl2eIg+G(PxZWUmUygxYSoPid8-{?)Bpw0guW?gD@4XtCQ zE73c@-(#cRu0?dEq(fV9Iq37=8pF~5uZxMir;jfr|5*=u)s^RU%*SSO;C0EeYTem| z)NV0`II8mOR(Yf^6{t$NE#cX-4hmtqs};2Im`XX(jJX&31{Ldtta~^e3@Pzz?lY~m hLScZ%fp;f1t5||6JWJyD6vd4{M~!7yIqT}Eml68x=+X5V%JjR#-QyqFV8woe0yB%6P6(z$#D(6BUvovB z8lsIUn%Zw*F)Yfv+x>~*;G$TM^;4zuAJek})kX&5Q^iC#cjz%%2nM&8#{V-3hM>O0)ON-BC)fqHVvh(tTp)!+m~L^b6-;knV0Y^D{p4cUmydcO{H>7nc295Y=Dt#M#a z6u!FF#F0!#&B3LhKfN`Ev;V($Ow(7s@rBIy)y3_K=XKmqg8v7;${gGFes>|eUl>E2 zb@A-BxuBD_sEWyk@a#DUg)p^p1+RX@rj%|%Khgkv2R6rSOs7iT)>LD(1ymeJ_vEo% Y8K|wFU-)N?)<-=>hfO4T?UL`m147$iG5`Po literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper243.cpp b/virtuanessrc097-master/NES/Mapper/Mapper243.cpp new file mode 100644 index 0000000000000000000000000000000000000000..131c3537ae424874459a08c4ace9286c831a7ec0 GIT binary patch literal 2986 zcmd5;Yfn=_5ItY7iT|OWNb4i^_Lf5GBM~)$0Fh7wQDaQCMH>t>rJ@P&*VQw#%-y~1 z-Cj!kKsHP1Ja*=snVs$5KTmM?)_vU5tZLXrA7ic|CTO9J3^lGjyuxGjsQZfV)Sb|J zQ@l~*TVSuEBvo5;WCo^ZAMl2@FSy(4Q-j5^NV8sH9Oq+ku6V)_ zKQ!+e(N#rl(0-X{MO0UcPPhy+eW{%6GWvw;lw0@^3{JC2{T9Cod;5ymW$(_JF#m7( zNd7)i_nf<#vuL_>fv%P7vN^vj*V&mKK~*;#632*DA7Y1?ekrCyMev$A_Sr`RT0G+a z8+ea*TGIjLQ*P-5L1#=`UFx~t3Q_)M{ZoFXv=-zJyGb4MVYQ46&y>Ym+zrb_O*Qv0 z>KU;M4>CujuEi`?C=n!0tj&2Q^yzD7Ce(MYZ$`r2N%B+5DqFNDtFN>8qNntE{|vv# zeav$0e~EyC#=9g^?0eWw08_z@wgzv0Q{sBtjKN!6F#vQD)RU z<60i=S|k^L3vY*Zz&m)vPWs6?H=T)5RsnyZ}<+WdIjVc)H(aFr*mCi1DSz4{4L<8{#YkpIPb@W_ssZ{ zxox*wEc_HO3z38t{uY~sNJ0yLx6DE$&f?}M<%N?MZ8?+{(Z5HA+cGo@kJNC_T6m;l O5u&s+JW{bJL-`Ld(q#Vt literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper243.h b/virtuanessrc097-master/NES/Mapper/Mapper243.h new file mode 100644 index 0000000000000000000000000000000000000000..18a0620094fd60fee2af9e9cbe798cc9703b6788 GIT binary patch literal 1086 zcmd6mPfNp45X9#i!S9e`6-7`_?XCVnp;~DzMZ`l)f(FHgB^UU492d7ZBHaU|8d9>FD`e|u{TOV?i;(|0Fbd_D57b;b;K9dE#VYz_r) zJ6u++J-Z&Y8;l{AS~+&B?CC=bR7LD2@Z?;DdN2(t1xWyT&f&;-<_=-3whzz~SCxmbkE!M9lE`$8v#-xkrqa6c zodX39XZYY#d!iZj2kgsE+g;Y#4WBtW;>&Jyr<`;-V0~Msf6cXiQ&cUSYoWVGOsMps buID-ZPrBzXd#HS`GZQ*B592CpRmFb*q2PzJ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper244.cpp b/virtuanessrc097-master/NES/Mapper/Mapper244.cpp new file mode 100644 index 0000000000000000000000000000000000000000..735de6f3cffc9c45281276eea0a0b2e5214c32e2 GIT binary patch literal 1022 zcmd6l-3tLh6vfZ$D*wYi$rh2%%~#p%lSIhoNouK0AtWXLI?h~;kL<=9-DY;0x%Zym zoY~7cga3;-VnSu2gDKXG88*nFz%YLl$|cS9Z;mOhJyrVWBD&Cz-#|^!RE46=%}JWB)!{>@+2(&$ATQ z4#pV5<;v&&jzcM_?wT*aT9LNjti~j{WvFVXR6?vz9|xZ^T#II&tm* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper244.h b/virtuanessrc097-master/NES/Mapper/Mapper244.h new file mode 100644 index 0000000000000000000000000000000000000000..012f0fd8be2a1fa05bee2302b60b8972492d7105 GIT binary patch literal 802 zcmd6ky$ZrW5QL{y@EuY{5d^W)PP9}(1+hF$ih!74qD{!FtKS~+5A2oY!ew`MW-_^5 zd-}g>sp(w>n#n1nVx832fC_$8meRx5za?hA_BxPNPBp%!HYB%9XYIfxpg*%UhSGoE zJ7(xR-}plI=bCDzj^}m!pIAo~ytO%|_Wtiev|kuQl&UD1>QL zJ9y1EC?!l|<{K@*PhfNGMohZg$J%O*w}6fV>7G2Mm4QnA{@y<$ygvE~K5QeddlmY3 DA-!C6 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper245.cpp b/virtuanessrc097-master/NES/Mapper/Mapper245.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7967c98d5b74b572fcb638577c21270321a70dec GIT binary patch literal 8460 zcmdT}ZEq7t5Z

ssF+G5;;nv+KFR_G(mz8N(2dMl7gT@C^#;S3L!YAfPlZ=_IY-0 zJiF_=^94sV)#?0lJ3Bis&&=%X{qy&a?)qKdyYIYI4Y%u#-8rs-8@grJajUL@>xp~g z&fH7<~J@%{^%pSly571(Xvt-Ax*>H_!3 zHQj=r@yUN??sv=_;%UR}xIK4-?^E2HxLfY0{NDz?*YbahZV~?$a4Uxl^9S(BZih%qIs*m$@(gTYjH|{w2ngQfcIQJAdBJ=gOQzFZ(|9cnA%jyA@#KKE7`QC1>tW zFMrGZfVpk|X_RZ8?hx8N1xA)Ik5uL3Tz?^2`xG{!eIAWhZ$~^+Yly5yEfU0%+8VKK z-b2sl@YE1`y~dhmqb!e$JFxNvMqjvBpcU(!g8nV$4PXl$x!laYkD@c+gYjl_WB#we zedPLxyfO+R;Vt5kXd5L|!t2bBExDUc?6l)$KXM;^tkceW@Y5kMyAGcnxL=^x79#s0 zKJQ~xePf84hW*D_;nZtJ?vKIg09m5}T~2TfJsxf&vmE&xa^iJ7_A60hMfrt$@3~NW z^3mDzK=KE7*Y$AU^|Qjr=!1@NmwBo+eDYe){g&am#!hP-J1T+31*u+mx?>>So)+Ag7x)oR{U8NTbtYrweb< z-Yec$pTS9`Tgm)XZR!i68 zEiok4N;B+a*6R33Q9V9KmbbX9%WXB_)`sOnKc?J@EE8M&Rz+kjSE66D`y6s7vlcVc z5ZUmx|FwfB9iVaxIb$2w9?;B)n2ZYLqaF~f6RR!MB$;8A;g+vryT~X*znWBF)(jcB zhjC^<*1H2gJND=R*`VhtO_XCyBMPDkbrW^VDn*KlUMaW zR^|VT=Gzs1@7B`1c)w%VyN>=At&9EL`%0~KuPoTT4q8hdslP{KY`sAhm7TnHB7N)% z`+lE$;d7wv$JmEu$eyw@FVlG5?>Cx3X8#$HKSJa(Z`hub*?iOYEmeEZIPZ%DS-{&e zg=U65=rlrRAWlypEjw4%56MZw;j)&xhg|;=ocewjs+PL&JCHNjimR|Mj=MayR1;N$ zl{2Kg={09RCia@7*zgp~*md0~sD8@ZawhwB$(gL5(y^SQl9g3Y<)D6y<65Me^R<#) zPMW>TYw@He;$`YOIcpM6X!bv(4Lvd)eOz`s-H6*bZhP{UzVuF5VemPk_{|1nK`(yo*h> z17a_{?|$`J#IoUJ-&AxyqC0nRE&q4|Nb;Wx9O52icuT-y|5( zXkiW#Nt?O%#MUjyCFeFRoZG}wszs}K3I<}H?HPFrmXxR1e^xn($p&(Tp^iA4O?NqE z6^@;mtQg{PbtX=dr!*#K@oX5Ey;7OV5L^d4Vn6lC)!&851 zl{3slv*9t!?6cu9tP9;z6xBhCM6e*c3Xhsu`F)v6e2i*6z>a6+PrV1er+9#RZ0F(U zK0lK0r@X#h#T%pZ=xveKY`#CzdZGJ2Qu6K7Gkk91)?JL!$@q3Y+cZopbAqb5rh`^A72#qN^7!N6k(3nErnoHa;4v5j1qMPs_N@EJ{ zkiu1nQ>9SPhe(X6iQ1Gp#-H$R;#7w3pBE6}l#~cg=NS^YMko_en^MPU45^7+p%%aX E3$djjmH+?% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper245.h b/virtuanessrc097-master/NES/Mapper/Mapper245.h new file mode 100644 index 0000000000000000000000000000000000000000..10e2f321d05f2dc3e3c6cdbdf7cde2ce5988df41 GIT binary patch literal 1696 zcmd6nT}vB56o%j1E%+byG8Ms(YAbpdwN%g=Ohl@PteYh+ZIhU6T15Qowa=N^k5Lxs zMK5HS?3p?5`FhWpJpEbK+gnR|=dy}*tVB~*rkOUhsV&8Wj(Z$;5X2JJ> zeN<}=`@fd4ROR*77_+=m{eY`ED{5tJ2PUR)bOSC2{hV9#@ZjnTF+1+2&0h!mudvMUZVB?I+caf`}G~8C!jX&e?NWFluDK`~Y zVZHVejpKi{wR)}Z6SB)-#eRp(lINl7P~`F-=~COes=M82{p75Rj3jhEB literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper246.cpp b/virtuanessrc097-master/NES/Mapper/Mapper246.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f389f3a1d3df9d08bd4bad5ca5fcd9c6e1beca52 GIT binary patch literal 2018 zcmd5++e*Vg5IwIE{D(Xh3yMweR9i4!K(s2YT2zX}Ua-^~TCE`dx_V~PO`}$7XdcS2 zo3J~xXXec1^J5kBCyQ86uWVG|;epb@Bhtts51Vp?Yuw|Gr#9+(cgsIF_!FJDMOZR^ z%^PFlm#i1E(nC9l{Wp6hlu#p2Ph0~mA*pt6x?9TSfb7d)R+#Lf*ym2CJY)zdP7xq(k+mL0@aw z;(Hz=Z&O2%U7X>Vp4dF`XyGZIV3=5Y=&HT3s-Vo+URhx&6&nf4_|V>#Z>~{{NT~Av_5S>?7>VI%vA}B?*jloVDA|-?>sDVJzCTgPyIp9)MN{De9swjWG?KwN1 zJG<+>U{IiuWxV&!?Ck8!nU7um{pUOR@;+b7S3#?$Y|21R@EOWTI?|QCH1T!j%7~f!%jYizYX~f zGe>yalnvQ}C7Y1blvR9N^8MuL9)A0irv+KS(>%T=p@I2B_~8|1zQ%iEgZW(#0_bA>NtpkcaTJ+jWaIy z|3yfB2^|iDE>ED>hk(qN@)QVu1epV1d>zz52VQ22M&RlPt`@S0BBFu!7V)hr;>`yZ&E(2)pGPiv zrn&OyP_8#&%>goiuTavnUDUH(qo?mEw^q7Cvsg(tnc`I$M%^tyfk1YHa-3dnYwR)>^*n2ji{ZXiBah1F5Ixj9<$E(S#9@09zR`5`%uUiFQ zoc)Z)doyyJp}$EhiSbQ$dL?f6^&ZY%?}M+`V82nY@=ibm?Y)CeY7^dJO1wl+U;CvW=#-{ect#NUXRy@{ptRCOA9gk#u|r`BP> zDdm2w`go1CIpCC5iaGCx49gSK?a;eTbKDCYtl@V;canA}7Ju$po~qTejAA`koFIPc zV%Q{x@Zr%quc@Dz}JlMES}wY?$3b1{(vj zMA&}t#zDwjF~TUxt>rQ_E2$)AMw5A79N6hswe!qiBmJEnUwKdHb*zM^av$48p2%&l za{a7RIxRW1d=j!VJWoYdm1jR8)#vJ2bc@%E^|(mqdU||%GcR7~BBky!RC&uaM$J7M_>>bv+9Y&RkFm5!Ig$yUcJ(YS{(_4in_8LZ_#pHFsvRw>L* zPUjQp)Yc=fzE&#&F5bh{w5Z!tH`2J?BKaQFK9`T{0q*gJs2<~RpD_&e;|VgA-*lV= zd&T(q9QSu8$=#hHi??~^8Qn_*G5rb}^sBDXV$S%KekY@Q^(MUyjJ}2xo*EPx^jR#S zjpvkuXh}J|b5$9Bcc*JCWfJ@bPwCx^?)P{~U(V=$o2T@Zif$Dt?pRV?dlm0o<;(e+ zx|q&%OWP`W-BX{mQTNSa#z{Z=eVodjJ$v!?jW9pevhmOAwp9QzfV>UVl?IOdu8PyN>dKMUsev{)HuxZ yF%sjQw}q(9xl3Kv96B5Jt@9z`+qm_bp65u^|G6-pRVSi0UnNCjY)SWqqVqoj>pE`$ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper248.h b/virtuanessrc097-master/NES/Mapper/Mapper248.h new file mode 100644 index 0000000000000000000000000000000000000000..17807e55d0ea84a3edada7b913ee15937e53e06a GIT binary patch literal 1642 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 Q&OwM%;}IlFje^^M06kn?TmS$7 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper249.h b/virtuanessrc097-master/NES/Mapper/Mapper249.h new file mode 100644 index 0000000000000000000000000000000000000000..831d0f8903e508bb310f225dc09f56060b29eca5 GIT binary patch literal 1780 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper252.h b/virtuanessrc097-master/NES/Mapper/Mapper252.h new file mode 100644 index 0000000000000000000000000000000000000000..1375dc84cfd00ad0c1022db334152e6bf551e7fe GIT binary patch literal 1324 zcmd6m-%G+!6vw}>3;G}SXb}WK59yoz0KqcUkcfyiM~y<4&LG5pz51NH%`Fq@ExBBG z-T9vH`JV5&`}#c8_N`s*I90wb6)0gvn&?Q!Z2zB@xm4)dHpfg?s8_t2vb?pf)$uLS zOpoAV&_BI3hPmsnimAId>-cKqU+G*u?K|Fp`9vBi<=-CLs#RxKqjrfg#9RxX-_K5qiB0jGj%wcaUy zjPc{e@wMox4?5I`bJVn~=GydqU63{5Id%M|$IbzrM7icB+B#~}Q;SG%iR(6}f zop&j-nc$#L{jP3M-{72iRQ0FGF8R!dwyrB(C%h^8t>(7TY(D)p*StzlHFkc7?sv#+ zGY<=wJ*WRkcRJDia$;pPCjO=ed>K*Q?q9S46;f^HZjycT#r%J>*=ssF)zK|vJNPW%EXAVEkA0z!Bxh*lH@C!|q$365z&h`-+Ud3J6* zJ9~HLh(n;V65rj<&d$y}^Rnan_n#lbxA*xzd>5tagxg^&9N@DPCSf@YLO*oy*$l74 zKAyeA_p5lnhw-g2#j{RW!_@@Wq&&V4wWM-=YZ{|me?b>}VLKExI$I5^;U08zh`(uA z3TNU@KE(e;c#fG9Jne)VVIw@i_a6Q(;jbHhD(^1h`+RwKHk`%X8T=`S0`qsmZulKD zpWwO7eTVtvKxYmM>$d3XVf?at=O45Qoy7v-tk$YD41%ICe=D)-|K zuY%tzAmk~quo-@hJ5ITd!=ISnoy|8XWn?+5l$@7moMlAt$NlxQkpZ5Gl!I(!I2##e zBcs{KXf~4XV6%1y#QPiUZwLF_3eTWHB42G*l-_d<_Bfo4i$-upf{fa|N_ zF)+H0tL-S;7Op&=4>6y-C^b>7vpeB5?z-V!_!LwM1|Mj_LTQ zGG3H;dkP<1$KO*(dj&pq6P}?`Tn?9kyA}9}Jv$xO>p?DlonjEc5i7Yjh7jnriYg z`UPXNx3l-2^O35H%p@8iy6f>GSfgj8o}d}0JJ(Jn18Puc1y{$7chz10!QKIw~L4hs8WO1#pIBfrsFACDv}YvHB#gCZ{7CxsLH0 zpt~0}SFXn!tm>Xav!y7Pxx zC-obpr{qoN4AHwGWQlS$-Y&x&7MizFxC~R=dy7 zRsWZrOKsu>j;HjcB;Nl5UQ_rmHS_@7*$tF9e<|ku z4S4Z=Q ztP(SsRi$%u04+A1xxIu$c0qkWF+<_ulkiCDSXt&ymo%aP}m>Po4 z8ENhzWtwyIJ6-z}?5cXGa`YG!sZ$wp-H2t`rSd1HV_hHfB5FyWjmi<%hoZEFbK5w2UogBr|NARfYq_vSvPf50R z?-Of_%z*)U*f{Sv?rY>G47A_F(WGeFQ$LZo zStI!#L_bY?Il2XT8kG~IU?jDmNV-&7Pqg1f)RJESw6~|eM%xKS=kb&sd!D@oc?y=4 zr=Va_If=;*GNqtZk+s;~C3dM_ETYBKD+UYMLt>Wt^8@dW=b z;ZG|XrIYas*|?qcIo?C|*ZHDL`d!MQhkH*!#CrTLesNzuGz0n;TUiqF3t4*U5{3@lM2RsEes}y2?V$^sDhCKx_noG c&`QoJHIbcDd&H*HsSWB8Yt({n;VriR5B)Cje*gdg literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper254.h b/virtuanessrc097-master/NES/Mapper/Mapper254.h new file mode 100644 index 0000000000000000000000000000000000000000..e175c921b5664193280a2a1f9567633fb362b67f GIT binary patch literal 1788 zcmd6nUr!T36vfZ$n)n^|u^JN*K@7Z6HIkqZ3L(T8vu|LGd7<4Hs))g66n=9-#wJdI*>c6NL%h!#Jp$M_}MG|nVp1Y4O zQ*@a)jy>2t22ZZJD{Gv@k-SHPIn3uvaTW87Rnz+1Z^d$5>)=%Hs95r?oTKLURK#5o z(cs&K-vjtbw1?N=)^D)zGL1~j)b+3FuabHx*pGCA0z24^&RvZ|beqq(-{)QjZLC-0 z=QX}fv-`%{IcA`mde7wkKcqjy`I=5i9RFCK^je>9yDp$fJi}OP-d&b$tQQflT;JJS zW6!#XxJ8LwhGpb0H7rnICkZDPb22}Xw=(v0T#P0Sq6 z|I5KFiC=e(G4|_{&cVkSMJqVlrfoU`hu`sB&^m3HNPd~$h{k625Eieo_dWH%^h^BR z0rzwI3i}vr$Jq7Q*>Rlh7zW!vH76Xv(6J^YV-Im(^M5k|0{(r0=H zZ%(oH1WzaPN!F5@wQkK?ue5e;qUDo!=q}7nG4VgOGa-khg-6 zoA^8kLN5ATrI`?x!uWUJs<+8M_eA=>4nq#(zlqOb{1<(;dF9Jp?OV!PZFUQ{l>^0i z{J3E^P|N^7ZW#Zr{_|DMo}m3+vZCMP{)X#~t>XELW8XC`RHAlT&8qsyGH#M(ZauEc zwcp=vAg;@`AGa5X>vHYKRVCN+(0B6QkE_+Z9+$tnw4V5JRmt_ZTQ|g2CD-E)a=5Bw zUuQZ-Z*z&hbZmNa?ohc~+o!`^=e{t={I-`4e1Tq)wSS6V?i}Sygl9zQ)<(Zg#D-^F z8~sKR8=i4(^jk%2c*fdYi;t;3XaBWZHm$U E1@99ZhyVZp literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/Mapper255.h b/virtuanessrc097-master/NES/Mapper/Mapper255.h new file mode 100644 index 0000000000000000000000000000000000000000..c69315f5c25bb347fcc027712d6e00cdb01b9cd9 GIT binary patch literal 1248 zcmd6mPfNo<5XIlMg5P0}RTQo0rM-y?LbTFaiin4`4H6I=(yE8jude=PlQa=>5TQ_p zq|@0q|K8hte;sN2Y*#yBDyJKHrC6*?CpyC%*1?W-s6=nPJ0WKAO`5S(&b4if*<2I7 z!qpsWHL}))omB672A6>T&8<~fhW+Z8ZiqD1YmU#8vQDecsJs#^;*RD

545ge&=BWo6>v_U-6omKKn;7bIr+cjT;sy zW6{`lL7@dVAVVhyn*)ttw1=N7QCFeNuIkw?k?v}|rbL<;HDyeRzvkM$DO1gY3X|}j ha)WXnDjoB$+wR$m9(Agx;&xbW0wbn!T;#2avmZ_Bo2&o; literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/MapperFDS.cpp b/virtuanessrc097-master/NES/Mapper/MapperFDS.cpp new file mode 100644 index 0000000000000000000000000000000000000000..469931240e1a8c5ce2c5b8a4b4e4a26bedc83a16 GIT binary patch literal 28242 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/MapperFDS.h b/virtuanessrc097-master/NES/Mapper/MapperFDS.h new file mode 100644 index 0000000000000000000000000000000000000000..55c2cf0ecad163c1a12ae9b1c67dcf1a8605c41c GIT binary patch literal 4316 zcmd5Y}j6um5`5?i*NMHeZe%4Xmn^Sm&12-%lUwjrf-5NX+IiT1C{wuxxgn(Uz9qt4ZJ#f5UOy?rTY-L4>hSH0 z8aGCK7>yMF(c9e3kKGFPb~2Q>EB7=ycMjwTQ5+(cfwX~>;7$>}({jO+smQK$v1fq$ zJuMeQBZOQiJJQ0F8diMP2OIJ*+CDlpckp(oGo)PeCFt6{LSV&^jXk^~V~5v(74I(K z^Yo}ICDxUrS&NGdtBCmlVm{K`HW9fl?CGIWm^JiwxwkfSHH{%fPg%VL|Hp_m^Jon1 za^0(*Zl0I*t%+k5b=ogPvo3E+75P)kV%pO(<@+$A2E)aHY#qi9P-rdpDfgR0HlAaB zhv*##I*-^*m;oNmb0gtOoI}X9>K-<^TfBUFjV;?Je3cm$eZwRoe zfJqA;-;xMc)a4?gvoT@aqD>Dp-~sM_X{MR?r0ZwbV3(Pwx^g4y52-#Y?3rp#gJ7Xt7yA3?l>Q0s_pkt6 z%Ishf%il&gQGE=%?+~osffsw|T~qWa_U8%g3V~|ga2`tW{s#1eY@R%YEHZQC8L{iL zvuZbZonf!L=rR9~vLY}~h>}jigv`PDc`u^kl>d{Bfee#R?U45-lib&S?5%isnK8}q) z&;3>8Oqi1_;w4!W`iRIP#Li6S@i5z%dm`A#(|3}2+WPFv2lv%qd)w;I&Oh(dS3MP} z50vv{k)OfZ2ZKKN`F2{QN9u3&aL(h-Pt;9uPr%8?F|)!?>NEAN`brVy2i(Q|9nL^* zf&oujpM}-`LbDjFH+qB1tMc}z{GG?*{K_dL0vl#wACsJqW^Fpt+)_ieuC_|}| z?PEMd?tHF(Rez}O)Q{?C_041}CKJQPRw2J8%w!p%A~?gd5^Y77Njcx;krL?M(KhX2 z#i=xcU1s(!;yH;}$HLTqQEHx#t0W>!bZ$l1gH_2XILVmLd)#y?W+T5+Y**uyV|#{+ zFfBBU{O;uUFsJ1z`nK*UzEpk+WiMqfW8L%nEryRckD9&ub3Mns@oQ*`T_SW1_QvaT zaXL;X#jfNqS)w(7%m_EX%p>GNUdwpaeeG?RSmpYJ|J9Kq$Juk;+)FIZuB-(!pPRYW Ho@xIBmI!WT literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/MapperFactory.cpp b/virtuanessrc097-master/NES/Mapper/MapperFactory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..23104b9365eff3565b4c0a36bf352bcdecf03d52 GIT binary patch literal 31310 zcmd6wU2j{*5r+3x1^OQZ=O!`QnxrUxv_*j;seu5Adyy8s3~WbDjM|RjsBnX#f4$8< zXLO=NiL~B_Kn+0v1zI!j&d%4)+1Wk*-+v#qhwaz*=;vX3)PC81(LW!y(|h!DNUkUC zPwlHN=a=nid($rZ&)fDx|Ngjtf8H+J_x<~i|HpY8lIz3i?#VF67wum=v;1&!z3Uo& z(KUV9b^m%I!=lal&sq1RS=$bu%l_97C)dmF0Y7x9PTQ-lp>Mj3e;+(yjJ8KZ)Ya#% zTqDJO_&w_DqdtR+K7$us#~1CS{jGi8o^#5c)vW%{?&x$(EQOAa*;K!5f4#++EHH*KKSho>PJ1k@7vFzS=35Vb0$O0 zCUd#%{|~NKmTUUCq+dw-GfBUc^yiX(CF$3aek19(iheHbJ8#au^PYpRBj;}anK!5Z zd2{-oH>dx3bNZk6wLG8i*&s28>#<|)c;26elqDQB$8lZ>l-yO+KG@?=kfT(l~u?q&{7K zKpv-m7w_O3eNs(M?VHrZPkKH5cvABvJhMKIt6P^cE|)Scm&y*aE{*Xc=uKQgZ~Ov! z6KAuo9Vh=v#Ti+}*q1zHo=2AcIDIIytQ#$m<-&h5vdE%~J z2I!qXoJoIh&v|Iy*~`TXdDr2)I+Rt?`KPPPz<2g_br$$0ep%&>KA|@G1bP!M(3^OH z-p<$LD|U^HKR|ERBj}y}U48)H)Q7S$cI%FWr@G+z9xe1!x$au)p`Y3!k%@YAI!4B` zn}ZV`sv;9d(3?C1{d8SGru)`~L>}Zy^fh)P=_bE~DGS z0n0-^wLJKa<)N;yJmg}>Q_n+|$NNF;FWGUted_thj^pjalYrN?wa?hq9OrXlaYe>lERV0Us_SaU@iwhpK|79*)9S+7acrDY1GCF!#(~G$ z2Ock*ubkQSw|)(e%{yb4*6GdXDrVz#?eh-fc>7f6*6P6Onw_?rahlZfV;6TSU&1$b za;JQE?GVA^W4v}K?Ksv>^dW7G!(;spo?~RQ@j7;To!+Y3>v*c;Yk0_W)(_yZI)KN< z5qZw~0X(*rg~vYE!Q=JjcRU!!`smmhc79OZAIsx);Gc)bPO+1%y2Xyi*V(K?H*@`6 zxp(XwJK3sxY-!}=RM_W1-J8*}j3oCuH2iR|3joCuFy8{zTx z@q22FWBm;t?+4X=c0THJ6}6w&b#G?ly9b?_j8#vNzwraG#~0_R}BsyY-*;+t3&NW;Aa!nEvhKKF50B1nH8KMw-($Qk?X^@xB7? z_RrdHulP>-H^#W^x5D3cE;uhb)~>GW+`z{>5`EHs_cO*d^85(od6#%P*Zs(gBajyn z^4Sr{XA$!92;^mie0~J-d4#+=0(li7ua7`pN64EakT((X_6X!{gv@?~jY4>mSm8kDd87E1t*BJez$LkDd88y8<3N^KNzzJa*>aRB09)p2WYowePVr z|K>^BV`nQ3Pn#Y)iyfY>Ja)F)@TB9hv$$kW#bal2$-aZdh9~hs_9r}cW=r-lJa%SF z_8}}bJc&-&ukhGeT(Ym>u`^rJWAoUVEjd~5v9tWmv!ca@C$S~ZlpZ^adEPqVv9p-x zxz=N6YcX%L@Yty>{aU>0>vv*H-jZSEh9|@JG0(ZO4BN*%Z|umheav%CEyMP)!<#@d zY#%$Ed&{tW?C^$>4BN*J=jbwQA3MCcB*Es~ij5t3GHmbP^c6E~@89$vGi>kQoXg3u zy?^somJHkbH)n$~Z13NkA27GY`-?po6fL(>~Kyp!}hVm4eJcs z*KC}-%&>i2@`juY+s7s6I5TV?m%Mo=!Di3QdU)}q=+?(U&wLz8tC`}-WcPb{>?~$} z4yDbA#goczb0X+jPOKBI*I9Ae-`MD9u0qRZ<*N;}oMmGuy|2QP%5Jj{5@p#3N*@X7 z+6}t*)pYd+-TP{~e%A@%YhO+JdBu}hb=KedUfIx%Q0I^Lk3grEzTt|I<}XlMk13v1 zcIz{sr#|C5#Gt1&hVK!Bp5=2WZT2djOz*xQRcHHCbZ=Fl&o=Nu~se0`$O7Ucx@%vVFS0Y8XRSf7^6$7Q$OuD}Wx{uX# zhY57QuELY(owFC#Ba0_Rw|NHiEYCn`p9YF2mEEo$pl7u&l-8=nlge(ZCD5~Ki8D2} zS}LAQcJ8~l90_`s383`;o}N$v-R7C%Ni}2h4Cq-+0Hu%Bv?c)E$0|ITW_-oLj!d>{ zL+L#do>X@4k<>sby7w7&hf;L!Gu&fJ(Y?>4yFFOdXJB|z*?k7)7FCAs_k37YQ;+0b zpf&@;lgjQrlDCbf=-wl_?X@5M_Rc9cyqs>>g~;s6bFZt@T)c;@lwBP1>+3$2swg2qu&e=bHzPI(C;r>=}PVa!7^m}H1 O?f>WN7gv%W=^^htIDE*GLC$b&#S%$#Xvq#OFcKf;NF&ZzLrFtX z@*+Ssj#mzlMOF!rRe&tB3t(iE$0Eos*<_Vn;H9@glJoVsr@zx(Ro&J1-nm2B7lR>d zs;f?&_c`_G>i_%S^Tmtz^Si~@O00&(Tg7|Df&4ryJ}zz)JH>V}lpif!k^iqt-B5n_ zi%*It#RDmCOZnsCBkA|FY>W1@_yLy;uNRGD!0V-AS2%FL*b`1X5Pl7dQ)4bXF3uH? zB>t9VBs z-Io6cQv0clc7H4($mBKo9Tl&Z(Chsk3HJLXoIwc>J+1vY>GP{LS;N_Nx0efg2=u|8(R8U!B zzy2jcVQE`uQDh#j3PgJ>7P7p&Zt$cGs$Q9G#=FZlmgPx$4ox za=m&&+^$yrVh{+6Ps#JO3LY`y(|#pNd?f;vn8!*Soqahvd&JtY2TN?nz6y_668@!% zgOmm#u#WB6H&$X_mZ+huW2p%xhGnx&$^#H;llD{(LME21OP8j>l2C~+>qeDCC{vc$ zgA}rKsnR}$M=WW@l;q`VB-+ttRmXPhODu`UMl~ku+DlDNw_{0u&|+g0H=#n}#GKT` z;IWSF*tf|`;z9eMuVIN8QGP6umuyG*u|!`>ELrkT;fdRM8G}lSS!&V_UJ^@=PHI?c zmwl6$9Eqc|l>3yt?CN2$k~G9dYhp?Gq>gp5(($#U?l-ZF$$+gXd)5(4_Ki`)IsVsn5KE(ktyyY^%67z( z{P1)czSkmgmhITLi6z^_N~A9Kly$_CJ!lKLCH8G%xmHm}OKdL@wJ?A-5D_X?n@rtQ{7;QoY;O`QLmD`G7nVjLX`t>Cihqh89!ncN*Aipxh$YADUrJ-y z4vVoZRwBMJEGg6W60MB5C_M6#Pgo*G#DjHg$5ISSK4ppABIH=9iKX`@Ci__C!u*HU z{clNTfBl#J)`|ITEoX<{W(!C9CGATr z*}6Ye+7bK4XeC|DENG3aW4kn##5cFZ`6scAl_-(+SjneNEZd=yy7p2G3hU^J+M%%B zq*#(4F_{vhSc#TGELj)xEjd_nrbo?-;l{ccZmc6l?BV&=ZR0T=oV6z+2ir>?^LiFc zidl-mVw7iz6tZuuM0m6hmU8mTcBnCoSjW+0P*}%yEKv)nm(+djOMgjNEK%ZwKxt67 zd^?MQgfe}p9n0zAW6nE0l&=n!Uye^Z0OPKm_V3E>{4;5V(-R-dF8wvxr+-?W|2T;3 zyX#8muvnFyc|TuOYs2Y`BY6fLX)ljtFTvXME$jRsgx?pAwx?86a8va7@ltJ4^}cW4 za)>8s=nKoY58*10eVe}J6wHt>q#=A3%G$T-i<57k!q2zKFO!B8T#vUe`!RfdPTBYE zTMqFg4Siwx_95JbE@>3X^?Q^D2b5 zA)oG$hLfeAG)%?=r6)!Ialj1uMH<3q`MTt3$idsU_v8A$zKyRB%cQ~g@o-aR4=dFs zRqy-yaeaNN?At4R(%}2}cD_DU_U%31zP)eb>r-Xl-op&bq#=BkuS+RBQuQhPQtjL8 zNka;5iZ%~7)h1Q%`}Qq|c#?*`uzdRvZs>n~`h4J+3MIe4Bijq#*@21*`9P9!}rBzI})%Y4Gj*c&V~) zAHqF8S%vtJhVWUwE_r%#$~iRWz|l6OAq6)@n;#?9CROkI_AQ5al7_ypeESe?s7t7Ac|Yc9@b=^DQ)Lgw zmwo$on6zo%$HPjMJ=|2AoO(a5hw1B6Wra@~{CK|4WN^dSavU(*Xz=v(Eqj{#_D!{K zhZ&bc3YM>Lha1Yl_f3^2gV{~PWN_PQm@Uk18d5w<)z22c(AS6KPEN!8aZSm#n}!z$ z*U4!JWtW1LBlq^csj=Gm*e!?2;2sCADVW_fwDTYZx4nM0FuQ3;$stugTl|z4?Jy^& zp&f3!9A-;@Hw`Zit|`8B(~#m>s($`7Pfo-9ah+TaFAlEVH2C~Jr6;L+-`CUZ>r;JG z^}cUA%znC*4>!fLuzq@&aT=zFdmOl?V3G!p_cY~{+>a0D30`ZM@-oy1bDp_YGpcH+(hn<}ltDj=eX0wR#VDwdgKyyZ45DIj660 z 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 VK@Ku&v|Xgn%bO^fnK!-s{{!T{gn$45 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Mapper/MapperNSF.h b/virtuanessrc097-master/NES/Mapper/MapperNSF.h new file mode 100644 index 0000000000000000000000000000000000000000..8def35b6aab78accc32b768c0fb492a6bb433017 GIT binary patch literal 3738 zcmd5;+fEZv6y2}K#DAE_dPzhc2x5GoTogq>XhhQ()6!xad$UE#CHm>=T4#6noDK&% z5Ff~7U^=reYp;DffB!s_`*%H*2Od=>@1-UKTum9ujvUCQWVrNc1^+kjF2miIpVE^C zo;UG4lrHp6ye#Ga$3>P5*L`D*xQ?WQm`Au=lC>4EFaS$+$h9Fo%PlQj`uJj*75^q> zuLON%|FO4Q1LsX-fSfc4TO7I?{H4pK%4f{=aNNGOBTl1B{7AvV1*;B+O zp@`{q8!?Qpv6)5_klds@4^JFluvkiPlD1?#bO0}$imaG<-nL~Alc9p{&d`t4yS=|dX<`wt4m5t!>hBi0U?QD2Odn}EC1P4|Pt?BRUdLoREmZ}!m|vc^eQ z&CP@BELfJ8Fi(~XYiX~Pr~MRT51yURPztx{a}z3GtC8>9=#}rNw{}Op^+<1CZkoP> zVs45>xr6+%_hQXrai%omNK=SyW?#+8E^2EO#hcFyd(mpxO{QOrx#A~jsE3sIpwB75 z=^R@q##c(S7+)#Pn6G@qH=~VfBdqVd!ShI$_J1-WFoxOlYGLI+&rUZELdOtD?6$-b9St)r-@O&V62$7qTQzz>Hzw QNwSSS!1>gioFXm4e-v;7i2wiq literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Nes.cpp b/virtuanessrc097-master/NES/Nes.cpp new file mode 100644 index 0000000000000000000000000000000000000000..152062bf705512b3dc9cadcb8fde199108ba2cb1 GIT binary patch literal 204464 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%0AOSy4%ICI-jLIUFiyu9d0c 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 OJl6b(irCbzoqqsQ1-*&@ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/Nes.h b/virtuanessrc097-master/NES/Nes.h new file mode 100644 index 0000000000000000000000000000000000000000..a5501ce1ab3b3b9baa3889f201a8b4583d815338 GIT binary patch literal 18460 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PAD.h b/virtuanessrc097-master/NES/PAD.h new file mode 100644 index 0000000000000000000000000000000000000000..015423bc8d19f0813101bb770fb170c259cb4f8d GIT binary patch literal 7720 zcmd5>TXGvk6urMg6?+)qCr%|;Rtz6d`OwR<=wbsrIIyj-RHTFzTN)&uT^k=6;hE=g#0ig~MdM#6Ydz!pf&8PlN+x5^Yl6dj`h4G;eU%K!mk~UrqDM=NdTe2q= z*^xthtC^K{!lTqZ#HJg_V|DfATrTC>=!@lZU^$f`q^QI% z8ymTd&KS=_Lp1@Vl|MF8sat6x_{J*#c5b~UFB1gxH)`RSfW}U8=FpH74w<-vyy0z|p#D~+PF0m>2dGH$i1!Q096^)+*7 zWAIstF)ULV&R@03(PXvO&~uj2oTd-c?oj&<8KB-eFSE$bQ$$jhV`(9Oq8WeFWC0`2 zs%hb~52UkxJIxlqiOJM6ph?~`VzG~ki;+=Hpg+PVWyHuew>H3P7vGdXF%EzGa><+C6L1BGK{U4hPF|xm5dMLXC z`&Q4?;7U%Ge07KRrSY--cRBmMzBl_KAZL4R9hhBWM$bd-#Ix!IS=zv>hV0c!{E*C> z*}lPPw}P32Gs}UQJ=hrzP|rHuvZLhDw82Hr8mKvou*cZC&*#zkxoSF42>oW#$qrC` zo6y$^(&8f!qGcOi9Gm%z^<53pQ2}KM`{uDZC2e7kEgS4Y^tIqg1N>XiMZ80Jn&2ow z7tbx5c&b9i5vKM-#6bCPM}Gr+yU@A=s~Pc_hj8ozvu)6CLrWFtaepj9FLOOCpISiqz*xEg8RQE^ocl2&w1v-O zym@Ze4YHb?^Lc!GjO)AF%(R_w`Qp6A&d&w7eSF|sG$5%gSP=ZS%*p7t)xZp5keC#-jpuC)VCm{Ac{ z-Q@hbNsz`IFKh}Cj!@G-9$ev;kdm4TrVBo**gR-l6D@O_c2IhP~5>Fn#jY!FsBA^Tea~cH?B9 z=c$~t8E;5PueP%b=w9#`i1WOo(N}3{96}@L@K9Om*DG08yBBp7HPNV96zIPqVrE+`Bs)uT_Z$DPr66=9HGu^b^G4uQRd6e zuR(Wjpw(w@JnT({jg7rAN>?0zWu^5{AG|B;CROHlP2SOF?@e9xxVzAs>DsB7hjTSx z7jIv9=Mc`dnVfq^$easAVzLD9HZ)C0Q5(1>zA>Go%|epJg@cT z2TVT$tmtz%7Q4`WAwS|TWrXwX1A{l>4dR^PZhIN#RmjK#n`?06S w>hzYq-wM~SGn|_y9A}93I-J8t8)Y^Q8jT>i+e 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 Dok!k} literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PPU.h b/virtuanessrc097-master/NES/PPU.h new file mode 100644 index 0000000000000000000000000000000000000000..a5f6d3e9da094f7a9ffbceae9f383e79fb2c1fd9 GIT binary patch literal 8094 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 Mi+Oi-#kRix0rY2f`v3p{ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_ExcitingBoxing.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_ExcitingBoxing.cpp new file mode 100644 index 0000000000000000000000000000000000000000..09dfdcb826750ecd4a9d7383a526b525002f5eb2 GIT binary patch literal 2678 zcmd6oZA-#X6vzK>4f+my6%(SGnL?S6DN;m51=XuiTPZ!_6Gjgoz51WKUFYsHwk9EC zqW8LUfBT(t@A>*%#r$21SWr|JY8at~4*I+waSIC-JaJ6_vN-ZTmsrwV^JYxAhV;_G zH8ON|fn)5TimQmfNqd{v#0gyVc=ur=tKRQbeP$SKz|p31-=pJg-fP(MXP?pFT0hUe ztN#d71(!G@LvkjGp67ZFiV?D|;vJyNiZD4nzJTCwR?Zn)YR>f;3S^MV^WMfHTZ6L= zjwNx{!HtR&JiVlxj`*HA70ZIQZ@!o3-^K^R=1VBiQ5H*#G2*w{I79D@=;B^wH+kGL z%2=NgS2CN{@F`xHy;dZ*;kOG{ovfSj&xKR^?=k}&o(XM!_vWcbxAC5tAK({x{$SiHF$FvcgPtn}8Y37MJPj4n4lcqS;%Nv=9? z4sgWLI!A+U5bh=Bo|FD-k9$yd{G8eGbmU|`w@$8j^k&ZscVioR{j70nOmcn$9z167 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_ExcitingBoxing.h b/virtuanessrc097-master/NES/PadEX/EXPAD_ExcitingBoxing.h new file mode 100644 index 0000000000000000000000000000000000000000..1dcc01059cbe18686c63c353bfbe438456d572ac GIT binary patch literal 1134 zcmd6lK}*9x5QX1$1^+{iRRk48p`I)i5k$ol)RUx1kbu}=Qc+6(y86u~X%maklaytX z-I+IUX5Q@g*SADqh7A5#zbdunBq;WvCe$YZA9N&*3Z#{^BUGryFOQ>H>J$7wThhHc>$RcPIoXB>{30rPFt9P9yNlu!bG5tbf80>w2*D4dotQ9 zOKaRQID2aqOF(>tH^SD{TghZQVi<=cknX@*9V7XUxd-N^9PE G9sdI@^@~aX literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_FamlyTrainer.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_FamlyTrainer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9ba782554537658aec90e38c59e30759df55536e GIT binary patch literal 4768 zcmd5=ZBNrs6n?(W#Q$*pLfXU^I>!b$Nyeyz1Ya^q&`)OaqC}iz3^Swf)79tPySB7M zJhLZAnzpy=?RlPiUhmnjpO0|+j=Q+ySvfqz5T9|3Z*bVbm`_I-;eaD|!-r@o<8|9K zCcM7l3w5)P22#AiEA+5|cbD{6*4`>sF`yn#c}@@^_G|m@uMJ8%OQO+c$qzD%%TcL|C zbrxfRGN&A+9B1|lT4``~*K=taaaqF}9@pd|Yq8LaaOqsjrH;?MW?mX$kM=10MAtHsY$3Vq6c5NUd?TYx@8>D)*r%6|=yhY>k9kPm6D*M^F&UyclE z%_HSVGC&W{vBhVJ#{r+VI4ivCUD0voBLVr4KJx(&IeSX~lbkT|jQaRUE_?VyHjdtQ zpI1kl2a5^6ss?^|z6rgw%Xyh+7JB#>yrvSbX@r+3@e(7vMI~O5nd|AZqr~eNt*@=b zYa8J$De;z!@LEc|mI+?MIMl_T%(RHWgtbPCXyv0TO2ieD6*?>{@s@MEYPJ2p8Ge1n zzt~;W$?#fxTV;5yM_XlhZAGz(AAQBNiXLr7vdZw8d$|GWHhz;83du+TyiB6H%CD9$l1eZ4WF>rXc0@4$Bl<52rPkELfBy{q`!W4i2( zPKPeg-^MJp@)?~Pqj$~GnX((eR5B}d;5v^mmwMuz^aI9%KGBhmbrvCGrZE|Fc(Q;y z1(&F1Nr<=HTF%;e8ZATK<_z~5B{BcdtE@4-z~*w?;LeD(BEA51!2VYEoL;m0o7eo_ z8W67bO<3Ey3#y&_YN!62(uE&y>xvEc3+^V~l`?p1cu8Zl4OoruQ@Vz5ERH>=OU|(@ IFs}l`H;bN$S^xk5 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Gyromite.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_Gyromite.cpp new file mode 100644 index 0000000000000000000000000000000000000000..caac0058c57586aed46a5eed82c20457e8f37a29 GIT binary patch literal 3820 zcmd5;YflqF6un>9#Q(53!)-mL>?g_J^-VJpnN#`w?#y)C zK=@=P?Y`#TIp^HR%-=sV^8bz7a?7DgWkW8cFFiStOoq}H`|`hGCaz6+A-j^un!J-& z@=R9cV+sF)EXZ^D1SU=SB0FGpEL}N}j#Q-T*!^_>iEP7mMPADr=P8x1ZdMyAP=`Hf z$OD;|eR(o*ekSLb*~w=RVUnvl1Olo`UmalR0!1n<%%<-q{xf{-;$0>KjPH0m$k$oL zyM8`v6?X@6Cey%5+gB0BRXh#xtH4i;J_T39{T2QcXDUmjnS0P+!>PFi&Nc8g#>(di zIQwn|RX+uvrkui49V^(=BA(`h=eu$j->UeT+NKPdea_jXP=G4j2lt-SsRfGx{Bu?t zUrdt(9F81{6TCmcj1w>>?gboMb_XYR*_P9_Z)<(Ti zDUU!i!Qwp)%VT)l2s|vqFLBoKuk4=UT1V9wYLE342r^{t)fKl56a$B3w8{?QVTf;< zd$vXbj(xmthnm#l5U~Msa%tKcCCuhl=nt_)i3~JVvZ?3|+(AC#j z6Ej$mn)SBcIdoXVc!U^Q&b|aDW+Nj+)QZO2*O6VJ{W>~IX#X7OdJe}V4~@t}9riJT zU5A^hu&W&6H!Pu;jeOMLgTu3U0|wt6idM;XF0!qoC&Uc4!JM6nN{`pzLCHhRU<;Vf zV6S;TPDS?GP{mOUyG5OK;OA(J0uM(#lvT7!?HAd?Sl%S#cd)+3qKys|?<`#xt^2a< zI#Ub%&F&hA9dnm`i@o@_tHpJ64eQp|vAuM*RzYfcGY%KXiRK7??)*u<*J^*X9aN(; zX?JB8X~<)+@_Uc%8SJvx^J2DP#UCQ_8ES~TL(gSFiYjC!50H(=xYOCTN5rdH$D_)l zd(x!tl)&@2K9uCSl3>kFUJrgh@ZK~+70d{EFUleim}g^}Ky7=+eN*G9jI0BB&EwsI zr-^~fr&x~#tg{k~J3gvUw`l!P%bm9i9`dB8T|KU5#g;EqRHP z^#<-*V8|0CxifMW@fcwR9pf!*w&A&o`_L}M6UUV6Y&;8bu=Y5rflgjaYEPdl@*d~= zHRrQZU|B}@he@|oMdO}F{49;6jgZAOp54euBwLr06vQPQ~&?~ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Gyromite.h b/virtuanessrc097-master/NES/PadEX/EXPAD_Gyromite.h new file mode 100644 index 0000000000000000000000000000000000000000..2194009737216759b6f7d20db090ba0a1977d742 GIT binary patch literal 1078 zcmd5)T}uNo5S-Tt{)aqP5$vPXC$*&rqS6z!h{#>V_R+zJ&8av!lHR%#`O}*=w zC04GI)K_@pL<~xvMr3NZEjr{n3~Ew5V?^dx5R(w!Su##}PQMA!u8}$Zi0McE*ng=mcYJL<^9%UYQl11?{ni1h&$N65CWt4fbZui@FTiyFP z=j?hZB7K!bMyPc3aKIXK_|V~CffWMY{!z-MkSlGDDXty8Sz-naU5wC23mr@%{)O(@ zurZ*c8+HH#c~NzgQ{&sa$1Z0DeA3Zimr#@MXE~E@b2!N-oy(2M_Pygd36TL$G!)R} z|1qWR=gs6MMV}-0o^4TMon<~${5G}xVX77Lrj0R%OyS!k6n%x9CaN)id`W3b|2)on IO(&Yl4Rrr>r~m)} literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_HyperShot.h b/virtuanessrc097-master/NES/PadEX/EXPAD_HyperShot.h new file mode 100644 index 0000000000000000000000000000000000000000..20fff03a844fb1b085dab755e431d5a7c7a8aadb GIT binary patch literal 872 zcmd6l&1%9x6otQS3Vnwx6F03O2zI4Za8<;(XjhWNfB~t&L_x$?SI2@zhBAi2cO!#6c=UOF}-hfy73_B>}S6Fr>b}FSz dxc1#np=^F(qFj{{xg>_2D{*YOHS^Nk-vM5BWETJc literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Keyboard.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_Keyboard.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f4189ae84fd594e5e6128d3370a090ef3567e288 GIT binary patch literal 10824 zcmd5?YflqF6un<-;(w@LjD$oBl&8T2T1t`fa7#rrhLneqs7M49gZR_cb7z^(l%ad4 z%s3&N1-9(&nS0MUcegY5@1JLM|F(zpK#i(Q4eHVtI-<|?lghM+qf;F1Rtpp)s1eF=BI{17MzE??+^;5+dSQ&++>hNBYb>p71eE-)T%o^a0nEky$%i zBltvfVMeNBxg@SfkTj=wnCeZ;$hXipSVPvM|lApM|s(8LNfu?u!sC0oFI zkDYN{?zfE zp*)#}<;81;+ooVzbqYMFjvE2C!kR+Sy7CD*8L=E9Z3i1i`ZaU7Y(0p0aj@zsqy82Gk5}cffiBS>`vM zVpNxL-`X&dq&7?mQjBu`I1PqrcUvEw(@n%&Re~jnrj;QAt)p^+iC7kc3h~hFH)0>M4_oo#CCu{GFbBbNAB-y@hO6L}6`v1cxF%X^ z4tX8(=9!wu4qZ3lSxTM@H}}ieWN&{5aTOP{Ht=e{UWt;p8>E*0wPd3{`7d6fy*=s} z)!p`j6kE7T>@~z}a-OmEl0}tomN_8ctSCyLSOQ|weHLINe8x`zLG-vN!Q+ED$SV}8j+m@L5 z%E`#msg>wbW8LXo7kb{1Q=guodw%Omp*JJScC7n%l4^z!-)Pw6R!en~V1H3K9fj-uuj&u?s6W+~c z)ae>3=sn`SM6HO}?De%QDJqUr=PL_tDsIjFt=xa7)ZA8*X~?+6bdu|-P#TJ z*q#Y#+O6&Dz2~0$@$UWe`w8yeaUb^-Re&w*qlW;WaDoe*^E}r3SLpNZoc{-W`xads z;Tx|59P<8u9Kuq9>#i{-xPFkKKG`bZB|hRkR?)(j95c&U#tu0X-Xa(j)uNwzEhxhg zzEVoW6#-uGT*9;X?J3#azv1n*t`QV#^i+okTu_L-Dm8>?*d7v*Id=Z zca59buvI5wTP3y)XKW^iPW;*=3;s~nC!%bt|IT)#zy*F_zndY~O7i|?s+sdgn8>OQ)WuCZk^`v2(KFrjid9=EE)UYD> z)9UJ3gPKRJt{yhrS^e3X>_pR|*r4K3Yt1p54R>*WwkG@8bX!A@S{u%`F6Fe^49@Pc zqr30z_uJWXF=W)a)pDDQ**$t5z3#ChmB*i6_h^wS;7_l6yht7Jr`NR)v6aA|Ue}Jq z)&gI8%g()tA;(#sTkP!C@PWPhJ6=25%`M;oB{n&0er8v>puJtb<4Jn+S$b8OP?L_e z70*yIS#5Ee>F_sVH+#zNQhLfa#I;RyH&0u6WOnXpVV7U-a8fR&GnVbLhlmr|(cCppI@9ylLZ3hL5-4Q*H${wDC-QmUTqi@BGHvg5?~ZzScc^ zsApf9g4G(`V$L-gIzwv{Gttz?F%3?y)H|j2PCb~c&V^cV?bk4eyov$5GfW72M_by~ zUJY4i8WJ&uCn<5e-~v@F0rx{rL-v|+=34rC9#Q(5bLUR~{C*(U@46{B9I8}aOGmy+8+TXsq%Wzo@U$!Y_&vkZ|GUVN z;<|2(5!ZJ)a2zGFD(_`WmSjafMf?@nYf4kzfXBY$vLaQN-?95lu-ZNt-viqj?o<|W z&&reW=n;P3Ma0ahVn_9@@^PX~Cmxvge-bk`M}}Oyggevg3D?24r`O=&IrRCFr?#b(t<`- z!LEF9Gh-$f@P0$)@ma;KiYIVP7qL3>8PQhott~&~zHGY;KNj@Tv6skq52M7>f|qu{ zEZ0<*oZ_hiAJJj|D$W|5y$MWVBr5EkrFq{1E_Grmw}D_5KBJ1v+GcKb3*DZK*HLBd z3?DZEdu5DUZ+eXqc%^LBlTn=!C$HLwOO3FJihd>Qcy}Q8ki{?SIk4v8t9w40A53f1Y>`O}t#&NgQ+kpsQzbTV=_VRg28q9P$dtXIJ2!x~sT5(Oy+W zFR05SnM16*s3Y||*Hxv;d7%=MaK?MwSvYmJ$4M+9&LPkdCwH!@%)m=U6>}ynCdE&d zG)BJfYlb>Y>&wdqODHZ>_M?hZcK&os`(umzR#U3yNPd|_NCLh0o z?o~zgD<--l-wWz^3jLxp^PGrz5i_+Ky@QkkReI8X!<^zML137acW*v z++P=oYgI1axx)^pl||g;bx?MWP~^GN%0$P-`GT_Qi0L>6vWCm^eRZD6qO!f>P`4e2FVLG>$U8$mJlT;$?O4;#Df$*Y z<=G3}YxC57J$6&kyUKjHdJWiY<=fSD@4MXU@xEeLkG-OCo;j7NR?~fB9Z#wg<@RDH zTJOK}=tqX=v19j{M^mg?{T`op<0QW0&TLn){0s^?Urx=lR@YOL-Cxu3`7QKHtmav( X7qy+PX5voV8U8o;e-OHISgU^l=wt?R literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_OekakidsTablet.h b/virtuanessrc097-master/NES/PadEX/EXPAD_OekakidsTablet.h new file mode 100644 index 0000000000000000000000000000000000000000..24a8c05d197b8bd4274b2be5a18bfe47016abf58 GIT binary patch literal 1268 zcmd5*!AiqG6rAe{{zHzf2r7s|Jt-|BNR_5gJ;^4`Az0ebq+%`ob#>lLHpxljC>D!>yGyu{<2S+!jA`!rfYtm!KLgFjT24%4sLq{jo(8S`Fne@4_PpC5T@L)`Oe zx38(Ih6woz_F?sPXLP$zx3T_Dc?xB=&aq*A#_q0vnXRc4k@|{zBTX%@vNxQ#3AK-S yH}zg0Q}%HV4ZfH~rp}j~)=%~CudQqLMxBp{R7*ik^9m~tQ%;JUT2i^&R<&QJ9U=6OJ=95&zdAEE%q= z#+cyxh!1FysR(;`Mc#I>i=%+QDyn!!9($a9l#sZ1hVC~)C&%;=j%lmUoiXlnmT_<5 zt`nZ=bI#t?A+jFl8PSD1FPv3D{{XMiAoBU>MGv=#sDe9VF?3yI=jftMOOqqgNdC?9 zM!~a3A2L!ZV6d-C#Gkqt5^Ql)=JH!Z&1J&x3}ZFR#po7O#Y-|K`EKTzjYm0&$++b? zubBfp#S=Ut(`klZGC7U+F!K@posz}4z|b+yiK9=owE0cFMKf%E%JeC0t_3L4OlzSE z45{}o`?fgC&R-0xhhiL_1F4A6YF^=1DG@o9I#V^;s@L5(f*9+JL86YysPd(2cG@_T zuQkp!j&=U$Pw1MRFgqn`>@IiTAm=GooTr56RAVULSI-@VtFb_$=$U zX?K}+Hk|!*WHSl!Aw4t3&$qwo-^*XhU(4U>KR!>=OUSeDJg3w|*D2;PRo9@c7N>P5 zeUm(H(yP2Jb0{;ztanY%sH#Y+HN_HrR9scI$WMapEXqyBDpe?}RX!WTn$e=|ydo53 zs2Gb0c7bJXt+Q7Gzt`W~Q8EYek)jN%3Mc~>1!S2{ z-et_{2Kk<$I8?2dWmkAIj(4-(CoGxr`ou2`3QNZMv@YrE+)jxe6yq9~=muFl(JyBj6w&GOh} zlby_)H}B>1;{e+iyV!B6H11%KF_y@o|24!VuWQ>J6J04iGN>2|7nsqxGfXi5=HQ4P zTD)LEbir?QgcX*Rt1(85+?#&R0Xc5Sl3?h#4W8MnC)9k}MEEmkJ$8vMKg=x zsd1IXY63%och;Wv@F%VokD0V=;>i^~obq1tdrQ8efLHDj-u4g}w%SN{K-b85t$s^y6N?c%)NkgFeSsiERpGEa>6)hjnILBrdx a*%zGeno+V74Wm?AaIU0#d0XYWJ^KQoTbw!o literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_SpaceShadowGun.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_SpaceShadowGun.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3c20940ee378ef19e02a9a08ae92e7d4785b8617 GIT binary patch literal 2972 zcmd5;ZBNrs6n?(e#Q)GwWF(?1AxK0?z{w;KC2Sh?3mMytBs$I3VaJO<9emEcJ>1@w z)vh6t+_c=Rr{|vM<(zVJ{R|IpJ;ozbRfsR>;TP8sV}$>82}@enLt{+pI>S$#Vt@c| z@Ck?5MhnO2kh>oG!&#E^2HXGNlS5;?Og#5AGM~^NL8DNXX1aibK2=(4}Abc8F?9MT}hLrG9s~ zLRiJ+j40!Ght!?reAYG`W#`pf(>LPS{7G7AixI+YpBlEf>#;YVvOA?8=Vh|mNNu}x zm1MT)gN!obZBg(KtIzTjz+wo@sWCgYT+wBnL%ycXR-Uw=T9Q1o6J62#Wv5i_3pF28Rw+*Q_Ot>AFo}+uOr#Q9hDlg7e{afj5lAhcnb6x(8$*_FQMb!ht zXPY~nD9WYwq_U%L$&|C-pnOO9%qPq#ahg}zzT$5~e5c|=?&f7LP6j`__^*EURle=d z9Y1@~y+st_dN+-f$Hl%d*8Nqq@>OxCXq2pkOk^X_%K) zVVZ(Quc7V7S21%fTvk&Q>6H%1=z~aiFqO##QQraO1uR79u5kICZyw&DIDbM6!s^wPW2wR$)EQPjAa;Q2GI511L;+ai_)C*7&QjT~+me8my`s%JP(Sj?y>-db^LVO(g2mF4EPvw<1y1XsiN@(FHWO}&B zlWpgF`Uq~Xkj+=P5BCZ;uXpj6lC_rk4>Q_AUUn8dweaaR{bas-K_zGP@446XaW&`W z1u#d*%{#;LSM-Zf)JOUO+8RMmXUKoO5B`YHeBUycZTiw^=Wp=z3Ge$$?J!=|s(8fx zM8pj>;xG|$TaDODLhK^1Wsl^XUgO)B^t0*Lt}@ok_Yj;l&GBFbu}zY$^ejJ2#?G<2jpKUC43jRl+0B@D`2pTPqombD(#E!qbRGc-DWrJxygiAC$7e3KuWmQcSH~DZ59t`*?)t2hIlU72xgle-?-j=Tno$PV z3=>3aopy?9k4G~pUcFM>>axmo7}r-$-afzSa2{?+jVX4@&Xq`Li>*Fpke$Y+vSYrtJ*6 zMs{!7Q4+V)$L^+LXOng+bQ{^XRG2jtu4k+Vgmax^RAa31Vqe}yBWiUKV`f@<-44N> zJ1Y)n)mQM%Dl2!d#gB{J7I#NVxGlLE<}65vdOva*=2#^}J;N>{&z-`EKEv@I)x?ga zIr`+DsqlHUY-XK;_vNPSH>Q%#XZYVKOs}rq}2>)*PL~*Cmq=H>nAL#lNY=A zpMRRBg?{Ot>)@-Zo&DGNRL#M{*gU_eW0%+8qkAhT-{RUXu|92dc8(Tm3D4llGbG%` YFP5Lnoz*FAW#6l}RlYk{k(E0B17Ynda{vGU literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Supor_Keyboard.h b/virtuanessrc097-master/NES/PadEX/EXPAD_Supor_Keyboard.h new file mode 100644 index 0000000000000000000000000000000000000000..cbcb9286e2d471d314f21e754d85379c89601688 GIT binary patch literal 1010 zcmd6lK}*9x6ols*!T+$w>O}=nXipZ42c?xpP)}vk1`HG%Y!syQuWP@3P0bb*Je9I+ zV0Y)u%$t|*uM_RxI@E!=a!U2CQZv2D=~lTum2vW%C*16Eg_JhF_ARmCYpf}`%vp(g zdeXhFbgfa8;OLhG+hkahaYl6khl^?h>%w}D5pBEqzeWqrKCG#ZO)JbU*Q+W{N9^FB z@f*;k%{Rs@v^3S=DA5OhK*9VI4PlzIE4AS2M3}Cg^#Jc0<3XS6RA;(~kcs|6U2dTo zy+^zksO1rx`(bgYcwW7A*0?FDnpxG@z7u+0chc2>b%)DLH=sPdztnvMcg^d78CB8C Yrn{7xdD85ou&r2-Q*e{lYRme41=RU=<^TWy literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Toprider.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_Toprider.cpp new file mode 100644 index 0000000000000000000000000000000000000000..295bea5555eed82d5e4f3adc58539b00f4990bb2 GIT binary patch literal 11298 zcmeHN-)|IE6h5yt`ag^in{5=FT?(xTHT?nDND#XvK(HY#ZGoVrfkhw`5}$qZ)mP)6 z=7X=k8uk0`*|Yb~%-xyU?lAITChhF*+jxl3lxF0T+>-0EENgPNfZusJFB?GeDgFl1kvX@fSML8z zfb(710kwf_1MiFYOXc&iV|H?5C{32uA!K`+8{Ii{e<1)(hZ}Vs>^7 zoE!4@>o{_D)WNI^xVo5k1Z?!%8GJMQB8AtWOIx6oCN(?8O`Qu{ToAz!b|4!yPOywzrvTLb-j5%WAI%Da!ezV32C$JK)OlPFq9CtztMnJ???pkz6^EmybTCBeig=sw~>5p4Nc>bD-Fq zuDUI)m|n7lOC@hYR|_pk-W77H*45cj6i{7Vh1KuF>YLM5ucZ|yLQYNUYOy8ByQmlH z=;~ZfR~s(QJ!n*0XIffwBIMMhwmxe~@~)6mwP!61wWXe<-u3&|pZ)hYSN8Y5`DNqh z^v9Pwk8YsdGNO~p)&;-UP@ zs1{cmj1BWG=`2AF*QB+vBBceq{c1ruRa={{@Xd~nUr{7-wx!i6r{~HD&QsgbpvHtM4faM^ zw+YW`D@!HAEY+M|+KLH17k#QDp6zq9KJy`Rn(axrlPk}S%%Ry+Sk2SybtbM0#{Hx2 z8&6~JsJzPiJ6U?!(;4dleLT$D;SOD&Eg`ea$rtDXbkQHQ=%Jk$<^CFy6+1H7HS0c% zRYQDz`L0A!4)!4~Vs-~{$~wMxu@7eVaB0+|Sah;dQlEe7%f~t58%Axj(sgF3Gc5ZcK*p~DJqhG#WpREyW`(_Zoo%Pf zVK=` zmOr_+_**^Sc3N2qp~c*Uz3A!WOXzk@zLuME4I0!jWvgJniFQ&gg-4X{Ok_{z>Qe#P7pyC=HhhzZx>|=^o460qF*pP#?whVc zW7nY3@$dY^w5M;aX=S5S8KFDiYW*C34{6$aZq{c>fsS66(aqyIj9GKYFVw7dFgn9k z#Q1ea-4u3RxTl&!reVx5Uc8s_3pG9|Kc4GP&M(XXif4$Rb%(ef?&%CATEzdpX>ZOM zDs_DRZTP17P<1c#3cRkKZ(7WL<>G+nU=|VU=VhN|D;$lx>J91vN5hO~o~d_waohvL ixqRbI{i_}o?^k&$>NVr2gp!02ll=4kz&&D}&g#F5eKZjO literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Toprider.h b/virtuanessrc097-master/NES/PadEX/EXPAD_Toprider.h new file mode 100644 index 0000000000000000000000000000000000000000..aae7862f2648b62d1e182aa13acaf3b3c44fd59f GIT binary patch literal 1274 zcmd5+O-sW-6rAe{{)Zf^2r7s|Jt-|Bh>9s#Pi6CQ2$nXOZ9z)^x;k$++a$OIZgj>APfiYJZvl&iN;~3O#*JaSe zxY(V|GnNzP^Gj_pw>wQtyHFvgV{2~hCbikkH1bS4`>4U4T%T_XXwc`pQG<8^CDrxch>5OeGU}j(0Ck+> z7**`zI)`5c6`YV`pU(jED44EZ%{$+p%_IdvtYwLiLQqq|bI- zd6kvJM0rR>mRLB(`~XMnEuhOA=;A)+)HU>%u#J7AH@gY7I9_IGbqlE=-W)e$`?bT# zik>;Xosx)OR`9~7#4MsLgnB{QOm>4tX-j-YKfi|83C_a#Jtz?w6xvg3Q)BCF*A9xd20IYV($o8!zo{Ri-}EESuOg9r-z| yH~p!|j*0es|Nh=NGK+lHdHbpQ^`4fUD<`zR>fX2*V=YAmd+=$IuO(V literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_TurboFile.h b/virtuanessrc097-master/NES/PadEX/EXPAD_TurboFile.h new file mode 100644 index 0000000000000000000000000000000000000000..bcc15d4ba9bad14c893b74beb030c4ee9e3c5218 GIT binary patch literal 1010 zcmd5(!D_-l6r5`W|6z}@msThh?5U*+y@=R=dXkMvVWF6yX)ofhYv;WrW(6Tf<*^~z z%$u1v?{s{`{Z$tob!8CY7hA;0FoweqQkWZ+q*VL5x5UKPn(0{VSOG>@V2U?uxQfhKLNa z9(QKXobPhx^J59qH)b)TRT*5NghgB;Km%>Oa)zj)2{Z8_EJbxq8)H&e7mwtq0tW}U z#u;|8k6Yz0&0Y~joRh~kXNU~u6`vyGC`X9X*8k;B@rym7V)e4gr4 z!EH_#FPttm`{z2}+Ixy9;GUeWImCCztOl|YFm9lREbHtrU#Raq)QPE#d)?<^A+@`# z`$Dw%`@m6Ulw~$?TAC?CZe$7{4o6)3Tfh2zzxs6L`F~cP8(ZZDR@c9(7qu++4y^VO zijs2ECCg<-mVr?f$WIK1OW*y(VJntiHSC23o_Ld#@XRPAqWU+Y-->4FoPc=S+`WS% zMxlDcW=MW7eY3@}tR9);DdOcE3jCjRbHrJkRlL_sM`=PbEG?>{_wED zaljQ9tBkBGd-S74C*C#u(kHeGBk2yKeG#xjs&sjSZ)*C^=PjDS@c>U3Qm(LUwv>+! rdnQP9gGD>8n`2$^%XvN3X!M(77`27lSdl?G8$|jZQiY_t!!hy&L1pu* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_VSUnisystem.h b/virtuanessrc097-master/NES/PadEX/EXPAD_VSUnisystem.h new file mode 100644 index 0000000000000000000000000000000000000000..fcd074bc659e2deb95bdbeb3e0b06a01987e8d89 GIT binary patch literal 846 zcmd6lK}&>C6otR7!Tbl877P_cfvskk*+yhVvkKE$2&FPw5aM62&bubPpn+M%@VFwE zbI<)e&(Duz_U}wMFshJy5~kcyQqb_OYFYC_`0vN1G;-}*VvZ~0nN;~S1T1;rni&fo zEy2I?iDpWatXQT+ zpuI{PxNhTpNK<3z`-V78VNH=<8;xvNfcVrAt3ztw8dHsq=_{4!JLKNtEG4qpa#4od zFDLSQbU+u-8pHc$pGIHujE-=$VF6oI?~}jn**rRyRqWit-UrZ^Mst|o9g4>Az5`js zN^m`aHyk0~OCOIS-fMKT5tc~Ym{=5YbxoUSu^ka29MZewc^1Ef;1$QxwK72LecJ{_ zz?bqpu)CIfOtFy)z+iZ--tO1bofI(Pp%GrQ`~uC4T8&i89xkkX91=LU660#aG6^W5~5|_X8OgGwSw%X@9sTggB3ZewfNm>sJGBk4E%rSWZ|* zMc9#ja~YAxMZaE&SJt;h`huFdJYogripUs6^fFaBte!(tG52Ag?CfTjMA4VXi;QMx z)Z^P=>3L)k@2Ija6PLiM6H_~*q-$sn@tY>1#0;E4AF*|L$waqCKMmhX^aQ$n>6%$9 zwX}gw!Cid@+PME`b$^bU^e)aDi-OcK&aASNS;9GMd3i$1qyJ*Ln>k{6)!=anWNWyy z`O8fAaU6_#`Oa*2vn31p5_qjO&1OfCOmtjn&rzqVsIXj>c^*h}S-VjI4DhQu^FcJY z>$&s3!SUQ=v*ve1vv^KVA~AT`f?mrSk+7E9{2OJGvU&XKUh`NcA@z;xhGLwR$0D7V z$K%9d^eBX+7OsGqlb}D&?A1jaYbn%&KF+w4z$WTU+f*UH&UZ|9_`h{cjdA(ozxU@9 zzc*-2kp=84_O5}`UGO+I)t%?Y9a_VzzHVmkZS;^0`Uvc%O&{gyiVwHm<=J5? zpv#d-?Af|=dvt=cxi(I;d8(@>7*>+b$QAGd(Avh|81MLdkh{ye!EhCKwnF*eI*N#{ z;vOq8OwWiu+8yX*In}FKc#Gfa=v@3|6{51qRGQYV6UTK@^U@PCb8d3&WvupRHQ)Ar z#;O;>wH3^n>QCPM$`%%IXr(NgC)LGOCp5KJv=y4P;h=A$uf02_ z_I?if+Vj3KEenfu)5{S5e>=>(EY9$Eth=7)0b${|nz(nSH3`!+H-t&T-Qn}ZKWTBP AW&i*H literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_VSZapper.h b/virtuanessrc097-master/NES/PadEX/EXPAD_VSZapper.h new file mode 100644 index 0000000000000000000000000000000000000000..2952ef80734b6c776b5447d1091347a61125f97b GIT binary patch literal 1250 zcmd5*T}#725S-Tt{)aqPQT#v@>XT9tK~%gdejp`jPYh@inp3Q$f89EJx$_dC;)_t0 zBbVIl?CjiT_PK$@i)AcXRWYuiu#PJXk)gzx%Ru7=G47C{U}%i^_WvO+d0mUZdBjc^uNeP_eFAS-l?9VXuZu`aYpgT|N!-Wq#MVKgBt} z9&Q5sg#D%}GhJ4XoSbyZ-=`&xmioes)x!i^LBXeYkd%``o@!(Wc-3KKf zMEU=(hj-gW^V|4af2h$!q?|&-$myf+bsjdyBcr4)(J7NvW%%wg&Wq^QuCu8-{{l;a BoeBT| literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Zapper.cpp b/virtuanessrc097-master/NES/PadEX/EXPAD_Zapper.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2c7537d3ad22099d7d015b3cb8398d5961335649 GIT binary patch literal 2934 zcmd5-ZBG+H5PrU%iT`0gHErSxMH2}|5=a#cLFP7P-Oldz zT3R%LY_7fB&CNb9GqZnwKgIo95AndFGWd)Z&bT`0!`$f-l{~KdrkLRRfm3|L5i-2S zN9-OUJF)zC9~5pqn4^n#YX*NM5uU%kc0Gx!J82V!z!ArkqgVA$GAT4 zzM@B@2HzQbZY$J8HK>l75>LzWD|*GQuBNq;B9=NZyn58oB-O3RkNLLy54htl)5@rG zPsJZsQyJH=Kb=zIeNH9&>_>Iab+9@$-^@6`kXhPECuV#mv!uL2_vquG#Hj+0$Sr0x zv}_$VhdzEEs}yq8ZjssM`edE^I=tJ&H^c#T5H~wS^8wqOi94J`?>UK@*u^{QT(Pyh z!e3d_m5*_RwNxK>atFuUUuwp8;v&fQ|2r~2V;1*Z>c>0Z7|lhQrf;cPlm9ujm2+AA z+_6e-@=kj#K3%*T{wtZ<&dGFw#oiapDRDlpKZCCMY*OnqyX&KHKE~Ol@@}7fnP11# zH_jf{i|kV!pMf>rdrq$Ymhg<(l%I5hy5<$0eRjGIn8!6=<(GEGYj%&xpQ>S3&hKHI kC03;fINr{~S=omRW}oyh&R$JsRp{w--!gmlPM^Pj0gbnf)&Kwi literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/PadEX/EXPAD_Zapper.h b/virtuanessrc097-master/NES/PadEX/EXPAD_Zapper.h new file mode 100644 index 0000000000000000000000000000000000000000..47ece1d4fbf387dc90850846e539c9bb42da36df GIT binary patch literal 1124 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 fD2*;M^lh4xGVm}QFY+Dt8d92?!Ny6?v$zw literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ROM.h b/virtuanessrc097-master/NES/ROM.h new file mode 100644 index 0000000000000000000000000000000000000000..9e9e771dbd2ddf8411e7235179dbe907c04078c6 GIT binary patch literal 11126 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 F+<%ipReAsb literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ROMDB.cpp b/virtuanessrc097-master/NES/ROMDB.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2e8e6aafd2778337714ba09a2cba5462f6673b39 GIT binary patch literal 8470 zcmeHMOK%%h6h2D^iT^Nl1x;IMZh}B4Euh41+9Ed%aiR)R6eWHnCJ%=^T0&YO_AL4z zSg>Tl3b6ph0$8#@0*MW4*ufG3-*?Yk-#gI}1(!+O zE!ocsuGf=abS2l2>%Qd?%O$yE`81@1Z@Y3q*5nl{?X>+pO}i_5Sl0&aQRp^6xiWxq z6BOjSW2LPI)cN|BKzktDuv;;p9;E_(OR@>{>fo*VDqRuZ3V5ynmsQ}u4=MdQPeO<7 z0W`A~=T&Q2e{QqTa}Sny#ENYy!ybCYVcXxTNlU#3>f5l-Yf*#(vDyT->Nn5ZMdhT- zBeJIOt|6`>i!JG?|1wrFTAOmwdW164F|J%-*Q)b2meBVT@ zG44mOo;+f493s$lu%gjj?|eX7^+P20y8d{0ne=94J>G;a`#@m}ch8~fT*Ost*f-`+ z^M&~dpP!kkIrUD(aFwoPE^edVcr4R6rSHn9TeGM{^jjP97z4zogKKPmiREQ{>yMn) z$cDu@^cyksG3qg)B=Q~1xe4pZSN&0h%~%08>lti(d{FX;oU<05h3^>&by!Vlp~i~0 z%>2CcmHF6wZ9cI`drKV03#oW@wxzMSD|fBb?3y%nj7VlyWT|>1(nYoA4>h3vtnnS> z%vcxUkW-dIW#w}iAIO0e=`3NT3ggxUp80Tb?e+HkC+3|OHCtTPWLJhhEhEp%(lIjg z#|Jmf5@P;G_~J`k7w%76kNC`+LIt^jY(08~Vysi^I8KxsP_{1lE*5q3UhD4TUZe6Wi`J%ejZ0T1*HNQnI>=Txtxd%o*e#uJTDF@pvvqc1 zUsH5ho%HS!t}i8b=jA-^vUSZ_LQk_>?AS@KA&cPlR>03mb=56f*XB{n7BKrb{Ty9! z1d*e!Z?|Dh8&T4)zV(|`$nDT#GYverk2wckEzAsx$qcls;-&hPG0javk zI?FgL*5}%DI6uW$=cr?g&^A67yV#Vl;uiYTEiu?h_{#CQ`QH3y=NW32&V-dj3ZHOZ zoPvxisO}4xKRbR87y z@VukEEbk^AqYR9=Pa)M6Q0#%W10U@}8&A(EhSOIG+AxOv9-x%`uAMroX};ythyrq- zkf*^*EhKlR9W!PLPdE>_`AL07G@}6%9d|yQ;&pAf&P^R7LCi42xL4e=UMbQ*ZQn^e z(L2xFL9VM!^lb~?Ba*w8CwGi3i;~74d1=h{^6}G|u3ALIX@+v@JA;@ygRADZo2WlE zznI_6x8?`)5n}OI^PO2U@0+*H8_B%Ki9G5~Sd6WGXs5X7GoPV)?{b0JwT*b~*x1<$ zB3kKm!emFSLMxqg)I)sk&^`qeLN2a5cqwP$ZMVy(EMhnk``O|V}23`MbOLa zZ>R2A(~~W6)kx#cfl*KCp}zE&t1SFJCNJXCMhSo4Yyos*tpP!s)-A3nHwf(Ox@1fRd%nr6StVFD>b69zj z?X06`?mUE@-e*2n_mgZrIFTM@o_Y-j*C6dvEB3UqhHj!OveUP(R+qt@6B*|icFtMM zbX9rPzVtLvW5dO`R{pv@GtBFDC1eICIlkCo^|Z?b*v2>y;)&2;PSenAIhmV|$BEOa zo4}68sRpEmqf-t4h%|>{-8FQZ;pjApXxQ!1Nj-TO_>lW`p5bTXEIa}5xt5&~HTSr$ z;5^yFm1j_lLwd=tb1@h8T#e_E?w*VDUGD@~GyxP_!t>)iZB$;UL3;X)q4NeXWA@}B zRK%C(?u>4(WF9G=#ndaH)Bk$hernK)^ciwmYhvtiR)5r>4R=58bfFng{F|QGP4v)R zq3dA}?}048eB^tniV*Lmd{Crk;rTXV{!t;!DM95QH@ZEid{o2dMR5Yi9mgPX(1A{NIK#1eFFGGJa?ZQle=NTL`~%JnrlkM? literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ROMDB.h b/virtuanessrc097-master/NES/ROMDB.h new file mode 100644 index 0000000000000000000000000000000000000000..e87c1fe1dbaca4597591314b3c5e8fa97d7afd65 GIT binary patch literal 2150 zcmb`I?Q0W35XR^03H}df3dMjJ6j6zxkfhNn(S|f4ekyru5^P?$CT(NszpnnC-7J@@ zxl%!ny?vXVd1mI>+26lPRNxZg(YAa*_3~5SNs$7NY}`of@K2A zuJu4Xw6eXjH}=+ETXADqa`I;7P{&qbtP@K+$d!<##Xb8vooo&lu zVAN+6J9`6r=PZUuW^onJx#q-h6W!-Fwn7fVf{R5T40B86^7Kk-dPgqH0H4E{j8&~e ztIgKu}{bh@N!A((Jol^kq;J9CPiCZ5!M^$-Ga<0cM~F2 zb}JD$zQM&deZ*=)>mqSZ{31Tj+A2J2V!e)BJ@?%9i58L{GAD#0!rSk7-Eg+%WKX%B zW9`KzU-=R*cSwk>BX}=9{3IGa=UE+NWbR6MEZfYAKr*3;*Fj5mzYosU2Jt#aMqHjD zbw=Mu+X~yt+-{A!NwVj2nrBx&Dqnf~BX(xaj<*uxd`woG#JLBDIxwsbiZr8Pt;}AV z8Y2G1)`E*onDO5AVx_d*Zt!con_+coSz&%zpBq2Y#m{_ z>*`EG4#v#-_5<6x@8LZ-BGOfSZjcN4J4QZnKBsX|eA3&gc>KMm)%1;!rcf^wAI}fn zj=+s9HswNb5_A7QwiJQlCRWd}S+_(VqmJ@-@i+TL2sUHZr_L@Z1VM4%nH%ZGDZB;yAZMw Xs&{H-58Ha{_2!4F`viOsd-MMQbnG%` literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/ROM_Patch.cpp b/virtuanessrc097-master/NES/ROM_Patch.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cee120f40d61126615eeda4e533e13ffb14f7105 GIT binary patch literal 21850 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/VS_Setting.h b/virtuanessrc097-master/NES/VS_Setting.h new file mode 100644 index 0000000000000000000000000000000000000000..63a9fd379ae6f3de59871589a0e7cbea11449ceb GIT binary patch literal 8612 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NES/VsUnisystem.h b/virtuanessrc097-master/NES/VsUnisystem.h new file mode 100644 index 0000000000000000000000000000000000000000..38d3a2e9aa16cf4e1d6e9ea0504a995c61deeb09 GIT binary patch literal 868 zcmbW0TT8=05QWcc1ph;9U(^Q$eN+TBUJ9)i8(T!Av^CN|jisqK#J{e7v)PKpidI6h zVdu;_GiP?+-^xmLqfFOISOc|rnri4=C#tYs@Wwh&jr|IH`>GO)*oho=Q41>j>=d5l zpB%GzT266O8z@y#+(p0bzNTICJ4L2x_cYMGt0mO79_h^by5ld`n)=$&PuN^zkSW-| z;07SOUy!p|OK?7Gh$Dr!#$0k07~T{|RNG?>o#PSR)^Xdqj`8`}VPD)g0M}QCj8**2 z_`8L7%g0(e)fw{$^gzTsn8aQ^#uO7hp_RaqfwUQaS2Tv)IWffHqV5iS12QjlH7A?Z zdg!N6=%x74aFZFkj$-QV!k%au7b1EuIthu6ctfpt&FSj*IG1)R109h&_TAVCo>Uv5 dJFV6H^yW9MVxEaRJ$5?+t@DIh!jt)L#|KUHghK!T literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NameTableView.cpp b/virtuanessrc097-master/NameTableView.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b8c891a6e48900b33d0f3e50f86bf3854f11aff9 GIT binary patch literal 8880 zcmcgxNpD+K6uw&{A^w7!N+Cm=zN7ZOHYi@b540n7auIEsQ(DtX1e%!5yhk zma!Dc$J`>uY+=qFw}xYT!00QG>0rQ^68N{lb06|-1!L3XUWdjz!MI+0$Dog5QpI@- zlpCUL1D46wZV5;pxhkX~7Mlq^Y4WVVGj0TQ)5a|d-VIo&4HR3T9!kSm>yX<#tpa;o zaYfjr?iO$?if>N1LWXXWVl|_(hLP&Ep4NnT`3jyFTv`0NisLDlgEgCYrdqe5d)|#k zZ5b3Q30nJzgu{_3ErLb`7AS+>t&U{$I{I`AG#`y9TNTJLcFP@VRak-%)9O$P(Jz2A zZOZ7UHA3{0m~@X^k{J_S$dR|VKpl6aYoo|H%cd9I#mx6c=dsv62fga>_XDRO`v7bYFPJ!^@CZ#==+%YsEN;&zh$9TU9q=_GrRcKc9M83z%7lq|8*zG*>~BF;PwMeV(IOsVL_C>>A>1Hm!@~75BPW zrj(G}B0QYe8)?^JcV^Q~oLMh0hlDdU-fzOvjJ!#V+=H(iikw z^ADazpB)&^=J#QSG3~l@0i9GAFXfHZB%h6jkz9q>Jc zcdX9d2D0}h!!kegj??@Ya_T>B1{KU*NT%mXOgRrO;g8ZMxh}wZRawVMxLO4kYmkst zEio^{u7=4ld})Op@r018W);o-qfomBZ0@3l+yljs9CKL$ zr`o9i%N>E9myVLnk3@+y?qP+aCm)J!?t`KtM%&b3gChK56g>;jvxPWeU9}TvO6g|Z zg_xH5ZU1^x*IKR}tcu(CHQ*1dz&ATzA4V|g_t==pe3+};2V^yM&)RJt^OHaTWN+oW0m4oAR%UPBZktb`YE zRE`EB&+T23e&1aqHOt+ z*>D^hUx%f_e64k*jq0rk=|@R!$=O<4*?jMbTrrdUiH)s(7E!9ZM?gEH6|4uvAyDY< zh?w(33MF`78UGbL*S_F!Tot9QY1tKDH^1)HO>NDpvw*zLmF}TLQwuR@8vANG#F0M4 zu9F&ssBxtl7dj!bo(8kcUCd=397JPVP%t^T-cZJ4Jf&qQD+Ohb^BRR6#)oRGwTfK_j7 zR8|9`vRW9CgEO1PnC(nF zpNKYY-SM0Q<`+@Lvzpx>htl7)r$gWu;_nhgMEs%WSnjfpv#_qcgI`m!&#x!gsj` z%?g29s(#s#t7FtU-$uVgUq)X?zwdt1(C53z87*0-G{fh?!Rn}2amBk!_-n1p`)T~h zJKSd?!oB^LReUwf+Q4|O8yuOec59ef#4~0}9l6n2U412CI}RU3KjN#x$N0|h6}~Wh zk*SHV2&oD0sL44{=UqQN!dN04LagGT^xO@(0S&Y>rOw>5d>wMngI*I_nn&fJ zjo-mjS{1BJO{{Q=gx2J}JBKw`qlvE$mx1{tDskKAn}g&LxbW?G{B90!FLbz?H}u-n zR&7?}ykiOaP8D`o77t|qJqejE!5)5H)7>81P0dN~#r;l| zf*g{Pup@~eMYYnRy^jJCVXMY{I8HMz5#j$t2#K#T!aRoXkp; zD$PgCLnxPd4H23WKO;)>_^W4xKG&aS3AkGak7cavnX-``E9kIK;-Iuqo$XmwkI~^}eT0G1IHF(uVEF*o$XelT1NasY4 z(kw6>CwAazI-Sqtq#6&e)A`?aYCJrrxeQK>*K|&*@$j6OW7E)!GC8Tn!*e>D z!AWhN=6kB~@SI*r;lw7NMye-7N!y7)^mm#QY!$> z;QrdK!ulZW)BE-3X}z`Wb+Er;Z=UR{uc7WQATRC7S$%-rfL679$J*Oy_{vjz4gIdh zE|0Ojh;>k_q{Da?=aa8?cY5sY$9U-J9RC_zjU?rSdqI@r+MP_`cbV7<&V1xhXrY-S~38 OS;E$L^_Jl(_Zsp_e@H)l zAKI*1OiD~xV0Z#@Lg#~m+L7LalB+OoW5>YItvfOC%N=YnXZzH}1IBpBXguq&XW~7$ zr#*aF!;SX8thTG;)%&;>5jEHZC`;+yvaVuGoBUm#){>rL!~$i2$_dP@H^qqSV=TPj zyK_^V4&Ao%kzJEZep~q-72O!J{|#;+-^V)pw~IRObyHqkwY%XN9j&{2!0siB?ZM?} z?$v;~8d=Y|xyqm!M#g^jw6FVmq&M@(GjfOQV1@kYY_IEhA}gG6f3`g9%eaxHqe(EU!E11tWw497Q4su6MqN1 Jo8IH5={Jhw>F)pl literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NetPlay.cpp b/virtuanessrc097-master/NetPlay.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7cd03f458a529aa470f11bc106fbca4cd0caea42 GIT binary patch literal 43714 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 T$M_46i-^YgJaK1v9OwQALA*E! literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/NetPlayDlg.h b/virtuanessrc097-master/NetPlayDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..f549dba717a56f63f9b92b9418fe513bc11d63a5 GIT binary patch literal 2152 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%0D5R-_r9r8tcU zGaj)hvQ*X7bcLMvr#-lLstrpo`KzTF(rl(K71!_Ige4kYq&p| zP&qr<@omQ?^Cmwc_j!d?t^Al}qds(5;ep%7$#Y!y@fXkDNHSPm=l=RiZ=Gj8#Z%+k z`&r~(^r>26ttSQWNiGu$V!3H-UMOx5CS&DijgC5j;tH*&+*1>>D#lw)eK^&;%-E`aQQj-tq= z11#H^AKU9(1jA02nDvwg^}C4;2S1CGVxHaMGY;m2ar&5N_k@gtIbjrI9!pF(cd-}N zu8}76e*Ri>G7{@K&-fN%VavRWr#qAR#kOhCAsh8mTgAP*sl_ z67L?}#FIyOMoAq-iesvXfyXBtH;m)r6^!XrC}?@amDBJUezYQgQ32oWR3G=)@`Qj^ z5e~o|n~7!E)CFf%`6=s0&d*~ebTY+{LYho($>Vd7g8ZI)vxtviVR!N4$BI`OPGTLy zk7=IpZNwtrloiz|(8Bf8!WomDSK+2Oh+S z@%OO!gcbJ?AIrrEuM8W_EHR=+$Xd-OAEG_a*xJnAa~ec_Q1)0W$j@2Ny#TzmzVU%O z$+Cw?i)(dlSjnQ;y12(RaAyZUosoLY17AjRlz`9*i?StWbItbZ#J_Z%Hi49dd*2zM zG~jKx<8aQMP|^;Db8g<)+VDLYoo?))S5?%$hrr(|dN&RPNQCwje4-f7cTY;?6myd>r zanvHM(AO!>XI^>0CD$Q8=qXcVNA`v!6q4T z#!B5&OzZb7hA~~JHKWM>0_uFMP7XTN%)4lanWSF5%A{Tu*YS4Aa-3{cz#`J{PNwiw zK$c^kFPAV~KK1eGpVOc}9x=-S*@MvLh1Q9lfj&vMsnJ5wuEtMe z_-r%i)KuI<`I_0d;V|jHqbY_z8AjsIFsr-c>Vql-b^^-s(om;P!WQI5EtZV90_>|C z*($K@WR~Ssj%X_)UdHmLj;z8!O$e1;m1|0J2bMP5 zw~D(J{XW0PJ)a%YLb;?b;oT{D2qwLLTGPW9fNgcryAm37Q69ynb?){Cd9P z1l>g!k7=AUep|hXvLHzwZ!OK%WW@h?4rpJco7_k5>w%J#8Y%$qq1MJ*ox~?UKV1FI z(o(bv7oLE&-r|jy-f2=CuAdD@vCk!^Lv?l)@HD6n*WQMs+H&CO(41XAjA@nzntW#^ zCzeP`JMGapw~oY+X~k_-TX&53Rqa}zvu@d2N6bQ)%@Z}+gSCbH&!T?sKjPD8Z11f> z=xGN>uNHZnM&xE=6?^94A|>)XAF~KN7Y-n>v(7%6$`>!4JSUP2yO zPhLvt$zq~?0>>`nZUGnGV5fd@W?(cKSB#c>?uOkq);f68uJ_E8P4i6IKAwKV*GBXd zWcze5H+Qg-k?j%QxfgQ4?2U48!`6?iyhBxQjXs0=$AQbCW+Gn2^2OR$HEzc48bV-w25v~LfwvCh2UnHMz8GHX7_3zpgTXTuBHt=(r{@T=_wy*CfN z^OMLwH{AX0O=Or&cu;!M4gAI1mp2A_Q?rn!9m9H4%K*;9YwW@!ORH?pQy3ljs!J_s zNpH-(F!JSDZ%02ngXs8fTKkhvjca+s?xcAwc?F)cY$uIX-be%QMc;ODgx}kr_wTn5 zx8?VxR8!hQFFh%2Une3z#N}ziw~9;|bgPp za=#1x;OzCsB8(jgUvXz#+YQ$#2+i_PLeExNxm%FW8J~&@KY}P7o(kJB&oPVZ!d~L1 zfjjp-T79~V2CW1PHw)$Xd+qhy3D+3L=YLpnK3N*fLQI>2uzFlZfh37GVNlJ}%N%oD zRZoZ88)5#6I27%T7{`K@V@o_Iw_wHa%Pm-(4-P)F>}{R&G4$odx0x2@vBT$`nmx<& u?QS)mHYeu(|AS-Qj&c}A0kjB%<~*!0DMMaP&!Q0`XMT_rSjKzOa`r#BQXZ@T literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/PaletteEdit.h b/virtuanessrc097-master/PaletteEdit.h new file mode 100644 index 0000000000000000000000000000000000000000..c07ee13514c52978890f6591c3f28ae2275902ac GIT binary patch literal 2748 zcmb`J%Wl(95Qb-KB;LWan<61%%4Jb5QZ7|nk+jeY2r5*iY1&3=oGML<5Q3Ls!;Up8 z7A#=PV<7Pi!1teH$973jNs(p8IcLs4^Zzqvj(`0uS;;QjC7vY$b&+MrG|$ z{Q3?^?Ws}zL<;Sx^Lf+e@uY~#M6lzY^4>^BQYNvr?8t_WO=$P*CG5nl$J>crw?li7 z#H;b5?THPn@9Yl}t08M-cYuz;hAn4sW3?a38~Em)Q;;Lu@^oe7$yP`S}Gm5+s?g!Z~&k_Q7a@*n?e( zoQZ>&W~0KJ9LbzrO*jVjc4EAll}GdSw`QmK>pNXlAt5!^Cz9?NHi1=ajjQhB=wsP* zYRqA`4C__m4$;u_mtwMsolaSFryzIGFUYa%*()o?cI+aM)>5U7eNnjvW6DjFyer}^ zZ^wzYH6mO}>Tbg}sKX^PraCN>NBQyWy zc~zgf!r%fJn;@v0^v{Knuc<1vQ5)6Nnmx=R__@Djthl-g6LrCML63h$Q6=t!Gz2BD z$z+_#eAd}76?)8}i%k13%hO~$?RV|VBD*cPsq;^dP-k@$jOh_JSg#IvK7{n__WESq zOx+{Zq)inoU%q=~oh`sm+Wlm|MbFy9yE>fC0`(hJTiR8;51r?mR8yB8Ry>FDUi=9c z(3zB-$6%LT4QiDiOD!t)%zZI<#0vKQOJdt@*d2Q@I!B6j8(59A^D(N=4~Z~H&OCL% zDqXkEwSyWf_MCsA-RGX?x|a0dyw!3tuPDaNKS}0qjb`8E&h_!ki+XM2`F4ThIJJsv z(h8ksZE@F~Mexd{^^`wdm9t$`J9PChKuPs%ok=?J^sUiOnCqO(&INx)=2e-+QaeoF QkLg#(70{>oepI}_0S)zgz5oCK literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/PaletteView.cpp b/virtuanessrc097-master/PaletteView.cpp new file mode 100644 index 0000000000000000000000000000000000000000..51c7d792aa63f4393ad7acecd7c24a0a366b2ba1 GIT binary patch literal 6662 zcmcgwOK%%h6h7NQLi~lPE0v^=)F~99QYt03>qNw{WxI7lT3LycG!dy2*-o2KQOYks z;*YQfA+cbC#0s%y!GZ-6f(2V%-*=90?j74>$5cfl&v<6e{m%Pw=byi?%2jz)UcvdQ z#PWUi>+GM|Ke9h$f5!Fm>@V3bvhFRf=VeQ_Wk>d;jcY6oS(a6KL#|0vR-_;cxNGV; zk87#_#8z@mOZMeRF=DwXPZVcM4)CulbFwS9RF?DlJW1Qd+ik4gmkl|@`$^P2=_ty> zKIRcPP=be$x($p+Ko57k2^k35`nT0erK+lY#Z(E9SO|HvZa#5=#V`f%u8jF)Fg4dWytcDS^ zu}VOsB0SK8H9GpXgXr_8q1+ zpNF~JfX7)Y>4SnCLkn6a(xcJ0@jY0VmZiMb|MK|XK+bsDyYNXBRChEtSXY{TS#wym zfcsj4KCS*{5>zHZ8P%DdCQb!M0p3r_5%s%ysLfBCudmHLd+q-3wZEQwIdfRqgp{mD ztS7gD$qc9``2PP?qx>1#*X3#WY&c_<;Y-%S4P4pfSqZ`wmbG``J!a4>D0kuiu6o<% zA@(*tiRH8Gca2Z7Uw!&K`{kjtpNr$LPB_UKePM3Xx{I)F5!{%WjNc5R-A8ojtr&G@ z1DyA@r{0JB8I5O`yOFNrB*NMisoz%Ai;lwQmQ_427weq6GiuYvO@fhDulKd;AE0_{ zBaaWj=R{?`pjo{L*?L;x4v~dhczYSBoUlFw{ef0ZX8$mqRlSh!Xu3H}HhYlMuC+dL z3@+h8U6NcE;mf-AqzeA6!ZKw@$o@?aRN)n8p|kL%Pqs8JLatUfte#JUwglVkVGi5{ zVu(jAu4rGF2CahVU}Ur352DRarKNc(2frNw&&x)+-ku7H7?03f8P#3&%mEP1Ui3^8 z9w;IzrqMG8Jv+!5PDopUrj(9555uw;9z8W$|4jCkJZ#6x;QCbZEweYo-O&snEn}*V zD`zW8kOiIH-Ne=8;r%5XgEe3nFj{IACx_)@ zgh;kbqO5b^Deys@X;-|m0|t1X|k1}K@aKKIND4&UXwA#Ebkxp!c-b7Cp&F1iJ zOlSbp)%C#%Dy^o4c{#qWS*E$Y{L9a2$7wL5Evnvwow@s*Wbe=-^wNK;muKq_)7dg9 z$;-B9lH0INZ9l*Y`D6Lsx{qp`EyCO#U%y@~^SrlAg2`R#Wq2kTQ=wPWJD2P0=g?L7 z)o@O`c~vLQHe!`uW;qK`L(^@1h8m6gYW-{Wo9wsxr8+`|J@6 z<7*6Ox4n@wR@&~M135Qk9jiE9*+Fd5C%f=E=G-Elu_hY*gVXM5^TqJ)h;`iIUs4Il zB@Mp@^wIc!Dv8ifeIFmyztei}VDC=$-6d3t9A<-Ey_$@^pYt6(;4pmLT6MB7SnLNa zMOg0d6ubRZT+a?*eZbDc{n~f&u(ugqvhR9I-?>6;>-yx#?#wIwIsBE7Z)PCt@E-Fb z;&$BLIFB`pz_k4jzbf>(OHhn+70>vzg0F~!_F_$;jvKlQ8niCgJ3qMoX8Ccp G?Ee=*D8+C9 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/PaletteView.h b/virtuanessrc097-master/PaletteView.h new file mode 100644 index 0000000000000000000000000000000000000000..c0c866c0a6c91d652e83b588e66bc9dc6b5f35bb GIT binary patch literal 1582 zcmbW1PiqrV6vfYW1i!=BZtBJiiY}@MNn4XZ(rQ~PQlw1c*bXFQ{2@%FiHv z1{bc~iu$|nO)`^cp@d=ny?5Wa=bU%n{qwt~nr`bB&zeGgjlM*`qMy;X=sWLE(U0hJ zG@G^ex>CJUrngFX2Rh-}(sR|-(T)zec66jR&sWT}waaWrFSX6cwu|;Cetim3vNFoQ zNFiA*=L6j*mocjIcjBIwy<3dTlw|5_pmV1t)DvBz&a{pAn&_U+^wfD{s+VIYnkskW zr$y8`Yb@>*A2Y=oqHUrvUwytpzNcV6c8LFHum*q2Z<*KTamF!b^#rHP>zMxptSQeU zGA6JMwaGn3OOM%Oo{6u!107I@ zO)Aj->+GZD@#=kCmxv~80+eMqx2UTcW9Mz3ySt#L8d0JQP&t8_c~gzJIYwCn-knu( z4sqMgM1Dgqv(Dr_s#amh{oj1j z$*LE0syb+fk+YvY9lKugW*&LP+95mGVEwe%>lQVUSI)IRQ=auQuB}}>!N>HfhkB$k zM~8@pUb|izxNHL|%2xR^pHm&ai&$-@oEcyJzAmpSOxAJR`ib@I*-5_xgH?LA>G=x+ Cl;*Jj literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Pathlib.cpp b/virtuanessrc097-master/Pathlib.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9774ab1e366feaee118b7ced363cc4c0dbcf00d4 GIT binary patch literal 6622 zcmeHM&2C#&5S}GQ>N{9LY7?NzL9l=#kYdNC7D*k&4k;~Fl(tS{lGv8*&_dKFpbNx; zB`Y?pSoaBlB?}O*0K5b6eP{0Y+;ekpaDE!Gs4V~F+&Ob*zWHX(oRfe4UXTU3A}`}} zLCW%rd*=Rd-?`uL`KS8Epb{Vhi+=jQLXkHtu9l*-$yj85- zhIOyW8_}vUE`tO?vx&HD!WTovo)eiY7O!KB*aWY`2z}vSw`3iNE=RwKVZ7b}tk{De z>D8#&d<%LRQQ{j$rd`Q&m*u_0ZqshI454=nb`8O^(!>^h`s7T!szcKjqSKM{GRtf| zTa>pac9^fHjdNZcEe2*=I^O9Rht;RWKFqin^lS1Mkv(q=LNwzHt%K!@$n}%5TP--A z-8IyQHu(5_vO9}o3E6$R{5~n}0S{w>d3l!nKJQAw*UM$u#c)ft#JtLKgZpH5$Fbat zXHHl917a6l71FU}9Y4;Cuy%-+N|`NjH4gHpuLvv2?y{Qfb^l!l$mje%pgyUjFFJwH z63SV&B$t3$>aCMmD`lTH_NuBd%mZc~WhP zeNXE&-)$_`%jy+QWT9g)X+tOO83sPWy9svT1lK^n&Yru9uAOJo3cjoIq3^9squwZx zHx+Pb8_$W!K5iMdfX|*s`=)F_(-Ji8;um8;bk=dwSN(@L6O3fXkFuNKJps=NA#7K=8?rUmbQEhSg7>z@p#@Ltgquu-i(qJD)6rkX0E~GHW;x6 zRLGHK`55CZAix{0)&w8D4 z^k2sf;yq~BN<&nLi}Ah$-tu)(YlJ&PV^&G5N@yOE#}NBtFUvq)|kGceag6$ z)orKQFrQpezD(DD%uX^}t>wPb!rg2I4DTZ!$!g_$nit&BHOq;$=5(4T17sO*zvrQa z)jI6h;pW+TCcOpD_7Sw<1D{d!nY!xUqJyL^b)i-7&8#x9-sDA^78*W*cl2`_hGiLC zO8zJCbMha7EA5_p>-J0Suie9Mn*P56%DJGQJ&RhJXC1Ac@w}b!ybYEHW;IY@b&v03 z2YD58gJ>kovFIss=~)`FcwRm-$7RxyoLE___ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Pathlib.h b/virtuanessrc097-master/Pathlib.h new file mode 100644 index 0000000000000000000000000000000000000000..86359b34dac676c3f24ed4d7ab5d11bb869d23d0 GIT binary patch literal 2394 zcmcguO>Yum5T2VsY2r`7G$u4LWuoz-#sp}aHr?6^+Yp0F0HJ&pkS$Pa>fL(KaM5@$ znt1W#nUnqj4<6dYn;z9a;6aPeyvxgO4am|Mv)QkCXJ?*gX5N|Y9fl}GQ*;v75C!NX zclj&7<^x>6@mpNGtXJheO-0I6mF`ducORv2L}`t}WYQuTv_ug|mgpL!2CdT^&Epg; z`)m8VA}r)4{(6{&gz|NP&clNNUtxGosjGNh=}R>7DrKocO@%%{SEvm(!li~Mi)N`n zSNk|cepJ_@Eoc^@>qV~u&CFQM0?^c;SMsFUrZm-I*YQ7!mtbuuZX10@P4E*=8_01L zb~X`z3)a$LnS;z`cUiF)tHM1Esf8>_e$%ihXoZ!m-&fZNev(wEG|)LOE{37+Y5k*JJEw=jt4|G*dFy<_8>r)@C$w z*Q6W2zh_5rIFAmWjg|RC_IdI+9K1%_3zN}0wikz~J6oTy`@3r23%_5FU&f>dRC#vi z_OlMZ+q=hkwc26H-VJ`FCXU{}THoN-?qO2CEWt{hZ^6O?9RA*qmRs(4D=S~)`%DzQ zGN<;rm&`|?X}M}-bWC&=4Uft`zd>hw&)ZL4WQJjk&?*iCT`>-C6`Wb@-382xike>y zwT~Amfr&SVDlFhhX4z;wrs}0)N$dRCMcvkqqOK!GHTbttM#9%75XoKCsoq9JesJH0m%qe;6|9{u1K`&P}zNz`L{B ocC9*Wgh`QF_(s^+EOz@dL-H^Usl-wKb94=!!N0^L|2bmkH~N{}6aWAK literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/PatternView.cpp b/virtuanessrc097-master/PatternView.cpp new file mode 100644 index 0000000000000000000000000000000000000000..20f076e48ec70c8a98a2d53b8b6df95a57cc5106 GIT binary patch literal 9712 zcmc&(OK)366rSxxLi~l>RD?X*8zL&!@r9!DoSa%FokkLv5-pwW})l^wpA@QS<7&I;YBNR!yog z{3`3~1U~1&J2H}E*43Um&=|fNRd+SchT6xsx*AYB>ay15w7wset>ft?M(?RrRmJmm z(hXJ9DBB_C0cM~E+t9iKjN3q~18EgH(UQ7qK(BZ7{OS63LE;D_HbWm!gRTsHyMRyR z8f>$2S-97rSqb3EC3tefkxSE3FdNXd25DNliD=$w@t;Cl;G%jLXo3xJHUIXJyQY8p(WS#^2Xj<-wjZ)@C)9d%k)XHqOJtv-lGR z^I-iJ=J(YpTw9In!I%ZuzpV4H7ut+KepNH=K2`}ahQRNaR3EMv)UftvufF=qXyze$ zT&;|q2YZBVh&6>6G~kb#ep*9@T4pBp4E$7tU5p(wu7K}(oh^BFMaOhb-(A)-8tWc5 zdD?@W`@j~gd064YcJWC7Z^*Avd|nEF^{amTq6JoaMZu#xyRv~JR(S+N2LwZN`6^ZA^vp8aXw-u9L}+nsUSLr zcZ_$E(&87FtCrv|?gfnhq&kEZ%z01$Ers#Dj>wV$sISxw!USg=*=xv$0;Cr8$|P@= zLtS$iHHP0stZ<9nm0`7yjGj^f_GedGG|6KZVzv=)0e_Roz^Fc6SPi*W{jm1d^1!1v zZv0mK>xrE|hmmDyOWq}KUI8Z8VJR~2e=n65SJxAUE!=y_RXc;2lJmJHSS68<+!4YZ z*AP*z;$BGZAP?#~>QYZ~59b|UeH?tV^g-~&M^A#!tHysOpIx>xn#Wfty~|x>3bS!9 zVIFrO>uqMc(el9xtC)FD*A6$Jf0xc{!yld=$BK(piKpW>tD|Tn>>3l^wR({g%rB7^ zd;T9DlDSP4@2U6UC-NwFB*UEaRkvo9armU6`MnAj*nstC@Qju5J;Zlk?-^vDq?|Cm zYj3*T04m2__(wjAA+nEI+&}s-I_o%csHAt~1$>)FMDoy(^${aqXmX!KBdK3>UgpAv z&PR7v;Vs$COq@HhVj8~LMV-9^L>G@%oDFxyuvq&`m_*c5-oB)NG9#pIIfp1Mh-d1 z(=XR)JB)Sh6{83FkUAdXE~7+U2XM8VbhdeydA@}i$V`-6k4dujH4Ny79yjzEXs=xx;Hh_Qni>Ej;0Bv5+ zsQ4BzjvW(YKcn%oSYj!W4s~uE=__kIsTFLTC7Wm`xu$_=?IJg*cbbhu8s`G)Q(~Jn zmyWgryY9C2S`iXu%sq{@umnt7S#`#0?#gV&-%RcO`-PR2Dax2e9OEhpOeedpXh9>w?j_tg#J#kABkD10r{JB$8i?|$yGvx(ZzfAl zp|)Zle?Zr?1${!P=nU9~byCTS=JC^bwDuMmVW#K7FTt0=*ZQ55hh5lqE!b;Mi@J`Bpiw|F=DG^hlR13Rys(e|+zO?K+z{p3@+zGf~hLPB~p z%n-hZxZ3PGKTr>l#c`<;di3m8+TJv4bu-pHmG?^KT;+0}ocGeSB2IiZgDbO1KAY7V zUwQIQq5*D~wbu!j^oEl$;>m*gNbjD%xT_3fRk4>}Mejb@y(dOS4mPcPy=J!nrM#zQVXdD3uo9G}S9_~hC4_?87-4Ml&(HXEODZjXPVh5k}!W%);} zYv&)!w@LlEhh^(8*0sYQZlQnB5?`!qhi{oZslP-p%RgdWJN%0o`j29biH2GDVqF@( z@cn#PgZWr>tXMb0K1ni*`@vPFn_}6Kb*K9)j#`a$vRp~Kx&_(vNM&Y=YQEXdoQDeD z_OjA?SXuoi(;H+}&Hh!i_cV>Oat{2uqd#T6vZ9w0A)m2QH5j%gmGim0?PZNi{+K`| zDAiCs9L4dRS2`hbP4=v8C(G^bh+MSyWF>9y#>JLcaYpG-@tfJJqy0rb>4CP%w-SAN zZKPLr93@toemVDJzVYOnZN9toaV_8;?=FDl;~wL=npUprGfUjR9B(3F*j4hUv+Dm} DF=uf% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/PatternView.h b/virtuanessrc097-master/PatternView.h new file mode 100644 index 0000000000000000000000000000000000000000..40c233bf1a44b0ed1b02c789a9b84b309b99a413 GIT binary patch literal 1744 zcmbuAL2nXK6ot=rO#BaHyQv!)+h|NRCO{QPpjE&cV@v}$wnUhc0cwn?f628ge}nNi zxNz;(sNa2WfC1a2!AypE^X9yB&$;iu%b(u`6?9$K_$?^Z*XT?1EBYCIi@x*x6#a-k zN3*Z?+*Dt0l<2i$o`H_I%6g)r+FXy+)V>Z?WAvOaHQvgq>zVeL*>h;m;@9_Kiq~fO zmnkHw#oW<0vFgMu@^<8YEqWuHnK?<+(?C<_Ce#DH!<~6MWi-|;o#>&=9)hZ;U#!{3FSKI_D>42;5bfh3HC$YA`RdKzK?vNaM z|CTYsBw)gvx-*z9PLOkXs`s$W9GJF|Q()|tl^FbT<{He|-gMY^Q#@oe%5v+K__}MU zMIBbCKzlE;j~2(f_qYa#3TgtJC1h^dR~}>Mt;yY3@{>m_SO&Npqs(%XM_ip_Q3F0Z z>+;muwJABY+Dgc|owDRVbhX(%J7eh;IcA;C=R9B4AFTXEUv^B|=KQore{8#HQ zkJ+KB>m}CL4BJJ^$-M3Z<|?duO6M!WW*jN?(bY@c)?K}tBhOhoq#{bJpJcUDrN+`+ zpYUhYtG4KE*lbM;?*neDORMq0oOLz2p*L5yb;kvlzA5h07coV$^ te=n!{V(fBf@_o)uPoGom&!;~*=Q(ei=(mn%|0=UybOW{P{Hs`o{sPh*{uuxO literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Plugin.cpp b/virtuanessrc097-master/Plugin.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1a4670e6f6e5f3893fc7f0869c9a92a057750f40 GIT binary patch literal 4458 zcmcInX>Suj4E5JV;y)}wLJc5_;9EJQlC)4MO`{$GsX|eYv{a-`6+*fHI`H0jXFW5! zn<5a3nq%v+pWi%tJimS}%d*^*8+c!qTzYaK7jh~e@p&p^Jh_w!ex1r0p6Bub-!Ji+ z%1q|vIb2668U3m$9cEMOr26$hSZLqZ=TUgPCeOsP5uc^l? z#6E+c>wWfQ6~11|9zGe1Ub)``#Mwo(ydef{IzZC>qZnJTUB!wuw<1K&z3};W5Y={I zMOMJ@D0;?txje()!y@xPU)zTY&Xd*Ehy$S90~7R{0rho=_F-WwMzV=K-^kkn9kYAo ze34Bu-2n%Ajo%)2>;O9!#^e6d!#DSyxhi4R%%H0bQL8J+5BIO0H?Ni-r4s)hn~$XY z=Rl-;(~LOBey)_Ld#-|6Q!`XU9p?SQ=Udc}uX|IYTS$ww0^?J{@4 z%9XQe!Pf7rMt|)T_gEgGde+_dF1~f4KWZ>T&rw#icVti~mDvS{)aE;^(f@0u5ubm; zPxiLCdqS>=)aUa6y=zqDPVExuoiduC%;4q3t&C%l9qMTaJUyqUQG{(&{AbVMRHbFe zho^_t#kyO)0~^gxIjJf=L#E8RSJ-6>dM*FQ7(>VS5Z|rCD@%QJjV51dkBz-m&sOrV z*k9aFQ-4$J!+}$>^~>0wa$=QpSnjZ9!_H5Zy+S^Lt25`3`yE=h@!R*O41B&uEpFp8 zLp6QE?s0B7b}PNFs?`pBe+8$eH)We@qsC&sH{kIE)#_If(FrUWhYIwo`iRXFT2+{$ zF*Pa|rb$|Q-_-9N_+KiuVijIUm?F}_su?SI6V#=H(;T@9oN<0|@hgmKIeq1TwH z>=yRp*21pxUA|)%Vw;qO95!`UF_JpH+0?1?s_ME~5jJaDE|!h=@!ZX3L-g)#oHd*& zb-w2m7fwm>BwMWpcJ=hM-LE{+^Oy4hYq8q%!fa9t%ZIV_^}kQ;>-s`iZ$!k3R!m2j zP@1NslqX}wpUbRv|2;jUtq*z@7S}qvNE&hR&ZIX-KdV^0)SqT>PwtiHkJ{?Y7k)P_ z>XgDsU<@_zb{Ni@cKEKdTe%SnsYolKkd}#nTu9UTp@ao zAYSi<2$>%zMX!`FgAi{A=jIgJ(fQ1fTK?+Q?r;;-4{wZizG?OBIWIGu=)9{QxCwa< zhV||jRuRwSnLB0dPB1O}@wUc00)IcnUp*7vhC5HB;bhUoA#Vv&+_&m`0Qb={i#=95 bj7>}Q={cr0;t4aIjxzDe4EJNv8ngQiUqgj@ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Plugin.h b/virtuanessrc097-master/Plugin.h new file mode 100644 index 0000000000000000000000000000000000000000..ff1a3e0dfbd04abb38056d3f502aa2b9c707c4ca GIT binary patch literal 2698 zcmcJR%Wl(95Qb-mjKn(_v1t(^7Pkcjq>@6Zl$59xffQ9$TDu`qb5SlWsLG45X2XuR zfEPeK17gV@_~sm+*m0cH6{)Pm_VHZ)`Ty}8|NT>vl3bIk{FlU+iZrAnO&M`+O2kS{ zj=5_}i*;WHT=zJ-(wE`HPyKITafD5X*O7R#&r!y^BClmrwq%=o{V$u94S6OT#>Vj+C z*!KN7)@?Z;*HAvdV3e|*hh%_l-(+pZ7)Bsc6itwJ(5OwE0nr-7RrKl+%9_EO$IP@I zRhW4T-w)*8#6!7g5NE);>X)dm@y?80k1jaiNsFux&5Adv%IR;hk4(KjPqm-Y+5I?{ zN1h6qw$Mhex_C5*9hntdiQ1Iq1!#A;s_}e?Ds`i!RzKDo?%*XChv~c21!+ixgu@kCogh?(E*?R7 zS|PgT+vVIbJo%Hjs!|r+Q+dfzVg0%3o-8KCS_8G>-y!BP9aRN=h|a2nV|;NIi^$_` zkEkqN^)_+Zpk4*R8S(qZV#HZzO55m{aAd95cruQAYnrL~c`P@@vZ(F+94A!YqJ9rf zvenF2z*d*7N9}!i%+G3-WVKq^$@?|<9()dd1>b@n!O!4J@G1BmoNx;vjaxV61P+4PqVzK;dZ}b9&T>t zbyRw9^Jd=nI&XUVJI#I literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Pngwrite.h b/virtuanessrc097-master/Pngwrite.h new file mode 100644 index 0000000000000000000000000000000000000000..ecd27d2c704a9c45037c604866845d3459fc19d6 GIT binary patch literal 6814 zcmdT}Yfl?j5S_1EssF(ksWMPCtbx|hHc|*Apdv_lC~7D|1`MoXuw~kCJ?D;R z@7-m+wi~Ldvdpe`XXei1%;R4E`g2wixs+SEkQT0yoZ|CFcICCam3`TkL)pZWZ9I7? zJ8~o&_`Tt%zLu|KcF31NLThSnl|bHeY0JRLs>n~$mpj}i(vk1vTAoWeT^p2VrIc0q z1M-ckIznC*tA3I$>`-5D?a{P1(uCH%p^i#NJ!wf37WCnbydU}g!L8nfwP#MJb6Imw zBK+>)(+1yL$W5S4OKMVq#11?}pYZ+~(t9$Gdq%A(H=z0!zZjuITyMdhz=AtaW}k0? zGLb7hzjJT)5#x3F6)}B*h*Dw~5$7}V?Lhl=`OU?@0r9E(Lfcir2 zv3^D7h8C%<5iEKI{dRzydE8%uzal^5yNk7V@cD5_A7xgJ(lz@N)4zik2Uua0 z{DJc%y+FKPfUfPldj-7=BP!t%?|blig6FM3L-lin=c+YhN(-4qjMfbPdJESO-Ak-M zRNcDw*{D_Fw=crV31anf@hNc)Ik1vf)3-LJz^(VKoaj^oJ^}G)w z#`V1I-iH;e#8tvtkfk#(DP1Vj(|vY!n3iQZsW#Q1cPObCPefRZ9uY&wSn7fPVcvEn zTR$d2bGe33lhy11H;4ywn4N`n#_P)Xd{bJzG@4q!`wr`qdQGu4i}m&joY$%B z2onrD=?9l}cgVyR-ru{ddk@QcKrZu<-VG5&?=e%UK_2_lNDQ+#l(`_wkK{6gZB1r) zBhBFktT&4r=p9{rEL$}5L%!9NZzp<@<(YGBbr4r!`e8hq6oQ#`J zb*Dhn7Uq{-WCZ79#c>!{-V?8yLt)NLmNm?-Y&CqGKW~6^PUvPwasG5M1GJGnby<<` zQ3-txaScvn)_H7-OrW)O4Bvs2zpV4H8|YezTW0~dIT^~b>GBxae}Y=vLw=qi_lZGY z|EW)2Mm$EwYshNhb2~;(eTxfU=KQ@tp8&77FN~0CFH{tyvzN}PX4o}nfUIFEs_-Nm@K1_KY zX;~WcXP$<8@IB0|D$8bhFNJxa)BY{;=ni=i;<;!aVY^T6(f%7PFI~mx2YKgnjx!H; zK`qp8{=Gnnhosp3HH&!~z%Cl& zYiMGB%Vz0g{O2k1c|0yA*|{Yj3u+r?!r}1Li_Z-Wnh9Z!gdE{??Je_>H7VibzKrN8 z7R}d_P3@CU*n`Z}Pit%v&Q?+Ddqpue4szSskDfr-o4F^8^JqW#_*Kxa^-R*Jr}2mJ z{(pR7D2q_O7E9YPnm~{E&>*hvPc!jJ&P04WKU1Z@WJyD-#4<7sL5pcpU>}n z1+Z9`c|m=`HOq9$dLXPDwuAFiYy~@-eSGO>(_nJ6d3`K0*|p2OY8+*;oZP$R)zvJ^ zQWaNNP9F)*3mEZMI(cxPF~ANtM2+=^qCKJQq}ZKS@onI{jGb5=I5usH_-(J?`Pt=` z5uuf#gmQkH_dUO^&(&imV;sLu!+CzLzUeeDe(R!krB$==7*81(cf;C@`@fOeI>~>R F{sx(?m>>WE literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Recent.cpp b/virtuanessrc097-master/Recent.cpp new file mode 100644 index 0000000000000000000000000000000000000000..220656b340df1643a8f8bdb3b058914110dca9f2 GIT binary patch literal 11618 zcmeHN%WqUw7(W}M7v*nosFAi*%0Y0$D=DRgns(Z>1BDbaq0`dGv_q{01Vr7L2nh)b z9~-0S-i0gU!i5PgT#+c67!qAzqDD7v)%yF+H($Sd&b@PI3R9>^CNp>Lz31^ge&6%n z<$t!BZDym{fZuHjoD)g zrrR7cU09{lOq+df-Sn|7<^bl5WA2n0#P5=u(c)$#S8g#w<|M{Un||y%9vfS0^&=R! zh#6-vFK>Fx2+k(W%dwehyTrLC4wxR=L->mDFFtCQ*=6QU(Yuz%p7Ypk3|D(Fz6TT( zFlGRfIciSey8JJKuP)p>gsZz9@2lBIWU?0f6hQyHSy+*K7R@A|evIsflndZFO-2W? z-V)@%l4%2?`kYj9z)&BskTdO$|BLQ7s-iI|>n>nz0;8wwQ-!1Uw*A=tX}_@7?Bk_T zd&=$}FX4C4UbdI>{dPZ&6+2~3{^!XX7;Uphu|rUO(wU)5X$xwB3}TE`%Lvg^H$<5qJV zpH`f2#z%J&JdT;|siR3|Dx-6VED~4S%$5~I3B8-Vz5KaRVl-Jm5!fs_^iV`@3&sdO z2|X+|Io88N5}`gCh_4BHaXBRhdhDek62bzt;8q?l97_d3fitCr@Uc*L>Bwv@Wk7~-6?p~MaRPo)+3Zz ztdPSxBr)nGB&%P(-{G<^lB`m}(xR>aNhi z;?;PB$VC025~v{*hg7On$V};TEWpC3%G7zHb$?EnA?SXb>!-_HtCB4qg+wEBDN&N> zk`Ik#s@TeOv`>?+UWBy}7lf0Oh|yG&2!(_S?##&gbWGbr=g_|4UaOrUbqepQv(?YU z@jzHR2ObunMd}qSRjavBlZ3YxpypZELuzq8q75@T5bxS?b-Ndzh2uDqB|l1AnXZZc zvv4c+Q?`F!{a`rcqYw0xho0?@aP462N4x$Os!ZVUNYoG zX=e#s!WwCDgYJ%lPC`xD)3|C+{%MXVzU1CwwDb+`SBwrbmZV&JA?JQXy#I5IUX7Fl zeYLU~ABA!Jgpu}Pj?s$q^%SFhs(ek6SIFxA*7i1WPssVkqXh0IAdmdb6rWA_Tk9Q#A{va*?lAJ3-7AzI|EM!fU09WXAMin|${5dm={Fk1F zg!On*q9s&o3$EgqUZCWpWOrdDr(Ddsry{gIKS$wur*S@n66S*VNb4;KS~zQ+#gmDx zv8+^O!8}W~%V#t;DS>$AFHeUz*Wr^hQj$mZ$gS>Kkvw0LUMkTp`jcZC6}4qen5NxB z4H0)-m9gCYr=!$wA>A@cvY(2I&eJ;0x{KDAN`L)M#Co+z;du-;!#-oZS!9R^rI@Ub z5Ft8Fd)E3eSY~|*WQ|~ZjN|w2EK%hymY5}Xw#de!WE*QHh`lHWkm zezLrE6joH!v!-`q&f{IB9e5I;d6NLQr) zLp00V9JE&(&h#!tLjGzDR4=Lh(%N_>FT{K3s&Pq3?09hcl3ezF>r3`s5Bky!s4;yt z<_AXL1YG**LaQ`^rfD&4(lmqu#f|*g2-MWZ&*ZZo$uFV) z?j4rJh9xvHgq@w8JLlYc&Yk)5yR5Qy^n_R2u2M~pQ!^ic6Ko>(1585 zZ`+^7*<5_dvK~|6P;<{b*1o<{iPbUTZK~(`q<5}}RroM=iY`6APqvC15_!E6S(JgH zesQ+Jf_qLT#y&v%u{s)|(^M&M=1$DJe~hd`D&2mF7Q z7CMg5E@!YiWqrQE!El$>*=Jt&QGK(sP2BoSoQ>9Z8I$#&^-ef5n>xpwO>jK)Z#aLM YQ^vguy4`VhXGe>>{waEIe`g!YUj&!!rvLx| literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Registry.cpp b/virtuanessrc097-master/Registry.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0255c828b3126f204cf28166515e450fdce9f33b GIT binary patch literal 10422 zcmeHN-ELb&5T08j@eUysmEBgYx#1#Es>U&CM4E&+X(0Cx8ESO|Hqi@($jw$&CEb{;BI5EfRVGZfX{F6`+=zdrhd=H`5E_88Oos*jG1kDH1kR@5ct1p|lYo)hFpKZc z<)iVM&*WQZwOzSp4|5MIR%~LfWvtf0YCXKx@p}(AQAgEjMp|K|ld&&$;5)^l421@C z*%8iLoQHN0r3U_pMjv`@VXZB!cofD=#^*}utcpYfn5drySor`p>q^QH^6ddu)n7J3 ze<{KpAWnu*uf>4aZQ!~MF7Dx%F{24I^3j)rhf-@*Mm3n$Qq}G%&>?5YbFNN*=GXsw>~YYMZqWo^C>J9oDUYtrmUjLT2=FrHPzzFk1Hz(fkB+&B7wy zZ-;k9rZ0Cf%MwO(<@*s@{V?xMWFksmL>@>jAokaTue(8qRlN5hvk9#_n5Tz7dM9T2 z0@k7207@<1Uj1PvO#+3R}uMq`fu*IzBj2v^zK9(^Iu|4>hF|IQ+ z+mwwoR+0rnMDi2xssYJZE0uZK*kMlH!koL%!?-#rm!|S&)r-YgU9_5&7EAAC7TRjW zFh#<=Wiwcu5u;S&NipmkZzLS|n4ZM&*cW7o<6|D%syVxIp)!su`v;5oS~GQ+&eg8)t%)$xW(?EYJcMvd4B03;%Ol}aIca1 zZlh?I=9pYAwURRISC&GDMI;sij`u_UF^@3=&4cIcunvI3o1T5lcQR#nz1+dVI6 zO^&0G9hk?L<(>1JHHtaKwRg^X7EkS)kx$_9-2ZWpK3!HR)`U;dS1zM|bjP{e>#}QC z%*o8k)wzcj#@ZIgzuugl$DC&Uat|pU>E7q8^El5qHi7q?}IB(VAZDrtj z@S9Z`;!a+x*^5?$r{UBnJ{?bEy}F-2t=vC-Z+|y*@$8|i_9*2!xM*RyT$-!>?7(+g zZ+_>V=i>%CMxMUb@79Upu&`54&nv3g6Zg<|PUihhd^TL%qwhzna)tB+BEHK`!S)l= zcGYQY<@@yd6L`}g@8+zJ;xnLQbTb3&h9BdJ+XwO?p0b(Nhq(KAv|Am96BgR*^0a?e z-bcTr{aI{%ycbEWAQox#ysEx2*Y(x!_*1*iZr9(zPAh$0`ET+>RTLU8yz{ai&9ha$ zLyONU)AL>K^t4i}gMab!Ydftp_HuXWYo<>uEDKU5@8pa5rS24vX9#@4=}({ZX-cel zoLACp9&^5aUl-3Ak9-bX?5u1ivfHpuJsaxdoeRAWQh&&|^Nv0kYU()s;l z_;h{XwyGcERq2QNbJ)~^Y4dRElauk&!~X{2MD=v5X-~eyj$QXxjLW=^7P+k6<; PPp3$nmuNlD``mv3wCO?LRMSOW;9gUxuhIMHL-aBF61|H)Mc-Jx zjXq<^J?y!pRL?cgGbKC&b-C_nT}`d3r47ZbA7N|hKK8aY)!<#j{U-Y-J5ypL=h$Bs zW81S`*EO=V$+kl7uHP;1y{RQfKTu!0+II$_Zs`C<#%IVX(^b9DZP&z@p6>hl4DT2P z*1)ko=U0Uy(^z|+ac7!;A2fzwhsq4p(@XTqG-B0f6|x?K`le&GsK%;?HA7XaNW#w4 zz4mnIUPpc(!Tl+|DLZbsC2+4E@yr(J6wHWIz)>< zP2PvPJcq8BW7BIElVjC$bYMTEqf(+Iyc>`=^sAUB{FTSh^&RyP|0@MNGry)sGZoCo zIy2@upewD1d+4$2*>b!^taUx$YFA+0U~gWzMPoI6x5(WB>x54OykmaGB-hZm)L}P< zPlo+`JnCp~eP%lSUp%b4t823D>Kpg69$GY$S@&$AmCX_R7SC3^3gzGKp8V^aeGQAj z{qMSEMDPE8&s(pIe3n>8*mOvkWaV=%pUwfZwd<3se9}GU3|Y}bd^$X1X8My;CfgeG zugMvhPqy-y%auJ-+<$V)6=!ceoxZdBp7fvfX0A-id^bIlsVc{FT$ZrfS!ic`F#T6> K3EqEp#{UGODOnK! literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Render.h b/virtuanessrc097-master/Render.h new file mode 100644 index 0000000000000000000000000000000000000000..13c2b82f4e0f9ecd3cc5c7717f9cd3212675d77a GIT binary patch literal 35054 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Render16bpp.h b/virtuanessrc097-master/Render16bpp.h new file mode 100644 index 0000000000000000000000000000000000000000..5fdbb00ad45beb55ae181ace18e3355218079adf GIT binary patch literal 39150 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Render8bpp.h b/virtuanessrc097-master/Render8bpp.h new file mode 100644 index 0000000000000000000000000000000000000000..7a859b451ad7ea9811addb8bd4ee24454586e248 GIT binary patch literal 14876 zcmeHOZBG+H5T37R;(x#|22vxmAQ03KLQzN%uwc{}Lt0v;+7_fBB!<7PK686>JA2)O zQp!tlbGhEzbF;IvyR$RTUjP1?q)B>65AZulV>C}SYSIzT)@h#(sZCXCrOz4n3-_B; zr-+uQjI%>(&@SF6ZPFrrqHS8nRSTF3-Z`Wv z-e+YXj^bx!l(j|gfqqS|pv5w-mvLu_O7s}-*0FW5vz$fRz_y078qi#$U1;?IN3LZ9 z_b1}o{f>VlN2drHZ2{i_>Lqro;qx4H8RfF=7(MRDnn<;J8q3+DW9aY|7Gr%xUKyHg zpk8HI_awIR5$z@NxPBGXa~XEr0d5tjZCdfZdl1)dH+@$u!ewu!&rGS@rV%t@+ijo5BRBOVhCw1$@E!?H#O z%O$WitPNYS1h?I6z2}{}XsooJ)yTzmF(ztB&7}?JRk`2kTm015E~4F8ikF@=hMMzu zUPXqWM8-ms%c#;1{Pe!0Xv-^pI1ihk3A-8-Z(4L;P4 z-Mj5WyTOOvNgt})#pgpW@`$4`yU$}b);rf!W)W?HQkdT{!|FL(;5yQ*pTSf{y!P!WJw%LOOH+L%1Y?>43Y_hkkyo}9Xmd(NPvNWr$&3MM* zywJ_U#Iv2R-SiDwqI9XU2DOCEF(n`E&l1lrrQOx~gqxY$79DP%;5>McJ~4NLmYBU% zS%dY7A{e}UOAIeAVV|JcnL(Hb?aid$YWCrNM9vrSV%iFM(Q~h-4PM=3>jes4T`Up2 zx>zE3bsPV=46&X8dfDV*d-YNpH)_9rT{&k&XNYGTh+n(-wJRm>)S3{l#&zijo-(8D zTeryi>;HF+=VzP;w6T6P7spm&JD#hB`{9)xJ%deq_#a;Bjd zB(09cL`N<~q6x_dENVJM*}lo^7ROj+IKZ025A>cIRt~kkta(w%%tIS}89nWwC6coi z;Ip}0jFqD?CUQ14@nu6sy1(WcFOf3ijScKO+B;m0w;Hx5u@=>yWE3Mr+ZX#ERWo5! zg;9l7*kO;VnbZgAQFVRuv;RAW2HLibS=sm@(Zn3hFF(m!Db}nne_e4M>&Ci_YzcvB z4otJ=ut#G(FB|3Z2$PtOSB-Q`=l^0Sa1!$ERj(xiCn1@5;3UKnfs?o$P9p2gB-@cV zqo1$VM#HD;?=$%PJf9wzX8jeX^ahg7?Aa;GZB~qw{6!S>F!q(1x7z_Q0xEx0`mu_HD9!`_-O1oSu!in%K|wxBccAU3T~9*G_C|V|RZLtvbO*m;-nW?TI~u(Zr6q zdg{2zqGxv;;$j8`+XG?Dx)ZGGux;~8DB@Dc;8L&>Yr5DB(Ch^3vsZ7y>G+&AP5e*s zc?6$sYHb$p2SnUUt@~E70vR2lNtKlcT$R8cq%4G7B4?E-Pi&kY5Qgqc(15FiDwGQ5@c-TR+ie0lD=OK57L_Fo$AqpJ9Q`z+BX@;Sz z&f2W9(hL`InO`q1ReUsT8_#*?S=X_r`8XEahR%0Lj5{-o5YDRUKFm*J&7Hf8 z1I9effhWWy8+So|VcuRnCVXk3n%3G1s8gP+uLsx-U5rv$+1e&@@M);;4b8o;swT6|JdEuR zyJZ{pXQXou-4AAdhaf+3HPdIMW`CY{#xGb1Iqxb-?|@^Ts)nYKtvGmeF)r8@s=P2` zcp5d%agL~uKUh0(K{~51ntaOWr>K$`PpiBvTdA^5b)}VQf?lz! zc0JPASHJJ?@2wP%oyFbzSVrYVyj58(c;7~uB%iCOZ;zbCdUbtNqqACk8XWTGJFiOz zXs@AJHMZZ$)gH$t$9;}f$J)lXy4m|rIB0*Pj+XyN^v5LPP>0p(S!~cndT*8a)Ms7W zWlFS}*Lol6jr3!PI`99?i)_x?S?*jAbB}$o{QY!V z^&IfZFEjbnjma)h-LgwnF5WYRRBP$nJ(G6W$sWnutbUIqFWGydGJV~HYqFos+6l$~ b2fiob^#6g2k38*d6$+&P;UsmK?3cd+^bTA% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/RomInfoDlg.h b/virtuanessrc097-master/RomInfoDlg.h new file mode 100644 index 0000000000000000000000000000000000000000..a7bf6dbb103ab4f40000b363107144227843e23b GIT binary patch literal 2044 zcmbW2&2G~`6ov0LNW6n-7cCoNepcm23Qn6;jhiS77W}4TS)=cimYk88aR{OKq znapKs@Mj6?f;oyiL&;dWG9t5?Olb9Kd9>$nKQxT_D_CRw8eb!?EpQsQ%j_9Csm^1V zcfp;~sxqeWws|&uHpdykt3Yg;@bgvyx3>0G8$ifnsuIY zLKb0tmp^9Jabr)ZWlc1-+*#KZVVv8F#XOzU=cteotz%tkmilQ#Ymy+`jiELAfTu!b*fur0!j5Z2vP>2i zf~dh;BEQ&F!-$AgoT|{g3W7Rcn-Z14lb*$b~0llh`Woyb_YPKEw``H02(7R%o qoPczMd=_^Ht9lV>tZbMxfCr_E{eN%IMOpEgDFGy50&k$q&}v%kdm2lie2Bl}PLQ~MM9SNqWFxbWW> z&8k^5>!xb9@o&-0n{hK~K4<#PqN$i+Gk~i__dSGvC+c?y;YBxR#cY{92cu{%m|O1N zs=0w*yQX9|%@-VXt;gODM(07_H8pe7Vc4j{-2)a}be_+GAb=gqs+*hgp;0Zx&aCLh5^RsP8dD7_*Ey8)gdMwHBiXK+{f(G1I_b1I{hb zv)p2A84})hTH6Rl=5aWWv8%zjv^ILc^(J6a4l9nIA<)qd>>($;HO#8Pa<;)`EDh2$ z1WOvNThA;o4d7}R*Ms;Tb@tY4$~hGD1=js1SoQm`@1HwMR;W|XLTQ;EcCWMK3E-eL zkDEErFb=#GXlvAb))esXHtuYL`Wl{9A^R=xPdgHf?LnUd3}T*Xz?=gtTH(zGB=O8i zVC3i#bJ=9`5srvulSNTDn%s_qi!%5vn@hk$-yMfM=0H~w5}+i8AnyvESIk9smlCLe zTKdQkEN%T7&jj3Z3Arz^@oNDEndHFPkwJMX33q6#jA0um-u6VTDVeYXeuS zDJnwzi-0o;NWFD^iIgAMKiYrUUq|*)hU6#kVI*S=3#~3ovhjG8?NlH&{?4|O?73x! zy9|me4bIDsPe!S&j$jP|$_U_H0xZ!k^~h+n4v2ezR!hN)sY*&tbsT$8auofz06g^M z30T%BuEdMH#Zy+{h-uI{gTDz!kwjsI5$aOlnIA+#e1E0+KySQTPp?t*3 zPvF-Me(&PG`n+nX3ZLUheSQj6iBup8r-(b$*E}FBIyqj3oW>y^#^$0qj!*OX7gF;p z(1^_L!(5?-(T~z)bQpwoMxBo49Cba=M0R$k=G&7;%)u9pe7*`h=>ZL@3sOModOOUw zW6@s0i2joElJ@Pj{3dLp3cqTu~;Zw}anln_7k~{u}3i*-!t^G49jBV7- z@7iD4$9DYAw*B(V>UYJ4C5z1f`>uHlQe{25fLi&S`MkN(@J01?Z|!9_l98U);5|+( zUZWCii4xNYK@XsRW##oy>KZv&$*!UDrYAA4P!nsIeZ%?nb?4PS{wPhvV)5s-`2P)W z0NidtZc^SIiz;(O9t;eU* zN&5v?5WASgbyItOM!t@xwCwrmUXIMtmk(WvXPyHoo^f0rrWE@RU5@?FfgFX)R&orZ zS(qcg@#@2cIFe~Jktn9#r{41w=O?U-nTgqJ*mn_C@ayQb-_u+5Y1;GkNme}MYJ1T| zI7YuPPOUrq5{+2R7m+!AlwfTfc37CNlNHoOaIx=V*#hRCK*#JPasX=p!a9i$eOl`? zRz@KoC5%zZ1#h)s4~2R!uk_X%-xJxh)@dDAyQBFGXzn)hCV6TviWZQWr0d}8l`xK~ zT&SI7-uBT`M&ea&m7vz@tgl43tld}{4I)>pql&9S64V7Von-S+ds$S+ zb%JJ(Ji4n+&Jw$N%&Gb(SwG(ccGhmpDlvZcX|(&v`jb~;JE5(XQkFUgF2!0Wk&n4P zA%(5v;PWeOH?6Vmd6zXES1>d15aFYQ_1-26RbtmQLQ=Q=jg@69?e-s;ekG

th(@_Z$%59bkWRsnf47q)fLqSs+4;k%0d!zN~&s^8)2ZXMTs$UR(toW?3N zT!ZBMY-e;xylRh*bB9KS+7)%yN*bL|G3@GnYMZ-YtEo80waY%DvBb=*Y{YdJS2J8; zaqY#vYz2{R3Oyh8=eUPPdz1B;A32IKTnVvHFS}0Oj=UFy-PHCw9%1K?wi`n6-8AB( z#olq>(n0FHe-w6FLcGb|kobnIiJ6Kfmh zlHRglkLmN7ffdlv(svRutlyju=+vAqI=zo>9QSqZ+h5?UWqZ z6&d5ZIY~(AF~U*YnP&BQ3DOii-9}tbS-Wwz01K5}gInO4J3y?-b=}bmi}Vq?&)KQR zA)LjlN^#%!izX@YHJb$%|W*+${3^ z0yr9nU9kqAMcp#sb`!2Z2C}=#=+!<9?y8Rg9(Ohf<1Rj|ptECVng;Id`uUP+x4`> zk{h411OgirwT=n%O#$(k zXJr_XufY@c@pn7NS5(KxI*3Kdc$gJQ6mI(wu7VvLp1r%&Wqb^0XHgW(;;xGvT=}lM z&Va6yWlby<1z5pCsC`PMep}Kw3xT!DDc$71sXj;>m~2WD)ID~nTEIf%8YRHXYh=1X#M#k zd4@0?***rZmuAqzQPS%aiOBbgtCVZd)HZ76wYoRNG^p%a`#yIMWi5O@V-2NvTft*x zz@ESgEGW5WSIt~uD`bss$w-$+c`Hn5dyngkumWnoZWU^oal5G>eU3Z{tz}Vo*p+eT zJ6o!s=9Pku%99Lx$9xt_J*=#srDSx6h$nSB+0|8^HRHyf$EWHo?`IKT`?arfy6pOjOQ>PfKAGeyz7DVaZ~dkJ z#+}>zv%#{@6}~0FeGI>k6293)D`AgYcWZU!9KV6$ySgD%-=SrtLA$+E@3Qbs8-4TU zHFOb%QQ^x8a(Pm9Rj8hO5o_p0rIo1XVM(*By8$dhj0m7rIcO;hTZ>sj{KP^wKK60 z`KBJ8#sZS>Ks}GTmrg==yR>Q}Nj{tH)PCK5&E9_dhs!*9!Lt_MtoMG^0vRvD80YoK zI)wW;>LH93p&yF|CFXMvojtQTe7I)idvcTLz)fKe&phyS7^`B{dj3hmaCCY%EPP6P z)cp>Xs$Y%o0GsYcF;d9;G4alU@alI>1j;n1)}H4MXcr$p0Z;8ke$;0tfcrRnmsnyd zh;0`2A7#aJ2|T?Oo=KrqdWxRz{Q*jdRFKM;icnG|H=@+&OmIA}L>t0&*7*H8?=pVB zp}nlJ+V#lyeL@+4Tv)HO!|f@EZA7W{*s~%p<6|14r%`=Hok4CDNhUOv-&aiRuxdZkE=CP7?Y$A zDm#UYO4%_>V@oaNuM7ZQZHjALa?gyqiBzu7xpow zEcrwY`R(2L4zE{j=P&b@L9FliL^p0c-LTe@it)yCwQ@PgQQ``a92&C4P z%<5&-LhO{bs_6K3uFu^vE3abH$lvK(bF3VRCp&klM`UR-wr=Y3V0J{aaAn(8+BdQ+ zu(MT%*Ol(=@r>6yc<<@ip2d~G((?#cV9gq7vicl)63oYkqovcIwrWnNo(NMq zLoL&Chv5aQ@JaukaaJ5+MA0|q1(Js&^?JLW9lj5J6doSp``FW^7V)}^J^kh7%k{NE zb6ZYYTzukF>_aehW?|g-pG0opiq_{6Pi<$G7XN<=M`3F*#*eKnZEel%s)Q&L{vQ~A zU8Z*WtaA}FbhB(Ap3#cSgFP4QGnU49seiNR)NJr9==2#&=@ie7{~w=b=Tvk(C*eYm^7h@h!iPlvT1|OAF`VYiZ3JHd7*dW zo#2gcB3}3gqW;dzu9?L2FJ(8|nKR$_o$t(?`SW{OmgTBk;k_)Od@|q7FZ0d3H(z;w zG4IS<^V57ZAIuN)*%Wd5yC_}hNMG8L@Egb;f05K>ORBOX4Zff7j-@P{%#>uCkuqbk zZ18BbLvic7ASIVZ`5!5irA(heVEGZINS!|3_BaDq4n&?DKz@xsX`Ls~E2>uRp(P zM}mB>ROOg#MmBe?Vu+FvJiQs5z*eGxl9<^FPaADVvP9e#eA|qND0Iv<=0>3P(HY8h z&!vm=uCo`bR6mfK#cc3yf}C1+GFU1+>QWOw604|!TbptN?jf_O^{G%XwE5|}7U~l6 zaE_>30d5R%vCUT%juKCosIJXbd3yM)el5+-YFbH1bQ1**xj03-YwP^2p>V_Q;x#f; zJU`B55X|U^b0q^ZQs*6}i>-mU!&C7b*J|n6oknYbqPtnMI6uZVjx=!Okvz*)mBGM<@@i2hw866O`jjNA7ZpShN?XFaNOK!8mCuB zR*iN7cLto#7e$F#-vMb1N_I{)MXz_6MVvmZdq73^sKzT!;H2wmr8BS-*`-${-q{t7Z*m%yZyyvri_Qnv6_S4pdS7VA(8#)V%AL6yXDmH4szj|^cb)W} zS){t{dnZLs_W9Wn+J(ntlI5H(+ad#(gX`3KPYm#Mo%jytXIF0F?LE)gvsbOmSry@B zhjTsY^AQYL?w@~4)bU)q_T=u-p4MfoNqmy`vp3%SBBOc}>1|(h;A>RnGPk`t^A{%U BJz)R< literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/SimpleVirusChecker.c b/virtuanessrc097-master/SimpleVirusChecker.c new file mode 100644 index 00000000..e0440459 --- /dev/null +++ b/virtuanessrc097-master/SimpleVirusChecker.c @@ -0,0 +1,227 @@ +/* + + SimpleVirusChecker + version 1.13 + programmed by Norix + + Copyright Note + source code: SimpleVirusChecker.c,SimpleVirusChecker.h + + Please use this program freely. + An author isn't concerned on a loss at having used this program at all. + An author prays for virus software disappearing from a PC in the world. + + --Attention-- + Because an author doesn't have a PC infected with a virus program, can't + guarantee it whether you were able to completely check it. + + Histroy: + v1.1 add WORM_FIZZER + add WORM_PALYH + add WORM_LOVGATE + add WORM_OPASERV + v1.11 add WORM_SOBIG.F + v1.12 add WORM_MYDOOM.A + v1.121 fixed WORM_MYDOOM.A checker + v1.13 add WORM_NETSKY.Q +*/ +#include "SimpleVirusChecker.h" +#include + +#define KEYTYPE_1 (1<<0) /* Windows startup registry */ +#define KEYTYPE_2 (1<<1) /* Windows Servece registry(NT only) */ + +typedef struct { + TCHAR* keyname; + int type; /* type */ + int length; /* use strncmp length (0 is use strcmp) */ +} VIRUSKEYTBL; + +static VIRUSKEYTBL viruskeytbl[] = { +/* KEY KEYTYPE LENGTH */ + _T("Wink"), KEYTYPE_1|KEYTYPE_2, 4, /* Klez */ + _T("WindowsMGM"), KEYTYPE_1|KEYTYPE_2, 0, /* Sobig */ + _T("Avril Lavigne - Muse"), KEYTYPE_1, 0, /* Lirva */ + _T("SystemInit"), KEYTYPE_1, 0, /* Fizzer */ + _T("System Tray"), KEYTYPE_1, 0, /* Palyh */ + _T("WinGate initialize"), KEYTYPE_1, 0, /* Lovgate */ + _T("ScrSvr"), KEYTYPE_1, 0, /* Opaserv */ + _T("SSK Service"), KEYTYPE_1, 0, /* Sobig.E */ + _T("TrayX"), KEYTYPE_1, 0, /* Sobig.F */ + _T("SysMonXP"), KEYTYPE_1, 0, /* NetSky.P */ + NULL, 0, 0 /* term */ +}; + +/* WindowsNT? */ +static int IsNT( void ) +{ + OSVERSIONINFO osvi; + osvi.dwOSVersionInfoSize = sizeof(osvi); + if( !GetVersionEx(&osvi) ) + return 0; + + if( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT ) + return 1; + + if( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ) + return 0; + + /* unknown */ + return -1; +} + +/* A check of a type to be infected with *.exe activation (representative example:SIRCAM) */ +static int ExeRegistryCheck( void ) +{ + HKEY hKey; + LONG lResult; + DWORD dwCount; + + if( RegOpenKeyEx( HKEY_CLASSES_ROOT, _T("exefile\\shell\\open\\command"), + 0, KEY_READ, &hKey ) != ERROR_SUCCESS ) { + return -1; + } + + lResult = RegQueryValueEx( hKey, _T(""), NULL, NULL, NULL, &dwCount ); + RegCloseKey( hKey ); + if( lResult != ERROR_SUCCESS ) { + return -1; + } + /* + Check it whether a parameter is different from a default parameter. + May think that this is originally infected when it is only '"%1" %*' + and has length more than it. + */ + if( dwCount > 8 ) { + return 1; + } + /* OK */ + return 0; +} + +/* A check of a type to be infected with *.exe activation (representative example:SIRCAM) */ +static int SpecialRegistryCheck( void ) +{ + HKEY hKey; + LONG lResult; + TCHAR szKeyName[1024]; + BYTE KeyValue[1024]; + DWORD dwKeyType, dwKeyBufferSize; + + DWORD dwIndex, dwCount; + + // WORM_MYDOOM.A ? + if( RegOpenKeyEx( HKEY_CLASSES_ROOT, _T("CLSID\\{E6FB5E20-DE35-11CF-9C87-00AA005127ED}\\InProcServer32"), + 0, KEY_READ, &hKey ) != ERROR_SUCCESS ) { + RegCloseKey( hKey ); + return 0; // not found key + } + + dwIndex = 0; + while( 1 ) { + dwCount = sizeof(szKeyName)/sizeof(TCHAR); + dwKeyBufferSize = sizeof(KeyValue); + + lResult = RegEnumValue( hKey, dwIndex, szKeyName, &dwCount, 0, &dwKeyType, KeyValue, &dwKeyBufferSize ); + if( lResult != ERROR_SUCCESS ) { + break; + } + + if( StrStrI( KeyValue, "shimgapi.dll" ) != NULL ) + return 1; // Found!! + + dwIndex++; + } + RegCloseKey( hKey ); + + /* OK */ + return 0; +} + +/* Character string comparison */ +static int KlezTypeCheckSub( const char* name, int mask ) +{ + VIRUSKEYTBL* tbl = viruskeytbl; + + while( tbl->keyname ) { + if( tbl->type & mask ) { + if( !tbl->length ) { + if( StrCmpI( name, tbl->keyname ) == 0 ) + return 1; + } else { + if( StrCmpNI( name, tbl->keyname, tbl->length ) == 0 ) + return 1; + } + } + tbl++; + } + return 0; +} + +/* A check of the registry which a virus uses */ +static int KlezTypeCheck( void ) +{ + HKEY hKey; + LONG lResult; + TCHAR szKeyName[1024]; + DWORD dwIndex, dwCount; + FILETIME ft; + int viruscount = 0; + + /* Search a thing registered with Windows Startup */ + if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), + 0, KEY_READ, &hKey ) != ERROR_SUCCESS ) { + return -1; + } + dwIndex = 0; + while( 1 ) { + dwCount = sizeof(szKeyName)/sizeof(TCHAR); + lResult = RegEnumValue( hKey, dwIndex, szKeyName, &dwCount, 0, NULL, NULL, NULL ); + if( lResult != ERROR_SUCCESS ) { + break; + } + viruscount += KlezTypeCheckSub( szKeyName, KEYTYPE_1 ); + dwIndex++; + } + RegCloseKey( hKey ); + + if( !IsNT() ) { + return viruscount; + } + + /* Search a thing registered with WindowsNT Service */ + if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("System\\CurrentControlSet\\Services"), + 0, KEY_READ, &hKey ) != ERROR_SUCCESS ) { + return -1; + } + dwIndex = 0; + while( 1 ) { + dwCount = sizeof(szKeyName)/sizeof(TCHAR); + lResult = RegEnumKeyEx( hKey, dwIndex, szKeyName, &dwCount, 0, NULL, NULL, &ft ); + if( lResult != ERROR_SUCCESS ) { + break; + } + viruscount += KlezTypeCheckSub( szKeyName, KEYTYPE_2 ); + dwIndex++; + } + RegCloseKey( hKey ); + + return viruscount; +} + +int SimpleVirusChecker(void) +{ + int viruscount = 0; + + if( IsNT() < 0 ) + return -1; + + if( ExeRegistryCheck() > 0 ) + viruscount++; + + viruscount += SpecialRegistryCheck(); + viruscount += KlezTypeCheck(); + + return viruscount; +} + diff --git a/virtuanessrc097-master/SimpleVirusChecker.h b/virtuanessrc097-master/SimpleVirusChecker.h new file mode 100644 index 0000000000000000000000000000000000000000..c3fa900b161cefd3a8e82ef49e1c8d6d08a9bfe0 GIT binary patch literal 2202 zcmb7_Sx?(g5QXP8mHHnncql~>3VrJ)L0HAwLaFErauz31LlR|yqN;zr?RW0@rcN3v zkY)S&-dWC^S^WFgnl0ONdlv4*&aG`X*0+u|?2`4s#x}HywfL^tH=cuB@;0o8$n>mh ziLG0i`*nWWN3Lg0o++Fg4Q;#4f%5Z8dWGv%D7NOm|K2488AZo%j+`dxU6h{Wx~m|QQ#Qs=*z6iW(j z#g*ka<;iQnGmzou4k<;MkO8rf!a|>K?M7VUp-0{mb`v|Jf)umrL^!2;7d&*Z;XHYk zS8dfckx|~eJiWTK>*rhS*RUBgkp`R7+}5$&09WMK8I#XxELpH6PvY+mU&7{6#ki+) zyn=)fxOGR>1dpQEuI$N|tjVgP^_Z3Sd$5hezBpJf0NFWuge*1>vKJyV|NRLdsN2mjK;=Xjbm_bqjgGjWxP!@umKY#Dq0iA zbN!czSqj1wW{74~Ht`bwc1h^Ik-g`7h3+=^ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/SoundDlg.cpp b/virtuanessrc097-master/SoundDlg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9b45e74f735bcb3c1f54a3bfe515d7d6613b36c4 GIT binary patch literal 10082 zcmds7U2hvj6rEQi@e>fPt0I@uWRj+(l!BDlPHHu7g1u>hQd#+`u}I@6PTJC{|AAkC z1XS?YN>wEa4}f@qH(n}UDkL8Hdg8T$o-@~zon7y4*71f&$ns`w&z-q*Kh8aKH~;=K zsz%lG>N#9TRbD;RpX-d{jmsC|< zP$$&5YN}aPQIq)8G}kiz)_UJ?hQmf?S*@vUGe=&XRX5CcE2@LLt{PGAt2d2aQDeJm zOKqC*t=_0@$WV_K^jKGm>KZiastw#N8{H_eqFy&MMr%+|7cs*o#%)9D0<>-56KA0= zg&185s*Ev9kZGwoT(@=^JqevQb{R8|^|!F*8uVFm#>VM=2|HeK#`RmQfW35}9mkb1 zZ_63YSr?4wJe5^ntC^42OF%}^)o+!ac4X<$`QQ|~|#6+URM1;i2 zSc!^yJ96iz5+$N`{%WE`)Xq;QN<{7awM2=iosT7WoqInSVXZOc`<*e9#~h5CJ5D~A z5h*i}CCW7Ln#89HK2PB~W1_nl5!*-2Jc4|`>hJZ}`l{xgq50R z-YVj|jJru_Fo(4m*>lL2D&B46aT(V|hVka}m)n8=o zNYN}fo|-W;=hS&)C+flbyh<-yGHaJ$x7nRJO4z}=LDIE><|<>BY0S5PxxAg(h?rL~ z<2J0a)i+;oM@`H?OB6#p2zn$uiWX%pibu3E{87Vu#rTGHI|rX~r96;V5S2L03b5{I zX_1cKvr=s0*BlV?3?zL&PhsYpO5|CKI6v)5?C01SBRy}>v<10!vp+^QJ%1j17VYb} zYrumGKumh1XuQj~D8a6bclniiABBAdO>@vF7r6_r(1MiIfO%-&fmiu$5gwYy+I75Z zn2YtNjoQb^k*aye%+3|AL#hqS#Z?P8`o$(S?DraK*(z4Fp0t*Ylyaz#GByfBk;t#;EhiWe&(Qi$9OxB9STd(@NhnsOSIL?V2;Ot?N`jW zHtvrZkNEsTGOYot_)Mk>T^U`Bv97UY3wMkQvKE`mjPW=YSMKYehk~Xe*w>%eCspSM#zF5?#;L-Xp8Ih%>s!Whak_6G2o zb8P{uxu)wA+NGe5z&|6nYMkm^Xf%|KgJT@GYu2t;*qBD8Wm`t{%wf}H&`$GN2*3FMTUOGt5V)+XD1H6}x z&Hsz7w0rEtWfj3Q{5p0oT!`mP;`Hzw#PW{3dI>Mi=yRIz>Qg-?l+EgvO}LEhpcqAT zd_{AK;OT%|a0$q>3eS81%(C{h%pupSq4pR1{lPGWbo)$>fo;So`!$=$L_t$q8(qs} zj~3}sbogCPV`uEya+jX^5GROLQ~li?`W0R})iu~-2GJ1xWXbInx*b&3Dp%g`S&)~~ zinq;G&SC5`li|#uvMxX~N*4xP@jaY`3Xt;|82d%8&l`y4>)5e$v)o@?M6eOF>4XVaezhF}w;^GHAEg z^C?Aga> zdajaoSCUt>JfBeUzgzsLu&jX0X!jWqGsZp<-)nVspN8*mm33DNSKIi^6u-r>7aQk; t+06Z~0KZ!J*d|z3QZ3LDv&Z)C?jiS?~(NA}QCo{9=&HK z@4;hoNco#FMr3tjJNVs)PrVVNFfjM{w*;-AIa+03CH5iqF$i@or{LwRBl@g> zsbEzy#E{`RL!GkRxxkXPT7x`Pp8@rdf*G?#rLyi23Pa9ECvVZ$9sH?)M(5~mK2Y%1%9oM;$MI9S)i|9U4cL}So lC!pyJ>$DwE!)NxqLVL4u*3@AmFmzLeJMJ3s|8`?Z*H7d~!_oi% literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Typedef.h b/virtuanessrc097-master/Typedef.h new file mode 100644 index 0000000000000000000000000000000000000000..521fc619fa86650e3e1231c3b62456f0609d10b3 GIT binary patch literal 3206 zcmd5;?@Jp&5Pe^-(Es5e-$Ki&NTKvo+r%Fr8aZxokH3Zf4%Tnc3Hu1Z{j?qtQl!kNCi68}S;AD!)4Tj#GYOKKtmQ%UOrd9qi+f z-;;Nap~|n-ad(JYj4{Mx5b5gtdQj^*attu?eAvQTbsOo>2%NlW4rI)mZw-D#6C9Uy1M4DF88osJ=bzFtWP+<|$C3tdKDShv> z@%cJbrq!bg7kV2qyQi7h3~9`UIxNc|mm^YV+B}C|&FMRB+J3iEUL)*;3}I{470py= zI9n^XW%~0m^ZhgJ`IwNm+1yXP9Q9F6; +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** ҏWȂł ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=VirtuaNES - Win32 Debug +!MESSAGE ͗LҲ̧قł͂܂B ۼުĂނ邽߂ɂ NMAKE gpĂB +!MESSAGE [Ҳ̧ق̴߰] ނgpĎsĂ +!MESSAGE +!MESSAGE NMAKE /f "VirtuaNES.mak". +!MESSAGE +!MESSAGE NMAKE ̎sɍ\wł܂ +!MESSAGE ײݏϸۂ̐ݒ`܂B: +!MESSAGE +!MESSAGE NMAKE /f "VirtuaNES.mak" CFG="VirtuaNES - Win32 Debug" +!MESSAGE +!MESSAGE I”\ Ӱ: +!MESSAGE +!MESSAGE "VirtuaNES - Win32 Release" ("Win32 (x86) Application" p) +!MESSAGE "VirtuaNES - Win32 Debug" ("Win32 (x86) Application" p) +!MESSAGE "VirtuaNES - Win32 Profile" ("Win32 (x86) Application" p) +!MESSAGE "VirtuaNES - Win32 Release_Debugout" ("Win32 (x86) Application" p) +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "Zlib" /I "." /I "NES" /I "NES\Mapper" /I "NES\ApuEx" /I "NES\ApuEx\emu2413" /I "NES\PadEx" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /i "res" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib comctl32.lib imm32.lib dinput.lib shlwapi.lib /nologo /subsystem:windows /map /machine:I386 +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MT /W3 /Gm /GX /ZI /Od /I "." /I "NES" /I "NES\Mapper" /I "NES\ApuEx" /I "NES\ApuEx\emu2413" /I "NES\PadEx" /I "Zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib comctl32.lib imm32.lib dinput.lib shlwapi.lib libcmtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "VirtuaNES___Win32_Profile" +# PROP BASE Intermediate_Dir "VirtuaNES___Win32_Profile" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Profile" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I "NES" /I "NES\Mapper" /I "NES\ApuEx" /I "NES\PadEx" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /Z7 /O2 /I "." /I "NES" /I "NES\Mapper" /I "NES\ApuEx" /I "NES\ApuEx\emu2413" /I "NES\PadEx" /I "Zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib comctl32.lib imm32.lib dinput.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib comctl32.lib imm32.lib dinput.lib shlwapi.lib /nologo /subsystem:windows /profile /map:"VirtuaNES.map" /debug /machine:I386 +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "VirtuaNES___Win32_Release_Debugout" +# PROP BASE Intermediate_Dir "VirtuaNES___Win32_Release_Debugout" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Release_Debugout" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I "NES" /I "NES\Mapper" /I "NES\ApuEx" /I "NES\PadEx" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_DEBUGOUT" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /Z7 /O2 /I "." /I "NES" /I "NES\Mapper" /I "NES\ApuEx" /I "NES\ApuEx\emu2413" /I "NES\PadEx" /I "Zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_DEBUGOUT" /YX /FD /c +# SUBTRACT CPP /Fr +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib comctl32.lib imm32.lib dinput.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib comctl32.lib imm32.lib dinput.lib shlwapi.lib /nologo /subsystem:windows /map /debug /machine:I386 +# SUBTRACT LINK32 /nodefaultlib + +!ENDIF + +# Begin Target + +# Name "VirtuaNES - Win32 Release" +# Name "VirtuaNES - Win32 Debug" +# Name "VirtuaNES - Win32 Profile" +# Name "VirtuaNES - Win32 Release_Debugout" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\AboutDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\App.cpp +# End Source File +# Begin Source File + +SOURCE=.\Archive.cpp +# End Source File +# Begin Source File + +SOURCE=.\AviConvDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\AviWriter.cpp +# End Source File +# Begin Source File + +SOURCE=.\ChatDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\CheatDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\Com.cpp +# End Source File +# Begin Source File + +SOURCE=.\Config.cpp +# End Source File +# Begin Source File + +SOURCE=.\ControllerDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\Crclib.cpp +# End Source File +# Begin Source File + +SOURCE=.\DatachBarcodeDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\DebugOut.cpp +# End Source File +# Begin Source File + +SOURCE=.\DipSwitchDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\DirectDraw.cpp +# End Source File +# Begin Source File + +SOURCE=.\DirectInput.cpp +# End Source File +# Begin Source File + +SOURCE=.\DirectSound.cpp +# End Source File +# Begin Source File + +SOURCE=.\EmulatorDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\EmuThread.cpp +# End Source File +# Begin Source File + +SOURCE=.\FolderDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\GameOptionDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\GraphicsDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\JoyAxisDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\LanguageDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\LauncherDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\MainFrame.cpp +# End Source File +# Begin Source File + +SOURCE=.\MemoryView.cpp +# End Source File +# Begin Source File + +SOURCE=.\MMTimer.cpp +# End Source File +# Begin Source File + +SOURCE=.\MovieDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\MovieInfoDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\NameTableView.cpp +# End Source File +# Begin Source File + +SOURCE=.\NetPlay.cpp +# End Source File +# Begin Source File + +SOURCE=.\NetPlayDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\PaletteEdit.cpp +# End Source File +# Begin Source File + +SOURCE=.\PaletteView.cpp +# End Source File +# Begin Source File + +SOURCE=.\Pathlib.cpp +# End Source File +# Begin Source File + +SOURCE=.\PatternView.cpp +# End Source File +# Begin Source File + +SOURCE=.\Plugin.cpp +# End Source File +# Begin Source File + +SOURCE=.\Recent.cpp +# End Source File +# Begin Source File + +SOURCE=.\Registry.cpp +# End Source File +# Begin Source File + +SOURCE=.\RomInfoDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\ShortcutDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\SimpleVirusChecker.c +# End Source File +# Begin Source File + +SOURCE=.\SoundDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\VirtuaNES.rc +# End Source File +# Begin Source File + +SOURCE=.\WaveRec.cpp +# End Source File +# Begin Source File + +SOURCE=.\WinMain.cpp +# End Source File +# Begin Source File + +SOURCE=.\Wnd.cpp +# End Source File +# Begin Source File + +SOURCE=.\WndHook.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\AboutDlg.h +# End Source File +# Begin Source File + +SOURCE=.\App.h +# End Source File +# Begin Source File + +SOURCE=.\Archive.h +# End Source File +# Begin Source File + +SOURCE=.\AviConvDlg.h +# End Source File +# Begin Source File + +SOURCE=.\AviWriter.h +# End Source File +# Begin Source File + +SOURCE=.\ChatDlg.h +# End Source File +# Begin Source File + +SOURCE=.\CheatDlg.h +# End Source File +# Begin Source File + +SOURCE=.\CHyperLink.h +# End Source File +# Begin Source File + +SOURCE=.\Com.h +# End Source File +# Begin Source File + +SOURCE=.\Config.h +# End Source File +# Begin Source File + +SOURCE=.\ControllerDlg.h +# End Source File +# Begin Source File + +SOURCE=.\Crclib.h +# End Source File +# Begin Source File + +SOURCE=.\DatachBarcodeDlg.h +# End Source File +# Begin Source File + +SOURCE=.\DebugOut.h +# End Source File +# Begin Source File + +SOURCE=.\DipSwitchDlg.h +# End Source File +# Begin Source File + +SOURCE=.\DirectDraw.h +# End Source File +# Begin Source File + +SOURCE=.\DirectInput.h +# End Source File +# Begin Source File + +SOURCE=.\DirectSound.h +# End Source File +# Begin Source File + +SOURCE=.\EmulatorDlg.h +# End Source File +# Begin Source File + +SOURCE=.\EmuThread.h +# End Source File +# Begin Source File + +SOURCE=.\FolderDlg.h +# End Source File +# Begin Source File + +SOURCE=.\GameOptionDlg.h +# End Source File +# Begin Source File + +SOURCE=.\GraphicsDlg.h +# End Source File +# Begin Source File + +SOURCE=.\hq2x.h +# End Source File +# Begin Source File + +SOURCE=.\interp.h +# End Source File +# Begin Source File + +SOURCE=.\JoyAxisDlg.h +# End Source File +# Begin Source File + +SOURCE=.\LanguageDlg.h +# End Source File +# Begin Source File + +SOURCE=.\LauncherDlg.h +# End Source File +# Begin Source File + +SOURCE=.\lq2x.h +# End Source File +# Begin Source File + +SOURCE=.\lzAscii.h +# End Source File +# Begin Source File + +SOURCE=.\lzSight.h +# End Source File +# Begin Source File + +SOURCE=.\lzTVlayer.h +# End Source File +# Begin Source File + +SOURCE=.\Macro.h +# End Source File +# Begin Source File + +SOURCE=.\MainFrame.h +# End Source File +# Begin Source File + +SOURCE=.\MemoryView.h +# End Source File +# Begin Source File + +SOURCE=.\MMTimer.h +# End Source File +# Begin Source File + +SOURCE=.\MovieDlg.h +# End Source File +# Begin Source File + +SOURCE=.\MovieInfoDlg.h +# End Source File +# Begin Source File + +SOURCE=.\NameTableView.h +# End Source File +# Begin Source File + +SOURCE=.\NetPlay.h +# End Source File +# Begin Source File + +SOURCE=.\NetPlayDlg.h +# End Source File +# Begin Source File + +SOURCE=.\nx_2xSaI.h +# End Source File +# Begin Source File + +SOURCE=.\nx_hq2x.h +# End Source File +# Begin Source File + +SOURCE=.\nx_Scale2x.h +# End Source File +# Begin Source File + +SOURCE=.\nx_Super2xSaI.h +# End Source File +# Begin Source File + +SOURCE=.\nx_Super2xSaI_32bpp_mmx.h +# End Source File +# Begin Source File + +SOURCE=.\nx_SuperEagle.h +# End Source File +# Begin Source File + +SOURCE=.\PaletteEdit.h +# End Source File +# Begin Source File + +SOURCE=.\PaletteView.h +# End Source File +# Begin Source File + +SOURCE=.\Pathlib.h +# End Source File +# Begin Source File + +SOURCE=.\PatternView.h +# End Source File +# Begin Source File + +SOURCE=.\Plugin.h +# End Source File +# Begin Source File + +SOURCE=.\Pngwrite.h +# End Source File +# Begin Source File + +SOURCE=.\Recent.h +# End Source File +# Begin Source File + +SOURCE=.\Registry.h +# End Source File +# Begin Source File + +SOURCE=.\Render.h +# End Source File +# Begin Source File + +SOURCE=.\Render16bpp.h +# End Source File +# Begin Source File + +SOURCE=.\Render24bpp.h +# End Source File +# Begin Source File + +SOURCE=.\Render32bpp.h +# End Source File +# Begin Source File + +SOURCE=.\Render8bpp.h +# End Source File +# Begin Source File + +SOURCE=.\resource.h +# End Source File +# Begin Source File + +SOURCE=.\RomInfoDlg.h +# End Source File +# Begin Source File + +SOURCE=.\ShortcutDlg.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleVirusChecker.h +# End Source File +# Begin Source File + +SOURCE=.\SoundDlg.h +# End Source File +# Begin Source File + +SOURCE=.\Typedef.h +# End Source File +# Begin Source File + +SOURCE=.\VirtuaNESres.h +# End Source File +# Begin Source File + +SOURCE=.\WaveRec.h +# End Source File +# Begin Source File + +SOURCE=.\Wnd.h +# End Source File +# Begin Source File + +SOURCE=.\WndHook.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\CheatImageList.bmp +# End Source File +# Begin Source File + +SOURCE=.\res\header_down.ico +# End Source File +# Begin Source File + +SOURCE=.\res\header_up.ico +# End Source File +# Begin Source File + +SOURCE=.\LauncherImageList.bmp +# End Source File +# Begin Source File + +SOURCE=.\res\VirtuaNES.exe.manifest +# End Source File +# Begin Source File + +SOURCE=.\res\VirtuaNES.ico +# End Source File +# End Group +# Begin Group "NES" + +# PROP Default_Filter "" +# Begin Group "Mapper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\NES\Mapper\EEPROM.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper.h +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper000.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper000.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper001.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper001.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper002.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper002.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper003.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper003.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper004.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper004.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper005.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper005.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper006.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper006.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper007.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper007.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper008.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper008.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper009.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper009.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper010.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper010.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper011.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper011.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper012.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper012.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper013.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper013.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper015.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper015.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper016.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper016.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper017.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper017.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper018.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper018.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper019.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper019.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper021.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper021.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper022.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper022.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper023.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper023.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper024.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper024.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper025.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper025.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper026.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper026.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper027.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper027.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper032.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper032.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper033.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper033.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper034.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper034.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper040.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper040.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper041.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper041.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper042.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper042.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper043.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper043.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper044.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper044.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper045.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper045.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper046.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper046.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper047.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper047.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper048.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper048.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper050.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper050.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper051.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper051.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper057.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper057.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper058.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper058.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper060.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper060.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper061.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper061.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper062.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper062.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper064.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper064.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper065.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper065.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper066.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper066.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper067.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper067.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper068.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper068.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper069.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper069.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper070.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper070.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper071.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper071.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper072.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper072.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper073.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper073.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper074.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper074.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper075.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper075.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper076.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper076.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper077.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper077.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper078.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper078.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper079.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper079.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper080.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper080.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper082.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper082.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper083.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper083.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper085.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper085.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper086.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper086.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper087.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper087.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper088.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper088.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper089.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper089.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper090.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper090.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper091.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper091.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper092.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper092.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper093.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper093.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper094.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper094.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper095.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper095.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper096.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper096.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper097.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper097.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper099.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper099.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper100.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper100.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper101.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper101.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper105.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper105.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper107.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper107.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper108.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper108.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper109.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper109.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper110.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper110.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper112.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper112.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper113.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper113.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper114.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper114.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper115.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper115.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper116.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper116.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper117.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper117.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper118.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper118.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper119.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper119.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper122.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper122.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper133.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper133.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper134.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper134.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper135.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper135.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper140.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper140.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper142.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper142.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper151.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper151.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper160.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper160.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper164.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper164.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper165.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper165.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper167.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper167.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper180.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper180.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper181.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper181.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper182.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper182.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper183.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper183.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper185.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper185.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper187.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper187.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper188.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper188.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper189.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper189.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper190.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper190.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper191.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper191.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper193.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper193.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper194.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper194.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper198.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper198.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper200.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper200.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper201.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper201.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper202.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper202.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper222.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper222.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper225.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper225.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper226.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper226.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper227.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper227.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper228.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper228.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper229.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper229.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper230.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper230.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper231.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper231.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper232.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper232.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper233.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper233.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper234.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper234.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper235.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper235.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper236.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper236.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper240.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper240.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper241.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper241.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper242.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper242.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper243.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper243.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper244.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper244.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper245.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper245.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper246.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper246.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper248.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper248.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper249.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper249.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper251.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper251.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper252.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper252.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper254.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper254.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper255.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\Mapper255.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\MapperFactory.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\MapperFDS.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\MapperFDS.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\MapperNSF.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\Mapper\MapperNSF.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Group "ApuEx" + +# PROP Default_Filter "" +# Begin Group "emu2413" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\NES\ApuEX\emu2413\2413tone.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\emu2413\emu2413.c +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\emu2413\emu2413.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\emu2413\vrc7tone.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_FDS.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_FDS.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_FME7.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_FME7.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_INTERFACE.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_INTERNAL.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_INTERNAL.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_MMC5.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_MMC5.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_N106.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_N106.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_VRC6.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_VRC6.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_VRC7.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ApuEX\APU_VRC7.h +# End Source File +# End Group +# Begin Group "PadEx" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_CrazyClimber.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_CrazyClimber.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_ExcitingBoxing.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_ExcitingBoxing.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_FamlyTrainer.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_FamlyTrainer.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Gyromite.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Gyromite.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_HyperShot.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_HyperShot.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Keyboard.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Keyboard.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Mahjang.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Mahjang.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_OekakidsTablet.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_OekakidsTablet.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Paddle.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Paddle.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_SpaceShadowGun.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_SpaceShadowGun.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Supor_Keyboard.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Supor_Keyboard.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Toprider.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Toprider.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_TurboFile.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_TurboFile.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_VSUnisystem.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_VSUnisystem.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_VSZapper.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_VSZapper.h +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Zapper.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\PadEX\EXPAD_Zapper.h + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Source File + +SOURCE=.\NES\APU.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\APU.h +# End Source File +# Begin Source File + +SOURCE=.\NES\Cheat.h +# End Source File +# Begin Source File + +SOURCE=.\NES\Cpu.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\CPU.h +# End Source File +# Begin Source File + +SOURCE=.\NES\IPS.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\IPS.h +# End Source File +# Begin Source File + +SOURCE=.\NES\MMU.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\MMU.h +# End Source File +# Begin Source File + +SOURCE=.\NES\Nes.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\Nes.h +# End Source File +# Begin Source File + +SOURCE=.\NES\PAD.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\PAD.h +# End Source File +# Begin Source File + +SOURCE=.\NES\PPU.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\PPU.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ROM.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ROM.h +# End Source File +# Begin Source File + +SOURCE=.\NES\ROM_Patch.cpp + +!IF "$(CFG)" == "VirtuaNES - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Profile" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "VirtuaNES - Win32 Release_Debugout" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\NES\ROMDB.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\ROMDB.h +# End Source File +# Begin Source File + +SOURCE=.\NES\State.h +# End Source File +# Begin Source File + +SOURCE=.\NES\VS_Setting.h +# End Source File +# Begin Source File + +SOURCE=.\NES\VsUnisystem.cpp +# End Source File +# Begin Source File + +SOURCE=.\NES\VsUnisystem.h +# End Source File +# End Group +# Begin Group "Zlib" + +# PROP Default_Filter "*.c *.cpp *.h" +# Begin Source File + +SOURCE=.\zlib\unzip.c +# End Source File +# Begin Source File + +SOURCE=.\zlib\unzip.h +# End Source File +# Begin Source File + +SOURCE=.\zlib\zconf.h +# End Source File +# Begin Source File + +SOURCE=.\zlib\zlib.h +# End Source File +# Begin Source File + +SOURCE=.\zlib\zlib.lib +# End Source File +# End Group +# End Target +# End Project diff --git a/virtuanessrc097-master/VirtuaNES.dsw b/virtuanessrc097-master/VirtuaNES.dsw new file mode 100644 index 00000000..23a7e333 --- /dev/null +++ b/virtuanessrc097-master/VirtuaNES.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# x: ܰ߰ ̧ ҏW܂͍폜Ȃł! + +############################################################################### + +Project: "VirtuaNES"=.\VirtuaNES.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/virtuanessrc097-master/VirtuaNES.opt b/virtuanessrc097-master/VirtuaNES.opt new file mode 100644 index 0000000000000000000000000000000000000000..0670752db307f4bab8d109203b7dd32a7ea526ef GIT binary patch literal 55808 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 W2AF|+#sJ6v?iuxLm>Ia|4Ezsw+9AFG literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/VirtuaNES.rc b/virtuanessrc097-master/VirtuaNES.rc new file mode 100644 index 00000000..0774a99f --- /dev/null +++ b/virtuanessrc097-master/VirtuaNES.rc @@ -0,0 +1,120 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" +#include "virtuanesres.h" +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// { resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) +#ifdef _WIN32 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +#pragma code_page(932) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""winres.h""\r\n" + "#include ""virtuanesres.h""\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST ""res\\\\VirtuaNES.exe.manifest""\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON ICON DISCARDABLE "res\VirtuaNES.ico" +IDI_SORT_DOWN ICON DISCARDABLE "res\header_down.ico" +IDI_SORT_UP ICON DISCARDABLE "res\header_up.ico" + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,0,9,5 + PRODUCTVERSION 0,0,9,5 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "041104b0" + BEGIN + VALUE "FileDescription", "VirtuaNES NES emulator for Win32\0" + VALUE "FileVersion", "0.95\0" + VALUE "InternalName", "VirtuaNES\0" + VALUE "LegalCopyright", "Copyright (C) 2001-2007 Norix\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x411, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_CHEATIMAGELIST BITMAP DISCARDABLE "res\CheatImageList.bmp" +IDB_LAUNCHERIMAGELIST BITMAP DISCARDABLE "res\LauncherImageList.bmp" +#endif // { resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "res\\VirtuaNES.exe.manifest" + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/virtuanessrc097-master/VirtuaNES.sln b/virtuanessrc097-master/VirtuaNES.sln new file mode 100644 index 00000000..3389f87d --- /dev/null +++ b/virtuanessrc097-master/VirtuaNES.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VirtuaNES", "VirtuaNES.vcxproj", "{788F7F02-C4F5-4477-8429-CB02507855EA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Profile|Win32 = Profile|Win32 + Release_Debugout|Win32 = Release_Debugout|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {788F7F02-C4F5-4477-8429-CB02507855EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Debug|Win32.Build.0 = Debug|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Profile|Win32.ActiveCfg = Profile|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Profile|Win32.Build.0 = Profile|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Release_Debugout|Win32.ActiveCfg = Release_Debugout|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Release_Debugout|Win32.Build.0 = Release_Debugout|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Release|Win32.ActiveCfg = Release|Win32 + {788F7F02-C4F5-4477-8429-CB02507855EA}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/virtuanessrc097-master/VirtuaNES.vcxproj b/virtuanessrc097-master/VirtuaNES.vcxproj new file mode 100644 index 00000000..1fbde566 --- /dev/null +++ b/virtuanessrc097-master/VirtuaNES.vcxproj @@ -0,0 +1,2426 @@ + + + + + Debug + Win32 + + + Profile + Win32 + + + Release_Debugout + Win32 + + + Release + Win32 + + + + + + {788F7F02-C4F5-4477-8429-CB02507855EA} + 10.0 + + + + Application + v110 + false + MultiByte + + + Application + v110 + false + MultiByte + + + Application + v143 + false + MultiByte + + + Application + v110 + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + .\ + .\Profile\ + false + + + .\ + .\Debug\ + true + + + .\ + .\Release\ + false + + + .\ + .\Release_Debugout\ + false + + + + MultiThreaded + Default + true + true + MaxSpeed + true + Level3 + OldStyle + .;NES;NES\Mapper;NES\ApuEx;NES\ApuEx\emu2413;NES\PadEx;Zlib;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + .\Profile\ + .\Profile\VirtuaNES.pch + .\Profile\ + .\Profile\ + + + true + NDEBUG;%(PreprocessorDefinitions) + .\VirtuaNES.tlb + true + Win32 + + + 0x0411 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\VirtuaNES.bsc + + + true + true + Windows + false + .\VirtuaNES.exe + odbc32.lib;odbccp32.lib;winmm.lib;comctl32.lib;imm32.lib;dinput8.lib;shlwapi.lib;%(AdditionalDependencies) + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level3 + true + ProgramDatabase + .;NES;NES\Mapper;NES\ApuEx;NES\ApuEx\emu2413;NES\PadEx;Zlib;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + .\Debug\ + .\Debug\VirtuaNES.pch + .\Debug\ + .\Debug\ + EnableFastChecks + /ZI- %(AdditionalOptions) + + + true + _DEBUG;%(PreprocessorDefinitions) + .\VirtuaNES.tlb + true + Win32 + + + 0x0411 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\VirtuaNES.bsc + + + true + true + Windows + false + .\VirtuaNES.exe + odbc32.lib;odbccp32.lib;winmm.lib;comctl32.lib;imm32.lib;dinput8.lib;shlwapi.lib;%(AdditionalDependencies) + false + + + + + MultiThreaded + Default + true + true + MaxSpeed + true + Level3 + Zlib;.;NES;NES\Mapper;NES\ApuEx;NES\ApuEx\emu2413;NES\PadEx;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + .\Release\ + .\Release\VirtuaNES.pch + .\Release\ + .\Release\ + + + true + NDEBUG;%(PreprocessorDefinitions) + .\VirtuaNES.tlb + true + Win32 + + + 0x0411 + res;%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + + + true + .\VirtuaNES.bsc + + + true + Windows + false + .\VirtuaNES.exe + odbc32.lib;odbccp32.lib;winmm.lib;comctl32.lib;imm32.lib;dinput8.lib;shlwapi.lib;%(AdditionalDependencies) + + + + + MultiThreaded + Default + true + true + MaxSpeed + true + Level3 + OldStyle + .;NES;NES\Mapper;NES\ApuEx;NES\ApuEx\emu2413;NES\PadEx;Zlib;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_DEBUGOUT;%(PreprocessorDefinitions) + .\Release_Debugout\ + .\Release_Debugout\VirtuaNES.pch + .\Release_Debugout\ + .\Release_Debugout\ + + + true + NDEBUG;%(PreprocessorDefinitions) + .\VirtuaNES.tlb + true + Win32 + + + 0x0411 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\VirtuaNES.bsc + + + true + true + Windows + false + .\VirtuaNES.exe + odbc32.lib;odbccp32.lib;winmm.lib;comctl32.lib;imm32.lib;dinput8.lib;shlwapi.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/virtuanessrc097-master/VirtuaNES.vcxproj.filters b/virtuanessrc097-master/VirtuaNES.vcxproj.filters new file mode 100644 index 00000000..8be61672 --- /dev/null +++ b/virtuanessrc097-master/VirtuaNES.vcxproj.filters @@ -0,0 +1,1565 @@ + + + + + {838e2a92-2af0-4988-bfc6-aeb761e74092} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {fa211b91-695f-494c-a6e4-ab261099e7fb} + h;hpp;hxx;hm;inl + + + {3bc77606-806d-4a5d-8f1b-e9942058e1f7} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {8d8c1a1f-0fb2-4a32-a7b1-e8a0c8d8f7b6} + + + {039fef49-90d4-4d8f-8939-7549f680ee2e} + + + {98caa730-39c5-4a07-a91e-634a37b87045} + + + {ac6b7630-911f-4b5b-b42d-dcbbc3f761aa} + + + {1fecdf47-2af5-4bbf-acb6-a4d40709f6dc} + + + {bc932c3f-9d44-4b6d-82ab-cf162aadc0cd} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\ApuEx\emu2413 + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + Zlib + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\Mapper + + + NES\ApuEx\emu2413 + + + NES\ApuEx\emu2413 + + + NES\ApuEx\emu2413 + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\ApuEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES\PadEx + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + NES + + + Zlib + + + Zlib + + + Zlib + + + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + + + Resource Files + + + + + Zlib + + + \ No newline at end of file diff --git a/virtuanessrc097-master/VirtuaNESres.h b/virtuanessrc097-master/VirtuaNESres.h new file mode 100644 index 0000000000000000000000000000000000000000..f0873f26b603afe53366002a5f9b76308824609e GIT binary patch literal 55952 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/WaveRec.h b/virtuanessrc097-master/WaveRec.h new file mode 100644 index 0000000000000000000000000000000000000000..ed7ff0f044ac589a42a91d4877324c9d4316ded8 GIT binary patch literal 1822 zcmb7_?Qar65XR^0nfO1P@C6$q@#TXlM#GE5CRG}amYBvg2#3A2aD+QbYJ-2e`kP(u zj=KY+xv;zJK07ndGqbzDf7PWfkL3|42`c>@)94X_-f+$ z%CzeB({?6_d~R5+O!Th2l{IXXOUNja=W;FY3|nPc#6}W>48Z;!H-p*CsCd7F+#f*& zoAnxnG580Aamd6+6zQY4 z!@Sz-qgt2mQeMkfX_ysT4V84w#^I2?q4b#T7}Nx%x~OnV%pUy@`o=*&1NkCn8($GliW-d)QwaRaWHVhB&5t5kBM8>uz*wxP~T6b65_x+9vT8k=JN3=ksBcV9IPg zP&2ew#)nZYe8nIl`1<6)qaCOCyyr5u?4h_Lzf?6b#}98Z6^0m-zcW*52l_L z3d^HwoP#7MKTEc1b-r6x*Es4?PbS&h( z;c`y4j^WZI8jo><)s4}ys78<7nGzSof5K^Z(S8A+6*iSwb~0QvTw~Lo{*0MsJ~W*5 z{?R+l=1u1V)YmHX(_9uS%fY67iKd`;Pg_!ZN9G1nhBoJ$ZLfT)Sk{|dUngh#vOO{H K&cDA-YUdAeHUWnK literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/WinMain.cpp b/virtuanessrc097-master/WinMain.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8c4042b80e0ac5e88518fc65087d20a3704906b7 GIT binary patch literal 11734 zcmds7O>A6O6~1LR(5?_-gVf1HO`Mj5O9&NmDaf9QohW0EJ2Q?GInmS}j~!!Y#_><> zq)COkfRGfaWYGm1L_y_mQ4k9fu?Q6`$^r=qg|YzDzygJWy66r<%lF+gXYPG}9;c-O zp^@i}-@EsmbI;Fr&OP_N^Y(5tXIf_7ESfg1IdjyEsa@W%p~2WSvDJvPu_giY&u?Zrh{K==72e4KG)^aZ|qi|(M`}i zi%-+6n^o}Ko^}&s)*;obSqMgENxkN1Qo@C{S{?Fs?4EVNiX9d5S_?5?RQh&^? zEuCrs`fY*#2546Bz3${FWN4#cj)Na%-T;qrXt{>}$dl`oSy_CBAlFJTZnu*>v`fKM zL2Ci`Wu@o)jGllD>)^YL8MA%Hj=?AD7)K4Q24l0Noq|5+f^lim%9tatc*iXD89N49 zX{ix#7dv^4rO}>n{z_f6`%o@|d)q~i_)xa(s9pL+J7VQ54V1u}wxuVRoYb3rBnfBK zAk_vq_0wTE=P1Un#C$MIx|*})3bfSf`Xpna2ydXoOZbjknW$1nObBuenF$~W|D%T0 zIs>?K#34%!V~Ht6_;?;vDI2|V23P9vc zDcjv=HSi`%<;^}9lTY^|a~??9fMpJwVc_JbyPq?kz$b5R+dtXA;&a!&Y(KX6k0+?b zoa3^N>j-$yAkOmUar`yFi4k3c1hh1*7pE|6-3rNI~%Wn4^3I)QX0`OQ0o46;jyaC_LlFhBS(>lg=E13{#NeB-Rk6({F9M zPA~m#Xn|h4h=`)rM029mT^Bz*|C0TdeZ$_cuh{R{pF_K<*?B`j~-7 z_MY+>XszKxA85g<9n7Tku3{!=JAVY--7?= zU5&)-n#Z`jc?xq^At&dr;8zE}BbjWM;U~*Bf?xDn(j+gbkhq>XP-ZPd|EACJKaLVq zpXsieRhr1qgfxQgc}U5-i@5Te6&Iym1P#i+jFox0vScec8ZCG~sj~K=R4uHP7$DR? z4?mW8Nb@6BUuV1WMs?(6@E8@M8xZeOaAvuT)%IBYp(JPVk7?2$Xo0c%{DXji=fTmTs@@wUSlU39YQB+tZ9zf25SG33oz4YeZ5= zs~dgPu#QQ$3$p`r(G0wtxoQyBu;w#}3U3Wxl@t*Pt8P5^64AMHF;AdX$Tx?q!yQPt zzw=%fe{u{X&%4Mf029u-$fK`xz?EKdDrF~H!1}%ay<2WcoIil5ZR0PbFTSQ#)h?_p z+_7<8L<#1z@IEaRMqCnGG$J&bxS}xglk(2$w=!(W?8==wbFAc5?(_FM$(Y}m&D+o^ zv*d~y)U;!nbCurqvSwh8-U>J9V&^(n~^+7SzV z#*Y$NW&i)&_^-aU`PEz1wmta5?2XFE5Bj6k!$Sk(DdZ&Va{fcF4=%!hU%PyIA7y3Gii4 zs^)ma`yL$w^Ecl z@g0kQzR&e5(qxo)xryD_tLT>f8c|=i_t#I@V|LMw;9I*qepQO^lvnl>?6Y!jO&Pg+ z@q8&)f8BAEr$(=BgI51}njf^Q#`T3!L9NRAhy~IEYuFpDYuGb?&%Wq7WG}fr^Ab8; zSG#D(Sz--AxDoh1F@jwbt-C@Cg_cRvu*&db`$xy?j@$Wuq_NUsAMPr;YhSUqs;4UZ z$J;iEnC)O+zXZ9ziP>-12kPD)O8+*xoIi#AuG?$&zUQylIr{{6)7YuoSLLV8+rPQoM40RdSVw}3?}Kt^UG=1}qZ zD3^3UAR<(N87F~`>|PMpc)~D=`*rwS6ZOYhFXyQoa`yn9ZDJlX6}x;q53reIxx(n! z0rbi`z>7KaFrp->7tOSBu1$yjAy=#ZL9eGEIc$C zZ|cQ)^X1mm^hc}rJ%76r`nZos?$o0DsxSg+-zhxjc|ugzd@_J%>>O3`HwHbZJo1cZ zKK|LBu06ahRX1TLPVUJnhcA6;Jd`=yNo8ly8R)H1 z&{E|KW%IR2QkL`{M93k;!aRJ8=d03*@R}2@q9y5C`fg?0p1C}DUPjQjv_}%srG>+) zSn?z@KD~hz6fKw>AyKImrPA{C54lYuQrO*QT;ChV^wr%8&YFr{`SjeG{Io7-|C^ma z_88M^*gMD;uh>5Wi|?-w&ohIGj@0)3YPOm~3V8!y1yvMJq?oDMnO}vrqPdc?O~880 z=*j3xYBsKWA9FmvXI)%!HsM~B?|lqG(>$Z)Szy&Ykux>LozT0*PonuUx^_w{wTEI* z7OH1u9e=)?g9nJ82&yKtgUaZ$UUJMd(D*d8Dz(U7>>~H}bgbA$KjewWGM+@wGI#0S^e2YS!_u1nA|8P$8bJScUT31tNmpG1jW-D)F_84{=8#X0j`oZ_m- zC_bs28WZ#bQqXZ+iR`_XdaKk(N#+P&-QIHN`ZsZw^cE_3rKViBM=F&?bj$a8HeCjZ zuZ)$NHpKWRF&0C-qs5@)4}^ zs`mK43~`#VcND+)4iWPn&!n^cF)2&79He}&>-0#<*_27%#9MdSaeKLRuC7^PpkLN! z#4=OKNqKs{m%iH{DkplUpqzE@XE4b9L28BhCL_%IHM zwlnyXopBN;!;Uhw;IT;7N=p9y7e%#AU=6AAd|lQilBVq`RI>knZ`ql4!(P>Y&RUAc NX;xzn7AyIB``_+0J5K-r literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Wnd.cpp b/virtuanessrc097-master/Wnd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..38836a4937554c32bdc3a617039399da360029a7 GIT binary patch literal 5862 zcmc&&T~A|G6x~mg)aZY>V4M_?a`X`$6QB%3>`*?62+@#IN(U*Fv{fLAktdDBn2hlc zsPR=_O?((*j4?hKAN&I*n&@Pnd{g7N);Zmrb8o*88BN2zm!5t0=i2M++xvfw$(TGM z58*l{ksO+rOwqh)mdwZIBlDa22KP_QFXl6&GQ2-3+p;GmsmjZ;DP`;%lq~KW_`f1~ zT$_@STllt{^a}QG1~RHWl3A=Yu)k<6l&yv-aq>CXPU69m9beYBig!f zpR;{@7Ee+){eHd8i%u4|WeXZ38R%iVjJ18leq?P&Ex(<|7x(!Usi6v+U9vubl}+oJ z#x@Ku_gj@vA6)Kw`LGX^HGr{opst84?pU3no@6e2`$ha#&+XS1Vr0dlE{J2DwvpK~ zq>8vxIrsyl$X6h>2hGHS+c6-$_LOZWsr(T3Xzo(b{1N)a`1Ip=rBu*8gVPu$9gj949^EPIQ4c=za^1efH|m!11} z7P_<0RD_ip@^%xJ8u%3POg|&+oX59IGK1$`tW@CT3D+ey3&U|z^=x`Pe&;#4ZfQy)zW6!hBy<#H!5;M$4SRF+SJ?x*~v^Zo9 z$tYNs_HMQM_;G7rGp<>8Xo=^oAd9kmmNiNw@!|2%FXvuTxrK4)bDSj|+SOn7MkI6a zB!`b8(?vvF?V-+{WI9{)3>~-WrQ5lPo-SEL6>LQtwmz(}_Om;Ui1-G2n5W;#l)cw&U|u>)hix?{msJc%0K4=licGR~Gkz zx%xXhU*ByZgL3|4ZqNI9ZTpIPeMxq9IMEFF9j+Vo99F-3<@`NUF_UNL4kdfVa@iPi zC!wBQ-g3N$;^&S^F*iw0b#EJ-AT&orf}0@tl;n%Bqr%!BL$=cl6!(PL;Pkl#R`R?% z4{Rx~{d+%{A+_@7wzYx5!AL%%m)nlCQMusjE5!I)WG8F$`J zhH;c!?37K*kLFKv$J{kF^VRyA3Fp#D)bTLjhl)9P=Z8g}38!;z8uc6zc2JVvwAXUx z;rnW>0(<3!lG!p@yt!x3xFpo0NY~TBuU$TyyG}eGqdzE)_Dmf1Vt;=1``Q^%xv(FH zYp&13xSA`6xI6g0tO5(PKhSofZA92R>r+Um;j!Hgwv3LWPF#m z;v~Zis)t8iJ>;(o`&jMl;RaTl_|$NIb@I{ePI}nBD`R!+w_>b+R(4RHM@}EZdqjlKYU}w0Aa&4A*@yPZxZ=}NXI_{`1bioopN0Cy#tN%GK99;1 zR=eJp?8Ltg{?FqbV^-GejQtuU!<99x@-1c>*GQ79d=DvL?{mS7?kg3aom{`V&h~uU uKC>#PJNZyjndHA?ZRG)PIo|v6sYRta%};J-NY?5>%}>c+UUYu-^UmKy?~if- literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/Wnd.h b/virtuanessrc097-master/Wnd.h new file mode 100644 index 0000000000000000000000000000000000000000..195b58a914854fd0f2a9263f48952c395c3054de GIT binary patch literal 12564 zcmeHOOK4nG7(OfE3gTA8#Vv(0Q(Ak_UHXtDlQy-Jv`tcKQ5vSngxsyrL2b5uQ@7#ON`QP9F zpa0(c_wPQnPd%g_#NT}?RhRX7UDL1XY5kG@Q2(vJ!|_x7oBl%EG4`0McduMMcN*g> zdPzTAYt2;kj^``-tU9aqcUI)+ooZPvsD_$XbsQ5li_fS!ttM3kXGd`yRaJEgzsAg! zSu=ZQd;BtH*883%^n{YkOhJh>o>WhOS`{>g@oU!nCH;x^70YQu&8bzjVW_9-fO-Mk zllLahTIzANqz<+DyT^gATHu2=N? zQ{#}Y_qrA6Z*^1a9@DSsr>ExMq3*bLZ2b{+9G@!qJ_?B{kf8=DP58!yv2hE(7jZ^; zs_F!;POBq0zktz;I9iQaTi1;z)}aB>GOsT~JJeLYqj`Fk(;cnCD+fG{9Rf!e5Lx0M zCvf*7=*u|qmMdLe(^z=)t%ip=lsD!byk6`TzBgO~<%{59!)V9%4mV1)I}VPCNy7b7 z;NOWFH%KuFoU-?+T-VMNt_2UW5~V=$ zCg`TnN)s~D^L!7COH3S|f&MC(({j=`RbUgRW*Bsa zVdE58^8`4e{w^rqB@(&2tKMCQNQv=ED@OwEEYijKt-vmeSm{pj>-%0dQsN$#wF6^E zvhq4KZlgXP8QYYU>;NTm2O(rq6Y0gY)ISRNU`9`|;JEQ7zpx6+pHgw)HdX z*J*r)k=w^iJv)p@AeJ*{`O%&lguatr=I|;mjbLa3&Rxt?EAi2zz!zp~er!(5A3X^S znE_fIR%g0qTzypr(L+R1j{iuZ&-{R2;$<1$x|g$Q?^WO zJlDpZQ1@wjgy7zt#bnkFmdk7`Cm9b()j{Z0L$mw6IW4n$m5f5Xbd^8X&iATW#0vMw zA-0q{=+52zT%g4{QIIUdi%sFRf)YMA5f){VQ1`lK3qp3%sg$aDvFJPy@_aj!yk7@1`!!cuKEYY{2 z_fD?pM_&KyP43}J>Y3^DI8q1abwe-WigZfKJ?)TPKg)yl53BzKd3pl8hV#S{#r6(o zm5|BiQL|ZVryb2%OI9KMX?&-kpHfiiQ9lQbPs%F%&9CJ*@w}kaLDVwPE?X`3qF{Hh zaU8Q=97;6{ZfQ|wODm!5(pcRLF72U=w7V2>t+$2_cyqXyoHsh!K0S$tPok=4?_&Xb zKH{Bpp}4=9M+|S)OJ<=yTSb$)oS z=sX+W4uc)ugtov9iE1na=5ssUpjL=U$2-og68~C#% z7dXu%nQAPXIsM9_7#n;_77Og2Fh7r!I(>w4kVU$4i1=g)$n7f1-9Sx0Zb+H zVbNAB7ssJIJ@H8kD_HRvmkaOP+x9^=Z*M;qXHo62ij^L(_52VOv;7QuR16#Qs;zLh z5U0q9T)^leT z(Nut~N4oY=+*i3CjkRxgcjk8Yx$?U+B1ga785!MgcSc70zMAdl#4ye0sGlCipgn2g zv$YWG`E!MR8DIK-IP0e`)2*XHR;Da|CgPJ#_nUXOr!OPiXS)eu?Zjt&VPD2-y;n!( zc1K9q&#)XO8LyCvX$GEh3aIPn^3C^StnTiFYywi$9d_NPo8vJ(kV|rEJ z)(Y93M!)rUI4{2&W9f*s!&$bP&aa|-_ZqT0>h0??Wb1=oQWaI8gGw8(K6`5@UV(0( zo(Ap4^wy`JNv+RpwWpBvox8m=(7%R?{BNt8yLEneujo8Pt@tiruziQb%iYtHv0mm! zTv*lk*pcnf`?GF!PsVa4dBmq=5y9?|^6@o)ryfUx`#qT|`cUChs{EczzJ-bqX)BhC zqfx%4;~DXOPsUdMo42*r!8gUnv8UpjYJ8S2?@h~7O1?G4H&|B?g$bTL4`GzOBKyPM?Z-!)(CnAe2yC0 zg8kbXcEzi(2y-AM8S}3B?~;j}M=)}|E$LC5)nT7vx%Ob3Ps#6KNe`J%Iqh4yJ7B$j H{`25}aZPk3 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/WndHook.cpp b/virtuanessrc097-master/WndHook.cpp new file mode 100644 index 0000000000000000000000000000000000000000..24257b1eff571d9f7a1b39cc702b939e9c376f0d GIT binary patch literal 3492 zcmc&$OHUI~6h14HF>&j{#85RMEfG0x0ZpV7+Ay@xN03!hp|q9S5~xCaEL<8)H2wrN zY;j|vae;{&{Q)dZ)P;$!l{;g^@7&AnoteJCjhRe4Gxy$ezVn^$oO}2F4ABrBqoep8 zq7Z%LH~fl!^9$bPC;W|f_$&Y9XZ)Ps=ESLvYuPi`AP!LiR@Q*2pimbTq9|$G zW}OpwA8BGALqsWZ$)VtyVH&1ult{XDbDt>Q*$1v%Yx72z^vE3^c z$w~%m8_1~WbP-x)DqTvYx-^E0 zjgr(H~GiAGGl=CR`>R9{V@#-yWO#;8Aft(Q;5<-pE1n4IFiJ&mR}9>cw;*im(B z84Y%Jqx5!h=}wzP_H)ghK;}!O5 zCG}#x>pTW+>K@XW*><^T&DeP`YPoYrcNdvwpQHv3nPd2)KR zJFKjbye;?`LzL}6%~EFt?C4heW@j6~ z_{u(ert8?ThzFzhG~j}t8v2wlWPHnxFbPX8>L-WJAg8HuWGahW;;_C=6xOdlO4~uq p4B_}-S!~}+Ot)|C2(2C2b^?RbL@4}7-pu6A;duuRpcZ`a>~WFI0rO1|V zZ}g)+*YEmXzv)kXsju`i+7J3dkMyk;=WU&mR31u8)+J#LWQDIP%Q7!Fr6zaz>S*rp zUzJ$yqrJtjQ{LL!rFckAY+d#cf^1lq$FUFPsyrbY zi=~Z}%SG9g>yD?L_ZjNQBX+xPJe3Ztb9ci0G?8Y$0+}wf5 zDt=N}U2&QKe_i}`oi32aSfqFkh_Z!b`lhqkg~?f&?qN>0TjX5EFs_3Z7U5*824}l6 z3tGmSkORxp28f~Da8-_xR>^O>m&Z@-_lQ9cDyKz=Ri zEm?p`B1_Co_~hs;S6-8_8oxPd$Za`?lu<9wB%fbL%MGP9~RZN*ls+u zn+@y^M-r6o@w1Ve{6G)1uBpy4x7a)4c8{z5ajySe!Q&n;W5*-d7v}#Dvd1j&s`o68 zL*AxO`a@s4*X!%pm}>nODWrN9*CxH2QSWkpdJOA~lw0S!%HPTTfqOkgmF=e68(8o; LgWr?9ftLNh9wq)a literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/hq2x.h b/virtuanessrc097-master/hq2x.h new file mode 100644 index 0000000000000000000000000000000000000000..7c628f5693d46e45cfb076cac6ed06bc26930b9e GIT binary patch literal 52902 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 G`TqdQBRALp literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/interp.h b/virtuanessrc097-master/interp.h new file mode 100644 index 0000000000000000000000000000000000000000..7893d7e73ba0233045a94f76506d7a9fec628697 GIT binary patch literal 20892 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/lq2x.h b/virtuanessrc097-master/lq2x.h new file mode 100644 index 0000000000000000000000000000000000000000..bf9a74ca6c9c1e1f1e70cb1d57137f8f861e1616 GIT binary patch literal 34334 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 literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/lzAscii.h b/virtuanessrc097-master/lzAscii.h new file mode 100644 index 0000000000000000000000000000000000000000..12ed19dc5f745d770a91da13aca549680b2cd867 GIT binary patch literal 5490 zcmZ{oO|sk|41`&yDtE{MvHYiOgVj$8B^o_dfsD4F&L?(R!hvkzrR8Zf5H)# z@H@113?tU@+jR{y_7m3MpP$3yK9gbV2=(4SpPsyZ7_dIVdGDX*+sp3H@Z)gIdh{dp&*tZ@mvHzJtZldz}BKnC*xeb25Oh3D^$f26-sWh&W$N(^Rj$9CC(O zF5i>~`bX{K96_!Z@SCyE;8+4D6Kat;8ST7k-RnoQ7JWM}{5=fHT}4l!ZR!v6;PI1B zi}eTHzuNuMx&`^6UCuk(hb}SRBly7Y*@KxA)?zlF=&N|*Iaj^%Th=uD9qX{&qdX7; zbvB`1C(Iz+UvP#tCh*?*rXI(8M&ybbNIaau^2JqQAUDW4uASeSub8WhnT50JZa9^n zVtG@pI7gDJ#MAUp82B#nIYPZQL)SQ;dk>a>o;U4BaFzUFZ{@tRKm)Vs*XTzgB(2t53kTb+X?V~PD$UE=kTa4#>^*ZC80sN#! zH=M$7AjZ_3qr>%RwIzNN+YY|5=kR?)|JXM-RFf7mk)>-ZBGbhz*QJnD_ zRn5$XU;F&8$!AKML|*hAP8IiGW%Z^s%bQ|cz$MP!v`bs`o9o8s7l!|0tZtqF literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/lzSight.h b/virtuanessrc097-master/lzSight.h new file mode 100644 index 0000000000000000000000000000000000000000..b5d04eb1c0e8932b44c87048a5f0fe626211f38f GIT binary patch literal 1178 zcmaizOOC@Z3`4mdpm*p2W??6Bk}ms+&(zb;G>K8^324wAA=5HROaFgoB|Wuh)~^~) zYvmg*n!a+_XHqeKhqo5ptX}bM23}Ob84M@o6`%C;QMdCRdf1)1I(>VaUHn? z&V?NJJVRgB)$S(rp?~s;^R9;;dh2!3-EgOi;pV&P%i!?6JM*xrN;z$Mw)>!<&Z} D)*y!~ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/lzTVlayer.h b/virtuanessrc097-master/lzTVlayer.h new file mode 100644 index 0000000000000000000000000000000000000000..c540afac6878e69a54dd79e918e536fa12636ae9 GIT binary patch literal 184978 zcmb{5L2~O%az$Z|9pOFn0(wAFqDT%&ids{z-uC}={dB)d2_3K9o+%Ep03-@1)JcHQ zfB)CtcKh8wc5l1O?(e(&{rrpk{(HYW@OSyg?)8hm>~3Fw@0Yg5zkkIXmuc1}a(mx(zdv@*uk{?r^SOKZ;veMpx@!&}?1Mai zn?sM;E5~)~Z;#DsV|#M{UfZ@GPHfk|jelEm{&jqtgUkGTZGZndW^cQn|2F>oZF@Oa z<^H|4?fTDb%fA!f94?##A8cFh-|xG}S3dUjb9aXKnz?eGT!=aI_uKCD)%L*ob7J3K z*|(R^{%;OPuBQWkpE!^AtoO`0Ex&MH$vwtb_Q{yrUn5J$l3s^*@;CnRdG0j_mwAlk z&y9TCKabymeB@rcNAfY|g?v`t{?GcGgWEeU{nhi~mA*c)4bLUdjWfsZvb%mA<12q( zh_US(>p!vGJ^PmPsyV!{?8KO8KfKWo9-9m2mHfKV54VkDe`mj4kNx~0=fpIJcg8i_ zKe=}0>v-RD*RlV|^>ZX2`3w2TU%A!~^n-n#Ks%jfZJ4ju#h?v4F0=EB$|zj98>ZyZbco#QQkaLvfyxmScYhbPy7ZJayV zkH$C_zbrX-9wC1rpOtsa**^ANXZor+xPSKP8^>uKXF5mp{8`7J#&|B-&nK?Yl{X)c z*Bi$=`8Nm8U60L`b4GsSoRQx*j`4$IVZ8hO&iP}^lk-RZ@tIF^aGB%j>vC>%t}3_R z<*$sDFXV9IxHyhErrU4ci(VMV)91~>HjW!7j*Z*PTqSe3j1T$S96ZL34aPV&$Q>Kx zjt$|>!STU1jt_Fj2f1T|{KoO~+B3$n;k5LBuVZ<}hUTy?>-BWvymt zKl%Au*D+kb=f#=xGxJv+)f#IfHoKqv7SnS+0O z-OF>1GzZ54;~WR%jsbGV0J&p;+%Z7zbuah2&pF&2Jny}BJ=dKh$X^+MbsDeBSMCY+ z&l`Q~HSK-CbHVZB^m*@V4(mOxH4g9X?)TQ;UdP6G9m~Crqn?se?nUdPr!(r?Ydd+^%V-4F9Q;YQx4bUpV^*OTjda$QfZ z>xDN59nUuUo!oqMJ!5n|xyS3e^jm9ta{WyH`Z?!q4$il|7SGGI*zwdH_S`$2&v{Q+ z$KS5U{xnaoL-*VBJiIx0E!xIwQEm=im&SNq%Dpb-UXyaKLwT;l=3s5u<0to8lv|H- zzJ2BX=ry+9vwrsJt@FaMIDOk3>}zW{&atc+I@jO2*P5sME%)BK^3LD9zMVttKkrM; z!RyT0pzBR-Fk`FSepq?O-w(zypA%ehG~2HG)Ad-_xPOiZ&B3w7aUgNO{ie0L1GN+D zfBLuQk7I+iVb2-Yv&Wm)nC6plxjDFAYs;P|9w%$Y=IJ$OymeyZ9UH6}8{>H)pEYBb zd2Yz98Oz;|2jl$**R=UKr&{AX=e1^R%q!h*0+Zap6yb2@IdAW|Ec>07z?4Py@EBR_uT(;Qs( z#K6jpx#ynz&M}ogKCjQ_;Ien-(()%`mt4R3;5s&DPd@tofqdk9&Q-@7$L@>=&B5pL zPx7|T_oUyQw>U4bo?yRwo_HVd-37-V^LL(Np1JOugUh`3<(@x|0me86$Q=XZUiWfy zkbB)vfAHG({*Y@wW2^j~bHMtS+p`wr-_AAG`$PTC{&fBJ|6$yx-G=vv^}UDAXB=ld zADr`=v*&}{`+(d&_q;GB=R(gVmw7(OJs;$r4|2~3x#xq=i#-=s-a5SJMPizR&uMJ$ z@$m2UeCRfeac-v@dY`eLr=vOVSl8KkWNO6C!TW>r0`t)slu5?tb{(a((Zk^B?=o_$&7foxvEdF~|3R)(`7_x^+JN)9c>-_8#Q<rYuoePAD7wha{GGaeLu*)J~9{H z^S6DX4>$%m{^+01N7Lu+2m93h^ZA9`V`J^e7;8szpUcR7E+hB3j6Ba}%%Rtx&t`1n zJy`DC*n6e(CGWd(pUbSg^<&>3UHk3VnBE-LXX$P4w!Jrb|KEDXZXddT_M6;(liP3d z^jmXqnSCdBj_va`W9&n@eJHozbQO=C+})o;eQAI=xOhq~X^ zc-*e%u>5VTtBYU8iL#!f_&CBTxK0Xo;pIDPHsNd6O6H*Ah(7fw}#+zI%^2wy&jy$+r~P+ z+pvBtHy`H|uG4oz`}E=F;45Y_X$~%XP_vNx{*wHI{*n8;8lRz< z&w+f5@i#+q9W%T+yz>0Z{qR|a>(Wu=I*MFBk(-aMVvMdLpU<*frlZJp6uJ9hz14Y# zTtAV!9$m#4-!sZSv>(o#57xThxQ1Mp&kf{PYSi)@>zCiTe&pu!;CwUYeY~&XvL|DL z+-J;kYbw@vo%6|^r^t_7hih%B&xEWCW*^!Q{>IPsp2qb7ejePF( zkL%H6j=3pP`I-Zw@jb|u6|1@6jk?V2ppYOyN?|386@AaC4%gpD>m|)Cp zBcD6{WBh~uk^2ll{=xVr*H1D>ZVuM)oIjh-k$jAKAs@MQA@}2j`>F9dkX#3nPX}_D z4kR}p-wiZI2a@YRaveyn1IcxuJP&9;=s-Rz(1GOU<9nQLPY06gK(12i zf#f=n+$|=s<46_sE^A>OgKo2a=nQ4rGiDB-erD(}7&31IcwD zxeg@Pfjma$qXQYE1Icxu@b-hx`J6BKE|2@?d%$kP`heVbI^^c#dtJu(E|)y-ay18+ z`EH5a_qpW02Q2qmcYfhJz;g5P-3ViR2RPem4n9kDKi;T+xh}s=Air=Amg~22-xZRZ z&x7}ujCmjLFS*R`8puC3^6?!PYpi(};rBalt%Z6{8t?lCZr6N#hLV`}gLPcj>u=oT z{3UYL=<)KKG>LBx_L0xV9V`7^zuafIa_ix8 z$8q=DclnJsMxJLy&B0~nARtF-vg8T-3a;ZGoSW@%kCTb zSbHJAZUeE_Y5YcTO&MPVRP{lN+CW><2xgfBQa{ z?VXd$os-L*lgpix%bkupVe>*>yJ12KPoRiC)le-@0_cu-Q`I{z}`I{!W@2JZCO_SXI@t(ED^fw~bSp9vIeEm(quVd76$=@{D z#_t)sZR?H3>p*hz(SeN7f#f=nd^(WJbRfA7B-erDI*{Ca99yli>OgWGD7^jPvkAB7 zGiJwA9ms9yKyn>OZazAYF*=ZZI*`kBAh`}C*Ma0ZkTp{sNNzrk6UO-7P`sl3paZ!d zI*{wqf#f=nTnCctKyvfZfsC0B(+Ag@;)NUj6Pbs)L<=s?+r_Ja;&dmTuw z1IcwDxeg@Pf#f=n+(+AlI)0$#o#tGablf=Ht4I(ShVTkX#3n z>p*fHNUj5g+Yfah?`7uW{Mi^CNUj69A3Bg+2XZ|+kbF9j%XA>Q`N;iS2a@YRaveyn z1Icxud5`nig!dF3NNzqlklWLNQ4kR}p9mp6RNUj6Pbs*QN z1BLf`(1C2D1Icxub=yBXkZpA!xeg@Pf#lPHT&4rbbs)J8B)5Nbpf#orWDQpblIuY8 zKCJ`UMh9}+I*{=?klcK{2OFaU$#o$4bRd`MKyn>Ot^>(+Ai4SIK=zdmB-eq$dp+nt zZqIkKOt^+xL(ShXVqXQY^bD(Ui{h$N6 zA3Bih(t+eUkX#3n>p*hzaojUzI*`kBAh`}C*MU60bs)J8B-erD=A#2;AKDK(knMFK zxeg@Pf#f=nTnCctKyvfR_1PSZ(}CnVkn=wsNUj6Pbs)J8Ot^>(+pz!8kA9=3ZUI%jA(1GMSkX#3H{W_3b2XZ~rfm~)jI*>6skX#3n z>p*fHNUj6Pb)azjp$=qS)qFfQ#^^wD9mxIgw}#dfbs*QH1IecYxl9L=n~y$Vj1DB% zf#f=nTnCctK*_)TpaXeqbRfC;xD9KBI*>6skn7ZeLjj02z z_o#kbRIUTfdaDj(8y(1P=l@6K`LFRhklcK9AY*hOxeg?s4&*W&NUj6Pbs)J8BsU-D z6y~M_$#tOcUJp8u+tY#MI*{AYf#f=n+Ot^>(+An*4&klcK{ zCmN#zWn1kB9mxIAfn1jkB-erDI*?oklADhXWXyCRm+3%q9Z0SNc|Pbsaveyn1If)t z2g*LQA9Ntw>p*fHNUj6Pbs)J8B-erD<})40I2}l?136#Pf#f=nTnCctKyFtDGCuj( z4}A_~oDL+{f#f=nTnCctKyn>Ot^p*fHNUj5g+Yfah=bq-H0~wWX^AnU3+klcKH4&?T9Ah{0YI&~nq4kVur)< z$9*+M2a@YRavjKdyACw#tvZlxbRfA7v~K%n2ePdWB-erDI*@!ikjr!+xeg@Pf#mj& z+`s*vs$;s(f#f<+c*i9j$Tm8V+tz`M*Ma2bOt^>)< zM+fq69Z0SNg|{DcAh)Lj$#o#Np##ZvAi4QCM>0kSl1~S6nGPh^f#f=nTnF<0r~}E( zM+Y)S2gpDf#f=nTnCctKyn>Ot^>*ao>cBj&A~VwNUj4}Kh=TcI*?oklIuYB z)%xA2-b2&2Ik+yrjVSlqh;qM;DEHfla=(oz_j`!)d=K&W?^Nq*nWr@ezl~^nzl|vO z+lba%{WhZ9ZzIb6ji>$N{oA?Yx(~nlq&Ya3bQ{hk<<2GLnM>xF$(={aokz-@JIb9q zhBpVVedm(4cP?q|)w!hHd8FKVq}+L=+cn0&Gk0tbE;AqJlEyfflxHrPevmtllsk`< zJCBsFbGG&O51xP4Rn5n_q%qDV<<2AJ&LiDF=aI%ckCe|^rOTW@%FV~Qq%oOGey`~} zk2KzSq}+L=+<9bp&n4#<&W)Wv%FV~Qq%qDT-4ExHa_5n*$9beY^T_7lGUtzS=Z|vp z$y_r1V2txfx${W5^GLb#$XRc7E@@54`?TEoCM6I{rmOwTpRkg>))!Mo6n!u(woEoZ#_LZY>ff(t@^q7{PS9Rb8x-?emy-o_`N6R zp?a)*tA1`i-)rg3;s3Xuo*dl2ty;S0nDJZnbMr|py*b$a->;`9hkvz}{;$^0lTUNd zfgCG!Ah`}C*Ma0ZkX#3ndrajzPp;%qbs)J8B-erDI*{9Ses279AeWhs z4rGiDB-erDI*?oklIuY7?|<75eUHd--F$Q)V{{<74kXus+$SB#cpXTdd1P~NnGPg3 zA05aT9Z0SN$#o#P4kXus!kdE*O?)^xv1If)t z2eOu`1Icxu@b-faWE&mG{m_Ao*Ma0ZklcK9AY*)=NS^nJ%%L@L9mqDmQzZADBDv$H zTnDnQYCbxUF}_a}-W+rwx92-Wa^ER(8+oTF^H#Za1Gx?)Hy<6yn7mJ94($gW$Tq%H zB=?;nxenyK%`rf(1If)t2gl@+rLmkL*(0p_t zV{{<74kXus+&>-2cpXSSb8wjsBsU)&$QT_+t^>(+Ah`}C*MY+Ahu$Cb2OUW6{~*$V zjM0JI5AW0d?LE}>ct4fTcXVCm_T+0n^xQMXd#c=bbmiVp<=#)_-cQ5rhrXlheaCyM z+*Y!<>upfZ;a!;+-Lswq2qga zb8w8ejbpsrG2U%E#v5-wj`zlRuaG;|%QL<=2bVd<%N^t8j`4EGc)9sF-mfto>sQz9 zco^Os9OG@{81FW$bIGl9xgP6Wa`W;1QDYpts`j^^x@6HnwQ)2S-;#mm)o$;CAZEc_r4)FAM0Jlwua`Um?m6+yW&CC6;=H+^=bIGl9$*ptAeP>i|jZ1DmsdqI8<2+~N*1Y7_xvZ;N z=aO6Jl3U}FTjN@{yS|fX&CB-sl-!z^+&Y)sI+xtv&B?8C$*pmPw;${yYhJcrk3q+8 z=g-a&t#iq(bIGl7xm{}o#%E6699(8T*1U{yelEA>C3j9PcTO&MPA+#&9^M?Bm)pjC zta&+38!vZGF1OBQTWef$Yh11;HLm91GV5G&^Reb-jPp~uH7~ipo0D7Pl3U{nZw}VE zbVBP~a`Um~Wz5#!I*|LP1KCywl1~S6nGPh^f#l|+0~zC-O0EORbs)J8H0!N8ko8s_ zNUj6P%|{1vKXf45>OgWGNIo6NWjc^t2a@YRa`VxFjB!pN*MZDg2MX`?paa=P2a@YR zZd(U3-h6Z*V{{<74kVur(+Ah`}CHy<5njp;qqxq|hs@b-faWE&mGZRkL9 z9mw_QKyvfZfsE0C$XJ_d^GAy*iLw2a@YR zaveyn1If*2I*@TXkX#3n>p)(AI*?oklIuWn9cbO|wgcJTYe238$#o#P4kXusu3t^>I(9Z0SNxt{4jF4KYJ=A#1{p*fHD7^ik z13A~%f#l|+0~zCdTdo7Se>#xyI*@!ikjr!+xeg>ZA05b;t-p03V{{<74wQR9`#}ft z{-6WNbs)L<=s@m=b41(fKyn>OJ{`zqI*?oklIuWn^U;Bf(ShVTkTE(?c>6&IvW*TT z*MZ!&4rILf=s?Ce$C2wm^65Y>(}CnVkX#3n>p*hz(Sg>OI*|8P9Vop0paa=P2XY%a zkX#3HJvxxwd~_gVyl2a&1G!8GlIuWn9Z0SN$#o#>s^+5u8KVP*w;yyMx2FTibs)E) z1IcwDxeg>ZA05b;@AtT#e>#wDbRfA7B-eqQkN6x&t^>)O zt^>(+pzxkc_K^-`d#`D^4&*$~=Rk5DNUj69ejUj8=|Cu79Aq{=Bh%*LmK(jc*rq zu5sZ!vCVaN``TCe+9!`6WA3}>kNkbt-=ewB=kEAp{KvO^+7J8BoN|8aA_wx3AIV2< zJ}? zeBS9F*Yl)*KkMH$+?>~@FcyoB+8nVs$-g(F06aTl~{d*%H*K;Nx`GtJs_Rp36 zG3NG}PjhhDV!E^4NbI$EOH}YBA_PRfik9CG4`N&_$NB+9& z^KADgzsGG3wsD{QhNv-qLsafJMCE=%RPHxK<$gm{?l(lkn}gpCwT=1s4be5Gb5d)s zenV95H$>%rL)7*Af6nA@pXZx7^c*;I&bbZqxp2N2bLD)K-?@I|56(CFJLjAH$@v!E z96q>)Y_lgHYcu9^ARl9nOZazAYF*=a@rvn+U1IecYxl9L=>p*fHNNzqlkTE)tTnCctK=J$b zgASzo>p*fHNUj5|+pah3K(^I^p-qY2a@YRa`VxFjF}GPG95^+1IcwDxeg@PfgERbAi4SIK#8#*I_I&y4&;95 zK*sApaveyn1IcwDx%o^7GEN7Q>p*fHNUj4}Kh=TcI*?okk|&?`gAU|==s>pDf#f=n zTnCctKyn>Ot^p*fHNUj5gw;yyM+nA3Iw8nHiu*Rwb$#o#P4&?fEAo+A4*QEo=%|{0^MhBAXKyn>O zt^>(+pz!vC4rCi0$oi@I=s?EkKyn?(ZRtRA9mw@e2XdJXB-erD=A#1{qXWrxAh`}C z*MY*@4?2+bQyoaI1If)t2QtR7+x^pljMstW(}7&31IcwDxeg>ZA05aT9Z0SN$#tOA zPTLPUkablZNUj6Pb)a?IKRb|Zbs)J8B%coCG95^+1IcwDxeg?^e{>*YbRfA7l$vV$ zK?kzlssqV&Ah)3d$#o#tV?H{NF*=ZZI*`kBAh`}C*Ma0ZkX#3nn~x4;ja3HOo_yL5I*|LJ1KC~& zlIuWn9Z0SN$#o#P4iw%T>?0k>_BxQO zt^>(+Ah`}C*MY*@4?2)-%tr@WV>%vKW7UD=I*?oka{W4xd^(Wp(t+gWqXQYE1IcwD zxeg@Pf#f<+c>6&IvW*U8{nUJPAY*hOxenyEbRfA7p*hz(SeN7f#f=n zTnCctK;i8N9mx8r4kXus#xyI*@!ikjr!+xeg@Pf#l|+0~wOt^>(+AnT_(kX#3n>p=44(|*u_+z%bd z_BxPU2a@YRaveyn1Icxu@aAA2=|HyEf#kNeeyRh>bs)J8B-er5?sOpAxKBEeF*=Z3 z2a@YRaveyn1Icxu@b-faWE=C*f!3Ig2i911Ah`}C*MVHW4kVurKA=|C>if#f=n+bs)L<=s?CeH*x=TAmeo)`E($c=|FNFNUj6P%|{0^MhBAX zKyn=@wbS;44rEp*fHNUj6P?H?V;7#&Ei z1Er?ge$auex9UK09ms9yKyn?(^_Y(iWQ-0ZpAO_Q9Z0SN$#o#P4kXusp*fHNUj4}Kh=TcI*?okk|&?`gAU|= z=s>pDf#f=nTnCctKyn>Ot^os|O<&NWWzdhu)i=30Y z-OS0GgX_w?{P#B-`a2=>aei)F=jU?g z>ij&sIXEx3jla>CJ12KPoRb^xoLuglTy8$j&yC6ayg9fm^YZkA+&Q`2Il0_9x!gIq z^;75Ma`SP1o|xv~9NqTL$=wg<(6tE=HN2($#aVIgX{Gfh1};7a-U1ceJ&yQxrE&3 z65-9kXA`zDAD>aIG5yAuHCCTX$bBv$_gips9mwrY2eOS0BsU)&$QT_+t^>(+Ah`}C z*MY*@4?2)-bRg@e=A#1{qXWrxAh~ly_dy3TemaoLbRfA7BsU)&$QT_+t^>(+Ah`|{ z-hR-5te@&Yavex+K01&wI*|LP0~xOa$)^LkOb3$dKyn>OZazAYF*=Z32a@YR;q3<< z$hxWyB-erDI*{8oA05cHI*?okl1~S6nGPh^f#f=nTnCbyj}Byv4kXusQd6}bey)4# zK-OV(Ah)3d$#o#tV?H{NF*=ZZI*`kBAh`}C*Ma0ZkX#3nn~x4;ZC3}HHDevfHad`8 z2Xa4jAmeo)xeg>ZA05b;=|C>if#f=nTnCctKyn?(`l${iHy<4+F})siAlvIe?uQO! zybdJSf#f=nTnCby&vYQ;bRfA7B-erDZqNFu4kXusu*2kK<(+ zAh`}C*Ma0ZPa*Ma0ZkX#3{uBrpcbs)J8nHA023osRKEG)`8?YkX#3n>p*UII*@I2Ai4SIK*s1maveyn1IcwD zxegTGe$atzqXSt#H6I4t^>)(}CnVkX#3n>p*hz(SeN7f#f<+YO3}_9msmC z4kXus+=dP$*MVG*`RG8#=s@!6KrYjPp*fHNUj4}Kh=Tc=A#28rv0D;*>x7YV?bRg@hI*?okl4t$x2OY@$(1C2P1IcwD zxeg@Pf#f=nTn7qo4jwZd$o4vrTnCctK-N`tAh`}C*MVIBbRd_Rj}GK|bs)J8B-erD zI*?oklIuX>?FSvmHs+%Ptub{VYpgnuTnCctKyn?(?M?@>jSeI?A05aT9Z0SN$#o#P z4kXus!rKozkZp7z>!;?U0~wp=49KrYjP(}CnVkX#3n>p*fHNNzqlkabiYD7^ik1KCCg zlIuY3hYn=C4kXusO zt^>(+Ah`}C*MY*DgU3tp=49KrYjP(}CnVkX#3n>p*fHNNzqlkabiYD7^ik1KCCg zlIuY3hYn=C4kXusO zt^>(+Ah`}C*MY*D!+OjvU;kU$_BxPU2a@YR)>U;Nxeg@Pfn5J|AeWhs4&-`uAh`}C z*Ma0ZkX#3n>pZ=A#3xF?AqotU8cf2a@YRavjL+P6x7$4kR}p9mp6RNUj6P zbs)J8B-eq$+YdUBZFC^(r{<#r8KVQqbs)J8p*fH zD7^ik16fzqf#f=nTnBR7=A#4IRtJ*nK=SE8F4KYJI*?oklIuWn^U;Bf(ShVTP-?37 zLmkL^s}3aBf!u};B-eplkNN08#^^xu=|C>if#f=nTnCctKyn>OZazAYW3CPq-hR-5 zY@-9obs+ac2Qpp zxgR=^@j8%P2a@YRavex+KGT7W(}CnVkX#3nyFKftI*?oklIuY7tiS!B1GyhMknMFK zxeg@Pf#f=nTnCctK;g~7W9D-p+v`Ab9Z0SNSy$D8fm~)jI*{wtf#f=n zTnCctKyn>Ot^m+3%q9Y}6II*>6skX#3n z>p*fHD7^ik16e=Sf#f=n+(+Ah`}CHy<6y7#&Ei1Er>F zKh%M&x9UK09ms9yKyn?(^_Y(iWQ-0ZpAO_Q9Z0SN$#o#P4kXusOZazAYG1GxurUS`!Ah`}C*Ma0Zko8j?NNzqlP-5B-I*{#k zAooKDGF}Ig>p*fHNUj6P&1X80aXOG(2a@YRa<^ywR0oplKyn>Op7pmMbRhRb2eQ2m zB-erDI*?oklIuWn9Vomxc+7Ml+v`Ab9Z0SNSy$D8fm~)jI*{wtf#f=n zTnCctKyn>Ot^(+ zpz!vC4&-^M1IcwDxenyE%|{2atqvsDf#lPHT&4rbbs)J8B-erD=A#1{qXWrxpwv|D zhdPk;Rvk#L1Gx!>6&I zvW*TT*MZy*9msecNUj6P%|{0^W;&3|bRfA7B-erDI*?okvVN)q$<0RxN=*Af2eQ2m zO?)I#o>OgWGNUj6Pv;Ovj4&;95K(^O` z#91CTnCctK(2o}kjup*fHNUj6Pb)fL}gAQaH^U;CUm^zR(Rvk#L1IcwDxenxZrvuqW2a=nQ4rGiDB-erD zI*?oklIuX>?FSvmHad{?Q}fY*jM0JQI*{DCiTj`f89yD!Wjc^t2a=nQ4rGiDB-erD zI*?ok3U5E?K-N!nAh`}CHy<6y7#+y{(}9fFf#lPHT&4rbbs)J8BsU)&$QT_+t^>(+ zpz!vC4rEp*fHNUj6P%|{0^MhBAXK&h$P z4|O2xtvZlg2XY%akX#3HJ?5hW8KVQqrvtf62a@YRaveyn1IcwDx%uco)=_n!@b-fa zWE&kwt^>IrI*{=?kX#3nn~x4;%yb}^=|FNFNUj6Pbs)J8Wc^eJlADhXl$iE|4rF^B z$o z$#o#P4kXusU;Nxeg@Pfn5J|AeWhs4&-`uAh`}C z*Ma0ZkX#3n>pZ=A#3xF?AqotU8cf2a@YRavjL+P6x7$4kR}p9mp6RNUj6P zbs)J8B-eq$+YdUBZFC?V#e8%iV{{<74kY()_dy3TW;&3|bRfA7BsU)&$QT_+t^>(+ zAh`|{-hR-5te@&Yavex+K01&wI*|LP0~xOa$)^LkOb3$dKyn>OZazAYF*=Z32a@YR z;q3<<$hxWyB-erDI*{8oA05cHI*?okl1~S6nGPh^f#f=nTnCbyj}Byv4kXusQd6}b z>Oj_8bs)J8ZA05b;=|C>if#f=nTnCctKyn?(`l${iHy<4+G3^H($o4vr z`=J9FuLH?-Ah`}C*Ma2bGabk{9Z0SN$#o#P+p~VE1IcwDxeg@H`r8jWko%zn*p*fHNUj6Pbs)J86y6*>W;&4Vbs)J8B-eqgtLi{<9Z0SNx&G-uE;An;$o1+#aveyn z1IcwDxeg@Pfx_DlI*@J5M+aJC>Oj_5bs)J8B-erDI*{9)4rCi0NNzqlkTE)tTnCct zKyn>Ot^0w{B$6f=|FNFNNzqlkTE)tTnCct zKyn=@y#1g9SwGc*ZA05aT9Z0SNrKV~> z)PbzG>OgWG$ZhCAavjL^n2!!*j1DB94&*W&NUj6Pbs)J8B-erD=A#2yN7aGC+YdUB zZFC^H4&;95K*sApavex+K01&w(}7&31IcwDxeg@Pf#f=n^-~>4Zaz9tV%iTnknMFK z_d^FVUI&uvKyn>Ot^>)p*fHD7-m%%yb~z>p*fHNUj4ppVNWlI*?oka{beRTxLExkn7cfOgWGNUj6Pbs)Dp9mqC1klcK9AY*hOxeg@P zf#f=nTn7qoKj=WV(SfX=nvV`-j1DB%f#e=z_dy3TemaoLbRfA7BsU)&$QT_+t^>(+ zAh`|{-hR-5te@&Yavex+K01&wI*|LP0~xOa$)^LkOb3$dKyn>OZazAYF*=Z32a@YR z;q3<<$hxWyB-erDI*{8oA05cHI*?okl1~S6nGPh^f#f=nTnCbyj}Byv4kXusQd6}b z>Oj_8bs)J8ZA05b;=|C>if#f=nTnCctKyn?(`l${iHy<4+G3^H($o4vr z`=J9FuLH?-Ah`}C*Ma2bGabk{9Z0SN$#o#P+p~VE1IcwDxeg@H`r8jWko%zn*p*fHNUj6Pbs)J86y6*>W;&4Vbs)J8B-eqgtLi{<9Z0SNx&G-uE;An;$o1+#aveyn z1IcwDxeg@Pfx_DlI*@J5M+aJC>Oj_5bs)J8B-erDI*{9)4rCi0NNzqlkTE)tTnCct zKyn>Ot^p*fH zNUj5gw;yyM>!&)9TnCbyj}Byv4&?snK*sAp^65Y>(}CnVkX#3nn~x4;j1DB%f#f<+ zc>6&IvaYHF$#o#P4&=7YM+dU44kXusIq^U;Bf(ShXCfn25o$#o#P4kXus)p*fHNUj6Pbs)LOt^>)l{`P|osydKd2a@YRu75g^%gjdya=ki`TnCct zKyn>Ot^>(+pz!vC4rCki(Sg>OI*>J19Z0SN$#o#P4&-*H1KCCglADhXWQ-0Z*Ma0Z zkX#3n>pZI*|2K^U;Bf(ShVTkleAveb9l7pAO_Q9Z0SN$<0RxGDZiI>p*fH zNUj5gw;yyM>!&)9TnCbyj}Byv4&?snK*sAp^65Y>(}CnVkX#3nn~x4;j1DB%f#f<+ zc>6&IvaYHF$#o#P4&=7YM+dU44kXusIq^U;Bf(ShXCfn25o$#o#P4kXus)%|{1HO#49xvb_%E ze&|5P>p*fHNUj6Pbs)LOt^>)l{`P|o$#o#P4rEQ8Q4XOino za-B)8GliSO{%b#UDBJ5$a{WoJKY6@$Cb`Ze*O}yTCUfYqbWGHtY#)b8Kgjhbx&9>A zndCZ?TxSYz4tkSq%twb>V~$^aXzf*hlIu@$ok^}Ux!pKZbFhuxBsU+&Vq^3tx&9>A zpX54|TxSYz4tkSq^d`CaIR09b)t}`0lU#ptTPMaqd7P;^xGud(9&gGuAU7ZV$r$}f zu0P53C%MiP-W>EM+vrW!P7b>|liYmtCu8&{x1~SH^(WU8XKD^E)0^b+ru2hcXOf$b z{$z~)B-fwh`crsw(3`Bi>P>Q;Nv<==%}0N7|MVx@>QD0cQ*&^c-XxDVr61%vlU!$# zn~(lvjQ%9opJvTihq5lKH_3G-xz6OabtdD@M}IO#f0Dr8T;Nv<== zbtWCdeDtSTGuEMO?|j|up*fHNUj69-RVHK(ShXVqXQYE1IcwDxeg@Pf#f<+c>6&IvW*TTHy<6ynyd~a z*Ma0ZklWIM##bI+Ot^>(+Ai4SIK*s1mavdnO)AoZ7WL;GUlIuWn9ms9#K*pPo4rGiD zB%coCG95^+1IcwDxeg@Pf#l}1{@psN4m4}VI*@f=9Z0SNxgR=^@j8%P2a=nE4rI)9 zAeZStaveyn1IcwDxeg@Pfvl^Vj}DZWUJp8u?R6lxrvu4#AlIV<$#o#P4kS09=|INm zKyn>Ot^>(+Ah`}?{Zt2%>p=44(|*u_+@203*MVHG4kXusOJ{@S?_RkJvdmTuw1IcwDxeg@Pf#f<+c>6&IvW@+t1FbQ2 zAnT_(kX#3n>p*fH$n8!CvW*TTHy<6y7#&Ei1IcwDxeg@Pfx_DlI*@I2Ai4SIK-O4w zAh`}C*MZ!Y4kVurZA05aT9Z0SN$#o#P4iw&g(1C2D16fzqf#l|+0~wKA=|C>if#f=nTnCbyj}Byv4kXusp;evj}Byv z4kVur(+Ah`}C*Ma2bNjbnau! zbRd`MKyn>Ot^>(+Ah`}C*MY37nvV{YnD&DXWP2UR?dd>r9mw_QKyn>Ot^>)p*fHNUj4}Kh=TcI*?okl4t(c9M)}j9Pl}i?R6lz4kXusp*fH$n8!CvW*TTHy<6y7#&Ei1IcwDxeg@Pfx_DlI*@I2Ai4SI zK-O4wAh`}C*MZ!Y4kVurZA05aT9Z0SN$#o#P4iw&g(1C2D16fzqf#l|+ z0~wKA=|C>if#f=nTnCbyj}Byv4kXusbs)J8BsU)& z$op*T>2QuD# zbRc7NAo+A4m+3%q9Z0SN$#o#P4kR}p|F({*1BJIAbRgU4Kyn?({m_Ao*Ma0ZklY-6 z4rI)9AeZStaveyn1IcwDxeg@Pfvl^Vj}DZW_Ja;&dmYH_=|FNF$o1$zaveyn1If*2 zI*@TXkX#3n>p*fHNUj4}Kh=TcI*>g1v>$XJx2FTibs*QP1IcwDxeg@Pf#f<+cyq9i zbRgU7Kyn>Ot^-*=)q&(XkX#3n&m7im|Lj1v*Ma0ZkX#3n>p*fHNUj5gw;yyM+t@!k z&>B+*vVN)q$#o#P4kXus-0pNB+vq@Y^U;Bf(ShVTkX#3n>p*fHD7^ik1KCCglADhX zWQ|n^lIuWn9ms9zK=SE8u1g1!>p*hz(SeN7f#f=nTnCctK;i8N9mqC1kablZNNzql zkTE)t+tPvLI*{v`4&*W&NUj6Pbs)L<=s?EkKyn>Ot^-2wmOh}I*`kBAh`}C*Ma0ZklcK9AY*hOxek=tY5PG3vaYHF$#o#P4&=6VAmhzP z2Qo$nl1~S6nGPh^f#f=nTnCctKyv5R=4KsL2MTXL=s>p7f#f>Sjo+yIJAS{-Wm|u{ zFL%HF9ltSNKjF>6-}2kW-}1}-?Y`XK?#un{zTDsL%gx8%@mp_=KQ;%K`CESZ>+bdI zchYyh8{qt02lW2x{^kCf-x9fg@2zt4@jjcF=HUI+_TFFR-e2Y3U*+Ck<=$K6-dnA) znosVt&A~YDuX69NZqNIx-21ER$^A9`Aot!X_ueW`KFz^MkV`|G;xda3tX*X#XN?)_Ds`)m3^?!8s+y;YujYjbd!_gA_7 z#u}qMHOBOV+Wj_6W!4zw))=j^T4R)(kM%}ltS`DP=Pz>Wi&;-|u*T>%tTD>1G0Lqm%FV}mqcPSO z<<=MFsV_DMmsw-9#%hgGZjDiHjZtns))(Ce-?6Z*^~Lb!V2#l>))?j180FR&<<=PG z=3}kV80(Aje6O`Rcs#5z%B?ZVtue~2F}m&47;{YO zt^>(+Ah`}C*MY3Dn$L6~<8&ao4&?T9Ah{0YdUPPU4kXusp*fH$Qr8-B-eq$n}dC%1KC~&azAt+<8>gp4kXus6&ITDSeP1G!!uNUj6Pbs)J8B-erD(}7&31Ig_l9cU}YdaDj3*Ma0Z zkX#4KcH0j+kZp7zx%uco#^^wD9Z0SN$#o$4bRd`MKyn>OZazBDRy|m*1IcwDx1|Gx zw;yyM*QEo=bs)L<=s?EkKyn>Ot^>)Z1G!8GlIuX$Pjw)<`RG8#=s<2u2a@YRSx@^x z2XY%akX#3n>p*hz(SeN7f#f=nd^(WJbRg@eI*?oklIuWn^KmZdKIlNU)q%p>4?2)- zbRfA7B-erDI*{CabRc7NAo+A4>!&)9TnCctKyn?(ZR$XJ+v`Ab9Z0SN z$#o#P4kXusw(7alfsE6E0M?1ws#aXOG(2a@YRaveyn z16fzqf#f>Sthaj3=|HyEf!q%r$aoz{t^>(+Ah`}CpAO_Q^U;Bf(ShVTkX#3{eyRh> zbs)J86y9@52U@rNvje$a9Z0SN$#o#P4kXusuaB-erDI*?ok z%68iiI*@I2Ai4SIK*s1maveyn1IcwD`E($c=|FNFNNzqlkTq7H1IcwDxenyEbfEC| zgAU}nbRfA7BsU)&$QT_+t^>(+Ao+A4m+3%q9mqMe4kR}p9mp6R$ZhFBavdn^X+P*d zZbJu>>p*fHNNzqlkTE)tTnCa*2XdJXWc^eJlIuWn9Y}6IZr8tcAlvFd;q3<<$Tm8V zTnCctKyn>OZazAYF*=ZZI*|2K9Z0SN$#o#P4&=6VAmhzP2Qo$n3U5E?K(^6=Sx{dy?8{cd9T}9Wk_QT`ry*p#PpN88Hofp~0 zd#c=fs@!|3+~01=y`RdxCwgx+Cim0kVBOdDa_^~f-&H*Ge?Qj$Gt}RCxF2u)4<^@X zpPc#sOU7J2|Nqj@Ib7Kf+uV4UQhw+CR=Kqd`IG;lB>(t>eD>rs>#Ya=r<66?Bl*Z* z$VdLl{}^%q9G8qglaKsDK63l#`k7Dr!MNK-KKG4$9vk_*(?70X=azf!Sz|qrk39J_ zha-Jt+za{0UpKy4e zp7f9WVHQ9``Mi;j>phc?{6aqR>qb8Q9>I9` zGrT#x(?_;>(m!(Z`Pj&3Pd?UL59A|1l8^j_{*j;l`tOhSgZuYJKDIfNkKBAN6$$9wZRkdHA(@{zxgkNkDl`JelC`pl;}*v7f1 z{6aqREBzxkpW8-0_lOZazBDtheew z&QEk8xeg@Pf!q%r$aoz{t^>)Ot^>)Z1G#M-$Tm8V+?T06GINLY}mg_)zg$^V)A05aT9ms9zK=SE8u1g1!Z~d(U8KVQq%|{0^ zMhBAXK;i8Nzpr2$9mxBR^EtT=B-eq~_4nD04rGiDp*fHNUj6Pbs)L@ zqXQYE1BJIA_S6yFCml$x1IcwDx2*%obs*PcK01&w(}7&31IcwDxeg@Pf#f=nTnCby zj}DZ3cKbmG@_w!Z$#o#P4&;7#4>eu~lIuWn^O+80oDL+{f#f=nTnCctKyn?(KGcEa z$*29G0~x0S$#o$2LkBWm2a-G9%XJ{R4iw%T>?0k>_BxPU2a@YRaveyn16fzqf#lPH zTxLExklXWpF5iLGhg_%c)X9DBFZVqw8JGYTLpYc34ALlj3IIodAuaRe7(;VCn=Qg%+ZXEdFD1bujI~U*7fVCeZR$+)OMSL>$Scsx4tXa%jDK~ z<<@rP)^p|dkG0*zGzaUuYx_Pgwf1U#SMG6=r@s5WAFS=VUF*57$9z)TZ4Sm+-<4b6 zm0RDH>lJcqyK-y0a_hPBLt2^!T7Det?e3P zZ8y9*SktwQ`B>jI#`><@`mWsCu6&)FwGMA>cfCiwEbm~s%$ly;e5~)fA3Bg+2XdV{ zkX#3n>pZI*{CabRc7NAh`}C*MZEz`GtHskjr!+x1j^c%|{1vojQkIAlv9ba>pXM4kXusv%}xhd5-BxS$}iz8gScQ19Gncxz~W)Ye4RKFZaBc`^+-u ze{(R-Ye4Qb;CSUVAom)O`x|xVT8?#o2V>obUMKk`Mssi*eiuXTcQNFC7enrMG35U5 z5xL*Nkoz4BdCsxs;CC_Bxcq?w@}Ty*YT@_+1RQ=XWvW zeiuXTcQNGt?-9A*#E|-$-^7sTn;6Z( zWqub!ZjI4x`~3pr&ByOz7~?lFQn}grQu#MlvkozqRx!=N&n@_%r@xAuy zH!;@Z)!*I9^G%HA;4;69;ePmC4CDP4hTJ)`+*!kdHN#juUv#gO}5 z47uOJkUN*w*UiUoVi@B$G35CsMssj`ej8Bkw*g(3-v*TXJwUnN0+gGN-vu;A#|Uo@ z>w6=u)A(&b*X6eX<$fE`daM6`QSP?@<>uo%Fm5Z~1#Av3^V@)~*KY&L{WhT7Zv)Ex zpHOn&gOZz%-vvxebMV`Mw)fkBa=#6z>-lX!x!(qqJ7&0k9Y}6I(}7&C4kXusxe$atzV?H{NF*=Z32a@YR zaveyn1IecYS&P+yp<39rvtf62a@YR>o#ddbs)J8B-eq$+YdUBZFC^H4kWjKbRc7NAh`}? z{yLC+I*`kBAi3{ccwPETdflh?kI$!Fr_ZP5j!|--PlvZ3d_HX(pHIuJlgfQ2Ew_Js zKE1~D`xw?(^>X=qKJ7A}PrD7DPs@EK?RtDBEjJ&ZPaEU&X}Q;7c>BTU)3)*XwA|;@ za-T`d{k@TORrB%rv@t%Pme1$YZqMh_a-UDTE}u`!eI_mUnY7$|d_HZA&!@xf2ffF? z`>jLQ<@0H|&!?@Q`b=8xGikZ`_ zXLE9&&B@b0&B5o>#`$bc?%$5zKAV&KY)ho#&*55v#c3VE5mivyb>-3uo;myJKa&2Qi zzN2f5@94^%JIQ@VSMEEya^KOF=bhZb8wmO=*oRB*KJrQ zcW!JxI*{wsf#f=nTn7qo4myx+bRfA7B-erD=A#3xF?Ar%v31Ptd~`aHZLF_2KI%Yj zTL*GII*{CabRc7NAi4b<-hR-5Y@-9obs)J8B-eq~c~|FfI*>6skbF9j+tY#MI*{wq zf#f=nTnCcdKRS>xI#9U%(DTeTzN0JGf#f=n*QE|5*Ma2bqXQW;9mxIgT(^x5B-erD zI*?oklIuWn^U;A4(|*u_Y_9{!b)a?L`s;TUdG;*Vf#f=nTnAdW+v_LKnwx`hI*{wN zujD$ATnCctKyn>Ot^>)_Kg~f0GEN7Q>m`nNI*?oklIuXOUk8%wKv_?7@SM|u+@203 zcN=mYNUj6Pbs)J8B%coCGV{@ayx-|Sa_7}@9ms9zKyn?(_2@w1?FSvmHs+%P8KVQq zxBk|FjM0JQI*@!iko8j?NNzqlkTL%6Ik%?+$#o#tqXWrxpz!vC4rCi0NNzqlkTE)t zTnCctKyn?(w$p)JrUS`!Ai4SIK<OZazAYF*=Z3 z2a@YR-gBn|xl9L=>p*Tp2hxqqM+b79I*{CZu3QHSZ$Icjw$Xv)I*?oklADhXw8qqd z>=PYGJ{`zqI*{`}9ms9#K(0pzlADhXWQ-0Z_Z|}7e$atzqXWrxAh`}C*MXd;n2!!* zj1DB94&?T9Ah{0Yx^y794kXusOPavex+K01&w z(}CO%uL0ZWKyn>Ot^>(+Ah`}CHy<4+G3^H($o5{lavjKdp3i~gI*?oklIuY0cDEhK zI339K>OgWGNUj6Pbs)J8B-erD>7Vw44rH7TB=_92uBrpcbs)J8Ot^>(+Ah`}C*Ma2Ifm~)jI*{`S9Z2pmlj}fkO9ztcK(0pz3U5E?K(;X- z9mp6RNUkTybs)J8B-erD(}C9Uw7>V4n~x4;j1J`XbRfqZ-{p56>AU={-*@@L+Yi3O zZyVp?mz$68^Bd#4{Bqyrm-{Zi+;{oq^Z#1vBEG{f_Z@z@`8YrK-s1e+{qS9W*Xg_b za^K|-Z$J1xzioVnU+z2na`W+Beq(%>U+%m7a^L0m9+h|bn}f@IpI`1f{B9%f@PGdv zj`{d5zw7i}e!1`R%YBzWygB$jzioV%c5{PMiZ-yB@# zIPErkpI@GL_|p%r$M^T;=Ht8k#`rG3+;{oIn}hH3+s60#<-X4^_x*kOp8u=oecgO~ zm){uQ<(KDO{^sB^-{*Hfe4pQV-{+V6{=VGz_vPl}yZpxZE`NA)@O^&U_&&ef_xa`P ze$=ace_to|{e8LrAKiEPjmf+G&B6V!p5wNCm)-YxU9aPn+?to%oUMNuW9>_x+E;UM zne{KZH7~g}FS#x*_ZT^+^4(?s2ZJ%zzQUV>_gCG;-$m*Mj#1WR-L}6k@OayY?w@@q zw-4p%x8~q7`%Z4%Qf|M=?Kipi9Q)81`%rElrk>jzJbu=C?K}Bazqua!!Qc2fpY^z` z*Iu7ZI#08Hm;P)H?w@@sw@>AsCtjDv*tc?XklVL%`!>8e*r&F!Pv!Qh^Zu>t(irAGJ?BAJ#fee?MgZI|kU++DCq; z(HyMHJEynqYu(d)JRjtq4|0#U=Y}z!3v$ne@aEw8U>nZ|x#xr2{c}9Vb5e?G!E?;{zvseMo;eqqgK?e@a?c03=Y!nyLGJk=_gs*B zF8GWgzb|bLo)5-(KFIw(+m;(RA6d_bpRZk?6F8PQNA$gi+-I7D_Z@%Z=R9KT9^x@` zJaIo9)11%x{BrAD^4K|+gf|DzAKQ3sc`g~_xg_^ol6x-6J(uL3OFkROxzik6=J_M{ zzUK3rKRcH?NAx$c-us+WcrJL3SS!eR(HuN?{f)oh@$o$IzT>v72m2nBF`nPnhCN>P zzjb0`QX_5-F0)Q7w@xg#HY~R`EVni+w>E68(Hfa^!NfEN=b;`;ox}H<)@%Lt^-k+r zH#mK9uU%_A-e=_I;QaUd{iivs=SjD14xR&E$38=F+nx{Jvpn{mC${xjg4}Z?yg7KD z*v9ij?s+2jJXv|2&U41&;`1@v`Ygfte7~(ZIBr@;u&?ba|Mpq%dQa##xICBEeQKXO z-&yZPy(gN(d~e1v*!z)nVvmir57%o=-*@|bkIb>(?~b@0zdIt=`@`E0p1am2Z0~nS z{+3~~sQtmU&!S986EZ1|UeY*CQ=Ywt}_q^)=Sn=5Tw{z@u ztTVS?e>Vr6*khv;%k^Nn@3z?|`iAj3u-ts~;WcLUxOG{_5YKz(1#;)4ay?kCGdNcI z>?ZFU=J}Y{p<_no3hjsObED^j_Zpu!dk^tgcnx@5&Bwp3h03je%2WR|hn{EFKy70U zRBjDaZv9iPd+5E!IDhl{wC)(*92`SzlkfPYPi=3%`>oKmuQ~>}-}Z^ujQ0@Vtu{B` z<91ve&flxn*P3y#m&uU zlh(4f`@hFJ<9KuM+Ba{Em+xWce%0U zl-~$+9+2~*IjkPovDJH@?}3}AF>>Dnm-{Y--1orcz6UPPdC?qvFWfla1D9Lhm0NrD zexk?7y>{h}-CieN)ARR0Zrkg1?f1?RjB)IDex-|hU-O)Fzn!zmy$)S}V%iVR;cV|5 zPVO8|?z~OzyiM-=w{qufKErmL%>B1H80R%A*T?;Brv2+2+w0hVbN-Xx!(?veGZ2rx z^KkP_fBu|iiG0nj~wY`1n^8x2ka{Exe_MtV7USq!R zWnZoH!p7&`+8nHhu72Ec)_I5Hto!OXD|eigJI=~ImmG7A$(Y+5T;@0{cbt_w&dMF@ zoP#;e${lCrzI*GKoBC>VaBkzfYL3m0v-Y*ut8VRi>|EMoY%R>WhTmj1AHT^Q-W>cU zvu&)0%B_dWt%u63f6C3%TBtGBLgn+D%=WwWP`UL`xzEmgE@9vLJi+H6&V@4;|2nS! E19(C{{r~^~ literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/nx_2xSaI.h b/virtuanessrc097-master/nx_2xSaI.h new file mode 100644 index 0000000000000000000000000000000000000000..818ad57f75a187aa66a915c099b9aea5b1b19c2e GIT binary patch literal 57186 zcmeHQZF5z}4L)D#O#g%151lk=8{PtGJMEO0gpdHqw4HW3oepEb0a61dHsHSf^|pGB zEI(RZ>Ac)r2Loq33HH4@TCG-kq}A@({oj8-?B4HwerkT+?|#_*pxY9ewz@xdkGdWC z_v`Liw<|x-x>w!f?rHZ>K6|g*lizo``#r@oq4}wNdS7TB$R|HLqS)@f?GEI3`~KjF zNB_oQ94e!e>^Kj-APdqT0* zT^Eku%71^C-){;1cK1Shu+@FhOTN{8Dxds9{$A(D%XCL%dMYD$P5yl%KWO!S-`=k9 ze$nmAC#r)jkymx|?)9HNl)qleZ%>^(Z;x@=q^nV0FQ zNOU0dYBR7USk;#B#^)F{=m|1B>19{BU-VjlPE{iqS!fqJej$|m@+>q3uG2=-%k&p% z>4k87B0RwP>%RRRkqdu84(Q|S{;#&TX6N_hc}NdihV0Mf@10&Mj?DOPUMA`n{em2i zMG_lPXb0nQ(A&&`NLX2w>T_S@xhKzHR58wK3wR2AU_tvmk5w6Snb6Psy~a(hUEyOg znJjAawcPM`jQoyxq>e4D>|2rLu}Jf@?;B7fN)=^-#du$uW&x4wcl+DRbhDTFAJPX{ z75b+dhb6%}ptGk!gTG*N@CWo4;{gAJ7QCGsqS$!jIgHo~K>%O?tlu=|(ZI`O(%7i& z2v(tO_@7zYN_7!-iICk z)yPL&gQstaoo@G5i5@@g#|g1bM;BwNp7%wAanQ`v0Gi{@v}h4hyr-&Pb0D+0Mw%j(mIAOKUxbX7P=uxpzbpdzsNb zIOeDQG8#qEw#^+Gg~MLb;jz*&x+|K8&+K)-I_h03<^7|UbIq6>&=M?0C9!9ahp8m^ z{G0Bd{rA(PLiANE+U@1Cmb?am${682!2{S&OY^*M4ZXb7Q~mX5Ts{z~kU4_?&F*jM zQ=kR+NQ>5#Bigd|zLC%NX7o*Q7B=?k*v7zXzGgUP@Y^lP^^nKi?{iDw1GKVzET`9< zjgi-#^+$O@L)(2^MkGdlrx_BW=fh*3h_c&#-&JGK5H+o~nClpNJUe@2@YK2Tsn3h? z#8cqppISk8lXR`Kw5mh+&sc^+}3y|v|hXmdk+yv^l&=38FQXA}1KOmH1} z6RZ%?69~C~jApP;%x*PS8$K!Km_0`t9d*!LDEa7!faar;MzsW*%O#CkHfYY5G;HgV zqdDy3o%KsKIkl~e$9yz`%#Ex=qX`+#_WVu1z70eYwY}Dd^Eix=LG0U?pI3qu$Yh{R zqo!W94IO7~VU=d{InBPv_E^wL=gf$vkktCEQTLPH{&a@J=shhn$nuIdL-;N;oL0_r zL2gtdP=7W6s{H+#&(1LH2;g--^ zZ@jgsEoK>v$M7o>f8a+tUiu8HV)z@iKJ*N;FU)6AQ(#Z8lx;J9VE$my&bNJarEScU ztRjcDFATPQwQsxXyT(54QAMNi2{ej8Mwk0IBeCyMj6~N*BRZq9@}V|A8GSa_YLsC- ziZL<|_2t@;Jk-mSh|;1n$AMlJqfQ8STdjS@M=^Lgf*v0XzQ_P_OV z=3qYGYrUNM_B0hApUY*s=EzLpc6pMQs~xb9sF+v=N&LCk@PdAyNbaRoL94q1HBhHS zZf5*^|-e;#eU2d;Ymyu79M z{upIfYpbi?KQC{oy`ORP`^{U-W7f%AEPtqnT+e(@K0gM#)w50CH7N zN8Jxce~l#-FZH_nvg<&zRioRJdW_G08Jm0*t0G+;zsSeu_gE3$b?X^Q)pB_tRqD9n zfsttAppH$fMqyVMR?ThS$Er5-l2T5 zTjctXX?(;HFRaCAFL`DZBb}Eya!`%hC{weMjz`ZA*LaWs8{>vnaow zkXs)kUbIlo2U+!wEzxu0OfQ>Z(pEi3FBc`J7Gj&s|Fm~D#z3@ecBy(N753dB>ixa< z5LED?QI3<&8#S(y_L2CC(Q+J4a*pYDk6^`I_eNSjP6CIqR)T#ZAIN&j-;UQjSPk&@ zNZOAbZClgXl#GfO*JO0DQvg^)thgh89m;3BNA-eD>qpzBAL-vyE0t9ipH(V{Y6Ee; zf1{{WUK7nk+Am$kU#*S%TA`w*>Cun5#)2tv8s4Lt(r4NghT#f9ou}uh9p|%{Q@8EU zs}fu*qXyB57!mbDj8gn(migpWhxa|A}hxZh}euK+db+m9Ok(nZp|AKGhR zLX^SsF6v=Qj??B!)H`En9Tj}!7>+_yxV72PNvvjEEqwWg_;RcX&cO)O`L<-0G_I3o z7;)QSM6~Gfs=(^Zd|p+c_V_r5&37EFdi=b~K<)9&3YaHF{V-2zqhIbR)TZ}1@A2dH zIF)M1+cbO0te+b7?MILId${s`utE?$-cYCV_@zRyUWI@tc#>Hs?Yz!(vU=qZGDQ@t zvZ4%`Diq6BHc$sOtBYRBNb7T*X!ol~GH-RGMiNF^-@f+D z>l+WVNtcs^b$mP^z;qGsv+ z^H(|Y?9vdZ^8R-*pZRsa8*%+z8j9Ik8-QL-x5znO|7r*QcvJGkXq#sv-tvd4*V7^= z(9HB2+mHH(e?=N*1Z@R1(y0e7D;{s+ibuq3vzf|n)Fy1Dg4s^A3B^RCitc; zRo0kc(O%;^gRlA1VmXVMwyNQ|P@X7vHlJpjeodq8VO+7$Xy)4_MXu8;@?IX^In`A$ zd(+?~=Ye=X8mAH1JHj{*0dLT5bw8H%I-JyilL;QlU#P|FyZYO*rm}O4Id2kndgS#p zmuT0Db&OjXZn7T4vCL~Ic@&5~Ii5$&j|aIt?48H zv4=;yF!pr$^w7qJMXvH?d;cSsPp34S5o_ zcUAuVVl57z$&;vJT$g`ut;ONCJb6brd@28a)o|Fv?8RFuVoioDk%sFE)m(aLMln7U z_fawWEWK?E9lz|)4uSod4aR=Nm`J?wJ09ax>UCHVse11#3Gr#7a*h@l1Lk?tqB@@O zS!fnjh!ta$l#shI@)%AzJ!O@T5_%7 zpHb)tJd|uT+x6z9%P86QDrI(dfZB{%c|KO;>E)b1R^;Pli`t`?(#rQ_y&k7%Q6r>k zXFt(rYCrW=_xRMfpZc>2;?wLWdk|?j_TG{*?_;Jh=6#Ew>O7}D&0w0J&fk3$BMnE_ zdrao999{1d86~Z1mGa&8Y`;Um&ycMmp3Q#g;r{73r@gb`+9V{&F_w0)c)8DFysgJb zL7jOFja2lTB^vt^U#OQM9W%}{mTe*$d$038>rW?$F>{*F`dxsL1N+S0L>gkZx2h#F z`}5!w$Jz{#dKOYJCRsF=*e`4F*0YNK`G&-tLzL*!<`eT+^avuxhM{Gs0 z^7--Gci>|+_UHYc1wBK`Y|=(0@?pg-w`pixJ!H3N3+=orTC`SU&4r%nXE!aH(Ti#t zdQeTHni?AqTYI9!@y$Y&nOcf{qHTDTi(IrkzbJ201ueq2% zbF^vC(B8DU^eQDa-B$iueo+S;+1N7qF>XdbS>FdN(`lunPQ3o3wWwsCqV*9%`~< z_M~D}gl7Z#x3O`n1Kt$H_jvmnXItC8k^MdkF&)J5R;k*ZCM_*|7H^2^nc49q^p=*V zf>9&P4)&z#oV|rh&G>2!Y5iNc_6@h zAdim=Ie6-QdjkL>!Eo!}h;N}M(=>@J5GUh9_hz3s@c_5G=->b8|JDEFlliwM;9i2| z)&#{Sv#Ha1YXZg!qmLUf%r@v(>e1R0oLLO-_&#n;@KU{Pw`Ccm$d#eoa%;jWaz(2F zl0@WU6x>|iVzItPt~zfSN3Lmk%lIsQTHazg*pjzk{WJ5@Di_IUEAP*cVvhIEKU>IG zj<9zMwyLOy9Dd%pLOgvvdRL6HtCcUT(YI~Cd*=$xnYBcX^4Y1Cm29?Ts8e}4*Zckc zf_5(`^F&Y6&Q8dOdv@~tj2Yz=Zm0FOC&g-b)Jf(o)oxGP2Jl5kV!1WJ-w4O(uXA9t z{~X7bGlbs6GlXKK!x&fNtoC4g&sZ0U_CTzwX%y>>7v~m{mm)eaqP4+TA!0V`cg^}; zS+r)()ME{axLWW3B5K8%UN)O&tDd8mi;`0dv3Hy|YVT}>s@Y}K758A_UJ<(qf#an3 zs~I_I{eCTu!%1TG_p@J1Gr4`i{Fky)V!BkzgAR197po+>u@U$>+Wj3*fC}_9KltM zW#eR;ShQvKby4OUIx-l8RoVT z^8OjU-K^3ugS>zwM5NP>W*T3|&`kHo&hgN9TVLlT?nb+0bT!*q?91@~ywtYdMSW$M zcD~=w-ujwFM9m;|1qkP7;y3$_yofoPQDzi|Te|Zf6h?(MHn)1S+`q+o&z$q_m;1No z-DAPCA=M9#li%6sD;l;w1I*7Wsa$JP9^Oj0D>{FcYfZlWxVOch zypi+KUL&uJGT3|Dh6#0DfR&b5)1clx4d-K8e+ACrH(!Gou4hc)cJljTmixEryCdRi zh|W`@ePTTp{-H5V^Jmt>@%Lr14fqA$S@d=C+T&SYV#O_bJS%SP3?TOu?v3#t=RJOW zWmlyd^0pc+s8Qd3)Tnp|0H6qq^qQ_J3o~HG9^5G0&NLJXv6mF+= zt%)djlJ!g4xq4H!zc*X?-ozf6YvQHx_Ru*u@GSRlz25!39>px~*GR;?1+&)=BzM3} zA|lZ^8Zw7bKFoh?)w`B~dCQOtmV;G@#nx8GSSvn^N4x-Wa>PEQP3Um{Q5mh*e3W9=PnCc@y`}WDyYK zT#dEnOSb2QnM|}V#YCfvm9RGJVP?ct`dB5Ry~Z6Yejf^JZ=A)%nI&iIQ+KnNF7ml0 z+w}a}9x|`iZi8%&$I_$)$>?M$w(0`ls=eSC?k_$sh@GrJ54~>hm0eo%d#e0ueY6b zTAMaMJLuO>4tg)pon^Xq3u>eJru%3A{j@WK?BoHSNbD_Sv+J|az;gfAw0S{JWn&zz znYf%=GptB6u61V=Tv4dzBW*peo!!#g>KsV>u-w1(+}(9Vtnm42wr0tQ>uU@dCF8EA ztnyJJXpR3h4W+7SC{IgMoxAIErg&m5+lzb1TYF@iKHpYtwWrqS(I%s0+rA&!2$1J$ z>+P9O&}nMyCwmZE;MjXh8Xl)H z?_2y-=R$VMKjMwoZnQLxQ|qVx^i`}rBfE*VpgUG962|P1qw75;^H+MI_lb;>(ymgr z{z{&!t+$lq=_%hd&-Ob6d{y4B$wmL8hx@1FoOZc?OJ@RFNw7JHx4+g_h(I+BZLX%F z|FkqqG{(L$8;7^iXZ<->>-ntT1sFL{cS~fpSh@IYn`_fXJoXG{X5JGsO7irSEp{?$ z`*vFz@@Z*WT->Xy_*R2RZ z&yRH^+J;BDc%zcqU(JPMKg30CtmeWx>JS&zOwC1+alYo_EIHyZ&;i&A$xzWWzAxbK zILgt#-T$%Nzm-*Yd_3|IrA7^6eWW2Ks3p*n+Z>9Sk+%k)#V|ARHsvX3QQo(*jFh~5 zYps3K@_g^|_Llp%{9RrCJQr%Z-4nFgRn7c7mo2GW{=T~*=LMdVcS`W{^X|7tpB&0t zxA-x8+^jtLnJ=s+DZcBzLX$vIn>6YX*_jVOWv)D*m38M$o%^D12M^yRW~<{^QLqdq zW|T%_ZyhUITTkDd(-IT|#!gF!TFb`FG_q*T&Hym2%{>WVv9-tY9*&)9@^0ChVkGbn znSFbg;d*Dom=&5nfmDq59+P>>!Vrx|Jo0&S5KrUvRK%NqP7HO@>h|5z+x+ul7QF%W z=ARq$cIa&g_rBZtFg|vBr(YYj1Gv497mM9plLBgE;aO=c90dyQgvVDC$nCL0HGADX5QdB=sTq zxJIHpi-Z7I&{yuATktfqK%OU0W{62-UeL#Ha2!WUd9W_Glxcg5Y%b?PDXR3;2+};mUq)@1 zEwovhDxT+{9LJa(MBksq7#zZ90M?LpIu>%Vp$8Ws)99N%$?iohi0bPYN<&?6-b+}qi zAI^2-++wy?uy+U>d(r>1VwL$0w4BAvf1Zt_j~GAZjb=3~)+m0b|5#o6pk-~6?>q;t zqPJVkdCR%;0(>p5;%&8+HPfmTqtE(LVZ;fnr3&$aeG$@9p5)5$XqZ7(mZq9I+d7f;D<0+(XqS<#R-SJBi17 z%s*b4uc#nCdKRgd&mDe|a2i#42GY%^S7+z?(p#Q(O= zWI1D%pLwVHrwUZXdcvN?N~9S%#yPWb2Cnpv*R5QeR66-_R)4aXpB^oC#8dG31U_4j ze3?J8;SRo2rzxb7ALj$(aR;8@jA+u6+Y!bae>-wUk8zK+^my(=&Wv%)erabp#_CCH z*#TJNXg#}+cOCCy%mVA6>Z!DqRq_N`tV(r?^D1((s>*rbnlTgTQ>(<@7xFq@pG}Mc zM=6t7-7Pa_iKnY@8#JkHKKCe*_G#vsj@}c<`3N6+tq)pSM*EmitR#|1J-i>)<(?Aea(yU?`AY02-RZe=*f$M7L?2wP zMLD)EC7t=};QR!fnI()e^V*InTJyNGPBRYFl2&pgqreU@!#Cnn)=XkLizGECqLj^y zi}90Ilqxi-URS2I3}8%OBS%Nz+KYIL{%J~OP9H!gtIqOT9Tih^MX`>HrO|HevtNV5 z4Dy&!JK;loRC74?X|$E|jg^^pJ_TJLaUzX6BLADd@|AT>Yi^z@hgSCM%VdY~KJtAx1aRJ{>qi>nJ$~c|T z-^v0Zd}ae{K@T&KRe?`qHXoTo)LyepsDN0Q$UT*(NWNakdl)TyJ+Hv37<}HW!uJ@> zIDQD7{+C6^$1C?QAOCSOegY3np|^98#arRyg$&ZLb32Wsq%^r5nqBnU!v&w5=3cb5 zPScbnPOKG{Z%v)WsZLXlqUZIb7H3&RUG7CWCQI?o^XUwEGKu+fc{Cqf8cohzMKYJh zj>czq=BUpAmwFq~Ans#^v7%q#+Zg9o>oq^`;tK0&75<42ZQI0ontf*7a(U{hTBZ3t z61Osmc@B7<++D;sr`cNMNnW`;BR!Ye`P?t?nV<^O*X)|-i&^MerCC>^blsLwO2f99 z$?EH~x~!G-UzLM8(DA}1_fR?qaw_-HR%<-mJMF%9zj(~bRynt2l+M%Tay^nyg>I+w z(@bX7Zc;g~`>l4CJeKEX$zLXok~Qntt$3E^i1aoZ*QZJ2wz)=LRZW^xxlSonS`W)U zN-10)`KMl?tT%r!$8M}NX-5cp4o{j z^yDfOmSZ8VnF$H;i9@)~{qzc}@3exLhwGkW;CYimuENw6@GP%7)!q3sxY4QySw_8G zw3o)3^HbQTEo&H$+rUL$r}Ob0ddrcbDvf0!^QA*?9eT^>jn{GS>^Y5hHLo+v5JlQc zJM@$q7Yp=G*Ql=f3t#t+V7b>h#)cYok%z zh{Y}z9m@Imel~ZMOBBAxEPV{inY>|KE!Mj*YvJc8L;p!}^*#A}*a5nHPo5OZ_T-Hw z^=WhGzD^~tE~AoPxz7KmJnEZL+U0I3cEHE9Ld)t~7 zDNSyNcL?txIgPKLIZacRIHj_h&m7`Zr%Ah!dp@-)rSRvZ(vC>CkN$VqN7wFF`_8AY z#5$$pobsBjQ(hInI|t#iRi6NIROhoTodY?QW54pwWZgTCqw~4#ekrf7x>a5&mQgxS zm)otxHa*}mOzUb|?cC?-y9OzR`}*zR_d$G1tDaq+f%ScKr}dn6+B6f}=8Et)-$x^k zl~n6?tB?OPuEg4Ulzw~g`}fg(j<)Ti`^s&%W8S{wF1*o}pL$<1-LY?C9$}g~=E--l zJDhgC_Z|7}YWKDy-@mjv>76&NldPcLF}z0PG+wXU`FQtoKIwX12{|moUas3R$~Kh7 zOlV(Yb)DKUT4{Waz1%w;LQC_h+be$;_R1Y~c{Om<)gd&+D18s|YHvE;)Lyya*>2Cg zzV_byElR#l=W9V}2P*&Gq{CmzdwZ_v_PM$K|JVM#iK89w1j}&M^%0nUNp>9!R_4&5 zuyhS5_lC!c9G~_w{~zZ@&%YN qQK-NDkmgAJPFq}!D)nnKlj>Bf@w)jOp%!iLg1ns^S+2p&<&-ly{p5X{Jt|h94TH3&3p3hL!o&j@BHA1VtaTs9LVqX`N0v# zt>N`>Z`dC0%4a(xNAT6_Hsrnd@-ktBz2P6i_nFA?bmV?j#>MDc!*zLW%5M*ZVq^G3 zIKGm9f0N%o7y9ktP-d_({CbppWB5$o`H}p6l9!k1OOa_;Ecgrg`9fY8_2D?)bK!kB z?8`f*MKNRlUGI!8G&wP2A_Jr!?@U?J; zJ-`hkZ;$%g77gm>_#b*X7$tlte}VSdNcCWR?}_~Nwfwg0T}vyzxG)20cNB7o+Sd_u;4o=u|ZV%R;-*@u5)e%eBxHxX!btm+4P3(xGsC zAw0nO@i_jD$c4Wk2lVlH{437ZaQ;B9hxEWQWdFPTy)#Nh%S`{~WuksDFUavsBr%IZ zJFv&Wh?xVCu!Sns=f24EK(2vRVQ0kxt^yw*Xn*9fDq}4Z=J{~cxXJZg_?S#4i(Mw^+CCgbhLY6?ZeJxr;joy1IfeC4C416 zA?PqyB+4d+&ezM3$Ddz*95Dp*Fy#!2NHZwXrBx9&IG3{#VQw6VUP-3ZEj!5NP8#JsK$Pv z{hMR7gX?K5L-Zi3Y)B=FD)Zr3`67D3D%;1hd)paWyzOj`$_p0S9;*h_38+3HyXO8U z$2?I3Y>)a-3qgytwEBlym_A8lT%UoA>blL&bvKR>Rb980u2cCuqHcDszA<_AJ;7&t zwl~Y`-%ps{>~Q#S7KeM1AKFsT8`Yy!2U&{S$DUc~@uOoo`aH}Q5m{P0>?=0N1t9BjtWTFrqN^z+D(&Ev4< zLp1jIL`2q{h)d5&5fL@yaaHpoLZ^5|l-AsOSdEfJyw==$sLkBWj;qiQA>m!O>PL3w>I4zRM>2xR}pVK0UoKA}#&&lis;K+`1EqDRJ4PD3KJQ7 z|2VrMMuLaN;1?2;txDN!(rA1^J#?c1?*gnr~l_^NnOhtR-MI8=v;m5fx85-YU&`t}6DWGJPhf*Pa&YNyu!mQ9a|+ z5%JoAVEwvom0VTZv06S&FCt2OS0skkUXA|zTzpnnvgnk*miMt5iC3U=eSP@8{J$yd z-D|RX#|!WM_2@l(W~-zxgd;Tf-taSd;R?^~Eau^n2<)gIJ(S*%j*Rha%uLJ7r#`n@ zQ-9d0Mp;j_uD;c|nz624H)1YYC*e27%sdCis5T$1Y{SxrX~?IYVL30)CuV$(B|Wu1|s|EzF&R($*{fX+Ii<`sIc(@;m%%)u&E ztuE0~t^BDS2Z$*mCeP(^N7gOLKC5VKYjlaMmVJCgY~|N>w7aa4bxV4QQh5Ko=w{x#DK4l{ko1)ks_m#R;3L*jjgA*j#k*H_E;suTG+dr z+sDyr&3N9Bn%c5wjLIs(oA3HOk^Uw-K8BU^iqVxncw0dCTAk+o${fdSZR@@L_OWMY zp4gzP!3%pXtuHZ&*q8X_H$W_x)_K z_fYZtWs@hPRP9Bu9Ao>u45!vMozzj59`38pDw0t`UxQYZl+#njcvr`sNJH5eeKGwkme6+|2?{q;jizRbD#PYoz4ZtCZEAuVRK0R<Ovu_v(~cWqK5q|!WLGg!x~QFT=w_*v5fr@dNt11qk-ZgQnw z7Qcq(fXR2sul@ZPxHAgXM$VnQ?R& z-2AwahI}H;#Y6$v$L^8w*%*88mDm2N>9vdno@ZVm-ae`wP|f)|>B}Zx>Su`t?_xAq z{M%MrZ-h31*89`t!o9T(Eu47~2J%20dc zTHV)$>+e_O3eflV^Y}Rvn4GzTkx_^|mZK1P#omO!Pf}^({Y%O#-_M|wkyEVDDN|g5 zpI6^feb#)Vw(&;r1YAIa?$5mGw6yt-t)wDP;2MLXUUwqD2dl%Z}wRRX7^3W>{fez z^4e7h+6Mm-4v&u`p+h91Xx@%qT^q5r&4=P~1J^NiUVaV^aD zQK$Gv-1Yje5W-d36eaP=PHBx0X1@76J(emt$Us9-)z#~ISz2{Y#QO0(PQ4D12Q$+Bb>4^a zb+s4H&FOU=>aXr~Av98QuKkWYBTeNKjJh7H6(xOfijrA@*sUu9`oVmj-ghfG$E^O5R~7V{|Uq53>f){Ej9rUgB zEyirf$|vS#QY^KnW+2;**51EqHfKF%{=Tm>`_lromGtxqJog`K!zwSTC*q2H{(#Aw z$FSNno{#}*yCUL(a<^mRdhw{mzm4>qjaPSReO_$wpA)a!xq%+J)SPy*t3IvAnsf8q zYfin7$)Byu(f$2HhUK%Wb+Z>~rNFUm$FlNK^$yZn54fULZzC-Nc3s|QbBYMn7f;>c?s=T{g>&eBD!<*3e_QfT z-@Ph3y*TIhJvlA-wtRM5KEoBDzAB&KWLBODMM?br{o9z`xKr8m=^%e|!@6OP_|2_WH|BdQ2=hEMh2(p|@4_gscZ~wXUuo_T-?;SAA(8qj4!wHq} zu!}vH-pjX~OJAQVyWY9YB~p zeU`7DUh&h;*PzG82#?xx1`n)58!C+qJs+kH`pvYChWWgthNhuOli zqM{TXMLf5$oJ-I1^_O$$tNwTotMMf0)1EAzxfya-Pm}KL4!|So)1}P=>Z^6lSYK_D zzz^%I8P#;`epIV@Ft)XL#MoAIVTAKsdJ(SX!#LOD6XRUXsfQr$Y@8N7o|D;YIhS6$ zF}@=~FPO709(NY1eXyLDXzkS#>wOY50h?qhj9E@#sFv$&~szvC7& z6;bDR9wQC;_&Y^fDDZqD4af2*h&0@7XpcpCJfDmv9nGUDQ>=qG;y>dp?+M#p4ZRQE z5OK^|_HZ0`r;Ts)SVZl!ivDN8$7=`CNUNNw6@IVFP)F5VgIkqat?r3C+9bj-@@HLtF3HBVG1P;WN7Gcwof-FhayOi}ZhmvMZ~s`+qs8YNmY zWTYUny)Qruj5tbTymF<@u0rdi_T@}^f6n9`*_F&1(bL|k;i{9HvjnMI_3Uycy?^$Y zdDA1^o}uz5d&PQJsW0|Sdf$t&t`E-ugXPWoXH|`RoxuAUN!k&Dz3Nu?0lf><$J*)f zJzkSPkITMwizhl770=~NdaZNTi|z9=91!7a%6@#BqNId=#a;1a4)T;S-ZB69wRxmr z>}=Cesx}Sfi8OJoO^LjA^NO6~>5AMuB3JbslPh=2{_&)Fj_ajUy+%roy-FF+q9V`L z(IX{!ddg@Aa`WRx8uE!WQO9|$r+a(Lne^*bu8Uu5%%qR?Fh}&B#IOA+Rd&B^?o#p2 zmn8}ql6w|8uPETpkN4|R+*wrB9?O~ZxEraJ4}9)kvi!G31TFskHv0E+CcXcjm!*z3 zjGiRlFCK2%ySNO_bsoDt*$%AY*x9JpQ+0Jwt*6LSk;1i{KjlOD`HoXfr`(LrPWM6G z;kzaFx$j(Y))nQ+&!q47qx8-on~U~(mNV(qUKUStrJwf*d~e^|4l6XSi060W%^Df~ zIurrneH(|3p3-!D_3%|NN-JO2xJa@xRJf7v&u7hd6#v0?s z$t+*3`uWWX2p8a%fJ&8mNV&dF2Q*T(aXK&pwl`+ z&W%oWM)Ozu=u~6za%VHItKL1^7ip)AkvfBAtQpesdIcz}V?^fQE1xWbMr1^p{&SN{ zR)hX)Pg}B@zc1t@SuG>hWBxod+j1s--|M{{P8vCS>xeqf_0W)|sN;9$(33$crCyz7 z`J-Rav*Pl#UsVOquhW^seGOajWXEi3bn=|4X35i2#%h){ejO8Os2N|2MjG^p@fIh=p6@lcC{+(eXg(knWn?N!e?%jKBk^L^}jQijqlhIiSwTjJh7HmG{sWrzn{f zh~0X0`oVmj-ghfG$E^O5R~7V{`uzxMPv=~a$3%6d^edq<5l zKfd9#kFuriq<$iT=v6)wv}jm&8oz8YW0vy*HqN|oOtc+-14@i=8X3|vF2RPq_65St$V1Y9-HSD!O*US@uRl4p`yD z?+B=@XPU5iD%Z%(XiTO^!x{7Zbk5m-YS+Kr+QR)AY8l8|YhuxsVavWV;&NfD^0LkG z&Z3B%Y4or@R-Towk;Z$IVeswrHC;L@6R(%-jl!&AMKM$?qnR(yI>MrhaMcvsN1<{Q(?@r{>4#nKawSN6Yom^(UtzU;N zdPDSDzaIPl&|5ElP1j|w#xC7~eA5wrvzm=O*>}-yUZk+P%||xfaRJ@B-xy|R@WpRl l;5Q=hI~w2Qw>#n~ZFUmh?6*7mC&ulY`k;BUQv2H-{|9jVA4&iK literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/nx_SuperEagle.h b/virtuanessrc097-master/nx_SuperEagle.h new file mode 100644 index 0000000000000000000000000000000000000000..17a9b3d47e7efee3586ca34802eb986f3d32e594 GIT binary patch literal 45570 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 UFE`ce`MkJ!9Qp{|)o-f*Kgf5=761SM literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/nx_hq2x.h b/virtuanessrc097-master/nx_hq2x.h new file mode 100644 index 0000000000000000000000000000000000000000..79154c8c94157d647ff55f1529e1045c79e48800 GIT binary patch literal 23002 zcmeI3Yi}I46^8k_K>x!u{vx-oZAq5Yz-a+hty2L~;?^>PASeu3TG`v^R;_$%n!n!m zeR%eWGb3^@BWuw(gM~D+>D+5@y3kX2y6Mj^!&l+CTE7&HLaj z6i4S!lrI|^x%?-RZoYUHZzRB4Pf0RBuQ75#p z_nU_4^3Zcn6kD=jCw`;#xmur!?wOvtFS<&17E=}_Nr!GReKgjM z+#*^l**lPp`_ccSY;E~gv}7^y&)sqK5#vYPSXNV~hVeW8qq-c3mWtGl;4XS6tI1n( z=au;SxLP!MMWs@Dm16X%AC;asla=JlJK0S(w=XE!Zoy}w97M8Z>I`@&)8vH{<;I}k4pd~E_^5~n$hnP?LxM!GS z&c>C(^YlbdAQg{OP4Sb{cga4l;zZJMO$V~Yo!tYpo@ z7}_Wh+wM)PfZH*HeJzp3x4tUiS&J%PV-er!nf>SmvVhDd>P?&+m42_gE&chrA$clgFl+zhiPDZ>AkQAj8?5W$M;1}P$t|C$EMligYp!@- zhkuUsY)Uv0cdN#%VQr3jAMIeJfu!>|LLNuS0*?w?E5B7VFoRVZL6h`CbJu!!5xF0! zE)P_NwqqN9JB$_SVXTh1p5@p>g`lq5Dy{zfNFF)RE{0g1Ml~C+mB@=VIdj-6T~j@# z^-_B$yzs-g;#IPzO*_>35*qWC*S{t4`@M91tm_w1TjTdQ{6?Q)+><4)tnsdMK9FCj z7wm$V)xU2^;;H0EeDa;v4S&y2(X*_cN;PqFh#6o^qo_xzeC? zkHFVfV0h&Z;>8}MX}!xvPFu_0M%~TJrltKy*VPt1x=x~BZ_%T1j{Zk!LAA79;51#` zztePd@8;=}ZqVV|Cf$#XIBR;f9%I;3_V7x}0}myO*l5b~@mOn7%~Ay<;;DhiBdV=xS$5qW*AHW%RnsUFj^BYS3NoYG=7bVRyNYI?JVEbeFr< zSuVAyyWI88a>?TEayQ0u$>TfYH46JH)}&9BWodHO-kL%x>yfr!n*ub%UG zFV7E*ZAt4|TYFHGxzGEW73=bt`kv@)HqBXPbcvhCCeM^L0pV%#N6Lyc&)e(tB{@kd zb+=^yYD;EGn$eYHmAS9V0`su>Y_d(OTDd`Ak~5o4kHlpjPdfe0q^?Qxd89i1O{K0j z{978oHTk6M*V6c{%c6N~a{8Ouw9%4TvdQR5vPw2>XbnA2Ogeo@&TKLHxun+fpk$NL zm1LD{TGsAtzL82#lw{3j*Rt^JW`vY1bIOuDvyEBK*T17NcFT?zJlEI4NcdqqA5woE z2{jbSQHO*eIlr`1x)b-+pdI`Iz$|aGE4%H~x}0rY$+oU$T5Wc|&e>+!eEUv;Pp+NW z>pB;kr*iE!W8`|Mm-%+;ajwT|X0FHTTD~XerEOtD#BS~hGCbc-4(EEvpIp1gd%lkt zriVX|7RN&>Av543?R}5+v+kSJ&w4N4@2f@cZ|`rcKk={kTO_A=o{qpVj%@^vwmbsY z>?xsUPUW7miqXdDnpCs#`cx1&Z0`{`aK#>hyNrlpn!CKtaAi(R*p}y04kdHygm8Hs znnay&E~EZAB5>p)6>!lATu$yH5V)M&MIdlFx%J&Rzaz|tbk2sr<>b~;iuvWvhQQ_I zE&_qe$*rR(^V>Tc0+*B9BXCU|DCeVk&d-a$<@nWOdtL-C$FCkc^CECLe)XK6gnNBl z1kNE{pOXy;~s6@R~SO>C9t{J8q> zs#Tcvj3K! z`y77ajybM-t~n+*3B9ujbjp&vkA>d(uDL%y*G9Jb^K<#rcovzT;`uqxg%|N$dVhZI zLTigfzQM|BrawQ|pP#e0r298m)9GYTjkLSwd@|p91c~Cb-|4st!a`}1Et bg5>XZ_HSS|&usN?V6ua1|7twX8<_tCEExYV literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/res/CheatImageList.bmp b/virtuanessrc097-master/res/CheatImageList.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5def99eea97f4d7ee542079033728febe5019b28 GIT binary patch literal 630 zcmaixyAi@L42A_q>pR9^433_4QfCcU>D{nGM(_d|#5CrU&Yv`i67f_fbLjZ!A#jH1=~au=6=fgsLZJiJGwU p8~?;iFr5m&*KZuXJ|##!EBgE;9$L&fOy9(N|8>qEywAb&P9NwYQM>>E literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/res/LauncherImageList.bmp b/virtuanessrc097-master/res/LauncherImageList.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d8102bd289377edde8901e553e3f990dd3ea2b59 GIT binary patch literal 886 zcmZXSv1-FG5QbISCDbC_`vToP1r3GLC6Llr=u>pgBLqAhY3M7ocrscvbO{uy)q~$5 z&@6$1`kkB*r~MP@Z29x)*ZJ-qp3hCzGxH7OiE+g^GZ)OK()FX}#_%`uc^{a$G$90{ zK1lg*Qqn61KV4$#{!4_l2!||Dgb16`I3*sntCM#G!8?y?8=cd)MlbLpiv!!;A|QwqAhye5g>yV`pzL|J;4H=9F!gaQrt9S`B_+BxOx zMqK98c<)~eRH&Qu6F9ECq#xyPzk6OP_<^6UV}s%zeSHMEp9*onH^O`BCyn{Uxtdfo z`rk&tS;Q~v!LKdlI{Io7AeeD>4VryxDY4Y5{U zzgI;R`hof&V6;Ck^)J@>#38;Ze`#YwepxC{b(CjE>Ur!(eV@Mc=JL&WqTc&q|Kxrc RO#A-pqV2SwF+kMZs$b!&?m_?n literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/res/VirtuaNES.exe.manifest b/virtuanessrc097-master/res/VirtuaNES.exe.manifest new file mode 100644 index 00000000..0803f351 --- /dev/null +++ b/virtuanessrc097-master/res/VirtuaNES.exe.manifest @@ -0,0 +1,24 @@ + + + + + VirtuaNES Application + + + + + + + diff --git a/virtuanessrc097-master/res/VirtuaNES.ico b/virtuanessrc097-master/res/VirtuaNES.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d8e88da09d489c5caf97928df1c96f2978ede48 GIT binary patch literal 766 zcmah{F-`+95L_pSM54I3K}vNg`2rPr3O@iEoK$g_>ny|vcmgFI_W&fmkdpGQ@|}n> z%%1O(281u;_3VzlV=E$t-(oQn9bY4nOU5f=K`aR)XPiYmYrhZAA}ijfz?n-a%aTzG z=zap|ir}Xyo&Fle>PV(kllk!eT2+JG=W_8~4ZMgx_cisYTu9+7Iq_;5?uU(xt_XnLDB0b67g12wOT zB&bQP%{AdRo@QE0qaBZ~;RdyB0|Fl4)Fh9xp((JoxpJe=))a9~RdnPwV?ya1ksXbl zohWG0QqWhGs-RUdLVrUFbZ^sWH3{mt3Bh-alb+y)Y7!vQ*>SLCzc;1K>{$A50ql68 zl2{7%ylo|h)bO!Kdl?@{>r!OvMQ(VOA}2Cp;zh=UDM=XRg}CiOd*)5#{DXgIdV7SJ S7JkB3e6HOcu>S-OIeq{P_v5kv literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/res/header_down.ico b/virtuanessrc097-master/res/header_down.ico new file mode 100644 index 0000000000000000000000000000000000000000..31a8c39c1c2e8316e46b9a1a8ae2276408d4b614 GIT binary patch literal 318 zcmaiuy$u2}428dwkWyYMYRcP!m99%kHenR90VA*i5*6YnJlmW^fpoUtvtvKShC!Zl z7H^ma*aDM~g`Hr1v*!GdDk!Kml31lsX{~9{J?PykL2fOhbxYUKl&^Xo{hj8~2MIiv j*g=u4f4V5*4!b4rKEQJiuM^yl@VLP3tQA_iXnykt>@+(F literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/res/header_up.ico b/virtuanessrc097-master/res/header_up.ico new file mode 100644 index 0000000000000000000000000000000000000000..ad96699c16725c7eb5c4d68a7249ae633b40a324 GIT binary patch literal 318 zcmaiuI}XA?3`Acfq%E@*HDzwWmC~hTZ^BX78{`PNLL@50XBpcd8l>2svE`i|89HUo zS-fNDU=IvJ77l{#EvoZBDxjj2Xkv{*q1LL0=0$5Z2})ZTZH81Xo5F(xt9?pi@13y^ lkLlxuUH-Vy5I?&7wS}9qDZgUzV@hX%2S{lO;xJUf+y2GxsFmTd2%v$ z{Fme+P98L)x*)nHJ9j4u`INlJ$sDBIRi(rknVhpmjco)=RXx!&HDhW@hn%3()HR5w zpB<)iqcx=W$tj%SWlG@6UA)9M<`jHmE}Ujl_()u6qFekawTl{_As?V1L%-p9YBRA& zLyee0*G;jDt})&@>N>8s>X>io8Bp7%x=(LUSL`C09)87JaoW^uTJefIrpLAy z=!}hdzqZy6)Fbr7AeyG31}i21hi}`v1UUxV_Sk2J1NeM0WA4@?_P^bxr9 +#include +#include +#include "zlib.h" +#include "unzip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else +# include +#endif + + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + + + +#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ + !defined(CASESENSITIVITYDEFAULT_NO) +#define CASESENSITIVITYDEFAULT_NO +#endif + + +#ifndef UNZ_BUFSIZE +#define UNZ_BUFSIZE (16384) +#endif + +#ifndef UNZ_MAXFILENAMEINZIP +#define UNZ_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) + + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +const char unz_copyright[] = + " unzip 0.15 Copyright 1998 Gilles Vollant "; + +/* unz_file_info_interntal contain internal info about a file in zipfile*/ +typedef struct unz_file_info_internal_s +{ + uLong offset_curfile;/* relative offset of local header 4 bytes */ +} unz_file_info_internal; + + +/* file_in_zip_read_info_s contain internal information about a file in zipfile, + when reading and decompress it */ +typedef struct +{ + char *read_buffer; /* internal buffer for compressed data */ + z_stream stream; /* zLib stream structure for inflate */ + + uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ + uLong stream_initialised; /* flag set if stream structure is initialised*/ + + uLong offset_local_extrafield;/* offset of the local extra field */ + uInt size_local_extrafield;/* size of the local extra field */ + uLong pos_local_extrafield; /* position in the local extra field in read*/ + + uLong crc32; /* crc32 of all data uncompressed */ + uLong crc32_wait; /* crc32 we must obtain after decompress all */ + uLong rest_read_compressed; /* number of byte to be decompressed */ + uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ + FILE* file; /* io structore of the zipfile */ + uLong compression_method; /* compression method (0==store) */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ +} file_in_zip_read_info_s; + + +/* unz_s contain internal information about the zipfile +*/ +typedef struct +{ + FILE* file; /* io structore of the zipfile */ + unz_global_info gi; /* public global information */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ + uLong num_file; /* number of the current file in the zipfile*/ + uLong pos_in_central_dir; /* pos of the current file in the central dir*/ + uLong current_file_ok; /* flag about the usability of the current file*/ + uLong central_pos; /* position of the beginning of the central dir*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory with + respect to the starting disk number */ + + unz_file_info cur_file_info; /* public info about the current file in zip*/ + unz_file_info_internal cur_file_info_internal; /* private info about it*/ + file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current + file if we are decompressing it */ +} unz_s; + + +/* =========================================================================== + Read a byte from a gz_stream; update next_in and avail_in. Return EOF + for end of file. + IN assertion: the stream s has been sucessfully opened for reading. +*/ + + +local int unzlocal_getByte(fin,pi) + FILE *fin; + int *pi; +{ + unsigned char c; + int err = fread(&c, 1, 1, fin); + if (err==1) + { + *pi = (int)c; + return UNZ_OK; + } + else + { + if (ferror(fin)) + return UNZ_ERRNO; + else + return UNZ_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int unzlocal_getShort (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int unzlocal_getLong (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<16; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<24; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + + +/* My own strcmpi / strcasecmp */ +local int strcmpcasenosensitive_internal (fileName1,fileName2) + const char* fileName1; + const char* fileName2; +{ + for (;;) + { + char c1=*(fileName1++); + char c2=*(fileName2++); + if ((c1>='a') && (c1<='z')) + c1 -= 0x20; + if ((c2>='a') && (c2<='z')) + c2 -= 0x20; + if (c1=='\0') + return ((c2=='\0') ? 0 : -1); + if (c2=='\0') + return 1; + if (c1c2) + return 1; + } +} + + +#ifdef CASESENSITIVITYDEFAULT_NO +#define CASESENSITIVITYDEFAULTVALUE 2 +#else +#define CASESENSITIVITYDEFAULTVALUE 1 +#endif + +#ifndef STRCMPCASENOSENTIVEFUNCTION +#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal +#endif + +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) + +*/ +extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) + const char* fileName1; + const char* fileName2; + int iCaseSensitivity; +{ + if (iCaseSensitivity==0) + iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; + + if (iCaseSensitivity==1) + return strcmp(fileName1,fileName2); + + return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); +} + +#define BUFREADCOMMENT (0x400) + +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong unzlocal_SearchCentralDir(fin) + FILE *fin; +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (fseek(fin,0,SEEK_END) != 0) + return 0; + + + uSizeFile = ftell( fin ); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (fseek(fin,uReadPos,SEEK_SET)!=0) + break; + + if (fread(buf,(uInt)uReadSize,1,fin)!=1) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} + +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer + "zlib/zlib109.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ +extern unzFile ZEXPORT unzOpen (path) + const char *path; +{ + unz_s us; + unz_s *s; + uLong central_pos,uL; + FILE * fin ; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + + int err=UNZ_OK; + + if (unz_copyright[0]!=' ') + return NULL; + + fin=fopen(path,"rb"); + if (fin==NULL) + return NULL; + + central_pos = unzlocal_SearchCentralDir(fin); + if (central_pos==0) + err=UNZ_ERRNO; + + if (fseek(fin,central_pos,SEEK_SET)!=0) + err=UNZ_ERRNO; + + /* the signature, already checked */ + if (unzlocal_getLong(fin,&uL)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of this disk */ + if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of the disk with the start of the central directory */ + if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir */ + if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((number_entry_CD!=us.gi.number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=UNZ_BADZIPFILE; + + /* size of the central directory */ + if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* zipfile comment length */ + if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((central_pospfile_in_zip_read!=NULL) + unzCloseCurrentFile(file); + + fclose(s->file); + TRYFREE(s); + return UNZ_OK; +} + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ +extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) + unzFile file; + unz_global_info *pglobal_info; +{ + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + *pglobal_info=s->gi; + return UNZ_OK; +} + + +/* + Translate date/time from Dos format to tm_unz (readable more easilty) +*/ +local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) + uLong ulDosDate; + tm_unz* ptm; +{ + uLong uDate; + uDate = (uLong)(ulDosDate>>16); + ptm->tm_mday = (uInt)(uDate&0x1f) ; + ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; + ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; + + ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); + ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; + ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; +} + +/* + Get Info about the current file in the zipfile, with internal only info +*/ +local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal + *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); + +local int unzlocal_GetCurrentFileInfoInternal (file, + pfile_info, + pfile_info_internal, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + unz_file_info_internal *pfile_info_internal; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + unz_s* s; + unz_file_info file_info; + unz_file_info_internal file_info_internal; + int err=UNZ_OK; + uLong uMagic; + long lSeek=0; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) + err=UNZ_ERRNO; + + + /* we check the magic */ + if (err==UNZ_OK) + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x02014b50) + err=UNZ_BADZIPFILE; + + if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) + err=UNZ_ERRNO; + + unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); + + if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) + err=UNZ_ERRNO; + + lSeek+=file_info.size_filename; + if ((err==UNZ_OK) && (szFileName!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_filename0) && (fileNameBufferSize>0)) + if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek -= uSizeRead; + } + + + if ((err==UNZ_OK) && (extraField!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) + if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek += file_info.size_file_extra - uSizeRead; + } + else + lSeek+=file_info.size_file_extra; + + + if ((err==UNZ_OK) && (szComment!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + if ((file_info.size_file_comment>0) && (commentBufferSize>0)) + if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek+=file_info.size_file_comment - uSizeRead; + } + else + lSeek+=file_info.size_file_comment; + + if ((err==UNZ_OK) && (pfile_info!=NULL)) + *pfile_info=file_info; + + if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) + *pfile_info_internal=file_info_internal; + + return err; +} + + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. +*/ +extern int ZEXPORT unzGetCurrentFileInfo (file, + pfile_info, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, + szFileName,fileNameBufferSize, + extraField,extraFieldBufferSize, + szComment,commentBufferSize); +} + +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ +extern int ZEXPORT unzGoToFirstFile (file) + unzFile file; +{ + int err=UNZ_OK; + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + s->pos_in_central_dir=s->offset_central_dir; + s->num_file=0; + err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ +extern int ZEXPORT unzGoToNextFile (file) + unzFile file; +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + if (s->num_file+1==s->gi.number_entry) + return UNZ_END_OF_LIST_OF_FILE; + + s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; + s->num_file++; + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzipStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ +extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) + unzFile file; + const char *szFileName; + int iCaseSensitivity; +{ + unz_s* s; + int err; + + + uLong num_fileSaved; + uLong pos_in_central_dirSaved; + + + if (file==NULL) + return UNZ_PARAMERROR; + + if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) + return UNZ_PARAMERROR; + + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + num_fileSaved = s->num_file; + pos_in_central_dirSaved = s->pos_in_central_dir; + + err = unzGoToFirstFile(file); + + while (err == UNZ_OK) + { + char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; + unzGetCurrentFileInfo(file,NULL, + szCurrentFileName,sizeof(szCurrentFileName)-1, + NULL,0,NULL,0); + if (unzStringFileNameCompare(szCurrentFileName, + szFileName,iCaseSensitivity)==0) + return UNZ_OK; + err = unzGoToNextFile(file); + } + + s->num_file = num_fileSaved ; + s->pos_in_central_dir = pos_in_central_dirSaved ; + return err; +} + + +/* + Read the local header of the current zipfile + Check the coherency of the local header and info in the end of central + directory about this file + store in *piSizeVar the size of extra info in local header + (filename and size of extra field data) +*/ +local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, + poffset_local_extrafield, + psize_local_extrafield) + unz_s* s; + uInt* piSizeVar; + uLong *poffset_local_extrafield; + uInt *psize_local_extrafield; +{ + uLong uMagic,uData,uFlags; + uLong size_filename; + uLong size_extra_field; + int err=UNZ_OK; + + *piSizeVar = 0; + *poffset_local_extrafield = 0; + *psize_local_extrafield = 0; + + if (fseek(s->file,s->cur_file_info_internal.offset_curfile + + s->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + + + if (err==UNZ_OK) + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x04034b50) + err=UNZ_BADZIPFILE; + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; +/* + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) + err=UNZ_BADZIPFILE; +*/ + if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) + err=UNZ_BADZIPFILE; + + if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + + if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) + err=UNZ_BADZIPFILE; + + *piSizeVar += (uInt)size_filename; + + if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) + err=UNZ_ERRNO; + *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + + SIZEZIPLOCALHEADER + size_filename; + *psize_local_extrafield = (uInt)size_extra_field; + + *piSizeVar += (uInt)size_extra_field; + + return err; +} + +/* + Open for reading data the current file in the zipfile. + If there is no error and the file is opened, the return value is UNZ_OK. +*/ +extern int ZEXPORT unzOpenCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + int Store; + uInt iSizeVar; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uLong offset_local_extrafield; /* offset of the local extra field */ + uInt size_local_extrafield; /* size of the local extra field */ + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_PARAMERROR; + + if (s->pfile_in_zip_read != NULL) + unzCloseCurrentFile(file); + + if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, + &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) + return UNZ_BADZIPFILE; + + pfile_in_zip_read_info = (file_in_zip_read_info_s*) + ALLOC(sizeof(file_in_zip_read_info_s)); + if (pfile_in_zip_read_info==NULL) + return UNZ_INTERNALERROR; + + pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); + pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; + pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; + pfile_in_zip_read_info->pos_local_extrafield=0; + + if (pfile_in_zip_read_info->read_buffer==NULL) + { + TRYFREE(pfile_in_zip_read_info); + return UNZ_INTERNALERROR; + } + + pfile_in_zip_read_info->stream_initialised=0; + + if ((s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + Store = s->cur_file_info.compression_method==0; + + pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; + pfile_in_zip_read_info->crc32=0; + pfile_in_zip_read_info->compression_method = + s->cur_file_info.compression_method; + pfile_in_zip_read_info->file=s->file; + pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; + + pfile_in_zip_read_info->stream.total_out = 0; + + if (!Store) + { + pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; + pfile_in_zip_read_info->stream.zfree = (free_func)0; + pfile_in_zip_read_info->stream.opaque = (voidpf)0; + + err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); + if (err == Z_OK) + pfile_in_zip_read_info->stream_initialised=1; + /* windowBits is passed < 0 to tell that there is no zlib header. + * Note that in this case inflate *requires* an extra "dummy" byte + * after the compressed stream in order to complete decompression and + * return Z_STREAM_END. + * In unzip, i don't wait absolutely Z_STREAM_END because I known the + * size of both compressed and uncompressed data + */ + } + pfile_in_zip_read_info->rest_read_compressed = + s->cur_file_info.compressed_size ; + pfile_in_zip_read_info->rest_read_uncompressed = + s->cur_file_info.uncompressed_size ; + + + pfile_in_zip_read_info->pos_in_zipfile = + s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + + iSizeVar; + + pfile_in_zip_read_info->stream.avail_in = (uInt)0; + + + s->pfile_in_zip_read = pfile_in_zip_read_info; + return UNZ_OK; +} + + +/* + Read bytes from the current file. + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ +extern int ZEXPORT unzReadCurrentFile (file, buf, len) + unzFile file; + voidp buf; + unsigned len; +{ + int err=UNZ_OK; + uInt iRead = 0; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if ((pfile_in_zip_read_info->read_buffer == NULL)) + return UNZ_END_OF_LIST_OF_FILE; + if (len==0) + return 0; + + pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; + + pfile_in_zip_read_info->stream.avail_out = (uInt)len; + + if (len>pfile_in_zip_read_info->rest_read_uncompressed) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_uncompressed; + + while (pfile_in_zip_read_info->stream.avail_out>0) + { + if ((pfile_in_zip_read_info->stream.avail_in==0) && + (pfile_in_zip_read_info->rest_read_compressed>0)) + { + uInt uReadThis = UNZ_BUFSIZE; + if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; + if (uReadThis == 0) + return UNZ_EOF; + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->pos_in_zipfile + + pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, + pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + pfile_in_zip_read_info->pos_in_zipfile += uReadThis; + + pfile_in_zip_read_info->rest_read_compressed-=uReadThis; + + pfile_in_zip_read_info->stream.next_in = + (Bytef*)pfile_in_zip_read_info->read_buffer; + pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; + } + + if (pfile_in_zip_read_info->compression_method==0) + { + uInt uDoCopy,i ; + if (pfile_in_zip_read_info->stream.avail_out < + pfile_in_zip_read_info->stream.avail_in) + uDoCopy = pfile_in_zip_read_info->stream.avail_out ; + else + uDoCopy = pfile_in_zip_read_info->stream.avail_in ; + + for (i=0;istream.next_out+i) = + *(pfile_in_zip_read_info->stream.next_in+i); + + pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, + pfile_in_zip_read_info->stream.next_out, + uDoCopy); + pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; + pfile_in_zip_read_info->stream.avail_in -= uDoCopy; + pfile_in_zip_read_info->stream.avail_out -= uDoCopy; + pfile_in_zip_read_info->stream.next_out += uDoCopy; + pfile_in_zip_read_info->stream.next_in += uDoCopy; + pfile_in_zip_read_info->stream.total_out += uDoCopy; + iRead += uDoCopy; + } + else + { + uLong uTotalOutBefore,uTotalOutAfter; + const Bytef *bufBefore; + uLong uOutThis; + int flush=Z_SYNC_FLUSH; + + uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; + bufBefore = pfile_in_zip_read_info->stream.next_out; + + /* + if ((pfile_in_zip_read_info->rest_read_uncompressed == + pfile_in_zip_read_info->stream.avail_out) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + flush = Z_FINISH; + */ + err=inflate(&pfile_in_zip_read_info->stream,flush); + + uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; + uOutThis = uTotalOutAfter-uTotalOutBefore; + + pfile_in_zip_read_info->crc32 = + crc32(pfile_in_zip_read_info->crc32,bufBefore, + (uInt)(uOutThis)); + + pfile_in_zip_read_info->rest_read_uncompressed -= + uOutThis; + + iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); + + if (err==Z_STREAM_END) + return (iRead==0) ? UNZ_EOF : iRead; + if (err!=Z_OK) + break; + } + } + + if (err==Z_OK) + return iRead; + return err; +} + + +/* + Give the current position in uncompressed data +*/ +extern z_off_t ZEXPORT unztell (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + return (z_off_t)pfile_in_zip_read_info->stream.total_out; +} + + +/* + return 1 if the end of file was reached, 0 elsewhere +*/ +extern int ZEXPORT unzeof (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + return 1; + else + return 0; +} + + + +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field that can be read + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ +extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) + unzFile file; + voidp buf; + unsigned len; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uInt read_now; + uLong size_to_read; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + size_to_read = (pfile_in_zip_read_info->size_local_extrafield - + pfile_in_zip_read_info->pos_local_extrafield); + + if (buf==NULL) + return (int)size_to_read; + + if (len>size_to_read) + read_now = (uInt)size_to_read; + else + read_now = (uInt)len ; + + if (read_now==0) + return 0; + + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->offset_local_extrafield + + pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + + return (int)read_now; +} + +/* + Close the file in zip opened with unzipOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ +extern int ZEXPORT unzCloseCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + { + if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) + err=UNZ_CRCERROR; + } + + + TRYFREE(pfile_in_zip_read_info->read_buffer); + pfile_in_zip_read_info->read_buffer = NULL; + if (pfile_in_zip_read_info->stream_initialised) + inflateEnd(&pfile_in_zip_read_info->stream); + + pfile_in_zip_read_info->stream_initialised = 0; + TRYFREE(pfile_in_zip_read_info); + + s->pfile_in_zip_read=NULL; + + return err; +} + + +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ +extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) + unzFile file; + char *szComment; + uLong uSizeBuf; +{ + int err=UNZ_OK; + unz_s* s; + uLong uReadThis ; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + uReadThis = uSizeBuf; + if (uReadThis>s->gi.size_comment) + uReadThis = s->gi.size_comment; + + if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (uReadThis>0) + { + *szComment='\0'; + if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) + return UNZ_ERRNO; + } + + if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) + *(szComment+s->gi.size_comment)='\0'; + return (int)uReadThis; +} diff --git a/virtuanessrc097-master/zlib/unzip.h b/virtuanessrc097-master/zlib/unzip.h new file mode 100644 index 0000000000000000000000000000000000000000..6c947a946ad92eb1075ff502d0618c7841943440 GIT binary patch literal 20412 zcmdU%>vJ4O6~*UksN#QEoDWe_#EP9z z{XS|=oAc?IeSLneQRmHJbD`Hn<2{dY$IY|$I`l5|?WB3C5wCUixY^UEA2&bJZ(d(( z+<80ZRHG)%2cmPU`I$cL>CR=d+x%3Yf2Vg=zSVr9Yu~ol`20!pu|7ksP}~q_XU!{( zKh~<>YW$>GYc`s9r}LRJX@1@E7%soooM(FNiigV{y=~DrZg*H@GtmmW&3^Npem@nT z6TLJ4w0Wt|hs|F_<-8ri>X8SZ&Re-5t#2gNht*y78L94SK9YjJiD(|{JKA{I{8sbO z&ZN058Xq(tY5lTyB>F`6Po|@wxv6hxF7qz+ncbo@_IsfBp>=Oobnj~1zIcD7mEp{~ z%IxRT^0W5(r1`$3{X*D)bFX<%GrW^Et%~GMT5X_HMxAI5a=H+mGrd6BrS2SPhh=XM zM5E?4$TK(W2COj)?7Y%%cFDI|YPUr5ue!E)?Jlaen=d8F$C~NipEq0j{CRU<)W6g_ zNWR-V(gRlc+8 z=eoPu&U>WaPXc-v_C+M2Gn*2N4*>k<4-ARi&aQ3SfuP6G>J*?yA6kmn**Sd>efC83tp?QrPwtDxp18vH)}{a2cU@}z;fAmp!dn#s^c_D!9JT-fRb40rj;H{Ir#IWKz5gvN#gemzrVwu=l~&o@y7z z;?gL8M4EMAHy2lEL=r}fBT4b2 zS=F|W&7(7}T55f1+M{Hz55?8F)?+Mqv|sbgr@CVqSlal_NR)AC*w?c5_^Jhm+2@(0 zbl&VPOFSWi;5zz*gIIvE%g#U3{a51mMLVuLKf8CHf==*s_!M?(@0YnR zMV}aEOw96cjm=^ay8^GFvlvNTt}L5fQLuM7&`yvqS^@+7CQCsgFSP^q{8W30^?H6Z z*QJ3io@%yZIo4iKhTS7ITQqX+@?~rybK}*~9AALH1YLNB=!tQE(VgQ~OLf#I$07Cw zzqUl=i1qAi9vMfSK|;46!3e-g(A|mN@iF+9b4kV2@S(=^zVsT&VLgRTIGx?;Jai%b zctBPs2ac?3bdRAUGX3z%E^4_QPxsGm*j3Hrq?P1z$qDJO7khkGvM2D>;z#3`y0V@1 z4Yu6kMd9&1#a`ZBLByl8I-0dl<0|sl)4MTHXTXePA4V=7k$Ks_Ef61CvIBo6vpCRP zYLR3a>#_y>(|W6M)^%O7KE?C8*1>aHUWbaGpEN&LCjFtRi(73peJxs^Q#g1iygboN z?+E)xv&a*P@d*r_iEj{3#$S77?t^>#yX=Sep*@{xtwjHNSL}07yP)FQzv6LnC4abm zyImdce%N}J9m#^MXh+$g@B0pTM8^I5g+`&Uqt&n>yi?v8=Q;=L!_(YQUU)PC#Jj6T>d_kuXydckw|94-y3d*N<}_2@Qbj`5 zMJ@Puz2=Yi*sqj1XBN9K%HatQQY^Y&De>xwR@)M?Znu8rWjns+(72)Ef#byJ5?{d3 ziC(Uc?9IpqPNrVZeig2QsbbM<8Ux(};e-A5b3?RxC__)6^E$5*IVhF#uM18o^S_inw_j|(Aebr%fG~SoD`d|rq zk5nISiQatf*M#vMQO@W^T)KXpPZKT|?f0Rg`y>5O=d$(#{Vbx&{p|nt0(nxe-kI8O zk>27JLjS`B^s(>lmiH~Kgl?AGMd*LDfc}Q)Z7fZ->?`ztHl<%Y7j<#GzB@n8?eIXZ zzwj#SvQ4sGJREl%znAkA^$I((QQNxX!dtS(P0_Rxiw)z;6fF%Gp(j%{m!!Y+loGm_D;?HYE%PW+hY>fip0?f-?HCZk~f*uqBWT}w%f@x z#*#srdVj~iY2)Gx{iY|Gwb3;>-2Am)2_4KETiyH3C|0&K={J8YJl)jmw%$L|t6u2` zjjWOHNK@?2acD;|ls@sEcz7l|EVflgTMz_>9qXyQ7&qz6jjfV-)_HYwx`_L6!&NV_*GfT<|x?_BXPj9hDx&IJ2|%X)Tpl6}wtW9LYj)!&-Fy51m?9os)>wai?n zxqA9e*CH7_PuUMP{8}rMUsJ)PE+0as_mdgnKOEJViY`N~Kh~8^a8Y;zzwaa_;Q|SoJ7n!@j;Kk;CwPyS2ZN3xcUtOAWvDLed z?3nR>TM5^9m;JmNciod|tN}~6ukE5S+|AB#hJ|-t%;OMu-R@OwwfNXRmd1EAe`7P2 z<#9FsBB`A#1f2+5pu8(Pr_7yuHhzxhr>V6XhIg zIUe7XJL@{pxNz8&-E7oePKIOLm3)t=UUH7)Bt#3cDJ+8wi4*t2n{{RmGoznDm3i|u zJjP*W)!gBq@IZ7FogW|Rz0X(8U4KUH_wb(eIjtjV*7f@;+|~Wg<+$t5Se3gW%SE%b zcI%ph7|yB1j(lEX2V?8pF4kJ|ppw_s{5o1(%F4e{|Ka!Qn$nxu)^}%#kEgQ5&hN>) zg4Zpr3eq+Q##z&=k0h<$3FGS9<19p*$W*8t zDeGd#V^&P9f_}+`hb^Vhq00M4JD@)w^xxFy%#U@K&POWUBY7V`Z<4XKb@{n3_J|+i ztg3#t!pOC(;Giq7N!!US*5f`Rnz|v4f7<*}ubf5IpXoU9VHOK%9*E})mrva#Nog0EZbYy!D3N5?H2+n>dtZ{lqWs6)nSGJ6?fguSL8IJJ- zB|qU{irB+5Q7gD8G>RO%R?$6GJQls|p_VZ*G0*iFzdYkmIzmWb6@>j-qc8O|C^B&O zc~i3Xxy~ZQ^)o2%cC3f%NKp4AORhPL-6yg`@)-Mxa8>sOgDaz|;KTkYcZop5>k_NU zWPFv5O?)P8UnF zd%%yt*^zL1UPZ7z=fOiziFb4-smsCgD|As5xESukIMd3G_>Sg&CJ^p9;UV@R zF?;S`=u8V#)e(&E)H?r*ulkv@ucTpTLG%AIBhOjxwfiSa#-bxnpJVx{R;0tpVpn5c zBQfSpeDSH`(rFv#cuKmCc#C}Tum^ptoshL5 zb+Ux?V1_MoTN=TWkauNgMRG-^M1wv@{g~ACKgAO7i8kIm`dGv%Sqx8$&_#d)^W}U8 zStjRpp7&UE$^PJ%-WK&YOUfy0XoeVxZDH*!6_u1=R>!1sfS3mQ+ zC#=-n;PIJt{+AVFjm`p{Yb7%rr<5l?;ofp4hldlN_l(c1c^I0x8XtXGERzKz$C`_7 z7CW^5u%}6GT<|eeL5gIZ*?TZoe9ZOh z-$h;D>(y?dilm$m_xDtucg?Q)I?FDRBYMfWt}aU+xv8}>iq+z&+`TQGmO5TCZr&M5 za#Q~5#4FWyWUm8do=Tflpc5XZVzahmYgM4Fz!B7zv~{I z4f7XY`lutZ$Y=I%BOLX{kc+o;-5OlDqemqXJ)35&MeaTop6HYHeOl_x{yXDV(G&Z_ z>W8JUSWBRbH47i)l*x%XWp$P?lm$}>q#Cr2&?5h#W9Vsza0j{stzCIN zujVsb*CX@MP&|)!lj^?YkiPDk0d4z)51bdvFMriLo3{jSmOw!T@~JzxUdOhXIbf<- zb>y&0kJjj|^Wa*>d6tG4lzek|?GLnH(+U^plQ`jcReW669;jW=$uL#=!_GIL%31MH z7r9;+iNuono#(6pPS`AUQWmHnVvz&bEH^E>Yqgt==;>-gQ->* z`{3^Q>w05jmnz1QINblYJ@dAF!%&@-?&mW-1&)__vl}v8aLfKj^Q6prWs5fTZs7lJvnTog zrmrcRh9-j>1(q z4}0M<9LIH?{y)@;ORYYL@F$viF@re`KWX(rxX{Pf+dMeV!<+E?@H?$#=Lf>{lSa<9 z@<`Y&HMXMBTl)KP_(Gr0M9XTptIw*&{vo`3qV&UXBFHPjcHxmmj`jOQcs|N-Kh%nI z%^Pp~TI2LzXw*1h^g`q8|3dhDMHhG3*SagsAA}F|jlXaUzCO)o8UuD3R~(B%q-tE7 zOr7UDkwSi%?Efx)Z$^IK4Vz&#&U&Rr0wl|X_x&haL_C*%R;Y^hLOMltHG<>L$*ZOrR97x)r zv5PlafdwQvmKFdE7^l|~zmSX*ZO9lqLa*%ii@srP*yg$%Hp4%q^)Bqr zZ1G0aCpNM#dd~I#4b8eP(BjL;@k!+DMZ{k22FJc1vcV?VJ=vCN$28-5>CjYcs z#(tfMwoC238KrtDe%=v{liAwg>^N*S9OEE2qP%MGHq*j_#T`mVeQvrLKdt$3_>7(s z$2iEGpAvpPKXvV_F3=D2ExJmKJJR{3ESN~)vBqK|Hrm&Jd-b^89>~&(R5iW&+&E0z zqMP`4S;duR$6`hZ8{`TszyS)(y)2i3( zNQ2D19j0f}Jv0)%u&h44hBK`ihdpV!=9_7@h0P=Fd9)|jet&c<^y*ArefZU;tnAFO zv!$e=Hq)YGPjQ-a={$U*ti&Wyjk>wu43mRnr+X6 zv4wR_R>cYQ&WwKl-CBPY&no=i==R_3^^awNXQD1a_(%)JX*d)NCujbF(=^}0FxBZ! zJOzWx*GF0~<|PTjf49~<=LsT>v|*fgpy1^yq>&cX&(VkX6~i4WA6X3LGDuJcb0EEt z`5s2=urYp-d*|88zJ5=_b7}r*v{|z9|L9ZZG`1>VHxbmWnA5%&-qY$o46x=nTYRK7 zHL5N9s#Eev^nRl(+30A|obb=*>yz+#xVHe;vE;+5TbaN0^Y%%U;hLnm8?hz6hgl+& z6I*JlOYPm159ivPCzmH-N4dwA{&&f=^pjTR9Obsrg|w!oAI7L~_?v3Ic255!+*c;Q zqn!ScsJjN2u^tHit(VXft+ow5z8l!J^S@B-7t{eINn z7qh5nl?!JlwGWxvsUYzWuZpZPBEnHqywN|RDH%hg z31guxT@7tzp3a6+u4%8VZ4w=}c4)8P$m8xSqHRihPo=|k>2OOLtl_q?R=i1j&GSn0 zU2OTeY^J?3_i_a-MUWXC;EIBzi$ZYaWguYY_~)sy_mHq6M77s zbMy>bva;SBXAG;6r^WFX!eD)zQ;k|*lFYP=lD^d3d0abI)@$NuTlC)-Z^R7uY_m>s zCUVu`nlAiRd)`&g?6cU>%)PcRvyE94&E-bNYgcmI*1jg~(oPvmwuwc)7Qd(B?^OH# ztlvZz&N1)UVVS4mNScl!(t4%d;+no+Ui zJM6QqW|>4M|GytC1HXL~;|AHzzBE3Kdt>h|#pkokaz|sQvWp+J5?{eT=<^<_Mmd%r zS>HF+o0p=$)7safpKd-;ide?_JenbW%lfEV=_`{R;k{&7-8FtXw=3%6rYKlnKcve} z4{|TEGrIra#OP-QX!6;U3{Rp(r&xJ$O`GRtRuddbe!mF%$7p@8ips$$y@Yy!Q;r?dmE9mdj-t6!s`BFY} zV`eE^vTdV@)0>EI_mQ0MMw`ilj3im`uy;a*lTN8r`&%aRT2k4c`8zk#ba2>{vz{C1 zSE2%qp6cT?tw>hHAdkA-OA`m_cUm5tV}TcZoIJuSxx=Uds5XABgXG+~pIdf=bUfnh z2?sHV7~9lz&g5OS6qoW^(oY3=M0Rwr$lc9Pkdj62q#G>D zYA}na4|I3_oyL$DcSH8n!-?Y8%Xltzs{Dwpz7sj?nc^R(vTM*{EtrwK=_%JwewY7) zc0eMzy#VRfVf1?L#yN;b)oG7??1Q zi6ss_ge6u&li}+}6w6|A9=%sltBui{*UvSWTsri-T3vlKhn>6htTxXpZRko-eyHgr zouMRiD)L?C!MOZt(w`?maGIq(h_R{tGz@*$HSxV3ttZ8m=h4Tl<|H=x{DnM{9uWB_ zewnPYuCwojH{YQz&7rUPZP3^bZCY1K5_-%UJYJOZXow7K-kQE$0>g*+M^Wq2dKz*`L?%D z-J=)L?wFIUP9v|#hv&(tQQTfinrqUnjnyoRXpaBY<3YKP!ME3U(iIgQ-L<>d{WXs% zxm4*wtjuIcjL)qZIq_M>HWtYkIocCGNR=Kx)gb2?c}6Z_qFb)xQWA^y*;d~TJ6U$O z@fOwAX&HG^Y#-_YDlIPYt)`1b{LZ&epci3qdF477%DiUPV6Kh#$I9P^yDdFDVnb2I z?`ab)Etq)`y2br&%p0CY4(R7m=aLbQx0^&)J?iAz_Gr1xuJo`y`s5Z;O0`zQ^lQ2@ zVki1*lzLpZRsFrtL^^j$yx7w?+-c<){4TrsxP6s(LQStVE^Msi#7=;;L;uXn=S!Ls zw%RQoxh>Bv+ih*@9&cBxw$(A>p2O}p$>xAGy?d=~`m(d1r_7I}3+wdy6F^wKKQBbB z;Jy(EZ&C`g4~IZKmU{O!_9xbllA)i8HAK`E#8Tm+v;t0@~4K_%d$hx zurWI&{kZhzWwXYa?J&H7yCaRCkxv&FPB1kVsw!B2iXB z9rdMkRh-t8qe7XD0>N6>GgYg9FZ0DbJ{f0y{0Yt>6Rty5>n6R@;`=yq+w)Ay#~eo= zCbuJpv9T6}TN`{hgpajh+-`ChA9JXhh1gRO%+%%P&z2>;@2eldv#0jlnn`XEtj*&U z2{y?*-RRZvB;C0@ay-u6BG~yf)`m`C5CQ#vp5+(m#jO?tI&Ao|gS}t|R|@H%h^Ox!iaf`#?7{)~UCf4f;z*Q3uG! z;;Fp@f6w=A&Xlt z_Jsz{g#43e!HS$``l$Y#I8oZWhh(30zf*7j#!TPbv|Pq_YEnclqhepzrLCBCKv^kU zdrCdGDL?mW_QaTR^hAEQBW%21bQbTi;es08ZnXV*z<$qzT;FqEI=%EZ=_DJJ-4$?m zWHRyR1TA~8C#TE&p_Z9jwQ3X&s~bAld$LKohxAT)F2}o@ep9;{y_xreK9J1U#@nXyAKt?=TGy0o{(5W^>6@GK94iw2Ein5% zY>xY(>WAL~x7`IJ^&C4-U@eE8+jAn`h5WBiH+9kSbSKPCDfpJ7k{&;IHI9jVYFSM7 zB1*uk4R{WpXiGn(P{Z8_R` z=8DV)8}b^~G4IOmd0XJuW8PQgWoIE0%JHxNCX|zV*o|S1n>TrXJ?(wZLMo+amAOhk Ox9|+I{|0r+3;z$|Z<&z* literal 0 HcmV?d00001 diff --git a/virtuanessrc097-master/zlib/zlib.h b/virtuanessrc097-master/zlib/zlib.h new file mode 100644 index 0000000000000000000000000000000000000000..68a250e4869df1072ba4a11b531a0bd8a809a8b7 GIT binary patch literal 83588 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 Date: Tue, 30 Jul 2024 18:53:36 +0800 Subject: [PATCH 4/5] 123 --- .gitignore | 1 + .../Assets/Script/NesEmulator/CoreDebuger.cs | 1 + .../Assets/Script/NesEmulator/NesEmulator.cs | 12 +- .../Script/NesEmulator/PaletteDefine.cs | 242 ++++++++++++++++++ .../Script/NesEmulator/PaletteDefine.cs.meta | 11 + .../Script/NesEmulator/VideoProvider.cs | 57 ++++- .../Assets/VirtualNes.Core/CPU.cs | 10 +- .../VirtualNes.Core/CoreLibs/ByteArrayRef.cs | 28 ++ .../CoreLibs/ByteArrayRef.cs.meta | 11 + .../Assets/VirtualNes.Core/Debuger.cs | 7 +- .../Assets/VirtualNes.Core/MMU.cs | 19 +- .../Assets/VirtualNes.Core/Mapper/Mapper.cs | 4 +- .../Assets/VirtualNes.Core/NES.cs | 114 ++++++++- .../Assets/VirtualNes.Core/PAD.cs | 2 +- .../Assets/VirtualNes.Core/PPU.cs | 49 ++-- .../Assets/VirtualNes.Core/ROM.cs | 4 +- .../EmulatorConfig/EmulatorConfig.cs | 25 ++ .../Assets/VirtualNes.Core/VsUnisystem.cs | 49 ++++ .../VirtualNes.Core/VsUnisystem.cs.meta | 11 + virtuanessrc097-master/Render32bpp.h | Bin 39262 -> 41142 bytes 20 files changed, 600 insertions(+), 57 deletions(-) create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs.meta create mode 100644 AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs create mode 100644 AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs.meta create mode 100644 AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs create mode 100644 AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs.meta diff --git a/.gitignore b/.gitignore index 44e618d4..41a8bcd7 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /AxibugEmuOnline.Client/ProjectSettings/ProjectVersion.txt /AxibugEmuOnline.Client/ProjectSettings/AutoStreamingSettings.asset /AxibugEmuOnline.Client/Logs +/virtuanessrc097-master/save diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs index d0310954..cdf1191b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs @@ -7,6 +7,7 @@ namespace AxibugEmuOnline.Client { public class CoreDebuger : IDebugerImpl { + public void Log(string message) { Debug.Log(message); diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs index 411c3c0a..a7c7010a 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using UnityEngine; using VirtualNes.Core; using VirtualNes.Core.Debug; @@ -26,7 +27,6 @@ namespace AxibugEmuOnline.Client try { m_nesIns = new NES(romName); - m_nesIns.Command(NESCOMMAND.NESCMD_HWRESET); } catch (Exception ex) { @@ -46,9 +46,17 @@ namespace AxibugEmuOnline.Client if (m_nesIns != null) { m_nesIns.EmulateFrame(true); + var screenBuffer = m_nesIns.ppu.GetScreenPtr(); - VideoProvider.SetDrawData(screenBuffer, PPU.SCREEN_WIDTH, PPU.SCREEN_HEIGHT); + var lineColorMode = m_nesIns.ppu.GetLineColorMode(); + + VideoProvider.SetDrawData(screenBuffer, lineColorMode, 256, 240); } } + + private void OnDestroy() + { + File.WriteAllLines("E:/log.txt", Debuger.logRecords); + } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs new file mode 100644 index 00000000..4cb4fd3a --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs @@ -0,0 +1,242 @@ +using Codice.CM.Client.Differences; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using VirtualNes.Core; + +namespace AxibugEmuOnline.Client.Assets.Script.NesEmulator +{ + public static class PaletteDefine + { + public class PALBUF + { + public byte r; + public byte g; + public byte b; + + public PALBUF(byte r, byte g, byte b) + { + this.r = r; + this.g = g; + this.b = b; + } + } + + // スキャンラインカラー + private static int m_nScanlineColor => Supporter.Config.graphics.nScanlineColor; + + public static float[][] PalConvTbl = new float[8][] + { + new float[3]{1.00f, 1.00f, 1.00f}, + new float[3]{1.00f, 0.80f, 0.73f}, + new float[3]{0.73f, 1.00f, 0.70f}, + new float[3]{0.76f, 0.78f, 0.58f}, + new float[3]{0.86f, 0.80f, 1.00f}, + new float[3]{0.83f, 0.68f, 0.85f}, + new float[3]{0.67f, 0.77f, 0.83f}, + new float[3]{0.68f, 0.68f, 0.68f}, + }; + + public static PALBUF[] m_PaletteBuf = new PALBUF[64] + { + new PALBUF(0x7F, 0x7F, 0x7F), + new PALBUF(0x20, 0x00, 0xB0), + new PALBUF(0x28, 0x00, 0xB8), + new PALBUF(0x60, 0x10, 0xA0), + new PALBUF(0x98, 0x20, 0x78), + new PALBUF(0xB0, 0x10, 0x30), + new PALBUF(0xA0, 0x30, 0x00), + new PALBUF(0x78, 0x40, 0x00), + new PALBUF(0x48, 0x58, 0x00), + new PALBUF(0x38, 0x68, 0x00), + new PALBUF(0x38, 0x6C, 0x00), + new PALBUF(0x30, 0x60, 0x40), + new PALBUF(0x30, 0x50, 0x80), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0xBC, 0xBC, 0xBC), + new PALBUF(0x40, 0x60, 0xF8), + new PALBUF(0x40, 0x40, 0xFF), + new PALBUF(0x90, 0x40, 0xF0), + new PALBUF(0xD8, 0x40, 0xC0), + new PALBUF(0xD8, 0x40, 0x60), + new PALBUF(0xE0, 0x50, 0x00), + new PALBUF(0xC0, 0x70, 0x00), + new PALBUF(0x88, 0x88, 0x00), + new PALBUF(0x50, 0xA0, 0x00), + new PALBUF(0x48, 0xA8, 0x10), + new PALBUF(0x48, 0xA0, 0x68), + new PALBUF(0x40, 0x90, 0xC0), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0xFF, 0xFF, 0xFF), + new PALBUF(0x60, 0xA0, 0xFF), + new PALBUF(0x50, 0x80, 0xFF), + new PALBUF(0xA0, 0x70, 0xFF), + new PALBUF(0xF0, 0x60, 0xFF), + new PALBUF(0xFF, 0x60, 0xB0), + new PALBUF(0xFF, 0x78, 0x30), + new PALBUF(0xFF, 0xA0, 0x00), + new PALBUF(0xE8, 0xD0, 0x20), + new PALBUF(0x98, 0xE8, 0x00), + new PALBUF(0x70, 0xF0, 0x40), + new PALBUF(0x70, 0xE0, 0x90), + new PALBUF(0x60, 0xD0, 0xE0), + new PALBUF(0x60, 0x60, 0x60), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0xFF, 0xFF, 0xFF), + new PALBUF(0x90, 0xD0, 0xFF), + new PALBUF(0xA0, 0xB8, 0xFF), + new PALBUF(0xC0, 0xB0, 0xFF), + new PALBUF(0xE0, 0xB0, 0xFF), + new PALBUF(0xFF, 0xB8, 0xE8), + new PALBUF(0xFF, 0xC8, 0xB8), + new PALBUF(0xFF, 0xD8, 0xA0), + new PALBUF(0xFF, 0xF0, 0x90), + new PALBUF(0xC8, 0xF0, 0x80), + new PALBUF(0xA0, 0xF0, 0xA0), + new PALBUF(0xA0, 0xFF, 0xC8), + new PALBUF(0xA0, 0xFF, 0xF0), + new PALBUF(0xA0, 0xA0, 0xA0), + new PALBUF(0x00, 0x00, 0x00), + new PALBUF(0x00, 0x00, 0x00), + }; + + #region ピクセルフォーマットに変換したパレット + // Color + public static uint[][] m_cnPalette = new uint[8][] + { + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + }; + // Color/Scanline + public static uint[][] m_csPalette = new uint[8][] + { + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + }; + + // Monochrome + public static uint[][] m_mnPalette = new uint[8][] + { + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + }; + + // Monochrome/Scanline + public static uint[][] m_msPalette = new uint[8][] + { + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + new uint[256], + }; + #endregion + + static PaletteDefine() + { + int Rbit = 0, Gbit = 0, Bbit = 0; + int Rsft = 0, Gsft = 0, Bsft = 0; + + GetBitMask(0xFF0000, ref Rsft, ref Rbit); + GetBitMask(0x00FF00, ref Gsft, ref Gbit); + GetBitMask(0x0000FF, ref Bsft, ref Bbit); + + for (int j = 0; j < 8; j++) + { + for (int i = 0; i < 64; i++) + { + uint Rn, Gn, Bn; + uint Rs, Gs, Bs; + + // Normal + Rn = (uint)(PalConvTbl[j][0] * m_PaletteBuf[i].r); + Gn = (uint)(PalConvTbl[j][1] * m_PaletteBuf[i].g); + Bn = (uint)(PalConvTbl[j][2] * m_PaletteBuf[i].b); + // Scanline + Rs = (uint)(PalConvTbl[j][0] * m_PaletteBuf[i].r * m_nScanlineColor / 100.0f); + Gs = (uint)(PalConvTbl[j][1] * m_PaletteBuf[i].g * m_nScanlineColor / 100.0f); + Bs = (uint)(PalConvTbl[j][2] * m_PaletteBuf[i].b * m_nScanlineColor / 100.0f); + + m_cnPalette[j][i] = ((Rn >> (8 - Rbit)) << Rsft) | ((Gn >> (8 - Gbit)) << Gsft) | ((Bn >> (8 - Bbit)) << Bsft); + m_csPalette[j][i] = ((Rs >> (8 - Rbit)) << Rsft) | ((Gs >> (8 - Gbit)) << Gsft) | ((Bs >> (8 - Bbit)) << Bsft); + + // Monochrome + Rn = (uint)(m_PaletteBuf[i & 0x30].r); + Gn = (uint)(m_PaletteBuf[i & 0x30].g); + Bn = (uint)(m_PaletteBuf[i & 0x30].b); + Rn = + Gn = + Bn = (uint)(0.299f * Rn + 0.587f * Gn + 0.114f * Bn); + Rn = (uint)(PalConvTbl[j][0] * Rn); + Gn = (uint)(PalConvTbl[j][1] * Gn); + Bn = (uint)(PalConvTbl[j][2] * Bn); + if (Rn > 0xFF) Rs = 0xFF; + if (Gn > 0xFF) Gs = 0xFF; + if (Bn > 0xFF) Bs = 0xFF; + // Scanline + Rs = (uint)(m_PaletteBuf[i & 0x30].r * m_nScanlineColor / 100.0f); + Gs = (uint)(m_PaletteBuf[i & 0x30].g * m_nScanlineColor / 100.0f); + Bs = (uint)(m_PaletteBuf[i & 0x30].b * m_nScanlineColor / 100.0f); + Rs = + Gs = + Bs = (uint)(0.299f * Rs + 0.587f * Gs + 0.114f * Bs); + Rs = (uint)(PalConvTbl[j][0] * Rs); + Gs = (uint)(PalConvTbl[j][1] * Gs); + Bs = (uint)(PalConvTbl[j][2] * Bs); + if (Rs > 0xFF) Rs = 0xFF; + if (Gs > 0xFF) Gs = 0xFF; + if (Bs > 0xFF) Bs = 0xFF; + + m_mnPalette[j][i] = ((Rn >> (8 - Rbit)) << Rsft) | ((Gn >> (8 - Gbit)) << Gsft) | ((Bn >> (8 - Bbit)) << Bsft); + m_msPalette[j][i] = ((Rs >> (8 - Rbit)) << Rsft) | ((Gs >> (8 - Gbit)) << Gsft) | ((Bs >> (8 - Bbit)) << Bsft); + } + } + } + + // ビット位置の取得 + static void GetBitMask(uint val, ref int shift, ref int bits) + { + shift = 0; + while (((val & (1 << shift)) == 0) && (shift < 32)) + { + shift++; + } + + bits = 32; + while (((val & (1 << (bits - 1))) == 0) && (bits > 0)) + { + bits--; + } + bits = bits - shift; + } + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs.meta b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs.meta new file mode 100644 index 00000000..d93c9c2d --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbd3f54279eb4ae45831a914b13d1cec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs index f0772714..662bac7c 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs @@ -1,8 +1,13 @@ +using AxibugEmuOnline.Client.Assets.Script.NesEmulator; +using Codice.CM.Client.Differences; +using System; using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Text; using UnityEngine; using UnityEngine.UI; +using VirtualNes.Core; namespace AxibugEmuOnline.Client { @@ -12,14 +17,56 @@ namespace AxibugEmuOnline.Client private Texture2D wrapTex; - public void SetDrawData(byte[] data, int width, int height) + public void SetDrawData(byte[] screenData, byte[] lineColorMode, int screenWidth, int screenHeight) { - if (wrapTex == null) wrapTex = new Texture2D(width, height); + if (wrapTex == null) wrapTex = new Texture2D(screenWidth, screenHeight); - var colors = data.Select(d => new Color((d / 255f), (d / 255f), (d / 255f), 1)).ToArray(); - wrapTex.SetPixels(colors); + var str = Encoding.ASCII.GetString(screenData, 0, screenData.Length); + + uint[] pPal; + int pScn = 0; + int width; + + var Dst = wrapTex.GetPixels32(); + var pDst = 0; + + for (int line = 0; line < screenHeight; line++) + { + if ((lineColorMode[line] & 0x80) != 0) + { + pPal = PaletteDefine.m_cnPalette[lineColorMode[line] & 0x07]; + } + else + { + pPal = PaletteDefine.m_mnPalette[lineColorMode[line] & 0x07]; + } + + width = screenWidth; + + while (width > 0) + { + Color32 temp = new Color32(255, 255, 255, 255); + var edx = screenData[pScn]; + + byte index = (byte)(edx & 0xFF); + var colorData = pPal[index]; + var rawData = BitConverter.GetBytes(colorData); + Dst[pDst] = new Color32(rawData[0], rawData[1], rawData[2], 255); + + pScn += 1; + pDst += 1; + width -= 1; + } + + pScn += PPU.SCREEN_WIDTH - screenWidth; + } + + wrapTex.SetPixels32(Dst); wrapTex.Apply(); - Graphics.Blit(wrapTex, Image.texture as RenderTexture); + + Graphics.Blit(wrapTex, Image.mainTexture as RenderTexture); } + + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs index 2b5fad91..4594c8ba 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs @@ -1169,7 +1169,7 @@ namespace VirtualNes.Core return (ushort)(nes.Read(addr) + nes.Read((ushort)(addr + 1)) * 0x100); } - var temp = MMU.CPU_MEM_BANK[addr >> 13].Span; + var temp = MMU.CPU_MEM_BANK[addr >> 13]; shortTemp[0] = temp[addr & 0x1FFF]; shortTemp[1] = temp[(addr & 0x1FFF) + 1]; return BitConverter.ToUInt16(shortTemp, 0); @@ -1716,14 +1716,14 @@ namespace VirtualNes.Core internal byte OP6502(ushort addr) { - return MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF]; + return MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF]; } private byte[] shortTemp = new byte[2]; internal ushort OP6502W(ushort addr) { var bytePage = MMU.CPU_MEM_BANK[addr >> 13]; - var spanByte = bytePage.Span; + var spanByte = bytePage; shortTemp[0] = spanByte[addr & 0x1FFF]; shortTemp[1] = spanByte[(addr & 0x1FFF) + 1]; return BitConverter.ToUInt16(shortTemp, 0); @@ -1744,11 +1744,11 @@ namespace VirtualNes.Core else { // Dummy access - mapper.Read(addr, MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF]); + mapper.Read(addr, MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF]); } // Quick bank read - return MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF]; + return MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF]; } private void AND() diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs new file mode 100644 index 00000000..4966557a --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs @@ -0,0 +1,28 @@ +namespace VirtualNes.Core +{ + public class ByteArrayRef + { + private byte[] m_rawArray; + private int m_offset; + private int m_length; + + public ByteArrayRef(byte[] array, int offset, int length) + { + m_rawArray = array; + m_offset = offset; + m_length = length; + } + + public byte this[int index] + { + get + { + return m_rawArray[m_offset + index]; + } + set + { + m_rawArray[(m_offset + index)] = value; + } + } + } +} diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs.meta b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs.meta new file mode 100644 index 00000000..eba7e428 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ByteArrayRef.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe59f85b299db6f498a7e87a5125df58 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs index 8845558c..526ef757 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs @@ -1,7 +1,11 @@ -namespace VirtualNes.Core.Debug +using System.Collections.Generic; + +namespace VirtualNes.Core.Debug { public static class Debuger { + public static List logRecords = new List(); + private static IDebugerImpl s_debuger; public static void Setup(IDebugerImpl debuger) { @@ -10,6 +14,7 @@ public static void Log(string message) { s_debuger.Log(message); + logRecords.Add(message); } public static void LogError(string message) diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs index 790f5ed2..2ce14c8e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs @@ -1,15 +1,16 @@ using System; +using VirtualNes.Core; namespace VirtualNes { public static class MMU { // CPU 儊儌儕僶儞僋 - public static Memory[] CPU_MEM_BANK = new Memory[8]; // 8K扨埵 + public static ByteArrayRef[] CPU_MEM_BANK = new ByteArrayRef[8]; // 8K扨埵 public static byte[] CPU_MEM_TYPE = new byte[8]; public static int[] CPU_MEM_PAGE = new int[8]; // 僗僥乕僩僙乕僽梡 // PPU 儊儌儕僶儞僋 - public static Memory[] PPU_MEM_BANK = new Memory[12]; // 1K扨埵 + public static ByteArrayRef[] PPU_MEM_BANK = new ByteArrayRef[12]; // 1K扨埵 public static byte[] PPU_MEM_TYPE = new byte[12]; public static int[] PPU_MEM_PAGE = new int[12]; // 僗僥乕僩僙乕僽梡 public static byte[] CRAM_USED = new byte[16]; // 僗僥乕僩僙乕僽梡 @@ -70,9 +71,9 @@ namespace VirtualNes // Frame-IRQ儗僕僗僞($4017) public static int FrameIRQ; - internal static void SetPROM_Bank(byte page, Memory ptr, byte type) + internal static void SetPROM_Bank(byte page, byte[] ptr, byte type) { - CPU_MEM_BANK[page] = ptr; + CPU_MEM_BANK[page] = new ByteArrayRef(ptr, 0, ptr.Length); CPU_MEM_TYPE[page] = type; CPU_MEM_PAGE[page] = 0; } @@ -80,7 +81,7 @@ namespace VirtualNes internal static void SetPROM_8K_Bank(byte page, int bank) { bank %= PROM_8K_SIZE; - CPU_MEM_BANK[page] = new Memory(MMU.PROM, 0x2000 * bank, MMU.PROM.Length - 0x2000 * bank); + CPU_MEM_BANK[page] = new ByteArrayRef(MMU.PROM, 0x2000 * bank, MMU.PROM.Length - 0x2000 * bank); CPU_MEM_TYPE[page] = BANKTYPE_ROM; CPU_MEM_PAGE[page] = bank; } @@ -108,7 +109,7 @@ namespace VirtualNes } // PPU VROM bank - internal static void SetVROM_Bank(byte page, Memory ptr, byte type) + internal static void SetVROM_Bank(byte page, ByteArrayRef ptr, byte type) { PPU_MEM_BANK[page] = ptr; PPU_MEM_TYPE[page] = type; @@ -118,7 +119,7 @@ namespace VirtualNes internal static void SetVROM_1K_Bank(byte page, int bank) { bank %= VROM_1K_SIZE; - PPU_MEM_BANK[page] = new Memory(VROM, 0x0400 * bank, VROM.Length - (0x0400 * bank)); + PPU_MEM_BANK[page] = new ByteArrayRef(VROM, 0x0400 * bank, VROM.Length - (0x0400 * bank)); PPU_MEM_TYPE[page] = BANKTYPE_VROM; PPU_MEM_PAGE[page] = bank; } @@ -161,7 +162,7 @@ namespace VirtualNes internal static void SetCRAM_1K_Bank(byte page, int bank) { bank &= 0x1F; - PPU_MEM_BANK[page] = new Memory(MMU.CRAM, 0x0400 * bank, MMU.CRAM.Length - 0x0400 * bank); + PPU_MEM_BANK[page] = new ByteArrayRef(MMU.CRAM, 0x0400 * bank, MMU.CRAM.Length - 0x0400 * bank); PPU_MEM_TYPE[page] = BANKTYPE_CRAM; PPU_MEM_PAGE[page] = bank; @@ -193,7 +194,7 @@ namespace VirtualNes internal static void SetVRAM_1K_Bank(byte page, int bank) { bank &= 3; - PPU_MEM_BANK[page] = new Memory(VRAM, 0x0400 * bank, VRAM.Length - 0x0400 * bank); + PPU_MEM_BANK[page] = new ByteArrayRef(VRAM, 0x0400 * bank, VRAM.Length - 0x0400 * bank); PPU_MEM_TYPE[page] = BANKTYPE_VRAM; PPU_MEM_PAGE[page] = bank; } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs index 542201a2..c61fae72 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs @@ -26,7 +26,7 @@ namespace VirtualNes.Core // $6000-$7FFF WRAM if (addr >= 0x6000 && addr <= 0x7FFF) { - return MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF]; + return MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF]; } return (byte)(addr >> 8); @@ -35,7 +35,7 @@ namespace VirtualNes.Core { if (addr >= 0x6000 && addr <= 0x7FFF) { - MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF] = data; + MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF] = data; } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs index d6359e23..aad30665 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs @@ -75,6 +75,10 @@ namespace VirtualNes.Core private long base_cycles; private long emul_cycles; + // For VS-Unisystem + byte m_VSDipValue; + VSDIPSWITCH[] m_VSDipTable; + private byte[] m_PadImg = new byte[226] { 28, 8, @@ -253,6 +257,65 @@ namespace VirtualNes.Core NesSub_MemoryInitial(); LoadSRAM(); LoadDISK(); + + { + // Pad饹ڤȳڻߥ󥰤WΤǤ + uint crc = rom.GetPROM_CRC(); + if ( + crc == 0xe792de94 // Best Play - Pro Yakyuu (New) (J) + || crc == 0xf79d684a // Best Play - Pro Yakyuu (Old) (J) + || crc == 0xc2ef3422 // Best Play - Pro Yakyuu 2 (J) + || crc == 0x974e8840 // Best Play - Pro Yakyuu '90 (J) + || crc == 0xb8747abf // Best Play - Pro Yakyuu Special (J) + || crc == 0x9fa1c11f // Castle Excellent (J) + || crc == 0x0b0d4d1b // Derby Stallion - Zenkoku Ban (J) + || crc == 0x728c3d98 // Downtown - Nekketsu Monogatari (J) + || crc == 0xd68a6f33 // Dungeon Kid (J) + || crc == 0x3a51eb04 // Fleet Commander (J) + || crc == 0x7c46998b // Haja no Fuuin (J) + || crc == 0x7e5d2f1a // Itadaki Street - Watashi no Mise ni Yottette (J) + || crc == 0xcee5857b // Ninjara Hoi! (J) + || crc == 0x50ec5e8b // Wizardry - Legacy of Llylgamyn (J) + || crc == 0x343e9146 // Wizardry - Proving Grounds of the Mad Overlord (J) + || crc == 0x33d07e45) + { // Wizardry - The Knight of Diamonds (J) + pad.SetExController(EXCONTROLLER.EXCONTROLLER_TURBOFILE); + } + } + + LoadTurboFile(); + + // VS-UnisystemΥǥեO + if (rom.IsVSUNISYSTEM()) + { + uint crc = rom.GetPROM_CRC(); + + m_VSDipValue = 0; + m_VSDipTable = VsUnisystem.vsdip_default; + } + + Reset(); + + // `ФΥǥեȥץO(Orʹ) + GameOption.defRenderMethod = (int)GetRenderMethod(); + GameOption.defIRQtype = GetIrqType(); + GameOption.defFrameIRQ = GetFrameIRQmode(); + GameOption.defVideoMode = GetVideoMode(); + + // O`ɤO(ȥ꤬oХǥեȤ) + if (rom.GetMapperNo() != 20) + { + GameOption.Load(rom.GetPROM_CRC()); + } + else + { + GameOption.Load(rom.GetGameID(), rom.GetMakerID()); + } + + SetRenderMethod((EnumRenderMethod)GameOption.nRenderMethod); + SetIrqType((IRQMETHOD)GameOption.nIRQtype); + SetFrameIRQmode(GameOption.bFrameIRQ); + SetVideoMode(GameOption.bVideoMode); } catch (Exception ex) { @@ -261,6 +324,44 @@ namespace VirtualNes.Core } } + private int GetIrqType() + { + return nIRQtype; + } + + private void LoadTurboFile() + { + MemoryUtility.ZEROMEMORY(MMU.ERAM, MMU.ERAM.Length); + + if (pad.GetExController() != (int)EXCONTROLLER.EXCONTROLLER_TURBOFILE) + return; + + var fp = Supporter.OpenFile(Supporter.Config.path.szSavePath, "TurboFile.vtf"); + try + { + if (fp == null) + { + // xxx ե_ޤ + throw new Exception($"Can Not Open File [TurboFile.vtf]"); + } + + long size = fp.Length; + // ե륵ȡ + if (size > 32 * 1024) + { + size = 32 * 1024; + } + + fp.Read(MMU.ERAM, 0, MMU.ERAM.Length); + fp.Close(); + } + catch (Exception ex) + { + fp?.Close(); + Debuger.LogError($"Loading TurboFile Error.\n{ex}"); + } + } + private void LoadDISK() { //todo : ŵȡ֧ @@ -1308,7 +1409,7 @@ namespace VirtualNes.Core case 0x05: // $A000-$BFFF case 0x06: // $C000-$DFFF case 0x07: // $E000-$FFFF - return MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF]; + return MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF]; } return 0x00; // Warning\h @@ -1414,8 +1515,13 @@ namespace VirtualNes.Core return ret; } + static int NESWRITECOUNT = 0; internal void Write(ushort addr, byte data) { + NESWRITECOUNT++; + + Debuger.Log($"[{NESWRITECOUNT}] addr:{addr},data:{data}"); + switch (addr >> 13) { case 0x00: // $0000-$1FFF @@ -1461,16 +1567,16 @@ namespace VirtualNes.Core if ((addr & 0x8000) != 0) { // 8character codes - if (MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF] == m_GenieCode[i].cmp) + if (MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF] == m_GenieCode[i].cmp) { - MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF] = m_GenieCode[i].data; + MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF] = m_GenieCode[i].data; } } else { // 6character codes addr |= 0x8000; - MMU.CPU_MEM_BANK[addr >> 13].Span[addr & 0x1FFF] = m_GenieCode[i].data; + MMU.CPU_MEM_BANK[addr >> 13][addr & 0x1FFF] = m_GenieCode[i].data; } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs index df417bbb..01f5df14 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs @@ -330,7 +330,7 @@ namespace VirtualNes.Core } } - private void SetExController(EXCONTROLLER type) + internal void SetExController(EXCONTROLLER type) { excontroller_select = (int)type; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs index fff8fe77..ffbeb54d 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs @@ -1,12 +1,4 @@ -using Codice.CM.Client.Differences; -using Microsoft.Win32; -using System; -using System.IO; -using Unity.VisualScripting.Antlr3.Runtime.Tree; -using UnityEngine; -using static VirtualNes.Core.PPU; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class PPU { @@ -195,7 +187,7 @@ namespace VirtualNes.Core } addr &= 0xEFFF; } - MMU.PPU7_Temp = MMU.PPU_MEM_BANK[addr >> 10].Span[addr & 0x03FF]; + MMU.PPU7_Temp = MMU.PPU_MEM_BANK[addr >> 10][addr & 0x03FF]; break; } @@ -331,7 +323,7 @@ namespace VirtualNes.Core } if (MMU.PPU_MEM_TYPE[vaddr >> 10] != MMU.BANKTYPE_VROM) { - MMU.PPU_MEM_BANK[vaddr >> 10].Span[vaddr & 0x03FF] = data; + MMU.PPU_MEM_BANK[vaddr >> 10][vaddr & 0x03FF] = data; } break; } @@ -473,7 +465,7 @@ namespace VirtualNes.Core int attradr = 0x23C0 + (MMU.loopy_v & 0x0C00) + ((MMU.loopy_v & 0x0380) >> 4); int ntbl_x = ntbladr & 0x001F; int attrsft = (ntbladr & 0x0040) >> 4; - var pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + var pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10]; int tileadr; int cache_tile = unchecked((int)(0xFFFF0000)); @@ -486,7 +478,6 @@ namespace VirtualNes.Core for (int i = 0; i < 33; i++) { - tileadr = tileofs + pNTBL[ntbladr & 0x03FF] * 0x10 + loopy_y; attr = (byte)(((pNTBL[attradr + (ntbl_x >> 2)] >> ((ntbl_x & 2) + attrsft)) & 3) << 2); @@ -508,8 +499,8 @@ namespace VirtualNes.Core { cache_tile = tileadr; cache_attr = attr; - chr_l = MMU.PPU_MEM_BANK[tileadr >> 10].Span[tileadr & 0x03FF]; - chr_h = MMU.PPU_MEM_BANK[tileadr >> 10].Span[(tileadr & 0x03FF) + 8]; + chr_l = MMU.PPU_MEM_BANK[tileadr >> 10][tileadr & 0x03FF]; + chr_h = MMU.PPU_MEM_BANK[tileadr >> 10][(tileadr & 0x03FF) + 8]; BGwrite[pBGw] = (byte)(chr_h | chr_l); int pBGPAL = attr; @@ -540,7 +531,7 @@ namespace VirtualNes.Core ntbl_x = 0; ntbladr ^= 0x41F; attradr = 0x03C0 + ((ntbladr & 0x0380) >> 4); - pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10]; } else { @@ -632,7 +623,7 @@ namespace VirtualNes.Core int attradr = 0x03C0 + ((MMU.loopy_v & 0x0380) >> 4); int ntbl_x = ntbladr & 0x001F; int attrsft = (ntbladr & 0x0040) >> 4; - var pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + var pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10]; int tileadr = 0; int cache_tile = unchecked((int)(0xFFFF0000)); @@ -656,8 +647,8 @@ namespace VirtualNes.Core cache_tile = tileadr; cache_attr = attr; - chr_l = MMU.PPU_MEM_BANK[tileadr >> 10].Span[tileadr & 0x03FF]; - chr_h = MMU.PPU_MEM_BANK[tileadr >> 10].Span[(tileadr & 0x03FF) + 8]; + chr_l = MMU.PPU_MEM_BANK[tileadr >> 10][tileadr & 0x03FF]; + chr_h = MMU.PPU_MEM_BANK[tileadr >> 10][(tileadr & 0x03FF) + 8]; lpScreen[pBGw] = (byte)(chr_l | chr_h); int pBGPAL = attr; @@ -702,7 +693,7 @@ namespace VirtualNes.Core ntbl_x = 0; ntbladr ^= 0x41F; attradr = 0x03C0 + ((ntbladr & 0x0380) >> 4); - pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10].Span; + pNTBL = MMU.PPU_MEM_BANK[ntbladr >> 10]; } else { @@ -732,16 +723,16 @@ namespace VirtualNes.Core } ntbladr = 0x2000 + (MMU.loopy_v & 0x0FFF); - tileadr = ((MMU.PPUREG[0] & PPU_BGTBL_BIT) << 8) + MMU.PPU_MEM_BANK[ntbladr >> 10].Span[ntbladr & 0x03FF] * 0x10 + ((MMU.loopy_v & 0x7000) >> 12); - attr = (byte)(((MMU.PPU_MEM_BANK[ntbladr >> 10].Span[0x03C0 + ((ntbladr & 0x0380) >> 4) + ((ntbladr & 0x001C) >> 2)] >> (((ntbladr & 0x40) >> 4) + (ntbladr & 0x02))) & 3) << 2); + tileadr = ((MMU.PPUREG[0] & PPU_BGTBL_BIT) << 8) + MMU.PPU_MEM_BANK[ntbladr >> 10][ntbladr & 0x03FF] * 0x10 + ((MMU.loopy_v & 0x7000) >> 12); + attr = (byte)(((MMU.PPU_MEM_BANK[ntbladr >> 10][0x03C0 + ((ntbladr & 0x0380) >> 4) + ((ntbladr & 0x001C) >> 2)] >> (((ntbladr & 0x40) >> 4) + (ntbladr & 0x02))) & 3) << 2); if (cache_tile != tileadr || cache_attr != attr) { cache_tile = tileadr; cache_attr = attr; - chr_l = MMU.PPU_MEM_BANK[tileadr >> 10].Span[tileadr & 0x03FF]; - chr_h = MMU.PPU_MEM_BANK[tileadr >> 10].Span[(tileadr & 0x03FF) + 8]; + chr_l = MMU.PPU_MEM_BANK[tileadr >> 10][tileadr & 0x03FF]; + chr_h = MMU.PPU_MEM_BANK[tileadr >> 10][(tileadr & 0x03FF) + 8]; BGwrite[pBGw] = (byte)(chr_l | chr_h); int pBGPAL = attr; @@ -937,8 +928,8 @@ namespace VirtualNes.Core spraddr += ((~sp_y & 8) << 1) + (7 - (sp_y & 7)); } // Character pattern - chr_l = MMU.PPU_MEM_BANK[spraddr >> 10].Span[spraddr & 0x3FF]; - chr_h = MMU.PPU_MEM_BANK[spraddr >> 10].Span[(spraddr & 0x3FF) + 8]; + chr_l = MMU.PPU_MEM_BANK[spraddr >> 10][spraddr & 0x3FF]; + chr_h = MMU.PPU_MEM_BANK[spraddr >> 10][(spraddr & 0x3FF) + 8]; // Character latch(For MMC2/MMC4) if (bChrLatch) @@ -1117,12 +1108,18 @@ namespace VirtualNes.Core return lpScreen; } + public byte[] GetLineColorMode() + { + return lpColormode; + } + internal void SetScreenPtr(byte[] screenBuffer, byte[] colormode) { lpScreen = screenBuffer; lpColormode = colormode; } + internal bool IsDispON() { return (MMU.PPUREG[1] & (PPU_BGDISP_BIT | PPU_SPDISP_BIT)) != 0; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs index b7aacbdd..d6cdd268 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ROM.cs @@ -347,12 +347,12 @@ namespace VirtualNes.Core return diskno; } - internal ulong GetGameID() + internal uint GetGameID() { return fdsgameID; } - internal ulong GetMakerID() + internal uint GetMakerID() { return fdsmakerID; } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs index 961e389b..77f78a8c 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs @@ -17,4 +17,29 @@ public CfgExtraSound extsound { get; private set; } = new CfgExtraSound(); public CfgNetPlay netplay { get; private set; } = new CfgNetPlay(); } + + public static class GameOption + { + // Default保存 + public static int defRenderMethod; + public static int defIRQtype; + public static bool defFrameIRQ; + public static bool defVideoMode; + + // データ + public static int nRenderMethod; + public static int nIRQtype; + public static bool bFrameIRQ; + public static bool bVideoMode; + + public static void Load(uint crc) + { + + } + + public static void Load(uint gid, uint mid) + { + + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs new file mode 100644 index 00000000..18f995cb --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs @@ -0,0 +1,49 @@ +namespace VirtualNes.Core +{ + public class VSDIPSWITCH + { + public string name; + public ushort value; + } + + + public static class VsUnisystem + { + public static VSDIPSWITCH[] vsdip_default = new VSDIPSWITCH[] + { + new VSDIPSWITCH{name="Unknown", value= 0x0100}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x01}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x0200}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x02}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x0400}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x04}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x0800}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x08}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x1000}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x10}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x2000}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x20}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x4000}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x40}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name="Unknown", value= 0x8000}, + new VSDIPSWITCH{name="Off", value= 0x00}, + new VSDIPSWITCH{name="On", value= 0x80}, + new VSDIPSWITCH{name=null, value= 0xFF}, + new VSDIPSWITCH{name=null, value= 0 }, + }; + } +} diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs.meta b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs.meta new file mode 100644 index 00000000..3d06276d --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/VsUnisystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db82d3b2d60f2c14fa3c5582acc439c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/virtuanessrc097-master/Render32bpp.h b/virtuanessrc097-master/Render32bpp.h index 118bad721245ca27ba85c94f1355a14150b720e2..9ecb5b6eff53a841bddd51ea70110b9c1a8f6ce2 100644 GIT binary patch literal 41142 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 From 043c0bb5fe2b207b5c896085864de993307d0572 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Wed, 31 Jul 2024 17:40:32 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=9B=BE=E5=83=8F=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Scene/EmuTest.unity | 317 ++++-------------- .../Assets/Script/NesEmulator/NesEmulator.cs | 6 +- .../Script/NesEmulator/NesEmulator.prefab | 264 +++++++++++++++ .../NesEmulator/NesEmulator.prefab.meta | 7 + .../Script/NesEmulator/VideoProvider.cs | 26 +- .../Assets/VirtualNes.Core/CPU.cs | 75 +++-- .../Assets/VirtualNes.Core/Debuger.cs | 3 - .../Assets/VirtualNes.Core/NES.cs | 25 +- .../EmulatorConfig/EmulatorConfig.cs | 10 +- virtuanessrc097-master/NES/CPU.h | Bin 5054 -> 5054 bytes virtuanessrc097-master/NES/Cpu.cpp | Bin 73900 -> 73958 bytes virtuanessrc097-master/NES/Nes.cpp | Bin 204464 -> 202972 bytes virtuanessrc097-master/NES/Nes.h | Bin 18460 -> 18408 bytes 13 files changed, 410 insertions(+), 323 deletions(-) create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab create mode 100644 AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab.meta diff --git a/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity b/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity index c3cf3001..e73c73ee 100644 --- a/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity +++ b/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity @@ -123,51 +123,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &149545946 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 149545948} - - component: {fileID: 149545947} - m_Layer: 0 - m_Name: NesEmulator - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &149545947 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 149545946} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 39557e19783acee499ace6c68549e8f8, type: 3} - m_Name: - m_EditorClassIdentifier: - VideoProvider: {fileID: 1295252151} ---- !u!4 &149545948 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 149545946} - 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_Children: - - {fileID: 1295252150} - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &708549044 GameObject: m_ObjectHideFlags: 0 @@ -261,78 +216,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &861747459 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 861747460} - - component: {fileID: 861747462} - - component: {fileID: 861747461} - m_Layer: 5 - m_Name: RawImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &861747460 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 861747459} - 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_Children: [] - m_Father: {fileID: 1727033528} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &861747461 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 861747459} - 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: 1, g: 1, b: 1, 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_Texture: {fileID: 8400000, guid: ffe34aaf87e4b9942b4c2ac05943d444, type: 2} - m_UVRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 ---- !u!222 &861747462 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 861747459} - m_CullTransparentMesh: 1 --- !u!1 &1232273651 GameObject: m_ObjectHideFlags: 0 @@ -416,51 +299,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1295252149 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1295252150} - - component: {fileID: 1295252151} - m_Layer: 0 - m_Name: VideoProvider - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1295252150 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1295252149} - 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_Children: - - {fileID: 1727033528} - m_Father: {fileID: 149545948} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1295252151 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1295252149} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 83fbe375412d1af4482ae76e81c1dda2, type: 3} - m_Name: - m_EditorClassIdentifier: - Image: {fileID: 861747461} --- !u!1 &1359344831 GameObject: m_ObjectHideFlags: 0 @@ -527,103 +365,60 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1727033527 -GameObject: +--- !u!1001 &4232056520998800727 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1727033528} - - component: {fileID: 1727033531} - - component: {fileID: 1727033530} - - component: {fileID: 1727033529} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1727033528 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727033527} - 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_Children: - - {fileID: 861747460} - m_Father: {fileID: 1295252150} - m_RootOrder: 0 - 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!114 &1727033529 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727033527} - 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!114 &1727033530 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727033527} - 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!223 &1727033531 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727033527} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4232056521131536013, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} + propertyPath: m_Name + value: NesEmulator + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3} diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs index a7c7010a..308cd88b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs @@ -41,6 +41,7 @@ namespace AxibugEmuOnline.Client m_nesIns = null; } + private void Update() { if (m_nesIns != null) @@ -53,10 +54,5 @@ namespace AxibugEmuOnline.Client VideoProvider.SetDrawData(screenBuffer, lineColorMode, 256, 240); } } - - private void OnDestroy() - { - File.WriteAllLines("E:/log.txt", Debuger.logRecords); - } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab new file mode 100644 index 00000000..d695d77b --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab @@ -0,0 +1,264 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4232056520112715746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4232056520112715745} + - component: {fileID: 4232056520112715744} + m_Layer: 0 + m_Name: VideoProvider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4232056520112715745 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056520112715746} + 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_Children: + - {fileID: 4232056520494431727} + m_Father: {fileID: 4232056521131536011} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4232056520112715744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056520112715746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83fbe375412d1af4482ae76e81c1dda2, type: 3} + m_Name: + m_EditorClassIdentifier: + Image: {fileID: 4232056521759880274} +--- !u!1 &4232056520494431712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4232056520494431727} + - component: {fileID: 4232056520494431724} + - component: {fileID: 4232056520494431725} + - component: {fileID: 4232056520494431726} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4232056520494431727 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056520494431712} + 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_Children: + - {fileID: 4232056521759880275} + m_Father: {fileID: 4232056520112715745} + m_RootOrder: 0 + 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 &4232056520494431724 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056520494431712} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4232056520494431725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056520494431712} + 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 &4232056520494431726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056520494431712} + 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 &4232056521131536013 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4232056521131536011} + - component: {fileID: 4232056521131536012} + m_Layer: 0 + m_Name: NesEmulator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4232056521131536011 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056521131536013} + 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_Children: + - {fileID: 4232056520112715745} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4232056521131536012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056521131536013} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39557e19783acee499ace6c68549e8f8, type: 3} + m_Name: + m_EditorClassIdentifier: + VideoProvider: {fileID: 4232056520112715744} +--- !u!1 &4232056521759880276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4232056521759880275} + - component: {fileID: 4232056521759880273} + - component: {fileID: 4232056521759880274} + m_Layer: 5 + m_Name: RawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4232056521759880275 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056521759880276} + 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_Children: [] + m_Father: {fileID: 4232056520494431727} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 272, y: 240} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4232056521759880273 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056521759880276} + m_CullTransparentMesh: 1 +--- !u!114 &4232056521759880274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4232056521759880276} + 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: 1, g: 1, b: 1, 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_Texture: {fileID: 8400000, guid: ffe34aaf87e4b9942b4c2ac05943d444, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab.meta b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab.meta new file mode 100644 index 00000000..6e486980 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8bea3f8aa351bb46ada33b2274729ea +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs index 662bac7c..b4372e30 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs @@ -4,8 +4,10 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using UnityEngine; +using UnityEngine.Playables; using UnityEngine.UI; using VirtualNes.Core; @@ -15,24 +17,32 @@ namespace AxibugEmuOnline.Client { public RawImage Image; + private Color32[] wrapTexBuffer; + private IntPtr wrapTexBufferPointer; private Texture2D wrapTex; public void SetDrawData(byte[] screenData, byte[] lineColorMode, int screenWidth, int screenHeight) { - if (wrapTex == null) wrapTex = new Texture2D(screenWidth, screenHeight); - - var str = Encoding.ASCII.GetString(screenData, 0, screenData.Length); + if (wrapTex == null) + { + wrapTex = new Texture2D(screenWidth, screenHeight, TextureFormat.BGRA32, false); + wrapTexBuffer = new Color32[screenWidth * screenHeight]; + // ̶飬ֹƶ + GCHandle handle = GCHandle.Alloc(wrapTexBuffer, GCHandleType.Pinned); + // ȡָ + wrapTexBufferPointer = handle.AddrOfPinnedObject(); + } uint[] pPal; int pScn = 0; int width; - var Dst = wrapTex.GetPixels32(); + var Dst = wrapTexBuffer; var pDst = 0; for (int line = 0; line < screenHeight; line++) { - if ((lineColorMode[line] & 0x80) != 0) + if ((lineColorMode[line] & 0x80) == 0) { pPal = PaletteDefine.m_cnPalette[lineColorMode[line] & 0x07]; } @@ -45,8 +55,7 @@ namespace AxibugEmuOnline.Client while (width > 0) { - Color32 temp = new Color32(255, 255, 255, 255); - var edx = screenData[pScn]; + var edx = screenData[pScn + 8]; byte index = (byte)(edx & 0xFF); var colorData = pPal[index]; @@ -61,7 +70,8 @@ namespace AxibugEmuOnline.Client pScn += PPU.SCREEN_WIDTH - screenWidth; } - wrapTex.SetPixels32(Dst); + //wrapTex.SetPixels32(wrapTexBuffer); + wrapTex.LoadRawTextureData(wrapTexBufferPointer, screenWidth * screenHeight * 4); wrapTex.Apply(); Graphics.Blit(wrapTex, Image.mainTexture as RenderTexture); diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs index 4594c8ba..5203e1a6 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs @@ -1,6 +1,7 @@ #undef DPCM_SYNCCLOCK using System; +using VirtualNes.Core.Debug; namespace VirtualNes.Core { @@ -42,7 +43,7 @@ namespace VirtualNes.Core private int DMA_cycles; private Mapper mapper; private APU apu; - private R6502 R = new R6502(); + internal R6502 R = new R6502(); private byte[] ZN_Table = new byte[256]; private Memory STACK; @@ -132,75 +133,77 @@ namespace VirtualNes.Core switch (opcode) { - case 0x69: + case 0x69: // ADC #$?? MR_IM(); ADC(); ADD_CYCLE(2); break; - case 0x65: + case 0x65: // ADC $?? MR_ZP(); ADC(); ADD_CYCLE(3); break; - case 0x75: + case 0x75: // ADC $??,X MR_ZX(); ADC(); ADD_CYCLE(4); break; - case 0x6D: + case 0x6D: // ADC $???? MR_AB(); ADC(); ADD_CYCLE(4); break; - case 0x7D: + case 0x7D: // ADC $????,X MR_AX(); ADC(); CHECK_EA(); ADD_CYCLE(4); break; - case 0x79: + case 0x79: // ADC $????,Y MR_AY(); ADC(); CHECK_EA(); ADD_CYCLE(4); break; - case 0x61: + case 0x61: // ADC ($??,X) MR_IX(); ADC(); ADD_CYCLE(6); break; - case 0x71: + case 0x71: // ADC ($??),Y MR_IY(); ADC(); CHECK_EA(); ADD_CYCLE(4); break; - case 0xE9: + + case 0xE9: // SBC #$?? MR_IM(); SBC(); ADD_CYCLE(2); break; - case 0xE5: + case 0xE5: // SBC $?? MR_ZP(); SBC(); ADD_CYCLE(3); break; - case 0xF5: + case 0xF5: // SBC $??,X MR_ZX(); SBC(); ADD_CYCLE(4); break; - case 0xED: + case 0xED: // SBC $???? MR_AB(); SBC(); ADD_CYCLE(4); break; - case 0xFD: + case 0xFD: // SBC $????,X MR_AX(); SBC(); CHECK_EA(); ADD_CYCLE(4); break; - case 0xF9: // SBC $????Y + case 0xF9: // SBC $????,Y MR_AY(); SBC(); CHECK_EA(); ADD_CYCLE(4); break; - case 0xE1: // SBC ($??X) + case 0xE1: // SBC ($??,X) MR_IX(); SBC(); ADD_CYCLE(6); break; - case 0xF1: // SBC ($??)Y + case 0xF1: // SBC ($??),Y MR_IY(); SBC(); CHECK_EA(); ADD_CYCLE(5); break; + case 0xC6: // DEC $?? MR_ZP(); DEC(); MW_ZP(); ADD_CYCLE(5); break; - case 0xD6: // DEC $??X + case 0xD6: // DEC $??,X MR_ZX(); DEC(); MW_ZP(); ADD_CYCLE(6); break; @@ -208,10 +211,11 @@ namespace VirtualNes.Core MR_AB(); DEC(); MW_EA(); ADD_CYCLE(6); break; - case 0xDE: // DEC $????X + case 0xDE: // DEC $????,X MR_AX(); DEC(); MW_EA(); ADD_CYCLE(7); break; + case 0xCA: // DEX DEX(); ADD_CYCLE(2); @@ -220,11 +224,12 @@ namespace VirtualNes.Core DEY(); ADD_CYCLE(2); break; + case 0xE6: // INC $?? MR_ZP(); INC(); MW_ZP(); ADD_CYCLE(5); break; - case 0xF6: // INC $??X + case 0xF6: // INC $??,X MR_ZX(); INC(); MW_ZP(); ADD_CYCLE(6); break; @@ -232,10 +237,11 @@ namespace VirtualNes.Core MR_AB(); INC(); MW_EA(); ADD_CYCLE(6); break; - case 0xFE: // INC $????X + case 0xFE: // INC $????,X MR_AX(); INC(); MW_EA(); ADD_CYCLE(7); break; + case 0xE8: // INX INX(); ADD_CYCLE(2); @@ -244,6 +250,7 @@ namespace VirtualNes.Core INY(); ADD_CYCLE(2); break; + case 0x29: // AND #$?? MR_IM(); AND(); ADD_CYCLE(2); @@ -252,7 +259,7 @@ namespace VirtualNes.Core MR_ZP(); AND(); ADD_CYCLE(3); break; - case 0x35: // AND $??X + case 0x35: // AND $??,X MR_ZX(); AND(); ADD_CYCLE(4); break; @@ -260,22 +267,23 @@ namespace VirtualNes.Core MR_AB(); AND(); ADD_CYCLE(4); break; - case 0x3D: // AND $????X + case 0x3D: // AND $????,X MR_AX(); AND(); CHECK_EA(); ADD_CYCLE(4); break; - case 0x39: // AND $????Y + case 0x39: // AND $????,Y MR_AY(); AND(); CHECK_EA(); ADD_CYCLE(4); break; - case 0x21: // AND ($??X) + case 0x21: // AND ($??,X) MR_IX(); AND(); ADD_CYCLE(6); break; - case 0x31: // AND ($??)Y + case 0x31: // AND ($??),Y MR_IY(); AND(); CHECK_EA(); ADD_CYCLE(5); break; + case 0x0A: // ASL A ASL_A(); ADD_CYCLE(2); @@ -705,7 +713,7 @@ namespace VirtualNes.Core ADD_CYCLE(6); break; - // 僼儔僌惂屼宯 + // フラグ制御系 case 0x18: // CLC CLC(); ADD_CYCLE(2); @@ -736,7 +744,7 @@ namespace VirtualNes.Core ADD_CYCLE(2); break; - // 僗僞僢僋宯 + // スタック系 case 0x48: // PHA PUSH(R.A); ADD_CYCLE(3); @@ -755,7 +763,7 @@ namespace VirtualNes.Core ADD_CYCLE(4); break; - // 偦偺懠 + // その他 case 0x00: // BRK BRK(); ADD_CYCLE(7); @@ -765,7 +773,7 @@ namespace VirtualNes.Core ADD_CYCLE(2); break; - // 枹岞奐柦椷孮 + // 未公開命令群 case 0x0B: // ANC #$?? case 0x2B: // ANC #$?? MR_IM(); ANC(); @@ -1105,7 +1113,7 @@ namespace VirtualNes.Core default: if (!Supporter.Config.emulator.bIllegalOp) { - throw new Exception("Illegal Opcode"); + throw new Exception("IllegalOp"); } else { @@ -1113,6 +1121,8 @@ namespace VirtualNes.Core ADD_CYCLE(4); } break; + // default: + // __assume(0); } if (nmi_request != 0) @@ -1143,7 +1153,6 @@ namespace VirtualNes.Core #endif return TOTAL_cycles - OLD_cycles; } - private void _IRQ() { PUSH((byte)(R.PC >> 8)); @@ -1836,7 +1845,7 @@ namespace VirtualNes.Core { ET = OP6502W(R.PC); R.PC += 2; - EA = (byte)(ET + R.X); + EA = (ushort)(ET + R.X); DT = RD6502(EA); } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs index 526ef757..21ab49a4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs @@ -4,8 +4,6 @@ namespace VirtualNes.Core.Debug { public static class Debuger { - public static List logRecords = new List(); - private static IDebugerImpl s_debuger; public static void Setup(IDebugerImpl debuger) { @@ -14,7 +12,6 @@ namespace VirtualNes.Core.Debug public static void Log(string message) { s_debuger.Log(message); - logRecords.Add(message); } public static void LogError(string message) diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs index aad30665..39c67cef 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs @@ -486,8 +486,11 @@ namespace VirtualNes.Core m_CheatCode.Clear(); } + private int FrameCount = 0; public void EmulateFrame(bool bDraw) { + FrameCount++; + int scanline = 0; if (rom.IsNSF()) { @@ -498,6 +501,7 @@ namespace VirtualNes.Core CheatCodeProcess(); NES_scanline = scanline; + bool NotTile = RenderMethod != EnumRenderMethod.TILE_RENDER; if (RenderMethod != EnumRenderMethod.TILE_RENDER) { @@ -917,6 +921,7 @@ namespace VirtualNes.Core } } + int CPU_CALL_COUNT = 0; internal void EmulationCPU(int basecycles) { int cycles; @@ -926,8 +931,11 @@ namespace VirtualNes.Core if (cycles > 0) { - emul_cycles += cpu.EXEC(cycles); + var cycleAdd = cpu.EXEC(cycles); + emul_cycles += cycleAdd; } + + CPU_CALL_COUNT++; } internal void Reset() @@ -1041,10 +1049,7 @@ namespace VirtualNes.Core apu.SoundSetup(); } - public void SetRenderMethod(EnumRenderMethod type) - { - RenderMethod = type; - } + internal void SoftReset() { @@ -1514,14 +1519,12 @@ namespace VirtualNes.Core return ret; } - - static int NESWRITECOUNT = 0; + public void SetRenderMethod(EnumRenderMethod type) + { + RenderMethod = type; + } internal void Write(ushort addr, byte data) { - NESWRITECOUNT++; - - Debuger.Log($"[{NESWRITECOUNT}] addr:{addr},data:{data}"); - switch (addr >> 13) { case 0x00: // $0000-$1FFF diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs index 77f78a8c..b24afe0a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs @@ -34,12 +34,18 @@ public static void Load(uint crc) { - + nRenderMethod = defRenderMethod; + nIRQtype = defIRQtype; + bFrameIRQ = defFrameIRQ; + bVideoMode = defVideoMode; } public static void Load(uint gid, uint mid) { - + nRenderMethod = defRenderMethod; + nIRQtype = defIRQtype; + bFrameIRQ = defFrameIRQ; + bVideoMode = defVideoMode; } } } diff --git a/virtuanessrc097-master/NES/CPU.h b/virtuanessrc097-master/NES/CPU.h index 81864335b0227951ceb71a1fd7e83a860c990e2e..52971de2528fdf795b083e049fe919a548b3626e 100644 GIT binary patch delta 20 ccmdm|zE6Eag5cx}f?|^s1PeAl6THC)09suLZ2$lO delta 20 ccmdm|zE6Eag5cyb!Gg&Nf?}JW3Ep4?09TC&6951J diff --git a/virtuanessrc097-master/NES/Cpu.cpp b/virtuanessrc097-master/NES/Cpu.cpp index 7fdbd33503bf958bc6c68bc72c3d4c4f00b808a6..2c598ef0b41a4bf3cfe941d630311a993308bc7e 100644 GIT binary patch delta 242 zcmZ2;kmcDymJJ%Llhas*1Z^0K8A=#Z7&0018T1%380;n|vPy1tU@eL@=46OsaAgQ$ z@MrJ^(!M}Ch#`_egFy{Q>o6z)HD)qYF{A=DrU6BR7&I9)H?L0e6`O2V!Z!I{A;;u@ z6-(;F!P;CHIDtku0yWtJu>pfM11|#?1F~EQPPuRfbU7!WGeUsoaWc4I$brn|WGDyv PB$FYBA$7B7Rs1plWV$P6 delta 187 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%0AOSy4%ICI-jLIUFiyu9d0c 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 OJl6b(irCbzoqqsQ1-*&@ diff --git a/virtuanessrc097-master/NES/Nes.h b/virtuanessrc097-master/NES/Nes.h index a5501ce1ab3b3b9baa3889f201a8b4583d815338..90acdbdd5e38987be6d287f3dc95f1bad86cd8b1 100644 GIT binary patch delta 32 ocmbO;f$>E@te!cfUjz>vyd N4P@7DKC39L1_0oA4tf9p