register names
This commit is contained in:
@ -26,19 +26,33 @@ const uint16_t frequencyCodes[8][12] = {
|
|||||||
#define BDIR BIT1
|
#define BDIR BIT1
|
||||||
|
|
||||||
#define R0 0
|
#define R0 0
|
||||||
|
#define CHANNEL_A_TONE_PERIOD_FINE_REG R0
|
||||||
#define R1 1
|
#define R1 1
|
||||||
|
#define CHANNEL_A_TONE_PERIOD_COARSE_REG R1
|
||||||
#define R2 2
|
#define R2 2
|
||||||
|
#define CHANNEL_B_TONE_PERIOD_FINE_REG R2
|
||||||
#define R3 3
|
#define R3 3
|
||||||
|
#define CHANNEL_B_TONE_PERIOD_COARSE_REG R3
|
||||||
#define R4 4
|
#define R4 4
|
||||||
|
#define CHANNEL_C_TONE_PERIOD_FINE_REG R4
|
||||||
#define R5 5
|
#define R5 5
|
||||||
|
#define CHANNEL_C_TONE_PERIOD_COARSE_REG R5
|
||||||
#define R6 6
|
#define R6 6
|
||||||
|
#define NOISE_PERIOD_REG R6
|
||||||
#define R7 7
|
#define R7 7
|
||||||
|
#define _ENABLE_REG R7
|
||||||
#define R10 010
|
#define R10 010
|
||||||
|
#define CHANNEL_A_AMPLITUDE_REG R10
|
||||||
#define R11 011
|
#define R11 011
|
||||||
|
#define CHANNEL_B_AMPLITUDE_REG R11
|
||||||
#define R12 012
|
#define R12 012
|
||||||
|
#define CHANNEL_C_AMPLITUDE_REG R12
|
||||||
#define R13 013
|
#define R13 013
|
||||||
|
#define ENVELOPE_PERIOD_FINE_REG R13
|
||||||
#define R14 014
|
#define R14 014
|
||||||
|
#define ENVELOPE_PERIOD_COARSE_REG R13
|
||||||
#define R15 015
|
#define R15 015
|
||||||
|
#define ENVELOPE_SHAPE_REG R15
|
||||||
|
|
||||||
uint8_t psgShadowRegisters[14];
|
uint8_t psgShadowRegisters[14];
|
||||||
|
|
||||||
@ -96,21 +110,21 @@ void psgWrite(uint8_t address, uint8_t data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void psgWriteFrequency(uint8_t channel, uint16_t frequencyCode) {
|
void psgWriteFrequency(uint8_t channel, uint16_t frequencyCode) {
|
||||||
psgWrite(R0 + (channel * 2), (frequencyCode & 0x00ff));
|
psgWrite(CHANNEL_A_TONE_PERIOD_FINE_REG + (channel * 2), (frequencyCode & 0x00ff));
|
||||||
psgWrite(R1 + (channel * 2), ((frequencyCode >> 8) & 0x000f));
|
psgWrite(CHANNEL_A_TONE_PERIOD_COARSE_REG + (channel * 2), ((frequencyCode >> 8) & 0x000f));
|
||||||
}
|
}
|
||||||
|
|
||||||
void psgPlayTone(uint8_t channel, t_octave octave, t_note note) {
|
void psgPlayTone(uint8_t channel, t_octave octave, t_note note) {
|
||||||
if (note == e_Pause) {
|
if (note == e_Pause) {
|
||||||
psgWrite(R7, psgReadShadow(R7) | (1 << channel));
|
psgWrite(_ENABLE_REG, psgReadShadow(_ENABLE_REG) | (1 << channel));
|
||||||
} else {
|
} else {
|
||||||
psgWrite(R7, psgReadShadow(R7) & ~(1 << channel));
|
psgWrite(_ENABLE_REG, psgReadShadow(_ENABLE_REG) & ~(1 << channel));
|
||||||
psgWriteFrequency(channel, frequencyCodes[octave][note]);
|
psgWriteFrequency(channel, frequencyCodes[octave][note]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void psgAmplitude(uint8_t channel, uint8_t volume) {
|
void psgAmplitude(uint8_t channel, uint8_t volume) {
|
||||||
psgWrite(R10 + channel, volume);
|
psgWrite(CHANNEL_A_AMPLITUDE_REG + channel, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
void psgInit() {
|
void psgInit() {
|
||||||
|
Reference in New Issue
Block a user