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