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