mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 13:14:04 +00:00
commit
ca9c022a7f
@ -868,6 +868,46 @@ else ifneq (,$(findstring unix,$(platform)))
|
||||
EXT_INTER_TARGET := $(TARGET_NAME)
|
||||
INCLUDE += -Ilibretro-common/include -Igfx/include -Ideps -Ideps/stb -Ideps/rcheevos/include -Ideps/SPIRV-Cross -Ideps/glslang -I.
|
||||
LIBS += -ldl -lm -lpthread -lGL -ludev -lpulse -lX11 -lX11-xcb -lXxf86vm
|
||||
else ifeq (dos,$(platform))
|
||||
HAVE_AUDIOMIXER := 1
|
||||
HAVE_RPNG := 1
|
||||
HAVE_RJPEG := 1
|
||||
HAVE_RBMP := 1
|
||||
HAVE_RTGA := 1
|
||||
HAVE_ZLIB := 1
|
||||
HAVE_7ZIP := 1
|
||||
HAVE_NETWORKING := 0
|
||||
HAVE_NETWORK_CMD := 0
|
||||
HAVE_NETPLAYDISCOVERY := 0
|
||||
HAVE_OVERLAY := 1
|
||||
HAVE_VIDEO_LAYOUT := 0
|
||||
HAVE_MATERIALUI := 1
|
||||
HAVE_XMB := 0
|
||||
HAVE_STB_FONT := 1
|
||||
HAVE_THREADS := 0
|
||||
HAVE_LIBRETRODB := 1
|
||||
HAVE_COMMAND := 1
|
||||
HAVE_STDIN_CMD := 1
|
||||
HAVE_CMD := 1
|
||||
HAVE_DYLIB := 0
|
||||
HAVE_DYNAMIC := 0
|
||||
HAVE_GRIFFIN_CPP := 0
|
||||
WANT_GLSLANG := 0
|
||||
HAVE_CONFIGFILE := 1
|
||||
CC=i586-pc-msdosdjgpp-gcc
|
||||
CXX=i586-pc-msdosdjgpp-g++
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
LDFLAGS += -g
|
||||
endif
|
||||
|
||||
PLATCFLAGS += -DHAVE_SHADERPIPELINE -DHAVE_CC_RESAMPLER -DRC_DISABLE_LUA -DHAVE_FBO -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_GFX_WIDGETS -DHAVE_CONFIGFILE -DHAVE_SPIRV_CROSS -DHAVE_STB_FONT -DRARCH_INTERNAL -DHAVE_XCB
|
||||
TARGET_NAME := retrodos
|
||||
EXT_TARGET := $(TARGET_NAME).exe
|
||||
EXT_INTER_TARGET := $(TARGET_NAME).exe
|
||||
INCLUDE += -Ilibretro-common/include -Igfx/include -Ideps -Ideps/stb -Ideps/SPIRV-Cross -Ideps/glslang -I.
|
||||
LIBS += -lm
|
||||
LIBDIRS += -L.
|
||||
endif
|
||||
|
||||
ifneq (,$(findstring msvc,$(platform)))
|
||||
|
@ -125,6 +125,10 @@ EXE_PATH=${CELL_SDK}/host-win32/bin
|
||||
GENPS3ISO_PATH=${PS3TOOLS_PATH}/ODE/genps3iso_v2.5
|
||||
SCETOOL_PATH=${PS3TOOLS_PATH}/scetool/scetool.exe
|
||||
SCETOOL_FLAGS_ODE="--sce-type=SELF --compress-data=TRUE --self-type=APP --key-revision=04 --self-fw-version=0003004100000000 --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-cap-flags=00000000000000000000000000000000000000000000003b0000000100040000 --encrypt"
|
||||
elif [ $PLATFORM = "dos" ]; then
|
||||
platform=dos
|
||||
MAKEFILE_GRIFFIN=yes
|
||||
EXT=a
|
||||
fi
|
||||
|
||||
# Cleanup Salamander core if it exists
|
||||
@ -301,7 +305,10 @@ for f in `ls -v *_${platform}.${EXT}`; do
|
||||
elif [ $PLATFORM = "ngc" ] ; then
|
||||
mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol
|
||||
elif [ $PLATFORM = "wii" ] ; then
|
||||
mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol
|
||||
mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol
|
||||
elif [ $PLATFORM = "dos" ] ; then
|
||||
mkdir -p ../pkg/${platform}
|
||||
mv -f ../retrodos.exe ../pkg/${platform}/${name}_libretro_${platform}.exe
|
||||
elif [ $PLATFORM = "emscripten" ] ; then
|
||||
mkdir -p ../pkg/emscripten/
|
||||
mv -f ../${name}_libretro.js ../pkg/emscripten/${name}_libretro.js
|
||||
|
@ -21,59 +21,116 @@
|
||||
|
||||
static void frontend_dos_init(void *data)
|
||||
{
|
||||
printf("Loading RetroArch...\n");
|
||||
printf("Loading RetroArch...\n");
|
||||
}
|
||||
|
||||
static void frontend_dos_shutdown(bool unused)
|
||||
{
|
||||
(void)unused;
|
||||
(void)unused;
|
||||
}
|
||||
|
||||
static int frontend_dos_get_rating(void)
|
||||
{
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
enum frontend_architecture frontend_dos_get_architecture(void)
|
||||
{
|
||||
return FRONTEND_ARCH_X86;
|
||||
return FRONTEND_ARCH_X86;
|
||||
}
|
||||
|
||||
static void frontend_dos_get_env_settings(int *argc, char *argv[],
|
||||
void *data, void *params_data)
|
||||
{
|
||||
char base_path[PATH_MAX] = {0};
|
||||
int i;
|
||||
|
||||
retro_main_log_file_init("retrodos.txt", false);
|
||||
|
||||
strlcpy(base_path, "retrodos", sizeof(base_path));
|
||||
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE], base_path,
|
||||
"cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path,
|
||||
"cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], base_path,
|
||||
"autoconf", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]));
|
||||
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], base_path,
|
||||
"assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
|
||||
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG], base_path,
|
||||
"config", sizeof(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_REMAP],
|
||||
g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG],
|
||||
"remaps", sizeof(g_defaults.dirs[DEFAULT_DIR_REMAP]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_PLAYLIST], base_path,
|
||||
"playlist", sizeof(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG], base_path,
|
||||
"recrdcfg", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT], base_path,
|
||||
"records", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CURSOR], base_path,
|
||||
"database/cursors", sizeof(g_defaults.dirs[DEFAULT_DIR_CURSOR]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_DATABASE], base_path,
|
||||
"database/rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADER], base_path,
|
||||
"shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
|
||||
"cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OVERLAY], base_path,
|
||||
"overlay", sizeof(g_defaults.dirs[DEFAULT_DIR_OVERLAY]));
|
||||
#ifdef HAVE_VIDEO_LAYOUT
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT], base_path,
|
||||
"layouts", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT]));
|
||||
#endif
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS], base_path,
|
||||
"download", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT], base_path,
|
||||
"scrnshot", sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS], base_path,
|
||||
"thumbs", sizeof(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_LOGS], base_path,
|
||||
"logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));
|
||||
|
||||
for (i = 0; i < DEFAULT_DIR_LAST; i++)
|
||||
{
|
||||
const char *dir_path = g_defaults.dirs[i];
|
||||
if (!string_is_empty(dir_path))
|
||||
path_mkdir(dir_path);
|
||||
}
|
||||
}
|
||||
|
||||
frontend_ctx_driver_t frontend_ctx_dos = {
|
||||
frontend_dos_get_env_settings,/* environment_get */
|
||||
frontend_dos_init, /* init */
|
||||
NULL, /* deinit */
|
||||
NULL, /* exitspawn */
|
||||
NULL, /* process_args */
|
||||
NULL, /* exec */
|
||||
NULL, /* set_fork */
|
||||
frontend_dos_shutdown, /* shutdown */
|
||||
NULL, /* get_name */
|
||||
NULL, /* get_os */
|
||||
frontend_dos_get_rating, /* get_rating */
|
||||
NULL, /* load_content */
|
||||
frontend_dos_get_architecture,/* get_architecture */
|
||||
NULL, /* get_powerstate */
|
||||
NULL, /* parse_drive_list */
|
||||
NULL, /* get_mem_total */
|
||||
NULL, /* get_mem_free */
|
||||
NULL, /* install_signal_handler */
|
||||
NULL, /* get_sighandler_state */
|
||||
NULL, /* set_sighandler_state */
|
||||
NULL, /* destroy_sighandler_state */
|
||||
NULL, /* attach_console */
|
||||
NULL, /* detach_console */
|
||||
NULL, /* watch_path_for_changes */
|
||||
NULL, /* check_for_path_changes */
|
||||
NULL, /* set_sustained_performance_mode */
|
||||
NULL, /* get_cpu_model_name */
|
||||
NULL, /* get_user_language */
|
||||
NULL, /* is_narrator_running */
|
||||
NULL, /* accessibility_speak */
|
||||
"dos",
|
||||
frontend_dos_get_env_settings,/* environment_get */
|
||||
frontend_dos_init, /* init */
|
||||
NULL, /* deinit */
|
||||
NULL, /* exitspawn */
|
||||
NULL, /* process_args */
|
||||
NULL, /* exec */
|
||||
NULL, /* set_fork */
|
||||
frontend_dos_shutdown, /* shutdown */
|
||||
NULL, /* get_name */
|
||||
NULL, /* get_os */
|
||||
frontend_dos_get_rating, /* get_rating */
|
||||
NULL, /* load_content */
|
||||
frontend_dos_get_architecture,/* get_architecture */
|
||||
NULL, /* get_powerstate */
|
||||
NULL, /* parse_drive_list */
|
||||
NULL, /* get_mem_total */
|
||||
NULL, /* get_mem_free */
|
||||
NULL, /* install_signal_handler */
|
||||
NULL, /* get_sighandler_state */
|
||||
NULL, /* set_sighandler_state */
|
||||
NULL, /* destroy_sighandler_state */
|
||||
NULL, /* attach_console */
|
||||
NULL, /* detach_console */
|
||||
NULL, /* watch_path_for_changes */
|
||||
NULL, /* check_for_path_changes */
|
||||
NULL, /* set_sustained_performance_mode */
|
||||
NULL, /* get_cpu_model_name */
|
||||
NULL, /* get_user_language */
|
||||
NULL, /* is_narrator_running */
|
||||
NULL, /* accessibility_speak */
|
||||
"dos",
|
||||
};
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
static void vga_set_mode_13h(void)
|
||||
{
|
||||
__dpmi_regs r;
|
||||
__dpmi_regs r = {0};
|
||||
|
||||
r.x.ax = 0x13;
|
||||
__dpmi_int(0x10, &r);
|
||||
@ -41,7 +41,7 @@ static void vga_set_mode_13h(void)
|
||||
|
||||
static void vga_return_to_text_mode(void)
|
||||
{
|
||||
__dpmi_regs r;
|
||||
__dpmi_regs r = {0};
|
||||
|
||||
r.x.ax = 3;
|
||||
__dpmi_int(0x10, &r);
|
||||
@ -106,22 +106,22 @@ static void *vga_gfx_init(const video_info_t *video,
|
||||
*input = NULL;
|
||||
*input_data = NULL;
|
||||
|
||||
vga->video_width = video->width;
|
||||
vga->video_height = video->height;
|
||||
vga->rgb32 = video->rgb32;
|
||||
vga->vga_video_width = video->width;
|
||||
vga->vga_video_height = video->height;
|
||||
vga->vga_rgb32 = video->rgb32;
|
||||
|
||||
if (video->rgb32)
|
||||
{
|
||||
vga->video_pitch = video->width * 4;
|
||||
vga->video_bits = 32;
|
||||
vga->vga_video_pitch = video->width * 4;
|
||||
vga->vga_video_bits = 32;
|
||||
}
|
||||
else
|
||||
{
|
||||
vga->video_pitch = video->width * 2;
|
||||
vga->video_bits = 16;
|
||||
vga->vga_video_pitch = video->width * 2;
|
||||
vga->vga_video_bits = 16;
|
||||
}
|
||||
|
||||
vga->frame = (unsigned char*)malloc(VGA_WIDTH * VGA_HEIGHT);
|
||||
vga->vga_frame = (unsigned char*)malloc(VGA_WIDTH * VGA_HEIGHT);
|
||||
|
||||
vga_gfx_create();
|
||||
|
||||
@ -152,32 +152,32 @@ static bool vga_gfx_frame(void *data, const void *frame,
|
||||
menu_driver_frame(video_info);
|
||||
#endif
|
||||
|
||||
if ( vga->video_width != frame_width ||
|
||||
vga->video_height != frame_height ||
|
||||
vga->video_pitch != pitch)
|
||||
if ( vga->vga_video_width != frame_width ||
|
||||
vga->vga_video_height != frame_height ||
|
||||
vga->vga_video_pitch != pitch)
|
||||
{
|
||||
if (frame_width > 4 && frame_height > 4)
|
||||
{
|
||||
vga->video_width = frame_width;
|
||||
vga->video_height = frame_height;
|
||||
vga->video_pitch = pitch;
|
||||
vga->vga_video_width = frame_width;
|
||||
vga->vga_video_height = frame_height;
|
||||
vga->vga_video_pitch = pitch;
|
||||
}
|
||||
}
|
||||
|
||||
if (vga->menu_frame && video_info->menu_is_alive)
|
||||
if (vga->vga_menu_frame && video_info->menu_is_alive)
|
||||
{
|
||||
frame_to_copy = vga->menu_frame;
|
||||
width = vga->menu_width;
|
||||
height = vga->menu_height;
|
||||
pitch = vga->menu_pitch;
|
||||
bits = vga->menu_bits;
|
||||
frame_to_copy = vga->vga_menu_frame;
|
||||
width = vga->vga_menu_width;
|
||||
height = vga->vga_menu_height;
|
||||
pitch = vga->vga_menu_pitch;
|
||||
bits = vga->vga_menu_bits;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = vga->video_width;
|
||||
height = vga->video_height;
|
||||
pitch = vga->video_pitch;
|
||||
bits = vga->video_bits;
|
||||
width = vga->vga_video_width;
|
||||
height = vga->vga_video_height;
|
||||
pitch = vga->vga_video_pitch;
|
||||
bits = vga->vga_video_bits;
|
||||
|
||||
if (frame_width == 4 && frame_height == 4 && (frame_width < width && frame_height < height))
|
||||
draw = false;
|
||||
@ -190,14 +190,33 @@ static bool vga_gfx_frame(void *data, const void *frame,
|
||||
{
|
||||
vga_vsync();
|
||||
|
||||
if (frame_to_copy == vga->menu_frame)
|
||||
if (frame_to_copy == vga->vga_menu_frame)
|
||||
dosmemput(frame_to_copy,
|
||||
MIN(VGA_WIDTH,width)*MIN(VGA_HEIGHT,height), 0xA0000);
|
||||
else
|
||||
{
|
||||
if (bits == 32)
|
||||
{
|
||||
/* TODO/FIXME - needs to be implemented */
|
||||
unsigned x, y;
|
||||
for (y = 0; y < VGA_HEIGHT; y++)
|
||||
{
|
||||
for (x = 0; x < VGA_WIDTH; x++)
|
||||
{
|
||||
/* scale incoming frame to fit the screen */
|
||||
unsigned scaled_x = (width * x) / VGA_WIDTH;
|
||||
unsigned scaled_y = (height * y) / VGA_HEIGHT;
|
||||
uint32_t pixel = ((uint32_t*)frame_to_copy)[width * scaled_y + scaled_x];
|
||||
|
||||
/* convert RGB888 to BGR332 */
|
||||
unsigned r = ((pixel & 0xFF0000) >> 21);
|
||||
unsigned g = ((pixel & 0x00FF00) >> 13);
|
||||
unsigned b = ((pixel & 0x0000FF) >> 6);
|
||||
|
||||
vga->vga_frame[VGA_WIDTH * y + x] = (b << 6) | (g << 3) | r;
|
||||
}
|
||||
}
|
||||
|
||||
dosmemput(vga->vga_frame, VGA_WIDTH*VGA_HEIGHT, 0xA0000);
|
||||
}
|
||||
else if (bits == 16)
|
||||
{
|
||||
@ -217,11 +236,11 @@ static bool vga_gfx_frame(void *data, const void *frame,
|
||||
unsigned g = ((pixel & 0x07E0) >> 8);
|
||||
unsigned b = ((pixel & 0x001F) >> 3);
|
||||
|
||||
vga->frame[VGA_WIDTH * y + x] = (b << 6) | (g << 3) | r;
|
||||
vga->vga_frame[VGA_WIDTH * y + x] = (b << 6) | (g << 3) | r;
|
||||
}
|
||||
}
|
||||
|
||||
dosmemput(vga->frame, VGA_WIDTH*VGA_HEIGHT, 0xA0000);
|
||||
dosmemput(vga->vga_frame, VGA_WIDTH*VGA_HEIGHT, 0xA0000);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -239,7 +258,7 @@ static bool vga_gfx_alive(void *data)
|
||||
{
|
||||
vga_t *vga = (vga_t*)data;
|
||||
/* TODO/FIXME - check if this is valid */
|
||||
video_driver_set_size(vga->video_width, vga->video_height);
|
||||
video_driver_set_size(vga->vga_video_width, vga->vga_video_height);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -263,13 +282,13 @@ static void vga_gfx_free(void *data)
|
||||
if (!vga)
|
||||
return;
|
||||
|
||||
if (vga->frame)
|
||||
free(vga->frame);
|
||||
vga->frame = NULL;
|
||||
if (vga->vga_frame)
|
||||
free(vga->vga_frame);
|
||||
vga->vga_frame = NULL;
|
||||
|
||||
if (vga->menu_frame)
|
||||
free(vga->menu_frame);
|
||||
vga->menu_frame = NULL;
|
||||
if (vga->vga_menu_frame)
|
||||
free(vga->vga_menu_frame);
|
||||
vga->vga_menu_frame = NULL;
|
||||
|
||||
vga_return_to_text_mode();
|
||||
}
|
||||
@ -294,18 +313,18 @@ static void vga_set_texture_frame(void *data,
|
||||
if (rgb32)
|
||||
pitch = width * 4;
|
||||
|
||||
if (vga->menu_frame)
|
||||
free(vga->menu_frame);
|
||||
vga->menu_frame = NULL;
|
||||
if (vga->vga_menu_frame)
|
||||
free(vga->vga_menu_frame);
|
||||
vga->vga_menu_frame = NULL;
|
||||
|
||||
if ( !vga->menu_frame ||
|
||||
vga->menu_width != width ||
|
||||
vga->menu_height != height ||
|
||||
vga->menu_pitch != pitch)
|
||||
if ( !vga->vga_menu_frame ||
|
||||
vga->vga_menu_width != width ||
|
||||
vga->vga_menu_height != height ||
|
||||
vga->vga_menu_pitch != pitch)
|
||||
if (pitch && height)
|
||||
vga->menu_frame = (unsigned char*)malloc(VGA_WIDTH * VGA_HEIGHT);
|
||||
vga->vga_menu_frame = (unsigned char*)malloc(VGA_WIDTH * VGA_HEIGHT);
|
||||
|
||||
if (vga->menu_frame && frame && pitch && height)
|
||||
if (vga->vga_menu_frame && frame && pitch && height)
|
||||
{
|
||||
unsigned x, y;
|
||||
|
||||
@ -324,15 +343,15 @@ static void vga_set_texture_frame(void *data,
|
||||
unsigned r = ((pixel & 0xF000) >> 13);
|
||||
unsigned g = ((pixel & 0xF00) >> 9);
|
||||
unsigned b = ((pixel & 0xF0) >> 6);
|
||||
vga->menu_frame[VGA_WIDTH * y + x] = (b << 6) | (g << 3) | r;
|
||||
vga->vga_menu_frame[VGA_WIDTH * y + x] = (b << 6) | (g << 3) | r;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vga->menu_width = width;
|
||||
vga->menu_height = height;
|
||||
vga->menu_pitch = pitch;
|
||||
vga->menu_bits = rgb32 ? 32 : 16;
|
||||
vga->vga_menu_width = width;
|
||||
vga->vga_menu_height = height;
|
||||
vga->vga_menu_pitch = pitch;
|
||||
vga->vga_menu_bits = rgb32 ? 32 : 16;
|
||||
}
|
||||
}
|
||||
|
||||
@ -344,7 +363,7 @@ static uint32_t vga_get_flags(void *data)
|
||||
}
|
||||
|
||||
static const video_poke_interface_t vga_poke_interface = {
|
||||
vga_gfx_get_flags,
|
||||
vga_get_flags,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
@ -43,7 +43,7 @@ static bool dos_keyboard_port_input_pressed(
|
||||
const struct retro_keybind *binds, unsigned id)
|
||||
{
|
||||
if (id < RARCH_BIND_LIST_END)
|
||||
return dos_key_state[DOS_KEYBOARD_PORT][rarch_keysym_lut[&binds[id].key]];
|
||||
return dos_key_state[DOS_KEYBOARD_PORT][rarch_keysym_lut[binds[id].key]];
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -247,9 +247,9 @@ retro_time_t cpu_features_get_time_usec(void)
|
||||
return tv.tv_sec * INT64_C(1000000) + (tv.tv_nsec + 500) / 1000;
|
||||
#elif defined(EMSCRIPTEN)
|
||||
return emscripten_get_now() * 1000;
|
||||
#elif defined(PS2)
|
||||
return clock()*1000;
|
||||
#elif defined(__mips__) || defined(DJGPP)
|
||||
#elif defined(PS2) || defined(DJGPP)
|
||||
return clock()*(1000000LL/CLOCKS_PER_SEC);
|
||||
#elif defined(__mips__)
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv,NULL);
|
||||
return (1000000 * tv.tv_sec + tv.tv_usec);
|
||||
|
@ -68,7 +68,7 @@ extern int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
|
||||
|
||||
static int nanosleepDOS(const struct timespec *rqtp, struct timespec *rmtp)
|
||||
{
|
||||
usleep(1000000 * rqtp->tv_sec + rqtp->tv_nsec / 1000);
|
||||
usleep(1000000L * rqtp->tv_sec + rqtp->tv_nsec / 1000);
|
||||
|
||||
if (rmtp)
|
||||
rmtp->tv_sec = rmtp->tv_nsec=0;
|
||||
|
@ -19392,6 +19392,14 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
|
||||
}
|
||||
|
||||
audio_driver_find_driver();
|
||||
|
||||
if (current_audio == NULL || current_audio->init == NULL)
|
||||
{
|
||||
RARCH_ERR("Failed to initialize audio driver. Will continue without audio.\n");
|
||||
audio_driver_active = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef HAVE_THREADS
|
||||
if (audio_cb_inited)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user