further unification and refactoring
authornotaz <notasas@gmail.com>
Thu, 23 Jul 2009 20:06:18 +0000 (20:06 +0000)
committernotaz <notasas@gmail.com>
Thu, 23 Jul 2009 20:06:18 +0000 (20:06 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@710 be3aeb3a-fb24-0410-a615-afba39da0efa

14 files changed:
platform/common/emu.c
platform/common/emu.h
platform/common/input.h
platform/common/main.c
platform/common/menu.c
platform/common/plat.h
platform/gizmondo/emu.c
platform/gizmondo/main.c
platform/gp2x/940ctl.c
platform/gp2x/emu.c
platform/pandora/emu.c
platform/psp/emu.c
platform/psp/main.c
platform/uiq3/emu.c

index ff17e3b..2535abe 100644 (file)
@@ -16,6 +16,7 @@
 #include "config.h"\r
 #include "plat.h"\r
 #include "input.h"\r
+#include "posix.h"\r
 \r
 #include <pico/pico_int.h>\r
 #include <pico/patch.h>\r
@@ -34,6 +35,7 @@ char *PicoConfigFile = "config.cfg";
 currentConfig_t currentConfig, defaultConfig;\r
 int state_slot = 0;\r
 int config_slot = 0, config_slot_current = 0;\r
+int pico_pen_x = 320/2, pico_pen_y = 240/2;\r
 int pico_inp_mode = 0;\r
 int engineState = PGS_Menu;\r
 \r
@@ -41,6 +43,7 @@ int engineState = PGS_Menu;
 char rom_fname_reload[512] = { 0, };\r
 char rom_fname_loaded[512] = { 0, };\r
 int rom_loaded = 0;\r
+int reset_timing = 0;\r
 \r
 unsigned char *movie_data = NULL;\r
 static int movie_size = 0;\r
@@ -109,7 +112,7 @@ int emu_findBios(int region, char **bios_file)
 \r
        for (i = 0; i < count; i++)\r
        {\r
-               emu_getMainDir(bios_path, sizeof(bios_path));\r
+               plat_get_root_dir(bios_path, sizeof(bios_path));\r
                strcat(bios_path, files[i]);\r
                strcat(bios_path, ".bin");\r
                f = fopen(bios_path, "rb");\r
@@ -519,7 +522,7 @@ static void romfname_ext(char *dst, const char *prefix, const char *ext)
        for (; p >= rom_fname_loaded && *p != PATH_SEP_C; p--); p++;\r
        *dst = 0;\r
        if (prefix) {\r
-               int len = emu_getMainDir(dst, 512);\r
+               int len = plat_get_root_dir(dst, 512);\r
                strcpy(dst + len, prefix);\r
                prefix_len = len + strlen(prefix);\r
        }\r
@@ -536,7 +539,7 @@ static void romfname_ext(char *dst, const char *prefix, const char *ext)
 static void make_config_cfg(char *cfg)\r
 {\r
        int len;\r
-       len = emu_getMainDir(cfg, 512);\r
+       len = plat_get_root_dir(cfg, 512);\r
        strncpy(cfg + len, PicoConfigFile, 512-6-1-len);\r
        if (config_slot != 0)\r
        {\r
@@ -957,9 +960,22 @@ void emu_changeFastForward(int set_on)
        }\r
 }\r
 \r
-void emu_RunEventsPico(unsigned int events)\r
+static void emu_msg_tray_open(void)\r
 {\r
-       if (events & (1 << 3)) {\r
+       plat_status_msg("CD tray opened");\r
+}\r
+\r
+void emu_reset_game(void)\r
+{\r
+       PicoReset();\r
+       reset_timing = 1;\r
+}\r
+\r
+void run_events_pico(unsigned int events)\r
+{\r
+       int lim_x;\r
+\r
+       if (events & PEV_PICO_SWINP) {\r
                pico_inp_mode++;\r
                if (pico_inp_mode > 2)\r
                        pico_inp_mode = 0;\r
@@ -971,18 +987,44 @@ void emu_RunEventsPico(unsigned int events)
                                break;\r
                }\r
        }\r
-       if (events & (1 << 4)) {\r
+       if (events & PEV_PICO_PPREV) {\r
                PicoPicohw.page--;\r
                if (PicoPicohw.page < 0)\r
                        PicoPicohw.page = 0;\r
                plat_status_msg("Page %i", PicoPicohw.page);\r
        }\r
-       if (events & (1 << 5)) {\r
+       if (events & PEV_PICO_PNEXT) {\r
                PicoPicohw.page++;\r
                if (PicoPicohw.page > 6)\r
                        PicoPicohw.page = 6;\r
                plat_status_msg("Page %i", PicoPicohw.page);\r
        }\r
+\r
+       if (pico_inp_mode == 0)\r
+               return;\r
+\r
+       /* handle other input modes */\r
+       if (PicoPad[0] & 1) pico_pen_y--;\r
+       if (PicoPad[0] & 2) pico_pen_y++;\r
+       if (PicoPad[0] & 4) pico_pen_x--;\r
+       if (PicoPad[0] & 8) pico_pen_x++;\r
+       PicoPad[0] &= ~0x0f; // release UDLR\r
+\r
+       lim_x = (Pico.video.reg[12]&1) ? 319 : 255;\r
+       if (pico_pen_y < 8)\r
+               pico_pen_y = 8;\r
+       if (pico_pen_y > 224 - PICO_PEN_ADJUST_Y)\r
+               pico_pen_y = 224 - PICO_PEN_ADJUST_Y;\r
+       if (pico_pen_x < 0)\r
+               pico_pen_x = 0;\r
+       if (pico_pen_x > lim_x - PICO_PEN_ADJUST_X)\r
+               pico_pen_x = lim_x - PICO_PEN_ADJUST_X;\r
+\r
+       PicoPicohw.pen_pos[0] = pico_pen_x;\r
+       if (!(Pico.video.reg[12] & 1))\r
+               PicoPicohw.pen_pos[0] += pico_pen_x / 4;\r
+       PicoPicohw.pen_pos[0] += 0x3c;\r
+       PicoPicohw.pen_pos[1] = pico_inp_mode == 1 ? (0x2f8 + pico_pen_y) : (0x1fc + pico_pen_y);\r
 }\r
 \r
 static void do_turbo(int *pad, int acts)\r
@@ -1009,7 +1051,7 @@ static void do_turbo(int *pad, int acts)
        *pad |= turbo_pad & (acts >> 8);\r
 }\r
 \r
-static void run_ui_events(unsigned int which)\r
+static void run_events_ui(unsigned int which)\r
 {\r
        if (which & (PEV_STATE_LOAD|PEV_STATE_SAVE))\r
        {\r
@@ -1096,18 +1138,58 @@ void emu_update_input(void)
        if ((events ^ prevEvents) & PEV_FF) {\r
                emu_changeFastForward(events & PEV_FF);\r
                plat_update_volume(0, 0);\r
-//             reset_timing = 1;\r
+               reset_timing = 1;\r
        }\r
 \r
        events &= ~prevEvents;\r
 \r
-// TODO        if (PicoAHW == PAHW_PICO)\r
-//             RunEventsPico(events);\r
+       if (PicoAHW == PAHW_PICO)\r
+               run_events_pico(events);\r
        if (events)\r
-               run_ui_events(events);\r
+               run_events_ui(events);\r
        if (movie_data)\r
                update_movie();\r
 \r
        prevEvents = (allActions[0] | allActions[1]) & PEV_MASK;\r
 }\r
 \r
+static void mkdir_path(char *path_with_reserve, int pos, const char *name)\r
+{\r
+       strcpy(path_with_reserve + pos, name);\r
+       if (plat_is_dir(path_with_reserve))\r
+               return;\r
+       if (mkdir(path_with_reserve, 0777) < 0)\r
+               lprintf("failed to create: %s\n", path_with_reserve);\r
+}\r
+\r
+void emu_init(void)\r
+{\r
+       char dir[256];\r
+       int pos;\r
+\r
+       /* make dirs for saves */\r
+       pos = plat_get_root_dir(dir, sizeof(dir) - 4);\r
+       mkdir_path(dir, pos, "mds");\r
+       mkdir_path(dir, pos, "srm");\r
+       mkdir_path(dir, pos, "brm");\r
+\r
+       PicoInit();\r
+       PicoMessage = plat_status_msg_busy_next;\r
+       PicoMCDopenTray = emu_msg_tray_open;\r
+       PicoMCDcloseTray = menu_loop_tray;\r
+}\r
+\r
+void emu_finish(void)\r
+{\r
+       // save SRAM\r
+       if ((currentConfig.EmuOpt & EOPT_USE_SRAM) && SRam.changed) {\r
+               emu_SaveLoadGame(0, 1);\r
+               SRam.changed = 0;\r
+       }\r
+\r
+       if (!(currentConfig.EmuOpt & EOPT_NO_AUTOSVCFG))\r
+               emu_writelrom();\r
+\r
+       PicoExit();\r
+}\r
+\r
index a064da6..b503d96 100644 (file)
@@ -71,6 +71,11 @@ extern int rom_loaded;
 extern int state_slot;
 extern int config_slot, config_slot_current;
 extern unsigned char *movie_data;
+extern int reset_timing;
+
+#define PICO_PEN_ADJUST_X 4
+#define PICO_PEN_ADJUST_Y 2
+extern int pico_pen_x, pico_pen_y;
 extern int pico_inp_mode;
 
 extern char rom_fname_reload[512];             // ROM to try loading on next PGS_ReloadRom
@@ -91,8 +96,12 @@ enum TPicoGameState {
 };
 
 
+void  emu_init(void);
+void  emu_finish(void);
+
 int   emu_ReloadRom(char *rom_fname);
 int   emu_SaveLoadGame(int load, int sram);
+void  emu_reset_game(void);
 
 int   emu_ReadConfig(int game, int no_defaults);
 int   emu_WriteConfig(int game);
index cf7a099..9bc28c9 100644 (file)
@@ -26,6 +26,9 @@
 #define PEVB_SSLOT_NEXT 24
 #define PEVB_MENU       23
 #define PEVB_FF         22
+#define PEVB_PICO_PNEXT 21
+#define PEVB_PICO_PPREV 20
+#define PEVB_PICO_SWINP 19
 
 #define PEV_VOL_DOWN    (1 << PEVB_VOL_DOWN)
 #define PEV_VOL_UP      (1 << PEVB_VOL_UP)
 #define PEV_SSLOT_NEXT  (1 << PEVB_SSLOT_NEXT)
 #define PEV_MENU        (1 << PEVB_MENU)
 #define PEV_FF          (1 << PEVB_FF)
+#define PEV_PICO_PNEXT  (1 << PEVB_PICO_PNEXT)
+#define PEV_PICO_PPREV  (1 << PEVB_PICO_PPREV)
+#define PEV_PICO_SWINP  (1 << PEVB_PICO_SWINP)
 
-#define PEV_MASK 0x7fc00000
+#define PEV_MASK 0x7ff80000
 
 
 enum {
index 00cbac7..67f15da 100644 (file)
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
 \r
        /* in_init() must go before config, config accesses in_ fwk */\r
        in_init();\r
-       emu_prepareDefaultConfig();\r
+       pemu_prep_defconfig();\r
        emu_ReadConfig(0, 0);\r
        config_readlrom(PicoConfigFile);\r
 \r
@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
        in_probe();\r
        in_debug_dump();\r
 \r
-       emu_Init();\r
+       emu_init();\r
        menu_init();\r
 \r
        engineState = PGS_Menu;\r
@@ -117,7 +117,7 @@ int main(int argc, char *argv[])
                                engineState = PGS_Running;\r
 \r
                        case PGS_Running:\r
-                               emu_Loop();\r
+                               pemu_loop();\r
                                break;\r
 \r
                        case PGS_Quit:\r
@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
 \r
        endloop:\r
 \r
-       emu_Deinit();\r
+       emu_finish();\r
        plat_finish();\r
 \r
        return 0;\r
index 74e7a6d..412dbc2 100644 (file)
@@ -997,7 +997,7 @@ static void draw_savestate_bg(int slot)
        }\r
 \r
        /* do a frame and fetch menu bg */\r
-       emu_forcedFrame(POPT_EN_SOFTSCALE);\r
+       pemu_forced_frame(POPT_EN_SOFTSCALE);\r
        plat_video_menu_enter(1);\r
 \r
        memcpy(Pico.vram, tmp_vram, sizeof(Pico.vram));\r
@@ -1286,18 +1286,18 @@ me_bind_action me_ctrl_actions[15] =
 // "LOAD STATE", "VOLUME UP", "VOLUME DOWN", "DONE"\r
 me_bind_action emuctrl_actions[] =\r
 {\r
-       { "Load State       ", 1 << PEVB_STATE_LOAD },\r
-       { "Save State       ", 1 << PEVB_STATE_SAVE },\r
-       { "Prev Save Slot   ", 1 << PEVB_SSLOT_PREV },\r
-       { "Next Save Slot   ", 1 << PEVB_SSLOT_NEXT },\r
-       { "Switch Renderer  ", 1 << PEVB_SWITCH_RND },\r
-       { "Volume Down      ", 1 << PEVB_VOL_DOWN },\r
-       { "Volume Up        ", 1 << PEVB_VOL_UP },\r
-       { "Fast forward     ", 1 << PEVB_FF },\r
-       { "Enter Menu       ", 1 << PEVB_MENU },\r
-       { "Pico Next page   ", 1 << 21 }, /* TODO */\r
-       { "Pico Prev page   ", 1 << 20 },\r
-       { "Pico Switch input", 1 << 19 },\r
+       { "Load State       ", PEV_STATE_LOAD },\r
+       { "Save State       ", PEV_STATE_SAVE },\r
+       { "Prev Save Slot   ", PEV_SSLOT_PREV },\r
+       { "Next Save Slot   ", PEV_SSLOT_NEXT },\r
+       { "Switch Renderer  ", PEV_SWITCH_RND },\r
+       { "Volume Down      ", PEV_VOL_DOWN },\r
+       { "Volume Up        ", PEV_VOL_UP },\r
+       { "Fast forward     ", PEV_FF },\r
+       { "Enter Menu       ", PEV_MENU },\r
+       { "Pico Next page   ", PEV_PICO_PNEXT },\r
+       { "Pico Prev page   ", PEV_PICO_PPREV },\r
+       { "Pico Switch input", PEV_PICO_SWINP },\r
        { NULL,                0 }\r
 };\r
 \r
@@ -1727,17 +1727,17 @@ extern void SekStepM68k(void);
 \r
 static void mplayer_loop(void)\r
 {\r
-       emu_startSound();\r
+       pemu_sound_start();\r
 \r
        while (1)\r
        {\r
                PDebugZ80Frame();\r
                if (in_menu_wait_any(0) & PBTN_MA3)\r
                        break;\r
-               emu_waitSound();\r
+               pemu_sound_wait();\r
        }\r
 \r
-       emu_endSound();\r
+       pemu_sound_stop();\r
 }\r
 \r
 static void draw_text_debug(const char *str, int skip, int from)\r
@@ -1776,7 +1776,7 @@ static void draw_frame_debug(void)
        if (PicoDrawMask & PDRAW_SPRITES_HI_ON)  memcpy(layer_str + 19, "spr_hi", 6);\r
 \r
        memset(g_screen_ptr, 0, g_screen_width * g_screen_height * 2);\r
-       emu_forcedFrame(0);\r
+       pemu_forced_frame(0);\r
        smalltext_out16(4, 1, "build: " __DATE__ " " __TIME__, 0xffff);\r
        smalltext_out16(4, g_screen_height - me_sfont_h, layer_str, 0xffff);\r
 }\r
@@ -1793,7 +1793,7 @@ static void debug_menu_loop(void)
                {\r
                        case 0: plat_video_menu_begin();\r
                                tmp = PDebugMain();\r
-                               emu_platformDebugCat(tmp);\r
+                               plat_debug_cat(tmp);\r
                                draw_text_debug(tmp, 0, 0);\r
                                if (dumped) {\r
                                        smalltext_out16(g_screen_width - 6 * me_sfont_h,\r
@@ -1803,7 +1803,7 @@ static void debug_menu_loop(void)
                                break;\r
                        case 1: draw_frame_debug(); break;\r
                        case 2: memset(g_screen_ptr, 0, g_screen_width * g_screen_height * 2);\r
-                               emu_forcedFrame(0);\r
+                               pemu_forced_frame(0);\r
                                menu_darken_bg(g_screen_ptr, g_screen_width * g_screen_height, 0);\r
                                PDebugShowSpriteStats((unsigned short *)g_screen_ptr + (g_screen_height/2 - 240/2)*g_screen_width +\r
                                        g_screen_width/2 - 320/2, g_screen_width); break;\r
@@ -1896,7 +1896,7 @@ static int main_menu_handler(menu_id id, int keys)
                break;\r
        case MA_MAIN_RESET_GAME:\r
                if (rom_loaded) {\r
-                       emu_ResetGame();\r
+                       emu_reset_game();\r
                        return 1;\r
                }\r
                break;\r
index 43ee39f..e3705a8 100644 (file)
@@ -4,20 +4,14 @@ extern "C" {
 
 /* stuff to be implemented by platform code */
 extern char cpu_clk_name[];
-/* TODO rename all these */
-extern const char * const keyNames[]; // TODO rm
-void  emu_prepareDefaultConfig(void);
-void  emu_platformDebugCat(char *str);
-void  emu_forcedFrame(int opts);
-void  emu_startSound(void);
-void  emu_endSound(void);
-void  emu_waitSound(void);
-void  emu_ResetGame(void); // TODO mv rm?
-void  emu_Init(void);
-void  emu_Deinit(void);
-void  emu_Loop(void);
-
-int  emu_getMainDir(char *dst, int len);
+
+void pemu_prep_defconfig(void);
+void pemu_loop(void);
+void pemu_forced_frame(int opts);
+void pemu_sound_start(void);
+void pemu_sound_stop(void);
+void pemu_sound_wait(void);
+
 void menu_romload_prepare(const char *rom_name);
 void menu_romload_end(void);
 
@@ -25,6 +19,9 @@ void plat_early_init(void);
 void plat_init(void);
 void plat_finish(void);
 
+/* return the dir/ where configs, saves, bios, etc. are found */
+int  plat_get_root_dir(char *dst, int len);
+
 /* to be used while emulation is starting or running */
 void plat_status_msg(const char *format, ...);
 
@@ -49,6 +46,7 @@ void plat_sleep_ms(int ms);
 unsigned int  plat_get_ticks_ms(void);
 
 const char   *plat_get_credits(void);
+void plat_debug_cat(char *str);
 
 #ifdef __cplusplus
 } // extern "C"
index 3a5c23c..e628f06 100644 (file)
@@ -26,9 +26,7 @@
 
 // main 300K gfx-related buffer. Used by menu and renderers.
 unsigned char gfx_buffer[321*240*2*2];
-
 unsigned char *PicoDraw2FB = gfx_buffer;  // temporary buffer for alt renderer ( (8+320)*(8+240+8) )
-int reset_timing = 0;
 
 static DWORD noticeMsgTime = 0;
 static short *snd_cbuff = NULL;
@@ -44,7 +42,7 @@ void plat_status_msg(const char *format, ...)
        noticeMsgTime = GetTickCount();
 }
 
-int emu_getMainDir(char *dst, int len)
+int plat_get_root_dir(char *dst, int len)
 {
        if (len > 0) *dst = 0;
 
@@ -81,42 +79,7 @@ void emu_stateCb(const char *str)
        Sleep(0); /* yield the CPU, the system may need it */
 }
 
-static void emu_msg_tray_open(void)
-{
-       strcpy(noticeMsg, "CD tray opened");
-       noticeMsgTime = GetTickCount();
-}
-
-
-void emu_Init(void)
-{
-       // make dirs for saves, cfgs, etc.
-       mkdir("mds", 0777);
-       mkdir("srm", 0777);
-       mkdir("brm", 0777);
-       mkdir("cfg", 0777);
-
-       PicoInit();
-       PicoMessage = emu_msg_cb;
-       PicoMCDopenTray = emu_msg_tray_open;
-       PicoMCDcloseTray = menu_loop_tray;
-}
-
-void emu_Deinit(void)
-{
-       // save SRAM
-       if ((currentConfig.EmuOpt & 1) && SRam.changed) {
-               emu_SaveLoadGame(0, 1);
-               SRam.changed = 0;
-       }
-
-       if (!(currentConfig.EmuOpt & 0x20))
-               config_writelrom(PicoConfigFile);
-
-       PicoExit();
-}
-
-void emu_prepareDefaultConfig(void)
+void pemu_prep_defconfig(void)
 {
        memset(&defaultConfig, 0, sizeof(defaultConfig));
        defaultConfig.EmuOpt    = 0x1d | 0x680; // | confirm_save, cd_leds, 16bit rend
@@ -348,7 +311,7 @@ static void SkipFrame(void)
 }
 
 /* forced frame to front buffer */
-void emu_forcedFrame(int opts)
+void pemu_forced_frame(int opts)
 {
        int po_old = PicoOpt;
        int eo_old = currentConfig.EmuOpt;
@@ -484,9 +447,8 @@ static void updateKeys(void)
        prevEvents = (allActions[0] | allActions[1]) >> 16;
 }
 
-void emu_platformDebugCat(char *str)
+void plat_debug_cat(char *str)
 {
-       // nothing
 }
 
 static void simpleWait(DWORD until)
@@ -503,7 +465,7 @@ static void simpleWait(DWORD until)
                spend_cycles(1024*2);
 }
 
-void emu_Loop(void)
+void pemu_loop(void)
 {
        static int PsndRate_old = 0, PicoOpt_old = 0, pal_old = 0;
        char fpsbuff[24]; // fps count c string
@@ -752,10 +714,3 @@ void emu_Loop(void)
        }
 }
 
-
-void emu_ResetGame(void)
-{
-       PicoReset();
-       reset_timing = 1;
-}
-
index 801fbc8..cd678f0 100644 (file)
@@ -46,7 +46,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdL
                                engineState = PGS_Running;\r
 \r
                        case PGS_Running:\r
-                               emu_Loop();\r
+                               pemu_loop();\r
                                break;\r
 \r
                        case PGS_Quit:\r
index 11890bd..f6073d0 100644 (file)
@@ -21,7 +21,6 @@
 #include "../../pico/sound/ym2612.h"\r
 #include "../../pico/sound/mix.h"\r
 \r
-extern int reset_timing;\r
 static unsigned char *shared_mem = 0;\r
 static _940_data_t *shared_data = 0;\r
 _940_ctl_t *shared_ctl = 0;\r
index f27b285..ea0c67a 100644 (file)
@@ -6,8 +6,6 @@
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <sys/time.h>\r
-#include <sys/stat.h>\r
-#include <sys/types.h>\r
 #include <stdarg.h>\r
 \r
 #include "plat_gp2x.h"\r
@@ -42,14 +40,8 @@ static struct timeval noticeMsgTime = { 0, 0 };      // when started showing
 static int osd_fps_x;\r
 static int gp2x_old_gamma = 100;\r
 static char noticeMsg[40];\r
-unsigned char *PicoDraw2FB = NULL;  // temporary buffer for alt renderer\r
-int reset_timing = 0;\r
-\r
-#define PICO_PEN_ADJUST_X 4\r
-#define PICO_PEN_ADJUST_Y 2\r
-static int pico_pen_x = 320/2, pico_pen_y = 240/2;\r
-\r
-static void emu_msg_tray_open(void);\r
+static unsigned char PicoDraw2FB_[(8+320) * (8+240+8)];\r
+unsigned char *PicoDraw2FB = PicoDraw2FB_;\r
 \r
 \r
 void plat_status_msg(const char *format, ...)\r
@@ -63,7 +55,7 @@ void plat_status_msg(const char *format, ...)
        gettimeofday(&noticeMsgTime, 0);\r
 }\r
 \r
-int emu_getMainDir(char *dst, int len)\r
+int plat_get_root_dir(char *dst, int len)\r
 {\r
        extern char **g_argv;\r
        int j;\r
@@ -78,27 +70,6 @@ int emu_getMainDir(char *dst, int len)
        return j + 1;\r
 }\r
 \r
-void emu_Init(void)\r
-{\r
-       // make temp buffer for alt renderer\r
-       PicoDraw2FB = malloc((8+320)*(8+240+8));\r
-       if (!PicoDraw2FB)\r
-       {\r
-               printf("PicoDraw2FB == 0\n");\r
-       }\r
-\r
-       // make dirs for saves, cfgs, etc.\r
-       mkdir("mds", 0777);\r
-       mkdir("srm", 0777);\r
-       mkdir("brm", 0777);\r
-       mkdir("cfg", 0777);\r
-\r
-       PicoInit();\r
-       PicoMessage = plat_status_msg_busy_next;\r
-       PicoMCDopenTray = emu_msg_tray_open;\r
-       PicoMCDcloseTray = menu_loop_tray;\r
-}\r
-\r
 \r
 static void scaling_update(void)\r
 {\r
@@ -116,27 +87,7 @@ static void scaling_update(void)
 }\r
 \r
 \r
-void emu_Deinit(void)\r
-{\r
-       // save SRAM\r
-       if((currentConfig.EmuOpt & 1) && SRam.changed) {\r
-               emu_SaveLoadGame(0, 1);\r
-               SRam.changed = 0;\r
-       }\r
-\r
-       if (!(currentConfig.EmuOpt & EOPT_NO_AUTOSVCFG))\r
-               emu_writelrom();\r
-\r
-       free(PicoDraw2FB);\r
-\r
-       PicoExit();\r
-\r
-       // restore gamma\r
-       if (gp2x_old_gamma != 100)\r
-               set_lcd_gamma(100, 0);\r
-}\r
-\r
-void emu_prepareDefaultConfig(void)\r
+void pemu_prep_defconfig(void)\r
 {\r
        gp2x_soc_t soc;\r
 \r
@@ -411,20 +362,12 @@ void plat_video_toggle_renderer(void)
        }\r
 }\r
 \r
-static void emu_msg_tray_open(void)\r
-{\r
-       plat_status_msg("CD tray opened");\r
-}\r
-\r
+#if 0 // TODO\r
 static void RunEventsPico(unsigned int events)\r
 {\r
        int ret, px, py, lim_x;\r
        static int pdown_frames = 0;\r
 \r
-       emu_RunEventsPico(events);\r
-\r
-       if (pico_inp_mode == 0) return;\r
-\r
        // for F200\r
        ret = gp2x_touchpad_read(&px, &py);\r
        if (ret >= 0)\r
@@ -449,24 +392,8 @@ static void RunEventsPico(unsigned int events)
                //if (ret == 0)\r
                //      PicoPicohw.pen_pos[0] = PicoPicohw.pen_pos[1] = 0x8000;\r
        }\r
-\r
-       if (PicoPad[0] & 1) pico_pen_y--;\r
-       if (PicoPad[0] & 2) pico_pen_y++;\r
-       if (PicoPad[0] & 4) pico_pen_x--;\r
-       if (PicoPad[0] & 8) pico_pen_x++;\r
-       PicoPad[0] &= ~0x0f; // release UDLR\r
-\r
-       lim_x = (Pico.video.reg[12]&1) ? 319 : 255;\r
-       if (pico_pen_y < 8) pico_pen_y = 8;\r
-       if (pico_pen_y > 224-PICO_PEN_ADJUST_Y) pico_pen_y = 224-PICO_PEN_ADJUST_Y;\r
-       if (pico_pen_x < 0) pico_pen_x = 0;\r
-       if (pico_pen_x > lim_x-PICO_PEN_ADJUST_X) pico_pen_x = lim_x-PICO_PEN_ADJUST_X;\r
-\r
-       PicoPicohw.pen_pos[0] = pico_pen_x;\r
-       if (!(Pico.video.reg[12]&1)) PicoPicohw.pen_pos[0] += pico_pen_x/4;\r
-       PicoPicohw.pen_pos[0] += 0x3c;\r
-       PicoPicohw.pen_pos[1] = pico_inp_mode == 1 ? (0x2f8 + pico_pen_y) : (0x1fc + pico_pen_y);\r
 }\r
