Commit graph

929 commits

Author SHA1 Message Date
JetSetIlly
720f59c64b nil point dereference in cartridge loading fixed
this would be happen when supercharger failed to load due to a missing BIOS file
2022-01-29 18:39:17 +00:00
JetSetIlly
ab92d01f73 fingerprinting of controllers
moved controllers and savekeys package to new peripherals package

removed auto controller

changed lazy.Controllers to lazy.Peripherals and Controllers window to
Peripherals window

changed CONTROLLER command to PERIPHERAL command. removed AUTO option

added savekey as an option to PERIPHERAL command and Peripheral window
2022-01-29 08:58:05 +00:00
JetSetIlly
0fb9a502d3 cartridgeloader Data field is now a pointer to a byte array
this allows cartridgeloader to be passed by value but for the Data field
to be shared
2022-01-28 20:53:51 +00:00
JetSetIlly
fd032dc1be fixed moviecart. broken since 3c288ad 2022-01-28 20:53:51 +00:00
JetSetIlly
a14b25fdfd VBLANK latch bit now applies only to INPT4 and INPT5 2022-01-27 22:24:19 +00:00
JetSetIlly
962d199330 second stick button works with keyboard. right-player also added 2022-01-23 10:08:51 +00:00
JetSetIlly
be9011493d quick addition of two button joystick support
regular joystick replaced with "gamepad" option. more sophisticated
selection process and new icon will be added at a later time
2022-01-22 22:49:48 +00:00
JetSetIlly
7597a7610b CPU bus registers weren't initialised correctly
peeking/poking by cpubus.register didn't work. this didn't effect
peeking/poking via debugger memory but it did when peeking/poking
directly into VCS memory, like we do in the lazy value system
2022-01-22 22:42:00 +00:00
JetSetIlly
eab5f40b54 corrected tigervision back switching method
old method broke with introduction of the fix in commit f90957
2022-01-20 22:29:56 +00:00
JetSetIlly
0b4e0bf7c0 cartridge.Listen() only called on address bus /transition/ 2022-01-20 22:29:56 +00:00
JetSetIlly
94fb65e6d6 replicated 7551b9 for DF mapper 2022-01-20 21:59:15 +00:00
JetSetIlly
259dcc8648 3e+ nil dereference when accessing instance type 2022-01-20 13:55:38 +00:00
JetSetIlly
49fd3e3c4d TIA revision preference values accessed through "Live" structure
sharing of preferences between emulation instances is safe due to the
nature of the underlying prefs package.

however for performance purposes the TIA emulation requires plain
variables rather than the goroutine-safe prefs values. this caused
race-errors when two emulation instances were running side by side and
when the TIA revision information was changed

to remedy this, the instance package now makes a copy of the live
revision preference values. the TIA emulation accesses revision
information through the LiveRevisionPreferences type rather than the
RevisionPreferences type directly
2022-01-20 11:16:23 +00:00
JetSetIlly
27ea04cf12 preferences are shared between emulation instances
this means that updating the preferences through the prefs window will
affect all emulation instances equally
2022-01-20 11:15:30 +00:00
JetSetIlly
6311063b89 random package can produce numbers faster for the running emulation 2022-01-19 22:31:50 +00:00
JetSetIlly
243fd25f99 replacated 7551b9 for CBS and EF mappers 2022-01-19 11:01:13 +00:00
JetSetIlly
3c288adf79 clarified some memory bus concepts
corrected/simplified how supercharger is accessed
2022-01-18 20:33:58 +00:00
JetSetIlly
7551b90236 atari superchip responds correctly to phantom read/writes
other cartridges may need to respond accordingly
2022-01-17 23:36:58 +00:00
JetSetIlly
7e7eaf4262 cosmetic changes to disasm window
"Follow CPU" will focus when option is set. disasm will not focus on PC
address on pause if "Follow CPU" is not set.

