Home Download Musics Developers
API Sources Tools File Format Technicals

paulaemul.h File Reference


Detailed Description

Paula emulator header.

Author:
Benjamin Gerard <ben@sashipa.com>
Date:
1998/07/18
Id
paulaemul.h,v 2.2 2003/11/11 10:18:58 benjihan Exp

#include "emu68/struct68.h"

Go to the source code of this file.

Data Structures

struct  paulav_t
 Paula voice information data structure. More...


Amiga interruption registers

All hardware registers involved with interruption handling use the same bit organisation :
  • bit 7 Audio channel A
  • bit 8 Audio channel B
  • bit 9 Audio channel C
  • bit 10 Audio channel D
  • bit 14 Master interrupt


#define PAULA_INTREQR   0x1E
 Interruption request read.

#define PAULA_INTREQRH   0x1E
 Interruption request read MSB.

#define PAULA_INTREQRL   0x1F
 Interruption request read LSB.

#define PAULA_INTREQ   0x9C
 Interruption request write.

#define PAULA_INTREQH   0x9C
 Interruption request write MSB.

#define PAULA_INTREQL   0x9D
 Interruption request write LSB.

#define PAULA_INTENAR   0x1C
 Interruption enable read.

#define PAULA_INTENARH   0x1C
 Interruption enable read MSB.

#define PAULA_INTENARL   0x1D
 Interruption enable read LSB.

#define PAULA_INTENA   0x9A
 Interruption enable write.

#define PAULA_INTENAH   0x9A
 Interruption enable write MSB.

#define PAULA_INTENAL   0x9B
 Interruption enable write LSB.


Amiga DMA registers.

Amiga DMA control register bits :
  • bit 0 Audio DMA channel A
  • bit 1 Audio DMA channel B
  • bit 2 Audio DMA channel C
  • bit 3 Audio DMA channel D
  • bit 9 General DMA


#define PAULA_DMACONR   0x02
 DMA control read.

#define PAULA_DMACONRH   0x02
 DMA control read MSB.

#define PAULA_DMACONRL   0x03
 DMA control read LSB.

#define PAULA_DMACON   0x96
 DMA control write.

#define PAULA_DMACONH   0x96
 DMA control write MSB.

#define PAULA_DMACONL   0x97
 DMA control write LSB.


The Audio & Disk Control Registers.

Bits:
  • 07 USE3PN Use audio channel 3 to modulate nothing.
  • 06 USE2P3 Use audio channel 2 to modulate period of channel 3.
  • 05 USE1P2 Use audio channel 1 to modulate period of channel 2.
  • 04 USE0P1 Use audio channel 0 to modulate period of channel 1.
  • 03 USE3VN Use audio channel 3 to modulate nothing.
  • 02 USE2V3 Use audio channel 2 to modulate volume of channel 3.
  • 01 USE1V2 Use audio channel 1 to modulate volume of channel 2.
  • 00 USE0V1 Use audio channel 0 to modulate volume of channel 1.

Note:
If both period/volume are modulated on the same channel, the period and volume will be alternated. First word xxxxxxxx V6-V0, Second word P15-P0 (etc).


#define PAULA_ADKCON   0x9E
 Audio, disk, control write.

#define PAULA_ADKCONR   0x10
 Audio, disk, control read.

#define PAULA_ADKCONRH   0x10
 Audio, disk, control write.

#define PAULA_ADKCONRL   0x11
 Audio, disk, control write.


Amiga Paula registers.

#define PAULA_VOICE(I)   ((0xA+(I))<<4)
 Paula channel I register base.

#define PAULA_VOICEA   0xA0
 Paula channel A register base.

#define PAULA_VOICEB   0xB0
 Paula channel B register base.

#define PAULA_VOICEC   0xC0
 Paula channel C register base.

#define PAULA_VOICED   0xD0
 Paula channel D register base.


Amiga Paula frequencies (PAL).

#define PAULA_PER   2.79365E-7
 Paula period (1 cycle duration).

#define PAULA_FRQ   3579610.53837
 Paula frequency (1/PAULA_PER).


Initialization functions.

unsigned int PL_sampling_rate (unsigned int f)
 Set/Get sampling rate.

int PL_reset (void)
 Paula hardware reset.

int PL_init (void)
 Paula first one first initialization.


Emulation functions

void PL_mix (u32 *b, u8 *mem68, int n)
 Execute Paula emulation.


Internal Paula emulation data.

u8 paula []
 Paula regiter data storage.

paulav_t paulav []
 Paula voices(channel) table (4 voices).

int paula_dmacon
 Shadow DMACON.

int paula_intena
 Shadow INTENA.

int paula_intreq
 Shadow INTREQ.

int paula_adkcon
 Shadow ADKCON.

int paula_interpol
 Interpolation mode [0:none 1:linear].


Defines

#define PAULA_VHPOSR   0x06
 Amiga Vertical/Horizontal electron bean position.

#define PAULA_CT_FIX   13
 Counter fixed point precision 13+19(512kb)=>32 bit.