[Scummvm-cvs-logs] CVS: scummvm/simon midi.cpp,1.3,1.4 simon.cpp,1.6,1.7 simon.h,1.2,1.3

Ludvig Strigeus strigeus at users.sourceforge.net
Sat Apr 13 11:32:22 CEST 2002


Update of /cvsroot/scummvm/scummvm/simon
In directory usw-pr-cvs1:/tmp/cvs-serv8171/simon

Modified Files:
	midi.cpp simon.cpp simon.h 
Log Message:
new midi driver API,
no more USE_ADLIB,
a couple of sdl graphics driver fixes.


Index: midi.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/midi.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** midi.cpp	13 Apr 2002 10:41:27 -0000	1.3
--- midi.cpp	13 Apr 2002 18:31:45 -0000	1.4
***************
*** 24,32 ****
  #include "scummsys.h"
  #include "system.h"
  #include "simon.h"
  
- /* This is win32 only code at the moment */
- #ifdef WIN32
- 
  void MidiPlayer::read_from_file(void *dst, uint size) {
  	if (fread(dst, size, 1, _input) != 1)
--- 24,30 ----
  #include "scummsys.h"
  #include "system.h"
+ #include "gmidi.h"
  #include "simon.h"
  
  void MidiPlayer::read_from_file(void *dst, uint size) {
  	if (fread(dst, size, 1, _input) != 1)
***************
*** 136,143 ****
  		t->delay = track_read_gamma(t);
  	}
- 
  }
  
