31#if defined(__atari__) || defined(__atarixl__)
35static unsigned int SOUND_FREQUENCIES[] = {
39 256, 256, 256, 256, 256, 256, 256,
40 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
41 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
42 256, 256, 256, 256, 256, 256, 256, 256, 256, 243,
43 230, 217, 204, 193, 182, 172, 162, 153, 144, 136,
44 128, 121, 114, 108, 102, 96, 91, 85, 81, 76,
45 72, 68, 64, 60, 57, 53, 50, 47, 45, 42,
46 40, 37, 35, 33, 31, 30, 28, 26, 25, 23,
47 22, 21, 19, 18, 17, 16, 15, 14, 13, 12,
48 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
61 cpu_label( _environment,
"POKEYSTARTUP" );
69 deploy( pokeyvars, src_hw_pokey_vars_asm );
72 if ( _channels & 0x01 ) {
75 if ( _channels & 0x02 ) {
78 if ( _channels & 0x04 ) {
81 if ( _channels & 0x08 ) {
89 deploy( pokeyvars, src_hw_pokey_vars_asm );
100 outline1(
"LDX #$%2.2x", ( _volume >> 5 ) & 0x07 );
105#define PROGRAM_FREQUENCY( c, f ) \
106 outline1("LDX #$%2.2x", ( f ) & 0xff ); \
107 outline1("LDY #$%2.2x", ( ( f >> 8 ) & 0xff ) ); \
108 if ( ( c & 0x01 ) ) \
109 outline0("JSR POKEYPROGFREQ0" ); \
110 if ( ( c & 0x02 ) ) \
111 outline0("JSR POKEYPROGFREQ1" ); \
112 if ( ( c & 0x04 ) ) \
113 outline0("JSR POKEYPROGFREQ2" ); \
114 if ( ( c & 0x08 ) ) \
115 outline0("JSR POKEYPROGFREQ3" );
117#define PROGRAM_FREQUENCY_V( c, f ) \
118 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
119 outline1("LDX %s", f ); \
120 outline1("LDY %s", address_displacement(_environment, f, "1") ); \
121 outline0("JSR POKEYFREQ" );
123#define PROGRAM_FREQUENCY_SV( c, f ) \
124 outline1("LDX #$%2.2x", ( f ) & 0xff ) ); \
125 outline1("LDY #$%2.2x", ( ( f ) >> 8 ) & 0xff ); \
126 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
127 outline0("JSR POKEYFREQ" );
129#define PROGRAM_PITCH( c, f ) \
130 outline1("LDX #$%2.2x", ( f & 0xff ) ); \
131 outline1("LDY #$%2.2x", ( ( f >> 8 ) & 0xff ) ); \
132 if ( ( c & 0x01 ) ) \
133 outline0("JSR POKEYPROGFREQ0" ); \
134 if ( ( c & 0x02 ) ) \
135 outline0("JSR POKEYPROGFREQ1" ); \
136 if ( ( c & 0x04 ) ) \
137 outline0("JSR POKEYPROGFREQ2" ); \
138 if ( ( c & 0x08 ) ) \
139 outline0("JSR POKEYPROGFREQ3" );
141#define PROGRAM_DURATION( c, d ) \
142 outline1("LDX #$%2.2x", ( d & 0xff ) ); \
143 if ( ( c & 0x01 ) ) \
144 outline0("JSR POKEYSETDURATION0" ); \
145 if ( ( c & 0x02 ) ) \
146 outline0("JSR POKEYSETDURATION1" ); \
147 if ( ( c & 0x04 ) ) \
148 outline0("JSR POKEYSETDURATION2" ); \
149 if ( ( c & 0x08 ) ) \
150 outline0("JSR POKEYSETDURATION3" );
152#define WAIT_DURATION( c ) \
153 if ( ( c & 0x01 ) ) \
154 outline0("JSR POKEYWAITDURATION0" ); \
155 if ( ( c & 0x02 ) ) \
156 outline0("JSR POKEYWAITDURATION1" ); \
157 if ( ( c & 0x04 ) ) \
158 outline0("JSR POKEYWAITDURATION2" ); \
159 if ( ( c & 0x08 ) ) \
160 outline0("JSR POKEYWAITDURATION3" );
162#define PROGRAM_PITCH_V( c, f ) \
163 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
164 outline1("LDX %s", f ); \
165 outline1("LDY %s", address_displacement(_environment, f, "1") ); \
166 outline0("JSR POKEYPROGFREQ" );
168#define PROGRAM_PITCH_SV( c, f ) \
169 outline1("LDX #$%2.2x", ( f & 0xff ) ); \
170 outline1("LDY #$%2.2x", ( ( f >> 8 ) & 0xff ) ); \
171 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
172 outline0("JSR POKEYPROGFREQ" );
174#define STOP_FREQUENCY( c ) \
175 if ( ( c & 0x01 ) ) \
176 outline0("JSR POKEYSTOP0" ); \
177 if ( ( c & 0x02 ) ) \
178 outline0("JSR POKEYSTOP1" ); \
179 if ( ( c & 0x04 ) ) \
180 outline0("JSR POKEYSTOP2" ); \
181 if ( ( c & 0x08 ) ) \
182 outline0("JSR POKEYSTOP3" );
184#define STOP_FREQUENCY_V( c ) \
185 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
186 outline0("JSR POKEYSTOP" );
188#define STOP_FREQUENCY_SV( c ) \
189 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
190 outline0("JSR POKEYSTOP" );
192#define PROGRAM_DISTORTION( c, v ) \
193 outline1("LDX #$%2.2x", v ); \
194 if ( ( c & 0x01 ) ) \
195 outline0("JSR POKEYPROGDIST0" ); \
196 if ( ( c & 0x02 ) ) \
197 outline0("JSR POKEYPROGDIST1" ); \
198 if ( ( c & 0x04 ) ) \
199 outline0("JSR POKEYPROGDIST2" ); \
200 if ( ( c & 0x08 ) ) \
201 outline0("JSR POKEYPROGDIST3" );
203#define PROGRAM_DISTORTION_SV( c, v ) \
204 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
205 outline1("LDX #$%2.2x", v ); \
206 outline0("JSR POKEYPROGDIST" );
210 deploy( pokeyvars, src_hw_pokey_vars_asm );
380 deploy( pokeyvars, src_hw_pokey_vars_asm );
389 deploy( pokeyvars, src_hw_pokey_vars_asm );
398 deploy( pokeyvars, src_hw_pokey_vars_asm );
407 deploy( pokeyvars, src_hw_pokey_vars_asm );
422 deploy( pokeyvars, src_hw_pokey_vars_asm );
431 deploy( pokeyvars, src_hw_pokey_vars_asm );
434 outline1(
"LDA %s", ( _channels == NULL ?
"#$f" : _channels ) );
441 deploy( pokeyvars, src_hw_pokey_vars_asm );
457 deploy( pokeyvars, src_hw_pokey_vars_asm );
468 deploy( pokeyvars, src_hw_pokey_vars_asm );
634 deploy( pokeyvars, src_hw_pokey_vars_asm );
651 deploy( pokeyvars, src_hw_pokey_vars_asm );
668 deploy( pokeyvars, src_hw_pokey_vars_asm );
689 deploy( pokeyvars, src_hw_pokey_vars_asm );
704 deploy( pokeyvars, src_hw_pokey_vars_asm );
733 deploy( pokeyvars, src_hw_pokey_vars_asm );
747 deploy( pokeyvars, src_hw_pokey_vars_asm );
749 deploy( music, src_hw_pokey_music_asm );
755 outline0(
"STA POKEYTMPPTR_BACKUP+1");
756 outline1(
"LDA #$%2.2x", ( _size>>8 ) & 0xff);
758 outline1(
"LDA #$%2.2x", _size & 0xff );
759 outline0(
"STA POKEYLASTBLOCK_BACKUP");
void cpu_label(Environment *_environment, char *_label)
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
#define PROGRAM_DISTORTION_SV(c, v)
#define PROGRAM_DURATION(c, d)
void pokey_set_frequency_vars(Environment *_environment, char *_channels, char *_frequency)
void pokey_set_note(Environment *_environment, int _channels, int _note)
void pokey_stop(Environment *_environment, int _channels)
void pokey_set_duration(Environment *_environment, int _channels, int _duration)
void pokey_finalization(Environment *_environment)
void pokey_set_volume_semi_var(Environment *_environment, char *_channel, int _volume)
#define PROGRAM_FREQUENCY(c, f)
#define PROGRAM_PITCH_SV(c, f)
void pokey_set_pitch(Environment *_environment, int _channels, int _pitch)
void pokey_start(Environment *_environment, int _channels)
void pokey_set_duration_vars(Environment *_environment, char *_channels, char *_duration)
void pokey_set_frequency(Environment *_environment, int _channels, int _frequency)
void pokey_initialization(Environment *_environment)
void pokey_music(Environment *_environment, char *_music, int _size, int _loop)
void pokey_set_pitch_vars(Environment *_environment, char *_channels, char *_pitch)
#define STOP_FREQUENCY(c)
void pokey_set_program_semi_var(Environment *_environment, char *_channels, int _program)
void pokey_set_program(Environment *_environment, int _channels, int _program)
void pokey_set_parameter(Environment *_environment, int _channels, int _parameter, int _value)
void pokey_start_var(Environment *_environment, char *_channels)
#define PROGRAM_DISTORTION(c, v)
void pokey_wait_duration_vars(Environment *_environment, char *_channels)
#define PROGRAM_PITCH(c, f)
void pokey_set_note_vars(Environment *_environment, char *_channels, char *_note)
void pokey_wait_duration(Environment *_environment, int _channels)
void pokey_stop_vars(Environment *_environment, char *_channels)
void pokey_set_volume(Environment *_environment, int _channels, int _volume)
void pokey_set_volume_vars(Environment *_environment, char *_channels, char *_volume)
#define IMF_INSTRUMENT_LEAD_8_BASS_LEAD
#define IMF_INSTRUMENT_MARIMBA
#define IMF_INSTRUMENT_LEAD_6_VOICE
#define IMF_INSTRUMENT_DRAWBAR_ORGAN
#define IMF_INSTRUMENT_FRETLESS_BASS
#define IMF_INSTRUMENT_PAD_1_NEW_AGE
#define IMF_INSTRUMENT_VIOLIN
#define IMF_INSTRUMENT_SYNTH_BASS_1
#define IMF_INSTRUMENT_MELODIC_TOM
#define IMF_INSTRUMENT_REVERSE_CYMBAL
#define IMF_INSTRUMENT_ELECTRIC_BASS_FINGER
#define IMF_INSTRUMENT_HARMONICA
#define IMF_INSTRUMENT_BLOWN_BOTTLE
#define IMF_INSTRUMENT_PAD_3_POLYSYNTH
#define IMF_INSTRUMENT_FX_8_SCI_FI
#define IMF_INSTRUMENT_RECORDER
#define IMF_INSTRUMENT_FX_6_GOBLINS
#define IMF_INSTRUMENT_FX_1_RAIN
#define IMF_INSTRUMENT_SYNTH_VOICE
#define IMF_INSTRUMENT_TENOR_SAX
#define IMF_INSTRUMENT_PICCOLO
#define IMF_INSTRUMENT_LEAD_7_FIFTHS
#define IMF_INSTRUMENT_SLAP_BASS_1
#define IMF_INSTRUMENT_MUSIC_BOX
#define IMF_INSTRUMENT_SOPRANO_SAX
#define IMF_INSTRUMENT_TRUMPET
#define IMF_INSTRUMENT_BIRD_TWEET
#define IMF_INSTRUMENT_PAD_8_SWEEP
#define IMF_INSTRUMENT_CHURCH_ORGAN
#define IMF_INSTRUMENT_HELICOPTER
#define IMF_INSTRUMENT_BRIGHT_ACOUSTIC_PIANO
#define IMF_INSTRUMENT_CELESTA
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_NYLON
#define IMF_INSTRUMENT_GLOCKENSPIEL
#define IMF_INSTRUMENT_ORCHESTRAL_HARP
#define IMF_INSTRUMENT_BREATH_NOISE
#define IMF_INSTRUMENT_BAG_PIPE
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_JAZZ
#define IMF_INSTRUMENT_ELECTRIC_GRAND_PIANO
#define IMF_INSTRUMENT_SITAR
#define IMF_INSTRUMENT_APPLAUSE
#define IMF_INSTRUMENT_WHISTLE
#define IMF_INSTRUMENT_PERCUSSIVE_ORGAN
#define IMF_INSTRUMENT_HONKY_TONK_PIANO
#define IMF_INSTRUMENT_CHOIR_AAHS
#define IMF_INSTRUMENT_SHANAI
#define IMF_INSTRUMENT_CELLO
#define IMF_INSTRUMENT_FX_3_CRYSTAL
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_MUTED
#define IMF_INSTRUMENT_HARPSICHORD
#define IMF_INSTRUMENT_BRASS_SECTION
#define IMF_INSTRUMENT_ELECTRIC_BASS_PICK
#define IMF_INSTRUMENT_FX_5_BRIGHTNESS
#define IMF_INSTRUMENT_FLUTE
struct _Environment Environment
Structure of compilation environment.
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_CLEAN
#define IMF_INSTRUMENT_ACOUSTIC_BASS
#define IMF_INSTRUMENT_GUITAR_FRET_NOISE
#define IMF_INSTRUMENT_SYNTHSTRINGS_2
#define IMF_INSTRUMENT_PAD_4_CHOIR
#define IMF_INSTRUMENT_LEAD_2_SAWTOOTH
#define deploy_preferred(s, e)
#define IMF_INSTRUMENT_DULCIMER
#define IMF_INSTRUMENT_KOTO
#define IMF_INSTRUMENT_TUBA
#define IMF_INSTRUMENT_GUITAR_HARMONICS
#define IMF_INSTRUMENT_CLAVI
#define IMF_INSTRUMENT_BANJO
#define IMF_INSTRUMENT_SYNTHBRASS_2
#define IMF_INSTRUMENT_LEAD_4_CHIFF
#define IMF_INSTRUMENT_VOICE_OOHS
#define IMF_INSTRUMENT_TANGO_ACCORDION
#define IMF_INSTRUMENT_FX_7_ECHOES
#define IMF_INSTRUMENT_PAD_6_METALLIC
#define IMF_INSTRUMENT_PAD_5_BOWED
#define IMF_INSTRUMENT_GUNSHOT
#define IMF_INSTRUMENT_REED_ORGAN
#define IMF_INSTRUMENT_ORCHESTRA_HIT
#define IMF_INSTRUMENT_SYNTH_DRUM
#define IMF_INSTRUMENT_SEASHORE
#define IMF_INSTRUMENT_OCARINA
#define IMF_INSTRUMENT_TELEPHONE_RING
#define IMF_INSTRUMENT_FX_2_SOUNDTRACK
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_STEEL
#define IMF_INSTRUMENT_SYNTHSTRINGS_1
#define IMF_INSTRUMENT_MUTED_TRUMPET
#define IMF_INSTRUMENT_PAN_FLUTE
#define IMF_INSTRUMENT_TINKLE_BELL
#define IMF_INSTRUMENT_VIBRAPHONE
#define IMF_INSTRUMENT_KALIMBA
#define IMF_INSTRUMENT_FIDDLE
#define IMF_INSTRUMENT_PAD_7_HALO
#define IMF_INSTRUMENT_TUBULAR_BELLS
#define IMF_INSTRUMENT_LEAD_1_SQUARE
#define IMF_INSTRUMENT_STRING_ENSEMBLE_1
#define IMF_INSTRUMENT_DISTORTION_GUITAR
#define IMF_INSTRUMENT_PAD_2_WARM
#define IMF_INSTRUMENT_ACCORDION
#define IMF_INSTRUMENT_SLAP_BASS_2
#define IMF_INSTRUMENT_LEAD_5_CHARANG
#define IMF_INSTRUMENT_OBOE
#define IMF_INSTRUMENT_STEEL_DRUMS
#define IMF_INSTRUMENT_BASSOON
#define IMF_INSTRUMENT_TIMPANI
#define IMF_INSTRUMENT_ROCK_ORGAN
#define IMF_INSTRUMENT_SHAMISEN
#define IMF_INSTRUMENT_CLARINET
#define IMF_INSTRUMENT_ACOUSTIC_GRAND_PIANO
#define IMF_INSTRUMENT_ALTO_SAX
#define IMF_INSTRUMENT_EXPLOSION
#define IMF_INSTRUMENT_PIZZICATO_STRINGS
#define IMF_INSTRUMENT_WOODBLOCK
#define IMF_INSTRUMENT_XYLOPHONE
#define IMF_INSTRUMENT_AGOGO
#define IMF_INSTRUMENT_SYNTHBRASS_1
#define IMF_INSTRUMENT_LEAD_3_CALLIOPE
#define IMF_INSTRUMENT_STRING_ENSEMBLE_2
#define IMF_INSTRUMENT_SYNTH_BASS_2
#define IMF_INSTRUMENT_ELECTRIC_PIANO2
#define IMF_INSTRUMENT_FRENCH_HORN
#define IMF_INSTRUMENT_TREMOLO_STRINGS
#define IMF_INSTRUMENT_FX_4_ATMOSPHERE
#define IMF_INSTRUMENT_ENGLISH_HORN
#define IMF_INSTRUMENT_BARITONE_SAX
#define IMF_INSTRUMENT_SHAKUHACHI
#define IMF_INSTRUMENT_CONTRABASS
#define IMF_INSTRUMENT_VIOLA
#define IMF_INSTRUMENT_TROMBONE
#define IMF_INSTRUMENT_OVERDRIVEN_GUITAR
#define IMF_INSTRUMENT_ELECTRIC_PIANO1
#define IMF_INSTRUMENT_TAIKO_DRUM