the logger.Permission interface indicates whether the environment making
the logging request is allowed to create new log entries. the
environment.Environment type satisifies the Permission interface
logger.Allow is provided as a convienient way of indicating the the log
entry should always be created
this called in the same way as the corresponding functions in the
television and reflection packages
list of locals is updated when emulation is paused. this allows the list
of locals to be visible immediately on program start and when execution
is halted in the VCS part of the execution (as opposed to yielding in
the ARM part of the execution due to a breakpoint)
fixed race condition caused by local variable 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 emulation package has been unecessary since the amalgamation of the
debugger and play modes. in order to allow switching between the two
modes it was necessary to remove the playmode package and to move all
playmode loops and other considerations into the debugger package. as a
result the abstraction offered by the emulation package is uncessary
returns a CoProcState value rather than a boolean value
updated prompt building and debugger reflection overlays to work with
new type and values
commentary introduces the idea that coprocessor state is about VCS
synchronisation
ELF will call ExecutionStart() and ExecutionEnd() as appropriate for the
change of state. this needs work because the meaning of "Execution" in
context of StrongARM type synchronisation is unclear
the callfn package previously assumed that all ARM cycles would have
been accounted for (on the VCS side of the ledger) before Start() was
called agin
renamed CartBreakpoints interface to CartCoProcExecution
reflection now used CartCoProcExecution.CoProcIsActive() to determine
when coprocessor is active, rather than the clumsy BankInfo mechanism
the TV has an invalid signal on reset and a input loop that has not yet
unwound will call Reflector.Step() and try to use the invalid signal
leading to a bounds error
new counter package added (sub-package of reflection)
this new counting method is fast enough to be run while in playmode,
which means that historical timeline information is immediately
available in the debugger
previous improvements made in 02f6e05f1e
fixed by maintaining two copies of reflection history which are
alternated between, ensuring that the entires are never used by the GUI
and emulation threads at the same time
bounds checking fix in 8387dc7a73 was not
advancing the offset correctly
halting check performance efficiency
less string manipulation in disassembly package. disassembly entry.Label
performance efficiency
reflection gatherer performance efficiency
overlay plotting efficiency. small performance improvement in overlay
plotting. color lookup table is now a straight array not a map
SDL polling efficiency for debug mode
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()
reflection was only being stepped on the VCS videostep callback which
caused some final CPU conditions to be missed
Step() function is now called OnVideoCycle() and an additional
OnInstructionEnd() has been added
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"
These conditions only seem to apply to some machine types. Prompting
a reason to introduce options to allow the user to select the precise
2600 model.
Hmove has been packaged up for easier working. We could probably improve
HMOVE instrumention because of this.
removed optimistion reflection overlay
it didn't show all optimisations that are now done in the TIA emulation
and it was difficult to present the information meaningfully. plus, it's
information about the emulation itself and not about the emulated machine.
cleaned up lint errors
tidied up collision detection routines
clarified some concepts in the reflection system
rationalised some concepts in the sdlimgui interface
- handling of PackedColors is clearer
- easier handling of color key entries (colored rectangle and label)
Collision tests run less frequently
Pixels are reused more often
Streamlined Playfied.pixel() and Player.pixel() functions
Tiny improvment to ARM MapAddress() imlplementations (CDF and DPC+)
Small improvement to performance of ARM read 16/32 bit memory functions
Unchanged overlay renamed to "Unoptimised"; now highlights pixels that
were generated without any optimisation at all
collision combinations now stored by bit pattern and not string. the
string is useful for the debugger but has performance implications on
the playmode. new method is probably marginally more efficient for the
debugger too.
rather than taking a snapshot of the reflection system, rewind replays
the emulation from the previous frame. this is a considerable saving
in memory. it also allows us to remove the signal history from the
television state information saved by the rewind system. this is also a
significant memory saving.
more efficient memory use possible I think by saving every other frame
or every third frame and allowing the emulation to run to fill in the
interim frames. this would require folding the input recording system
into the rewind system.
TIMELINE <n> function doesn't work as required just yet
screen refresh could be better on rewind plumbing
occasional deadlock when moving rewind slider
(this version is exceedingly memory heavy. including tv signal and
reflection history in the rewind system is a mistake. work will now
concentrate on the rewind system storing VCS state only and recreating
the tv/reflection signal when a state is restored.)