+#endif\r
 \r
 void plat_update_volume(int has_changed, int is_up)\r
 {\r
@@ -519,7 +446,7 @@ static void updateSound(int len)
                sndout_oss_write(PsndOut, len<<1);\r
 }\r
 \r
-void emu_startSound(void)\r
+void pemu_sound_start(void)\r
 {\r
        static int PsndRate_old = 0, PicoOpt_old = 0, pal_old = 0;\r
        int target_fps = Pico.m.pal ? 50 : 60;\r
@@ -549,12 +476,11 @@ void emu_startSound(void)
        }\r
 }\r
 \r
-void emu_endSound(void)\r
+void pemu_sound_stop(void)\r
 {\r
 }\r
 \r
-/* wait until we can write more sound */\r
-void emu_waitSound(void)\r
+void pemu_sound_wait(void)\r
 {\r
        // don't need to do anything, writes will block by themselves\r
 }\r
@@ -568,16 +494,15 @@ static void SkipFrame(int do_audio)
 }\r
 \r
 \r
-void emu_forcedFrame(int opts)\r
+void pemu_forced_frame(int opts)\r
 {\r
        int po_old = PicoOpt;\r
        int eo_old = currentConfig.EmuOpt;\r
 \r
-       PicoOpt &= ~0x10;\r
-       PicoOpt |= opts|POPT_ACC_SPRITES; // acc_sprites\r
-       currentConfig.EmuOpt |= 0x80;\r
+       PicoOpt &= ~POPT_ALT_RENDERER;\r
+       PicoOpt |= opts|POPT_ACC_SPRITES;\r
+       currentConfig.EmuOpt |= EOPT_16BPP;\r
 \r
-       //vidResetMode();\r
        PicoDrawSetColorFormat(1);\r
        PicoScanBegin = EmuScanBegin16;\r
        Pico.m.dirtyPal = 1;\r
@@ -597,9 +522,8 @@ void emu_forcedFrame(int opts)
        currentConfig.EmuOpt = eo_old;\r
 }\r
 \r
