Commit graph

124 commits

Author SHA1 Message Date
JetSetIlly
6728d37045 removed 'simple' television
simple was added so that regression database didn't need to change along
with the changes to the television (simple is an older television
implementation rather than anything really new). but now that the
regress package can redux playback files, there is now no need for the
'simple' version
2024-11-23 14:56:37 +00:00
JetSetIlly
f98a775d37 regression and database improvements
added Replace() to database package

simplified Regressor interface

playback regressor can now be reduxed

regression Redux() now uses database.Replace() instead of separate
Delete() and Add(). this makes sure that the redux entry gets the same
database key once the redux has completed

removed -dryrun option from REGRESS REDUX

removed regression fails log. it wasn't well developed and not a
particularly useful idea

fixed television.SetSimple(). the signal function was not set correctly
2024-11-23 14:56:36 +00:00
JetSetIlly
f66d020907 added lint target to Makefile
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
2024-11-23 14:56:36 +00:00
JetSetIlly
46ac3c0e68 changed regression/log to use logger.SetEcho()
this seems clearer and less prone to error than WriteRecent()
2024-10-07 19:24:18 +01:00
JetSetIlly
08b1a94dcd simplified RunForFrameCount() 2024-09-14 12:30:20 +01:00
JetSetIlly
66fde044ee added CARTRIDGE SETBANK command 2024-09-07 17:47:21 +01:00
JetSetIlly
e97629f34a possible to re-record playback files
this is useful for recreating playback files for the regression
database. playback entries not currently supported for REDUX mode

added -playbackIgnoreDigest and -recordingFilename options for RUN mode
2024-06-11 19:38:48 +01:00
JetSetIlly
acdcf4c6cd added simple television to television package
regression package uses simple television, mainly for backwards
compatability purposes
2024-06-11 13:58:14 +01:00
JetSetIlly
d5e2c945e9 REGRESS RUN keeps a list of failed regressions
specifying FAILS as a key will add the previously failed regressions to
the list

REGRESS LIST accepts list of keys to list. this can include FAILS to
list the previous FAILS from REGRESS RUN

as before, specifying no keys at all defaults to selecting all keys in
the database
2024-06-07 21:15:01 +01:00
JetSetIlly
7601cf778a REGRESS REDUX now accepts list of keys to work on
added -dryrun command line option for redux
2024-06-07 21:15:01 +01:00
JetSetIlly
4090cd7f75 fix regression state file path creation
state file used the complete path of the cartridge
2024-06-07 21:15:01 +01:00
JetSetIlly
7fb177c9bc cartridgeloader uses properties to decide on TV spec
properties made goroutine safe
2024-05-21 18:09:50 +01:00
JetSetIlly
96ad0797b4 NewVCS() expects environment.Label on instantiation
this helps force the environment.Label to be set to something meaningful
2024-04-30 18:34:35 +01:00
JetSetIlly
d431974c76 playback files no longer created cartridge loader directly
the information used to create the loader is storied in
the playback type rather than a created loader itself

this is more flexible and gives us better control of when
the loader is disposed of

checking of cartridge hash must now be performed explicitely
when the cartridge loader is created from the playback information
2024-04-17 09:54:09 +01:00
JetSetIlly
7ed001c4c1 changed when cartridgeloader is created for log/video regression
creating the cartridgeloader later in the regression process gives a
clearer indication of when and if the cartridgeloader is closed properly
2024-04-16 22:42:28 +01:00
JetSetIlly
18aa6db347 reworked cartridge loader package 2024-04-16 10:18:13 +01:00
JetSetIlly
24f3f32342 simplified notifications package
notifications interface instance moved to environment from
cartridgeloader. the cartridgeloader package predates the environment
package and had started to be used inappropriately

simplified how notifications.Notify() is called. in particular the
supercharger fastload starter no longer bundles a function hook. nor is
the cartridge instance sent with the notification
2024-04-06 10:12:55 +01:00
JetSetIlly
08a7695d01 command line arguments are forwarded to default RUN mode 2023-11-22 08:04:19 +00:00
JetSetIlly
6c3035e143 renamed hardware/instance package to environment 2023-04-16 21:24:09 +01:00
JetSetIlly
68cf99620e setup entries output log message on successful application
clarified some database concepts - updated regression and setup packages
accordingly
2023-02-14 10:08:33 +00:00
JetSetIlly
3aa5885ebe removed curated pacakge. replaced with wrapped errors
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
2023-02-13 21:58:39 +00:00
JetSetIlly
2d0431bc83 regression tests check for CPU KIL state 2023-02-05 14:04:42 +00:00
JetSetIlly
688ca31ea8 resetting of VCS is no longer automatic on cartridge insert
the reset can be done automatically but as an optional operation. it has
been discovered that in some situations more preparation is required
before the cartridge is reset. particularly, ACE/ELF type cartridges
where the ARM may executed before the coprocessor disasm/developer
packages are initialised and attached
2022-10-08 18:42:23 +01:00
JetSetIlly
28ffedbf11 removed emulation package. moved types to debugger/govern package
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
2022-08-31 14:37:00 +01:00
JetSetIlly
154c13b7b4 integrity check of ROM binary on recording playback is now optional
this facilitates A/B testing of two binaries. normally you would want to
prevent a playback with a ROM binary different to one used in the
original recording, but in some instances it is useful
2022-08-02 10:12:32 +01:00
JetSetIlly
27ea04cf12 preferences are shared between emulation instances
this means that updating the preferences through the prefs window will
affect all emulation instances equally
2022-01-20 11:15:30 +00:00
JetSetIlly
58848acdf9 input system and ports system separated
playback/recorder and driven input systems moved out of the the ports
package and into a new input package. how the input systems interact has
been clarified and improved - for example, it is now posssible for a
playback file to be used to drive two emulations for comparison purposes

