mirror of
https://github.com/trudnai/Steve2.git
synced 2024-06-12 18:45:22 +00:00
- Input res for Game Mode is back to 480 Hz
- Better sound even at 2 and 4 MHz
This commit is contained in:
parent
a56c93234d
commit
61f080476c
|
@ -22,10 +22,13 @@
|
|||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "ViewController.extraBuf(_:):ViewController.swift">
|
||||
contextName = "BRA:6502_instr_branch.h">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "soundGapLabel">
|
||||
value = "">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "RAM[0x346f]">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -86,7 +89,7 @@
|
|||
contextName = "closure #1 in ViewController.Update():ViewController.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "txtArr">
|
||||
value = "MEMcfg.is_80STORE">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "self.shadowTxt">
|
||||
|
@ -95,10 +98,10 @@
|
|||
value = "txt">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "MEMcfg.is_80STORE">
|
||||
value = "MEMcfg.txt_page_2">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "MEMcfg.txt_page_2">
|
||||
value = "txtArr">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -165,6 +168,14 @@
|
|||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "ViewController.Render():ViewController.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "fps / video_fps_divider / 2">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "addr_abs:mmio.h">
|
||||
<PersistentStrings>
|
||||
|
@ -311,31 +322,31 @@
|
|||
contextName = "spkr_update:speaker.c">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "clk_6502_per_frm_max">
|
||||
value = "clkfrm">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "spkr_samples[ spkr_sample_idx -1] ">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[452]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "spkr_sample_idx">
|
||||
value = "clk_6502_per_frm">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[451]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "clk_6502_per_frm">
|
||||
value = "clk_6502_per_frm_max">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "spkr_sample_idx">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[455]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "clkfrm">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "spkr_playUpd:speaker.c">
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "MonitorView.frameDidChange(notification:):MonitorView.swift">
|
||||
<PersistentStrings>
|
||||
|
@ -350,6 +361,9 @@
|
|||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "spkr_playUpd:speaker.c">
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "mach_msg_trap:(null)">
|
||||
<PersistentStrings>
|
||||
|
@ -399,7 +413,7 @@
|
|||
value = "pdl_value[pdl]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "normalized_time >= pdl_value[pdl] ? 255 : 0">
|
||||
value = "normalized_time">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(3300 * 255/3300)">
|
||||
|
@ -411,7 +425,7 @@
|
|||
value = "1 * 512 * (1 - ( 3300 / 3300.0 ))">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "normalized_time">
|
||||
value = "normalized_time >= pdl_value[pdl] ? 255 : 0">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -459,7 +473,7 @@
|
|||
contextName = "LoRes.Update():LoRes.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "blockChanged[ screenIdx ]">
|
||||
value = "UInt8( (block >> 4) & 0x0F )">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "UInt8(block)">
|
||||
|
@ -468,7 +482,7 @@
|
|||
value = "UInt8(block & 4)">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "UInt8( (block >> 4) & 0x0F )">
|
||||
value = "blockChanged[ screenIdx ]">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -503,10 +517,10 @@
|
|||
contextName = "set_flags_NZC:common.h">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "(unsigned)test ">
|
||||
value = "(unsigned)0xFF">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(unsigned)0xFF">
|
||||
value = "(unsigned)test ">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -597,6 +611,26 @@
|
|||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "DisplayView.adjustTextDisplaySize():DisplayView.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "self.frame">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "frame">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "textDisplay_height_diff">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "bounds">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "textDisplay_width_diff">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "ioRead:Apple2_mmio.h">
|
||||
<PersistentStrings>
|
||||
|
@ -636,7 +670,7 @@
|
|||
contextName = "spkr_toggle:speaker.c">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "(int)spkr_sample_idx_diff">
|
||||
value = "spkr_samples[spkr_sample_last_idx]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(int16_t)28000 + (int16_t)-32768">
|
||||
|
@ -645,16 +679,16 @@
|
|||
value = "default_MHz_6502 * 1000 * 1000 / spkr_sample_rate">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "( (spkr_clk + m6502.clkfrm) / ( 1024000 / spkr_sample_rate ) ) * 2">
|
||||
value = "(int)spkr_sample_idx_diff">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(spkr_clk + m6502.clkfrm)">
|
||||
value = "( (spkr_clk + m6502.clkfrm) / ( 1024000 / spkr_sample_rate ) ) * 2">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "( (spkr_clk + m6502.clkfrm) / ( default_MHz_6502 * 1000 * 1000 / spkr_sample_rate)) * 2">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "spkr_samples[spkr_sample_last_idx]">
|
||||
value = "(spkr_clk + m6502.clkfrm)">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -662,14 +696,17 @@
|
|||
contextName = "HiRes.draw(_:):HiRes.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "linAddr">
|
||||
value = "(blockH7 | ( block & bitMask ))">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "HiRes.blockCols">
|
||||
value = "ctx?.data">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.width">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.bitmapInfo">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.bytesPerRow">
|
||||
</PersistentString>
|
||||
|
@ -680,22 +717,19 @@
|
|||
value = "HiResLineAddrTbl">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.bitmapInfo">
|
||||
value = "HiRes.blockCols">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "shadowScreen">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(blockH7 | ( block & bitMask ))">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.height">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.bitsPerComponent">
|
||||
value = "linAddr">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.data">
|
||||
value = "ctx?.bitsPerComponent">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -711,13 +745,13 @@
|
|||
contextName = "HiRes.compute():HiRes.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "computePipelineState.maxTotalThreadsPerThreadgroup">
|
||||
value = "UnsafeRawBufferPointer(result)">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "result[2]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "UnsafeRawBufferPointer(result)">
|
||||
value = "computePipelineState.maxTotalThreadsPerThreadgroup">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -769,13 +803,13 @@
|
|||
value = "Apple2_64K_RAM + 0x3600">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "m6502.PC">
|
||||
value = "Apple2_64K_AUX + 0x3600">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(void*)Apple2_64K_RAM">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "Apple2_64K_AUX + 0x3600">
|
||||
value = "m6502.PC">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -831,7 +865,7 @@
|
|||
value = "new">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "WOZwrite.shift16">
|
||||
value = "WOZtmp.shift16">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "WOZwrite.shift">
|
||||
|
@ -843,7 +877,7 @@
|
|||
value = "(1 << i) - 1">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "WOZtmp.shift16">
|
||||
value = "WOZwrite.shift16">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -886,9 +920,24 @@
|
|||
<ContextState
|
||||
contextName = "MonitorView.adjustTextDisplaySize():MonitorView.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "textDisplay_height_diff">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "textDisplay_width_diff">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "MonitorView.textViewBounds">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "frame.size">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "textDisplay.bounds">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "textDisplay.frame">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
|
@ -898,10 +947,10 @@
|
|||
value = "Apple2_64K_AUX + 0xC600">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(void*)rom">
|
||||
value = "Apple2_64K_RAM + 0xC600">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "Apple2_64K_RAM + 0xC600">
|
||||
value = "(void*)rom">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "strlen(fullPath)">
|
||||
|
@ -920,15 +969,18 @@
|
|||
<ContextState
|
||||
contextName = "spkr_toggle_edge:speaker.c">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "abs(spkr_level - level_max)">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "( 1023000 / (double)spkr_sample_rate)">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "spkr_samples">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "spkr_clk + m6502.clkfrm / (int)( 1023000 / (double)spkr_sample_rate) * 2">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "( 1023000 / (double)spkr_sample_rate)">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
|
@ -951,13 +1003,10 @@
|
|||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "BRA:6502_instr_branch.h">
|
||||
contextName = "ViewController.extraBuf(_:):ViewController.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "RAM[0x346f]">
|
||||
value = "soundGapLabel">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
|
|
@ -1110,13 +1110,13 @@ class ViewController: NSViewController {
|
|||
case 2.0:
|
||||
// spkr_extra_buf = Int32( Double(spkr_extra_buf) * 2.961538461538462 ) // normally it should come up as 77, but this way it is calculated with FPS
|
||||
// spkr_extra_buf = 20
|
||||
spkr_extra_buf = 88
|
||||
spkr_extra_buf = 0 // -25 // 88
|
||||
break
|
||||
|
||||
case 4.0:
|
||||
// spkr_extra_buf = Int32( Double(spkr_extra_buf) * 1.346153846153846 ) // normally it should come up as 35, but this way it is calculated with FPS
|
||||
// spkr_extra_buf = 45
|
||||
spkr_extra_buf = 20
|
||||
spkr_extra_buf = 0 // 80 // 20
|
||||
break
|
||||
|
||||
default:
|
||||
|
|
|
@ -198,7 +198,7 @@ extern double mhz;
|
|||
#define DEF_VIDEO_DIV 1U
|
||||
#define DEF_SPKR_DIV 1U
|
||||
|
||||
#define GAME_FPS 120U // 480U
|
||||
#define GAME_FPS 480U // 480U
|
||||
#define GAME_VIDEO_DIV (GAME_FPS / 60U)
|
||||
|
||||
extern unsigned int video_fps_divider;
|
||||
|
|
|
@ -425,7 +425,29 @@ void spkr_toggle_edge ( int level_max, const float initial_edge, const float fad
|
|||
|
||||
// float ema_len = 21;
|
||||
int ema_len = 7; // 8;
|
||||
|
||||
int ema_len_smooth = 8;
|
||||
unsigned threshold = SPKR_SAMPLE_PWM_THRESHOLD;
|
||||
unsigned limiter = 150;
|
||||
|
||||
switch ((int)MHz_6502) {
|
||||
case 2:
|
||||
ema_len = 4;
|
||||
ema_len_smooth = 5;
|
||||
threshold = SPKR_SAMPLE_PWM_THRESHOLD / 2;
|
||||
limiter = 512;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
ema_len = 3;
|
||||
ema_len_smooth = 5;
|
||||
threshold = SPKR_SAMPLE_PWM_THRESHOLD / 4;
|
||||
limiter = 1024;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// save last index before we advance it...
|
||||
spkr_sample_last_idx = spkr_sample_idx;
|
||||
|
||||
|
@ -435,8 +457,8 @@ void spkr_toggle_edge ( int level_max, const float initial_edge, const float fad
|
|||
spkr_level_tema = spkr_level;
|
||||
spkr_level_qema = spkr_level;
|
||||
|
||||
if ( idx_diff < SPKR_SAMPLE_PWM_THRESHOLD ) {
|
||||
ema_len = 8;
|
||||
if ( idx_diff < threshold ) {
|
||||
ema_len = ema_len_smooth;
|
||||
|
||||
if ( --spkr_att < 0 ) {
|
||||
level_max = SPKR_LEVEL_ZERO;
|
||||
|
@ -447,7 +469,7 @@ void spkr_toggle_edge ( int level_max, const float initial_edge, const float fad
|
|||
}
|
||||
|
||||
|
||||
for ( int i = 0; (i < spkr_buf_size * 2) && (abs(spkr_level - level_max) > 100); i++ ) {
|
||||
for ( int i = 0; (i < spkr_buf_size * 2) && (abs(spkr_level - level_max) > limiter); i++ ) {
|
||||
spkr_level_ema = ema(level_max, spkr_level_ema, ema_len);
|
||||
spkr_level_dema = ema(spkr_level_ema, spkr_level_dema, ema_len);
|
||||
spkr_level_tema = ema(spkr_level_dema, spkr_level_tema, ema_len);
|
||||
|
@ -505,7 +527,7 @@ void spkr_toggle() {
|
|||
|
||||
// push a click into the speaker buffer
|
||||
// (we will play the entire buffer at the end of the frame)
|
||||
spkr_sample_idx = ( (spkr_clk + m6502.clkfrm) / ( MHZ(default_MHz_6502) / spkr_sample_rate)) * SPKR_CHANNELS;
|
||||
spkr_sample_idx = ( (spkr_clk + m6502.clkfrm) / ( MHZ(MHz_6502) / spkr_sample_rate)) * SPKR_CHANNELS;
|
||||
spkr_sample_idx &= UINTMAX_MAX - 1;
|
||||
unsigned spkr_sample_idx_diff = spkr_sample_idx - spkr_sample_last_idx;
|
||||
// if ( (int)spkr_sample_idx_diff == 0 ) {
|
||||
|
@ -627,10 +649,13 @@ void spkr_update() {
|
|||
// fwrite(spkr_samples, sizeof(spkr_sample_t), (spkr_buf_size + spkr_extra_buf), af);
|
||||
// fflush(af);
|
||||
|
||||
alBufferData(spkr_buffers[freeBuffers], AL_FORMAT_STEREO16, spkr_samples, (spkr_buf_size + spkr_extra_buf) * sizeof(spkr_sample_t), spkr_sample_rate);
|
||||
alBufferData(spkr_buffers[freeBuffers], AL_FORMAT_STEREO16, spkr_samples, (spkr_buf_size + spkr_extra_buf) * sizeof(spkr_sample_t) / (MHz_6502 / default_MHz_6502), spkr_sample_rate / (MHz_6502 / default_MHz_6502));
|
||||
// alBufferData(spkr_buffers[freeBuffers], AL_FORMAT_STEREO16, spkr_samples, (spkr_buf_size + spkr_extra_buf) * sizeof(spkr_sample_t), spkr_sample_rate);
|
||||
|
||||
// alBufferData(spkr_buffers[freeBuffers], AL_FORMAT_STEREO16, spkr_samples, (spkr_sample_idx + spkr_extra_buf) * sizeof(spkr_sample_t), spkr_sample_rate);
|
||||
// ALint bufSize = spkr_sample_idx + 20 < spkr_buf_size ? spkr_sample_idx * sizeof(spkr_sample_t) + 20 : spkr_buf_alloc_size;
|
||||
// alBufferData(spkr_buffers[freeBuffers], AL_FORMAT_STEREO16, spkr_samples, bufSize + spkr_extra_buf, spkr_sample_rate);
|
||||
|
||||
al_check_error();
|
||||
alSourceQueueBuffers(spkr_src[SPKR_SRC_GAME_SFX], 1, &spkr_buffers[freeBuffers]);
|
||||
al_check_error();
|
||||
|
|
Loading…
Reference in New Issue
Block a user