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 24{$ifdef NDS_INTERFACE} 25 26{$define _____badbear_____} 27 28type 29 tmm_mas_prefix = record 30 size : mm_word; 31 _type : mm_byte; 32 version : mm_byte; 33 reserved : array [0..1] of mm_byte; 34 end; 35 mm_mas_prefix = tmm_mas_prefix; 36 pmm_mas_prefix = ^tmm_mas_prefix; 37 38 tmm_mas_head = record 39 order_count : mm_byte; 40 instr_count : mm_byte; 41 sampl_count : mm_byte; 42 pattn_count : mm_byte; 43 flags : mm_byte; 44 global_volume : mm_byte; 45 initial_speed : mm_byte; 46 initial_tempo : mm_byte; 47 repeat_position : mm_byte; 48 reserved : array [0..2] of mm_byte; 49 channel_volume : array [0..31] of mm_byte; 50 channel_panning : array [0..31] of mm_byte; 51 sequence : array [0..199] of mm_byte; 52 53 {$ifdef _____badbear_____} 54 tables : array [0..0] of mm_addr; 55 {$endif} 56 // ::instrument table 57 // ::sample info table 58 // ::pattern table 59 end; 60 mm_mas_head = tmm_mas_head; 61 pmm_mas_head = ^tmm_mas_head; 62 63 tmm_mas_instrument = record 64 global_volume: mm_byte; 65 fadeout: mm_byte; 66 random_volume: mm_byte; 67 nna: mm_byte; 68 dct: mm_byte; 69 dca: mm_byte; 70 env_flags: mm_byte; 71 panning: mm_byte; 72 note_map: array [0..119] of mm_hword; 73 {$ifdef _____badbear_____} 74 envelopes: array [0..0] of mm_byte; 75 {$endif} 76 // ::envelopes 77 end; 78 mm_mas_instrument = tmm_mas_instrument; 79 pmm_mas_instrument = ^tmm_mas_instrument; 80 81 tmm_mas_envelope = record 82 size: mm_byte; 83 loop_start: mm_byte; 84 loop_end: mm_byte; 85 sus_start: mm_byte; 86 sus_end: mm_byte; 87 node_count: mm_byte; 88 is_filter: mm_byte; // (maybe supported someday :) 89 wasted: mm_byte; 90 {$ifdef _____badbear_____} 91 env_nodes: array [0..0] of mm_byte; 92 {$endif} 93 // ::envelope nodes 94 end; 95 mm_mas_envelope = tmm_mas_envelope; 96 pmm_mas_envelope = ^tmm_mas_envelope; 97 98 tmm_mas_sample_info = record 99 global_volume: mm_byte; 100 default_volume: mm_byte; 101 frequency: mm_hword; 102 av_type: mm_byte; // (auto vibrato) 103 av_depth: mm_byte; 104 av_speed: mm_byte; 105 panning: mm_byte; 106 av_rate: mm_hword; 107 msl_id: mm_hword; 108 {$ifdef _____badbear_____} 109 data: array [0..0] of mm_byte; 110 {$endif} 111 // ::sample may follow 112 end; 113 mm_mas_sample_info = tmm_mas_sample_info; 114 pmm_mas_sample_info = ^tmm_mas_sample_info; 115 116 tmm_mas_pattern = record 117 row_count: mm_byte; 118 {$ifdef _____badbear_____} 119 pattern_data: array [0..0] of mm_byte; 120 {$endif} 121 // ::pattern data 122 end; 123 mm_mas_pattern = tmm_mas_pattern; 124 pmm_mas_pattern = ^tmm_mas_pattern; 125 126 tmm_mas_gba_sample = record 127 length: mm_word; 128 loop_length: mm_word; 129 reserved: mm_hword; 130 default_frequency: mm_hword; 131 {$ifdef _____badbear_____} 132 data: array [0..0] of mm_byte; 133 {$endif} 134 // ::8-bit sample data 135 end; 136 mm_mas_gba_sample = tmm_mas_gba_sample; 137 pmm_mas_gba_sample = ^tmm_mas_gba_sample; 138 139 tmm_mas_ds_sample = record 140 loop_start: mm_word; 141 format: mm_byte; 142 repeat_mode: mm_byte; 143 default_frequency: mm_hword; 144 {$ifdef _____badbear_____} 145 data: array [0..0] of mm_byte; 146 {$endif} 147 // ::sample data 148 case integer of 149 0: (loop_length: mm_word;); 150 1: (length: mm_word;); 151 end; 152 mm_mas_ds_sample = tmm_mas_ds_sample; 153 pmm_mas_ds_sample = ^tmm_mas_ds_sample; 154 155const 156 MM_SFORMAT_8BIT = 0; 157 MM_SFORMAT_16BIT = 1; 158 MM_SFORMAT_ADPCM = 2; 159 160 MM_SREPEAT_FORWARD = 1; 161 MM_SREPEAT_OFF = 2; 162 163 164 165 166{$endif NDS_INTERFACE} 167 168