Ticket #7559: sky-hack4-updated.diff
File sky-hack4-updated.diff, 10.7 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 … … 334 339 WAITFLIRT, 335 340 WAITVOICE, 336 341 FADEDOWN, 337 SHOWSCREEN , CD_19_LOG,342 SHOWSCREEN | FULLSCREEN, CD_19_LOG, 338 343 FADEUP, CD_19_PAL, 339 344 PLAYVOICE, CDV_19, // Joey: "Foster! (zzzt) H-Help!" 340 345 WAITVOICE, 341 346 PLAYVOICE, CDV_20, // Joey: "Better make my next body move faster, Foster..." 342 347 FADEDOWN, 343 SHOWSCREEN , CD_20_LOG,348 SHOWSCREEN | FULLSCREEN, CD_20_LOG, 344 349 FADEUP, CD_19_PAL, 345 350 WAITVOICE, 346 351 LOADBG, 59496, // quiet heli 347 352 LOOPBG, 348 353 PLAYVOICE, CDV_21, // Foster: "He was only a robot, but, well, I loved the little guy." 349 354 FADEDOWN, 350 SHOWSCREEN , CD_21_LOG,355 SHOWSCREEN | FULLSCREEN, CD_21_LOG, 351 356 FADEUP, CD_19_PAL, 352 357 WAITVOICE, 353 358 PLAYVOICE, CDV_22, // Foster: "Then, as suddenly as it started, the shooting stopped." … … 358 363 /* fade down while Foster's saying his line */ 359 364 FADEDOWN, 360 365 WAITVOICE, 361 SHOWSCREEN , CD_24_LOG,366 SHOWSCREEN | FULLSCREEN, CD_24_LOG, 362 367 FADEUP, CD_23_PAL, 363 368 PLAYVOICE, CDV_24, // Reich: "Whoever is in charge here, come forward..." 364 369 WAITVOICE, … … 367 372 PLAYVOICE, CDV_26, // Foster: "Only a fool would have argued with that firepower." 368 373 WAITVOICE, 369 374 FADEDOWN, 370 SHOWSCREEN , CD_27_LOG,375 SHOWSCREEN | FULLSCREEN, CD_27_LOG, 371 376 FADEUP, CD_27_PAL, 372 377 PLAYVOICE, CDV_27, // Shaman: "... I am the leader of these people... We are peaceful..." 373 378 WAITVOICE, … … 377 382 WAITVOICE, 378 383 BGFLIRT, CD_27, 379 384 PLAYVOICE, CDV_31, // Reich: "We're looking for someone..." 385 WAITFLIRT, 386 CLEARBOTTOM, 380 387 WAITVOICE, 381 388 PLAYVOICE, CDV_32, // Reich: "Someone who doesn't belong here..." 382 389 WAITVOICE, 383 390 PLAYVOICE, CDV_33, // Reich: "Who wasn't born in this garbage dump..." 384 391 WAITVOICE, 385 392 PLAYVOICE, CDV_34, // Reich: "Who came from the city as a child..." 386 WAITFLIRT,387 393 WAITVOICE, 388 394 PLAYVOICE, CDV_35, // Reich: "We want to take him home again." 389 395 WAITVOICE, 390 396 PLAYVOICE, CDV_36, // Foster: "My mind racing, I remembered where I'd seen that symbol before..." 391 397 FADEDOWN, 392 SHOWSCREEN , CD_35_LOG,398 SHOWSCREEN | FULLSCREEN, CD_35_LOG, 393 399 FADEUP, CD_35_PAL, 394 400 WAITVOICE, 395 401 PLAYVOICE, CDV_37, // Foster: "It was the day the tribe found me..." 396 402 DOFLIRT, CD_35, 403 CLEARBOTTOM, 397 404 WAITVOICE, 398 405 PLAYVOICE, CDV_38, // Foster: "The day of the crash..." 399 406 DOFLIRT, CD_37, … … 401 408 PLAYVOICE, CDV_39, // Foster: "The day my mother died." 402 409 WAITVOICE, 403 410 FADEDOWN, 404 SHOWSCREEN , CD_40_LOG,411 SHOWSCREEN | FULLSCREEN, CD_40_LOG, 405 412 FADEUP, CD_40_PAL, 406 413 PLAYVOICE, CDV_40, // Shaman: "You alright, city boy?" 407 414 WAITVOICE, … … 410 417 PLAYVOICE, CDV_42, // Foster: "R-Robert." 411 418 WAITVOICE, 412 419 FADEDOWN, 413 SHOWSCREEN , CD_43_LOG,420 SHOWSCREEN | FULLSCREEN, CD_43_LOG, 414 421 FADEUP, CD_43_PAL, 415 422 PLAYVOICE, CDV_43, // Shaman: "Hah! Welcome to the Gap, Robert!" 416 423 WAITVOICE, … … 424 431 DOFLIRT, CD_45, 425 432 WAITVOICE, 426 433 FADEDOWN, 427 SHOWSCREEN , CD_47_LOG,434 SHOWSCREEN | FULLSCREEN, CD_47_LOG, 428 435 FADEUP, CD_47_PAL, 429 436 PLAYVOICE, CDV_47, // Foster: "His tribe was poor, but they treated me like one of their own..." 430 437 WAITVOICE, 431 438 PLAYVOICE, CDV_48, // Foster: "I learned how to survive in the wasteland they called the Gap..." 432 439 FADEDOWN, 433 SHOWSCREEN , CD_48_LOG,440 SHOWSCREEN | FULLSCREEN, CD_48_LOG, 434 441 FADEUP, CD_48_PAL, 435 442 WAITVOICE, 436 443 BGFLIRT, CD_48, … … 503 510 FADEDOWN, 504 511 PLAYVOICE, CDV_71, // Reich: "Good. Detonate." 505 512 WAITVOICE, 506 SHOWSCREEN , CD_72_LOG,513 SHOWSCREEN | FULLSCREEN, CD_72_LOG, 507 514 FADEUP, CD_72_PAL, 508 515 PLAYVOICE, CDV_72, // Foster: "Much too late." 509 516 WAITVOICE, 510 517 FADEDOWN, 511 SHOWSCREEN , CD_73_LOG,518 SHOWSCREEN | FULLSCREEN, CD_73_LOG, 512 519 FADEUP, CD_73_PAL, 513 520 PLAYVOICE, CDV_73, // Foster: "Why, you murdering..." 514 521 WAITVOICE, … … 516 523 WAITVOICE, 517 524 PLAYVOICE, CDV_75, // Foster: "All I could do was wait." 518 525 FADEDOWN, 519 SHOWSCREEN , CD_76_LOG,526 SHOWSCREEN | FULLSCREEN, CD_76_LOG, 520 527 FADEUP, CD_76_PAL, 521 528 WAITVOICE, 522 529 PLAYVOICE, CDV_76, // Foster: "Just like on a hunt. Just like the old man taught me." … … 524 531 PLAYVOICE, CDV_77, // Foster: "Wait... and be ready." 525 532 WAITVOICE, 526 533 FADEDOWN, 534 CLEARBOTTOM, 527 535 SHOWSCREEN, CD_78_LOG, 528 536 FADEUP, CD_78_PAL, 529 537 PLAYVOICE, CDV_78, // Foster: "It was dawn when we reached the City." … … 538 546 PLAYVOICE, CDV_82, // Guard: "Yes, sir. Locking on automatic landing beacon." 539 547 WAITVOICE, 540 548 WAITFLIRT, 541 SHOWSCREEN , CD_101_LOG,549 SHOWSCREEN | FULLSCREEN, CD_101_LOG, 542 550 BGFLIRT, CD_101, 543 551 PLAYVOICE, CDV_83, // Foster: "But what was I? Why did..." 544 552 WAITVOICE, … … 547 555 PLAYVOICE, CDV_85, // Guard: "We're going to HIT!" 548 556 WAITVOICE, 549 557 WAITFLIRT, 558 CLEARBOTTOM, 550 559 SHOWSCREEN, CD_102_LOG, 551 560 PLAYVOICE, CDV_86, // Foster: "Maybe I'd get some answers now." 552 561 DOFLIRT, CD_102, 553 562 FADEDOWN, 563 // This one could be fullscreen, but that causes animation glitches. 554 564 SHOWSCREEN, CD_103_LOG, 555 565 FADEUP, CD_103_PAL, 556 566 BGFLIRT, CD_103, … … 560 570 WAITVOICE, 561 571 STARTMUSIC, 2, 562 572 FADEDOWN, 563 SHOWSCREEN , CD_104_LOG,573 SHOWSCREEN | FULLSCREEN, CD_104_LOG, 564 574 FADEUP, CD_104_PAL, 565 575 DOFLIRT, CD_104, 566 576 DOFLIRT, CD_105, … … 568 578 }; 569 579 570 580 uint16 Intro::_floppyIntroSeq[] = { 581 // This one could be fullscreen, but that causes animation glitches. 571 582 SHOWSCREEN, 60081, 572 583 FADEUP, 60080, 573 584 DOFLIRT, 60082, … … 582 593 50, IC_FX_VOLUME, 90, 583 594 5, IC_FX_VOLUME, 100, 584 595 COMMANDEND, 585 SHOWSCREEN , 60088,596 SHOWSCREEN | FULLSCREEN, 60088, 586 597 COMMANDFLIRT, 60089, // => command list 4b (cockpit) 587 598 1000, IC_PREPARE_TEXT, 77, 588 599 220, IC_SHOW_TEXT, 20, 160, // radar detects jamming signal … … 594 605 35, IC_SHOW_TEXT, 30, 160, 595 606 3, IC_REMOVE_TEXT, 596 607 COMMANDEND, 608 CLEARBOTTOM, 597 609 SHOWSCREEN, 60090, 598 610 COMMANDFLIRT, 60091, // => command list 4c 599 611 1000, IC_FX_VOLUME, 100, … … 602 614 4, IC_FX_VOLUME, 127, 603 615 COMMANDEND, 604 616 FADEDOWN, 617 // This one could be fullscreen, but that causes animation glitches. 605 618 SHOWSCREEN, 60093, 606 619 FADEUP, 60092, 607 620 COMMANDFLIRT, 60094, // => command list 5 … … 609 622 COMMANDEND, 610 623 WAITMUSIC, 611 624 FADEDOWN, 612 SHOWSCREEN , 60096,625 SHOWSCREEN | FULLSCREEN, 60096, 613 626 STARTMUSIC, 2, 614 627 FADEUP, 60095, 615 628 COMMANDFLIRT, 60097, // => command list 6a … … 691 704 uint8 *vData = NULL; 692 705 // return false means cancel intro 693 706 uint16 command = *data++; 694 switch (command ) {707 switch (command & 0x7fff) { 695 708 case SHOWSCREEN: 696 _skyScreen->showScreen(*data++ );709 _skyScreen->showScreen(*data++, (command & FULLSCREEN) ? true : false); 697 710 return true; 698 711 case FADEUP: 699 712 _skyScreen->paletteFadeUp(*data++); … … 773 786 case STOPBG: 774 787 _mixer->stopID(SOUND_BG); 775 788 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; 776 797 default: 777 798 error("Unknown intro command %X", command); 778 799 } -
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 // This is only used for static images in the floppy and cd intro 159 159 if (_currentScreen) 160 160 free(_currentScreen); 161 161 _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 } 164 166 165 167 if (_currentScreen) 166 showScreen(_currentScreen );168 showScreen(_currentScreen, fullscreen); 167 169 else 168 170 warning("Screen::showScreen: can't load file nr. %d",fileNum); 169 171 } 170 172 171 void Screen::showScreen(uint8 *pScreen ) {173 void Screen::showScreen(uint8 *pScreen, bool fullscreen) { 172 174 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); 174 176 _system->updateScreen(); 175 177 } 176 178