X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FDDScrollBuffer.c;h=48a35ef12084aeb44410caeedc9b2586c91e2af1;hb=3c080c7b33b6dfcc6e0039b592c5f268535873e7;hp=86a6aad09cb2897c9b860035ab0cbff4c3d6136f;hpb=fe656a41b406b06d9dc5b93d01191d52b1da3b4d;p=rocksndiamonds.git diff --git a/src/game_sp/DDScrollBuffer.c b/src/game_sp/DDScrollBuffer.c index 86a6aad0..48a35ef1 100644 --- a/src/game_sp/DDScrollBuffer.c +++ b/src/game_sp/DDScrollBuffer.c @@ -131,7 +131,7 @@ void DDScrollBuffer_Cls(int BackColor) Buffer.BltColorFill(EmptyRect, BackColor); } -void DDScrollBuffer_Blt() +void DDScrollBuffer_Blt_Ext(Bitmap *target_bitmap) { RECT DR, SR; long tX, tY, L; @@ -141,10 +141,11 @@ void DDScrollBuffer_Blt() if (NoDisplayFlag) return; - +#if 0 // --- On Error GoTo BltEH DirectX.GetWindowRect(mhWnd, DR); // --- On Error GoTo 0 +#endif { tX = (DR.right - DR.left) / Stretch; @@ -172,6 +173,40 @@ void DDScrollBuffer_Blt() // DR.top = DR.top - Stretch * (mScrollY + mDestYOff) // End If } + +#if 1 + +#if 0 + printf("::: DDScrollBuffer.c: DDScrollBuffer_Blt(): blit from %d, %d [%ld, %ld] [%ld, %ld]\n", + SR.left, SR.top, mScrollX, mScrollY, mDestXOff, mDestYOff); +#endif + +#if 0 + /* !!! quick and dirty -- FIX THIS !!! */ + if (tape.playing && tape.fast_forward && + target_bitmap == window && + (FrameCounter % 2) != 0) + printf("::: FrameCounter == %d\n", FrameCounter); +#endif + +#if 1 + SyncDisplay(); +#endif + +#if 1 + BlitBitmap(screenBitmap, target_bitmap, + SR.left, SR.top, + SCR_FIELDX * TILEX, SCR_FIELDY * TILEY, SX, SY); +#endif + +#if 1 + FlushDisplay(); +#endif + + return; + +#endif + // DDraw.WaitForVerticalBlank DDWAITVB_BLOCKBEGIN, 0 if (IS_NOTHING(&Buffer, sizeof(Buffer))) return; @@ -283,6 +318,11 @@ void DDScrollBuffer_Blt() // BltEH: } +void DDScrollBuffer_Blt() +{ + DDScrollBuffer_Blt_Ext(window); +} + void DDScrollBuffer_ScrollTo(int X, int Y) { if (NoDisplayFlag) @@ -294,6 +334,11 @@ void DDScrollBuffer_ScrollTo(int X, int Y) mScrollY = Y; ScrollX = mScrollX; ScrollY = mScrollY; + +#if 0 + printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTo(): mScroll: %ld, %ld [%d, %d]\n", + mScrollX, mScrollY, X, Y); +#endif } void DDScrollBuffer_ScrollTowards(int X, int Y, double Step) @@ -303,6 +348,11 @@ void DDScrollBuffer_ScrollTowards(int X, int Y, double Step) if (NoDisplayFlag) return; +#if 0 + printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTowards(): (1) mScroll: %ld, %ld [%d, %d, %f]\n", + mScrollX, mScrollY, X, Y, Step); +#endif + X = X / Stretch; Y = Y / Stretch; dx = X - mScrollX; @@ -320,6 +370,11 @@ void DDScrollBuffer_ScrollTowards(int X, int Y, double Step) mScrollY = mScrollY + dY * r; ScrollX = mScrollX; ScrollY = mScrollY; + +#if 0 + printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTowards(): (2) mScroll: %ld, %ld [%d, %d, %f]\n", + mScrollX, mScrollY, X, Y, Step); +#endif } void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS) @@ -333,10 +388,6 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS) long oldX, oldY, maxD; static boolean AlreadyRunning = False; -#if 1 - printf("::: 3: X,Y == %d, %d [%f]\n", X, Y, Stretch); -#endif - if (NoDisplayFlag) return; @@ -350,7 +401,7 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS) Y = Y / Stretch; dx = X - mScrollX; dY = Y - mScrollY; - maxD = (Abs(dx) < Abs(dY) ? Abs(dY) : Abs(dY)); + maxD = (Abs(dx) < Abs(dY) ? Abs(dY) : Abs(dx)); StepCount = FPS * (TimeMS / (double)1000); if (StepCount > maxD) StepCount = maxD; @@ -358,12 +409,6 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS) if (StepCount == 0) StepCount = 1; -#if 1 - printf("::: MARK 1: %f, %d, %ld, %ld [%d, %d, %ld, %ld]\n", - tStep, FPS, TimeMS, maxD, - X, Y, mScrollX, mScrollY); -#endif - dT = 1000 / FPS; tStep = (double)1 / StepCount; oldX = mScrollX; @@ -388,10 +433,6 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS) // Blt(); } -#if 1 - printf("::: MARK 2\n"); -#endif - if (UserDragFlag) goto SoftScrollEH; @@ -407,4 +448,9 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS) SoftScrollEH: AlreadyRunning = False; + +#if 0 + printf("::: DDScrollBuffer.c: DDScrollBuffer_SoftScrollTo(): mScroll: %ld, %ld\n", + mScrollX, mScrollY); +#endif }