Ticket #7559: sky-hack.diff
File sky-hack.diff, 7.5 KB (added by , 17 years ago) |
---|
-
engines/sky/screen.h
64 64 void paletteFadeUp(uint8 *pal); 65 65 void paletteFadeUp(uint16 fileNr); 66 66 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); 69 69 70 70 void handleTimer(void); 71 71 void startSequence(uint16 fileNum); … … 82 82 void fnFadeUp(uint32 palNum, uint32 scroll); 83 83 void fnFadeDown(uint32 scroll); 84 84 void fnDrawScreen(uint32 palette, uint32 scroll); 85 void clearScreen( void);85 void clearScreen(bool fullscreen = false); 86 86 void setFocusRectangle(const Common::Rect& rect); 87 87 88 88 void recreate(void); -
engines/sky/intro.cpp
63 63 #define PLAYBG 15 // play background sound 64 64 #define LOOPBG 16 // loop background sound 65 65 #define STOPBG 17 // stop background sound 66 #define CLEARGFX 18 // clear area of the screen 66 67 #define SEQEND 65535 // end of intro sequence 67 68 69 // Modifier flag for SHOWSCREEN when we want the image to cover the entire 70 // screen. 71 #define FULLSCREEN 0x8000 72 68 73 #define IC_PREPARE_TEXT 20 // commands used in COMMANDFLIRT block 69 74 #define IC_SHOW_TEXT 21 70 75 #define IC_REMOVE_TEXT 22 … … 331 336 WAITFLIRT, 332 337 WAITVOICE, 333 338 FADEDOWN, 334 SHOWSCREEN , CD_19_LOG,339 SHOWSCREEN | FULLSCREEN, CD_19_LOG, 335 340 FADEUP, CD_19_PAL, 336 341 PLAYVOICE, CDV_19, 337 342 WAITVOICE, 338 343 PLAYVOICE, CDV_20, 339 344 FADEDOWN, 345 CLEARGFX, 0, 192, 320, 8, 340 346 SHOWSCREEN, CD_20_LOG, 341 347 FADEUP, CD_19_PAL, 342 348 WAITVOICE, … … 344 350 LOOPBG, 345 351 PLAYVOICE, CDV_21, 346 352 FADEDOWN, 347 SHOWSCREEN , CD_21_LOG,353 SHOWSCREEN | FULLSCREEN, CD_21_LOG, 348 354 FADEUP, CD_19_PAL, 349 355 WAITVOICE, 350 356 PLAYVOICE, CDV_22, … … 354 360 PLAYVOICE, CDV_23, 355 361 FADEDOWN, 356 362 WAITVOICE, 357 SHOWSCREEN , CD_24_LOG,363 SHOWSCREEN | FULLSCREEN, CD_24_LOG, 358 364 FADEUP, CD_23_PAL, 359 365 PLAYVOICE, CDV_24, 360 366 WAITVOICE, … … 363 369 PLAYVOICE, CDV_26, 364 370 WAITVOICE, 365 371 FADEDOWN, 372 CLEARGFX, 0, 192, 320, 8, 373 // This one could be fullscreen, but that causes animation glitches. 366 374 SHOWSCREEN, CD_27_LOG, 367 375 FADEUP, CD_27_PAL, 368 376 PLAYVOICE, CDV_27, … … 385 393 WAITVOICE, 386 394 PLAYVOICE, CDV_36, 387 395 FADEDOWN, 396 // This one could be fullscreen, but that causes animation glitches. 388 397 SHOWSCREEN, CD_35_LOG, 389 398 FADEUP, CD_35_PAL, 390 399 WAITVOICE, … … 397 406 PLAYVOICE, CDV_39, 398 407 WAITVOICE, 399 408 FADEDOWN, 400 SHOWSCREEN , CD_40_LOG,409 SHOWSCREEN | FULLSCREEN, CD_40_LOG, 401 410 FADEUP, CD_40_PAL, 402 411 PLAYVOICE, CDV_40, 403 412 WAITVOICE, … … 406 415 PLAYVOICE, CDV_42, 407 416 WAITVOICE, 408 417 FADEDOWN, 418 CLEARGFX, 0, 192, 320, 8, 409 419 SHOWSCREEN, CD_43_LOG, 410 420 FADEUP, CD_43_PAL, 411 421 PLAYVOICE, CDV_43, … … 420 430 DOFLIRT, CD_45, 421 431 WAITVOICE, 422 432 FADEDOWN, 423 SHOWSCREEN , CD_47_LOG,433 SHOWSCREEN | FULLSCREEN, CD_47_LOG, 424 434 FADEUP, CD_47_PAL, 425 435 PLAYVOICE, CDV_47, 426 436 WAITVOICE, 427 437 PLAYVOICE, CDV_48, 428 438 FADEDOWN, 439 CLEARGFX, 0, 192, 320, 8, 429 440 SHOWSCREEN, CD_48_LOG, 430 441 FADEUP, CD_48_PAL, 431 442 WAITVOICE, … … 499 510 FADEDOWN, 500 511 PLAYVOICE, CDV_71, 501 512 WAITVOICE, 502 SHOWSCREEN , CD_72_LOG,513 SHOWSCREEN | FULLSCREEN, CD_72_LOG, 503 514 FADEUP, CD_72_PAL, 504 515 PLAYVOICE, CDV_72, 505 516 WAITVOICE, 506 517 FADEDOWN, 518 CLEARGFX, 0, 192, 320, 8, 507 519 SHOWSCREEN, CD_73_LOG, 508 520 FADEUP, CD_73_PAL, 509 521 PLAYVOICE, CDV_73, … … 512 524 WAITVOICE, 513 525 PLAYVOICE, CDV_75, 514 526 FADEDOWN, 515 SHOWSCREEN , CD_76_LOG,527 SHOWSCREEN | FULLSCREEN, CD_76_LOG, 516 528 FADEUP, CD_76_PAL, 517 529 WAITVOICE, 518 530 PLAYVOICE, CDV_76, … … 520 532 PLAYVOICE, CDV_77, 521 533 WAITVOICE, 522 534 FADEDOWN, 535 CLEARGFX, 0, 192, 320, 8, 523 536 SHOWSCREEN, CD_78_LOG, 524 537 FADEUP, CD_78_PAL, 525 538 PLAYVOICE, CDV_78, … … 547 560 PLAYVOICE, CDV_86, 548 561 DOFLIRT, CD_102, 549 562 FADEDOWN, 563 // This one could be fullscreen, but that causes animation glitches. 550 564 SHOWSCREEN, CD_103_LOG, 551 565 FADEUP, CD_103_PAL, 552 566 BGFLIRT, CD_103, … … 556 570 WAITVOICE, 557 571 STARTMUSIC, 2, 558 572 FADEDOWN, 559 SHOWSCREEN , CD_104_LOG,573 SHOWSCREEN | FULLSCREEN, CD_104_LOG, 560 574 FADEUP, CD_104_PAL, 561 575 DOFLIRT, CD_104, 562 576 DOFLIRT, CD_105, … … 564 578 }; 565 579 566 580 uint16 Intro::_floppyIntroSeq[] = { 581 // This one could be fullscreen, but that causes animation glitches. 567 582 SHOWSCREEN, 60081, 568 583 FADEUP, 60080, 569 584 DOFLIRT, 60082, … … 598 613 4, IC_FX_VOLUME, 127, 599 614 COMMANDEND, 600 615 FADEDOWN, 616 // This one could be fullscreen, but that causes animation glitches. 601 617 SHOWSCREEN, 60093, 602 618 FADEUP, 60092, 603 619 COMMANDFLIRT, 60094, // => command list 5 … … 605 621 COMMANDEND, 606 622 WAITMUSIC, 607 623 FADEDOWN, 608 SHOWSCREEN , 60096,624 SHOWSCREEN | FULLSCREEN, 60096, 609 625 STARTMUSIC, 2, 610 626 FADEUP, 60095, 611 627 COMMANDFLIRT, 60097, // => command list 6a … … 687 703 uint8 *vData = NULL; 688 704 // return false means cancel intro 689 705 uint16 command = *data++; 690 switch (command ) {706 switch (command & 0x7fff) { 691 707 case SHOWSCREEN: 692 _skyScreen->showScreen(*data++ );708 _skyScreen->showScreen(*data++, (command & FULLSCREEN) ? true : false); 693 709 return true; 694 710 case FADEUP: 695 711 _skyScreen->paletteFadeUp(*data++); … … 769 785 case STOPBG: 770 786 _mixer->stopID(SOUND_BG); 771 787 return true; 788 case CLEARGFX: 789 { 790 int x = *data++; 791 int y = *data++; 792 int w = *data++; 793 int h = *data++; 794 byte *screenBuf = _skyScreen->giveCurrent() + x * GAME_SCREEN_WIDTH + y; 795 796 for (int i = 0; i < h; i++) { 797 memset(screenBuf + i * GAME_SCREEN_WIDTH + x, 0, w); 798 } 799 800 _system->copyRectToScreen(screenBuf, GAME_SCREEN_WIDTH, x, y, w, h); 801 _system->updateScreen(); 802 } 803 break; 772 804 default: 773 805 error("Unknown intro command %X", command); 774 806 } -
engines/sky/sky.cpp
281 281 } 282 282 283 283 if (!_systemVars.quitGame) { 284 _skyScreen->clearScreen(true); 284 285 _skyLogic->initScreen0(); 285 286 if (introSkipped) 286 287 _skyControl->restartGame(); -
engines/sky/screen.cpp
99 99 free(_scrollScreen); 100 100 } 101 101 102 void Screen::clearScreen( void) {102 void Screen::clearScreen(bool fullscreen) { 103 103 104 104 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); 106 106 _system->updateScreen(); 107 107 } 108 108 … … 154 154 warning("Screen::setPalette: can't load file nr. %d",fileNum); 155 155 } 156 156 157 void Screen::showScreen(uint16 fileNum ) {157 void Screen::showScreen(uint16 fileNum, bool fullscreen) { 158 158 159 159 if (_currentScreen) 160 160 free(_currentScreen); 161 161 _currentScreen = _skyDisk->loadFile(fileNum); 162 162 163 163 if (_currentScreen) 164 showScreen(_currentScreen );164 showScreen(_currentScreen, fullscreen); 165 165 else 166 166 warning("Screen::showScreen: can't load file nr. %d",fileNum); 167 167 } 168 168 169 void Screen::showScreen(uint8 *pScreen ) {169 void Screen::showScreen(uint8 *pScreen, bool fullscreen) { 170 170 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); 172 172 _system->updateScreen(); 173 173 } 174 174