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