Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SMPS2ASM: vcUnusedBits #19

Open
Brainulator9 opened this issue Jul 2, 2022 · 2 comments
Open

SMPS2ASM: vcUnusedBits #19

Brainulator9 opened this issue Jul 2, 2022 · 2 comments

Comments

@Brainulator9
Copy link

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.

@Clownacy
Copy link
Contributor

Clownacy commented Jul 6, 2022

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?

@Brainulator9
Copy link
Author

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants