OSDN Git Service

[VM][Agar][X1] Seems to working, except keyboard and joystick and sound.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 7 Jan 2015 17:10:57 +0000 (02:10 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 7 Jan 2015 17:10:57 +0000 (02:10 +0900)
source/src/agar/common/agar_emuevents.cpp
source/src/agar/common/agar_screen.cpp
source/src/agar/common/agar_sdlscaler.cpp
source/src/agar/common/scaler/sse2/scaler_x1_sse2.c
source/src/agar/ui/agar_dialogs.cpp
source/src/emu.cpp
source/src/vm/disk.cpp
source/src/vm/mb8877.cpp

index b884911..efeb692 100644 (file)
@@ -33,6 +33,7 @@ void OpenRecentFloppy(AG_Event *event)
 // Need to implement Socket routines
 void OnReset(AG_Event *event)
 {
+
   if(emu) {
     emu->reset();
   }
@@ -40,6 +41,7 @@ void OnReset(AG_Event *event)
 
 void OnSpecialReset(AG_Event *event)
 {
+  printf("Special Reset!!\n");
   if(emu) {
     emu->special_reset();
   }
index a4ec7c5..aca3252 100644 (file)
@@ -358,7 +358,8 @@ void EMU::change_screen_size(int sw, int sh, int swa, int sha, int ww, int wh)
 
 int EMU::draw_screen()
 {
-       // don't draw screen before new screen size is applied to buffers
+#if 0
+        // don't draw screen before new screen size is applied to buffers
        if(screen_size_changed) {
                return 0;
        }
@@ -367,7 +368,7 @@ int EMU::draw_screen()
        if(now_rec_video && rec_video_run_frames <= 0) {
                return 0;
        }
-       
+#endif 
        // lock offscreen surface
        
        // draw screen
index d82257c..7000341 100644 (file)
@@ -191,8 +191,8 @@ static void *AGAR_SDLViewSelectScaler(int w0 ,int h0, int w1, int h1)
     int xth;
     void (*DrawFn)(Uint32 *src, Uint8 *dst, int xbegin, int xend, int y, int yrep);
     DrawFn = NULL;
-    DrawFn = pVram2RGB_x1_Line;
-   return (void *)DrawFn;
+//    DrawFn = pVram2RGB_x1_Line;
+//   return (void *)DrawFn;
 
 #if defined(USE_SSE2)
    if(pCpuID != NULL){
index 9950c62..9fa3a3f 100644 (file)
@@ -45,6 +45,8 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
            b2p = dst;
            r1 = b[0];
            r2 = b[1];
+           r1.vv = r1.vv | bb2.vv;
+           r2.vv = r2.vv | bb2.vv;
            for(yy = 0; yy < repeat; yy++) {
               b2p[0] = r1;
               b2p[1] = r2;
@@ -56,8 +58,12 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
       } else { // repeat == 1
         for(xx = 0; xx < ww; xx += 8) {
            b2p = dst;
-           b2p[0] = b[0];
-           b2p[1] = b[1];
+           r1 = b[0];
+           r2 = b[1];
+           r1.vv = r1.vv | bb2.vv;
+           r2.vv = r2.vv | bb2.vv;
+           b2p[0] = r1;
+           b2p[1] = r2;
            dst += 2;
            b += 2;
         }
@@ -67,6 +73,8 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
         b2p = dst;
         r1 = b[0];
         r2 = b[1];
+        r2.vv = r2.vv | bb2.vv;
+        r2.vv = r2.vv | bb2.vv;
         for(yy = 0; yy < repeat - 1; yy++) {
            b2p[0] = r1;
            b2p[1] = r2;
index 205979f..c389d38 100644 (file)
@@ -18,8 +18,9 @@
 #ifdef USE_CART1
 static void OnOpenCartSub(AG_Event *event)
 {
-  char *path = AG_STRING(1);
-  int drv = AG_INT(2);
+  char *path = AG_STRING(2);
+  AG_FileType *filetype = (AG_FileType *)AG_PTR(3);
+  int drv = AG_INT(1);
   AG_FileDlg *my = (AG_FileDlg *)AG_SELF();
   if(path) {
     if(strlen(path) <= 0) return;
@@ -33,6 +34,7 @@ static void OnOpenCartSub(AG_Event *event)
 void open_cart_dialog(AG_Widget *hWnd, int drv)
 {
   AG_FileDlg *dlg;
+  AG_Window *win;
 #if defined(_GAMEGEAR)
                const char *ext = "*.rom,*.bin,*.gg,*.col";
                char *desc = _N("Game Cartridge");
@@ -49,7 +51,8 @@ void open_cart_dialog(AG_Widget *hWnd, int drv)
                const char *ext = "*.rom,*.bin"; 
                char *desc = _N("Game Cartridge");
 #endif
-               dlg = AG_FileDlgNew(hWnd, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
+                win = AG_WindowNew(0);
+               dlg = AG_FileDlgNew(win, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
                if(dlg == NULL) return;
        
                if(config.initial_cart_dir != NULL) {
@@ -60,6 +63,7 @@ void open_cart_dialog(AG_Widget *hWnd, int drv)
                  AG_FileDlgSetDirectory(dlg, "%s", get_parent_dir(app));
                }
                AG_FileDlgAddType(dlg, desc, ext, OnOpenCartSub, "%i", drv);
+                AG_WindowShow(win);
                return;
 }
 #endif
@@ -69,8 +73,9 @@ void open_disk(int drv, _TCHAR* path, int bank);
 
 void OnOpenFDSub(AG_Event *event)
 {
-  char *path = AG_STRING(1);
-    int drv = AG_INT(2);
+  char *path = AG_STRING(2);
+  AG_FileType *filetype = (AG_FileType *)AG_PTR(3);
+  int drv = AG_INT(1);
   AG_FileDlg *my = (AG_FileDlg *)AG_SELF();
   if(path) {
     if(strlen(path) <= 0) return;
@@ -86,8 +91,10 @@ void open_disk_dialog(AG_Widget *hWnd, int drv)
   const char *ext = "*.d88,*.d77,*.td0,*.imd,*.dsk,*.fdi,*.hdm,*.tfd,*.xdf,*.2d,*.sf7";
   char *desc = _N("Floppy Disk");
   AG_FileDlg *dlg;
+  AG_Window *win;
    
-  dlg = AG_FileDlgNew(hWnd, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
+  win = AG_WindowNew(0);
+  dlg = AG_FileDlgNew(win, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
   if(dlg == NULL) return;
   
   if(config.initial_disk_dir != NULL) {
@@ -98,6 +105,7 @@ void open_disk_dialog(AG_Widget *hWnd, int drv)
     AG_FileDlgSetDirectory(dlg, "%s", get_parent_dir(app));
   }
   AG_FileDlgAddType(dlg, desc, ext, OnOpenFDSub, "%i", drv);
+  AG_WindowShow(win);
   return;
 }
 
@@ -163,8 +171,9 @@ void close_disk(int drv)
 #ifdef USE_QD1
 void OnOpenQDSub(AG_Event *event)
 {
-  char *path = AG_STRING(1);
-  int drv = AG_INT(2);
+  AG_FileType *filetype = (AG_FileType *)AG_PTR(3);
+  char *path = AG_STRING(2);
+  int drv = AG_INT(1);
   AG_FileDlg *my = (AG_FileDlg *)AG_SELF();
   if(path) {
     if(strlen(path) <= 0) return;
@@ -178,7 +187,11 @@ void open_quickdisk_dialog(AG_Widget *hWnd, int drv)
 {
   const char *ext = "*.mzt,*.q20,*qdf";
   char *desc = _N("Quick Disk");
-  dlg = AG_FileDlgNew(hWnd, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
+  AG_Window *win;
+   
+  win = AG_WindowNew(0);
+  dlg = AG_FileDlgNew(win, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
   if(dlg == NULL) return;
   
   if(config.initial_quickdisk_dir != NULL) {
@@ -189,6 +202,7 @@ void open_quickdisk_dialog(AG_Widget *hWnd, int drv)
     AG_FileDlgSetDirectory(dlg, "%s", get_parent_dir(app));
   }
   AG_FileDlgAddType(dlg, desc, ext, OnOpenQDSub, "%i", drv);
+  AG_WindowShow(win);
   return;
 }
 #endif
@@ -196,8 +210,9 @@ void open_quickdisk_dialog(AG_Widget *hWnd, int drv)
 #ifdef USE_TAPE
 void OnOpenTapeSub(AG_Event *event)
 {
-  char *path = AG_STRING(1);
-  int play = AG_INT(2);
+   AG_FileType *filetype = (AG_FileType *)AG_PTR(3);
+  char *path = AG_STRING(2);
+  int play = AG_INT(1);
   AG_FileDlg *my = (AG_FileDlg *)AG_SELF();
   if(path) {
     if(strlen(path) <= 0) return;
@@ -217,6 +232,9 @@ void open_tape_dialog(AG_Widget *hWnd, bool play)
   AG_FileDlg *dlg;
   const char *ext;
   char *desc;
+  AG_Window *win;
+   
+  win = AG_WindowNew(0);
 #if defined(_PC6001) || defined(_PC6001MK2) || defined(_PC6001MK2SR) || defined(_PC6601) || defined(_PC6601SR)
   ext = "*.wav,*.p6,*.cas";
 #elif defined(_PC8001SR) || defined(_PC8801MA) || defined(_PC98DO)
@@ -236,7 +254,7 @@ void open_tape_dialog(AG_Widget *hWnd, bool play)
 #endif
   desc = play ? _N("Data Recorder Tape [Play]") : _N("Data Recorder Tape [Rec]");
 
-  dlg = AG_FileDlgNew(hWnd, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
+  dlg = AG_FileDlgNew(win, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
   if(dlg == NULL) return;
   
   if(config.initial_tape_dir != NULL) {
@@ -247,6 +265,7 @@ void open_tape_dialog(AG_Widget *hWnd, bool play)
     AG_FileDlgSetDirectory(dlg, "%s", get_parent_dir(app));
   }
   AG_FileDlgAddType(dlg, desc, ext, OnOpenTapeSub, "%i", playf);
+  AG_WindowShow(win);
   return;
 }
 #endif
@@ -254,6 +273,7 @@ void open_tape_dialog(AG_Widget *hWnd, bool play)
 #ifdef USE_LASER_DISC
 void OnOpenLaserDiscSub(AG_Event *event)
 {
+  AG_FileType *filetype = (AG_FileType *)AG_PTR(2);
   char *path = AG_STRING(1);
   AG_FileDlg *my = (AG_FileDlg *)AG_SELF();
   if(path) {
@@ -268,7 +288,11 @@ void open_laser_disc_dialog(AG_Widget *hWnd)
 {
   const char *ext = "*.avi,*.mpg,*.mpeg,*.wmv,*.ogv";
   char *desc = _N("Laser Disc");
-  AG_FileDlg *dlg = AG_FileDlgNew(hWnd, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
+  AG_Window *win;
+   
+  win = AG_WindowNew(0);
+  AG_FileDlg *dlg = AG_FileDlgNew(win, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
   if(dlg == NULL) return;
   
   if(config.initial_laser_disc_dir != NULL) {
@@ -279,6 +303,7 @@ void open_laser_disc_dialog(AG_Widget *hWnd)
     AG_FileDlgSetDirectory(dlg, "%s", get_parent_dir(app));
   }
   AG_FileDlgAddType(dlg, desc, ext, OnOpenLaserDiscSub, "%p", NULL);
+  AG_WindowShow(win);
   return;
 }
 #endif
@@ -287,9 +312,10 @@ void open_laser_disc_dialog(AG_Widget *hWnd)
 
 void OnOpenBinarySub(AG_Event *event)
 {
-  char *path = AG_STRING(1);
-  int drv = AG_INT(2);
-  int load = AG_INT(3);
+  AG_FileType *filetype = (AG_FileType *)AG_PTR(4);
+  char *path = AG_STRING(3);
+  int drv = AG_INT(1);
+  int load = AG_INT(2);
   AG_FileDlg *my = (AG_FileDlg *)AG_SELF();
   if(path) {
     UPDATE_HISTORY(path, config.recent_binary_path[drv]);
@@ -305,13 +331,16 @@ void OnOpenBinarySub(AG_Event *event)
 void open_binary_dialog(AG_Widget *hWnd, int drv, bool load)
 {
   const char ext = "*.ram,*.bin";
+  AG_Window *win;
+   
   int loadf = load ? 1 : 0;
 #if defined(_PASOPIA) || defined(_PASOPIA7)
   char *desc = _N("RAM Pack Cartridge");
 #else
   char *desc = _N("Memory Dump");
 #endif
-  AG_FileDlg *dlg = AG_FileDlgNew(hWnd, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
+  win = AG_WIndowNew(0);
+  AG_FileDlg *dlg = AG_FileDlgNew(win, AG_FILEDLG_MASK_EXT | AG_FILEDLG_ASYNC | AG_FILEDLG_CLOSEWIN);
   if(dlg == NULL) return;
   
   if(config.initial_binary_dir != NULL) {
@@ -322,6 +351,7 @@ void open_binary_dialog(AG_Widget *hWnd, int drv, bool load)
     AG_FileDlgSetDirectory(dlg, "%s", get_parent_dir(app));
   }
   AG_FileDlgAddType(dlg, desc, ext, OnOpenBinarySub, "%i,%i", drv, loadf);
+  AG_WindowShow(win);
   return;
 
 }
index f9d52f9..010615c 100644 (file)
@@ -139,7 +139,7 @@ EMU::~EMU()
 \r
 int EMU::frame_interval()\r
 {\r
-#if 0\r
+#if 1\r
 #ifdef SUPPORT_VARIABLE_TIMING\r
        static int prev_interval = 0;\r
        static double prev_fps = -1;\r
@@ -220,7 +220,7 @@ void EMU::reset()
                // restore inserted medias\r
                restore_media();\r
        } else {\r
-               // reset virtual machine\r
+          // reset virtual machine\r
                vm->reset();\r
        }\r
        \r
index 555d2da..2b77bdc 100644 (file)
@@ -116,6 +116,7 @@ void DISK::open(_TCHAR path[], int offset)
 {\r
        // check current disk image\r
        if(inserted) {\r
+          printf("Open disk: %s\n", path);\r
                if(_tcsicmp(orig_path, path) == 0 && file_offset == offset) {\r
                        return;\r
                }\r
@@ -124,6 +125,7 @@ void DISK::open(_TCHAR path[], int offset)
        memset(buffer, 0, sizeof(buffer));\r
        media_type = MEDIA_TYPE_UNK;\r
        is_standard_image = is_fdi_image = false;\r
+       printf("Open disk: %s\n", path);\r
        \r
        // open disk image\r
        fi = new FILEIO();\r
@@ -216,6 +218,7 @@ void DISK::open(_TCHAR path[], int offset)
                        }\r
                        catch(...) {\r
                                // failed to convert the disk image\r
+                               printf("EE: disk.cpp : Failed to convert disk image.\n");\r
                        }\r
                }\r
 file_loaded:\r
index 62f6d03..0f7cbd8 100644 (file)
@@ -530,12 +530,12 @@ void MB8877::event_callback(int event_id, int err)
                        set_drq(true);\r
                        drive_sel = false;\r
                } else {\r
-//#if defined(_X1) || defined(_X1TWIN) || defined(_X1TURBO) || defined(_X1TURBOZ)\r
+#if defined(_X1) || defined(_X1TWIN) || defined(_X1TURBO) || defined(_X1TURBOZ)\r
                        // for SHARP X1 Batten Tanuki\r
                        if(drive_sel) {\r
                                status_tmp &= ~FDC_ST_RECNFND;\r
                        }\r
-//#endif\r
+#endif\r
                        status = status_tmp & ~(FDC_ST_BUSY | FDC_ST_DRQ);\r
                }\r
                break;\r
@@ -721,6 +721,7 @@ void MB8877::cmd_readdata()
        now_search = true;\r
        \r
        double time;\r
+        printf("Disk: READDATA\n");\r
        if(!(status_tmp & FDC_ST_RECNFND)) {\r
                time = get_usec_to_start_trans();\r
        } else {\r
@@ -1039,6 +1040,7 @@ void MB8877::set_drq(bool val)
 \r
 void MB8877::open_disk(int drv, _TCHAR path[], int offset)\r
 {\r
+        printf("Opened : %s drive %d\n", path, drv);\r
        if(drv < MAX_DRIVE) {\r
                disk[drv]->open(path, offset);\r
        }\r