diff options
| -rw-r--r-- | tools/sprite_dumper/main.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
| 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: | |||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | int ReadTwoBytes(int addr) const { | 60 | int ReadTwoBytes(int addr) const { |
| 61 | return static_cast<unsigned char>(data_[addr]) | (data_[addr + 1] << 8); | 61 | return static_cast<unsigned char>(data_[addr]) | (static_cast<unsigned char>(data_[addr + 1]) << 8); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | int ReadNextFourBytes() { | 64 | int ReadNextFourBytes() { |
| @@ -67,8 +67,8 @@ public: | |||
| 67 | return ReadFourBytes(o2r); | 67 | return ReadFourBytes(o2r); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | int ReadFourBytes(int addr) const { | 70 | unsigned long ReadFourBytes(int addr) const { |
| 71 | return static_cast<unsigned char>(data_[addr]) | (data_[addr + 1] << 8) | (data_[addr + 2] << 16) | (data_[addr + 3] << 24); | 71 | return static_cast<unsigned char>(data_[addr]) | (static_cast<unsigned char>(data_[addr + 1]) << 8) | (static_cast<unsigned char>(data_[addr + 2]) << 16) | (static_cast<unsigned char>(data_[addr + 3]) << 24); |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | void Seek(int offset) { | 74 | void Seek(int offset) { |
| @@ -332,6 +332,7 @@ public: | |||
| 332 | m3.SeekAdd(8); | 332 | m3.SeekAdd(8); |
| 333 | 333 | ||
| 334 | unsigned short spriteCount = m3.ReadNextTwoBytes(); | 334 | unsigned short spriteCount = m3.ReadNextTwoBytes(); |
| 335 | //std::cout << i << ":" << spriteCount << " at " << std::hex << sheetAddr << std::endl; | ||
| 335 | for (int j=0; j<spriteCount; j++) { | 336 | for (int j=0; j<spriteCount; j++) { |
| 336 | Sprite sprite; | 337 | Sprite sprite; |
| 337 | 338 | ||
| @@ -348,9 +349,9 @@ public: | |||
| 348 | subsprite.objSize = static_cast<unsigned char>((ch >> 12) & 3); | 349 | subsprite.objSize = static_cast<unsigned char>((ch >> 12) & 3); |
| 349 | subsprite.objShape = static_cast<unsigned char>((ch >> 14) & 3); | 350 | subsprite.objShape = static_cast<unsigned char>((ch >> 14) & 3); |
| 350 | 351 | ||
| 351 | std::cout << subsprite.y << std::endl; | 352 | /*std::cout << subsprite.y << std::endl; |
| 352 | std::cout << subsprite.x << std::endl; | 353 | std::cout << subsprite.x << std::endl; |
| 353 | std::cout << subsprite.flipH << "," << subsprite.flipV << std::endl; | 354 | std::cout << subsprite.flipH << "," << subsprite.flipV << std::endl;*/ |
| 354 | 355 | ||
| 355 | sprite.subsprites.push_back(std::move(subsprite)); | 356 | sprite.subsprites.push_back(std::move(subsprite)); |
| 356 | } | 357 | } |
| @@ -361,7 +362,7 @@ public: | |||
| 361 | } | 362 | } |
| 362 | 363 | ||
| 363 | spritesheets_[i] = std::move(ss); | 364 | spritesheets_[i] = std::move(ss); |
| 364 | if (i == 2) return; | 365 | //if (i == 15) return; |
| 365 | } | 366 | } |
| 366 | } | 367 | } |
| 367 | 368 | ||
| @@ -370,7 +371,9 @@ public: | |||
| 370 | private: | 371 | private: |
| 371 | 372 | ||
| 372 | int GetPointerToSheet(Rom& m3, int index) { | 373 | int GetPointerToSheet(Rom& m3, int index) { |
| 373 | int a = m3.ReadFourBytes(baseAddr_ + 4 + (index << 2)); | 374 | int readAt = baseAddr_ + 4 + (index << 2); |
| 375 | int a = m3.ReadFourBytes(readAt); | ||
| 376 | //std::cout << readAt << " :: " << a << std::hex << std::endl; | ||
| 374 | if (a == 0) return -1; | 377 | if (a == 0) return -1; |
| 375 | return a + baseAddr_; | 378 | return a + baseAddr_; |
| 376 | } | 379 | } |
| @@ -396,7 +399,10 @@ int main(int argc, char** argv) { | |||
| 396 | PaletteSet palettes(m3); | 399 | PaletteSet palettes(m3); |
| 397 | //const int banks[] = {0x1A442A4, 0x1AE0638, 0x1AEE4C4, 0x1AF1ED0}; | 400 | //const int banks[] = {0x1A442A4, 0x1AE0638, 0x1AEE4C4, 0x1AF1ED0}; |
| 398 | Bank b1(m3, 0x1A442A4, 0x14383E4); | 401 | Bank b1(m3, 0x1A442A4, 0x14383E4); |
| 399 | Magick::Image im = b1.SpriteSheets().at(1).render(m3, palettes); | 402 | Bank b2(m3, 0x1AE0638, 0x194BC30); |
| 403 | Bank b3(m3, 0x1AEE4C4, 0x1A012B8); | ||
| 404 | Bank b4(m3, 0x1AF1ED0, 0x1A36AA0); | ||
| 405 | Magick::Image im = b2.SpriteSheets().at(3).render(m3, palettes); | ||
| 400 | im.magick("png"); | 406 | im.magick("png"); |
| 401 | im.write("out.png"); | 407 | im.write("out.png"); |
| 402 | 408 | ||
