Commit Graph

77 Commits

Author SHA1 Message Date
Andrea
8cc04e2b86
Cumulative changes required to enable / ease compilation in Linux with gcc. (PR #861)
Split MouseInterface to isolate DirectInput code.
Avoid overflow in platforms where RAND_MAX is a big integer constant.
Fix include files for gcc (where enums cannot be forward declared).
2020-11-10 20:33:55 +00:00
ThorstenB
4543117f81
More clean-up, portability and another debugger fix (PR #847)
Fixed debugger main "data" window behaviour:
. When activating the main data display ("data" command) the cursor keys wouldn't work until the minidump ("md1") was also enabled. NB. The cursor keys should work in the main data window, independently of whether the minidump is active.
2020-10-25 17:27:59 +00:00
tomcw
aa322dbd53 Fixed loading a save-state where both Phasor 6522's Timer1s are active (eg. DIGIDREAM demo) 2020-10-18 19:32:18 +01:00
tomcw
1a11c65d37 Replaced global g_CardMgr with a singleton object & GetCardMgr() call. (Fixes #843) 2020-10-11 17:34:44 +01:00
TomCh
6125c2b12d
Support for synchronous events (PR #841)
Switched Mockingboard/6522 Timer interrupts & Mousecard's VBlank interrupt to use synchronous events.
This is a linked-list of ordered timer-based event, where only the head of the list needs updating after every opcode.
2020-10-11 16:08:05 +01:00
tomcw
06f8ccb384 MB false read of 6522: limit to only the no-PX variants 2020-08-22 16:06:26 +01:00
tomcw
b93de29ff1 Fixed the 6502/65C02 false-read of 6522 issue for Willy Byte! (fixes #52) 2020-07-24 19:39:31 +01:00
tomcw
52ff9d5b99 Fixed MB looping sound after 'OK' in Configuration (#813) 2020-07-17 22:53:17 +01:00
Andrea
82c09abd54
Minor fixes (#805)
* Add missing Riff.h include and fix const correctness of arguments.
* Cosmetic improvements to Perf breakdown in LogPerfTimings().
* Logging - removed unnecessary cast.
2020-07-01 21:08:18 +01:00
tomcw
60d54d6f3b Fix for 'IRQ occurring on last cycle of opcode' not always true. (Fixes #796)
. FT demo MAD2.DSK - original version now correctly crashes at start of full-screen scroller
. FT demo MADEF.DSK - graphics glitch on vertical edge where it transitions from GR to HGR mode
2020-06-27 19:29:29 +01:00
Andrea
fe62271ef9
Some minor c++ correctness changes. (#803)
Added const, static forward declaration.
Removed some unneeded header files.
2020-06-27 14:32:09 +01:00
tomcw
13a4043118 Added a new PerfMarker class: used to instrument emulation sub-systems and log timings (#788)
To enable this uncomment the #define LOG_PERF_TIMINGS in AppleWin.h.
2020-05-23 16:41:19 +01:00
tomcw
58df8ea1e6 MB/SSI263 - alt logging via LOG_SSI263B 2020-05-10 18:21:34 +01:00
tomcw
61a3f06172 MB/Phasor: SSI263 - improved save-state for different speech cards' IRQs 2020-04-26 18:07:38 +01:00
tomcw
f201294451 MB/Phasor: SSI263
. extend for 6522 PCR CA1 input control=0, which sets IFR.b1 on phoneme complete
2020-04-26 10:10:39 +01:00
tomcw
389b6e6d23 Mockingboard: replicate 6522 I/O across entire $Cnxx I/O space
. SSI263.b7 not readable
. SSI263 writes also written to 6522 in low addr
2020-04-25 16:42:50 +01:00
tomcw
9f49820a8d Phasor: support SSI263 speech for Mockingboard mode (#777)
. Improved DEVICE_SELECT' I/O support (including Echo+).
. SSI263_Read() only for Phasor in Phasor mode.
. save-state: v6 (Phasor unit): phasor mode extended.
SSI263 (MB/Phasor) bug fix for when RESET/Power-cycle during phoneme playback.
Logging:
. improved for SSI263
. in CPU.cpp, added 'IRQ' / 'ISR-end'
2020-04-19 21:00:37 +01:00
tomcw
22806c6c59 Phasor: support both kinds of speech interrupts (#777) 2020-04-07 22:11:31 +01:00
tomcw
c204783816 MB/6522: IER doesn't start/stop timers 2020-03-07 18:08:50 +00:00
tomcw
ef4ee4ed16 Fixed 6522.T2 interrupt for Lancaster (#765) 2020-02-29 18:48:46 +00:00
tomcw
960af9bda0 MB: Moved MB_StartOfCpuExecute() to Snapshot_LoadState_v2(), since it's only needed there 2019-12-24 13:58:20 +00:00
tomcw
e03b68b7f0 MB: removed redundant g_n6522TimerPeriod variable 2019-12-24 13:19:35 +00:00
tomcw
8567f0a651 MB: include 1-cycle 65C02 opcodes 2019-12-24 12:51:43 +00:00
TomCh
769d4c6927
Support 2nd Disk][ card and improved card management (#726) (PR #741)
Support 2nd Disk][ in slot-5, via command line:
- -s5 diskii
- -s5d1 \<imagefile\>
- -s5d2 \<imagefile\>

NB. there's currently no Configuration UI support, except the Drive icons' tooltips show what's in slot-5 & slot-6 (for drive-n). So there's no way to eject the disks or insert new disks. The use-case I'm supporting it Wasteland which just has the 4 disks in the 4 drives.

Improved card management:
- Added `class Card` (in Card.h) which all other cards (that exist as classes) derive from (eg. LC,SSC,Mouse,Disk2).
- Added `class CardManager` (in CardManager.cpp\h) which now manages the 8 slots (and aux slot).
- Added `class Disk2CardManager` (in Disk2CardManager.cpp\h) which provides methods for operations that act on all Disk2 instances at the same time.
- Currently limited to just 1x SSC and 1x Mouse card (why would you need more?). This simplifies things, meaning there's no need to have dedicated SSCManager / MouseCardManager objects.
- Currently the 2nd Disk2 card can only be put into slot-5. This limitation is just due to the complexity of the Configuration UI. Having a more general drop-down per slot UI would remove this limitation.
2019-12-19 19:42:30 +00:00
tomcw
7d38b1ba38 CPU save-state: added 'Defer IRQ By 1 Opcode' (v5) and comments for why the other state doesn't need saving 2019-11-18 15:08:59 +00:00
tomcw
b82de931a1 Fixed 6522 timer interrupt which was occurring 1 cycle late (#711) 2019-11-17 12:26:14 +00:00
TomCh
d1b595f7bd
Fix for "Mad Effect 1&2" demos (PR #725)
. 6502 interrupt delays 1 opcode when interrupt occurs on last cycle of opcode (#724).
. Only 1-cycle delay for VF_TEXT & VF_MIXED mode changes (#656).
NB. Mad Effect 1 still has a bit of flicker on Space Invader (left edge)
2019-11-16 23:49:21 +00:00
tomcw
3c6d5d1e76 Phasor: fixed noisy playback for AE's player. (Fixes #659) 2019-11-11 17:35:10 +00:00
tomcw
d4e01643fa Mockingboard: improved sound-buffer updating
. Changed to 6522.TIMER underflowing at 0x0000 -> 0xFFFF (#652)
. Changed MB_Update() to be based on cycle delta (was TIMER1 interval)
  . this improves support for small 6522.T1C interval
  . removed MB_GetFramePeriod()
  . removed overly-complex dual-timer support
. Replaced MB_EndOfVideoFrame() with MB_PeriodicUpdate()
2019-11-10 15:52:07 +00:00
tomcw
eb59c52dc4 Mockingboard: Fix initial fast (weird) music playback issue (#711) 2019-11-03 21:37:55 +00:00
tomcw
d92eca5068 Cmd line: -m and -no-mb: fix crash 2019-11-03 14:23:47 +00:00
tomcw
506a52f359 Refactor slots & allow empty slots for s1(printer), s6(disk2)
. NB. can't empty s3(uthernet) yet
2019-09-15 20:37:20 +01:00
tomcw
300494c470 Mockingboard: only do multi-TIMER1 support update when 6502 interrupts are enabled. (#685) 2019-09-06 19:59:28 +01:00
tomcw
ed9ae72778 Mockingboard: moved multi-TIMER1 support before the AY access. (#685) 2019-09-05 22:03:56 +01:00
tomcw
11323e2aba Mockingboard: support multiple TIMER1 interrupts, with one for MB reg updates (#685) 2019-09-05 20:42:34 +01:00
tomcw
d9a15c30da Save-state: fix for loading state not re-asserting pending IRQs for Mouse & SSC. (#677)
NB. Small opt to CheckInterruptSources() to explicitly test sg_Mouse.IsActive() first.
2019-08-26 20:13:52 +01:00
tomcw
94bbc5ec3d Save-state: fix for loading state not re-asserting any pending MB/SY6522 interrupts 2019-08-26 16:52:11 +01:00
TomCh
bd86088c59
Support 50Hz(PAL) (#648) (PR #658)
- Added Configuration GUI to include checkbox for "50Hz"
- Implicitly use PAL or NTSC base 6502 clocks depending on video refresh rate
- Added new -50hz and -60hz command line switches
- Updated save-state for video refresh rate

1.28.8.0: Updated version & history.txt
2019-06-28 21:34:34 +01:00
tomcw
3fbe416424 6522: Underflow on 0x0001 -> 0x0000; and FRT's period is N+2 cycles (#652) 2019-06-15 17:41:53 +01:00
tomcw
941ef46e9a 6522: account for underflowed cycles to ensure consistent interrupt period (#651) 2019-06-01 12:21:00 +01:00
tomcw
6929ad98e3 Fix for 6522.TIMER2 not setting CpuAdjustIrqCheck() correctly 2019-04-18 20:47:29 +01:00
tomcw
be81458284 Save-state: correctly stop & play Mockingboard sound buffer across save-state loading transition (#609) 2019-02-24 15:37:15 +00:00
tomcw
de3f0d877e Save-state: Better MB init for loading save-state 2019-02-24 10:49:09 +00:00
tomcw
f998c7ddb2 Save-state: Explicitly init MB SoundcardType when loading state. (Fixes #609) 2019-02-23 10:22:52 +00:00
tomcw
ceb0416bf3 Fixed 6522 & interrupt:
. Broadside needs to see IRQ within 17 cycles (6 opcodes) of 6522 counter underflowing to detect Mockingboard. (Fixes #605)
2019-01-06 16:54:54 +00:00
tomcw
eea8cb3cdf Deprecated and removed support for v1 save-state. (Fixes #603) 2019-01-05 22:20:51 +00:00
tomcw
9bc7feb37e Mockingboard: Better support for stop/starting 6522's IER.TIMERx (#567) 2018-06-20 22:13:18 +01:00
tomcw
7f478fa36c Mockingboard: Reading 6522's IER now returns 0x80|IER. (Fixes #567) 2018-06-17 18:47:57 +01:00
tomcw
598b20fb52 Refactor: Use INTCXROM instead of SLOTCXROM to be consistent with UTAIIe (fixes #419) 2018-04-06 22:36:54 +01:00
tomcw
d9accc82c5 Refactor codebase by renaming nCyclesLeft to uExecutedCycles (#540) 2018-03-03 21:27:50 +00:00