further unification and refactoring
[libpicofe.git] / gp2x / emu.c
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