public void InitializeTable() { Dictionary <ushort, MessageEntry> messageTable = new Dictionary <ushort, MessageEntry>(); int fileIndex = RomUtils.GetFileIndexForWriting(MESSAGE_TABLE_ADDRESS); MMFile file = RomData.MMFileList[fileIndex]; int code_baseAddr = MESSAGE_TABLE_ADDRESS - file.Addr; var code_data = file.Data; fileIndex = RomUtils.GetFileIndexForWriting(MESSAGE_DATA_ADDRESS); file = RomData.MMFileList[fileIndex]; var message_data = file.Data; while (true) { ushort textId = ReadWriteUtils.Arr_ReadU16(code_data, code_baseAddr); if (textId >= 0xFFFF) { break; } int address = ReadWriteUtils.Arr_ReadS32(code_data, code_baseAddr + 4) & 0xFFFFFF; byte[] header = new byte[11]; Array.Copy(message_data, address, header, 0, 11); int cur = address + 11 - 1; string message = ""; do { cur++; message += (char)message_data[cur]; }while (message_data[cur] != 0xBF); MessageEntry messageEntry = new MessageEntry() { Id = textId, Header = header, Message = message }; messageTable.Add(textId, messageEntry); code_baseAddr += 8; } messages = messageTable; }