This commit is contained in:
ekeeke 2019-01-09 01:12:25 +01:00
commit 6057f7aa2a
8 changed files with 1399 additions and 135 deletions

3
.gitignore vendored
View File

@ -13,3 +13,6 @@ sdl/build_sdl
sdl/build_sdl2
/libretro/msvc/msvc-2017/msvc-2017.vcxproj.user
*.o
*.a

View File

@ -240,6 +240,15 @@ else ifeq ($(platform), switch)
STATIC_LINKING=1
STATIC_LINKING_LINK=1
# Nintendo Switch (libnx)
else ifeq ($(platform), libnx)
include $(DEVKITPRO)/libnx/switch_rules
TARGET := $(TARGET_NAME)_libretro_$(platform).a
CFLAGS += -D__SWITCH__ -DHAVE_LIBNX -I$(LIBNX)/include/ -fPIE -Wl,--allow-multiple-definition -specs=$(LIBNX)/switch.specs
PLATFORM_DEFINES += -DARM -march=armv8-a -mtune=cortex-a57 -mtp=soft -DLSB_FIRST -DBYTE_ORDER=LITTLE_ENDIAN -D__LIBRETRO__ -DALIGN_LONG -DALIGN_WORD -DM68K_OVERCLOCK_SHIFT=20 -DHAVE_ZLIB
STATIC_LINKING=1
STATIC_LINKING_LINK=1
# emscripten
else ifeq ($(platform), emscripten)
TARGET := $(TARGET_NAME)_libretro_$(platform).bc

View File