- 
  void MidiPlayer::read_one_song(Song *s) {
  	_midi_var10 = 0;
--- 134,139 ----
***************
*** 191,263 ****
  
  void MidiPlayer::initialize() {
! #ifdef WIN32
! 	uint i;
! 	MyMidiHdr *mmh;
! 	MIDIPROPTIMEDIV mptd;
! 	uint x;
! 
! 	if (_midi_stream_handle == NULL) {
! 		_midi_device_id = 0;
! 		check_error(midiStreamOpen(&_midi_stream_handle, &_midi_device_id, 1, 
! 			(uint32)midi_callback, (uint32)this, CALLBACK_FUNCTION));
! 	}
! 
! 	for(i=0,mmh=_prepared_headers; i!=NumPreparedHeaders; i++,mmh++) {
! 		mmh->hdr.dwBufferLength = 0x400;
! 		mmh->hdr.lpData = (LPSTR)calloc(0x400,1);
! 		if (mmh->hdr.lpData == NULL)
! 			error("Out of memory for prepared header");
! 	}
  
  	for(i=0; i!=16; i++)
  		_midi_volume_table[i] = 100;
- 	
- 	mptd.cbStruct = sizeof(mptd);
- 	mptd.dwTimeDiv = _midi_songs[0].ppqn;
- 
- 	check_error(midiStreamProperty(_midi_stream_handle, (byte*)&mptd, 
- 		MIDIPROP_SET | MIDIPROP_TIMEDIV));
- 
  	_midi_5 = 0;
- 	x = 1;
- 	
- 	for(i=0,mmh=_prepared_headers; i!=NumPreparedHeaders; i++,mmh++) {
- 		
- 		fill(x, mmh);
- 
- 		mmh->hdr.dwBytesRecorded = mmh->b;
- 		
- 		if (!_midi_var9) {
- 			check_error(midiOutPrepareHeader((HMIDIOUT)_midi_stream_handle, 
- 				&mmh->hdr, sizeof(mmh->hdr)));
- 		}
- 		
- 		check_error(midiStreamOut(_midi_stream_handle, 
- 			&mmh->hdr, sizeof(mmh->hdr)));
  
! 		x = 0;
! 	}
  
  	_midi_var9 = true;
- #endif
  }
  
! int MidiPlayer::fill(uint x, MyMidiHdr *mmh) {
! 	uint32 best,i;
  	Track *best_track,*t;
  	bool did_reset;
! 
! 	mmh->a = 0;
! 	mmh->size = 0x200;
! 	mmh->c = 0;
! 	mmh->d = 0;
! 	mmh->b = 0;
  
  	did_reset = false;
  	
! 	for(;;) {
! 		if (mmh->size - mmh->b < 12)
! 			return 1;
! 		
  		best_track = NULL;
  		best = 0xFFFFFFFF;
--- 187,216 ----
  
  void MidiPlayer::initialize() {
! 	int res;
! 	int i;
  
  	for(i=0; i!=16; i++)
  		_midi_volume_table[i] = 100;
  	_midi_5 = 0;
  
! 	_md->property(MidiDriver::PROP_TIMEDIV, _midi_songs[0].ppqn);
  
+ 	res = _md->open(MidiDriver::MO_STREAMING);
+ 	if (res != 0)
+ 		error("MidiPlayer::initializer, got %s", MidiDriver::get_error_name(res));
+ 	
  	_midi_var9 = true;
  }
  
! int MidiPlayer::fill(MidiEvent *me, int num_event) {
! 	uint32 best,j;
  	Track *best_track,*t;
  	bool did_reset;
! 	NoteRec midi_tmp_note_rec;
! 	int i = 0;
  
  	did_reset = false;
  	
! 	for(i=0; i!=num_event;) {
  		best_track = NULL;
  		best = 0xFFFFFFFF;
***************
*** 265,269 ****
  		/* Locate which track that's next */
  		t = _midi_cur_song_ptr->tracks;
! 		for(i=0; i!=_midi_cur_song_ptr->num_tracks; i++,t++) {
  			if (!(t->a&1)) {
  				if (t->delay < best) {
--- 218,222 ----
  		/* Locate which track that's next */
  		t = _midi_cur_song_ptr->tracks;
! 		for(j=_midi_cur_song_ptr->num_tracks; j; j--,t++) {
  			if (!(t->a&1)) {
  				if (t->delay < best) {
***************
*** 277,281 ****
  			/* reset tracks if song ended? */
  			if (did_reset) {
! 				return 0;
  			}
  			did_reset = true;
--- 230,235 ----
  			/* reset tracks if song ended? */
  			if (did_reset) {
! 				/* exit if song ended completely */
! 				return i;
  			}
  			did_reset = true;
***************
*** 284,552 ****
  		}
  
! 		read_next_note(best_track, &_midi_tmp_note_rec);
! //		if ((_midi_tmp_note_rec.cmd&0xF)==3) {
! //			printf("%4d: %2X %d\n", _midi_tmp_note_rec.delay,
! //				_midi_tmp_note_rec.cmd, _midi_tmp_note_rec.param_1);
! 			fill_helper(&_midi_tmp_note_rec, mmh);
! //		}
  
! 		if (_midi_num_sysex) {
! 			free(_midi_tmp_note_rec.sysex_data);
! 			_midi_num_sysex--;
! 		}
  	}
- }
- 
- int MidiPlayer::fill_helper(NoteRec *nr, MyMidiHdr *mmh) {
- #ifdef WIN32
- 	byte *lpdata;
- 	uint b;
  
! 	lpdata = (byte*)mmh->hdr.lpData + mmh->a + mmh->b;
! 
! 	b = nr->delay - _midi_var10;
! 	_midi_var10 = nr->delay;
! 	
! 	if (nr->cmd<0xF0) {
! 		((MIDIEVENT*)lpdata)->dwDeltaTime = b;
! 		((MIDIEVENT*)lpdata)->dwStreamID = 0;
! 		((MIDIEVENT*)lpdata)->dwEvent = nr->cmd | (nr->param_1<<8) | (nr->param_2<<16);
! 		
! 		if ((nr->cmd&0xF0) == 0xB0 && nr->param_1 == 7) {
! 			_midi_volume_table[nr->cmd&0xF] = nr->param_2;
! 
! 			nr->param_1 = 0x76;
! 
! 			((MIDIEVENT*)lpdata)->dwEvent = nr->cmd | 
! 				(nr->param_1<<8) | (nr->param_2<<16) | MEVT_F_CALLBACK;
! 		}
! 
! 		mmh->b += 12;
! 	} else if (nr->cmd==0xF0 || nr->cmd==0xF7) {
! 	} else if (nr->param_1 != 0x51) {
! 		return -105;
! 	} else {
! 		((MIDIEVENT*)lpdata)->dwDeltaTime = b;
! 		((MIDIEVENT*)lpdata)->dwStreamID = 0;
! 
! 		_midi_tempo = nr->sysex_data[2] | 
! 			(nr->sysex_data[1]<<8) | (nr->sysex_data[0]<<16);
! 		
! 		((MIDIEVENT*)lpdata)->dwEvent = _midi_tempo | (MEVT_TEMPO<<24);
! 
! 		_midi_var8 = (_midi_cur_song_ptr->ppqn*60000) / _midi_tempo;
! 		
! 		if(_midi_num_sysex) {
! 			free(nr->sysex_data);
! 			_midi_num_sysex--;
! 		}
! 	
! 		mmh->b += 12;
! 	}
! #endif
! 	return 0;
  }
  
! #if 0
! int MidiPlayer::fill(uint x, MyMidiHdr *mmh) {
! 	Track *t;
! 	uint i;
! 	uint32 best;
! 	Track *best_track;
! 	int result;
! 
! 	mmh->b = 0;
! 
! 	if (x&1) {
! 		NoteRec *nr = &_midi_tmp_note_rec;
! 		
! 		_midi_var1 = 0;
! 		nr->delay = 0;
! 		nr->big_cmd = 0;
! 		nr->cmd_length = 0;
! 		nr->sysex_data = NULL;
! 
! 		_midi_track_ptr = NULL;
! 		_midi_tick_track_ptr = NULL;
! 	}
! 
! 	if (_midi_var1 & 1) {
! 		if (_midi_var2 == 0)
! 			error("MidiPlayer::fill: Return -103");
! 		reset_tracks();
! 		_midi_var1 = 0;
! 	} else if (_midi_var1 & 2) {
! 		error("MidiPlayer::fill: Return -102");
! 	} else if (_midi_var1 & 4) {
! 		_midi_var1 ^= 4;
! 		
! 		if (_midi_tmp_note_rec.cmd==0xFF && _midi_tmp_note_rec.param_1==0x2F) {
! 			if (_midi_num_sysex) {
! 				free(_midi_tmp_note_rec.sysex_data);
! 				_midi_num_sysex--;
! 			}
! 		} else {
! 			result = fill_helper(&_midi_tmp_note_rec, mmh);
! 			if (result==-104) {
! 				_midi_var1 |= 4;
! 				return 0;
! 			}
! 		}
! 	}
! 
! 	/* find_next_track_to_run */
! 	for(;;) {
! 		best_track = NULL;
! 		best = 0xFFFFFFFF;
! 
! 		/* Locate which track that's next */
! 		t = _midi_cur_song_ptr->tracks;
! 		for(i=0; i!=_midi_cur_song_ptr->num_tracks; i++,t++) {
! 			if (!(t->a&1)) {
! 				if (t->delay < best) {
! 					best = t->delay;
! 					best_track = t;
! 				}
! 			}
! 		}
! 
! 		if (best_track == NULL) {
! 			_midi_var1 |= 1;
! 			return 0;
! 		}
! 
! 		read_next_note(best_track, &_midi_tmp_note_rec);
! 
! 		if (_midi_tmp_note_rec.cmd==0xFF && _midi_tmp_note_rec.param_1==0x2F) {
! 			if (_midi_num_sysex) {
! 				free(_midi_tmp_note_rec.sysex_data);
! 				_midi_num_sysex--;
! 			}
! 			continue;
! 		}
! 
! 		result = fill_helper(&_midi_tmp_note_rec, mmh);
! 		if (result==-104) {
! 			_midi_var1 |= 4;
! 			return 0;
! 		}
! 	}
  }
  
! int MidiPlayer::fill_helper(NoteRec *nr, MyMidiHdr *mmh) {
! 	byte *lpdata;
! 	uint a,b;
! 
! 	lpdata = (byte*)mmh->hdr.lpData + mmh->a + mmh->b;
! 
! 	if (mmh->b == 0) {
! 		mmh->c = _midi_var10;
! 	}
! 
! 	if (_midi_var10 - mmh->c > _midi_var8) {
! 		if (mmh->d!=0) {
! 			mmh->d = 0;
! 			return -104;
! 		}
! 		mmh->d = 1;
! 	}
  
- 	a = _midi_var10;
  	b = nr->delay - _midi_var10;
  	_midi_var10 = nr->delay;
  	
  	if (nr->cmd<0xF0) {
! 		if (mmh->size - mmh->b < 12)
! 			return -104;
! 
! 		((MIDIEVENT*)lpdata)->dwDeltaTime = b;
! 		((MIDIEVENT*)lpdata)->dwStreamID = 0;
! 		((MIDIEVENT*)lpdata)->dwEvent = nr->cmd | (nr->param_1<<8) | (nr->param_2<<16);
  		
  		if ((nr->cmd&0xF0) == 0xB0 && nr->param_1 == 7) {
  			_midi_volume_table[nr->cmd&0xF] = nr->param_2;
- 
  			nr->param_1 = 0x76;
! 
! 			((MIDIEVENT*)lpdata)->dwEvent = nr->cmd | 
! 				(nr->param_1<<8) | (nr->param_2<<16) | MEVT_F_CALLBACK;
! 		}
! 
! 		mmh->b += 12;
! 	} else if (nr->cmd==0xF0 || nr->cmd==0xF7) {
! 		if(_midi_num_sysex) {
! 			free(nr->sysex_data);
! 			_midi_num_sysex--;
! 		}
! 	} else if (nr->param_1 != 0x51) {
! 		if(_midi_num_sysex) {
! 			free(nr->sysex_data);
! 			_midi_num_sysex--;
! 		}
! 
! 		return -105;
! 	} else if (mmh->size - mmh->b < 12) {
! 		if(_midi_num_sysex) {
! 			free(nr->sysex_data);
! 			_midi_num_sysex--;
  		}
! 		return -104;
! 	} else {
! 		((MIDIEVENT*)lpdata)->dwDeltaTime = b;
! 		((MIDIEVENT*)lpdata)->dwStreamID = 0;
! 
! 		_midi_tempo = nr->sysex_data[2] | 
! 			(nr->sysex_data[1]<<8) | (nr->sysex_data[0]<<16);
! 		
! 		((MIDIEVENT*)lpdata)->dwEvent = _midi_tempo | (MEVT_TEMPO<<24);
  
- 		_midi_var8 = (_midi_cur_song_ptr->ppqn*60000) / _midi_tempo;
- 		
- 		if(_midi_num_sysex) {
- 			free(nr->sysex_data);
- 			_midi_num_sysex--;
- 		}
- 	
- 		mmh->b += 12;
  	}
! 
! 	return 0;
! }
! #endif
! 
! void MidiPlayer::add_finished_hdrs() {
! 	uint i;
! 	MyMidiHdr *mmh = _prepared_headers;
! 
! 	for(i=0; i!=NumPreparedHeaders; i++,mmh++) {
! 		if (!(mmh->hdr.dwFlags & MHDR_INQUEUE)) {
! 			fill(0, mmh);
! 			if (mmh->b == 0)
! 				break;
! 			mmh->hdr.dwBytesRecorded = mmh->b;
! 			check_error(midiStreamOut(_midi_stream_handle, &mmh->hdr, sizeof(mmh->hdr)));
! 		}
  	}
! }
! 
! void CALLBACK MidiPlayer::midi_callback(HMIDIOUT hmo, UINT wMsg,
! 	DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) {
  
! 	switch(wMsg) {
! 	case MM_MOM_DONE:{
! 		MidiPlayer *mp = ((MidiPlayer*)dwInstance);
! 		if (!mp->_shutting_down)
! 			mp->add_finished_hdrs();
! 		break;
! 		}
! 	}
! }
  
! void MidiPlayer::check_error(MMRESULT result) {
! 	char buf[200];
! 	if (result != MMSYSERR_NOERROR) {
! 		midiOutGetErrorText(result, buf, 200);
! 		error("MM System Error '%s'", buf);
! 	}
  }
  
--- 238,286 ----
  		}
  
! 		read_next_note(best_track, &midi_tmp_note_rec);
! 		if (fill_helper(&midi_tmp_note_rec, me + i))
! 			i++;
  
! 		if (midi_tmp_note_rec.sysex_data)	free(midi_tmp_note_rec.sysex_data);
  	}
  
! 	return i;
  }
  
! int MidiPlayer::on_fill(void *param, MidiEvent *ev, int num) {
! 	MidiPlayer *mp = (MidiPlayer*)param;
! 	return mp->fill(ev, num);
  }
  
! bool MidiPlayer::fill_helper(NoteRec *nr, MidiEvent *me) {
! 	uint b;
  
  	b = nr->delay - _midi_var10;
  	_midi_var10 = nr->delay;
  	
  	if (nr->cmd<0xF0) {
! 		me->delta = b;
! 		me->event = nr->cmd | (nr->param_1<<8) | (nr->param_2<<16);
  		
  		if ((nr->cmd&0xF0) == 0xB0 && nr->param_1 == 7) {
  			_midi_volume_table[nr->cmd&0xF] = nr->param_2;
  			nr->param_1 = 0x76;
! 			me->event = nr->cmd | (nr->param_1<<8) | (nr->param_2<<16)/* | MEVT_F_CALLBACK*/;
  		}
! 		return true;
  
  	}
! 	
! 	if (nr->cmd==0xF0 || nr->cmd==0xF7 || nr->param_1 != 0x51) {
! 		return false;
  	}
! 	
! 	_midi_tempo = nr->sysex_data[2] | (nr->sysex_data[1]<<8) | (nr->sysex_data[0]<<16);
! 	_midi_var8 = (_midi_cur_song_ptr->ppqn*60000) / _midi_tempo;
  
! 	me->delta = b;
! 	me->event = (MidiDriver::ME_TEMPO << 24) | _midi_tempo;
  
! 	return true;
  }
  
***************
*** 629,633 ****
  		for(i=0; i!=nr->cmd_length; i++)
  			nr->sysex_data[i] = track_read_byte(t);
- 		_midi_num_sysex++;
  	} else if (cmd_byte==0xFF) {
  		
--- 363,366 ----
***************
*** 643,647 ****
  			for(i=0; i!=nr->cmd_length; i++)
  				nr->sysex_data[i] = track_read_byte(t);
- 			_midi_num_sysex++;
  		}
  		if (nr->param_1==0x2F)
--- 376,379 ----
***************
*** 658,676 ****
  
  void MidiPlayer::shutdown() {
! 	
! 	if (_midi_stream_handle != NULL) {
! 		_shutting_down = true;
! 		
! 		check_error(midiStreamStop(_midi_stream_handle));
! 		check_error(midiOutReset((HMIDIOUT)_midi_stream_handle));
! 
! 		unload();
! 		unprepare();
! 
! 		check_error(midiStreamClose(_midi_stream_handle));
! 		_midi_stream_handle = NULL;
! 
! 		_shutting_down = false;
! 	}
  }
  
--- 390,395 ----
  
  void MidiPlayer::shutdown() {
! 	_md->close();
! 	unload();
  }
  
***************
*** 691,720 ****
  }
  
- void MidiPlayer::unprepare() {
- 	uint i;
- 	MyMidiHdr *mmh = _prepared_headers;
- 
- 	for(i=0; i!=NumPreparedHeaders; i++,mmh++) {
- 		check_error(midiOutUnprepareHeader(
- 			(HMIDIOUT)_midi_stream_handle, &mmh->hdr, sizeof(mmh->hdr)));
- 		free(mmh->hdr.lpData);
- 		mmh->hdr.lpData = NULL;
- 	}
- 
- 	_midi_var9 = false;
- }
- 
  void MidiPlayer::play() {
! 	check_error(midiStreamRestart(_midi_stream_handle));
  }
  
- #else
  
! /* Dummy midiplayer for unix */
! void MidiPlayer::shutdown() {}
! void MidiPlayer::read_all_songs(FILE *in) {}
! void MidiPlayer::read_all_songs_old(FILE *in) {}
! void MidiPlayer::initialize() {}
! void MidiPlayer::play() {}
  
- #endif
\ No newline at end of file
--- 410,422 ----
  }
  
  void MidiPlayer::play() {
! 	_md->pause(false);
  }
  
  
! void MidiPlayer::set_driver(MidiDriver *md) {
! 	_md = md;
! 	md->set_stream_callback(this, on_fill);
! }
! 
  

Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** simon.cpp	13 Apr 2002 12:43:02 -0000	1.6
--- simon.cpp	13 Apr 2002 18:31:45 -0000	1.7
***************
*** 7516,7524 ****
  
  
! void SimonState::go(OSystem *syst) {
  	_system = syst;
  
  	if (!_dump_file)
  		_dump_file = stdout;
  
  	/* allocate buffers */
--- 7516,7527 ----
  
  
! void SimonState::go(OSystem *syst, MidiDriver *driver) {
  	_system = syst;
  
  	if (!_dump_file)
  		_dump_file = stdout;
+ 
+ 	/* Setup midi driver */
+ 	midi.set_driver(driver);
  
  	/* allocate buffers */

Index: simon.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** simon.h	13 Apr 2002 11:31:54 -0000	1.2
--- simon.h	13 Apr 2002 18:31:45 -0000	1.3
***************
*** 231,234 ****
--- 231,236 ----
  #endif
  
+ class MidiDriver;
+ struct MidiEvent;
  
  class MidiPlayer {
***************
*** 239,243 ****
  	void shutdown();
  	void play();
! 	
  private:
  	struct Track {
--- 241,246 ----
  	void shutdown();
  	void play();
! 	void set_driver(MidiDriver *md);
! 		
  private:
  	struct Track {
***************
*** 258,272 ****
  	};
  
- 	struct MyMidiHdr {
- 		MIDIHDR hdr;
- 		uint32 a;
- 		uint32 size;
- 		uint32 b;
- 		uint32 c;
- 		uint32 d;
- 	};
- 
  	struct NoteRec {
- #ifdef WIN32
  		uint32 delay;
  		union {
--- 261,265 ----
***************
*** 280,295 ****
  		uint cmd_length;
  		byte *sysex_data;
- #endif
  	};
  
! 	enum {
! 		NumPreparedHeaders = 2,
! 	};
  
  	FILE *_input;
  
- 	HMIDISTRM _midi_stream_handle;
- 	UINT _midi_device_id;
- 
  	uint _midi_var10, _midi_5;
  	bool _midi_var9;
--- 273,282 ----
  		uint cmd_length;
  		byte *sysex_data;
  	};
  
! 	MidiDriver *_md;
  
  	FILE *_input;
  
  	uint _midi_var10, _midi_5;
  	bool _midi_var9;
***************
*** 300,305 ****
  	uint _midi_var11;
  
- 	uint _midi_num_sysex;
- 
  	uint32 _midi_tempo;
  	
--- 287,290 ----
***************
*** 312,321 ****
  	Song *_midi_cur_song_ptr;
  
- 	NoteRec _midi_tmp_note_rec;
- 	
  	uint32 _midi_volume_table[16];
  
  	Song _midi_songs[8];
- 	MyMidiHdr _prepared_headers[NumPreparedHeaders];
  
  	void read_mthd(Song *s, bool old);
--- 297,303 ----
***************
*** 330,349 ****
  	static byte track_read_byte(Track *t);
  
! 	static void check_error(MMRESULT result);
! 
! 	int fill(uint x, MyMidiHdr *mmh);
! 	int fill_helper(NoteRec *nr, MyMidiHdr *mmh);
  
  	void reset_tracks();
  	void read_next_note(Track *t, NoteRec *nr);
  
- 	static void CALLBACK midi_callback(HMIDIOUT hmo, UINT wMsg,
- 		DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);
- 
- 
  	void unload();
- 	void unprepare();
  
! 	void add_finished_hdrs();
  
  };
--- 312,324 ----
  	static byte track_read_byte(Track *t);
  
! 	int fill(MidiEvent *me, int num_event);
! 	bool fill_helper(NoteRec *nr, MidiEvent *me);
  
  	void reset_tracks();
  	void read_next_note(Track *t, NoteRec *nr);
  
  	void unload();
  
! 	static int on_fill(void *param, MidiEvent *ev, int num);
  
  };
***************
*** 976,980 ****
  	void resfile_read(void *dst, uint32 offs, uint32 size);
  
! 	void go(OSystem *syst);
  	void openGameFile();
  
--- 951,955 ----
  	void resfile_read(void *dst, uint32 offs, uint32 size);
  
! 	void go(OSystem *syst, MidiDriver *driver);
  	void openGameFile();
  





More information about the Scummvm-git-logs mailing list