diff options
| author | Johannes Schickel | 2012-06-20 08:02:26 -0700 | 
|---|---|---|
| committer | Johannes Schickel | 2012-06-20 08:02:26 -0700 | 
| commit | 4fb9bceabc4309a477472aa55207eae55bc0aa13 (patch) | |
| tree | 1e119f6d63d0a4c5c38a7caabd92be335749f07d /backends/platform/n64 | |
| parent | 5a2e65469f3650dc9785bf27b77d25d285ded4f1 (diff) | |
| parent | aec9b9e22a9bff54ae3c39bb796bae0f4b4c2d95 (diff) | |
| download | scummvm-rg350-4fb9bceabc4309a477472aa55207eae55bc0aa13.tar.gz scummvm-rg350-4fb9bceabc4309a477472aa55207eae55bc0aa13.tar.bz2 scummvm-rg350-4fb9bceabc4309a477472aa55207eae55bc0aa13.zip  | |
Merge pull request #246 from lordhoto/osystem-void-buffers
OSYSTEM: Use void buffers for screen/overlay/mouse buffers and proper pitch values for overlay code
Diffstat (limited to 'backends/platform/n64')
| -rw-r--r-- | backends/platform/n64/osys_n64.h | 8 | ||||
| -rw-r--r-- | backends/platform/n64/osys_n64_base.cpp | 37 | 
2 files changed, 24 insertions, 21 deletions
diff --git a/backends/platform/n64/osys_n64.h b/backends/platform/n64/osys_n64.h index b8519eeea6..3266180a7b 100644 --- a/backends/platform/n64/osys_n64.h +++ b/backends/platform/n64/osys_n64.h @@ -162,7 +162,7 @@ protected:  	virtual void grabPalette(byte *colors, uint start, uint num);  public: -	virtual void copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h); +	virtual void copyRectToScreen(const void *buf, int pitch, int x, int y, int w, int h);  	virtual void updateScreen();  	virtual Graphics::Surface *lockScreen();  	virtual void unlockScreen(); @@ -171,8 +171,8 @@ public:  	virtual void showOverlay();  	virtual void hideOverlay();  	virtual void clearOverlay(); -	virtual void grabOverlay(OverlayColor *buf, int pitch); -	virtual void copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h); +	virtual void grabOverlay(void *buf, int pitch); +	virtual void copyRectToOverlay(const void *buf, int pitch, int x, int y, int w, int h);  	virtual int16 getOverlayHeight();  	virtual int16 getOverlayWidth();  	virtual Graphics::PixelFormat getOverlayFormat() const { @@ -182,7 +182,7 @@ public:  	virtual bool showMouse(bool visible);  	virtual void warpMouse(int x, int y); -	virtual void setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, bool dontScale, const Graphics::PixelFormat *format); +	virtual void setMouseCursor(const void *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, bool dontScale, const Graphics::PixelFormat *format);  	virtual void setCursorPalette(const byte *colors, uint start, uint num);  	virtual bool pollEvent(Common::Event &event); diff --git a/backends/platform/n64/osys_n64_base.cpp b/backends/platform/n64/osys_n64_base.cpp index d10682f22e..8f17171338 100644 --- a/backends/platform/n64/osys_n64_base.cpp +++ b/backends/platform/n64/osys_n64_base.cpp @@ -442,17 +442,18 @@ void OSystem_N64::setCursorPalette(const byte *colors, uint start, uint num) {  	_dirtyOffscreen = true;  } -void OSystem_N64::copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h) { +void OSystem_N64::copyRectToScreen(const void *buf, int pitch, int x, int y, int w, int h) {  	//Clip the coordinates +	const byte *src = (const byte *)buf;  	if (x < 0) {  		w += x; -		buf -= x; +		src -= x;  		x = 0;  	}  	if (y < 0) {  		h += y; -		buf -= y * pitch; +		src -= y * pitch;  		y = 0;  	} @@ -472,14 +473,14 @@ void OSystem_N64::copyRectToScreen(const byte *buf, int pitch, int x, int y, int  	do {  		for (int hor = 0; hor < w; hor++) { -			if (dst_pal[hor] != buf[hor]) { -				uint16 color = _screenPalette[buf[hor]]; +			if (dst_pal[hor] != src[hor]) { +				uint16 color = _screenPalette[src[hor]];  				dst_hicol[hor] = color;  // Save image converted to 16-bit -				dst_pal[hor] = buf[hor]; // Save palettized display +				dst_pal[hor] = src[hor]; // Save palettized display  			}  		} -		buf += pitch; +		src += pitch;  		dst_pal += _screenWidth;  		dst_hicol += _screenWidth;  	} while (--h); @@ -682,28 +683,30 @@ void OSystem_N64::clearOverlay() {  	_dirtyOffscreen = true;  } -void OSystem_N64::grabOverlay(OverlayColor *buf, int pitch) { +void OSystem_N64::grabOverlay(void *buf, int pitch) {  	int h = _overlayHeight;  	OverlayColor *src = _overlayBuffer; +	byte *dst = (byte *)buf;  	do { -		memcpy(buf, src, _overlayWidth * sizeof(OverlayColor)); +		memcpy(dst, src, _overlayWidth * sizeof(OverlayColor));  		src += _overlayWidth; -		buf += pitch; +		dst += pitch;  	} while (--h);  } -void OSystem_N64::copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h) { +void OSystem_N64::copyRectToOverlay(const void *buf, int pitch, int x, int y, int w, int h) { +	const byte *src = (const byte *)buf;  	//Clip the coordinates  	if (x < 0) {  		w += x; -		buf -= x; +		src -= x * sizeof(OverlayColor);  		x = 0;  	}  	if (y < 0) {  		h += y; -		buf -= y * pitch; +		src -= y * pitch;  		y = 0;  	} @@ -722,11 +725,11 @@ void OSystem_N64::copyRectToOverlay(const OverlayColor *buf, int pitch, int x, i  	OverlayColor *dst = _overlayBuffer + (y * _overlayWidth + x);  	if (_overlayWidth == pitch && pitch == w) { -		memcpy(dst, buf, h * w * sizeof(OverlayColor)); +		memcpy(dst, src, h * w * sizeof(OverlayColor));  	} else {  		do { -			memcpy(dst, buf, w * sizeof(OverlayColor)); -			buf += pitch; +			memcpy(dst, src, w * sizeof(OverlayColor)); +			src += pitch;  			dst += _overlayWidth;  		} while (--h);  	} @@ -773,7 +776,7 @@ void OSystem_N64::warpMouse(int x, int y) {  	_dirtyOffscreen = true;  } -void OSystem_N64::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, bool dontScale, const Graphics::PixelFormat *format) { +void OSystem_N64::setMouseCursor(const void *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, bool dontScale, const Graphics::PixelFormat *format) {  	if (!w || !h) return;  	_mouseHotspotX = hotspotX;  | 
