--- np2/fdd/fdd_mtr.c 2004/02/18 21:58:41 1.4 +++ np2/fdd/fdd_mtr.c 2005/05/15 18:48:36 1.9 @@ -56,7 +56,7 @@ void fddmtrsnd_deinitialize(void) { } } -void fddmtrsnd_play(UINT num, BOOL play) { +static void fddmtrsnd_play(UINT num, BOOL play) { PMIXTRK *trk; @@ -108,7 +108,12 @@ static void fddmtr_event(void) { void fddmtr_initialize(void) { - fddmtr_event(); +#if defined(SUPPORT_SWSEEKSND) + fddmtrsnd_play(0, FALSE); +#else + soundmng_pcmstop(SOUND_PCMSEEK); +#endif + ZeroMemory(&fddmtr, sizeof(fddmtr)); FillMemory(fddmtr.head, sizeof(fddmtr.head), 42); } @@ -131,7 +136,7 @@ void fddmtr_seek(REG8 drv, REG8 c, UINT SINT32 waitcnt; drv &= 3; - regmove = fddmtr.head[drv] - c; + regmove = c - fddmtr.head[drv]; fddmtr.head[drv] = c; if (!np2cfg.MOTOR) { @@ -139,13 +144,13 @@ void fddmtr_seek(REG8 drv, REG8 c, UINT fddmtr.busy = 1; nevent_set(NEVENT_FDBIOSBUSY, size * pccore.multiple, fdbiosout, NEVENT_ABSOLUTE); - return; } + return; } waitcnt = (size * DISK1ROL_MS) / (1024 * 8); if (regmove < 0) { - regmove = 0 - 1; + regmove = 0 - regmove; } if (regmove == 1) { if (fddmtr.curevent < 80) { @@ -182,3 +187,9 @@ void fddmtr_seek(REG8 drv, REG8 c, UINT (void)drv; } +void fddmtr_reset(void) { + + fddmtr.busy = 0; + nevent_reset(NEVENT_FDBIOSBUSY); +} +