@ -450,6 +450,7 @@ enum retro_key
RETROK_POWER = 320,
RETROK_EURO = 321,
RETROK_UNDO = 322,
RETROK_OEM_102 = 323,
RETROK_LAST,
@ -599,9 +600,12 @@ enum retro_mod
* GET_VARIABLE.
* This allows the frontend to present these variables to
* a user dynamically.
* This should be called as early as possible (ideally in
* retro_set_environment).
*
* This should be called the first time as early as
* possible (ideally in retro_set_environment).
* Afterward it may be called again for the core to communicate
* updated options to the frontend, but the number of core
* options must not change from the number in the initial call.
*
* 'data' points to an array of retro_variable structs
* terminated by a { NULL, NULL } element.
* retro_variable::key should be namespaced to not collide
@ -654,6 +658,15 @@ enum retro_mod
/* Environment 20 was an obsolete version of SET_AUDIO_CALLBACK.
* It was not used by any known core at the time,
* and was removed from the API. */
#define RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK 21
/* const struct retro_frame_time_callback * --
* Lets the core know how much time has passed since last
* invocation of retro_run().
* The frontend can tamper with the timing to fake fast-forward,
* slow-motion, frame stepping, etc.
* In this case the delta time will use the reference value
* in frame_time_callback..
*/
#define RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK 22
/* const struct retro_audio_callback * --
* Sets an interface which is used to notify a libretro core about audio
@ -680,15 +693,6 @@ enum retro_mod
* A libretro core using SET_AUDIO_CALLBACK should also make use of
* SET_FRAME_TIME_CALLBACK.
*/
#define RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK 21
/* const struct retro_frame_time_callback * --
* Lets the core know how much time has passed since last
* invocation of retro_run().
* The frontend can tamper with the timing to fake fast-forward,
* slow-motion, frame stepping, etc.
* In this case the delta time will use the reference value
* in frame_time_callback..
*/
#define RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE 23
/* struct retro_rumble_interface * --
* Gets an interface which is used by a libretro core to set
@ -775,17 +779,18 @@ enum retro_mod
*/
#define RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY 31
/* const char ** --
* Returns the "save" directory of the frontend.
* This directory can be used to store SRAM, memory cards,
* high scores, etc, if the libretro core
* Returns the "save" directory of the frontend, unless there is no
* save directory available. The save directory should be used to
* store SRAM, memory cards, high scores, etc, if the libretro core
* cannot use the regular memory interface (retro_get_memory_data()).
*
* NOTE: libretro cores used to check GET_SYSTEM_DIRECTORY for
* similar things before.
* They should still check GET_SYSTEM_DIRECTORY if they want to
* be backwards compatible.
* The path here can be NULL. It should only be non-NULL if the
* frontend user has set a specific save path.
* If the frontend cannot designate a save directory, it will return
* NULL to indicate that the core should attempt to operate without a
* save directory set.
*
* NOTE: early libretro cores used the system directory for save
* files. Cores that need to be backwards-compatible can still check
* GET_SYSTEM_DIRECTORY.
*/
#define RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO 32
/* const struct retro_system_av_info * --
@ -853,26 +858,39 @@ enum retro_mod
#define RETRO_ENVIRONMENT_SET_CONTROLLER_INFO 35
/* const struct retro_controller_info * --
* This environment call lets a libretro core tell the frontend
* which controller types are recognized in calls to
* which controller subclasses are recognized in calls to
* retro_set_controller_port_device().
*
* Some emulators such as Super Nintendo
* support multiple lightgun types which must be specifically
* selected from.
* It is therefore sometimes necessary for a frontend to be able
* to tell the core about a special kind of input device which is
* not covered by the libretro input API.
* Some emulators such as Super Nintendo support multiple lightgun
* types which must be specifically selected from. It is therefore
* sometimes necessary for a frontend to be able to tell the core
* about a special kind of input device which is not specifcally
* provided by the Libretro API.
*
* In order for a frontend to understand the workings of an input device,
* it must be a specialized type
* of the generic device types already defined in the libretro API.
* In order for a frontend to understand the workings of those devices,
* they must be defined as a specialized subclass of the generic device
* types already defined in the libretro API.
*
* Which devices are supported can vary per input port.
* The core must pass an array of const struct retro_controller_info which
* is terminated with a blanked out struct. Each element of the struct
* corresponds to an ascending port index to
* retro_set_controller_port_device().
* Even if special device types are set in the libretro core,
* is terminated with a blanked out struct. Each element of the
* retro_controller_info struct corresponds to the ascending port index
* that is passed to retro_set_controller_port_device() when that function
* is called to indicate to the core that the frontend has changed the
* active device subclass. SEE ALSO: retro_set_controller_port_device()
*
* The ascending input port indexes provided by the core in the struct
* are generally presented by frontends as ascending User # or Player #,
* such as Player 1, Player 2, Player 3, etc. Which device subclasses are
* supported can vary per input port.
*
* The first inner element of each entry in the retro_controller_info array
* is a retro_controller_description struct that specifies the names and
* codes of all device subclasses that are available for the corresponding
* User or Player, beginning with the generic Libretro device that the
* subclasses are derived from. The second inner element of each entry is the
* total number of subclasses that are listed in the retro_controller_description.
*
* NOTE: Even if special device types are set in the libretro core,
* libretro should only poll input based on the base input device types.
*/
#define RETRO_ENVIRONMENT_SET_MEMORY_MAPS (36 | RETRO_ENVIRONMENT_EXPERIMENTAL)
@ -951,7 +969,37 @@ enum retro_mod
* A frontend must make sure that the pointer obtained from this function is
* writeable (and readable).
*/
#define RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE (41 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* const struct retro_hw_render_interface ** --
* Returns an API specific rendering interface for accessing API specific data.
* Not all HW rendering APIs support or need this.
* The contents of the returned pointer is specific to the rendering API
* being used. See the various headers like libretro_vulkan.h, etc.
*
* GET_HW_RENDER_INTERFACE cannot be called before context_reset has been called.
* Similarly, after context_destroyed callback returns,
* the contents of the HW_RENDER_INTERFACE are invalidated.
*/
#define RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS (42 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* const bool * --
* If true, the libretro implementation supports achievements
* either via memory descriptors set with RETRO_ENVIRONMENT_SET_MEMORY_MAPS
* or via retro_get_memory_data/retro_get_memory_size.
*
* This must be called before the first call to retro_run.
*/
#define RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE (43 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* const struct retro_hw_render_context_negotiation_interface * --
* Sets an interface which lets the libretro core negotiate with frontend how a context is created.
* The semantics of this interface depends on which API is used in SET_HW_RENDER earlier.
* This interface will be used when the frontend is trying to create a HW rendering context,
* so it will be used after SET_HW_RENDER, but before the context_reset callback.
*/
#define RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS 44
/* uint64_t * --
* Sets quirk flags associated with serialization. The frontend will zero any flags it doesn't
* recognize or support. Should be set in either retro_init or retro_load_game, but not both.
*/
#define RETRO_ENVIRONMENT_SET_HW_SHARED_CONTEXT (44 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* N/A (null) * --
* The frontend will try to use a 'shared' hardware context (mostly applicable
@ -963,14 +1011,70 @@ enum retro_mod
* This will do nothing on its own until SET_HW_RENDER env callbacks are
* being used.
*/
#define RETRO_ENVIRONMENT_GET_VFS_INTERFACE (45 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* struct retro_vfs_interface_info * --
* Gets access to the VFS interface.
* VFS presence needs to be queried prior to load_game or any
* get_system/save/other_directory being called to let front end know
* core supports VFS before it starts handing out paths.
* It is recomended to do so in retro_set_environment */
* It is recomended to do so in retro_set_environment
*/
#define RETRO_ENVIRONMENT_GET_LED_INTERFACE (46 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* struct retro_led_interface * --
* Gets an interface which is used by a libretro core to set
* state of LEDs.
*/
#define RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE (47 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* int * --
* Tells the core if the frontend wants audio or video.
* If disabled, the frontend will discard the audio or video,
* so the core may decide to skip generating a frame or generating audio.
* This is mainly used for increasing performance.
* Bit 0 (value 1): Enable Video
* Bit 1 (value 2): Enable Audio
* Bit 2 (value 4): Use Fast Savestates.
* Bit 3 (value 8): Hard Disable Audio
* Other bits are reserved for future use and will default to zero.
* If video is disabled:
* * The frontend wants the core to not generate any video,
* including presenting frames via hardware acceleration.
* * The frontend's video frame callback will do nothing.
* * After running the frame, the video output of the next frame should be
* no different than if video was enabled, and saving and loading state
* should have no issues.
* If audio is disabled:
* * The frontend wants the core to not generate any audio.
* * The frontend's audio callbacks will do nothing.
* * After running the frame, the audio output of the next frame should be
* no different than if audio was enabled, and saving and loading state
* should have no issues.
* Fast Savestates:
* * Guaranteed to be created by the same binary that will load them.
* * Will not be written to or read from the disk.
* * Suggest that the core assumes loading state will succeed.
* * Suggest that the core updates its memory buffers in-place if possible.
* * Suggest that the core skips clearing memory.
* * Suggest that the core skips resetting the system.
* * Suggest that the core may skip validation steps.
* Hard Disable Audio:
* * Used for a secondary core when running ahead.
* * Indicates that the frontend will never need audio from the core.
* * Suggests that the core may stop synthesizing audio, but this should not
* compromise emulation accuracy.
* * Audio output for the next frame does not matter, and the frontend will
* never need an accurate audio state in the future.
* * State will never be saved when using Hard Disable Audio.
*/
#define RETRO_ENVIRONMENT_GET_MIDI_INTERFACE (48 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* struct retro_midi_interface ** --
* Returns a MIDI interface that can be used for raw data I/O.
*/
#define RETRO_ENVIRONMENT_GET_FASTFORWARDING (49 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* bool * --
* Boolean value that indicates whether or not the frontend is in
* fastforwarding mode.
*/
/* VFS functionality */
@ -1030,6 +1134,10 @@ typedef int (RETRO_CALLCONV *retro_vfs_close_t)(struct retro_vfs_file_handle *st
* Introduced in VFS API v1 */
typedef int64_t (RETRO_CALLCONV *retro_vfs_size_t)(struct retro_vfs_file_handle *stream);
/* Truncate file to specified size. Returns 0 on success or -1 on error
* Introduced in VFS API v2 */
typedef int64_t (RETRO_CALLCONV *retro_vfs_truncate_t)(struct retro_vfs_file_handle *stream, int64_t length);
/* Get the current read / write position for the file. Returns - 1 for error.
* Introduced in VFS API v1 */
typedef int64_t (RETRO_CALLCONV *retro_vfs_tell_t)(struct retro_vfs_file_handle *stream);
@ -1060,6 +1168,7 @@ typedef int (RETRO_CALLCONV *retro_vfs_rename_t)(const char *old_path, const cha
struct retro_vfs_interface
{
/* VFS API v1 */
retro_vfs_get_path_t get_path;
retro_vfs_open_t open;
retro_vfs_close_t close;
@ -1071,6 +1180,8 @@ struct retro_vfs_interface
retro_vfs_flush_t flush;
retro_vfs_remove_t remove;
retro_vfs_rename_t rename;
/* VFS API v2 */
retro_vfs_truncate_t truncate;
};
struct retro_vfs_interface_info
@ -1104,81 +1215,41 @@ struct retro_hw_render_interface
unsigned interface_version;
};
#define RETRO_ENVIRONMENT_GET_LED_INTERFACE (46 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* struct retro_led_interface * --
* Gets an interface which is used by a libretro core to set
* state of LEDs.
*/
typedef void (RETRO_CALLCONV *retro_set_led_state_t)(int led, int state);
struct retro_led_interface
{
retro_set_led_state_t set_led_state;
};
#define RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE (47 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* int * --
* Tells the core if the frontend wants audio or video.
* If disabled, the frontend will discard the audio or video,
* so the core may decide to skip generating a frame or generating audio.
* This is mainly used for increasing performance.
* Bit 0 (value 1): Enable Video
* Bit 1 (value 2): Enable Audio
* Bit 2 (value 4): Use Fast Savestates.
* Bit 3 (value 8): Hard Disable Audio
* Other bits are reserved for future use and will default to zero.
* If video is disabled:
* * The frontend wants the core to not generate any video,
* including presenting frames via hardware acceleration.
* * The frontend's video frame callback will do nothing.
* * After running the frame, the video output of the next frame should be
* no different than if video was enabled, and saving and loading state
* should have no issues.
* If audio is disabled:
* * The frontend wants the core to not generate any audio.
* * The frontend's audio callbacks will do nothing.
* * After running the frame, the audio output of the next frame should be
* no different than if audio was enabled, and saving and loading state
* should have no issues.
* Fast Savestates:
* * Guaranteed to be created by the same binary that will load them.
* * Will not be written to or read from the disk.
* * Suggest that the core assumes loading state will succeed.
* * Suggest that the core updates its memory buffers in-place if possible.
* * Suggest that the core skips clearing memory.
* * Suggest that the core skips resetting the system.
* * Suggest that the core may skip validation steps.
* Hard Disable Audio:
* * Used for a secondary core when running ahead.
* * Indicates that the frontend will never need audio from the core.
* * Suggests that the core may stop synthesizing audio, but this should not
* compromise emulation accuracy.
* * Audio output for the next frame does not matter, and the frontend will
* never need an accurate audio state in the future.
* * State will never be saved when using Hard Disable Audio.
*/
/* Retrieves the current state of the MIDI input.
* Returns true if it's enabled, false otherwise. */
typedef bool (RETRO_CALLCONV *retro_midi_input_enabled_t)(void);
#define RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE (41 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* const struct retro_hw_render_interface ** --
* Returns an API specific rendering interface for accessing API specific data.
* Not all HW rendering APIs support or need this.
* The contents of the returned pointer is specific to the rendering API
* being used. See the various headers like libretro_vulkan.h, etc.
*
* GET_HW_RENDER_INTERFACE cannot be called before context_reset has been called.
* Similarly, after context_destroyed callback returns,
* the contents of the HW_RENDER_INTERFACE are invalidated.
*/
/* Retrieves the current state of the MIDI output.
* Returns true if it's enabled, false otherwise */
typedef bool (RETRO_CALLCONV *retro_midi_output_enabled_t)(void);
#define RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS (42 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* const bool * --
* If true, the libretro implementation supports achievements
* either via memory descriptors set with RETRO_ENVIRONMENT_SET_MEMORY_MAPS
* or via retro_get_memory_data/retro_get_memory_size.
*
* This must be called before the first call to retro_run.
*/
/* Reads next byte from the input stream.
* Returns true if byte is read, false otherwise. */
typedef bool (RETRO_CALLCONV *retro_midi_read_t)(uint8_t *byte);
/* Writes byte to the output stream.
* 'delta_time' is in microseconds and represent time elapsed since previous write.
* Returns true if byte is written, false otherwise. */
typedef bool (RETRO_CALLCONV *retro_midi_write_t)(uint8_t byte, uint32_t delta_time);
/* Flushes previously written data.
* Returns true if successful, false otherwise. */
typedef bool (RETRO_CALLCONV *retro_midi_flush_t)(void);
struct retro_midi_interface
{
retro_midi_input_enabled_t input_enabled;
retro_midi_output_enabled_t output_enabled;
retro_midi_read_t read;
retro_midi_write_t write;
retro_midi_flush_t flush;
};
enum retro_hw_render_context_negotiation_interface_type
{
@ -1193,13 +1264,6 @@ struct retro_hw_render_context_negotiation_interface
enum retro_hw_render_context_negotiation_interface_type interface_type;
unsigned interface_version;
};
#define RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE (43 | RETRO_ENVIRONMENT_EXPERIMENTAL)
/* const struct retro_hw_render_context_negotiation_interface * --
* Sets an interface which lets the libretro core negotiate with frontend how a context is created.
* The semantics of this interface depends on which API is used in SET_HW_RENDER earlier.
* This interface will be used when the frontend is trying to create a HW rendering context,
* so it will be used after SET_HW_RENDER, but before the context_reset callback.
*/
/* Serialized state is incomplete in some way. Set if serialization is
* usable in typical end-user cases but should not be relied upon to
@ -1225,12 +1289,6 @@ struct retro_hw_render_context_negotiation_interface
* dependence */
#define RETRO_SERIALIZATION_QUIRK_PLATFORM_DEPENDENT (1 << 6)
#define RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS 44
/* uint64_t * --
* Sets quirk flags associated with serialization. The frontend will zero any flags it doesn't
* recognize or support. Should be set in either retro_init or retro_load_game, but not both.
*/
#define RETRO_MEMDESC_CONST (1 << 0) /* The frontend will never change this memory area once retro_load_game has returned. */
#define RETRO_MEMDESC_BIGENDIAN (1 << 1) /* The memory area contains big endian data. Default is little endian. */
#define RETRO_MEMDESC_ALIGN_2 (1 << 16) /* All memory access in this area is aligned to their own size, or 2, whichever is smaller. */
@ -2138,17 +2196,26 @@ struct retro_system_info
* Typically used for a GUI to filter
* out extensions. */
/* If true, retro_load_game() is guaranteed to provide a valid pathname
* in retro_game_info::path.
* ::data and ::size are both invalid.
/* Libretro cores that need to have direct access to their content
* files, including cores which use the path of the content files to
* determine the paths of other files, should set need_fullpath to true.
*
* If false, ::data and ::size are guaranteed to be valid, but ::path
* might not be valid.
* Cores should strive for setting need_fullpath to false,
* as it allows the frontend to perform patching, etc.
*
* This is typically set to true for libretro implementations that must
* load from file.
* Implementations should strive for setting this to false, as it allows
* the frontend to perform patching, etc. */
* If need_fullpath is true and retro_load_game() is called:
* - retro_game_info::path is guaranteed to have a valid path
* - retro_game_info::data and retro_game_info::size are invalid
*
* If need_fullpath is false and retro_load_game() is called:
* - retro_game_info::path may be NULL
* - retro_game_info::data and retro_game_info::size are guaranteed
* to be valid
*
* See also:
* - RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
* - RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY
*/
bool need_fullpath;
/* If true, the frontend is not allowed to extract any archives before
@ -2333,7 +2400,13 @@ RETRO_API void retro_get_system_av_info(struct retro_system_av_info *info);
* will only poll input based on that particular device type. It is only a
* hint to the libretro core when a core cannot automatically detect the
* appropriate input device type on its own. It is also relevant when a
* core can change its behavior depending on device type. */
* core can change its behavior depending on device type.
*
* As part of the core's implementation of retro_set_controller_port_device,
* the core should call RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS to notify the
* frontend if the descriptions for any controls have changed as a
* result of changing the device type.
*/
RETRO_API void retro_set_controller_port_device(unsigned port, unsigned device);
/* Resets the current game. */
@ -2365,7 +2438,9 @@ RETRO_API bool retro_unserialize(const void *data, size_t size);
RETRO_API void retro_cheat_reset(void);
RETRO_API void retro_cheat_set(unsigned index, bool enabled, const char *code);
/* Loads a game. */
/* Loads a game.
* Return true to indicate successful loading and false to indicate load failure.
*/
RETRO_API bool retro_load_game(const struct retro_game_info *game);
/* Loads a "special" kind of game. Should not be used,
@ -2375,7 +2450,7 @@ RETRO_API bool retro_load_game_special(
const struct retro_game_info *info, size_t num_info
);
/* Unloads a currently loaded game. */
/* Unloads the currently loaded game. Called before retro_deinit(void). */
RETRO_API void retro_unload_game(void);
/* Gets region of game. */

View File

@ -362,14 +362,22 @@ void osd_input_update(void)
case DEVICE_LIGHTGUN:
{
input.analog[i][0] = ((input_state_cb(player, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_X) + 0x7fff) * bitmap.viewport.w) / 0xfffe;
input.analog[i][1] = ((input_state_cb(player, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_Y) + 0x7fff) * bitmap.viewport.h) / 0xfffe;
if ( input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN) )
{
input.analog[i][0] = -1000;
input.analog[i][1] = -1000;
}
else
{
input.analog[i][0] = ((input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X) + 0x7fff) * bitmap.viewport.w) / 0xfffe;
input.analog[i][1] = ((input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_SCREEN_Y) + 0x7fff) * bitmap.viewport.h) / 0xfffe;
}
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_TRIGGER))
temp |= INPUT_A;
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_TURBO))
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_AUX_A))
temp |= INPUT_B;
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_PAUSE))
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_AUX_B))
temp |= INPUT_C;
if (input_state_cb(player, RETRO_DEVICE_LIGHTGUN, 0, RETRO_DEVICE_ID_LIGHTGUN_START))
temp |= INPUT_START;
@ -520,6 +528,10 @@ static void draw_cursor(int16_t x, int16_t y, uint16_t color)
int y_start = y - 3;
int y_end = y + 3;
/* off-screen? */
if ( x < 0 && y < 0 )
return;
/* framebuffer limits */
if (x_start < -bitmap.viewport.x) x_start = -bitmap.viewport.x;
if (x_end >= (bitmap.viewport.w + bitmap.viewport.x)) x_end = bitmap.viewport.w + bitmap.viewport.x - 1;