additional notification in disasm window to indicate when coprocessor is
active
2022-01-17 22:07:27 +00:00
JetSetIlly
e44107ce91 added Cycles type for hardware.CPU package
moved DefnCycles from disassembly.Entry to instructions.Cycles type.
and now created during generation of instructions table. it makes more
sense to have the formatted string nearer the source of definition and
simplifies the disassembly.Entry type.
2022-01-16 19:42:56 +00:00
JetSetIlly
0568d7f29c hardware.arm7.model defaults to AUTO 2022-01-12 21:15:23 +00:00
JetSetIlly
ef639d6b50 added IllegalAccess function to CarCoProcDeveloper interface
removed LookupSource() from CartCoProcDeveloper interface - there is no
need to call it from a coprocessor implementation

added COPROC command. includes ID and LIST ILLEGAL and LIST SOURCEFILES options
2022-01-10 09:50:48 +00:00
JetSetIlly
211e7e12de reorginised coprocessor package
source iteration replaced with "borrow" mechanism. fixes any potential
race conditions
2022-01-10 09:50:47 +00:00
JetSetIlly
6ed0a27792 added coprocessor developer package. moved objdump/mapfile code to new package 2022-01-10 09:50:47 +00:00
JetSetIlly
1bfd0de557 added coprocessor package to hold all coprocessor helper code
moved disassembly.coprocessor package to coprocessor.disassembly.
main disassembly package no longer cares are about the coprocessor
disassembly.

fixed caused by crash when switching carts (from ARM to nonARM) when the
CoProc Disasm window is open (there's a brief moment when the cartridge
reports having a CoProcessor bus but there is no coproc disassembly in
the debugger. the difference is caused because the coproc disasm is not
part of the lazy system so we see the results first)
2022-01-10 09:50:47 +00:00
JetSetIlly
1a6bb1d659 fixed bug caused by added multiple reflection counters to timeline
a change in how frametriggers on mode change caused multiple reflection
counters to be added - meaning that every counter after the first simply
returned 0 counts of a NewFrame()

two solutions to prevent this from happening:

1: in Debugger.setMode() all debugging frame triggers are removed before
  (re)adding the ones we want for the mode

2: AddFrameTrigger() checks the trigger list for the pointer and only
   adds if that specific pointer is not present (also added this check
   for pixel renderers and audio mixers)
2022-01-10 09:50:47 +00:00
JetSetIlly
65fa01e4c8 added superchip option for EF mapper
file extension and -mapping option to indicate superchip for mappers
that support it, changed SC rather than +. For example, "2KSC" and not
"2k+". This avoid confusion with mappers that use the + symbol for other
purposes (for example, DPC+)

cartridge.Attach() will log cartridge insertion with mapping ID
information

removed description field from all cartridge mappers that still had it.
the field was no longer referred to but we may add something similar in
the future
2022-01-05 18:44:55 +00:00
JetSetIlly
2c7bf893ef added EF cartridge mapper 2022-01-05 11:24:01 +00:00
JetSetIlly
7699564d41 fixed sound output when TV frame never stabilises. fixes tunabit demo rom. 2022-01-04 21:24:02 +00:00
JetSetIlly
1b673f8411 added FieldBus interface and commentary for PeekField() and PokeField()
we don't use the interface but it's useful to document their existance
and when they should be used in preference to the DebugBus.
2021-12-28 10:37:41 +00:00
JetSetIlly
f01634ec68 improved RIOT timer window. fixed Ticks Remaining and added TIMINT
changed SetField() and GetField() to PeekField() and PokeField() in
ports package. added PeekField() and PokeField() to Timer package.
2021-12-28 09:49:38 +00:00
JetSetIlly
f2fb0091e7 simplified/clarified memory interface
addresses and bus interface removed and split into cpubus and chipbus
packages.

ReadZeroPage() no longer has any distinction from normal Read()
function.
2021-12-26 19:00:11 +00:00
JetSetIlly
305ac7c4b3 phantom memory access correctly noted
the change in commit 656c42bb2c seems to
have been incomplete
2021-12-26 18:06:12 +00:00
JetSetIlly
ac1fa60d81 collisions uses ChipRefer() instead of using local copy of collision registers
collision window pokes changed collision value correctly
2021-12-24 19:08:50 +00:00
JetSetIlly
1a0edad162 added Ports window. feedback is now correct
INPTx input is masked correctly

