Try and make some sense ot of simon 2 midi systems
svn-id: r7678
This commit is contained in:
parent
3d14e5305e
commit
7091080e7d
4 changed files with 28 additions and 22 deletions
|
@ -753,7 +753,7 @@ int SimonState::runScript() {
|
||||||
if (_debugMode)
|
if (_debugMode)
|
||||||
warning("stopMidiMusic: not implemented");
|
warning("stopMidiMusic: not implemented");
|
||||||
_vc70_var2 = 0xFFFF;
|
_vc70_var2 = 0xFFFF;
|
||||||
_midi_unk1 = 0xFFFF;
|
_last_music_played = 0xFFFF;
|
||||||
_vc72_var1 = 0xFFFF;
|
_vc72_var1 = 0xFFFF;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1441,27 +1441,24 @@ void SimonState::o_unk_127() {
|
||||||
if (_debugMode)
|
if (_debugMode)
|
||||||
warning("o_unk_127(%d,%d,%d) not implemented properly", a, b, c);
|
warning("o_unk_127(%d,%d,%d) not implemented properly", a, b, c);
|
||||||
|
|
||||||
if (_midi_unk1 == a) {
|
if (_last_music_played == a) {
|
||||||
if (b == _vc72_var1 || b == 999) {
|
if (b == _vc72_var1 || b == 999)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
if (_vc72_var1 != 0xFFFF || _vc72_var1 != 999) {
|
if (_vc72_var1 != 0xFFFF || _vc72_var1 != 999) {
|
||||||
_vc70_var2 = c;
|
_vc70_var2 = c;
|
||||||
_vc70_var1 = 0xffff;
|
_vc70_var1 = 0xffff;
|
||||||
_vc72_var3 = 0xffff;
|
_vc72_var3 = 0xffff;
|
||||||
_midi_unk2 = 0xffff;
|
_next_music_to_play = 0xffff;
|
||||||
if (_game & GF_WIN) {
|
if (!(_music_paused))
|
||||||
// FIXME: What do we expect to happen at this moment?
|
midi_play(b);
|
||||||
// midi.initialize();
|
|
||||||
// midi.play();
|
|
||||||
}
|
|
||||||
_vc72_var1 = b;
|
_vc72_var1 = b;
|
||||||
} else {
|
} else {
|
||||||
_vc72_var3 = b;
|
_vc72_var3 = b;
|
||||||
_vc72_var2 = c;
|
_vc72_var2 = c;
|
||||||
}
|
}
|
||||||
} else if (b == 999) {
|
} else if (b == 999) {
|
||||||
_midi_unk2 = a;
|
_next_music_to_play = a;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (a != _last_music_played) {
|
if (a != _last_music_played) {
|
||||||
|
|
|
@ -5037,6 +5037,19 @@ bool SimonState::load_game(uint slot) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SimonState::midi_play(uint music) {
|
||||||
|
// FIXME What exactly should this function do?
|
||||||
|
if (music != 0) {
|
||||||
|
//_midi_cur_song_ptr = ((arg_0 & 0xFFFF) << 4) + midi_songs;
|
||||||
|
if (_vc72_var1 == 999)
|
||||||
|
//midi.initialize();
|
||||||
|
|
||||||
|
//_midi_var11 = 0;
|
||||||
|
//_midi_var12 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SimonState::playMusic(uint music_unk, uint music) {
|
void SimonState::playMusic(uint music_unk, uint music) {
|
||||||
if (midi._midi_sfx_toggle)
|
if (midi._midi_sfx_toggle)
|
||||||
return;
|
return;
|
||||||
|
@ -5049,11 +5062,11 @@ void SimonState::playMusic(uint music_unk, uint music) {
|
||||||
} else {
|
} else {
|
||||||
midi.playXMIDI (_game_file);
|
midi.playXMIDI (_game_file);
|
||||||
}
|
}
|
||||||
_midi_unk1 = music;
|
_last_music_played = music;
|
||||||
_vc72_var1 = music_unk;
|
_vc72_var1 = music_unk;
|
||||||
_vc70_var1 = 0xFFFF;
|
_vc70_var1 = 0xFFFF;
|
||||||
_vc72_var3 = 0xFFFF;
|
_vc72_var3 = 0xFFFF;
|
||||||
_midi_unk2 = 0xFFFF;
|
_next_music_to_play = 0xFFFF;
|
||||||
} else { // Simon 1 music
|
} else { // Simon 1 music
|
||||||
if (_game & GF_AMIGAS) {
|
if (_game & GF_AMIGAS) {
|
||||||
if (_game != GAME_SIMON1CD32) {
|
if (_game != GAME_SIMON1CD32) {
|
||||||
|
|
|
@ -192,7 +192,6 @@ public:
|
||||||
int _x_scroll, _vga_var1, _vga_var2, _vga_var3, _vga_var5;
|
int _x_scroll, _vga_var1, _vga_var2, _vga_var3, _vga_var5;
|
||||||
byte _vga_var8;
|
byte _vga_var8;
|
||||||
|
|
||||||
uint16 _midi_unk1, _midi_unk2;
|
|
||||||
uint16 _vc72_var1, _vc72_var2, _vc72_var3;
|
uint16 _vc72_var1, _vc72_var2, _vc72_var3;
|
||||||
uint16 _vc70_var1, _vc70_var2;
|
uint16 _vc70_var1, _vc70_var2;
|
||||||
byte *_vga_var7;
|
byte *_vga_var7;
|
||||||
|
@ -253,6 +252,7 @@ public:
|
||||||
|
|
||||||
uint _midi_sfx;
|
uint _midi_sfx;
|
||||||
uint _last_music_played;
|
uint _last_music_played;
|
||||||
|
uint _next_music_to_play;
|
||||||
|
|
||||||
bool _show_preposition;
|
bool _show_preposition;
|
||||||
bool _showmessage_flag;
|
bool _showmessage_flag;
|
||||||
|
@ -762,6 +762,7 @@ public:
|
||||||
void video_putchar_newline(FillOrCopyStruct *fcs);
|
void video_putchar_newline(FillOrCopyStruct *fcs);
|
||||||
void video_putchar_drawchar(FillOrCopyStruct *fcs, uint x, uint y, byte chr);
|
void video_putchar_drawchar(FillOrCopyStruct *fcs, uint x, uint y, byte chr);
|
||||||
|
|
||||||
|
void midi_play(uint music);
|
||||||
void playMusic(uint music, uint music_unk);
|
void playMusic(uint music, uint music_unk);
|
||||||
void checkTimerCallback();
|
void checkTimerCallback();
|
||||||
void delay(uint delay);
|
void delay(uint delay);
|
||||||
|
|
|
@ -1692,9 +1692,8 @@ void SimonState::vc_62_palette_thing() {
|
||||||
|
|
||||||
if (!_video_var_3) {
|
if (!_video_var_3) {
|
||||||
if (_game & GF_SIMON2) {
|
if (_game & GF_SIMON2) {
|
||||||
if (_midi_unk2 != 0xffff) {
|
if (_next_music_to_play != 0xffff)
|
||||||
playMusic(999, _midi_unk2);
|
playMusic(999, _next_music_to_play);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
_video_var_3 = true;
|
_video_var_3 = true;
|
||||||
|
@ -1813,11 +1812,7 @@ void SimonState::vc_69() {
|
||||||
|
|
||||||
if (_vc72_var1 == 999) {
|
if (_vc72_var1 == 999) {
|
||||||
_vc70_var2 = b;
|
_vc70_var2 = b;
|
||||||
if (_game & GF_WIN) {
|
midi_play(a);
|
||||||
// FIXME: What do we expect to have happen here?
|
|
||||||
// midi.initialize();
|
|
||||||
// midi.play();
|
|
||||||
}
|
|
||||||
_vc72_var1 = b;
|
_vc72_var1 = b;
|
||||||
} else if (_vc72_var1 != 0xFFFF) {
|
} else if (_vc72_var1 != 0xFFFF) {
|
||||||
if (_vc72_var1 != a) {
|
if (_vc72_var1 != a) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue