summaryrefslogtreecommitdiff
path: root/apps/plugins/doom/v_video.c
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2006-04-05 06:37:37 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2006-04-05 06:37:37 +0000
commit45f2df0eba7a3ffa633a709e13d3b871592d2fc6 (patch)
treea34acb94f8766ab7d953d9cf03b30a92a2984d22 /apps/plugins/doom/v_video.c
parent33a62e8a8ebe8039101a2333e71bc2c2de8e5225 (diff)
downloadrockbox-45f2df0eba7a3ffa633a709e13d3b871592d2fc6.tar.gz
rockbox-45f2df0eba7a3ffa633a709e13d3b871592d2fc6.zip
Fix finale text and try and prevent some data corruption due to the scaling code. Also allows the non-standard GP32 mods to work with some bounds checking. More comments are in v_video.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9511 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/doom/v_video.c')
-rw-r--r--apps/plugins/doom/v_video.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/apps/plugins/doom/v_video.c b/apps/plugins/doom/v_video.c
index ca90c4b293..bd4d507510 100644
--- a/apps/plugins/doom/v_video.c
+++ b/apps/plugins/doom/v_video.c
@@ -527,7 +527,7 @@ void V_DrawMemPatch(int x, int y, int scrn, const patch_t *patch,
527 527
528 byte *desttop; 528 byte *desttop;
529 int col; 529 int col;
530 int w = (SHORT( patch->width ) << 16) - 1; // CPhipps - -1 for faster flipping 530 int w = (SHORT( patch->width ) << 16) -1; // CPhipps - -1 for faster flipping
531 int stretchx, stretchy; 531 int stretchx, stretchy;
532 int DX = (SCREENWIDTH<<16) / 320; 532 int DX = (SCREENWIDTH<<16) / 320;
533 int DXI = (320<<16) / SCREENWIDTH; 533 int DXI = (320<<16) / SCREENWIDTH;
@@ -559,6 +559,17 @@ void V_DrawMemPatch(int x, int y, int scrn, const patch_t *patch,
559 register int count = ( column->length * DY ) >> 16; 559 register int count = ( column->length * DY ) >> 16;
560 register int srccol = 0x8000; 560 register int srccol = 0x8000;
561 561
562 count = (count>SCREENHEIGHT)?SCREENHEIGHT:count; // Bounds checking allows those messed up
563 // GP32 mods to work (they're using patch->
564 // height values of 240, this code cuts off
565 // thier bottom few pixels
566
567 // NOTE: This scaling code does not work correctly on at least the H300's, this can be seen
568 // in the intro graphic along the left side, the pixels are not correct. A more blatant
569 // example is the bunnyscroller at the end of retail doom episode 3. I've added one extra
570 // width to d_screens[0] and this seemed to stop the freeze at the end of the game. This
571 // needs to be fixed properly.
572
562 if (flags & VPT_TRANS) 573 if (flags & VPT_TRANS)
563 while (count--) { 574 while (count--) {
564 *dest = trans[source[srccol>>16]]; 575 *dest = trans[source[srccol>>16]];