Commit graph

593 commits

Author SHA1 Message Date
JetSetIlly
b41c6d0301 removed unnecessary whitespace (golangci-lint -E whitespace --fix)
update Makefile lint target
2020-10-16 10:29:09 +01:00
JetSetIlly
e6e3a63be8 spelling errors in comments (golangci-lint -E misspell --fix)
update Makefile lint target
2020-10-15 22:02:51 +01:00
JetSetIlly
eace858835 removed unnecessary type conversions (golangci-lint -E unconvert)
update Makefile lint target
2020-10-15 22:02:32 +01:00
JetSetIlly
3482b98fbf removed unused struct fields (golangci-lint -E structcheck) 2020-10-15 20:56:48 +01:00
JetSetIlly
81b5a84a0b simplifed code (golangci-lint -E gosimple) 2020-10-15 20:56:48 +01:00
JetSetIlly
7e640a7e2c removed deadcode (golangci-lint -E deadcode) 2020-10-15 20:56:48 +01:00
JetSetIlly
9f74bffba0 fixed mutex error in pref package String() functions
imports sorted with goimport (after a global search and replace sometime
in the past)

various commentary improvements
2020-10-15 16:38:41 +01:00
JetSetIlly
b744d7f8da fixed commandline node printer to display optional groups in all cases 2020-10-15 07:36:47 +01:00
JetSetIlly
a6d5cc013e added CPU STATUS command
CPU window uses this in preference to toggling flag directly
2020-10-14 15:49:37 +01:00
JetSetIlly
058f886434 RAM snapshot function
RAM window shows changed bytes since the last time the emulation was set
running. stepping will not reset the snapshot
2020-10-14 11:22:22 +01:00
JetSetIlly
9b5ba10ade reworking of lazyvalues package
clarified some concepts. removed superfluous code/comments
2020-10-13 14:25:37 +01:00
JetSetIlly
cd77a3be19 reworked disassembly process. better bless detection particularly for JMP/JSR
moved cartridge debugging buses to mapper package

removed banks package and moved/renamed those types to mapper package

renamed IterateBanks() to CopyBanks(). function now returns all banks as
an array.

removed global Passive setting from cartridge. disassembly now only
accesses cartridge memory through a copy of the bank data (CopyBanks())
so it is not needed
2020-10-08 09:29:58 +01:00
JetSetIlly
caeee09107 use symbols preference added to terminal and gui prefs window 2020-10-07 07:00:28 +01:00
JetSetIlly
8b705dcff3 reworked how disassembly entries handle symbols
added CartHotspots debugging bus. used by symbols package to get
cartridge symbols information. should be useful for disassembly too

renamed hotspot() functions (in cartridge mapper implementations) to
bankswitch() for clarity

sdlimgui disassembly window shows address labels. disassembly iteration
updated to better support that.

SYMBOL command prints all mirrors for cartridge addresses
2020-10-07 06:58:40 +01:00
JetSetIlly
6d556cd3c8 clarified some concepts in disassembly package
experimented with making the disassembly a service driven goroutine but
this proved too slow to iterate over
2020-10-02 10:47:49 +01:00
JetSetIlly
7fc48dcd65 renamed errors package to 'curated'
to differentiate with the now existing errors package in the standard
library.
2020-09-28 22:16:59 +01:00
JetSetIlly
2d5cae17f5 reworking of errors package
removed all messages from errors package. the strings are now hard coded
in place. the original reason for extracting the error strings like that
was (a) for redundancy and (b) for localisation possibilities. However,
in reality there is not much redundancy and since the project started
the scope of localisation is much larger (particularly due to the
addition of a GUI)

this is the first step. the next step is to remove the errors package
altogether. recent additions to Go mean that the functionality of the
errors package is no longer required. moreover, the original idea for
the errors package functions turns out not to have been as useful as
first appeared (the Error() functionality which makes sure no repeating
sub-strings occur is probably better achieved with static tooling).

