cd: some fixes
authornotaz <notasas@gmail.com>
Wed, 28 Aug 2013 21:42:38 +0000 (00:42 +0300)
committernotaz <notasas@gmail.com>
Thu, 29 Aug 2013 00:55:59 +0000 (03:55 +0300)
pico/cd/cd_sys.c
pico/cd/memory.c

index 06cf3f8..6b92d56 100644 (file)
@@ -471,6 +471,10 @@ PICO_INTERNAL int Play_CDD_c3(void)
        if (delay < 0) delay = -delay;\r
        delay >>= 12;\r
 \r
+       // based on genplys GX\r
+       if (delay < 13)\r
+               delay = 13;\r
+\r
        Pico_mcd->scd.Cur_LBA = new_lba;\r
        CDC_Update_Header();\r
 \r
index f8ffaeb..1d669a2 100644 (file)
@@ -212,7 +212,6 @@ void m68k_reg_write8(u32 a, u32 d)
         ((u16 *)Pico_mcd->bios)[0x70/2], ((u16 *)Pico_mcd->bios)[0x72/2]);\r
       return;\r
     case 0x0f:\r
-      d = (d << 1) | ((d >> 7) & 1); // rol8 1 (special case)\r
       a = 0x0e;\r
     case 0x0e:\r
       goto write_comm;\r
@@ -394,8 +393,6 @@ void s68k_reg_write8(u32 a, u32 d)
       Pico_mcd->m.stopwatch_base_c = SekCyclesDoneS68k();\r
       return;\r
     case 0x0e:\r
-      d &= 0xff;\r
-      d = (d>>1) | (d<<7); // ror8 1, Gens note: Dragons lair\r
       a = 0x0f;\r
     case 0x0f:\r
       goto write_comm;\r
@@ -646,17 +643,17 @@ static void s68k_unmapped_write16(u32 a, u32 d)
   elprintf(EL_UIO, "s68k unmapped w16 [%06x] %04x @%06x", a, d & 0xffff, SekPc);\r
 }\r
 \r
-// PRG RAM protected range (000000 - 00ff00)?\r
+// PRG RAM protected range (000000 - 01fdff)?\r
 // XXX verify: ff00 or 1fe00 max?\r
 static void PicoWriteS68k8_prgwp(u32 a, u32 d)\r
 {\r
-  if (a >= (Pico_mcd->s68k_regs[2] << 8))\r
+  if (a >= (Pico_mcd->s68k_regs[2] << 9))\r
     Pico_mcd->prg_ram[a ^ 1] = d;\r
 }\r
 \r
 static void PicoWriteS68k16_prgwp(u32 a, u32 d)\r
 {\r
-  if (a >= (Pico_mcd->s68k_regs[2] << 8))\r
+  if (a >= (Pico_mcd->s68k_regs[2] << 9))\r
     *(u16 *)(Pico_mcd->prg_ram + a) = d;\r
 }\r
 \r
@@ -1067,8 +1064,8 @@ PICO_INTERNAL void PicoMemSetupCD(void)
   cpu68k_map_set(s68k_read16_map,  0x000000, 0x07ffff, Pico_mcd->prg_ram, 0);\r
   cpu68k_map_set(s68k_write8_map,  0x000000, 0x07ffff, Pico_mcd->prg_ram, 0);\r
   cpu68k_map_set(s68k_write16_map, 0x000000, 0x07ffff, Pico_mcd->prg_ram, 0);\r
-  cpu68k_map_set(s68k_write8_map,  0x000000, 0x00ffff, PicoWriteS68k8_prgwp, 1);\r
-  cpu68k_map_set(s68k_write16_map, 0x000000, 0x00ffff, PicoWriteS68k16_prgwp, 1);\r
+  cpu68k_map_set(s68k_write8_map,  0x000000, 0x01ffff, PicoWriteS68k8_prgwp, 1);\r
+  cpu68k_map_set(s68k_write16_map, 0x000000, 0x01ffff, PicoWriteS68k16_prgwp, 1);\r
 \r
   // BRAM\r
   cpu68k_map_set(s68k_read8_map,   0xfe0000, 0xfeffff, PicoReadS68k8_bram, 1);\r