-void emu_platformDebugCat(char *str)\r
+void plat_debug_cat(char *str)\r
 {\r
-       // nothing\r
 }\r
 \r
 static void simpleWait(int thissec, int lim_time)\r
@@ -668,7 +592,7 @@ static void tga_dump(void)
 #endif\r
 \r
 \r
-void emu_Loop(void)\r
+void pemu_loop(void)\r
 {\r
        static int gp2x_old_clock = -1, EmuOpt_old = 0;\r
        char fpsbuff[24]; // fps count c string\r
@@ -726,7 +650,7 @@ void emu_Loop(void)
        target_frametime = 1000000/target_fps;\r
        reset_timing = 1;\r
 \r
-       emu_startSound();\r
+       pemu_sound_start();\r
 \r
        // prepare CD buffer\r
        if (PicoAHW & PAHW_MCD) PicoCDBufferInit();\r
@@ -920,14 +844,7 @@ void emu_Loop(void)
 \r
        // if in 8bit mode, generate 16bit image for menu background\r
        if ((PicoOpt & POPT_ALT_RENDERER) || !(currentConfig.EmuOpt & EOPT_16BPP))\r
-               emu_forcedFrame(POPT_EN_SOFTSCALE);\r
-}\r
-\r
-\r
-void emu_ResetGame(void)\r
-{\r
-       PicoReset();\r
-       reset_timing = 1;\r
+               pemu_forced_frame(POPT_EN_SOFTSCALE);\r
 }\r
 \r
 const char *plat_get_credits(void)\r
