Ticket #7559: sky-hack4-updated.diff

File sky-hack4-updated.diff, 10.7 KB (added by jvprat, 17 years ago)

Updated version of sky-hack4.diff

  • engines/sky/screen.h

     
    6464        void paletteFadeUp(uint8 *pal);
    6565        void paletteFadeUp(uint16 fileNr);
    6666
    67         void showScreen(uint16 fileNum);
    68         void showScreen(uint8 *pScreen);
     67        void showScreen(uint16 fileNum, bool fullscreen = false);
     68        void showScreen(uint8 *pScreen, bool fullscreen = false);
    6969
    7070        void handleTimer(void);
    7171        void startSequence(uint16 fileNum);
     
    8282        void fnFadeUp(uint32 palNum, uint32 scroll);
    8383        void fnFadeDown(uint32 scroll);
    8484        void fnDrawScreen(uint32 palette, uint32 scroll);
    85         void clearScreen(void);
     85        void clearScreen(bool fullscreen = false);
    8686        void setFocusRectangle(const Common::Rect& rect);
    8787
    8888        void recreate(void);
  • engines/sky/intro.cpp

     
    6363#define PLAYBG                  15 // play background sound
    6464#define LOOPBG                  16 // loop background sound
    6565#define STOPBG                  17 // stop background sound
     66#define CLEARBOTTOM             18 // clear the screen
    6667#define SEQEND           65535 // end of intro sequence
    6768
     69// Modifier flag for SHOWSCREEN when we want the image to cover the entire
     70// screen.
     71#define FULLSCREEN              0x8000
     72
    6873#define IC_PREPARE_TEXT 20 // commands used in COMMANDFLIRT block
    6974#define IC_SHOW_TEXT    21
    7075#define IC_REMOVE_TEXT  22
     
    334339        WAITFLIRT,
    335340        WAITVOICE,
    336341        FADEDOWN,
    337         SHOWSCREEN,     CD_19_LOG,
     342        SHOWSCREEN | FULLSCREEN,        CD_19_LOG,
    338343        FADEUP,         CD_19_PAL,
    339344        PLAYVOICE,      CDV_19,         // Joey: "Foster! (zzzt) H-Help!"
    340345        WAITVOICE,
    341346        PLAYVOICE,      CDV_20,         // Joey: "Better make my next body move faster, Foster..."
    342347        FADEDOWN,
    343         SHOWSCREEN,     CD_20_LOG,
     348        SHOWSCREEN | FULLSCREEN,        CD_20_LOG,
    344349        FADEUP,         CD_19_PAL,
    345350        WAITVOICE,
    346351        LOADBG,         59496, // quiet heli
    347352        LOOPBG,
    348353        PLAYVOICE,      CDV_21,         // Foster: "He was only a robot, but, well, I loved the little guy."
    349354        FADEDOWN,
    350         SHOWSCREEN,     CD_21_LOG,
     355        SHOWSCREEN | FULLSCREEN,        CD_21_LOG,
    351356        FADEUP,         CD_19_PAL,
    352357        WAITVOICE,
    353358        PLAYVOICE,      CDV_22,         // Foster: "Then, as suddenly as it started, the shooting stopped."
     
    358363        /* fade down while Foster's saying his line */
    359364        FADEDOWN,
    360365        WAITVOICE,
    361         SHOWSCREEN,     CD_24_LOG,
     366        SHOWSCREEN | FULLSCREEN,        CD_24_LOG,
    362367        FADEUP,         CD_23_PAL,
    363368        PLAYVOICE,      CDV_24,         // Reich: "Whoever is in charge here, come forward..."
    364369        WAITVOICE,
     
    367372        PLAYVOICE,      CDV_26,         // Foster: "Only a fool would have argued with that firepower."
    368373        WAITVOICE,
    369374        FADEDOWN,
    370         SHOWSCREEN,     CD_27_LOG,
     375        SHOWSCREEN | FULLSCREEN,        CD_27_LOG,
    371376        FADEUP,         CD_27_PAL,
    372377        PLAYVOICE,      CDV_27,         // Shaman: "... I am the leader of these people... We are peaceful..."
    373378        WAITVOICE,
     
    377382        WAITVOICE,
    378383        BGFLIRT,        CD_27,
    379384                PLAYVOICE,      CDV_31, // Reich: "We're looking for someone..."
     385                WAITFLIRT,
     386                CLEARBOTTOM,
    380387                WAITVOICE,
    381388                PLAYVOICE,      CDV_32, // Reich: "Someone who doesn't belong here..."
    382389                WAITVOICE,
    383390                PLAYVOICE,      CDV_33, // Reich: "Who wasn't born in this garbage dump..."
    384391                WAITVOICE,
    385392                PLAYVOICE,      CDV_34, // Reich: "Who came from the city as a child..."
    386         WAITFLIRT,
    387393        WAITVOICE,
    388394        PLAYVOICE,      CDV_35,         // Reich: "We want to take him home again."
    389395        WAITVOICE,
    390396        PLAYVOICE,      CDV_36,         // Foster: "My mind racing, I remembered where I'd seen that symbol before..."
    391397                FADEDOWN,
    392                 SHOWSCREEN,     CD_35_LOG,
     398                SHOWSCREEN | FULLSCREEN,        CD_35_LOG,
    393399                FADEUP,         CD_35_PAL,
    394400        WAITVOICE,
    395401        PLAYVOICE,      CDV_37,         // Foster: "It was the day the tribe found me..."
    396402                DOFLIRT,        CD_35,
     403        CLEARBOTTOM,
    397404        WAITVOICE,
    398405        PLAYVOICE,      CDV_38,         // Foster: "The day of the crash..."
    399406                DOFLIRT,        CD_37,
     
    401408        PLAYVOICE,      CDV_39,         // Foster: "The day my mother died."
    402409        WAITVOICE,
    403410        FADEDOWN,
    404         SHOWSCREEN,     CD_40_LOG,
     411        SHOWSCREEN | FULLSCREEN,        CD_40_LOG,
    405412        FADEUP,         CD_40_PAL,
    406413        PLAYVOICE,      CDV_40,         // Shaman: "You alright, city boy?"
    407414        WAITVOICE,
     
    410417        PLAYVOICE,      CDV_42,         // Foster: "R-Robert."
    411418        WAITVOICE,
    412419        FADEDOWN,
    413         SHOWSCREEN,     CD_43_LOG,
     420        SHOWSCREEN | FULLSCREEN,        CD_43_LOG,
    414421        FADEUP,         CD_43_PAL,
    415422        PLAYVOICE,      CDV_43,         // Shaman: "Hah! Welcome to the Gap, Robert!"
    416423        WAITVOICE,
     
    424431        DOFLIRT,        CD_45,
    425432        WAITVOICE,
    426433        FADEDOWN,
    427         SHOWSCREEN,     CD_47_LOG,
     434        SHOWSCREEN | FULLSCREEN,        CD_47_LOG,
    428435        FADEUP,         CD_47_PAL,
    429436        PLAYVOICE,      CDV_47,         // Foster: "His tribe was poor, but they treated me like one of their own..."
    430437        WAITVOICE,
    431438        PLAYVOICE,      CDV_48,         // Foster: "I learned how to survive in the wasteland they called the Gap..."
    432439        FADEDOWN,
    433         SHOWSCREEN,     CD_48_LOG,
     440        SHOWSCREEN | FULLSCREEN,        CD_48_LOG,
    434441        FADEUP,         CD_48_PAL,
    435442        WAITVOICE,
    436443        BGFLIRT,        CD_48,
     
    503510        FADEDOWN,
    504511        PLAYVOICE,      CDV_71,         // Reich: "Good. Detonate."
    505512        WAITVOICE,
    506         SHOWSCREEN,     CD_72_LOG,
     513        SHOWSCREEN | FULLSCREEN,        CD_72_LOG,
    507514        FADEUP,         CD_72_PAL,
    508515        PLAYVOICE,      CDV_72,         // Foster: "Much too late."
    509516        WAITVOICE,
    510517        FADEDOWN,
    511         SHOWSCREEN,     CD_73_LOG,
     518        SHOWSCREEN | FULLSCREEN,        CD_73_LOG,
    512519        FADEUP,         CD_73_PAL,
    513520        PLAYVOICE,      CDV_73,         // Foster: "Why, you murdering..."
    514521        WAITVOICE,
     
    516523        WAITVOICE,
    517524        PLAYVOICE,      CDV_75,         // Foster: "All I could do was wait."
    518525        FADEDOWN,
    519         SHOWSCREEN,     CD_76_LOG,
     526        SHOWSCREEN | FULLSCREEN,        CD_76_LOG,
    520527        FADEUP,         CD_76_PAL,
    521528        WAITVOICE,
    522529        PLAYVOICE,      CDV_76,         // Foster: "Just like on a hunt. Just like the old man taught me."
     
    524531        PLAYVOICE,      CDV_77,         // Foster: "Wait... and be ready."
    525532        WAITVOICE,
    526533        FADEDOWN,
     534        CLEARBOTTOM,
    527535        SHOWSCREEN,     CD_78_LOG,
    528536        FADEUP,         CD_78_PAL,
    529537        PLAYVOICE,      CDV_78,         // Foster: "It was dawn when we reached the City."
     
    538546                PLAYVOICE,      CDV_82, // Guard: "Yes, sir. Locking on automatic landing beacon."
    539547                WAITVOICE,
    540548        WAITFLIRT,
    541         SHOWSCREEN,     CD_101_LOG,
     549        SHOWSCREEN | FULLSCREEN,        CD_101_LOG,
    542550        BGFLIRT,        CD_101,
    543551                PLAYVOICE,      CDV_83, // Foster: "But what was I? Why did..."
    544552                WAITVOICE,
     
    547555                PLAYVOICE,      CDV_85, // Guard: "We're going to HIT!"
    548556                WAITVOICE,
    549557        WAITFLIRT,
     558        CLEARBOTTOM,
    550559        SHOWSCREEN,     CD_102_LOG,
    551560        PLAYVOICE,      CDV_86,         // Foster: "Maybe I'd get some answers now."
    552561        DOFLIRT,        CD_102,
    553562        FADEDOWN,
     563        // This one could be fullscreen, but that causes animation glitches.
    554564        SHOWSCREEN,     CD_103_LOG,
    555565        FADEUP,         CD_103_PAL,
    556566        BGFLIRT,        CD_103,
     
    560570        WAITVOICE,
    561571        STARTMUSIC,     2,
    562572        FADEDOWN,
    563         SHOWSCREEN,     CD_104_LOG,
     573        SHOWSCREEN | FULLSCREEN,        CD_104_LOG,
    564574        FADEUP,         CD_104_PAL,
    565575        DOFLIRT,        CD_104,
    566576        DOFLIRT,        CD_105,
     
    568578};
    569579
    570580uint16 Intro::_floppyIntroSeq[] = {
     581        // This one could be fullscreen, but that causes animation glitches.
    571582        SHOWSCREEN,   60081,
    572583        FADEUP,       60080,
    573584        DOFLIRT,      60082,
     
    582593                 50, IC_FX_VOLUME,  90,
    583594                  5, IC_FX_VOLUME, 100,
    584595        COMMANDEND,
    585         SHOWSCREEN,   60088,
     596        SHOWSCREEN | FULLSCREEN,   60088,
    586597        COMMANDFLIRT, 60089, // => command list 4b (cockpit)
    587598                1000, IC_PREPARE_TEXT,  77,
    588599                 220, IC_SHOW_TEXT,     20, 160, // radar detects jamming signal
     
    594605                  35, IC_SHOW_TEXT,     30, 160,
    595606                   3, IC_REMOVE_TEXT,
    596607        COMMANDEND,
     608        CLEARBOTTOM,
    597609        SHOWSCREEN,   60090,
    598610        COMMANDFLIRT, 60091, // => command list 4c
    599611                1000, IC_FX_VOLUME, 100,
     
    602614                   4, IC_FX_VOLUME, 127,
    603615        COMMANDEND,
    604616        FADEDOWN,
     617        // This one could be fullscreen, but that causes animation glitches.
    605618        SHOWSCREEN,  60093,
    606619        FADEUP,       60092,
    607620        COMMANDFLIRT, 60094, // => command list 5
     
    609622        COMMANDEND,
    610623        WAITMUSIC,
    611624        FADEDOWN,
    612         SHOWSCREEN,   60096,
     625        SHOWSCREEN | FULLSCREEN,   60096,
    613626        STARTMUSIC,       2,
    614627        FADEUP,       60095,
    615628        COMMANDFLIRT, 60097, // => command list 6a
     
    691704        uint8 *vData = NULL;
    692705        // return false means cancel intro
    693706        uint16 command = *data++;
    694         switch (command) {
     707        switch (command & 0x7fff) {
    695708        case SHOWSCREEN:
    696                 _skyScreen->showScreen(*data++);
     709                _skyScreen->showScreen(*data++, (command & FULLSCREEN) ? true : false);
    697710                return true;
    698711        case FADEUP:
    699712                _skyScreen->paletteFadeUp(*data++);
     
    773786        case STOPBG:
    774787                _mixer->stopID(SOUND_BG);
    775788                return true;
     789        case CLEARBOTTOM:
     790                {
     791                        byte *screenBuf = _skyScreen->giveCurrent() + GAME_SCREEN_HEIGHT * GAME_SCREEN_WIDTH;
     792                        memset(screenBuf, 0, GAME_SCREEN_WIDTH * (FULL_SCREEN_HEIGHT - GAME_SCREEN_HEIGHT));
     793                        _system->copyRectToScreen(screenBuf, GAME_SCREEN_WIDTH, 0, GAME_SCREEN_HEIGHT, GAME_SCREEN_WIDTH, FULL_SCREEN_HEIGHT - GAME_SCREEN_HEIGHT);
     794                        _system->updateScreen();
     795                }
     796                return true;
    776797        default:
    777798                error("Unknown intro command %X", command);
    778799        }
  • engines/sky/sky.cpp

     
    281281                }
    282282
    283283                if (!_systemVars.quitGame) {
     284                        _skyScreen->clearScreen(true);
    284285                        _skyLogic->initScreen0();
    285286                        if (introSkipped)
    286287                                _skyControl->restartGame();
  • engines/sky/screen.cpp

     
    9999                free(_scrollScreen);
    100100}
    101101
    102 void Screen::clearScreen(void) {
     102void Screen::clearScreen(bool fullscreen) {
    103103
    104104        memset(_currentScreen, 0, FULL_SCREEN_WIDTH * FULL_SCREEN_HEIGHT);
    105         _system->copyRectToScreen(_currentScreen, GAME_SCREEN_WIDTH, 0, 0, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT);
     105        _system->copyRectToScreen(_currentScreen, GAME_SCREEN_WIDTH, 0, 0, GAME_SCREEN_WIDTH, fullscreen ? FULL_SCREEN_HEIGHT : GAME_SCREEN_HEIGHT);
    106106        _system->updateScreen();
    107107}
    108108
     
    154154                warning("Screen::setPalette: can't load file nr. %d",fileNum);
    155155}
    156156
    157 void Screen::showScreen(uint16 fileNum) {
     157void Screen::showScreen(uint16 fileNum, bool fullscreen) {
    158158        // This is only used for static images in the floppy and cd intro
    159159        if (_currentScreen)
    160160                free(_currentScreen);
    161161        _currentScreen = _skyDisk->loadFile(fileNum);
    162         // make sure the last 8 lines are forced to black.
    163         memset(_currentScreen + GAME_SCREEN_HEIGHT * GAME_SCREEN_WIDTH, 0, (FULL_SCREEN_HEIGHT - GAME_SCREEN_HEIGHT) * GAME_SCREEN_WIDTH);
     162        if (!fullscreen) {
     163                // make sure the last 8 lines are forced to black.
     164                memset(_currentScreen + GAME_SCREEN_HEIGHT * GAME_SCREEN_WIDTH, 0, (FULL_SCREEN_HEIGHT - GAME_SCREEN_HEIGHT) * GAME_SCREEN_WIDTH);
     165        }
    164166
    165167        if (_currentScreen)
    166                 showScreen(_currentScreen);
     168                showScreen(_currentScreen, fullscreen);
    167169        else
    168170                warning("Screen::showScreen: can't load file nr. %d",fileNum);
    169171}
    170172
    171 void Screen::showScreen(uint8 *pScreen) {
     173void Screen::showScreen(uint8 *pScreen, bool fullscreen) {
    172174
    173         _system->copyRectToScreen(pScreen, 320, 0, 0, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT);
     175        _system->copyRectToScreen(pScreen, 320, 0, 0, GAME_SCREEN_WIDTH, fullscreen ? FULL_SCREEN_HEIGHT : GAME_SCREEN_HEIGHT);
    174176        _system->updateScreen();
    175177}
    176178