Implement MAKO::get_mark() for FM sound

It still does not work for MIDI.
This commit is contained in:
kichikuou
2021-09-18 21:05:38 +09:00
parent da91f10779
commit bc3580e4ef
7 changed files with 37 additions and 10 deletions
+8 -2
View File
@@ -146,8 +146,14 @@ bool MAKO::check_music()
void MAKO::get_mark(int* mark, int* loop)
{
WARNING("not implemented");
*mark = *loop = 0;
SDL_LockMutex(fm_mutex);
if (fm) {
fm->get_mark(mark, loop);
} else {
*mark = 0;
*loop = 0;
}
SDL_UnlockMutex(fm_mutex);
}
void MAKO::play_pcm(int page, bool loop)
+6 -2
View File
@@ -75,8 +75,12 @@ bool MAKO::check_music()
void MAKO::get_mark(int* mark, int* loop)
{
WARNING("not implemented");
*mark = *loop = 0;
if (fm) {
fm->get_mark(mark, loop);
} else {
*mark = 0;
*loop = 0;
}
}
void MAKO::play_pcm(int page, bool loop)
+5
View File
@@ -60,3 +60,8 @@ void MakoFMgen::Mix(int samples) {
out_samples -= samples;
output += samples * 2;
}
void MakoFMgen::get_mark(int* mark, int* loop) {
*mark = GetMark();
*loop = Looped() ? 1 : 0;
}
+1
View File
@@ -8,6 +8,7 @@ class MakoFMgen : private MakoFM {
public:
MakoFMgen(int rate, const uint8_t* data, bool free_data);
void Process(int16* stream, int len);
void get_mark(int* mark, int* loop);
private:
void SetReg(RegType type, uint8_t addr, uint8_t val) override;
+1
View File
@@ -18,6 +18,7 @@ public:
double GetTime() const { return time_ms; }
bool Looped() const { return part_looped == (1 << MAKO_MAXCH) - 1; }
uint8_t GetMark() const { return current_mark; }
protected:
enum RegType {
+8 -3
View File
@@ -158,9 +158,14 @@ bool MAKO::check_music()
void MAKO::get_mark(int* mark, int* loop)
{
// TODO: fix
*mark = 0;
*loop = 0;
SDL_LockMutex(fm_mutex);
if (fm) {
fm->get_mark(mark, loop);
} else {
*mark = 0;
*loop = 0;
}
SDL_UnlockMutex(fm_mutex);
}
void MAKO::play_pcm(int page, bool loop)
+8 -3
View File
@@ -418,9 +418,14 @@ void MAKO::select_sound(BGMDevice dev)
void MAKO::get_mark(int* mark, int* loop)
{
// TODO: fix
*mark = 0;
*loop = 0;
SDL_LockMutex(fm_mutex);
if (fm) {
fm->get_mark(mark, loop);
} else {
*mark = 0;
*loop = 0;
}
SDL_UnlockMutex(fm_mutex);
}
void MAKO::play_pcm(int page, bool loop)