*****************************************************************************
* MAMELOAD - Loader for (M)ultiple (A)rcade (M)achine (E)mulator - FREEWARE *
*****************************************************************************

ML (MAMELOAD) TNG Beta 41 - June 29th, 2009
(c) 2006-2009 Scott Stone (tafoid@yahoo.com)

Latest version is always available at:  http://mameload.mameworld.info

M.A.M.E. tm is Copyright  1997-2009, Nicola Salmoria and the MAME team.
All rights reserved.  The latest code/binaries and updates as well as 
information regarding how to use MAME and usage of the MAME name are located
at:  http://mamedev.org

MAME's project coordinator is Aaron Giles:  http://www.aarongiles.com

PLEASE do not bug any of the 'MAMEDEV' for the latest releases of MAME or ask
if or when a game will be playable or added!!!

If you have valid bugs to report, please visit and examine MAMETesters:
http://www.mametesters.org/mantis/main_page.php



Introduction
------------
The original MAMELOAD project started out as a PERSONAL APPLICATION many years
ago which I made to make playing with MAME much easier.  Initially released to
the world on February 20th, 1997.  Over the next 3+ years, I often updated and
refined MAMELOAD with improved features and compatability.  Many, many others
found it a useful utility for them.  Over time though, development stopped due
largely to QUICKBASIC's limitations and the changes that brought MAME to WIN32
as the baseline build.

Recently, time felt right to resurrect MAMELOAD.  Thus, ML TNG was born.

ML doesn't at this time have all the features that MAMELOAD had, but it
attempts to be functional and fast with low memory usage.  This program was
always designed to simply be thrown in the MAME folder and executed.  Since ML
supports most command-line triggers - a MAME.ini is not required.  It assumes
you have a basic knowledge of MAME including a decent working knowledge of how
to adjust your settings via MAME's command-line and .INI file.


Main Features
-------------
-  Quickly determines an 'available' list (only checks to see if a ZIP or
   folder exists).
-  Compatability to all MAME Windows versions since it's inception.
   (MAME 0.37b15 onward)
-  Have the option of using other command line compatable MAME derivitives and
   other MAME-based emulators!  Tested builds include:  MAMEUI, MAMEUI32FX,
   MisfitMAME, AgeMAME, PinMAME, HAZEMD, MESS, MJOLNIR, M1, Final Burn Alpha
   and more!
-  Full Screen and Windowed modes.
-  Rotating Screen support.  The screen can be orientated as normal or rotated
   90, 180 or 270 degrees.  This functionaity is available to Full Screen and
   all windowed modes which status can be changed on the fly through
   in-program input.
-  Able to view .PNG extra files as well as use .PNG as a background for your
   display.
-  Support for up to 50 different ROMPATH directories in MAME.INI folder.
-  Internal Support for viewing maintained DAT files including: MAMEINFO,
   HISTORY, MARP, STORY and COMMAND.DAT files.  These are all viewable at
   once.
-  Ability to delete CFG/INI/NVRAM file in-program for quick testing.
-  Save any viewed game list or DAT file check to a file for later viewing.
-  Sort any game list by GAMENAME/SETNAME/PARENT+CLONE/SOURCE.
-  Type to search for a GAMENAME/SETNAME/SOURCE.
-  Variable Default Font Sizes (8x8, 16x16).
-  External .BDF font loading and support. (up to size 20x20)
-  File Selection for MESS for any media types the system requires.
-  Extended Joystick and/or Mouse list navigation.
-  Nearly full Command-line support.
-  Simple/Flexable interface, small in size and modest in memory usage.
-  Streaming music and selection sounds while traversing menus and using ML TNG.


Minimum SYSTEM Requirements
---------------------------
In order to used ML to the fullest extent, you need:

-  Any PC that has the ability to run the MAME emulator for Windows.
-  The Emulator itself.  You can use the normal MAME.exe build or any of
   the variants (provided they all allow for command line interaction).
