
Quick'n brief instructions for NewPlayer v12.G3 (and relatives)
---------------------------------------------------------------

Typed by JCH, 27/7-1990.


These are the short instructions for the compromise player made for the
editor, a player taking as little rastertime as possible, hence the greatly
reduced functions and quality in the player. Please note that you must have
read the instructions for player v14.G0 in order to get most out of these
instructions, as I will refer to them when discussing details that works
exactly alike in both these players.


The 8-byte tabel
----------------

The instrument tabel (accessed with the 'Z'-key) are quite different to the
one in player v14.G0. It could for example look like this...

         04  48  48  40  04  08  08  08
         ------------------------------
         A   B   C   D   E   F   G   H

Byte A & B are still the ADSR.

Byte C, D & E are the pulsating - yep, in this player it sits in the 8-byte
instrument! The vibrato has been moved to the tabel that normally belongs to
the pulsating in player v14.G0, but more about that later. The three bytes
you can control here works much like in the pulsating tabel in v14.G0. Take a
look at this example...

         48  40  04

Startpuls is 04 (it actually works just like byte 4 in the v14.G0's
puls-tabel, so a A2 would mean pulsate $02A0), speed 40 and boundaries 4 and
8. If you have read and understood the instructions to v14.G0 then you
shouldn't need to know more about these three bytes.

Byte F is the pointer to the filter-tabel. Because of the lack of a 'switch
off' function in the 8-byte tabel you MUST point to a set in the filter-tabel
that turns off the filtering if you don't want that on. Normally you should
point to $04 in the filter-tabel, which then reads '00 00 00 00' - turning
off the filtering. Never use position $00, it has been reserved much like it
was in player v14.G0, for use in the packer.

Byte G is then the pointer to the vibrato-tabel (accessed with the colon-key)
and here you should ALWAYS reserve position $00 in the tabel for these four
bytes: '80 00 00 00' - it turns OFF the vibrato function. Then, if you have a
chord instrument for example, you MUST point to this set as vibrato has first
priority over the arpeggio! Meaning that the arpeggio routine will be
disabled whenever the vibrato is running - this is important to remember!

Byte H is the pointer to the arpeggio-tabel. The arpeggio-tabel will not be
discussed in these instructions as it works much like in player v14.G0. The
only difference is that it uses indirect pointer wrapping, where player v14
used direct pointer wrapping. In other words, the number beside the $7F
endmark always think of the beginning of the arpeggio as position $00. F.ex
if the arpeggio starts at $3C and you want to loop to $3E, write 7F-02!


The Vibrato-tabel
-----------------

This tabel cannot be step-programmed of course. Every pointing from the
8-byte tabel only points to 4 bytes, which then works like this...

         06  03  20  00
         --------------
         A   B   C   D

Byte A is the delay function, choosing how long it takes before the vibrato
is activated. Values $00-$FF.

Byte B is the vibrato speed, values $00-$FF, normally $02 or $03 for example.

Byte C is the vibrato width, values $00-$FF can be use here too.

Byte D is unused.

Please notice that a value in byte A of $80 turns off the vibrato which is
nessecary if you want to use arpeggio like in drums or chords - otherwise the
arpeggio effect disappears when the vibrato starts up!


The filter-sweep tabel
----------------------

Here you will find some of the compromises that was made in this player: The
filtersweep will only work in voice 1! If you put a filtered instrument into
voice 2 or 3 in the editor, you will not be able to hear the filter as it's
turned off in these voices - always bear this in mind when composing.

         49  18  01  90
         --------------
         A   B   C   D

The filter-sweep in player v12 is not step-programmable, so, when you point
to a set in the 8-byte tabel, you will only access these four bytes. The
bytes are not as raw as you might think though - take at look at this!

Byte A is the boundary nibbles (half-bytes). The 49 means, swing the
filtering between 40 and 90 - however it depends on how byte C looks like...

Byte B is simply the filter-sweep speed. Values $00-$FF.

Byte C is the control byte, deciding how the filter-sweep works. It can be 1
out of three conditions:

         00 - Turn the filtering off completely.

         01 - Start at the filter-freq defined in byte D and swing down until
              the first nibble in byte A is met, and then STAY THERE! In the
              example it means: Start at 90 and walk down to 40 where it stays.
              This is very useful when making 'DJAOUUUU' basses...

         FF - Start at the filter-freq defined in byte D and swing between the
              boundaries defined in byte A, as normally in player v14...

Byte D is - well you guessed it! The filter start frequency, value $00-$FF.

Well, you might have noticed that you can't define the resonance in the
filter. This nibble is always set to $F in the player, it cannot be changed.



The slide-tabel (accessed with the 'X' key) will not be discussed here as it
works EXACTLY like in player v14.G0! All in all the player works much like
player v14.G0 from here on, just remember that byte 4 in the filter-tabel
must ALWAYS be $00 otherwise your music sounds horrible! The first three
bytes (sometimes you see a $FF in their places) are actually unused, only
byte 4 is used in the PACKER! One other detail that is inactive is the
fine-tuning (done normally with the SHIFT F key), it has been removed from
player v12.


IN THE PACKER
-------------

In the editor you might have noticed that your music took around 4 chars of
raster-time, so when you have packed a tune (and you see the typical packer
menu) you MUST choose 'CTRL-BYTES' with the F6 key. Then you travel to the
fourth and last byte and write any other number than $00. This will activate
the usual raster-decreasing mode, as discussed in player v14.G0. However,
where it was optional in player v14 it is a must in player v12 - othwerwise
there is no point in using this player at all! When you have set this byte
the music will skip a frame at the usual raster eating spots - this may
sometimes cause the music to sound quite differently than in the editor, but
in most cases you just have to live with that. There IS some things you CAN
do however, you can be sure that most notes (especially chords and other
arpeggio instruments) have been 'hold' using '+++' after the note, all the
way to the next note. This actually is shorter in memory too, than if you had
some '---' after the note. Remember that the point of going from a '+++'
(gate on) to '---' (gate off) is one of many places where the raster-decrease
function will skip a frame, causing f.ex. chords to make a little 'hiccup'.
One other thing that is very nice to know is that the setting of byte 4
actually BETTERS the precision of the ADSR. You might have noticed that the
notes in the editor might 'trip' or trigger the ADSR on badly. Well, if I
were you I wouldn't try to correct the ADSR in the editor quite yet - wait
and see what happens when the tune is packed and the raster-decrease function
is on - the ADSR is more 'clean' then!

If making multi game-tunes seperated with FF00 in the editor then please
notice that the FE00 endmark doesn't exist in player v12. The programmer of
the game must 'break' the jingles himself, just make sure there's some long
empty seq's after the jingles to make life easier for the programmer. Besides
that it is still possible to do up to 31 tunes in one player, and the special
wrap-mark facility (defined with the pound key) also works with this player.
And, the final packed player can of course be relocated in my "delux driver"
as well.

Good, but how good is it then! How low is the rastertime? Well, it depends on
the music. The lowest it can get is $10 scanlines, the biggest is $14
scanlines. That of course is only true if you use the raster-decreasing mode!
In most cases the raster-time sits at approx. $11 scanlines - not bad!


Jens-Christian Huus.

