//read firmware settings void load_PersonalData() { u32 src, count0, count1; // Find the settings area readFirmware(0x20, &src, 4); src = (src & 0xFFFF)*8; // Pick the most recent copy readFirmware(src+0x70, &count0, 4); readFirmware(src+0x170, &count1, 4); if ((u16)count0 < (u16)count1) src += 0x100; readFirmware(src, PersonalData, 0x80); if (swiCRC16(0xFFFF, PersonalData, 0x70) != ((u16*)PersonalData)[0x72/2]) //invalid / corrupt? readFirmware(src^0x100, PersonalData, 0x80); //try the older copy }