09-16-97 Ver 1.4 * Big changes to the sound code in DirectSound. When hardware sound buffers are present, Atari800Win now writes directly to the sound card, not using the DSound mixer at all. This sounds just about perfect at a good sample rate (e.g., 32Khz) when running at 100% speed. It's very demanding of the sound card though. Many other internal code changes were done to facilitate this as well, but I have tested it fairly extensively (on SoundBlasters that is). If you are not getting 100% speed consistently, your sound will NEVER be quite right. Try different modes until you get one that you can run 100%. * Rearranged code so that all "wait time" (time wasted because the PC is ahead of where the Atari would be) is spent monitoring the sound buffers, checking to see if they need to be refreshed. This should make sound marginally better in most cases and improve sound handling on slower machines. Note however that if you aren't getting 100% speed, your sound will never be right. Also because sound isn't interrupt driven, it will blip now and then. Not much can be done about this given the current capabilities of Win32 and the very high mix rate. * You can record sound files with actual sound play turned off now (you won't hear them, but they record with your current settings). Mostly for NT users. * Sound buffers will be dynamically resized to match the emulation speed. This means that machines that are running a little slow should sound a little less bad and fast machines running at full speed will sound relatively comical. This is not perfect, and is only recomputed every 60 frames, but it should be better for both slower and faster speeds. The right way to do this would be a frequency shift, but that would be just horrendously expensive processing. (although it would give it that goofy chipmunk playback quality). * Found what was slowing some games way down. For reasons unknown (I'm looking into it) some Atari programs are sampling the joystick ports at an incredibly high rate - much faster than the ports themselves could change. This was giving DirectInput fits as it tried to read the joystick a few thousand times a second. I re-worked the joystick reading system to avoid this problem, but haven't figured out why the Atari hardware is doing that though. * Along with above definitely have joystick repeat/skip options working right now. * Fixed condition that would disallow 768 windowed modes when some of the "Don't show this" dialog boxes had been set off. * Registry could get an erroneous HKEY_CURRENT_USER entry under the already existing HKEY_CURRENT_USER\Software level. Actually it wasn't _my_ code that was doing this, but I fixed it anyway. So there. * Rearranged display module so only the code required for the exact mode being displayed will execute (via a pointer to a function). This might result in very small performance gains, but definitely results in easier to read code. 08-26-97 Ver 1.3 * Argh. Had managed to create a condition that under certain circumstances would cause a crash on boot. Fixed that, and since it could affect new users I'm immediately releasing this. 08-24-97 Ver 1.2 * ...Sound works! At least if you have a card that supports hardware mixing, and run it at 32Khz, primary mode (which is now the default). It will still occasionally blip a little bit, but on the whole it sounds great. Thanks to Ron Fries for putting up with my questions on this. * Volume control for DirectSound actually works for whole range instead of 10% like before :-). * Added "Force Primary" option to Sound Dialog, removed buffer management. Buffers are computed internally now. "Force Primary" causes Atari800Win to always completely own the sound card when running. It is less friendly to other tasks but works better. If you need to share the DirectSound object with another task, de-select this and use 22Khz mode (which doesn't sound very good...) * Fixed a potential race condition when fooling with the refresh rate * DirectDraw Windowed mode is now accelerated in 768x480 for all bitplane depths. It will still, however, be too slow for full speed emulation on most machines. * 640x400 through 800x600 are checked ahead of time and disabled if unavailable. If this happens, you really need to get a different video card. I left ModeX modes enabled. Some cards that report ModeX as available from the DirectDraw control panel will not work (they allow you to switch to the mode, but fail when any operation is attempted. Yippee). * Poor clipping behavoir in DirectDraw windowed modes is corrected * When bringing up a drive dialog, the directory of the dialog box will be that of the last directory used for that drive position. * Generally smarter about failure conditions when trying something in DirectDraw that didn't work - allows you to continue to use the emulator now in normal mode. * Fixed a metricing problem in windowed mode that was causing one extra pixel line (I hate those). 08-13-97 Ver 1.1 * Fixed keyboard mapping problems * Running at full speed works, can be toggled with the button on the Hardware dialog or by just pressing F8 (both on/off). Pretty funny to watch the Atari run at 10-15X speed on a P200. * Fixed DirectInput focus problems when running windowed with a joystick and switching to another window * Sometimes the small (intended for 320xXXX resolutions) hard disk dialog would appear when in windowed mode, this is corrected * Made a feeble attempt at optimizing display writes in large window DirectDraw mode. They are about 5X faster in 16bit modes now, but no faster in 24/32bit. And they still aren't fast enough (nor will they ever be, I think). Basically you're not going to run a large window at full speed. Well, you might be able to in 16bitplane mode with a REAL fast machine. Compensating for the 5551 and 565 modes when on a 16BPP desktop is a _real_ pain in the ass. I gave up on 24BPP. It's just too slow anyway, don't run in a stretched window under 24bpp! * When unfocused (you click on another window) the emulator will just pause now. This keeps it from drawing over top of windows in DirectDraw windowed mode, and when using standard sound drivers makes it quiet down. * Fixed a condition that could cause you to have to exit/enter again to make a new cartridge work. Changing cartridges on the fly works fine now. * Oops, I had broken printing. Fixed now (prints a bitmap of the page basically) * Ctrl + Function key now brings up a dialog to select the floppy for that drive. So Ctrl + F1 sets the drive file for D1:. You can cancel the dialog of course to preserve the existing drive (good idea from Robert Hagenstrom) * Found and eradicated two small (2K) memory leaks. * The 5200 is working now exactly as well as in Unix Atari800. This means you can bring up title screens :-). David hasn't done the 5200 controllers yet. However, you can flip back and forth from 5200 to Atari 8-bit to your hearts content. * Hold down option is now the default (just TOO much confusion over this one). 08-08-97 Ver 1.0 * First release.