[Scummvm-cvs-logs] CVS: scummvm mp3_cd.cpp,1.6,1.7 mp3_cd.h,1.2,1.3 readme.txt,1.12,1.13 sdl.cpp,1.72,1.73

James Brown ender at users.sourceforge.net
Fri Apr 5 00:49:08 CEST 2002


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

Modified Files:
	mp3_cd.cpp mp3_cd.h readme.txt sdl.cpp 
Log Message:
Updated readme, fixed -n subtitles option (thanks dsy) and stripped \M's
from mp3_cd files (cheers khalek). Arisme: check your CVS options, you need
to do CR/LF conversion :)



Index: mp3_cd.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/mp3_cd.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** mp3_cd.cpp	5 Apr 2002 06:08:22 -0000	1.6
--- mp3_cd.cpp	5 Apr 2002 08:48:10 -0000	1.7
***************
*** 1,295 ****
! /* ScummVM - Scumm Interpreter
!  * Copyright (C) 2002 The ScummVM project
!  *
!  * This program is free software; you can redistribute it and/or
!  * modify it under the terms of the GNU General Public License
!  * as published by the Free Software Foundation; either version 2
!  * of the License, or (at your option) any later version.
!  *
!  * This program is distributed in the hope that it will be useful,
!  * but WITHOUT ANY WARRANTY; without even the implied warranty of
!  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!  * GNU General Public License for more details.
!  *
!  * You should have received a copy of the GNU General Public License
!  * along with this program; if not, write to the Free Software
!  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
!  *
!  * $Header$
!  */
! 
! #include "stdafx.h"
! #include "scumm.h"
! #include <SDL.H>
! 
! #ifdef COMPRESSED_SOUND_FILE
! #include "mp3_cd.h"
! 
! int _current_mp3_cd_track;
! struct xing _vbr_header;
! struct mad_header _mad_header;
! long _mp3_size;
! FILE *_mp3_track;
! MixerChannel *_mc;
! 
! // From xing.c in MAD
! 
! int xing_parse(struct xing *xing, struct mad_bitptr ptr, unsigned int bitlen)
! {
! 
!   xing->flags = 0;
! 
!   if (bitlen < 64 || mad_bit_read(&ptr, 32) != XING_MAGIC)
!     goto fail;
! 
!   xing->flags = mad_bit_read(&ptr, 32);
!   bitlen -= 64;
! 
!   if (xing->flags & XING_FRAMES) {
!     if (bitlen < 32)
!       goto fail;
! 
!     xing->frames = mad_bit_read(&ptr, 32);
!     bitlen -= 32;
!   }
! 
!   if (xing->flags & XING_BYTES) {
!     if (bitlen < 32)
!       goto fail;
! 
!     xing->bytes = mad_bit_read(&ptr, 32);
!     bitlen -= 32;
!   }
! 
!   if (xing->flags & XING_TOC) {
!     int i;
! 
!     if (bitlen < 800)
!       goto fail;
! 
!     for (i = 0; i < 100; ++i)
!       xing->toc[i] = (unsigned char)mad_bit_read(&ptr, 8);
! 
!     bitlen -= 800;
!   }
! 
!   if (xing->flags & XING_SCALE) {
!     if (bitlen < 32)
!       goto fail;
! 
!     xing->scale = mad_bit_read(&ptr, 32);
!     bitlen -= 32;
!   }
! 
!   return 0;
! 
!  fail:
!   xing->flags = 0;
!   return -1;
! }
! 
! // Borrowed from Winamp plugin in_mad.c
! 
! bool parse_xing_vbr_tag()
! {
!   struct mad_stream stream;
!   struct mad_frame frame;
!   unsigned char buffer[8192];
!   unsigned int buflen = 0;
!   int count = 0, result = 0;
! 
!   _vbr_header.flags = 0;
! 
!   mad_stream_init(&stream);
!   mad_frame_init(&frame);
!   
!   fseek(_mp3_track, 0, SEEK_SET);
! 
!   while (1) {
!     if (buflen < sizeof(buffer)) {
!       uint16 bytes;        
! 
! 	  bytes = fread(buffer + buflen, 1, sizeof(buffer) - buflen, _mp3_track);
!       if (bytes <= 0) {
! 	if (bytes == -1)
! 	  result = -1;
! 	break;
!       }
! 
!       buflen += bytes;
!     }
! 
!     mad_stream_buffer(&stream, buffer, buflen);
! 
!     while (1) {
!       if (mad_frame_decode(&frame, &stream) == -1) {
! 	if (!MAD_RECOVERABLE(stream.error))
! 	  break;
! 
! 	if (stream.error != MAD_ERROR_BADCRC)
! 	  continue;
!       }
! 
!       if (count++ || 
! 		  xing_parse(&_vbr_header, stream.anc_ptr, stream.anc_bitlen) 
! 			== -1)
! 	break;
!     }
! 
!     if (count || stream.error != MAD_ERROR_BUFLEN)
!       break;
! 
!     memmove(buffer, stream.next_frame,
! 	    buflen = &buffer[buflen] - stream.next_frame);
!   }
! 
!   if (count)
! 	  memcpy(&_mad_header, &frame.header, sizeof(mad_header));
!   else
! 	  result = -1;
! 
!   mad_frame_finish(&frame);
!   mad_stream_finish(&stream);
! 
!   return (result != -1);
! }
! 
! uint32 calc_cd_file_offset(int start_frame) {
! 	long offset;
! 
! 	if (!_vbr_header.flags) {
! 		float frame_size;
! 		//mad_timer_t timer;  - recode with timer
! 
! 		/* Constant bit rate - perhaps not fully accurate */
! 		frame_size = 144 * _mad_header.bitrate / _mad_header.samplerate;
! 		offset = (long)((float)start_frame / (float)CD_FPS * 1000 / 
! 				 (float)((float)1152 / (float)_mad_header.samplerate * 1000) *
! 				 (float)(frame_size + 0.5));			
! 	}
! 	else {
!         /* DOES NOT WORK AT THE MOMENT */
! 		/* see Xing SDK */
! 		long a;
! 		float fa, fb, fx;
! 		float percent = (float)start_frame / (float)CD_FPS * 1000 /
! 						((float)((float)1152 / (float)_mad_header.samplerate * 1000) * _vbr_header.frames) *
! 						100;
! 
! 		if( percent < 0.0f )   percent = 0.0f;
! 		if( percent > 100.0f ) percent = 100.0f;
! 
! 		a = (int)percent;
! 		if( a > 99 ) a = 99;
! 		fa = _vbr_header.toc[a];
! 		if( a < 99 ) {
! 			fb = _vbr_header.toc[a+1];
! 		}
! 		else {
! 			fb = 256.0f;
! 		}
! 
! 		fx = fa + (fb-fa)*(percent-a);
! 
! 		offset = (int)((1.0f/256.0f)*fx*_vbr_header.bytes); 
! 
! 	}
! 
! 	return offset;
! }
! 
! bool mp3_cd_play(Scumm *s, int track, int num_loops, int start_frame, int end_frame) {
! 
! 	// See if we are already playing this track, else try to open it
! 
! 	if (_current_mp3_cd_track != track) {
! 		char track_name[1024];				
! 
! 		sprintf(track_name, "%strack%d.mp3", s->_gameDataPath, track);
! 		_mp3_track = fopen(track_name, "rb");
! 		if (!_mp3_track) {
! 			warning("No CD and track %d not available in mp3 format", track);
!                         return false;
! 		}
! 
! 		if (!parse_xing_vbr_tag()) {
! 				warning("Error parsing file header - ignoring file", 
! 							track);
! 				fclose(_mp3_track);
!                                 return false;
! 		}
! 
! 		if (_vbr_header.flags) {
! 			if (!(
! 				    (_vbr_header.flags & XING_TOC) &&
! 					(_vbr_header.flags & XING_BYTES) &&
! 					(_vbr_header.flags & XING_FRAMES)
! 				)) {
! 				warning("Missing required part of VBR header - ignoring file");
! 				fclose(_mp3_track);
! 				_vbr_header.flags = 0;
!                                 return false;
! 			}
! 		}
! 
! 		// Allocate the music mixer if necessary
! 
! 		if (!_mc) {
! 			_mc = s->allocateMixer();
! 			if (!_mc) {
! 				warning("No mixer channel available for MP3 music");
!                                 return false;
! 			}
! 		}
! 
! 		fseek(_mp3_track, 0, SEEK_END);
! 		_mp3_size = ftell(_mp3_track);
! 		fseek(_mp3_track, 0, SEEK_SET);
! 
! 		_mc->type = MIXER_MP3_CDMUSIC;
! 		_mc->sound_data.mp3_cdmusic.file = _mp3_track;
!                 _mc->sound_data.mp3_cdmusic.playing = false;
! 		_mc->sound_data.mp3_cdmusic.buffer_size = 200000;
! 		_mc->_sfx_sound = malloc(_mc->sound_data.mp3_cdmusic.buffer_size); 
! 
! 														/* see if it's enough */
! 		mad_stream_init(&_mc->sound_data.mp3.stream);
! 		if (_mad_header.samplerate == 44100) 
! 			mad_stream_options((mad_stream*)&_mc->sound_data.mp3.stream, 
! 								MAD_OPTION_HALFSAMPLERATE);
! 
! 		mad_frame_init(&_mc->sound_data.mp3.frame);
! 		mad_synth_init(&_mc->sound_data.mp3.synth);
! 
! 		_current_mp3_cd_track = track;		
! 	}
! 
! 
! 	if (_current_mp3_cd_track == track) {
! 
! 		uint32 where;
! 
! 		// See where we want to go
! 		where = calc_cd_file_offset(start_frame);
! 
! 		if (start_frame < 0 || end_frame < 0) {
! 			warning("Negative index in frame");
!                         return false;
! 		}
! 
! 		mad_timer_set(&_mc->sound_data.mp3_cdmusic.duration,
! 					  0,
! 					  end_frame,
! 					  CD_FPS);
! 
! 		fseek(_mp3_track, where, SEEK_SET);
!                 _mc->sound_data.mp3_cdmusic.playing = true;             
! 
!                 return true;
! 	}
! 
!         return false;
! }
! 
! #endif
! 
--- 1,295 ----
! /* ScummVM - Scumm Interpreter
!  * Copyright (C) 2002 The ScummVM project
!  *
!  * This program is free software; you can redistribute it and/or
!  * modify it under the terms of the GNU General Public License
!  * as published by the Free Software Foundation; either version 2
!  * of the License, or (at your option) any later version.
!  *
!  * This program is distributed in the hope that it will be useful,
!  * but WITHOUT ANY WARRANTY; without even the implied warranty of
!  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!  * GNU General Public License for more details.
!  *
!  * You should have received a copy of the GNU General Public License
!  * along with this program; if not, write to the Free Software
!  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
!  *
!  * $Header$
!  */
! 
! #include "stdafx.h"
! #include "scumm.h"
! 
! #ifdef COMPRESSED_SOUND_FILE
! #include "mp3_cd.h"
! #include <SDL.h>
! 
! int _current_mp3_cd_track;
! struct xing _vbr_header;
! struct mad_header _mad_header;
! long _mp3_size;
! FILE *_mp3_track;
! MixerChannel *_mc;
! 
! // From xing.c in MAD
! 
! int xing_parse(struct xing *xing, struct mad_bitptr ptr, unsigned int bitlen)
! {
! 
!   xing->flags = 0;
! 
!   if (bitlen < 64 || mad_bit_read(&ptr, 32) != XING_MAGIC)
!     goto fail;
! 
!   xing->flags = mad_bit_read(&ptr, 32);
!   bitlen -= 64;
! 
!   if (xing->flags & XING_FRAMES) {
!     if (bitlen < 32)
!       goto fail;
! 
!     xing->frames = mad_bit_read(&ptr, 32);
!     bitlen -= 32;
!   }
! 
!   if (xing->flags & XING_BYTES) {
!     if (bitlen < 32)
!       goto fail;
! 
!     xing->bytes = mad_bit_read(&ptr, 32);
!     bitlen -= 32;
!   }
! 
!   if (xing->flags & XING_TOC) {
!     int i;
! 
!     if (bitlen < 800)
!       goto fail;
! 
!     for (i = 0; i < 100; ++i)
!       xing->toc[i] = (unsigned char)mad_bit_read(&ptr, 8);
! 
!     bitlen -= 800;
!   }
! 
!   if (xing->flags & XING_SCALE) {
!     if (bitlen < 32)
!       goto fail;
! 
!     xing->scale = mad_bit_read(&ptr, 32);
!     bitlen -= 32;
!   }
! 
!   return 0;
! 
!  fail:
!   xing->flags = 0;
!   return -1;
! }
! 
! // Borrowed from Winamp plugin in_mad.c
! 
! bool parse_xing_vbr_tag()
! {
!   struct mad_stream stream;
!   struct mad_frame frame;
!   unsigned char buffer[8192];
!   unsigned int buflen = 0;
!   int count = 0, result = 0;
! 
!   _vbr_header.flags = 0;
! 
!   mad_stream_init(&stream);
!   mad_frame_init(&frame);
!   
!   fseek(_mp3_track, 0, SEEK_SET);
! 
!   while (1) {
!     if (buflen < sizeof(buffer)) {
!       uint16 bytes;        
! 
! 	  bytes = fread(buffer + buflen, 1, sizeof(buffer) - buflen, _mp3_track);
!       if (bytes <= 0) {
! 	if (bytes == -1)
! 	  result = -1;
! 	break;
!       }
! 
!       buflen += bytes;
!     }
! 
!     mad_stream_buffer(&stream, buffer, buflen);
! 
!     while (1) {
!       if (mad_frame_decode(&frame, &stream) == -1) {
! 	if (!MAD_RECOVERABLE(stream.error))
! 	  break;
! 
! 	if (stream.error != MAD_ERROR_BADCRC)
! 	  continue;
!       }
! 
!       if (count++ || 
! 		  xing_parse(&_vbr_header, stream.anc_ptr, stream.anc_bitlen) 
! 			== -1)
! 	break;
!     }
! 
!     if (count || stream.error != MAD_ERROR_BUFLEN)
!       break;
! 
!     memmove(buffer, stream.next_frame,
! 	    buflen = &buffer[buflen] - stream.next_frame);
!   }
! 
!   if (count)
! 	  memcpy(&_mad_header, &frame.header, sizeof(mad_header));
!   else
! 	  result = -1;
! 
!   mad_frame_finish(&frame);
!   mad_stream_finish(&stream);
! 
!   return (result != -1);
! }
! 
! uint32 calc_cd_file_offset(int start_frame) {
! 	long offset;
! 
! 	if (!_vbr_header.flags) {
! 		float frame_size;
! 		//mad_timer_t timer;  - recode with timer
! 
! 		/* Constant bit rate - perhaps not fully accurate */
! 		frame_size = 144 * _mad_header.bitrate / _mad_header.samplerate;
! 		offset = (long)((float)start_frame / (float)CD_FPS * 1000 / 
! 				 (float)((float)1152 / (float)_mad_header.samplerate * 1000) *
! 				 (float)(frame_size + 0.5));			
! 	}
! 	else {
!         /* DOES NOT WORK AT THE MOMENT */
! 		/* see Xing SDK */
! 		long a;
! 		float fa, fb, fx;
! 		float percent = (float)start_frame / (float)CD_FPS * 1000 /
! 						((float)((float)1152 / (float)_mad_header.samplerate * 1000) * _vbr_header.frames) *
! 						100;
! 
! 		if( percent < 0.0f )   percent = 0.0f;
! 		if( percent > 100.0f ) percent = 100.0f;
! 
! 		a = (int)percent;
! 		if( a > 99 ) a = 99;
! 		fa = _vbr_header.toc[a];
! 		if( a < 99 ) {
! 			fb = _vbr_header.toc[a+1];
! 		}
! 		else {
! 			fb = 256.0f;
! 		}
! 
! 		fx = fa + (fb-fa)*(percent-a);
! 
! 		offset = (int)((1.0f/256.0f)*fx*_vbr_header.bytes); 
! 
! 	}
! 
! 	return offset;
! }
! 
! bool mp3_cd_play(Scumm *s, int track, int num_loops, int start_frame, int end_frame) {
! 
! 	// See if we are already playing this track, else try to open it
! 
! 	if (_current_mp3_cd_track != track) {
! 		char track_name[1024];				
! 
! 		sprintf(track_name, "%strack%d.mp3", s->_gameDataPath, track);
! 		_mp3_track = fopen(track_name, "rb");
! 		if (!_mp3_track) {
! 			warning("No CD and track %d not available in mp3 format", track);
!                         return false;
! 		}
! 
! 		if (!parse_xing_vbr_tag()) {
! 				warning("Error parsing file header - ignoring file", 
! 							track);
! 				fclose(_mp3_track);
!                                 return false;
! 		}
! 
! 		if (_vbr_header.flags) {
! 			if (!(
! 				    (_vbr_header.flags & XING_TOC) &&
! 					(_vbr_header.flags & XING_BYTES) &&
! 					(_vbr_header.flags & XING_FRAMES)
! 				)) {
! 				warning("Missing required part of VBR header - ignoring file");
! 				fclose(_mp3_track);
! 				_vbr_header.flags = 0;
!                                 return false;
! 			}
! 		}
! 
! 		// Allocate the music mixer if necessary
! 
! 		if (!_mc) {
! 			_mc = s->allocateMixer();
! 			if (!_mc) {
! 				warning("No mixer channel available for MP3 music");
!                                 return false;
! 			}
! 		}
! 
! 		fseek(_mp3_track, 0, SEEK_END);
! 		_mp3_size = ftell(_mp3_track);
! 		fseek(_mp3_track, 0, SEEK_SET);
! 
! 		_mc->type = MIXER_MP3_CDMUSIC;
! 		_mc->sound_data.mp3_cdmusic.file = _mp3_track;
!                 _mc->sound_data.mp3_cdmusic.playing = false;
! 		_mc->sound_data.mp3_cdmusic.buffer_size = 200000;
! 		_mc->_sfx_sound = malloc(_mc->sound_data.mp3_cdmusic.buffer_size); 
! 
! 														/* see if it's enough */
! 		mad_stream_init(&_mc->sound_data.mp3.stream);
! 		if (_mad_header.samplerate == 44100) 
! 			mad_stream_options((mad_stream*)&_mc->sound_data.mp3.stream, 
! 								MAD_OPTION_HALFSAMPLERATE);
! 
! 		mad_frame_init(&_mc->sound_data.mp3.frame);
! 		mad_synth_init(&_mc->sound_data.mp3.synth);
! 
! 		_current_mp3_cd_track = track;		
! 	}
! 
! 
! 	if (_current_mp3_cd_track == track) {
! 
! 		uint32 where;
! 
! 		// See where we want to go
! 		where = calc_cd_file_offset(start_frame);
! 
! 		if (start_frame < 0 || end_frame < 0) {
! 			warning("Negative index in frame");
!                         return false;
! 		}
! 
! 		mad_timer_set(&_mc->sound_data.mp3_cdmusic.duration,
! 					  0,
! 					  end_frame,
! 					  CD_FPS);
! 
! 		fseek(_mp3_track, where, SEEK_SET);
!                 _mc->sound_data.mp3_cdmusic.playing = true;             
! 
!                 return true;
! 	}
! 
!         return false;
! }
! 
! #endif
! 

