35 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | # 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 | ||
|  | 
 |