Commit graph

658 commits

Author SHA1 Message Date
JetSetIlly
4ce3aecbca readded wavwriter package using go-audio/wav package 2022-05-26 21:10:28 +01:00
JetSetIlly
7e57bbe46c removed unused/unwanted dependencies
go-wav, statsview and memviz all indirectly used gopkg.in/yaml.v3 which
I do not want to depend upon

WAV functionality is no longer available for wav writing or reading
(supercharger tapes). will try to reintroduce functionality in the
future
2022-05-26 12:14:34 +01:00
JetSetIlly
618e239bf6 operator field in instructions.Definition is now numeric
this significantly increases the speed of lookup in the cpu
2022-05-22 20:52:54 +01:00
JetSetIlly
07a148dba0 note which 2600 kernel an ARM program is run in
added column in performance window
2022-04-30 13:30:36 +01:00
JetSetIlly
fd591dd46d peripherals weren't being fingerprinted when loading from an initial ROM selector 2022-04-29 13:50:33 +01:00
JetSetIlly
f8a3921e27 added NONEXE halt target
removed PCZERO target, which is too specific to be useful. NONEXE halts
execution when the PC reaches any address that isn't a Cartridge or RAM
address.
2022-04-29 13:50:33 +01:00
JetSetIlly
c41e25f19a fixed halt target parsing for RESULT OPERATOR target 2022-04-23 15:59:47 +01:00
JetSetIlly
ca0b6ffe18 refined hotload functionality. only enabled for CDF carts
still not really useful except for simple CDF carts
2022-04-22 14:32:28 +01:00
JetSetIlly
44e383923c reworking of CartStaticBus interface and related types
easier to look at and should be more flexible when going forward with
DWARF variable handling
2022-04-12 20:20:04 +01:00
JetSetIlly
3972842419 added left and right arguments for debugger and playmode
PERIPHERAL command now accepts AUTO parameter. this will (re)fingerprint
the cartridge and insert the "detected" peripheral

implementation temporary in lieu of an improved setup package
2022-04-09 15:24:16 +01:00
JetSetIlly
e770932106 reloading a cartridge no longer reset breakpoints etc.
this includes reloading the same cartridge via the file requester.
similarity is based on file location rather than ROM hash
2022-04-03 17:19:06 +01:00
JetSetIlly
7ccdb8487c improved comment highlighting. added string literal highlighting
toggle button in source window for comment/string highlighting
2022-04-02 11:42:37 +01:00
JetSetIlly
03997bc8d0 reload cartridge will preserve the currently selected TV specification 2022-04-01 18:05:57 +01:00
JetSetIlly
4829333015 atarivox and savekey are disabled during rewinding 2022-03-27 10:13:14 +01:00
JetSetIlly
fe03cbb7c6 "Ctrl Tab" will reload the currently selected ROM 2022-03-24 15:12:25 +00:00
JetSetIlly
2868d49056 fixed STICK and KEYPAD command
had previously changed template to accept LEFT and RIGHT instead of 0
and 1 to specify the peripheral port but had not updated the
implementation

STICK was sending true/false and not ports.DataStickTrue and
ports.DataStickFalse as data payload
2022-03-23 22:39:59 +00:00
JetSetIlly
555559954b controller notification not shown if cartridge is ejected 2022-03-17 22:08:19 +00:00
JetSetIlly
cd03e092b1 atarivox notification icon. updated PERIPHERAL command
atarivox and savekey will now refuse to be initialised for any port
other than the right player port
2022-03-07 19:27:10 +00:00
JetSetIlly
814ee94d3c added PCZERO target. this is PC value 0 but with no mapping of the PC address
boolean break targets can now imply a true value. (ie. "BREAK PCZERO" is
valid. no need to type "BREAK PCZERO TRUE")
2022-02-20 17:45:27 +00:00
JetSetIlly
43af2704e6 complete changes made in e01fd1ec
checking of operators for a match were trying to match uppercase
mnemonics and not the lower case we've changed to. visible in incomplete
disassemblies - not see "jmp" or "jsr" correctly
2022-02-18 10:12:07 +00:00
JetSetIlly
f9b1d284a4 SYMBOL command searches label table
refined how address info is printed by SYMBOL command for all search
tables
2022-02-18 10:12:07 +00:00
JetSetIlly
2f0328b708 added performance by function view in coproc performance window
removed lifetime cycles view
2022-02-08 19:18:17 +00:00
JetSetIlly
afb7e0ec11 source level information retreived entirely from DWARF data
no longer required to generate an obj file with objdump, or a map file
during compilation

