I spent months figuring out enough of how WinUAE works to come up with a universal interface to add physical floppy disk support. Send me a thank-you!
It's not quite as fast as a native machine, that's just a side effect of emulation vs physical reality especially without causing WinUAE to freeze while disk access happens.
Why would I do this? Well sometimes it's just easier to drop a disk in rather than converting it to ADF, and also, there's those original copy protected disks. I've succeeded in running Lemmings (and Lemmings 2 The Tribes), Captain Planet, Bart vs the Space Mutants, and a few others too.
For help, and discussion, Join the Discord Channel.
THIS WILL NOT WORK WITH EVERY DISK, try to avoid Kickstart 1.3 or older. Some disks (a select few games) may not work.
Download FloppyBridge for Official WinUAE Beta
If you are involved in beta testing the official WinUAE, you can download the required libraries here:
Download WinUAE Temporary Preview Build Preview 13 beta 8
As this is a preview, it may contain bugs and issues currently being fixed both in this code and in the version of WinUAE this was built from.
Make sure your drive is working properly. It MUST
be running at least V1.8 (1.9.x recommended) firmware (and ideally have the diskchange mod).
Download and install WinUAE from https://www.winuae.net/
as usual. After installation, locate the installed files and replace the exe files with the ones from the following zip:
If you don't like it you can always re-install the original ones.
Once WinUAE is loaded, configure it how you usually would, then navigate to the Expansions
Then, from the Expansion Board Settings
select Disk controllers
Then, from the second menu, choose Arduino Reader/Writer (RobSmithDev)
Yes, I made this available to Greaseweazle boards too. The Catweasel option is nothing to do with me and I don't think it works anyway...
VERY important, click the Enabled box:
Then, choose which drive you want to replace, either DF0, DF1, DF2 or DF3. This will cause WinUAE to ignore any
settings you currently have defined for those drives:
Uses every trick in the book to ensure the emulation is smooth, doesn't stutter with graphics, audio etc. It finds complete disk revolutions by timing one revolution and using that to estimate where others should be, and then runs a pattern matching algorithm to stitch it up correctly. It also tries to read-ahead by reading the opposite side of the disk if it can. This is the fastest method and works 99% of the time.
Slower than the above, but still will not cause the emulation to stutter. This uses the disk INDEX messages to work out a disk revolution. It is more accurate than the above as it doesn't rely on timings, but takes longer to read, it also runs a pattern matching algorithm to stitch it up correctly.
Accurate, but Stalling
: In rare cases, usually within Kickstart 1.3 or older, some disks may need this. It will freeze WinUAE when part of a disk is requested that hasn't been read yet to ensure WinUAE receives it exactly when it thinks it should. This would be bad practice on part of the software needing this, but it is possible, and some copy protections might need this too.
Now, select the COM port you have your Arduino reader/writer connected on, or leave it on Auto Detect, and you're good to go!