Merge pull request #70 from grzybsonssg/add-modern-xl-xe-systems
Add modern xl xe systems with 576K or 1088K of RAM
This commit is contained in:
+126
-102
@@ -13,39 +13,39 @@
|
|||||||
cothread_t mainThread;
|
cothread_t mainThread;
|
||||||
cothread_t emuThread;
|
cothread_t emuThread;
|
||||||
|
|
||||||
static void fallback_log(enum retro_log_level level, const char *fmt, ...);
|
static void fallback_log(enum retro_log_level level, const char* fmt, ...);
|
||||||
|
|
||||||
retro_log_printf_t log_cb = fallback_log;
|
retro_log_printf_t log_cb = fallback_log;
|
||||||
|
|
||||||
int CROP_WIDTH;
|
int CROP_WIDTH;
|
||||||
int CROP_HEIGHT;
|
int CROP_HEIGHT;
|
||||||
int VIRTUAL_WIDTH;
|
int VIRTUAL_WIDTH;
|
||||||
int retrow=400;
|
int retrow = 400;
|
||||||
int retroh=300;
|
int retroh = 300;
|
||||||
|
|
||||||
#define RETRO_DEVICE_ATARI_KEYBOARD RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_KEYBOARD, 0)
|
#define RETRO_DEVICE_ATARI_KEYBOARD RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_KEYBOARD, 0)
|
||||||
#define RETRO_DEVICE_ATARI_JOYSTICK RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1)
|
#define RETRO_DEVICE_ATARI_JOYSTICK RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1)
|
||||||
|
|
||||||
unsigned atari_devices[ 4 ];
|
unsigned atari_devices[4];
|
||||||
|
|
||||||
int keyboard_type=0;
|
int keyboard_type = 0;
|
||||||
int autorun5200=0;
|
int autorun5200 = 0;
|
||||||
int a5200_joyhack=0;
|
int a5200_joyhack = 0;
|
||||||
|
|
||||||
int RETROJOY=0,RETROPT0=0,RETROSTATUS=0,RETRODRVTYPE=0;
|
int RETROJOY = 0, RETROPT0 = 0, RETROSTATUS = 0, RETRODRVTYPE = 0;
|
||||||
int retrojoy_init=0,retro_ui_finalized=0;
|
int retrojoy_init = 0, retro_ui_finalized = 0;
|
||||||
int retro_sound_finalized=0;
|
int retro_sound_finalized = 0;
|
||||||
|
|
||||||
float retro_fps=49.8607597;
|
float retro_fps = 49.8607597;
|
||||||
long long retro_frame_counter;
|
long long retro_frame_counter;
|
||||||
extern int ToggleTV;
|
extern int ToggleTV;
|
||||||
extern int CURRENT_TV;
|
extern int CURRENT_TV;
|
||||||
|
|
||||||
extern int SHIFTON,pauseg,SND ,snd_sampler_pal;
|
extern int SHIFTON, pauseg, SND, snd_sampler_pal;
|
||||||
extern short signed int SNDBUF[1024*2];
|
extern short signed int SNDBUF[1024 * 2];
|
||||||
extern char RPATH[512];
|
extern char RPATH[512];
|
||||||
extern char RETRO_DIR[512];
|
extern char RETRO_DIR[512];
|
||||||
int cap32_statusbar=0;
|
int cap32_statusbar = 0;
|
||||||
|
|
||||||
#include "cmdline.c"
|
#include "cmdline.c"
|
||||||
|
|
||||||
@@ -56,9 +56,9 @@ extern void Emu_init();
|
|||||||
extern void Emu_uninit();
|
extern void Emu_uninit();
|
||||||
extern void input_gui(void);
|
extern void input_gui(void);
|
||||||
|
|
||||||
const char *retro_save_directory;
|
const char* retro_save_directory;
|
||||||
const char *retro_system_directory;
|
const char* retro_system_directory;
|
||||||
const char *retro_content_directory;
|
const char* retro_content_directory;
|
||||||
char retro_system_data_directory[512];;
|
char retro_system_data_directory[512];;
|
||||||
|
|
||||||
static retro_video_refresh_t video_cb;
|
static retro_video_refresh_t video_cb;
|
||||||
@@ -69,7 +69,7 @@ static retro_environment_t environ_cb;
|
|||||||
bool libretro_supports_bitmasks = false;
|
bool libretro_supports_bitmasks = false;
|
||||||
|
|
||||||
|
|
||||||
static void fallback_log(enum retro_log_level level, const char *fmt, ...)
|
static void fallback_log(enum retro_log_level level, const char* fmt, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
|
|
||||||
@@ -109,12 +109,12 @@ void retro_set_environment(retro_environment_t cb)
|
|||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
cb( RETRO_ENVIRONMENT_SET_CONTROLLER_INFO, (void*)ports );
|
cb(RETRO_ENVIRONMENT_SET_CONTROLLER_INFO, (void*)ports);
|
||||||
|
|
||||||
struct retro_variable variables[] = {
|
struct retro_variable variables[] = {
|
||||||
{
|
{
|
||||||
"atari800_system",
|
"atari800_system",
|
||||||
"Atari System; 400/800 (OS B)|800XL (64K)|130XE (128K)|5200",
|
"Atari System; 400/800 (OS B)|800XL (64K)|130XE (128K)|Modern XL/XE(576K)|Modern XL/XE(1088K)|5200",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"atari800_ntscpal",
|
"atari800_ntscpal",
|
||||||
@@ -187,7 +187,7 @@ static void update_variables(void)
|
|||||||
|
|
||||||
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
||||||
{
|
{
|
||||||
char *pch;
|
char* pch;
|
||||||
char str[100];
|
char str[100];
|
||||||
snprintf(str, sizeof(str), "%s", var.value);
|
snprintf(str, sizeof(str), "%s", var.value);
|
||||||
|
|
||||||
@@ -200,8 +200,8 @@ static void update_variables(void)
|
|||||||
|
|
||||||
fprintf(stderr, "[libretro-atari800]: Got size: %u x %u.\n", retrow, retroh);
|
fprintf(stderr, "[libretro-atari800]: Got size: %u x %u.\n", retrow, retroh);
|
||||||
|
|
||||||
CROP_WIDTH =retrow;
|
CROP_WIDTH = retrow;
|
||||||
CROP_HEIGHT= (retroh-80);
|
CROP_HEIGHT = (retroh - 80);
|
||||||
VIRTUAL_WIDTH = retrow;
|
VIRTUAL_WIDTH = retrow;
|
||||||
texture_init();
|
texture_init();
|
||||||
//reset_screen();
|
//reset_screen();
|
||||||
@@ -248,6 +248,30 @@ static void update_variables(void)
|
|||||||
Atari800_keyboard_detached = FALSE;
|
Atari800_keyboard_detached = FALSE;
|
||||||
Atari800_InitialiseMachine();
|
Atari800_InitialiseMachine();
|
||||||
}
|
}
|
||||||
|
else if (strcmp(var.value, "Modern XL/XE(576K)") == 0)
|
||||||
|
{
|
||||||
|
Atari800_machine_type = Atari800_MACHINE_XLXE;
|
||||||
|
MEMORY_ram_size = 576;
|
||||||
|
Atari800_builtin_basic = TRUE;
|
||||||
|
Atari800_keyboard_leds = FALSE;
|
||||||
|
Atari800_f_keys = FALSE;
|
||||||
|
Atari800_jumper = FALSE;
|
||||||
|
Atari800_builtin_game = FALSE;
|
||||||
|
Atari800_keyboard_detached = FALSE;
|
||||||
|
Atari800_InitialiseMachine();
|
||||||
|
}
|
||||||
|
else if (strcmp(var.value, "Modern XL/XE(1088K)") == 0)
|
||||||
|
{
|
||||||
|
Atari800_machine_type = Atari800_MACHINE_XLXE;
|
||||||
|
MEMORY_ram_size = 1088;
|
||||||
|
Atari800_builtin_basic = TRUE;
|
||||||
|
Atari800_keyboard_leds = FALSE;
|
||||||
|
Atari800_f_keys = FALSE;
|
||||||
|
Atari800_jumper = FALSE;
|
||||||
|
Atari800_builtin_game = FALSE;
|
||||||
|
Atari800_keyboard_detached = FALSE;
|
||||||
|
Atari800_InitialiseMachine();
|
||||||
|
}
|
||||||
else if (strcmp(var.value, "5200") == 0)
|
else if (strcmp(var.value, "5200") == 0)
|
||||||
{
|
{
|
||||||
Atari800_machine_type = Atari800_MACHINE_5200;
|
Atari800_machine_type = Atari800_MACHINE_5200;
|
||||||
@@ -318,12 +342,12 @@ static void update_variables(void)
|
|||||||
{
|
{
|
||||||
if (strcmp(var.value, "enabled") == 0)
|
if (strcmp(var.value, "enabled") == 0)
|
||||||
{
|
{
|
||||||
CASSETTE_hold_start=1;
|
CASSETTE_hold_start = 1;
|
||||||
Atari800_InitialiseMachine();
|
Atari800_InitialiseMachine();
|
||||||
}
|
}
|
||||||
else if (strcmp(var.value, "disabled") == 0)
|
else if (strcmp(var.value, "disabled") == 0)
|
||||||
{
|
{
|
||||||
CASSETTE_hold_start=0;
|
CASSETTE_hold_start = 0;
|
||||||
Atari800_InitialiseMachine();
|
Atari800_InitialiseMachine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -368,11 +392,11 @@ static void update_variables(void)
|
|||||||
{
|
{
|
||||||
if (strcmp(var.value, "poll") == 0)
|
if (strcmp(var.value, "poll") == 0)
|
||||||
{
|
{
|
||||||
keyboard_type=0;
|
keyboard_type = 0;
|
||||||
}
|
}
|
||||||
else if (strcmp(var.value, "callback") == 0)
|
else if (strcmp(var.value, "callback") == 0)
|
||||||
{
|
{
|
||||||
keyboard_type=1;
|
keyboard_type = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,7 +408,7 @@ static void retro_wrap_emulator()
|
|||||||
|
|
||||||
|
|
||||||
log_cb(RETRO_LOG_INFO, "EXIT EMU THD\n");
|
log_cb(RETRO_LOG_INFO, "EXIT EMU THD\n");
|
||||||
pauseg=-1;
|
pauseg = -1;
|
||||||
|
|
||||||
//environ_cb(RETRO_ENVIRONMENT_SHUTDOWN, 0);
|
//environ_cb(RETRO_ENVIRONMENT_SHUTDOWN, 0);
|
||||||
|
|
||||||
@@ -392,7 +416,7 @@ static void retro_wrap_emulator()
|
|||||||
co_switch(mainThread);
|
co_switch(mainThread);
|
||||||
|
|
||||||
// Dead emulator, but libco says not to return
|
// Dead emulator, but libco says not to return
|
||||||
while(true)
|
while (true)
|
||||||
{
|
{
|
||||||
log_cb(RETRO_LOG_INFO, "Running a dead emulator.");
|
log_cb(RETRO_LOG_INFO, "Running a dead emulator.");
|
||||||
co_switch(mainThread);
|
co_switch(mainThread);
|
||||||
@@ -400,27 +424,27 @@ static void retro_wrap_emulator()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Emu_init(){
|
void Emu_init() {
|
||||||
|
|
||||||
#ifdef RETRO_AND
|
#ifdef RETRO_AND
|
||||||
MOUSEMODE=1;
|
MOUSEMODE = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// update_variables();
|
// update_variables();
|
||||||
|
|
||||||
memset(Key_Sate,0,512);
|
memset(Key_Sate, 0, 512);
|
||||||
memset(Key_Sate2,0,512);
|
memset(Key_Sate2, 0, 512);
|
||||||
|
|
||||||
if(!emuThread && !mainThread)
|
if (!emuThread && !mainThread)
|
||||||
{
|
{
|
||||||
mainThread = co_active();
|
mainThread = co_active();
|
||||||
emuThread = co_create(65536*sizeof(void*), retro_wrap_emulator);
|
emuThread = co_create(65536 * sizeof(void*), retro_wrap_emulator);
|
||||||
}
|
}
|
||||||
|
|
||||||
update_variables();
|
update_variables();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Emu_uninit(){
|
void Emu_uninit() {
|
||||||
|
|
||||||
texture_uninit();
|
texture_uninit();
|
||||||
}
|
}
|
||||||
@@ -433,11 +457,11 @@ void retro_shutdown_core(void)
|
|||||||
environ_cb(RETRO_ENVIRONMENT_SHUTDOWN, NULL);
|
environ_cb(RETRO_ENVIRONMENT_SHUTDOWN, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void retro_reset(void){
|
void retro_reset(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void retro_get_system_av_info(struct retro_system_av_info *info)
|
void retro_get_system_av_info(struct retro_system_av_info* info)
|
||||||
{
|
{
|
||||||
update_variables();
|
update_variables();
|
||||||
|
|
||||||
@@ -445,24 +469,24 @@ void retro_get_system_av_info(struct retro_system_av_info *info)
|
|||||||
info->geometry.base_height = retroh;
|
info->geometry.base_height = retroh;
|
||||||
|
|
||||||
if (log_cb)
|
if (log_cb)
|
||||||
log_cb(RETRO_LOG_INFO, "AV_INFO: width=%d height=%d\n",info->geometry.base_width,info->geometry.base_height);
|
log_cb(RETRO_LOG_INFO, "AV_INFO: width=%d height=%d\n", info->geometry.base_width, info->geometry.base_height);
|
||||||
|
|
||||||
info->geometry.max_width = 400;
|
info->geometry.max_width = 400;
|
||||||
info->geometry.max_height = 300;
|
info->geometry.max_height = 300;
|
||||||
|
|
||||||
if (log_cb)
|
if (log_cb)
|
||||||
log_cb(RETRO_LOG_INFO, "AV_INFO: max_width=%d max_height=%d\n",info->geometry.max_width,info->geometry.max_height);
|
log_cb(RETRO_LOG_INFO, "AV_INFO: max_width=%d max_height=%d\n", info->geometry.max_width, info->geometry.max_height);
|
||||||
|
|
||||||
info->geometry.aspect_ratio = 4.0 / 3.0;
|
info->geometry.aspect_ratio = 4.0 / 3.0;
|
||||||
|
|
||||||
if (log_cb)
|
if (log_cb)
|
||||||
log_cb(RETRO_LOG_INFO, "AV_INFO: aspect_ratio = %f\n",info->geometry.aspect_ratio);
|
log_cb(RETRO_LOG_INFO, "AV_INFO: aspect_ratio = %f\n", info->geometry.aspect_ratio);
|
||||||
|
|
||||||
info->timing.fps = retro_fps;
|
info->timing.fps = retro_fps;
|
||||||
info->timing.sample_rate = 44100.0;
|
info->timing.sample_rate = 44100.0;
|
||||||
|
|
||||||
if (log_cb)
|
if (log_cb)
|
||||||
log_cb(RETRO_LOG_INFO, "AV_INFO: fps = %f sample_rate = %f\n",info->timing.fps,info->timing.sample_rate);
|
log_cb(RETRO_LOG_INFO, "AV_INFO: fps = %f sample_rate = %f\n", info->timing.fps, info->timing.sample_rate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -473,23 +497,23 @@ void retro_init(void)
|
|||||||
if (environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &log))
|
if (environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &log))
|
||||||
log_cb = log.log;
|
log_cb = log.log;
|
||||||
|
|
||||||
const char *system_dir = NULL;
|
const char* system_dir = NULL;
|
||||||
|
|
||||||
if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &system_dir) && system_dir)
|
if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &system_dir) && system_dir)
|
||||||
{
|
{
|
||||||
// if defined, use the system directory
|
// if defined, use the system directory
|
||||||
retro_system_directory=system_dir;
|
retro_system_directory = system_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *content_dir = NULL;
|
const char* content_dir = NULL;
|
||||||
|
|
||||||
if (environ_cb(RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY, &content_dir) && content_dir)
|
if (environ_cb(RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY, &content_dir) && content_dir)
|
||||||
{
|
{
|
||||||
// if defined, use the system directory
|
// if defined, use the system directory
|
||||||
retro_content_directory=content_dir;
|
retro_content_directory = content_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *save_dir = NULL;
|
const char* save_dir = NULL;
|
||||||
|
|
||||||
if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &save_dir) && save_dir)
|
if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &save_dir) && save_dir)
|
||||||
{
|
{
|
||||||
@@ -499,20 +523,20 @@ void retro_init(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// make retro_save_directory the same in case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY is not implemented by the frontend
|
// make retro_save_directory the same in case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY is not implemented by the frontend
|
||||||
retro_save_directory=retro_system_directory;
|
retro_save_directory = retro_system_directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(retro_system_directory==NULL)sprintf(RETRO_DIR, "%s\0",".");
|
if (retro_system_directory == NULL)sprintf(RETRO_DIR, "%s\0", ".");
|
||||||
else sprintf(RETRO_DIR, "%s\0", retro_system_directory);
|
else sprintf(RETRO_DIR, "%s\0", retro_system_directory);
|
||||||
|
|
||||||
sprintf(retro_system_data_directory, "%s/data\0",RETRO_DIR);
|
sprintf(retro_system_data_directory, "%s/data\0", RETRO_DIR);
|
||||||
|
|
||||||
log_cb(RETRO_LOG_INFO, "Retro SYSTEM_DIRECTORY %s\n",retro_system_directory);
|
log_cb(RETRO_LOG_INFO, "Retro SYSTEM_DIRECTORY %s\n", retro_system_directory);
|
||||||
log_cb(RETRO_LOG_INFO, "Retro SAVE_DIRECTORY %s\n",retro_save_directory);
|
log_cb(RETRO_LOG_INFO, "Retro SAVE_DIRECTORY %s\n", retro_save_directory);
|
||||||
log_cb(RETRO_LOG_INFO, "Retro CONTENT_DIRECTORY %s\n",retro_content_directory);
|
log_cb(RETRO_LOG_INFO, "Retro CONTENT_DIRECTORY %s\n", retro_content_directory);
|
||||||
|
|
||||||
#ifndef RENDER16B
|
#ifndef RENDER16B
|
||||||
enum retro_pixel_format fmt =RETRO_PIXEL_FORMAT_XRGB8888;
|
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888;
|
||||||
#else
|
#else
|
||||||
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
|
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
|
||||||
#endif
|
#endif
|
||||||
@@ -520,7 +544,7 @@ void retro_init(void)
|
|||||||
if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt))
|
if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "PIXEL FORMAT is not supported.\n");
|
fprintf(stderr, "PIXEL FORMAT is not supported.\n");
|
||||||
log_cb(RETRO_LOG_INFO, "PIXEL FORMAT is not supported.\n");
|
log_cb(RETRO_LOG_INFO, "PIXEL FORMAT is not supported.\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,11 +584,11 @@ void retro_deinit(void)
|
|||||||
|
|
||||||
|
|
||||||
co_switch(emuThread);
|
co_switch(emuThread);
|
||||||
log_cb(RETRO_LOG_INFO, "exit emu\n");
|
log_cb(RETRO_LOG_INFO, "exit emu\n");
|
||||||
// main_exit();
|
// main_exit();
|
||||||
co_switch(mainThread);
|
co_switch(mainThread);
|
||||||
log_cb(RETRO_LOG_INFO, "exit main\n");
|
log_cb(RETRO_LOG_INFO, "exit main\n");
|
||||||
if(emuThread)
|
if (emuThread)
|
||||||
{
|
{
|
||||||
co_delete(emuThread);
|
co_delete(emuThread);
|
||||||
emuThread = 0;
|
emuThread = 0;
|
||||||
@@ -581,17 +605,17 @@ unsigned retro_api_version(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void retro_set_controller_port_device( unsigned port, unsigned device )
|
void retro_set_controller_port_device(unsigned port, unsigned device)
|
||||||
{
|
{
|
||||||
if ( port < 4 )
|
if (port < 4)
|
||||||
{
|
{
|
||||||
atari_devices[ port ] = device;
|
atari_devices[port] = device;
|
||||||
|
|
||||||
printf(" port(%d)=%d \n",port,device);
|
printf(" port(%d)=%d \n", port, device);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void retro_get_system_info(struct retro_system_info *info)
|
void retro_get_system_info(struct retro_system_info* info)
|
||||||
{
|
{
|
||||||
memset(info, 0, sizeof(*info));
|
memset(info, 0, sizeof(*info));
|
||||||
info->library_name = "Atari800";
|
info->library_name = "Atari800";
|
||||||
@@ -626,9 +650,9 @@ void retro_set_video_refresh(retro_video_refresh_t cb)
|
|||||||
video_cb = cb;
|
video_cb = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void retro_audio_cb( short l, short r)
|
void retro_audio_cb(short l, short r)
|
||||||
{
|
{
|
||||||
audio_cb(l,r);
|
audio_cb(l, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Forward declarations */
|
/* Forward declarations */
|
||||||
@@ -646,13 +670,13 @@ void retro_run(void)
|
|||||||
|
|
||||||
retro_frame_counter++;
|
retro_frame_counter++;
|
||||||
|
|
||||||
if(pauseg==0){
|
if (pauseg == 0) {
|
||||||
|
|
||||||
if (ToggleTV == 1)
|
if (ToggleTV == 1)
|
||||||
{
|
{
|
||||||
struct retro_system_av_info ninfo;
|
struct retro_system_av_info ninfo;
|
||||||
|
|
||||||
retro_fps=CURRENT_TV==312?49.8607597:59.9227434;
|
retro_fps = CURRENT_TV == 312 ? 49.8607597 : 59.9227434;
|
||||||
|
|
||||||
retro_get_system_av_info(&ninfo);
|
retro_get_system_av_info(&ninfo);
|
||||||
|
|
||||||
@@ -662,47 +686,47 @@ void retro_run(void)
|
|||||||
log_cb(RETRO_LOG_INFO, "ChangeAV: w:%d h:%d ra:%f.\n",
|
log_cb(RETRO_LOG_INFO, "ChangeAV: w:%d h:%d ra:%f.\n",
|
||||||
ninfo.geometry.base_width, ninfo.geometry.base_height, ninfo.geometry.aspect_ratio);
|
ninfo.geometry.base_width, ninfo.geometry.base_height, ninfo.geometry.aspect_ratio);
|
||||||
|
|
||||||
ToggleTV=0;
|
ToggleTV = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(retro_sound_finalized)
|
if (retro_sound_finalized)
|
||||||
retro_sound_update();
|
retro_sound_update();
|
||||||
|
|
||||||
Retro_PollEvent();
|
Retro_PollEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
video_cb(Retro_Screen,retrow,retroh,retrow<<PIXEL_BYTES);
|
video_cb(Retro_Screen, retrow, retroh, retrow << PIXEL_BYTES);
|
||||||
|
|
||||||
co_switch(emuThread);
|
co_switch(emuThread);
|
||||||
}
|
}
|
||||||
extern char Key_Sate[512];
|
extern char Key_Sate[512];
|
||||||
unsigned int lastdown,lastup,lastchar;
|
unsigned int lastdown, lastup, lastchar;
|
||||||
static void keyboard_cb(bool down, unsigned keycode,
|
static void keyboard_cb(bool down, unsigned keycode,
|
||||||
uint32_t character, uint16_t mod)
|
uint32_t character, uint16_t mod)
|
||||||
{
|
{
|
||||||
if(keyboard_type==0)return;
|
if (keyboard_type == 0)return;
|
||||||
Key_Sate[keycode]= down ? 1 : 0;
|
Key_Sate[keycode] = down ? 1 : 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
printf( "Down: %s, Code: %d, Char: %u, Mod: %u.\n",
|
printf( "Down: %s, Code: %d, Char: %u, Mod: %u.\n",
|
||||||
down ? "yes" : "no", keycode, character, mod);
|
down ? "yes" : "no", keycode, character, mod);
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
if(down)lastdown=keycode;
|
if(down)lastdown=keycode;
|
||||||
else lastup=keycode;
|
else lastup=keycode;
|
||||||
lastchar=character;
|
lastchar=character;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int HandleExtension(char *path,char *ext)
|
int HandleExtension(char* path, char* ext)
|
||||||
{
|
{
|
||||||
int len = strlen(path);
|
int len = strlen(path);
|
||||||
|
|
||||||
if (len >= 4 &&
|
if (len >= 4 &&
|
||||||
path[len-4] == '.' &&
|
path[len - 4] == '.' &&
|
||||||
path[len-3] == ext[0] &&
|
path[len - 3] == ext[0] &&
|
||||||
path[len-2] == ext[1] &&
|
path[len - 2] == ext[1] &&
|
||||||
path[len-1] == ext[2])
|
path[len - 1] == ext[2])
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -710,9 +734,9 @@ int HandleExtension(char *path,char *ext)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool retro_load_game(const struct retro_game_info *info)
|
bool retro_load_game(const struct retro_game_info* info)
|
||||||
{
|
{
|
||||||
const char *full_path;
|
const char* full_path;
|
||||||
|
|
||||||
(void)info;
|
(void)info;
|
||||||
|
|
||||||
@@ -722,28 +746,28 @@ bool retro_load_game(const struct retro_game_info *info)
|
|||||||
|
|
||||||
full_path = info->path;
|
full_path = info->path;
|
||||||
|
|
||||||
strcpy(RPATH,full_path);
|
strcpy(RPATH, full_path);
|
||||||
|
|
||||||
update_variables();
|
update_variables();
|
||||||
|
|
||||||
if( HandleExtension((char*)RPATH,"a52") || HandleExtension((char*)RPATH,"A52"))
|
if (HandleExtension((char*)RPATH, "a52") || HandleExtension((char*)RPATH, "A52"))
|
||||||
autorun5200=1;
|
autorun5200 = 1;
|
||||||
|
|
||||||
#ifdef RENDER16B
|
#ifdef RENDER16B
|
||||||
memset(Retro_Screen,0,400*300*2);
|
memset(Retro_Screen, 0, 400 * 300 * 2);
|
||||||
#else
|
#else
|
||||||
memset(Retro_Screen,0,400*300*2*2);
|
memset(Retro_Screen, 0, 400 * 300 * 2 * 2);
|
||||||
#endif
|
#endif
|
||||||
memset(SNDBUF,0,1024*2*2);
|
memset(SNDBUF, 0, 1024 * 2 * 2);
|
||||||
|
|
||||||
co_switch(emuThread);
|
co_switch(emuThread);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void retro_unload_game(void){
|
void retro_unload_game(void) {
|
||||||
|
|
||||||
pauseg=-1;
|
pauseg = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned retro_get_region(void)
|
unsigned retro_get_region(void)
|
||||||
@@ -751,7 +775,7 @@ unsigned retro_get_region(void)
|
|||||||
return RETRO_REGION_NTSC;
|
return RETRO_REGION_NTSC;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool retro_load_game_special(unsigned type, const struct retro_game_info *info, size_t num)
|
bool retro_load_game_special(unsigned type, const struct retro_game_info* info, size_t num)
|
||||||
{
|
{
|
||||||
(void)type;
|
(void)type;
|
||||||
(void)info;
|
(void)info;
|
||||||
@@ -764,33 +788,33 @@ size_t retro_serialize_size(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool retro_serialize(void *data_, size_t size)
|
bool retro_serialize(void* data_, size_t size)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool retro_unserialize(const void *data_, size_t size)
|
bool retro_unserialize(const void* data_, size_t size)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *retro_get_memory_data(unsigned id)
|
void* retro_get_memory_data(unsigned id)
|
||||||
{
|
{
|
||||||
if ( id == RETRO_MEMORY_SYSTEM_RAM )
|
if (id == RETRO_MEMORY_SYSTEM_RAM)
|
||||||
return MEMORY_mem;
|
return MEMORY_mem;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t retro_get_memory_size(unsigned id)
|
size_t retro_get_memory_size(unsigned id)
|
||||||
{
|
{
|
||||||
if ( id == RETRO_MEMORY_SYSTEM_RAM )
|
if (id == RETRO_MEMORY_SYSTEM_RAM)
|
||||||
return 65536;
|
return 65536;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void retro_cheat_reset(void) {}
|
void retro_cheat_reset(void) {}
|
||||||
|
|
||||||
void retro_cheat_set(unsigned index, bool enabled, const char *code)
|
void retro_cheat_set(unsigned index, bool enabled, const char* code)
|
||||||
{
|
{
|
||||||
(void)index;
|
(void)index;
|
||||||
(void)enabled;
|
(void)enabled;
|
||||||
|
|||||||
Reference in New Issue
Block a user