changed how 'force' parameter for television.SetReqSpec() works
debugger TV Screen shows drawing pixel in all instances, even in areas
that are "covered" by no-signal area
including the removal of 'ghosting' shader. this was useful for
exagerrating the zookeeper brick effect but it wasn't necessary (because
of how we scale the image). also, it was a confusing name with regards
to the ghosting effect inherent in the chroma interference. rather than
change the name I just removed it
the crt 'enabled' setting has been renamed to 'pixel perfect' (which is
an inverted value). I find this easier to think about
the defaults work well for all three colour methods
all tv specifications use the same gamma value
removed computed CRT bevel effect. removed CRT flicker effect
reverted vignette effect changes
brightness of interference effect regulated to match brightness when
interference effect is disabled
refined scanline/mask effect. now works on Y channel rather than the RGB
removed tv_color fragment shader. this simplifies the render path
considerably. there's a little extra load on the CPU when retreiving
colour values from the cache and a little more when generating (which
only happens once on startup and when TV controls are changed) but it's
very minimal
SECAM colours generated rather than using a precomputed RGB palette
preferences for TV brightness/contrast/saturation/hue moved to colourgen
pacakge
this allows us to remove the global DisableSaving flag from the prefs
package. it also allows us to remove the preferences.go file from the
debugger package, simplifying things a little bit
the ReqROMSelector request has been removed from the gui package and
handling from the sdlimgui package. the decision on whether to open the
ROM selector is done entirely inside the sdlimgui package now. this is
good because there shouldn't be any need for the debugger package to
worry about that kind of thing
removed the saveOnFirstUse argument. this means the EnableSaving()
function added in the previous commit can be removed
the reason for adding the EnableSaving() was so that we could intialise
the ColourGen type without writing to a preferences file. this was a
problem for testing because it meant that the global ColourGen
initialisation created a preference file for each test, which is
definitely something we don't want
there is still the global DisableSaving flag that would ideally be
removed in the future. it's currently only needed by the
debugger_test.go test which initialises a Debugger instance and
indirectly causes the preferences file to be saved on exit
saving for an individual prefs.Disk() can be disabled/enabled. this was
added because colourgen is currently a global instance. this is fine
because all access to it is implicitely race protected. however, because
it's a global instance, testing packages will trigger it to save, which
we don't want (.gopher directories in package directories)
for the global instance of colourgen (in the specification package)
prefs saving is disabled by default
it never worked very well and was likely to cause screen tearing
added SetConstraint() function to the types in the prefs package. this
is used to make sure the old ticker value is replaced with the value
indicating 'sync with vertical retrace'
the MsPacman VSYNC event (when the bouncing fruit appears) revealed the
error in using the VSYNC history to make a decision
removed the "immediate desynchronise" option
- preparation for adding 7800 emulation
cpu (6507) package uncoupled from upstream dependencies
- cpu no longer logs execution of KIL instruction
- randomisation of registers on startup can be handled by the called of
the cpu's Reset() function
- address errors are filtered by an optional IsAddressError() function
in the Memory interface implementation
- Error field removed from execution.Result type
all references to interface{} replaced with any
checks that linters exist before proceeding. project URL for each linter
in the Makefile comments
only go-errorlint and unconvert used at the moment
fixed all lint errors for the added linters
this fix is very important because without it, the frame queue is set to
zero. this means that the display is likely to be very choppy creating
a bad impression of the emulator for first time users
debugger no longer sends play, pause notifications to the gui. the gui
polls for that information as required
govern package now has SubState type to complement the State type.
StateIntegrity() function enforces combinations of State and SubState,
called from debugger.setState() function
playmode notifications reworked and contained in a single playmode_overlay.go
file. this includes the FPS and screen detail
preference value sdlimgui.playmode.fpsOverlay replaced with
sdlimgui.playmode.fpsDetail. still toggled with F7 key
coproc icon moved to top-left corner of playmode overlay and only
visible when FPS detail is showing
when FPS detail is showing multiple (small) icons care shown. when it is
not showing, a single (large) icon is shown according to the priority of
the icon. eg. pause indicator has higher priority than the mute
indicator
removed VSYNC synchronise on power option
these changes simplify the screen.go file and fixes the relationship
between the debugger TV screen and screen roll that was sometimes seen
(depending on when the emulation was switched to the debugger)
improved interference noise. using perlin noise rather than gold noise
shine/vignettes is smoothed out by small amout of perlin noise if
interference is not active
renamed references to illegal accesses to faults. the new name is
simpler and more flexible
faults locking was already independent of source lock
single MemoryFault() function in coproc developer interface
simplified faults window
curated package predated the standard errors package introduced in
go1.13
the standard package does a better job of what curated attempted to do
the change of package also gave me a opportunity to clean up the error
messages a little bit
the latency of "Flash" in the UnoCart is different to the Flash in the
Harmony
future versions will rename the internal use of Flash and SRAM to slow
and fast memory, or something like that. The labels can then be applied
depending on the cartridge type
clearer policy for setting of refresh rate
FPS display in playmode displays icon to indicate no VSYNC. removed
"atari safe" message (nice idea but requires work)
audioEnabled preference values renamed to audioMute
this is to facilitate the differentiation of muting and disabling
AtariVox output. muting of AtariVox is a subset of audio mute.
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
*.windowSize and *.windowPos preference values replaced with single *.windowGeometry value
prefs package type now have a pre-hook (called before new value is set).
existing hook/callback clarified to be a post-hook (called after new
value is set).
prefs generic type now handles prefs.GenericGetValueUndefined to
indicate that the value cannot be ascertained at this time (the prefs
package should use the most recent previous value instead)
altered slightly how sdlimgui preferences are handled. debugger and
playmode now load and have access to all preferences. the only
difference remains window position and size.
pref types are likely to be called in critical sections. to make the
prefs package easy to use, values in the types were protected by
mutexes, this is relatively expensive however. with the exception of the
generic type, critical sections are now protected with atomics.
small performance improvement
small performance improvement when in immediate mode. modified last
execution window to say if execution was in immediate mode or not (to
explain the absence of cycle count)
removed stale ARM preferences
updated screenshots and README
ARM MAM mode is set according to cartridge mapper driver
Preferences changed to specify this or whether to override it with a
particular value.
Removed the other MAM control preferences
Removed Flash/SRAM information from the last execution window