From 331a879f5ff1fa35b5dec418cb64d94e1e2c7ce2 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Wed, 4 Jun 2025 20:15:16 +0300 Subject: [PATCH] Fixed FDI disk image support. --- fdi2raw.cpp | 56 +++++++++++++++++++++++--------------------- od-win32/sysconfig.h | 2 -- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/fdi2raw.cpp b/fdi2raw.cpp index 34887176..96947453 100644 --- a/fdi2raw.cpp +++ b/fdi2raw.cpp @@ -49,6 +49,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include +#define FDI_RAND_MASK 0x7fff + #ifdef DEBUG static TCHAR *datalog (uae_u8 *src, int len) { @@ -1623,24 +1625,24 @@ static void fdi2_decode (FDI *fdi, unsigned long totalavg, uae_u32 *avgp, uae_u3 max_pulse = avg_pulse + (avgp[nexti] - minp[nexti]); if (min_pulse < ref_pulse) min_pulse = ref_pulse; - randval = uaerand(); - if (randval < (UAE_RAND_MAX / 2)) { - if (randval > (UAE_RAND_MAX / 4)) { - if (randval <= (3 * (UAE_RAND_MAX / 8))) - randval = (2 * randval) - (UAE_RAND_MAX /4); + randval = uaerand() & FDI_RAND_MASK; + if (randval < (FDI_RAND_MASK / 2)) { + if (randval > (FDI_RAND_MASK / 4)) { + if (randval <= (3 * (FDI_RAND_MASK / 8))) + randval = (2 * randval) - (FDI_RAND_MASK /4); else - randval = (4 * randval) - UAE_RAND_MAX; + randval = (4 * randval) - FDI_RAND_MASK; } - jitter = 0 - (randval * (avg_pulse - min_pulse)) / UAE_RAND_MAX; + jitter = 0 - (randval * (avg_pulse - min_pulse)) / FDI_RAND_MASK; } else { - randval -= UAE_RAND_MAX / 2; - if (randval > (UAE_RAND_MAX / 4)) { - if (randval <= (3 * (UAE_RAND_MAX / 8))) - randval = (2 * randval) - (UAE_RAND_MAX /4); + randval -= FDI_RAND_MASK / 2; + if (randval > (FDI_RAND_MASK / 4)) { + if (randval <= (3 * (FDI_RAND_MASK / 8))) + randval = (2 * randval) - (FDI_RAND_MASK /4); else - randval = (4 * randval) - UAE_RAND_MAX; + randval = (4 * randval) - FDI_RAND_MASK; } - jitter = (randval * (max_pulse - avg_pulse)) / UAE_RAND_MAX; + jitter = (randval * (max_pulse - avg_pulse)) / FDI_RAND_MASK; } avg_pulse += jitter; if ((avg_pulse < min_pulse) || (avg_pulse > max_pulse)) { @@ -1654,28 +1656,28 @@ static void fdi2_decode (FDI *fdi, unsigned long totalavg, uae_u32 *avgp, uae_u3 ref_pulse = 0; if (i == eodat) outstep++; - } else if (uaerand() <= ((idx[i] * UAE_RAND_MAX) / maxidx)) { + } else if ((uaerand() & FDI_RAND_MASK) <= ((idx[i] * FDI_RAND_MASK) / maxidx)) { avg_pulse = avgp[i]; min_pulse = minp[i]; max_pulse = maxp[i]; - randval = uaerand(); - if (randval < (UAE_RAND_MAX / 2)) { - if (randval > (UAE_RAND_MAX / 4)) { - if (randval <= (3 * (UAE_RAND_MAX / 8))) - randval = (2 * randval) - (UAE_RAND_MAX /4); + randval = uaerand() & FDI_RAND_MASK; + if (randval < (FDI_RAND_MASK / 2)) { + if (randval > (FDI_RAND_MASK / 4)) { + if (randval <= (3 * (FDI_RAND_MASK / 8))) + randval = (2 * randval) - (FDI_RAND_MASK /4); else - randval = (4 * randval) - UAE_RAND_MAX; + randval = (4 * randval) - FDI_RAND_MASK; } - avg_pulse -= (randval * (avg_pulse - min_pulse)) / UAE_RAND_MAX; + avg_pulse -= (randval * (avg_pulse - min_pulse)) / FDI_RAND_MASK; } else { - randval -= UAE_RAND_MAX / 2; - if (randval > (UAE_RAND_MAX / 4)) { - if (randval <= (3 * (UAE_RAND_MAX / 8))) - randval = (2 * randval) - (UAE_RAND_MAX /4); + randval -= FDI_RAND_MASK / 2; + if (randval > (FDI_RAND_MASK / 4)) { + if (randval <= (3 * (FDI_RAND_MASK / 8))) + randval = (2 * randval) - (FDI_RAND_MASK /4); else - randval = (4 * randval) - UAE_RAND_MAX; + randval = (4 * randval) - FDI_RAND_MASK; } - avg_pulse += (randval * (max_pulse - avg_pulse)) / UAE_RAND_MAX; + avg_pulse += (randval * (max_pulse - avg_pulse)) / FDI_RAND_MASK; } if ((avg_pulse > ref_pulse) && (avg_pulse < (avgp[nexti] - jitter))) { pulse += avg_pulse - ref_pulse; diff --git a/od-win32/sysconfig.h b/od-win32/sysconfig.h index 38d7bbae..4e34064f 100644 --- a/od-win32/sysconfig.h +++ b/od-win32/sysconfig.h @@ -170,8 +170,6 @@ #define PATH_MAX MAX_DPATH #endif -#define UAE_RAND_MAX RAND_MAX - #ifndef GFXFILTER #undef OPENGL #undef D3D -- 2.47.3