mirror of
https://github.com/trudnai/Steve2.git
synced 2024-12-22 06:29:15 +00:00
- Fixed disk sfx buffer initialization error
- disk sfx only allowed at lower speed
This commit is contained in:
parent
2dc3040dc5
commit
96ae85ec71
@ -43,6 +43,8 @@ unsigned long long int inst_cnt = 0;
|
|||||||
|
|
||||||
//const unsigned int fps = 30;
|
//const unsigned int fps = 30;
|
||||||
const unsigned long long default_MHz_6502 = 1.023 * M; // 2 * M; // 4 * M; // 8 * M; // 16 * M; // 128 * M; // 256 * M; // 512 * M;
|
const unsigned long long default_MHz_6502 = 1.023 * M; // 2 * M; // 4 * M; // 8 * M; // 16 * M; // 128 * M; // 256 * M; // 512 * M;
|
||||||
|
const unsigned long long iigs_MHz_6502 = 2.8 * M;
|
||||||
|
const unsigned long long iicplus_MHz_6502 = 4 * M;
|
||||||
const unsigned long long startup_MHz_6502 = 32 * M;
|
const unsigned long long startup_MHz_6502 = 32 * M;
|
||||||
unsigned long long MHz_6502 = default_MHz_6502;
|
unsigned long long MHz_6502 = default_MHz_6502;
|
||||||
unsigned long long clk_6502_per_frm = default_MHz_6502 / fps;
|
unsigned long long clk_6502_per_frm = default_MHz_6502 / fps;
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
|
|
||||||
extern const unsigned long long default_MHz_6502;
|
extern const unsigned long long default_MHz_6502;
|
||||||
|
extern const unsigned long long iigs_MHz_6502;
|
||||||
|
extern const unsigned long long iicplus_MHz_6502;
|
||||||
extern unsigned long long MHz_6502;
|
extern unsigned long long MHz_6502;
|
||||||
extern unsigned long long clk_6502_per_frm;
|
extern unsigned long long clk_6502_per_frm;
|
||||||
extern unsigned long long clk_6502_per_frm_set;
|
extern unsigned long long clk_6502_per_frm_set;
|
||||||
|
@ -159,7 +159,6 @@ void spkr_init() {
|
|||||||
alGenBuffers(BUFFER_COUNT, spkr_buffers);
|
alGenBuffers(BUFFER_COUNT, spkr_buffers);
|
||||||
alGenBuffers(1, &spkr_disk_motor_buf);
|
alGenBuffers(1, &spkr_disk_motor_buf);
|
||||||
alGenBuffers(1, &spkr_disk_arm_buf);
|
alGenBuffers(1, &spkr_disk_arm_buf);
|
||||||
alGenBuffers(1, &spkr_disk_ioerr_buf);
|
|
||||||
al_check_error();
|
al_check_error();
|
||||||
|
|
||||||
// Set-up sound source and play buffer
|
// Set-up sound source and play buffer
|
||||||
@ -237,7 +236,8 @@ void spkr_exit() {
|
|||||||
|
|
||||||
al_check_error();
|
al_check_error();
|
||||||
|
|
||||||
spkr_src[0] = 0;
|
memset(spkr_src, 0, sizeof(spkr_src));
|
||||||
|
memset(spkr_buffers, 0, sizeof(spkr_buffers));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -467,7 +467,6 @@ void spkr_play_sfx( ALuint src, uint8_t * sfx, int len ) {
|
|||||||
|
|
||||||
|
|
||||||
void spkr_stop_sfx( ALuint src ) {
|
void spkr_stop_sfx( ALuint src ) {
|
||||||
|
|
||||||
ALenum state;
|
ALenum state;
|
||||||
alGetSourcei( src, AL_SOURCE_STATE, &state );
|
alGetSourcei( src, AL_SOURCE_STATE, &state );
|
||||||
// al_check_error();
|
// al_check_error();
|
||||||
@ -487,32 +486,30 @@ void spkr_stop_sfx( ALuint src ) {
|
|||||||
|
|
||||||
|
|
||||||
void spkr_play_disk_motor() {
|
void spkr_play_disk_motor() {
|
||||||
if ( diskAccelerator_count == 0 ) {
|
if ( clk_6502_per_frm <= iicplus_MHz_6502 / fps ) {
|
||||||
spkr_play_sfx( spkr_src[1], diskmotor_sfx, diskmotor_sfx_len );
|
spkr_play_sfx( spkr_src[1], diskmotor_sfx, diskmotor_sfx_len );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void spkr_stop_disk_motor( int time ) {
|
void spkr_stop_disk_motor( int time ) {
|
||||||
if ( diskAccelerator_count == 0 ) {
|
if ( clk_6502_per_frm <= iicplus_MHz_6502 / fps ) {
|
||||||
spkr_play_disk_motor_time = time;
|
spkr_play_disk_motor_time = time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void spkr_play_disk_arm() {
|
void spkr_play_disk_arm() {
|
||||||
if ( diskAccelerator_count == 0 ) {
|
if ( clk_6502_per_frm <= iicplus_MHz_6502 / fps ) {
|
||||||
if ( spkr_play_disk_ioerr_time == 0 ) {
|
if ( spkr_play_disk_ioerr_time == 0 ) {
|
||||||
spkr_play_sfx( spkr_src[2], diskarm_sfx, diskarm_sfx_len );
|
spkr_play_sfx( spkr_src[2], diskarm_sfx, diskarm_sfx_len );
|
||||||
spkr_play_disk_arm_time = 2;
|
spkr_play_disk_arm_time = 2;
|
||||||
// spkr_play_disk_ioerr_time = 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void spkr_play_disk_ioerr() {
|
void spkr_play_disk_ioerr() {
|
||||||
// spkr_stop_sfx( spkr_src[3], &spkr_disk_ioerr_buf );
|
if ( clk_6502_per_frm <= iicplus_MHz_6502 / fps ) {
|
||||||
if ( diskAccelerator_count == 0 ) {
|
|
||||||
spkr_playqueue_sfx( spkr_src[3], diskioerr_sfx, diskioerr_sfx_len - 512);
|
spkr_playqueue_sfx( spkr_src[3], diskioerr_sfx, diskioerr_sfx_len - 512);
|
||||||
spkr_play_disk_ioerr_time = 4;
|
spkr_play_disk_ioerr_time = 4;
|
||||||
}
|
}
|
||||||
@ -520,25 +517,32 @@ void spkr_play_disk_ioerr() {
|
|||||||
|
|
||||||
|
|
||||||
void update_disk_sfx( unsigned * time, ALuint src ) {
|
void update_disk_sfx( unsigned * time, ALuint src ) {
|
||||||
if ( diskAccelerator_count == 0 ) {
|
if ( *time ) {
|
||||||
if ( *time ) {
|
if ( --*time == 0 ) {
|
||||||
if ( --*time == 0 ) {
|
spkr_stop_sfx( src );
|
||||||
spkr_stop_sfx( src );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void spkr_update_disk_sfx() {
|
void spkr_update_disk_sfx() {
|
||||||
if ( diskAccelerator_count == 0 ) {
|
// is user speeds up the machine, disk sfx needs to be stopped
|
||||||
update_disk_sfx( &spkr_play_disk_motor_time, spkr_src[1] );
|
if ( clk_6502_per_frm > iicplus_MHz_6502 / fps ) {
|
||||||
update_disk_sfx( &spkr_play_disk_arm_time, spkr_src[2] );
|
if ( spkr_play_disk_motor_time ) {
|
||||||
|
spkr_play_disk_motor_time = 1; // rest will be taken care below
|
||||||
// we do not need to stop playing,
|
}
|
||||||
// however, counter needed to eliminate arm movement noise while in io error
|
if ( spkr_play_disk_arm_time ) {
|
||||||
if ( spkr_play_disk_ioerr_time ) {
|
spkr_play_disk_arm_time = 1; // rest will be taken care below
|
||||||
spkr_play_disk_ioerr_time--;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_disk_sfx( &spkr_play_disk_motor_time, spkr_src[1] );
|
||||||
|
update_disk_sfx( &spkr_play_disk_arm_time, spkr_src[2] );
|
||||||
|
|
||||||
|
// we do not need to stop playing,
|
||||||
|
// however, counter needed to eliminate arm movement noise while in io error
|
||||||
|
if ( spkr_play_disk_ioerr_time ) {
|
||||||
|
spkr_play_disk_ioerr_time--;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user