shithub: cstory

ref: 2cd6692a00c2af3644183b362ffc6dcaddc77981
dir: /src/Organya.h/

View raw version
#pragma once

//Below are Organya song data structures
struct NOTELIST {
	NOTELIST *from; //Previous address
	NOTELIST *to; //Next address

	long x; //Position
	unsigned char length; //Sound length
	unsigned char y; //Sound height
	unsigned char volume; //Volume
	unsigned char pan;
};

//Track data * 8
struct TRACKDATA {
	unsigned short freq; //Frequency (1000 is default)
	unsigned char wave_no; //Waveform No.
	signed char pipi;
	unsigned short note_num; //Number of notes

	NOTELIST *note_p;
	NOTELIST *note_list;
};

//Unique information held in songs
struct MUSICINFO {
	unsigned short wait;
	bool loaded;
	bool playing;
	unsigned char line; //Number of lines in one measure
	unsigned char dot; //Number of dots per line
	unsigned short alloc_note; //Number of allocated notes
	long repeat_x; //Repeat
	long end_x; //End of song (Return to repeat)
	TRACKDATA tdata[16];
};

bool MakeOrganyaWave(signed char track, signed char wave_no, signed char pipi);
void OrganyaPlayData();
void SetPlayPointer(long x);
void LoadOrganya(const char *name);
void SetOrganyaPosition(unsigned int x);
unsigned int GetOrganyaPosition();
void PlayOrganyaMusic();
bool ChangeOrganyaVolume(signed int volume);
void StopOrganyaMusic();
void SetOrganyaFadeout();
void OrganyaStartTimer(unsigned int wait);
void OrganyaEndTimer();
void StartOrganya();
void EndOrganya();