Index: mp3_cd.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/mp3_cd.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** mp3_cd.h	5 Apr 2002 04:17:32 -0000	1.2
--- mp3_cd.h	5 Apr 2002 08:48:10 -0000	1.3
***************
*** 1,45 ****
! /* ScummVM - Scumm Interpreter
!  * Copyright (C) 2002 The ScummVM project
!  *
!  * This program is free software; you can redistribute it and/or
!  * modify it under the terms of the GNU General Public License
!  * as published by the Free Software Foundation; either version 2
!  * of the License, or (at your option) any later version.
!  *
!  * This program is distributed in the hope that it will be useful,
!  * but WITHOUT ANY WARRANTY; without even the implied warranty of
!  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!  * GNU General Public License for more details.
!  *
!  * You should have received a copy of the GNU General Public License
!  * along with this program; if not, write to the Free Software
!  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
!  *
!  * $Header$
!  */
! 
! #ifndef MP3_CD_H
! #define MP3_CD_H
! 
! // From xing.h in MAD
! 
! # define XING_MAGIC	(('X' << 24) | ('i' << 16) | ('n' << 8) | 'g')
! 
! struct xing {
!   long flags;			/* valid fields (see below) */
!   unsigned long frames;		/* total number of frames */
!   unsigned long bytes;		/* total number of bytes */
!   unsigned char toc[100];	/* 100-point seek table */
!   long scale;			/* ?? */
! };
! 
! enum {
!   XING_FRAMES = 0x00000001L,
!   XING_BYTES  = 0x00000002L,
!   XING_TOC    = 0x00000004L,
!   XING_SCALE  = 0x00000008L
! };
! 
! bool mp3_cd_play(Scumm *s, int track, int num_loops, int start_frame, int end_frame);
! 
  #endif
