diff --git a/core/build.h b/core/build.h
index 8b6663664..45c83ed79 100755
--- a/core/build.h
+++ b/core/build.h
@@ -40,6 +40,7 @@
#define CPU_X86 0x20000001
#define CPU_ARM 0x20000002
#define CPU_MIPS 0x20000003
+#define CPU_X64 0x20000004
//BUILD_COMPILER
#define COMPILER_VC 0x30000001
diff --git a/core/hw/mem/_vmem.cpp b/core/hw/mem/_vmem.cpp
index e54f6a78a..32125ea42 100644
--- a/core/hw/mem/_vmem.cpp
+++ b/core/hw/mem/_vmem.cpp
@@ -48,7 +48,7 @@ void _vmem_get_ptrs(u32 sz,bool write,void*** vmap,void*** func)
void* _vmem_get_ptr2(u32 addr,u32& mask)
{
u32 page=addr>>24;
- u32 iirf=(unat)_vmem_MemInfo_ptr[page];
+ unat iirf=(unat)_vmem_MemInfo_ptr[page];
void* ptr=(void*)(iirf&~HANDLER_MAX);
if (ptr==0) return 0;
@@ -60,13 +60,13 @@ void* _vmem_get_ptr2(u32 addr,u32& mask)
void* _vmem_read_const(u32 addr,bool& ismem,u32 sz)
{
u32 page=addr>>24;
- u32 iirf=(unat)_vmem_MemInfo_ptr[page];
+ unat iirf=(unat)_vmem_MemInfo_ptr[page];
void* ptr=(void*)(iirf&~HANDLER_MAX);
if (ptr==0)
{
ismem=false;
- const u32 id=iirf;
+ const unat id=iirf;
if (sz==1)
{
return (void*)_vmem_RF8[id/4];
@@ -100,13 +100,13 @@ void* _vmem_read_const(u32 addr,bool& ismem,u32 sz)
void* _vmem_page_info(u32 addr,bool& ismem,u32 sz,u32& page_sz,bool rw)
{
u32 page=addr>>24;
- u32 iirf=(unat)_vmem_MemInfo_ptr[page];
+ unat iirf=(unat)_vmem_MemInfo_ptr[page];
void* ptr=(void*)(iirf&~HANDLER_MAX);
if (ptr==0)
{
ismem=false;
- const u32 id=iirf;
+ const unat id=iirf;
page_sz=24;
if (sz==1)
{
diff --git a/core/hw/sh4/sh4_if.h b/core/hw/sh4/sh4_if.h
index 3bc923be3..8dddb8302 100644
--- a/core/hw/sh4/sh4_if.h
+++ b/core/hw/sh4/sh4_if.h
@@ -308,7 +308,7 @@ typedef void DYNACALL TaListVoidFP(void* data);
struct Sh4RCB
{
void* fpcb[8*1024*1024];
- u64 _pad[(0x40000-sizeof(Sh4Context)-64-8)/8];
+ u64 _pad[(0x40000-sizeof(Sh4Context)-64-sizeof(void*)*2)/8];
TaListVoidFP* tacmd_voud; //*TODO* remove (not used)
sqw_fp* do_sqw_nommu;
u64 sq_buffer[64/8];
diff --git a/shell/reicast.sln b/shell/reicast.sln
index abe4a2fea..0b0428f0d 100644
--- a/shell/reicast.sln
+++ b/shell/reicast.sln
@@ -6,13 +6,19 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Debug|Win32.ActiveCfg = Slow|Win32
{58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Debug|Win32.Build.0 = Slow|Win32
+ {58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Debug|x64.ActiveCfg = Slow|x64
+ {58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Debug|x64.Build.0 = Slow|x64
{58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Release|Win32.ActiveCfg = Fast|Win32
{58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Release|Win32.Build.0 = Fast|Win32
+ {58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Release|x64.ActiveCfg = Fast|x64
+ {58B14048-EACB-4780-8B1E-9C84C2C30A8E}.Release|x64.Build.0 = Fast|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/shell/reicast.vcxproj b/shell/reicast.vcxproj
index defe3d658..ae771001c 100644
--- a/shell/reicast.vcxproj
+++ b/shell/reicast.vcxproj
@@ -5,10 +5,18 @@
Fast
Win32
+
+ Fast
+ x64
+
Slow
Win32
+
+ Slow
+ x64
+
@@ -128,11 +136,15 @@
true
+ true
true
+ true
true
+ true
true
+ true
@@ -141,7 +153,9 @@
true
+ true
true
+ true
@@ -265,7 +279,9 @@
true
+ true
true
+ true
@@ -282,7 +298,9 @@
true
+ true
true
+ true
@@ -298,29 +316,54 @@
MultiByte
true
+
+ Application
+ true
+ MultiByte
+ true
+
Application
true
MultiByte
+
+ Application
+ true
+ MultiByte
+
+
+
+
+
+
+
true
$(SolutionDir)..\WorkDir\
+
+ true
+ $(SolutionDir)..\WorkDir\
+
true
$(SolutionDir)..\WorkDir\
+
+ true
+ $(SolutionDir)..\WorkDir\
+
@@ -352,6 +395,37 @@
Dsound.lib;winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ Full
+ WIN32;NDEBUG;_CONSOLE;X86;%(PreprocessorDefinitions)
+ $(ProjectDir)..\core\;$(ProjectDir)..\core\khronos;%(AdditionalIncludeDirectories)
+ /MP %(AdditionalOptions)
+ AnySuitable
+ true
+ Speed
+ true
+ true
+ Default
+ MultiThreadedDLL
+ false
+ StreamingSIMDExtensions
+ Fast
+ ProgramDatabase
+ true
+ false
+ $(IntDir)/%(RelativeDir)/
+
+
+ Windows
+ true
+ $(SolutionDir)..\pvrframe
+ Dsound.lib;winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)
+
+
@@ -372,11 +446,36 @@
Dsound.lib;winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;X86;%(PreprocessorDefinitions)
+ $(ProjectDir)..\core\;$(ProjectDir)..\core\khronos;%(AdditionalIncludeDirectories)
+ true
+ false
+ Default
+ $(IntDir)/%(RelativeDir)/
+
+
+ Windows
+ true
+ $(SolutionDir)..\pvrframe
+ Dsound.lib;winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)
+
+
true
+
+
+ true
+
+