removed some logical dead-ends
introduced the concept of restarting the input loop. this is important
when resetting the emulation for example. if the machine is reset during
a video cycle then the emulation will resume inside the video inputloop.
however the reset machine expects to be inside a cpu inputloop, causing
havoc. also used to ensure the rewind system works correctly.
restarting the input loop is tricky. it requires a RawEventReturn channel
that works like the RawEvent channel but returns control to the input
loop on completion.
added GetFeature() to gui interface to better support the rewind
subsystem. renamed ReqFeature() to SetFeature(). Added FeatureReqData
type for clarity.
updates attached pixelrenderers. added Refresh() function and added
'refreshing' flag to SetPixel()
cpu and tia memory references updated on rewind
fixed rewind.Append()
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
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.
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.
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
supercharger sends TapeLoaded error signal to indicate when a tape as
finished loading. payload is a function to call in the context of the
VCS hardware, allowing changes to be made to the VCS.
split CartDebugBus into CartStaticBus and CartRegistersBus
disassembly window shows "executing from cartridge RAM" message
better disassembly decoding loop. clarified and corrected commentary in
disassembly package. identified some more critical sections in
disassembly package
this results in a better mnetwork disassembly
origin and memtop for disassembled entries are now definable. added
disassembly.FxxxMirror to preferences. PREF command can now set
FxxxMirror option. Added checkbox to win_prefs
renamed Iterate to IterateBank and added IterateCart
UpdateEntry() ignores any result not in the cartridge ROM space
tidied-up/unified preference files in debugger/disassembly/hiscore
packages
zero, carry and overflow flags set correctly.
You can see this in game end condition for Barnstormer. Not sure how
this got past. testing not rigorous enough I suppose.
bug most probably introduced in b509143549
improved CRT fragment shader
better scanline shadows; vignette effect; less agressive bend effect, it
didn't work very well with colour splitting and the vignette effect is a
suitable alternative
renamed instructions_gen.go to generator.go to match naming of shader
generator in sdlimgui
removed analysis code. too many code paths rendered the method
unworkable. for example, eg. JMP (indirect) where indirect address is in
ram.
Clarified how the Bank field in the disassembly.Entry should be used.
win_disasm makes sure that the current PC entry has been blessed. making
sure it will be seen in the disassembly window (also a note in debugger
inputloop about the fact that blessing should really take place there,
except for race condition issues. TODO note added)
added status line and options to win_disasm. status line shows when
execution from VCS RAM is taking place. options for highlighting addresses
common between all banks and non-decoded addresses