mirror of
https://github.com/wavemotion-dave/SpeccySE.git
synced 2025-06-18 22:05:37 -04:00
Version 0.8b with minor tape handling cleanup and some keyboard graphic improvements.
This commit is contained in:
parent
f33b052da6
commit
f69f805179
2
Makefile
2
Makefile
@ -15,7 +15,7 @@ include $(DEVKITARM)/ds_rules
|
|||||||
|
|
||||||
export TARGET := SpeccySE
|
export TARGET := SpeccySE
|
||||||
export TOPDIR := $(CURDIR)
|
export TOPDIR := $(CURDIR)
|
||||||
export VERSION := 0.8a
|
export VERSION := 0.8b
|
||||||
|
|
||||||
ICON := -b $(CURDIR)/logo.bmp "SpeccySE $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/SpeccySE"
|
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: 36 KiB After Width: | Height: | Size: 37 KiB |
@ -448,8 +448,6 @@ void ShowDebugZ80(void)
|
|||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
void DisplayStatusLine(bool bForce)
|
void DisplayStatusLine(bool bForce)
|
||||||
{
|
{
|
||||||
//if (myGlobalConfig.emuText == 0) return;
|
|
||||||
|
|
||||||
if ((speccy_mode != last_speccy_mode) || bForce)
|
if ((speccy_mode != last_speccy_mode) || bForce)
|
||||||
{
|
{
|
||||||
last_speccy_mode = speccy_mode;
|
last_speccy_mode = speccy_mode;
|
||||||
@ -469,12 +467,6 @@ void DisplayStatusLine(bool bForce)
|
|||||||
DSPrint(2, 21, 2, "$%&");
|
DSPrint(2, 21, 2, "$%&");
|
||||||
DSPrint(2, 22, 2, "DEF");
|
DSPrint(2, 22, 2, "DEF");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myGlobalConfig.emuText)
|
|
||||||
{
|
|
||||||
sprintf(tmp, "TAPE %-6d", tape_bytes_processed);
|
|
||||||
DSPrint(5,0,6, tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -482,9 +474,7 @@ void DisplayStatusLine(bool bForce)
|
|||||||
{
|
{
|
||||||
DSPrint(2, 21, 2, "!\"#");
|
DSPrint(2, 21, 2, "!\"#");
|
||||||
DSPrint(2, 22, 2, "ABC");
|
DSPrint(2, 22, 2, "ABC");
|
||||||
}
|
}
|
||||||
|
|
||||||
DSPrint(5,0,6, " ");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ void tape_parse_blocks(int tapeSize)
|
|||||||
TapeBlocks[num_blocks_available].id = BLOCK_ID_STANDARD;
|
TapeBlocks[num_blocks_available].id = BLOCK_ID_STANDARD;
|
||||||
TapeBlocks[num_blocks_available].gap_delay_after = DEFAULT_TAPE_GAP_DELAY_MS;
|
TapeBlocks[num_blocks_available].gap_delay_after = DEFAULT_TAPE_GAP_DELAY_MS;
|
||||||
TapeBlocks[num_blocks_available].pilot_length = DEFAULT_PILOT_LENGTH;
|
TapeBlocks[num_blocks_available].pilot_length = DEFAULT_PILOT_LENGTH;
|
||||||
TapeBlocks[num_blocks_available].pilot_pulses = ((block_flag < 128) ? DEFAULT_HEADER_PULSE_TOGGLES : DEFAULT_DATA_PULSE_TOGGLES);
|
TapeBlocks[num_blocks_available].pilot_pulses = ((block_flag & 0x80) ? DEFAULT_DATA_PULSE_TOGGLES : DEFAULT_HEADER_PULSE_TOGGLES);
|
||||||
TapeBlocks[num_blocks_available].sync1_width = DEFAULT_SYNC_PULSE1_WIDTH;
|
TapeBlocks[num_blocks_available].sync1_width = DEFAULT_SYNC_PULSE1_WIDTH;
|
||||||
TapeBlocks[num_blocks_available].sync2_width = DEFAULT_SYNC_PULSE2_WIDTH;
|
TapeBlocks[num_blocks_available].sync2_width = DEFAULT_SYNC_PULSE2_WIDTH;
|
||||||
TapeBlocks[num_blocks_available].data_one_width = DEFAULT_DATA_ONE_PULSE_WIDTH;
|
TapeBlocks[num_blocks_available].data_one_width = DEFAULT_DATA_ONE_PULSE_WIDTH;
|
||||||
@ -222,7 +222,7 @@ void tape_parse_blocks(int tapeSize)
|
|||||||
TapeBlocks[num_blocks_available].block_data_len = block_len;
|
TapeBlocks[num_blocks_available].block_data_len = block_len;
|
||||||
TapeBlocks[num_blocks_available].block_flag = block_flag;
|
TapeBlocks[num_blocks_available].block_flag = block_flag;
|
||||||
|
|
||||||
if ((block_flag < 128) || (block_len == 19)) // Header
|
if (!(block_flag & 0x80) || (block_len == 19)) // Header
|
||||||
{
|
{
|
||||||
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+4], 10);
|
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+4], 10);
|
||||||
}
|
}
|
||||||
@ -256,7 +256,7 @@ void tape_parse_blocks(int tapeSize)
|
|||||||
|
|
||||||
TapeBlocks[num_blocks_available].gap_delay_after = gap_len;
|
TapeBlocks[num_blocks_available].gap_delay_after = gap_len;
|
||||||
TapeBlocks[num_blocks_available].pilot_length = DEFAULT_PILOT_LENGTH;
|
TapeBlocks[num_blocks_available].pilot_length = DEFAULT_PILOT_LENGTH;
|
||||||
TapeBlocks[num_blocks_available].pilot_pulses = ((block_flag < 128) ? DEFAULT_DATA_PULSE_TOGGLES : DEFAULT_HEADER_PULSE_TOGGLES);
|
TapeBlocks[num_blocks_available].pilot_pulses = ((block_flag & 0x80) ? DEFAULT_DATA_PULSE_TOGGLES : DEFAULT_HEADER_PULSE_TOGGLES);
|
||||||
TapeBlocks[num_blocks_available].sync1_width = DEFAULT_SYNC_PULSE1_WIDTH;
|
TapeBlocks[num_blocks_available].sync1_width = DEFAULT_SYNC_PULSE1_WIDTH;
|
||||||
TapeBlocks[num_blocks_available].sync2_width = DEFAULT_SYNC_PULSE2_WIDTH;
|
TapeBlocks[num_blocks_available].sync2_width = DEFAULT_SYNC_PULSE2_WIDTH;
|
||||||
TapeBlocks[num_blocks_available].data_one_width = DEFAULT_DATA_ONE_PULSE_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_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;
|
TapeBlocks[num_blocks_available].data_zero_widthX2 = TapeBlocks[num_blocks_available].data_zero_width << 1;
|
||||||
|
|
||||||
if ((block_flag < 128) || (block_len == 19)) // Header
|
if (!(block_flag & 0x80) || (block_len == 19)) // Header
|
||||||
{
|
{
|
||||||
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+4+2], 10);
|
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_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;
|
TapeBlocks[num_blocks_available].data_zero_widthX2 = TapeBlocks[num_blocks_available].data_zero_width << 1;
|
||||||
|
|
||||||
if ((block_flag < 128) || (block_len == 19)) // Header
|
if (!(block_flag & 0x80) || (block_len == 19)) // Header
|
||||||
{
|
{
|
||||||
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+18+2], 10);
|
memcpy(TapeBlocks[num_blocks_available].block_filename, &ROM_Memory[idx+18+2], 10);
|
||||||
}
|
}
|
||||||
@ -480,9 +480,23 @@ void tape_position(u8 newPos)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called every frame
|
// Called every frame
|
||||||
|
u8 show_tape_counter = 0;
|
||||||
void tape_frame(void)
|
void tape_frame(void)
|
||||||
{
|
{
|
||||||
// Not sure if we need this yet... called after every 1 frame of timing in the main loop
|
char tmp[5];
|
||||||
|
if (tape_state)
|
||||||
|
{
|
||||||
|
sprintf(tmp, "%03d", (tape_bytes_processed/1000) % 1000);
|
||||||
|
DSPrint(2, 20, 0, tmp);
|
||||||
|
show_tape_counter = 60;
|
||||||
|
}
|
||||||
|
else if (show_tape_counter)
|
||||||
|
{
|
||||||
|
if (--show_tape_counter == 0)
|
||||||
|
{
|
||||||
|
DSPrint(2, 20, 0, " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@ -735,7 +749,7 @@ ITCM_CODE u8 tape_pulse(void)
|
|||||||
{
|
{
|
||||||
last_edge = CPU.TStates;
|
last_edge = CPU.TStates;
|
||||||
tape_state = TAPE_DELAY_AFTER; // We're done with this block... delay after
|
tape_state = TAPE_DELAY_AFTER; // We're done with this block... delay after
|
||||||
return 0x00; // But make at least one transition back to 'low'
|
// Do not return here... if delay is zero we don't want to perform any transition
|
||||||
}
|
}
|
||||||
else // We've got another byte to process...
|
else // We've got another byte to process...
|
||||||
{
|
{
|
||||||
@ -781,7 +795,7 @@ ITCM_CODE u8 tape_pulse(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TAPE_DELAY_AFTER: // Normally ~1 second but can be different for custom tapes
|
case TAPE_DELAY_AFTER: // Normally ~1 second but can be different for custom tapes
|
||||||
if ((CPU.TStates-last_edge) <= (TapeBlocks[current_block].gap_delay_after * 3500)) return 0x00;
|
if ((CPU.TStates-last_edge) < (TapeBlocks[current_block].gap_delay_after * 3500)) return 0x00; // Must be < so we do nothing if delay is zero
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tape_search_for_loader();
|
tape_search_for_loader();
|
||||||
|
Loading…
Reference in New Issue
Block a user