comments on mrdrilrg (nw)
This commit is contained in:
parent
d8df2235f4
commit
7e776913b5
@ -19,7 +19,7 @@ game (8E), and it's always stored spanning an integer number of NAND blocks
|
|||||||
0x200 bytes). The first part of the encrypted data is stored at about the end
|
0x200 bytes). The first part of the encrypted data is stored at about the end
|
||||||
of the ROM, and apparently all the blocks in that area are processed in
|
of the ROM, and apparently all the blocks in that area are processed in
|
||||||
reverse order (first the one nearest the end, then the second nearest, etc);
|
reverse order (first the one nearest the end, then the second nearest, etc);
|
||||||
the second part goes inmediately after it from a logic perspective, but it's
|
the second part goes immediately after it from a logic perspective, but it's
|
||||||
physically located at the area starting at 0x28000 in the ROM. Games, after
|
physically located at the area starting at 0x28000 in the ROM. Games, after
|
||||||
some bootup code has been executed, will copy the encrypted content from
|
some bootup code has been executed, will copy the encrypted content from
|
||||||
the NANDs to RAM, moment at which the decryption is triggered. Physical locations
|
the NANDs to RAM, moment at which the decryption is triggered. Physical locations
|
||||||
@ -32,6 +32,7 @@ chocovdr [fdc000,1000000) [28000,1dc000) 80010000
|
|||||||
gamshara [fdc000,1000000) [28000,144000) 80010000
|
gamshara [fdc000,1000000) [28000,144000) 80010000
|
||||||
knpuzzle [fc8000,fcc000) [28000,40c000) 80030000
|
knpuzzle [fc8000,fcc000) [28000,40c000) 80030000
|
||||||
konotako [fdc000,1000000) [28000,b4000) 80010000
|
konotako [fdc000,1000000) [28000,b4000) 80010000
|
||||||
|
mrdrilrg [fd4000,fd8000) [28000,3dc000) 80030000
|
||||||
nflclsfb [fdc000,1000000) [28000,204000) 80010000
|
nflclsfb [fdc000,1000000) [28000,204000) 80010000
|
||||||
startrgn [fdc000,1000000) [28000,b4000) 80010000
|
startrgn [fdc000,1000000) [28000,b4000) 80010000
|
||||||
|
|
||||||
@ -90,8 +91,8 @@ the implementation accordingly.
|
|||||||
|
|
||||||
Observing the linear equations, there is a keen difference between bits using
|
Observing the linear equations, there is a keen difference between bits using
|
||||||
just a bunch of previous bits, and others using much more bits from more words;
|
just a bunch of previous bits, and others using much more bits from more words;
|
||||||
simplyfing the latter ones could be handy, and probably closer to what the
|
simplifying the latter ones could be handy, and probably closer to what the
|
||||||
hardware is doing. Two possible simplyfications could be:
|
hardware is doing. Two possible simplifications could be:
|
||||||
A) The linear relations are creating lots of identities involving the bits
|
A) The linear relations are creating lots of identities involving the bits
|
||||||
from the sequence; they could be exploited to simplify the equations (but
|
from the sequence; they could be exploited to simplify the equations (but
|
||||||
only when the implementation be stable, to avoid duplicating work).
|
only when the implementation be stable, to avoid duplicating work).
|
||||||
@ -201,6 +202,13 @@ int gf2_reducer::gf2_reduce(UINT64 num)const
|
|||||||
|
|
||||||
// game-specific logic
|
// game-specific logic
|
||||||
|
|
||||||
|
// static UINT16 mrdrilrg_nonlinear_calc(UINT64 previous_cipherwords, UINT64 previous_plainwords, const gf2_reducer& reducer)
|
||||||
|
// {
|
||||||
|
// UINT64 previous_masks = previous_cipherwords ^ previous_plainwords;
|
||||||
|
// return (reducer.gf2_reduce(0x00000a00a305c826ull & previousMasks) & reducer.gf2_reduce(0x0000011800020000ull & previousMasks)) * 0x0011;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
static UINT16 chocovdr_nonlinear_calc(UINT64 previous_cipherwords, UINT64 previous_plainwords, const gf2_reducer& reducer)
|
static UINT16 chocovdr_nonlinear_calc(UINT64 previous_cipherwords, UINT64 previous_plainwords, const gf2_reducer& reducer)
|
||||||
{
|
{
|
||||||
UINT64 previous_masks = previous_cipherwords ^ previous_plainwords;
|
UINT64 previous_masks = previous_cipherwords ^ previous_plainwords;
|
||||||
|
Loading…
Reference in New Issue
Block a user