Hallo,
da meine Assemblerkenntnisse etwas eingerostet sind, würde ich gerne verifizieren, ob folgende Dinge korrekt von der soundFmt.def in die entsprechende .h Datei übertragen habe:
Code
NoiseType etype byte, 0, 1
NT_NO_NOISE enum NoiseType
NT_WHITE_NOISE enum NoiseType ; cymbal crash
NT_METAL_NOISE enum NoiseType ; snare drum hit
habe ich übersetzt als:
Code
typedef enum byte {
NT_NO_NOISE = 0,
NT_WHITE_NOISE, /* cymbal crash */
NT_METAL_NOISE, /* snare drum hit */
} NoiseType;
Folgendes
Code
NoiseSetting record
NS_type NoiseType :2 ; metal type
NS_partialLevel :6 ; fraction for metal level
NoiseSetting end
sieht jetzt unter der Annahme, dass 'record' hier byte-sized ist so aus:
Code
typedef ByteFlags NoiseSetting;
#define NS_type 0xC0 /* metal type */
#define NS_partialLevel 0x3F /* fraction for metal level */
#define NS_TYPE_OFFSET 6
#define NS_PATIAL_LEVEL_OFFSET 0
Und schließlich das hier:
Code
CTIEnvelopeFormat struct
CTIEF_fundamental byte ; fraction for primary
CTIEF_secondPartial byte ; fraction for 2nd intensity
CTIEF_thirdPartial byte ; fraction for 3rd intensity
CTIEF_noise NoiseSetting ; intensity of noise
CTIEnvelopeFormat ends
wird zu;
Code
typedef struct {
byte CTIEF_fundamental; /* fraction for primary */
byte CTIEF_secondPartial; /* fraction for 2nd intensity */
byte CTIEF_thirdPartial; /* fraction for 3rd intensity */
NoiseSetting CTIEF_noise; /* intensity of noise */
} CTIEnvelopeFormat;
Der Compiler schluckt die Definitionen, syntaktisch ist also (nach mehreren Fehlversuchen) alles OK. Da ich es aber nicht testen kann (das sind die TandySound Definitionen) wollte ich nur sicherstellen, dass ich nicht irgendeinen kapitalen Denkfehler gemacht habe.
LG
Rainer