Change Load2BppGraphics to standalone fn, add mutable_data accessor

This commit is contained in:
scawful
2024-12-29 09:58:58 -05:00
parent a8dcfe3d05
commit 54c170373b
6 changed files with 39 additions and 34 deletions

View File

@@ -64,7 +64,7 @@ unsigned char *Tracker::GetSpcAddr(Rom &rom, unsigned short addr, short bank) {
spcbank = bank + 1;
again:
rom_ptr = rom.data() + sbank_ofs[spcbank];
rom_ptr = rom.mutable_data() + sbank_ofs[spcbank];
for (;;) {
a = *(unsigned short *)rom_ptr;
@@ -424,7 +424,7 @@ void Tracker::LoadSongs(Rom &rom) {
srsize = 0;
song_range_ = 0;
sp_mark = 0;
b = rom.data();
b = rom.mutable_data();
sbank_ofs[1] = (b[0x91c] << 15) + ((b[0x918] & 127) << 8) + b[0x914];
sbank_ofs[3] = (b[0x93a] << 15) + ((b[0x936] & 127) << 8) + b[0x932];
@@ -550,7 +550,7 @@ void Tracker::LoadSongs(Rom &rom) {
numinst = spclen / 6;
b = GetSpcAddr(rom, 0x3e00, 0);
m_ofs = b - rom.data() + spclen;
m_ofs = b - rom.mutable_data() + spclen;
sndinsts = (ZeldaSfxInstrument *)malloc(spclen);
memcpy(sndinsts, b, spclen);
numsndinst = spclen / 9;
@@ -784,7 +784,7 @@ short Tracker::SaveSpcCommand(Rom &rom, short num, short songtime,
int Tracker::WriteSpcData(Rom &rom, void *buf, int len, int addr, int spc,
int limit) {
unsigned char *rom_data = rom.data();
unsigned char *rom_data = rom.mutable_data();
if (!len) return addr;
@@ -872,7 +872,7 @@ void Tracker::SaveSongs(Rom &rom) {
// set it so the music has not been modified. (reset the status)
m_modf = 0;
rom_data = rom.data();
rom_data = rom.mutable_data();
// SetCursor(wait_cursor);
@@ -1240,7 +1240,7 @@ void Tracker::SaveSongs(Rom &rom) {
m_modf = 1;
return;
}
memcpy(rom.data() + n, stbl->buf, stbl->len);
memcpy(rom.mutable_data() + n, stbl->buf, stbl->len);
n += stbl->len;
free(stbl->relocs);
free(stbl->buf);
@@ -1248,13 +1248,13 @@ void Tracker::SaveSongs(Rom &rom) {
ssblt[i] = 0;
}
if (n > l + 4) {
*(short *)(rom.data() + l) = n - l - 4;
*(short *)(rom.data() + l + 2) = o ? bank_lwr[k] : 0xd000;
*(short *)(rom.mutable_data() + l) = n - l - 4;
*(short *)(rom.mutable_data() + l + 2) = o ? bank_lwr[k] : 0xd000;
l = n;
}
}
*(short *)(rom.data() + l) = 0;
*(short *)(rom.data() + l + 2) = 0x800;
*(short *)(rom.mutable_data() + l) = 0;
*(short *)(rom.mutable_data() + l + 2) = 0x800;
if (k == 1) m = l + 4;
}
free(ssblt);

View File

@@ -74,7 +74,7 @@ absl::Status Inventory::Create() {
absl::Status Inventory::BuildTileset() {
tilesheets_.reserve(6 * 0x2000);
for (int i = 0; i < 6 * 0x2000; i++) tilesheets_.push_back(0xFF);
ASSIGN_OR_RETURN(tilesheets_, rom()->Load2BppGraphics())
ASSIGN_OR_RETURN(tilesheets_, Load2BppGraphics(*rom()))
std::vector<uint8_t> test;
for (int i = 0; i < 0x4000; i++) {
test_.push_back(tilesheets_[i]);