mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-29 04:31:49 +01:00
2b78421402
------ * improved 68k accuracy (initial reset timing + auto-vectored interrupts handling). * modified Z80 & 68k cores to directly use external cycle count instead of intermediate counters. * improved Z80 & 68k cpu execution/synchronization accuracy, now use Master Clock as common clock reference. * improved PSG & FM chips synchronization with CPU execution (fixed point precision). * completely rewrote sound output processing & mixing: sound chips are now clocked with exact output frame rate to ensure 100% smooth video & audio playback, with no lag or skipping, while still rendering an accurate number of samples per frame. This will also make fast-forward implementation (video AND sound) more trivial. * improved color accuracy in VDP highlight mode to match results observed on real hardware. * improved sprites processing timing accuracy: fixes (un)masked sprites in Mickey Mania (3D level), Sonic 2 (VS mode). * improved horizontal blanking & HINT/VINT occurrence timing accuracy, as measured on real hardware. * improved H-Counter accuracy in 40-cell mode, as measured on real hardware. * optimized Z80 bus status signals * usual code cleanup [GCN/WII] --------- fixed ASNDLIB exit when returning to game fixed audio/video startup sync modified audio back-end engine according to new audio processing core (see above)
33 lines
1.1 KiB
C
33 lines
1.1 KiB
C
/*
|
|
SN76489 emulation
|
|
by Maxim in 2001 and 2002
|
|
converted from my original Delphi implementation
|
|
|
|
I'm a C newbie so I'm sure there are loads of stupid things
|
|
in here which I'll come back to some day and redo
|
|
|
|
Includes:
|
|
- Super-high quality tone channel "oversampling" by calculating fractional positions on transitions
|
|
- Noise output pattern reverse engineered from actual SMS output
|
|
- Volume levels taken from actual SMS output
|
|
*/
|
|
|
|
#ifndef _SN76489_H_
|
|
#define _SN76489_H_
|
|
|
|
/* Function prototypes */
|
|
extern void SN76489_Init(float PSGClockValue, int SamplingRate);
|
|
extern void SN76489_Reset(void);
|
|
extern void SN76489_Shutdown(void);
|
|
extern void SN76489_SetContext(uint8 *data);
|
|
extern void SN76489_GetContext(uint8 *data);
|
|
extern uint8 *SN76489_GetContextPtr(void);
|
|
extern int SN76489_GetContextSize(void);
|
|
extern void SN76489_Write(int data);
|
|
extern void SN76489_Update(INT16 *buffer, int length);
|
|
extern void SN76489_BoostNoise(int boost);
|
|
extern void SN76489_Config(int mute, int volume, int feedback, int sr_width, int boost_noise);
|
|
|
|
#endif /* _SN76489_H_ */
|
|
|