public void Serialize(Core.BinaryFileWriter writer) { int length = 0; writer.Write(c_SerializeIdentifier); writer.Write((int)0); // version for (int i = 0; i < 4; i++) { writer.Write((int)m_Chunks[i]); } writer.Write((byte)m_Tileset); writer.Write((int)m_Actors.Count); length = 0; for (int i = 0; i < m_Actors.Count; i++) { length += m_Actors[i].ByteLength; } writer.Write((byte)length); for (int i = 0; i < m_Actors.Count; i++) { m_Actors[i].Serialize(writer); } writer.Write((int)m_Eggs.Count); for (int i = 0; i < m_Eggs.Count; i++) { m_Eggs[i].Serialize(writer); } }
public void ExportMetaSprites(Core.BinaryFileWriter writer, Tuple <byte, byte>[] tile_transform_table) { if (m_StandardFrames != null) { for (int i = 0; i < m_StandardFrames.Length; i++) { for (int j = 0; j < m_StandardFrames[i].Length; j++) { m_StandardFrames[i][j].Export(writer, tile_transform_table); } } } if (m_ExtendedFrames != null) { for (int i = 0; i < m_ExtendedFrames.Length; i++) { for (int j = 0; j < m_ExtendedFrames[i].Length; j++) { m_ExtendedFrames[i][j].Export(writer, tile_transform_table); } } } if (m_ExtraFrames != null) { for (int i = 0; i < m_ExtraFrames.Length; i++) { for (int j = 0; j < m_ExtraFrames[i].Length; j++) { m_ExtraFrames[i][j].Export(writer, tile_transform_table); } } } }
public void Export(Core.BinaryFileWriter writer) { for (int i = 0; i < Count; i++) { m_TileSets[i].Export(writer); } }
public void Export(Core.BinaryFileWriter pointers, Core.BinaryFileWriter data, ref int bank_offset, ref int ptr_offset) { int bank_size = 8192; // note that constants on line 'int pointer =' also reflect this value. int ptr_begin = 0x8000; List <byte[]> superchunk_data = new List <byte[]>(); for (int i = 0; i < Count; i++) { superchunk_data.Add(m_SC[i].Export()); } for (int i = 0; i < Count; i++) { if (ptr_offset + superchunk_data[i].Length >= bank_size) { int pad = (bank_size - ptr_offset); for (int j = 0; j < pad; j++) { data.Write((byte)0xAA); } ptr_offset = 0; bank_offset += 1; } int pointer = ptr_begin + (ptr_offset & 0x1FFF) + ((bank_offset & 0x0007) << 13); pointers.Write((ushort)pointer); for (int j = 0; j < superchunk_data[i].Length; j++) { data.Write((byte)superchunk_data[i][j]); } ptr_offset += superchunk_data[i].Length; } }
public void Serialize(Core.BinaryFileWriter writer, int version) { writer.Write(m_Tile); writer.Write(m_Attributes); if (version >= 2) { writer.Write(m_TilePage); } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write(c_SerializeIdentifier); writer.Write((int)0); // version writer.Write((int)m_Maps.Count); for (int i = 0; i < m_Maps.Count; i++) { m_Maps[i].Serialize(writer); } }
public void Export(Core.BinaryFileWriter writer) { for (int i = 0; i < Count; i++) { for (int j = 0; j < 64; j++) { byte b = (byte)m_Chunks[i][j]; writer.Write((byte)b); } } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write(c_SerializeIdentifier); writer.Write((int)1); // version writer.Write((int)m_Tileset); writer.Write((int)Size); for (int i = 0; i < WidthInSuperChunks * HeightInSuperChunks; i++) { m_SC[i].Serialize(writer); } }
public void Export(Core.BinaryFileWriter writer) { for (int i = 0; i < Count; i++) { byte[] data = this[i]; writer.Write(data[0]); writer.Write(data[1]); writer.Write(data[2]); writer.Write(data[3]); } }
public void Serialize(Core.BinaryFileWriter writer) { int version = 1; writer.Write(c_SerializeIdentifier); writer.Write((int)version); // version writer.Write(Count); for (int i = 0; i < Count; i++) { m_Sprites[i].Serialize(writer, version); } }
public void Serialize(string path) { Core.BinaryFileWriter writer = new Core.BinaryFileWriter(path, false); writer.Write(c_SerializeIdentifier); writer.Write((int)0); // version m_Palettes.Serialize(writer); m_TileGfx.Serialize(writer); m_TileSets.Serialize(writer); m_Chunks.Serialize(writer); m_Maps.Serialize(writer); m_Sprites.Serialize(writer); writer.Close(); }
public void Export(Core.BinaryFileWriter writer, Tuple <byte, byte>[] tile_transform_table) { for (int i = 0; i < tile_transform_table.Length; i++) { if (tile_transform_table[i].Item1 == Tile && tile_transform_table[i].Item2 == TilePage) { writer.Write((byte)i); writer.Write((byte)m_Attributes); return; } } throw new Exception("SpriteMetaTileFrame:Export() - did not find valid entry in tile_transform_table"); }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write(c_SerializeIdentifier); writer.Write((int)0); // version writer.Write(Count); for (int i = 0; i < Count; i++) { byte[] data = this[i]; writer.Write(data[0]); writer.Write(data[1]); writer.Write(data[2]); writer.Write(data[3]); } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write(c_SerializeIdentifier); writer.Write((int)0); // version writer.Write(PageCount); for (int i = 0; i < PageCount; i++) { byte[] data = m_TileGfxPages[i]; for (int j = 0; j < 4096; j++) { writer.Write(data[j]); } } }
public void Export(Core.BinaryFileWriter headers, Core.BinaryFileWriter pointers, Core.BinaryFileWriter data) { int bank_offset = 1; // offset to the first bank that contains superchunk data for this map int ptr_offset = 0x0200; // offset to the first available byte in the first superchunk available for data. int bank_first = 0; // should be zero when passed to Map.Export(). for (int i = 0; i < m_Maps.Count; i++) { headers.Write((byte)i); headers.Write((byte)bank_offset); headers.Write((byte)m_Maps[i].Tileset); headers.Write((byte)0); m_Maps[i].Export(pointers, data, ref bank_first, ref ptr_offset); } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write((byte)m_Location); writer.Write((ushort)m_SaveIndex); writer.Write((byte)m_TypeLo); writer.Write((byte)m_TypeHi); if (IsContainer) { writer.Write((byte)ByteLength - 5); writer.Write((byte)m_Contents.Count); for (int i = 0; i < m_Contents.Count; i++) { m_Contents[i].Serialize(writer); } } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write(c_SerializeIdentifier); writer.Write((int)0); // version writer.Write(Count); for (int i = 0; i < Count; i++) { writer.Write((string)m_Chunks[i].Name); writer.Write((int)m_Chunks[i].Tileset); for (int j = 0; j < 64; j++) { byte b = (byte)m_Chunks[i][j]; writer.Write((byte)b); } } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write((byte)ByteLength); writer.Write((byte)m_Location); writer.Write((byte)m_Conditions.Count); for (int i = 0; i < m_Conditions.Count; i++) { m_Conditions[i].Serialize(writer); } writer.Write((byte)m_Effects.Count); for (int i = 0; i < m_Effects.Count; i++) { m_Effects[i].Serialize(writer); } }
public void Export(Core.BinaryFileWriter writer) { for (int i = 0; i < PageCount; i++) { byte[] data = m_TileGfxPages[i]; for (int j = 0; j < 256; j++) { byte[] tile = new byte[16]; for (int k = 0; k < 16; k++) { tile[k] = data[j * 16 + k]; } for (int k = 0; k < 8; k++) { byte export = (byte)( ((tile[(k * 2)] & 0x01) != 0 ? 0x80 : 0) | ((tile[(k * 2)] & 0x04) != 0 ? 0x40 : 0) | ((tile[(k * 2)] & 0x10) != 0 ? 0x20 : 0) | ((tile[(k * 2)] & 0x40) != 0 ? 0x10 : 0) | ((tile[(k * 2) + 1] & 0x01) != 0 ? 0x08 : 0) | ((tile[(k * 2) + 1] & 0x04) != 0 ? 0x04 : 0) | ((tile[(k * 2) + 1] & 0x10) != 0 ? 0x02 : 0) | ((tile[(k * 2) + 1] & 0x40) != 0 ? 0x01 : 0) ); writer.Write(export); } for (int k = 0; k < 8; k++) { byte export = (byte)( ((tile[(k * 2)] & 0x02) != 0 ? 0x80 : 0) | ((tile[(k * 2)] & 0x08) != 0 ? 0x40 : 0) | ((tile[(k * 2)] & 0x20) != 0 ? 0x20 : 0) | ((tile[(k * 2)] & 0x80) != 0 ? 0x10 : 0) | ((tile[(k * 2) + 1] & 0x02) != 0 ? 0x08 : 0) | ((tile[(k * 2) + 1] & 0x08) != 0 ? 0x04 : 0) | ((tile[(k * 2) + 1] & 0x20) != 0 ? 0x02 : 0) | ((tile[(k * 2) + 1] & 0x80) != 0 ? 0x01 : 0) ); writer.Write(export); } } } }
public void Serialize(Core.BinaryFileWriter writer, int version) { writer.Write((string)Name); writer.Write((byte)m_Data); writer.Write((byte)m_Tile); if (m_StandardFrames != null) { for (int i = 0; i < m_StandardFrames.Length; i++) { for (int j = 0; j < m_StandardFrames[i].Length; j++) { m_StandardFrames[i][j].Serialize(writer, version); } } } if (m_ExtendedFrames != null) { for (int i = 0; i < m_ExtendedFrames.Length; i++) { for (int j = 0; j < m_ExtendedFrames[i].Length; j++) { m_ExtendedFrames[i][j].Serialize(writer, version); } } } if (m_ExtraFrames != null) { for (int i = 0; i < m_ExtraFrames.Length; i++) { for (int j = 0; j < m_ExtraFrames[i].Length; j++) { m_ExtraFrames[i][j].Serialize(writer, version); } } } }
public void Export(string directory) { Core.BinaryFileWriter writer; writer = new Core.BinaryFileWriter(directory + "palettes.dat", false); m_Palettes.Export(writer); writer.Close(); writer = new Core.BinaryFileWriter(directory + "tilegfx.dat", false); m_TileGfx.Export(writer); writer.Close(); writer = new Core.BinaryFileWriter(directory + "tilesets.dat", false); m_TileSets.Export(writer); writer.Close(); writer = new Core.BinaryFileWriter(directory + "chunks.dat", false); m_Chunks.Export(writer); writer.Close(); Core.BinaryFileWriter headers = new Core.BinaryFileWriter(directory + "map_hdrs.dat", false); Core.BinaryFileWriter pointers = new Core.BinaryFileWriter(directory + "map_ptrs.dat", false); Core.BinaryFileWriter data = new Core.BinaryFileWriter(directory + "map_data.dat", false); m_Maps.Export(headers, pointers, data); headers.Close(); pointers.Close(); data.Close(); headers = new Core.BinaryFileWriter(directory + "spr_hdrs.asm", false); data = new Core.BinaryFileWriter(directory + "spr_data.dat", false); m_Sprites.Export(0xA000, 0x1000, 32, headers, data); // constants relate to data placement within banks. see Banks.txt headers.Close(); data.Close(); System.Windows.Forms.MessageBox.Show("Export to " + directory); }
public void Export(int tiledata_base_offset, int tiledata_max_size, int header_count, Core.BinaryFileWriter header_writer, Core.BinaryFileWriter tiledata_writer) { int maxTileDataOffset = tiledata_base_offset + tiledata_max_size; int currentTiledataOffset = tiledata_base_offset; byte[] header_data = new byte[Count * 4]; for (int i = 0; i < Count; i++) { Tuple <byte, byte>[] tile_transform_table = m_Sprites[i].TileTransformTable; ushort tiledataOffset = CreateTileDataOffset(ref currentTiledataOffset, m_Sprites[i], tile_transform_table, maxTileDataOffset); // sprite header data: 4b per sprite. REFERENCE ref.data\Engines\Sprite Data.txt byte dataByte = (byte)m_Sprites[i].DataByte; byte tileByte = (byte)(createTileDataByte(tile_transform_table) | m_Sprites[i].TileByte); header_data[i * 4 + 0] = ((byte)(tiledataOffset & 0x00ff)); header_data[i * 4 + 1] = ((byte)((tiledataOffset & 0xff00) >> 8)); header_data[i * 4 + 2] = (dataByte); // wTss xfff header_data[i * 4 + 3] = (tileByte); // yxMM cccc // metasprite/chr tile index data. m_Sprites[i].ExportMetaSprites(tiledata_writer, tile_transform_table); for (int j = 0; j < tile_transform_table.Length; j++) { tiledata_writer.Write((byte)tile_transform_table[j].Item1); // tile tiledata_writer.Write((byte)tile_transform_table[j].Item2); // page } } header_writer.WriteString("; Sprite Header data. Generated by eightbit.\n"); header_writer.WriteString("; Format described in Sprite Data.txt\n\n"); header_writer.WriteString("SpriteHdrs_Address:\n"); for (int i = 0; i < header_count; i++) { if (i % 8 == 0) { header_writer.WriteString(" .byte "); } byte data = (i < Count) ? header_data[i * 4 + 0] : (byte)0; header_writer.WriteString(string.Format("${0:X2}", data)); if (i % 8 == 7) { header_writer.WriteString("\n"); } else { header_writer.WriteString(", "); } } header_writer.WriteString("SpriteHdrs_AddressHi:\n"); for (int i = 0; i < header_count; i++) { if (i % 8 == 0) { header_writer.WriteString(" .byte "); } byte data = (i < Count) ? header_data[i * 4 + 1] : (byte)0; header_writer.WriteString(string.Format("${0:X2}", data)); if (i % 8 == 7) { header_writer.WriteString("\n"); } else { header_writer.WriteString(", "); } } header_writer.WriteString("SpriteHdrs_Data:\n"); for (int i = 0; i < header_count; i++) { if (i % 8 == 0) { header_writer.WriteString(" .byte "); } byte data = (i < Count) ? header_data[i * 4 + 2] : (byte)0; header_writer.WriteString(string.Format("${0:X2}", data)); if (i % 8 == 7) { header_writer.WriteString("\n"); } else { header_writer.WriteString(", "); } } header_writer.WriteString("SpriteHdrs_Tile:\n"); for (int i = 0; i < header_count; i++) { if (i % 8 == 0) { header_writer.WriteString(" .byte "); } byte data = (i < Count) ? header_data[i * 4 + 3] : (byte)0; header_writer.WriteString(string.Format("${0:X2}", data)); if (i % 8 == 7) { header_writer.WriteString("\n"); } else { header_writer.WriteString(", "); } } }
public void Serialize(Core.BinaryFileWriter writer) { writer.Write((byte)0); }