Сайт Влада

Как исправить баг деформации EHZ

Автор гида: qiuu, Перевод на русский язык: vladikcomper
Оригинальный гид: «SCHG How-to:Fix the EHZ Deformation bug»

В Sonic 2 есть небольшой баг в EHZ, когда два нижних слоя неподвижны, потому что на них не действует код деформации.

Чтобы исправить это, нам потребуется исправить часть кода в роутине SwScrl_EHZ. Найдите лейбел SwScrl_RippleData, который является частью этой роутины. Прямо над ним вы увидите вот такой кусок кода:

	move.w	#($B4)/12-1,d1 ; $B4 bytes
-	move.w	d4,(a1)+
	move.w	d3,(a1)+
	move.w	d4,(a1)+
	move.w	d3,(a1)+
	move.w	d4,(a1)+
	move.w	d3,(a1)+
	swap	d3
	add.l	d0,d3
	add.l	d0,d3
	add.l	d0,d3
	swap	d3
	dbf	d1,-
 
	rts

Замените его на это:

	move.w	#($B4)/12-1,d1 ; $B4 bytes
-	move.w	d4,(a1)+
	move.w	d3,(a1)+
	move.w	d4,(a1)+
	move.w	d3,(a1)+
	move.w	d4,(a1)+
	move.w	d3,(a1)+
	move.w	d4,(a1)+
	move.w	d3,(a1)+
	move.w	d4,(a1)+
	move.w	d3,(a1)+
	swap	d3
	add.l	d0,d3
	add.l	d0,d3
	add.l	d0,d3
	swap	d3
	dbf	d1,-
 
	rts

Как видите, здесь мы лишь дважды добавили в середину кода эти строки:

	move.w	d4,(a1)+
	move.w	d3,(a1)+

Они задействовали два нижних слоя при деформации, баг успешно исправлен.