notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cd: switch to CD drive emu code from genplus
[picodrive.git]
/
pico
/
cd
/
memory.c
diff --git
a/pico/cd/memory.c
b/pico/cd/memory.c
index
b0f5e4a
..
7d838fc
100644
(file)
--- a/
pico/cd/memory.c
+++ b/
pico/cd/memory.c
@@
-100,7
+100,7
@@
static u32 m68k_reg_read16(u32 a)
d = *(u16 *)(Pico_mcd->bios + 0x72);
\r
goto end;
\r
case 8:
\r
d = *(u16 *)(Pico_mcd->bios + 0x72);
\r
goto end;
\r
case 8:
\r
- d =
Read_CDC_Host(0
);
\r
+ d =
cdc_host_r(
);
\r
goto end;
\r
case 0xA:
\r
elprintf(EL_UIO, "m68k FIXME: reserved read");
\r
goto end;
\r
case 0xA:
\r
elprintf(EL_UIO, "m68k FIXME: reserved read");
\r
@@
-286,9
+286,9
@@
u32 s68k_reg_read16(u32 a)
elprintf(EL_CDREG3, "s68k_regs r3: %02x @%06x", (u8)d, SekPcS68k);
\r
return s68k_poll_detect(a, d);
\r
case 6:
\r
elprintf(EL_CDREG3, "s68k_regs r3: %02x @%06x", (u8)d, SekPcS68k);
\r
return s68k_poll_detect(a, d);
\r
case 6:
\r
- return
CDC_Read_Reg
();
\r
+ return
cdc_reg_r
();
\r
case 8:
\r
case 8:
\r
- return
Read_CDC_Host(1); // Gens returns 0 here on byte reads
\r
+ return
cdc_host_r();
\r
case 0xC:
\r
d = SekCyclesDoneS68k() - Pico_mcd->m.stopwatch_base_c;
\r
d /= 384;
\r
case 0xC:
\r
d = SekCyclesDoneS68k() - Pico_mcd->m.stopwatch_base_c;
\r
d /= 384;
\r
@@
-379,7
+379,7
@@
void s68k_reg_write8(u32 a, u32 d)
//dprintf("s68k CDC reg addr: %x", d&0xf);
\r
break;
\r
case 7:
\r
//dprintf("s68k CDC reg addr: %x", d&0xf);
\r
break;
\r
case 7:
\r
-
CDC_Write_Reg
(d);
\r
+
cdc_reg_w
(d);
\r
return;
\r
case 0xa:
\r
elprintf(EL_CDREGS, "s68k set CDC dma addr");
\r
return;
\r
case 0xa:
\r
elprintf(EL_CDREGS, "s68k set CDC dma addr");
\r
@@
-407,8
+407,11
@@
void s68k_reg_write8(u32 a, u32 d)
elprintf(EL_CDREGS|EL_CD, "s68k irq mask: %02x", d);
\r
d &= 0x7e;
\r
if ((d ^ Pico_mcd->s68k_regs[0x33]) & d & PCDS_IEN4) {
\r
elprintf(EL_CDREGS|EL_CD, "s68k irq mask: %02x", d);
\r
d &= 0x7e;
\r
if ((d ^ Pico_mcd->s68k_regs[0x33]) & d & PCDS_IEN4) {
\r
- if (Pico_mcd->s68k_regs[0x37] & 4)
\r
- CDD_Export_Status();
\r
+ // XXX: emulate pending irq instead?
\r
+ if (Pico_mcd->s68k_regs[0x37] & 4) {
\r
+ elprintf(EL_INTS, "cdd export irq 4 (unmask)");
\r
+ SekInterruptS68k(4);
\r
+ }
\r
}
\r
break;
\r
case 0x34: // fader
\r
}
\r
break;
\r
case 0x34: // fader
\r
@@
-418,15
+421,21
@@
void s68k_reg_write8(u32 a, u32 d)
return; // d/m bit is unsetable
\r
case 0x37: {
\r
u32 d_old = Pico_mcd->s68k_regs[0x37];
\r
return; // d/m bit is unsetable
\r
case 0x37: {
\r
u32 d_old = Pico_mcd->s68k_regs[0x37];
\r
- Pico_mcd->s68k_regs[0x37] = d
&
7;
\r
+ Pico_mcd->s68k_regs[0x37] = d
&
7;
\r
if ((d&4) && !(d_old&4)) {
\r
if ((d&4) && !(d_old&4)) {
\r
- CDD_Export_Status();
\r
+ // ??
\r
+ pcd_event_schedule_s68k(PCD_EVENT_CDC, 12500000/75);
\r
+
\r
+ if (Pico_mcd->s68k_regs[0x33] & PCDS_IEN4) {
\r
+ elprintf(EL_INTS, "cdd export irq 4");
\r
+ SekInterruptS68k(4);
\r
+ }
\r
}
\r
return;
\r
}
\r
case 0x4b:
\r
Pico_mcd->s68k_regs[a] = (u8) d;
\r
}
\r
return;
\r
}
\r
case 0x4b:
\r
Pico_mcd->s68k_regs[a] = (u8) d;
\r
-
CDD_Import_Command
();
\r
+
cdd_process
();
\r
return;
\r
case 0x58:
\r
return;
\r
return;
\r
case 0x58:
\r
return;
\r