View File

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.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>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>genesisplusgxlibretro</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;DEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;DEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;NDEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;NDEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\core\cart_hw\areplay.c" />
<ClCompile Include="..\..\core\cart_hw\eeprom_93c.c" />
<ClCompile Include="..\..\core\cart_hw\eeprom_i2c.c" />
<ClCompile Include="..\..\core\cart_hw\eeprom_spi.c" />
<ClCompile Include="..\..\core\cart_hw\ggenie.c" />
<ClCompile Include="..\..\core\cart_hw\md_cart.c" />
<ClCompile Include="..\..\core\cart_hw\sms_cart.c" />
<ClCompile Include="..\..\core\cart_hw\sram.c" />
<ClCompile Include="..\..\core\cart_hw\svp\ssp16.c" />
<ClCompile Include="..\..\core\cart_hw\svp\svp.c" />
<ClCompile Include="..\..\core\cd_hw\cdc.c" />
<ClCompile Include="..\..\core\cd_hw\cdd.c" />
<ClCompile Include="..\..\core\cd_hw\cd_cart.c" />
<ClCompile Include="..\..\core\cd_hw\gfx.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\bitmath.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\bitreader.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\cpu.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\crc.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\fixed.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\float.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\format.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_avx2.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_sse.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_sse2.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_sse41.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\md5.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\memory.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\stream_decoder.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\lzma\LzFind.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaDec.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaEnc.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\adler32.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\inffast.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\inflate.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\inftrees.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\zutil.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\src\bitstream.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\src\cdrom.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\src\chd.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\src\flac.c" />
<ClCompile Include="..\..\core\cd_hw\libchdr\src\huffman.c" />
<ClCompile Include="..\..\core\cd_hw\pcm.c" />
<ClCompile Include="..\..\core\cd_hw\scd.c" />
<ClCompile Include="..\..\core\genesis.c" />
<ClCompile Include="..\..\core\input_hw\activator.c" />
<ClCompile Include="..\..\core\input_hw\gamepad.c" />
<ClCompile Include="..\..\core\input_hw\graphic_board.c" />
<ClCompile Include="..\..\core\input_hw\input.c" />
<ClCompile Include="..\..\core\input_hw\lightgun.c" />
<ClCompile Include="..\..\core\input_hw\mouse.c" />
<ClCompile Include="..\..\core\input_hw\paddle.c" />
<ClCompile Include="..\..\core\input_hw\sportspad.c" />
<ClCompile Include="..\..\core\input_hw\teamplayer.c" />
<ClCompile Include="..\..\core\input_hw\terebi_oekaki.c" />
<ClCompile Include="..\..\core\input_hw\xe_1ap.c" />
<ClCompile Include="..\..\core\io_ctrl.c" />
<ClCompile Include="..\..\core\loadrom.c" />
<ClCompile Include="..\..\core\m68k\m68kcpu.c" />
<ClCompile Include="..\..\core\m68k\s68kcpu.c" />
<ClCompile Include="..\..\core\mem68k.c" />
<ClCompile Include="..\..\core\membnk.c" />
<ClCompile Include="..\..\core\memz80.c" />
<ClCompile Include="..\..\core\ntsc\md_ntsc.c" />
<ClCompile Include="..\..\core\ntsc\sms_ntsc.c" />
<ClCompile Include="..\..\core\sound\blip_buf.c" />
<ClCompile Include="..\..\core\sound\eq.c" />
<ClCompile Include="..\..\core\sound\psg.c" />
<ClCompile Include="..\..\core\sound\sound.c" />
<ClCompile Include="..\..\core\sound\ym2413.c" />
<ClCompile Include="..\..\core\sound\ym2612.c" />
<ClCompile Include="..\..\core\sound\ym3438.c" />
<ClCompile Include="..\..\core\state.c" />
<ClCompile Include="..\..\core\system.c" />
<ClCompile Include="..\..\core\tremor\bitwise.c" />
<ClCompile Include="..\..\core\tremor\block.c" />
<ClCompile Include="..\..\core\tremor\codebook.c" />
<ClCompile Include="..\..\core\tremor\floor0.c" />
<ClCompile Include="..\..\core\tremor\floor1.c" />
<ClCompile Include="..\..\core\tremor\framing.c" />
<ClCompile Include="..\..\core\tremor\info.c" />
<ClCompile Include="..\..\core\tremor\mapping0.c" />
<ClCompile Include="..\..\core\tremor\mdct.c" />
<ClCompile Include="..\..\core\tremor\registry.c" />
<ClCompile Include="..\..\core\tremor\res012.c" />
<ClCompile Include="..\..\core\tremor\sharedbook.c" />
<ClCompile Include="..\..\core\tremor\synthesis.c" />
<ClCompile Include="..\..\core\tremor\vorbisfile.c" />
<ClCompile Include="..\..\core\tremor\window.c" />
<ClCompile Include="..\..\core\vdp_ctrl.c" />
<ClCompile Include="..\..\core\vdp_render.c" />
<ClCompile Include="..\..\core\z80\z80.c" />
<ClCompile Include="..\libretro-common\compat\compat_strl.c" />
<ClCompile Include="..\libretro-common\compat\fopen_utf8.c" />
<ClCompile Include="..\libretro-common\encodings\encoding_utf.c" />
<ClCompile Include="..\libretro-common\streams\file_stream.c" />
<ClCompile Include="..\libretro-common\streams\file_stream_transforms.c" />
<ClCompile Include="..\libretro-common\vfs\vfs_implementation.c" />
<ClCompile Include="..\libretro.c" />
<ClCompile Include="..\scrc32.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\core\cart_hw\areplay.h" />
<ClInclude Include="..\..\core\cart_hw\eeprom_93c.h" />
<ClInclude Include="..\..\core\cart_hw\eeprom_i2c.h" />
<ClInclude Include="..\..\core\cart_hw\eeprom_spi.h" />
<ClInclude Include="..\..\core\cart_hw\ggenie.h" />
<ClInclude Include="..\..\core\cart_hw\md_cart.h" />
<ClInclude Include="..\..\core\cart_hw\sms_cart.h" />
<ClInclude Include="..\..\core\cart_hw\sram.h" />
<ClInclude Include="..\..\core\cart_hw\svp\ssp16.h" />
<ClInclude Include="..\..\core\cart_hw\svp\svp.h" />
<ClInclude Include="..\..\core\cd_hw\cdc.h" />
<ClInclude Include="..\..\core\cd_hw\cdd.h" />
<ClInclude Include="..\..\core\cd_hw\cd_cart.h" />
<ClInclude Include="..\..\core\cd_hw\gfx.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\assert.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\callback.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\export.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\format.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\metadata.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\ordinals.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\stream_decoder.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\bitmath.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\bitreader.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\cpu.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\crc.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\fixed.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\float.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\format.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\lpc.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\macros.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\md5.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\memory.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\protected\stream_decoder.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\share\alloc.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\share\compat.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\share\endswap.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\7zTypes.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\Compiler.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzFind.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzHash.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaDec.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaEnc.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\Precomp.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\gzguts.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inffast.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inffixed.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inflate.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inftrees.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\zconf.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\zlib.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\zutil.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\src\bitstream.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\src\cdrom.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\src\chd.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\src\coretypes.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\src\flac.h" />
<ClInclude Include="..\..\core\cd_hw\libchdr\src\huffman.h" />
<ClInclude Include="..\..\core\cd_hw\pcm.h" />
<ClInclude Include="..\..\core\cd_hw\scd.h" />
<ClInclude Include="..\..\core\genesis.h" />
<ClInclude Include="..\..\core\input_hw\activator.h" />
<ClInclude Include="..\..\core\input_hw\gamepad.h" />
<ClInclude Include="..\..\core\input_hw\graphic_board.h" />
<ClInclude Include="..\..\core\input_hw\input.h" />
<ClInclude Include="..\..\core\input_hw\lightgun.h" />
<ClInclude Include="..\..\core\input_hw\mouse.h" />
<ClInclude Include="..\..\core\input_hw\paddle.h" />
<ClInclude Include="..\..\core\input_hw\sportspad.h" />
<ClInclude Include="..\..\core\input_hw\teamplayer.h" />
<ClInclude Include="..\..\core\input_hw\terebi_oekaki.h" />
<ClInclude Include="..\..\core\input_hw\xe_1ap.h" />
<ClInclude Include="..\..\core\io_ctrl.h" />
<ClInclude Include="..\..\core\loadrom.h" />
<ClInclude Include="..\..\core\m68k\m68k.h" />
<ClInclude Include="..\..\core\m68k\m68kconf.h" />
<ClInclude Include="..\..\core\m68k\m68kcpu.h" />
<ClInclude Include="..\..\core\m68k\m68ki_cycles.h" />
<ClInclude Include="..\..\core\m68k\m68ki_instruction_jump_table.h" />
<ClInclude Include="..\..\core\m68k\m68kops.h" />
<ClInclude Include="..\..\core\m68k\s68kconf.h" />
<ClInclude Include="..\..\core\m68k\s68ki_cycles.h" />
<ClInclude Include="..\..\core\mem68k.h" />
<ClInclude Include="..\..\core\membnk.h" />
<ClInclude Include="..\..\core\memz80.h" />
<ClInclude Include="..\..\core\ntsc\md_ntsc.h" />
<ClInclude Include="..\..\core\ntsc\md_ntsc_config.h" />
<ClInclude Include="..\..\core\ntsc\md_ntsc_impl.h" />
<ClInclude Include="..\..\core\ntsc\sms_ntsc.h" />
<ClInclude Include="..\..\core\ntsc\sms_ntsc_config.h" />
<ClInclude Include="..\..\core\ntsc\sms_ntsc_impl.h" />
<ClInclude Include="..\..\core\shared.h" />
<ClInclude Include="..\..\core\sound\blip_buf.h" />
<ClInclude Include="..\..\core\sound\eq.h" />
<ClInclude Include="..\..\core\sound\psg.h" />
<ClInclude Include="..\..\core\sound\sound.h" />
<ClInclude Include="..\..\core\sound\ym2413.h" />
<ClInclude Include="..\..\core\sound\ym2612.h" />
<ClInclude Include="..\..\core\sound\ym3438.h" />
<ClInclude Include="..\..\core\state.h" />
<ClInclude Include="..\..\core\system.h" />
<ClInclude Include="..\..\core\tremor\block.h" />
<ClInclude Include="..\..\core\tremor\codebook.h" />
<ClInclude Include="..\..\core\tremor\codec_internal.h" />
<ClInclude Include="..\..\core\tremor\config_types.h" />
<ClInclude Include="..\..\core\tremor\ivorbiscodec.h" />
<ClInclude Include="..\..\core\tremor\ivorbisfile.h" />
<ClInclude Include="..\..\core\tremor\lsp_lookup.h" />
<ClInclude Include="..\..\core\tremor\mdct.h" />
<ClInclude Include="..\..\core\tremor\mdct_lookup.h" />
<ClInclude Include="..\..\core\tremor\misc.h" />
<ClInclude Include="..\..\core\tremor\ogg.h" />
<ClInclude Include="..\..\core\tremor\os.h" />
<ClInclude Include="..\..\core\tremor\os_types.h" />
<ClInclude Include="..\..\core\tremor\registry.h" />
<ClInclude Include="..\..\core\tremor\window.h" />
<ClInclude Include="..\..\core\tremor\window_lookup.h" />
<ClInclude Include="..\..\core\vdp_ctrl.h" />
<ClInclude Include="..\..\core\vdp_render.h" />
<ClInclude Include="..\..\core\z80\z80.h" />
<ClInclude Include="..\osd.h" />
<ClInclude Include="..\scrc32.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,753 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="core">
<UniqueIdentifier>{df0fe89f-e213-4e78-b61e-7a224d2c4de0}</UniqueIdentifier>
</Filter>
<Filter Include="core\z80">
<UniqueIdentifier>{5e36c995-a849-4ce9-a668-3a0a0abc21bb}</UniqueIdentifier>
</Filter>
<Filter Include="core\sound">
<UniqueIdentifier>{eae16720-2758-4093-a6ae-13c949167029}</UniqueIdentifier>
</Filter>
<Filter Include="libretro">
<UniqueIdentifier>{989595b6-5193-4aef-bd94-0b9ebb0d8edf}</UniqueIdentifier>
</Filter>
<Filter Include="libretro\libretro-common">
<UniqueIdentifier>{cdaa7fe7-19d5-45e8-bca3-53b55118c59e}</UniqueIdentifier>
</Filter>
<Filter Include="libretro\libretro-common\streams">
<UniqueIdentifier>{4f9eb27c-0486-423c-9e5d-be80fa351267}</UniqueIdentifier>
</Filter>
<Filter Include="libretro\libretro-common\compat">
<UniqueIdentifier>{65a7467c-e1f3-4008-83ca-280ee9e52e30}</UniqueIdentifier>
</Filter>
<Filter Include="libretro\libretro-common\encodings">
<UniqueIdentifier>{deef004c-aec6-4993-b5f6-4da6a53b6e6e}</UniqueIdentifier>
</Filter>
<Filter Include="libretro\libretro-common\vfs">
<UniqueIdentifier>{709a945a-c951-4f3d-8beb-73318cddf8d8}</UniqueIdentifier>
</Filter>
<Filter Include="core\tremor">
<UniqueIdentifier>{d70ba8a3-d68a-4d2d-b068-18b88b2e1fbe}</UniqueIdentifier>
</Filter>
<Filter Include="core\cart_hw">
<UniqueIdentifier>{ec52a1a3-e92b-416d-89b0-f567be4e4807}</UniqueIdentifier>
</Filter>
<Filter Include="core\cart_hw\svp">
<UniqueIdentifier>{697ebb65-2656-4a27-a2b0-6b323eff9cac}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw">
<UniqueIdentifier>{04faa22e-0710-4c23-8aa3-3b9c3c45c0b2}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr">
<UniqueIdentifier>{c848162f-9be7-4e0a-8f07-434fbcb898df}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\src">
<UniqueIdentifier>{7eed7ffb-f309-4f79-87ca-96de690bd264}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps">
<UniqueIdentifier>{d9b1d470-fa8e-44d7-8a86-a17038911505}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\zlib">
<UniqueIdentifier>{cca2a9d1-0910-47d9-9dfd-6568c6ca43cd}</UniqueIdentifier>
</Filter>
<Filter Include="core\input_hw">
<UniqueIdentifier>{15e1fa75-1847-49fd-96d8-93b1ca567c15}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\libFLAC">
<UniqueIdentifier>{0220cfbc-1ffa-456e-b325-03805d2c418c}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\libFLAC\include">
<UniqueIdentifier>{f1abfc09-b381-4dc0-84f5-ef25694664b9}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\libFLAC\include\share">
<UniqueIdentifier>{2da0d031-69e0-43bc-b580-e999031a9db2}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\lzma">
<UniqueIdentifier>{f644abdc-7783-41d4-9bec-31840429521c}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\libFLAC\include\FLAC">
<UniqueIdentifier>{eb6a2018-d386-4af0-8230-97a05d41d32d}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\libFLAC\include\private">
<UniqueIdentifier>{0c398821-7f40-4bfb-963d-d211a210fe70}</UniqueIdentifier>
</Filter>
<Filter Include="core\cd_hw\libchdr\deps\libFLAC\include\protected">
<UniqueIdentifier>{571a0407-4e64-4c31-bd25-dbc6c107c2a2}</UniqueIdentifier>
</Filter>
<Filter Include="core\m68k">
<UniqueIdentifier>{e1e2aebc-602e-438e-a56d-055720719fff}</UniqueIdentifier>
</Filter>
<Filter Include="core\ntsc">
<UniqueIdentifier>{08366101-bc7b-4009-8f09-65804bdab6ea}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\core\cd_hw\libchdr\src\bitstream.c">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\src\cdrom.c">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\src\chd.c">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\src\flac.c">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\src\huffman.c">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\bitmath.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\bitreader.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\cpu.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\crc.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\fixed.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\float.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\format.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_avx2.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_sse.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_sse2.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\lpc_intrin_sse41.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\md5.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\memory.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\libFLAC\stream_decoder.c">
<Filter>core\cd_hw\libchdr\deps\libFLAC</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\lzma\LzFind.c">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaDec.c">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaEnc.c">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClCompile>
<ClCompile Include="..\..\core\genesis.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\io_ctrl.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\loadrom.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\mem68k.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\membnk.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\memz80.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\state.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\system.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\vdp_ctrl.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\vdp_render.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="..\..\core\z80\z80.c">
<Filter>core\z80</Filter>
</ClCompile>
<ClCompile Include="..\..\core\m68k\m68kcpu.c">
<Filter>core\m68k</Filter>
</ClCompile>
<ClCompile Include="..\..\core\m68k\s68kcpu.c">
<Filter>core\m68k</Filter>
</ClCompile>
<ClCompile Include="..\..\core\ntsc\md_ntsc.c">
<Filter>core\ntsc</Filter>
</ClCompile>
<ClCompile Include="..\..\core\ntsc\sms_ntsc.c">
<Filter>core\ntsc</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\blip_buf.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\eq.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\psg.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\sound.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\ym2413.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\ym2612.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\sound\ym3438.c">
<Filter>core\sound</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\activator.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\gamepad.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\graphic_board.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\input.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\lightgun.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\mouse.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\paddle.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\sportspad.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\teamplayer.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\terebi_oekaki.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\input_hw\xe_1ap.c">
<Filter>core\input_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\cd_cart.c">
<Filter>core\cd_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\cdc.c">
<Filter>core\cd_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\cdd.c">
<Filter>core\cd_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\gfx.c">
<Filter>core\cd_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\pcm.c">
<Filter>core\cd_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\scd.c">
<Filter>core\cd_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\areplay.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\eeprom_93c.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\eeprom_i2c.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\eeprom_spi.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\ggenie.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\md_cart.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\sms_cart.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\sram.c">
<Filter>core\cart_hw</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\svp\ssp16.c">
<Filter>core\cart_hw\svp</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cart_hw\svp\svp.c">
<Filter>core\cart_hw\svp</Filter>
</ClCompile>
<ClCompile Include="..\libretro-common\streams\file_stream.c">
<Filter>libretro\libretro-common\streams</Filter>
</ClCompile>
<ClCompile Include="..\libretro-common\streams\file_stream_transforms.c">
<Filter>libretro\libretro-common\streams</Filter>
</ClCompile>
<ClCompile Include="..\libretro-common\compat\compat_strl.c">
<Filter>libretro\libretro-common\compat</Filter>
</ClCompile>
<ClCompile Include="..\libretro-common\compat\fopen_utf8.c">
<Filter>libretro\libretro-common\compat</Filter>
</ClCompile>
<ClCompile Include="..\libretro-common\encodings\encoding_utf.c">
<Filter>libretro\libretro-common\encodings</Filter>
</ClCompile>
<ClCompile Include="..\libretro-common\vfs\vfs_implementation.c">
<Filter>libretro\libretro-common\vfs</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\adler32.c">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\inffast.c">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\inflate.c">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\inftrees.c">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClCompile>
<ClCompile Include="..\..\core\cd_hw\libchdr\deps\zlib\zutil.c">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\bitwise.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\block.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\codebook.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\floor0.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\floor1.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\framing.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\info.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\mapping0.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\mdct.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\registry.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\res012.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\sharedbook.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\synthesis.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\vorbisfile.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\..\core\tremor\window.c">
<Filter>core\tremor</Filter>
</ClCompile>
<ClCompile Include="..\libretro.c">
<Filter>libretro</Filter>
</ClCompile>
<ClCompile Include="..\scrc32.c">
<Filter>libretro</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\core\cd_hw\libchdr\src\bitstream.h">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\src\cdrom.h">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\src\chd.h">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\src\coretypes.h">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\src\flac.h">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\src\huffman.h">
<Filter>core\cd_hw\libchdr\src</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\7zTypes.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\Compiler.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzFind.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzHash.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaDec.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\LzmaEnc.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\lzma\Precomp.h">
<Filter>core\cd_hw\libchdr\deps\lzma</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\assert.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\callback.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\export.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\format.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\metadata.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\ordinals.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\FLAC\stream_decoder.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\FLAC</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\bitmath.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\bitreader.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\cpu.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\crc.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\fixed.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\float.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\format.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\lpc.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\macros.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\md5.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\private\memory.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\private</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\protected\stream_decoder.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\protected</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\share\alloc.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\share</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\share\compat.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\share</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\libFLAC\include\share\endswap.h">
<Filter>core\cd_hw\libchdr\deps\libFLAC\include\share</Filter>
</ClInclude>
<ClInclude Include="..\..\core\genesis.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\io_ctrl.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\loadrom.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\mem68k.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\membnk.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\memz80.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\state.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\system.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\vdp_ctrl.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\vdp_render.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\core\z80\z80.h">
<Filter>core\z80</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\m68kcpu.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\m68k.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\m68kconf.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\m68ki_cycles.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\m68ki_instruction_jump_table.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\m68kops.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\s68kconf.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\m68k\s68ki_cycles.h">
<Filter>core\m68k</Filter>
</ClInclude>
<ClInclude Include="..\..\core\ntsc\md_ntsc.h">
<Filter>core\ntsc</Filter>
</ClInclude>
<ClInclude Include="..\..\core\ntsc\md_ntsc_config.h">
<Filter>core\ntsc</Filter>
</ClInclude>
<ClInclude Include="..\..\core\ntsc\md_ntsc_impl.h">
<Filter>core\ntsc</Filter>
</ClInclude>
<ClInclude Include="..\..\core\ntsc\sms_ntsc.h">
<Filter>core\ntsc</Filter>
</ClInclude>
<ClInclude Include="..\..\core\ntsc\sms_ntsc_config.h">
<Filter>core\ntsc</Filter>
</ClInclude>
<ClInclude Include="..\..\core\ntsc\sms_ntsc_impl.h">
<Filter>core\ntsc</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\blip_buf.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\eq.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\psg.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\sound.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\ym2413.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\ym2612.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\sound\ym3438.h">
<Filter>core\sound</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\activator.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\gamepad.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\graphic_board.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\input.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\lightgun.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\mouse.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\paddle.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\sportspad.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\teamplayer.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\terebi_oekaki.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\input_hw\xe_1ap.h">
<Filter>core\input_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\cd_cart.h">
<Filter>core\cd_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\cdc.h">
<Filter>core\cd_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\cdd.h">
<Filter>core\cd_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\gfx.h">
<Filter>core\cd_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\pcm.h">
<Filter>core\cd_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\scd.h">
<Filter>core\cd_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\areplay.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\eeprom_93c.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\eeprom_i2c.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\eeprom_spi.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\ggenie.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\md_cart.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\sms_cart.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\sram.h">
<Filter>core\cart_hw</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\svp\ssp16.h">
<Filter>core\cart_hw\svp</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cart_hw\svp\svp.h">
<Filter>core\cart_hw\svp</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\gzguts.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inffast.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inffixed.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inflate.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\inftrees.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\zconf.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\zlib.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\cd_hw\libchdr\deps\zlib\zutil.h">
<Filter>core\cd_hw\libchdr\deps\zlib</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\block.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\codebook.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\codec_internal.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\config_types.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\ivorbiscodec.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\ivorbisfile.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\lsp_lookup.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\mdct.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\mdct_lookup.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\misc.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\ogg.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\os.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\os_types.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\registry.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\window.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\..\core\tremor\window_lookup.h">
<Filter>core\tremor</Filter>
</ClInclude>
<ClInclude Include="..\osd.h">
<Filter>libretro</Filter>
</ClInclude>
<ClInclude Include="..\scrc32.h">
<Filter>libretro</Filter>
</ClInclude>
<ClInclude Include="..\..\core\shared.h">
<Filter>core</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.136
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genesis_plus_gx_libretro", "genesis_plus_gx_libretro.vcxproj", "{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x64.ActiveCfg = Debug|x64
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x64.Build.0 = Debug|x64
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x86.ActiveCfg = Debug|Win32
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x86.Build.0 = Debug|Win32
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x64.ActiveCfg = Release|x64
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x64.Build.0 = Release|x64
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x86.ActiveCfg = Release|Win32
{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3D50B6EB-2DBD-4200-BDCA-478C602B6F32}
EndGlobalSection
EndGlobal