Skip to content

Commit

Permalink
mcd, add a hack for d32xr
Browse files Browse the repository at this point in the history
  • Loading branch information
irixxxx committed Sep 30, 2024
1 parent 6db807c commit 381299c
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ At present, most development activity occurs in
### Using MSU, MD+/32X+, and Mode 1 on Sega/Mega CD

PicoDrive supports using CD audio enhanced cartridge games in all 3 formats.
To start an enhanced cartridge, the "cue" or "chd" file of the audio CD must be
selected. Further instructions can be found in `platform/base_readme.txt`.
To start an enhanced cartridge, load the .cue or .chd file. The cartridge
file should have the same base name and be placed in the same directory.
Further instructions can be found in `platform/base_readme.txt`.

### Sega Pico and Storyware Pages

Expand Down
9 changes: 8 additions & 1 deletion pico/cd/megasd.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ static void msd_playtrack(int idx, s32 offs, int loop)
Pico_msd.result = Pico_msd.command = 0;
return;
}

Pico_msd.index = idx-1;

track = &cdd.toc.tracks[Pico_msd.index];
Expand Down Expand Up @@ -160,13 +161,19 @@ void msd_update()
Pico_msd.command = 0;
if (cdd.lba >= Pico_msd.endlba-1 || cdd.index > Pico_msd.index) {
if (!Pico_msd.loop || Pico_msd.index < 0) {
cdd_stop();
cdd_pause();
// audio done
Pico_msd.index = -1;
} else
cdd_play(Pico_msd.looplba - CDD_PLAY_OFFSET);
}
}

// Hack for D32XR: to prevent BIOS freaking out, pretend drive is "ready"
// TODO find out what a real MEGASD is doing with this schizophrenia!
u8 state = Pico_mcd->s68k_regs[0x38];
Pico_mcd->s68k_regs[0x41] = ~(~Pico_mcd->s68k_regs[0x41] + CD_READY-state) & 0xf;
Pico_mcd->s68k_regs[0x38] = CD_READY;
}
}
}
Expand Down

0 comments on commit 381299c

Please sign in to comment.