Ticket #7559: sky-hack4.diff
File sky-hack4.diff, 8.6 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 CLEARBOTTOM 18 // clear 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, 340 SHOWSCREEN , CD_20_LOG,345 SHOWSCREEN | FULLSCREEN, CD_20_LOG, 341 346 FADEUP, CD_19_PAL, 342 347 WAITVOICE, 343 348 LOADBG, 59496, // quiet heli 344 349 LOOPBG, 345 350 PLAYVOICE, CDV_21, 346 351 FADEDOWN, 347 SHOWSCREEN , CD_21_LOG,352 SHOWSCREEN | FULLSCREEN, CD_21_LOG, 348 353 FADEUP, CD_19_PAL, 349 354 WAITVOICE, 350 355 PLAYVOICE, CDV_22, … … 354 359 PLAYVOICE, CDV_23, 355 360 FADEDOWN, 356 361 WAITVOICE, 357 SHOWSCREEN , CD_24_LOG,362 SHOWSCREEN | FULLSCREEN, CD_24_LOG, 358 363 FADEUP, CD_23_PAL, 359 364 PLAYVOICE, CDV_24, 360 365 WAITVOICE, … … 363 368 PLAYVOICE, CDV_26, 364 369 WAITVOICE, 365 370 FADEDOWN, 366 SHOWSCREEN , CD_27_LOG,371 SHOWSCREEN | FULLSCREEN, CD_27_LOG, 367 372 FADEUP, CD_27_PAL, 368 373 PLAYVOICE, CDV_27, 369 374 WAITVOICE, … … 373 378 WAITVOICE, 374 379 BGFLIRT, CD_27, 375 380 PLAYVOICE, CDV_31, 381 WAITFLIRT, 382 CLEARBOTTOM, 376 383 WAITVOICE, 377 384 PLAYVOICE, CDV_32, 378 385 WAITVOICE, 379 386 PLAYVOICE, CDV_33, 380 387 WAITVOICE, 381 388 PLAYVOICE, CDV_34, 382 WAITFLIRT,383 389 WAITVOICE, 384 390 PLAYVOICE, CDV_35, 385 391 WAITVOICE, 386 392 PLAYVOICE, CDV_36, 387 393 FADEDOWN, 388 SHOWSCREEN , CD_35_LOG,394 SHOWSCREEN | FULLSCREEN, CD_35_LOG, 389 395 FADEUP, CD_35_PAL, 390 396 WAITVOICE, 391 397 PLAYVOICE, CDV_37, 392 398 DOFLIRT, CD_35, 399 CLEARBOTTOM, 393 400 WAITVOICE, 394 401 PLAYVOICE, CDV_38, 395 402 DOFLIRT, CD_37, … … 397 404 PLAYVOICE, CDV_39, 398 405 WAITVOICE, 399 406 FADEDOWN, 400 SHOWSCREEN , CD_40_LOG,407 SHOWSCREEN | FULLSCREEN, CD_40_LOG, 401 408 FADEUP, CD_40_PAL, 402 409 PLAYVOICE, CDV_40, 403 410 WAITVOICE, … … 406 413 PLAYVOICE, CDV_42, 407 414 WAITVOICE, 408 415 FADEDOWN, 409 SHOWSCREEN , CD_43_LOG,416 SHOWSCREEN | FULLSCREEN, CD_43_LOG, 410 417 FADEUP, CD_43_PAL, 411 418 PLAYVOICE, CDV_43, 412 419 WAITVOICE, … … 420 427 DOFLIRT, CD_45, 421 428 WAITVOICE, 422 429 FADEDOWN, 423 SHOWSCREEN , CD_47_LOG,430 SHOWSCREEN | FULLSCREEN, CD_47_LOG, 424 431 FADEUP, CD_47_PAL, 425 432 PLAYVOICE, CDV_47, 426 433 WAITVOICE, 427 434 PLAYVOICE, CDV_48, 428 435 FADEDOWN, 429 SHOWSCREEN , CD_48_LOG,436 SHOWSCREEN | FULLSCREEN, CD_48_LOG, 430 437 FADEUP, CD_48_PAL, 431 438 WAITVOICE, 432 439 BGFLIRT, CD_48, … … 499 506 FADEDOWN, 500 507 PLAYVOICE, CDV_71, 501 508 WAITVOICE, 502 SHOWSCREEN , CD_72_LOG,509 SHOWSCREEN | FULLSCREEN, CD_72_LOG, 503 510 FADEUP, CD_72_PAL, 504 511 PLAYVOICE, CDV_72, 505 512 WAITVOICE, 506 513 FADEDOWN, 507 SHOWSCREEN , CD_73_LOG,514 SHOWSCREEN | FULLSCREEN, CD_73_LOG, 508 515 FADEUP, CD_73_PAL, 509 516 PLAYVOICE, CDV_73, 510 517 WAITVOICE, … … 512 519 WAITVOICE, 513 520 PLAYVOICE, CDV_75, 514 521 FADEDOWN, 515 SHOWSCREEN , CD_76_LOG,522 SHOWSCREEN | FULLSCREEN, CD_76_LOG, 516 523 FADEUP, CD_76_PAL, 517 524 WAITVOICE, 518 525 PLAYVOICE, CDV_76, … … 520 527 PLAYVOICE, CDV_77, 521 528 WAITVOICE, 522 529 FADEDOWN, 530 CLEARBOTTOM, 523 531 SHOWSCREEN, CD_78_LOG, 524 532 FADEUP, CD_78_PAL, 525 533 PLAYVOICE, CDV_78, … … 534 542 PLAYVOICE, CDV_82, 535 543 WAITVOICE, 536 544 WAITFLIRT, 537 SHOWSCREEN , CD_101_LOG,545 SHOWSCREEN | FULLSCREEN, CD_101_LOG, 538 546 BGFLIRT, CD_101, 539 547 PLAYVOICE, CDV_83, 540 548 WAITVOICE, … … 543 551 PLAYVOICE, CDV_85, 544 552 WAITVOICE, 545 553 WAITFLIRT, 554 CLEARBOTTOM, 546 555 SHOWSCREEN, CD_102_LOG, 547 556 PLAYVOICE, CDV_86, 548 557 DOFLIRT, CD_102, 549 558 FADEDOWN, 559 // This one could be fullscreen, but that causes animation glitches. 550 560 SHOWSCREEN, CD_103_LOG, 551 561 FADEUP, CD_103_PAL, 552 562 BGFLIRT, CD_103, … … 556 566 WAITVOICE, 557 567 STARTMUSIC, 2, 558 568 FADEDOWN, 559 SHOWSCREEN , CD_104_LOG,569 SHOWSCREEN | FULLSCREEN, CD_104_LOG, 560 570 FADEUP, CD_104_PAL, 561 571 DOFLIRT, CD_104, 562 572 DOFLIRT, CD_105, … … 564 574 }; 565 575 566 576 uint16 Intro::_floppyIntroSeq[] = { 577 // This one could be fullscreen, but that causes animation glitches. 567 578 SHOWSCREEN, 60081, 568 579 FADEUP, 60080, 569 580 DOFLIRT, 60082, … … 578 589 50, IC_FX_VOLUME, 90, 579 590 5, IC_FX_VOLUME, 100, 580 591 COMMANDEND, 581 SHOWSCREEN , 60088,592 SHOWSCREEN | FULLSCREEN, 60088, 582 593 COMMANDFLIRT, 60089, // => command list 4b (cockpit) 583 594 1000, IC_PREPARE_TEXT, 77, 584 595 220, IC_SHOW_TEXT, 20, 160, // radar detects jamming signal … … 590 601 35, IC_SHOW_TEXT, 30, 160, 591 602 3, IC_REMOVE_TEXT, 592 603 COMMANDEND, 604 CLEARBOTTOM, 593 605 SHOWSCREEN, 60090, 594 606 COMMANDFLIRT, 60091, // => command list 4c 595 607 1000, IC_FX_VOLUME, 100, … … 598 610 4, IC_FX_VOLUME, 127, 599 611 COMMANDEND, 600 612 FADEDOWN, 613 // This one could be fullscreen, but that causes animation glitches. 601 614 SHOWSCREEN, 60093, 602 615 FADEUP, 60092, 603 616 COMMANDFLIRT, 60094, // => command list 5 … … 605 618 COMMANDEND, 606 619 WAITMUSIC, 607 620 FADEDOWN, 608 SHOWSCREEN , 60096,621 SHOWSCREEN | FULLSCREEN, 60096, 609 622 STARTMUSIC, 2, 610 623 FADEUP, 60095, 611 624 COMMANDFLIRT, 60097, // => command list 6a … … 687 700 uint8 *vData = NULL; 688 701 // return false means cancel intro 689 702 uint16 command = *data++; 690 switch (command ) {703 switch (command & 0x7fff) { 691 704 case SHOWSCREEN: 692 _skyScreen->showScreen(*data++ );705 _skyScreen->showScreen(*data++, (command & FULLSCREEN) ? true : false); 693 706 return true; 694 707 case FADEUP: 695 708 _skyScreen->paletteFadeUp(*data++); … … 769 782 case STOPBG: 770 783 _mixer->stopID(SOUND_BG); 771 784 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; 772 793 default: 773 794 error("Unknown intro command %X", command); 774 795 } -
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