/***************************************************************************** * * POKEY chip emulator 4.3 * Copyright Nicola Salmoria and the MAME Team * * Based on original info found in Ron Fries' Pokey emulator, * with additions by Brad Oliver, Eric Smith and Juergen Buchmueller. * paddle (a/d conversion) details from the Atari 400/800 Hardware Manual. * Polynome algorithms according to info supplied by Perry McFarlane. * * This code is subject to the MAME license, which besides other * things means it is distributed as is, no warranties whatsoever. * For more details read mame.txt that comes with MAME. * *****************************************************************************/ #pragma once //#include "devlegcy.h" /* CONSTANT DEFINITIONS */ /* POKEY WRITE LOGICALS */ #define AUDF1_C 0x00 #define AUDC1_C 0x01 #define AUDF2_C 0x02 #define AUDC2_C 0x03 #define AUDF3_C 0x04 #define AUDC3_C 0x05 #define AUDF4_C 0x06 #define AUDC4_C 0x07 #define AUDCTL_C 0x08 #define STIMER_C 0x09 #define SKREST_C 0x0A #define POTGO_C 0x0B #define SEROUT_C 0x0D #define IRQEN_C 0x0E #define SKCTL_C 0x0F /* POKEY READ LOGICALS */ #define POT0_C 0x00 #define POT1_C 0x01 #define POT2_C 0x02 #define POT3_C 0x03 #define POT4_C 0x04 #define POT5_C 0x05 #define POT6_C 0x06 #define POT7_C 0x07 #define ALLPOT_C 0x08 #define KBCODE_C 0x09 #define RANDOM_C 0x0A #define SERIN_C 0x0D #define IRQST_C 0x0E #define SKSTAT_C 0x0F /* exact 1.79 MHz clock freq (of the Atari 800 that is) */ #define FREQ_17_EXACT 1789790 /***************************************************************************** * pot0_r to pot7_r: * Handlers for reading the pot values. Some Atari games use * ALLPOT to return dipswitch settings and other things. * serin_r, serout_w, interrupt_cb: * New function pointers for serial input/output and a interrupt callback. *****************************************************************************/ /*typedef struct _pokey_interface pokey_interface; struct _pokey_interface { devcb_read8 pot_r[8]; devcb_read8 allpot_r; devcb_read8 serin_r; devcb_write8 serout_w; void (*interrupt_cb)(device_t *device, int mask); };*/ void pokey_update(void *chip, stream_sample_t **outputs, int samples); int device_start_pokey(void **chip, int clock); void device_stop_pokey(void *chip); void device_reset_pokey(void *chip); //READ8_DEVICE_HANDLER( pokey_r ); //WRITE8_DEVICE_HANDLER( pokey_w ); UINT8 pokey_r(void *chip, offs_t offset); void pokey_w(void *chip, offs_t offset, UINT8 data); /* fix me: eventually this should be a single device with pokey subdevices */ //READ8_HANDLER( quad_pokey_r ); //WRITE8_HANDLER( quad_pokey_w ); /*void pokey_serin_ready (device_t *device, int after); void pokey_break_w (device_t *device, int shift); void pokey_kbcode_w (device_t *device, int kbcode, int make);*/ void pokey_set_mute_mask(void *chip, UINT32 MuteMask); //DECLARE_LEGACY_SOUND_DEVICE(POKEY, pokey);