Fatal Fury 2

From NeoGeo Development Wiki
Jump to: navigation, search
General Info
USA Title Fatal Fury 2
Japanese Title Garou Densetsu 2 - arata-naru tatakai

(餓狼伝説 2)

European Title Fatal Fury 2
NGH 047
Developer SNK
Editor SNK
Meg count 106
TCRF page None

MVS Release

Japan.pngUsa.png
Release date 1992
PROG Board PROG-G2
CHA Board CHA42G-1
Protection Chip none
MAME romset fatfury2

AES Release

Japan.pngUsa.png
Release date 05/03/93
PROG Board Unknown
CHA Board Unknown
Protection Chip Unknown
MAME romset Unknown

CD Release

Japan.pngUsa.png
Release date 09/09/94


Protection

Uses PRO-CT0 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.

00296A:
	move	#$5555,$255552		;LOAD
	move.b	$255551,$10AC2E		;Read GAD/GBD: $FF
	move.b	d0,$255551		;Clock
	move.b	$2FFFF1,$10AC2F		;Read GAD/GBD: $00
	move.b	d0,$2FFFF1		;Clock
	move.b	$200001,$10AC30		;Read GAD/GBD: $FF
	move.b	d0,$2FF001		;Clock
	move.b	$2FF001,$10AC31		;Read GAD/GBD: $00
	cmpi.l	#$FF00FF00,$10AC2E	;Compare reads
	beq	+
	move	#$3328,24580(a5)	;Lock up flag ?
+:
	rts
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 ->


012530:
	move	#$1234,$256782		;LOAD C $366A061A (00110110 01101010 00000110 00011010)
	move.b	$236001,18642(a5)	;Read GAD/GBD
	move.b	#$20,$236001		;Clock
	move.b	$236001,18643(a5)	;Read GAD/GBD
	move.b	#$20,$236001		;Clock
	move.b	$236001,18644(a5)	;Read GAD/GBD
	move.b	#$20,$236001		;Clock
	move.b	$236001,18645(a5)	;Read GAD/GBD
	move.b	#$20,$236001		;Clock
	move.l	18642(a5),d0
	subi.l	#$F05A3601,d0		;Compare reads
	rts
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 ->


	move	#$1824,$242812		;LOAD C
	move.b	$236009,18642(a5)	;Read GAD/GBD with H (reverse)
	move.b	#$20,$236009		;Clock
	move.b	$236009,18643(a5)	;Read GAD/GBD with H (reverse)
	move.b	#$20,$236009		;Clock
	move.b	$236009,18644(a5)	;Read GAD/GBD with H (reverse)
	move.b	#$20,$236009		;Clock
	move.b	$236009,18645(a5)	;Read GAD/GBD with H (reverse)
	move.b	#$20,$236009		;Clock
	move.l	18642(a5),d0
	subi.l	#$81422418,d0		;Compare reads
	rts
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 <-


	move	#$1234,$256782		;LOAD C
	move.b	$236005,18642(a5)	;Read GAD/GBD with EVEN (nibble swap)
	move.b	#$20,$236005		;Clock
	move.b	$236005,18643(a5)	;Read GAD/GBD with EVEN (nibble swap)
	move.b	#$20,$236005		;Clock
	move.b	$236005,18644(a5)	;Read GAD/GBD with EVEN (nibble swap)
	move.b	#$20,$236005		;Clock
	move.b	$236005,18645(a5)	;Read GAD/GBD with EVEN (nibble swap)
	move.b	#$20,$236005		;Clock
	move.l	18642(a5),d0
	subi.l	#$0FA56310,d0		;Compare reads
	rts
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 ->


	move	#$1824,$242812		;LOAD C
	move.b	$23600D,18642(a5)	;Read GAD/GBD with H and EVEN
	move.b	#$20,$23600D		;Clock
	move.b	$23600D,18643(a5)	;Read GAD/GBD with H and EVEN
	move.b	#$20,$23600D		;Clock
	move.b	$23600D,18644(a5)	;Read GAD/GBD with H and EVEN
	move.b	#$20,$23600D		;Clock
	move.b	$23600D,18645(a5)	;Read GAD/GBD with H and EVEN
	move.b	#$20,$23600D		;Clock
	move.l	18642(a5),d0
	subi.l	#$18244281,d0		;Compare reads
	rts
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