From 79b83bcb7aa9472f7191fd48472d3a7784e30650 Mon Sep 17 00:00:00 2001 From: iran Date: Wed, 26 Jun 2013 11:19:12 +0200 Subject: [PATCH] update the memory address from ra95.exe to use for screen stretching --- Makefile | 2 +- ddraw video stretching stuff.txt | 5 ++-- ddraw.dll | Bin 188416 -> 188416 bytes render.c | 47 +++++++++++++------------------ render_soft.c | 10 ++++--- 5 files changed, 29 insertions(+), 35 deletions(-) diff --git a/Makefile b/Makefile index 80b8ef1..573c443 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ CC=gcc CFLAGS=-DHAVE_LIBPNG -Iinclude -Wall -Wl,--enable-stdcall-fixup -O3 -s -LIBS=lib/libpng14.a lib/libz.a -lgdi32 -lopengl32 +LIBS=lib/libpng14.a lib/libz.a -lgdi32 -lopengl32 -lwinmm all: $(CC) $(CFLAGS) -shared -o ddraw.dll main.c mouse.c palette.c surface.c clipper.c render.c render_soft.c render_dummy.c screenshot.c ddraw.def $(LIBS) diff --git a/ddraw video stretching stuff.txt b/ddraw video stretching stuff.txt index 0acc13a..074c180 100644 --- a/ddraw video stretching stuff.txt +++ b/ddraw video stretching stuff.txt @@ -1,2 +1,3 @@ -0x00665F58 = InMovie -0x0065D7BC = IsVQA640 \ No newline at end of file +0x00607D78 = InMovie +0x0065D7BC = IsVQA640 +0x00607D78 = ShouldStretch BYTE (added by 3.03p-iran) \ No newline at end of file diff --git a/ddraw.dll b/ddraw.dll index e4fd3444b1432b32e4522560f74907e6c4346e1e..0f87748544982be6343df9b07ca799a9b6e38c47 100644 GIT binary patch delta 12947 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 NH%pz7-@}{P{|9OHL;L^$ delta 12602 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 diff --git a/render.c b/render.c index 6bfdfd8..024515e 100644 --- a/render.c +++ b/render.c @@ -14,6 +14,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + #include #include @@ -86,12 +87,16 @@ DWORD WINAPI render_main(void) } glEnable(GL_TEXTURE_2D); + + timeBeginPeriod(1); + + while(ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED) { - scale_w = (float)ddraw->width/tex_width; - scale_h = (float)ddraw->height/tex_height; - + scale_w = (float)ddraw->width/tex_width; + scale_h = (float)ddraw->height/tex_height; + if(ddraw->render.maxfps > 0) { tick_start = GetTickCount(); @@ -144,22 +149,23 @@ DWORD WINAPI render_main(void) glTexCoord2f(scale_w,scale_h); glVertex2f( 1, -1); glTexCoord2f(0,scale_h); glVertex2f(-1, -1); glEnd(); + + SwapBuffers(ddraw->render.hDC); - SwapBuffers(ddraw->render.hDC); - - if(ddraw->render.maxfps > 0) - { - tick_end = GetTickCount(); - - if(tick_end - tick_start < frame_len) - { - Sleep( frame_len - (tick_end - tick_start) ); + if((ddraw->render.maxfps > 0)) + { + tick_end = GetTickCount(); + + if(tick_end - tick_start < frame_len) + { + Sleep( frame_len - (tick_end - tick_start)); } } SetEvent(ddraw->render.ev); } - + timeEndPeriod(1); + HeapFree(GetProcessHeap(), 0, tex); wglMakeCurrent(NULL, NULL); @@ -167,18 +173,3 @@ DWORD WINAPI render_main(void) return 0; } - - - -//BOOL detect_cutscene() -//{ -// if(ddraw->width <= CUTSCENE_WIDTH || ddraw->height <= CUTSCENE_HEIGHT) -// return FALSE; -// -// return getPixel(CUTSCENE_WIDTH + 1, 0) == 0 || getPixel(CUTSCENE_WIDTH + 5, 1) == 0 ? TRUE : FALSE; -//} - -#define DECLARE_VAR(name, type, address) type name = address - -//DECLARE_VAR(InMovie, int*, 0x00665F58); -//DECLARE_VAR(IsVQA640, int*, 0x0065D7BC); \ No newline at end of file diff --git a/render_soft.c b/render_soft.c index 534a934..3ad42f9 100644 --- a/render_soft.c +++ b/render_soft.c @@ -30,7 +30,7 @@ static unsigned char getPixel(int x, int y) int* InMovie = (int*)0x00665F58; int* IsVQA640 = (int*)0x0065D7BC; -BYTE* ShouldStretch = (BYTE*)0x006ED235; +BYTE* ShouldStretch = (BYTE*)0x00607D78; BOOL detect_cutscene() { @@ -49,7 +49,6 @@ BOOL detect_cutscene() return getPixel(CUTSCENE_WIDTH + 1, 0) == 0 || getPixel(CUTSCENE_WIDTH + 5, 1) == 0 ? TRUE : FALSE; } - DWORD WINAPI render_soft_main(void) { PBITMAPINFO bmi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); @@ -69,6 +68,8 @@ DWORD WINAPI render_soft_main(void) DWORD tick_start = 0; DWORD tick_end = 0; DWORD frame_len = 0; + + timeBeginPeriod(1); if (ddraw->boxing) { @@ -152,17 +153,18 @@ DWORD WINAPI render_soft_main(void) LeaveCriticalSection(&ddraw->cs); - if(ddraw->render.maxfps > 0) + if((ddraw->render.maxfps > 0) && !detect_cutscene()) { tick_end = GetTickCount(); if(tick_end - tick_start < frame_len) { - Sleep( frame_len - (tick_end - tick_start) ); + Sleep( frame_len - (tick_end - tick_start) + 1); } } SetEvent(ddraw->render.ev); } + timeEndPeriod(1); HeapFree(GetProcessHeap(), 0, bmi);