ELF binary should contain DWARF data of course (using -g flag during
compilation)
2022-02-07 22:39:14 +00:00
JetSetIlly
b4763e7581 cartridge.GetBank() correctly report cartrdige state even when
execution is currently outside of cartridge address space. The NonCart
flag is set in addition to the cartridge information

improved how the disassembly window shows coproc/non-cart execution
information, particularly when both conditions are true at the same time
2022-02-05 14:07:15 +00:00
JetSetIlly
a41ce2edda removed -savekey commandline option 2022-01-29 08:58:05 +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
a80c073d5b added short delay (250ms) when starting in playmode
this helps prevent the emulation running while the GUI is still starting
up. the delay is instead of a synchronisation channel. a channel would
be a better solution but adds a complexity that otherwise might not be
needed
2022-01-27 20:32:33 +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
3c288adf79 clarified some memory bus concepts
corrected/simplified how supercharger is accessed
2022-01-18 20:33: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
01ef037e5c disasm entries updated with partial results when halted mid-instruction 2022-01-17 11:45:14 +00:00
JetSetIlly
905165ecfe removed ExecutionNotes field from disassembly.Entry
replaced with Notes() function. small cosmetic changes to LAST command
and disassembly window in line with changes to Notes and Cycles
2022-01-16 22:45:56 +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
7d33e42e68 add illegal accesses window for coprocessor ROMs
entries in new window open up the source window when clicked (if source
is available)

prettied up tooltips in top and source windows, to match tooltip in
illegal access window

source window shows bug icon instead of the chip icon to show that the
line caused an illegal access
2022-01-12 18:46:06 +00:00
JetSetIlly
9955eb175d check result of developer package before attaching FrameTrigger 2022-01-12 13:38:57 +00:00
JetSetIlly
1393bcf9dd coproc top can be sorted by "previous frame" or "lifetime"
"lifetime" does not interact well with the rewind system - it's the
lifetime included repeated frames when rewound

"previous frame" works well with the rewind system

added corresponding tabs to top window
2022-01-10 21:59:50 +00:00
JetSetIlly
8819e0ac8a added CoProcessor Top window
refined developer package for better access to information in the Source
type
2022-01-10 19:59:52 +00:00
JetSetIlly
4683cf83dd TOP option to COPROC command
developer source now keeps a list of all executable source lines in
order of computation time
2022-01-10 09:50:48 +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
d55a14fded simplified disassembly iteration
implemented "borrow" mechanism instead of iteration mechanism which was
clumsy and confusing.

simplitied how breakpoints are queried by the lazy system, for the
benefit of the disassembly window

tweaked how emulation state is tracked by the disassembly window

removed linter package. unused and underdeveloped. will reimplement in
the future.
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
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
b9e2e4c6dc dbgmem.Poke works with "read" addresses and calls MapAddress() appropriately
although the words "read" and "write" might lead us to think that we
"peek" from "read" addresses and "poke" to "write" addresses, it is in
fact necessary to "poke" to "read" addresses.

on the surface this doesn't appear to be correct but on further thought
it is obviously true - we are in fact changing the value that is
subsequently read by the CPU, so that means poking to a read address.
2021-12-23 16:13:11 +00:00
JetSetIlly
20244b6085 6507 pinout window. shows values currently on the bus 2021-12-20 15:13:33 +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
eade7ea7be readded patch, multiload and wav options to the commandline
removed experimental hiscore client (never used)
2021-12-11 09:56:39 +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