SGDK
A free and open development kit for the Sega Mega Drive
Loading...
Searching...
No Matches
psg.h File Reference

PSG support. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define PSG_PORT   0xC00011
 PSG port address.
 
#define PSG_ENVELOPE_MIN   15
 Minimum PSG envelope value.
 
#define PSG_ENVELOPE_MAX   0
 Maximum PSG envelope value.
 
#define PSG_NOISE_TYPE_PERIODIC   0
 Periodic noise type (like low-frequency tone).
 
#define PSG_NOISE_TYPE_WHITE   1
 White noise type (hiss).
 
#define PSG_NOISE_FREQ_CLOCK2   0
 Noise frequency = PSG clock / 2 (less coarse).
 
#define PSG_NOISE_FREQ_CLOCK4   1
 Noise frequency = PSG clock / 4.
 
#define PSG_NOISE_FREQ_CLOCK8   2
 Noise frequency = PSG clock / 8 (more coarse).
 
#define PSG_NOISE_FREQ_TONE3   3
 Noise frequency = Tone generator #3.
 
#define PSG_init()
 

Functions

void PSG_reset (void)
 Reset PSG chip.
 
void PSG_write (u8 data)
 Write to PSG port.
 
void PSG_setEnvelope (u8 channel, u8 value)
 Set envelope level.
 
void PSG_setTone (u8 channel, u16 value)
 Set tone.
 
void PSG_setToneLow (u8 channel, u8 value)
 Partial set tone (low bit only b3-b0).
 
void PSG_setFrequency (u8 channel, u16 value)
 Set frequency.
 
void PSG_setNoise (u8 type, u8 frequency)
 Set noise type and frequency.
 

Detailed Description

PSG support.

Author
Stephane Dallongeville
Date
08/2011

This unit provides access to the PSG through the 68000 CPU

Macro Definition Documentation

◆ PSG_init

#define PSG_init ( )
Value:
_Pragma("GCC error \"This method is deprecated, use PSG_reset() instead.\"")

Function Documentation

◆ PSG_setEnvelope()

void PSG_setEnvelope ( u8 channel,
u8 value )

Set envelope level.

Parameters
channelChannel we want to set envelope (0-3).
valueEnvelope level to set (PSG_ENVELOPE_MIN - PSG_ENVELOPE_MAX).

Set envelope level for the specified PSG channel.

◆ PSG_setFrequency()

void PSG_setFrequency ( u8 channel,
u16 value )

Set frequency.

Parameters
channelChannel we want to set frequency (0-3).
valueFrequency value to set in Hz (0-4095).

Set frequency for the specified PSG channel.
This method actually converts the specified frequency value in PSG tone value.

◆ PSG_setNoise()

void PSG_setNoise ( u8 type,
u8 frequency )

Set noise type and frequency.

Parameters
typeNoise type, accepted values are:
PSG_NOISE_TYPE_PERIODIC
PSG_NOISE_TYPE_WHITE
frequencyNoise frequency, accepted values are:
PSG_NOISE_FREQ_CLOCK2
PSG_NOISE_FREQ_CLOCK4
PSG_NOISE_FREQ_CLOCK8
PSG_NOISE_FREQ_TONE3

◆ PSG_setTone()

void PSG_setTone ( u8 channel,
u16 value )

Set tone.

Parameters
channelChannel we want to set tone (0-3).
valueTone value to set (0-1023).

Set direct tone value for the specified PSG channel.

◆ PSG_setToneLow()

void PSG_setToneLow ( u8 channel,
u8 value )

Partial set tone (low bit only b3-b0).

Parameters
channelChannel we want to set tone (0-3).
valueLow bit (b3-b0) of tone value to set (0-15)

Set low part of tone value for the specified PSG channel.

◆ PSG_write()

void PSG_write ( u8 data)

Write to PSG port.

Parameters
datavalue to write to the port.

Write the specified value to PSG data port.