Initial commit.
[amiga/xmodule.git] / XModule.i
1         IFND    XMODULE_I
2 XMODULE_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    ; EXEC_TYPES_I
14
15         IFND    EXEC_NODES_I
16         include exec/nodes.i
17         ENDC    ; EXEC_NODES_I
18
19
20
21 MAXINSTRUMENTS  EQU     64      ; Maximum number of instruments loaded
22 MAXTABLENOTE    EQU     (12*3)  ; Number of entries in note conversion table
23 MAXTABLEEFFECTS EQU     20      ; Number of entries in effect conversion table
24 MAXPATTERNS     EQU     128     ; Maximum number of patterns
25 MAXTRACKS       EQU     32      ; Maximum number of tracks in a pattern
26 MAXPATTLINES    EQU     32768   ; Maximum number of lines in a pattern
27 MAXPOSITIONS    EQU     32768   ; Maximum number of song positions
28 MAXINSTNAME     EQU     32
29 MAXSONGNAME     EQU     32
30 MAXAUTHNAME     EQU     64
31 MAXPATTNAME     EQU     16
32
33 PATHNAME_MAX    EQU     256
34
35
36 **************************************************************************
37 ** Some definitions transcripted from "XModule.h"
38 **************************************************************************
39
40         ENUM 0
41
42         EITEM EFF_NULL
43         EITEM EFF_PORTAMENTOUP
44         EITEM EFF_PORTAMENTODOWN
45         EITEM EFF_TONEPORTAMENTO
46         EITEM EFF_VIBRATO
47         EITEM EFF_TONEPVOLSLIDE
48         EITEM EFF_VIBRATOVOLSLIDE
49         EITEM EFF_TREMOLO
50         EITEM EFF_UNUSED
51         EITEM EFF_SAMPLEOFFSET
52         EITEM EFF_VOLSLIDE
53         EITEM EFF_POSJUMP
54         EITEM EFF_SETVOLUME
55         EITEM EFF_PATTERNBREAK
56         EITEM EFF_MISC
57         EITEM EFF_SETSPEED
58         EITEM EFF_SETTEMPO
59         EITEM EFF_ARPEGGIO
60
61         EITEM EFF_COUNT
62
63
64
65         STRUCTURE Note,0
66         UBYTE note_Note
67         UBYTE note_Inst
68         UBYTE note_Vol
69         UBYTE note_Pad
70         UBYTE note_EffNum
71         UBYTE note_EffVal
72         LABEL Note_SIZEOF
73
74
75         STRUCTURE Instrument,0
76         UWORD   in_InstType                     ; Instrument type (See defs)
77         UWORD   in_Volume                       ; Volume (max $40)
78         STRUCT  in_Name,MAXINSTNAME             ; Instrument Name
79         APTR    in_SampleData                   ; Sampled data
80         ULONG   in_Length                       ; Length of instr
81         ULONG   in_Repeat                       ; Loop start (No loop = 0)
82         ULONG   in_Replen                       ; Loop size (No loop = 1)
83         WORD    in_FineTune                     ; Instrument FineTune (-8..+7)
84         UWORD   in_Flags                        ; Unused
85         LABEL   in_SIZEOF
86
87
88         STRUCTURE       Pattern,0
89         UWORD   pa_Tracks                       ; Support for variable number of tracks
90         UWORD   pa_Lines                        ; Number of lines in pattern
91         STRUCT  pa_PattName,MAXPATTNAME         ; Pattern Name
92         STRUCT  pa_Notes,MAXTRACKS * 4          ; Pointers to the lines
93         LABEL   pa_SIZEOF
94
95
96         STRUCTURE       SongInfo,LN_SIZE
97         UWORD   si_Length                       ; Number of positions in song
98         UWORD   si_MaxTracks                    ; Number of tracks in song
99         UWORD   si_NumPatterns                  ; Number of patterns in song
100         UWORD   si_NumInstruments               ; Unused
101         UWORD   si_GlobalSpeed                  ; Default song speed
102         UWORD   si_GlobalTempo                  ; Default song tempo
103         UWORD   si_Restart                      ; Position to restart from
104         UWORD   si_CurrentPatt
105         UWORD   si_CurrentPos
106         UWORD   si_CurrentInst
107         UWORD   si_Flags                        ; See definitions below
108         ULONG   si_Changes                      ; Number of changes made to this song
109         APTR    si_Sequence                     ; *UWORD: Pointer to song sequence
110         STRUCT  si_PattData,pa_SIZEOF*MAXPATTERNS
111         STRUCT  si_Inst,in_SIZEOF*MAXINSTRUMENTS
112         STRUCT  si_ActiveTracks,MAXTRACKS       ; UBYTE []: Active Tracks (0 = disabled)
113         STRUCT  si_SongName,MAXSONGNAME         ; UBYTE []: Song name
114         STRUCT  si_Author,MAXAUTHNAME           ; Author of song
115         STRUCT  si_SongPath,PATHNAME_MAX;       ; Original song path
116         APTR    si_Pool                         ;  The memory pool where song data
117                                                 ; must be allocated from.
118         LABEL   si_SIZEOF
119
120
121         ENDC    ; !XMODULE_I