ReC98/th03/formats/scorecry.hpp

20 lines
447 B
C++

/// Score data file encryption and decryption algorithms
// Encrypts backwards.
#define scoredat_encode_byte_at(p, feedback, key1, key2) { \
p[0] = (p[0] - (key1 + feedback)); \
feedback = p[0]; \
_AL = key2; \
__asm { ror feedback, 3 } \
feedback ^= _AL; \
}
// Decrypts forwards.
#define scoredat_decode_byte_at(p, tmp, key1, key2) { \
tmp = p[1]; \
_AL = key2; \
__asm { ror tmp, 3 } \
tmp ^= _AL; \
p[0] = (key1 + tmp + p[0]); \
}