-  ROM images for games that you happen to own.  In order to get a full list
   of supported games available in ML, THEY MUST BE IN "SPLIT" FORMAT (this
   means a folder/zip for each game containing only the unique files not
   shared with it's parent).  Any other set type is not fully supported by ML.
-  Desire to use!!


Files included/required in this archive
---------------------------------------
ML.EXE		- This can be anywhere on your drive provided is it in the
                  same directory as your MAME.EXE (or other supported emulator)
MLREADME.TXT  	- You are reading this!
MLLATEST.TXT    - Lastest Changes and Developments.
RESOURCE.ML     - This is a collection of DATA which is required by ML TNG to
                  function properly.  It is suggested that you do not edit
                  this file as even one mistake could render ML TNG unusable.


Files created by ML
-------------------
FAVORITE.ML     - This file keeps all important information related to ML TNG's
                  function as well as a list of game which you've marked as 
                  "FAVORITE" (F12).  It's auto-created when you exit adjust your
                  Favorite Games, or exit ML.

Option				Description
------				-----------
ambience_audio			Filename for Ambient Music
ambience_audio_volume		[0-255] for Ambient Music
background_image		A .PNG file you want for a background
background_image_intensity	[0-255] for background intensity
bdf_font			A .BDF file you wish to use
border_color			Hex Value for your desired border color (RRGGBB)
command_line_addition		Option that ML cannot handle can be placed here
executable_name			Filename for Executable File to use
font_big			[0/1] - Size of Internal Font - 1 = ON
font_color			Hex Value for your desired font color (RRGGBB)
font_use			[0/1] - Use BDF font - 1 = ON
full_screen			[0/1] - Full Screen Screen  - 1 = ON
gamename_chop			[0/1] - Chop excess Version/Region/Manufacturer
                                Information from your viewable gamelists - 1 = ON
joystick_select			[0/1] - Joystick Usage - 1 = ON
last_selected_list		*** This should not be modified ***
last_selected_pngmode		*** This should not be modified ***
last_selected_set		Setname last selected when you last exited ML
mouse_select			[0/1] - Mouse Usage - 1 = ON
orientation_mode		[0/3] - Orentation of Screen - 0 = Upright
                                1 = Right 90, 2 = Upside Down, 3 = Left 90
resolution			[640/800/1024/1280] - Width of the screen or window
screen_location			Window location as [xxxxyyyy] is saved here
while_selecting_audio		Filename for Selection Audio
while_selecting_audio_volume	Value [0-255] for Selection Audio

Favorite Sets are saved in the following format:
Game Name=Set Name|Set Source
EG:  Mappy (US)=mappy|mappy.c

Manual editing can be done to this file, but if you have trouble, it's suggested you
restart/delete the file and let ML create a new default template for you.

External Required Files
-----------------------
ZLIB1.DLL       - Used for .PNG/Screen Shot support.  Might be a good idea to
                  place this in your path (typically windows/system32 folder)
                  as it is a commonly used library.  You might already have it
                  on your system.  You can download off my site, or go here:
                  http://www.gzip.org/zlib
FMOD.DLL	- Allows usage of audio files in numerous formats.  Like ZLIB,
                  you can place it anywhere in your PATH or in the same folder
                  as ML.EXE

Optional Additions
------------------
-  HISTORY.DAT - Maintained by Alexis Bousiges
      http://www.arcade-history.com
-  MAMEINFO.DAT - Maintained by M.A.S.H.
      http://mameinfo.mameworld.info
-  STORY.DAT - Maintained by MAMESCORE
      http://www.arcadehits.net/mamescore/home.php?show=files
-  MARP.DAT - Maintained by Chris Moore
      http://replay.marpirc.net/marp.dat
-  COMMAND.DAT - Maintained by Procyon Lotor
      http://home.comcast.net/~plotor/command.html
-  SYSINFO.DAT - Maintained by MESS Team
      Currently only available in MESS releases.
-  FOLDER INI files - Maintained by s_bastian
      http://www.progettoemma.net/?catlist
-  NPlayers32 Files - Maintained by Nomax
      http://arcadebelgium.be/nplayers
-  PCB and Artwork Preview packs are available at:
      http://www.progettoemma.net/dany69

The ML TNG site has a number of .BDF fonts, .PNG backgrounds, .WAV Audio and
links to other sites which have much you can add.

Font Files (.BDF)
-----------------
You can now use .BDF fonts in ML TNG!  You can load them while you are in ML
by typing (CTRL-B).  You will be given a list of .BDF fonts located in your
current folder.  Select one, then press ENTER will load and display that font
for you.  This font information, once loaded, is saved in your favorites so
you need not have to load this again, ML will take care of this for you!

There are limitations however to what size font is allowed.  Currently, the
top limit is 20 (width or height cannot exceed 20 pixels).  Anything larger
will not be loaded or used by ML.  When converting from other sources, be
sure to set your target to 20 or under if you want smaller fonts.

Background Images (.PNG)
------------------------
You can now have an Image displayed in the background of ML TNG.  If smaller
or larger than the screen, the image will scaled to fill up the screen.  This
might distort the image is the standard image you use does not have a standard
resolution.

Selection Sound (.WAV)
----------------------
Simply having a file indentified in your favorite.ML will allow you to have a
sound issue as you enter keystrokes or scroll through a list.  Nearly any .WAV
or .MP3 will work, but the shorter the duration of the output is probably
better for your selection enjoyment.

Background Audio (.MP3)
-----------------------
Recently added (in u38), this is in response to a user request to allow you to
play audio in the background while traversing the menus and using ML TNG.
This was added to facilitate the usage of the "AMBIENCE.MP3"'s which have been
made to give you a faux feeling of being in an arcade!

In order to use in this in ML - you need "FMOD.DLL".  File Information can be
edited into favorite.ML.  You can use .MP3, .WAV and some .MID file as well!


General Notes
-------------
-  Numerous files are created while ML is running (temporary) so you can
   currently only run this program from a readable/writable storage device.
   These are automatically deleted by ML when no longer needed.

-  A FAVORITE.ML file will be saved if you choose to add or delete any
   favorite sets or exit ML.  It will also contain selection information so
   when you restart, you can resume using your desired settings.

-  Command-line triggers will NOT superceed anything in your game's .CFG file.
   If a certain command is not working for you when you emulate a game, be
   sure to check what's in your games' .CFG or .INI file.

-  Rom Detection is at a MINIMUM with ML.  It only checks if a certain
   folder/zip is THERE, not what's in it.  I'd highly suggest you use CLRMAME
   PRO, available at http://www.clrmame.com for all your ROMSET auditing.

-  After a very short process where ML divines your HAVE list and compares
   this to a full game list.  When running the first time, a screen size will
   be selected which matches yours as closely as possible based on your
   current horzontal screen size.  Valid resolutions include: 640x480, 800x600
   1024x768 and 1280x1024.  Using odd resolutions or resolutions which are
   larger than the current screen size will cut portions of the screen off.
   You have been warned!

-  Internally, there is a limit of 9999 different games that ML can handle.
   This should support everyone's current needs for MAME for the foreseeable
   future.



How To Use
----------
Usage:
Double-Click ML.EXE or type "ml" in command-line.
Now it's time to select a game and use the interface!


ML TNG's Interface Commands
---------------------------
PLEASE NOTE: Not all commands are available or will work as intended for all
supported emulators.  Some supported emulators do not share MAME's stardard
file structure or behavior - so these buttons should not respond if the case
warrants.

--

Use Arrow Keys and PAGE UP/DOWN and HOME/END to scroll through the gamelist
and other menus.  You can also traverse the list by typing your desired
gamename.

<ENTER>
Execute a game/Toggle an option/Confirm a selection.

<SHIFT+ENTER>
Bring up File Selection (MESS ONLY).  Enter from here will navigate and/or
select an image.  Right/Left arrows will select your media type.  Hitting this
again will issue the command to start with all the images you've selected.

<ESC>
Used to exit from MAMELOAD TNG as well as leave selection menus.

<TAB>
Toggles List View Between AVAILABLE, COMPLETE, MISSING, FAVORITES and FOLDER
.INI.

<F1>
Change Sort Parameter (by GAMENAME/SETNAME/PARENT+CLONE/SOURCE) on a game
list.  If viewing a FOLDER .INI file, this button toggle between available
files.

<F2>
Toggle Search Parameter (GAMENAME/SETNAME/SOURCE).  This is not valid while
viewing FOLDER .INI files.

<F3>
Show all external data for a game.  It will display Parent/Clone/Source Info
and the following external .DAT file information (MAMEINFO/HISTORY/MARP/STORY
/COMMAND) all in one viewable list.

Only While viewing External DATA (F3), you can launch a web browser using the
following:
    F5 - MAWS Information Page.
    F6 - History.DAT Edit Page or MESS Sysinfo Page (depending on emulator).
    F7 - MANTIS bug report lookup (by gamename)
    SHift+F7 -  MANTIS bug report lookup (by source)
    F8 - MAME Action Replay High Score Page.

<F4>
Save Selected List or DATA to a text file.

<F5>
Delete selected ROMSET's .CFG file.

<F6>
Delete selected ROMSET's .NV file.

<F7>
Delete selected ROMSET's .INI file.

<Shift+F7>
Delete selected ROMSET's SOURCE .INI file.

<F8>
Create backup of current .INI  (Save name is:  [EMULATOR] + [VERSION] + .ini)
and then create a new .INI in current folder.

<F9>
Select BORDER color.

<F10>
Select FONT color.

<F11>
Randomize (Jumps to a randomly selected ROMSET from the list).

<F12>
Toggle ROMSET On/Off as a Favorite.  They are saved to your MAME folder as
changes are made.

<Insert>
Toggle PNG Support between OFF, SNAP, ARTVIEW, TITLES, CPANEL, MARQUEES,
CABINETS, FLYERS, PCB.

<CTRL-A>
Apply a FOLDERS\.INI to a currently viewed list and create a file based on the
output.  You can view it as you would normally view INI files.

<CTRL-B>
Load a .BDF font from current folder.

<CTRL-C>
Available Command List for that emulator version.

<CTRL-D>
Save current settings to an .INI based on your current gamedir (setname).

<CTRL-F>
Toggle Font size between 8x8 and 16x16 and externally loaded .BDF font.

<CTRL-H>
Chop off the Verion/Region/Manufacturer Information from your viewable
gamelists.

<CTRL-J>
Toggle Joystick Navigation.

<CTRL-L>
View MAMELOAD Help Screen.

<CTRL-O>
Toggle Mouse Navigation.

<CTRL-R>
Rotate Screen Orientation 90 Degrees Right.

<CTRL-S>
Save an .INI with your current settings for your current setname's SOURCE.

<CTRL-V>
View an .INI file instead of hitting each one at a time.  The selected INI
will be loaded and viewed immediately.

<CTRL-Z>
Rotate Resolutions Width between 640, 800, 1024, 1280.

<SCROLL LOCK>
Toggle FULL SCREEN and WINDOW display.


Other Interface options
-----------------------
PLEASE NOTE:  Joystick and Mouse Navagation are NOT perfected as yet.  It
works sufficently well but might sensitive at times.  If you've selected to
activate Mouse or Joystick, the following applies:

Joystick
--------
If you have enabled Joystick Selection (CTRL-J), you will have the option to
enter nearly all of ML TNG's commands with joystick/button control.

These can be listed in-program by using (CTRL-L or Joystick DOWN + Button 3).
At this time, the input is hardcoded but I will in the future allow for
multiple joystick/button input (instead of just joystick #1) as well as 
re-assignment of inputs to better suit your cabinet layout.

Mouse
-----
Left Button will scroll list one item at a time.  Right button will scroll
one PAGE at a time.  The direction of the list movement will depend on mouse
location (if pointer is on the top half = scroll up, bottom half = scroll
down.  Pressing the mouse button 3 (the scroll wheel button on most mice) to
execute the selected game.



Command Lines (trigger lists)
-----------------------------
When using a typical MAME-Based emulator, you will allowed to use several of
available options based on the version you are using.  You can get information
of what each of these triggers do from the file "WINDOWS.TXT" and "CONFIG.TXT"
in your DOCS folder.

You can open this list up by typing (CTRL-C).

You use the keys you normally use to select a game to find a command you wish
to toggle ON/OFF.  If there is no value needed, ENTER will simply "MARK" the
option with an "x".  Otherwise, you will be prompted to select with the
up/down arrow keys a value to add to this command to allow it to function.
Hitting ENTER confirms your selection - ESc exits.

When you exit ML normally, all adjusted command lists will be saved as:
"Command[version number].ml".  For example, MAME 0.117's will be called
"Command117.ml" in your folder.  These are reloaded the next time you use ML.
If you are using a new version, ML will look to the previous version number
and pull your settings from that, if needed.

When using a command which uses or creates LOGGED data (-record, -playback,
-mngwrite, -wavwrite, -aviwrite) - be sure to save any previous recordings to
a different folder/filename.  ML will use the setname of the selected game
as the filename of the log (EG. pacman.inp) and will not care if the file is
present or not when issuing the commands.  Also, these commands are not
saved in your settings.  They must be triggered only when you want to use
them.

If you trigger any text output command, the game will not run but instead run
that trigger for you and output the file.  "LISTXML.TXT", for instance, will
be saved for you when you use the -LISTXML trigger.  If you have multiple
file output triggers enabled, ML will only use the first one it sees enabled
from the list (alphabetical).


What types of commands can ML not handle yet?
---------------------------------------------
- Some commands which need valid and complete path(s)/filename(s) to be used.
  (Examples: -rompath, -samplepath, -romident)

For anything ML does not handle right now, you can manually edit your INI file
to include any special paths you need.



Emulator Specific Notes
-----------------------

Final Burn Alpha
----------------
-  The emulator must be named "fba.exe" in order to be detected.

-  This emulator lacks the ability to obtain Parent/Clone information and even
   version information from command line.  ML only supports version 0.2.96.81
   or later (requiring -listinfowithmd, -listextrainfo commands).

-  The initial run of a new version of FBA will likely do an automatic rom
   scan, even if you do not run the built-in GUI.  

-  There is a pop-up that appears when using FBA.  This can be changed if
   desired by editing the szPlaceHolder varible in the CONFIG\FBA.INI file.

-  There is no feedback letting you know that a ROMSET is incomplete or bad.

HazeMD
------
-  Based on MAME 0.108 - commands are set to that version.
  
M1
--
-  Requires a valid installation of M1 in order to be detected/used (including
   files: "m1.exe", "m1.dll" and "m1.xml")

MAME
----
   All versions of MAME that allow command-line interaction will work the same.

MESS
----
-  You must use ALT+ENTER to select a system or computer if you wish to start
   the emulation with any image.

MetalMame
---------
-  The core verison used for this is based on MAME 0.82.  Commands are set to
   this version.

Mjolnir
-------
-  Based on MAME 0.100 - commands are set to this version although not all
   commands or interface options from MAME will work as it's been scaled back.

PinMAME
-------
-  Last Based on MAME 0.76 - commands are set to that version.  This covers
   over 4 years of PINMAME releases.

-  There is no interaction with Visual Pinball.  You can only load play the
   tables' scoreboard using PinMAME's interface.



Possible Future Plans (in no particular order)
----------------------------------------------
-  Source viewing option for MAME/related emulators
-  Integration of native M1.DLL commands rather than parsing to/from m1.exe
-  Visual Pinball/PINMAME Table selection and launching
-  Complete MAME Command Support in program (such as rompaths, etc)
-  Times played/time spent per set
-  Multiple Language Support
-  Dynamic reloading of a different Emulator while ML is running
-  Other things I haven't thought about yet..



Having problems? 
----------------
Have you tried..

-  Making sure your emulator and ML TNG are in the same directory?

-  Using a freshly created .INI file?  Some MAME initalization files can cause
   errors with previous or future versions.
        
-  Double checking to see if the proper ROM files are in their respective
   directories and still compressed?

-  Seeing if a romset has not changed from one version to the next?  This
   is a common occurance nowdays and even if you are missing one file -
   this will cause a found game not to run.  Please use a ROM Manager (such as
   CLRMAME mentioned above to ensure your ROMS are usable for your current
   version.
   
-  Determining that the .ZIPped ROM's you have are not .ZIPped inside another
   directory inside of the archive or is otherwise incomplete or corrupted?

-  Deleting your current FAVORITE.ML?  In the odd case that this file has been
   corrupted, ML TNG can malfunction and not work as expected.

-  Checking MAME's WHATSNEW.TXT and DOCS\WINDOWS.TXT + DOCS\CONFIG.TXT files
   and have READ THEM through completely, especially if certain game does not
   work?



What Else?
----------
This program has been written in FreeBasic - compiled using Version 0.21.0 and
exclusively by me on an ATHLON XP1800 in Windows 2000.  I have not tested this
program on anything other than Windows 2000, so compatability is not at all
guaranteed.  I would imagine though ML TNG should work fine on any WINDOWS
system Windows 2000 or later.

I do hope you find this program as useful for yourself as I've found it to be
for myself!  This is a spare time project for me and I am not interested at
this time in releasing any source code. (This will change soon)

If you have encountered any major errors or incompatibility problems (there is
always something popping up) with this program, I'll try to help.  I encourage
any questions, comments or ideas regarding future additions to ML TNG.

BUT PLEASE, DO NOT ASK ME WHERE TO FIND ROM IMAGES!  IF YOU WERE SMART ENOUGH
TO FIND THE EMULATOR AND THE FRONTEND, THE FILES AREN'T TOO FAR AWAY!



Credits and Thanks
------------------
Source Code:

- PLoad - PNG image loader for use in FreeBASIC programs.
Copyright (C) 2006 Matt Netsch (thrawn411@hotmail.net), 
           Matthew Fearnley (counting.pine@virgin.net)
PLoad Source:  http://mysite.verizon.net/vzepe2fj/ploadlib.zip

ImageScale routine by D.J.Peters.
ImageScale Source: http://alice-dsl.net/d.j.peters/libs/fbimagescale.zip

- Other invaluable help and core routines by:
Zippy, MichaelW, notthecheatr, Lashie D.

Other Libraries:

- FMOD.DLL 3.75.00
FMOD Sound System, copyright  Firelight Technologies Pty, Ltd., 1994-2007.
http://fmod.org

- ZLIB1.DLL 1.2.3
ZLIB (C) 1995-2005 Jean-loup Gailly and Mark Adler 
http://zlib.net


Thanks:

The Entire MAMEDEV team (past, present and future) for creating, maintaining
and expanding the emulator we all love.  Keep up the preservation spirit!

Also to all those who document and/or sacrifice time in an attempt to
further the progress of MAME and all other emulators - THANKS!

All that I ask is if you use ML TNG and enjoy it - please send me a kind
word of thanks.

                                                        E-mail me at:
                                                        tafoid@yahoo.com



CONDITIONS OF USE/DISCLAIMER:
-----------------------------
This product is FREEWARE.  You may use it for your own game playing needs
and that is it!!  I will accept NO RESPONSIBILITY (directly or indirectly)
to any damage (temporary or permanent) that this program or any associated
programs may do.  Also, I ask that you keep this archive together and do not
add or delete anything to/from the original archived ZIP file.  You may also
NOT modify, add or delete (HACK) into ML, as it is protected by copyright.
ML is not to be placed in a COMPILATION, PACKAGE, CD, DVD or any other
collection without my previously obtained permission.  Not responsible for any
typographical or spelling errors.
