05-03-98 Ver 1.9 - beta 2 * Source merged in with main Atari800 project (excepting Win specific modules). There is an effort by the various programmers involved now to keep in touch and work out problems together. * mmsystem (waveOut) sounds were reworked and sound great, even under NT Thanks to Darek Mihocka on suggestions that led to this working. Default sound is now mmsystem and Dsound options have been removed until I can clear up various problems some systems have with primary mode. * Pokey interrupts implemented. Berzerk speech works, as well as other special pokey effects. * Sound is disabled when running full speed, since mmsystem and Dsound both get far too unstable when the Atari is running 5X or higher. * Added "Pokey update divisor" to Sound dialog. Set this higher for LOWER frequencies. This affects games that pound on Pokey to do things like speech. For most apps, high values (262 for NTSC, 312 for PAL) are fine. For Berzerk etc, you want to lowest number that doesn't cause problems. If you hear buzzing at 44Khz, set this to 2 or higher. * Frame to frame timing is now very precise compared to previous versions, using either the CPU cycle clock (on a Pentium processor under NT) or the PC 1.19Mhz timer. As a side benefit the timer code is also faster. * Display width has been limited to 336 pixels. For now you will see black borders anyway in windowed modes. This is because of some very brain-dead behavior in StretchDIBits, which is 3x slower when clipping a blit rectangle instead of just blitting the whole thing. This does not affect DirectDraw full screen modes. * When the emulator is running "ahead" of the emulated Atari, it will return more time to Windows, making it easier to multitask with other programs in the background. Currently it's 25% of a P233 under NT. * Sound now has a latency of 2 frames from the initial point it is played. This improves stability in all sound modes (less crack ups etc) but of course adds the latency (40 or 34ms for PAL and NTSC respectively) * After exhaustive testing of various stretched windowed modes, I have picked what seemed like the best overall performer. On all machines I could test with this method is an improvement over the older one. Some cards, including my own NT machine Matrox Millenium, just don't stretchblt well. Even when doing it VRAM to VRAM. Anyway, DirectX windowed 768x480 mode is now much faster than GDI 768x480. Try setting refresh rate = 2 for speed. (which still gives you 30 or 25fps in NTSC/PAL respectively ). * A bug that could cause incorrect output to the error log was fixed. * The built-in UI of Atari800 is now supported, although redundant. Access it using Ctrl-Space while the emulator is running. I did this in case anything gets implemented in the UI later that I dont cover, and also because I think it's cool to have the UI run on the Atari :-). * Removed PILL option from cartridge dialog; it confused people too much. It's still available from the Atari800 UI. * Fixed a bug in the hardware dialog (loosing track of ROM name selected) * Now reads the command line (even as a GUI app) much like other Atari800 ports. The exception is "-configure", and "-help", which don't exist. However you can use the command line to set other parameters and disks. Values accepted on the command line will be saved to the Registry. * The Atari HELP key exists - use the ` key. I couldn't use F1 because that will (someday) be Windows Help. * Added checkbox for SIO patch in Hardware dialog (turn off for some games) * For the 100th time folks: It is NOT a bug that games play at a different speed under NTSC than they do under PAL. This is really the way it was with a computer sync'd to VBLANK. I'm tired of getting this e-mail :-). * The speed counter is now more accurate. * Volume slider works for WaveOut functions also now. This will set a volume relative to what your master volume is in the Win Volume Control (e.g. full slider in Atari800Win is 100% of your current volume setting). * MFC is dynamically linked, to limit size of EXE. If anybody gets a DLL not found on load e-mail me. If you have installed any modern Microsoft app this is pretty unlikely though. * Alt-Enter flips between DirectDraw full screen and windowed mode. 03-21-98 Ver 1.9 - beta release * As the title suggests, this is considered a beta. It is much more functional than the previous version, and in general more stable, but there are things I would like to look into before finalizing this to version 2.0. I am specifically looking for bugs in the user interface and use of atari800win vs. the other Atari800 emus, for instance if it works in DOS but not in Win95. * The biggest change is building from the 0.9.0 Atari800 code base. This means a huge list of changes to the emulator core; basically, it's much better now. P/M graphics and collisions in particular are really working well. * CPU core updated along with above changes. It's very good now, but still not perfect (7Cities of Gold still doesn't work! auuugh!). * Some inconsistencies in disk drive dialogs corrected. * Large-format ATRs can be read - use MyDos45 (Atari DOS won't read them) * Keyboard as joystick problem fixed (and the NT users say, "yea"). * Better recovery from lost Dsound buffers while in Primary mode * Hardware dialog reworked to fit better for those running 320x240 screens. * Added kludgy antic mode f (that's graphics 8 for you Atari BASIC weenies) "artifacting". You can set the colors created and turn the effect on an off via the Atari/Antic menu. This needs to be implemented for character modes as well, but I haven't done that yet. * Various small performance increases. There must be a better way to to stretchblt the 768x480 modes (actually, I know there is for sure in DDraw, and I need to change that - but look into GDI as well). * Spent hours finding a bizarre memory tromp bug. Doh. * SIO command 0x21 works. What's that? Oh, nothing much - just disk format :-). You need to have a file to mount first, so copy an existing .ATR file, then mount it, and tell the Atari to format it - voila. * Things that need to be added: a monitor, find out what's still wrong with 6502, look at various SIO bits that I think aren't right (GTIA and P/M, DLI all seem GREAT now, much better than XL-it! for example) 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.