Initial commit.
[amiga/xmodule.git] / Player.i
1         IFND    XMREPLAY_I
2 XMREPLAY_I      SET     1
3 **
4 **      XModule replay routine 1.0
5 **
6 **      Copyright (C) 1995 Bernardo Innocenti
7 **
8 **      Assembler structure definitions for player
9 **
10
11         IFND    EXEC_TYPES_I
12         include exec/types.i
13         ENDC
14
15
16         STRUCTURE PlayerCmd,MN_SIZE
17         ULONG   pcmd_ID
18         APTR    pcmd_Data
19         LONG    pcmd_Err
20         LABEL   PlayerCmd_size
21
22
23         ENUM -1
24         EITEM PCMD_SETUP
25         EITEM PCMD_PLAY
26         EITEM PCMD_INIT
27         EITEM PCMD_COUNT
28
29         ENUM 0
30         EITEM PERR_OK
31         EITEM PERR_UNKNOWN_COMMAND
32         EITEM PERR_NO_AUDIO
33
34
35
36         STRUCTURE NoteStruct,0
37         APTR    nst_Channels            ; pointer to a list of notechannels
38         ULONG   nst_Flags               ; misc flags (see below)
39         ULONG   nst_MaxFrequency        ; max. frequency of this player (28,867 Hz in DMA mode)
40         UWORD   nst_MaxVolume           ; max. volume of this player (in most cases 64)
41         STRUCT  nst_Reserved,18         ; reserved for future use (must be 0 for now)
42         LABEL   NoteStruct_SIZE
43
44
45         BITDEF  NST,Dummy,0             ; only a dummy-NoteStruct (no NotePlayer needed)
46         BITDEF  NST,Period,1            ; Amiga period supplied instead of frequency
47         BITDEF  NST,ExtPeriod,2         ; Extended period (period*4) supplied instead of frequency
48         BITDEF  NST,NTSCTiming,3        ; Period/ExtPeriod supplied in NTSC instead of PAL
49         BITDEF  NST,EvenLength,4        ; Samplelength supplied as WORD instead of LONG
50         BITDEF  NST,AllRepeats,5        ; play Repeats even if no One-Shot part was played yet
51
52         BITDEF  NST,Reverse,8           ; little endian byte ordering
53         BITDEF  NST,Signed,9            ; sample data is signed linear (2's complement)
54         BITDEF  NST,Unsigned,10         ;       -"-     unsigned linear
55         BITDEF  NST,Ulaw,11             ;       -"-     U-law (logarithmic)
56         BITDEF  NST,Alaw,12             ;       -"-     A-law (logarithmic)
57         BITDEF  NST,Float,13            ;       -"-     IEEE floats
58
59         BITDEF  NST,7Bit,16             ; sample data is in 7-bit format
60         BITDEF  NST,8Bit,17             ;       -"-     bytes
61         BITDEF  NST,16Bit,18            ;       -"-     16-bit words
62         BITDEF  NST,24Bit,19            ;       -"-     24-bit data
63         BITDEF  NST,32Bit,20            ;       -"-     longwords
64         BITDEF  NST,64Bit,21            ;       -"-     quadwords
65
66 NSTD_TypeMask EQU NSTF_Reverse!NSTF_Signed!NSTF_Unsigned!NSTF_Ulaw!NSTF_Alaw!NSTF_Float
67 NSTD_SizeMask EQU NSTF_7Bit!NSTF_8Bit!NSTF_16Bit!NSTF_24Bit!NSTF_32Bit!NSTF_64Bit
68
69
70         STRUCTURE NoteChannel,0
71         APTR    nch_NextChannel         ; next channel in the list (NULL if last)
72         ULONG   nch_NotePlayer          ; for use by the noteplayer (the deliplayer must ignore this)
73         WORD    nch_Reserved0           ; reserved for future use (must be 0 for now)
74         UBYTE   nch_Private             ; just what it says
75         UBYTE   nch_Changed             ; what has changed since last call
76         WORD    nch_StereoPos           ; set this field when the InitNote function is called
77         WORD    nch_Stereo              ; describes "where" this channel is supposed to play
78         APTR    nch_SampleStart         ; ^sampledata
79         ULONG   nch_SampleLength        ; size of sample
80         APTR    nch_RepeatStart         ; ^repeat part of sample
81         ULONG   nch_RepeatLength        ; size of repeat part
82         ULONG   nch_Frequency           ; frequency (or period) of sample
83         UWORD   nch_Volume              ; volume of sample
84         STRUCT  nch_Reserved1,26        ; reserved for future use (must be 0 for now)
85         LABEL   NoteChannel_SIZE
86
87
88         BITDEF  NCH,Stereo,0            ; pan position of channel has changed (???)
89         BITDEF  NCH,Sample,1            ; one-shot part of sample has changed
90         BITDEF  NCH,Repeat,2            ; repeat part of sample has changed
91         BITDEF  NCH,Frequency,3         ; frequency has changed
92         BITDEF  NCH,Volume,4            ; volume (or pan position ???) has changed
93         BITDEF  NCH,Trigger,5           ; trigger sample
94
95         BITDEF  NCH,Loop,16             ; sample has looped at least once (set by DeliTracker)
96
97 NCHD_Ignore     EQU     -32768          ; ignore this notechannel
98 NCHD_Balanced   EQU     0               ; play balanced on both sides
99 NCHD_FarLeft    EQU     -32767          ; play only on left speaker
100 NCHD_FarRight   EQU     32767           ; play only on right speaker
101
102
103         ENDC    ; !XMREPLAY_I