Can somewhat load from audio

This commit is contained in:
2026-04-28 20:09:03 +01:00
parent 38bef38f96
commit ae685eabd6
7 changed files with 127 additions and 105 deletions

View File

@@ -46,6 +46,11 @@ namespace Core.Io
}
}
public void Stop()
{
_state = TapeState.Idle;
}
private void LoadNextBlock()
{
if (_blocks.Count == 0)
@@ -142,7 +147,8 @@ namespace Core.Io
break;
case TapeState.Pause:
LoadNextBlock();
_state = TapeState.Idle;
//LoadNextBlock();
break;
}
}
@@ -157,54 +163,28 @@ namespace Core.Io
}
// --- FAST LOAD METHODS (For ROM Hijack) ---
//public byte[] GetNextBlock()
//{
// return _blocks.Count > 0 ? _blocks.Dequeue() : null;
//}
//public bool HasBlocks => _blocks.Count > 0;
// Change this line:
public bool HasBlocks => _blocks.Count > 0 || _currentBlock != null;
public byte[] GetNextBlock()
{
// If a block is loaded into the tape deck, yank it immediately
if (_currentBlock != null)
{
byte[] blockToReturn = _currentBlock;
_state = TapeState.Idle; // Ensure the tape deck is stopped
_currentBlock = null;
return blockToReturn;
}
// Otherwise, pull directly from the queue
return _blocks.Count > 0 ? _blocks.Dequeue() : null;
}
public bool HasBlocks => _blocks.Count > 0;
}
}
//using System;
//using System.Collections.Generic;
//namespace Core.Io
//{
// public class TapManager
// {
// private Queue<byte[]> _blocks = new Queue<byte[]>();
// public void LoadTapData(byte[] fileData)
// {
// _blocks.Clear();
// int position = 0;
// while (position < fileData.Length)
// {
// // 1. Read the 16-bit block length (Little Endian)
// int blockLength = fileData[position] | (fileData[position + 1] << 8);
// position += 2;
// // 2. Extract the block payload
// byte[] blockData = new byte[blockLength];
// Array.Copy(fileData, position, blockData, 0, blockLength);
// position += blockLength;
// // 3. Queue it up
// _blocks.Enqueue(blockData);
// }
// }
// public byte[] GetNextBlock()
// {
// return _blocks.Count > 0 ? _blocks.Dequeue() : null;
// }
// public bool HasBlocks => _blocks.Count > 0;
// }
//}
}