VOID PAL_NEW_EndingScreen2( VOID ) /*++ Purpose: 显示结尾处的人物介绍,对应95/98版的第六个avi视频 Parameters: None. Return value: None. --*/ { PAL_SetPalette(5, FALSE);//不加这句有可能会出现白屏的情况 //1141 00A5 0031 FFFF 0007 淡入FBP图片 49 65535 07 PAL_EndingSetEffectSprite(0x27b); PAL_ShowFBP(49, 7); //1142 0076 0031 0006 0000 显示FBP图像 49 06 PAL_EndingSetEffectSprite(0); PAL_ShowFBP(49, 6); //1143 004D 0000 0000 0000 等待按键 PAL_WaitForKey(0); //1144 0077 0001 0000 0000 停止播放音乐 01 PAL_PlayMUS(0, FALSE, 0.5); UTIL_Delay(500); //1145 0043 0009 0003 0000 设置播放音乐 09 if (!SOUND_PlayCDA(13)) { PAL_PlayMUS(9, TRUE, 0); } //1146 00A4 0030 0000 0010 卷动FBP图片 48 00 16 int i = 48; PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); PAL_ScrollFBP(i--, 0xf, TRUE); //1150 0077 0001 0000 0000 停止播放音乐 01 PAL_PlayMUS(0, FALSE, 3); //1151 0050 0004 0000 0000 全屏淡出 PAL_FadeOut(3); }
static VOID PAL_DialogWaitForKey( VOID ) /*++ Purpose: Wait for player to press a key after showing a dialog. Parameters: None. Return value: None. --*/ { PAL_LARGE SDL_Color palette[256]; SDL_Color *pCurrentPalette, t; int i; // // get the current palette // pCurrentPalette = PAL_GetPalette(gpGlobals->wNumPalette, gpGlobals->fNightPalette); memcpy(palette, pCurrentPalette, sizeof(palette)); if (g_TextLib.bDialogPosition != kDialogCenterWindow && g_TextLib.bDialogPosition != kDialogCenter) { // // show the icon // LPCBITMAPRLE p = PAL_SpriteGetFrame(g_TextLib.bufDialogIcons, g_TextLib.bIcon); if (p != NULL) { SDL_Rect rect; rect.x = PAL_X(g_TextLib.posIcon); rect.y = PAL_Y(g_TextLib.posIcon); rect.w = 16; rect.h = 16; PAL_RLEBlitToSurface(p, gpScreen, g_TextLib.posIcon); VIDEO_UpdateScreen(&rect); } } PAL_ClearKeyState(); while (TRUE) { UTIL_Delay(100); if (g_TextLib.bDialogPosition != kDialogCenterWindow && g_TextLib.bDialogPosition != kDialogCenter) { // // palette shift // t = palette[0xF9]; for (i = 0xF9; i < 0xFE; i++) { palette[i] = palette[i + 1]; } palette[0xFE] = t; VIDEO_SetPalette(palette); } if (g_InputState.dwKeyPress != 0) { break; } } if (g_TextLib.bDialogPosition != kDialogCenterWindow && g_TextLib.bDialogPosition != kDialogCenter) { PAL_SetPalette(gpGlobals->wNumPalette, gpGlobals->fNightPalette); } PAL_ClearKeyState(); g_TextLib.fUserSkip = FALSE; }
VOID PAL_NEW_EndingScreen1( VOID ) /*++ Purpose: 显示结尾处的消灭合体水魔兽的动画,对应95/98版的第4、5个avi视频 Parameters: None. Return value: None. --*/ { //1128 0043 0019 0000 0000 设置播放音乐 25 PAL_PlayMUS(0x19, TRUE, 0); //1129 008B 0005 0000 0000 改变调色板 05 PAL_SetPalette(5, FALSE); //112A 00A4 0044 0000 000F 卷动FBP图片 68 00 15 PAL_ScrollFBP(68, 0xf, TRUE); //112B 0050 0000 0000 0000 全屏淡出 PAL_FadeOut(1); SDL_FillRect(gpScreen, NULL, 0); //112C 008B 0004 0000 0000 改变调色板 04 PAL_SetPalette(4, FALSE); //112D 0096 0000 0000 0000 播放结束动画 PAL_EndingAnimation(); gpGlobals->wNumPalette = 4; //112E 0077 0001 0000 0000 停止播放音乐 01 PAL_PlayMUS(0, FALSE, 1); //112F 008C 000F 0007 0000 屏幕逐渐褪色 15 07 00 PAL_ColorFade(7, 15, FALSE); //1131 00A3 0002 0011 0000 播放CD音轨 02 若失败 则播放RIX 17 if (!SOUND_PlayCDA(2)) { RIX_Play(0x11, TRUE, 0); } SDL_FillRect(gpScreen, NULL, 0); //1132 0036 000B 0000 0000 设置动画 11 //1133 0037 0000 0001 0000 播放动画 00 01 00 PAL_RNGPlay(0xb, 0, 1, 7); //1134 008B 0000 0000 0000 改变调色板 00 PAL_SetPalette(0, FALSE); //1135 0037 0002 0000 0007 播放动画 02 00 07 PAL_RNGPlay(0xb, 2, 999, 7); //1136 0050 0003 0000 0000 全屏淡出 PAL_FadeOut(3); SDL_FillRect(gpScreen, NULL, 0); //1137 008B 0008 0000 0000 改变调色板 08 PAL_SetPalette(8, FALSE); //1138 0036 000A 0000 0000 设置动画 10 //1139 0037 0000 0000 0006 播放动画 00 00 06 PAL_RNGPlay(10, 0, 999, 6); //113A 0076 0047 000A 0000 显示FBP图像 71 10 PAL_EndingSetEffectSprite(0); PAL_ShowFBP(71, 10); //113B 00A6 0000 0000 0000 备份画面 VIDEO_BackupScreen(); //113C 00A5 0046 027B 0007 淡入FBP图片 70 635 07 PAL_EndingSetEffectSprite(0x27b); PAL_ShowFBP(70, 7); //113D 008B 0005 0000 0000 改变调色板 05 PAL_SetPalette(5, FALSE); //113E 00A5 0043 FFFF 0007 淡入FBP图片 67 65535 07 PAL_ShowFBP(67, 7); //113F 00A4 0042 FFFF 0007 卷动FBP图片 66 65535 07 PAL_ScrollFBP(66, 0xf, TRUE); //1140 00A5 0041 FFFF 0007 淡入FBP图片 65 65535 07 PAL_ShowFBP(65, 7); }
VOID PAL_EndingScreen( VOID ) { RIX_Play(0x1a, TRUE, 0); PAL_RNGPlay(gpGlobals->iCurPlayingRNG, 110, 150, 7); PAL_RNGPlay(gpGlobals->iCurPlayingRNG, 151, 999, 9); PAL_FadeOut(2); RIX_Play(0x19, TRUE, 0); PAL_ShowFBP(75, 0); PAL_FadeIn(5, FALSE, 1); PAL_ScrollFBP(74, 0xf, TRUE); PAL_FadeOut(1); SDL_FillRect(gpScreen, NULL, 0); gpGlobals->wNumPalette = 4; gpGlobals->fNeedToFadeIn = TRUE; PAL_EndingAnimation(); RIX_Play(0, FALSE, 2); PAL_ColorFade(7, 15, FALSE); if (!SOUND_PlayCDA(2)) { RIX_Play(0x11, TRUE, 0); } SDL_FillRect(gpScreen, NULL, 0); PAL_SetPalette(0, FALSE); PAL_RNGPlay(0xb, 0, 999, 7); PAL_FadeOut(2); SDL_FillRect(gpScreen, NULL, 0); gpGlobals->wNumPalette = 8; gpGlobals->fNeedToFadeIn = TRUE; PAL_RNGPlay(10, 0, 999, 6); PAL_EndingSetEffectSprite(0); PAL_ShowFBP(77, 10); VIDEO_BackupScreen(); PAL_EndingSetEffectSprite(0x27b); PAL_ShowFBP(76, 7); PAL_SetPalette(5, FALSE); PAL_ShowFBP(73, 7); PAL_ScrollFBP(72, 0xf, TRUE); PAL_ShowFBP(71, 7); PAL_ShowFBP(68, 7); PAL_EndingSetEffectSprite(0); PAL_ShowFBP(68, 6); PAL_WaitForKey(0); RIX_Play(0, FALSE, 1); UTIL_Delay(500); if (!SOUND_PlayCDA(13)) { RIX_Play(9, TRUE, 0); } PAL_ScrollFBP(67, 0xf, TRUE); PAL_ScrollFBP(66, 0xf, TRUE); PAL_ScrollFBP(65, 0xf, TRUE); PAL_ScrollFBP(64, 0xf, TRUE); PAL_ScrollFBP(63, 0xf, TRUE); PAL_ScrollFBP(62, 0xf, TRUE); PAL_ScrollFBP(61, 0xf, TRUE); PAL_ScrollFBP(60, 0xf, TRUE); PAL_ScrollFBP(59, 0xf, TRUE); RIX_Play(0, FALSE, 6); PAL_FadeOut(3); }