added PAL60 specification. even though it isn't a real specification it
is more convenient and provides better user feedback
moved FrameInfo into frameinfo package, now called Current as in
frameinfo.Current
clarified storage of requested specification by the television:
how the television is probed for the specification has changed, in
particular the current spec is retreived via the GetFrameInfo()
function. in fact, this was how most other packages did it but there
also existed a GetSpecID() which was uncessary
GetReqSpecID() and GetCreationSpecID() removed, replaced with
GetResetSpecID() and IsAutoSpec()
simplified SetSpec(). removed the force argument
removed reset option for vcs.AttachCartridge()
television signal split into video and audio signal. The audio signal is
only sent then a new sample from the TIA is ready
realtime mixer concept change. the mixer can be informed of a change of
TV spec. this allows the realtime mixer to make an informed judgement
about the required sample rate
the sample rate is unlikely to be ideal however unless the number of
scanlines in the TV image is the same as given in the basic TV
specification (ie. 262 lines for NTSC, 312 for PAL). because of that,
the realtime mixer can also indirectly regulate the rate of calls to
SetAudio(). the Regulate() function is called by the television which
then alters the call frequency to SetAudio() depending on the regulate
value. this effectively keeps the audio buffer nicely filled - neither
too long which would be audibly laggy, or too short which would result
in clipped audio
the values that control the regulation in both the sdlaudio package and
television package will need tweaking to find the best values
all SetPixel() function now set VBLANK pixels to 'VideoBlack' via a call
to GetColor(), rather than setting the RGBA values directly. except the
video digest, which remains a special case
this complete work from the previous commit 68263991f
the SetPixels() loop in both digest types were using signals that were
invalid for that frame. this can happen when the screen size changes or
during a change of VSYNC profile
this simplifies the information in the recording and playback files and
means that the current VSYNC settings are ignored
television preferences window disable VSYNC controls when in TV is in
simplified mode
playback used GetReqSpecID() instead of GetCreationSpecID(). noting the
TV specification in the playback file will be replaced with a more
flexible system in the future
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
Instruction boundaries can be inferred by the debugging input loop,
which is the only place it is requred. reworked GetAdjustedCoords() in
the televsion package (now called AdjCoords()) to cope with this.
ReqState() is totally replaced by GetCoords()
caused by changes introduced in dda5ed5d5c
taking the clock/scanline values from LazyTV was a good idea but the
time it takes for the lazy system to update is just long enough for the
old value to be visible.
an additional argument to PixelRender.SetPixels() is required but it
can't be helped.
all signals are now sent with SetPixels(). this simplifies PixelRenderer
implementations. removed the current flag, that information can be
obtained with television.GetState()
AbsoluteMaxScanlines increased to 313. this is to accomodate ROMS that
use the absolute limit of the PAL specification and turn off VSYNC such
that it tips over into the extra line.
TIA now puts both audio channels in the SignalAttributes separately
it is up to television.AudioMixer implementions to mix the two
channels as required
This allows a single call to SetAudio() and for the loop to happen
inside that function - as opposed to looping over the slice and calling
SetAudio() multiple times
this simplifies the sdlimgui/screen type in addition to the NewFrame()
and Resize() functions in the PixelRenderer interface
will allow better overview and summarising of television performance
playscreen F7 window shows "total scanlines" rather than "visible
scanlines"
it's less clumsy when used as a label and it's accurate with regards to
how the VCS is documented. not sure why I thought HorizPos was a better
label. maybe it helped my thinking in the earlier phases of development.
- this caused issues during rewinding
simplified signal history in television storage
simplified pixelrenderer.NewFrame()
simplified pixel management for GUI screen implementation
frame limiter turned off for rewind events
television signal history array is static
PixelRenderer.SetPixel() now expects an augment SignalAttributes
instance. Color is indexed by the PixelRenderer implementation. SDLImgui
implementation now stores copy of specification for speed.
PixelRefresher folded into PixelRenderer. SetPixel() should be called
between two calls UpdatingPixles(true) and UpdatingPixels(false) for all
PixelRenderer implementations - whether it does anything or not.
updates attached pixelrenderers. added Refresh() function and added
'refreshing' flag to SetPixel()
cpu and tia memory references updated on rewind
fixed rewind.Append()
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.
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
reworked how palettes and individual colors are stored
reworked reflection package. dropped the TIA register reflection for
now. will add back again at a later date.
dropped the altPixel phraseology. now just referred to as debug colors
(like Stella and how earlier versions did). rename gui requests
accordingly.
improved mouse-hover window in debugger
removed fixes previously added to account for Pitfall silences. caused
problems with other ROMs, particularly chiphead demo
added option to PLAY mode that presets window to use overscan area.
prevents excessive window resizing when overscan use is detected.
commentary fixes