#include "glwidget.h"
+#include "jaguar.h"
#include "settings.h"
+#include "tom.h"
+
+#ifdef __GCCWIN32__
+// Apparently on win32, various OpenGL constants aren't pulled in.
+#include <GL/glext.h>
+#endif
GLWidget::GLWidget(QWidget * parent/*= 0*/): QGLWidget(parent), texture(0),
- textureWidth(0), textureHeight(0), buffer(0), rasterWidth(64), rasterHeight(64)
-// textureWidth(0), textureHeight(0), buffer(0), rasterWidth(256), rasterHeight(256)
+ textureWidth(0), textureHeight(0), buffer(0), rasterWidth(320), rasterHeight(240)
{
+// tomDeviceWidth = rasterWidth;
+ tomDeviceWidth = 1024; // It has to be the texture width...
+
+ // Set up the backbuffer
+ // To be safe, this should be 1280 * 625 * 2...
+ backbuffer = (uint32_t *)malloc(1280 * 625 * sizeof(uint32_t));
+// memset(backbuffer, 0x44, rasterWidth *
+ memset(backbuffer, 0xFF, 1024 *
+ (vjs.hardwareTypeNTSC ? rasterHeight : VIRTUAL_SCREEN_HEIGHT_PAL)
+ * sizeof(uint32_t));
}
GLWidget::~GLWidget()
{
+ free(backbuffer);
}
void GLWidget::initializeGL()
void GLWidget::paintGL()
{
+//kludge
+rasterHeight = (vjs.hardwareTypeNTSC ? 240 : 256);
+
unsigned outputWidth = width();
unsigned outputHeight = height();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (vjs.glFilter ? GL_LINEAR : GL_NEAREST));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (vjs.glFilter ? GL_LINEAR : GL_NEAREST));
// glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rasterWidth, rasterHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buffer);
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rasterWidth, rasterHeight, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, buffer);
+//more kludge
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TOMGetVideoModeWidth(), rasterHeight, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, buffer);
+// glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rasterWidth, rasterHeight, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, buffer);
- double w = (double)rasterWidth / (double)textureWidth;
+ double w = (double)TOMGetVideoModeWidth() / (double)textureWidth;
+// double w = (double)rasterWidth / (double)textureWidth;
double h = (double)rasterHeight / (double)textureHeight;
unsigned u = outputWidth;
unsigned v = outputHeight;
}
buffer = new uint32_t[textureWidth * textureHeight];
+#warning "!!! Remove all backbuffer stuff, since it's unneeded !!!"
+/*
+We do this here just as a quick 'n' dirty shortcut. We don't need a backbuffer,
+as OpenGL takes care of all that crap for us. This means we also have to fix the
+Jaguar core, giving it a setup function for setting things like the video buffer,
+etc.
+*/
+ backbuffer = buffer;
+
+//???
+memset(buffer, 0x00, textureWidth * textureHeight * sizeof(uint32_t));
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glPixelStorei(GL_UNPACK_ROW_LENGTH, textureWidth);