* MultiPlayer
* Copyright (C) 1992 Bryan Ford
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* I (the author of MultiPlayer) can be contacted on the Internet at
* "bryan.ford@m.cc.utah.edu".  See "Player.doc" for other addresses.
*
* $Id: player.i,v 3.1 92/05/25 07:54:04 BAF Exp $
* Global header for assembly language modules
*

        ifnd    EXEC_TYPES_I
        include "exec/types.i"
        endc

        ifnd    EXEC_NODES_I
        include "exec/nodes.i"
        endc

        ifnd    BRY_GMOD_I
        include "gmod.i"
        endc

        ifnd    CUSTOM
CUSTOM          equ     $dff000         ; Custom chip address
        endc

CIAB            equ     $bfd000         ; CIAB registers

RTSINST         equ     $4e75           ; Code for an RTS instruction

CLOCK           equ     3579545         ; Audio clock frequency

ERRCOUNT        equ     10              ; Errors stay in window for 1 second

SPECTRUMWIDTH   equ     128
SPECTRUMHEIGHT  equ     32
SPECTRUMRES     equ     16

SCOPEWIDTH      equ     64
SCOPEHEIGHT     equ     32

NOTEWIDTH       equ     128
NOTEHEIGHT      equ     64

FFperF          equ     3               ; Flash frames per frame

INFOCOLS        equ     45              ; Number of columns in one line of the Info window

*** System flags (_sysflags)
        BITDEF  S,KILL,0
        BITDEF  S,TIMERUP,2
        BITDEF  S,WINDOWUP,3
        BITDEF  S,REPEAT,4
        BITDEF  S,SECOND,5
        BITDEF  S,FADEDONE,6

*** Play mode (_playmode)
PM_SEQUENCE     equ     0
PM_RANDOM       equ     1
PM_ONCE         equ     2
PM_OVEROVER     equ     3
PM_SEQUENCEONCE equ     4

*** Show mode (_showmode)
SM_NOTHING      equ     0
SM_CLOCK        equ     1
SM_SEQUENCE0    equ     2
SM_SEQUENCE1    equ     3

*** Flash flags (_flashflags)
        BITDEF  F,SPECTRUM,0
        BITDEF  F,SCOPE,1
        BITDEF  F,QSCOPE,2
        BITDEF  F,NOTES,3
        BITDEF  F,CHANNELS,4

*** Module type flags (modtype)
        BITDEF  MT,MODSPEED,0           ; Supports modspeed
        BITDEF  MT,SEQUENCE,1           ; Supports sequence display
        BITDEF  MT,REPEAT,2             ; Supports repeat detection
        BITDEF  MT,MODIFIED,3           ; Mod prefs have been changed
        BITDEF  MT,PROTRACKER,4         ; This is the Protracker player
        BITDEF  MT,FILTER,5             ; Filter can be controlled
        BITDEF  MT,JUMP,6               ; Module can jump to other positions

 STRUCTURE      FileSpec,0              ; Spec for a loaded file
        APTR    fs_Mem                  ; Pointer to start of memory
        ULONG   fs_FileSize             ; Size of file
        APTR    fs_EndMem               ; Pointer to end of memory
        ULONG   fs_AllocSize            ; Size of allocated memory block
        LABEL   fs_SIZEOF

 STRUCTURE      ScopeChanData,0         ; Data for one channel of the scope
        APTR    scd_sample
        UWORD   scd_len
        UWORD   scd_rep
        UWORD   scd_pos
        UWORD   scd_inc
        UWORD   scd_per
        WORD    scd_pad
        LABEL   scd_SIZEOF

 STRUCTURE ModNode,MLN_SIZE
        UWORD   mn_size
        APTR    mn_nameptr
        LONG    mn_dir
        BYTE    mn_volume
        BYTE    mn_balance
        BYTE    mn_speed
        BYTE    mn_filter
        ULONG   mn_endtime
        BYTE    mn_flags
        BYTE    mn_pad
        LABEL   mn_name

        BITDEF  MN,ENDFADE,1
        BITDEF  MN,PTTEMPO,2
        BITDEF  MN,NOTPROTRACKER,3

plstartlock     macro                   ; Beginning of an overlaid player routine
                xref    @LockOverlay,ovlock
                move.l  d0,ovlock
                jsr     @LockOverlay
                endm

plstartret      macro   ; <label>       ; Return code from player start routines
                lea     \1-gmod_InitMusic(pc),a0
                move.l  a0,d0
                rts
                endm