--- 1,45 ----
! /* ScummVM - Scumm Interpreter
!  * Copyright (C) 2002 The ScummVM project
!  *
!  * This program is free software; you can redistribute it and/or
!  * modify it under the terms of the GNU General Public License
!  * as published by the Free Software Foundation; either version 2
!  * of the License, or (at your option) any later version.
!  *
!  * This program is distributed in the hope that it will be useful,
!  * but WITHOUT ANY WARRANTY; without even the implied warranty of
!  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!  * GNU General Public License for more details.
!  *
!  * You should have received a copy of the GNU General Public License
!  * along with this program; if not, write to the Free Software
!  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
!  *
!  * $Header$
!  */
! 
! #ifndef MP3_CD_H
! #define MP3_CD_H
! 
! // From xing.h in MAD
! 
! # define XING_MAGIC	(('X' << 24) | ('i' << 16) | ('n' << 8) | 'g')
! 
! struct xing {
!   long flags;			/* valid fields (see below) */
!   unsigned long frames;		/* total number of frames */
!   unsigned long bytes;		/* total number of bytes */
!   unsigned char toc[100];	/* 100-point seek table */
!   long scale;			/* ?? */
! };
! 
! enum {
!   XING_FRAMES = 0x00000001L,
!   XING_BYTES  = 0x00000002L,
!   XING_TOC    = 0x00000004L,
!   XING_SCALE  = 0x00000008L
! };
! 
! bool mp3_cd_play(Scumm *s, int track, int num_loops, int start_frame, int end_frame);
! 
  #endif

