Mercurial > repos > blastem
view ym_common.h @ 2564:553a0b4888db
More robust sprite overflow regression fix
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 26 Jan 2025 01:02:18 -0800 |
parents | 3f58fec775df |
children | eb588f22ec76 |
line wrap: on
line source
#ifndef YM_COMMON_H_ #define YM_COMMON_H_ #include <stdint.h> #include <stdio.h> #define MAX_ENVELOPE 0xFFC #define MAX_OPL_ENVELOPE 0xFF8 typedef struct { int16_t *mod_src[2]; uint32_t phase_counter; uint32_t phase_inc; uint16_t envelope; int16_t output; uint16_t total_level; uint16_t sustain_level; uint8_t rates[4]; uint8_t key_scaling; uint8_t multiple; uint8_t detune; uint8_t am; uint8_t env_phase; uint8_t ssg; uint8_t inverted; uint8_t phase_overflow; } ym_operator; typedef struct { FILE * logfile; uint16_t fnum; int16_t output; int16_t op1_old; int16_t op2_old; uint8_t block_fnum_latch; uint8_t block; uint8_t keycode; uint8_t algorithm; uint8_t feedback; uint8_t ams; uint8_t pms; uint8_t lr; uint8_t keyon; uint8_t scope_channel; uint8_t phase_overflow; } ym_channel; extern int16_t lfo_pm_table[128 * 32 * 8]; extern uint16_t rate_table[64*8]; void ym_init_tables(void); int16_t ym_sine(uint16_t phase, int16_t mod, uint16_t env); int16_t ym_opl_wave(uint16_t phase, int16_t mod, uint16_t env, uint8_t waveform); #endif //YM_COMMON_H_