[Scummvm-cvs-logs] CVS: scummvm/backends/dc dc.h,1.4,1.5 display.cpp,1.4,1.5
Marcus Comstedt
marcus_c at users.sourceforge.net
Fri Oct 18 14:00:01 CEST 2002
- Previous message: [Scummvm-cvs-logs] CVS: web compatibility.php,1.28,1.29
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gui ListWidget.cpp,1.8,1.9 ListWidget.h,1.7,1.8 dialog.cpp,1.20,1.21 dialog.h,1.10,1.11 newgui.cpp,1.22,1.23 newgui.h,1.14,1.15 widget.cpp,1.7,1.8 widget.h,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/backends/dc
In directory usw-pr-cvs1:/tmp/cvs-serv14527
Modified Files:
dc.h display.cpp
Log Message:
Overlay fixed.
Index: dc.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/dc/dc.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- dc.h 18 Oct 2002 01:42:55 -0000 1.4
+++ dc.h 18 Oct 2002 20:59:03 -0000 1.5
@@ -98,6 +98,7 @@
void *_sound_proc_param;
bool _overlay_visible, _overlay_dirty, _screen_dirty;
int _screen_buffer, _overlay_buffer, _mouse_buffer;
+ float _overlay_fade;
unsigned char *screen;
unsigned short *mouse;
Index: display.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/dc/display.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- display.cpp 18 Oct 2002 01:42:55 -0000 1.4
+++ display.cpp 18 Oct 2002 20:59:03 -0000 1.5
@@ -145,6 +145,7 @@
assert(w == SCREEN_W && h <= SCREEN_H);
_overlay_visible = false;
+ _overlay_fade = 0.0;
_screen_w = w;
_screen_h = h;
ta_sync();
@@ -287,7 +288,7 @@
unsigned short *dst = (unsigned short *)ovl_tx[_overlay_buffer];
unsigned short *src = overlay;
- for( int y = 0; y<OVL_H; y++ )
+ for( int y = 0; y<_screen_h; y++ )
{
texture_memcpy64( dst, src, OVL_W>>5 );
src += OVL_W;
@@ -326,8 +327,8 @@
myvertex.y = _current_shake_pos*2.0+TOP_OFFSET;
ta_commit_list(&myvertex);
- myvertex.x = SCREEN_W*2.0;
- myvertex.u = SCREEN_W/512.0;
+ myvertex.x = _screen_w*2.0;
+ myvertex.u = _screen_w*(1/512.0);
ta_commit_list(&myvertex);
myvertex.x = 0.0;
@@ -336,32 +337,43 @@
myvertex.v = _screen_h*(1/512.0);
ta_commit_list(&myvertex);
- myvertex.x = SCREEN_W*2.0;
- myvertex.u = SCREEN_W/512.0;
+ myvertex.x = _screen_w*2.0;
+ myvertex.u = _screen_w*(1/512.0);
myvertex.cmd |= TA_CMD_VERTEX_EOS;
ta_commit_list(&myvertex);
ta_commit_end();
if(_overlay_visible) {
+ if(_overlay_fade < 1.0)
+ _overlay_fade += 0.125;
+ } else {
+ if(_overlay_fade > 0)
+ _overlay_fade -= 0.125;
+ }
+
+ if(_overlay_fade > 0.0) {
mypoly.cmd =
TA_CMD_POLYGON|TA_CMD_POLYGON_TYPE_TRANSPARENT|TA_CMD_POLYGON_SUBLIST|
TA_CMD_POLYGON_STRIPLENGTH_2|TA_CMD_POLYGON_PACKED_COLOUR|TA_CMD_POLYGON_TEXTURED;
mypoly.mode1 = TA_POLYMODE1_Z_ALWAYS|TA_POLYMODE1_NO_Z_UPDATE;
mypoly.mode2 =
- TA_POLYMODE2_BLEND_SRC|TA_POLYMODE2_FOG_DISABLED|TA_POLYMODE2_TEXTURE_REPLACE|
+ TA_POLYMODE2_BLEND_SRC_ALPHA|TA_POLYMODE2_BLEND_DST_INVALPHA|
+ TA_POLYMODE2_ENABLE_ALPHA|
+ TA_POLYMODE2_FOG_DISABLED|TA_POLYMODE2_TEXTURE_MODULATE_ALPHA|
TA_POLYMODE2_U_SIZE_512|TA_POLYMODE2_V_SIZE_512;
mypoly.texture = TA_TEXTUREMODE_RGB565|TA_TEXTUREMODE_NON_TWIDDLED|
TA_TEXTUREMODE_STRIDE|TA_TEXTUREMODE_ADDRESS(ovl_tx[_overlay_buffer]);
- mypoly.red = mypoly.green = mypoly.blue = mypoly.alpha = 0;
-
+ mypoly.red = mypoly.green = mypoly.blue = mypoly.alpha = 0.0;
+
ta_commit_list(&mypoly);
myvertex.cmd = TA_CMD_VERTEX;
myvertex.ocolour = 0;
- myvertex.colour = 0;
+ myvertex.colour = 0xffffff|(((int)(255*_overlay_fade))<<24);
+
myvertex.z = 0.5;
myvertex.u = 0.0;
myvertex.v = 0.0;
@@ -370,18 +382,18 @@
myvertex.y = _current_shake_pos*2.0+TOP_OFFSET;
ta_commit_list(&myvertex);
- myvertex.x = OVL_W*2.0;
- myvertex.u = OVL_W/512.0;
+ myvertex.x = _screen_w*2.0;
+ myvertex.u = _screen_w*(1.0/512.0);
ta_commit_list(&myvertex);
myvertex.x = 0.0;
- myvertex.y += OVL_H*2.0;
+ myvertex.y += _screen_h*2.0;
myvertex.u = 0.0;
- myvertex.v = OVL_H/512.0;
+ myvertex.v = _screen_h*(1.0/512.0);
ta_commit_list(&myvertex);
- myvertex.x = OVL_W*2.0;
- myvertex.u = OVL_W/512.0;
+ myvertex.x = _screen_w*2.0;
+ myvertex.u = _screen_w*(1.0/512.0);
myvertex.cmd |= TA_CMD_VERTEX_EOS;
ta_commit_list(&myvertex);
}
@@ -466,6 +478,7 @@
void OSystem_Dreamcast::show_overlay()
{
_overlay_visible = true;
+ clear_overlay();
}
void OSystem_Dreamcast::hide_overlay()
@@ -475,7 +488,20 @@
void OSystem_Dreamcast::clear_overlay()
{
- memset(overlay, 0, OVL_W*OVL_H*sizeof(unsigned short));
+ if(!_overlay_visible)
+ return;
+
+ unsigned char *src = screen;
+ unsigned short *dst = overlay;
+
+ for(int y=0; y<_screen_h; y++) {
+ for(int x=0; x<_screen_w; x++) {
+ short pix = palette[src[x]];
+ dst[x] = ((pix&0x7fe0)<<1)|((pix&0x0200)>>4)|(pix&0x1f);
+ }
+ src += SCREEN_W;
+ dst += OVL_W;
+ }
_overlay_dirty = true;
}
- Previous message: [Scummvm-cvs-logs] CVS: web compatibility.php,1.28,1.29
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gui ListWidget.cpp,1.8,1.9 ListWidget.h,1.7,1.8 dialog.cpp,1.20,1.21 dialog.h,1.10,1.11 newgui.cpp,1.22,1.23 newgui.h,1.14,1.15 widget.cpp,1.7,1.8 widget.h,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list