|
Subject: [stella] A7800 From: Keith W Gerdes <kwg@xxxxxxxxxxxxxxxxxx> Date: Wed, 9 Dec 1998 09:39:54 -0600 (CST) |
Thanks for the feedback!
My math education seems pretty inadequate about
now....but I'm willing to learn by doing something! :-)
----
> What hashing algorithm does the 7800 use when
> calculating the checksum of the cartridge data
> to compare it to the encrypted hash upon decryption?
That would be MungeCart() in CRYPT78.
// start page
p = A_mem[0xFFF9] & 0xF0;
// copy cart data $FF00-$FFFF to $1800, skipping X plus one byte
for (i=0; i<=255; i++)
if ( (i >= 0x80) && (i <= 0xF8) )
// skip X ($FF80-$FFF7) plus one ($FFF8)
A_mem[0x1800+i] = 0;
else
// copy $FF00-$FF7F and $FFF9-$FFFF
A_mem[0x1800+i] = A_mem[0xFF00+i];
a = 0;
carry = 1;
// process each page from $p000 to $FEFF
for (i=p; i<=0xFE; i++)
{
X_23FF(i,0);
carry = 0;
}
carry = 1;
ROLWork();
ROLWork();
// process each page from $FExx to $p0xx
for (i=0xFE; i>=p; i--)
{
X_23FF(i,8);
carry = 1;
}
// create Y
for (i=0; i<=0x77; i++)
A_mem[0x1A00+i] = A_mem[0x1800+i] ^ A_mem[0x1800+i+0x50] ^
A_mem[0x1800+i+0x88];
// for comparison to MungeChecksum() Y
A_mem[0x1A00] = A_mem[0x1A00] & 7;
A_mem[0x1A04] = 0;
--
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [stella] A7800, Paul Hart | Thread | Re: [stella] A7800, Bob Colbert |
| Re: [stella] A7800, jvmatthe | Date | Re: [stella] A7800, Bob Colbert |
| Month |