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: clean up dmna handling, stuff
[picodrive.git]
/
pico
/
cd
/
mcd.c
diff --git
a/pico/cd/mcd.c
b/pico/cd/mcd.c
index
539d157
..
82ae1bc
100644
(file)
--- a/
pico/cd/mcd.c
+++ b/
pico/cd/mcd.c
@@
-252,15
+252,18
@@
int pcd_sync_s68k(unsigned int m68k_target, int m68k_poll_sync)
#undef now
}
#undef now
}
+#define pcd_run_cpus_normal pcd_run_cpus
+//#define pcd_run_cpus_lockstep pcd_run_cpus
+
static void SekSyncM68k(void);
static void SekSyncM68k(void);
-static
void pcd_run_cpus
(int m68k_cycles)
+static
inline void pcd_run_cpus_normal
(int m68k_cycles)
{
SekCycleAim += m68k_cycles;
if (Pico_mcd->m.m68k_poll_cnt >= 16 && !SekShouldInterrupt()) {
int s68k_left = pcd_sync_s68k(SekCycleAim, 1);
if (s68k_left <= 0) {
{
SekCycleAim += m68k_cycles;
if (Pico_mcd->m.m68k_poll_cnt >= 16 && !SekShouldInterrupt()) {
int s68k_left = pcd_sync_s68k(SekCycleAim, 1);
if (s68k_left <= 0) {
- elprintf(EL_CDPOLL, "m68k poll [%02x] %d @%06x",
+ elprintf(EL_CDPOLL, "m68k poll [%02x]
x
%d @%06x",
Pico_mcd->m.m68k_poll_a, Pico_mcd->m.m68k_poll_cnt, SekPc);
SekCycleCnt = SekCycleAim;
return;
Pico_mcd->m.m68k_poll_a, Pico_mcd->m.m68k_poll_cnt, SekPc);
SekCycleCnt = SekCycleAim;
return;
@@
-271,6
+274,16
@@
static void pcd_run_cpus(int m68k_cycles)
SekSyncM68k();
}
SekSyncM68k();
}
+static inline void pcd_run_cpus_lockstep(int m68k_cycles)
+{
+ unsigned int target = SekCycleAim + m68k_cycles;
+ do {
+ SekCycleAim += 8;
+ SekSyncM68k();
+ pcd_sync_s68k(SekCycleAim, 0);
+ } while (CYCLES_GT(target, SekCycleAim));
+}
+
#define PICO_CD
#define CPUS_RUN(m68k_cycles) \
pcd_run_cpus(m68k_cycles)
#define PICO_CD
#define CPUS_RUN(m68k_cycles) \
pcd_run_cpus(m68k_cycles)