one idea that comes from this which is quite interesting is the idea of
a curated error. that is, any error that has been "wrapped" as some
'generic' type. the IsAny() function in the errors package effectively
serves this purpose. we use that in one place in the input loop of the
debugger. not strictly necessary but nice to have so it would ideal
if we could remove the errors package but keep that idea.
2020-09-28 22:16:59 +01:00
JetSetIlly
cf94511c6b WriteRecent() function in logger package
writes to io.Writer the log entries since the last call to WriteRecent()

implemented RECENT argument to LOG command
2020-09-22 19:21:36 +01:00
JetSetIlly
a5ce27962e Show change nick prompt on first use of a PlusROM cartridge
only works for sdlimgui interfaces. does not apply to the plain/color
terminal interfaces
2020-09-19 11:19:20 +01:00
JetSetIlly
19f22648e0 PlusROM nick and id now fixed per installation
both values saved to disk and editable editable via terminal interface

nick editable in PlusROM preferences window

String type in prefs package can not be set to a maximum length
2020-09-19 00:00:31 +01:00
JetSetIlly
5c70ce3eb4 more robust commandline validation
more aggressive string matching

corrected branch termination on no match

rearranged BREAK command template
2020-09-19 00:00:29 +01:00
JetSetIlly
18c3aa1c26 more plusrom. better networking
correctly sends PlusStore-ID header with gopher2600 as a fixed nick

fingerprinting of PlusROM

removed -plusrom commandline argument
2020-09-17 21:09:29 +01:00
JetSetIlly
96b023d381 logging package functions now safe to call from different goroutines 2020-09-17 21:08:45 +01:00
JetSetIlly
96e765525c sketched in PlusROM support
very rough currently. race conditions in network access, requires
restructuring.

no logging from network access. again, requires some engineering in the
log package to avoid race errors
2020-09-16 18:28:49 +01:00
JetSetIlly
1f8f6f7544 replaced many instances of interface{} with specific types
even though the underlying type is still interface{} this is useful
because it does increase clarity
2020-09-16 10:59:36 +01:00
JetSetIlly
b76abf69f6 sketched in savekey support
-savekey argument added to play and debug mode

savekey window available in debug menu
2020-09-13 22:31:20 +01:00
JetSetIlly
66175a257a added RIOT command
TIMER command is now an argument to the RIOT command
2020-09-08 18:46:01 +01:00
JetSetIlly
deac32ae50 reworked controllers package
multi-controllers is now split into three different types

auto type elegantly handles switching of the controllers

better/cleaner memory access for peripherals and event handling

updated console commands and controller debug window

controller debug window has to use a slightly different lazyvalue
implementation. this is because atomics cannot store a different type to
the one that was originally stored; this is a problem when storing
interfaces (eg. ports.Peripheral)
2020-09-02 20:49:03 +01:00
JetSetIlly
a4ed7f0fcd reworked RIOT/Input system. moved to Ports package
Controller package added. currently only contains the multi
handcontroller implementation from the old Input package.
2020-08-31 13:42:34 +01:00
JetSetIlly
9f73e0f5ec added LAST argument to LOG command 2020-08-31 09:00:38 +01:00
JetSetIlly
5683379c1b extended GUI event queue to prevent dropped GUI events 2020-08-24 21:19:07 +01:00
JetSetIlly
5ad55fa433 handle end of tape read event for soundfiles
hook function will be called when $fa1a is read to tidy up emulation
before continuing with the newly loaded ROM (eg. TV reset, dissassembly
of loaded data)
2020-08-24 13:21:30 +01:00
JetSetIlly
638f78a90f corrected prompt when PC is not in cartridge space 2020-08-23 20:45:29 +01:00
JetSetIlly
322085a721 debugger.printLine() now only resolves placeholders if additional
arguments are supplied

HELP strings were already immune but there were some other corner cases
(eg. CART RAM) which are now correctly handled
2020-08-23 20:45:29 +01:00
JetSetIlly
68df3a0c8b gui events and pushed raw events no longer block
previously the gui could block because of a full channel queue under
rare circumstances. those circumstances could be forced by, for example
loading a wav file with the race detector.

