Fatal Fury 2

Protection
Uses as a protection chip.

If one of the multiple protection checks fail, a flag is silently set. The game runs correctly during the first match, but the opponent in the second match will not be able to get hit, and the timer in next matches will be set to 2 seconds.

If this happens on a real system, the cartridge might be a bootleg or simply defective.

Protection code
Uses lots of bogus addresses to confuse hackers.

Load C: 00110011001100110011001100110011 ($33333333)

PRO-CT0 serialize: 00110011 3 00110011 2 00110011 1 00110011 0

GAD/GBD to D7~D0 remap (no effect):

00110011 1 00110011 0 00110011 3 00110011 2 00FF00FF ->

Load C: 00110110011010100000011000011010 ($366A061A)

PRO-CT0 serialize: 00110110 3 01101010 2 00000110 1 00011010 0

GAD/GBD to D7~D0 remap:

00000110 1 00011010 0 00110110 3 01101010 2 01365AF0 ->

Load C: 00100100100000010100001000011000 ($24814218)

PRO-CT0 serialize: 00100100 3 10000001 2 01000010 1 00011000 0

GAD/GBD to D7~D0 remap:

01000010 1 00011000 0 00100100 3 10000001 2 18244281 <-

Load C: 00110110011010100000011000011010 ($366A061A)

PRO-CT0 serialize: 00110110 3 01101010 2 00000110 1 00011010 0

GAD/GBD to D7~D0 remap:

00000110 1 00011010 0 00110110 3 01101010 2 01365AF0 nibble swap: 1063A50F ->

Load C: 00100100100000010100001000011000 ($24814218)

PRO-CT0 serialize: 00100100 3 10000001 2 01000010 1 00011000 0

GAD/GBD to D7~D0 remap:

01000010 1 00011000 0 00100100 3 10000001 2 18244281 nibble swap: <- 81422418