mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 05:38:56 +00:00
Match fade code of original games and minor cleanup
svn-id: r22359
This commit is contained in:
parent
eed7d3e413
commit
54eeb8aeed
@ -380,7 +380,7 @@ void SimonEngine::dump_single_bitmap(int file, int image, const byte *offs, int
|
|||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dump_bitmap(buf, offs, w, h, 0, _palette, base);
|
dump_bitmap(buf, offs, w, h, 0, _displayPalette, base);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pal_load(byte *pal, const byte *vga1, int a, int b) {
|
void pal_load(byte *pal, const byte *vga1, int a, int b) {
|
||||||
|
@ -423,11 +423,11 @@ void SimonEngine::fillBackGroundFromBack(uint lines) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::dx_update_screen_and_palette() {
|
void SimonEngine::dx_update_screen_and_palette() {
|
||||||
if (_paletteColorCount == 0 && _paletteFlag == 1) {
|
if (_fastFadeInFlag == 0 && _paletteFlag == 1) {
|
||||||
_paletteFlag = 0;
|
_paletteFlag = 0;
|
||||||
if (memcmp(_palette, _paletteBackup, 1024) != 0) {
|
if (memcmp(_displayPalette, _currentPalette, 1024)) {
|
||||||
memcpy(_paletteBackup, _palette, 1024);
|
memcpy(_currentPalette, _displayPalette, 1024);
|
||||||
_system->setPalette(_palette, 0, 256);
|
_system->setPalette(_displayPalette, 0, 256);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,7 +440,7 @@ void SimonEngine::dx_update_screen_and_palette() {
|
|||||||
scrollScreen();
|
scrollScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_paletteColorCount != 0) {
|
if (_fastFadeInFlag) {
|
||||||
if (getGameType() == GType_SIMON1 && _usePaletteDelay) {
|
if (getGameType() == GType_SIMON1 && _usePaletteDelay) {
|
||||||
delay(100);
|
delay(100);
|
||||||
_usePaletteDelay = false;
|
_usePaletteDelay = false;
|
||||||
@ -450,13 +450,13 @@ void SimonEngine::dx_update_screen_and_palette() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::fastFadeIn() {
|
void SimonEngine::fastFadeIn() {
|
||||||
if (_paletteColorCount & 0x8000) {
|
if (_fastFadeInFlag & 0x8000) {
|
||||||
slowFadeIn();
|
slowFadeIn();
|
||||||
} else {
|
} else {
|
||||||
_paletteFlag = false;
|
_paletteFlag = false;
|
||||||
memcpy(_paletteBackup, _palette, 1024);
|
memcpy(_currentPalette, _displayPalette, 1024);
|
||||||
_system->setPalette(_palette, 0, _paletteColorCount);
|
_system->setPalette(_displayPalette, 0, _fastFadeInFlag);
|
||||||
_paletteColorCount = 0;
|
_fastFadeInFlag = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,30 +464,28 @@ void SimonEngine::slowFadeIn() {
|
|||||||
uint8 *src, *dst;
|
uint8 *src, *dst;
|
||||||
int c, p;
|
int c, p;
|
||||||
|
|
||||||
_paletteColorCount &= 0x7fff;
|
_fastFadeInFlag &= 0x7fff;
|
||||||
_paletteFlag = false;
|
_paletteFlag = false;
|
||||||
|
|
||||||
memcpy(_videoBuf1, _palette, 768);
|
|
||||||
memset(_videoBuf1, 0, 768);
|
memset(_videoBuf1, 0, 768);
|
||||||
|
memcpy(_currentPalette, _displayPalette, 768);
|
||||||
memcpy(_paletteBackup, _palette, 768);
|
memcpy(_videoBuf1 + 768, _displayPalette, 768);
|
||||||
memcpy(_videoBuf1 + 768, _palette, 768);
|
|
||||||
|
|
||||||
for (c = 255; c >= 0; c -= 4) {
|
for (c = 255; c >= 0; c -= 4) {
|
||||||
src = _videoBuf1 + 768;
|
src = _videoBuf1 + 768;
|
||||||
dst = _videoBuf1;
|
dst = _videoBuf1;
|
||||||
|
|
||||||
for (p = _paletteColorCount; p !=0 ; p--) {
|
for (p = _fastFadeInFlag; p !=0 ; p--) {
|
||||||
if (*src >= c)
|
if (*src >= c)
|
||||||
*dst = *dst + 4;
|
*dst = *dst + 4;
|
||||||
|
|
||||||
src++;
|
src++;
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
_system->setPalette(_videoBuf1, 0, _videoNumPalColors);
|
_system->setPalette(_videoBuf1, 0, _fastFadeCount);
|
||||||
delay(5);
|
delay(5);
|
||||||
}
|
}
|
||||||
_paletteColorCount = 0;
|
_fastFadeInFlag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End of namespace Simon
|
} // End of namespace Simon
|
||||||
|
@ -65,12 +65,6 @@ struct Item {
|
|||||||
Item() { memset(this, 0, sizeof(*this)); }
|
Item() { memset(this, 0, sizeof(*this)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Subroutine {
|
|
||||||
uint16 id; /* subroutine ID */
|
|
||||||
uint16 first; /* offset from subroutine start to first subroutine line */
|
|
||||||
Subroutine *next; /* next subroutine in linked list */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct IconEntry {
|
struct IconEntry {
|
||||||
Item *item;
|
Item *item;
|
||||||
uint16 boxCode;
|
uint16 boxCode;
|
||||||
@ -100,37 +94,17 @@ struct WindowBlock {
|
|||||||
// the actual x-coordinate is: textColumn * 8 + textColumnOffset
|
// the actual x-coordinate is: textColumn * 8 + textColumnOffset
|
||||||
// the actual y-coordinate is: textRow * 8
|
// the actual y-coordinate is: textRow * 8
|
||||||
|
|
||||||
|
|
||||||
enum BoxFlags {
|
|
||||||
kBFTextBox = 0x1,
|
|
||||||
kBFBoxSelected = 0x2,
|
|
||||||
kBFNoTouchName = 0x4,
|
|
||||||
kBFInvertTouch = 0x8,
|
|
||||||
kBFDragBox = 0x10, // Simon 1/2
|
|
||||||
kBFHyperBox = 0x10, // Feeble Files
|
|
||||||
kBFBoxInUse = 0x20,
|
|
||||||
kBFBoxDead = 0x40,
|
|
||||||
kBFBoxItem = 0x80
|
|
||||||
};
|
|
||||||
|
|
||||||
enum SubObjectFlags {
|
|
||||||
kOFText = 0x1,
|
|
||||||
kOFSize = 0x2,
|
|
||||||
kOFWeight = 0x4,
|
|
||||||
kOFVolume = 0x8,
|
|
||||||
kOFIcon = 0x10,
|
|
||||||
kOFKeyColor1 = 0x20,
|
|
||||||
kOFKeyColor2 = 0x40,
|
|
||||||
kOFMenu = 0x80,
|
|
||||||
kOFNumber = 0x100,
|
|
||||||
kOFVoice = 0x200
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SUBROUTINE_LINE_SMALL_SIZE = 2,
|
SUBROUTINE_LINE_SMALL_SIZE = 2,
|
||||||
SUBROUTINE_LINE_BIG_SIZE = 8
|
SUBROUTINE_LINE_BIG_SIZE = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Subroutine {
|
||||||
|
uint16 id; /* subroutine ID */
|
||||||
|
uint16 first; /* offset from subroutine start to first subroutine line */
|
||||||
|
Subroutine *next; /* next subroutine in linked list */
|
||||||
|
};
|
||||||
|
|
||||||
struct SubroutineLine {
|
struct SubroutineLine {
|
||||||
uint16 next;
|
uint16 next;
|
||||||
int16 verb;
|
int16 verb;
|
||||||
@ -154,7 +128,30 @@ struct GameSpecificSettings {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End of namespace Simon
|
enum BoxFlags {
|
||||||
|
kBFTextBox = 0x1,
|
||||||
|
kBFBoxSelected = 0x2,
|
||||||
|
kBFNoTouchName = 0x4,
|
||||||
|
kBFInvertTouch = 0x8,
|
||||||
|
kBFDragBox = 0x10, // Simon 1/2
|
||||||
|
kBFHyperBox = 0x10, // Feeble Files
|
||||||
|
kBFBoxInUse = 0x20,
|
||||||
|
kBFBoxDead = 0x40,
|
||||||
|
kBFBoxItem = 0x80
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SubObjectFlags {
|
||||||
|
kOFText = 0x1,
|
||||||
|
kOFSize = 0x2,
|
||||||
|
kOFWeight = 0x4,
|
||||||
|
kOFVolume = 0x8,
|
||||||
|
kOFIcon = 0x10,
|
||||||
|
kOFKeyColor1 = 0x20,
|
||||||
|
kOFKeyColor2 = 0x40,
|
||||||
|
kOFMenu = 0x80,
|
||||||
|
kOFNumber = 0x100,
|
||||||
|
kOFVoice = 0x200
|
||||||
|
};
|
||||||
|
|
||||||
enum GameFeatures {
|
enum GameFeatures {
|
||||||
GF_TALKIE = 1 << 0,
|
GF_TALKIE = 1 << 0,
|
||||||
@ -232,4 +229,6 @@ enum GameIds {
|
|||||||
GID_FEEBLEFILES_DE
|
GID_FEEBLEFILES_DE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // End of namespace Simon
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1622,20 +1622,18 @@ void SimonEngine::o1_specialFade() {
|
|||||||
// 187: fade to black
|
// 187: fade to black
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
memcpy(_videoBuf1, _paletteBackup, 1024);
|
memcpy(_videoBuf1, _currentPalette, 1024);
|
||||||
|
|
||||||
i = NUM_PALETTE_FADEOUT;
|
|
||||||
do {
|
|
||||||
paletteFadeOut((uint32 *)_videoBuf1, 32);
|
|
||||||
paletteFadeOut((uint32 *)_videoBuf1 + 32 + 16, 144);
|
|
||||||
paletteFadeOut((uint32 *)_videoBuf1 + 32 + 16 + 144 + 16, 48);
|
|
||||||
|
|
||||||
|
for (i = 32; i != 0; --i) {
|
||||||
|
paletteFadeOut(_videoBuf1, 32, 4);
|
||||||
|
paletteFadeOut(_videoBuf1 + 64, 144, 4);
|
||||||
|
paletteFadeOut(_videoBuf1 + 128, 48, 4);
|
||||||
_system->setPalette(_videoBuf1, 0, 256);
|
_system->setPalette(_videoBuf1, 0, 256);
|
||||||
delay(5);
|
delay(5);
|
||||||
} while (--i);
|
}
|
||||||
|
|
||||||
memcpy(_paletteBackup, _videoBuf1, 1024);
|
memcpy(_currentPalette, _videoBuf1, 1024);
|
||||||
memcpy(_palette, _videoBuf1, 1024);
|
memcpy(_displayPalette, _videoBuf1, 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
@ -2132,9 +2130,9 @@ void SimonEngine::o3_setColour() {
|
|||||||
uint g = getVarOrByte();
|
uint g = getVarOrByte();
|
||||||
uint b = getVarOrByte();
|
uint b = getVarOrByte();
|
||||||
|
|
||||||
_palette[c + 0] = r;
|
_displayPalette[c + 0] = r;
|
||||||
_palette[c + 1] = g;
|
_displayPalette[c + 1] = g;
|
||||||
_palette[c + 2] = b;
|
_displayPalette[c + 2] = b;
|
||||||
|
|
||||||
_paletteFlag = 2;
|
_paletteFlag = 2;
|
||||||
}
|
}
|
||||||
|
@ -241,7 +241,7 @@ SimonEngine::SimonEngine(OSystem *syst)
|
|||||||
_scrollUpHitArea = 0;
|
_scrollUpHitArea = 0;
|
||||||
_scrollDownHitArea = 0;
|
_scrollDownHitArea = 0;
|
||||||
|
|
||||||
_paletteColorCount = 0;
|
_fastFadeInFlag = 0;
|
||||||
|
|
||||||
_noOverWrite = 0;
|
_noOverWrite = 0;
|
||||||
_rejectCount = 0;
|
_rejectCount = 0;
|
||||||
@ -259,7 +259,7 @@ SimonEngine::SimonEngine(OSystem *syst)
|
|||||||
_showPreposition = 0;
|
_showPreposition = 0;
|
||||||
_showMessageFlag = 0;
|
_showMessageFlag = 0;
|
||||||
|
|
||||||
_videoNumPalColors = 0;
|
_fastFadeCount = 0;
|
||||||
|
|
||||||
_vgaSpriteChanged = 0;
|
_vgaSpriteChanged = 0;
|
||||||
|
|
||||||
@ -334,8 +334,8 @@ SimonEngine::SimonEngine(OSystem *syst)
|
|||||||
_PVCount1 = 0;
|
_PVCount1 = 0;
|
||||||
_GPVCount1 = 0;
|
_GPVCount1 = 0;
|
||||||
|
|
||||||
memset(_paletteBackup, 0, sizeof(_paletteBackup));
|
memset(_currentPalette, 0, sizeof(_currentPalette));
|
||||||
memset(_palette, 0, sizeof(_palette));
|
memset(_displayPalette, 0, sizeof(_displayPalette));
|
||||||
|
|
||||||
memset(_videoBuf1, 0, sizeof(_videoBuf1));
|
memset(_videoBuf1, 0, sizeof(_videoBuf1));
|
||||||
|
|
||||||
@ -629,20 +629,20 @@ void SimonEngine::errorString(const char *buf1, char *buf2) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::paletteFadeOut(uint32 *pal_values, uint num) {
|
void SimonEngine::paletteFadeOut(byte *palPtr, uint num, uint size) {
|
||||||
byte *p = (byte *)pal_values;
|
byte *p = palPtr;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (p[0] >= 8)
|
if (p[0] >= size)
|
||||||
p[0] -= 8;
|
p[0] -= size;
|
||||||
else
|
else
|
||||||
p[0] = 0;
|
p[0] = 0;
|
||||||
if (p[1] >= 8)
|
if (p[1] >= size)
|
||||||
p[1] -= 8;
|
p[1] -= size;
|
||||||
else
|
else
|
||||||
p[1] = 0;
|
p[1] = 0;
|
||||||
if (p[2] >= 8)
|
if (p[2] >= size)
|
||||||
p[2] -= 8;
|
p[2] -= size;
|
||||||
else
|
else
|
||||||
p[2] = 0;
|
p[2] = 0;
|
||||||
p += 4;
|
p += 4;
|
||||||
@ -1541,7 +1541,7 @@ void SimonEngine::set_video_mode_internal(uint16 mode, uint16 vga_res_id) {
|
|||||||
if (getGameType() == GType_SIMON1) {
|
if (getGameType() == GType_SIMON1) {
|
||||||
if (_unkPalFlag) {
|
if (_unkPalFlag) {
|
||||||
_unkPalFlag = false;
|
_unkPalFlag = false;
|
||||||
while (_paletteColorCount != 0) {
|
while (_fastFadeInFlag != 0) {
|
||||||
delay(10);
|
delay(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,6 @@ namespace Simon {
|
|||||||
uint fileReadItemID(Common::File *in);
|
uint fileReadItemID(Common::File *in);
|
||||||
|
|
||||||
#define CHECK_BOUNDS(x, y) assert((uint)(x) < ARRAYSIZE(y))
|
#define CHECK_BOUNDS(x, y) assert((uint)(x) < ARRAYSIZE(y))
|
||||||
#define NUM_PALETTE_FADEOUT 32
|
|
||||||
|
|
||||||
struct Child;
|
struct Child;
|
||||||
struct SubObject;
|
struct SubObject;
|
||||||
@ -343,7 +342,11 @@ protected:
|
|||||||
uint16 _scrollUpHitArea;
|
uint16 _scrollUpHitArea;
|
||||||
uint16 _scrollDownHitArea;
|
uint16 _scrollDownHitArea;
|
||||||
|
|
||||||
volatile uint16 _paletteColorCount;
|
bool _fastFadeOutFlag;
|
||||||
|
bool _unkPalFlag;
|
||||||
|
byte _paletteFlag;
|
||||||
|
uint _fastFadeCount;
|
||||||
|
volatile uint16 _fastFadeInFlag;
|
||||||
|
|
||||||
int _screenWidth, _screenHeight;
|
int _screenWidth, _screenHeight;
|
||||||
|
|
||||||
@ -351,10 +354,7 @@ protected:
|
|||||||
byte _rejectCount;
|
byte _rejectCount;
|
||||||
bool _rejectBlock;
|
bool _rejectBlock;
|
||||||
|
|
||||||
bool _fastFadeOutFlag;
|
|
||||||
bool _unkPalFlag;
|
|
||||||
bool _exitCutscene;
|
bool _exitCutscene;
|
||||||
byte _paletteFlag;
|
|
||||||
|
|
||||||
uint _soundFileId;
|
uint _soundFileId;
|
||||||
int16 _lastMusicPlayed;
|
int16 _lastMusicPlayed;
|
||||||
@ -363,8 +363,6 @@ protected:
|
|||||||
bool _showPreposition;
|
bool _showPreposition;
|
||||||
bool _showMessageFlag;
|
bool _showMessageFlag;
|
||||||
|
|
||||||
uint _videoNumPalColors;
|
|
||||||
|
|
||||||
uint _vgaSpriteChanged;
|
uint _vgaSpriteChanged;
|
||||||
|
|
||||||
byte *_vgaBufFreeStart, *_vgaBufEnd, *_vgaBufStart;
|
byte *_vgaBufFreeStart, *_vgaBufEnd, *_vgaBufStart;
|
||||||
@ -431,8 +429,8 @@ protected:
|
|||||||
uint16 _PVCount1;
|
uint16 _PVCount1;
|
||||||
uint16 _GPVCount1;
|
uint16 _GPVCount1;
|
||||||
|
|
||||||
uint8 _paletteBackup[1024];
|
uint8 _currentPalette[1024];
|
||||||
uint8 _palette[1024];
|
uint8 _displayPalette[1024];
|
||||||
|
|
||||||
byte _videoBuf1[3000];
|
byte _videoBuf1[3000];
|
||||||
|
|
||||||
@ -502,7 +500,7 @@ protected:
|
|||||||
void loadSound(uint sound, int pan, int vol, uint type);
|
void loadSound(uint sound, int pan, int vol, uint type);
|
||||||
void loadVoice(uint speechId);
|
void loadVoice(uint speechId);
|
||||||
|
|
||||||
void paletteFadeOut(uint32 *pal_values, uint num);
|
void paletteFadeOut(byte *palPtr, uint num, uint size = 8);
|
||||||
|
|
||||||
byte *allocateItem(uint size);
|
byte *allocateItem(uint size);
|
||||||
byte *allocateTable(uint size);
|
byte *allocateTable(uint size);
|
||||||
|
@ -301,7 +301,7 @@ void SimonEngine::vc2_call() {
|
|||||||
uint16 count, num, res;
|
uint16 count, num, res;
|
||||||
byte *old_file_1, *old_file_2;
|
byte *old_file_1, *old_file_2;
|
||||||
byte *b, *bb;
|
byte *b, *bb;
|
||||||
const byte *vc_ptr_org;
|
const byte *vcPtrOrg;
|
||||||
|
|
||||||
num = vcReadVarOrWord();
|
num = vcReadVarOrWord();
|
||||||
|
|
||||||
@ -349,7 +349,7 @@ void SimonEngine::vc2_call() {
|
|||||||
assert(READ_BE_UINT16(&((ImageHeader_Simon *) b)->id) == num);
|
assert(READ_BE_UINT16(&((ImageHeader_Simon *) b)->id) == num);
|
||||||
}
|
}
|
||||||
|
|
||||||
vc_ptr_org = _vcPtr;
|
vcPtrOrg = _vcPtr;
|
||||||
|
|
||||||
if (getGameType() == GType_FF) {
|
if (getGameType() == GType_FF) {
|
||||||
_vcPtr = _curVgaFile1 + READ_LE_UINT16(&((ImageHeader_Feeble *) b)->scriptOffs);
|
_vcPtr = _curVgaFile1 + READ_LE_UINT16(&((ImageHeader_Feeble *) b)->scriptOffs);
|
||||||
@ -363,7 +363,7 @@ void SimonEngine::vc2_call() {
|
|||||||
_curVgaFile1 = old_file_1;
|
_curVgaFile1 = old_file_1;
|
||||||
_curVgaFile2 = old_file_2;
|
_curVgaFile2 = old_file_2;
|
||||||
|
|
||||||
_vcPtr = vc_ptr_org;
|
_vcPtr = vcPtrOrg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::vc3_loadSprite() {
|
void SimonEngine::vc3_loadSprite() {
|
||||||
@ -1622,7 +1622,7 @@ void SimonEngine::vc22_setSpritePalette() {
|
|||||||
palSize = 768;
|
palSize = 768;
|
||||||
}
|
}
|
||||||
|
|
||||||
palptr = &_palette[(a * 64)];
|
palptr = &_displayPalette[(a * 64)];
|
||||||
src = _curVgaFile1 + 6 + b * palSize;
|
src = _curVgaFile1 + 6 + b * palSize;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -2130,7 +2130,7 @@ void SimonEngine::vc59() {
|
|||||||
void SimonEngine::vc58() {
|
void SimonEngine::vc58() {
|
||||||
uint16 sprite = _vgaCurSpriteId;
|
uint16 sprite = _vgaCurSpriteId;
|
||||||
uint16 file = _vgaCurZoneNum;
|
uint16 file = _vgaCurZoneNum;
|
||||||
const byte *vc_ptr_org;
|
const byte *vcPtrOrg;
|
||||||
uint16 tmp;
|
uint16 tmp;
|
||||||
|
|
||||||
_vgaCurZoneNum = vcReadNextWord();
|
_vgaCurZoneNum = vcReadNextWord();
|
||||||
@ -2138,11 +2138,11 @@ void SimonEngine::vc58() {
|
|||||||
|
|
||||||
tmp = to16Wrapper(vcReadNextWord());
|
tmp = to16Wrapper(vcReadNextWord());
|
||||||
|
|
||||||
vc_ptr_org = _vcPtr;
|
vcPtrOrg = _vcPtr;
|
||||||
_vcPtr = (byte *)&tmp;
|
_vcPtr = (byte *)&tmp;
|
||||||
vc23_setSpritePriority();
|
vc23_setSpritePriority();
|
||||||
|
|
||||||
_vcPtr = vc_ptr_org;
|
_vcPtr = vcPtrOrg;
|
||||||
_vgaCurSpriteId = sprite;
|
_vgaCurSpriteId = sprite;
|
||||||
_vgaCurZoneNum = file;
|
_vgaCurZoneNum = file;
|
||||||
}
|
}
|
||||||
@ -2156,11 +2156,11 @@ void SimonEngine::vc_kill_sprite(uint file, uint sprite) {
|
|||||||
VgaSleepStruct *vfs;
|
VgaSleepStruct *vfs;
|
||||||
VgaSprite *vsp;
|
VgaSprite *vsp;
|
||||||
VgaTimerEntry *vte;
|
VgaTimerEntry *vte;
|
||||||
const byte *vc_ptr_org;
|
const byte *vcPtrOrg;
|
||||||
|
|
||||||
old_sprite_id = _vgaCurSpriteId;
|
old_sprite_id = _vgaCurSpriteId;
|
||||||
old_cur_file_id = _vgaCurZoneNum;
|
old_cur_file_id = _vgaCurZoneNum;
|
||||||
vc_ptr_org = _vcPtr;
|
vcPtrOrg = _vcPtr;
|
||||||
|
|
||||||
_vgaCurZoneNum = file;
|
_vgaCurZoneNum = file;
|
||||||
_vgaCurSpriteId = sprite;
|
_vgaCurSpriteId = sprite;
|
||||||
@ -2193,7 +2193,7 @@ void SimonEngine::vc_kill_sprite(uint file, uint sprite) {
|
|||||||
|
|
||||||
_vgaCurZoneNum = old_cur_file_id;
|
_vgaCurZoneNum = old_cur_file_id;
|
||||||
_vgaCurSpriteId = old_sprite_id;
|
_vgaCurSpriteId = old_sprite_id;
|
||||||
_vcPtr = vc_ptr_org;
|
_vcPtr = vcPtrOrg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::vc60_killSprite() {
|
void SimonEngine::vc60_killSprite() {
|
||||||
@ -2221,23 +2221,32 @@ void SimonEngine::vc61_setMaskImage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::vc62_fastFadeOut() {
|
void SimonEngine::vc62_fastFadeOut() {
|
||||||
uint i;
|
|
||||||
|
|
||||||
vc29_stopAllSounds();
|
vc29_stopAllSounds();
|
||||||
|
|
||||||
if (!_fastFadeOutFlag) {
|
if (!_fastFadeOutFlag) {
|
||||||
|
uint i, fadeSize, fadeCount;
|
||||||
|
|
||||||
_fastFadeOutFlag = true;
|
_fastFadeOutFlag = true;
|
||||||
|
|
||||||
_videoNumPalColors = 256;
|
_fastFadeCount = 256;
|
||||||
if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
|
if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
|
||||||
if (_windowNum == 4)
|
if (_windowNum == 4)
|
||||||
_videoNumPalColors = 208;
|
_fastFadeCount = 208;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(_videoBuf1, _paletteBackup, _videoNumPalColors * 4);
|
memcpy(_videoBuf1, _currentPalette, _fastFadeCount * 4);
|
||||||
for (i = NUM_PALETTE_FADEOUT; i != 0; --i) {
|
|
||||||
paletteFadeOut((uint32 *)_videoBuf1, _videoNumPalColors);
|
if (getGameType() == GType_FF && !getBitFlag(75)) {
|
||||||
_system->setPalette(_videoBuf1, 0, _videoNumPalColors);
|
fadeCount = 32;
|
||||||
|
fadeSize = 8;
|
||||||
|
} else {
|
||||||
|
fadeCount = 4;
|
||||||
|
fadeSize = 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = fadeCount; i != 0; --i) {
|
||||||
|
paletteFadeOut(_videoBuf1, _fastFadeCount, fadeSize);
|
||||||
|
_system->setPalette(_videoBuf1, 0, _fastFadeCount);
|
||||||
delay(5);
|
delay(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2245,7 +2254,7 @@ void SimonEngine::vc62_fastFadeOut() {
|
|||||||
uint16 params[5]; /* parameters to vc10_draw */
|
uint16 params[5]; /* parameters to vc10_draw */
|
||||||
VgaSprite *vsp;
|
VgaSprite *vsp;
|
||||||
VgaPointersEntry *vpe;
|
VgaPointersEntry *vpe;
|
||||||
const byte *vc_ptr_org = _vcPtr;
|
const byte *vcPtrOrg = _vcPtr;
|
||||||
|
|
||||||
vsp = _vgaSprites;
|
vsp = _vgaSprites;
|
||||||
while (vsp->id != 0) {
|
while (vsp->id != 0) {
|
||||||
@ -2274,7 +2283,7 @@ void SimonEngine::vc62_fastFadeOut() {
|
|||||||
}
|
}
|
||||||
vsp++;
|
vsp++;
|
||||||
}
|
}
|
||||||
_vcPtr = vc_ptr_org;
|
_vcPtr = vcPtrOrg;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow one section of Simon the Sorcerer 1 introduction to be displayed
|
// Allow one section of Simon the Sorcerer 1 introduction to be displayed
|
||||||
@ -2295,11 +2304,11 @@ void SimonEngine::vc62_fastFadeOut() {
|
|||||||
|
|
||||||
void SimonEngine::vc63_fastFadeIn() {
|
void SimonEngine::vc63_fastFadeIn() {
|
||||||
if (getGameType() == GType_FF) {
|
if (getGameType() == GType_FF) {
|
||||||
_paletteColorCount = 256;
|
_fastFadeInFlag = 256;
|
||||||
} else {
|
} else {
|
||||||
_paletteColorCount = 208;
|
_fastFadeInFlag = 208;
|
||||||
if (_windowNum != 4) {
|
if (_windowNum != 4) {
|
||||||
_paletteColorCount = 256;
|
_fastFadeInFlag = 256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_fastFadeOutFlag = false;
|
_fastFadeOutFlag = false;
|
||||||
@ -2313,13 +2322,13 @@ void SimonEngine::vc64_skipIfSpeechEnded() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SimonEngine::vc65_slowFadeIn() {
|
void SimonEngine::vc65_slowFadeIn() {
|
||||||
_paletteColorCount = 624;
|
_fastFadeInFlag = 624;
|
||||||
_videoNumPalColors = 208;
|
_fastFadeCount = 208;
|
||||||
if (_windowNum != 4) {
|
if (_windowNum != 4) {
|
||||||
_paletteColorCount = 768;
|
_fastFadeInFlag = 768;
|
||||||
_videoNumPalColors = 256;
|
_fastFadeCount = 256;
|
||||||
}
|
}
|
||||||
_paletteColorCount |= 0x8000;
|
_fastFadeInFlag |= 0x8000;
|
||||||
_fastFadeOutFlag = false;
|
_fastFadeOutFlag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user