Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 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);
             }
         }
     }
 }
Ejemplo n.º 3
0
 public void Export(Core.BinaryFileWriter writer)
 {
     for (int i = 0; i < Count; i++)
     {
         m_TileSets[i].Export(writer);
     }
 }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        public void Serialize(Core.BinaryFileWriter writer, int version)
        {
            writer.Write(m_Tile);
            writer.Write(m_Attributes);

            if (version >= 2)
            {
                writer.Write(m_TilePage);
            }
        }
Ejemplo n.º 6
0
 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);
     }
 }
Ejemplo n.º 7
0
 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);
         }
     }
 }
Ejemplo n.º 8
0
 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);
     }
 }
Ejemplo n.º 9
0
 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]);
     }
 }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
 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();
 }
Ejemplo n.º 12
0
 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");
 }
Ejemplo n.º 13
0
 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]);
     }
 }
Ejemplo n.º 14
0
 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]);
         }
     }
 }
Ejemplo n.º 15
0
        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);
            }
        }
Ejemplo n.º 16
0
 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);
         }
     }
 }
Ejemplo n.º 17
0
 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);
         }
     }
 }
Ejemplo n.º 18
0
        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);
            }
        }
Ejemplo n.º 19
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 20
0
 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);
             }
         }
     }
 }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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(", ");
                }
            }
        }
Ejemplo n.º 23
0
 public void Serialize(Core.BinaryFileWriter writer)
 {
     writer.Write((byte)0);
 }