aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/dc/dc.h2
-rw-r--r--backends/dc/display.cpp56
2 files changed, 42 insertions, 16 deletions
diff --git a/backends/dc/dc.h b/backends/dc/dc.h
index 8be53db2fd..77513c14e0 100644
--- a/backends/dc/dc.h
+++ b/backends/dc/dc.h
@@ -108,7 +108,7 @@ class OSystem_Dreamcast : public OSystem {
void *_sound_proc_param;
bool _overlay_visible, _overlay_dirty, _screen_dirty;
int _screen_buffer, _overlay_buffer, _mouse_buffer;
- bool _hires;
+ bool _hires, _hires_mouse;
float _overlay_fade;
uint32 _timer_duration, _timer_next_expiry;
diff --git a/backends/dc/display.cpp b/backends/dc/display.cpp
index faf5e2a9ea..6ac642a37b 100644
--- a/backends/dc/display.cpp
+++ b/backends/dc/display.cpp
@@ -154,6 +154,7 @@ void OSystem_Dreamcast::init_size(uint w, uint h)
_overlay_y = (h-OVL_H)/2;
if(_overlay_x<0) _overlay_x = 0;
if(_overlay_y<0) _overlay_y = 0;
+ _hires_mouse = _hires;
ta_sync();
if(!screen)
screen = new unsigned char[SCREEN_W*SCREEN_H];
@@ -469,24 +470,49 @@ void OSystem_Dreamcast::drawMouse(int xdraw, int ydraw, int w, int h,
myvertex.u = 0.0;
myvertex.v = 0.0;
- myvertex.x = (xdraw-_ms_hotspot_y)*2.0;
- myvertex.y = (ydraw-_ms_hotspot_x)*2.0 + TOP_OFFSET;
- ta_commit_list(&myvertex);
+ if(_hires_mouse) {
- myvertex.x += w*2.0;
- myvertex.u = w*(1.0/MOUSE_W);
- ta_commit_list(&myvertex);
+ myvertex.x = xdraw*2.0-_ms_hotspot_x;
+ myvertex.y = ydraw*2.0-_ms_hotspot_y + TOP_OFFSET;
+ ta_commit_list(&myvertex);
- myvertex.x = (xdraw-_ms_hotspot_y)*2.0;
- myvertex.y += h*2.0;
- myvertex.u = 0.0;
- myvertex.v = h*(1.0/MOUSE_H);
- ta_commit_list(&myvertex);
+ myvertex.x += w;
+ myvertex.u = w*(1.0/MOUSE_W);
+ ta_commit_list(&myvertex);
- myvertex.x += w*2.0;
- myvertex.u = w*(1.0/MOUSE_W);
- myvertex.cmd |= TA_CMD_VERTEX_EOS;
- ta_commit_list(&myvertex);
+ myvertex.x = xdraw*2.0-_ms_hotspot_x;
+ myvertex.y += h;
+ myvertex.u = 0.0;
+ myvertex.v = h*(1.0/MOUSE_H);
+ ta_commit_list(&myvertex);
+
+ myvertex.x += w;
+ myvertex.u = w*(1.0/MOUSE_W);
+ myvertex.cmd |= TA_CMD_VERTEX_EOS;
+ ta_commit_list(&myvertex);
+
+ } else {
+
+ myvertex.x = (xdraw-_ms_hotspot_x)*2.0;
+ myvertex.y = (ydraw-_ms_hotspot_y)*2.0 + TOP_OFFSET;
+ ta_commit_list(&myvertex);
+
+ myvertex.x += w*2.0;
+ myvertex.u = w*(1.0/MOUSE_W);
+ ta_commit_list(&myvertex);
+
+ myvertex.x = (xdraw-_ms_hotspot_x)*2.0;
+ myvertex.y += h*2.0;
+ myvertex.u = 0.0;
+ myvertex.v = h*(1.0/MOUSE_H);
+ ta_commit_list(&myvertex);
+
+ myvertex.x += w*2.0;
+ myvertex.u = w*(1.0/MOUSE_W);
+ myvertex.cmd |= TA_CMD_VERTEX_EOS;
+ ta_commit_list(&myvertex);
+
+ }
}