furnace/extern/opn
tildearrow 6cce918c02 Nuked-OPN2 + ymfm combo option for all OPN chips
modified Nuked doing FM and ymfm doing SSG/ADPCM
2022-12-24 02:29:37 -05:00
..
LICENSE Nuked-OPN2 + ymfm combo option for all OPN chips 2022-12-24 02:29:37 -05:00
MODIFIED.md Nuked-OPN2 + ymfm combo option for all OPN chips 2022-12-24 02:29:37 -05:00
README.md Nuked-OPN2 + ymfm combo option for all OPN chips 2022-12-24 02:29:37 -05:00
ym3438.c Nuked-OPN2 + ymfm combo option for all OPN chips 2022-12-24 02:29:37 -05:00
ym3438.h Nuked-OPN2 + ymfm combo option for all OPN chips 2022-12-24 02:29:37 -05:00
ym3438.svg Nuked-OPN2 + ymfm combo option for all OPN chips 2022-12-24 02:29:37 -05:00

Nuked-OPN2

High accuracy Yamaha YM3438(OPN2) emulator.

The YM3438 is a CMOS variant of the YM2612 used in Sega MegaDrive(Genesis) and FM Towns.

Genesis Plus GX fork with this core integrated is available here: https://github.com/nukeykt/Genesis-Plus-GX

Features:

  • Based on YM3438 die shot reverse engineering and thus provides very high emulation accuracy.

  • Cycle-accurate.

  • Undocumented registers/features emulation.

  • SSG-EG, CSM mode emulation.

  • Compatible with the YM2612.

API documention

void OPN2_Reset(ym3438_t *chip) - Reset emulated chip
void OPN2_Clock(ym3438_t *chip, Bit32s *buffer) - Advances emulated chip state by 1 internal clock(6 master clocks). Writes signed 9-bit MOL, MOR pin states to buffer. 
void OPN2_Write(ym3438_t *chip, Bit32u port, Bit8u data) - Write 8-bit data to port.
void OPN2_SetTestPin(ym3438_t *chip, Bit32u value) - Set TEST pin value.
Bit32u OPN2_ReadTestPin(ym3438_t *chip) - Read TEST pin value.
Bit32u OPN2_ReadIRQPin(ym3438_t *chip) - Read IRQ pin value.
Bit8u OPN2_Read(ym3438_t *chip, Bit32u port) - Read chip status.

Samples

Sonic the Hedgehog: https://youtu.be/ImmKy_-pJ8g

Sega CD BIOS v1.10: https://youtu.be/s-8ASMbtojQ