TINSEL: Added new opcode set for the DW2 Demo
svn-id: r53708
This commit is contained in:
parent
9e9739c074
commit
96723838c6
3 changed files with 49 additions and 3 deletions
|
@ -78,9 +78,9 @@ enum REEL {
|
|||
typedef enum { TRANS_DEF, TRANS_CUT, TRANS_FADE } TRANSITS;
|
||||
|
||||
// amount to shift scene handles by
|
||||
#define SCNHANDLE_SHIFT (TinselV2 ? 25 : 23)
|
||||
#define OFFSETMASK (TinselV2 ? 0x01ffffffL : 0x007fffffL)
|
||||
#define HANDLEMASK (TinselV2 ? 0xFE000000L : 0xFF800000L)
|
||||
#define SCNHANDLE_SHIFT ((TinselV2 && !IsDemo) ? 25 : 23)
|
||||
#define OFFSETMASK ((TinselV2 && !IsDemo) ? 0x01ffffffL : 0x007fffffL)
|
||||
#define HANDLEMASK ((TinselV2 && !IsDemo) ? 0xFE000000L : 0xFF800000L)
|
||||
|
||||
void DoHailScene(SCNHANDLE scene);
|
||||
|
||||
|
|
|
@ -213,6 +213,43 @@ const MASTER_LIB_CODES DW1_CODES[] = {
|
|||
HIGHEST_LIBCODE
|
||||
};
|
||||
|
||||
const MASTER_LIB_CODES DW2DEMO_CODES[] = {
|
||||
ACTORBRIGHTNESS, ACTORDIRECTION, ACTORPALETTE, ACTORPRIORITY,
|
||||
ACTORREF, ACTORRGB, ACTORSCALE, ACTORXPOS, ACTORYPOS,
|
||||
ADDHIGHLIGHT, ADDINV, ADDINV1, ADDINV2, ADDOPENINV, ADDTOPIC,
|
||||
BACKGROUND, CALLACTOR, CALLGLOBALPROCESS, CALLOBJECT,
|
||||
CALLPROCESS, CALLSCENE, CALLTAG, CAMERA, CDCHANGESCENE,
|
||||
CDDOCHANGE, CDLOAD, CDPLAY, CLEARHOOKSCENE, CLOSEINVENTORY,
|
||||
CONTROL, CONVERSATION, CURSOR, CURSORXPOS, CURSORYPOS,
|
||||
DECCONVW, DECCURSOR, DECFLAGS, DECINV1, DECINV2, DECINVW,
|
||||
DECLEAD, DECSCALE, DECTAGFONT, DECTALKFONT, DELTOPIC,
|
||||
DIMMUSIC, DROP, DROPOUT, EFFECTACTOR, ENABLEMENU, ENDACTOR,
|
||||
ESCAPEOFF, ESCAPEON, EVENT, FACETAG, FADEIN, FADEOUT, FRAMEGRAB,
|
||||
FREEZECURSOR, GETINVLIMIT, GHOST, GLOBALVAR, HASRESTARTED,
|
||||
HAVE, HELDOBJECT, HIDEACTOR, HIDEBLOCK, HIDEEFFECT, HIDEPATH,
|
||||
HIDEREFER, HIDETAG, HOLD, HOOKSCENE, IDLETIME, INSTANTSCROLL,
|
||||
INVENTORY, INVPLAY, INWHICHINV, KILLACTOR, KILLGLOBALPROCESS,
|
||||
KILLPROCESS, LOCALVAR, MOVECURSOR, MOVETAG, MOVETAGTO, NEWSCENE,
|
||||
NOBLOCKING, NOPAUSE, NOSCROLL, OFFSET, OTHEROBJECT, PAUSE, PLAY,
|
||||
PLAYMOVIE, PLAYRTF, PLAYSAMPLE, POINTACTOR, POINTTAG, POSTACTOR,
|
||||
POSTGLOBALPROCESS, POSTOBJECT, POSTPROCESS, POSTTAG, PRINT,
|
||||
PRINTCURSOR, PRINTOBJ, PRINTTAG, QUITGAME, RANDOM, RESETIDLETIME,
|
||||
RESTARTGAME, RESTORESCENE, RUNMODE, SAVESCENE, SAY, SAYAT,
|
||||
SCALINGREELS, SCREENXPOS, SCREENYPOS, SCROLL, SCROLLPARAMETERS,
|
||||
SENDACTOR, SENDGLOBALPROCESS, SENDOBJECT, SENDPROCESS, SENDTAG,
|
||||
SETBRIGHTNESS, SETINVLIMIT, SETINVSIZE, SETLANGUAGE, SETPALETTE,
|
||||
SETSYSTEMSTRING, SETSYSTEMVAR, SHELL, SHOWACTOR, SHOWBLOCK,
|
||||
SHOWEFFECT, SHOWPATH, SHOWREFER, SHOWTAG, STAND, STANDTAG,
|
||||
STARTGLOBALPROCESS, STARTPROCESS, STARTTIMER, STOPWALK, SUBTITLES,
|
||||
SWALK, SYSTEMVAR, TAGTAGXPOS, TAGTAGYPOS, TAGWALKXPOS, TAGWALKYPOS,
|
||||
TALK, TALKAT, TALKPALETTEINDEX, TALKRGB, TALKVIA, THISOBJECT,
|
||||
THISTAG, TIMER, TOPIC, TOPPLAY, TOPWINDOW, TRANSLUCENTINDEX,
|
||||
UNDIMMUSIC, UNHOOKSCENE, WAITFRAME, WAITKEY, WAITSCROLL, WAITTIME,
|
||||
WALK, WALKED, WALKEDPOLY, WALKEDTAG, WALKINGACTOR, WALKPOLY,
|
||||
WALKTAG, WALKXPOS, WALKYPOS, WHICHCD, WHICHINVENTORY,
|
||||
HIGHEST_LIBCODE
|
||||
};
|
||||
|
||||
const MASTER_LIB_CODES DW2_CODES[] = {
|
||||
ACTORBRIGHTNESS, ACTORDIRECTION, ACTORPALETTE, ACTORPRIORITY,
|
||||
ACTORREF, ACTORRGB, ACTORSCALE, ACTORXPOS, ACTORYPOS,
|
||||
|
@ -3977,6 +4014,12 @@ static void Walked(CORO_PARAM, int actor, int x, int y, SCNHANDLE film, bool esc
|
|||
CORO_END_CODE;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
static void WalkedTag(uint16 actorId) {
|
||||
RegisterMover(actorId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Declare a moving actor.
|
||||
*/
|
||||
|
@ -4208,6 +4251,7 @@ int CallLibraryRoutine(CORO_PARAM, int operand, int32 *pp, const INT_CONTEXT *pi
|
|||
int libCode;
|
||||
if (TinselV0) libCode = DW1DEMO_CODES[operand];
|
||||
else if (!TinselV2) libCode = DW1_CODES[operand];
|
||||
else if (_vm->getFeatures() & GF_DEMO) libCode = DW2DEMO_CODES[operand];
|
||||
else libCode = DW2_CODES[operand];
|
||||
|
||||
debug(7, "CallLibraryRoutine op %d (escOn %d, myEscape %d)", operand, pic->escOn, pic->myEscape);
|
||||
|
|
|
@ -139,6 +139,7 @@ typedef bool (*KEYFPTR)(const Common::KeyState &);
|
|||
#define TinselV1 (TinselVersion == TINSEL_V1)
|
||||
#define TinselV2 (TinselVersion == TINSEL_V2)
|
||||
#define TinselV1PSX (TinselVersion == TINSEL_V1 && _vm->getPlatform() == Common::kPlatformPSX)
|
||||
#define IsDemo (_vm->getFeatures() & GF_DEMO)
|
||||
|
||||
// Global reference to the TinselEngine object
|
||||
extern TinselEngine *_vm;
|
||||
|
@ -183,6 +184,7 @@ public:
|
|||
uint32 getFeatures() const;
|
||||
Common::Language getLanguage() const;
|
||||
uint16 getVersion() const;
|
||||
uint32 TinselEngine::getFlags() const;
|
||||
Common::Platform getPlatform() const;
|
||||
|
||||
const char *getSampleIndex(LANGUAGE lang);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue