M1: multi-platform arcade music and sound emulator 
v0.7.7 "Kill Bugs", released September 2, 2005

By R. Belmont.  Mac version by Richard Bannister.

Main site: http://www.emuhype.com/
Forums   : http://www.bannister.org/cgi-bin/ultimatebb.cgi
Bridge M1 and updated list files: http://www.e2j.net/
---------------------------------------------------------

M1 lets you enjoy music from over 1100 arcade games, from the classics through 
the 3D era.  It even supports many games for which full emulation isn't
otherwise possible.  For most games, you can also listen to all the sound
effects, but 100% coverage is not guaranteed of all sounds in all games.

System requirements
-------------------

Minimum: 400 MHz CPU, 32 MB RAM, stereo CD-quality soundcard
Win32 (Win98, ME, 2000, or XP) or a modern Linux based system
(Fedora Core 3, SuSE 9, the Mandriva beta, up to date Gentoo, whatever).

NOTE: Some games may have requirements far in excess of the minimum.  
In particular, DCS games like Killer Instinct need 750 MHz or more
to play without breakups.  Namco games using the Viva Nonno driver
require at least 1 GHz and a CPU with plenty of cache.  Celeron 
and Duron processors may experience breakup or slowdown playing 
these games.

The Windows version of M1 is developed on and for Windows XP, and
you'll have best results with Windows 2000 or XP.

How to use (commandline)
------------------------

Edit m1.ini to point to your ROMs.  It's format is like this:
; lines starting with a semicolon are comments and are ignored
[ROMPATH]   <- this starts the rompath section.Each line after that is a path
roms	    <- this is the default path, the roms/ folder where the exe is
c:\roms\mame\ <- add additional paths here
f:\server01\archive\roms\ <- add as many as you need

[WAVPATH]   <- this starts the wave path section, where output .WAV files go
waves	    <- only one path will be paid attention to here, unlike the
               rom path!


Run the app from the command line (yes DOS!) like this:
m1 [switches] [romname]
The switches can be any of these:
-a disables "album mode" and the use of .lst files.  Handy if a .lst file
   exists for a song but you want to "explore" for more sounds/tracks.
   (Note: tracks with names will still show those names, but you will
   no longer be restricted to selecting only named tracks).
-b lists all games, sorted by hardware type
-d lists the required ROMs for all games in a format compatible with 
   MAME's -listinfo.  ROM managers such as ClrMamePro can use this to
   automatically support M1.
-i shows the required ROMs for a given game name.  ROM managers can use
   this in conjunction with the -l switch to automatically build a ".DAT"
   for M1.
-l lists all games, sorted in alphabetical order
-mN: sets the headphone mix, in which the game's left channel is mixed
   into the right and vice versa.  This is so-named because it's useful
   for headphones to avoid the stark stereo imaging you otherwise can get.
   N ranges from 0 (full stereo) to 100 (full mono).
-n turns off normalization (see below for a detailed explanation of this)
-o shows the current volume that normalization has calculated, for use
   with the -v switch.
-rN: sets the output sample rate of M1.  N can range from 8000 to 48000.
   Higher values sound better but require a faster CPU.  Some soundcards
   (notably SBLive! and Audigy models) slightly distort the sound if it's
   not at 48000, so on those cards -r48000 is recommended.  Default: 44100.
-t disables forcing maximum track lengths from the .lst files.
-vN: disabled normalization (like -n) but also lets you set a fixed 
   volume level.  N ranges from 0 to 2100, where 0 is silent, 100 is
   no amplification, 200 = 2x amplify, 300 = 3x amplify, etc.
-w records the output to a .WAV file.  The filename is constructed from
   a combination of the game's name and the song number, so you can get
   .WAVs for each song in your favorite game simply by navigating them.

While the commandline M1 is running, you can press the following keys:
Q or ESC quits
+ and - change songs
/ and * change games

If a ROM loading error occurs, M1 commandline will simply exit.


NOTE: Song numbers vary by game and can have a large range on some games.
Not all numbers correspond to useful playable songs - some may just play
garbage.  Most games in fact have very few mapped working numbers
(less than 100 in many cases).

Changes since 0.7.6
-------------------
* Fixed major bug where songs with fixed volumes in the list file 
  would break normalization until the app was restarted
* Fixed years on Ridge Racer series, Matrimelee, and Final Romance 4
* Fixed manufacturer on Ace Attacker
* Fixed clipping on blswhstl
* Fixed ROM loading in shdancer (crashed in Linux, bad playback on Windows)
* Fixed parent/clone relationships for missb2, cottonj, gt3dv18, and tp2m32
* Added Final Lap R, Ghost Lop, Jockey Grand Prix, V-Liner, Dimahoo, and Progear
* Fixed command format for vs2v991 (now can select all songs)
* Fixed startup delay for the Parodius, GX400, and Double Dribble drivers so 
  the first song plays properly