index cce5219..bb4b30a 100644 (file)
@@ -1,4 +1,4 @@
-// (c) Copyright 2006-2008 notaz, All rights reserved.\r
+// (c) Copyright 2006-2009 notaz, All rights reserved.\r
 // Free for non-commercial use.\r
 \r
 // For commercial use, separate licencing terms must be obtained.\r
@@ -6,12 +6,6 @@
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <sys/time.h>\r
-#include <sys/stat.h>\r
-#include <sys/types.h>\r
-#include <linux/limits.h>\r
-#include <ctype.h>\r
-#include <unistd.h>\r
-\r
 #include <stdarg.h>\r
 \r
 #include "../common/arm_utils.h"\r
@@ -43,15 +37,11 @@ static short __attribute__((aligned(4))) sndBuffer[2*44100/50];
 static struct timeval noticeMsgTime = { 0, 0 };        // when started showing\r
 static int osd_fps_x;\r
 unsigned char *PicoDraw2FB = NULL;  // temporary buffer for alt renderer\r
-int reset_timing = 0;\r
 \r
 #define PICO_PEN_ADJUST_X 4\r
 #define PICO_PEN_ADJUST_Y 2\r
 static int pico_pen_x = 0, pico_pen_y = 240/2;\r
 \r
-static void emu_msg_cb(const char *msg);\r
-static void emu_msg_tray_open(void);\r
-\r
 \r
 void plat_status_msg(const char *format, ...)\r
 {\r
@@ -64,7 +54,7 @@ void plat_status_msg(const char *format, ...)
        gettimeofday(&noticeMsgTime, 0);\r
 }\r
 \r
