--- np2/fdd/fdd_mtr.c 2004/02/21 17:52:04 1.5 +++ np2/fdd/fdd_mtr.c 2011/01/15 18:04:43 1.10 @@ -108,13 +108,18 @@ 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); } -void fddmtr_callback(UINT time) { +void fddmtr_callback(UINT nowtime) { - if ((fddmtr.curevent) && (time >= fddmtr.nextevent)) { + if ((fddmtr.curevent) && (nowtime >= fddmtr.nextevent)) { fddmtr_event(); } } @@ -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); +} +