RIOT.Ports no longer keep private copies of SWCHA, SWACNT, SWCHB or
SWBCNT. added ChipRefer() to ChipBus interface. this makes the interface
with memory more natural. for example, a POKE command will now correctly
be referred to by the Ports implementation in all instances.
2021-12-23 11:28:51 +00:00
JetSetIlly
2516e567ce RIOT SWCHB port is writable 2021-12-21 19:00:59 +00:00
JetSetIlly
20244b6085 6507 pinout window. shows values currently on the bus 2021-12-20 15:13:33 +00:00
JetSetIlly
f9095714c1 fixed https://github.com/JetSetIlly/Gopher2600/issues/16
INPTx data mask was wrong. bit 6 is now "driven"

ZeroPageIndexedX and ZeroPageIndexedY did not cause a phatom read as
they should. cycles were accumulated correctly but no phantom read - I
missed this when adding the phantom reads to the CPU
2021-12-19 08:55:33 +00:00
JetSetIlly
cdcbe6e5b5 spacejockey bot. basic for now but it works 2021-12-17 22:05:22 +00:00
JetSetIlly
9d8113df27 improved videochess bot
detection of black move (by vcs) improved

bot removes its own pixel renderer and audio mixer on quit
2021-12-14 08:10:53 +00:00
JetSetIlly
a8df94f544 improved performance of input pacakge
pushed events are only serviced once per frame
2021-12-14 08:10:20 +00:00
JetSetIlly
2bd17727db removed harmony package. moved sub-packages to cartridge package. callfn to arm7tdmi 2021-12-13 13:38:15 +00:00
JetSetIlly
4a658e2073 auto detect memory model for DPC+ ROMs
corrected logging messages and comments in objdump package
2021-12-13 13:38:15 +00:00
JetSetIlly
48d646343d ARM processor improvements for PlusROM and debugging
autodetction of ARM memory model for CDF format

mapfile and objdump file opened and parsed and used to identify illegal
memory access

ARM function addressed for CDF mapper corrected so they work with PlusROM
2021-12-11 21:09:39 +00:00
JetSetIlly
26c61dd423 no manual input during a playback recording
swallow power off error message at end of playback recording
2021-12-11 09:28:41 +00:00
JetSetIlly
58848acdf9 input system and ports system separated
playback/recorder and driven input systems moved out of the the ports
package and into a new input package. how the input systems interact has
been clarified and improved - for example, it is now posssible for a
playback file to be used to drive two emulations for comparison purposes

the debugger startup procedure has been clarified with two distinct
startup functions for playmode and debugger - each of which take
different arguments. the clarity has allowed the reintroduction of
recording and playback to the main play mode
2021-12-11 08:19:46 +00:00
JetSetIlly
2942d35320 added ports.TimedInputEvent to accompany ports.InputEvent
the Time field was in ports.InputEvent but it didn't make sense to
specify a time value in all contexts
2021-12-05 22:05:35 +00:00
JetSetIlly
4df1eb071e added the ports.InputEvent type
this is now used when passing events and event data around. it also
records the port and time (in TV coordinates) which are required by
driver/passenger synchronisation and playback recording

removed television interfaces from signal package and moved the
interfaces to where they are needed
2021-12-05 20:17:43 +00:00
JetSetIlly
62ff113f13 EmulationLabel moved from cartridgeloader to instance package 2021-12-05 20:17:43 +00:00
JetSetIlly
89191d9a5a clarified some preferences concepts
set defaults for revisions, rewind and ARM tabs of the prefs window (in
addition to the CRT tab). set defaults button labelled appropriately

fixes some race conditions caused by pre/post hooks on prefs values -
prefs values are generally goroutine safe, except when pre/post hook is
defined
2021-12-05 20:17:43 +00:00