CHANGES file for MAMECAT
------------------------

v0.42, 30-JAN-2001:

  - the parser now automatically determines if quotation marks are used in
    xmame's -listfull output - compile time option -DUSE_QUOTATION has been
    removed
  - two new log windows and files for qmamecat's and xmame's output; the log
    files are stored in <tempdir> as mamecat-session.log and xmame-session.log
    (beta-info: the log windows are not yet implemented)
  - menu additions (View->Log->Mamecat log... and View->Log->Xmame log...)
  - qmamecat now directly starts into GUI mode (that is, there is no console
    output any longer - instead it's in the log windows/files now !)
  - new boolean option <remove_logs> = remove log files on exit (1) or keep
    them (0) ?
  - added new option to options dialog
  - readded the bin directory - easier to find binaries when installing
    manually; this includes some makefile additions
  - minor corrections for dynamic menu-descriptions; two new menu-descriptions
    added
  - READMEs changed accordingly

v0.41, 04-OCT-2000:

  - renamed all *.cxx files to *.cc 
  - moved all header files to src/include
  - moved the preview-checker code from src/qmamecat/qmamecat.cc to the new
    src/qmamecat/prvcheck.cc (see PreviewCheckDialog::refreshLists())
  - added a new tab-dialog for the preview check output (the old dialog was a 
    bit rudimentary and needed a replacement ;-)
  - the new dialog is non-modal and the preview-check process can be
    interrupted ("Stop" button on the progress-dialogs), analysis output
    gathered up to this point will be available (even if you close and reopen
    the dialog); a "Refresh" button clears the data and restarts the preview
    checker
  - the progress dialog for the preview checker is ONE instance again, reset in
    between the two passes; I found the reason and a solution for my problems
    with the single dialog approach; see change-log for v0.38 for more info
  - the new dialog uses some Qt 2.xx features that are not compatible with Qt
    1.4x, so we decided to only support Qt 2.xx from now on !!! Sorry, if that
    bothers anybody, but it would have made things too complicated to make it
    both 2.xx and 1.4x compliant. On the other hand, there are interesting new
    features in Qt 2.xx which we NOW can start to use. So this is an 
    improvement ;-).
  - all available fonts are now automatically determined (see note below !)
  - furthermore, since the new automatic determination of all available fonts
    requires the QFontDatabase class, Qt 2.1.0 is required at least !!! In 2.0
    this class was private and was only used internally (Qt)... sorry for that,
    but since version 0.41.b6 Qt 2.1.0 is ABSOLUTELY REQUIRED.
  - successfully tested with xmame-0.37b7.1
  - a small popup message ("Executing XXXXXXX...") is displayed for 2 seconds
    now when a game is started (easier to recognize than the message in the 
    status bar, which is still available)
  - changed some accel-keys in the options-dialog (general settings) for
    uniqueness
  - removed the "Hide" button from the progress dialog for the gamelist refresh
    and reimplemented the closeEvent() method for this dialog to be able to 
    ignore close events while refreshing the list (being able to close the 
    progress dialog caused weird behaviour for some users - at least for one 
    user I know of (hi Rob ;-) - which is hopefully fixed now)
  - totally new makefile-structure contributed by Betrand Petit (see CREDITS)
  - removed support for the curses-version (mamecat) because it caused us 
    trouble with the new makefile-structure (I already said in the man-page
    for a long time, that this version will die as soon as it causes us
    trouble - so don't blame me for it ;-)
  - as Bertrand is using FreeBSD, we can now proudly announce FreeBSD support
    as well; therefor the current set of supported platforms is Linux, SunOS 
    and FreeBSD. OS-specific maintainers are documented in doc/CREDITS. Thanks
    for the contribution... BTW: we would like to support more platforms, so
    additional OS-specific maintainers are very welcome !!!
  - changed the docs accordingly (esp. the new compilation/installation
    procedure)
  - changed the install script to support the new makefile structure
  - added a new tool: qmsetup - startup config wizard for qmamecat (should
    NOT be started manually, ONLY automatically by qmamecat !)
  - removed "missing value for option..." warning messages from config
    parser (common/options.cc)
  - changed the default color for "not found" rom-sets to #C8C8C8 (lightgrey)
    to better distinguish them from "incorrect" ones (default: red)
  - changed the color-settings dialog to allow for switching to the color
    represented by a line in the sample list (by clicking on it)
  - minor bug-fix (printing): gave the rom-column 2% more room, stolen from the
    gamename-column; should fix word-breaking within the rom-column
  - doc changes (READMEs): removed entries up to v0.40 from section 11 (release
    notes), reworked section 3 (installation)
  - moved the installer into the new subdir "scripts"

v0.40, 10-APR-2000:

  - added 11 new options: <color_ROMSTATUS>, <color_ROMSTATUS_high> (replace
    ROMSTATUS with "correct", "maywork", "incorrect", "notfound" or "unknown")
    and <specify_color_by>, which allow for gamelist color specification by
    rom-status !!! A long awaited feature ;-)... the "old" behaviour is still
    supported (color specification by rom-availability) and the default;
    <specify_color_by> sets the color-specification method (1 = rom-status,
    0 = rom-availability)
  - changed the color-settings dialog accordingly; the sample-gamelist now has
    3 entries for each valid rom-status (before I used a copy of the first 500
    "real" gamelist entries, but this couldn't guarantee that an entry of EACH
    type existed in the sample-list; consider it a bug fix ;-)
  - added the new options to the READMEs (section 6) and to mamecatrc.sample
  - added two new methods (makeQColorFrom() and makeRGBColorFrom()) to GameList
    class for better readability of the code
  - added a line edit & browse button for the <status_cache> option (introduced
    in v0.39) to the options-dialog
  - did some code-cleanup in the GameListItem::paintCell() and 
    SampleGamelistItem::paintCell() methods for better Qt 2.xx compatibility
  - removed (nearly) all occurances of the old <thorough_romcheck> option,
    which were already commented out in most cases since v0.39
  - corrected a typographical error in the message printed when requested to
    enter the path and filename of the ROM status cache
  - changed the default answer for rebuilding the targets (when they already
    exist) to "no" in the install script
  - config-reader and ~-writer rewritten; much cleaner and smaller code now, 
    which makes it easier to add new options than before; ALL white-space 
    characters can be used as delimiters now (before it was a bit pedantic
    about the format ;-)
  - successfully tested with xmame-0.36.1 and xmame-0.37b1.1
  - changed all occurances of www.troll.no to www.trolltech.com in the docs
    (Troll Tech changed their domainname a few weeks ago ;-)
  - bug-fix: when using a beta release before a final release, the version 
    checker interpreted the smaller <version_beta> incorrectly (it's "0" in the
    case of a non-beta/final release !), printed a weird warning message and did
    NOT update the version entries in the config file; this is fixed now