-int emu_getMainDir(char *dst, int len)\r
+int plat_get_root_dir(char *dst, int len)\r
 {\r
        extern char **g_argv;\r
        int j;\r
@@ -79,49 +69,7 @@ int emu_getMainDir(char *dst, int len)
        return j + 1;\r
 }\r
 \r
-void emu_Init(void)\r
-{\r
-       // make temp buffer for alt renderer\r
-       PicoDraw2FB = malloc((8+320)*(8+240+8));\r
-       if (!PicoDraw2FB)\r
-       {\r
-               printf("PicoDraw2FB == 0\n");\r
-       }\r
-\r
-       // make dirs for saves, cfgs, etc.\r
-       mkdir("mds", 0777);\r
-       mkdir("srm", 0777);\r
-       mkdir("brm", 0777);\r
-       mkdir("cfg", 0777);\r
-\r
-       PicoInit();\r
-       PicoMessage = emu_msg_cb;\r
-       PicoMCDopenTray = emu_msg_tray_open;\r
-       PicoMCDcloseTray = menu_loop_tray;\r
-}\r
-\r
-\r
-void emu_Deinit(void)\r
-{\r
-       // save SRAM\r
-       if((currentConfig.EmuOpt & 1) && SRam.changed) {\r
-               emu_SaveLoadGame(0, 1);\r
-               SRam.changed = 0;\r
-       }\r
-\r
-       if (!(currentConfig.EmuOpt & 0x20)) {\r
-               config_writelrom(PicoConfigFile);\r
-#ifndef NO_SYNC\r
-               sync();\r
-#endif\r
-       }\r
-\r
-       free(PicoDraw2FB);\r
-\r
-       PicoExit();\r
-}\r
-\r
-void emu_prepareDefaultConfig(void)\r
+void pemu_prep_defconfig(void)\r
 {\r
        memset(&defaultConfig, 0, sizeof(defaultConfig));\r
        defaultConfig.EmuOpt    = 0x8f | 0x00600; // | <- confirm_save, cd_leds\r
@@ -431,42 +379,6 @@ static void vidResetMode(void)
 }\r
 \r
 \r
