|
|
1.1 root 1: /*
2: Hatari
3: */
4:
5: enum {
6: PSG_REG_CHANNEL_A_FINE, // 0x0000
7: PSG_REG_CHANNEL_A_COARSE, // 0x0001
8: PSG_REG_CHANNEL_B_FINE, // 0x0010
9: PSG_REG_CHANNEL_B_COARSE, // 0x0011
10: PSG_REG_CHANNEL_C_FINE, // 0x0100
11: PSG_REG_CHANNEL_C_COARSE, // 0x0101
12: PSG_REG_NOISE_GENERATOR, // 0x0110
13: PSG_REG_MIXER_CONTROL, // 0x0111
14: PSG_REG_CHANNEL_A_AMP, // 0x1000
15: PSG_REG_CHANNEL_B_AMP, // 0x1001
16: PSG_REG_CHANNEL_C_AMP, // 0x1010
17: PSG_REG_ENV_FINE, // 0x1011
18: PSG_REG_ENV_COARSE, // 0x1100
19: PSG_REG_ENV_SHAPE, // 0x1101
20: PSG_REG_IO_PORTA, // 0x1110
21: PSG_REG_IO_PORTB // 0x1111
22: };
23:
24: #define NUM_PSG_SOUND_REGISTERS 14 // Number of register, not including IO ports
25:
26: extern unsigned char PSGRegisterSelect;
27: extern unsigned char PSGRegisters[16];
28:
29: extern void PSG_Reset(void);
30: extern void PSG_MemorySnapShot_Capture(BOOL bSave);
31: extern void PSG_WriteSelectRegister(unsigned short v);
32: extern unsigned short PSG_ReadSelectRegister(void);
33: extern void PSG_WriteDataRegister(unsigned short v);
34: extern unsigned short PSG_ReadDataRegister(void);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.