Index: readme.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/readme.txt,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** readme.txt	14 Mar 2002 08:04:20 -0000	1.12
--- readme.txt	5 Apr 2002 08:48:10 -0000	1.13
***************
*** 1,8 ****
  ScummVM README
! last updated: 2002-03-08
  ------------------------------------------------------------------------
  
! For more info, please visit the ScummVM home page at:
! http://scummvm.sourceforge.net/
  
  About:
--- 1,9 ----
  ScummVM README
! Last updated:    2002-04-05
! Release version: 0.2.0
  ------------------------------------------------------------------------
  
! For more information, the latest release and progress reports, please visit
! the ScummVM home page at: http://scummvm.sourceforge.net/
  
  About:
***************
*** 12,16 ****
  Maniac Mansion) engine used in various Lucas Arts games such as Monkey
  Island and Day of the Tentacle. At this time ScummVM should be considered
! ALPHA software, as it's still under heavy development.
  
  Supported Games:
--- 13,19 ----
  Maniac Mansion) engine used in various Lucas Arts games such as Monkey
  Island and Day of the Tentacle. At this time ScummVM should be considered
! ALPHA software, as it's still under heavy development. Be aware that while
! many games will work with few major bugs, crashes can happen. Also note
! that saved games can, and probably will, be incompatible between releases.
  
  Supported Games:
