Annotation of generator/ym2612/fm.h, revision 1.1

1.1     ! root        1: /*
        !             2:   File: fm.h -- header file for software emuration for FM sound genelator
        !             3: 
        !             4: */
        !             5: #ifndef _H_FM_FM_
        !             6: #define _H_FM_FM_
        !             7: 
        !             8: /* #define BUILD_YM2203 (HAS_YM2203) */                /* build YM2203(OPN)   emulator */
        !             9: /* #define BUILD_YM2608 (HAS_YM2608) */                /* build YM2608(OPNA)  emulator */
        !            10: /* #define BUILD_YM2610 (HAS_YM2610) */                /* build YM2610(OPNB)  emulator */
        !            11: /* #define BUILD_YM2610B (HAS_YM2610B) */              /* build YM2610B(OPNB?)emulator */
        !            12: #define BUILD_YM2612 (HAS_YM2612)              /* build YM2612(OPN2)  emulator */
        !            13: /* #define BUILD_YM2151 (HAS_YM2151) */                /* build YM2151(OPM)   emulator */
        !            14: 
        !            15: /* stereo mixing / separate */
        !            16: /*#define FM_STEREO_MIX */
        !            17: /* output bit size 8 or 16 */
        !            18: #define FM_OUTPUT_BIT 16
        !            19: 
        !            20: #define YM2203_NUMBUF 1
        !            21: 
        !            22: #ifdef FM_STEREO_MIX
        !            23:   #define YM2151_NUMBUF 1
        !            24:   #define YM2608_NUMBUF 1
        !            25:   #define YM2612_NUMBUF 1
        !            26:   #define YM2610_NUMBUF  1
        !            27: #else
        !            28:   #define YM2151_NUMBUF 2    /* FM L+R */
        !            29:   #define YM2608_NUMBUF 2    /* FM L+R+ADPCM+RYTHM */
        !            30:   #define YM2612_NUMBUF 2    /* FM L+R */
        !            31:   #define YM2610_NUMBUF  2
        !            32: #endif
        !            33: 
        !            34: #if (FM_OUTPUT_BIT==16)
        !            35: typedef unsigned short FMSAMPLE;
        !            36: typedef unsigned long FMSAMPLE_MIX;
        !            37: #endif
        !            38: #if (FM_OUTPUT_BIT==8)
        !            39: typedef unsigned char  FMSAMPLE;
        !            40: typedef unsigned short FMSAMPLE_MIX;
        !            41: #endif
        !            42: 
        !            43: /* For YM2151/YM2608/YM2612 option */
        !            44: 
        !            45: typedef void (*FM_TIMERHANDLER)(int n,int c,int cnt,double stepTime);
        !            46: typedef void (*FM_IRQHANDLER)(int n,int irq);
        !            47: /* FM_TIMERHANDLER : Stop or Start timer         */
        !            48: /* int n          = chip number                  */
        !            49: /* int c          = Channel 0=TimerA,1=TimerB    */
        !            50: /* int count      = timer count (0=stop)         */
        !            51: /* doube stepTime = step time of one count (sec.)*/
        !            52: 
        !            53: /* FM_IRQHHANDLER : IRQ level changing sense     */
        !            54: /* int n       = chip number                     */
        !            55: /* int irq     = IRQ level 0=OFF,1=ON            */
        !            56: 
        !            57: #ifdef BUILD_OPN
        !            58: /* -------------------- YM2203/YM2608 Interface -------------------- */
        !            59: /*
        !            60: ** 'n' : YM2203 chip number 'n'
        !            61: ** 'r' : register
        !            62: ** 'v' : value
        !            63: */
        !            64: /*void OPNWriteReg(int n, int r, int v); */
        !            65: 
        !            66: /*
        !            67: ** read status  YM2203 chip number 'n'
        !            68: */
        !            69: unsigned char OPNReadStatus(int n);
        !            70: 
        !            71: #endif /* BUILD_OPN */
        !            72: 
        !            73: #if BUILD_YM2203
        !            74: /* -------------------- YM2203(OPN) Interface -------------------- */
        !            75: 
        !            76: /*
        !            77: ** Initialize YM2203 emulator(s).
        !            78: **
        !            79: ** 'num'     is the number of virtual YM2203's to allocate
        !            80: ** 'rate'    is sampling rate
        !            81: ** return    0 = success
        !            82: */
        !            83: int YM2203Init(int num, int baseclock, int rate,
        !            84:                FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
        !            85: 
        !            86: /*
        !            87: ** shutdown the YM2203 emulators .. make sure that no sound system stuff
        !            88: ** is touching our audio buffers ...
        !            89: */
        !            90: void YM2203Shutdown(void);
        !            91: 
        !            92: /*
        !            93: ** reset all chip registers for YM2203 number 'num'
        !            94: */
        !            95: void YM2203ResetChip(int num);
        !            96: 
        !            97: void YM2203UpdateOne(int num, void *buffer, int length);
        !            98: 
        !            99: /*
        !           100: ** return : InterruptLevel
        !           101: */
        !           102: int YM2203Write(int n,int a,int v);
        !           103: unsigned char YM2203Read(int n,int a);
        !           104: 
        !           105: /*
        !           106: **     Timer OverFlow
        !           107: */
        !           108: int YM2203TimerOver(int n, int c);
        !           109: 
        !           110: /*int YM2203SetBuffer(int n, FMSAMPLE *buf );*/
        !           111: 
        !           112: #endif /* BUILD_YM2203 */
        !           113: 
        !           114: #if BUILD_YM2608
        !           115: /* -------------------- YM2608(OPNA) Interface -------------------- */
        !           116: 
        !           117: int YM2608Init(int num, int baseclock, int rate,
        !           118:                void **pcmroma,int *pcmsizea,short *rhythmrom,int *rhythmpos,
        !           119:                FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
        !           120: void YM2608Shutdown(void);
        !           121: void YM2608ResetChip(int num);
        !           122: void YM2608UpdateOne(int num, void **buffer, int length);
        !           123: 
        !           124: int YM2608Write(int n, int a,int v);
        !           125: unsigned char YM2608Read(int n,int a);
        !           126: int YM2608TimerOver(int n, int c );
        !           127: /*int YM2608SetBuffer(int n, FMSAMPLE **buf );*/
        !           128: #endif /* BUILD_YM2608 */
        !           129: 
        !           130: #if BUILD_YM2610
        !           131: /* -------------------- YM2610(OPNB) Interface -------------------- */
        !           132: 
        !           133: #define   MAX_2610    (2)
        !           134: 
        !           135: int YM2610Init(int num, int baseclock, int rate,
        !           136:                void **pcmroma,int *pcmasize,void **pcmromb,int *pcmbsize,
        !           137:                FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
        !           138: void YM2610Shutdown(void);
        !           139: void YM2610ResetChip(int num);
        !           140: void YM2610UpdateOne(int num, void **buffer, int length);
        !           141: #if BUILD_YM2610B
        !           142: void YM2610BUpdateOne(int num, void **buffer, int length);
        !           143: #endif
        !           144: 
        !           145: int YM2610Write(int n, int a,int v);
        !           146: unsigned char YM2610Read(int n,int a);
        !           147: int YM2610TimerOver(int n, int c );
        !           148: /*int YM2610SetBuffer(int n, FMSAMPLE **buf );*/
        !           149: 
        !           150: #ifdef __RAINE__
        !           151: void Set_YM2610_ADPCM_Buffers(int num, UBYTE *bufa, UBYTE *bufb, ULONG sizea, ULONG sizeb);
        !           152: #endif
        !           153: #endif /* BUILD_YM2610 */
        !           154: 
        !           155: #if BUILD_YM2612
        !           156: int YM2612Init(int num, int baseclock, int rate,
        !           157:                FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
        !           158: void YM2612Shutdown(void);
        !           159: void YM2612ResetChip(int num);
        !           160: void YM2612UpdateOne(int num, void **buffer, int length);
        !           161: int YM2612Write(int n, int a,int v);
        !           162: unsigned char YM2612Read(int n,int a);
        !           163: int YM2612TimerOver(int n, int c );
        !           164: FMSAMPLE *YM2612Buffer(int n);
        !           165: /*int YM2612SetBuffer(int n, FMSAMPLE **buf );*/
        !           166: 
        !           167: #endif /* BUILD_YM2612 */
        !           168: 
        !           169: #if BUILD_YM2151
        !           170: /* -------------------- YM2151(OPM) Interface -------------------- */
        !           171: /*
        !           172: ** Initialize YM2151 emulator(s).
        !           173: **
        !           174: ** 'num'     is the number of virtual YM2151's to allocate
        !           175: ** 'rate'    is sampling rate
        !           176: ** 'bitsize' is sampling bits (8 or 16)
        !           177: ** 'bufsiz' is the size of the buffer
        !           178: */
        !           179: int OPMInit(int num, int baseclock, int rate,
        !           180:                FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
        !           181: void OPMShutdown(void);
        !           182: void OPMResetChip(int num);
        !           183: 
        !           184: void OPMUpdateOne(int num, void **buffer, int length );
        !           185: void OPMWriteReg(int n, int r, int v);
        !           186: unsigned char OPMReadStatus(int n );
        !           187: /* ----- get pointer sound buffer ----- */
        !           188: FMSAMPLE *OPMBuffer(int n,int c );
        !           189: /* ----- set sound buffer ----- */
        !           190: /*int OPMSetBuffer(int n, FMSAMPLE **buf );*/
        !           191: /* ---- set user interrupt handler ----- */
        !           192: void OPMSetIrqHandler(int n, void (*handler)(void) );
        !           193: /* ---- set callback hander when port CT0/1 write ----- */
        !           194: /* CT.bit0 = CT0 , CT.bit1 = CT1 */
        !           195: void OPMSetPortHander(int n,void (*PortWrite)(int offset,int CT) );
        !           196: /* JB 981119  - so it will match MAME's memory write functions scheme*/
        !           197: 
        !           198: int YM2151Write(int n,int a,int v);
        !           199: unsigned char YM2151Read(int n,int a);
        !           200: int YM2151TimerOver(int n,int c);
        !           201: #endif /* BUILD_YM2151 */
        !           202: 
        !           203: #endif /* _H_FM_FM_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.