mirror of
https://github.com/wavemotion-dave/SpeccySE.git
synced 2025-06-18 13:55:33 -04:00
Version 0.8a with a fix for the accelerated loader (which was disabled by mistake)
This commit is contained in:
parent
00c43705f1
commit
f33b052da6
2
Makefile
2
Makefile
@ -15,7 +15,7 @@ include $(DEVKITARM)/ds_rules
|
||||
|
||||
export TARGET := SpeccySE
|
||||
export TOPDIR := $(CURDIR)
|
||||
export VERSION := 0.8
|
||||
export VERSION := 0.8a
|
||||
|
||||
ICON := -b $(CURDIR)/logo.bmp "SpeccySE $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/SpeccySE"
|
||||
|
||||
|
BIN
SpeccySE.nds
BIN
SpeccySE.nds
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
@ -1798,7 +1798,6 @@ void debug_save()
|
||||
fwrite(debug_buffer, 1, debug_len, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
debug[1]++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -359,10 +359,9 @@ ITCM_CODE void speccy_render_screen(u8 line)
|
||||
if (zx_128k_mode) zx_ScreenPage = RAM_Memory128 + ((portFD & 0x08) ? 7:5) * 0x4000;
|
||||
else zx_ScreenPage = RAM_Memory + 0x4000;
|
||||
|
||||
// -----------------------------------------------
|
||||
// Now run through the entire screen from top to
|
||||
// bottom and render it into our NDS video memory
|
||||
// -----------------------------------------------
|
||||
// --------------------------------------------------
|
||||
// Render the current line into our NDS video memory
|
||||
// --------------------------------------------------
|
||||
int y = line;
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
@ -164,7 +164,7 @@ void tape_patch(void)
|
||||
if (myConfig.tapeSpeed)
|
||||
{
|
||||
PatchLookup[0x05F3] = tape_sample_standard;
|
||||
PatchLookup[0x05E9] = tape_predelay_accel; // DEC A followed by JRNZ back to the DEC A (delay loop) 0x3D 0x20 +0xFD
|
||||
PatchLookup[0x05EA] = tape_predelay_accel; // DEC A followed by JRNZ back to the DEC A (delay loop) 0x3D 0x20 +0xFD
|
||||
loader_type = "STANDARD";
|
||||
}
|
||||
}
|
||||
@ -256,7 +256,7 @@ void tape_parse_blocks(int tapeSize)
|
||||
|
||||
TapeBlocks[num_blocks_available].gap_delay_after = gap_len;
|
||||
TapeBlocks[num_blocks_available].pilot_length = DEFAULT_PILOT_LENGTH;
|
||||
TapeBlocks[num_blocks_available].pilot_pulses = (block_flag ? DEFAULT_DATA_PULSE_TOGGLES : DEFAULT_HEADER_PULSE_TOGGLES);
|
||||
TapeBlocks[num_blocks_available].pilot_pulses = ((block_flag < 128) ? DEFAULT_DATA_PULSE_TOGGLES : DEFAULT_HEADER_PULSE_TOGGLES);
|
||||
TapeBlocks[num_blocks_available].sync1_width = DEFAULT_SYNC_PULSE1_WIDTH;
|
||||
TapeBlocks[num_blocks_available].sync2_width = DEFAULT_SYNC_PULSE2_WIDTH;
|
||||
TapeBlocks[num_blocks_available].data_one_width = DEFAULT_DATA_ONE_PULSE_WIDTH;
|
||||
@ -269,7 +269,7 @@ void tape_parse_blocks(int tapeSize)
|
||||
TapeBlocks[num_blocks_available].data_one_widthX2 = TapeBlocks[num_blocks_available].data_one_width << 1;
|
||||
TapeBlocks[num_blocks_available].data_zero_widthX2 = TapeBlocks[num_blocks_available].data_zero_width << 1;
|
||||
|
||||
if ((block_flag == 0x00) || (block_len == 19)) // Header
|
||||
if ((block_flag < 128) || (block_len == 19)) // Header
|
||||
{
|
||||
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+4+2], 10);
|
||||
}
|
||||
@ -305,7 +305,7 @@ void tape_parse_blocks(int tapeSize)
|
||||
TapeBlocks[num_blocks_available].data_one_widthX2 = TapeBlocks[num_blocks_available].data_one_width << 1;
|
||||
TapeBlocks[num_blocks_available].data_zero_widthX2 = TapeBlocks[num_blocks_available].data_zero_width << 1;
|
||||
|
||||
if ((block_flag == 0x00) || (block_len == 19)) // Header
|
||||
if ((block_flag < 128) || (block_len == 19)) // Header
|
||||
{
|
||||
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+18+2], 10);
|
||||
}
|
||||
@ -591,6 +591,7 @@ ITCM_CODE u8 tape_pulse(void)
|
||||
break;
|
||||
|
||||
case BLOCK_ID_PAUSE_STOP: // Delay/Pause/Stop the Tape
|
||||
last_edge = CPU.TStates;
|
||||
tape_state = TAPE_DELAY_AFTER;
|
||||
break;
|
||||
|
||||
@ -706,13 +707,19 @@ ITCM_CODE u8 tape_pulse(void)
|
||||
// --------------------------------------------------------------------------
|
||||
if ((CPU.TStates-last_edge) > 10000) // Slow bit reads happening?
|
||||
{
|
||||
if (myConfig.autoStop)
|
||||
if (++give_up_counter > 5)
|
||||
{
|
||||
if (++give_up_counter > 5)
|
||||
if (myConfig.autoStop)
|
||||
{
|
||||
tape_stop();
|
||||
return 0x00;
|
||||
}
|
||||
else // No auto-stop... best we can do is go back to the start of the block
|
||||
{
|
||||
tape_stop();
|
||||
tape_play();
|
||||
return 0x00;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -777,6 +784,8 @@ ITCM_CODE u8 tape_pulse(void)
|
||||
if ((CPU.TStates-last_edge) <= (TapeBlocks[current_block].gap_delay_after * 3500)) return 0x00;
|
||||
else
|
||||
{
|
||||
tape_search_for_loader();
|
||||
|
||||
// A delay of zero is not special unless we are the BLOCK_ID_PAUSE_STOP block type...
|
||||
if ((TapeBlocks[current_block].id == BLOCK_ID_PAUSE_STOP) && (TapeBlocks[current_block].gap_delay_after == 0))
|
||||
{
|
||||
@ -787,8 +796,6 @@ ITCM_CODE u8 tape_pulse(void)
|
||||
{
|
||||
current_block++;
|
||||
tape_state = TAPE_NEXT_BLOCK; // And back to play if we have more tape
|
||||
|
||||
tape_search_for_loader();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user