mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-29 04:31:49 +01:00
ab4638144c
--------------- * added support for Master System compatibility mode (Z80 ports access mode), incl. Mode 5 rendering. * added Mode 4 rendering for both Genesis & Master System modes. * added alternate BG planes rendering functions (should be faster on PPC architectures). [Core/IO] --------------- * added support for Master System compatibility mode (Z80 ports access mode). * added Master System peripherals emulation (Control Pad, Paddle, Sports Pad & Light Phaser). * added XE-1AP (analog controller) emulation. * added Activator emulation. [Core/Extra] --------------- * added support for all known Master System cartridge mappers. * added copy-protection hardware emulation for a few MD unlicensed games: fixes 777 Casino (crash when talking to bunny girls). (NB: most of those unlicensed games seem to have been already patched by ROM dumpers, main purpose is documenting them) * added support for Top Shooter arcade board controller. (A=Shoot, B=Bet, C/RIGHT=Coins, START=Start, hold UP on startup to enter service mode) * improved King of Fighters 98 mapper emulation (registers address decoding is now 100% accurate) * fixed Game Genie when several codes affect same ROM address. * fixed EEPROM types for Brian Lara Cricket & NBA Jam TE (verified on real cartridges) [Core/General] --------------- * added Master System compatibility mode emulation (automatically enabled when loading ROM file with .sms extension). * improved savestate stability & compatibility (support for old 1.4.x savestates is preserved) * various code cleanup & comments. [Gamecube/Wii] --------------- * fixed cheat codes handling when several codes affect same ROM address. * improved input controller detection on menu exit. * improved key remapping dialog box to match emulated device * changed Menu key for Gamecube controller to allow MODE button mapping * fixed DVD not being unmounted on swap (memory leak) [Wii only] --------------- * added USB mouse support for Sega Mouse emulation * compiled with latest libogc: improves USB compatibility & fixes stability issues with Wiimotes.
52 lines
2.0 KiB
C
52 lines
2.0 KiB
C
/* Fast sound synthesis buffer for use in real-time emulators of electronic
|
|
sound generator chips like those in early video game consoles. Uses linear
|
|
interpolation. Higher-quality versions are available that use sinc-based
|
|
band-limited synthesis. */
|
|
|
|
#ifndef BLIP_H
|
|
#define BLIP_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Creates a new blip_buffer with specified input clock rate, output
|
|
sample rate, and size (in samples), or returns NULL if out of memory. */
|
|
typedef struct blip_buffer_t blip_buffer_t;
|
|
blip_buffer_t* blip_alloc( double clock_rate, double sample_rate, int size );
|
|
|
|
/* Frees memory used by a blip_buffer. No effect if NULL is passed. */
|
|
void blip_free( blip_buffer_t* );
|
|
|
|
/* Removes all samples and clears buffer. */
|
|
void blip_clear( blip_buffer_t* );
|
|
|
|
/* Adds an amplitude transition of delta at specified time in source clocks.
|
|
Delta can be negative. */
|
|
void blip_add( blip_buffer_t*, int time, int delta );
|
|
|
|
/* Number of additional clocks needed until n samples will be available.
|
|
If buffer cannot even hold n samples, returns number of clocks until buffer
|
|
becomes full. */
|
|
int blip_clocks_needed( const blip_buffer_t*, int samples_needed );
|
|
|
|
/* Ends current time frame of specified duration and make its samples available
|
|
(along with any still-unread samples) for reading with read_samples(), then
|
|
begins a new time frame at the end of the current frame. */
|
|
void blip_end_frame( blip_buffer_t*, int duration );
|
|
|
|
/* Number of samples available for reading with read(). */
|
|
int blip_samples_avail( const blip_buffer_t* );
|
|
|
|
/* Reads at most n samples out of buffer into out, removing them from from
|
|
the buffer. Returns number of samples actually read and removed. If stereo is
|
|
true, increments 'out' one extra time after writing each sample, to allow
|
|
easy interleving of two channels into a stereo output buffer. */
|
|
int blip_read_samples( blip_buffer_t*, short out [], int n, int stereo );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|