runs code in 1M wram, cell arrange, decode (untested)
[picodrive.git] / Pico / cd / LC89510.c
index 2549fa8..1f00607 100644 (file)
@@ -104,19 +104,20 @@ void Update_CDC_TRansfer(int which)
        {\r
                if (Pico_mcd->s68k_regs[3] & 4)\r
                {\r
+                       // test: Final Fight\r
+                       int bank = !(Pico_mcd->s68k_regs[3]&1);\r
                        dep = ((DMA_Adr & 0x3FFF) << 3);\r
                        cdprintf("CD DMA # %04x -> word_ram1M # %06x, len=%i",\r
                                        Pico_mcd->cdc.DAC.N, dep, length);\r
 \r
-                       dep = ((DMA_Adr & 0x3FFF) << 4);\r
-                       if (!(Pico_mcd->s68k_regs[3]&1)) dep += 2;\r
-                       dest = (unsigned short *) (Pico_mcd->word_ram + dep);\r
+                       dest = (unsigned short *) (Pico_mcd->word_ram1M[bank] + dep);\r
 \r
-                       for (len = length; len > 0; len--, src+=2, dest+=2)\r
+                       // TODO: bswapcpy\r
+                       for (len = length; len > 0; len--, src+=2, dest++)\r
                                *dest = (src[0]<<8) | src[1];\r
 \r
                        { // debug\r
-                               unsigned char *b1 = Pico_mcd->word_ram + dep;\r
+                               unsigned char *b1 = Pico_mcd->word_ram1M[bank] + dep;\r
                                unsigned char *b2 = (unsigned char *)dest - 8;\r
                                dprintf("%02x %02x %02x %02x .. %02x %02x %02x %02x",\r
                                        b1[0], b1[1], b1[4], b1[5], b2[0], b2[1], b2[4], b2[5]);\r
@@ -127,13 +128,13 @@ void Update_CDC_TRansfer(int which)
                        dep = ((DMA_Adr & 0x7FFF) << 3);\r
                        cdprintf("CD DMA # %04x -> word_ram2M # %06x, len=%i",\r
                                        Pico_mcd->cdc.DAC.N, dep, length);\r
-                       dest = (unsigned short *) (Pico_mcd->word_ram + dep);\r
+                       dest = (unsigned short *) (Pico_mcd->word_ram2M + dep);\r
 \r
                        for (len = length; len > 0; len--, src+=2, dest++)\r
                                *dest = (src[0]<<8) | src[1];\r
 \r
                        { // debug\r
-                               unsigned char *b1 = Pico_mcd->word_ram + dep;\r
+                               unsigned char *b1 = Pico_mcd->word_ram2M + dep;\r
                                unsigned char *b2 = (unsigned char *)dest - 4;\r
                                dprintf("%02x %02x %02x %02x .. %02x %02x %02x %02x",\r
                                        b1[0], b1[1], b1[2], b1[3], b2[0], b2[1], b2[2], b2[3]);\r
@@ -146,7 +147,7 @@ void Update_CDC_TRansfer(int which)
                        dest = (unsigned char *) Ram_PCM;\r
                        dep = ((DMA_Adr & 0x03FF) << 2) + PCM_Chip.Bank;\r
 #else\r
-                       cdprintf("CD DMA # %04x -> PCM TODO", Pico_mcd->cdc.DAC.N);\r
+                       dprintf("FIXME: CD DMA # %04x -> PCM", Pico_mcd->cdc.DAC.N);\r
 #endif\r
        }\r
        else if (which == 5) // PRG RAM\r
@@ -188,7 +189,7 @@ unsigned short Read_CDC_Host(int is_sub)
        if (!(Pico_mcd->scd.Status_CDC & 0x08))\r
        {\r
                // Transfer data disabled\r
-               cdprintf("Read_CDC_Host: Transfer data disabled");\r
+               cdprintf("Read_CDC_Host FIXME: Transfer data disabled");\r
                return 0;\r
        }\r
 \r
@@ -196,7 +197,7 @@ unsigned short Read_CDC_Host(int is_sub)
                (!is_sub && (Pico_mcd->s68k_regs[4] & 7) != 2))\r
        {\r
                // Wrong setting\r
-               cdprintf("Read_CDC_Host: Wrong setting");\r
+               cdprintf("Read_CDC_Host FIXME: Wrong setting");\r
                return 0;\r
        }\r
 \r