// Here's a rewrite of a function in RomTransfer.prc
// Maybe someone will care enough to shove it in there =)

static Boolean HandspringHack (UInt32 romSize, char* romStart)
{
 int i;
 struct hack
 {
  UInt32 resetVector;
  UInt16 checksumValue;
 } hacks[] =
 {
  { 0x10C032F2, 0xFB2C }, // small ROM - masked ROM build
  { 0x10C6B6C8, 0x175C }, // big ROM - masked ROM build
  { 0x10C032F2, 0x2A87 }, // small ROM - OTP ROM build
  { 0x10C6B6C8, 0xA843 }, // big ROM - OTP ROM build
  { 0x10C032F2, 0xC8B7 }, // small ROM - Visor rev b
  { 0x10C6B6E2, 0x831D }, // big ROM - Visor rev b
  { 0x100032F2, 0x7F66 }, // Japanese
  { 0x100C2C06, 0x497A }, // Japanese
  { 0x100032F2, 0xEA13 }, // German
  { 0x1006BF42, 0x0495 }, // German
  { 0x100032F2, 0xA20C }, // French
  { 0x1006BC0A, 0x22A1 }, // French
  { 0x100032F2, 0xA34E }, // Spanish
  { 0x1006BC88, 0x62BB }, // Spanish
  { 0x100032F2, 0x70ad }, // Italian
  { 0x1006BD12, 0xE92F }, // Italian
 };

 CardHeaderType* card = (CardHeaderType*) romStart;

 if (romSize != 0x1000)
  return false;

 if (StrCompare ((char*) card->manuf, "Handspring, Inc.") != 0)
  return false;

 for (i = 0; i < sizeof(hacks) / sizeof(struct hack); i++)
 {
  if (card->resetVector == hacks[i].resetVector &&
card->checksumValue == hacks[i].checksumValue)
   return true;
 }

 return false;
}



--
Adam Wozniak                     Chief Architect
                                 Surveyor Corporation
[EMAIL PROTECTED]                4548 Broad Street
[EMAIL PROTECTED]        San Luis Obispo, CA 93401




-- 
For information on using the ACCESS Developer Forums, or to unsubscribe, please 
see http://www.access-company.com/developers/forums/

Reply via email to