示例#1
0
            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));
            }
示例#2
0
        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();
        }
示例#3
0
 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);
                    }
                }
            }
        }