[ scummvm-Feature Requests-805691 ] FMTOWNS: Missing opcodes

SourceForge.net noreply at sourceforge.net
Tue Oct 7 05:56:04 CEST 2003


Feature Requests item #805691, was opened at 2003-09-14 03:29
Message generated for change (Settings changed) made by kirben
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418823&aid=805691&group_id=37116

Category: None
Group: None
>Status: Open
Resolution: Remind
Priority: 5
Submitted By: Thomas Combeleran (hibernatus)
>Assigned to: Nobody/Anonymous (nobody)
Summary: FMTOWNS: Missing opcodes

Initial Comment:
Hi, here are what the missing FM Towns opcodes are 
supposed to do:

in resourceRoutines:
- case 0x20: Does nothing. Never used.

- case 0x21: Does nothing. Never used.

- case 0x23: Sets the CD loudness (just a guess, not 
confirmed by UNZ).
Used in Loom (CD loudness divided by 2 while a pattern 
is played).
Not implemented in Indy3 (it reads getVarOrDirectByte
(0x20) and breaks).
Takes 2 bytes (resid and foo in the current code). Must 
be for stereo, but then left == right everywhere.

- case 0x24: Sets the loudness of a sound resource.
Used in Indy3 and Zak.
My guess is that foo is left loudness and bar is right 
loudness, but UNZ doesn't play stereo :)
If foo + bar == 0 (which includes FF + 01 for example), 
the default loudness will be used.
The default loudness is at 0x0E and 0x0F in the sound 
resource.

- case 0x25: Sets the pitch of a sound resource.
Used in Indy3 and Loom.
If foo == 0, the sound is played normally.
pitch = foo - center semitones.
"center" is at 0x32 in the sfx resource (always 0x3C in 
zak256, but sometimes different in Indy3).


in startMusic:
- case 0xFF: Gets the CD loudness.
Used in Loom (when the CD loudness is divided by 2 with 
resourceRoutines)
It returns (left + right + 1) / 2.


About the loudness and pitch:
In the original engine there's an array which contains the 
loudness and the pitch of each sound.
After a sound is played (startSound), the pitch and 
loudness are reset.
So if you set a pitch +1 and then play the sound twice 
you'll hear +1 then +0.
At least that's how it worked with Indy3.

(for ender: i had already added a struct in the 
disassembly, now you can replace field0 by count, field1 
by left, field2 by right and field3 by pitch)


----------------------------------------------------------------------

Comment By: Max Horn (fingolfin)
Date: 2003-09-14 23:42

Message:
Logged In: YES 
user_id=12935

This isn't a bug. However the very useful information in here has 
been added in form of TODO comments to the source code, 
including a pointer to this tracker item. Thanks!

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418823&aid=805691&group_id=37116




More information about the Scummvm-tracker mailing list