the debugger startup procedure has been clarified with two distinct
startup functions for playmode and debugger - each of which take
different arguments. the clarity has allowed the reintroduction of
recording and playback to the main play mode
2021-12-11 08:19:46 +00:00
JetSetIlly
e6fc6f005d moved TIA Revisions preferences into hardware.preferences package
clarified how the emulated machine is normalised for regression testing
2021-12-05 20:17:43 +00:00
JetSetIlly
085adf5159 added hardware/instance package 2021-12-05 20:17:43 +00:00
JetSetIlly
7af5af322c performance brake for hardware.Run() moved outside of Run() function
extensive commentary on how best to use hardware.Run()
2021-11-11 06:56:50 +00:00
JetSetIlly
180f2b5003 added rewind system to playmode
update userinput.EventKeyboard to support Repeat keypresses

in playmode rewind forward/backward occurs on shift-left or shit-right
cursor keys (with repeat)

removed the pause feature (sdlimgui) that caused two-frame kernels to
appear "complete" when paused.
    a) it wasn't consistent
    b) it can cause single-frame kernels to shimmer
    c) it doesn't really work with the rewind system
it'll be addressed in a future commit
2021-10-26 18:48:35 +01:00
JetSetIlly
19dc94c192 added TelevisionCoords to signals package
makes it more convenient/clearer when working with all three coordinate
values (frame, scanline and clock)

changed all packages to GetCoords() where appropriate
2021-10-22 20:02:02 +01:00
JetSetIlly
78e6582291 can step through WSYNC even with instruction quantum
removed a needless pointer indirection in tia package (tiny performance
improvement)

increased sync delay in win_disasm to 100
2021-10-10 16:15:58 +01:00
JetSetIlly
e5bd938b41 renamed paths package to resources package
ResourcePath() is now called JoinPath()

UniqueFilename() moved to a new package named unique and renamed to
Filename()
2021-10-03 13:32:08 +01:00
JetSetIlly
0025d2ee3a refined how ResourcePath in paths package works
now works more like the standard filepath.Join() function
2021-10-03 13:32:08 +01:00
JetSetIlly
130bd32c7f added regression CLEANUP mode
removes any orphaned scripts. scripts should be deleted when a entry is
removed from the database but this is for in case anything goes wrong
2021-10-03 13:32:08 +01:00
JetSetIlly
f1cd9bd040 removed special CTRL-C handling for regression RUN
it never really worked and was just annoying. default interrupt handling
is sufficient.
2021-09-24 20:24:31 +01:00
JetSetIlly
c816cf5d5a renamed emulation.Halt to emulation.Ending to avoid concept conflict
Halt is a synonym for Pause and a note has been made next to the
variable declaration
2021-09-24 07:26:52 +01:00
JetSetIlly
8bf405ee80 added NewLoaderFromEmbed()
suitable for loading data from a go:embed directive
2021-09-05 10:11:02 +01:00
JetSetIlly
ad596d4b34 corrected how regression database stores cartridge mapping
regressionDB wasn't storing the requested cartridge mapping correctly.
for example, if no mapping was specified by the user but a mapping was
detected by file extension then the detected mapper was stored. this
caused problems with supercharger audio files - the AR mapping was
stored in the DB but no that it was an audio file

DB now stores the user specified mapping in all instances (ie. not the
mapping detected by the file extension).

related to this was that the deserialisation of DB entries was not using
the cartridgeloader package correctly. instead of using NewLoader, the
deserialisation was populating the Loader type manually.
2021-08-19 08:29:55 +01:00
JetSetIlly
c2616c2573 added emulation package / gui.EmulationState (re)moved 2021-07-25 18:44:12 +01:00
JetSetIlly
89b7596837 implemented pausing in playmode
this has revealed the way forward for an effective convergence of
playmode and debugging mode. for this commit a Playmode interface has
been added but this will abstracted into an Emulation interface in the
future
2021-07-24 08:07:23 +01:00
JetSetIlly
cee40a6fad replace all path function calls with filepath function calls
again, not one that is noticeable on Unix but can upset Windows because
of the different directory separator.
2021-06-05 14:38:14 +01:00
JetSetIlly
ec8b17ae6f photomode saves to a unique files with cartridge name
paths.UniqueFilename() altered
2021-05-03 22:15:27 +01:00
JetSetIlly
a6ffa70a7b clarified regression summary output
an error implies that the test has failed
2021-05-02 12:30:38 +01:00
JetSetIlly
24fe0484d9 unique filename generation placed in paths module
generated filenames for playback recording, regression script writing
and terminal outuput saving, remain the same as before
2021-03-06 07:17:52 +00:00
JetSetIlly
46dd44c218 vcs.Run() continue check not only returns error and not (bool, error)
this is marginally quicker but I feel it's neater. to solve the problem
of distunguishing between returns values (true, nil) and (false, nil)
the latter can implemented with a sentinal error.
2021-01-20 23:51:08 +00:00
JetSetIlly
91c88d555b renamed all instances of HorizPos to Clock
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.
2021-01-19 17:34:43 +00:00
JetSetIlly
713a3229e6 added REDUX option to regression
reruns compatible entries in regression database

fps cap off for regression operations
2020-11-25 21:32:26 +00:00
JetSetIlly
4a04f9e161 timer reset correctly on VCS reset
this affected regression tests when random state was switched on
    - although regression tests reset the preferences to a known state
    the timer was not affected when the VCS was reset, causing some
    tests to fail inexplicably
2020-11-22 13:19:08 +00:00