***************
*** 26,30 ****
          Sam & Max
  
! The following games should load, but are not yet in a playable form.
  
  	Loom (256 color CD version)
--- 29,35 ----
          Sam & Max
  
! The following games should load, but are not yet fully playable. If you want
! the latest updates on game compatability, visit our website and view the
! compatability chart.
  
  	Loom (256 color CD version)
***************
*** 47,50 ****
--- 52,72 ----
  such a bug. Attach a saved game if possible.
  
+ Supported Platforms:
+ -------------------
+ ScummVM has been ported to run on many platforms and operating systems.
+ Links to these ports can be found either on the ScummVM webpage or by a
+ google search. Many thanks to the effort of porters. If you have a port of
+ ScummVM and wish to commit it into the main CVS, feel free to contact us!
+ 
+ 	Windows 	- SDL/GDI
+ 	Windows CE 	- SDL		(iPaq and other handheld devices)
+ 	Linux		- SDL/X11 	(includes iPaq devices running Linux)
+ 	Macintosh	- SDL/CUSTOM	(Including Classic and Mac OS X)
+ 	AmigaOS		- SDL/AGA
+ 	MorphOS		- SDL
+ 	Acorn (RiscOS)	- ???
+ 	BeOS		- ???
+ 	Dreamcast	- ???
+ 
  Known Bugs:
  -----------