-static void emu_msg_cb(const char *msg)\r
-{\r
-/*\r
-       if ((PicoOpt&0x10)||!(currentConfig.EmuOpt&0x80)) {\r
-               // 8-bit renderers\r
-               gp2x_memset_all_buffers(g_screen_width*(g_screen_height-16), 0xe0, g_screen_width*16);\r
-               osd_text(4, g_screen_height-16, msg);\r
-               gp2x_memcpy_all_buffers((char *)g_screen_ptr+g_screen_width*(g_screen_height-16),\r
-                       g_screen_width*(g_screen_height-16), g_screen_width*16);\r
-       } else {\r
-               // 16bit accurate renderer\r
-               gp2x_memset_all_buffers(g_screen_width*(g_screen_height-16)*2, 0, g_screen_width*16*2);\r
-               osd_text(4, g_screen_height-16, msg);\r
-               gp2x_memcpy_all_buffers((char *)g_screen_ptr+g_screen_width*(g_screen_height-16)*2,\r
-                       g_screen_width*(g_screen_height-16)*2, g_screen_width*16*2);\r
-       }\r
-       gettimeofday(&noticeMsgTime, 0);\r
-       noticeMsgTime.tv_sec -= 2;\r
-*/\r
-       /* assumption: emu_msg_cb gets called only when something slow is about to happen */\r
-       reset_timing = 1;\r
-}\r
-\r
-static void emu_state_cb(const char *str)\r
-{\r
-       clearArea(0);\r
-       blit("", str);\r
-}\r
-\r
-static void emu_msg_tray_open(void)\r
-{\r
-       strcpy(noticeMsg, "CD tray opened");\r
-       gettimeofday(&noticeMsgTime, 0);\r
-}\r
-\r
-\r
 static void update_volume(int has_changed, int is_up)\r
 {\r
        static int prev_frame = 0, wait_frames = 0;\r
@@ -520,7 +432,7 @@ static void SkipFrame(int do_audio)
 }\r
 \r
 \r
