@@ -89,7 +89,11 @@ void decompose_rom_sample_path(char *rompath, char *samplepath);
89
89
void init_joy_list (void );
90
90
91
91
extern UINT32 create_path_recursive (char * path );
92
-
92
+
93
+ #if defined(SF2000 )
94
+ static retro_log_printf_t log_cb ;
95
+ #endif
96
+
93
97
#if defined(_3DS )
94
98
void * linearMemAlign (size_t size , size_t alignment );
95
99
void linearFree (void * mem );
@@ -98,11 +102,15 @@ void linearFree(void* mem);
98
102
void CLIB_DECL logerror (const char * text ,...)
99
103
{
100
104
#ifdef DISABLE_ERROR_LOGGING
105
+ #if defined(SF2000 )
106
+ //log_cb(RETRO_LOG_DEBUG, text);
107
+ #else
101
108
va_list arg ;
102
109
va_start (arg ,text );
103
110
vprintf (text ,arg );
104
111
va_end (arg );
105
112
#endif
113
+ #endif
106
114
}
107
115
108
116
int global_showinfo = 1 ;
@@ -119,11 +127,22 @@ int attenuation = 0;
119
127
120
128
void gp2x_printf (char * fmt , ...)
121
129
{
122
- va_list marker ;
123
-
124
- va_start (marker , fmt );
125
- vprintf (fmt , marker );
126
- va_end (marker );
130
+ #if defined(SF2000 )
131
+ char buffer [500 ];
132
+
133
+ va_list args ;
134
+ va_start (args , fmt );
135
+ vsnprintf (buffer , sizeof (buffer ), fmt , args );
136
+ va_end (args );
137
+
138
+ if (log_cb )
139
+ log_cb (RETRO_LOG_INFO , buffer );
140
+ #else
141
+ va_list marker ;
142
+ va_start (marker , fmt );
143
+ vprintf (fmt , marker );
144
+ va_end (marker );
145
+ #endif
127
146
}
128
147
129
148
void gp2x_set_video_mode (int bpp ,int width ,int height )
@@ -140,6 +159,9 @@ void gp2x_video_setpalette(void)
140
159
unsigned long gp2x_joystick_read (int n )
141
160
{
142
161
(void )n ;
162
+ #if defined(SF2000 )
163
+ return 0 ;
164
+ #endif
143
165
}
144
166
145
167
int osd_init (void )
@@ -316,6 +338,14 @@ void retro_set_environment(retro_environment_t cb)
316
338
environ_cb = cb ;
317
339
318
340
cb (RETRO_ENVIRONMENT_SET_VARIABLES , (void * )vars );
341
+
342
+ #if defined(SF2000 )
343
+ struct retro_log_callback log ;
344
+ if (environ_cb (RETRO_ENVIRONMENT_GET_LOG_INTERFACE , & log ))
345
+ log_cb = log .log ;
346
+ else
347
+ log_cb = NULL ;
348
+ #endif
319
349
}
320
350
321
351
void retro_set_audio_sample (retro_audio_sample_t cb )
@@ -350,8 +380,13 @@ void retro_reset(void)
350
380
351
381
static void update_input (void )
352
382
{
383
+ #if !defined(SF2000 )
353
384
#define RK (port ,key ) input_state_cb(port, RETRO_DEVICE_KEYBOARD, 0,RETROK_##key)
354
385
#define JS (port , button ) joypad_bits & (1 << RETRO_DEVICE_ID_JOYPAD_##button)
386
+ #else
387
+ #define RK (port ,key ) (input_state_cb(port, RETRO_DEVICE_KEYBOARD, 0,RETROK_##key))
388
+ #define JS (port , button ) (joypad_bits & (1 << RETRO_DEVICE_ID_JOYPAD_##button))
389
+ #endif
355
390
int i , j , c = 0 ;
356
391
input_poll_cb ();
357
392
@@ -388,7 +423,11 @@ static void update_input(void)
388
423
joy_pressed [c ++ ] = JS (i , L );
389
424
joy_pressed [c ++ ] = JS (i , R );
390
425
426
+ #if defined(SF2000 )
427
+ key [KEY_TAB ] |= (JS (i , L ) > 0 ) && (JS (i , START ) > 0 );
428
+ #else
391
429
key [KEY_TAB ] |= JS (i , R2 );
430
+ #endif
392
431
}
393
432
394
433
key [KEY_A ] = RK (0 , a );
@@ -515,8 +554,14 @@ void hook_video_done(void)
515
554
void run_thread_proc (void )
516
555
{
517
556
run_game (game_index );
557
+ #if !defined(SF2000 )
518
558
hook_audio_done ();
519
559
hook_video_done ();
560
+ #else
561
+ // never exit a co-thread
562
+ while (true)
563
+ co_switch (main_thread );
564
+ #endif
520
565
}
521
566
#else
522
567
static void hook_check (void )
@@ -548,6 +593,7 @@ void hook_video_done(void)
548
593
slock_unlock (libretro_mutex );
549
594
}
550
595
596
+ #if !defined(SF2000 )
551
597
#ifdef WANT_LIBCO
552
598
void * run_thread_proc (void * v )
553
599
{
@@ -569,6 +615,15 @@ void run_thread_proc(void *v)
569
615
hook_video_done ();
570
616
}
571
617
#endif
618
+ #else
619
+ void run_thread_proc (void * v )
620
+ {
621
+ run_game (game_index );
622
+ thread_done = 1 ;
623
+ hook_audio_done ();
624
+ hook_video_done ();
625
+ }
626
+ #endif
572
627
573
628
static void lock_mame (void )
574
629
{
@@ -716,6 +771,7 @@ void retro_run(void)
716
771
}
717
772
}
718
773
774
+ #ifndef WANT_LIBCO
719
775
audio_done = 0 ;
720
776
video_done = 0 ;
721
777
@@ -804,7 +860,11 @@ bool retro_load_game(const struct retro_game_info *info)
804
860
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565 ;
805
861
if (!environ_cb (RETRO_ENVIRONMENT_SET_PIXEL_FORMAT , & fmt ))
806
862
{
863
+ #if !defined(SF2000 )
807
864
fprintf (stderr , "[libretro]: RGB565 is not supported.\n" );
865
+ #else
866
+ logerror ("[libretro]: RGB565 is not supported.\n" );
867
+ #endif
808
868
return false;
809
869
}
810
870
@@ -834,8 +894,14 @@ bool retro_load_game(const struct retro_game_info *info)
834
894
}
835
895
printf ("SAVE_DIRECTORY: %s\n" , retro_save_directory );
836
896
897
+ #if !defined(SF2000 )
837
898
sprintf (core_sys_directory ,"%s%cmame2000\0" ,retro_system_directory ,slash );
838
899
sprintf (core_save_directory ,"%s%cmame2000\0" ,retro_save_directory ,slash );
900
+ #else
901
+ sprintf (core_sys_directory ,"%s%cmame2000" ,retro_system_directory ,slash );
902
+ sprintf (core_save_directory ,"%s%cmame2000" ,retro_save_directory ,slash );
903
+ #endif
904
+
839
905
printf ("MAME2000_SYS_DIRECTORY: %s\n" , core_sys_directory );
840
906
printf ("MAME2000_SAVE_DIRECTORY: %s\n" , core_save_directory );
841
907
@@ -857,6 +923,9 @@ bool retro_load_game(const struct retro_game_info *info)
857
923
strcat (IMAMESAMPLEPATH , "/samples" );
858
924
859
925
/* do we have a driver for this? */
926
+ #if defined(SF2000 )
927
+ game_index = -1 ;
928
+ #endif
860
929
for (i = 0 ; drivers [i ] && (game_index == -1 ); i ++ )
861
930
{
862
931
if (strcasecmp (baseName ,drivers [i ]-> name ) == 0 )
@@ -871,6 +940,9 @@ bool retro_load_game(const struct retro_game_info *info)
871
940
printf ("Game \"%s\" not supported\n" , baseName );
872
941
return false;
873
942
}
943
+ #if defined(SF2000 )
944
+ printf ("game_index=%d driver_name=%s\n" , game_index , drivers [game_index ]-> name );
945
+ #endif
874
946
875
947
/* parse generic (os-independent) options */
876
948
//parse_cmdline (argc, argv, game_index);
@@ -912,6 +984,10 @@ bool retro_load_game(const struct retro_game_info *info)
912
984
options .samplerate = sample_rate ;
913
985
usestereo = stereo_enabled ;
914
986
987
+ #if defined(SF2000 )
988
+ printf ("sample_rate=%d\n" , sample_rate );
989
+ #endif
990
+
915
991
/* This is needed so emulated YM3526/YM3812 chips are used instead on physical ones. */
916
992
options .use_emulated_ym3812 = 1 ;
917
993
@@ -1037,13 +1113,23 @@ bool retro_load_game(const struct retro_game_info *info)
1037
1113
1038
1114
decompose_rom_sample_path (IMAMEBASEPATH , IMAMESAMPLEPATH );
1039
1115
1116
+ #if !defined(SF2000 )
1040
1117
mame_sleep = 1 ;
1118
+ #endif
1041
1119
1042
1120
#ifdef WANT_LIBCO
1043
1121
main_thread = co_active ();
1044
1122
core_thread = co_create (0x10000 , run_thread_proc );
1045
1123
co_switch (core_thread );
1124
+ #if defined(SF2000 )
1125
+ extern int bailing ;
1126
+ if (bailing )
1127
+ return false;
1128
+ #endif
1046
1129
#else
1130
+ #if defined(SF2000 )
1131
+ mame_sleep = 1 ;
1132
+ #endif
1047
1133
run_thread = sthread_create (run_thread_proc , NULL );
1048
1134
#endif
1049
1135
0 commit comments