[Scummvm-cvs-logs] CVS: scummvm akos.h,1.4,1.5 gameDetector.cpp,1.6,1.7 gameDetector.h,1.4,1.5 gui.cpp,1.26,1.27 object.cpp,1.54,1.55 scumm.h,1.114,1.115 scummvm.cpp,1.104,1.105 scummvm.dsp,1.31,1.32 sdl.cpp,1.81,1.82
Ludvig Strigeus
strigeus at users.sourceforge.net
Fri Apr 12 03:35:03 CEST 2002
Update of /cvsroot/scummvm/scummvm
In directory usw-pr-cvs1:/tmp/cvs-serv29634
Modified Files:
akos.h gameDetector.cpp gameDetector.h gui.cpp object.cpp
scumm.h scummvm.cpp scummvm.dsp sdl.cpp
Log Message:
code cleanup - prepares for simon inclusion
Index: akos.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/akos.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** akos.h 31 Mar 2002 02:01:14 -0000 1.4
--- akos.h 12 Apr 2002 10:34:45 -0000 1.5
***************
*** 19,27 ****
* $Header$
*
! */
!
! #if !defined(__GNUC__)
! #pragma START_PACK_STRUCTS
! #endif
struct AkosHeader {
--- 19,32 ----
* $Header$
*
! */
!
!
!
! #if !defined(__GNUC__)
!
! #pragma START_PACK_STRUCTS
!
! #endif
!
struct AkosHeader {
Index: gameDetector.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gameDetector.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** gameDetector.cpp 11 Apr 2002 17:19:14 -0000 1.6
--- gameDetector.cpp 12 Apr 2002 10:34:45 -0000 1.7
***************
*** 27,48 ****
! #define USAGE_STRING "ScummVM - Scumm Interpreter\n" \
! "Syntax:\n" \
! "\tscummvm [-v] [-d] [-n] [-b<num>] [-t<num>] [-s<num>] [-p<path>] [-m<num>] [-f] game\n" \
! "Flags:\n" \
! "\tv - show version info and exit\n" \
! "\tc<num> - use cdrom <num> for cd audio\n" \
! "\td - enable debug output\n" \
! "\tn - no subtitles for speech\n" \
! "\tb<num> - start in room <num>\n" \
! "\tt<num> - set music tempo. Suggested: 1F0000\n" \
! "\ts<num> - set scale factor to <num> (1, 2, or 3 - 2 by default)\n" \
! "\tp<path> - look for game in <path>\n" \
! "\tm<num> - set music volume to <num> (0-100)\n" \
! "\te<num> - set music engine. see readme.txt for details\n" \
! "\tr - emulate roland mt32 instruments\n" \
! "\tf - fullscreen mode\n" \
! "\tg - graphics mode. 1 for 2xSai anti-aliasing\n" \
! "\ta - load autosave game (for recovering from crashes)\n"
void GameDetector::parseCommandLine(int argc, char **argv)
--- 27,51 ----
!
! static const char USAGE_STRING[] =
! "ScummVM - Scumm Interpreter\n"
! "Syntax:\n"
! "\tscummvm [-v] [-d] [-n] [-b<num>] [-t<num>] [-s<num>] [-p<path>] [-m<num>] [-f] game\n"
! "Flags:\n"
! "\tv - show version info and exit\n"
! "\tc<num> - use cdrom <num> for cd audio\n"
! "\td - enable debug output\n"
! "\tn - no subtitles for speech\n"
! "\tb<num> - start in room <num>\n"
! "\tt<num> - set music tempo. Suggested: 1F0000\n"
! "\ts<num> - set scale factor to <num> (1, 2, or 3 - 2 by default)\n"
! "\tp<path> - look for game in <path>\n"
! "\tm<num> - set music volume to <num> (0-100)\n"
! "\te<num> - set music engine. see readme.txt for details\n"
! "\tr - emulate roland mt32 instruments\n"
! "\tf - fullscreen mode\n"
! "\tg - graphics mode. 1 for 2xSai anti-aliasing\n"
! "\ta - load autosave game (for recovering from crashes)\n"
! ;
void GameDetector::parseCommandLine(int argc, char **argv)
***************
*** 234,237 ****
--- 237,245 ----
GF_NEW_OPCODES | GF_AFTER_V6 | GF_AFTER_V7},
+ /* Simon the Sorcerer 1 & 2 (not SCUMM games) */
+ {"simon1dos", "Simon the Sorcerer 1 for DOS", GID_SIMON_FIRST+1, 99, 99, 99, 0},
+ {"simon1win", "Simon the Sorcerer 1 for Windows", GID_SIMON_FIRST+2, 99, 99, 99, 0},
+ {"simon2win", "Simon the Sorcerer 2 for Windows", GID_SIMON_FIRST+3, 99, 99, 99, 0},
+
/* Scumm Version 8 */
// {"curse", "The Curse of Monkey Island", GID_CMI, 8, 1, 0,},
Index: gameDetector.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gameDetector.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** gameDetector.h 7 Apr 2002 07:31:47 -0000 1.4
--- gameDetector.h 12 Apr 2002 10:34:45 -0000 1.5
***************
*** 29,35 ****
--- 29,41 ----
bool _fullScreen;
+ bool _restore;
+ byte _gameId;
+ bool _simon;
+
uint16 _debugMode;
uint16 _noSubtitles;
uint16 _bootParam;
+ uint16 _soundCardType;
+
unsigned int _scale;
char *_gameDataPath;
***************
*** 39,50 ****
int _videoMode;
char *_exe_name;
- byte _gameId;
const char *_gameText;
uint32 _features;
! uint16 _soundCardType;
!
int _scummVersion;
int _cdrom;
! bool _restore;
};
--- 45,54 ----
int _videoMode;
char *_exe_name;
const char *_gameText;
uint32 _features;
!
int _scummVersion;
int _cdrom;
!
};
Index: gui.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** gui.cpp 11 Apr 2002 17:19:14 -0000 1.26
--- gui.cpp 12 Apr 2002 10:34:45 -0000 1.27
***************
*** 808,841 ****
}
- byte Gui::getDefaultColor(int color)
- {
- if ((_s->_features & GF_AFTER_V7) || (_s->_features & GF_SMALL_HEADER))
- return 0;
- if (_s->_features & GF_AFTER_V6) {
- if (color == 8)
- color = 1;
- return _s->readArray(110, 0, color);
- } else {
- return _s->getStringAddress(21)[color];
- }
- }
-
void Gui::init(Scumm *s)
{
_s = s;
- if (_s->_gameId && !(_s->_features & GF_SMALL_HEADER)
- && !(_s->_features & GF_AFTER_V7)) {
- _bgcolor = getDefaultColor(0);
- _color = getDefaultColor(1);
- _textcolor = getDefaultColor(2);
- _textcolorhi = getDefaultColor(6);
- _shadowcolor = getDefaultColor(8);
- } else {
- _bgcolor = 0;
- _color = 0;
- _textcolor = 8; // 15 is nice
- _textcolorhi = 15;
- _shadowcolor = 0;
- }
}
--- 808,820 ----
}
void Gui::init(Scumm *s)
{
+ /* Default GUI colors */
+ _bgcolor = 0;
+ _color = 0;
+ _textcolor = 8; // 15 is nice
+ _textcolorhi = 15;
+ _shadowcolor = 0;
_s = s;
}
Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/object.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -C2 -d -r1.54 -r1.55
*** object.cpp 11 Apr 2002 17:19:14 -0000 1.54
--- object.cpp 12 Apr 2002 10:34:45 -0000 1.55
***************
*** 50,54 ****
}
-
if (set)
_classData[obj] |= (1 << (cls - 1));
--- 50,53 ----
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm.h,v
retrieving revision 1.114
retrieving revision 1.115
diff -C2 -d -r1.114 -r1.115
*** scumm.h 11 Apr 2002 14:22:45 -0000 1.114
--- scumm.h 12 Apr 2002 10:34:45 -0000 1.115
***************
*** 36,40 ****
void * operator new(size_t size);
!
class Scumm;
struct Actor;
--- 36,40 ----
void * operator new(size_t size);
! class GameDetector;
class Scumm;
struct Actor;
***************
*** 44,47 ****
--- 44,50 ----
typedef void (Scumm::*OpcodeProc)();
+ /* Use this one from error() ONLY */
+ extern Scumm *g_scumm;
+
/* System Wide Constants */
enum {
***************
*** 503,507 ****
GID_LOOM = 10,
GID_FT = 11,
! GID_DIG = 12
};
--- 506,514 ----
GID_LOOM = 10,
GID_FT = 11,
! GID_DIG = 12,
!
! /* Simon the Sorcerer */
! GID_SIMON_FIRST = 13,
! GID_SIMON_LAST = GID_SIMON_FIRST+3,
};
***************
*** 1057,1094 ****
/* Akos Class */
! bool akos_drawCostume(AkosRenderer *ar);
! void akos_setPalette(AkosRenderer *ar, byte *palette);
! void akos_setCostume(AkosRenderer *ar, int costume);
! void akos_setFacing(AkosRenderer *ar, Actor *a);
! bool akos_drawCostumeChannel(AkosRenderer *ar, int chan);
! void akos_codec1(AkosRenderer *ar);
! void akos_codec5(AkosRenderer *ar);
! void akos_codec16(AkosRenderer *ar);
! void akos_codec1_ignorePakCols(AkosRenderer *ar, int num);
! void akos_c1_spec2(AkosRenderer *ar);
! void akos_c1_spec3(AkosRenderer *ar);
!
! void akos_c1_0_decode(AkosRenderer *ar);
! void akos_c1_12_decode(AkosRenderer *ar);
! void akos_c1_12y_decode(AkosRenderer *ar);
! void akos_c1_3_decode(AkosRenderer *ar);
! void akos_c1_4_decode(AkosRenderer *ar);
! void akos_c1_4y_decode(AkosRenderer *ar);
! void akos_c1_56_decode(AkosRenderer *ar);
! void akos_c1_56y_decode(AkosRenderer *ar);
! void akos_c1_7_decode(AkosRenderer *ar);
! bool akos_increaseAnims(byte *akos, Actor *a);
! bool akos_increaseAnim(Actor *a, int i, byte *aksq, uint16 *akfo, int numakfo);
! int getAnimVar(Actor *a, byte var);
! void setAnimVar(Actor *a, byte var, int value);
! void akos_queCommand(byte cmd, Actor *a, int param_1, int param_2);
! bool akos_compare(int a, int b, byte cmd);
! void akos_decodeData(Actor *a, int frame, uint usemask);
! int akos_frameToAnim(Actor *a, int frame);
! bool akos_hasManyDirections(Actor *a);
! int akos_findManyDirection(int16 ManyDirection, uint16 facing);
--- 1064,1091 ----
/* Akos Class */
! bool akos_drawCostume(AkosRenderer *ar);
! void akos_setPalette(AkosRenderer *ar, byte *palette);
! void akos_setCostume(AkosRenderer *ar, int costume);
! void akos_setFacing(AkosRenderer *ar, Actor *a);
! bool akos_drawCostumeChannel(AkosRenderer *ar, int chan);
! void akos_codec1(AkosRenderer *ar);
! void akos_codec5(AkosRenderer *ar);
! void akos_codec16(AkosRenderer *ar);
! void akos_codec1_ignorePakCols(AkosRenderer *ar, int num);
! void akos_c1_spec2(AkosRenderer *ar);
! void akos_c1_spec3(AkosRenderer *ar);
! bool akos_increaseAnims(byte *akos, Actor *a);
! bool akos_increaseAnim(Actor *a, int i, byte *aksq, uint16 *akfo, int numakfo);
! int getAnimVar(Actor *a, byte var);
! void setAnimVar(Actor *a, byte var, int value);
! void akos_queCommand(byte cmd, Actor *a, int param_1, int param_2);
! bool akos_compare(int a, int b, byte cmd);
! void akos_decodeData(Actor *a, int frame, uint usemask);
! int akos_frameToAnim(Actor *a, int frame);
! bool akos_hasManyDirections(Actor *a);
! int akos_findManyDirection(int16 ManyDirection, uint16 facing);
***************
*** 1677,1680 ****
--- 1674,1683 ----
void launch();
+
+ static Scumm *createFromDetector(GameDetector *detector);
+ void go();
+
+ void setupGUIColors();
+ byte getDefaultGUIColor(int color);
};
Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scummvm.cpp,v
retrieving revision 1.104
retrieving revision 1.105
diff -C2 -d -r1.104 -r1.105
*** scummvm.cpp 11 Apr 2002 17:19:15 -0000 1.104
--- scummvm.cpp 12 Apr 2002 10:34:46 -0000 1.105
***************
*** 25,30 ****
#include "gui.h"
#include "string.h"
- extern void launcherLoop();
void Scumm::initRandSeeds()
{
--- 25,30 ----
#include "gui.h"
#include "string.h"
+ #include "gameDetector.h"
void Scumm::initRandSeeds()
{
***************
*** 1011,1016 ****
}
- extern Scumm *scumm;
-
void NORETURN CDECL error(const char *s, ...)
{
--- 1011,1014 ----
***************
*** 1022,1031 ****
va_end(va);
! if (scumm->_currentScript != 0xFF) {
! ScriptSlot *ss = &scumm->vm.slot[scumm->_currentScript];
fprintf(stderr, "Error(%d:%d:0x%X): %s!\n",
! scumm->_roomResource,
ss->number,
! scumm->_scriptPointer - scumm->_scriptOrgPointer, buf);
} else {
fprintf(stderr, "Error: %s!\n", buf);
--- 1020,1029 ----
va_end(va);
! if (g_scumm->_currentScript != 0xFF) {
! ScriptSlot *ss = &g_scumm->vm.slot[g_scumm->_currentScript];
fprintf(stderr, "Error(%d:%d:0x%X): %s!\n",
! g_scumm->_roomResource,
ss->number,
! g_scumm->_scriptPointer - g_scumm->_scriptOrgPointer, buf);
} else {
fprintf(stderr, "Error: %s!\n", buf);
***************
*** 1146,1147 ****
--- 1144,1225 ----
}
+
+ Scumm *Scumm::createFromDetector(GameDetector *detector)
+ {
+ Scumm *scumm;
+
+ if (detector->_features & GF_OLD256)
+ scumm = new Scumm_v3;
+ else if (detector->_features & GF_SMALL_HEADER) // this force loomCD as v4
+ scumm = new Scumm_v4;
+ else if (detector->_features & GF_AFTER_V7)
+ scumm = new Scumm_v7;
+ else if (detector->_features & GF_AFTER_V6) // this force SamnmaxCD as v6
+ scumm = new Scumm_v6;
+ else
+ scumm = new Scumm_v5;
+
+ scumm->_fullScreen = detector->_fullScreen;
+ scumm->_debugMode = detector->_debugMode;
+ scumm->_bootParam = detector->_bootParam;
+ scumm->_scale = detector->_scale;
+ scumm->_gameDataPath = detector->_gameDataPath;
+ scumm->_gameTempo = detector->_gameTempo;
+ scumm->_soundEngine = detector->_soundEngine;
+ scumm->_videoMode = detector->_videoMode;
+ scumm->_exe_name = detector->_exe_name;
+ scumm->_gameId = detector->_gameId;
+ scumm->_gameText = detector->_gameText;
+ scumm->_features = detector->_features;
+ scumm->_soundCardType = detector->_soundCardType;
+ scumm->_noSubtitles = detector->_noSubtitles;
+ scumm->_midi_driver = detector->_midi_driver;
+ scumm->_cdrom = detector->_cdrom;
+
+ scumm->delta = 6;
+ if (detector->_restore) {
+ scumm->_saveLoadSlot = 0;
+ scumm->_saveLoadFlag = 2;
+ scumm->_saveLoadCompatible = false;
+ }
+
+ scumm->delta = 0;
+
+ return scumm;
+ }
+
+ void Scumm::go() {
+ launch();
+ setupGUIColors();
+ mainRun();
+ }
+
+
+ byte Scumm::getDefaultGUIColor(int color)
+ {
+ /* FIXME: strange IF line? */
+ if ((_features & GF_AFTER_V7) || (_features & GF_SMALL_HEADER))
+ return 0;
+ if (_features & GF_AFTER_V6) {
+ if (color == 8)
+ color = 1;
+ return readArray(110, 0, color);
+ } else {
+ return getStringAddress(21)[color];
+ }
+ }
+
+ void Scumm::setupGUIColors() {
+ Gui *gui = (Gui*)_gui;
+
+ /* FIXME: strange IF line? */
+ if (_gameId && !(_features & GF_SMALL_HEADER) && !(_features & GF_AFTER_V7)) {
+ gui->_bgcolor = getDefaultGUIColor(0);
+ gui->_color = getDefaultGUIColor(1);
+ gui->_textcolor = getDefaultGUIColor(2);
+ gui->_textcolorhi = getDefaultGUIColor(6);
+ gui->_shadowcolor = getDefaultGUIColor(8);
+ }
+ }
+
+
Index: scummvm.dsp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scummvm.dsp,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** scummvm.dsp 7 Apr 2002 07:34:15 -0000 1.31
--- scummvm.dsp 12 Apr 2002 10:34:46 -0000 1.32
***************
*** 155,158 ****
--- 155,162 ----
# Begin Source File
+ SOURCE=.\2xsai.cpp
+ # End Source File
+ # Begin Source File
+
SOURCE=.\actor.cpp
***************
*** 440,443 ****
--- 444,459 ----
# Begin Source File
+ SOURCE=.\akos.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\boxes.h
+ # End Source File
+ # Begin Source File
+
+ SOURCE=.\cdmusic.h
+ # End Source File
+ # Begin Source File
+
SOURCE=.\sound\fmopl.h
# End Source File
***************
*** 448,451 ****
--- 464,471 ----
# Begin Source File
+ SOURCE=.\gfx.h
+ # End Source File
+ # Begin Source File
+
SOURCE=.\sound\gmidi.h
# End Source File
***************
*** 456,459 ****
--- 476,483 ----
# Begin Source File
+ SOURCE=.\mp3_cd.h
+ # End Source File
+ # Begin Source File
+
SOURCE=.\scumm.h
# End Source File
***************
*** 464,467 ****
--- 488,495 ----
# Begin Source File
+ SOURCE=.\smush.h
+ # End Source File
+ # Begin Source File
+
SOURCE=.\sound.h
# End Source File
***************
*** 470,477 ****
SOURCE=.\StdAfx.h
# End Source File
! # End Group
! # Begin Group "Resource Files"
! # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# Begin Source File
--- 498,505 ----
SOURCE=.\StdAfx.h
# End Source File
! # Begin Source File
! SOURCE=.\system.h
! # End Source File
# End Group
# Begin Source File
Index: sdl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sdl.cpp,v
retrieving revision 1.81
retrieving revision 1.82
diff -C2 -d -r1.81 -r1.82
*** sdl.cpp 11 Apr 2002 20:10:47 -0000 1.81
--- sdl.cpp 12 Apr 2002 10:34:46 -0000 1.82
***************
*** 34,38 ****
static unsigned int scale;
! Scumm *scumm;
ScummDebugger debugger;
Gui gui;
--- 34,41 ----
static unsigned int scale;
! /* FIXME: Global variable names should be prepended with g_
! * Only member variables should have a _ in front of the name. */
[...995 lines suppressed...]
do {
! updateScreen(scumm);
new_time = SDL_GetTicks();
! waitForTimer(scumm, delta * 15 + last_time - new_time);
last_time = SDL_GetTicks();
if (gui._active) {
! gui.loop(scumm);
delta = 5;
}
--- 1225,1234 ----
{
do {
! updateScreen(g_scumm);
new_time = SDL_GetTicks();
! waitForTimer(g_scumm, delta * 15 + last_time - new_time);
last_time = SDL_GetTicks();
if (gui._active) {
! gui.loop(g_scumm);
delta = 5;
}
More information about the Scummvm-git-logs
mailing list