-void emu_forcedFrame(int opts)\r
+void pemu_forced_frame(int opts)\r
 {\r
        int po_old = PicoOpt;\r
        int eo_old = currentConfig.EmuOpt;\r
@@ -554,9 +466,8 @@ void emu_forcedFrame(int opts)
        currentConfig.EmuOpt = eo_old;\r
 }\r
 \r
-void emu_platformDebugCat(char *str)\r
+void plat_debug_cat(char *str)\r
 {\r
-       // nothing\r
 }\r
 \r
 static void simpleWait(int thissec, int lim_time)\r
@@ -575,7 +486,7 @@ static void simpleWait(int thissec, int lim_time)
        }\r
 }\r
 \r
-void emu_startSound(void)\r
+void pemu_sound_start(void)\r
 {\r
        static int PsndRate_old = 0, PicoOpt_old = 0, pal_old = 0;\r
        int target_fps = Pico.m.pal ? 50 : 60;\r
@@ -603,17 +514,16 @@ void emu_startSound(void)
        }\r
 }\r
 \r
-void emu_endSound(void)\r
+void pemu_sound_stop(void)\r
 {\r
 }\r
 \r
-/* wait until we can write more sound */\r
-void emu_waitSound(void)\r
+void pemu_sound_wait(void)\r
 {\r
        // don't need to do anything, writes will block by themselves\r
 }\r
 \r
-void emu_Loop(void)\r
+void pemu_loop(void)\r
 {\r
        char fpsbuff[24]; // fps count c string\r
        struct timeval tval; // timing\r
@@ -636,7 +546,7 @@ void emu_Loop(void)
        target_frametime = 1000000/target_fps;\r
        reset_timing = 1;\r
 \r
-       emu_startSound();\r
+       pemu_sound_start();\r
 \r
        // prepare CD buffer\r
        if (PicoAHW & PAHW_MCD) PicoCDBufferInit();\r
@@ -823,6 +733,7 @@ void emu_Loop(void)
 \r
        // save SRAM\r
        if((currentConfig.EmuOpt & 1) && SRam.changed) {\r
+               /* FIXME: plat_status_msg_busy_first */\r
                emu_state_cb("Writing SRAM/BRAM..");\r
                emu_SaveLoadGame(0, 1);\r
                SRam.changed = 0;\r
@@ -830,13 +741,6 @@ void emu_Loop(void)
 \r
        // if in 8bit mode, generate 16bit image for menu background\r
        if ((PicoOpt&0x10) || !(currentConfig.EmuOpt&0x80))\r
-               emu_forcedFrame(POPT_EN_SOFTSCALE);\r
-}\r
-\r
-\r
-void emu_ResetGame(void)\r
-{\r
-       PicoReset();\r
-       reset_timing = 1;\r
+               pemu_forced_frame(POPT_EN_SOFTSCALE);\r
 }\r
 \r
index 4063a04..9e299ea 100644 (file)
@@ -37,7 +37,6 @@ unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be
 int engineStateSuspend;
 
 static unsigned int noticeMsgTime = 0;
-int reset_timing = 0; // do we need this?
 
 #define PICO_PEN_ADJUST_X 4
 #define PICO_PEN_ADJUST_Y 2
@@ -59,7 +58,7 @@ void plat_status_msg(const char *format, ...)
        noticeMsgTime = sceKernelGetSystemTimeLow();
 }
 
