LMMS
Loading...
Searching...
No Matches
nukedopl.h
Go to the documentation of this file.
1//
2// Copyright (C) 2013-2016 Alexey Khokholov (Nuke.YKT)
3//
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8//
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// Lesser General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program; if not, write to the Free Software
16// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17//
18// Nuked OPL3 emulator.
19// Thanks:
20// MAME Development Team(Jarek Burczynski, Tatsuyuki Satoh):
21// Feedback and Rhythm part calculation information.
22// forums.submarine.org.uk(carbon14, opl3):
23// Tremolo and phase generator calculation information.
24// OPLx decapsulated(Matthew Gambrell, Olli Niemitalo):
25// OPL2 ROMs.
26//
27// version: 1.7.4
28//
29
30#ifndef NUKEDOPL_H
31#define NUKEDOPL_H
32
33#include <inttypes.h>
34
35#define OPL_WRITEBUF_SIZE 1024
36#define OPL_WRITEBUF_DELAY 2
37
38typedef uintptr_t Bitu;
39typedef intptr_t Bits;
40typedef uint64_t Bit64u;
41typedef int64_t Bit64s;
46typedef uint8_t Bit8u;
47typedef int8_t Bit8s;
48
49typedef struct _opl3_slot opl3_slot;
51typedef struct _opl3_chip opl3_chip;
52
82
97
103
131
132void OPL3_Generate(opl3_chip *chip, Bit16s *buf);
133void OPL3_GenerateResampled(opl3_chip *chip, Bit16s *buf);
134void OPL3_Reset(opl3_chip *chip, Bit32u samplerate);
135void OPL3_WriteReg(opl3_chip *chip, Bit16u reg, Bit8u v);
137void OPL3_GenerateStream(opl3_chip *chip, Bit16s *sndptr, Bit32u numsamples);
138#endif
unsigned v[N_MAX]
Definition inflate.c:1584
unsigned short uint16_t
Definition mid.cpp:99
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
short int16_t
Definition mid.cpp:96
unsigned char uint8_t
Definition mid.cpp:98
signed char int8_t
Definition mid.cpp:95
struct _opl3_chip opl3_chip
Definition nemuopl.h:27
struct _opl3_writebuf opl3_writebuf
int8_t Bit8s
Definition nukedopl.h:47
void OPL3_WriteReg(opl3_chip *chip, Bit16u reg, Bit8u v)
Definition nukedopl.c:1282
uint16_t Bit16u
Definition nukedopl.h:44
struct _opl3_slot opl3_slot
Definition nukedopl.h:49
int32_t Bit32s
Definition nukedopl.h:43
void OPL3_Generate(opl3_chip *chip, Bit16s *buf)
Definition nukedopl.c:1093
void OPL3_GenerateStream(opl3_chip *chip, Bit16s *sndptr, Bit32u numsamples)
Definition nukedopl.c:1409
int64_t Bit64s
Definition nukedopl.h:41
struct _opl3_channel opl3_channel
Definition nukedopl.h:50
intptr_t Bits
Definition nukedopl.h:39
int16_t Bit16s
Definition nukedopl.h:45
void OPL3_Reset(opl3_chip *chip, Bit32u samplerate)
Definition nukedopl.c:1237
uint32_t Bit32u
Definition nukedopl.h:42
uint8_t Bit8u
Definition nukedopl.h:46
void OPL3_WriteRegBuffered(opl3_chip *chip, Bit16u reg, Bit8u v)
Definition nukedopl.c:1381
void OPL3_GenerateResampled(opl3_chip *chip, Bit16s *buf)
Definition nukedopl.c:1221
uint64_t Bit64u
Definition nukedopl.h:40
#define OPL_WRITEBUF_SIZE
Definition nukedopl.h:35
uintptr_t Bitu
Definition nukedopl.h:38
Definition nukedopl.h:83
Bit16u f_num
Definition nukedopl.h:89
Bit8u block
Definition nukedopl.h:90
Bit8u fb
Definition nukedopl.h:91
Bit16u chb
Definition nukedopl.h:95
Bit8u ksv
Definition nukedopl.h:94
opl3_slot * slots[2]
Definition nukedopl.h:84
Bit16s * out[4]
Definition nukedopl.h:87
opl3_channel * pair
Definition nukedopl.h:85
Bit8u alg
Definition nukedopl.h:93
opl3_chip * chip
Definition nukedopl.h:86
Bit16u cha
Definition nukedopl.h:95
Bit8u con
Definition nukedopl.h:92
Bit8u chtype
Definition nukedopl.h:88
Definition nukedopl.h:104
Bit16s oldsamples[2]
Definition nukedopl.h:122
opl3_channel channel[18]
Definition nukedopl.h:105
Bit8u tremolo
Definition nukedopl.h:113
Bit32s rateratio
Definition nukedopl.h:120
Bit8u rhy
Definition nukedopl.h:110
Bit32s samplecnt
Definition nukedopl.h:121
Bit8u newm
Definition nukedopl.h:108
Bit64u writebuf_samplecnt
Definition nukedopl.h:125
Bit16s samples[2]
Definition nukedopl.h:123
Bit8u vibpos
Definition nukedopl.h:111
Bit16s zeromod
Definition nukedopl.h:117
Bit8u tremoloshift
Definition nukedopl.h:115
Bit32u writebuf_last
Definition nukedopl.h:127
opl3_writebuf writebuf[OPL_WRITEBUF_SIZE]
Definition nukedopl.h:129
opl3_slot slot[36]
Definition nukedopl.h:106
Bit32s mixbuff[2]
Definition nukedopl.h:118
Bit32u writebuf_cur
Definition nukedopl.h:126
Bit8u tremolopos
Definition nukedopl.h:114
Bit64u writebuf_lasttime
Definition nukedopl.h:128
Bit8u vibshift
Definition nukedopl.h:112
Bit8u nts
Definition nukedopl.h:109
Bit16u timer
Definition nukedopl.h:107
Bit32u noise
Definition nukedopl.h:116
Definition nukedopl.h:53
Bit8u eg_inc
Definition nukedopl.h:62
Bit16s eg_rout
Definition nukedopl.h:60
Bit8u * trem
Definition nukedopl.h:66
Bit8u eg_rate
Definition nukedopl.h:64
Bit16s * mod
Definition nukedopl.h:58
Bit8u key
Definition nukedopl.h:78
Bit8u reg_wf
Definition nukedopl.h:77
Bit8u reg_ksr
Definition nukedopl.h:69
opl3_chip * chip
Definition nukedopl.h:55
Bit16s out
Definition nukedopl.h:56
Bit8u reg_ar
Definition nukedopl.h:73
Bit8u reg_vib
Definition nukedopl.h:67
Bit8u reg_sl
Definition nukedopl.h:75
Bit8u eg_ksl
Definition nukedopl.h:65
Bit8u reg_rr
Definition nukedopl.h:76
Bit32u pg_phase
Definition nukedopl.h:79
Bit16s fbmod
Definition nukedopl.h:57
Bit8u reg_mult
Definition nukedopl.h:70
Bit8u reg_ksl
Definition nukedopl.h:71
Bit16s prout
Definition nukedopl.h:59
Bit8u reg_tl
Definition nukedopl.h:72
Bit8u reg_type
Definition nukedopl.h:68
Bit16s eg_out
Definition nukedopl.h:61
Bit8u eg_gen
Definition nukedopl.h:63
Bit8u reg_dr
Definition nukedopl.h:74
opl3_channel * channel
Definition nukedopl.h:54
Bit32u timer
Definition nukedopl.h:80
Definition nukedopl.h:98
Bit64u time
Definition nukedopl.h:99
Bit16u reg
Definition nukedopl.h:100
Bit8u data
Definition nukedopl.h:101