Сайт Влада

Как исправить звук «SEGA»

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

После редактирования исходного кода Первого Соника, звук «SEGA» становится настоящей головной болью из-за посторонних шумов.

Чтобы исправить это и вернуть нормальное звучание звуку, найдите лейбел Sound_E1, он выглядит так:

Sound_E1:				; XREF: Sound_ExIndex
		move.b	#$88,($A01FFF).l
		move.w	#0,($A11100).l	; start	the Z80
		move.w	#$11,d1
loc_71FC0:
		move.w	#-1,d0
loc_71FC4:
		nop	
		dbf	d0,loc_71FC4
		dbf	d1,loc_71FC0
		addq.w	#4,sp
		rts

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

Sound_E1:				  
		lea	(SegaPCM).l,a2
		move.l	#$6978,d3
		move.b	#$2A,($A04000).l
PlayPCM_Loop:	  
		move.b	(a2)+,($A04001).l
		move.w	#$14,d0
		dbf	d0,*
		sub.l	#1,d3
		beq.s	return_PlayPCM
		lea	($FFFFF604).w,a0
		lea	($A10003).l,a1
		jsr	(Joypad_Read).w
		btst	#7,($FFFFF604).w	; Check for Start button 
		bne.s	return_PlayPCM		; If start is pressed
		bra.s	PlayPCM_Loop		; Otherwise, continue playing
return_PlayPCM: 
		addq.w	#4,sp 
		rts