flamewing/flamedriver

SMPS2ASM: vcUnusedBits

Brainulator9 opened this issue · 2 comments

Looking at the Hidden Palace source code dump, I'm inclined to believe that tracks whose voices set the unused bits do so in error. Here's what I found on the 68000 version's dump, in a file called "mdmcr11.lib" (the Z80 version uses substantially the same code):

;=======================================;
;		FM VOICE		;
;=======================================;
;	CNF	ALG,FBK
;	MD	M1,D1,M2,D2,M3,D3,M4,D4
;	TL	T1,T2,T3,T4
;	RSAR	X1,X2,X3,X4
;	D1R	X1,X2,X3,X4
;	D2R	X1,X2,X3,X4
;	RRL	R1,DL1,R2,DL2,R3,DL3,R4,DL4

;----------------< CNF >----------------;
CNF	MACRO	ALG,FBK
cnect	set	ALG
	DB	ALG+FBK*8
	ENDM
;----------------< MD >-----------------;
MD	MACRO	M1,D1,M2,D2,M3,D3,M4,D4
	DB	D1*10H+M1,D2*10H+M2
	DB	D3*10H+M3,D4*10H+M4
	ENDM
;----------------< TL >-----------------;
TL	MACRO	T1,T2,T3,T4
	ifz	cnect
	db	T1,T2,T3,T4.or.80h
	endif
	ifz	cnect-1
	db	T1,T2,T3,T4.or.80h
	endif
	ifz	cnect-2
	db	T1,T2,T3,T4.or.80h
	endif
	ifz	cnect-3
	db	T1,T2,T3,T4.or.80h
	endif
	ifz	cnect-4
	db	T1,T2.or.80h,T3,T4.or.80h
	endif
	ifz	cnect-5
	db	T1,T2.or.80h,T3.or.80h,T4.or.80h
	endif
	ifz	cnect-6
	db	T1,T2.or.80h,T3.or.80h,T4.or.80h
	endif
	ifz	cnect-7
	db	T1.or.80h,T2.or.80h,T3.or.80h,T4.or.80h
	endif
	ENDM
;----------------< RSAR >---------------;
RSAR	MACRO	K1,A1,K2,A2,K3,A3,K4,A4
	DB	K1*40H+A1,K2*40H+A2,K3*40H+A3,K4*40H+A4
	ENDM
;----------------< D1R >----------------;
D1R	MACRO	X1,X2,X3,X4
	DB	X1,X2,X3,X4
	ENDM
;----------------< D2R >----------------;
D2R	MACRO	X1,X2,X3,X4
	DB	X1,X2,X3,X4
	ENDM
;----------------< RRL >----------------;
RRL	MACRO	R1,DL1,R2,DL2,R3,DL3,R4,DL4
	DB	R1+DL1*10H,R2+DL2*10H
	DB	R3+DL3*10H,R4+DL4*10H
	ENDM

The fact that D1R (the first delay rate, which also encompasses the AM bits...) is implemented as just 4 byte writes, with no other math involved, leads me to believe that, for instance, a value of $24 for one of the operators in Oil Ocean Zone's music was just a mistake.

What's the issue exactly? I already figured that those bits were accidental, and this does confirm it, but what can/should be done about it?

Probably should have specified: I'm wondering whether it would make more sense to just fix those bits in the improved copies, kind of like what was done to sound $BC in Sonic 1 (in which another bit was removed that the game ignores).