diff options
Diffstat (limited to 'src/emu/sound/ym2151.h')
-rw-r--r-- | src/emu/sound/ym2151.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/emu/sound/ym2151.h b/src/emu/sound/ym2151.h new file mode 100644 index 00000000000..a3dd23b6a0e --- /dev/null +++ b/src/emu/sound/ym2151.h @@ -0,0 +1,86 @@ +/* +** +** File: ym2151.h - header file for software implementation of YM2151 +** FM Operator Type-M(OPM) +** +** (c) 1997-2002 Jarek Burczynski (s0246@poczta.onet.pl, bujar@mame.net) +** Some of the optimizing ideas by Tatsuyuki Satoh +** +** Version 2.150 final beta May, 11th 2002 +** +** +** I would like to thank following people for making this project possible: +** +** Beauty Planets - for making a lot of real YM2151 samples and providing +** additional informations about the chip. Also for the time spent making +** the samples and the speed of replying to my endless requests. +** +** Shigeharu Isoda - for general help, for taking time to scan his YM2151 +** Japanese Manual first of all, and answering MANY of my questions. +** +** Nao - for giving me some info about YM2151 and pointing me to Shigeharu. +** Also for creating fmemu (which I still use to test the emulator). +** +** Aaron Giles and Chris Hardy - they made some samples of one of my favourite +** arcade games so I could compare it to my emulator. +** +** Bryan McPhail and Tim (powerjaw) - for making some samples. +** +** Ishmair - for the datasheet and motivation. +*/ + +#ifndef _H_YM2151_ +#define _H_YM2151_ + +/* 16- and 8-bit samples (signed) are supported*/ +#define SAMPLE_BITS 16 + +typedef stream_sample_t SAMP; +/* +#if (SAMPLE_BITS==16) + typedef INT16 SAMP; +#endif +#if (SAMPLE_BITS==8) + typedef signed char SAMP; +#endif +*/ + +/* +** Initialize YM2151 emulator(s). +** +** 'num' is the number of virtual YM2151's to allocate +** 'clock' is the chip clock in Hz +** 'rate' is sampling rate +*/ +void *YM2151Init(int index, int clock, int rate); + +/* shutdown the YM2151 emulators*/ +void YM2151Shutdown(void *chip); + +/* reset all chip registers for YM2151 number 'num'*/ +void YM2151ResetChip(void *chip); + +/* +** Generate samples for one of the YM2151's +** +** 'num' is the number of virtual YM2151 +** '**buffers' is table of pointers to the buffers: left and right +** 'length' is the number of samples that should be generated +*/ +void YM2151UpdateOne(void *chip, SAMP **buffers, int length); + +/* write 'v' to register 'r' on YM2151 chip number 'n'*/ +void YM2151WriteReg(void *chip, int r, int v); + +/* read status register on YM2151 chip number 'n'*/ +int YM2151ReadStatus(void *chip); + +/* set interrupt handler on YM2151 chip number 'n'*/ +void YM2151SetIrqHandler(void *chip, void (*handler)(int irq)); + +/* set port write handler on YM2151 chip number 'n'*/ +void YM2151SetPortWriteHandler(void *chip, write8_handler handler); + +/* refresh chip when load state */ +void YM2151Postload(void *chip); +#endif /*_H_YM2151_*/ |