***************
*** 59,64 ****
                  - Music does not work with USE_ADLIB
  
!        Monkey 1 (CD):
!                 - CD Music is not yet working.
  
  Compiling:
--- 81,101 ----
                  - Music does not work with USE_ADLIB
  
!        Day of the Tentacle:
!                 - German talkie version may crash when talking to Thomas
!                   Jefferson.
! 
! Reporting Bugs:
! ---------------
! To report a bug, please create a SourceForge account and follow the bugs
! link from our homepage. Please make sure the bug is reproducable, and 
! still exists in the latest daily build/current CVS version.
! 
! Please include the following information:
! 		- Game version (PLEASE test the latest CVS/Daily build)
! 		- Bug details, including instructions on reproducing
! 		- Language of game (English, German, etc)
! 		- Version of game (Talkie, Floppy...)
! 		- Platform and Compiler (Win32, Linux, etc)
! 		- Attach a save game if possible
  
  Compiling:
***************
*** 66,71 ****
  
  You need SDL-1.2.2 (maybe older versions will work), and a supported
! compiler. At the moment only GCC and Microsoft Visual C++ are
! supported.
  
  	GCC:
--- 103,111 ----
  
  You need SDL-1.2.2 (maybe older versions will work), and a supported
! compiler. Several compilers, including GCC, mingw and Microsoft Visual C++
! are supported. If you wish to use MP3-compressed CD tracks or .SOU files,
! you will need to install the MAD library and define COMPRESSED_SOUND_FILE.
! Tools for compressing .SOU files to .SO3 files can be found in the 'tools'
! CVS module, or in the 'scummvm-tools' package.
  
  	GCC:
***************
*** 81,84 ****
--- 121,125 ----
  	* Now it should compile successfully.
  
+ 
  Running:
  --------
***************
*** 107,111 ****
    C:\Games\LucasArts\scummvm.exe -f -pC:\Games\LucasArts\monkey\ monkey
  
! Or, if you have, for example, Full Throttle on CD, and you CD drive is D:.
  
    C:\Games\LucasArts\scummvm.exe -f -n -pD:\resource\ ft
--- 148,153 ----
    C:\Games\LucasArts\scummvm.exe -f -pC:\Games\LucasArts\monkey\ monkey
  
! Or, if you have, for example, Full Throttle on CD, and you CD drive is D:,
! and you wish to disable subtitles and run in fullscreen:
  
    C:\Games\LucasArts\scummvm.exe -f -n -pD:\resource\ ft
***************
*** 205,209 ****
  Savegames are by default put in the current directory. You can use the
  environment variable SCUMMVM_SAVEPATH to specify where to put save games.
! Don't forget the trailing directory separator.
  
  Bash Example:
--- 247,252 ----
  Savegames are by default put in the current directory. You can use the
  environment variable SCUMMVM_SAVEPATH to specify where to put save games.
! Don't forget the trailing directory separator. Also be aware that saved games
! can, and probably WILL, break between ScummVM releases.
  
  Bash Example:

Index: sdl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sdl.cpp,v
retrieving revision 1.72
retrieving revision 1.73
diff -C2 -d -r1.72 -r1.73
*** sdl.cpp	5 Apr 2002 00:00:46 -0000	1.72
--- sdl.cpp	5 Apr 2002 08:48:10 -0000	1.73
***************
*** 959,962 ****
--- 959,963 ----
  	scumm->_features = detector._features;
  	scumm->_soundCardType = detector._soundCardType;
+ 	scumm->_noSubtitles = detector._noSubtitles;
  
  	scumm->delta=6;





More information about the Scummvm-git-logs mailing list