* Reduced PSG volume in Space Harrier and Hang-On
* Updated IREM CPU decryption for the M92 driver to latest from MAME, should fix
  some small issues with those games.
* Reduced startup time of IREM M72/81/83/97/99 driver substantially
* Rebalanced IREM M72/81/83/97/99 driver to reduce DAC pop when changing songs
* Fixed -r sample rate switch in command line M1 to work properly
* Fixed SCSP drivers to work at sample rates other than 44100
* (Linux) Changed ALSA driver to hopefully be more compatible

Changes since 0.7.5
-------------------
* Reversed accidental breakage of the "change normalization
  per song" setting (RB).
* Added capability for ROMs with CRC 0 which will not attempt
  to load by CRC and will only match names.  This is necessary
  because the SPI .nv files contain the current date and time.
* Added Raiden Fighters 2 and Viper Phase 1 (Ville Linde).
* Fixed some ROM parenting issues with dynwar/wof (smf).
* Fixed Contra to be in stereo (Stefan Lindberg).
* Fixed years for raiden2, megaman, spf2t, cotton, and cottonj (Fujix).
* Changed display name of "GP500" to "500GP" (Sixtoe).
* Rebalanced Space Harrier for the 1 billionth time (Fujix, RB).
  SegaPCM is now MUCH louder than FM and PSG.

Changes since 0.7.4
-------------------
* zlib updated to latest so bad zip files won't cause crashes.
  NOTE: m1 is not claimed or intended to be secure and should not be run 
  as "root" on a Linux system or "Administrator" on 2000/XP.
* Latest MAME sound cores, latest MAME ROM sets, too many changes to list out.
* Changed stop detection from 2 to 3 seconds to compensate for songs that don't
  start immediately.
* New drivers, including Jaleco Mega System 32, Raizing/Eighting PS Arcade '95,
  and V-System Mahjong (Final Romance series).
* Overclocked Taito F3 CPU.  This seems to make the cutout problem much less 
  severe, but sometimes individual notes are missed now.  Taito sucks.
* Fixed long-standing Crusin' USA/World troubles.

Known problems (do not waste time on the boards asking about there)
--------------
* Taito F3/Super Z/JC System games sometimes cut out after a few minutes
  of playback.
* Star Wars Arcade has corruption at the start of some songs.  This is known.
* Namco C352 games do not sound perfect, especially Mr. Driller and a few others.
  This is known.
* The YMF271 OPX chip is not yet perfectly emulated and not all songs in all
  games will sound exactly right.  This is known.

Most wanted ROMs!  If you have these PCBs, please get them dumped!
------------
* Taito's "Double Axle" (US version of "Power Wheels") is misdumped.  The 
  sample ROM C78-12.33 should be 8 megabit rather than 4.  This is why 
  the Japanese set is the one in M1 rather than the usual MAME parent.

Thanks
------
* Special thanks to CAB of AMUSE, for leading the way and making me 
  realize a multi-arcade sound emulator was possible in the first place.
* ZEK.  Because.
* All e2j.net board users for great feedback and making the project
  worthwhile.
* All CPU and sound cores not specifically credited are from MAME/MESS.
  Thanks to the many contributors who made them possible.
* Viva Nonno HLE sound engine courtesy of Cap.  Thanks!!!
* Musashi 680x0 CPU emulation by Karl Stenerud.
* FM OPL/OPN/OPM emulation by Tatsuyuki Satoh and Jarek Burczynski.
* OPL4 (YMF278-B) PCM emulation by R. Belmont and O. Galibert.
* YMF271 emulation by Ville Linde and R. Belmont.
* MultiPCM emulation by R. Belmont based on info from CAB of AMUSE, TitoJ of
  SMOG, and DMP Soft (Hoot).
* SCSP (Saturn Custom Sound Processor) emulation by ElSemi and R. Belmont.
* www.System16.com by Toby Broyad.
* Lev, Atila and everyone at ZTNet/Emulation World for the webspace.
* .LST file format by Fujix.
* Richard Bannister at bannister.org for the message boards.
* ivilded for the great site design and coding.
* 0.7.5 testing by Toby Broyad and Richard Bannister.
* Additional thanks to Smitdogg, Randy Hoffman, The Guru, Brian Troha, 
  UNKNOWNFILE, and the Belgian Dump Team.


Legal
-----
1) You may freely distribute this emulator as long as it is not on the same
   medium as the necessary ROM files.
2) You must never charge money for this emulator.
3) You must not obtain or use ROMs for machines you do not own.  If you
   decide to anyway, it is entirely at your own risk.
4) You must not distribute altered versions of this emulator or it's
   documentation.
5) This emulator is distributed with NO WARRANTY as to it's functionality
   or fitness for any purpose.  Although the software is believed to be
   free of major problems, the authors cannot be held liable for any damage
   or problems related to the use of this emulator.
6) We will not give you ROMs, and you may not ask for them on our message
   boards.  Violators will be banned.

