Ticket #7559: sky-hack4.diff

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

Trying to show 2 more fullscreen images

  • 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
     
    331336        WAITFLIRT,
    332337        WAITVOICE,
    333338        FADEDOWN,
    334         SHOWSCREEN,     CD_19_LOG,
     339        SHOWSCREEN | FULLSCREEN,        CD_19_LOG,
    335340        FADEUP,         CD_19_PAL,
    336341        PLAYVOICE,      CDV_19,
    337342        WAITVOICE,
    338343        PLAYVOICE,      CDV_20,
    339344        FADEDOWN,
    340         SHOWSCREEN,     CD_20_LOG,
     345        SHOWSCREEN | FULLSCREEN,        CD_20_LOG,
    341346        FADEUP,         CD_19_PAL,
    342347        WAITVOICE,
    343348        LOADBG,         59496, // quiet heli
    344349        LOOPBG,
    345350        PLAYVOICE,      CDV_21,
    346351        FADEDOWN,
    347         SHOWSCREEN,     CD_21_LOG,
     352        SHOWSCREEN | FULLSCREEN,        CD_21_LOG,
    348353        FADEUP,         CD_19_PAL,
    349354        WAITVOICE,
    350355        PLAYVOICE,      CDV_22,
     
    354359        PLAYVOICE,      CDV_23,
    355360        FADEDOWN,
    356361        WAITVOICE,
    357         SHOWSCREEN,     CD_24_LOG,
     362        SHOWSCREEN | FULLSCREEN,        CD_24_LOG,
    358363        FADEUP,         CD_23_PAL,
    359364        PLAYVOICE,      CDV_24,
    360365        WAITVOICE,
     
    363368        PLAYVOICE,      CDV_26,
    364369        WAITVOICE,
    365370        FADEDOWN,
    366         SHOWSCREEN,     CD_27_LOG,
     371        SHOWSCREEN | FULLSCREEN,        CD_27_LOG,
    367372        FADEUP,         CD_27_PAL,
    368373        PLAYVOICE,      CDV_27,
    369374        WAITVOICE,
     
    373378        WAITVOICE,
    374379        BGFLIRT,        CD_27,
    375380                PLAYVOICE,      CDV_31,
     381                WAITFLIRT,
     382                CLEARBOTTOM,
    376383                WAITVOICE,
    377384                PLAYVOICE,      CDV_32,
    378385                WAITVOICE,
    379386                PLAYVOICE,      CDV_33,
    380387                WAITVOICE,
    381388                PLAYVOICE,      CDV_34,
    382         WAITFLIRT,
    383389        WAITVOICE,
    384390        PLAYVOICE,      CDV_35,
    385391        WAITVOICE,
    386392        PLAYVOICE,      CDV_36,
    387393                FADEDOWN,
    388                 SHOWSCREEN,     CD_35_LOG,
     394                SHOWSCREEN | FULLSCREEN,        CD_35_LOG,
    389395                FADEUP,         CD_35_PAL,
    390396        WAITVOICE,
    391397        PLAYVOICE,      CDV_37,
    392398                DOFLIRT,        CD_35,
     399        CLEARBOTTOM,
    393400        WAITVOICE,
    394401        PLAYVOICE,      CDV_38,
    395402                DOFLIRT,        CD_37,
     
    397404        PLAYVOICE,      CDV_39,
    398405        WAITVOICE,
    399406        FADEDOWN,
    400         SHOWSCREEN,     CD_40_LOG,
     407        SHOWSCREEN | FULLSCREEN,        CD_40_LOG,
    401408        FADEUP,         CD_40_PAL,
    402409        PLAYVOICE,      CDV_40,
    403410        WAITVOICE,
     
    406413        PLAYVOICE,      CDV_42,
    407414        WAITVOICE,
    408415        FADEDOWN,
    409         SHOWSCREEN,     CD_43_LOG,
     416        SHOWSCREEN | FULLSCREEN,        CD_43_LOG,
    410417        FADEUP,         CD_43_PAL,
    411418        PLAYVOICE,      CDV_43,
    412419        WAITVOICE,
     
    420427        DOFLIRT,        CD_45,
    421428        WAITVOICE,
    422429        FADEDOWN,
    423         SHOWSCREEN,     CD_47_LOG,
     430        SHOWSCREEN | FULLSCREEN,        CD_47_LOG,
    424431        FADEUP,         CD_47_PAL,
    425432        PLAYVOICE,      CDV_47,
    426433        WAITVOICE,
    427434        PLAYVOICE,      CDV_48,
    428435        FADEDOWN,
    429         SHOWSCREEN,     CD_48_LOG,
     436        SHOWSCREEN | FULLSCREEN,        CD_48_LOG,
    430437        FADEUP,         CD_48_PAL,
    431438        WAITVOICE,
    432439        BGFLIRT,        CD_48,
     
    499506        FADEDOWN,
    500507        PLAYVOICE,      CDV_71,
    501508        WAITVOICE,
    502         SHOWSCREEN,     CD_72_LOG,
     509        SHOWSCREEN | FULLSCREEN,        CD_72_LOG,
    503510        FADEUP,         CD_72_PAL,
    504511        PLAYVOICE,      CDV_72,
    505512        WAITVOICE,
    506513        FADEDOWN,
    507         SHOWSCREEN,     CD_73_LOG,
     514        SHOWSCREEN | FULLSCREEN,        CD_73_LOG,
    508515        FADEUP,         CD_73_PAL,
    509516        PLAYVOICE,      CDV_73,
    510517        WAITVOICE,
     
    512519        WAITVOICE,
    513520        PLAYVOICE,      CDV_75,
    514521        FADEDOWN,
    515         SHOWSCREEN,     CD_76_LOG,
     522        SHOWSCREEN | FULLSCREEN,        CD_76_LOG,
    516523        FADEUP,         CD_76_PAL,
    517524        WAITVOICE,
    518525        PLAYVOICE,      CDV_76,
     
    520527        PLAYVOICE,      CDV_77,
    521528        WAITVOICE,
    522529        FADEDOWN,
     530        CLEARBOTTOM,
    523531        SHOWSCREEN,     CD_78_LOG,
    524532        FADEUP,         CD_78_PAL,
    525533        PLAYVOICE,      CDV_78,
     
    534542                PLAYVOICE,      CDV_82,
    535543                WAITVOICE,
    536544        WAITFLIRT,
    537         SHOWSCREEN,     CD_101_LOG,
     545        SHOWSCREEN | FULLSCREEN,        CD_101_LOG,
    538546        BGFLIRT,        CD_101,
    539547                PLAYVOICE,      CDV_83,
    540548                WAITVOICE,
     
    543551                PLAYVOICE,      CDV_85,
    544552                WAITVOICE,
    545553        WAITFLIRT,
     554        CLEARBOTTOM,
    546555        SHOWSCREEN,     CD_102_LOG,
    547556        PLAYVOICE,      CDV_86,
    548557        DOFLIRT,        CD_102,
    549558        FADEDOWN,
     559        // This one could be fullscreen, but that causes animation glitches.
    550560        SHOWSCREEN,     CD_103_LOG,
    551561        FADEUP,         CD_103_PAL,
    552562        BGFLIRT,        CD_103,
     
    556566        WAITVOICE,
    557567        STARTMUSIC,     2,
    558568        FADEDOWN,
    559         SHOWSCREEN,     CD_104_LOG,
     569        SHOWSCREEN | FULLSCREEN,        CD_104_LOG,
    560570        FADEUP,         CD_104_PAL,
    561571        DOFLIRT,        CD_104,
    562572        DOFLIRT,        CD_105,
     
    564574};
    565575
    566576uint16 Intro::_floppyIntroSeq[] = {
     577        // This one could be fullscreen, but that causes animation glitches.
    567578        SHOWSCREEN,   60081,
    568579        FADEUP,       60080,
    569580        DOFLIRT,      60082,
     
    578589                 50, IC_FX_VOLUME,  90,
    579590                  5, IC_FX_VOLUME, 100,
    580591        COMMANDEND,
    581         SHOWSCREEN,   60088,
     592        SHOWSCREEN | FULLSCREEN,   60088,
    582593        COMMANDFLIRT, 60089, // => command list 4b (cockpit)
    583594                1000, IC_PREPARE_TEXT,  77,
    584595                 220, IC_SHOW_TEXT,     20, 160, // radar detects jamming signal
     
    590601                  35, IC_SHOW_TEXT,     30, 160,
    591602                   3, IC_REMOVE_TEXT,
    592603        COMMANDEND,
     604        CLEARBOTTOM,
    593605        SHOWSCREEN,   60090,
    594606        COMMANDFLIRT, 60091, // => command list 4c
    595607                1000, IC_FX_VOLUME, 100,
     
    598610                   4, IC_FX_VOLUME, 127,
    599611        COMMANDEND,
    600612        FADEDOWN,
     613        // This one could be fullscreen, but that causes animation glitches.
    601614        SHOWSCREEN,  60093,
    602615        FADEUP,       60092,
    603616        COMMANDFLIRT, 60094, // => command list 5
     
    605618        COMMANDEND,
    606619        WAITMUSIC,
    607620        FADEDOWN,
    608         SHOWSCREEN,   60096,
     621        SHOWSCREEN | FULLSCREEN,   60096,
    609622        STARTMUSIC,       2,
    610623        FADEUP,       60095,
    611624        COMMANDFLIRT, 60097, // => command list 6a
     
    687700        uint8 *vData = NULL;
    688701        // return false means cancel intro
    689702        uint16 command = *data++;
    690         switch (command) {
     703        switch (command & 0x7fff) {
    691704        case SHOWSCREEN:
    692                 _skyScreen->showScreen(*data++);
     705                _skyScreen->showScreen(*data++, (command & FULLSCREEN) ? true : false);
    693706                return true;
    694707        case FADEUP:
    695708                _skyScreen->paletteFadeUp(*data++);
     
    769782        case STOPBG:
    770783                _mixer->stopID(SOUND_BG);
    771784                return true;
     785        case CLEARBOTTOM:
     786                {
     787                        byte *screenBuf = _skyScreen->giveCurrent() + GAME_SCREEN_HEIGHT * GAME_SCREEN_WIDTH;
     788                        memset(screenBuf, 0, GAME_SCREEN_WIDTH * (FULL_SCREEN_HEIGHT - GAME_SCREEN_HEIGHT));
     789                        _system->copyRectToScreen(screenBuf, GAME_SCREEN_WIDTH, 0, GAME_SCREEN_HEIGHT, GAME_SCREEN_WIDTH, FULL_SCREEN_HEIGHT - GAME_SCREEN_HEIGHT);
     790                        _system->updateScreen();
     791                }
     792                break;
    772793        default:
    773794                error("Unknown intro command %X", command);
    774795        }
  • 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
    159159        if (_currentScreen)
    160160                free(_currentScreen);
    161161        _currentScreen = _skyDisk->loadFile(fileNum);
    162162
    163163        if (_currentScreen)
    164                 showScreen(_currentScreen);
     164                showScreen(_currentScreen, fullscreen);
    165165        else
    166166                warning("Screen::showScreen: can't load file nr. %d",fileNum);
    167167}
    168168
    169 void Screen::showScreen(uint8 *pScreen) {
     169void Screen::showScreen(uint8 *pScreen, bool fullscreen) {
    170170
    171         _system->copyRectToScreen(pScreen, 320, 0, 0, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT);
     171        _system->copyRectToScreen(pScreen, 320, 0, 0, GAME_SCREEN_WIDTH, fullscreen ? FULL_SCREEN_HEIGHT : GAME_SCREEN_HEIGHT);
    172172        _system->updateScreen();
    173173}
    174174