diff --git a/src/Application/Data/ROM.cc b/src/Application/Data/ROM.cc deleted file mode 100644 index ab9e1236..00000000 --- a/src/Application/Data/ROM.cc +++ /dev/null @@ -1,117 +0,0 @@ -#include "ROM.h" - -namespace yaze { -namespace Application { -namespace Data { - -void ROM::LoadFromFile(const std::string &path) { - FILE *file = fopen(path.c_str(), "r+"); - if (file == NULL) return; - fseek(file, 0, SEEK_END); - size = ftell(file); - fclose(file); - - // Reading data to array of unsigned chars - file = fopen(path.c_str(), "r+"); - current_rom_ = (unsigned char *)malloc(size); - rom_data_ = (char *)malloc(size); - fread(rom_data_, sizeof(char), size, file); - int bytes_read = fread(current_rom_, sizeof(unsigned char), size, file); - fclose(file); - - memcpy(title, rom_data_ + 32704, 21); - type = LoROM; - version = current_rom_[27]; - loaded = true; -} - -std::vector ROM::ExtractTiles(TilePreset &preset) { - std::cout << "Extracting tiles..." << std::endl; - uint filePos = 0; - uint size_out = 0; - uint size = preset.length; - int tilePos = preset.pcTilesLocation; - std::vector rawTiles; - filePos = getRomPosition(preset, tilePos, preset.SNESTilesLocation); - std::cout << "ROM Position: " << filePos << " from " - << preset.SNESTilesLocation << std::endl; - - // decompress the graphics - char *data = (char *)malloc(sizeof(char) * size); - memcpy(data, (rom_data_ + filePos), size); - data = alttp_decompress_gfx(data, 0, size, &size_out, &lastCompressedSize); - std::cout << "size: " << size << std::endl; - std::cout << "lastCompressedSize: " << lastCompressedSize << std::endl; - if (data == NULL) { - std::cout << alttp_decompression_error << std::endl; - return rawTiles; - } - // unpack the tiles based on their depth - unsigned tileCpt = 0; - std::cout << "Unpacking tiles..." << std::endl; - for (unsigned int tilePos = 0; tilePos < size; tilePos += preset.bpp * 8) { - tile8 newTile = unpack_bpp_tile(data, tilePos, preset.bpp); - newTile.id = tileCpt; - rawTiles.push_back(newTile); - tileCpt++; - } - std::cout << "Done unpacking tiles" << std::endl; - free(data); - std::cout << "Done extracting tiles." << std::endl; - return rawTiles; -} - -SNESPalette ROM::ExtractPalette(TilePreset &preset) { - unsigned int filePos = getRomPosition(preset, preset.pcPaletteLocation, - preset.SNESPaletteLocation); - std::cout << "Palette pos : " << filePos << std::endl; // TODO: make this hex - unsigned int palette_size = pow(2, preset.bpp); // - 1; - char *ab = (char *)malloc(sizeof(char) * (palette_size * 2)); - memcpy(ab, rom_data_ + filePos, palette_size * 2); - - for (int i = 0; i < palette_size; i++) { - std::cout << ab[i]; - } - std::cout << std::endl; - - const char *data = ab; - SNESPalette pal(ab); - if (preset.paletteNoZeroColor) { - SNESColor col; - - col.setRgb(ImVec4(153, 153, 153, 255)); - pal.colors.push_back(col); - pal.colors.erase(pal.colors.begin(), - pal.colors.begin() + pal.colors.size() - 1); - } - return pal; -} - -unsigned int ROM::getRomPosition(const TilePreset &preset, int directAddr, - unsigned int snesAddr) { - bool romHasHeader = false; // romInfo.hasHeader - if (overrideHeaderInfo) romHasHeader = overridenHeaderInfo; - unsigned int filePos = -1; - enum rom_type rType = LoROM; - std::cout << "ROM::getRomPosition: directAddr:" << directAddr << std::endl; - if (directAddr == -1) { - filePos = rommapping_snes_to_pc(snesAddr, rType, romHasHeader); - } else { - filePos = directAddr; - if (romHasHeader) filePos += 0x200; - } - std::cout << "ROM::getRomPosition: filePos:" << filePos << std::endl; - return filePos; -} - -int AddressFromBytes(byte addr1, byte addr2, byte addr3) { - return (addr1 << 16) | (addr2 << 8) | addr3; -} - -short ROM::AddressFromBytes(byte addr1, byte addr2) { - return (short)((addr1 << 8) | (addr2)); -} - -} // namespace Data -} // namespace Application -} // namespace yaze \ No newline at end of file