-int emu_getMainDir(char *dst, int len)
+int plat_get_root_dir(char *dst, int len)
 {
        if (len > 0) *dst = 0;
        return 0;
@@ -90,44 +89,18 @@ void emu_msg_cb(const char *msg)
        reset_timing = 1;
 }
 
-static void emu_msg_tray_open(void)
-{
-       plat_status_msg("CD tray opened");
-}
-
-
+/* FIXME: move to plat */
 void emu_Init(void)
 {
-       // make dirs for saves, cfgs, etc.
-       mkdir("mds", 0777);
-       mkdir("srm", 0777);
-       mkdir("brm", 0777);
-       mkdir("cfg", 0777);
-
        sound_init();
-
-       PicoInit();
-       PicoMessage = emu_msg_cb;
-       PicoMCDopenTray = emu_msg_tray_open;
-       PicoMCDcloseTray = menu_loop_tray;
 }
 
 void emu_Deinit(void)
 {
-       // save SRAM
-       if ((currentConfig.EmuOpt & 1) && SRam.changed) {
-               emu_SaveLoadGame(0, 1);
-               SRam.changed = 0;
-       }
-
-       if (!(currentConfig.EmuOpt & 0x20))
-               config_writelrom(PicoConfigFile);
-
-       PicoExit();
        sound_deinit();
 }
 
-void emu_prepareDefaultConfig(void)
+void pemu_prep_defconfig(void)
 {
        memset(&defaultConfig, 0, sizeof(defaultConfig));
        defaultConfig.EmuOpt    = 0x1d | 0x680; // | <- confirm_save, cd_leds, acc rend
@@ -530,7 +503,7 @@ static void vidResetMode(void)
        sceGuSync(0,0);
 }
 
-void emu_platformDebugCat(char *str)
+void plat_debug_cat(char *str)
 {
        strcat(str, blit_16bit_mode ? "soft clut\n" : "hard clut\n");
 }
@@ -613,7 +586,7 @@ static void sound_init(void)
                lprintf("sceKernelCreateThread failed: %i\n", thid);
 }
 
-void emu_startSound(void)
+void pemu_sound_start(void)
 {
        static int PsndRate_old = 0, PicoOpt_old = 0, pal_old = 0;
        int ret, stereo;
@@ -651,7 +624,7 @@ void emu_startSound(void)
        }
 }
 
-void emu_endSound(void)
+void pemu_sound_stop(void)
 {
        int i;
        if (samples_done == 0)
@@ -671,7 +644,7 @@ void emu_endSound(void)
 }
 
 /* wait until we can write more sound */
-void emu_waitSound(void)
+void pemu_sound_wait(void)
 {
        // TODO: test this
        while (!sound_thread_exit && samples_made - samples_done > samples_block * 4)
@@ -719,7 +692,7 @@ static void SkipFrame(void)
        PicoSkipFrame=0;
 }
 
-void emu_forcedFrame(int opts)
+void pemu_forced_frame(int opts)
 {
        int po_old = PicoOpt;
        int eo_old = currentConfig.EmuOpt;
@@ -878,7 +851,7 @@ static void simpleWait(unsigned int until)
                sceKernelDelayThread(diff);
 }
 
-void emu_Loop(void)
+void pemu_loop(void)
 {
        static int mp3_init_done = 0;
        char fpsbuff[24]; // fps count c string
@@ -923,9 +896,9 @@ void emu_Loop(void)
 
        // prepare sound stuff
        PsndOut = NULL;
-       if (currentConfig.EmuOpt & 4)
+       if (currentConfig.EmuOpt & EOPT_EN_SOUND)
        {
-               emu_startSound();
+               pemu_sound_start();
        }
 
        sceDisplayWaitVblankStart();
@@ -1071,7 +1044,7 @@ void emu_Loop(void)
        if (PicoAHW & PAHW_MCD) PicoCDBufferFree();
 
        if (PsndOut != NULL) {
-               emu_endSound();
+               pemu_sound_stop();
                PsndOut = NULL;
        }
 
@@ -1086,13 +1059,6 @@ void emu_Loop(void)
        memset32_uncached((int *)psp_video_get_active_fb() + 512*264*2/4, 0, 512*8*2/4);
 }
 
-
-void emu_ResetGame(void)
-{
-       PicoReset();
-       reset_timing = 1;
-}
-
 void emu_HandleResume(void)
 {
        if (!(PicoAHW & PAHW_MCD)) return;
index e96eacc..4984115 100644 (file)
@@ -90,7 +90,7 @@ int pico_main(void)
                                        emu_HandleResume();
                                        break;
                                }
-                               emu_Loop();
+                               pemu_loop();
 #ifdef GPROF
                                goto endloop;
 #endif
index 48fdc1d..dc6ac41 100644 (file)
@@ -13,7 +13,7 @@ const char * const keyNames[] = {
        NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 };
 
-int emu_getMainDir(char *dst, int len)
+int plat_get_root_dir(char *dst, int len)
 {
        strcpy(dst, "D:\\other\\PicoDrive\\");
        return strlen(dst);