From 3720e9bcdd15a30058bc5f8a2913a924760796a0 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 31 Jan 2021 11:33:12 -0500 Subject: Fixed errors with signedness... yay! --- tools/sprite_dumper/main.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'tools/sprite_dumper') diff --git a/tools/sprite_dumper/main.cpp b/tools/sprite_dumper/main.cpp index 79e3df0..c8dd956 100644 --- a/tools/sprite_dumper/main.cpp +++ b/tools/sprite_dumper/main.cpp @@ -58,7 +58,7 @@ public: } int ReadTwoBytes(int addr) const { - return static_cast(data_[addr]) | (data_[addr + 1] << 8); + return static_cast(data_[addr]) | (static_cast(data_[addr + 1]) << 8); } int ReadNextFourBytes() { @@ -67,8 +67,8 @@ public: return ReadFourBytes(o2r); } - int ReadFourBytes(int addr) const { - return static_cast(data_[addr]) | (data_[addr + 1] << 8) | (data_[addr + 2] << 16) | (data_[addr + 3] << 24); + unsigned long ReadFourBytes(int addr) const { + return static_cast(data_[addr]) | (static_cast(data_[addr + 1]) << 8) | (static_cast(data_[addr + 2]) << 16) | (static_cast(data_[addr + 3]) << 24); } void Seek(int offset) { @@ -332,6 +332,7 @@ public: m3.SeekAdd(8); unsigned short spriteCount = m3.ReadNextTwoBytes(); + //std::cout << i << ":" << spriteCount << " at " << std::hex << sheetAddr << std::endl; for (int j=0; j((ch >> 12) & 3); subsprite.objShape = static_cast((ch >> 14) & 3); - std::cout << subsprite.y << std::endl; + /*std::cout << subsprite.y << std::endl; std::cout << subsprite.x << std::endl; - std::cout << subsprite.flipH << "," << subsprite.flipV << std::endl; + std::cout << subsprite.flipH << "," << subsprite.flipV << std::endl;*/ sprite.subsprites.push_back(std::move(subsprite)); } @@ -361,7 +362,7 @@ public: } spritesheets_[i] = std::move(ss); - if (i == 2) return; + //if (i == 15) return; } } @@ -370,7 +371,9 @@ public: private: int GetPointerToSheet(Rom& m3, int index) { - int a = m3.ReadFourBytes(baseAddr_ + 4 + (index << 2)); + int readAt = baseAddr_ + 4 + (index << 2); + int a = m3.ReadFourBytes(readAt); + //std::cout << readAt << " :: " << a << std::hex << std::endl; if (a == 0) return -1; return a + baseAddr_; } @@ -396,7 +399,10 @@ int main(int argc, char** argv) { PaletteSet palettes(m3); //const int banks[] = {0x1A442A4, 0x1AE0638, 0x1AEE4C4, 0x1AF1ED0}; Bank b1(m3, 0x1A442A4, 0x14383E4); - Magick::Image im = b1.SpriteSheets().at(1).render(m3, palettes); + Bank b2(m3, 0x1AE0638, 0x194BC30); + Bank b3(m3, 0x1AEE4C4, 0x1A012B8); + Bank b4(m3, 0x1AF1ED0, 0x1A36AA0); + Magick::Image im = b2.SpriteSheets().at(3).render(m3, palettes); im.magick("png"); im.write("out.png"); -- cgit 1.4.1