mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-22 09:49:11 +00:00
Some opcodes have been made Simon 1-specific, either because they really are
only used in Simon 1 (e.g. the "beard" opcodes), or because Simon 2 and FF have their own versions. svn-id: r21762
This commit is contained in:
parent
8a8dd15dc6
commit
4e14fd84f4
@ -125,7 +125,7 @@ void SimonEngine::setupOpcodes() {
|
||||
&SimonEngine::o_end,
|
||||
&SimonEngine::o_done,
|
||||
// 70 - 74
|
||||
&SimonEngine::o_printLongText,
|
||||
NULL,
|
||||
&SimonEngine::o_process,
|
||||
NULL,
|
||||
NULL,
|
||||
@ -140,7 +140,7 @@ void SimonEngine::setupOpcodes() {
|
||||
&SimonEngine::o_is,
|
||||
NULL,
|
||||
&SimonEngine::o_debug,
|
||||
&SimonEngine::o_rescan,
|
||||
NULL,
|
||||
NULL,
|
||||
// 85 - 89
|
||||
NULL,
|
||||
@ -158,8 +158,8 @@ void SimonEngine::setupOpcodes() {
|
||||
NULL,
|
||||
&SimonEngine::o_picture,
|
||||
&SimonEngine::o_loadZone,
|
||||
&SimonEngine::o_animate,
|
||||
&SimonEngine::o_stopAnimate,
|
||||
NULL,
|
||||
NULL,
|
||||
// 100 - 104
|
||||
&SimonEngine::o_killAnimate,
|
||||
&SimonEngine::o_defWindow,
|
||||
@ -258,14 +258,14 @@ void SimonEngine::setupOpcodes() {
|
||||
&SimonEngine::o_scnTxtLongText,
|
||||
// 180 - 184
|
||||
&SimonEngine::o_mouseOn,
|
||||
&SimonEngine::o_mouseOff,
|
||||
&SimonEngine::o_loadBeard,
|
||||
&SimonEngine::o_unloadBeard,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&SimonEngine::o_unloadZone,
|
||||
// 185 - 189
|
||||
&SimonEngine::o_loadStrings,
|
||||
NULL,
|
||||
&SimonEngine::o_unfreezeZones,
|
||||
&SimonEngine::o_specialFade,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
// 190 - 194
|
||||
@ -287,6 +287,15 @@ void SimonEngine::setupOpcodes() {
|
||||
|
||||
switch (getGameType()) {
|
||||
case GType_SIMON1:
|
||||
opcode_table[70] = &SimonEngine::o1_printLongText;
|
||||
opcode_table[83] = &SimonEngine::o1_rescan;
|
||||
opcode_table[98] = &SimonEngine::o1_animate;
|
||||
opcode_table[99] = &SimonEngine::o1_stopAnimate;
|
||||
opcode_table[181] = &SimonEngine::o1_mouseOff;
|
||||
opcode_table[182] = &SimonEngine::o1_loadBeard;
|
||||
opcode_table[183] = &SimonEngine::o1_unloadBeard;
|
||||
opcode_table[185] = &SimonEngine::o1_loadStrings;
|
||||
opcode_table[187] = &SimonEngine::o1_specialFade;
|
||||
break;
|
||||
case GType_SIMON2:
|
||||
opcode_table[70] = &SimonEngine::o2_printLongText;
|
||||
@ -294,8 +303,6 @@ void SimonEngine::setupOpcodes() {
|
||||
opcode_table[98] = &SimonEngine::o2_animate;
|
||||
opcode_table[99] = &SimonEngine::o2_stopAnimate;
|
||||
opcode_table[181] = &SimonEngine::o2_mouseOff;
|
||||
opcode_table[185] = NULL;
|
||||
opcode_table[187] = NULL;
|
||||
opcode_table[188] = &SimonEngine::o2_isShortText;
|
||||
opcode_table[189] = &SimonEngine::o2_clearMarks;
|
||||
opcode_table[190] = &SimonEngine::o2_waitMark;
|
||||
@ -321,7 +328,6 @@ void SimonEngine::setupOpcodes() {
|
||||
opcode_table[181] = &SimonEngine::o3_mouseOff;
|
||||
opcode_table[182] = &SimonEngine::o3_loadSmack;
|
||||
opcode_table[183] = &SimonEngine::o3_playSmack;
|
||||
opcode_table[185] = NULL;
|
||||
opcode_table[187] = &SimonEngine::o3_centreScroll;
|
||||
opcode_table[188] = &SimonEngine::o2_isShortText;
|
||||
opcode_table[189] = &SimonEngine::o2_clearMarks;
|
||||
@ -729,12 +735,6 @@ void SimonEngine::o_done() {
|
||||
setScriptReturn(1);
|
||||
}
|
||||
|
||||
void SimonEngine::o_printLongText() {
|
||||
// 70: show string from array
|
||||
const char *str = (const char *)getStringPtrByID(_stringIdArray3[getVarOrByte()]);
|
||||
showMessageFormat("%s\n", str);
|
||||
}
|
||||
|
||||
void SimonEngine::o_process() {
|
||||
// 71: start subroutine
|
||||
Subroutine *sub = getSubroutineByID(getVarOrWord());
|
||||
@ -775,11 +775,6 @@ void SimonEngine::o_debug() {
|
||||
getVarOrByte();
|
||||
}
|
||||
|
||||
void SimonEngine::o_rescan() {
|
||||
// 83: restart subroutine
|
||||
setScriptReturn(-10);
|
||||
}
|
||||
|
||||
void SimonEngine::o_comment() {
|
||||
// 87: comment
|
||||
getNextStringID();
|
||||
@ -863,23 +858,6 @@ void SimonEngine::o_loadZone() {
|
||||
_lockWord &= ~0x80;
|
||||
}
|
||||
|
||||
void SimonEngine::o_animate() {
|
||||
// 98: start vga
|
||||
uint vga_res, vgaSpriteId, windowNum, x, y, palette;
|
||||
vgaSpriteId = getVarOrWord();
|
||||
vga_res = vgaSpriteId / 100;
|
||||
windowNum = getVarOrByte();
|
||||
x = getVarOrWord();
|
||||
y = getVarOrWord();
|
||||
palette = getVarOrWord();
|
||||
loadSprite(windowNum, vga_res, vgaSpriteId, x, y, palette);
|
||||
}
|
||||
|
||||
void SimonEngine::o_stopAnimate() {
|
||||
// 99: kill sprite
|
||||
kill_sprite_simon1(getVarOrWord());
|
||||
}
|
||||
|
||||
void SimonEngine::o_killAnimate() {
|
||||
// 100: vga reset
|
||||
_lockWord |= 0x8000;
|
||||
@ -1597,31 +1575,6 @@ void SimonEngine::o_mouseOn() {
|
||||
scriptMouseOn();
|
||||
}
|
||||
|
||||
void SimonEngine::o_mouseOff() {
|
||||
// 181: force mouseOff
|
||||
scriptMouseOff();
|
||||
}
|
||||
|
||||
void SimonEngine::o_loadBeard() {
|
||||
// 182: load beard
|
||||
if (_beardLoaded == false) {
|
||||
_beardLoaded = true;
|
||||
_lockWord |= 0x8000;
|
||||
read_vga_from_datfile_1(328);
|
||||
_lockWord &= ~0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::o_unloadBeard() {
|
||||
// 183: unload beard
|
||||
if (_beardLoaded == true) {
|
||||
_beardLoaded = false;
|
||||
_lockWord |= 0x8000;
|
||||
read_vga_from_datfile_1(23);
|
||||
_lockWord &= ~0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::o_unloadZone() {
|
||||
// 184: clear vgapointer entry
|
||||
uint a = getVarOrWord();
|
||||
@ -1632,7 +1585,69 @@ void SimonEngine::o_unloadZone() {
|
||||
vpe->vgaFile2 = NULL;
|
||||
}
|
||||
|
||||
void SimonEngine::o_loadStrings() {
|
||||
void SimonEngine::o_unfreezeZones() {
|
||||
// 186: vga pointer op 3
|
||||
unfreezeBottom();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Simon 1 Opcodes
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
void SimonEngine::o1_printLongText() {
|
||||
// 70: show string from array
|
||||
const char *str = (const char *)getStringPtrByID(_stringIdArray3[getVarOrByte()]);
|
||||
showMessageFormat("%s\n", str);
|
||||
}
|
||||
|
||||
void SimonEngine::o1_rescan() {
|
||||
// 83: restart subroutine
|
||||
setScriptReturn(-10);
|
||||
}
|
||||
|
||||
void SimonEngine::o1_animate() {
|
||||
// 98: start vga
|
||||
uint vga_res, vgaSpriteId, windowNum, x, y, palette;
|
||||
vgaSpriteId = getVarOrWord();
|
||||
vga_res = vgaSpriteId / 100;
|
||||
windowNum = getVarOrByte();
|
||||
x = getVarOrWord();
|
||||
y = getVarOrWord();
|
||||
palette = getVarOrWord();
|
||||
loadSprite(windowNum, vga_res, vgaSpriteId, x, y, palette);
|
||||
}
|
||||
|
||||
void SimonEngine::o1_stopAnimate() {
|
||||
// 99: kill sprite
|
||||
kill_sprite_simon1(getVarOrWord());
|
||||
}
|
||||
|
||||
void SimonEngine::o1_mouseOff() {
|
||||
// 181: force mouseOff
|
||||
scriptMouseOff();
|
||||
}
|
||||
|
||||
void SimonEngine::o1_loadBeard() {
|
||||
// 182: load beard
|
||||
if (_beardLoaded == false) {
|
||||
_beardLoaded = true;
|
||||
_lockWord |= 0x8000;
|
||||
read_vga_from_datfile_1(328);
|
||||
_lockWord &= ~0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::o1_unloadBeard() {
|
||||
// 183: unload beard
|
||||
if (_beardLoaded == true) {
|
||||
_beardLoaded = false;
|
||||
_lockWord |= 0x8000;
|
||||
read_vga_from_datfile_1(23);
|
||||
_lockWord &= ~0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::o1_loadStrings() {
|
||||
// 185: load sound files
|
||||
_soundFileId = getVarOrWord();
|
||||
if (getPlatform() == Common::kPlatformAmiga && getFeatures() & GF_TALKIE) {
|
||||
@ -1644,12 +1659,7 @@ void SimonEngine::o_loadStrings() {
|
||||
}
|
||||
}
|
||||
|
||||
void SimonEngine::o_unfreezeZones() {
|
||||
// 186: vga pointer op 3
|
||||
unfreezeBottom();
|
||||
}
|
||||
|
||||
void SimonEngine::o_specialFade() {
|
||||
void SimonEngine::o1_specialFade() {
|
||||
// 187: fade to black
|
||||
fadeToBlack();
|
||||
}
|
||||
|
@ -850,7 +850,6 @@ public:
|
||||
void o_setLongText();
|
||||
void o_end();
|
||||
void o_done();
|
||||
void o_printLongText();
|
||||
void o_process();
|
||||
void o_when();
|
||||
void o_if1();
|
||||
@ -858,7 +857,6 @@ public:
|
||||
void o_isCalled();
|
||||
void o_is();
|
||||
void o_debug();
|
||||
void o_rescan();
|
||||
void o_comment();
|
||||
void o_haltAnimation();
|
||||
void o_restartAnimation();
|
||||
@ -867,8 +865,6 @@ public:
|
||||
void o_getChildren();
|
||||
void o_picture();
|
||||
void o_loadZone();
|
||||
void o_animate();
|
||||
void o_stopAnimate();
|
||||
void o_killAnimate();
|
||||
void o_defWindow();
|
||||
void o_window();
|
||||
@ -928,13 +924,19 @@ public:
|
||||
void o_getPathPosn();
|
||||
void o_scnTxtLongText();
|
||||
void o_mouseOn();
|
||||
void o_mouseOff();
|
||||
void o_loadBeard();
|
||||
void o_unloadBeard();
|
||||
void o_unloadZone();
|
||||
void o_loadStrings();
|
||||
void o_unfreezeZones();
|
||||
void o_specialFade();
|
||||
|
||||
// Opcodes, Simon 1 only
|
||||
void o1_printLongText();
|
||||
void o1_rescan();
|
||||
void o1_animate();
|
||||
void o1_stopAnimate();
|
||||
void o1_mouseOff();
|
||||
void o1_loadBeard();
|
||||
void o1_unloadBeard();
|
||||
void o1_loadStrings();
|
||||
void o1_specialFade();
|
||||
|
||||
// Opcodes, Simon 2 and later
|
||||
void o2_printLongText();
|
||||
@ -946,7 +948,7 @@ public:
|
||||
void o2_clearMarks();
|
||||
void o2_waitMark();
|
||||
|
||||
// Opcodes, Feeble Files
|
||||
// Opcodes, Feeble Files only
|
||||
void o3_jumpOut();
|
||||
void o3_addTextBox();
|
||||
void o3_printLongText();
|
||||
|
Loading…
Reference in New Issue
Block a user