/* lproto.h */

/* special prototypes
 * only for the player
 */
 
/*
 * $Author: Espie $
 * $Date: 91/05/12 19:54:04 $
 * $Revision: 1.1 $
 * $Log:	lproto.h,v $
 * Revision 1.1  91/05/12  19:54:04  Espie
 * Initial revision
 * 
 *
 */

#ifndef FORWARD
/* my personal quirks */

#define FORWARD
#define LOCAL static
#define XT extern
#define forever while(TRUE)
#endif

XT void setup_arpeggio(struct priv_play *private, struct automaton *cst);
XT void setup_porta_up(struct priv_play *private, struct automaton *cst);
XT void setup_porta_down(struct priv_play *private, struct automaton *cst);
XT void setup_portamento(struct priv_play *private, struct automaton *cst);
XT void setup_vibrato(struct priv_play *private, struct automaton *cst);
XT void ignore(struct priv_play *private, struct automaton *cst);
XT void setup_volume_slide(struct priv_play *private, struct automaton *cst);
XT void do_fastskip(struct priv_play *private, struct automaton *cst);
XT void do_skip(struct priv_play *private, struct automaton *cst);
XT void do_change_volume(struct priv_play *private, struct automaton *cst);
XT void do_change_filter(struct priv_play *private, struct automaton *cst);
XT void do_change_speed(struct priv_play *private, struct automaton *cst);
XT void change_note(struct priv_play *private, struct automaton *cst);

XT void do_arpeggio0(struct priv_play *private, struct automaton *cst);
XT void do_arpeggio1(struct priv_play *private, struct automaton *cst);
XT void do_arpeggio2(struct priv_play *private, struct automaton *cst);
XT void do_porta_up(struct priv_play *private, struct automaton *cst);
XT void do_porta_down(struct priv_play *private, struct automaton *cst);
XT void do_porta0(struct priv_play *private, struct automaton *cst);
XT void do_porta1(struct priv_play *private, struct automaton *cst);
XT void do_vibrato(struct priv_play *private, struct automaton *cst);
XT void do_nothing(struct priv_play *private, struct automaton *cst);
XT void do_vol_slide0(struct priv_play *private, struct automaton *cst);
XT void do_vol_slide1(struct priv_play *private, struct automaton *cst);

XT void reset_player(struct play *play);
XT void play_next(struct play *play);
XT void continue_notes(struct play *play);
XT void play_notes(struct play *play);
XT void send(struct play *play, ULONG event);
XT void advance_position(struct play *play);
XT void init_player(struct play *play);
XT void wait_play(struct play *play);
XT void normal_play(struct play *play);
XT void latch_samples(struct play *play);
XT void install_replay(struct play *play);
XT void change_speed(struct play *play);

/* audio_hard.c */

XT void clear_mask(struct priv_play *private);
XT void change_volume(struct priv_play *private, int channel, int volume);
XT void change_period(struct priv_play *private, int channel, int period);
XT void set_note(struct priv_play *private, struct sample_info *i, 
	int channel, int period);
XT void set_replay(struct priv_play *private, struct sample_info *i, int channel);
XT void turn_on_dma(struct priv_play *private);
XT void init_audio_hard(struct priv_play *private);

XT void filter_on(void);
XT void filter_off(void);

#define PRIVATE play->private
#define PUBLIC play->public

 