Ejemplo n.º 1
0
        private static Dictionary <ushort, MessageEntry> GetMessageTable()
        {
            Dictionary <ushort, MessageEntry> messageTable = new Dictionary <ushort, MessageEntry>();

            int    fileIndex   = RomUtils.GetFileIndexForWriting(MESSAGE_TABLE_ADDRESS);
            MMFile file        = MMFileList[fileIndex];
            int    baseAddress = MESSAGE_TABLE_ADDRESS - file.Addr;
            var    data        = file.Data;

            while (true)
            {
                ushort textId = ReadWriteUtils.Arr_ReadU16(data, baseAddress);
                if (textId >= 0xFFFD) //This id is still valid, but hard to determine it's size
                {
                    break;
                }

                int address     = ReadWriteUtils.Arr_ReadS32(data, baseAddress + 4) & 0xFFFFFF;
                int addressNext = ReadWriteUtils.Arr_ReadS32(data, baseAddress + 12) & 0xFFFFFF;

                MessageEntry message = new MessageEntry()
                {
                    Id      = textId,
                    Address = address,
                    Size    = addressNext - address
                };
                messageTable.Add(textId, message);
                baseAddress += 8;
            }

            return(messageTable);
        }
Ejemplo n.º 2
0
        private static List <int> ReadMapObjects(byte[] Map, int Addr, int Count)
        {
            List <int> Objects = new List <int>();

            for (int i = 0; i < Count; i++)
            {
                Objects.Add(ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 2)));
            }
            return(Objects);
        }
Ejemplo n.º 3
0
        private static List <Actor> ReadMapActors(byte[] Map, int Addr, int Count)
        {
            List <Actor> Actors = new List <Actor>();

            for (int i = 0; i < Count; i++)
            {
                Actor  a  = new Actor();
                ushort an = ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16));
                a.m   = an & 0xF000;
                a.n   = an & 0x0FFF;
                a.p.x = (short)ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 2);
                a.p.y = (short)ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 4);
                a.p.z = (short)ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 6);
                a.r.x = (short)ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 8);
                a.r.y = (short)ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 10);
                a.r.z = (short)ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 12);
                a.v   = ReadWriteUtils.Arr_ReadU16(Map, Addr + (i * 16) + 14);
                Actors.Add(a);
            }
            return(Actors);
        }