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);
        }