Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
850ceff343
48 changed files with 1667 additions and 2318 deletions
|
@ -1,59 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppleWin", "AppleWinExpress2010.vcxproj", "{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib-Express2010.vcxproj", "{7935B998-C713-42AE-8F6D-9FF9080A1B1B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip_lib", "zip_lib\zip_lib2010.vcxproj", "{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml", "libyaml\win32\yaml2010.vcxproj", "{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug NoDX|Win32 = Debug NoDX|Win32
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release NoDX|Win32 = Release NoDX|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Debug NoDX|Win32.ActiveCfg = Debug NoDX|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Debug NoDX|Win32.Build.0 = Debug NoDX|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Release NoDX|Win32.ActiveCfg = Release NoDX|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Release NoDX|Win32.Build.0 = Release NoDX|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}.Release|Win32.Build.0 = Release|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Debug NoDX|Win32.ActiveCfg = Debug NoDX|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Debug NoDX|Win32.Build.0 = Debug NoDX|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Release NoDX|Win32.ActiveCfg = Release NoDX|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Release NoDX|Win32.Build.0 = Release NoDX|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7935B998-C713-42AE-8F6D-9FF9080A1B1B}.Release|Win32.Build.0 = Release|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Debug NoDX|Win32.ActiveCfg = Debug NoDX|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Debug NoDX|Win32.Build.0 = Debug NoDX|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Release NoDX|Win32.ActiveCfg = Release NoDX|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Release NoDX|Win32.Build.0 = Release NoDX|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}.Release|Win32.Build.0 = Release|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug NoDX|Win32.ActiveCfg = Debug|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug NoDX|Win32.Build.0 = Debug|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release NoDX|Win32.ActiveCfg = Release|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release NoDX|Win32.Build.0 = Release|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,568 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug NoDX|Win32">
|
||||
<Configuration>Debug NoDX</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release NoDX|Win32">
|
||||
<Configuration>Release NoDX</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>AppleWin</ProjectName>
|
||||
<ProjectGuid>{1DA0C491-B5F4-4EC8-B1D2-CF6BE635DADC}</ProjectGuid>
|
||||
<RootNamespace>AppleWin</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<TypeLibraryName>.\Release/AppleWin.tlb</TypeLibraryName>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<AdditionalIncludeDirectories>source\cpu;source\emulator;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4819;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>htmlhelp.lib;comctl32.lib;ddraw.lib;winmm.lib;dsound.lib;dxguid.lib;version.lib;strmiids.lib;dinput8.lib;user32.lib;gdi32.lib;Advapi32.lib;shell32.lib;Comdlg32.lib;ole32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalLibraryDirectories>$(MSBuildProjectDirectory)\ddraw_lib\x86;</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<TypeLibraryName>.\Release/AppleWin.tlb</TypeLibraryName>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<AdditionalIncludeDirectories>source\cpu;source\emulator;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4819;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>htmlhelp.lib;comctl32.lib;winmm.lib;dsound.lib;version.lib;strmiids.lib;user32.lib;gdi32.lib;Advapi32.lib;shell32.lib;Comdlg32.lib;ole32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalLibraryDirectories>$(MSBuildProjectDirectory)\ddraw_lib\x86;</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<TypeLibraryName>.\Debug/AppleWin.tlb</TypeLibraryName>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>source\cpu;source\emulator;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<BrowseInformation>true</BrowseInformation>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4819;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>htmlhelp.lib;comctl32.lib;ddraw.lib;winmm.lib;dsound.lib;dxguid.lib;version.lib;strmiids.lib;dinput8.lib;user32.lib;gdi32.lib;Advapi32.lib;shell32.lib;Comdlg32.lib;ole32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalLibraryDirectories>$(MSBuildProjectDirectory)\ddraw_lib\x86;</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<TypeLibraryName>.\Debug/AppleWin.tlb</TypeLibraryName>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>source\cpu;source\emulator;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<BrowseInformation>true</BrowseInformation>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4819;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>htmlhelp.lib;comctl32.lib;winmm.lib;dsound.lib;version.lib;strmiids.lib;user32.lib;gdi32.lib;Advapi32.lib;shell32.lib;Comdlg32.lib;ole32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalLibraryDirectories>$(MSBuildProjectDirectory)\ddraw_lib\x86;</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="source\Applewin.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">Use</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debug.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Assembler.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Color.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Commands.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Console.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_DisassemblerData.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Display.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Help.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Parser.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Range.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debugger_Symbols.cpp" />
|
||||
<ClCompile Include="source\DiskFormatTrack.cpp" />
|
||||
<ClCompile Include="source\NTSC.cpp" />
|
||||
<ClCompile Include="source\NTSC_CharSet.cpp" />
|
||||
<ClCompile Include="source\SAM.cpp" />
|
||||
<ClCompile Include="source\StdAfx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Util_MemoryTextFile.cpp" />
|
||||
<ClCompile Include="source\Tfe\Tfe.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Tfearch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Tfesupp.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Uilib.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Z80VICE\daa.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Z80VICE\z80.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Z80VICE\z80mem.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\6821.cpp" />
|
||||
<ClCompile Include="source\AY8910.cpp" />
|
||||
<ClCompile Include="source\Joystick.cpp" />
|
||||
<ClCompile Include="source\Keyboard.cpp" />
|
||||
<ClCompile Include="source\Log.cpp" />
|
||||
<ClCompile Include="source\Memory.cpp" />
|
||||
<ClCompile Include="source\Mockingboard.cpp" />
|
||||
<ClCompile Include="source\MouseInterface.cpp" />
|
||||
<ClCompile Include="source\NoSlotClock.cpp" />
|
||||
<ClCompile Include="source\ParallelPrinter.cpp" />
|
||||
<ClCompile Include="source\Pravets.cpp" />
|
||||
<ClCompile Include="source\Registry.cpp" />
|
||||
<ClCompile Include="source\Riff.cpp" />
|
||||
<ClCompile Include="source\SaveState.cpp" />
|
||||
<ClCompile Include="source\SerialComms.cpp" />
|
||||
<ClCompile Include="source\SoundCore.cpp" />
|
||||
<ClCompile Include="source\Speaker.cpp" />
|
||||
<ClCompile Include="source\Speech.cpp" />
|
||||
<ClCompile Include="source\Tape.cpp" />
|
||||
<ClCompile Include="source\z80emu.cpp" />
|
||||
<ClCompile Include="source\CPU.cpp" />
|
||||
<ClCompile Include="source\SAM.cpp" />
|
||||
<ClCompile Include="source\Disk.cpp" />
|
||||
<ClCompile Include="source\DiskImage.cpp" />
|
||||
<ClCompile Include="source\DiskImageHelper.cpp" />
|
||||
<ClCompile Include="source\Harddisk.cpp" />
|
||||
<ClCompile Include="source\Frame.cpp" />
|
||||
<ClCompile Include="source\Video.cpp" />
|
||||
<ClCompile Include="source\YamlHelper.cpp" />
|
||||
<ClCompile Include="source\Configuration\About.cpp" />
|
||||
<ClCompile Include="source\Configuration\PageAdvanced.cpp" />
|
||||
<ClCompile Include="source\Configuration\PageConfig.cpp" />
|
||||
<ClCompile Include="source\Configuration\PageConfigTfe.cpp" />
|
||||
<ClCompile Include="source\Configuration\PageDisk.cpp" />
|
||||
<ClCompile Include="source\Configuration\PageInput.cpp" />
|
||||
<ClCompile Include="source\Configuration\PageSound.cpp" />
|
||||
<ClCompile Include="source\Configuration\PropertySheet.cpp" />
|
||||
<ClCompile Include="source\Configuration\PropertySheetHelper.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="source\Applewin.h" />
|
||||
<ClInclude Include="source\Debugger\Debug.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Assembler.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Color.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Console.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_DisassemblerData.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Display.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Help.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Parser.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Range.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Symbols.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Types.h" />
|
||||
<ClInclude Include="source\Debugger\Util_MemoryTextFile.h" />
|
||||
<ClInclude Include="source\NTSC.h" />
|
||||
<ClInclude Include="source\NTSC_CharSet.h" />
|
||||
<ClInclude Include="source\Tfe\Bittypes.h" />
|
||||
<ClInclude Include="source\Tfe\Bpf.h" />
|
||||
<ClInclude Include="source\Tfe\Ip6_misc.h" />
|
||||
<ClInclude Include="source\Tfe\Pcap-stdinc.h" />
|
||||
<ClInclude Include="source\Tfe\Pcap.h" />
|
||||
<ClInclude Include="source\Tfe\Tfe.h" />
|
||||
<ClInclude Include="source\Tfe\Tfearch.h" />
|
||||
<ClInclude Include="source\Tfe\Tfesupp.h" />
|
||||
<ClInclude Include="source\Tfe\Uilib.h" />
|
||||
<ClInclude Include="source\Z80VICE\daa.h" />
|
||||
<ClInclude Include="source\Z80VICE\z80.h" />
|
||||
<ClInclude Include="source\Z80VICE\z80mem.h" />
|
||||
<ClInclude Include="source\Z80VICE\z80regs.h" />
|
||||
<ClInclude Include="source\CommonVICE\6510core.h" />
|
||||
<ClInclude Include="source\CommonVICE\alarm.h" />
|
||||
<ClInclude Include="source\CommonVICE\interrupt.h" />
|
||||
<ClInclude Include="source\CommonVICE\mem.h" />
|
||||
<ClInclude Include="source\CommonVICE\types.h" />
|
||||
<ClInclude Include="source\6821.h" />
|
||||
<ClInclude Include="source\AY8910.h" />
|
||||
<ClInclude Include="source\Joystick.h" />
|
||||
<ClInclude Include="source\Keyboard.h" />
|
||||
<ClInclude Include="source\Log.h" />
|
||||
<ClInclude Include="source\Memory.h" />
|
||||
<ClInclude Include="source\Mockingboard.h" />
|
||||
<ClInclude Include="source\MouseInterface.h" />
|
||||
<ClInclude Include="source\NoSlotClock.h" />
|
||||
<ClInclude Include="source\ParallelPrinter.h" />
|
||||
<ClInclude Include="source\Pravets.h" />
|
||||
<ClInclude Include="source\Registry.h" />
|
||||
<ClInclude Include="source\Riff.h" />
|
||||
<ClInclude Include="source\SaveState.h" />
|
||||
<ClInclude Include="source\SerialComms.h" />
|
||||
<ClInclude Include="source\SoundCore.h" />
|
||||
<ClInclude Include="source\Speaker.h" />
|
||||
<ClInclude Include="source\Speech.h" />
|
||||
<ClInclude Include="source\Tape.h" />
|
||||
<ClInclude Include="source\z80emu.h" />
|
||||
<ClInclude Include="source\Common.h" />
|
||||
<ClInclude Include="resource\resource.h" />
|
||||
<ClInclude Include="source\SSI263Phonemes.h" />
|
||||
<ClInclude Include="source\StdAfx.h" />
|
||||
<ClInclude Include="source\Structs.h" />
|
||||
<ClInclude Include="source\CPU.h" />
|
||||
<ClInclude Include="source\CPU\cpu6502.h" />
|
||||
<ClInclude Include="source\CPU\cpu65C02.h" />
|
||||
<ClInclude Include="source\CPU\cpu65d02.h" />
|
||||
<ClInclude Include="source\Disk.h" />
|
||||
<ClInclude Include="source\DiskImage.h" />
|
||||
<ClInclude Include="source\DiskImageHelper.h" />
|
||||
<ClInclude Include="source\Harddisk.h" />
|
||||
<ClInclude Include="source\Frame.h" />
|
||||
<ClInclude Include="source\Video.h" />
|
||||
<ClInclude Include="source\YamlHelper.h" />
|
||||
<ClInclude Include="source\Configuration\About.h" />
|
||||
<ClInclude Include="source\Configuration\Config.h" />
|
||||
<ClInclude Include="source\Configuration\IPropertySheet.h" />
|
||||
<ClInclude Include="source\Configuration\IPropertySheetPage.h" />
|
||||
<ClInclude Include="source\Configuration\PageAdvanced.h" />
|
||||
<ClInclude Include="source\Configuration\PageConfig.h" />
|
||||
<ClInclude Include="source\Configuration\PageConfigTfe.h" />
|
||||
<ClInclude Include="source\Configuration\PageDisk.h" />
|
||||
<ClInclude Include="source\Configuration\PageInput.h" />
|
||||
<ClInclude Include="source\Configuration\PageSound.h" />
|
||||
<ClInclude Include="source\Configuration\PropertySheet.h" />
|
||||
<ClInclude Include="source\Configuration\PropertySheetDefs.h" />
|
||||
<ClInclude Include="source\Configuration\PropertySheetHelper.h" />
|
||||
<ClInclude Include="resource\winres.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="source\CPU\cpu_general.inl" />
|
||||
<None Include="source\CPU\cpu_instructions.inl" />
|
||||
<None Include="docs\CodingConventions.txt" />
|
||||
<None Include="docs\Debugger_Changelog.txt" />
|
||||
<None Include="docs\FAQ.txt" />
|
||||
<None Include="bin\History.txt" />
|
||||
<None Include="docs\ToDo.txt" />
|
||||
<None Include="docs\Video_Cleanup.txt" />
|
||||
<None Include="docs\Wishlist.txt" />
|
||||
<None Include="resource\Apple2.rom" />
|
||||
<None Include="resource\Apple2_Plus.rom" />
|
||||
<None Include="resource\Apple2e.rom" />
|
||||
<None Include="resource\Apple2e_Enhanced.rom" />
|
||||
<None Include="resource\Applewin.bmp" />
|
||||
<None Include="resource\ApplewinLogo.bmp" />
|
||||
<None Include="RESOURCE\APPLEWIN.ICO" />
|
||||
<None Include="RESOURCE\CAPSOFF.BMP" />
|
||||
<None Include="resource\CAPSOFF_P8.BMP" />
|
||||
<None Include="RESOURCE\CAPSON.BMP" />
|
||||
<None Include="resource\CAPSON_P8.BMP" />
|
||||
<None Include="RESOURCE\CHARSET4.BMP" />
|
||||
<None Include="resource\CHARSET82.bmp" />
|
||||
<None Include="resource\CHARSET8C.bmp" />
|
||||
<None Include="RESOURCE\COLOR.BMP" />
|
||||
<None Include="RESOURCE\DEBUG.BMP" />
|
||||
<None Include="resource\Debug_Font.bmp" />
|
||||
<None Include="RESOURCE\DISK.ICO" />
|
||||
<None Include="resource\Disk2.rom" />
|
||||
<None Include="RESOURCE\DISKOFF.BMP" />
|
||||
<None Include="resource\Diskprot.bmp" />
|
||||
<None Include="RESOURCE\DISKREAD.BMP" />
|
||||
<None Include="RESOURCE\DISKWRIT.BMP" />
|
||||
<None Include="RESOURCE\DRIVE1.BMP" />
|
||||
<None Include="RESOURCE\DRIVE2.BMP" />
|
||||
<None Include="Resource\DriveSwap.bmp" />
|
||||
<None Include="Resource\DRSWAP.bmp" />
|
||||
<None Include="resource\Freezes_Non-autostart_F8_Rom.rom" />
|
||||
<None Include="RESOURCE\FULLSCR.BMP" />
|
||||
<None Include="Resource\Hddrvr.bin" />
|
||||
<None Include="RESOURCE\HELP.BMP" />
|
||||
<None Include="resource\LATOFF.BMP" />
|
||||
<None Include="resource\LATON.BMP" />
|
||||
<None Include="RESOURCE\LED_CAPS_OFF.BMP" />
|
||||
<None Include="RESOURCE\LED_CAPS_OFF_LAT.BMP" />
|
||||
<None Include="RESOURCE\LED_CAPS_OFF_P8.BMP" />
|
||||
<None Include="RESOURCE\LED_CAPS_ON.BMP" />
|
||||
<None Include="RESOURCE\LED_CAPS_ON_LAT.BMP" />
|
||||
<None Include="RESOURCE\LED_CAPS_ON_P8.BMP" />
|
||||
<None Include="resource\Mockingboard-D.rom" />
|
||||
<None Include="resource\MouseInterface.rom" />
|
||||
<None Include="resource\Parallel.rom" />
|
||||
<None Include="resource\PRAVETS82.ROM" />
|
||||
<None Include="resource\Pravets8C.rom" />
|
||||
<None Include="RESOURCE\Pravets8M.rom" />
|
||||
<None Include="RESOURCE\RUN.BMP" />
|
||||
<None Include="resource\RUN3000E.bmp" />
|
||||
<None Include="resource\RUNP.BMP" />
|
||||
<None Include="RESOURCE\SETUP.BMP" />
|
||||
<None Include="resource\SSC.rom" />
|
||||
<None Include="resource\ThunderClockPlus.rom" />
|
||||
<None Include="resource\TK3000e.rom" />
|
||||
<None Include="resource\TKClock.rom" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="RESOURCE\APPLEWIN.RC">
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RESOURCE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">RESOURCE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RESOURCE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">RESOURCE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="zip_lib\zip_lib2010.vcxproj">
|
||||
<Project>{709278b8-c583-4bd8-90de-4e4f35a3bd8b}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="zlib\zlib-Express2010.vcxproj">
|
||||
<Project>{7935b998-c713-42ae-8f6d-9ff9080a1b1b}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="libyaml\win32\yaml2010.vcxproj">
|
||||
<Project>{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Manifest Include="AppleWin\Release\AppleWin.exe.intermediate.manifest" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,667 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source">
|
||||
<UniqueIdentifier>{74e2a597-413f-447d-bcca-b755f3924e86}</UniqueIdentifier>
|
||||
<Extensions>.cpp</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source\Debugger">
|
||||
<UniqueIdentifier>{7ec93303-838c-4cb5-a54b-d694078abacf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\Uthernet">
|
||||
<UniqueIdentifier>{5895ee90-26c2-495f-b3d9-ec71379490bc}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\Z80VICE">
|
||||
<UniqueIdentifier>{0a1a9684-44b6-4a75-932b-bd5ad687b71a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\CommonVICE">
|
||||
<UniqueIdentifier>{53d31f58-9328-4ff3-97e6-af038f620b03}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\Emulator">
|
||||
<UniqueIdentifier>{330ce46b-9563-4908-836b-9f3a276fb741}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\_Headers">
|
||||
<UniqueIdentifier>{9a51cc1a-a03e-4d1d-aa92-7742b7efe6f9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\CPU">
|
||||
<UniqueIdentifier>{fb24dc7c-547e-41e6-990b-6d206564e70b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\Disk">
|
||||
<UniqueIdentifier>{d136990f-68f2-478d-a8df-3f9458f50c2b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\Video">
|
||||
<UniqueIdentifier>{b777c079-2523-4d07-8819-27df18e56500}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source\Configuration">
|
||||
<UniqueIdentifier>{7537bc07-cf56-4c40-986c-3c2e05d23eec}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Docs">
|
||||
<UniqueIdentifier>{6ecaa432-46b0-4795-a848-fc9a6f4f3706}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resources">
|
||||
<UniqueIdentifier>{b003a70c-a1f1-4502-a959-bbc35def32be}</UniqueIdentifier>
|
||||
<Extensions>.txt,.ico,.bmp,.rc</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="source\Applewin.cpp">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debug.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Assembler.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Color.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Commands.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Console.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_DisassemblerData.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Display.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Help.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Parser.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Range.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Debugger_Symbols.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Debugger\Util_MemoryTextFile.cpp">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Tfe.cpp">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Tfearch.cpp">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Tfesupp.cpp">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tfe\Uilib.cpp">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Z80VICE\daa.cpp">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Z80VICE\z80.cpp">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Z80VICE\z80mem.cpp">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\6821.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\AY8910.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Joystick.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Keyboard.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Log.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Memory.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Mockingboard.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\MouseInterface.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\NoSlotClock.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\ParallelPrinter.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Registry.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Riff.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\SaveState.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\SerialComms.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\SoundCore.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Speaker.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Speech.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Tape.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\z80emu.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\CPU.cpp">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Disk.cpp">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\DiskImage.cpp">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\DiskImageHelper.cpp">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Harddisk.cpp">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Frame.cpp">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Video.cpp">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\About.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PageAdvanced.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PageConfig.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PageConfigTfe.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PageDisk.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PageInput.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PageSound.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PropertySheet.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Configuration\PropertySheetHelper.cpp">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\StdAfx.cpp">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\NTSC.cpp">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\NTSC_CharSet.cpp">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\SAM.cpp">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Pravets.cpp" />
|
||||
<ClCompile Include="source\YamlHelper.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="source\Applewin.h">
|
||||
<Filter>Source</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debug.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Assembler.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Color.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Console.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_DisassemblerData.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Display.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Help.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Parser.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Range.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Symbols.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Debugger_Types.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Util_MemoryTextFile.h">
|
||||
<Filter>Source\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Bittypes.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Bpf.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Ip6_misc.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Pcap-stdinc.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Pcap.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Tfe.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Tfearch.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Tfesupp.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Uilib.h">
|
||||
<Filter>Source\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Z80VICE\daa.h">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Z80VICE\z80.h">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Z80VICE\z80mem.h">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Z80VICE\z80regs.h">
|
||||
<Filter>Source\Z80VICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CommonVICE\6510core.h">
|
||||
<Filter>Source\CommonVICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CommonVICE\alarm.h">
|
||||
<Filter>Source\CommonVICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CommonVICE\interrupt.h">
|
||||
<Filter>Source\CommonVICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CommonVICE\mem.h">
|
||||
<Filter>Source\CommonVICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CommonVICE\types.h">
|
||||
<Filter>Source\CommonVICE</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\6821.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\AY8910.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Joystick.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Keyboard.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Log.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Memory.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Mockingboard.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\MouseInterface.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\NoSlotClock.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\ParallelPrinter.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Registry.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Riff.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\SaveState.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\SerialComms.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\SoundCore.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Speaker.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Speech.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tape.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\z80emu.h">
|
||||
<Filter>Source\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Common.h">
|
||||
<Filter>Source\_Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource\resource.h">
|
||||
<Filter>Source\_Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\SSI263Phonemes.h">
|
||||
<Filter>Source\_Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Structs.h">
|
||||
<Filter>Source\_Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CPU.h">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CPU\cpu6502.h">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CPU\cpu65C02.h">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\CPU\cpu65d02.h">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Disk.h">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\DiskImage.h">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\DiskImageHelper.h">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Harddisk.h">
|
||||
<Filter>Source\Disk</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Frame.h">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Video.h">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\About.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\Config.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\IPropertySheet.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\IPropertySheetPage.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PageAdvanced.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PageConfig.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PageConfigTfe.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PageDisk.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PageInput.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PageSound.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PropertySheet.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PropertySheetDefs.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Configuration\PropertySheetHelper.h">
|
||||
<Filter>Source\Configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource\winres.h">
|
||||
<Filter>Resources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\StdAfx.h">
|
||||
<Filter>Source</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\NTSC.h">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Pravets.h" />
|
||||
<ClInclude Include="source\YamlHelper.h" />
|
||||
<ClInclude Include="source\NTSC_CharSet.h">
|
||||
<Filter>Source\Video</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="source\CPU\cpu_general.inl">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</None>
|
||||
<None Include="source\CPU\cpu_instructions.inl">
|
||||
<Filter>Source\CPU</Filter>
|
||||
</None>
|
||||
<None Include="docs\CodingConventions.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="docs\Debugger_Changelog.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="docs\FAQ.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="bin\History.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="docs\ToDo.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="docs\Video_Cleanup.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="docs\Wishlist.txt">
|
||||
<Filter>Docs</Filter>
|
||||
</None>
|
||||
<None Include="resource\Apple2.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Apple2_Plus.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Apple2e.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Apple2e_Enhanced.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Applewin.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\ApplewinLogo.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\APPLEWIN.ICO">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\CAPSOFF.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\CAPSOFF_P8.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\CAPSON.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\CAPSON_P8.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\CHARSET4.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\CHARSET82.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\CHARSET8C.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\COLOR.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DEBUG.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Debug_Font.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DISK.ICO">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Disk2.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DISKOFF.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Diskprot.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DISKREAD.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DISKWRIT.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DRIVE1.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\DRIVE2.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="Resource\DriveSwap.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="Resource\DRSWAP.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Freezes_Non-autostart_F8_Rom.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\FULLSCR.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="Resource\Hddrvr.bin">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\HELP.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\LATOFF.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\LATON.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\LED_CAPS_OFF.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\LED_CAPS_ON.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\LED_CAPS_OFF_P8.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\LED_CAPS_ON_P8.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\LED_CAPS_OFF_LAT.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\LED_CAPS_ON_LAT.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Mockingboard-D.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\MouseInterface.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Parallel.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\PRAVETS82.ROM">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\Pravets8C.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\Pravets8M.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\RUN.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\RUN3000E.bmp">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\RUNP.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="RESOURCE\SETUP.BMP">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\SSC.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\ThunderClockPlus.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\TK3000e.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
<None Include="resource\TKClock.rom">
|
||||
<Filter>Resources</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="RESOURCE\APPLEWIN.RC">
|
||||
<Filter>Resources</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -369,6 +369,7 @@
|
|||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source\cpu;source\emulator;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
|
|
|
@ -8,11 +8,11 @@ DelReg=RegChange
|
|||
DelReg=RegChange
|
||||
|
||||
[RegChange]
|
||||
HKCR,.bin
|
||||
HKCR,.do
|
||||
HKCR,.dsk
|
||||
HKCR,.nib
|
||||
HKCR,.po
|
||||
HKCR,.woz
|
||||
HKCR,DiskImage
|
||||
HKCU,Software\AppleWin
|
||||
HKLM,Software\AppleWin
|
||||
|
|
|
@ -8,10 +8,33 @@ https://github.com/AppleWin/AppleWin/issues/new
|
|||
|
||||
Tom Charlesworth
|
||||
|
||||
1.29.1.0 - 27 Jul 2019
|
||||
----------------------
|
||||
. [Bug #662] Fixed WOZ 'Wizardry III' not booting.
|
||||
. [Bug #669] Fixed WOZ 'Space Quest I' not booting reliably.
|
||||
. [Bug #670] Fixed PAGE2 not displaying correctly when in full-speed mode.
|
||||
|
||||
|
||||
1.29.0.0 - 8 Jul 2019
|
||||
---------------------
|
||||
. [Change #544] Support for .woz disk images.
|
||||
- WOZ1 and WOZ2 formats supported.
|
||||
- read-only: images forced to write-protected (so 'Stickybear Town Builder' doesn't work).
|
||||
- only 5.25" (not 3.5").
|
||||
- known issues: 'Wizardry III' not booting.
|
||||
|
||||
|
||||
1.28.8.0 - 28 Jun 2019
|
||||
----------------------
|
||||
. [Change #648] Support 50Hz(PAL) video refresh rate and implicitly PAL 1.016MHz.
|
||||
- NB. TV video modes still use NTSC rendering.
|
||||
. [Bug #656] Fix for PAGE1/2 ($C054/55) not having a 1 cycle delay.
|
||||
|
||||
|
||||
1.28.7.0 - 15 Jun 2019
|
||||
----------------------
|
||||
. [Bug #654] Fix for Sather's "Little Text Window" not rendering correctly.
|
||||
. [Bug #654] Fix for 6522 TIMER1's period to be N+2 cycles.
|
||||
. [Bug #652] Fix for 6522 TIMER1's period to be N+2 cycles.
|
||||
|
||||
|
||||
1.28.6.0 - 2 Jun 2019
|
||||
|
|
|
@ -27,6 +27,7 @@ MSVC 2017 Community
|
|||
* [x] Graphics debugger and GPU profiler for DirectX
|
||||
* [x] Static analysis tools
|
||||
* [x] VC++ 2017 v141 toolset (x86,x64)
|
||||
* [x] Windows Universal CRT SDK
|
||||
* [x] Visual Studio C++ core features
|
||||
* [x] Windows 8.1 SDK
|
||||
* [x] Windows 10 SDK (10.0.15063.0) for Desktop C++ x86 and x64
|
||||
|
|
|
@ -98,7 +98,11 @@
|
|||
<li>Or: Allow the emulated Apple II to read the Enter key state when Alt (Open Apple key) is pressed.
|
||||
</ul>
|
||||
-rgb-card-invert-bit7<br>
|
||||
Force the RGB card (in "Color (RGB Monitor)" video mode) to invert bit7 in MIX mode. Enables the correct rendering for Dragon Wars.
|
||||
Force the RGB card (in "Color (RGB Monitor)" video mode) to invert bit7 in MIX mode. Enables the correct rendering for Dragon Wars.<br><br>
|
||||
-50hz<br>
|
||||
Support 50Hz(PAL) video refresh rate and PAL 1.016MHz base CPU clock.<br><br>
|
||||
-60hz<br>
|
||||
Support 60Hz(NTSC) video refresh rate and NTSC 1.020MHz base CPU clock (default).<br>
|
||||
|
||||
<br>
|
||||
<P style="FONT-WEIGHT: bold">Debug arguments:
|
||||
|
|
|
@ -78,6 +78,11 @@
|
|||
processor speed from half-speed to as fast as your PC can emulate.<br>
|
||||
<br>
|
||||
|
||||
<strong>50Hz video:</strong><br>
|
||||
When checked, this option will run the emulated machine with a 50Hz(PAL) video refresh rate.
|
||||
The default is unchecked, for 60Hz(NTSC).<br>
|
||||
<br>
|
||||
|
||||
<strong>Benchmark Emulator:</strong><br>
|
||||
This will run a benchmark test that will show how fast your PC can emulate an
|
||||
Apple //e system with this emulator. In order to run the benchmark, the
|
||||
|
|
|
@ -57,7 +57,7 @@ successfully detect the format. Otherwise, it will revert to DOS
|
|||
order, which is by far the most common format. To force ProDOS
|
||||
order, give the file an extension of ".PO". </p>
|
||||
|
||||
<p style="font-weight: bold;">Nibble Images :</p>
|
||||
<p style="font-weight: bold;">Nibble Images:</p>
|
||||
|
||||
<p>Nibble images contain all of the data on a
|
||||
disk; not just the data in sectors but also the sector headers
|
||||
|
@ -66,13 +66,18 @@ that would be recorded on a real disk's surface. At 232,960
|
|||
bytes, nibble images are bigger than other images, but they can
|
||||
be useful for making images of copy protected software. </p>
|
||||
|
||||
<p style="font-weight: bold;">2mg Images :</p>
|
||||
<p style="font-weight: bold;">2mg Images:</p>
|
||||
|
||||
<p>2mg (or 2img) images are a wrapper around DOS, ProDOS or Nibble images.
|
||||
They contain extra meta-data describing for example, DOS volume number and
|
||||
write-protection.
|
||||
</p>
|
||||
|
||||
<p style="font-weight: bold;">WOZ Images:</p>
|
||||
|
||||
<p>The WOZ Disk Image format is an offshoot of the <A href="https://applesaucefdc.com/woz">Applesauce project</A>. Capturing highly accurate bit data is of no use if you don't have a container to hold the data. The WOZ format was designed to be able to contain every possible Apple ][ disk structure and layout. It can be so accurate that even copy protected software can't tell that it isn't an original disk.
|
||||
</p>
|
||||
|
||||
<p style="font-weight: bold;">Compressed Images :</p>
|
||||
|
||||
<p>All of the above can optionally be either gzip'ed or zipped. If a zip archive
|
||||
|
@ -80,8 +85,8 @@ contains multiple files, then AppleWin only supports using the first file. For b
|
|||
with hard disk images, uncompress first, as writing back to the image requires a full
|
||||
image re-compression after every block write. Examples of typical extensions are:
|
||||
<ul>
|
||||
<li>.gz, .dsk.gz, .nib.gz, .2mg.gz</li>
|
||||
<li>.zip, .dsk.zip, .nib.zip, .2mg.zip</li>
|
||||
<li>.gz, .dsk.gz, .nib.gz, .2mg.gz, .woz.gz</li>
|
||||
<li>.zip, .dsk.zip, .nib.zip, .2mg.zip, .woz.zip</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -15,16 +15,16 @@
|
|||
Disk Images</h2>
|
||||
|
||||
<hr size="4">
|
||||
<p>AppleWin registers the
|
||||
<p>AppleWin registers<sub style="FONT-WEIGHT: bold">1</sub> the
|
||||
following file types as "Disk
|
||||
Images": *.do, *.dsk, *.nib, and *.po. Double-clicking
|
||||
a disk image in the Windows Explorer will automatically load and boot
|
||||
Images": *.do, *.dsk, *.nib, *.po and *.woz. Double-clicking
|
||||
a disk image in Windows Explorer will automatically load and boot
|
||||
the disk.
|
||||
While older versions of
|
||||
AppleWin started a new
|
||||
instance of the emulator for every disk started in this manner, current
|
||||
versions
|
||||
of the emulator will simply replace the current disk if there is an
|
||||
of the emulator will simply replace the current disk (and reboot) if there is an
|
||||
instance of
|
||||
the emulator already running.</p>
|
||||
|
||||
|
@ -49,5 +49,9 @@ long to read in the Toolbar,
|
|||
simply pause the mouse cursor over a drive button to get a
|
||||
tool-tip with the full name.</p>
|
||||
|
||||
<p><sub style="FONT-WEIGHT: bold">1</sub> To register the file types in Windows Vista, Windows 7 and Windows 10,
|
||||
you will need to run AppleWin with elevated privileges. This only needs to be done once.
|
||||
Right click the AppleWin.exe icon and select 'Run as Administrator'.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
@ -1,98 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>yaml</ProjectName>
|
||||
<ProjectGuid>{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}</ProjectGuid>
|
||||
<RootNamespace>yaml</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Output\Debug\lib\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Build\Debug\lib\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Output\Release\lib\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Build\Release\lib\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.;../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>HAVE_CONFIG_H;YAML_DECLARE_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)yaml.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir)..\include;$(ProjectDir)..\src;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>HAVE_CONFIG_H;YAML_DECLARE_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)yaml.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\api.c" />
|
||||
<ClCompile Include="..\src\dumper.c" />
|
||||
<ClCompile Include="..\src\emitter.c" />
|
||||
<ClCompile Include="..\src\loader.c" />
|
||||
<ClCompile Include="..\src\parser.c" />
|
||||
<ClCompile Include="..\src\reader.c" />
|
||||
<ClCompile Include="..\src\scanner.c" />
|
||||
<ClCompile Include="..\src\writer.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="config.h" />
|
||||
<ClInclude Include="..\include\yaml.h" />
|
||||
<ClInclude Include="..\src\yaml_private.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\LICENSE" />
|
||||
<None Include="..\README" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,54 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\LICENSE" />
|
||||
<None Include="..\README" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\include\yaml.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\yaml_private.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="config.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\api.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\dumper.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\emitter.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\loader.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\parser.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\reader.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\scanner.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\writer.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -111,6 +111,7 @@ BEGIN
|
|||
CTEXT "2.0",IDC_2_0_MHz,96,180,20,10
|
||||
RTEXT "Fastest",IDC_MAX_MHz,150,180,29,10
|
||||
PUSHBUTTON "&Benchmark Emulator",IDC_BENCHMARK,15,194,85,15
|
||||
CONTROL "50Hz video",IDC_CHECK_50HZ_VIDEO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,141,51,10
|
||||
END
|
||||
|
||||
IDD_PROPPAGE_INPUT DIALOGEX 0, 0, 210, 215
|
||||
|
|
|
@ -116,6 +116,7 @@
|
|||
#define IDC_COMBO_DISK2 1081
|
||||
#define IDC_CHECK_FS_SHOW_SUBUNIT_STATUS 1082
|
||||
#define IDC_CHECK_VERTICAL_BLEND 1083
|
||||
#define IDC_CHECK_50HZ_VIDEO 1084
|
||||
#define IDM_EXIT 40001
|
||||
#define IDM_HELP 40002
|
||||
#define IDM_ABOUT 40003
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#define APPLEWIN_VERSION 1,28,7,0
|
||||
#define APPLEWIN_VERSION 1,29,1,0
|
||||
|
||||
#define xstr(a) str(a)
|
||||
#define str(a) #a
|
||||
|
|
|
@ -91,7 +91,7 @@ bool g_bRestart = false;
|
|||
bool g_bRestartFullScreen = false;
|
||||
|
||||
DWORD g_dwSpeed = SPEED_NORMAL; // Affected by Config dialog's speed slider bar
|
||||
double g_fCurrentCLK6502 = CLK_6502; // Affected by Config dialog's speed slider bar
|
||||
double g_fCurrentCLK6502 = CLK_6502_NTSC; // Affected by Config dialog's speed slider bar
|
||||
static double g_fMHz = 1.0; // Affected by Config dialog's speed slider bar
|
||||
|
||||
int g_nCpuCyclesFeedback = 0;
|
||||
|
@ -138,6 +138,7 @@ void LogFileTimeUntilFirstKeyReadReset(void)
|
|||
// Log the time from emulation restart/reboot until the first key read: BIT $C000
|
||||
// . AZTEC.DSK (DOS 3.3) does prior LDY $C000 reads, but the BIT $C000 is at the "Press any key" message
|
||||
// . Phasor1.dsk / ProDOS 1.1.1: PC=E797: B1 50: LDA ($50),Y / "Select an Option:" message
|
||||
// . Rescue Raiders v1.3,v1.5: PC=895: LDA $C000 / boot to intro
|
||||
void LogFileTimeUntilFirstKeyRead(void)
|
||||
{
|
||||
if (!g_fh || bLogKeyReadDone)
|
||||
|
@ -145,6 +146,7 @@ void LogFileTimeUntilFirstKeyRead(void)
|
|||
|
||||
if ( (mem[regs.pc-3] != 0x2C) // AZTEC: bit $c000
|
||||
&& !((regs.pc-2) == 0xE797 && mem[regs.pc-2] == 0xB1 && mem[regs.pc-1] == 0x50) // Phasor1: lda ($50),y
|
||||
&& !((regs.pc-3) == 0x0895 && mem[regs.pc-3] == 0xAD) // Rescue Raiders v1.3,v1.5: lda $c000
|
||||
)
|
||||
return;
|
||||
|
||||
|
@ -345,6 +347,7 @@ static void ContinueExecution(void)
|
|||
|
||||
//
|
||||
|
||||
const UINT dwClksPerFrame = NTSC_GetCyclesPerFrame();
|
||||
if (g_dwCyclesThisFrame >= dwClksPerFrame)
|
||||
{
|
||||
g_dwCyclesThisFrame -= dwClksPerFrame;
|
||||
|
@ -376,14 +379,21 @@ void SingleStep(bool bReinit)
|
|||
|
||||
//===========================================================================
|
||||
|
||||
double Get6502BaseClock(void)
|
||||
{
|
||||
return (GetVideoRefreshRate() == VR_50HZ) ? CLK_6502_PAL : CLK_6502_NTSC;
|
||||
}
|
||||
|
||||
void SetCurrentCLK6502(void)
|
||||
{
|
||||
static DWORD dwPrevSpeed = (DWORD) -1;
|
||||
static VideoRefreshRate_e prevVideoRefreshRate = VR_NONE;
|
||||
|
||||
if(dwPrevSpeed == g_dwSpeed)
|
||||
if (dwPrevSpeed == g_dwSpeed && GetVideoRefreshRate() == prevVideoRefreshRate)
|
||||
return;
|
||||
|
||||
dwPrevSpeed = g_dwSpeed;
|
||||
prevVideoRefreshRate = GetVideoRefreshRate();
|
||||
|
||||
// SPEED_MIN = 0 = 0.50 MHz
|
||||
// SPEED_NORMAL = 10 = 1.00 MHz
|
||||
|
@ -396,7 +406,7 @@ void SetCurrentCLK6502(void)
|
|||
else
|
||||
g_fMHz = (double)g_dwSpeed / 10.0;
|
||||
|
||||
g_fCurrentCLK6502 = CLK_6502 * g_fMHz;
|
||||
g_fCurrentCLK6502 = Get6502BaseClock() * g_fMHz;
|
||||
|
||||
//
|
||||
// Now re-init modules that are dependent on /g_fCurrentCLK6502/
|
||||
|
@ -622,17 +632,15 @@ void LoadConfiguration(void)
|
|||
}
|
||||
|
||||
REGLOAD(TEXT(REGVALUE_EMULATION_SPEED) ,&g_dwSpeed);
|
||||
Config_Load_Video();
|
||||
SetCurrentCLK6502(); // Pre: g_dwSpeed && Config_Load_Video()->SetVideoRefreshRate()
|
||||
|
||||
DWORD dwEnhanceDisk;
|
||||
REGLOAD(TEXT(REGVALUE_ENHANCE_DISK_SPEED), &dwEnhanceDisk);
|
||||
sg_Disk2Card.SetEnhanceDisk(dwEnhanceDisk ? true : false);
|
||||
|
||||
Config_Load_Video();
|
||||
|
||||
REGLOAD(TEXT("Uthernet Active") ,(DWORD *)&tfe_enabled);
|
||||
|
||||
SetCurrentCLK6502();
|
||||
|
||||
//
|
||||
|
||||
DWORD dwTmp;
|
||||
|
@ -765,11 +773,6 @@ bool SetCurrentImageDir(const char* pszImageDir)
|
|||
|
||||
// TODO: Added dialog option of which file extensions to registry
|
||||
static bool g_bRegisterFileTypes = true;
|
||||
//static bool g_bRegistryFileBin = false;
|
||||
static bool g_bRegistryFileDo = true;
|
||||
static bool g_bRegistryFileDsk = true;
|
||||
static bool g_bRegistryFileNib = true;
|
||||
static bool g_bRegistryFilePo = true;
|
||||
|
||||
|
||||
void RegisterExtensions(void)
|
||||
|
@ -777,14 +780,6 @@ void RegisterExtensions(void)
|
|||
TCHAR szCommandTmp[MAX_PATH];
|
||||
GetModuleFileName((HMODULE)0,szCommandTmp,MAX_PATH);
|
||||
|
||||
#ifdef TEST_REG_BUG
|
||||
TCHAR command[MAX_PATH];
|
||||
wsprintf(command, "%s", szCommandTmp); // Wrap path & filename in quotes & null terminate
|
||||
|
||||
TCHAR icon[MAX_PATH];
|
||||
wsprintf(icon,TEXT("\"%s,1\""),(LPCTSTR)command);
|
||||
#endif
|
||||
|
||||
TCHAR command[MAX_PATH];
|
||||
wsprintf(command, "\"%s\"", szCommandTmp); // Wrap path & filename in quotes & null terminate
|
||||
|
||||
|
@ -795,46 +790,80 @@ void RegisterExtensions(void)
|
|||
// _tcscat(command,TEXT("-d1 %1\"")); // Append "%1"
|
||||
// sprintf(command, "\"%s\" \"-d1 %%1\"", szCommandTmp); // Wrap path & filename in quotes & null terminate
|
||||
|
||||
// NB. Registry access to HKLM typically results in ErrorCode 5(ACCESS DENIED), as UAC requires elevated permissions (Run as administrator).
|
||||
// . HKEY_CLASSES_ROOT\CLSID is a merged view of HKLM\SOFTWARE\Classes and HKCU\SOFTWARE\Classes
|
||||
|
||||
// NB. Reflect extensions in DELREG.INF
|
||||
// RegSetValue(HKEY_CLASSES_ROOT,".bin",REG_SZ,"DiskImage",0); // Removed as .bin is too generic
|
||||
long Res = RegDeleteValue(HKEY_CLASSES_ROOT, ".bin"); // TODO: This isn't working :-/
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,".do" ,REG_SZ,"DiskImage",0);
|
||||
RegSetValue(HKEY_CLASSES_ROOT,".dsk",REG_SZ,"DiskImage",0);
|
||||
RegSetValue(HKEY_CLASSES_ROOT,".nib",REG_SZ,"DiskImage",0);
|
||||
RegSetValue(HKEY_CLASSES_ROOT,".po" ,REG_SZ,"DiskImage",0);
|
||||
const char* pValueName = ".bin";
|
||||
LSTATUS res = RegDeleteValue(HKEY_CLASSES_ROOT, pValueName);
|
||||
if (res != NOERROR && res != ERROR_FILE_NOT_FOUND) LogFileOutput("RegDeleteValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
pValueName = ".do";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT, pValueName ,REG_SZ,"DiskImage",0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
pValueName = ".dsk";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
pValueName = ".nib";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
pValueName = ".po";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
pValueName = ".woz";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
// RegSetValue(HKEY_CLASSES_ROOT,".2mg",REG_SZ,"DiskImage",0); // Don't grab this, as not all .2mg images are supported (so defer to CiderPress)
|
||||
// RegSetValue(HKEY_CLASSES_ROOT,".2img",REG_SZ,"DiskImage",0); // Don't grab this, as not all .2mg images are supported (so defer to CiderPress)
|
||||
// RegSetValue(HKEY_CLASSES_ROOT,".aws",REG_SZ,"DiskImage",0); // TO DO
|
||||
// RegSetValue(HKEY_CLASSES_ROOT,".aws.yaml",REG_SZ,"DiskImage",0); // NB. Can't grab this extension (even though it returns 0!) with embedded period (and .yaml is too generic) - GH#548
|
||||
// RegSetValue(HKEY_CLASSES_ROOT,".hdv",REG_SZ,"DiskImage",0); // TO DO
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,
|
||||
"DiskImage",
|
||||
pValueName = "DiskImage";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT,
|
||||
pValueName,
|
||||
REG_SZ,"Disk Image",0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,
|
||||
"DiskImage\\DefaultIcon",
|
||||
pValueName = "DiskImage\\DefaultIcon";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT,
|
||||
pValueName,
|
||||
REG_SZ,icon,0);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
// This key can interfere....
|
||||
// HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExt\.dsk
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,
|
||||
"DiskImage\\shell\\open\\command",
|
||||
pValueName = "DiskImage\\shell\\open\\command";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT,
|
||||
pValueName,
|
||||
REG_SZ,command,_tcslen(command)+1);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,
|
||||
"DiskImage\\shell\\open\\ddeexec",
|
||||
pValueName = "DiskImage\\shell\\open\\ddeexec";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT,
|
||||
pValueName,
|
||||
REG_SZ,"%1",3);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,
|
||||
"DiskImage\\shell\\open\\ddeexec\\application",
|
||||
pValueName = "DiskImage\\shell\\open\\ddeexec\\application";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT,
|
||||
pValueName,
|
||||
REG_SZ,"applewin",_tcslen("applewin")+1);
|
||||
// REG_SZ,szCommandTmp,_tcslen(szCommandTmp)+1);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
|
||||
RegSetValue(HKEY_CLASSES_ROOT,
|
||||
"DiskImage\\shell\\open\\ddeexec\\topic",
|
||||
pValueName = "DiskImage\\shell\\open\\ddeexec\\topic";
|
||||
res = RegSetValue(HKEY_CLASSES_ROOT,
|
||||
pValueName,
|
||||
REG_SZ,"system",_tcslen("system")+1);
|
||||
if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
@ -1181,6 +1210,7 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||
int newVideoType = -1;
|
||||
int newVideoStyleEnableMask = 0;
|
||||
int newVideoStyleDisableMask = 0;
|
||||
VideoRefreshRate_e newVideoRefreshRate = VR_NONE;
|
||||
LPSTR szScreenshotFilename = NULL;
|
||||
|
||||
while (*lpCmdLine)
|
||||
|
@ -1427,6 +1457,14 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||
szScreenshotFilename = GetCurrArg(lpNextArg);
|
||||
lpNextArg = GetNextArg(lpNextArg);
|
||||
}
|
||||
else if (_stricmp(lpCmdLine, "-50hz") == 0) // (case-insensitive)
|
||||
{
|
||||
newVideoRefreshRate = VR_50HZ;
|
||||
}
|
||||
else if (_stricmp(lpCmdLine, "-60hz") == 0) // (case-insensitive)
|
||||
{
|
||||
newVideoRefreshRate = VR_60HZ;
|
||||
}
|
||||
else // unsupported
|
||||
{
|
||||
LogFileOutput("Unsupported arg: %s\n", lpCmdLine);
|
||||
|
@ -1537,9 +1575,19 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||
LogFileOutput("Main: LoadConfiguration()\n");
|
||||
|
||||
if (newVideoType >= 0)
|
||||
{
|
||||
SetVideoType( (VideoType_e)newVideoType );
|
||||
newVideoType = -1; // Don't reapply after a restart
|
||||
}
|
||||
SetVideoStyle( (VideoStyle_e) ((GetVideoStyle() | newVideoStyleEnableMask) & ~newVideoStyleDisableMask) );
|
||||
|
||||
if (newVideoRefreshRate != VR_NONE)
|
||||
{
|
||||
SetVideoRefreshRate(newVideoRefreshRate);
|
||||
newVideoRefreshRate = VR_NONE; // Don't reapply after a restart
|
||||
SetCurrentCLK6502();
|
||||
}
|
||||
|
||||
// Apply the memory expansion switches after loading the Apple II machine type
|
||||
#ifdef RAMWORKS
|
||||
if (uRamWorksExPages)
|
||||
|
@ -1613,7 +1661,7 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||
}
|
||||
|
||||
// Need to test if it's safe to call ResetMachineState(). In the meantime, just call DiskReset():
|
||||
sg_Disk2Card.Reset(); // Switch from a booting A][+ to a non-autostart A][, so need to turn off floppy motor
|
||||
sg_Disk2Card.Reset(true); // Switch from a booting A][+ to a non-autostart A][, so need to turn off floppy motor
|
||||
LogFileOutput("Main: DiskReset()\n");
|
||||
HD_Reset(); // GH#515
|
||||
LogFileOutput("Main: HDDReset()\n");
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
void LogFileTimeUntilFirstKeyReadReset(void);
|
||||
void LogFileTimeUntilFirstKeyRead(void);
|
||||
|
||||
void SetCurrentCLK6502();
|
||||
bool SetCurrentImageDir(const char* pszImageDir);
|
||||
|
||||
extern const UINT16* GetOldAppleWinVersion(void);
|
||||
|
@ -18,6 +17,9 @@ extern eApple2Type g_Apple2Type;
|
|||
eApple2Type GetApple2Type(void);
|
||||
void SetApple2Type(eApple2Type type);
|
||||
|
||||
double Get6502BaseClock(void);
|
||||
void SetCurrentCLK6502(void);
|
||||
|
||||
void SingleStep(bool bReinit);
|
||||
|
||||
extern bool g_bFullSpeed;
|
||||
|
|
|
@ -1,19 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
const double _M14 = (157500000.0 / 11.0); // 14.3181818... * 10^6
|
||||
const double CLK_6502 = ((_M14 * 65.0) / 912.0); // 65 cycles per 912 14M clocks
|
||||
const double _14M_NTSC = (157500000.0 / 11.0); // 14.3181818... * 10^6
|
||||
const double _14M_PAL = 14.25045e6; // UTAIIe:3-17
|
||||
const double CLK_6502_NTSC = (_14M_NTSC * 65.0) / (65.0*14.0+2.0); // 65 cycles per 912 14M clocks
|
||||
const double CLK_6502_PAL = (_14M_PAL * 65.0) / (65.0*14.0+2.0);
|
||||
//const double CLK_6502 = 23 * 44100; // 1014300
|
||||
|
||||
// The effective Z-80 clock rate is 2.041MHz
|
||||
// See: http://www.apple2info.net/hardware/softcard/SC-SWHW_a2in.pdf
|
||||
const double CLK_Z80 = (CLK_6502 * 2);
|
||||
|
||||
// TODO: Clean up from Common.h, Video.cpp, and NTSC.h !!!
|
||||
const UINT uCyclesPerLine = 65; // 25 cycles of HBL & 40 cycles of HBL'
|
||||
const UINT uVisibleLinesPerFrame = 64*3; // 192
|
||||
const UINT uLinesPerFrame = 262; // 64 in each third of the screen & 70 in VBL
|
||||
const DWORD dwClksPerFrame = uCyclesPerLine * uLinesPerFrame; // 17030
|
||||
|
||||
#define NUM_SLOTS 8
|
||||
|
||||
#define MAX(a,b) (((a) > (b)) ? (a) : (b))
|
||||
|
@ -107,6 +99,7 @@ enum AppMode_e
|
|||
#define REGVALUE_VIDEO_STYLE "Video Style" // GH#616: Added at 1.28.2
|
||||
#define REGVALUE_VIDEO_HALF_SCAN_LINES "Half Scan Lines" // GH#616: Deprecated from 1.28.2
|
||||
#define REGVALUE_VIDEO_MONO_COLOR "Monochrome Color"
|
||||
#define REGVALUE_VIDEO_REFRESH_RATE "Video Refresh Rate"
|
||||
#define REGVALUE_SERIAL_PORT_NAME "Serial Port Name"
|
||||
#define REGVALUE_ENHANCE_DISK_SPEED "Enhance Disk Speed"
|
||||
#define REGVALUE_CUSTOM_SPEED "Custom Speed"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "../CPU.h"
|
||||
#include "../DiskImage.h" // Disk_Status_e
|
||||
#include "../Harddisk.h" // HD_CardIsEnabled()
|
||||
#include "../Video.h" // VideoRefreshRate_e, GetVideoRefreshRate()
|
||||
|
||||
class CConfigNeedingRestart
|
||||
{
|
||||
|
@ -11,7 +12,8 @@ public:
|
|||
CConfigNeedingRestart(UINT bEnableTheFreezesF8Rom = false) :
|
||||
m_Apple2Type( GetApple2Type() ),
|
||||
m_CpuType( GetMainCpu() ),
|
||||
m_uSaveLoadStateMsg(0)
|
||||
m_uSaveLoadStateMsg(0),
|
||||
m_videoRefreshRate( GetVideoRefreshRate() )
|
||||
{
|
||||
m_bEnableHDD = HD_CardIsEnabled();
|
||||
m_bEnableTheFreezesF8Rom = bEnableTheFreezesF8Rom;
|
||||
|
@ -29,17 +31,19 @@ public:
|
|||
m_bEnableHDD = other.m_bEnableHDD;
|
||||
m_bEnableTheFreezesF8Rom = other.m_bEnableTheFreezesF8Rom;
|
||||
m_uSaveLoadStateMsg = other.m_uSaveLoadStateMsg;
|
||||
m_videoRefreshRate = other.m_videoRefreshRate;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator== (const CConfigNeedingRestart& other) const
|
||||
{
|
||||
return m_Apple2Type == other.m_Apple2Type &&
|
||||
m_CpuType == other.m_CpuType &&
|
||||
memcmp(m_Slot, other.m_Slot, sizeof(m_Slot)) == 0 &&
|
||||
m_bEnableHDD == other.m_bEnableHDD &&
|
||||
m_bEnableTheFreezesF8Rom == other.m_bEnableTheFreezesF8Rom &&
|
||||
m_uSaveLoadStateMsg == other.m_uSaveLoadStateMsg;
|
||||
m_CpuType == other.m_CpuType &&
|
||||
memcmp(m_Slot, other.m_Slot, sizeof(m_Slot)) == 0 &&
|
||||
m_bEnableHDD == other.m_bEnableHDD &&
|
||||
m_bEnableTheFreezesF8Rom == other.m_bEnableTheFreezesF8Rom &&
|
||||
m_uSaveLoadStateMsg == other.m_uSaveLoadStateMsg &&
|
||||
m_videoRefreshRate == other.m_videoRefreshRate;
|
||||
}
|
||||
|
||||
bool operator!= (const CConfigNeedingRestart& other) const
|
||||
|
@ -54,4 +58,5 @@ public:
|
|||
bool m_bEnableHDD;
|
||||
UINT m_bEnableTheFreezesF8Rom;
|
||||
UINT m_uSaveLoadStateMsg;
|
||||
VideoRefreshRate_e m_videoRefreshRate;
|
||||
};
|
||||
|
|
|
@ -121,6 +121,7 @@ BOOL CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPARAM
|
|||
case IDC_CHECK_HALF_SCAN_LINES:
|
||||
case IDC_CHECK_VERTICAL_BLEND:
|
||||
case IDC_CHECK_FS_SHOW_SUBUNIT_STATUS:
|
||||
case IDC_CHECK_50HZ_VIDEO:
|
||||
// Checked in DlgOK()
|
||||
break;
|
||||
|
||||
|
@ -205,6 +206,8 @@ BOOL CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPARAM
|
|||
m_PropertySheetHelper.FillComboBox(hWnd,IDC_SERIALPORT, sg_SSC.GetSerialPortChoices(), sg_SSC.GetSerialPort());
|
||||
EnableWindow(GetDlgItem(hWnd, IDC_SERIALPORT), !sg_SSC.IsActive() ? TRUE : FALSE);
|
||||
|
||||
CheckDlgButton(hWnd, IDC_CHECK_50HZ_VIDEO, (GetVideoRefreshRate() == VR_50HZ) ? BST_CHECKED : BST_UNCHECKED);
|
||||
|
||||
SendDlgItemMessage(hWnd,IDC_SLIDER_CPU_SPEED,TBM_SETRANGE,1,MAKELONG(0,40));
|
||||
SendDlgItemMessage(hWnd,IDC_SLIDER_CPU_SPEED,TBM_SETPAGESIZE,0,5);
|
||||
SendDlgItemMessage(hWnd,IDC_SLIDER_CPU_SPEED,TBM_SETTICFREQ,10,0);
|
||||
|
@ -286,6 +289,13 @@ void CPageConfig::DlgOK(HWND hWnd)
|
|||
bVideoReinit = true;
|
||||
}
|
||||
|
||||
const bool isNewVideoRate50Hz = IsDlgButtonChecked(hWnd, IDC_CHECK_50HZ_VIDEO) != 0;
|
||||
const bool isCurrentVideoRate50Hz = GetVideoRefreshRate() == VR_50HZ;
|
||||
if (isCurrentVideoRate50Hz != isNewVideoRate50Hz)
|
||||
{
|
||||
m_PropertySheetHelper.GetConfigNew().m_videoRefreshRate = isNewVideoRate50Hz ? VR_50HZ : VR_60HZ;
|
||||
}
|
||||
|
||||
if (bVideoReinit)
|
||||
{
|
||||
Config_Save_Video();
|
||||
|
|
|
@ -407,6 +407,11 @@ void CPropertySheetHelper::ApplyNewConfig(const CConfigNeedingRestart& ConfigNew
|
|||
{
|
||||
REGSAVE(TEXT(REGVALUE_THE_FREEZES_F8_ROM), ConfigNew.m_bEnableTheFreezesF8Rom);
|
||||
}
|
||||
|
||||
if (CONFIG_CHANGED_LOCAL(m_videoRefreshRate))
|
||||
{
|
||||
REGSAVE(TEXT(REGVALUE_VIDEO_REFRESH_RATE), ConfigNew.m_videoRefreshRate);
|
||||
}
|
||||
}
|
||||
|
||||
void CPropertySheetHelper::ApplyNewConfig(void)
|
||||
|
@ -423,6 +428,7 @@ void CPropertySheetHelper::SaveCurrentConfig(void)
|
|||
m_ConfigOld.m_Slot[5] = g_Slot5;
|
||||
m_ConfigOld.m_bEnableHDD = HD_CardIsEnabled();
|
||||
m_ConfigOld.m_bEnableTheFreezesF8Rom = sg_PropertySheet.GetTheFreezesF8Rom();
|
||||
m_ConfigOld.m_videoRefreshRate = GetVideoRefreshRate();
|
||||
|
||||
// Reset flags each time:
|
||||
m_ConfigOld.m_uSaveLoadStateMsg = 0;
|
||||
|
@ -441,6 +447,7 @@ void CPropertySheetHelper::RestoreCurrentConfig(void)
|
|||
g_Slot5 = m_ConfigOld.m_Slot[5];
|
||||
HD_SetEnabled(m_ConfigOld.m_bEnableHDD);
|
||||
sg_PropertySheet.SetTheFreezesF8Rom(m_ConfigOld.m_bEnableTheFreezesF8Rom);
|
||||
SetVideoRefreshRate(m_ConfigOld.m_videoRefreshRate);
|
||||
}
|
||||
|
||||
bool CPropertySheetHelper::IsOkToSaveLoadState(HWND hWnd, const bool bConfigChanged)
|
||||
|
@ -491,6 +498,9 @@ bool CPropertySheetHelper::HardwareConfigChanged(HWND hWnd)
|
|||
if (CONFIG_CHANGED(m_CpuType))
|
||||
strMsgMain += ". Emulated main CPU has changed\n";
|
||||
|
||||
if (CONFIG_CHANGED(m_videoRefreshRate))
|
||||
strMsgMain += ". Video refresh rate has changed\n";
|
||||
|
||||
if (CONFIG_CHANGED(m_Slot[4]))
|
||||
strMsgMain += GetSlot(4);
|
||||
|
||||
|
|
|
@ -3727,15 +3727,16 @@ Update_t CmdDisk ( int nArgs)
|
|||
if (nArgs > 2)
|
||||
goto _Help;
|
||||
|
||||
int drive = sg_Disk2Card.GetCurrentDrive() + 1;
|
||||
char buffer[200] = "";
|
||||
ConsoleBufferPushFormat(buffer, "D%d at T$%X (%d), phase $%X, offset $%X, %s",
|
||||
drive,
|
||||
sg_Disk2Card.GetCurrentTrack(),
|
||||
sg_Disk2Card.GetCurrentTrack(),
|
||||
sg_Disk2Card.GetCurrentPhase(),
|
||||
ConsoleBufferPushFormat(buffer, "D%d at T$%s, phase $%s, offset $%X, mask $%02X, extraCycles %.2f, %s",
|
||||
sg_Disk2Card.GetCurrentDrive() + 1,
|
||||
sg_Disk2Card.GetCurrentTrackString().c_str(),
|
||||
sg_Disk2Card.GetCurrentPhaseString().c_str(),
|
||||
sg_Disk2Card.GetCurrentOffset(),
|
||||
sg_Disk2Card.GetCurrentState());
|
||||
sg_Disk2Card.GetCurrentLSSBitMask(),
|
||||
sg_Disk2Card.GetCurrentExtraCycles(),
|
||||
sg_Disk2Card.GetCurrentState()
|
||||
);
|
||||
|
||||
return ConsoleUpdate();
|
||||
}
|
||||
|
|
834
source/Disk.cpp
834
source/Disk.cpp
File diff suppressed because it is too large
Load diff
|
@ -61,6 +61,10 @@ public:
|
|||
//
|
||||
m_byte = 0;
|
||||
m_nibbles = 0;
|
||||
m_bitOffset = 0;
|
||||
m_bitCount = 0;
|
||||
m_bitMask = 1 << 7;
|
||||
m_extraCycles = 0.0;
|
||||
m_trackimage = NULL;
|
||||
m_trackimagedata = false;
|
||||
m_trackimagedirty = false;
|
||||
|
@ -72,8 +76,12 @@ public:
|
|||
std::string m_strFilenameInZip; // "" or <FILENAME.EXT>
|
||||
ImageInfo* m_imagehandle; // Init'd by InsertDisk() -> ImageOpen()
|
||||
bool m_bWriteProtected;
|
||||
int m_byte;
|
||||
int m_nibbles; // Init'd by ReadTrack() -> ImageReadTrack()
|
||||
int m_byte; // byte offset
|
||||
int m_nibbles; // # nibbles in track / Init'd by ReadTrack() -> ImageReadTrack()
|
||||
UINT m_bitOffset; // bit offset
|
||||
UINT m_bitCount; // # bits in track
|
||||
BYTE m_bitMask;
|
||||
double m_extraCycles;
|
||||
LPBYTE m_trackimage;
|
||||
bool m_trackimagedata;
|
||||
bool m_trackimagedirty;
|
||||
|
@ -91,16 +99,20 @@ public:
|
|||
|
||||
void clear()
|
||||
{
|
||||
m_phasePrecise = 0;
|
||||
m_phase = 0;
|
||||
m_track = 0;
|
||||
m_lastStepperCycle = 0;
|
||||
m_headWindow = 0;
|
||||
m_spinning = 0;
|
||||
m_writelight = 0;
|
||||
m_disk.clear();
|
||||
}
|
||||
|
||||
public:
|
||||
int m_phase;
|
||||
int m_track;
|
||||
float m_phasePrecise; // Phase precise to half a phase (aka quarter track)
|
||||
int m_phase; // Integral phase number
|
||||
unsigned __int64 m_lastStepperCycle;
|
||||
BYTE m_headWindow;
|
||||
DWORD m_spinning;
|
||||
DWORD m_writelight;
|
||||
FloppyDisk m_disk;
|
||||
|
@ -132,10 +144,14 @@ public:
|
|||
bool GetProtect(const int drive);
|
||||
void SetProtect(const int drive, const bool bWriteProtect);
|
||||
int GetCurrentDrive(void);
|
||||
int GetCurrentTrack();
|
||||
int GetTrack(const int drive);
|
||||
int GetCurrentPhase(void);
|
||||
int GetCurrentTrack(void);
|
||||
float GetCurrentPhase(void);
|
||||
int GetCurrentOffset(void);
|
||||
BYTE GetCurrentLSSBitMask(void);
|
||||
double GetCurrentExtraCycles(void);
|
||||
int GetTrack(const int drive);
|
||||
std::string GetCurrentTrackString(void);
|
||||
std::string GetCurrentPhaseString(void);
|
||||
LPCTSTR GetCurrentState(void);
|
||||
bool UserSelectNewDiskImage(const int drive, LPCSTR pszFilename="");
|
||||
void UpdateDriveState(DWORD cycles);
|
||||
|
@ -158,21 +174,37 @@ public:
|
|||
static BYTE __stdcall IOWrite(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles);
|
||||
|
||||
private:
|
||||
void CheckSpinning(const ULONG nExecutedCycles);
|
||||
void ResetSwitches(void);
|
||||
void CheckSpinning(const ULONG uExecutedCycles);
|
||||
Disk_Status_e GetDriveLightStatus(const int drive);
|
||||
bool IsDriveValid(const int drive);
|
||||
void AllocTrack(const int drive);
|
||||
void ReadTrack(const int drive);
|
||||
void ReadTrack(const int drive, ULONG uExecutedCycles);
|
||||
void RemoveDisk(const int drive);
|
||||
void WriteTrack(const int drive);
|
||||
LPCTSTR DiskGetFullPathName(const int drive);
|
||||
void SaveSnapshotDisk2Unit(YamlSaveHelper& yamlSaveHelper, UINT unit);
|
||||
void LoadSnapshotDriveUnit(YamlLoadHelper& yamlLoadHelper, UINT unit);
|
||||
void ResetLogicStateSequencer(void);
|
||||
void UpdateBitStreamPositionAndDiskCycle(const ULONG uExecutedCycles);
|
||||
UINT GetBitCellDelta(const BYTE optimalBitTiming);
|
||||
void UpdateBitStreamPosition(FloppyDisk& floppy, const ULONG bitCellDelta);
|
||||
void UpdateBitStreamOffsets(FloppyDisk& floppy);
|
||||
void DataLatchReadWOZ(WORD pc, WORD addr, UINT bitCellRemainder);
|
||||
void DataLatchWriteWOZ(WORD pc, WORD addr, BYTE d, UINT bitCellRemainder);
|
||||
void DumpSectorWOZ(FloppyDisk floppy);
|
||||
void DumpTrackWOZ(FloppyDisk floppy);
|
||||
|
||||
void SaveSnapshotFloppy(YamlSaveHelper& yamlSaveHelper, UINT unit);
|
||||
void SaveSnapshotDriveUnit(YamlSaveHelper& yamlSaveHelper, UINT unit);
|
||||
bool LoadSnapshotFloppy(YamlLoadHelper& yamlLoadHelper, UINT unit, UINT version, std::vector<BYTE>& track);
|
||||
bool LoadSnapshotDriveUnitv3(YamlLoadHelper& yamlLoadHelper, UINT unit, UINT version, std::vector<BYTE>& track);
|
||||
bool LoadSnapshotDriveUnitv4(YamlLoadHelper& yamlLoadHelper, UINT unit, UINT version, std::vector<BYTE>& track);
|
||||
void LoadSnapshotDriveUnit(YamlLoadHelper& yamlLoadHelper, UINT unit, UINT version);
|
||||
|
||||
void __stdcall ControlStepper(WORD, WORD address, BYTE, BYTE, ULONG uExecutedCycles);
|
||||
void __stdcall ControlMotor(WORD, WORD address, BYTE, BYTE, ULONG uExecutedCycles);
|
||||
void __stdcall Enable(WORD, WORD address, BYTE, BYTE, ULONG uExecutedCycles);
|
||||
void __stdcall ReadWrite(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles);
|
||||
void __stdcall ReadWrite(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG uExecutedCycles);
|
||||
void __stdcall DataLatchReadWriteWOZ(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG uExecutedCycles);
|
||||
void __stdcall LoadWriteProtect(WORD, WORD, BYTE write, BYTE value, ULONG);
|
||||
void __stdcall SetReadMode(WORD, WORD, BYTE, BYTE, ULONG);
|
||||
void __stdcall SetWriteMode(WORD, WORD, BYTE, BYTE, ULONG uExecutedCycles);
|
||||
|
@ -189,7 +221,11 @@ private:
|
|||
BOOL m_floppyMotorOn;
|
||||
BOOL m_floppyLoadMode; // for efficiency this is not used; it's extremely unlikely to affect emulation (nickw)
|
||||
BOOL m_floppyWriteMode;
|
||||
WORD m_phases; // state bits for stepper magnet phases 0 - 3
|
||||
|
||||
// Although the magnets are a property of the drive, their state is a property of the controller card,
|
||||
// since the magnets will only be on for whichever of the 2 drives is currently selected.
|
||||
WORD m_magnetStates; // state bits for stepper motor magnet states (phases 0 - 3)
|
||||
|
||||
bool m_saveDiskImage;
|
||||
UINT m_slot;
|
||||
unsigned __int64 m_diskLastCycle;
|
||||
|
@ -197,8 +233,14 @@ private:
|
|||
FormatTrack m_formatTrack;
|
||||
bool m_enhanceDisk;
|
||||
|
||||
static const UINT SPINNING_CYCLES = 20000*64; // 1280000 cycles = 1.25s
|
||||
static const UINT WRITELIGHT_CYCLES = 20000*64; // 1280000 cycles = 1.25s
|
||||
static const UINT SPINNING_CYCLES = 1000*1000; // 1M cycles = ~1.000s
|
||||
static const UINT WRITELIGHT_CYCLES = 1000*1000; // 1M cycles = ~1.000s
|
||||
|
||||
// Logic State Sequencer (for WOZ):
|
||||
BYTE m_shiftReg;
|
||||
int m_latchDelay;
|
||||
bool m_resetSequencer;
|
||||
UINT m_dbgLatchDelayedCnt;
|
||||
|
||||
// Debug:
|
||||
#if LOG_DISK_NIBBLES_USE_RUNTIME_VAR
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#define NIBBLES_PER_TRACK 0x1A00
|
||||
#define NIBBLES_PER_TRACK_NIB 0x1A00
|
||||
#define NIBBLES_PER_TRACK_WOZ2 0x1A18 // 6680
|
||||
#define NIBBLES_PER_TRACK NIBBLES_PER_TRACK_WOZ2 // MAX(NIBBLES_PER_TRACK_NIB, NIBBLES_PER_TRACK_WOZ2)
|
||||
|
||||
const UINT NUM_SECTORS = 16;
|
||||
|
|
|
@ -264,17 +264,18 @@ void FormatTrack::DecodeLatchNibble(BYTE floppylatch, bool bIsWrite, bool bIsSyn
|
|||
m_VolTrkSecChk[i] = ((m_VolTrkSecChk4and4[i*2] & 0x55) << 1) | (m_VolTrkSecChk4and4[i*2+1] & 0x55);
|
||||
|
||||
#if LOG_DISK_NIBBLES_READ
|
||||
const bool chk = (m_VolTrkSecChk[0] ^ m_VolTrkSecChk[1] ^ m_VolTrkSecChk[2] ^ m_VolTrkSecChk[3]) == 0;
|
||||
if (!bIsWrite)
|
||||
{
|
||||
BYTE addrPrologue = m_bAddressPrologueIsDOS3_2 ? (BYTE)kADDR_PROLOGUE_DOS3_2 : (BYTE)kADDR_PROLOGUE_DOS3_3;
|
||||
LOG_DISK("read D5AA%02X detected - Vol:%02X Trk:%02X Sec:%02X Chk:%02X\r\n", addrPrologue, m_VolTrkSecChk[0], m_VolTrkSecChk[1], m_VolTrkSecChk[2], m_VolTrkSecChk[3]);
|
||||
LOG_DISK("read D5AA%02X detected - Vol:%02X Trk:%02X Sec:%02X Chk:%02X %s\r\n", addrPrologue, m_VolTrkSecChk[0], m_VolTrkSecChk[1], m_VolTrkSecChk[2], m_VolTrkSecChk[3], chk?"":"(bad)");
|
||||
}
|
||||
#endif
|
||||
#if LOG_DISK_NIBBLES_WRITE
|
||||
if (bIsWrite)
|
||||
{
|
||||
BYTE addrPrologue = m_bAddressPrologueIsDOS3_2 ? (BYTE)kADDR_PROLOGUE_DOS3_2 : (BYTE)kADDR_PROLOGUE_DOS3_3;
|
||||
LOG_DISK("write D5AA%02X detected - Vol:%02X Trk:%02X Sec:%02X Chk:%02X\r\n", addrPrologue, m_VolTrkSecChk[0], m_VolTrkSecChk[1], m_VolTrkSecChk[2], m_VolTrkSecChk[3]);
|
||||
LOG_DISK("write D5AA%02X detected - Vol:%02X Trk:%02X Sec:%02X Chk:%02X %s\r\n", addrPrologue, m_VolTrkSecChk[0], m_VolTrkSecChk[1], m_VolTrkSecChk[2], m_VolTrkSecChk[3], chk?"":"(bad)");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "Common.h"
|
||||
#include "DiskImage.h"
|
||||
#include "DiskImageHelper.h"
|
||||
|
||||
|
@ -152,19 +153,21 @@ void ImageInitialize(void)
|
|||
//===========================================================================
|
||||
|
||||
void ImageReadTrack( ImageInfo* const pImageInfo,
|
||||
const int nTrack,
|
||||
const int nQuarterTrack,
|
||||
float phase, // phase [0..79] +/- 0.5
|
||||
LPBYTE pTrackImageBuffer,
|
||||
int* pNibbles,
|
||||
UINT* pBitCount,
|
||||
bool enhanceDisk)
|
||||
{
|
||||
_ASSERT(nTrack >= 0);
|
||||
if (nTrack < 0)
|
||||
return;
|
||||
_ASSERT(phase >= 0);
|
||||
if (phase < 0)
|
||||
phase = 0;
|
||||
|
||||
if (pImageInfo->pImageType->AllowRW() && pImageInfo->ValidTrack[nTrack])
|
||||
const UINT track = pImageInfo->pImageType->PhaseToTrack(phase);
|
||||
|
||||
if (pImageInfo->pImageType->AllowRW() && pImageInfo->ValidTrack[track])
|
||||
{
|
||||
pImageInfo->pImageType->Read(pImageInfo, nTrack, nQuarterTrack, pTrackImageBuffer, pNibbles, enhanceDisk);
|
||||
pImageInfo->pImageType->Read(pImageInfo, phase, pTrackImageBuffer, pNibbles, pBitCount, enhanceDisk);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -176,19 +179,20 @@ void ImageReadTrack( ImageInfo* const pImageInfo,
|
|||
//===========================================================================
|
||||
|
||||
void ImageWriteTrack( ImageInfo* const pImageInfo,
|
||||
const int nTrack,
|
||||
const int nQuarterTrack,
|
||||
LPBYTE pTrackImage,
|
||||
float phase, // phase [0..79] +/- 0.5
|
||||
LPBYTE pTrackImageBuffer,
|
||||
const int nNibbles)
|
||||
{
|
||||
_ASSERT(nTrack >= 0);
|
||||
if (nTrack < 0)
|
||||
return;
|
||||
_ASSERT(phase >= 0);
|
||||
if (phase < 0)
|
||||
phase = 0;
|
||||
|
||||
const UINT track = pImageInfo->pImageType->PhaseToTrack(phase);
|
||||
|
||||
if (pImageInfo->pImageType->AllowRW() && !pImageInfo->bWriteProtected)
|
||||
{
|
||||
pImageInfo->pImageType->Write(pImageInfo, nTrack, nQuarterTrack, pTrackImage, nNibbles);
|
||||
pImageInfo->ValidTrack[nTrack] = 1;
|
||||
pImageInfo->pImageType->Write(pImageInfo, phase, pTrackImageBuffer, nNibbles);
|
||||
pImageInfo->ValidTrack[track] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -220,7 +224,7 @@ bool ImageWriteBlock( ImageInfo* const pImageInfo,
|
|||
|
||||
//===========================================================================
|
||||
|
||||
int ImageGetNumTracks(ImageInfo* const pImageInfo)
|
||||
UINT ImageGetNumTracks(ImageInfo* const pImageInfo)
|
||||
{
|
||||
return pImageInfo ? pImageInfo->uNumTracks : 0;
|
||||
}
|
||||
|
@ -246,6 +250,33 @@ UINT ImageGetImageSize(ImageInfo* const pImageInfo)
|
|||
return pImageInfo ? pImageInfo->uImageSize : 0;
|
||||
}
|
||||
|
||||
bool ImageIsWOZ(ImageInfo* const pImageInfo)
|
||||
{
|
||||
return pImageInfo ? (pImageInfo->pImageType->GetType() == eImageWOZ1 || pImageInfo->pImageType->GetType() == eImageWOZ2) : false;
|
||||
}
|
||||
|
||||
BYTE ImageGetOptimalBitTiming(ImageInfo* const pImageInfo)
|
||||
{
|
||||
return pImageInfo ? pImageInfo->optimalBitTiming : 32;
|
||||
}
|
||||
|
||||
UINT ImagePhaseToTrack(ImageInfo* const pImageInfo, const float phase, const bool limit/*=true*/)
|
||||
{
|
||||
if (!pImageInfo)
|
||||
return 0;
|
||||
|
||||
UINT track = pImageInfo->pImageType->PhaseToTrack(phase);
|
||||
|
||||
if (limit)
|
||||
{
|
||||
const UINT numTracksInImage = ImageGetNumTracks(pImageInfo);
|
||||
track = (numTracksInImage == 0) ? 0
|
||||
: MIN(numTracksInImage - 1, track);
|
||||
}
|
||||
|
||||
return track;
|
||||
}
|
||||
|
||||
void GetImageTitle(LPCTSTR pPathname, TCHAR* pImageName, TCHAR* pFullName)
|
||||
{
|
||||
TCHAR imagetitle[ MAX_DISK_FULL_NAME+1 ];
|
||||
|
|
|
@ -71,15 +71,18 @@ BOOL ImageBoot(ImageInfo* const pImageInfo);
|
|||
void ImageDestroy(void);
|
||||
void ImageInitialize(void);
|
||||
|
||||
void ImageReadTrack(ImageInfo* const pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk);
|
||||
void ImageWriteTrack(ImageInfo* const pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles);
|
||||
void ImageReadTrack(ImageInfo* const pImageInfo, float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk);
|
||||
void ImageWriteTrack(ImageInfo* const pImageInfo, float phase, LPBYTE pTrackImageBuffer, int nNibbles);
|
||||
bool ImageReadBlock(ImageInfo* const pImageInfo, UINT nBlock, LPBYTE pBlockBuffer);
|
||||
bool ImageWriteBlock(ImageInfo* const pImageInfo, UINT nBlock, LPBYTE pBlockBuffer);
|
||||
|
||||
int ImageGetNumTracks(ImageInfo* const pImageInfo);
|
||||
UINT ImageGetNumTracks(ImageInfo* const pImageInfo);
|
||||
bool ImageIsWriteProtected(ImageInfo* const pImageInfo);
|
||||
bool ImageIsMultiFileZip(ImageInfo* const pImageInfo);
|
||||
const char* ImageGetPathname(ImageInfo* const pImageInfo);
|
||||
UINT ImageGetImageSize(ImageInfo* const pImageInfo);
|
||||
bool ImageIsWOZ(ImageInfo* const pImageInfo);
|
||||
BYTE ImageGetOptimalBitTiming(ImageInfo* const pImageInfo);
|
||||
UINT ImagePhaseToTrack(ImageInfo* const pImageInfo, const float phase, const bool limit=true);
|
||||
|
||||
void GetImageTitle(LPCTSTR pPathname, TCHAR* pImageName, TCHAR* pFullName);
|
||||
|
|
|
@ -70,8 +70,8 @@ LPBYTE CImageBase::ms_pWorkBuffer = NULL;
|
|||
|
||||
bool CImageBase::ReadTrack(ImageInfo* pImageInfo, const int nTrack, LPBYTE pTrackBuffer, const UINT uTrackSize)
|
||||
{
|
||||
const long Offset = pImageInfo->uOffset + nTrack * uTrackSize;
|
||||
memcpy(pTrackBuffer, &pImageInfo->pImageBuffer[Offset], uTrackSize);
|
||||
const long offset = pImageInfo->uOffset + nTrack * uTrackSize;
|
||||
memcpy(pTrackBuffer, &pImageInfo->pImageBuffer[offset], uTrackSize);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -630,18 +630,20 @@ public:
|
|||
return ePossibleMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk)
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
ReadTrack(pImageInfo, nTrack, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
*pNibbles = NibblizeTrack(pTrackImageBuffer, eDOSOrder, nTrack);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
ReadTrack(pImageInfo, track, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
*pNibbles = NibblizeTrack(pTrackImageBuffer, eDOSOrder, track);
|
||||
if (!enhanceDisk)
|
||||
SkewTrack(nTrack, *pNibbles, pTrackImageBuffer);
|
||||
SkewTrack(track, *pNibbles, pTrackImageBuffer);
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles)
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
DenibblizeTrack(pTrackImage, eDOSOrder, nNibbles);
|
||||
WriteTrack(pImageInfo, nTrack, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
DenibblizeTrack(pTrackImageBuffer, eDOSOrder, nNibbles);
|
||||
WriteTrack(pImageInfo, track, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
}
|
||||
|
||||
virtual bool AllowCreate(void) { return true; }
|
||||
|
@ -696,23 +698,25 @@ public:
|
|||
return ePossibleMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk)
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
ReadTrack(pImageInfo, nTrack, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
*pNibbles = NibblizeTrack(pTrackImageBuffer, eProDOSOrder, nTrack);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
ReadTrack(pImageInfo, track, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
*pNibbles = NibblizeTrack(pTrackImageBuffer, eProDOSOrder, track);
|
||||
if (!enhanceDisk)
|
||||
SkewTrack(nTrack, *pNibbles, pTrackImageBuffer);
|
||||
SkewTrack(track, *pNibbles, pTrackImageBuffer);
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles)
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
DenibblizeTrack(pTrackImage, eProDOSOrder, nNibbles);
|
||||
WriteTrack(pImageInfo, nTrack, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
DenibblizeTrack(pTrackImageBuffer, eProDOSOrder, nNibbles);
|
||||
WriteTrack(pImageInfo, track, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
}
|
||||
|
||||
virtual eImageType GetType(void) { return eImagePO; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".po"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.iie;.nib;.prg"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.iie;.nib;.prg;.woz"; }
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -724,7 +728,7 @@ public:
|
|||
CNib1Image(void) {}
|
||||
virtual ~CNib1Image(void) {}
|
||||
|
||||
static const UINT NIB1_TRACK_SIZE = NIBBLES_PER_TRACK;
|
||||
static const UINT NIB1_TRACK_SIZE = NIBBLES_PER_TRACK_NIB;
|
||||
|
||||
virtual eDetectResult Detect(const LPBYTE pImage, const DWORD dwImageSize, const TCHAR* pszExt)
|
||||
{
|
||||
|
@ -735,16 +739,18 @@ public:
|
|||
return eMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk)
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
ReadTrack(pImageInfo, nTrack, pTrackImageBuffer, NIB1_TRACK_SIZE);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
ReadTrack(pImageInfo, track, pTrackImageBuffer, NIB1_TRACK_SIZE);
|
||||
*pNibbles = NIB1_TRACK_SIZE;
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles)
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
_ASSERT(nNibbles == NIB1_TRACK_SIZE); // Must be true - as nNibbles gets init'd by ImageReadTrace()
|
||||
WriteTrack(pImageInfo, nTrack, pTrackImage, nNibbles);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
WriteTrack(pImageInfo, track, pTrackImageBuffer, nNibbles);
|
||||
}
|
||||
|
||||
virtual bool AllowCreate(void) { return true; }
|
||||
|
@ -752,7 +758,7 @@ public:
|
|||
|
||||
virtual eImageType GetType(void) { return eImageNIB1; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".nib"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.iie;.po;.prg"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.iie;.po;.prg;.woz"; }
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -775,21 +781,23 @@ public:
|
|||
return eMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk)
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
ReadTrack(pImageInfo, nTrack, pTrackImageBuffer, NIB2_TRACK_SIZE);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
ReadTrack(pImageInfo, track, pTrackImageBuffer, NIB2_TRACK_SIZE);
|
||||
*pNibbles = NIB2_TRACK_SIZE;
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles)
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
_ASSERT(nNibbles == NIB2_TRACK_SIZE); // Must be true - as nNibbles gets init'd by ImageReadTrace()
|
||||
WriteTrack(pImageInfo, nTrack, pTrackImage, nNibbles);
|
||||
const UINT track = PhaseToTrack(phase);
|
||||
WriteTrack(pImageInfo, track, pTrackImageBuffer, nNibbles);
|
||||
}
|
||||
|
||||
virtual eImageType GetType(void) { return eImageNIB2; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".nb2"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.iie;.po;.prg;.2mg;.2img"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.iie;.po;.prg;.woz;.2mg;.2img"; }
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -851,8 +859,10 @@ public:
|
|||
return eMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk)
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
UINT track = PhaseToTrack(phase);
|
||||
|
||||
// IF WE HAVEN'T ALREADY DONE SO, READ THE IMAGE FILE HEADER
|
||||
if (!m_pHeader)
|
||||
{
|
||||
|
@ -872,19 +882,19 @@ public:
|
|||
if (*(m_pHeader+13) <= 2)
|
||||
{
|
||||
ConvertSectorOrder(m_pHeader+14);
|
||||
SetFilePointer(pImageInfo->hFile, nTrack*TRACK_DENIBBLIZED_SIZE+30, NULL, FILE_BEGIN);
|
||||
SetFilePointer(pImageInfo->hFile, track*TRACK_DENIBBLIZED_SIZE+30, NULL, FILE_BEGIN);
|
||||
ZeroMemory(ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE);
|
||||
DWORD bytesread;
|
||||
ReadFile(pImageInfo->hFile, ms_pWorkBuffer, TRACK_DENIBBLIZED_SIZE, &bytesread, NULL);
|
||||
*pNibbles = NibblizeTrack(pTrackImageBuffer, eSIMSYSTEMOrder, nTrack);
|
||||
*pNibbles = NibblizeTrack(pTrackImageBuffer, eSIMSYSTEMOrder, track);
|
||||
}
|
||||
// OTHERWISE, IF THIS IMAGE CONTAINS NIBBLE INFORMATION, READ IT DIRECTLY INTO THE TRACK BUFFER
|
||||
else
|
||||
{
|
||||
*pNibbles = *(LPWORD)(m_pHeader+nTrack*2+14);
|
||||
*pNibbles = *(LPWORD)(m_pHeader+track*2+14);
|
||||
LONG Offset = 88;
|
||||
while (nTrack--)
|
||||
Offset += *(LPWORD)(m_pHeader+nTrack*2+14);
|
||||
while (track--)
|
||||
Offset += *(LPWORD)(m_pHeader+track*2+14);
|
||||
SetFilePointer(pImageInfo->hFile, Offset, NULL,FILE_BEGIN);
|
||||
ZeroMemory(pTrackImageBuffer, *pNibbles);
|
||||
DWORD dwBytesRead;
|
||||
|
@ -892,14 +902,14 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles)
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
// note: unimplemented
|
||||
}
|
||||
|
||||
virtual eImageType GetType(void) { return eImageIIE; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".iie"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do.;.nib;.po;.prg;.2mg;.2img"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do.;.nib;.po;.prg;.woz;.2mg;.2img"; }
|
||||
|
||||
private:
|
||||
void ConvertSectorOrder(LPBYTE sourceorder)
|
||||
|
@ -973,7 +983,7 @@ public:
|
|||
|
||||
virtual eImageType GetType(void) { return eImageAPL; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".apl"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.dsk;.iie;.nib;.po;.2mg;.2img"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.dsk;.iie;.nib;.po;.woz;.2mg;.2img"; }
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -1024,7 +1034,154 @@ public:
|
|||
|
||||
virtual eImageType GetType(void) { return eImagePRG; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".prg"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.dsk;.iie;.nib;.po;.2mg;.2img"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.dsk;.iie;.nib;.po;.woz;.2mg;.2img"; }
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
||||
class CWOZEmptyTrack
|
||||
{
|
||||
public:
|
||||
CWOZEmptyTrack(void)
|
||||
{
|
||||
m_pWOZEmptyTrack = new BYTE[CWOZHelper::EMPTY_TRACK_SIZE];
|
||||
|
||||
srand(1); // Use a fixed seed for determinism
|
||||
for (UINT i = 0; i < CWOZHelper::EMPTY_TRACK_SIZE; i++)
|
||||
{
|
||||
BYTE n = 0;
|
||||
for (UINT j = 0; j < 8; j++)
|
||||
{
|
||||
if (rand() < ((RAND_MAX * 3) / 10)) // ~30% of buffer are 1 bits
|
||||
n |= 1 << j;
|
||||
}
|
||||
m_pWOZEmptyTrack[i] = n;
|
||||
}
|
||||
}
|
||||
virtual ~CWOZEmptyTrack(void) { delete m_pWOZEmptyTrack; }
|
||||
|
||||
void ReadEmptyTrack(LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount)
|
||||
{
|
||||
memcpy(pTrackImageBuffer, m_pWOZEmptyTrack, CWOZHelper::EMPTY_TRACK_SIZE);
|
||||
*pNibbles = CWOZHelper::EMPTY_TRACK_SIZE;
|
||||
*pBitCount = CWOZHelper::EMPTY_TRACK_SIZE * 8;
|
||||
return;
|
||||
}
|
||||
|
||||
private:
|
||||
BYTE* m_pWOZEmptyTrack;
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
||||
class CWOZ1Image : public CImageBase, private CWOZEmptyTrack
|
||||
{
|
||||
public:
|
||||
CWOZ1Image(void) {}
|
||||
virtual ~CWOZ1Image(void) {}
|
||||
|
||||
virtual eDetectResult Detect(const LPBYTE pImage, const DWORD dwImageSize, const TCHAR* pszExt)
|
||||
{
|
||||
CWOZHelper::WOZHeader* pWozHdr = (CWOZHelper::WOZHeader*) pImage;
|
||||
|
||||
if (pWozHdr->id1 != CWOZHelper::ID1_WOZ1 || pWozHdr->id2 != CWOZHelper::ID2)
|
||||
return eMismatch;
|
||||
|
||||
if (pWozHdr->crc32)
|
||||
{
|
||||
// TODO: check crc
|
||||
}
|
||||
|
||||
m_uNumTracksInImage = CWOZHelper::MAX_TRACKS_5_25;
|
||||
return eMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
BYTE*& pTrackMap = pImageInfo->pTrackMap;
|
||||
|
||||
const int trackFromTMAP = pTrackMap[(UINT)(phase * 2)];
|
||||
if (trackFromTMAP == 0xFF)
|
||||
return ReadEmptyTrack(pTrackImageBuffer, pNibbles, pBitCount);
|
||||
|
||||
ReadTrack(pImageInfo, trackFromTMAP, pTrackImageBuffer, CWOZHelper::WOZ1_TRACK_SIZE);
|
||||
CWOZHelper::TRKv1* pTRK = (CWOZHelper::TRKv1*) &pTrackImageBuffer[CWOZHelper::WOZ1_TRK_OFFSET];
|
||||
*pNibbles = pTRK->bytesUsed;
|
||||
*pBitCount = pTRK->bitCount;
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
// TODO
|
||||
_ASSERT(0);
|
||||
}
|
||||
|
||||
// TODO: Uncomment and fix-up if we want to allow .woz image creation (eg. for INIT or FORMAT)
|
||||
// virtual bool AllowCreate(void) { return true; }
|
||||
// virtual UINT GetImageSizeForCreate(void) { return 0; }//TODO
|
||||
|
||||
virtual eImageType GetType(void) { return eImageWOZ1; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".woz"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.dsk;.nib;.iie;.po;.prg"; }
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
||||
class CWOZ2Image : public CImageBase, private CWOZEmptyTrack
|
||||
{
|
||||
public:
|
||||
CWOZ2Image(void) {}
|
||||
virtual ~CWOZ2Image(void) {}
|
||||
|
||||
virtual eDetectResult Detect(const LPBYTE pImage, const DWORD dwImageSize, const TCHAR* pszExt)
|
||||
{
|
||||
CWOZHelper::WOZHeader* pWozHdr = (CWOZHelper::WOZHeader*) pImage;
|
||||
|
||||
if (pWozHdr->id1 != CWOZHelper::ID1_WOZ2 || pWozHdr->id2 != CWOZHelper::ID2)
|
||||
return eMismatch;
|
||||
|
||||
if (pWozHdr->crc32)
|
||||
{
|
||||
// TODO: check crc
|
||||
}
|
||||
|
||||
m_uNumTracksInImage = CWOZHelper::MAX_TRACKS_5_25;
|
||||
return eMatch;
|
||||
}
|
||||
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk)
|
||||
{
|
||||
BYTE*& pTrackMap = pImageInfo->pTrackMap;
|
||||
|
||||
const int trackFromTMAP = pTrackMap[(UINT)(phase * 2)];
|
||||
if (trackFromTMAP == 0xFF)
|
||||
return ReadEmptyTrack(pTrackImageBuffer, pNibbles, pBitCount);
|
||||
|
||||
CWOZHelper::TRKv2* pTRKS = (CWOZHelper::TRKv2*) &pImageInfo->pImageBuffer[pImageInfo->uOffset];
|
||||
CWOZHelper::TRKv2* pTRK = &pTRKS[trackFromTMAP];
|
||||
*pBitCount = pTRK->bitCount;
|
||||
*pNibbles = (pTRK->bitCount+7) / 8;
|
||||
|
||||
_ASSERT(*pNibbles <= NIBBLES_PER_TRACK_WOZ2);
|
||||
if (*pNibbles > NIBBLES_PER_TRACK_WOZ2)
|
||||
return ReadEmptyTrack(pTrackImageBuffer, pNibbles, pBitCount); // TODO: Enlarge track buffer, but for now just return an empty track
|
||||
|
||||
memcpy(pTrackImageBuffer, &pImageInfo->pImageBuffer[pTRK->startBlock*512], *pNibbles);
|
||||
}
|
||||
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles)
|
||||
{
|
||||
// TODO
|
||||
_ASSERT(0);
|
||||
}
|
||||
|
||||
// TODO: Uncomment and fix-up if we want to allow .woz image creation (eg. for INIT or FORMAT)
|
||||
// virtual bool AllowCreate(void) { return true; }
|
||||
// virtual UINT GetImageSizeForCreate(void) { return 0; }//TODO
|
||||
|
||||
virtual eImageType GetType(void) { return eImageWOZ2; }
|
||||
virtual const char* GetCreateExtensions(void) { return ".woz"; }
|
||||
virtual const char* GetRejectExtensions(void) { return ".do;.dsk;.nib;.iie;.po;.prg"; }
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -1048,6 +1205,8 @@ eDetectResult CMacBinaryHelper::DetectHdr(LPBYTE& pImage, DWORD& dwImageSize, DW
|
|||
return eMismatch;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
eDetectResult C2IMGHelper::DetectHdr(LPBYTE& pImage, DWORD& dwImageSize, DWORD& dwOffset)
|
||||
{
|
||||
Header2IMG* pHdr = (Header2IMG*) pImage;
|
||||
|
@ -1099,7 +1258,7 @@ eDetectResult C2IMGHelper::DetectHdr(LPBYTE& pImage, DWORD& dwImageSize, DWORD&
|
|||
break;
|
||||
case e2IMGFormatNIBData:
|
||||
{
|
||||
if (pHdr->DiskDataLength != TRACKS_STANDARD*NIBBLES_PER_TRACK)
|
||||
if (pHdr->DiskDataLength != TRACKS_STANDARD*NIBBLES_PER_TRACK_NIB)
|
||||
return eMismatch;
|
||||
}
|
||||
break;
|
||||
|
@ -1126,11 +1285,59 @@ bool C2IMGHelper::IsLocked(void)
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Pre: already matched the WOZ header
|
||||
eDetectResult CWOZHelper::ProcessChunks(const LPBYTE pImage, const DWORD dwImageSize, DWORD& dwOffset, BYTE*& pTrackMap)
|
||||
{
|
||||
UINT32* pImage32 = (uint32_t*) (pImage + sizeof(WOZHeader));
|
||||
UINT32 imageSizeRemaining = dwImageSize - sizeof(WOZHeader);
|
||||
|
||||
while(imageSizeRemaining > 8)
|
||||
{
|
||||
UINT32 chunkId = *pImage32++;
|
||||
UINT32 chunkSize = *pImage32++;
|
||||
imageSizeRemaining -= 8;
|
||||
|
||||
switch(chunkId)
|
||||
{
|
||||
case INFO_CHUNK_ID:
|
||||
m_pInfo = (InfoChunkv2*)(pImage32-2);
|
||||
if (m_pInfo->v1.version > InfoChunk::maxSupportedVersion)
|
||||
return eMismatch;
|
||||
if (m_pInfo->v1.diskType != InfoChunk::diskType5_25)
|
||||
return eMismatch;
|
||||
break;
|
||||
case TMAP_CHUNK_ID:
|
||||
pTrackMap = (uint8_t*)pImage32;
|
||||
break;
|
||||
case TRKS_CHUNK_ID:
|
||||
dwOffset = dwImageSize - imageSizeRemaining; // offset into image of track data
|
||||
break;
|
||||
case WRIT_CHUNK_ID: // WOZ v2 (optional)
|
||||
break;
|
||||
case META_CHUNK_ID: // (optional)
|
||||
break;
|
||||
default: // no idea what this chunk is, so skip it
|
||||
_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
|
||||
pImage32 = (UINT32*) ((BYTE*)pImage32 + chunkSize);
|
||||
imageSizeRemaining -= chunkSize;
|
||||
_ASSERT(imageSizeRemaining >= 0);
|
||||
if (imageSizeRemaining < 0)
|
||||
return eMismatch;
|
||||
}
|
||||
|
||||
return eMatch;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// NB. Of the 6 cases (floppy/harddisk x gzip/zip/normal) only harddisk-normal isn't read entirely to memory
|
||||
// - harddisk-normal-create also doesn't create a max size image-buffer
|
||||
|
||||
// DETERMINE THE FILE'S EXTENSION AND CONVERT IT TO LOWERCASE
|
||||
void GetCharLowerExt(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSize)
|
||||
void CImageHelperBase::GetCharLowerExt(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSize)
|
||||
{
|
||||
LPCTSTR pImageFileExt = pszImageFilename;
|
||||
|
||||
|
@ -1146,7 +1353,7 @@ void GetCharLowerExt(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSiz
|
|||
CharLowerBuff(pszExt, _tcslen(pszExt));
|
||||
}
|
||||
|
||||
void GetCharLowerExt2(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSize)
|
||||
void CImageHelperBase::GetCharLowerExt2(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSize)
|
||||
{
|
||||
TCHAR szFilename[MAX_PATH];
|
||||
_tcsncpy(szFilename, pszImageFilename, MAX_PATH);
|
||||
|
@ -1187,7 +1394,7 @@ ImageError_e CImageHelperBase::CheckGZipFile(LPCTSTR pszImageFilename, ImageInfo
|
|||
|
||||
DWORD dwSize = nLen;
|
||||
DWORD dwOffset = 0;
|
||||
CImageBase* pImageType = Detect(pImageInfo->pImageBuffer, dwSize, szExt, dwOffset, &pImageInfo->bWriteProtected);
|
||||
CImageBase* pImageType = Detect(pImageInfo->pImageBuffer, dwSize, szExt, dwOffset, pImageInfo->bWriteProtected, pImageInfo->pTrackMap, pImageInfo->optimalBitTiming);
|
||||
|
||||
if (!pImageType)
|
||||
return eIMAGE_ERROR_UNSUPPORTED;
|
||||
|
@ -1196,11 +1403,7 @@ ImageError_e CImageHelperBase::CheckGZipFile(LPCTSTR pszImageFilename, ImageInfo
|
|||
if (Type == eImageAPL || Type == eImageIIE || Type == eImagePRG)
|
||||
return eIMAGE_ERROR_UNSUPPORTED;
|
||||
|
||||
pImageInfo->FileType = eFileGZip;
|
||||
pImageInfo->uOffset = dwOffset;
|
||||
pImageInfo->pImageType = pImageType;
|
||||
pImageInfo->uImageSize = dwSize;
|
||||
|
||||
SetImageInfo(pImageInfo, eFileGZip, dwOffset, pImageType, dwSize);
|
||||
return eIMAGE_ERROR_NONE;
|
||||
}
|
||||
|
||||
|
@ -1283,7 +1486,7 @@ ImageError_e CImageHelperBase::CheckZipFile(LPCTSTR pszImageFilename, ImageInfo*
|
|||
|
||||
DWORD dwSize = nLen;
|
||||
DWORD dwOffset = 0;
|
||||
CImageBase* pImageType = Detect(pImageInfo->pImageBuffer, dwSize, szExt, dwOffset, &pImageInfo->bWriteProtected);
|
||||
CImageBase* pImageType = Detect(pImageInfo->pImageBuffer, dwSize, szExt, dwOffset, pImageInfo->bWriteProtected, pImageInfo->pTrackMap, pImageInfo->optimalBitTiming);
|
||||
|
||||
if (!pImageType)
|
||||
{
|
||||
|
@ -1300,11 +1503,7 @@ ImageError_e CImageHelperBase::CheckZipFile(LPCTSTR pszImageFilename, ImageInfo*
|
|||
if (global_info.number_entry > 1)
|
||||
pImageInfo->bWriteProtected = 1; // Zip archives with multiple files are read-only (for now)
|
||||
|
||||
pImageInfo->FileType = eFileZip;
|
||||
pImageInfo->uOffset = dwOffset;
|
||||
pImageInfo->pImageType = pImageType;
|
||||
pImageInfo->uImageSize = dwSize;
|
||||
|
||||
SetImageInfo(pImageInfo, eFileZip, dwOffset, pImageType, dwSize);
|
||||
return eIMAGE_ERROR_NONE;
|
||||
}
|
||||
|
||||
|
@ -1384,7 +1583,7 @@ ImageError_e CImageHelperBase::CheckNormalFile(LPCTSTR pszImageFilename, ImageIn
|
|||
return eIMAGE_ERROR_BAD_SIZE;
|
||||
}
|
||||
|
||||
pImageType = Detect(pImageInfo->pImageBuffer, dwSize, szExt, dwOffset, &pImageInfo->bWriteProtected);
|
||||
pImageType = Detect(pImageInfo->pImageBuffer, dwSize, szExt, dwOffset, pImageInfo->bWriteProtected, pImageInfo->pTrackMap, pImageInfo->optimalBitTiming);
|
||||
if (bTempDetectBuffer)
|
||||
{
|
||||
delete [] pImageInfo->pImageBuffer;
|
||||
|
@ -1437,12 +1636,18 @@ ImageError_e CImageHelperBase::CheckNormalFile(LPCTSTR pszImageFilename, ImageIn
|
|||
return eIMAGE_ERROR_UNSUPPORTED;
|
||||
}
|
||||
|
||||
pImageInfo->FileType = eFileNormal;
|
||||
SetImageInfo(pImageInfo, eFileNormal, dwOffset, pImageType, dwSize);
|
||||
return eIMAGE_ERROR_NONE;
|
||||
}
|
||||
|
||||
//-------------------------------------
|
||||
|
||||
void CImageHelperBase::SetImageInfo(ImageInfo* pImageInfo, FileType_e eFileGZip, DWORD dwOffset, CImageBase* pImageType, DWORD dwSize)
|
||||
{
|
||||
pImageInfo->FileType = eFileGZip;
|
||||
pImageInfo->uOffset = dwOffset;
|
||||
pImageInfo->pImageType = pImageType;
|
||||
pImageInfo->uImageSize = dwSize;
|
||||
|
||||
return eIMAGE_ERROR_NONE;
|
||||
}
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -1517,54 +1722,68 @@ CDiskImageHelper::CDiskImageHelper(void) :
|
|||
m_vecImageTypes.push_back( new CIIeImage );
|
||||
m_vecImageTypes.push_back( new CAplImage );
|
||||
m_vecImageTypes.push_back( new CPrgImage );
|
||||
m_vecImageTypes.push_back( new CWOZ1Image );
|
||||
m_vecImageTypes.push_back( new CWOZ2Image );
|
||||
}
|
||||
|
||||
CImageBase* CDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool* pWriteProtected_)
|
||||
CImageBase* CDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool& writeProtected, BYTE*& pTrackMap, BYTE& optimalBitTiming)
|
||||
{
|
||||
dwOffset = 0;
|
||||
m_MacBinaryHelper.DetectHdr(pImage, dwSize, dwOffset);
|
||||
m_Result2IMG = m_2IMGHelper.DetectHdr(pImage, dwSize, dwOffset);
|
||||
|
||||
// CALL THE DETECTION FUNCTIONS IN ORDER, LOOKING FOR A MATCH
|
||||
eImageType ImageType = eImageUNKNOWN;
|
||||
eImageType PossibleType = eImageUNKNOWN;
|
||||
eImageType imageType = eImageUNKNOWN;
|
||||
eImageType possibleType = eImageUNKNOWN;
|
||||
|
||||
if (m_Result2IMG == eMatch)
|
||||
{
|
||||
if (m_2IMGHelper.IsImageFormatDOS33())
|
||||
ImageType = eImageDO;
|
||||
imageType = eImageDO;
|
||||
else if (m_2IMGHelper.IsImageFormatProDOS())
|
||||
ImageType = eImagePO;
|
||||
imageType = eImagePO;
|
||||
|
||||
if (ImageType != eImageUNKNOWN)
|
||||
if (imageType != eImageUNKNOWN)
|
||||
{
|
||||
CImageBase* pImageType = GetImage(ImageType);
|
||||
CImageBase* pImageType = GetImage(imageType);
|
||||
if (!pImageType || !pImageType->IsValidImageSize(dwSize))
|
||||
ImageType = eImageUNKNOWN;
|
||||
imageType = eImageUNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
if (ImageType == eImageUNKNOWN)
|
||||
if (imageType == eImageUNKNOWN)
|
||||
{
|
||||
for (UINT uLoop=0; uLoop < GetNumImages() && ImageType == eImageUNKNOWN; uLoop++)
|
||||
for (UINT uLoop=0; uLoop < GetNumImages() && imageType == eImageUNKNOWN; uLoop++)
|
||||
{
|
||||
if (*pszExt && _tcsstr(GetImage(uLoop)->GetRejectExtensions(), pszExt))
|
||||
continue;
|
||||
|
||||
eDetectResult Result = GetImage(uLoop)->Detect(pImage, dwSize, pszExt);
|
||||
if (Result == eMatch)
|
||||
ImageType = GetImage(uLoop)->GetType();
|
||||
else if ((Result == ePossibleMatch) && (PossibleType == eImageUNKNOWN))
|
||||
PossibleType = GetImage(uLoop)->GetType();
|
||||
imageType = GetImage(uLoop)->GetType();
|
||||
else if ((Result == ePossibleMatch) && (possibleType == eImageUNKNOWN))
|
||||
possibleType = GetImage(uLoop)->GetType();
|
||||
}
|
||||
}
|
||||
|
||||
if (ImageType == eImageUNKNOWN)
|
||||
ImageType = PossibleType;
|
||||
if (imageType == eImageUNKNOWN)
|
||||
imageType = possibleType;
|
||||
|
||||
CImageBase* pImageType = GetImage(ImageType);
|
||||
CImageBase* pImageType = GetImage(imageType);
|
||||
if (!pImageType)
|
||||
return NULL;
|
||||
|
||||
if (pImageType)
|
||||
if (imageType == eImageWOZ1 || imageType == eImageWOZ2)
|
||||
{
|
||||
if (m_WOZHelper.ProcessChunks(pImage, dwSize, dwOffset, pTrackMap) != eMatch)
|
||||
return NULL;
|
||||
|
||||
// if (m_WOZHelper.IsWriteProtected() && !writeProtected) // Force write-protected until writing is supported
|
||||
writeProtected = true;
|
||||
|
||||
optimalBitTiming = m_WOZHelper.GetOptimalBitTiming();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pImageType->AllowRW())
|
||||
{
|
||||
|
@ -1578,8 +1797,8 @@ CImageBase* CDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* p
|
|||
{
|
||||
pImageType->SetVolumeNumber( m_2IMGHelper.GetVolumeNumber() );
|
||||
|
||||
if (m_2IMGHelper.IsLocked() && !*pWriteProtected_)
|
||||
*pWriteProtected_ = 1;
|
||||
if (m_2IMGHelper.IsLocked() && !writeProtected)
|
||||
writeProtected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1634,7 +1853,7 @@ CHardDiskImageHelper::CHardDiskImageHelper(void) :
|
|||
m_vecImageTypes.push_back( new CHDVImage );
|
||||
}
|
||||
|
||||
CImageBase* CHardDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool* pWriteProtected_)
|
||||
CImageBase* CHardDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool& writeProtected, BYTE*& pTrackMap, BYTE& optimalBitTiming)
|
||||
{
|
||||
dwOffset = 0;
|
||||
m_Result2IMG = m_2IMGHelper.DetectHdr(pImage, dwSize, dwOffset);
|
||||
|
@ -1659,11 +1878,14 @@ CImageBase* CHardDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHA
|
|||
{
|
||||
if (m_Result2IMG == eMatch)
|
||||
{
|
||||
if (m_2IMGHelper.IsLocked() && !*pWriteProtected_)
|
||||
*pWriteProtected_ = 1;
|
||||
if (m_2IMGHelper.IsLocked() && !writeProtected)
|
||||
writeProtected = true;
|
||||
}
|
||||
}
|
||||
|
||||
pTrackMap = 0; // TODO: WOZ
|
||||
optimalBitTiming = 0; // TODO: WOZ
|
||||
|
||||
return pImageType;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#define ZIP_SUFFIX_LEN (sizeof(ZIP_SUFFIX)-1)
|
||||
|
||||
|
||||
enum eImageType {eImageUNKNOWN, eImageDO, eImagePO, eImageNIB1, eImageNIB2, eImageHDV, eImageIIE, eImageAPL, eImagePRG};
|
||||
enum eImageType {eImageUNKNOWN, eImageDO, eImagePO, eImageNIB1, eImageNIB2, eImageHDV, eImageIIE, eImageAPL, eImagePRG, eImageWOZ1, eImageWOZ2};
|
||||
enum eDetectResult {eMismatch, ePossibleMatch, eMatch};
|
||||
|
||||
class CImageBase;
|
||||
|
@ -35,6 +35,8 @@ struct ImageInfo
|
|||
BYTE ValidTrack[TRACKS_MAX];
|
||||
UINT uNumTracks;
|
||||
BYTE* pImageBuffer;
|
||||
BYTE* pTrackMap; // WOZ only
|
||||
BYTE optimalBitTiming; // WOZ only
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -54,9 +56,9 @@ public:
|
|||
|
||||
virtual bool Boot(ImageInfo* pImageInfo) { return false; }
|
||||
virtual eDetectResult Detect(const LPBYTE pImage, const DWORD dwImageSize, const TCHAR* pszExt) = 0;
|
||||
virtual void Read(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImageBuffer, int* pNibbles, bool enhanceDisk) { }
|
||||
virtual void Read(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int* pNibbles, UINT* pBitCount, bool enhanceDisk) { }
|
||||
virtual bool Read(ImageInfo* pImageInfo, UINT nBlock, LPBYTE pBlockBuffer) { return false; }
|
||||
virtual void Write(ImageInfo* pImageInfo, int nTrack, int nQuarterTrack, LPBYTE pTrackImage, int nNibbles) { }
|
||||
virtual void Write(ImageInfo* pImageInfo, const float phase, LPBYTE pTrackImageBuffer, int nNibbles) { }
|
||||
virtual bool Write(ImageInfo* pImageInfo, UINT nBlock, LPBYTE pBlockBuffer) { return false; }
|
||||
|
||||
virtual bool AllowBoot(void) { return false; } // Only: APL and PRG
|
||||
|
@ -71,6 +73,11 @@ public:
|
|||
void SetVolumeNumber(const BYTE uVolumeNumber) { m_uVolumeNumber = uVolumeNumber; }
|
||||
bool IsValidImageSize(const DWORD uImageSize);
|
||||
|
||||
// To accurately convert a half phase (quarter track) back to a track (round half tracks down), use: ceil(phase)/2, eg:
|
||||
// . phase=4,+1 half phase = phase 4.5 => ceil(4.5)/2 = track 2 (OK)
|
||||
// . phase=4,-1 half phase = phase 3.5 => ceil(3.5)/2 = track 2 (OK)
|
||||
UINT PhaseToTrack(const float phase) { return ((UINT)ceil(phase)) >> 1; }
|
||||
|
||||
enum SectorOrder_e {eProDOSOrder, eDOSOrder, eSIMSYSTEMOrder, NUM_SECTOR_ORDERS};
|
||||
|
||||
protected:
|
||||
|
@ -122,7 +129,7 @@ private:
|
|||
// http://apple2.org.za/gswv/a2zine/Docs/DiskImage_2MG_Info.txt
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1) // Ensure Header2IMG is packed
|
||||
#pragma pack(1) // Ensure Header2IMG & WOZ structs are packed
|
||||
|
||||
class C2IMGHelper : public CHdrHelper
|
||||
{
|
||||
|
@ -181,6 +188,98 @@ private:
|
|||
bool m_bIsFloppy;
|
||||
};
|
||||
|
||||
class CWOZHelper : public CHdrHelper
|
||||
{
|
||||
public:
|
||||
CWOZHelper() :
|
||||
m_pInfo(NULL)
|
||||
{}
|
||||
virtual ~CWOZHelper(void) {}
|
||||
virtual eDetectResult DetectHdr(LPBYTE& pImage, DWORD& dwImageSize, DWORD& dwOffset) { _ASSERT(0); return eMismatch; }
|
||||
virtual UINT GetMaxHdrSize(void) { return sizeof(WOZHeader); }
|
||||
eDetectResult ProcessChunks(const LPBYTE pImage, const DWORD dwImageSize, DWORD& dwOffset, BYTE*& pTrackMap);
|
||||
bool IsWriteProtected(void) { return m_pInfo->v1.writeProtected == 1; }
|
||||
BYTE GetOptimalBitTiming(void) { return (m_pInfo->v1.version == 1) ? CWOZHelper::InfoChunkv2::optimalBitTiming5_25 : m_pInfo->optimalBitTiming; }
|
||||
|
||||
static const UINT32 ID1_WOZ1 = '1ZOW'; // 'WOZ1'
|
||||
static const UINT32 ID1_WOZ2 = '2ZOW'; // 'WOZ2'
|
||||
static const UINT32 ID2 = 0x0A0D0AFF;
|
||||
|
||||
struct WOZHeader
|
||||
{
|
||||
UINT32 id1; // 'WOZ1' or 'WOZ2'
|
||||
UINT32 id2;
|
||||
UINT32 crc32;
|
||||
};
|
||||
|
||||
static const UINT32 MAX_TRACKS_5_25 = 40;
|
||||
static const UINT32 WOZ1_TRACK_SIZE = 6656; // 0x1A00
|
||||
static const UINT32 WOZ1_TRK_OFFSET = 6646;
|
||||
static const UINT32 EMPTY_TRACK_SIZE = 6400;
|
||||
|
||||
struct TRKv1
|
||||
{
|
||||
UINT16 bytesUsed;
|
||||
UINT16 bitCount;
|
||||
UINT16 splicePoint;
|
||||
BYTE spliceNibble;
|
||||
BYTE spliceBitCount;
|
||||
UINT16 reserved;
|
||||
};
|
||||
|
||||
struct TRKv2
|
||||
{
|
||||
UINT16 startBlock; // relative to start of file
|
||||
UINT16 blockCount; // number of blocks for this BITS data
|
||||
UINT32 bitCount;
|
||||
};
|
||||
|
||||
private:
|
||||
static const UINT32 INFO_CHUNK_ID = 'OFNI'; // 'INFO'
|
||||
static const UINT32 TMAP_CHUNK_ID = 'PAMT'; // 'TMAP'
|
||||
static const UINT32 TRKS_CHUNK_ID = 'SKRT'; // 'TRKS'
|
||||
static const UINT32 WRIT_CHUNK_ID = 'TIRW'; // 'WRIT' - WOZv2
|
||||
static const UINT32 META_CHUNK_ID = 'ATEM'; // 'META'
|
||||
|
||||
struct InfoChunk
|
||||
{
|
||||
UINT32 id;
|
||||
UINT32 size;
|
||||
BYTE version;
|
||||
BYTE diskType;
|
||||
BYTE writeProtected; // 1 = Floppy is write protected
|
||||
BYTE synchronized; // 1 = Cross track sync was used during imaging
|
||||
BYTE cleaned; // 1 = MC3470 fake bits have been removed
|
||||
BYTE creator[32]; // Name of software that created the WOZ file.
|
||||
// String in UTF-8. No BOM. Padded to 32 bytes
|
||||
// using space character (0x20).
|
||||
|
||||
static const BYTE maxSupportedVersion = 2;
|
||||
static const BYTE diskType5_25 = 1;
|
||||
static const BYTE diskType3_5 = 2;
|
||||
};
|
||||
|
||||
struct InfoChunkv2
|
||||
{
|
||||
InfoChunk v1;
|
||||
BYTE diskSides; // 5.25 will always be 1; 3.5 can be 1 or 2
|
||||
BYTE bootSectorFormat;
|
||||
BYTE optimalBitTiming; // in 125ns increments (And a standard bit rate for 5.25 disk would be 32 (4us))
|
||||
UINT16 compatibleHardware;
|
||||
UINT16 requiredRAM; // in K (1024 bytes)
|
||||
UINT16 largestTrack; // in blocks (512 bytes)
|
||||
|
||||
static const BYTE bootUnknown = 0;
|
||||
static const BYTE bootSector16 = 1;
|
||||
static const BYTE bootSector13 = 2;
|
||||
static const BYTE bootSectorBoth = 3;
|
||||
|
||||
static const BYTE optimalBitTiming5_25 = 32;
|
||||
};
|
||||
|
||||
InfoChunkv2* m_pInfo;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -190,7 +289,8 @@ class CImageHelperBase
|
|||
public:
|
||||
CImageHelperBase(const bool bIsFloppy) :
|
||||
m_2IMGHelper(bIsFloppy),
|
||||
m_Result2IMG(eMismatch)
|
||||
m_Result2IMG(eMismatch),
|
||||
m_WOZHelper()
|
||||
{
|
||||
}
|
||||
virtual ~CImageHelperBase(void)
|
||||
|
@ -202,7 +302,7 @@ public:
|
|||
ImageError_e Open(LPCTSTR pszImageFilename, ImageInfo* pImageInfo, const bool bCreateIfNecessary, std::string& strFilenameInZip);
|
||||
void Close(ImageInfo* pImageInfo, const bool bDeleteFile);
|
||||
|
||||
virtual CImageBase* Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool* pWriteProtected_) = 0;
|
||||
virtual CImageBase* Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool& writeProtected, BYTE*& pTrackMap, BYTE& optimalBitTiming) = 0;
|
||||
virtual CImageBase* GetImageForCreation(const TCHAR* pszExt, DWORD* pCreateImageSize) = 0;
|
||||
virtual UINT GetMaxImageSize(void) = 0;
|
||||
virtual UINT GetMinDetectSize(const UINT uImageSize, bool* pTempDetectBuffer) = 0;
|
||||
|
@ -211,6 +311,9 @@ protected:
|
|||
ImageError_e CheckGZipFile(LPCTSTR pszImageFilename, ImageInfo* pImageInfo);
|
||||
ImageError_e CheckZipFile(LPCTSTR pszImageFilename, ImageInfo* pImageInfo, std::string& strFilenameInZip);
|
||||
ImageError_e CheckNormalFile(LPCTSTR pszImageFilename, ImageInfo* pImageInfo, const bool bCreateIfNecessary);
|
||||
void GetCharLowerExt(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSize);
|
||||
void GetCharLowerExt2(TCHAR* pszExt, LPCTSTR pszImageFilename, const UINT uExtSize);
|
||||
void SetImageInfo(ImageInfo* pImageInfo, FileType_e eFileGZip, DWORD dwOffset, CImageBase* pImageType, DWORD dwSize);
|
||||
|
||||
UINT GetNumImages(void) { return m_vecImageTypes.size(); };
|
||||
CImageBase* GetImage(UINT uIndex) { _ASSERT(uIndex<GetNumImages()); return m_vecImageTypes[uIndex]; }
|
||||
|
@ -233,6 +336,7 @@ protected:
|
|||
|
||||
C2IMGHelper m_2IMGHelper;
|
||||
eDetectResult m_Result2IMG;
|
||||
CWOZHelper m_WOZHelper;
|
||||
};
|
||||
|
||||
//-------------------------------------
|
||||
|
@ -243,7 +347,7 @@ public:
|
|||
CDiskImageHelper(void);
|
||||
virtual ~CDiskImageHelper(void) {}
|
||||
|
||||
virtual CImageBase* Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool* pWriteProtected_);
|
||||
virtual CImageBase* Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool& writeProtected, BYTE*& pTrackMap, BYTE& optimalBitTiming);
|
||||
virtual CImageBase* GetImageForCreation(const TCHAR* pszExt, DWORD* pCreateImageSize);
|
||||
virtual UINT GetMaxImageSize(void);
|
||||
virtual UINT GetMinDetectSize(const UINT uImageSize, bool* pTempDetectBuffer);
|
||||
|
@ -269,7 +373,7 @@ public:
|
|||
CHardDiskImageHelper(void);
|
||||
virtual ~CHardDiskImageHelper(void) {}
|
||||
|
||||
virtual CImageBase* Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool* pWriteProtected_);
|
||||
virtual CImageBase* Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* pszExt, DWORD& dwOffset, bool& writeProtected, BYTE*& pTrackMap, BYTE& optimalBitTiming);
|
||||
virtual CImageBase* GetImageForCreation(const TCHAR* pszExt, DWORD* pCreateImageSize);
|
||||
virtual UINT GetMaxImageSize(void);
|
||||
virtual UINT GetMinDetectSize(const UINT uImageSize, bool* pTempDetectBuffer);
|
||||
|
|
|
@ -574,7 +574,7 @@ void KeybLoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT version)
|
|||
|
||||
keycode = (BYTE) yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTKEY);
|
||||
|
||||
if (version == 2)
|
||||
if (version >= 2)
|
||||
keywaiting = (BOOL) yamlLoadHelper.LoadBool(SS_YAML_KEY_KEYWAITING);
|
||||
|
||||
yamlLoadHelper.PopMap();
|
||||
|
|
|
@ -1745,6 +1745,8 @@ void MemReset()
|
|||
g_eExpansionRomType = eExpRomNull;
|
||||
g_uPeripheralRomSlot = 0;
|
||||
|
||||
ZeroMemory(memdirty, 0x100);
|
||||
|
||||
//
|
||||
|
||||
int iByte;
|
||||
|
@ -2202,7 +2204,7 @@ bool MemLoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT unitVersion)
|
|||
SetLastRamWrite( yamlLoadHelper.LoadUint(SS_YAML_KEY_LASTRAMWRITE) ? TRUE : FALSE ); // NB. This is set later for II,II+ by slot-0 LC or Saturn
|
||||
}
|
||||
|
||||
if (unitVersion == 3)
|
||||
if (unitVersion >= 3)
|
||||
{
|
||||
for (UINT i=0; i<kNumAnnunciators; i++)
|
||||
{
|
||||
|
|
|
@ -205,7 +205,8 @@ static HANDLE g_hSSI263Event[g_nNumEvents] = {NULL}; // 1: Phoneme finished play
|
|||
static DWORD g_dwMaxPhonemeLen = 0;
|
||||
|
||||
// When 6522 IRQ is *not* active use 60Hz update freq for MB voices
|
||||
static const double g_f6522TimerPeriod_NoIRQ = CLK_6502 / 60.0; // Constant whatever the CLK is set to
|
||||
// NB. Not important if NTSC or PAL - just need to pick a sensible period
|
||||
static const double g_f6522TimerPeriod_NoIRQ = CLK_6502_NTSC / 60.0; // Constant whatever the CLK is set to
|
||||
|
||||
static bool g_bCritSectionValid = false; // Deleting CritialSection when not valid causes crash on Win98
|
||||
static CRITICAL_SECTION g_CriticalSection; // To guard 6522's IFR
|
||||
|
@ -1627,7 +1628,7 @@ static BYTE __stdcall PhasorIO(WORD PC, WORD nAddr, BYTE bWrite, BYTE nValue, UL
|
|||
|
||||
g_PhasorClockScaleFactor = (nAddr & 4) ? 2 : 1;
|
||||
|
||||
AY8910_InitClock((int)(CLK_6502 * g_PhasorClockScaleFactor));
|
||||
AY8910_InitClock((int)(Get6502BaseClock() * g_PhasorClockScaleFactor));
|
||||
|
||||
return MemReadFloatingBus(nExecutedCycles);
|
||||
}
|
||||
|
@ -2189,7 +2190,7 @@ bool MB_LoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT slot, UINT version)
|
|||
pMB++;
|
||||
}
|
||||
|
||||
AY8910_InitClock((int)CLK_6502);
|
||||
AY8910_InitClock((int)Get6502BaseClock());
|
||||
|
||||
// NB. g_SoundcardType & g_bPhasorEnable setup in MB_InitializeIO() -> MB_SetSoundcardType()
|
||||
|
||||
|
@ -2312,7 +2313,7 @@ bool Phasor_LoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT slot, UINT version
|
|||
pMB++;
|
||||
}
|
||||
|
||||
AY8910_InitClock((int)(CLK_6502 * g_PhasorClockScaleFactor));
|
||||
AY8910_InitClock((int)(Get6502BaseClock() * g_PhasorClockScaleFactor));
|
||||
|
||||
// NB. g_SoundcardType & g_bPhasorEnable setup in MB_InitializeIO() -> MB_SetSoundcardType()
|
||||
|
||||
|
|
142
source/NTSC.cpp
142
source/NTSC.cpp
|
@ -134,7 +134,13 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
// "There are exactly 17030 (65 x 262) 6502 cycles in every television scan of an American Apple."
|
||||
#define VIDEO_SCANNER_MAX_HORZ 65 // TODO: use Video.cpp: kHClocks
|
||||
#define VIDEO_SCANNER_MAX_VERT 262 // TODO: use Video.cpp: kNTSCScanLines
|
||||
static const int VIDEO_SCANNER_6502_CYCLES = VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_MAX_VERT;
|
||||
static const UINT VIDEO_SCANNER_6502_CYCLES = VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_MAX_VERT;
|
||||
|
||||
#define VIDEO_SCANNER_MAX_VERT_PAL 312
|
||||
static const UINT VIDEO_SCANNER_6502_CYCLES_PAL = VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_MAX_VERT_PAL;
|
||||
|
||||
static UINT g_videoScannerMaxVert = VIDEO_SCANNER_MAX_VERT; // default to NTSC
|
||||
static UINT g_videoScanner6502Cycles = VIDEO_SCANNER_6502_CYCLES; // default to NTSC
|
||||
|
||||
#define VIDEO_SCANNER_HORZ_COLORBURST_BEG 12
|
||||
#define VIDEO_SCANNER_HORZ_COLORBURST_END 16
|
||||
|
@ -212,9 +218,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
|
||||
// Tables
|
||||
// Video scanner tables are now runtime-generated using UTAIIe logic
|
||||
static unsigned short g_aClockVertOffsetsHGR[VIDEO_SCANNER_MAX_VERT];
|
||||
static unsigned short g_aClockVertOffsetsTXT[33];
|
||||
static unsigned short APPLE_IIP_HORZ_CLOCK_OFFSET[5][VIDEO_SCANNER_MAX_HORZ];
|
||||
static unsigned short g_aClockVertOffsetsHGR[VIDEO_SCANNER_MAX_VERT_PAL];
|
||||
static unsigned short g_aClockVertOffsetsTXT[VIDEO_SCANNER_MAX_VERT_PAL/8];
|
||||
static unsigned short APPLE_IIP_HORZ_CLOCK_OFFSET[5][VIDEO_SCANNER_MAX_HORZ]; // 5 = CEILING(312/64) = CEILING(262/64)
|
||||
static unsigned short APPLE_IIE_HORZ_CLOCK_OFFSET[5][VIDEO_SCANNER_MAX_HORZ];
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
@ -243,7 +249,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
0x0B80,0x0F80,0x1380,0x1780,0x1B80,0x1F80
|
||||
};
|
||||
|
||||
static unsigned short g_kClockVertOffsetsTXT[33] =
|
||||
static unsigned short g_kClockVertOffsetsTXT[33] = // 33 = CEILING(262/8)
|
||||
{
|
||||
0x0000,0x0080,0x0100,0x0180,0x0200,0x0280,0x0300,0x0380,
|
||||
0x0000,0x0080,0x0100,0x0180,0x0200,0x0280,0x0300,0x0380,
|
||||
|
@ -618,7 +624,7 @@ inline void updateFlashRate() // TODO: Flash rate should be constant (regardless
|
|||
inline void updateFramebufferColorTVSingleScanline( uint16_t signal, bgra_t *pTable )
|
||||
{
|
||||
/* */ uint32_t *pLine0Address = getScanlineThis0Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlinePrev1Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlinePrev1Address(); // NB. TV mode uses previous 2 lines
|
||||
/* */ uint32_t *pLine2Address = getScanlinePrev2Address();
|
||||
|
||||
const uint32_t color0 = getScanlineColor( signal, pTable );
|
||||
|
@ -644,7 +650,7 @@ inline void updateFramebufferColorTVSingleScanline( uint16_t signal, bgra_t *pTa
|
|||
inline void updateFramebufferColorTVDoubleScanline( uint16_t signal, bgra_t *pTable )
|
||||
{
|
||||
/* */ uint32_t *pLine0Address = getScanlineThis0Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlinePrev1Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlinePrev1Address(); // NB. TV mode uses previous 2 lines
|
||||
const uint32_t *pLine2Address = getScanlinePrev2Address();
|
||||
|
||||
const uint32_t color0 = getScanlineColor( signal, pTable );
|
||||
|
@ -660,7 +666,7 @@ inline void updateFramebufferColorTVDoubleScanline( uint16_t signal, bgra_t *pTa
|
|||
inline void updateFramebufferMonitorSingleScanline( uint16_t signal, bgra_t *pTable )
|
||||
{
|
||||
/* */ uint32_t *pLine0Address = getScanlineThis0Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlineNext1Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlineNext1Address(); // NB. Monitor mode just uses next line
|
||||
const uint32_t color0 = getScanlineColor( signal, pTable );
|
||||
const uint32_t color1 = 0; // Remove blending for consistent DHGR MIX mode (GH#631)
|
||||
// const uint32_t color1 = ((color0 & 0x00fcfcfc) >> 2); // 25% Blend (original)
|
||||
|
@ -674,7 +680,7 @@ inline void updateFramebufferMonitorSingleScanline( uint16_t signal, bgra_t *pTa
|
|||
inline void updateFramebufferMonitorDoubleScanline( uint16_t signal, bgra_t *pTable )
|
||||
{
|
||||
/* */ uint32_t *pLine0Address = getScanlineThis0Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlineNext1Address();
|
||||
/* */ uint32_t *pLine1Address = getScanlineNext1Address(); // NB. Monitor mode just uses next line
|
||||
const uint32_t color0 = getScanlineColor( signal, pTable );
|
||||
|
||||
/* */ *pLine1Address = color0;
|
||||
|
@ -768,7 +774,7 @@ inline void updateVideoScannerHorzEOLSimple()
|
|||
{
|
||||
g_nVideoClockHorz = 0;
|
||||
|
||||
if (++g_nVideoClockVert == VIDEO_SCANNER_MAX_VERT)
|
||||
if (++g_nVideoClockVert == g_videoScannerMaxVert)
|
||||
{
|
||||
g_nVideoClockVert = 0;
|
||||
|
||||
|
@ -807,7 +813,7 @@ inline void updateVideoScannerHorzEOL()
|
|||
|
||||
g_nVideoClockHorz = 0;
|
||||
|
||||
if (++g_nVideoClockVert == VIDEO_SCANNER_MAX_VERT)
|
||||
if (++g_nVideoClockVert == g_videoScannerMaxVert)
|
||||
{
|
||||
g_nVideoClockVert = 0;
|
||||
|
||||
|
@ -851,7 +857,7 @@ inline void updateVideoScannerHorzEOL_14M()
|
|||
|
||||
g_nVideoClockHorz = 0;
|
||||
|
||||
if (++g_nVideoClockVert == VIDEO_SCANNER_MAX_VERT)
|
||||
if (++g_nVideoClockVert == g_videoScannerMaxVert)
|
||||
{
|
||||
g_nVideoClockVert = 0;
|
||||
|
||||
|
@ -897,7 +903,7 @@ inline void updateVideoScannerHorzEOL()
|
|||
|
||||
g_nVideoClockHorz = 0;
|
||||
|
||||
if (++g_nVideoClockVert == VIDEO_SCANNER_MAX_VERT)
|
||||
if (++g_nVideoClockVert == g_videoScannerMaxVert)
|
||||
{
|
||||
g_nVideoClockVert = 0;
|
||||
|
||||
|
@ -1838,8 +1844,8 @@ uint32_t*NTSC_VideoGetChromaTable( bool bHueTypeMonochrome, bool bMonitorTypeCol
|
|||
//===========================================================================
|
||||
void NTSC_VideoClockResync(const DWORD dwCyclesThisFrame)
|
||||
{
|
||||
g_nVideoClockVert = (uint16_t) (dwCyclesThisFrame / VIDEO_SCANNER_MAX_HORZ) % VIDEO_SCANNER_MAX_VERT;
|
||||
g_nVideoClockHorz = (uint16_t) (dwCyclesThisFrame % VIDEO_SCANNER_MAX_HORZ);
|
||||
g_nVideoClockVert = (uint16_t)(dwCyclesThisFrame / VIDEO_SCANNER_MAX_HORZ) % g_videoScannerMaxVert;
|
||||
g_nVideoClockHorz = (uint16_t)(dwCyclesThisFrame % VIDEO_SCANNER_MAX_HORZ);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
@ -1861,7 +1867,7 @@ uint16_t NTSC_VideoGetScannerAddress ( const ULONG uExecutedCycles )
|
|||
g_nVideoClockHorz += VIDEO_SCANNER_MAX_HORZ;
|
||||
g_nVideoClockVert -= 1;
|
||||
if ((SHORT)g_nVideoClockVert < 0)
|
||||
g_nVideoClockVert = VIDEO_SCANNER_MAX_VERT-1;
|
||||
g_nVideoClockVert = g_videoScannerMaxVert-1;
|
||||
}
|
||||
|
||||
uint16_t addr;
|
||||
|
@ -1889,8 +1895,10 @@ void NTSC_SetVideoTextMode( int cols )
|
|||
//===========================================================================
|
||||
void NTSC_SetVideoMode( uint32_t uVideoModeFlags, bool bDelay/*=false*/ )
|
||||
{
|
||||
if (bDelay)
|
||||
if (bDelay && !g_bFullSpeed)
|
||||
{
|
||||
// (GH#670) NB. if g_bFullSpeed then NTSC_VideoUpdateCycles() won't be called on the next 6502 opcode.
|
||||
// - Instead it's called when !g_bFullSpeed (eg. drive motor off), then the stale g_uNewVideoModeFlags will get used for NTSC_SetVideoMode()!
|
||||
g_bDelayVideoMode = true;
|
||||
g_uNewVideoModeFlags = uVideoModeFlags;
|
||||
return;
|
||||
|
@ -1970,6 +1978,15 @@ void NTSC_SetVideoMode( uint32_t uVideoModeFlags, bool bDelay/*=false*/ )
|
|||
}
|
||||
|
||||
//===========================================================================
|
||||
|
||||
// TV modes don't write to the last line, so when switching from another (Monitor) mode there may be stale data left behind
|
||||
void ClearLastLine(void)
|
||||
{
|
||||
uint32_t* p = (uint32_t*)g_pScanLines[VIDEO_SCANNER_Y_DISPLAY * 2 - 1];
|
||||
for (UINT x = 0; x < NTSC_GetFrameBufferBorderlessWidth(); x++)
|
||||
p[x] = 0;
|
||||
}
|
||||
|
||||
void NTSC_SetVideoStyle() // (int v, int s)
|
||||
{
|
||||
int half = IsVideoStyle(VS_HALF_SCANLINES);
|
||||
|
@ -1991,6 +2008,7 @@ void NTSC_SetVideoStyle() // (int v, int s)
|
|||
g_pFuncUpdateBnWPixel = updatePixelBnWColorTVDoubleScanline;
|
||||
g_pFuncUpdateHuePixel = updatePixelHueColorTVDoubleScanline;
|
||||
}
|
||||
ClearLastLine();
|
||||
break;
|
||||
|
||||
case VT_COLOR_MONITOR_NTSC:
|
||||
|
@ -2022,6 +2040,7 @@ void NTSC_SetVideoStyle() // (int v, int s)
|
|||
else {
|
||||
g_pFuncUpdateBnWPixel = g_pFuncUpdateHuePixel = updatePixelBnWColorTVDoubleScanline;
|
||||
}
|
||||
ClearLastLine();
|
||||
break;
|
||||
|
||||
case VT_MONO_AMBER:
|
||||
|
@ -2154,8 +2173,8 @@ void NTSC_VideoInit( uint8_t* pFramebuffer ) // wsVideoInit
|
|||
//===========================================================================
|
||||
void NTSC_VideoReinitialize( DWORD cyclesThisFrame, bool bInitVideoScannerAddress )
|
||||
{
|
||||
_ASSERT(cyclesThisFrame < VIDEO_SCANNER_6502_CYCLES);
|
||||
if (cyclesThisFrame >= VIDEO_SCANNER_6502_CYCLES) cyclesThisFrame = 0; // error
|
||||
_ASSERT(cyclesThisFrame < g_videoScanner6502Cycles);
|
||||
if (cyclesThisFrame >= g_videoScanner6502Cycles) cyclesThisFrame = 0; // error
|
||||
g_nVideoClockVert = (uint16_t) (cyclesThisFrame / VIDEO_SCANNER_MAX_HORZ);
|
||||
g_nVideoClockHorz = cyclesThisFrame % VIDEO_SCANNER_MAX_HORZ;
|
||||
|
||||
|
@ -2193,7 +2212,7 @@ void NTSC_VideoInitChroma()
|
|||
|
||||
//===========================================================================
|
||||
|
||||
// Pre: cyclesLeftToUpdate = [0...VIDEO_SCANNER_6502_CYCLES]
|
||||
// Pre: cyclesLeftToUpdate = [0...g_videoScanner6502Cycles]
|
||||
// . 2-14: After one emulated 6502/65C02 opcode (optionally with IRQ)
|
||||
// . ~1000: After 1ms of Z80 emulation
|
||||
// . 17030: From NTSC_VideoRedrawWholeScreen()
|
||||
|
@ -2208,7 +2227,7 @@ static void VideoUpdateCycles( int cyclesLeftToUpdate )
|
|||
g_pFuncUpdateGraphicsScreen(cycles); // lines [currV...159]
|
||||
cyclesLeftToUpdate -= cycles;
|
||||
|
||||
const int cyclesFromLine160ToLine261 = VIDEO_SCANNER_6502_CYCLES - (VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_Y_MIXED);
|
||||
const int cyclesFromLine160ToLine261 = g_videoScanner6502Cycles - (VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_Y_MIXED);
|
||||
cycles = cyclesLeftToUpdate < cyclesFromLine160ToLine261 ? cyclesLeftToUpdate : cyclesFromLine160ToLine261;
|
||||
g_pFuncUpdateGraphicsScreen(cycles); // lines [160..191..261]
|
||||
cyclesLeftToUpdate -= cycles;
|
||||
|
@ -2217,7 +2236,7 @@ static void VideoUpdateCycles( int cyclesLeftToUpdate )
|
|||
}
|
||||
else
|
||||
{
|
||||
const int cyclesToLine262 = VIDEO_SCANNER_MAX_HORZ * (VIDEO_SCANNER_MAX_VERT - g_nVideoClockVert - 1) + cyclesToEndOfLine;
|
||||
const int cyclesToLine262 = VIDEO_SCANNER_MAX_HORZ * (g_videoScannerMaxVert - g_nVideoClockVert - 1) + cyclesToEndOfLine;
|
||||
int cycles = cyclesLeftToUpdate < cyclesToLine262 ? cyclesLeftToUpdate : cyclesToLine262;
|
||||
g_pFuncUpdateGraphicsScreen(cycles); // lines [currV...261]
|
||||
cyclesLeftToUpdate -= cycles;
|
||||
|
@ -2235,9 +2254,9 @@ static void VideoUpdateCycles( int cyclesLeftToUpdate )
|
|||
}
|
||||
|
||||
//===========================================================================
|
||||
void NTSC_VideoUpdateCycles( long cycles6502 )
|
||||
void NTSC_VideoUpdateCycles( UINT cycles6502 )
|
||||
{
|
||||
_ASSERT(cycles6502 && cycles6502 < VIDEO_SCANNER_6502_CYCLES); // Use NTSC_VideoRedrawWholeScreen() instead
|
||||
_ASSERT(cycles6502 && cycles6502 < g_videoScanner6502Cycles); // Use NTSC_VideoRedrawWholeScreen() instead
|
||||
|
||||
if (g_bDelayVideoMode)
|
||||
{
|
||||
|
@ -2269,7 +2288,7 @@ void NTSC_VideoRedrawWholeScreen( void )
|
|||
g_nVideoClockHorz = 0;
|
||||
updateVideoScannerAddress();
|
||||
|
||||
VideoUpdateCycles(VIDEO_SCANNER_6502_CYCLES);
|
||||
VideoUpdateCycles(g_videoScanner6502Cycles);
|
||||
|
||||
VideoUpdateCycles(horz); // Finally update to get to correct H-pos
|
||||
|
||||
|
@ -2324,19 +2343,37 @@ static void CheckVideoTables( void )
|
|||
CheckVideoTables2(A2TYPE_APPLE2E, VF_TEXT);
|
||||
}
|
||||
|
||||
static bool IsNTSC(void)
|
||||
{
|
||||
return g_videoScannerMaxVert == VIDEO_SCANNER_MAX_VERT;
|
||||
}
|
||||
|
||||
static void GenerateVideoTables( void )
|
||||
{
|
||||
eApple2Type currentApple2Type = GetApple2Type();
|
||||
uint32_t currentVideoMode = g_uVideoMode;
|
||||
int currentHiresPage = g_nHiresPage;
|
||||
int currentTextPage = g_nTextPage;
|
||||
|
||||
g_nHiresPage = g_nTextPage = 1;
|
||||
|
||||
//
|
||||
// g_aClockVertOffsetsHGR[]
|
||||
//
|
||||
|
||||
g_uVideoMode = VF_HIRES;
|
||||
for (UINT i=0, cycle=VIDEO_SCANNER_HORZ_START; i<VIDEO_SCANNER_MAX_VERT; i++, cycle+=VIDEO_SCANNER_MAX_HORZ)
|
||||
{
|
||||
g_aClockVertOffsetsHGR[i] = VideoGetScannerAddress(cycle, VS_PartialAddrV);
|
||||
_ASSERT(g_aClockVertOffsetsHGR[i] == g_kClockVertOffsetsHGR[i]);
|
||||
UINT i = 0, cycle = VIDEO_SCANNER_HORZ_START;
|
||||
for (; i < VIDEO_SCANNER_MAX_VERT; i++, cycle += VIDEO_SCANNER_MAX_HORZ)
|
||||
{
|
||||
g_aClockVertOffsetsHGR[i] = VideoGetScannerAddress(cycle, VS_PartialAddrV);
|
||||
if (IsNTSC()) _ASSERT(g_aClockVertOffsetsHGR[i] == g_kClockVertOffsetsHGR[i]);
|
||||
}
|
||||
if (!IsNTSC())
|
||||
{
|
||||
for (; i < VIDEO_SCANNER_MAX_VERT_PAL; i++, cycle += VIDEO_SCANNER_MAX_HORZ)
|
||||
g_aClockVertOffsetsHGR[i] = VideoGetScannerAddress(cycle, VS_PartialAddrV);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -2344,10 +2381,18 @@ static void GenerateVideoTables( void )
|
|||
//
|
||||
|
||||
g_uVideoMode = VF_TEXT;
|
||||
for (UINT i=0, cycle=VIDEO_SCANNER_HORZ_START; i<(256+8)/8; i++, cycle+=VIDEO_SCANNER_MAX_HORZ*8)
|
||||
{
|
||||
g_aClockVertOffsetsTXT[i] = VideoGetScannerAddress(cycle, VS_PartialAddrV);
|
||||
_ASSERT(g_aClockVertOffsetsTXT[i] == g_kClockVertOffsetsTXT[i]);
|
||||
UINT i = 0, cycle = VIDEO_SCANNER_HORZ_START;
|
||||
for (; i < (256 + 8) / 8; i++, cycle += VIDEO_SCANNER_MAX_HORZ * 8)
|
||||
{
|
||||
g_aClockVertOffsetsTXT[i] = VideoGetScannerAddress(cycle, VS_PartialAddrV);
|
||||
if (IsNTSC()) _ASSERT(g_aClockVertOffsetsTXT[i] == g_kClockVertOffsetsTXT[i]);
|
||||
}
|
||||
if (!IsNTSC())
|
||||
{
|
||||
for (; i < VIDEO_SCANNER_MAX_VERT_PAL / 8; i++, cycle += VIDEO_SCANNER_MAX_HORZ * 8)
|
||||
g_aClockVertOffsetsTXT[i] = VideoGetScannerAddress(cycle, VS_PartialAddrV);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -2361,7 +2406,7 @@ static void GenerateVideoTables( void )
|
|||
for (UINT i=0, cycle=j*64*VIDEO_SCANNER_MAX_HORZ; i<VIDEO_SCANNER_MAX_HORZ; i++, cycle++)
|
||||
{
|
||||
APPLE_IIP_HORZ_CLOCK_OFFSET[j][i] = VideoGetScannerAddress(cycle, VS_PartialAddrH);
|
||||
_ASSERT(APPLE_IIP_HORZ_CLOCK_OFFSET[j][i] == kAPPLE_IIP_HORZ_CLOCK_OFFSET[j][i]);
|
||||
if (IsNTSC()) _ASSERT(APPLE_IIP_HORZ_CLOCK_OFFSET[j][i] == kAPPLE_IIP_HORZ_CLOCK_OFFSET[j][i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2376,7 +2421,7 @@ static void GenerateVideoTables( void )
|
|||
for (UINT i=0, cycle=j*64*VIDEO_SCANNER_MAX_HORZ; i<VIDEO_SCANNER_MAX_HORZ; i++, cycle++)
|
||||
{
|
||||
APPLE_IIE_HORZ_CLOCK_OFFSET[j][i] = VideoGetScannerAddress(cycle, VS_PartialAddrH);
|
||||
_ASSERT(APPLE_IIE_HORZ_CLOCK_OFFSET[j][i] == kAPPLE_IIE_HORZ_CLOCK_OFFSET[j][i]);
|
||||
if (IsNTSC()) _ASSERT(APPLE_IIE_HORZ_CLOCK_OFFSET[j][i] == kAPPLE_IIE_HORZ_CLOCK_OFFSET[j][i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2384,11 +2429,15 @@ static void GenerateVideoTables( void )
|
|||
|
||||
CheckVideoTables();
|
||||
|
||||
VideoResetState();
|
||||
// VideoResetState();
|
||||
|
||||
SetApple2Type(currentApple2Type);
|
||||
g_uVideoMode = currentVideoMode;
|
||||
g_nHiresPage = currentHiresPage;
|
||||
g_nTextPage = currentTextPage;
|
||||
}
|
||||
|
||||
void GenerateBaseColors(baseColors_t pBaseNtscColors)
|
||||
static void GenerateBaseColors(baseColors_t pBaseNtscColors)
|
||||
{
|
||||
for (UINT i=0; i<16; i++)
|
||||
{
|
||||
|
@ -2415,3 +2464,26 @@ void GenerateBaseColors(baseColors_t pBaseNtscColors)
|
|||
(*pBaseNtscColors)[i] = * (bgra_t*) &color;
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
||||
void NTSC_SetRefreshRate(VideoRefreshRate_e rate)
|
||||
{
|
||||
if (rate == VR_50HZ)
|
||||
{
|
||||
g_videoScannerMaxVert = VIDEO_SCANNER_MAX_VERT_PAL;
|
||||
g_videoScanner6502Cycles = VIDEO_SCANNER_6502_CYCLES_PAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_videoScannerMaxVert = VIDEO_SCANNER_MAX_VERT;
|
||||
g_videoScanner6502Cycles = VIDEO_SCANNER_6502_CYCLES;
|
||||
}
|
||||
|
||||
GenerateVideoTables();
|
||||
}
|
||||
|
||||
UINT NTSC_GetCyclesPerFrame(void)
|
||||
{
|
||||
return g_videoScanner6502Cycles;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
extern void NTSC_VideoReinitialize( DWORD cyclesThisFrame, bool bInitVideoScannerAddress );
|
||||
extern void NTSC_VideoInitAppleType();
|
||||
extern void NTSC_VideoInitChroma();
|
||||
extern void NTSC_VideoUpdateCycles( long cycles6502 );
|
||||
extern void NTSC_VideoUpdateCycles( UINT cycles6502 );
|
||||
extern void NTSC_VideoRedrawWholeScreen( void );
|
||||
extern UINT NTSC_GetFrameBufferBorderlessWidth( void );
|
||||
|
||||
enum VideoRefreshRate_e;
|
||||
void NTSC_SetRefreshRate(VideoRefreshRate_e rate);
|
||||
UINT NTSC_GetCyclesPerFrame(void);
|
||||
|
|
|
@ -67,7 +67,8 @@ static YamlHelper yamlHelper;
|
|||
// Unit version history:
|
||||
// v2: Extended: keyboard (added 'Key Waiting'), memory (LC mem type for II/II+, inverted MF_INTCXROM bit)
|
||||
// v3: Extended: memory (added 'AnnunciatorN')
|
||||
#define UNIT_APPLE2_VER 3
|
||||
// v4: Extended: video (added 'Video Refresh Rate')
|
||||
#define UNIT_APPLE2_VER 4
|
||||
|
||||
#define UNIT_SLOTS_VER 1
|
||||
|
||||
|
@ -219,7 +220,7 @@ static void ParseUnitApple2(YamlLoadHelper& yamlLoadHelper, UINT version)
|
|||
JoyLoadSnapshot(yamlLoadHelper);
|
||||
KeybLoadSnapshot(yamlLoadHelper, version);
|
||||
SpkrLoadSnapshot(yamlLoadHelper);
|
||||
VideoLoadSnapshot(yamlLoadHelper);
|
||||
VideoLoadSnapshot(yamlLoadHelper, version);
|
||||
MemLoadSnapshot(yamlLoadHelper, version);
|
||||
|
||||
// g_Apple2Type may've changed: so redraw frame (title, buttons, leds, etc)
|
||||
|
@ -395,6 +396,7 @@ static void Snapshot_LoadState_v2(void)
|
|||
HD_Reset();
|
||||
KeybReset();
|
||||
VideoResetState();
|
||||
SetVideoRefreshRate(VR_60HZ); // Default to 60Hz as older save-states won't contain refresh rate
|
||||
MB_InitializeForLoadingSnapshot(); // GH#609
|
||||
sg_SSC.CommReset();
|
||||
#ifdef USE_SPEECH_API
|
||||
|
@ -420,7 +422,7 @@ static void Snapshot_LoadState_v2(void)
|
|||
// . A change in h/w via loading a save-state avoids this VM restart
|
||||
// The latter is the desired approach (as the former needs a "power-on" / F2 to start things again)
|
||||
|
||||
sg_PropertySheet.ApplyNewConfig(m_ConfigNew, ConfigOld);
|
||||
sg_PropertySheet.ApplyNewConfig(m_ConfigNew, ConfigOld); // Mainly just saves (some) new state to Registry
|
||||
|
||||
MemInitializeROM();
|
||||
MemInitializeCustomF8ROM();
|
||||
|
|
|
@ -92,7 +92,7 @@ struct DISK2_Unit
|
|||
DWORD spinning;
|
||||
DWORD writelight;
|
||||
int nibbles;
|
||||
BYTE nTrack[NIBBLES_PER_TRACK];
|
||||
BYTE nTrack[NIBBLES_PER_TRACK_NIB];
|
||||
};
|
||||
|
||||
struct SS_CARD_DISK2
|
||||
|
|
101
source/Video.cpp
101
source/Video.cpp
|
@ -91,7 +91,7 @@ uint32_t g_uVideoMode = VF_TEXT; // Current Video Mode (this is the last se
|
|||
DWORD g_eVideoType = VT_DEFAULT;
|
||||
static VideoStyle_e g_eVideoStyle = VS_HALF_SCANLINES;
|
||||
|
||||
static const bool g_bVideoScannerNTSC = true; // NTSC video scanning (or PAL)
|
||||
static bool g_bVideoScannerNTSC = true; // NTSC video scanning (or PAL)
|
||||
|
||||
//-------------------------------------
|
||||
|
||||
|
@ -542,17 +542,7 @@ void VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit /*=fal
|
|||
|
||||
void VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame)
|
||||
{
|
||||
if (g_bVideoScannerNTSC)
|
||||
{
|
||||
NTSC_VideoClockResync(dwCyclesThisFrame);
|
||||
}
|
||||
else // PAL
|
||||
{
|
||||
_ASSERT(0);
|
||||
g_nVideoClockVert = (uint16_t) (dwCyclesThisFrame / kHClocks) % kPALScanLines;
|
||||
g_nVideoClockHorz = (uint16_t) (dwCyclesThisFrame % kHClocks);
|
||||
}
|
||||
|
||||
NTSC_VideoClockResync(dwCyclesThisFrame);
|
||||
VideoRedrawScreen(); // Better (no flicker) than using: NTSC_VideoReinitialize() or VideoReinitialize()
|
||||
}
|
||||
|
||||
|
@ -566,25 +556,6 @@ void VideoRedrawScreen (void)
|
|||
|
||||
//===========================================================================
|
||||
|
||||
// TC: Hacky-fix for GH#341 - better to draw to the correct position in the framebuffer to start with! (in NTSC.cpp)
|
||||
// . NB. Now the dx is corrected in NTSC.cpp, updateVideoScannerAddress()
|
||||
static void VideoFrameBufferAdjust(int& xSrc, int& ySrc, bool bInvertY=false)
|
||||
{
|
||||
int dx=0, dy=0;
|
||||
|
||||
if (g_eVideoType == VT_MONO_TV || g_eVideoType == VT_COLOR_TV)
|
||||
{
|
||||
// Adjust the src locations for the NTSC video modes
|
||||
dy = -1;
|
||||
}
|
||||
|
||||
if (bInvertY)
|
||||
dy =- dy;
|
||||
|
||||
xSrc += dx;
|
||||
ySrc += dy;
|
||||
}
|
||||
|
||||
void VideoRefreshScreen ( uint32_t uRedrawWholeScreenVideoMode /* =0*/, bool bRedrawWholeScreen /* =false*/ )
|
||||
{
|
||||
if (bRedrawWholeScreen || g_nAppMode == MODE_PAUSED)
|
||||
|
@ -603,7 +574,6 @@ void VideoRefreshScreen ( uint32_t uRedrawWholeScreenVideoMode /* =0*/, bool bRe
|
|||
{
|
||||
int xSrc = GetFrameBufferBorderWidth();
|
||||
int ySrc = GetFrameBufferBorderHeight();
|
||||
VideoFrameBufferAdjust(xSrc, ySrc); // TC: Hacky-fix for GH#341
|
||||
|
||||
int xdest = IsFullScreen() ? GetFullScreenOffsetX() : 0;
|
||||
int ydest = IsFullScreen() ? GetFullScreenOffsetY() : 0;
|
||||
|
@ -652,6 +622,8 @@ BYTE VideoSetMode(WORD, WORD address, BYTE write, BYTE, ULONG uExecutedCycles)
|
|||
{
|
||||
address &= 0xFF;
|
||||
|
||||
const uint32_t oldVideoMode = g_uVideoMode;
|
||||
|
||||
switch (address)
|
||||
{
|
||||
case 0x00: g_uVideoMode &= ~VF_80STORE; break;
|
||||
|
@ -675,7 +647,11 @@ BYTE VideoSetMode(WORD, WORD address, BYTE write, BYTE, ULONG uExecutedCycles)
|
|||
if (!IS_APPLE2)
|
||||
RGB_SetVideoMode(address);
|
||||
|
||||
NTSC_SetVideoMode( g_uVideoMode, true );
|
||||
bool delay = true;
|
||||
if ((oldVideoMode ^ g_uVideoMode) & VF_PAGE2)
|
||||
delay = false; // PAGE2 flag changed state, so no 1 cycle delay (GH#656)
|
||||
|
||||
NTSC_SetVideoMode( g_uVideoMode, delay );
|
||||
|
||||
return MemReadFloatingBus(uExecutedCycles);
|
||||
}
|
||||
|
@ -724,9 +700,10 @@ bool VideoGetSWAltCharSet(void)
|
|||
|
||||
//===========================================================================
|
||||
|
||||
#define SS_YAML_KEY_ALTCHARSET "Alt Char Set"
|
||||
#define SS_YAML_KEY_VIDEOMODE "Video Mode"
|
||||
#define SS_YAML_KEY_CYCLESTHISFRAME "Cycles This Frame"
|
||||
#define SS_YAML_KEY_ALT_CHARSET "Alt Char Set"
|
||||
#define SS_YAML_KEY_VIDEO_MODE "Video Mode"
|
||||
#define SS_YAML_KEY_CYCLES_THIS_FRAME "Cycles This Frame"
|
||||
#define SS_YAML_KEY_VIDEO_REFRESH_RATE "Video Refresh Rate"
|
||||
|
||||
static std::string VideoGetSnapshotStructName(void)
|
||||
{
|
||||
|
@ -737,19 +714,27 @@ static std::string VideoGetSnapshotStructName(void)
|
|||
void VideoSaveSnapshot(YamlSaveHelper& yamlSaveHelper)
|
||||
{
|
||||
YamlSaveHelper::Label state(yamlSaveHelper, "%s:\n", VideoGetSnapshotStructName().c_str());
|
||||
yamlSaveHelper.SaveBool(SS_YAML_KEY_ALTCHARSET, g_nAltCharSetOffset ? true : false);
|
||||
yamlSaveHelper.SaveHexUint32(SS_YAML_KEY_VIDEOMODE, g_uVideoMode);
|
||||
yamlSaveHelper.SaveUint(SS_YAML_KEY_CYCLESTHISFRAME, g_dwCyclesThisFrame);
|
||||
yamlSaveHelper.SaveBool(SS_YAML_KEY_ALT_CHARSET, g_nAltCharSetOffset ? true : false);
|
||||
yamlSaveHelper.SaveHexUint32(SS_YAML_KEY_VIDEO_MODE, g_uVideoMode);
|
||||
yamlSaveHelper.SaveUint(SS_YAML_KEY_CYCLES_THIS_FRAME, g_dwCyclesThisFrame);
|
||||
yamlSaveHelper.SaveUint(SS_YAML_KEY_VIDEO_REFRESH_RATE, (UINT)GetVideoRefreshRate());
|
||||
}
|
||||
|
||||
void VideoLoadSnapshot(YamlLoadHelper& yamlLoadHelper)
|
||||
void VideoLoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT version)
|
||||
{
|
||||
if (!yamlLoadHelper.GetSubMap(VideoGetSnapshotStructName()))
|
||||
return;
|
||||
|
||||
g_nAltCharSetOffset = yamlLoadHelper.LoadBool(SS_YAML_KEY_ALTCHARSET) ? 256 : 0;
|
||||
g_uVideoMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_VIDEOMODE);
|
||||
g_dwCyclesThisFrame = yamlLoadHelper.LoadUint(SS_YAML_KEY_CYCLESTHISFRAME);
|
||||
if (version >= 4)
|
||||
{
|
||||
VideoRefreshRate_e rate = (VideoRefreshRate_e)yamlLoadHelper.LoadUint(SS_YAML_KEY_VIDEO_REFRESH_RATE);
|
||||
SetVideoRefreshRate(rate); // Trashes: g_dwCyclesThisFrame
|
||||
SetCurrentCLK6502();
|
||||
}
|
||||
|
||||
g_nAltCharSetOffset = yamlLoadHelper.LoadBool(SS_YAML_KEY_ALT_CHARSET) ? 256 : 0;
|
||||
g_uVideoMode = yamlLoadHelper.LoadUint(SS_YAML_KEY_VIDEO_MODE);
|
||||
g_dwCyclesThisFrame = yamlLoadHelper.LoadUint(SS_YAML_KEY_CYCLES_THIS_FRAME);
|
||||
|
||||
yamlLoadHelper.PopMap();
|
||||
}
|
||||
|
@ -771,7 +756,7 @@ WORD VideoGetScannerAddress(DWORD nCycles, VideoScanner_e videoScannerAddr /*= V
|
|||
//
|
||||
const int kScanLines = g_bVideoScannerNTSC ? kNTSCScanLines : kPALScanLines;
|
||||
const int kScanCycles = kScanLines * kHClocks;
|
||||
_ASSERT(nCycles < kScanCycles);
|
||||
_ASSERT(nCycles < (UINT)kScanCycles);
|
||||
nCycles %= kScanCycles;
|
||||
|
||||
// calculate horizontal scanning state
|
||||
|
@ -789,7 +774,7 @@ WORD VideoGetScannerAddress(DWORD nCycles, VideoScanner_e videoScannerAddr /*= V
|
|||
int h_4 = (nHState >> 4) & 1;
|
||||
int h_5 = (nHState >> 5) & 1;
|
||||
|
||||
// calculate vertical scanning state
|
||||
// calculate vertical scanning state (UTAIIe:3-15,T3.2)
|
||||
//
|
||||
int nVLine = nCycles / kHClocks; // which vertical scanning line
|
||||
int nVState = kVLine0State + nVLine; // V state bits
|
||||
|
@ -862,7 +847,7 @@ WORD VideoGetScannerAddress(DWORD nCycles, VideoScanner_e videoScannerAddr /*= V
|
|||
nAddressP |= p2b << 11; // a11
|
||||
}
|
||||
|
||||
// VBL' = v_4' | v_3' = (v_4 & v_3)' (UTAIIe:5-10,#3)
|
||||
// VBL' = v_4' | v_3' = (v_4 & v_3)' (UTAIIe:5-10,#3), (UTAIIe:3-15,T3.2)
|
||||
|
||||
if (videoScannerAddr == VS_PartialAddrH)
|
||||
return nAddressH;
|
||||
|
@ -875,6 +860,7 @@ WORD VideoGetScannerAddress(DWORD nCycles, VideoScanner_e videoScannerAddr /*= V
|
|||
|
||||
//===========================================================================
|
||||
|
||||
// TODO: Consider replacing simply with: return g_nVideoClockVert < kVDisplayableScanLines
|
||||
bool VideoGetVblBar(const DWORD uExecutedCycles)
|
||||
{
|
||||
// get video scanner position
|
||||
|
@ -1079,8 +1065,6 @@ static void Video_MakeScreenShot(FILE *pFile, const VideoScreenShot_e ScreenShot
|
|||
|
||||
int xSrc = GetFrameBufferBorderWidth();
|
||||
int ySrc = GetFrameBufferBorderHeight();
|
||||
VideoFrameBufferAdjust(xSrc, ySrc, true); // TC: Hacky-fix for GH#341 & GH#356
|
||||
// Lines stored in reverse, so invert the y-adjust value
|
||||
|
||||
pSrc += xSrc; // Skip left border
|
||||
pSrc += ySrc * GetFrameBufferWidth(); // Skip top border
|
||||
|
@ -1225,6 +1209,10 @@ void Config_Load_Video()
|
|||
REGLOAD(TEXT(REGVALUE_VIDEO_STYLE) ,(DWORD*)&g_eVideoStyle);
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_MONO_COLOR),&g_nMonochromeRGB);
|
||||
|
||||
DWORD rate = VR_60HZ;
|
||||
REGLOAD(TEXT(REGVALUE_VIDEO_REFRESH_RATE), &rate);
|
||||
SetVideoRefreshRate((VideoRefreshRate_e)rate);
|
||||
|
||||
//
|
||||
|
||||
const UINT16* pOldVersion = GetOldAppleWinVersion();
|
||||
|
@ -1269,6 +1257,7 @@ void Config_Save_Video()
|
|||
REGSAVE(TEXT(REGVALUE_VIDEO_MODE) ,g_eVideoType);
|
||||
REGSAVE(TEXT(REGVALUE_VIDEO_STYLE) ,g_eVideoStyle);
|
||||
REGSAVE(TEXT(REGVALUE_VIDEO_MONO_COLOR),g_nMonochromeRGB);
|
||||
REGSAVE(TEXT(REGVALUE_VIDEO_REFRESH_RATE), GetVideoRefreshRate());
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
@ -1299,6 +1288,22 @@ bool IsVideoStyle(VideoStyle_e mask)
|
|||
return (g_eVideoStyle & mask) != 0;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
||||
VideoRefreshRate_e GetVideoRefreshRate(void)
|
||||
{
|
||||
return (g_bVideoScannerNTSC == false) ? VR_50HZ : VR_60HZ;
|
||||
}
|
||||
|
||||
void SetVideoRefreshRate(VideoRefreshRate_e rate)
|
||||
{
|
||||
if (rate != VR_50HZ)
|
||||
rate = VR_60HZ;
|
||||
|
||||
g_bVideoScannerNTSC = (rate == VR_60HZ);
|
||||
NTSC_SetRefreshRate(rate);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void videoCreateDIBSection()
|
||||
{
|
||||
|
|
|
@ -29,6 +29,13 @@
|
|||
// VS_TEXT_OPTIMIZED=4,
|
||||
};
|
||||
|
||||
enum VideoRefreshRate_e
|
||||
{
|
||||
VR_NONE,
|
||||
VR_50HZ,
|
||||
VR_60HZ
|
||||
};
|
||||
|
||||
enum VideoFlag_e
|
||||
{
|
||||
VF_80COL = 0x00000001,
|
||||
|
@ -193,7 +200,7 @@ bool VideoGetSWTEXT(void);
|
|||
bool VideoGetSWAltCharSet(void);
|
||||
|
||||
void VideoSaveSnapshot(class YamlSaveHelper& yamlSaveHelper);
|
||||
void VideoLoadSnapshot(class YamlLoadHelper& yamlLoadHelper);
|
||||
void VideoLoadSnapshot(class YamlLoadHelper& yamlLoadHelper, UINT version);
|
||||
|
||||
extern bool g_bDisplayPrintScreenFileName;
|
||||
extern bool g_bShowPrintScreenWarningDialog;
|
||||
|
@ -226,3 +233,6 @@ void SetVideoType(VideoType_e newVideoType);
|
|||
VideoStyle_e GetVideoStyle(void);
|
||||
void SetVideoStyle(VideoStyle_e newVideoStyle);
|
||||
bool IsVideoStyle(VideoStyle_e mask);
|
||||
|
||||
VideoRefreshRate_e GetVideoRefreshRate(void);
|
||||
void SetVideoRefreshRate(VideoRefreshRate_e rate);
|
||||
|
|
|
@ -342,6 +342,34 @@ std::string YamlLoadHelper::LoadString(const std::string& key)
|
|||
return value;
|
||||
}
|
||||
|
||||
float YamlLoadHelper::LoadFloat(const std::string key)
|
||||
{
|
||||
bool bFound;
|
||||
std::string value = m_yamlHelper.GetMapValue(*m_pMapYaml, key, bFound);
|
||||
if (value == "")
|
||||
{
|
||||
m_bDoGetMapRemainder = false;
|
||||
throw std::string(m_currentMapName + ": Missing: " + key);
|
||||
}
|
||||
#if (_MSC_VER >= 1900)
|
||||
return strtof(value.c_str(), NULL); // MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
|
||||
#else
|
||||
return (float) strtod(value.c_str(), NULL); // NB. strtof() requires VS2015
|
||||
#endif
|
||||
}
|
||||
|
||||
double YamlLoadHelper::LoadDouble(const std::string key)
|
||||
{
|
||||
bool bFound;
|
||||
std::string value = m_yamlHelper.GetMapValue(*m_pMapYaml, key, bFound);
|
||||
if (value == "")
|
||||
{
|
||||
m_bDoGetMapRemainder = false;
|
||||
throw std::string(m_currentMapName + ": Missing: " + key);
|
||||
}
|
||||
return strtod(value.c_str(), NULL);
|
||||
}
|
||||
|
||||
void YamlLoadHelper::LoadMemory(const LPBYTE pMemBase, const size_t size)
|
||||
{
|
||||
m_yamlHelper.LoadMemory(*m_pMapYaml, pMemBase, size);
|
||||
|
@ -371,7 +399,7 @@ void YamlSaveHelper::SaveUint(const char* key, UINT value)
|
|||
|
||||
void YamlSaveHelper::SaveHexUint4(const char* key, UINT value)
|
||||
{
|
||||
Save("%s: 0x%01X\n", key, value);
|
||||
Save("%s: 0x%01X\n", key, value & 0xf);
|
||||
}
|
||||
|
||||
void YamlSaveHelper::SaveHexUint8(const char* key, UINT value)
|
||||
|
@ -414,6 +442,16 @@ void YamlSaveHelper::SaveString(const char* key, const char* value)
|
|||
Save("%s: %s\n", key, (value[0] != 0) ? value : "\"\"");
|
||||
}
|
||||
|
||||
void YamlSaveHelper::SaveFloat(const char* key, float value)
|
||||
{
|
||||
Save("%s: %f\n", key, value);
|
||||
}
|
||||
|
||||
void YamlSaveHelper::SaveDouble(const char* key, double value)
|
||||
{
|
||||
Save("%s: %f\n", key, value);
|
||||
}
|
||||
|
||||
// Pre: uMemSize must be multiple of 8
|
||||
void YamlSaveHelper::SaveMemory(const LPBYTE pMemBase, const UINT uMemSize)
|
||||
{
|
||||
|
|
|
@ -97,6 +97,8 @@ public:
|
|||
bool LoadBool(const std::string key);
|
||||
std::string LoadString_NoThrow(const std::string& key, bool& bFound);
|
||||
std::string LoadString(const std::string& key);
|
||||
float LoadFloat(const std::string key);
|
||||
double LoadDouble(const std::string key);
|
||||
void LoadMemory(const LPBYTE pMemBase, const size_t size);
|
||||
|
||||
bool GetSubMap(const std::string key)
|
||||
|
@ -213,7 +215,9 @@ public:
|
|||
void SaveHexUint32(const char* key, UINT value);
|
||||
void SaveHexUint64(const char* key, UINT64 value);
|
||||
void SaveBool(const char* key, bool value);
|
||||
void SaveString(const char* key, const char* value);
|
||||
void SaveString(const char* key, const char* value);
|
||||
void SaveFloat(const char* key, float value);
|
||||
void SaveDouble(const char* key, double value);
|
||||
void SaveMemory(const LPBYTE pMemBase, const UINT uMemSize);
|
||||
|
||||
class Label
|
||||
|
|
|
@ -5510,7 +5510,10 @@ static void opcode_fd(BYTE ip1, BYTE ip2, BYTE ip3, WORD ip12, WORD ip23)
|
|||
|
||||
/* Z80 mainloop. */
|
||||
|
||||
static const double uZ80ClockMultiplier = CLK_Z80 / CLK_6502;
|
||||
// The effective Z-80 clock rate is 2.041MHz
|
||||
// See: http://www.apple2info.net/hardware/softcard/SC-SWHW_a2in.pdf
|
||||
static const double uZ80ClockMultiplier = 2;
|
||||
|
||||
inline static ULONG ConvertZ80TStatesTo6502Cycles(UINT uTStates)
|
||||
{
|
||||
return (uTStates < 0) ? 0 : (ULONG) ((double)uTStates / uZ80ClockMultiplier);
|
||||
|
|
|
@ -1,141 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug NoDX|Win32">
|
||||
<Configuration>Debug NoDX</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release NoDX|Win32">
|
||||
<Configuration>Release NoDX</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{709278B8-C583-4BD8-90DE-4E4F35A3BD8B}</ProjectGuid>
|
||||
<RootNamespace>zip_lib</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="crypt.h" />
|
||||
<ClInclude Include="ioapi.h" />
|
||||
<ClInclude Include="iowin32.h" />
|
||||
<ClInclude Include="mztools.h" />
|
||||
<ClInclude Include="unzip.h" />
|
||||
<ClInclude Include="zip.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ioapi.c" />
|
||||
<ClCompile Include="iowin32.c" />
|
||||
<ClCompile Include="mztools.c" />
|
||||
<ClCompile Include="unzip.c" />
|
||||
<ClCompile Include="zip.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ChangeLogUnzip" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,49 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="crypt.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ioapi.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="iowin32.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mztools.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="unzip.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zip.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ioapi.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="iowin32.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="mztools.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unzip.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zip.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ChangeLogUnzip" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,161 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug NoDX|Win32">
|
||||
<Configuration>Debug NoDX</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release NoDX|Win32">
|
||||
<Configuration>Release NoDX</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>zlib</ProjectName>
|
||||
<ProjectGuid>{7935B998-C713-42AE-8F6D-9FF9080A1B1B}</ProjectGuid>
|
||||
<RootNamespace>zlib</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug NoDX|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release NoDX|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="adler32.c" />
|
||||
<ClCompile Include="compress.c" />
|
||||
<ClCompile Include="crc32.c" />
|
||||
<ClCompile Include="deflate.c" />
|
||||
<ClCompile Include="gzclose.c" />
|
||||
<ClCompile Include="gzlib.c" />
|
||||
<ClCompile Include="gzread.c" />
|
||||
<ClCompile Include="gzwrite.c" />
|
||||
<ClCompile Include="infback.c" />
|
||||
<ClCompile Include="inffast.c" />
|
||||
<ClCompile Include="inflate.c" />
|
||||
<ClCompile Include="inftrees.c" />
|
||||
<ClCompile Include="trees.c" />
|
||||
<ClCompile Include="uncompr.c" />
|
||||
<ClCompile Include="zutil.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="crc32.h" />
|
||||
<ClInclude Include="deflate.h" />
|
||||
<ClInclude Include="gzguts.h" />
|
||||
<ClInclude Include="inffast.h" />
|
||||
<ClInclude Include="inffixed.h" />
|
||||
<ClInclude Include="inflate.h" />
|
||||
<ClInclude Include="inftrees.h" />
|
||||
<ClInclude Include="trees.h" />
|
||||
<ClInclude Include="zconf.h" />
|
||||
<ClInclude Include="zlib.h" />
|
||||
<ClInclude Include="zutil.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,94 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="adler32.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="compress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="crc32.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="deflate.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="infback.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="inffast.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="inflate.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="inftrees.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="trees.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uncompr.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zutil.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="gzclose.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="gzlib.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="gzread.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="gzwrite.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="crc32.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="deflate.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="inffast.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="inffixed.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="inflate.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="inftrees.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="trees.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zconf.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zlib.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zutil.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="gzguts.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README" />
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
Add table
Reference in a new issue