X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=gpsp.git;a=blobdiff_plain;f=main.c;h=c0841819108a162b0ec0577731c0665e3a5f13ad;hp=967ac737e187bb76534265ec82784918173ea5e5;hb=HEAD;hpb=d0944fc942fad418aed45245e4259780f2fc0697 diff --git a/main.c b/main.c index 967ac73..c084181 100644 --- a/main.c +++ b/main.c @@ -38,8 +38,14 @@ debug_state current_debug_state = RUN; //u32 breakpoint_value = 0; +#ifdef RPI_BUILD +frameskip_type current_frameskip_type = manual_frameskip; //manual; //auto_frameskip; +u32 global_cycles_per_instruction = 1; +#else frameskip_type current_frameskip_type = auto_frameskip; u32 global_cycles_per_instruction = 1; +#endif + u32 random_skip = 0; u32 fps_debug = 0; @@ -133,8 +139,8 @@ void trigger_ext_event(); static const char *file_ext[] = { ".gba", ".bin", ".zip", NULL }; -#ifdef ARM_ARCH -void ChangeWorkingDirectory(char *exe) +#ifndef PSP_BUILD +static void ChangeWorkingDirectory(char *exe) { #ifndef _WIN32_WCE char *s = strrchr(exe, '/'); @@ -145,6 +151,48 @@ void ChangeWorkingDirectory(char *exe) } #endif } + +static void switch_to_romdir(void) +{ + char buff[256]; + int r; + + file_open(romdir_file, "romdir.txt", read); + + if(file_check_valid(romdir_file)) + { + r = file_read(romdir_file, buff, sizeof(buff) - 1); + if (r > 0) + { + buff[r] = 0; + while (r > 0 && isspace(buff[r-1])) + buff[--r] = 0; + chdir(buff); + } + file_close(romdir_file); + } +} + +static void save_romdir(void) +{ + char buff[512]; + + snprintf(buff, sizeof(buff), "%s" PATH_SEPARATOR "romdir.txt", main_path); + file_open(romdir_file, buff, write); + + if(file_check_valid(romdir_file)) + { + if (getcwd(buff, sizeof(buff))) + { + file_write(romdir_file, buff, strlen(buff)); + } + file_close(romdir_file); + } +} +#else +void ChangeWorkingDirectory(char *exe) {} +static void switch_to_romdir(void) {} +static void save_romdir(void) {} #endif void init_main() @@ -191,10 +239,8 @@ int main(int argc, char *argv[]) // Copy the directory path of the executable into main_path -#ifdef ARM_ARCH // ChangeWorkingDirectory will null out the filename out of the path ChangeWorkingDirectory(argv[0]); -#endif getcwd(main_path, 512); @@ -220,6 +266,7 @@ int main(int argc, char *argv[]) gui_action_type gui_action = CURSOR_NONE; debug_screen_start(); + debug_screen_printl(" "); debug_screen_printl("Sorry, but gpSP requires a Gameboy Advance BIOS "); debug_screen_printl("image to run correctly. Make sure to get an "); debug_screen_printl("authentic one, it'll be exactly 16384 bytes large "); @@ -229,7 +276,7 @@ int main(int argc, char *argv[]) debug_screen_printl(" "); debug_screen_printl("When you do get it name it gba_bios.bin and put it"); #ifdef PND_BUILD - debug_screen_printl("in /pandora/appdata/gpsp/ . "); + debug_screen_printl("in /pandora/appdata/gpsp/ . "); #else debug_screen_printl("in the same directory as gpSP. "); #endif @@ -274,7 +321,7 @@ int main(int argc, char *argv[]) } init_main(); - init_sound(); + init_sound(1); init_input(); @@ -299,6 +346,7 @@ int main(int argc, char *argv[]) else { char load_filename[512]; + switch_to_romdir(); if(load_file(file_ext, load_filename) == -1) { menu(copy_screen()); @@ -779,7 +827,7 @@ void synchronize() } else if (synchronize_flag) { -#if defined(PND_BUILD) +#if defined(PND_BUILD) || defined(RPI_BUILD) fb_wait_vsync(); #elif !defined(GP2X_BUILD) // sleeping on GP2X is a bad idea delay_us((u64)virtual_frame_count * 50000 / 3 - new_ticks + 2); @@ -825,7 +873,7 @@ void synchronize() interval_skipped_frames += skip_next_frame; -#if !defined(GP2X_BUILD) && !defined(PND_BUILD) +#if !defined(GP2X_BUILD) && !defined(PND_BUILD) && !defined(RPI_BUILD) char char_buffer[64]; sprintf(char_buffer, "gpSP: %2d (%2d) fps", fps, frames_drawn); SDL_WM_SetCaption(char_buffer, "gpSP"); @@ -836,6 +884,8 @@ void synchronize() void quit() { + save_romdir(); + if(!update_backup_flag) update_backup_force();