v0.39, 15-MAR-2000:

  - added a variable MAKE to the top-level Makefile.inc (if you have an SMP
    system, use "MAKE = make -j N" (N = number of CPUs + 1) for faster
    compilation (BTW, before you ask: SMP does not improve the performance of
    (q)mamecat very much, except for rom-analysis - which uses 2 threads of
    execution - and when fork()'ing xmame-processes !)
  - bug-fix: "include ../Makefile.inc" was missing in one of the makefiles
  - using a rom-status cache now to speed up rom-analysis at startup
  - added a new option <status_cache> for this purpose (points to the filename
    of the cache file); this option cannot be changed from within qmamecat yet,
    you have to change it manually in the config-file, if you want to do so - 
    for whatever reason; I will probably add this in a later version
  - added a command line option "-r" which will force (q)mamecat to recreate
    the rom-status cache from scratch (same happens when the View->Refresh menu
    item in qmamecat is used or the rom-status cache file is removed); note that
    you HAVE TO refresh the gamelist now if you install new ROMs so that 
    (q)mamecat can find and analyze the new (or changed) ROMs !!! Updating to a
    newer xmame release will automatically force a recreation of the cache and
    update of the catalog (through catgen as before). Frankly speaking, I'm not
    sure what happens if an OLDER xmame release is used ;-)...
  - added a new section to the READMEs about available command line options
  - added a description of the ROM-status cache file format to the READMEs
    (combined with the section about the catalog format)
  - modified the man-page accordingly
  - <thorough_romcheck> is NOT an option any longer; the new ROM-status cache
    makes it somewhat obsolete and it would lead to trouble if unset; it's still
    in the internal config-struct (just in case ;-), but you can't reconfigure
    it "externally", it's always enabled now !
  - qmamecat now prints the Qt version it was compiled with as well as the Qt
    version it is currently being run with at startup (this should make it
    easier to find possible binary library incompatibilities, if any)
  - changed the english homepage URL to http://www.mameworld.net/mamecat 
    "everywhere" in the sources (mainly the docs)
  - removed the useless linker option -lstdc++ from the top-level Makefile.inc
  - added 3 additional options for better version-handling: <version_major>,
    <version_minor> and <version_beta> (only used internally, shouldn't be
    changed manually !!!)
  - added a new routine for version-specific checks (see version_check() in
    src/common/options.cxx); this includes procedures for easier migration
    from existing installations to newer (and probably incompatible) versions
    of (q)mamecat - the first use of this is the setup of the new rom-status
    cache file (you will be asked for a path and filename) - this is the main
    reason for the afore mentioned <version_xxx> options 
  - added all new options to doc/mamecatrc.sample, removed <thorough_romcheck>
    from it
  - changed the READMEs (sections 6 & 8) accordingly
  - added support for the new "xmame -listXXX" output format (new since 
    xmame-0.36rc1.1)

v0.38, 09-DEC-1999:

  - added a tool to check the current preview set (incl. a new menu item
    "Tools" -> "Check previews...") - note that this may take some time, esp.
    when run on a zip-compressed preview-archive it will give the impression
    of a 10 MB download over a 64 Kb/s line ;-)
  - prepared a menu item for the upcoming ROM administration tool (not yet
    implemented)
  - the actual code for updating the preview-window has been moved out of 
    PreviewWindow::paintEvent() into a new subroutine called PreviewWindow::
    doSearchAndUpdate()) to allow for reuse of this functionality within 
    other code (esp. for the new preview-checker); this new routine has a 
    parameter "pseudo", if pseudo == 1 the preview will NOT be drawn, instead
    a string-list (QStrList) will be returned containing ALL available preview
    image file names for a particular rom-set (incl.  the obsolete ones) - 
    this is "PASS 1" of the preview-check. "PASS 2" checks if there are any 
    preview-files that are not related to any rom-set; all this information 
    gets printed as ASCII text in an editor-widget... the dialog is yet a bit 
    rudimentary and it's hard to find what you're looking for, but I will try
    to improve it in later versions
  - added a symlink README.english in the doc directory (which links to README)
  - changed the references to the english homepage (which has moved to 
    http://mameworld.retrogames.com/mamecat/ !) in the READMEs, the man-page and
    the installation script
  - added a function total_entries() to src/unzip/unzip.[ch] to determine the
    number of entries in a given zip-file
  - added a function entry_list() to src/unzip/unzip.[ch] which returns a "list"
    (char **) of all entries in a given zip-file
  - changed the "parent" of the options-dialog (back) to NULL, which centers the
    dialog on the desktop (I think it looks better, esp. when the main widget is
    placed at any corner of the desktop)
  - added a new compile-time switch -DCHECK_IMAGE_FORMAT for qmamecat; if unset
    (the default), qmamecat does not check if a preview image has a valid
    format, which speeds up preview-processing a little bit (not noticable on
    a fast machine). See the top-level Makefile.inc for more information...
  - when zip-compressed previews are used, the uncompressed image data is now
    DIRECTLY copied into the pixmap memory (before I used a temp. file), which
    makes it a bit faster than before (also not noticable on a fast machine ;-)
  - changed the overall compiler optimization from "-O3" to "-O2" as some
    compilers (non gcc) appear to have trouble with "-O3"
  - fixed a serious memory leak that was introduced in v0.38.b4 (the RSS
    went above 20 MB when zip-compressed previews where checked)
  - using two separate progress-dialogs for the preview-checks (PASS 1 & 2)
    now; until v0.38.b4 I used only one object which was reset between the two
    steps, it appears that this caused strange behaviour sometimes ("BadWindow"
    X11 errors); I hope this fixes it
  - instead of using cache_suspendzip (as in v0.38.b4) I'm using 
    cache_closezip() now in both new routines entry_list() and total_entries()
    (see src/unzip/unzip.c); this fixes another (minor) memory leak
  - support for the new output format of "xmame -verifyroms" of xmame-0.36b11.1
    and above (older xmame versions are still supported)
  - gamenames can now be up to 80 characters long (not all descriptions fit, but
    most ;-)
  - new option <show_unknown> (enabled by default) which allows you to see
    rom-sets which are in an "unknown" state (the status-column will display
    "NA" = "Not Applicable" in these cases); this is especially important for
    games that have NO rom-set (currently only "pong" AFAIK). This means that
    mamecat finally supports games without a rom-set !!!
  - this includes additional menu entries in the view- and game-context-menus
  - added a description of the new option to the READMEs
  - added the new option to doc/mamecatrc.sample
  - added a counter to display the number of games in "unknown" state in the
    about-dialog

v0.37, 23-JUL-1999:

  - bug-fix: corrected the prototype definition for child_signal_handler() in
    src/common/util.hxx (no real code change)
  - removed the use of .depend (the dependency file) from all Makefiles; the
    dependencies are already correctly setup in the Makefiles
  - enhanced search-routine: automatic string substitution, which also works
    REVERSELY when backspace is pressed - I'm very proud of this !
    Note that qmamecat "wastes" another 250000 bytes of memory to accomplish
    this, but I think it's worthwhile doing so... BTW: I don't know any other
    application that can do reverse substitution, so I believe we are the first
    to do so - WOW ;-) !
  - search-window timeout set to 4 seconds (you need more time to compare the
    substituted strings with what you wanted to find ;-); every key (except 
    ESC !) resets the timeout now
  - bug-fix: the cursor was not visible within the search-window; fixed now by
    grabbing the focus while the search window is active
  - the gamelist is sorted case-insensitive now !!!
  - bug-fix: when the preview window was iconified and restored afterwards, the
    image was not always correctly changed; fixed now by periodically checking
    the current visibiliy-state and forcing a repaint() when the window is
    restored (unfortunately, restores don't generate X/Qt events, so the only 
    solution is polling the state)
  - added information about the new string-substitution to README(.german)