also seen when running the debugger with a plain terminal and the
with the display open

all channel pushes are now selected with the default case logging the
error
2020-08-16 11:05:37 +01:00
JetSetIlly
6558a6c6b1 fixed DEBUG argument in DISPLAY command 2020-08-15 23:45:29 +01:00
JetSetIlly
cec14f644f terminal display of RAM, Cartridge RAM and Static Areas now uses hex package 2020-08-07 13:36:43 +01:00
JetSetIlly
6bcca27a44 corrected documentation for colorterm for windows
removed MISSING_LICENCE script from git

added Supercharger BIOS section to README
2020-08-04 12:43:42 +01:00
JetSetIlly
a140711321 windows cross-compilation support
static build runs under minimal wine installation and passes regression tests
2020-08-04 10:53:15 +01:00
JetSetIlly
a2aee094a0 added logger package
small changes to how terminal prompt is used

reworked terminal print styles for clarity
2020-08-03 23:24:39 +01:00
JetSetIlly
1f52469784 performance improvement in TIA emulation
removed future package in favour of new delay package

TIA/video/sprites altered to use delay package
2020-07-28 19:46:59 +01:00
JetSetIlly
298a5d343f updated copyright notice in all files
the note about historical versions also being covered wasn't strictly
needed and was ugly. the LICENCE being in the root file from the very
first commit is sufficient.
2020-07-26 20:18:56 +01:00
JetSetIlly
44f6804f1b refinement of supercharger fastload
interrupted CPU instructions due to supercharger fastload are marked as
Final even in the interrupted state. this is primarily so that the
disassembly window in the sdlimgui GUI centres on the correct entry
after interruption.

allow supercharger to load binary sizes larger than 8448 bytes.
Specifically, allow sizes 25344 and 33792
2020-07-22 20:41:03 +01:00
JetSetIlly
4cfd4e3428 reworked cartridgeloader package
clarified error messages from cartridge mapper implementations,
particularly in regard to wrong file sizes
2020-07-22 18:50:37 +01:00
JetSetIlly
1eb0100194 corrected DPC+ data-fetcher address decrement
unified/normalised static area structure and presentation

better tab bars for static area window

corrected cropped cursor drawing for pixel position on the VBLANK
boundary

TV specification changeable at command line and via GUI's debug screen
window

abstracted resizing mechanism opening the possiblity
for more sophisticated analysis

digest/video handles TV specification changes

bumped imgui-go version to 2.4.1
2020-07-21 21:36:40 +01:00
JetSetIlly
5ae8a86a94 fixed race condition on television.IsStable()
PixelRenderer.NewFrame() now requires isStable boolean argument

removed some deprecated gui implementations
2020-07-18 11:02:59 +01:00
JetSetIlly
c057ee9a39 reworked television's framerate limiter
fps check done every N scanlines instead of every call to NewFrame()

NewFrame() is unpredictable but scanlines are like clockwork. Fixes
flappy
2020-07-17 19:25:37 +01:00
JetSetIlly
c9e8006f33 debugger performance improvement 2020-07-13 21:12:33 +01:00
JetSetIlly
537c35ba27 reworked cartridge fingerprinting
all fingerprint code is in the one place (fingerprint.go)

reworked tape loading in preparation for real tape based loading.
introduced tape interface and renamed existing tape structure as
FastLoad. renamed TapeLoaded error to FastLoaded. silenced fastload
debugging messages for now (will re-add when I've implemented the
logging package)
2020-07-11 20:24:37 +01:00
JetSetIlly
4e38ed2fab memory redisassembled on TapeLoaded error (from supercharger)
clarified how TapeLoaded error affects CPU state - added CPU interrupted
flag. fixed CPU mid-instruction sanity checks in the process

better/clearer terminal prompts

break on non-cartridge PC will no longer auto-add BANK condition
2020-07-11 20:15:35 +01:00