public void SaveProperties() { romFile.Seek(romAddress); romFile.WriteByte((byte)OffsetY); romFile.WriteByte((byte)OffsetX); int tmp = (Tile & 0x3FF); tmp |= (FlipX ? 1 << 10 : 0); tmp |= (FlipY ? 1 << 11 : 0); tmp |= ((Size & 3) << 12); tmp |= ((Shape & 3) << 14); romFile.WriteByte((byte)(tmp & 0xFF)); romFile.WriteByte((byte)((tmp >> 8) & 0xFF)); }
private void cmdSwap_Click(object sender, EventArgs e) { int e1 = cboEntry1.SelectedIndex; int e2 = cboEntry2.SelectedIndex; if (e1 == e2) { btnCancel_Click(null, null); return; } // Swap the sprite info pointers int pointer1 = rom.ReadWord( ROMInfo.sprStartAddress[cboBank1.SelectedIndex] + 4 + (e1 * 4)); int pointer2 = rom.ReadWord( ROMInfo.sprStartAddress[cboBank2.SelectedIndex] + 4 + (e2 * 4)); rom.WriteWord( ROMInfo.sprStartAddress[cboBank1.SelectedIndex] + 4 + (e1 * 4), pointer2); rom.WriteWord( ROMInfo.sprStartAddress[cboBank2.SelectedIndex] + 4 + (e2 * 4), pointer1); // Swap the graphics pointers pointer1 = rom.ReadWord( ROMInfo.gfxStartAddress[cboBank1.SelectedIndex] + 4 + (e1 * 4)); pointer2 = rom.ReadWord( ROMInfo.gfxStartAddress[cboBank2.SelectedIndex] + 4 + (e2 * 4)); rom.WriteWord( ROMInfo.gfxStartAddress[cboBank1.SelectedIndex] + 4 + (e1 * 4), pointer2); rom.WriteWord( ROMInfo.gfxStartAddress[cboBank2.SelectedIndex] + 4 + (e2 * 4), pointer1); // Swap the palette numbers byte b1 = (byte)rom.ReadByte(ROMInfo.palInfoAddress + (e1 * 12)); byte b2 = (byte)rom.ReadByte(ROMInfo.palInfoAddress + (e2 * 12)); rom.WriteByte(ROMInfo.palInfoAddress + (e1 * 12), (byte)((b1 & 0xF0) | (b2 & 0xF))); rom.WriteByte(ROMInfo.palInfoAddress + (e2 * 12), (byte)((b2 & 0xF0) | (b1 & 0xF))); this.Close(); }
public static void SetPalette(ROMHandler romFile, int entry, byte pal) { if (entry <= 0xFF || entry >= 0x26C) { int address = ROMInfo.palInfoAddress + (entry * 12); byte palSubBank = (byte) (romFile.ReadByte(address) & 0xF0); palSubBank |= (byte)(pal & 0xF); romFile.WriteByte(address, palSubBank); } }
// Write the tile cache back to the ROM file public void ApplyChanges() { byte[,] pixels; byte tmp; foreach (KeyValuePair <int, byte[, ]> kv in tileCache) { pixels = kv.Value; rom.Seek(startPointer + (kv.Key << 5)); for (int y = 0; y < 8; y++) { for (int x = 0; x < 8; x += 2) { tmp = (byte)(pixels[y, x] + (pixels[y, x + 1] << 4)); rom.WriteByte(tmp); } } } }