mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-01-23 10:35:44 +00:00
Refactor nanoarch names
This commit is contained in:
parent
5034f86667
commit
b48a6c92f6
3 changed files with 78 additions and 85 deletions
|
|
@ -8,27 +8,14 @@ int initialized = 0;
|
|||
|
||||
void coreLog(enum retro_log_level level, const char *msg);
|
||||
|
||||
static bool on_clear_all_thread_waits_cb(unsigned v, void *data) {
|
||||
if (v > 0) {
|
||||
coreLog(RETRO_LOG_DEBUG, "CLEAR_ALL_THREAD_WAITS_CB (1)\n");
|
||||
} else {
|
||||
coreLog(RETRO_LOG_DEBUG, "CLEAR_ALL_THREAD_WAITS_CB (0)\n");
|
||||
void signalStop();
|
||||
signalStop();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void clear_all_thread_waits_cb(void *data) { *(retro_environment_t *)data = on_clear_all_thread_waits_cb; }
|
||||
|
||||
void bridge_retro_init(void *f) {
|
||||
coreLog(RETRO_LOG_INFO, "Initialization...\n");
|
||||
return ((void (*)(void)) f)();
|
||||
((void (*)(void)) f)();
|
||||
}
|
||||
|
||||
void bridge_retro_deinit(void *f) {
|
||||
coreLog(RETRO_LOG_INFO, "Deinitialiazation...\n");
|
||||
return ((void (*)(void)) f)();
|
||||
((void (*)(void)) f)();
|
||||
}
|
||||
|
||||
unsigned bridge_retro_api_version(void *f) {
|
||||
|
|
@ -36,11 +23,11 @@ unsigned bridge_retro_api_version(void *f) {
|
|||
}
|
||||
|
||||
void bridge_retro_get_system_info(void *f, struct retro_system_info *si) {
|
||||
return ((void (*)(struct retro_system_info *)) f)(si);
|
||||
((void (*)(struct retro_system_info *)) f)(si);
|
||||
}
|
||||
|
||||
void bridge_retro_get_system_av_info(void *f, struct retro_system_av_info *si) {
|
||||
return ((void (*)(struct retro_system_av_info *)) f)(si);
|
||||
((void (*)(struct retro_system_av_info *)) f)(si);
|
||||
}
|
||||
|
||||
bool bridge_retro_set_environment(void *f, void *callback) {
|
||||
|
|
@ -74,11 +61,11 @@ bool bridge_retro_load_game(void *f, struct retro_game_info *gi) {
|
|||
|
||||
void bridge_retro_unload_game(void *f) {
|
||||
coreLog(RETRO_LOG_INFO, "Unloading the game...\n");
|
||||
return ((void (*)(void)) f)();
|
||||
((void (*)(void)) f)();
|
||||
}
|
||||
|
||||
void bridge_retro_run(void *f) {
|
||||
return ((void (*)(void)) f)();
|
||||
((void (*)(void)) f)();
|
||||
}
|
||||
|
||||
size_t bridge_retro_get_memory_size(void *f, unsigned id) {
|
||||
|
|
@ -90,7 +77,7 @@ void *bridge_retro_get_memory_data(void *f, unsigned id) {
|
|||
}
|
||||
|
||||
size_t bridge_retro_serialize_size(void *f) {
|
||||
return ((size_t (*)(void)) f)();
|
||||
((size_t (*)(void)) f)();
|
||||
}
|
||||
|
||||
bool bridge_retro_serialize(void *f, void *data, size_t size) {
|
||||
|
|
@ -102,40 +89,53 @@ bool bridge_retro_unserialize(void *f, void *data, size_t size) {
|
|||
}
|
||||
|
||||
void bridge_retro_set_controller_port_device(void *f, unsigned port, unsigned device) {
|
||||
return ((void (*)(unsigned, unsigned)) f)(port, device);
|
||||
((void (*)(unsigned, unsigned)) f)(port, device);
|
||||
}
|
||||
|
||||
bool coreEnvironment_cgo(unsigned cmd, void *data) {
|
||||
static bool clear_all_thread_waits_cb(unsigned v, void *data) {
|
||||
if (v > 0) {
|
||||
coreLog(RETRO_LOG_DEBUG, "CLEAR_ALL_THREAD_WAITS_CB (1)\n");
|
||||
} else {
|
||||
coreLog(RETRO_LOG_DEBUG, "CLEAR_ALL_THREAD_WAITS_CB (0)\n");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void bridge_clear_all_thread_waits_cb(void *data) {
|
||||
*(retro_environment_t *)data = clear_all_thread_waits_cb;
|
||||
}
|
||||
|
||||
bool core_environment_cgo(unsigned cmd, void *data) {
|
||||
bool coreEnvironment(unsigned, void *);
|
||||
return coreEnvironment(cmd, data);
|
||||
}
|
||||
|
||||
void coreVideoRefresh_cgo(void *data, unsigned width, unsigned height, size_t pitch) {
|
||||
void core_video_refresh_cgo(void *data, unsigned width, unsigned height, size_t pitch) {
|
||||
void coreVideoRefresh(void *, unsigned, unsigned, size_t);
|
||||
return coreVideoRefresh(data, width, height, pitch);
|
||||
coreVideoRefresh(data, width, height, pitch);
|
||||
}
|
||||
|
||||
void coreInputPoll_cgo() {
|
||||
void core_input_poll_cgo() {
|
||||
void coreInputPoll();
|
||||
return coreInputPoll();
|
||||
coreInputPoll();
|
||||
}
|
||||
|
||||
int16_t coreInputState_cgo(unsigned port, unsigned device, unsigned index, unsigned id) {
|
||||
int16_t core_input_state_cgo(unsigned port, unsigned device, unsigned index, unsigned id) {
|
||||
int16_t coreInputState(unsigned, unsigned, unsigned, unsigned);
|
||||
return coreInputState(port, device, index, id);
|
||||
}
|
||||
|
||||
void coreAudioSample_cgo(int16_t left, int16_t right) {
|
||||
void core_audio_sample_cgo(int16_t left, int16_t right) {
|
||||
void coreAudioSample(int16_t, int16_t);
|
||||
coreAudioSample(left, right);
|
||||
}
|
||||
|
||||
size_t coreAudioSampleBatch_cgo(const int16_t *data, size_t frames) {
|
||||
size_t core_audio_sample_batch_cgo(const int16_t *data, size_t frames) {
|
||||
size_t coreAudioSampleBatch(const int16_t *, size_t);
|
||||
return coreAudioSampleBatch(data, frames);
|
||||
}
|
||||
|
||||
void coreLog_cgo(enum retro_log_level level, const char *fmt, ...) {
|
||||
void core_log_cgo(enum retro_log_level level, const char *fmt, ...) {
|
||||
char msg[4096] = {0};
|
||||
va_list va;
|
||||
va_start(va, fmt);
|
||||
|
|
@ -144,12 +144,12 @@ void coreLog_cgo(enum retro_log_level level, const char *fmt, ...) {
|
|||
coreLog(level, msg);
|
||||
}
|
||||
|
||||
uintptr_t coreGetCurrentFramebuffer_cgo() {
|
||||
uintptr_t core_get_current_framebuffer_cgo() {
|
||||
uintptr_t coreGetCurrentFramebuffer();
|
||||
return coreGetCurrentFramebuffer();
|
||||
}
|
||||
|
||||
retro_proc_address_t coreGetProcAddress_cgo(const char *sym) {
|
||||
retro_proc_address_t core_get_proc_address_cgo(const char *sym) {
|
||||
retro_proc_address_t coreGetProcAddress(const char *sym);
|
||||
return coreGetProcAddress(sym);
|
||||
}
|
||||
|
|
@ -158,14 +158,14 @@ void bridge_context_reset(retro_hw_context_reset_t f) {
|
|||
f();
|
||||
}
|
||||
|
||||
void initVideo_cgo() {
|
||||
void init_video_cgo() {
|
||||
void initVideo();
|
||||
return initVideo();
|
||||
initVideo();
|
||||
}
|
||||
|
||||
void deinitVideo_cgo() {
|
||||
void deinit_video_cgo() {
|
||||
void deinitVideo();
|
||||
return deinitVideo();
|
||||
deinitVideo();
|
||||
}
|
||||
|
||||
void *function;
|
||||
|
|
@ -192,13 +192,10 @@ void *run_loop(void *unused) {
|
|||
coreLog(RETRO_LOG_DEBUG, "UnLIBCo run loop stop\n");
|
||||
}
|
||||
|
||||
void stop_run_loop() {
|
||||
initialized = 0;
|
||||
}
|
||||
void stop() { initialized = 0; }
|
||||
|
||||
void bridge_execute(void *f) {
|
||||
void same_thread(void *f) {
|
||||
if (!initialized) {
|
||||
//signal(SIGINT, sig_handler);
|
||||
initialized = 1;
|
||||
pthread_mutex_init(&run_mutex, NULL);
|
||||
pthread_cond_init(&run_cv, NULL);
|
||||
|
|
|
|||
|
|
@ -288,7 +288,7 @@ func coreEnvironment(cmd C.unsigned, data unsafe.Pointer) C.bool {
|
|||
return true
|
||||
case C.RETRO_ENVIRONMENT_GET_LOG_INTERFACE:
|
||||
cb := (*C.struct_retro_log_callback)(data)
|
||||
cb.log = (C.retro_log_printf_t)(C.coreLog_cgo)
|
||||
cb.log = (C.retro_log_printf_t)(C.core_log_cgo)
|
||||
return true
|
||||
case C.RETRO_ENVIRONMENT_SET_PIXEL_FORMAT:
|
||||
res, err := videoSetPixelFormat(*(*C.enum_retro_pixel_format)(data))
|
||||
|
|
@ -333,8 +333,8 @@ func coreEnvironment(cmd C.unsigned, data unsafe.Pointer) C.bool {
|
|||
case C.RETRO_ENVIRONMENT_SET_HW_RENDER:
|
||||
if nano.v.isGl {
|
||||
nano.v.hw = (*C.struct_retro_hw_render_callback)(data)
|
||||
nano.v.hw.get_current_framebuffer = (C.retro_hw_get_current_framebuffer_t)(C.coreGetCurrentFramebuffer_cgo)
|
||||
nano.v.hw.get_proc_address = (C.retro_hw_get_proc_address_t)(C.coreGetProcAddress_cgo)
|
||||
nano.v.hw.get_current_framebuffer = (C.retro_hw_get_current_framebuffer_t)(C.core_get_current_framebuffer_cgo)
|
||||
nano.v.hw.get_proc_address = (C.retro_hw_get_proc_address_t)(C.core_get_proc_address_cgo)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
|
@ -357,7 +357,7 @@ func coreEnvironment(cmd C.unsigned, data unsafe.Pointer) C.bool {
|
|||
}
|
||||
return false
|
||||
case C.RETRO_ENVIRONMENT_GET_CLEAR_ALL_THREAD_WAITS_CB:
|
||||
C.clear_all_thread_waits_cb(data)
|
||||
C.bridge_clear_all_thread_waits_cb(data)
|
||||
return true
|
||||
case C.RETRO_ENVIRONMENT_GET_SAVESTATE_CONTEXT:
|
||||
if ctx := (*C.int)(data); ctx != nil {
|
||||
|
|
@ -413,11 +413,6 @@ func initVideo() {
|
|||
}
|
||||
}
|
||||
|
||||
//export signalStop
|
||||
func signalStop() {
|
||||
libretroLogger.Debug().Msgf("On UnLibCo stop callback")
|
||||
}
|
||||
|
||||
//export deinitVideo
|
||||
func deinitVideo() {
|
||||
C.bridge_context_reset(nano.v.hw.context_destroy)
|
||||
|
|
@ -504,12 +499,12 @@ func coreLoad(meta emulator.Metadata) {
|
|||
retroGetMemorySize = loadFunction(coreLib, "retro_get_memory_size")
|
||||
retroGetMemoryData = loadFunction(coreLib, "retro_get_memory_data")
|
||||
|
||||
C.bridge_retro_set_environment(retroSetEnvironment, C.coreEnvironment_cgo)
|
||||
C.bridge_retro_set_video_refresh(retroSetVideoRefresh, C.coreVideoRefresh_cgo)
|
||||
C.bridge_retro_set_input_poll(retroSetInputPoll, C.coreInputPoll_cgo)
|
||||
C.bridge_retro_set_input_state(retroSetInputState, C.coreInputState_cgo)
|
||||
C.bridge_retro_set_audio_sample(retroSetAudioSample, C.coreAudioSample_cgo)
|
||||
C.bridge_retro_set_audio_sample_batch(retroSetAudioSampleBatch, C.coreAudioSampleBatch_cgo)
|
||||
C.bridge_retro_set_environment(retroSetEnvironment, C.core_environment_cgo)
|
||||
C.bridge_retro_set_video_refresh(retroSetVideoRefresh, C.core_video_refresh_cgo)
|
||||
C.bridge_retro_set_input_poll(retroSetInputPoll, C.core_input_poll_cgo)
|
||||
C.bridge_retro_set_input_state(retroSetInputState, C.core_input_state_cgo)
|
||||
C.bridge_retro_set_audio_sample(retroSetAudioSample, C.core_audio_sample_cgo)
|
||||
C.bridge_retro_set_audio_sample_batch(retroSetAudioSampleBatch, C.core_audio_sample_batch_cgo)
|
||||
|
||||
C.bridge_retro_init(retroInit)
|
||||
|
||||
|
|
@ -567,7 +562,7 @@ func LoadGame(path string) error {
|
|||
graphics.SetBuffer(int(bufS))
|
||||
libretroLogger.Info().Msgf("Set buffer: %v", byteCountBinary(int64(bufS)))
|
||||
if usesLibCo {
|
||||
C.bridge_execute(C.initVideo_cgo)
|
||||
C.same_thread(C.init_video_cgo)
|
||||
} else {
|
||||
runtime.LockOSThread()
|
||||
initVideo()
|
||||
|
|
@ -603,12 +598,12 @@ func toggleMultitap() {
|
|||
func nanoarchShutdown() {
|
||||
if usesLibCo {
|
||||
thread.Main(func() {
|
||||
C.bridge_execute(retroUnloadGame)
|
||||
C.bridge_execute(retroDeinit)
|
||||
C.same_thread(retroUnloadGame)
|
||||
C.same_thread(retroDeinit)
|
||||
if nano.v.isGl {
|
||||
C.bridge_execute(C.deinitVideo_cgo)
|
||||
C.same_thread(C.deinit_video_cgo)
|
||||
}
|
||||
C.bridge_execute(C.stop_run_loop)
|
||||
C.same_thread(C.stop)
|
||||
})
|
||||
} else {
|
||||
if nano.v.isGl {
|
||||
|
|
@ -639,7 +634,7 @@ func nanoarchShutdown() {
|
|||
|
||||
func run() {
|
||||
if usesLibCo {
|
||||
C.bridge_execute(retroRun)
|
||||
C.same_thread(retroRun)
|
||||
} else {
|
||||
if nano.v.isGl {
|
||||
// running inside a go routine, lock the thread to make sure the OpenGL context stays current
|
||||
|
|
@ -747,13 +742,13 @@ func restoreSaveRAM(st state) {
|
|||
}
|
||||
|
||||
// getMemorySize returns memory region size.
|
||||
func getMemorySize(id uint) uint {
|
||||
return uint(C.bridge_retro_get_memory_size(retroGetMemorySize, C.uint(id)))
|
||||
func getMemorySize(id C.uint) uint {
|
||||
return uint(C.bridge_retro_get_memory_size(retroGetMemorySize, id))
|
||||
}
|
||||
|
||||
// getMemoryData returns a pointer to memory data.
|
||||
func getMemoryData(id uint) unsafe.Pointer {
|
||||
return C.bridge_retro_get_memory_data(retroGetMemoryData, C.uint(id))
|
||||
func getMemoryData(id C.uint) unsafe.Pointer {
|
||||
return C.bridge_retro_get_memory_data(retroGetMemoryData, id)
|
||||
}
|
||||
|
||||
// ptSaveRam return SRAM memory pointer if core supports it or nil.
|
||||
|
|
|
|||
|
|
@ -1,24 +1,16 @@
|
|||
#ifndef FRONTEND_H__
|
||||
#define FRONTEND_H__
|
||||
|
||||
void clear_all_thread_waits_cb(void *data);
|
||||
void stop_run_loop();
|
||||
|
||||
bool bridge_retro_load_game(void *f, struct retro_game_info *gi);
|
||||
void bridge_retro_unload_game(void *f);
|
||||
bool bridge_retro_serialize(void *f, void *data, size_t size);
|
||||
bool bridge_retro_set_environment(void *f, void *callback);
|
||||
bool bridge_retro_unserialize(void *f, void *data, size_t size);
|
||||
bool coreEnvironment_cgo(unsigned cmd, void *data);
|
||||
int16_t coreInputState_cgo(unsigned port, unsigned device, unsigned index, unsigned id);
|
||||
retro_proc_address_t coreGetProcAddress_cgo(const char *sym);
|
||||
size_t bridge_retro_get_memory_size(void *f, unsigned id);
|
||||
size_t bridge_retro_serialize_size(void *f);
|
||||
size_t coreAudioSampleBatch_cgo(const int16_t *data, size_t frames);
|
||||
uintptr_t coreGetCurrentFramebuffer_cgo();
|
||||
bool bridge_retro_unserialize(void *f, void *data, size_t size);
|
||||
bool bridge_retro_set_environment(void *f, void *callback);
|
||||
unsigned bridge_retro_api_version(void *f);
|
||||
size_t bridge_retro_get_memory_size(void *f, unsigned id);
|
||||
void *bridge_retro_get_memory_data(void *f, unsigned id);
|
||||
void bridge_context_reset(retro_hw_context_reset_t f);
|
||||
void bridge_execute(void *f);
|
||||
void bridge_retro_deinit(void *f);
|
||||
void bridge_retro_get_system_av_info(void *f, struct retro_system_av_info *si);
|
||||
void bridge_retro_get_system_info(void *f, struct retro_system_info *si);
|
||||
|
|
@ -30,12 +22,21 @@ void bridge_retro_set_controller_port_device(void *f, unsigned port, unsigned de
|
|||
void bridge_retro_set_input_poll(void *f, void *callback);
|
||||
void bridge_retro_set_input_state(void *f, void *callback);
|
||||
void bridge_retro_set_video_refresh(void *f, void *callback);
|
||||
void bridge_retro_unload_game(void *f);
|
||||
void coreAudioSample_cgo(int16_t left, int16_t right);
|
||||
void coreInputPoll_cgo();
|
||||
void coreLog_cgo(int level, const char *msg);
|
||||
void coreVideoRefresh_cgo(void *data, unsigned width, unsigned height, size_t pitch);
|
||||
void deinitVideo_cgo();
|
||||
void initVideo_cgo();
|
||||
void bridge_clear_all_thread_waits_cb(void *f);
|
||||
|
||||
bool core_environment_cgo(unsigned cmd, void *data);
|
||||
int16_t core_input_state_cgo(unsigned port, unsigned device, unsigned index, unsigned id);
|
||||
retro_proc_address_t core_get_proc_address_cgo(const char *sym);
|
||||
size_t core_audio_sample_batch_cgo(const int16_t *data, size_t frames);
|
||||
uintptr_t core_get_current_framebuffer_cgo();
|
||||
void core_audio_sample_cgo(int16_t left, int16_t right);
|
||||
void core_input_poll_cgo();
|
||||
void core_log_cgo(int level, const char *msg);
|
||||
void core_video_refresh_cgo(void *data, unsigned width, unsigned height, size_t pitch);
|
||||
void init_video_cgo();
|
||||
void deinit_video_cgo();
|
||||
|
||||
void same_thread(void *f);
|
||||
void stop();
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue