diff --git a/360/xdk360_audio.c b/360/xdk360_audio.c index 3b885454c4..a0ac8790a1 100644 --- a/360/xdk360_audio.c +++ b/360/xdk360_audio.c @@ -8,7 +8,7 @@ #include #include #include "xdk360_audio.h" -#include "../msvc-360/msvc_compat.h" +#include "msvc_compat.h" #define MAX_BUFFERS 16 #define MAX_BUFFERS_MASK (MAX_BUFFERS - 1) @@ -46,16 +46,6 @@ static void WINAPI dummy_voidp(void *handle, void *data) { (void)handle; (void)d static void WINAPI dummy_nil(void *handle) { (void)handle; } static void WINAPI dummy_uint32(void *handle, UINT32 dummy) { (void)handle; (void)dummy; } static void WINAPI dummy_voidp_hresult(void *handle, void *data, HRESULT dummy) { (void)handle; (void)data; (void)dummy; } - -const struct IXAudio2VoiceCallbackVtbl voice_vtable = { - dummy_uint32, - dummy_nil, - dummy_nil, - dummy_voidp, - voice_on_buffer_end, - dummy_voidp, - dummy_voidp_hresult, -}; xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels, size_t size) { @@ -64,7 +54,6 @@ xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels, size_t size) return NULL; handle->lpVtbl = &voice_vtable; - CoInitializeEx(0, COINIT_MULTITHREADED); WAVEFORMATEX wfx = {0}; if (FAILED(XAudio2Create(&handle->pXAudio2))) diff --git a/360/xdk360_input.cpp b/360/xdk360_input.cpp index ef7f46de87..f9f0ad1abe 100644 --- a/360/xdk360_input.cpp +++ b/360/xdk360_input.cpp @@ -18,10 +18,7 @@ #include #include -#include -#include -#include -#include +#include #include "../driver.h" #include "../libsnes.hpp" @@ -97,7 +94,7 @@ static int16_t xdk360_input_state(void *data, const struct snes_keybind **binds, button = 0; } - return ((state[player]) & button) ? 1 : 0; + return (state[player] & button) ? 1 : 0; } static void xdk360_free_input(void *data) diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 36dda842d7..c7384f0192 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -18,8 +18,8 @@ #include #include -#include "driver.h" -#include "general.h" +#include "../driver.h" +#include "../general.h" #ifdef HAVE_CONFIG_H #include "config.h" @@ -80,13 +80,14 @@ typedef struct gl IDirect3DDevice9* xdk360_render_device; IDirect3DVertexShader9 *pVertexShader; IDirect3DPixelShader9* pPixelShader; + IDirect3DVertexDeclaration9* pVertexDecl; XMMATRIX matWVP; unsigned frame_count; } gl_t; static void xdk360_gfx_free(void *data) { - gl_t *vid = data; + gl_t *vid = (gl_t*)data; if (!vid) return; @@ -95,7 +96,7 @@ static void xdk360_gfx_free(void *data) static void *xdk360_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { - gl_t * gl = calloc(1, sizeof(gl_t)); + gl_t * gl = (gl_t*)calloc(1, sizeof(gl_t)); if (!gl) return NULL; @@ -181,9 +182,8 @@ static void *xdk360_gfx_init(const video_info_t *video, const input_driver_t **i }; /* Create a vertex declaration from the element descriptions.*/ - IDirect3DVertexDeclaration9* pVertexDecl; - g_pd3dDevice->CreateVertexDeclaration( VertexElements, &pVertexDecl ); - + gl->xdk360_render_device->CreateVertexDeclaration( VertexElements, &gl->pVertexDecl ); + /* World matrix (identity in this sample)*/ XMMATRIX matWorld = XMMatrixIdentity(); @@ -211,7 +211,7 @@ static void *xdk360_gfx_init(const video_info_t *video, const input_driver_t **i static bool xdk360_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch, const char *msg) { - gl_t *vid = data; + gl_t *vid = (gl_t*)data; vid->frame_count++; @@ -220,14 +220,14 @@ static bool xdk360_gfx_frame(void *data, const void *frame, unsigned width, unsi 0xff000000, 1.0f, 0L ); /* Set shaders. */ - vid->xdk360_render_device->SetVertexShader( gl->pVertexShader ); - vid->xdk360_render_device->SetPixelShader( gl->pPixelShader ); + vid->xdk360_render_device->SetVertexShader( vid->pVertexShader ); + vid->xdk360_render_device->SetPixelShader( vid->pPixelShader ); // Set shader constants. vid->xdk360_render_device->SetVertexShaderConstantF( 0, ( FLOAT* )&vid->matWVP, 4 ); // Set the vertex declaration. - vid->xdk360_render_device->SetVertexDeclaration( pVertexDecl ); + vid->xdk360_render_device->SetVertexDeclaration( vid->pVertexDecl ); // Draw vid->xdk360_render_device->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2 ); @@ -258,12 +258,13 @@ static bool xdk360_gfx_focus(void *data) const video_driver_t video_xdk360 = { - .init = xdk360_gfx_init, - .frame = xdk360_gfx_frame, - .alive = xdk360_gfx_alive, - .set_nonblock_state = xdk360_gfx_set_nonblock_state, - .focus = xdk360_gfx_focus, - .free = xdk360_gfx_free, - .ident = "xdk360" + xdk360_gfx_init, + xdk360_gfx_frame, + xdk360_gfx_set_nonblock_state, + xdk360_gfx_alive, + xdk360_gfx_focus, + NULL, + xdk360_gfx_free, + "xdk360" }; diff --git a/config.def.h b/config.def.h index 635ee26419..d824f29181 100644 --- a/config.def.h +++ b/config.def.h @@ -39,6 +39,7 @@ #define VIDEO_EXT 14 #define VIDEO_WII 24 #define VIDEO_XENON360 25 +#define VIDEO_XDK360 28 //////////////////////// #define AUDIO_RSOUND 1 #define AUDIO_OSS 2 @@ -55,12 +56,14 @@ #define AUDIO_PS3 18 #define AUDIO_XENON360 20 #define AUDIO_WII 22 +#define AUDIO_XDK360 27 //////////////////////// #define INPUT_SDL 7 #define INPUT_X 12 #define INPUT_PS3 19 #define INPUT_XENON360 21 #define INPUT_WII 23 +#define INPUT_XDK360 26 //////////////////////// #if defined(HAVE_OPENGL) || defined(__CELLOS_LV2__) @@ -69,6 +72,8 @@ #define VIDEO_DEFAULT_DRIVER VIDEO_WII #elif defined(XENON) #define VIDEO_DEFAULT_DRIVER VIDEO_XENON360 +#elif defined(_XBOX) +#define VIDEO_DEFAULT_DRIVER VIDEO_XDK360 #elif defined(HAVE_XVIDEO) #define VIDEO_DEFAULT_DRIVER VIDEO_XVIDEO #elif defined(HAVE_SDL) @@ -83,6 +88,8 @@ #define AUDIO_DEFAULT_DRIVER AUDIO_PS3 #elif defined(XENON) #define AUDIO_DEFAULT_DRIVER AUDIO_XENON360 +#elif defined(_XBOX) +#define AUDIO_DEFAULT_DRIVER AUDIO_XDK360 #elif defined(GEKKO) #define AUDIO_DEFAULT_DRIVER AUDIO_WII #elif defined(HAVE_ALSA) @@ -115,6 +122,8 @@ #if defined(XENON) #define INPUT_DEFAULT_DRIVER INPUT_XENON360 +#elif defined(_XBOX) +#define INPUT_DEFAULT_DRIVER INPUT_XDK360 #elif defined(HAVE_SDL) #define INPUT_DEFAULT_DRIVER INPUT_SDL #elif defined(__CELLOS_LV2__) diff --git a/driver.c b/driver.c index a18e24a34f..21cc084c5e 100644 --- a/driver.c +++ b/driver.c @@ -71,6 +71,9 @@ static const audio_driver_t *audio_drivers[] = { #ifdef XENON &audio_xenon360, #endif +#ifdef _XBOX + &audio_xdk360, +#endif #ifdef GEKKO &audio_wii, #endif @@ -83,6 +86,9 @@ static const video_driver_t *video_drivers[] = { #ifdef XENON &video_xenon360, #endif +#ifdef _XBOX + &video_xdk360, +#endif #ifdef HAVE_SDL &video_sdl, #endif @@ -110,6 +116,9 @@ static const input_driver_t *input_drivers[] = { #ifdef XENON &input_xenon360, #endif +#ifdef _XBOX + &input_xdk360, +#endif #ifdef GEKKO &input_wii, #endif diff --git a/driver.h b/driver.h index 39bb10fcfc..4ee0b9a3a7 100644 --- a/driver.h +++ b/driver.h @@ -170,12 +170,14 @@ extern const audio_driver_t audio_ext; extern const audio_driver_t audio_dsound; extern const audio_driver_t audio_coreaudio; extern const audio_driver_t audio_xenon360; +extern const audio_driver_t audio_xdk360; extern const audio_driver_t audio_ps3; extern const audio_driver_t audio_wii; extern const video_driver_t video_gl; extern const video_driver_t video_wii; extern const video_driver_t video_xenon360; extern const video_driver_t video_xvideo; +extern const video_driver_t video_xdk360; extern const video_driver_t video_sdl; extern const video_driver_t video_ext; extern const input_driver_t input_sdl; @@ -183,6 +185,7 @@ extern const input_driver_t input_x; extern const input_driver_t input_ps3; extern const input_driver_t input_xenon360; extern const input_driver_t input_wii; +extern const input_driver_t input_xdk360; //////////////////////////////////////////////// #endif diff --git a/file.c b/file.c index 4b3683fa73..3a12e1eede 100644 --- a/file.c +++ b/file.c @@ -32,7 +32,7 @@ #include "sha256.h" #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_XBOX) #include #include #include @@ -40,6 +40,13 @@ #ifdef _MSC_VER #define setmode _setmode #endif +#elif defined(_XBOX) +#include +#define FindFirstFileW FindFirstFile +#define FindNextFileW FindNextFile +#ifdef _MSC_VER +#define setmode _setmode +#endif #else #include #include @@ -244,7 +251,7 @@ static ssize_t read_rom_file(FILE* file, void** buf) if (file == NULL) // stdin { -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_XBOX) setmode(0, O_BINARY); #endif diff --git a/general.h b/general.h index ff9dcf17ea..ebcfd612ae 100644 --- a/general.h +++ b/general.h @@ -51,10 +51,13 @@ #include "audio/hermite.h" -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_XBOX) #define WIN32_LEAN_AND_MEAN #include #include "msvc/msvc_compat.h" +#elif defined(_XBOX) +#include +#include "360/msvc_compat.h" #endif #define MAX_PLAYERS 5 diff --git a/msvc-360/SSNES-360/SSNES-360.sln b/msvc-360/SSNES-360/SSNES-360.sln new file mode 100644 index 0000000000..e7f725c3cf --- /dev/null +++ b/msvc-360/SSNES-360/SSNES-360.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSNES-360", "SSNES-360.vcxproj", "{9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + CodeAnalysis|Xbox 360 = CodeAnalysis|Xbox 360 + Debug|Xbox 360 = Debug|Xbox 360 + Profile_FastCap|Xbox 360 = Profile_FastCap|Xbox 360 + Profile|Xbox 360 = Profile|Xbox 360 + Release_LTCG|Xbox 360 = Release_LTCG|Xbox 360 + Release|Xbox 360 = Release|Xbox 360 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.CodeAnalysis|Xbox 360.ActiveCfg = CodeAnalysis|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.CodeAnalysis|Xbox 360.Build.0 = CodeAnalysis|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Debug|Xbox 360.ActiveCfg = Debug|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Debug|Xbox 360.Build.0 = Debug|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Profile_FastCap|Xbox 360.ActiveCfg = Profile_FastCap|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Profile_FastCap|Xbox 360.Build.0 = Profile_FastCap|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Profile|Xbox 360.ActiveCfg = Profile|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Profile|Xbox 360.Build.0 = Profile|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Release_LTCG|Xbox 360.ActiveCfg = Release_LTCG|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Release_LTCG|Xbox 360.Build.0 = Release_LTCG|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Release|Xbox 360.ActiveCfg = Release|Xbox 360 + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE}.Release|Xbox 360.Build.0 = Release|Xbox 360 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/msvc-360/SSNES-360/SSNES-360.vcxproj b/msvc-360/SSNES-360/SSNES-360.vcxproj new file mode 100644 index 0000000000..5a885ffc14 --- /dev/null +++ b/msvc-360/SSNES-360/SSNES-360.vcxproj @@ -0,0 +1,292 @@ + + + + + CodeAnalysis + Xbox 360 + + + Debug + Xbox 360 + + + Profile + Xbox 360 + + + Profile_FastCap + Xbox 360 + + + Release + Xbox 360 + + + Release_LTCG + Xbox 360 + + + + {9CE8EEF7-CC1C-4A04-BB5C-62411CB5BADE} + Xbox360Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + false + + + false + + + + NotUsing + Level3 + ProgramDatabase + Disabled + false + true + false + MultiThreadedDebug + _DEBUG;_XBOX;PACKAGE_VERSION="0.9.3";%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.3";_CRT_SECURE_NO_WARNINGS + Callcap + + + true + $(OutDir)$(ProjectName).pdb + xapilibd.lib;d3d9d.lib;d3dx9d.lib;xgraphicsd.lib;xboxkrnl.lib;xnetd.lib;xaudiod2.lib;xactd3.lib;x3daudiod.lib;xmcored.lib;xbdm.lib;vcompd.lib;%(AdditionalDependencies) + + + + + NotUsing + Level4 + ProgramDatabase + Disabled + false + true + AnalyzeOnly + false + MultiThreadedDebug + _DEBUG;_XBOX;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.3";_CRT_SECURE_NO_WARNINGS + Callcap + + + true + $(OutDir)$(ProjectName).pdb + xapilibd.lib;d3d9d.lib;d3dx9d.lib;xgraphicsd.lib;xboxkrnl.lib;xnetd.lib;xaudiod2.lib;xactd3.lib;x3daudiod.lib;xmcored.lib;xbdm.lib;vcompd.lib;%(AdditionalDependencies) + + + + + Level3 + NotUsing + Full + true + false + true + ProgramDatabase + Size + false + MultiThreaded + NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.3";_CRT_SECURE_NO_WARNINGS + Callcap + + + true + false + xapilib.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(ProjectName).pdb + true + xapilibi.lib;d3d9i.lib;d3dx9.lib;xgraphics.lib;xboxkrnl.lib;xnet.lib;xaudio2.lib;xact3i.lib;x3daudioi.lib;xmcorei.lib;xbdm.lib;vcomp.lib;%(AdditionalDependencies) + + + + + Level3 + NotUsing + Full + true + false + true + ProgramDatabase + Fastcap + Size + false + MultiThreaded + NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.3";_CRT_SECURE_NO_WARNINGS + + + true + false + true + $(OutDir)$(ProjectName).pdb + true + xapilib.lib;d3d9.lib;d3dx9.lib;xgraphics.lib;xboxkrnl.lib;xnet.lib;xaudio2.lib;xact3.lib;x3daudio.lib;xmcore.lib;vcomp.lib;xbdm.lib;%(AdditionalDependencies) + + + + + Level3 + NotUsing + Full + true + true + ProgramDatabase + Size + false + false + MultiThreaded + NDEBUG;_XBOX;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.3";_CRT_SECURE_NO_WARNINGS + + + true + true + true + $(OutDir)$(ProjectName).pdb + true + xapilib.lib;d3d9.lib;d3dx9.lib;xgraphics.lib;xboxkrnl.lib;xnet.lib;xaudio2.lib;xact3.lib;x3daudio.lib;xmcore.lib;vcomp.lib;%(AdditionalDependencies) + + + + + Level3 + NotUsing + Full + true + true + ProgramDatabase + Size + false + false + MultiThreaded + NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.3";_CRT_SECURE_NO_WARNINGS + + + true + true + true + $(OutDir)$(ProjectName).pdb + true + xapilib.lib;d3d9ltcg.lib;d3dx9.lib;xgraphics.lib;xboxkrnl.lib;xnet.lib;xaudio2.lib;xact3ltcg.lib;x3daudioltcg.lib;xmcoreltcg.lib;vcomp.lib;%(AdditionalDependencies) + + + + + + + + + + true + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/msvc-360/SSNES-360/SSNES-360.vcxproj.filters b/msvc-360/SSNES-360/SSNES-360.vcxproj.filters new file mode 100644 index 0000000000..11895b15cb --- /dev/null +++ b/msvc-360/SSNES-360/SSNES-360.vcxproj.filters @@ -0,0 +1,167 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {b9371e8d-2e72-4ced-8bf6-6ee6a77a1f78} + + + {740056e8-6476-4e8c-b9cb-767bebdb5c60} + + + + + Source Files\360 + + + Source Files\360 + + + Source Files\360 + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\360 + + + Header Files\360 + + + \ No newline at end of file diff --git a/ssnes.c b/ssnes.c index 026cdfd950..eeab85aea0 100644 --- a/ssnes.c +++ b/ssnes.c @@ -35,10 +35,13 @@ #include "cheats.h" #include "getopt_ssnes.h" -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_XBOX) #define WIN32_LEAN_AND_MEAN #include #include "msvc/msvc_compat.h" +#elif defined(_XBOX) +#include +#include "360/msvc_compat.h" #endif #ifdef __APPLE__ @@ -839,7 +842,7 @@ static void parse_input(int argc, char *argv[]) break; case 'D': -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_XBOX) FreeConsole(); #endif break; diff --git a/thread.c b/thread.c index b97b33ec28..aff5c0b78c 100644 --- a/thread.c +++ b/thread.c @@ -18,9 +18,11 @@ #include "thread.h" #include -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_XBOX) #define WIN32_LEAN_AND_MEAN #include +#elif defined(_XBOX) +#include #else #include #include