From 3312e138f4abd27086733bfda263bc0cf23dbb2b Mon Sep 17 00:00:00 2001 From: slack Date: Thu, 23 Apr 2009 00:33:30 +0200 Subject: [PATCH] Fixed windows build --- core/CMakeLists.txt | 2 +- core/GBMemory.h | 2 ++ core/GBVideo.cc | 4 ++-- qtboi/QtBoiEmuThread.h | 2 +- qtboi/QtBoiMainWindow.cc | 13 ++++++++++--- wendi/CodeBlock.cc | 19 +++++++++---------- wendi/wendi.cc | 6 +++--- 7 files changed, 28 insertions(+), 20 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 67a6f57..05879e7 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -1,2 +1,2 @@ -ADD_LIBRARY(wenboicore SHARED GameBoy.cc GBMemory.cc GBRom.cc GBVideo.cc MBC.cc NoMBC.cc MBC1.cc util.cc) +ADD_LIBRARY(wenboicore STATIC GameBoy.cc GBMemory.cc GBRom.cc GBVideo.cc MBC.cc NoMBC.cc MBC1.cc util.cc) diff --git a/core/GBMemory.h b/core/GBMemory.h index 37a7cdb..590eb11 100644 --- a/core/GBMemory.h +++ b/core/GBMemory.h @@ -18,6 +18,8 @@ #ifndef GBMEMORY_H #define GBMEMORY_H +#pragma warning(disable:4351) + #include "../common/sized_types.h" #include diff --git a/core/GBVideo.cc b/core/GBVideo.cc index 1aa19ed..5fc3551 100644 --- a/core/GBVideo.cc +++ b/core/GBVideo.cc @@ -415,10 +415,10 @@ void GBVideo::draw() if (newscreen[line_base+screen_x+x]==0 || check_bit(v[i].flags,7)==false) { - newscreen[line_base+screen_x+x] = color | (pal_num + 1 << 4); + newscreen[line_base+screen_x+x] = color | (pal_num + (1 << 4)); } } - //logger.trace(pal_num + 1 << 4); + //logger.trace(pal_num + (1 << 4)); } cur_x = v[i].x; diff --git a/qtboi/QtBoiEmuThread.h b/qtboi/QtBoiEmuThread.h index 1088277..e8e8b04 100644 --- a/qtboi/QtBoiEmuThread.h +++ b/qtboi/QtBoiEmuThread.h @@ -13,7 +13,7 @@ class QtBoiEmuThread: public QThread GameBoy gb; GameBoy::run_status status; bool isPaused; - int frameCount; + unsigned int frameCount; QtBoiEmuThread(QObject *parent); ~QtBoiEmuThread(); diff --git a/qtboi/QtBoiMainWindow.cc b/qtboi/QtBoiMainWindow.cc index 980bace..80cbb1a 100644 --- a/qtboi/QtBoiMainWindow.cc +++ b/qtboi/QtBoiMainWindow.cc @@ -21,7 +21,7 @@ QtBoiMainWindow::QtBoiMainWindow(QWidget *parent) :QMainWindow(parent), emuThread(0) { - screenImage = new QImage(160, 144, QImage::Format_Indexed8); + screenImage = new QImage(160, 144, QImage::Format_RGB32); screenImage->setNumColors(7); // gray palette //screenImage->setColor(6, qRgb(0,0,0)); @@ -33,6 +33,7 @@ QtBoiMainWindow::QtBoiMainWindow(QWidget *parent) //screenImage->setColor(0, qRgb(255,255,255)); // greenish palette + /* screenImage->setColor(6, qRgb(64,64,64)); screenImage->setColor(5, qRgb(82,82,53)); screenImage->setColor(4, qRgb(101,101,42)); @@ -40,6 +41,7 @@ QtBoiMainWindow::QtBoiMainWindow(QWidget *parent) screenImage->setColor(2, qRgb(139,139,21)); screenImage->setColor(1, qRgb(166,166,10)); screenImage->setColor(0, qRgb(192,192,0)); + */ emuThread = new QtBoiEmuThread(this); emuThread->start(); @@ -193,8 +195,13 @@ void QtBoiMainWindow::onDisassemblyAnchorClicked(const QUrl& url) void QtBoiMainWindow::onRedraw(const uchar *buffer) { - uchar *pixels = screenImage->bits(); - memcpy(pixels, buffer, 160*144); + uint *pixels = reinterpret_cast(screenImage->bits()); + //memcpy(pixels, buffer, 160*144); + for (int y=0; y<144; y++) + for (int x=0; x<160; x++) { + unsigned int val = 255-buffer[160*y+x]*42; + pixels[160*y+x]=(val<<16)|(val<<8)|val; + } screen->setPixmap(QPixmap::fromImage(screenImage->scaled(320,288))); } diff --git a/wendi/CodeBlock.cc b/wendi/CodeBlock.cc index 490a574..12611f7 100644 --- a/wendi/CodeBlock.cc +++ b/wendi/CodeBlock.cc @@ -18,7 +18,6 @@ #include "CodeBlock.h" #include -#include CodeBlock::CodeBlock(address start): //< creates an empty CodeBlock type(BLOCK), @@ -37,17 +36,17 @@ CodeBlock::CodeBlock(CodeBlock &block, address addr): //< removes [addr,end[ fro xrefs(), name() { - using std::bind2nd; - using __gnu_cxx::select1st; - using std::equal_to; block.end = addr; - // HAHA! I'M USING STL EXTENSIONS!!!1 - DisassemblyIterator first = std::find_if(block.disassembly.begin(), - block.disassembly.end(), - compose1(bind2nd(equal_to
(), addr), - select1st())); - DisassemblyIterator tmp = first; + DisassemblyIterator tmp; + for (tmp=block.disassembly.begin(); tmp!=block.disassembly.end(); ++tmp) + { + if (tmp->first == addr) + break; + } + + DisassemblyIterator first=tmp; + this->add_xref((--tmp)->first, Instruction::OTHER); DisassemblyIterator last = block.disassembly.end(); diff --git a/wendi/wendi.cc b/wendi/wendi.cc index 2b82c42..12d4851 100644 --- a/wendi/wendi.cc +++ b/wendi/wendi.cc @@ -299,8 +299,8 @@ int main(int argc, char **argv) { address src = start+2*i; address dst = gb.memory.read16(src); - list::iterator i = find_block(pending, dst); - if (i == pending.end()) + list::iterator it = find_block(pending, dst); + if (it == pending.end()) { logger.trace("jump table dst block at 0x",std::hex, dst); pending.push_back(CodeBlock(dst)); @@ -308,7 +308,7 @@ int main(int argc, char **argv) } else { - i->add_xref(src, Instruction::JUMP_TABLE_JUMP); + it->add_xref(src, Instruction::JUMP_TABLE_JUMP); } } } -- 2.34.1