aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/wii/osystem_gfx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/wii/osystem_gfx.cpp')
-rw-r--r--backends/platform/wii/osystem_gfx.cpp36
1 files changed, 26 insertions, 10 deletions
diff --git a/backends/platform/wii/osystem_gfx.cpp b/backends/platform/wii/osystem_gfx.cpp
index d33643193d..ea3487eacf 100644
--- a/backends/platform/wii/osystem_gfx.cpp
+++ b/backends/platform/wii/osystem_gfx.cpp
@@ -21,12 +21,14 @@
#include <malloc.h>
+#include <gfx/gfx.h>
+#include <gfx/gfx_con.h>
+
#include "common/config-manager.h"
#include "graphics/conversion.h"
#include "backends/fs/wii/wii-fs-factory.h"
#include "osystem.h"
-#include "gfx.h"
#define ROUNDUP(x,n) (-(-(x) & -(n)))
#define MAX_FPS 30
@@ -58,8 +60,6 @@ static const OSystem::GraphicsMode _supportedGraphicsModes[] = {
};
void OSystem_Wii::initGfx() {
- gfx_video_init(GFX_STANDARD_AUTO, GFX_MODE_DEFAULT);
- gfx_init();
gfx_set_underscan(ConfMan.getInt("wii_video_default_underscan_x"),
ConfMan.getInt("wii_video_default_underscan_y"));
@@ -96,8 +96,6 @@ void OSystem_Wii::initGfx() {
}
void OSystem_Wii::deinitGfx() {
- gfx_deinit();
-
gfx_tex_deinit(&_texMouse);
gfx_tex_deinit(&_texGame);
gfx_tex_deinit(&_texOverlay);
@@ -429,13 +427,19 @@ void OSystem_Wii::copyRectToScreen(const byte *buf, int pitch, int x, int y,
}
void OSystem_Wii::updateScreen() {
- static gfx_coords_t cc;
+ static f32 ar;
+ static gfx_screen_coords_t cc;
static int cs;
u32 now = getMillis();
if (now - _lastScreenUpdate < 1000 / MAX_FPS)
return;
+ if (!gfx_frame_start()) {
+ printf("last frame not done!\n");
+ return;
+ }
+
#ifdef DEBUG_WII_MEMSTATS
wii_memstats();
#endif
@@ -443,8 +447,8 @@ void OSystem_Wii::updateScreen() {
cs = _cursorScale;
_lastScreenUpdate = now;
- gfx_frame_start();
-
+ if (_overlayVisible || _consoleVisible)
+ gfx_set_colorop(COLOROP_SIMPLEFADE, gfx_color_none, gfx_color_none);
if (_gameRunning) {
if (_gameDirty) {
@@ -456,6 +460,12 @@ void OSystem_Wii::updateScreen() {
}
if (_overlayVisible) {
+ if (!_consoleVisible)
+ gfx_set_colorop(COLOROP_NONE, gfx_color_none, gfx_color_none);
+
+ if (_gameRunning)
+ ar = gfx_set_ar(4.0 / 3.0);
+
// ugly, but the modern theme sets a factor of 3, only god knows why
if (cs > 2)
cs = 1;
@@ -485,6 +495,12 @@ void OSystem_Wii::updateScreen() {
gfx_draw_tex(&_texMouse, &cc);
}
+ if (_consoleVisible)
+ gfx_con_draw();
+
+ if (_overlayVisible && _gameRunning)
+ gfx_set_ar(ar);
+
gfx_frame_end();
}
@@ -649,7 +665,7 @@ void OSystem_Wii::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX,
if (!tmpBuf) {
gfx_tex_convert(&_texMouse, buf);
} else {
- u8 bpp = _texMouse.bpp;
+ u8 bpp = _texMouse.bpp >> 3;
byte *tmp = (byte *) malloc(tw * th * bpp);
if (!tmp) {
@@ -668,7 +684,7 @@ void OSystem_Wii::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX,
tw * _pfRGB3444.bytesPerPixel,
w * _pfCursor.bytesPerPixel,
tw, th, _pfRGB3444, _pfCursor)) {
- printf("crossBlit failed\n");
+ printf("crossBlit failed (cursor)\n");
::abort();
}