From 33104aa248a7d244e0f3099fa993f90d79d77f74 Mon Sep 17 00:00:00 2001 From: Alex Duchesne Date: Mon, 4 Apr 2022 15:28:21 -0400 Subject: [PATCH] Removed remaining get_elapsed_time references --- base.cmake | 2 +- components/retro-go/rg_audio.c | 4 +- components/retro-go/rg_gui.c | 8 ++-- components/retro-go/rg_input.c | 4 +- components/retro-go/rg_netplay.c | 6 +-- components/retro-go/rg_profiler.c | 10 ++--- components/retro-go/rg_system.c | 40 ++++++++++--------- components/retro-go/rg_system.h | 30 +++++++------- gnuboy-go/components/gnuboy/gnuboy.h | 14 ++++--- gnuboy-go/main/main.c | 2 +- handy-go/components/handy/system.h | 9 +++-- launcher/main/applications.c | 6 +-- launcher/main/main.c | 16 ++++---- .../components/nofrendo/mappers/map085.c | 2 +- nofrendo-go/components/nofrendo/nes/apu.h | 10 ++--- nofrendo-go/components/nofrendo/nofrendo.h | 14 +++++-- nofrendo-go/main/main.c | 2 +- pce-go/components/pce-go/config.h | 2 - pce-go/components/pce-go/pce-go.h | 9 ++++- prboom-go/components/prboom/doomdef.h | 16 ++++---- prboom-go/components/prboom/lprintf.c | 13 +++++- prboom-go/main/main.c | 14 +++---- retro-go.code-workspace | 2 +- smsplusgx-go/components/smsplus/render.h | 2 + smsplusgx-go/components/smsplus/shared.h | 10 ++++- snes9x-go/components/snes9x/memory.cpp | 1 - snes9x-go/components/snes9x/snes9x.h | 6 +++ 27 files changed, 149 insertions(+), 105 deletions(-) diff --git a/base.cmake b/base.cmake index 63f16e05..03b53a3c 100644 --- a/base.cmake +++ b/base.cmake @@ -6,7 +6,7 @@ macro(rg_setup_compile_options) set(RG_TARGET "RG_TARGET_$ENV{RG_TARGET}") message("Target: ${RG_TARGET}") - component_compile_options(-D${RG_TARGET} ${ARGV}) + component_compile_options(-DRETRO_GO -D${RG_TARGET} ${ARGV}) if(NOT ";${ARGV};" MATCHES ";-O[0123gs];") # Only default to -O3 if not specified by the app diff --git a/components/retro-go/rg_audio.c b/components/retro-go/rg_audio.c index 92586856..78502b2b 100644 --- a/components/retro-go/rg_audio.c +++ b/components/retro-go/rg_audio.c @@ -183,8 +183,8 @@ void rg_audio_submit(int16_t *stereoAudioBuffer, size_t frameCount) if (audioSink == RG_AUDIO_SINK_DUMMY) { - usleep(RG_MAX(dummyBusyUntil - get_elapsed_time(), 1000)); - dummyBusyUntil = get_elapsed_time() + ((audioSampleRate * 1000) / sampleCount); + usleep(RG_MAX(dummyBusyUntil - rg_system_timer(), 1000)); + dummyBusyUntil = rg_system_timer() + ((audioSampleRate * 1000) / sampleCount); written = bufferSize; } else if (audioSink == RG_AUDIO_SINK_SPEAKER) diff --git a/components/retro-go/rg_gui.c b/components/retro-go/rg_gui.c index c6dd9c0f..83e8b27e 100644 --- a/components/retro-go/rg_gui.c +++ b/components/retro-go/rg_gui.c @@ -578,7 +578,7 @@ int rg_gui_dialog(const char *header, const rg_gui_option_t *options_const, int while (event != RG_DIALOG_CLOSE) { // TO DO: Add acceleration! - joystick_old = (get_elapsed_time_since(joystick_last) > 300000) ? 0 : joystick; + joystick_old = ((rg_system_timer() - joystick_last) > 300000) ? 0 : joystick; joystick = rg_input_read_gamepad(); event = RG_DIALOG_VOID; @@ -621,7 +621,7 @@ int rg_gui_dialog(const char *header, const rg_gui_option_t *options_const, int sel = -1; } - joystick_last = get_elapsed_time(); + joystick_last = rg_system_timer(); } if (sel_old != sel) @@ -956,7 +956,7 @@ int rg_gui_about_menu(const rg_gui_option_t *extra_options) } break; case 3000: - unlink(rg_system_get_path(NULL, RG_PATH_CACHE_FILE, "crc32.bin")); + unlink(RG_BASE_PATH_CACHE "/crc32.bin"); rg_system_restart(); break; case 4000: @@ -1002,7 +1002,7 @@ int rg_gui_debug_menu(const rg_gui_option_t *extra_options) sprintf(stack_hwm, "%d", stats.freeStackMain); sprintf(heap_free, "%d+%d", stats.freeMemoryInt, stats.freeMemoryExt); sprintf(block_free, "%d+%d", stats.freeBlockInt, stats.freeBlockExt); - sprintf(uptime, "%ds", (int)(get_elapsed_time() / 1000 / 1000)); + sprintf(uptime, "%ds", (int)(rg_system_timer() / 1000000)); int sel = rg_gui_dialog("Debugging", options, 0); diff --git a/components/retro-go/rg_input.c b/components/retro-go/rg_input.c index b50e2d22..1bd39c15 100644 --- a/components/retro-go/rg_input.c +++ b/components/retro-go/rg_input.c @@ -271,12 +271,12 @@ long rg_input_gamepad_last_read(void) if (!last_gamepad_read) return 0; - return get_elapsed_time_since(last_gamepad_read); + return rg_system_timer() - last_gamepad_read; } uint32_t rg_input_read_gamepad(void) { - last_gamepad_read = get_elapsed_time(); + last_gamepad_read = rg_system_timer(); return gamepad_state; } diff --git a/components/retro-go/rg_netplay.c b/components/retro-go/rg_netplay.c index fc2d761c..49bcaeef 100644 --- a/components/retro-go/rg_netplay.c +++ b/components/retro-go/rg_netplay.c @@ -251,7 +251,7 @@ static void netplay_task() } netplay_player_t *packet_from = &players[packet.player_id]; - packet_from->last_contact = get_elapsed_time(); + packet_from->last_contact = rg_system_timer(); switch (packet.cmd) { @@ -517,7 +517,7 @@ void rg_netplay_sync(void *data_in, void *data_out, uint8_t data_len) return; } - start_time = get_elapsed_time(); + start_time = rg_system_timer(); memcpy(&local_player->sync_data, data_in, data_len); @@ -564,7 +564,7 @@ void rg_netplay_sync(void *data_in, void *data_out, uint8_t data_len) } #endif - sync_time += get_elapsed_time_since(start_time); + sync_time += rg_system_timer() - start_time; if (++sync_count == 60) { diff --git a/components/retro-go/rg_profiler.c b/components/retro-go/rg_profiler.c index 41f30927..2533a09e 100644 --- a/components/retro-go/rg_profiler.c +++ b/components/retro-go/rg_profiler.c @@ -55,7 +55,7 @@ NO_PROFILE void rg_profiler_start(void) LOCK_PROFILE(); memset(profile, 0, sizeof(rg_profile_t)); - profile->time_started = get_elapsed_time(); + profile->time_started = rg_system_timer(); enabled = true; UNLOCK_PROFILE(); @@ -73,7 +73,7 @@ NO_PROFILE void rg_profiler_print(void) LOCK_PROFILE(); - printf("RGD:PROF:BEGIN %d %lld\n", profile->total_frames, get_elapsed_time_since(profile->time_started)); + printf("RGD:PROF:BEGIN %d %d\n", profile->total_frames, (int)(rg_system_timer() - profile->time_started)); for (int i = 0; i < profile->total_frames; ++i) { @@ -108,7 +108,7 @@ NO_PROFILE void __cyg_profile_func_enter(void *this_fn, void *call_site) if (!enabled) return; - int64_t now = get_elapsed_time(); + int64_t now = rg_system_timer(); LOCK_PROFILE(); @@ -118,7 +118,7 @@ NO_PROFILE void __cyg_profile_func_enter(void *this_fn, void *call_site) if (fn->enter_time != 0) fn->run_time += now - fn->enter_time; - fn->enter_time = get_elapsed_time(); // not now, because we delayed execution + fn->enter_time = rg_system_timer(); // not now, because we delayed execution fn->num_calls++; UNLOCK_PROFILE(); @@ -129,7 +129,7 @@ NO_PROFILE void __cyg_profile_func_exit(void *this_fn, void *call_site) if (!enabled) return; - int64_t now = get_elapsed_time(); + int64_t now = rg_system_timer(); LOCK_PROFILE(); diff --git a/components/retro-go/rg_system.c b/components/retro-go/rg_system.c index a28b4e56..d96dcb90 100644 --- a/components/retro-go/rg_system.c +++ b/components/retro-go/rg_system.c @@ -153,7 +153,7 @@ static void update_statistics(void) counters.fullFrames = disp->counters.fullFrames; counters.busyTime = statistics.busyTime; counters.ticks = statistics.ticks; - counters.updateTime = get_elapsed_time(); + counters.updateTime = rg_system_timer(); float elapsedTime = (counters.updateTime - previous.updateTime) / 1000000.f; statistics.busyPercent = RG_MIN((counters.busyTime - previous.busyTime) / (elapsedTime * 1000000.f) * 100.f, 100.f); @@ -182,7 +182,7 @@ static void update_statistics(void) static void system_monitor_task(void *arg) { - time_t lastLoop = get_elapsed_time(); + int64_t lastLoop = rg_system_timer(); bool ledState = false; // Give the app a few seconds to start before monitoring @@ -191,8 +191,8 @@ static void system_monitor_task(void *arg) while (1) { - int loopTime_us = get_elapsed_time_since(lastLoop); - lastLoop = get_elapsed_time(); + int loopTime_us = lastLoop - rg_system_timer(); + lastLoop = rg_system_timer(); update_statistics(); @@ -233,7 +233,7 @@ static void system_monitor_task(void *arg) } #ifdef ENABLE_PROFILING - static long loops = 0; + static int loops = 0; if (((loops++) % 10) == 0) { rg_profiler_stop(); @@ -255,6 +255,11 @@ IRAM_ATTR void rg_system_tick(int busyTime) // WDT_RELOAD(WDT_TIMEOUT); } +IRAM_ATTR int64_t rg_system_timer(void) +{ + return esp_timer_get_time(); +} + rg_stats_t rg_system_get_stats(void) { return statistics; @@ -395,13 +400,14 @@ void rg_system_event(rg_event_t event, void *arg) app.handlers.event(event, arg); } -char *rg_system_get_path(char *buffer, rg_path_type_t pathType, const char *filename) +char *rg_emu_get_path(rg_path_type_t pathType, const char *filename) { + char *buffer = malloc(RG_PATH_MAX + 1); int type = pathType & ~0xFF; int slot = pathType & 0xFF; if (!buffer) - buffer = malloc(RG_PATH_MAX + 1); + RG_PANIC("Out of memory!"); if (type == RG_PATH_SAVE_STATE || type == RG_PATH_SAVE_SRAM) strcpy(buffer, RG_BASE_PATH_SAVES); @@ -436,12 +442,12 @@ char *rg_system_get_path(char *buffer, rg_path_type_t pathType, const char *file strcat(buffer, ".png"); } + // Don't shrink the buffer, we could use the extra space (append extension, etc). return buffer; } bool rg_emu_load_state(int slot) { - char filename[RG_PATH_MAX + 1]; bool success = false; if (!app.romPath || !app.handlers.loadState) @@ -450,8 +456,7 @@ bool rg_emu_load_state(int slot) return false; } - rg_system_get_path(filename, RG_PATH_SAVE_STATE + slot, app.romPath); - + char *filename = rg_emu_get_path(RG_PATH_SAVE_STATE + slot, app.romPath); RG_LOGI("Loading state from '%s'.\n", filename); WDT_RELOAD(30 * 1000000); @@ -463,23 +468,22 @@ bool rg_emu_load_state(int slot) } WDT_RELOAD(WDT_TIMEOUT); + free(filename); return success; } bool rg_emu_save_state(int slot) { - char filename[RG_PATH_MAX + 1]; - char tempname[RG_PATH_MAX + 8]; - bool success = false; - if (!app.romPath || !app.handlers.saveState) { RG_LOGE("No rom or handler defined...\n"); return false; } - rg_system_get_path(filename, RG_PATH_SAVE_STATE + slot, app.romPath); + char *filename = rg_emu_get_path(RG_PATH_SAVE_STATE + slot, app.romPath); + char tempname[RG_PATH_MAX + 8]; + bool success = false; RG_LOGI("Saving state to '%s'.\n", filename); WDT_RELOAD(30 * 1000000); @@ -515,8 +519,7 @@ bool rg_emu_save_state(int slot) else { // Save succeeded, let's take a pretty screenshot for the launcher! - rg_system_get_path(filename, RG_PATH_SCREENSHOT + slot, app.romPath); - rg_emu_screenshot(filename, rg_display_get_status()->screen.width / 2, 0); + rg_emu_screenshot(strcat(filename, ".png"), rg_display_get_status()->screen.width / 2, 0); // And set bootflags to resume from this state on next boot if ((app.bootFlags & (RG_BOOT_ONCE|RG_BOOT_RESUME)) == 0) @@ -527,6 +530,7 @@ bool rg_emu_save_state(int slot) } #undef tempname + free(filename); rg_storage_commit(); rg_system_set_led(0); @@ -702,7 +706,7 @@ bool rg_system_save_trace(const char *filename, bool panic_trace) fprintf(fp, "Free memory: %d + %d\n", stats->freeMemoryInt, stats->freeMemoryExt); fprintf(fp, "Free block: %d + %d\n", stats->freeBlockInt, stats->freeBlockExt); fprintf(fp, "Stack HWM: %d\n", stats->freeStackMain); - fprintf(fp, "Uptime: %ds (%d ticks)\n", (int)(get_elapsed_time() / 1000000), stats->ticks); + fprintf(fp, "Uptime: %ds (%d ticks)\n", (int)(rg_system_timer() / 1000000), stats->ticks); if (panic_trace && panicTrace.message[0]) fprintf(fp, "Panic message: %.256s\n", panicTrace.message); if (panic_trace && panicTrace.context[0]) diff --git a/components/retro-go/rg_system.h b/components/retro-go/rg_system.h index 6c71b8e1..0b33df03 100644 --- a/components/retro-go/rg_system.h +++ b/components/retro-go/rg_system.h @@ -22,6 +22,11 @@ extern "C" { #define RG_TARGET_ODROID_GO #endif +#define RG_APP_LAUNCHER "launcher" +#define RG_APP_FACTORY NULL + +#define RG_PATH_MAX 255 + #include "rg_audio.h" #include "rg_display.h" #include "rg_input.h" @@ -77,9 +82,6 @@ typedef enum RG_EVENT_REDRAW, } rg_event_t; -#define RG_APP_LAUNCHER "launcher" -#define RG_APP_FACTORY NULL - typedef bool (*rg_state_handler_t)(const char *filename); typedef bool (*rg_reset_handler_t)(bool hard); typedef void (*rg_event_handler_t)(int event, void *arg); @@ -163,10 +165,11 @@ void rg_system_vlog(int level, const char *context, const char *format, va_list void rg_system_log(int level, const char *context, const char *format, ...) __attribute__((format(printf,3,4))); bool rg_system_save_trace(const char *filename, bool append); void rg_system_event(rg_event_t event, void *arg); -char *rg_system_get_path(char *buffer, rg_path_type_t type, const char *filename); +int64_t rg_system_timer(void); rg_app_t *rg_system_get_app(void); rg_stats_t rg_system_get_stats(void); +char *rg_emu_get_path(rg_path_type_t type, const char *arg); bool rg_emu_save_state(int slot); bool rg_emu_load_state(int slot); bool rg_emu_reset(int hard); @@ -185,20 +188,19 @@ void *rg_alloc(size_t size, uint32_t caps); /* Utilities */ // Functions from esp-idf, we don't include their header but they will be linked -extern int64_t esp_timer_get_time(); extern uint32_t crc32_le(uint32_t crc, const uint8_t * buf, uint32_t len); -// long microseconds +// These older macros do not guarantee a time unit in case retro-go was ported to a platform where +// divisions were too slow or overflows were likely. However at this time it doesn't matter and much +// of the code assumes microseconds so I will replace them by rg_system_timer() for clarity. #define get_frame_time(refresh_rate) (1000000 / (refresh_rate)) -// int64_t microseconds -#define get_elapsed_time() esp_timer_get_time() -// int64_t microseconds -#define get_elapsed_time_since(start) (esp_timer_get_time() - (start)) +#define get_elapsed_time() (rg_system_timer()) +#define get_elapsed_time_since(start) (get_elapsed_time() - (start)) -#define RG_TIMER_INIT() int _rgts_ = get_elapsed_time(), _rgtl_ = get_elapsed_time(); +#define RG_TIMER_INIT() int64_t _rgts_ = rg_system_timer(), _rgtl_ = rg_system_timer(); #define RG_TIMER_LAP(name) \ - RG_LOGX("Lap %s: %.2f Total: %.2f\n", #name, get_elapsed_time_since(_rgtl_) / 1000.f, \ - get_elapsed_time_since(_rgts_) / 1000.f); _rgtl_ = get_elapsed_time(); + RG_LOGX("Lap %s: %.2f Total: %.2f\n", #name, (rg_system_timer() - _rgtl_) / 1000.f, \ + (rg_system_timer() - _rgts_) / 1000.f); _rgtl_ = rg_system_timer(); #define RG_MIN(a, b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b);_a < _b ? _a : _b; }) #define RG_MAX(a, b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b);_a > _b ? _a : _b; }) @@ -220,8 +222,6 @@ extern uint32_t crc32_le(uint32_t crc, const uint8_t * buf, uint32_t len); #define RG_DUMP(...) {} -#define RG_PATH_MAX 255 - // Attributes #ifndef IRAM_ATTR diff --git a/gnuboy-go/components/gnuboy/gnuboy.h b/gnuboy-go/components/gnuboy/gnuboy.h index 5849f4d4..30a0f286 100644 --- a/gnuboy-go/components/gnuboy/gnuboy.h +++ b/gnuboy-go/components/gnuboy/gnuboy.h @@ -1,15 +1,16 @@ #pragma once -#include #include #include #include -#define GB_WIDTH (160) -#define GB_HEIGHT (144) - +#ifdef RETRO_GO +#include #define LOG_PRINTF(level, x...) rg_system_log(RG_LOG_USER, NULL, x) -// #define LOG_PRINTF(level, x...) printf(x) +#else +#define LOG_PRINTF(level, x...) printf(x) +#define IRAM_ATTR +#endif #define MESSAGE_ERROR(x, ...) LOG_PRINTF(1, "!! %s: " x, __func__, ## __VA_ARGS__) #define MESSAGE_WARN(x, ...) LOG_PRINTF(2, "** %s: " x, __func__, ## __VA_ARGS__) @@ -17,6 +18,9 @@ // #define MESSAGE_DEBUG(x, ...) LOG_PRINTF(4, ">> %s: " x, __func__, ## __VA_ARGS__) #define MESSAGE_DEBUG(x, ...) {} +#define GB_WIDTH (160) +#define GB_HEIGHT (144) + typedef uint8_t byte; typedef uint8_t un8; typedef uint16_t un16; diff --git a/gnuboy-go/main/main.c b/gnuboy-go/main/main.c index f8da4add..090a1e17 100644 --- a/gnuboy-go/main/main.c +++ b/gnuboy-go/main/main.c @@ -251,7 +251,7 @@ void app_main(void) rg_display_set_source_format(GB_WIDTH, GB_HEIGHT, 0, 0, GB_WIDTH * 2, RG_PIXEL_565_BE); autoSaveSRAM = rg_settings_get_number(NS_APP, SETTING_SAVESRAM, 0); - sramFile = rg_system_get_path(NULL, RG_PATH_SAVE_SRAM, app->romPath); + sramFile = rg_emu_get_path(RG_PATH_SAVE_SRAM, app->romPath); if (!rg_mkdir(rg_dirname(sramFile))) MESSAGE_ERROR("Unable to create SRAM folder..."); diff --git a/handy-go/components/handy/system.h b/handy-go/components/handy/system.h index e09eb5e6..a043b017 100644 --- a/handy-go/components/handy/system.h +++ b/handy-go/components/handy/system.h @@ -140,11 +140,14 @@ extern UBYTE *gPrimaryFrameBuffer; // // Define logging functions // - +#ifdef RETRO_GO #include -// #define log_printf(x...) printf(x) #define log_printf(x...) rg_system_log(RG_LOG_USER, NULL, x) - +#else +#include +#define log_printf(x...) printf(x) +#define rg_crc32(a, b, c) (0) +#endif // // Define the interfaces before we start pulling in the classes diff --git a/launcher/main/applications.c b/launcher/main/applications.c index 45f6af6c..e3888e99 100644 --- a/launcher/main/applications.c +++ b/launcher/main/applications.c @@ -570,9 +570,9 @@ static void show_file_info(retro_file_t *file) void application_show_file_menu(retro_file_t *file, bool advanced) { const char *rom_path = get_file_path(file); - char *save_path = rg_system_get_path(NULL, RG_PATH_SAVE_STATE, rom_path); - char *sram_path = rg_system_get_path(NULL, RG_PATH_SAVE_SRAM, rom_path); - char *scrn_path = rg_system_get_path(NULL, RG_PATH_SCREENSHOT, rom_path); + char *save_path = rg_emu_get_path(RG_PATH_SAVE_STATE, rom_path); + char *sram_path = rg_emu_get_path(RG_PATH_SAVE_SRAM, rom_path); + char *scrn_path = rg_emu_get_path(RG_PATH_SCREENSHOT, rom_path); bool has_save = access(save_path, F_OK) == 0; bool has_sram = access(sram_path, F_OK) == 0; bool is_fav = bookmark_exists(BOOK_TYPE_FAVORITE, file); diff --git a/launcher/main/main.c b/launcher/main/main.c index bb2d3292..1e0e17d2 100644 --- a/launcher/main/main.c +++ b/launcher/main/main.c @@ -105,12 +105,12 @@ static rg_gui_event_t about_app_cb(rg_gui_option_t *option, rg_gui_event_t event static void retro_loop(void) { tab_t *tab = gui_get_current_tab(); - int next_repeat = 0; + int64_t next_repeat = 0; + int64_t next_idle_event = 0; int repeats = 0; int joystick, prev_joystick; int change_tab = 0; int browse_last = -1; - int next_idle_event = 0; bool redraw_pending = true; while (true) @@ -149,13 +149,13 @@ static void retro_loop(void) { joystick = gui.joystick; repeats = 0; - next_repeat = get_elapsed_time() + 400000; + next_repeat = rg_system_timer() + 400000; } - else if (get_elapsed_time_since(next_repeat) >= 0) + else if ((rg_system_timer() - next_repeat) >= 0) { joystick = gui.joystick; repeats++; - next_repeat = get_elapsed_time() + 400000 / (repeats + 1); + next_repeat = rg_system_timer() + 400000 / (repeats + 1); } } @@ -232,13 +232,13 @@ static void retro_loop(void) if ((gui.joystick|joystick) & RG_KEY_ANY) { gui.idle_counter = 0; - next_idle_event = get_elapsed_time() + 100000; + next_idle_event = rg_system_timer() + 100000; } - else if (get_elapsed_time() >= next_idle_event) + else if (rg_system_timer() >= next_idle_event) { gui.idle_counter++; gui_event(TAB_IDLE, tab); - next_idle_event = get_elapsed_time() + 100000; + next_idle_event = rg_system_timer() + 100000; redraw_pending = true; gui.joystick = 0; } diff --git a/nofrendo-go/components/nofrendo/mappers/map085.c b/nofrendo-go/components/nofrendo/mappers/map085.c index 51aa5b9a..40b1e7da 100644 --- a/nofrendo-go/components/nofrendo/mappers/map085.c +++ b/nofrendo-go/components/nofrendo/mappers/map085.c @@ -26,7 +26,7 @@ static struct { - uint counter, latch; + unsigned counter, latch; bool enabled, wait_state; } irq; diff --git a/nofrendo-go/components/nofrendo/nes/apu.h b/nofrendo-go/components/nofrendo/nes/apu.h index f3128b96..4623a194 100644 --- a/nofrendo-go/components/nofrendo/nes/apu.h +++ b/nofrendo-go/components/nofrendo/nes/apu.h @@ -199,9 +199,9 @@ typedef struct float cycle_rate; struct { - uint8 state; - uint step; - uint cycles; + unsigned state; + unsigned step; + unsigned cycles; bool irq_occurred; bool disable_irq; } fc; @@ -235,5 +235,5 @@ void apu_getcontext(apu_t *dest_apu); void apu_process(short *buffer, size_t num_samples, bool stereo); void apu_fc_advance(int cycles); -uint8 apu_read(uint address); -void apu_write(uint address, uint8 value); +uint8 apu_read(uint32 address); +void apu_write(uint32 address, uint8 value); diff --git a/nofrendo-go/components/nofrendo/nofrendo.h b/nofrendo-go/components/nofrendo/nofrendo.h index 1c7ade73..614c2acd 100644 --- a/nofrendo-go/components/nofrendo/nofrendo.h +++ b/nofrendo-go/components/nofrendo/nofrendo.h @@ -47,7 +47,9 @@ /* Basic types */ #include +#include #include +#include typedef int8_t int8; typedef uint8_t uint8; @@ -81,9 +83,16 @@ enum /* End basic types */ /* Macros */ - +#ifdef RETRO_GO +#include #define LOG_PRINTF(level, x...) rg_system_log(RG_LOG_USER, NULL, x) -// #define LOG_PRINTF(level, x...) printf(x) +#else +#define LOG_PRINTF(level, x...) printf(x) +#define DRAM_ATTR +#define IRAM_ATTR +#define rg_alloc(size, type) calloc(1, (size)) +#define crc32_le(a, b, c) (0) +#endif #ifdef NOFRENDO_DEBUG #define MESSAGE_ERROR(x, ...) LOG_PRINTF(1, "!! %s: " x, __func__, ## __VA_ARGS__) @@ -110,7 +119,6 @@ enum /* End macros */ -#include #include int nofrendo_init(int system, int sample_rate, bool stereo, void *blit, void *vsync, void *input); diff --git a/nofrendo-go/main/main.c b/nofrendo-go/main/main.c index 329e119a..ae6609fe 100644 --- a/nofrendo-go/main/main.c +++ b/nofrendo-go/main/main.c @@ -231,7 +231,7 @@ static void nsf_draw_overlay(void) { extern int nsf_current_song; char song[32]; - const nsfheader_t *header = nes->cart->data_ptr; + const nsfheader_t *header = (nsfheader_t *)nes->cart->data_ptr; const rg_gui_option_t options[] = { {0, "Name ", (char *)header->name, 1, NULL}, {0, "Artist ", (char *)header->artist, 1, NULL}, diff --git a/pce-go/components/pce-go/config.h b/pce-go/components/pce-go/config.h index 927fcaa8..84499f77 100644 --- a/pce-go/components/pce-go/config.h +++ b/pce-go/components/pce-go/config.h @@ -1,5 +1,3 @@ -#include - // Enable debugging messages (hardware faults, fix-me, etc) #define ENABLE_DEBUGG 0 diff --git a/pce-go/components/pce-go/pce-go.h b/pce-go/components/pce-go/pce-go.h index 7c3c3e93..4e898960 100644 --- a/pce-go/components/pce-go/pce-go.h +++ b/pce-go/components/pce-go/pce-go.h @@ -3,12 +3,19 @@ #include #include #include +#include #include #include "config.h" +#ifdef RETRO_GO +#include #define LOG_PRINTF(level, x...) rg_system_log(RG_LOG_USER, NULL, x) -// #define LOG_PRINTF(level, x...) printf(x) +#else +#define LOG_PRINTF(level, x...) printf(x) +#define IRAM_ATTR +#define rg_crc32(a, b, c) (0) +#endif #define MESSAGE_ERROR(x...) LOG_PRINTF(1, "!! " x) #define MESSAGE_WARN(x...) LOG_PRINTF(2, " ! " x) diff --git a/prboom-go/components/prboom/doomdef.h b/prboom-go/components/prboom/doomdef.h index 4fdaa603..0d9d892d 100644 --- a/prboom-go/components/prboom/doomdef.h +++ b/prboom-go/components/prboom/doomdef.h @@ -40,7 +40,14 @@ #include "config.h" #endif +#ifdef RETRO_GO #include +#define SCREENWIDTH (RG_SCREEN_WIDTH - RG_SCREEN_MARGIN_LEFT - RG_SCREEN_MARGIN_RIGHT) +#define SCREENHEIGHT (RG_SCREEN_HEIGHT - RG_SCREEN_MARGIN_TOP - RG_SCREEN_MARGIN_BOTTOM) +#else +#define SCREENWIDTH 320 +#define SCREENHEIGHT 240 +#endif // This must come first, since it redefines malloc(), free(), etc. -- killough: #include "z_zone.h" @@ -73,15 +80,6 @@ typedef enum { none } GameMission_t; -// SCREENWIDTH and SCREENHEIGHT define the visible size -#if defined(RG_SCREEN_WIDTH) && defined(RG_SCREEN_HEIGHT) -#define SCREENWIDTH (RG_SCREEN_WIDTH - RG_SCREEN_MARGIN_LEFT - RG_SCREEN_MARGIN_RIGHT) -#define SCREENHEIGHT (RG_SCREEN_HEIGHT - RG_SCREEN_MARGIN_TOP - RG_SCREEN_MARGIN_BOTTOM) -#else -#define SCREENWIDTH 320 -#define SCREENHEIGHT 240 -#endif - // killough 2/8/98: MAX versions for maximum screen sizes // allows us to avoid the overhead of dynamic allocation // when multiple screen sizes are supported diff --git a/prboom-go/components/prboom/lprintf.c b/prboom-go/components/prboom/lprintf.c index 4410a417..622bfcf0 100644 --- a/prboom-go/components/prboom/lprintf.c +++ b/prboom-go/components/prboom/lprintf.c @@ -55,7 +55,11 @@ void lprintf(OutputLevels lvl, const char *s, ...) { va_list arg; va_start(arg, s); +#ifdef RETRO_GO rg_system_vlog(RG_LOG_USER, NULL, s, arg); +#else + vprintf(s, arg); +#endif // vprintf(s, arg); va_end(arg); } @@ -73,10 +77,15 @@ void lprintf(OutputLevels lvl, const char *s, ...) void I_Error(const char *error, ...) { - char buffer[256]; va_list arg; va_start(arg, error); +#ifdef RETRO_GO + char buffer[256]; vsnprintf(buffer, sizeof(buffer), error, arg); - va_end(arg); RG_PANIC(buffer); +#else + vprintf(error, arg); + abort(); +#endif + va_end(arg); } diff --git a/prboom-go/main/main.c b/prboom-go/main/main.c index b54ea960..575333e4 100644 --- a/prboom-go/main/main.c +++ b/prboom-go/main/main.c @@ -188,12 +188,12 @@ void I_InitGraphics(void) int I_GetTimeMS(void) { - return esp_timer_get_time() / 1000; + return rg_system_timer() / 1000; } int I_GetTime(void) { - return ((esp_timer_get_time() * TICRATE) / 1000000); + return ((rg_system_timer() * TICRATE) / 1000000); } void I_uSleep(unsigned long usecs) @@ -412,9 +412,9 @@ void I_SetMusicVolume(int volume) void I_StartTic(void) { - static uint64_t last_time = 0; - static uint32_t prev_joystick = 0x0000; - static uint32_t rg_menu_delay = 0; + static int64_t last_time = 0; + static int32_t prev_joystick = 0x0000; + static int32_t rg_menu_delay = 0; uint32_t joystick = rg_input_read_gamepad(); uint32_t changed = prev_joystick ^ joystick; event_t event = {0}; @@ -449,8 +449,8 @@ void I_StartTic(void) } } - rg_system_tick(get_elapsed_time_since(last_time)); - last_time = get_elapsed_time(); + rg_system_tick(rg_system_timer() - last_time); + last_time = rg_system_timer(); prev_joystick = joystick; } diff --git a/retro-go.code-workspace b/retro-go.code-workspace index 5e14ba9e..b0f31b66 100644 --- a/retro-go.code-workspace +++ b/retro-go.code-workspace @@ -42,7 +42,7 @@ */ "C_Cpp.default.defines": [ - "PROJECT_VER", + "RETRO_GO", "INLINE=", "uint=unsigned int", "CONFIG_FREERTOS_HZ=100", diff --git a/smsplusgx-go/components/smsplus/render.h b/smsplusgx-go/components/smsplus/render.h index a31c7b97..57f43836 100644 --- a/smsplusgx-go/components/smsplus/render.h +++ b/smsplusgx-go/components/smsplus/render.h @@ -25,6 +25,8 @@ #ifndef _RENDER_H_ #define _RENDER_H_ +#include + /* Pack RGB data into a 16-bit RGB 5:6:5 format */ #define MAKE_PIXEL(r,g,b) (((r << 8) & 0xF800) | ((g << 3) & 0x07E0) | ((b >> 3) & 0x001F)) diff --git a/smsplusgx-go/components/smsplus/shared.h b/smsplusgx-go/components/smsplus/shared.h index 2d488b05..dfac001c 100644 --- a/smsplusgx-go/components/smsplus/shared.h +++ b/smsplusgx-go/components/smsplus/shared.h @@ -16,10 +16,16 @@ typedef signed long int int32; #include #include #include -#include +#ifdef RETRO_GO +#include #define LOG_PRINTF(level, x...) rg_system_log(RG_LOG_USER, NULL, x) -// #define LOG_PRINTF(level, x...) printf(x) +#else +#define LOG_PRINTF(level, x...) printf(x) +#define DRAM_ATTR +#define IRAM_ATTR +#define crc32_le(a, b, c) (0) +#endif #define MESSAGE_ERROR(x, ...) LOG_PRINTF(1, "!! %s: " x, __func__, ## __VA_ARGS__) #define MESSAGE_WARN(x, ...) LOG_PRINTF(2, "** %s: " x, __func__, ## __VA_ARGS__) diff --git a/snes9x-go/components/snes9x/memory.cpp b/snes9x-go/components/snes9x/memory.cpp index 4cf2519f..e1e461e0 100644 --- a/snes9x-go/components/snes9x/memory.cpp +++ b/snes9x-go/components/snes9x/memory.cpp @@ -14,7 +14,6 @@ CMemory Memory; uint32 OpenBus = 0; #define match_nn(str) (strncmp(Memory.ROMName, (str), strlen((str))) == 0) -extern uint32 crc32_le(uint32 crc, uint8 const * buf, uint32 len); static int First512BytesCountZeroes(void) { diff --git a/snes9x-go/components/snes9x/snes9x.h b/snes9x-go/components/snes9x/snes9x.h index 52a6b0f4..4b782a2a 100644 --- a/snes9x-go/components/snes9x/snes9x.h +++ b/snes9x-go/components/snes9x/snes9x.h @@ -13,7 +13,13 @@ #include "port.h" +#ifdef RETRO_GO #include +#else +#define IRAM_ATTR +#define rg_alloc(size, type) calloc(1, size) +#define crc32_le(a, b, c) (0) +#endif /* Experimental retro-go flags */