                    RazRez Music Player Version 4
                          'The ACC version'

                    Written by Wheee the fibble of
                              Top Notch

                              ~24/09/92

Liff
-----

        Don't you just hate having to search through chip music for
that tune to go with your new screen/game/program? Don't you hate it
when the music player you're using doesn't recognise a music driver
and won't let you play it, or doesn't recognise the file because it's
packed?
        Well, you're troubles are over! Just run my high quality music
player and your problems will fade to shadowy memories in seconds!

        Anyway...

About
------

        I wrote this program after becoming really annoyed at having
to search through piles of disks to find any given piece of music
seeing as the music players I had previously only dealt with one type
(usually mad max) and didn't depack. So, being the nice chap I am, I
took it upon myself to rectify the situation.

Features
---------
        The program will recognise and play the following music
drivers:

        Mad Max
        Count Zero
        Chrispy Noodle
        Lap (1990, 1991 and 'one scanline')
        Big Alec ('offbeat' and 'delta force' types)
        Synth-Dream
        'SMF'/'MUF' (miscellaneous '+4' types)
        LTK
        Megatizer
        Zound-Dragger
        Undead
        TAO (chip and digidrum)
        Ralph (chip and digidrum)
        Xenex
        TriMod (Tristar music converted with Eagles high quality utility)
        Nexus
        Ben Daglish (sort of)

        It will also depack files packed with the following packers:
        Ice v2.4
        Fire v2.0
        Atomik v3.5
        Automation v5.01

Usage
------
        Most of the program is pretty straight forward (load, exit
etc), but I'll give a brief rundown of the less obvious parts.
        The box a the very top of the dialogue which says 'RazRez
Music Player v4' can be clicked on.  After clicking on it an alert box
will come up with some credits and buttons.  'TSR On' and 'TSR off'
refer to what happens when you click on the 'EXIT' button on the main
dialogue.  If you click on 'TSR on' you will enable the Terminate and
stay resident feature.  This means that when you exit, the music, if
possible*, will keep playing.  Surprisingly, 'TSR off' will disable it
again (the default mode).
        The text lines containing the type and size of the music file
are only updated AFTER you click on 'PLAY'.

* Only some types will stay resident.  Any 'suspicious' drivers or
those with digidrums are always turned off.

Notes
------
        Sometimes the program seems to ignore a disk-swap.  You
sometimes change disk and select a file, but it fails to load it.  It
seems to be a GEMDOS error 'cos I can't see why my program would do
this.  If it happens, just select the file again and it'll work ok.
        When playing some types of digidrum music, the mousebuttons
can stop working.  The way to get around this is to click on whatever
button you want, then move the mouse quickly to one side or the other.
        If you have TSR enabled, then DO NOT CHANGE RESOLUTION!
Seeing as my program loses control of the music once you press 'EXIT'
the tune will continue playing when you change res and could find the
old memory block erased by a new accessory.
        The music number will go upto 24.  This is to allow you to
play the music from 'The Killing Game Show' by Count Zero.  Be warned
that you can reset your machine by trying to play Mad Max files with
music numbers greater than 15!  This isn't a problem with any other
drivers seeing as they are all checked for.
        Sometimes the double-click will be disabled after playing some
digidrum music (usually Synth Dream).  Until I figure out why you'll
just have to put up with it.

Technical
----------
        The program is now written in 100% assembly.  This was done
for several reasons.  Firstly, the previous STOS versions were all
about 50k, or 15 packed music files, in size.  Secondly, I wanted to
make it into an ACC and C, GFA and Pascal all had various drawbacks
and problems.  Thirdly, I thought GEM wouldn't be too much of a pain
to program using DEVPAC's macros, but I was sadly mistaken...
        The memory block you are given is 50k long.  This ought to be
sufficient for any music files currently going around.  I suppose when
some more musicians start using Falcons (perhaps that should be 'if')
the size of music files will go up, but until then it should cover
most music files.  50k may cuase half-meggers some problems I suppose,
but what do I care?  I may alter the program in the next update so
that it checks the filename and sets the size of the block
accordingly, ie 'RAZREZ90.ACC' would give a 90k block or
'RAZREZ30.ACC' would give a 30k block.  Or then again, I might just
leave it the way it is.
        The music is usually dumped on the VBL queue at $4D2.  A
couple of the drivers, Lap 'one scanline' stuff for instance, also
bugger up other locations, but if they do, they all get restored when
you stop the music.
        I'm not sure if desk ACC's ever get relocated after they are
installed.  I've ran various programs with the ACC in and they all
seem to work ok, but one can never really be sure.  The programs I've
tried it with are: DEVPAC, Turbo ASM, HighSpeed Pascal, Warp 9,
Universal Fileselector, Quick ST, First Word, ProText, Redactuer,
Degas Elite, Disk Doctor, Knife ST, Wercs and a host of others, so I
suspect it's pretty safe.  I've also tried it on various different TOS
and memory configurations with no problems whatsoever.  The relocation
would cause a problem because I only calculate the addresses needed
when the accessory is first installed and relocation would cause some
severe problems.
        The program always assumes you are in 50Hz.  I had toyed with
the idea of making it force the frequency, but I decided it wasn't
worth it.  The program will run in mono, but of course the music will
be rather fast.
        After the fileselector is closed, the program will hang around
for a while doing nothing.  This was the only way I could make it
redraw all of the GEM windows before drawing up the dialogue box
again.  It makes a call to evnt_timer for about 1 second and then
continues, which is long enough to update 4 windows in low-res.  I'm
still trying to figure out a better way of doing it, but until then
it'll need to do.

Please
-------
        Please please please can people stop using any old extension
for chip music!  Please try to stick to the following conventions:
        MUS : chip music
        MUD : digidrum music
        MUF or SMF : bizarre '+4' types (Whittakers etc).

        My program will recognise '.MUF' and '.SMF' extensions, but
hopefully '.SMF' will be replaced (are you reading this Genesis
Inc.?).
        You may wonder at my banging on about this, but it makes life
so nice and jolly when you can have "*.MU?" to list all of your music
files.  Imagine if people used random extensions for modules and
pictures - a NEO file could be a tracker module or you could be
loading PI1's into ProTracker.  Everyone manages to stick to .MOD,
.NEO, .PI1 etc so why not the same with music files?  Would the world
fall apart?  Would the Earth be struck by a giant meteor?  I don't
think so.
        I apologise to the English-speaking community out there who
may question the "MUF" extension - it's unfortunate I know, but what
the hell, I don't care (what a rebel...)

Legalities
-----------
        This program is public domain and may be freely copied and
spread providing this doc is kept with it (some chance...), but the
code remains copyright to me.
        Also, I am in no way responsible for any damage resulting in
the use or misuse of this program, so if you try and play that new bit
of digidrum music you found and it resets losing your valuable source
which your had almost got around to saving, then tough.

Me
---
        If you want to get in touch, maybe you have a driver to add,
then please get in touch.
        Write to:

        Billy Allan,
        66 Highmains Ave,
        Dumbarton,
        Scotland,
        G82 2PT.