v0.36, 21-JUL-1999:

  - using the routine QPrintDialog::getPrinterSetup() as a replacement for 
    QPrinter::setup() now if Qt 2.x is used (the Qt docs state that 
    QPrinter::setup() is obsolete now) - please note that you will not see any
    difference in the GUI !
  - bugfix: settings for highlighted gamelist colors were ignored under Qt 2.0, 
    this is fixed now
  - you can now sort the gamelist by "game specific options" as well; changed
    README(.german) to reflect this
  - due to popular request, current gamelist stats are now shown in the about-
    dialog below the copyright-infos

v0.35, 17-JUN-1999:

  - support for PNG image format added (requires Qt 2.0 or above - if Qt 1.4x
    is used, PNG support will NOT be included in qmamecat !); BTW: this is also
    the new format xmame creates since 0.35rc1.1 (when you press F12) !
  - support for PPM, PBM and PGM image formats removed (they are normally not
    used and cost a lot of time searching for them ;-)
  - xmame's "old" XPM snapshots (rom-snap00X.xpm) are still supported, but the
    range of snapshots searched for has been reduced to 000 - 004 (this speeds
    up searching for images, esp. in the worst-case when an image cannot be 
    found at all !)
  - found a way to reduce overhead produced by unwanted Qt- or X11-generated
    paintEvent()'s; this should make the new code for displaying previews about
    twice as fast as before (well, the "useless" paintEvent()'s are still 
    generated, but they are ignored) - it's a littly tricky (and I really don't
    know exactly, WHY it works ;-) but at least it results in a better 
    performance...
  - the display of previews is delayed until the gamelist-cursor isn't moved for
    a short amount of time (currently 250 milliseconds !); again, this avoids
    unwanted paintEvent()'s for the preview-window and due it reduces some 
    overhead; you will notice that moving the gamelist cursor is faster now, 
    because it is not interrupted by preview-processing (at least not as often
    as before ;-). 
    Note that this (and the above) is not yet a complete solution for the 
    performance problems we have with previews, but it's a start... we think
    that either parallelizing it (seperate thread for preview-processing) and/
    or making it interruptable (by keyPressEvent()'s) should be a better 
    solution; we hope to implement that in the next release !
  - changed README(.german) to reflect the above mentioned changes
  - the automatic raise() for the preview-window has been removed

v0.34, 09-JUN-1999:

  - changed Makefiles to use $(CXX) everywhere (mixing C++ and C compiler seems
    to have introduced dynamic linker problems (at least) on Slackware Linux);
    I hope this fixes it (thanks to wfaulk@totalsports.net for his hard work
    figuring this out ;-).
  - removed the "extern "C"" statements from some C sources, as it is not 
    neccessary when using ONLY C++ compilers...
  - code cleanup (there were a lot of "unused variables")
  - many code changes to be Qt 2.0 compliant (Qt 1.4x is still supported !)
  - changed URL of german homepage in README(.german) and man-page
  - added information to README(.german) about the printing problems under
    Qt 2.0 (appears to be caused by a bug in Qt 2.00beta1 !)

v0.33, 07-MAY-1999:

  - some improvements to the installation script by Robert Hamberger
  - when the catalog is "outdated" the user gets the option to start catgen
    from within qmamecat now (without the need to exit qmamecat); note that
    if you use a catalog other than "mamecat.cat" the run of catgen will cause
    the catalog's name to be automatically changed to "mamecat.cat", because
    catgen stores the new catalog under this name ! This is done without
    warning or further questions...
  - since 0.35b11 (x)mame reports an additional ROM-status (NO GOOD DUMP KNOWN)
    and lets you start the emulation in such a case; prior to this version,
    MAMECAT marked these ROMs as 'IN'correct, which not neccessarily is true;
    this has been fixed in this version, so that such ROMs are marked as
    'M'ight 'W'ork ! It's hard to stay up-to-date with (x)mame ;-)...
  - added a "Special notes for new versions of MAMECAT" section to
    README(.german)

v0.32, 09-APR-1999:

  - installation script added (thanks to Robert Hamberger !), can be launched
    with "./install" or "make install"
  - (q)mamecat checks the availability of the local configuration file at
    startup; if it can't be found, prompts the user for a minimum configuration;
    additionally a catalog will be created automatically; both the new 
    configuration file (.mamecatrc) AND the new catalog (mamecat.cat) are
    stored in $(HOME)/.xmame. Note that this requires "catgen" to be in your
    PATH !!!
  - ROM-path (parsed from xmame -showconfig) is shown on stdout, when 
    MAMECAT_DEBUG is defined
  - added a CREDITS file
  - added german README (README.german)
  - added URL of german homepage to man-page and README(.german)
  - added information about the new installation-procedure to README(.german)

v0.31, 16-MAR-1999:

  - changed all combo-boxes from Motif 1.x style to Motif 2.0 style
  - temp. messages are shown in the status-bar when you save the catalog
    or the options
  - edit- & options-dialogs are now children of the main-widget (which centers
    them on the main-widget, not on the desktop as before)
  - ROM status and Refresh menus added to gamelist context menu
  - first version with support for Qt 2.0 (which is not yet released !)
  - xmames -listfull output has changed again ;-(, this version supports
    the new output-format (by default); if you should use an older xmame 
    version (older than 0.35b6.1 !), please uncomment the option QUOTATION
    in the top-level Makefile.inc !!!

v0.30.1, 26-FEB-1999:

  - under Qt 1.43 the display of the preview-window was 'damn slow', this 
    version fixes that by delaying the visual widget updates
  - the menubar was not displayed correctly under Solaris 2.5 with Qt 1.43,
    fixed by adding a menu_bar->repaint() to the main-widget's resizeEvent()
    (Carsten Engel found the problem and its solution)

v0.30, 25-FEB-1999:

  - buttons and old status-line removed (the information in the status-line was
    redundant since it is already in the gamelist !)
  - menubar added as a replacement for the buttons; this includes some extra
    functionality:
  - the rom-status can be used to limit/control the current view (see menu
    'View'->'ROM status')
  - 4 new options (<show_correct>, <show_maywork>, <show_incorrect> and
    <show_notfound>) added to accomplish this (also added to README and
    mamecatrc.sample)
  - when the option <thorough_romcheck> is changed, the gamelist will now
    automatically be refreshed after return from the options-dialog (due to
    the above)
  - made gamelist-initialization more failsafe
  - a progress dialog is shown when the gamelist has to be reinitialized
    (the initialization at startup still uses the progress-output to stdout !)
  - the individual tabs of the options-dialog can now be pre-selected through
    the options-menu
  - accel-keys defined for most menus
  - class MyWidget renamed to MainWidget
  - print function added (incl. a printer setup dialog); note that this
    has only been tested on A4 printers, but it *should* also work on other
    formats
  - added a small section about printing to README
  - an about-dialog has been added (very important ;-)
  - bug-fix: when the gameopts and/or remarks did only change in terms of 
    'character-case' (when edited), the gamelist-entry was not correctly set
    after return from the edit-dialog 
  - bug-fix: when the catalog-filename and/or mame-executable are changed, the
    gamelist has to be reinitialized (this should be done correctly now)
  - bug-fix: window-positions were not stored when you saved the options on
    exit; this works now, but only if you do a 'clean' exit ('File'->'Exit')
  - a 'real' status-bar has been added (this includes a little resize-handle in
    the lower right corner)
  - pressing cursor-up/down while the search-window is open jumps to the next/
    previous matching game in the current gamelist
  - the search-window is displayed below the gamelist now (note that when you
    resize the main-widget, the open search-window will NOT resize/move)

v0.29, 17-FEB-1999:

  - changing the sort-criterion and ~-order by clicking on a column-header is 
    now supported (the only exception is the 'OPTIONS' column); the current
    setting is shown in the header as a '>' (ascending) or '<' (descending) 
    as a prefix to the corresponding column-header !
  - column-positions and ~-widths are (re)stored now (this was neccessary to
    work-around a bug in Qt :-); 12 new options added to accomplish this 
    (<XXXX_pos>/<XXXX_width>; also added to README and mamecatrc.sample)
  - tool-tip for gamelist removed (the mouse cursor wasn't changed correctly,
    while the tool-tip was active !)
  - a click on the save button in the main-widget opens a popup menu now to
    select between 'Gamelist', 'Options' and 'Both'
  - totally new way of checking if current options differ from saved options
    (easier, faster and more precise now :-)
  - a context-menu appears when you right-click on an entry in the gamelist
    (no new functionality, but nice to have :)

v0.28, 01-FEB-1999:

  - added support for zip-compressed preview images (the unzip-code has been
    taken from xmame and is in the new directory src/unzip !) - this is only
    available with qmamecat (of course :-); unzip-code slightly changed (only
    handling of error-messages)
  - two new options (<compressed_previews> and <compressed_preview_file>) 
    added for this purpose
  - both new options added to options-dialog (general settings), README (see
    sections 4 and 5) and mamecatrc.sample
  - using a QListView instead of a QListBox for the gamelist in qmamecat; this
    solves the problem that proportional fonts made the gamelist look weird (so
    now you can use them in the gamelist, if you like), offers column-headers,
    you can dynamically change the column-widths or exchange columns (but
    their order is currently not (re)stored) etc. etc. ...
  - the gamelist in qmamecat displays additional information: <gamename>, 
    <rom>, <status>, <remarks>, <gameopts> and <rating>
  - you can also sort by <status> now
  - bug-fix: when the options where not changed (while in the options-dialog)
    and 'save' was clicked, the window-positions where not stored to
    .mamecatrc
  - function FindGameStr() (in src/common/gamelist.cxx) now supports searching
    in both directions (forward and backward); new optional parameter 'forward'
    (backward searching was neccessary due to the 'reverse ordering' of the
    entries in QListView, otherwise the search found the last entry first :-)
  - options-dialog (sample gamelists) changed to reflect the new look of the 
    gamelist; the sample gamelists now show the *exact copy* of the current 
    gamelist, except that the max. number of entries is limited to 500 (to
    speed up dialog creation !)

v0.27, 26-JAN-1999:

  - 'Known working platforms' section removed from README (the list on the
    homepage is more up-to-date :-)
  - README now correctly states that Qt 1.4x is neccessary (since v0.25
    Qt 1.3x is no longer supported !)
  - catalog-consistency is checked on startup now: if (q)mamecat finds any
    inconsistencies compared to the '-listfull' output of xmame the
    user will be warned (in case of mamecat only in form of a message to
    stderr, in case of qmamecat by the use of a message-box !)
  - "#if QT_VERSION >= 140 ... #endif" removed from all sources as it does not
    make sense to check for something that is no longer supported ;-)
  - fork()'ing of xmame now only done with qmamecat, the text-/console-version
    was seriously 'confused' by the use of fork() (exec_game() has a new flag 
    'forkit' now - it didn't make much sense if used on the console !)
  - new option <thorough_romcheck> added; if set, (q)mamecat uses xmame's
    -verifyroms option to analyze rom-availability 'in-deep' at startup
    of (q)mamecat or at every refresh (!); this may take some time depending
    on the amount of roms you own, but is much more reliable than just looking
    for the existance of a file named <rom>.zip (or a directory of that name)
  - new <status> field in _game_-struct; the status is displayed in both 
    mamecat and qmamecat in their status-lines: shown as 'CO' (COrrect), 
    'IN' (INcorrect and not working), 'MW' (incorrect but May Work), 
    'NF' (Not Found) or 'NA' (Not Applicable = unknown status);
    ROMs with status CO, IN or MW are marked as 'available' !
  - added a new counter for the number of 'correct' games, which is displayed
    in the gamecount-label in both mamecat and qmamecat, but only if
    <thorough_romcheck> is enabled (otherwise the value would be unknown !);
    this gives you the ability to cross-check that the ROM-status was correctly
    determined (if you compare this to the output of 'xmame -verifyroms', which
    blurbs out some counters at the end - these should match the counters
    (q)mamecat displays, otherwise something has gone totally wrong :-)
  - max. length of gamename set to 50 as many gamenames meanwhile exceed 32 
    characters

v0.26, 18-JAN-1999:

  - bug-fix: gamelist-colors were set incorrectly after return from the
    options-dialog
  - bug-fix: the gamecount-label was incorrectly resized after return
    from the options-dialog (under certain circumstances parts of the text 
    were not displayed)
  - added a counter for the number of available games that are currently
    shown in the gamelist (displayed in the gamecount-label in both mamecat
    and qmamecat)
  - preview image filenames can now also be <rom>-snap00x.<ext> (x = 0..9,
    limited to 0..9 because of performance issues), so you may just copy
    snapshot-files produced by xmame to your previewdir; but note that if there
    is a file named <rom>.<ext>, this one will be used instead (README changed
    to explain this)
  - new option <ignore_rom_avail>: if set, the rom-availability will be ignored
    and games that (q)mamecat considers unavailable can be started too ! 
    (new option added to options-dialog (general settings), mamecatrc.sample 
    and README)
  - the search window now ignores input that does not result in a listed
    game name (beeps in this case)

v0.25, 18-DEC-1998:

  - the config-setting <romdir> has been removed (ignored now), instead xmame's
    rom-path setting is parsed from 'xmame -showconfig' and used as <romdir>
  - <romdir> label & lineedit removed from options-dialog (see above)
  - <romdir> removed from mamecatrc.sample (may confuse the user :)
  - bug-fix: the rom-image filename was editable in the edit-dialog, now it
    is a just a label (w/o focus), so you can't change it from within qmamecat
    (being able to change this might have caused some trouble :-)
  - the options-dialog now is a tab-dialog with tab-widgets for general-, 
    font- and color-settings (the general-tab includes all settings that
    were in the original options-dialog !)
  - fonts can be changed 'on-the-fly' now using the new 'Fonts'-tab of the
    options-dialog (the main-widget's layout is 'automagically' rearranged, if 
    the default-font changes !)
  - gamelist colors can be changed 'on-the-fly' now using the new 'Colors'-tab
    of the options-dialog
  - the preview-dir can now also be browsed
  - file browsers (used in the options-dialog/general settings) now start off
    in the directory where the currently selected file is stored
  - you are now asked to save the options before you exit qmamecat, if you 
    changed any settings (from within the options-dialog)
  - bug-fix: the ROM-, AVAIL- and RATING-labels in the main-widget are now
    'fixed' at their initial positions (before they were stretched dynamically,
    which looked a little ugly ;-)

v0.24, 14-DEC-1998:

  - man-page added (see src/man/*, doc/mamecat.6); see README (section 3) for
    more information on how to rebuild the man-page (which normally shouldn't 
    be neccessary) - symlinks for qmamecat.6 and catgen.6 created in the doc
    directory , so the user may also use 'man qmamecat' or 'man catgen' (not
    only 'man mamecat')
  - macro EXISTS() moved from src/version.hxx to /src/common/util.hxx, which 
    is a better place for it (src/version.hxx now only includes version & 
    copyright information, nothing else !)
  - gamelist colors can now be specified in .mamecatrc: 4 new options
    avail_color, avail_color_high, unavail_color, unavail_color_high either
    in #RRGGBB format or as a named color (named colors have to be defined
    in /usr/X11/lib/X11/rgb.txt !); see README section 5 for more information !
  - changed doc/mamecatrc.sample to reflect the new color-settings

v0.23, 10-DEC-1998:

  - minor bug-fix: options- and edit-dialogs now have OK as default-buttons
    defined (pressing ENTER will also close the dialogs and accept the changes)
  - when you exit qmamecat or press the refresh button you will be asked to
    save the changes made to your current game-list (if any :-)
  - added information about rom-path usage in xmamerc to doc/README section 5
    (thanks to Robert Hamberger for this hint)

v0.22, 04-DEC-1998:

  - enhanced search-function for qmamecat: when you type a character while in
    the gamelist, a small pop-up window appears where you can enter a string
    to search for; if the string is found (at the beginning of a games name)
    the cursor will jump to the corresponding position in the list; after 
    an idle-time of 2 seconds (or when you press ESC !) the window will be
    closed...
  - bug-fix: if the old catalog was in the cwd and its name was mamecat.cat,
    catgen couldnt find it, because it renamed it to mamecat.cat.bak prior
    to reading from it ;-)
  - new Refresh button to reload the entire gamelist (so you dont need to
    restart qmamecat when you install new ROMs - a click on Refresh will
    cause qmamecat to recognize them !)
  - qmamecat successfully tested with Qt 1.42
  - the colors of the gamelist-entries are dynamically set now: available
    games are 'black', unavailable games are 'grey'ed; longterm these colors
    should be user-definable (in .mamecatrc)... but for now it's ok !
  - bug-fix: last entry was not allways displayed correctly when the END-key 
    was pressed or the new search function caused the list-cursor to jump
    to its location

v0.21, 25-NOV-1998:

  - bug-fix: <zombie>-problem fixed by the use of a signal-handler (which 
    catches the SIGCHLD signal) and wait(2)
  - 'gencat' renamed to 'catgen' as 'gencat' seems to exists as a system tool
    on some platforms (at least seen on SunOS :)

v0.20, 23-NOV-1998:

  - bug-fix: InitGamelist() caused a seg-fault when <executable> was not set
    correctly (or the call to 'xmame -listfull...' didn't succeed); fixed now,
    but *all* games will be marked as 'UNSUPPORTED' in such a case !
  - default for <executable> changed to "xmame.x11" (which should be a better
    default than "xmame.linux" :-)
  - bug-fix (qmamecat): the game count was not displayed correctly when the 
    number of 'loaded' games increases while qmamecat is running (by changing
    some options); the label was not 'stretchable', which caused this bug...

v0.19, 20-NOV-1998:

  - new config-setting <tempdir> used for temporary files
  - new setting added to doc/mamecatrc.sample
  - pipes are no longer used to determine xmame's supported games (which is
    done by 'xmame.* -listfull'), instead temp. files are used (DGA version
    caused problems with pipes; option -stdout-file is now also passed to
    xmame)
  - 'gencat' totally redone - should work fine now

v0.18, 19-NOV-1998:

  - X-Mame is now fork()'ed when you click on 'Play' (or double-click on a
    game or press ENTER); this means that (q)mamecat can now be used (process
    input/events) while X-Mame is running, it also means that you now can start
    several X-Mame processes at the same time (tested with xmame.x11, i do
    not recommend this for DGA, SVGALib or FX/GLMame - but if you do so, please
    mail me your results !)
  - window-position restore now supported: the window-positions (mainwidget
    & preview-window) are stored to the config-file when the 'save'-button
    is clicked from within the options-dialog; they are restored when you
    restart qmamecat (only used in Qt version, of course). Note that if the
    preview-window is disabled when storing the window positions, the 
    default position will be used when you enable it. Also, as long as
    the preview-window is disabled, its position will not be be saved, and
    when you reenable it later on, the last stored position will be used...
    this might, for example, lead to overlapping windows ! 
  - 6 new options in .mamecatrc: mainwidget_x/_y/_w/_h and pvw_x/_y 
  - doc/README changed to explain these new settings (see section 5)
  - doc/mamecatrc.sample updated (includes the new settings now)
  - updated version of doc/COPYING (from www.gnu.org), incl. the new 
    address of the FSF (also updated the address in all cxx-headers and 
    doc/README)

v0.17, 13-NOV-1998:

  - new source-files (src/common/util.*) for common general purpose routines
    added (until v0.16 they were implemented twice)
  - .mamecatrc can now be stored in $(HOME), $(HOME)/.xmame/ or $(HOME)/xmame/;
    when you 'save' the configuration, it gets stored in the dir where it
    was found first - if no file was found, qmamecat uses the default
    $(HOME)/.mamecatrc to save the configuration (see also README section 5 !)
  - env. variable $(MAMEDIR) is no longer used; instead the search for ROM-
    images is done in the same way as the newer xmame-versions do it (this
    includes a new config-setting 'romdir', where the ROM-directories can
    be specified - colon-separated list, just copy it from xmamerc :) !
  - options-dialog changed (added widgets for the romdir-setting)

v0.16, 11-NOV-1998:

  - fixed the 'preview-window'-bug by the use of setBackgroundPixmap() instead
    of QPainter. As a positive side-effect, the image-updates look nicer now 
    (no flickering images) and are a little bit faster than before...
  - the message 'Preview not available' is now also implemented as a pixmap
    (compiled in - see pixmaps.hxx !)
  - changed mamecatrc.sample to reflect the new xmame-config-dir (~/.xmame/)
    convention

v0.15, 17-SEP-1998:

  - thanks to Carsten Engel (carsten.engel@odn.de) qmamecat now supports Qt's 
    layouts; this solves any sort of font-related problems (i.e. selecting a
    very big font may have caused qmamecat not to display the text on buttons
    correctly). As a 'side-effect' any dialog can be resized now (prior to this
    version resizing was restricted to the main-window only).

v0.14, 02-SEP-1998:

  - since Qt 1.40 short & long filenames can be used for Qt's include files,
    but this will be changed in the future (to long filenames only), so
    MAMECAT now supports both: short filenames for Qt versions < 1.40, long
    filenames for Qt versions >= 1.40 !

v0.13, 31-AUG-1998:

  - bug-fix: found another bug in 'gencat', the catalog *should* be generated
    correctly now (did not reload the temporarily generated gamelist from
    disk before game-validation was done, instead the memory-copy was used,
    but this copy was invalid due to possible additions to the temp. gamelist
    on disk - if somebody understands what i'm saying here :) - but please
    allways save a backup copy of your old catalog as 'gencat' is still not
    GA-proven !

v0.12, 19-AUG-1998:

  - bug-fix: in contrast to my own convention that a value must exist if the
    option is specified (in .mamecatrc), the SaveOptions() routine (in 
    src/common/options.cxx) did exactly this, which caused seg-faults when
    restarting (q)mamecat.
    I fixed the LoadOptions() routine (same file) to deal with such 
    'mis-configurations', so the old rule that if an option is specified its
    value must exist, is obsolete now !
  - changed README to reflect this

v0.11, 18-AUG-1998:

  - qmamecat tested with Qt 1.40; compiles & runs flawlessly, the file-dialogs
    look great with this new Qt version !
  - the message 'Preview not available' now (allways) fits into the preview
    window; the correct window-size is determined using the QFontMetric class
  - tried to use the new QListView/QListViewItem classes for the gamelist but
    decided to stay with a 'normal' QListBox, because my way of dealing with
    the gamelist (as an array: indexed) does not make it easy to adopt the
    pointer-oriented QListView... the 'problem' with the QListBox is that you 
    have to use a fixed font, otherwise the gamelist looks very strange.
  - fixed a problem with gencat: when a game does not exist in a newer xmame-
    release or its rom-name has been changed (i already saw that between xmame
    0.33b6.1 and 0.33rc1.1), gencat now comments out the 'invalid' entry. This
    means that the entry will not be lost, but it will be ignored by 
    (q)mamecat. However, if you edit/save the gamelist from within (q)mamecat or
    generate a new catalog from this one (with comments) such entries will be
    lost in the newly created catalog !!! So you should allways save a backup 
    copy of your old catalog before using a new one to avoid problems...

v0.10, 1-JUL-1998:

  - the cursor-position in the gamelist is restored after an edit or a change 
    to the options now; the entry is centered in the gamelist (if possible);
    if the entry is not in the new list (due to the current combination of
    options/game-settings) the first entry is selected instead ! 
    Please note that the DEBUG-version - that is, MAMECAT_DEBUG is defined at
    compile-time - may loose some events due the high amount of printf's which
    slow qmamecat down; the result is that the preview images are not painted
    correctly (sometimes :)
  - added a search function for qmamecat: like in the curses-version (mamecat)
    you can now search for a game by pressing an alphanumeric key when the
    gamelist has input-focus. Qmamecat will automatically 'jump' to the next
    occurance of a game which name starts with a character corresponding to the
    key pressed. If no game is found, the cursor will remain at its current
    position...
  - 2 fonts can be specified in the options now (currently not via the options
    dialog - only via .mamecatrc !) - one for the gamelist and one for the rest
    of the application. See README (section 5) for more information...
    obviously these settings have no effect to the text-only version !

v0.09, 26-JUN-1998:

  - added support for game-specific options: new (optional) field for game
    options in catalog (see README for more information)
  - as this is an optional field, (q)mamecat also works with catalogs of the
    older format, or vice versa (that is, older MAMECAT versions should also
    work with newer catalogs, they will just ignore the new field - to be 
    honest: i didn't test this - but if you save the catalog from within an
    older MAMECAT the new information gets lost. You have been warned... :)

v0.08, 24-JUN-1998:

  - fixed a 'bug' in the PreviewWindow::paintEvent() routine that caused
    flickering images when modal dialogs (options dialog, edit dialog, 
    message boxes etc.) overlapped the preview window (the call to raise() is
    avoided in these cases now by setting the new global variable
    'raise_preview' to 0 temporarily !)
  - added more information about preview images to the README file

v0.07, 23-JUN-1998:

  - new & delete buttons/callback routines removed: game insertion/deletion 
    from within mamecat doesn't make sense, the user can restrict the catalog
    using different options instead ! For game insertion 'gencat' should be 
    used as it automatically adds only those games which are really supported
    by the installed xmame release.
  - due to this every time a new xmame release is installed, gencat should
    be called once to add all newly supported games (they are appended to the
    catalog with a rating of 1) !
  - MAX_GAMES set to 5000 (defined in src/common/gamelist.hxx); should be 
    enough for now...
  - created a README file in the doc directory (holds information about
    prerequesites running (q)mamecat and how to configure/install it)
  - making this version the first public release...

v0.06, 18-JUN-1998:

  - support for additional preview-image file-formats has been added 
    (now supporting every image format that Qt supports :-)
  - checking image format prior to loading a preview image now; but if the
    image file is corrupted, qmamecat will possibly crash with an X error 
    (already seen that on a corrupted gif image !)
  - new edit dialog (will also be used for insertion of new games later)
    Unfortunately i had to redesign the gamelist-handling totally :(,
    but managed to make these fundamental changes (nearly) transparent to
    both mamecat & qmamecat (and even gencat) ! Due to this (q)mamecat now
    needs more memory (about twice as much), but at least i didn't have to 
    change too much this way - so i hope this makes it worth :) !
  - you can now edit and save the game list (game insertion/deletion are still
    not supported) - this was nearly impossible to implement prior to the
    redesign of the gamelist-handling
  - a big advantage of the above mentioned redesign is that the gamelist is
    reloaded from memory now (before it was reloaded from file !), this speeds
    it up of course

v0.05, 17-JUN-1998:

  - new option 'previewdir': directory where preview images are stored 
    (currently only *.xpm supported)
  - new 'game preview' window (shown if option 'showpreview' is set, see below)
  - new option 'showpreview': if set (1), the preview window is displayed
  - additions to the options-dialog (due to the above)
  - seems i'm near to a first release; looks quite nice :-)
    (but there are still some missing functions !)

v0.04, 16-JUN-1998:

  - source-tree totally restructured (new src/common directory; Makefiles 
    redesigned) ! You can now explicitly make one or all targets (from mamecat
    root dir):
    make                 creates *all* targets
    make mamecat         creates the curses version only
    make qmamecat        creates the Qt version only
    make tools           creates all tools (currently only gencat)
    make clean           cleans up the source-tree
  - number of loaded games is now displayed (in mamecat & qmamecat) in the lower
    left area of the display
  - gencat now automatically merges new & existing entries (from the catalog 
    specified in $(HOME)/.mamecatrc !); the output file is './mamecat.cat.new'
  - qmamecat only:
      - new options dialog and the ability to save the configuration to 
        $(HOME)/.mamecatrc
      - if options change, the gamelist is reloaded automatically
  - had to change every #ifdef DEBUG to #ifdef MAMECAT_DEBUG, Qt seems to use 
    the same #define in one of its headers...

v0.03, 12-JUN-1998:

  - new src/tools directory: created 'gencat' - a very simple catalog generator
  - qmamecat displays 'not implemented yet' messages where applicable

v0.02, 10-JUN-1998:

  - minor bug fixes (mostly keyboard mapping)
  - first release with a Qt version (qmamecat)
  - new option <available_games_only>; availability of rom-images is checked and
    shown in the status-area now !

v0.01, 08-JUN-1998:

  - initial version
  - most of the planned functions already work (at least you can walk through
    the list, start games etc.)
