aboutsummaryrefslogtreecommitdiff
path: root/queen
diff options
context:
space:
mode:
authorGregory Montoir2003-10-24 08:55:13 +0000
committerGregory Montoir2003-10-24 08:55:13 +0000
commitd2dff9dd8d1197de3a0649908eecf600878abc9e (patch)
tree3c5872fbcddaa4b8cc00a1724062e49386f0afe1 /queen
parent4e78623eb25ac7c9affdc3bf00b796272dfae78b (diff)
downloadscummvm-rg350-d2dff9dd8d1197de3a0649908eecf600878abc9e.tar.gz
scummvm-rg350-d2dff9dd8d1197de3a0649908eecf600878abc9e.tar.bz2
scummvm-rg350-d2dff9dd8d1197de3a0649908eecf600878abc9e.zip
misc fixes/tweaks
svn-id: r10954
Diffstat (limited to 'queen')
-rw-r--r--queen/defs.h2
-rw-r--r--queen/display.cpp59
-rw-r--r--queen/display.h1
-rw-r--r--queen/logic.cpp29
-rw-r--r--queen/logic.h18
-rw-r--r--queen/structs.h10
-rw-r--r--queen/xref.txt52
7 files changed, 89 insertions, 82 deletions
diff --git a/queen/defs.h b/queen/defs.h
index 67fe0588e5..38d4a54c53 100644
--- a/queen/defs.h
+++ b/queen/defs.h
@@ -120,7 +120,7 @@ enum Verb {
VERB_PICK_UP = 7,
VERB_LOOK_AT = 9,
VERB_TALK_TO = 8,
- VERB_PANEL_COMMAND_LAST = 8,
+ VERB_PANEL_COMMAND_LAST = 9,
VERB_WALK_TO = 10,
VERB_SCROLL_UP = 11,
diff --git a/queen/display.cpp b/queen/display.cpp
index 0b29b1c2cc..be4f7a346b 100644
--- a/queen/display.cpp
+++ b/queen/display.cpp
@@ -122,7 +122,6 @@ Display::Display(OSystem *system)
_pals.dirtyMin = 0;
_pals.dirtyMax = 255;
_pals.scrollable = true;
- _pals.customScrollSeed = 0;
_horizontalScroll = 0;
}
@@ -147,15 +146,13 @@ void Display::dynalumInit(Resource *resource, const char *roomName, uint16 roomN
// FIXME: are these tests really needed ?
if (roomNum < 90 || ((roomNum > 94) && (roomNum < 114))) {
char filename[20];
-
- sprintf(filename, "%s.msk", roomName);
- if (resource->exists(filename))
- resource->loadFile(filename, 0, (uint8*)_dynalum.msk);
-
- sprintf(filename, "%s.lum", roomName);
- if (resource->exists(filename))
- resource->loadFile(filename, 0, (uint8*)_dynalum.lum);
- }
+ sprintf(filename, "%s.msk", roomName);
+ if (resource->exists(filename))
+ resource->loadFile(filename, 0, (uint8*)_dynalum.msk);
+ sprintf(filename, "%s.lum", roomName);
+ if (resource->exists(filename))
+ resource->loadFile(filename, 0, (uint8*)_dynalum.lum);
+ }
}
@@ -361,6 +358,7 @@ void Display::palCustomColors(uint16 roomNum) {
void Display::palCustomScroll(uint16 roomNum) {
debug(9, "Display::palCustomScroll(%d)", roomNum);
+ static int16 scrollx = 0;
if (!_pals.scrollable) {
return;
@@ -370,7 +368,7 @@ void Display::palCustomScroll(uint16 roomNum) {
int loPal = 255;
int i;
- ++_pals.customScrollSeed;
+ ++scrollx;
switch (roomNum) {
case 123: {
static int16 j = 0,jdir = 2;
@@ -415,7 +413,7 @@ void Display::palCustomScroll(uint16 roomNum) {
hiPal = 95;
break;
case 100:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(128, 132);
palScroll(133, 137);
palScroll(138, 143);
@@ -424,14 +422,14 @@ void Display::palCustomScroll(uint16 roomNum) {
}
break;
case 102:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(112, 127);
loPal = 112;
hiPal = 127;
}
break;
case 62:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(0x6c, 0x77);
loPal = 0x6c;
hiPal = 0x77;
@@ -443,7 +441,7 @@ void Display::palCustomScroll(uint16 roomNum) {
hiPal = 123;
break;
case 59:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(56, 63);
loPal = 56;
hiPal = 63;
@@ -459,27 +457,27 @@ void Display::palCustomScroll(uint16 roomNum) {
palScroll(88, 91);
palScroll(92, 95);
palScroll(128, 135);
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(136, 143);
}
loPal = 28;
hiPal = 143;
break;
case 40:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(96, 103);
}
- if(_pals.customScrollSeed & 3) {
+ if(scrollx & 3) {
palScroll(104, 107);
}
loPal = 96;
hiPal = 107;
break;
case 97:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(96, 107);
}
- if(_pals.customScrollSeed & 3) {
+ if(scrollx & 3) {
palScroll(108, 122);
}
loPal = 96;
@@ -492,7 +490,7 @@ void Display::palCustomScroll(uint16 roomNum) {
break;
case 57:
palScroll(128, 143);
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(96, 103);
}
loPal = 96;
@@ -504,7 +502,7 @@ void Display::palCustomScroll(uint16 roomNum) {
hiPal = 95;
break;
case 2:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(120, 127);
}
loPal = 120;
@@ -512,7 +510,7 @@ void Display::palCustomScroll(uint16 roomNum) {
break;
case 3:
case 5:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(128, 135);
palScroll(136, 143);
loPal = 128;
@@ -520,14 +518,14 @@ void Display::palCustomScroll(uint16 roomNum) {
}
break;
case 7:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(119, 127);
loPal = 119;
hiPal = 127;
}
break;
case 42:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(118, 127);
palScroll(136, 143);
loPal = 118;
@@ -535,7 +533,7 @@ void Display::palCustomScroll(uint16 roomNum) {
}
break;
case 4:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(32,47);
}
palScroll(64, 70);
@@ -544,7 +542,7 @@ void Display::palCustomScroll(uint16 roomNum) {
hiPal = 79;
break;
case 8:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(120, 127);
}
loPal = 120;
@@ -552,10 +550,10 @@ void Display::palCustomScroll(uint16 roomNum) {
break;
case 12:
case 64:
- if(_pals.customScrollSeed & 1) {
+ if(scrollx & 1) {
palScroll(112, 119);
}
- if(_pals.customScrollSeed & 3) {
+ if(scrollx & 3) {
palScroll(120, 127);
}
loPal = 112;
@@ -592,7 +590,7 @@ void Display::palCustomFlash() {
// set flash palette
palSet(tempPal, 0, 255, true);
// restore original palette
- // palSet(_pals.screen, 0, 255, true);
+ palSet(_pals.screen, 0, 255, true);
}
@@ -796,6 +794,7 @@ void Display::waitForTimer() {
_gotTick = false;
while (!_gotTick) {
+ // FIXME: use _input->delay() instead
OSystem::Event event;
_system->delay_msecs(10);
diff --git a/queen/display.h b/queen/display.h
index 608133d861..5c5a2e2f6b 100644
--- a/queen/display.h
+++ b/queen/display.h
@@ -126,7 +126,6 @@ private:
uint8 *screen;
int dirtyMin, dirtyMax;
bool scrollable;
- uint16 customScrollSeed;
} _pals;
uint8 *_buffers[3];
diff --git a/queen/logic.cpp b/queen/logic.cpp
index d98cce80a9..77c6781b29 100644
--- a/queen/logic.cpp
+++ b/queen/logic.cpp
@@ -113,7 +113,7 @@ void State::alterDefaultVerb(uint16 *objState, Verb v) {
uint16 val;
switch (v) {
case VERB_OPEN:
- val = 0;
+ val = 1;
break;
case VERB_CLOSE:
val = 3;
@@ -140,7 +140,7 @@ void State::alterDefaultVerb(uint16 *objState, Verb v) {
val = 0;
break;
}
- *objState = (*objState & ~0xF0) | (v << 4);
+ *objState = (*objState & ~0xF0) | (val << 4);
}
@@ -418,17 +418,6 @@ void Logic::initialise() {
_oldRoom = 0;
}
-uint16 Logic::currentRoom() {
- return _currentRoom;
-}
-
-void Logic::currentRoom(uint16 room) {
- _currentRoom = room;
-}
-
-void Logic::oldRoom(uint16 room) {
- _oldRoom = room;
-}
ObjectData* Logic::objectData(int index) {
return &_objectData[index];
@@ -1897,6 +1886,20 @@ void Logic::playCutaway(const char* cutFile) {
}
+const char* Logic::objectOrItemName(int16 obj) const {
+
+ uint16 name;
+ if (obj < 0) {
+ name = _itemData[ABS(obj)].item;
+ }
+ else {
+ name = _objectData[obj].name;
+ }
+ return _objName[name];
+
+}
+
+
void Logic::update() {
_graphics->update(_currentRoom);
_input->delay();
diff --git a/queen/logic.h b/queen/logic.h
index 17900a11d7..c907f56233 100644
--- a/queen/logic.h
+++ b/queen/logic.h
@@ -87,14 +87,14 @@ public:
Logic(Resource *resource, Graphics *graphics, Display *display, Input *input, Sound *sound);
~Logic();
- uint16 currentRoom();
- void currentRoom(uint16 room);
+ uint16 currentRoom() const { return _currentRoom; }
+ void currentRoom(uint16 room) { _currentRoom = room; }
- uint16 oldRoom() { return _oldRoom; }
- void oldRoom(uint16 room);
-
- uint16 newRoom() { return _newRoom; }
- void newRoom(uint16 room) { _newRoom = room; }
+ uint16 oldRoom() const { return _oldRoom; }
+ void oldRoom(uint16 room) { _oldRoom = room; }
+
+ uint16 newRoom() const { return _newRoom; }
+ void newRoom(uint16 room) { _newRoom = room; }
ObjectData* objectData(int index);
uint16 roomData(int room);
@@ -200,6 +200,8 @@ public:
void playCutaway(const char* cutFile);
+ const char* objectOrItemName(int16 obj) const;
+
Display *display() { return _display; }
void update();
@@ -282,7 +284,7 @@ protected:
uint16 _numFurnitureAnimated;
//! Number of static furniture in current room (FMAX)
- uint16 _numFurnitureStatic; // FMAX
+ uint16 _numFurnitureStatic;
//! Total number of frames for the animated furniture (FMAXLEN)
uint16 _numFurnitureAnimatedLen;
diff --git a/queen/structs.h b/queen/structs.h
index 6a0ff5c6db..70d15f9ec0 100644
--- a/queen/structs.h
+++ b/queen/structs.h
@@ -311,7 +311,7 @@ struct ActorData {
struct CmdListData {
//! action to perform
- int16 verb;
+ Verb verb;
//! first object used in the action
int16 nounObj1;
//! second object used in the action
@@ -357,7 +357,7 @@ struct CmdListData {
int16 specialSection;
void readFrom(byte *&ptr) {
- verb = (int16)READ_BE_UINT16(ptr); ptr += 2;
+ verb = (Verb)READ_BE_UINT16(ptr); ptr += 2;
nounObj1 = (int16)READ_BE_UINT16(ptr); ptr += 2;
nounObj2 = (int16)READ_BE_UINT16(ptr); ptr += 2;
song = (int16)READ_BE_UINT16(ptr); ptr += 2;
@@ -368,6 +368,10 @@ struct CmdListData {
image = (int16)READ_BE_UINT16(ptr); ptr += 2;
specialSection = (int16)READ_BE_UINT16(ptr); ptr += 2;
}
+
+ bool match(Verb v, int16 obj1, int16 obj2) const {
+ return verb == verb && nounObj1 == obj1 && nounObj2 == obj2;
+ }
};
@@ -391,7 +395,7 @@ struct CmdObject {
//! identifier of the command
int16 id;
int16 dstObj; // >0: show, <0: hide
- int16 srcObj; // >0: copy from srcObj, -1: delete dstObj
+ int16 srcObj; // >0: copy from srcObj, 0: nothing, -1: delete dstObj
void readFrom(byte *&ptr) {
id = (int16)READ_BE_UINT16(ptr); ptr += 2;
diff --git a/queen/xref.txt b/queen/xref.txt
index 8db6ffff76..9c861f60ea 100644
--- a/queen/xref.txt
+++ b/queen/xref.txt
@@ -16,7 +16,7 @@ COMMAND
=======
ALTER_DEFAULT()
CLEAR_COMMAND() Command::clear
-EXECUTE_ACTION()
+EXECUTE_ACTION() Command::executeCurrentAction
FIND_DEFAULT() Command::findDefault
OPEN_CLOSE_OTHER() Command::openOrCloseAssociatedObject
P1_SET_CONDITIONS() Command::setConditions
@@ -28,21 +28,14 @@ SELECT_ITEM()
SELECT_NOUN()
SELECT_VERB()
-
-ACTION,ACTION2
+ACTION,ACTION2 Command::_action*
CLEVEL Command::_commandLevel
-COM *EXECUTE_ACTION local*
COMMANDstr Command::_command
-COMMAX *EXECUTE_ACTION local*
-COND *EXECUTE_ACTION local*
-CURRCOM *EXECUTE_ACTION local*
DEFCOMM
-GSET *P1_SET_CONDITIONS local*
OLDVERB,VERB
OLDNOUN,NOUN,NOUN2
PARSE Command::_parse
SUBJ1,SUBJ2,SUBJECT Command::_subject*
-A2 *EXECUTE_ACTION local*
-TEMPI *P1_SET_CONDITIONS local*
TEMPstr
WORDstr
@@ -134,16 +127,10 @@ sortbobs() Graphics::bobSortAll
stringanim() Graphics::bobAnimString
-
bobs Graphics::_bobs
-BDxres Display::_bdWidth
-BDyres display::_bdHeight
cambob Graphics::_cameraBob
clothespal Display::PAL_JOE_CLOTHES
dresspal Display::PAL_JOE_DRESS
-font TextRenderer::FONT
-font_sizes TextRenderer::charWidth
-OUTLINE *not needed*
sortedbobs Graphics::_sortedBobs
-scrollx Display::_horizontalScroll
INPUT
@@ -183,11 +170,11 @@ SETUP_JOE() Logic::joeSetup
USE_UNDERWEAR() Logic::joeUseUnderwear
USE_CLOTHES() Logic::joeUseClothes
USE_DRESS() Logic::joeUseDress
-WALK() Logic::joeWalk
+WALK() Logic::joeWalkTo
-
JOE_RESPstr Logic::_joeResponse
JOEF,JX,JY,JDIR Logic::_joe.*
-JOEWALK Logic::_joe.walk // legal values = 0,1,2,3
+JOEWALK Logic::_joe.walk (legal values = 0,1,2,3)
JOURNAL
@@ -214,7 +201,7 @@ LOOK_ICON()
LOOK_ITEM()
LOOK_ROOM()
P3_COPY_FROM() Cutaway::objectCopy
-R_MAP() // handle map 'm1'
+R_MAP() (handle map 'm1')
REDISP_OBJECT() Logic::roomRefreshObject
restart_game()
SETUP_BOBS() Graphics::bobSetupControl
@@ -249,7 +236,6 @@ FMAX Logic::_numFurnitureStatic
FMAXA Logic::_numFurnitureAnimated
FMAXLEN Logic::_numFurnitureAnimatedLen
FRAMES Logic::_numFrames
-FTOT *queen.c/SETUP_FURNITURE local var*
FURN_DATA_MAX Logic::_numFurniture
GAMESTATE Logic::_gameState
GRAPHIC_ANIM_MAX Logic::_numGraphicAnim
@@ -266,7 +252,6 @@ OBJECT_DATA Logic::_objectData
OBJECT_DESCRstr Logic::_objDescription
OBJECT_NAMEstr Logic::_objName
OBJMAX Logic::_objMax
-OBJMAXv *== Logic::_objMax[Logic::_currentRoom]*
OBJTOT Logic::_numObjects
OLDROOM,ROOM,NEW_ROOM Logic::_*oom
ROOMTOT Logic::_numRooms
@@ -323,11 +308,16 @@ palscroll() Display::palScroll
putcharacter() TextRenderer::drawChar
setpal() Display::palSet
-
+BDxres Display::_bdWidth
+BDyres Display::_bdHeight
COMPANEL
+font TextRenderer::FONT
+font_sizes TextRenderer::charWidth
FULLSCREEN Graphics::_fullscreen
nopalscroll Display::_pals.scrollable
palette Graphics::_paletteRoom
panelflag Graphics::_panelFlag
+scrollx Display::_horizontalScroll
tpal Graphics::_paletteScreen
@@ -351,8 +341,6 @@ STATE
ALTER_STATE() State::alterState*
FIND_STATE() State::findState*
-
-Gstr *no needed* // grab state
-Pstr *no needed* // FIND_STATE result
TALK
@@ -413,13 +401,9 @@ MOVE_OTHER() Walk::personMove
-
AREALIST Walk::_areaList
AREASTRIKE Walk::_areaStrike
-MAPC *findFreeArea local var*
movdata Walk::_moveData
-NEWP,OLDP *locals in joeMove && personMove*
-OLDX,X,OLDY,Y *passed as arguments*
WALK_DATA Walk::_walkData
WALKI Walk::_walkDataCount
-X2,X1,XD,YD *incWalkData && findFreeArea locals*
ZONES
@@ -487,3 +471,19 @@ BS,DS // CALC_SCALE
SX,SY,
NEWA // FIND_FREE_AREA local
IX,IY // Cutaway locals
+COM // EXECUTE_ACTION local
+COMMAX // EXECUTE_ACTION local
+COND // EXECUTE_ACTION local
+CURRCOM // EXECUTE_ACTION local
+GSET // P1_SET_CONDITIONS local
+A2 // EXECUTE_ACTION local
+TEMPI // P1_SET_CONDITIONS local
+MAPC // findFreeArea local var
+NEWP,OLDP // locals in joeMove && personMove
+OLDX,X,OLDY,Y // passed as arguments
+X2,X1,XD,YD // incWalkData && findFreeArea locals
+Gstr // not needed, grab state
+Pstr // not needed, FIND_STATE result
+OUTLINE // not needed, textSet() Graphics::parameter
+FTOT // queen.c/SETUP_FURNITURE local var
+OBJMAXv // == Logic::_objMax[Logic::_currentRoom]