Revision History
----------------

V0.52
  * Created the new CDirectSoundPlayer class and linked into CLynxWindow.
  * Removed system linkage to CSoundPlayer class
  * Small optimisation to CMikie::Update() sound catchup code was
    calculating the sample each time thru the loop, even though the value
    is always static.
  * Modify Mikie code to use a single buffer for sound and fit in with the
    new sound player class.
  * Fixed a bug where X4 would give a blank screen under full-screen mode.
  * Fixed a bug in CDirectSoundPlayer causing crash if another app had the
    directSound primary buffer locked.
  * Created new error handling dialogclass so that full screeen is auto
    cleared on error. Stops a problem with machine lockout in full screen.
  * Removed some of the global variables back into CLynxWindow as they
    were no longer accessed outside of this class.

V0.51 24th October 1998
  * Moved history into whatsnew.txt
  * Tidied the documents a little.
  * Fixed joystick initialisation problem, forgot to set dwSize
  * Designed a new homepage

V0.50 20th October 1998
  * Implemented DirectDraw full screen support
  * Fixed some memory leaks

V0.40 20th July 1997
  * Implemented sound code
  * Implemented support for .com files
  * Implemented hidden mikie register $FD97 returns 0x42 (life'n all that)
  * Implemented snapshots for BMP & RAW format
  * Implemented registry support for persistant parameters.
  * Fixed a bug in the sprite engine on literal sprites with 3 bits/pixel
  * Bug fix for multi-quadrant sprite offset error (+1,+1 problem).
    (I'm a little unhappy with this fix, its a bodge and has caused)
    (streaking of sprites in some games (California Games, Raiden...))
  * 2 Bug fixes for absolute literal sprites.
  * Implemented cartridge detail boxes into the about box
  * Added dialog box whilst Handy object constructor is running as this
    is a little slower than 0.31 due to the sound initialisation.
  * Speeded up cartridge reloading.
  * Implemented screen rotation via LNX cart header
  * Wrote ROTATE.EXE and added to the distribution notes & readme
  * Fixed the sound problems on the early Atari/Epyx games.
  * Fixed the 0x80000000 rollback bug causing sound output to stop.
  * Commented out code for +1,+1 multiquadrant sprite fix.

V0.31 21st June 1997
  * Fixed error with cycle counting & emulation speed calculations
  * Fixed throttling code and improved accuracy
  * Implemented spin control for setting emulation max %
  * Fixed bug with CPU Stack pointer initialising to wrong value.

V0.30 17th June 1997
  * Reworked make_lnx.exe, all command line options now work.
  * Added double buffering logic into core code.
  * Added additional image modes, hooks for direct-x
  * Re-organised screen mode selection code new CLynxWindow::VideoModeSet()
  * Implemented screen rotate
  * Modified line drawing code so that image reversal is done at source and
    not with Bit/StrechBlt - Nice speed improvement.
  * Some optimisation of CSusie::PaintSprites() to improve speed.
  * Added fps & efficiency calculations plus display window.
  * Re-wrote sprite painting/cpu interleave. (Some improvement in IRQ flicker)
  * Added joystick support.

V0.20 25th May 1997
  * Fixed a few minor bugs in the cart class, no affect on Handy though!!
  * Implemented early bailout in CSusie::PaintSprites() when offscreen
  * Implemented he pause key on 'Q'
  * Restructured source code so that the CPU emulation is entirely inline.
  * Changed sprite/timer interleave back original concept - separate updates
    with no interleaving, faster, causes IRQ (HBL) stability problems.
  * Speed improvements to CSusie::PaintSprites() & CMikie::Update().
  * Small speed improvements to the CPU model.
  * Moved a number of common vars to global status.
  * Further optimised the CMikie::Update & CSystem::Update() functions, I can
    now get approx 50% performance on my P133 with 1x screen. (16 bit colour)
  * Implemented screen flipping
  * Finally fixed the superclipping algorithm, forgot to flip the quadrants
    around when hflip & vlfip are used !!
  * Split distribution into two separate archives - Dev & Std.
  * Implemented 1st attempt at hardware sprite collison, documentation is a
    little scarce.
  * Seemed nobody except me noticed that the screen was always 4 pixels too small.
  * Fixed nasty bug in UART emulation, caused by a misunderstanding of comlynx
    hardware implementation, Rx & Tx are looped, doh! (Homebrew:T_TRIS.O now works)
  * Fixed a bug in the timer implementation relating to timer done.
  * Fixed the other timer bug, that was stopping serial irq's being processed, even
    though handy doesn't support serial operations it must support UART emulation
    due to the loopback issue above.
  * Found and fixed another sprite engine bug relating to the screen origin being
    negative and the end positive, error in signed/unsigned handling.

V0.10 23rd April 1997
  * Rewrote entire CPU class to increase speed!
  * Modified CMikie::Update to stop timer slippage
  * Numerous mods to CMikie:Update to implement my new understanding of the
    way that Mikey IRQ's operate.
  * Fixed IODAT so that comlynx is NOT connected.
  * Implemented comlynx serial registers & IRQ structure (Not sure its
    correct though!!).
  * Corrected timer mode for non-reload, timers should stop after expiry.
  * Finally fixed the mother of all bugs in my my system class, not so much
    a bug but a misunderstanding of the documentation.... doh!

V0.06 16th April 1997 (Beta-Tester only release)
  * Renamed the project to Handy from LWE to make it less windows specific
  * Fixed annoying message about fake rom after every cart load/reset,
    it should only happen on the first occurance now.
  * Fixed a bugette with negative tilt values, forgot to cast to a signed word.
  * Fixed a typo bug in the superclipper h & v swapped.
  * Rewrote CSusie::UpdateSprites() due to an implementation bug. Tilt is now
    possible once more...
  * Monster bug bashing session in CSusie::UpdateSprites() tilt/stretch is now
    working correctly. Still one issue with jitter on trailing edge.
  * Implemented PBKUP counter in Mikey to be a pseudo line hold-off before
    starting line DMA, hope this is right, there is no documentation to say
    exactl what this counter does.
  * Fixed bug with CPU Zero Page references being able to to beyond the zero
    page boundary, forgot to and with 0xff, Doh! (Many things now work!!!)
  * Fixed bug where by the current video page address was being picked up
    before the pseudo VBL resulting in frame being flipped in the wrong order.
  * Unfortunatly I've had to remove one of the optimisations as it was stopping
    some games (California Games in particular) working. Handy was doing 2 CPU
    instructions for each mikey/suzy update, I've now had to reduce that back
    to 1 with a resulting speed loss 8-(
  * Rewrote CMikie::Update() to improve the speed of operation.
  * Repartitioned & removed CSusie::Update to move functions under
    system::poke() handlers to speed up the system.

V0.05 12th April 1997
  * Command line filename support added
  * Homepage added to documentation, document tidyup.
  * Fixed CSusie::UpdateSprites() unpack bugs, vague documents are
    always such fun to interpret.
  * Implemented superclipping algorithm in CSusie:UpdateSprites()
  * Fixed sign bug in signed multiply function in CSusie::UpdateMath()
    due to incorrect casting. (apfel_2a.o looks like its working
    correctly now.)
  * Found and fixed the bug in CMikie::Update() that was stopping some
    cartridges loading, it took a long time to find as I was looking
    in the wrong place...
  * Reversed joystick axis, the documents seem to be wrong ??

V0.04 10th April 1997
  * Repartitioned CLynxWindow::CLynxWindow() so that the lynx system creation
    is now outside in LynxInit() which returns a pointer to a lynx.
  * Added code to allow cartridge load from the file menu using LynxInit()
  * Added code so that LWE will remember the last cart type loaded and use
    that for the next cart to save the default to .o each time.
  * Added support for 16bit colour mode under windows. (Much prettier)
  * Optimised CMikie::Update() screen accesses.
  * Added code to pause the emulator when it loses focus to another window.
  * Implemented sprite h/v flip in CSusie:UpdateSprites()
  * Corrected quadrant initialisation error in CSusie:UpdateSprites()
  * Implemented signed maths in CSusie::UpdateMath()
  * Started implementation of sprite collision logic in CSusie::Update()

V0.03 9th April 1997
  * Repartitioned CSusie:Update() into UpdateSprites() & UpdateMath()
  * Implemented CSusie::UpdateMath(), signed arithmetic still needs doing.
  * Fixed 2 bugs in CSusue:UpdateSprites()
  * Update & implement cpu, mikey & suzy cycle counters

V0.02 8th April 1997
  * Its amazing what an evening with a source code profiler can do, LoadRunner
    is now almost playable on my P133. There's still scope for a number of
    speedups that will take a little more time than an evening.
  * Minor bugfix in CLynxWindow::OnKeyUp() left/right reversed.
  * Minor bugfix in CSusie::Update() Error in pixel calc on absolute literals
    fixed absolute literal sprites now seem to be working correctly.
  * Some cartridges now work. The boot screen of Gauntlet is recognisable !!!

V0.01 7th April 1997
  * First functional release of the emulator. All of the lynx hardware is
    now emulated except for the MATH & AUDIO functions. 

V0.00 ?? Oct 1996
  * Started writing the debugging kernel & windows


--- END OF FILE ---
