Commit Graph

22 Commits

Author SHA1 Message Date
TomCh 71c67cf132
Refactor Mockingboard into a class (#1171)
Mockingboard or Phasor cards can be inserted into any slot.
Change Config->Sound to that slots 4+5 to be individually selected for the 3 soundcard types.
Add MockingboardCardManager class to manage multiple cards and mix the sound buffers.
2023-01-28 18:15:28 +00:00
tomcw 80c1150183 SSI263: for amplitude (reg3), now scale the samples and not SetVolume().
Reason: calling SetVolume() in Play() is too early, and the previous phoneme won't have completed.
Getting the timing right will be difficult, so better to just manipulate the samples as they get written to the playback buffer.
2022-06-05 12:10:50 +01:00
tomcw 1e65528763 SC01: use max amplitude 2022-06-03 22:16:20 +01:00
tomcw 9e9996bee7 SSI263: support reg3's amplitude 2022-06-03 22:09:32 +01:00
tomcw 16f66da594 SSI263: support phoneme zero amplitude
Refine Phasor native mode's logic for SSI263 access
2022-06-02 20:32:16 +01:00
tomcw 8f07479dad SSI263 phoneme playback bug: (fixes #1104)
Fix for rare race-condition, where a phoneme could complete immediately before SSI263's interrupt is enabled:
- resulting in A2 code failing to detect SSI263 or speech phrase never completing.
Only ever possible when debugger-stepping or in full-speed mode.
2022-05-29 10:32:11 +01:00
Kelvin Lee 2d4f60452f
Add ByteToHexStr() and WordToHexStr() (PR #1064)
- Simplify common StrFormat(), especially in Debugger (changes upcoming)
- Add helpers StrAppendByteAsHex() and StrAppendWordAsHex()
- Add helpers StrBufferAppendByteAsHex() and StrBufferAppendWordAsHex() for plain string buffer
2022-03-22 19:19:50 +00:00
Kelvin Lee dfb8802763
Replace sprintf() with StrFormat() (PR #1048) 2022-03-02 21:10:41 +00:00
Kelvin Lee 253a59fde6
Replace sprintf_s() and wsprintf() with StrFormat(). (PR #1041)
And these Debugger related:
. Improve FormatAddress() and GetSymbol().
. GetSymbol(), FindSymbolFromAddress(), FormatAddress() are changed to use std::string instead.
. Remove static variable (not nice) in FormatAddress().
. GetSymbol() returns std::string reference instead of pointer.
2022-02-26 17:54:06 +00:00
TomCh f7c6ef397c
Split 6522 out of MB code and into own class (PR #1028)
NB. Update CpuInitialize() & CriticalSection creation:
. call CpuInitialize() on WM_CREATE to create CriticalSection
. needed as MB_Initialize() needs CriticalSection
2022-02-05 18:48:36 +00:00
Andrea 47f721882e
throw std::runtime_error instead of std::string (PR #1011)
+ add more information about location of yaml parser error.
2021-12-18 16:37:28 +00:00
tomcw 6a5017bf91 SSI263: fix potential buffer overrun & rename var so it's explicit that it is a byte-size 2021-07-28 12:14:22 +01:00
tomcw 0ca972954e MB: fix for SSI263/SC01 in debugger's 'gg' mode (fixes #958) 2021-05-29 21:53:18 +01:00
Henri Asseily 1b9a769332
Fix to DirectSound not working in modern environments. Need to use FAILED() instead of boolean check. (PR #951) 2021-05-16 20:03:59 +01:00
tomcw e7a3f97bb6 SSI263: For SC01, don't change reg0.DUR value 2021-04-17 18:30:11 +01:00
tomcw 7a41ede6d9 SSI263: improve logging 2021-04-05 14:56:55 +01:00
tomcw 27fe4e5ed0 SSI263: when loading state, assert Phasor's speech IRQ if required 2021-04-01 20:52:00 +01:00
tomcw 33492ac9a2 On reset: clear Phasor speech IRQ 2021-03-31 22:09:04 +01:00
tomcw 91f2c43992 Disable SC01 logging 2021-03-28 22:18:00 +01:00
tomcw 2258d01184 MB: SC01 is only mapped to the 6522 at Cn00 2021-03-28 22:16:34 +01:00
tomcw fea5da7872 Logging: add support for SC01 2021-03-28 12:16:57 +01:00
TomCh 96bbc0c435
Improve SSI263 (PR #939)
New class for SSI263 (2 instances per MB/Phasor card)
- support 2nd SSI263 at $Cn20 connected to 6522-A (at $Cn00)

Switch from one-shot phoneme playback to ring-buffer
Use a new dedicated ring-buffer (distinct from the AY8910 ring buffer)
Gets rid of: SSI263Thread, the 2 events, and the 64 voices

Support the 2-bit Duration b7:6 of phoneme register for both SC01 & SSI263 (to fix #929)
Updated save-state
Updated IRQ logging (output cycle & 6522 source)
2021-03-23 22:01:41 +00:00