initial commit
[gbajam22] / libs / maxmod / mp_mas_structs.inc
1 /****************************************************************************
2  *                                                          __              *
3  *                ____ ___  ____ __  ______ ___  ____  ____/ /              *
4  *               / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __  /               *
5  *              / / / / / / /_/ />  </ / / / / / /_/ / /_/ /                *
6  *             /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/                 *
7  *                                                                          *
8  *         Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org)         *
9  *                                                                          *
10  * Permission to use, copy, modify, and/or distribute this software for any *
11  * purpose with or without fee is hereby granted, provided that the above   *
12  * copyright notice and this permission notice appear in all copies.        *
13  *                                                                          *
14  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES *
15  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF         *
16  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR  *
17  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES   *
18  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN    *
19  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF  *
20  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.           *
21  ****************************************************************************/
22
23 @ Layer Information
24 @ -----------------
25
26 .equ    MPL_TICK        ,0
27 .equ    MPL_ROW         ,1
28 .equ    MPL_POSITION    ,2
29 .equ    MPL_NROWS       ,3
30 .equ    MPL_GV          ,4
31 .equ    MPL_SPEED       ,5
32 .equ    MPL_ISPLAYING   ,6
33 .equ    MPL_BPM         ,7
34 .equ    MPL_INSTTABLE   ,8
35 .equ    MPL_SAMPTABLE   ,12
36 .equ    MPL_PATTTABLE   ,16
37 .equ    MPL_SONGADR     ,20
38 .equ    MPL_FLAGS       ,24
39 .equ    MPL_OLDEFFECTS  ,25
40 .equ    MPL_PATTJUMP    ,26
41 .equ    MPL_PATTJUMP_ROW,27
42 .equ    MPL_FPATTDELAY  ,28
43 .equ    MPL_PATTDELAY   ,29
44
45 .equ    MPL_PLOOP_ROW   ,30
46 .equ    MPL_PLOOP_TIMES ,31
47 .equ    MPL_PLOOP_ADR   ,32
48 .equ    MPL_PATTREAD    ,36
49 .equ    MPL_PLOOP_JUMP  ,40
50 .equ    MPL_VALID               ,41
51
52 .equ    MPL_TICKRATE    ,42     @ 1.15 fixed point OR sample count
53 .equ    MPL_SAMPCOUNT   ,44     @ sample timing
54 .equ    MPL_TICKFRAC    ,44     @ vsync  timing 0.16 fixed point
55
56 .equ    MPL_MODE        ,46
57 .equ    mpl_reserved2   ,47
58 .equ    MPL_MCH_UPDATE  ,48
59 .equ    MPL_VOLUME      ,52
60 .equ    mpl_reserved3   ,54
61 .equ    MPL_SIZE        ,56
62
63 @ active information
64 @--------------------
65
66 .equ    MPV_PATTREAD_P  ,4
67 .equ    MPV_AFVOL       ,8
68 .equ    MPV_SAMPOFF     ,9
69 .equ    MPV_VOLPLUS     ,10
70 .equ    MPV_NOTEDELAY   ,11
71 .equ    MPV_PANPLUS     ,12
72 .equ    MPV_SIZE        ,14
73
74 @ Module Channel
75 @ --------------
76
77 .EQU    MCH_ALLOC,      0 @ ALLOCATED ACTIVE CHANNEL#
78 .EQU    MCH_CFLAGS,     1 @ PATTERN COMRESSION FLAGS, called "maskvariable" in ITTECH.TXT
79 .EQU    MCH_PANNING,    2
80 .EQU    MCH_VOLCMD,     3 @ VOLUME COLUMN COMMAND
81 .EQU    MCH_EFFECT,     4 @ EFFECT#                             } COMBINED
82 .EQU    MCH_PARAM,      5 @ EFFECT PARAMETER    }
83 .EQU    MCH_FXMEM,      6 @ EFFECT MEMORY
84 .EQU    MCH_NOTE,       7 @ TRANSLATED NOTE
85 .EQU    MCH_FLAGS,      8 @ CHANNEL FLAGS
86 .EQU    MCH_INST,       9 @ INSTRUMENT#
87 //.EQU  MCH_PFLAGS,     10 @ PLAYBACK FLAGS (???)
88 .EQU    MCH_VIBDEP,     11
89 .EQU    MCH_VIBSPD,     12
90 .EQU    MCH_VIBPOS,     13
91 .EQU    MCH_VOLUME,     14 //}combined
92 .EQU    MCH_CVOLUME,    15 //}
93 .EQU    MCH_PERIOD,     16
94 .EQU    MCH_BFLAGS,     20
95 .EQU    MCH_PNOTE,      22 @ PATTERN NOTE
96 .EQU    MCH_MEMORY,     23 @ 15 bytes
97 .EQU    MCH_SIZE,       40 @ sizeof( module_channel ) @ 2 extra bytes
98
99 @ Active Channel
100 @ --------------
101
102 .EQU    MCA_PERIOD,     0       @ internal period
103 .EQU    MCA_FADE,       4       //   }
104 .EQU    MCA_ENVC_VOL,   6       //   }
105 .EQU    MCA_ENVC_PAN,   8       //   } COMBINED
106 .EQU    MCA_ENVC_PIC,   10      //   } during volume reset
107 .EQU    MCA_AVIB_DEP,   12      //   } AND NEWNOTE, CHECK NEWNOTE ON CHANGES
108 .EQU    MCA_AVIB_POS,   14      //   }
109 .EQU    MCA_FVOL,       16      // } COMBINED for SPEED
110 .EQU    MCA_TYPE,       17      // }
111 .EQU    MCA_INST,       18
112 .EQU    MCA_PANNING,    19
113 .EQU    MCA_VOLUME,     20
114 .EQU    MCA_SAMPLE,     21
115 .EQU    MCA_PARENT,     22 // } COMBINED
116 .EQU    MCA_FLAGS,      23 // }
117 .EQU    MCA_ENVN_VOL,   24
118 .EQU    MCA_ENVN_PAN,   25
119 .EQU    MCA_ENVN_PIC,   26
120 .EQU    MCA_SFX,        27      @ can store this anywhere
121 .EQU    MCA_SIZE,       28
122
123 @ Active Channel Flags
124 @ --------------------
125
126 .EQU    MCAF_KEYON      ,1      @ key is on... LOCKED
127 .EQU    MCAF_FADE       ,2      @ note-fade is activated
128 .EQU    MCAF_START      ,4      @ [re]start sample
129 .EQU    MCAF_UPDATED    ,8      @ already updated by pchannel routine
130 .EQU    MCAF_ENVEND     ,16     @ end of envelope
131 .EQU    MCAF_VOLENV     ,32     @ volume envelope enabled
132 .EQU    MCAF_SUB        ,64     @ sublayer.................locked..
133 .EQU    MCAF_EFFECT     ,128    @ subsublayer.............................LOCKED (mpEffect)
134
135 @ Active Channel Types
136 @ --------------------
137
138 .EQU    ACHN_DISABLED   ,0      @ LOCKED (multiple routines)
139 .EQU    ACHN_RESERVED   ,1      @ (can't be used [alloc channel])
140 .EQU    ACHN_BACKGROUND ,2      @ LOCKED (alloc channel)
141 .EQU    ACHN_FOREGROUND ,3
142 .EQU    ACHN_CUSTOM     ,4
143
144 @ Module Channel Flags
145 @ --------------------
146
147 .equ    MF_START        ,1
148 .equ    MF_DVOL         ,2
149 .equ    MF_HASVCMD      ,4
150 .equ    MF_HASFX        ,8
151 .equ    MF_NEWINSTR     ,16
152
153 .EQU    MF_NOTEOFF      ,64     @ LOCKED
154 .EQU    MF_NOTECUT      ,128    @ LOCKED
155
156 @.equ   MF_NEWINSTR     ,1      @ new instrument
157 @.EQU   MF_DVOL         ,2
158 @.EQU   MF_START        ,4
159 @.EQU   MF_HASFX        ,8
160 @.EQU   MF_HASVCMD      ,16
161 @.EQU   MF_NOTEOFF      ,64     @ LOCKED
162 @.EQU   MF_NOTECUT      ,128    @ LOCKED
163
164 @ Other Definitions
165 @ -----------------
166
167 .equ    IT_NNA_CUT      ,0      @ New note actions
168 .equ    IT_NNA_CONT     ,1
169 .equ    IT_NNA_OFF      ,2
170 .equ    IT_NNA_FADE     ,3
171
172 .equ    IT_DCA_CUT      ,0      @ Duplicate check actions
173 .equ    IT_DCA_OFF      ,1
174 .equ    IT_DCA_FADE     ,2
175
176 @ Misc Reference
177 @ --------------
178
179 @ BFLAGS:
180 @ /////ctv nnppttvv
181 @ nn...............new note action
182 @ pp...............panbrello waveform
183 @ tt...............tremolo waveform
184 @ vv...............vibrato waveform
185 @ dd...............duplicate check type
186 @ v................volume envelope enabled
187 @ t................tremor variable...
188 @ c................cut channel volume
189 @ //////...........reserved