Commit graph

79 commits

Author SHA1 Message Date
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
JetSetIlly
0fb6b780cc abstracted VCS facing parts of the television implementation into the signal package
NTSC and PAL information, including colours, moved into specification package
2020-10-31 22:01:12 +00:00
JetSetIlly
efab64d898 simplified GetState() signature 2020-10-25 18:36:05 +00:00
JetSetIlly
63da4073d9 remove Television interface / renamed Reference to Television
the interface was becoming too large and was a remnant of a very early
development phase. the gui interface type has replaced that concept.
2020-10-23 15:35:39 +01:00
JetSetIlly
e3eb439cf8 tidy up of television package 2020-10-21 16:19:57 +01:00
JetSetIlly
4253af599e moved televsion to hardware package 2020-10-21 11:14:20 +01:00
JetSetIlly
05a2837853 disable random elements of the VCS for regression and playback recordings 2020-10-19 18:32:57 +01:00
JetSetIlly
1cdb19562e error values checked (golangci-lint -E errcheck)
error checked on Close() of writable file

fixed disassembly sanity check
2020-10-18 10:59:19 +01:00
JetSetIlly
9e159b97d8 added more linters to golangci-lint config
godot --fix has been run to make sure all comments end in a full-stop

specified nolint directive to apply to specific linter
2020-10-16 16:31:07 +01:00
JetSetIlly
b41c6d0301 removed unnecessary whitespace (golangci-lint -E whitespace --fix)
update Makefile lint target
2020-10-16 10:29:09 +01:00
JetSetIlly
e6e3a63be8 spelling errors in comments (golangci-lint -E misspell --fix)
update Makefile lint target
2020-10-15 22:02:51 +01:00
JetSetIlly
504ad464a1 corrected regression output format
added ability to skip tests during a regression run by issuing an
interrupt signal (ctrl-c). two such signals within 250ms will stop the
run completely

corrected log regression. now makes sure log is clear before beginning
collation
2020-10-02 22:25:03 +01:00
JetSetIlly
7fc48dcd65 renamed errors package to 'curated'
to differentiate with the now existing errors package in the standard
library.
2020-09-28 22:16:59 +01:00
JetSetIlly
2d5cae17f5 reworking of errors package
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.
2020-09-28 22:16:59 +01:00
JetSetIlly
c773f4f5d2 added new log test to the regression package
log test records hash of log output

renamed digest test to video test. removed audio testing

added -log output to "regress add" mode. note that this has nothing to
do with the log test. it simply echos new log entries as the appear to
the console, supressing regression progress meters
2020-09-22 19:21:36 +01:00
JetSetIlly
7e615f40a6 extended state recording concept for regression database
this was a quick addition. it works well but the regression package
could do with an overhaul I think
2020-09-08 18:46:01 +01:00
JetSetIlly
dda8fe3165 more efficient (ie. faster) playback of recordings
previous recordings /may/ not work correctly
2020-09-03 12:18:27 +01:00
JetSetIlly
298a5d343f updated copyright notice in all files
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.
2020-07-26 20:18:56 +01:00
JetSetIlly
1eb0100194 corrected DPC+ data-fetcher address decrement
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
2020-07-21 21:36:40 +01:00
JetSetIlly
520c4f3013 added StaticArea interface to cartridges
static data window in debugger

reworked menu system to allow cartridge specific window menus

cleaned up how cartridge RAM information is specified and retrieved

renamed cartridge.Format() to ID() and reference to "cartridge format"
to "cartridge mapping". format is an overloaded word already and it was
confusing.
2020-05-09 09:27:56 +01:00
JetSetIlly
e4e1fa4c44 moved ansi package back to easyterm package
because I'm sick of looking at it in the root package :-)

regression package made a reference to the clear line code sequence, but
honestly ANSI is so well understood there's really no need to delegate
this to another package. local copy of the code in regression package.
2020-04-11 20:53:34 +01:00
Robin Eklind
24cb28843f gopher2600: use fully qualified import path as module path
Fixes #4.
2020-03-21 23:39:56 +01:00
JetSetIlly
2fc4053511 corrected race condition for frame limiter
message limiters for regression tests no longer use FPSLimiter

the tick pattern is so simple it's been copied into the relevant
functions
2020-03-10 22:41:56 +00:00
steve
6b01edbf43 improved imgui integration 2020-02-09 20:35:59 +00:00
steve
dbdf196554 fixed "num skipped" value in regression test summary 2020-02-08 12:20:48 +00:00
steve
ddee89b8b0 moved ansi package from debugger
removed IsVisble() from GUI interface
2020-02-08 07:55:14 +00:00
steve
75f79abd98 improved playback error messaging
clarified when and how playback is allowed when TV types differ

currently there is only one television implementation but we may
need to expand on this in the future
2020-01-20 06:35:38 +00:00
steve
1add64b3bd rewrite sdlplay and sdldebug
better and safer thread interaction
2020-01-13 19:04:59 +00:00
steve
4534da0db6 reworked paths package
the location of the configuration directory now depends on how the
binary is built. release versions of the binary will look for the
gopher2600 directory in the user's os configuration directory.
non-release versions will look for the .gopher2600 directory in the CWD.

paths.ResourcePath() will create the paths that don't exist

paths.ResourcePath() now clearly differentiates paths and files

added build target to the Makefile; disabled release target for now
2020-01-07 19:14:51 +00:00
steve
16b15fad95 o added licence headers to all files 2020-01-05 18:58:43 +00:00
steve
d7cdfcfe61 o errors
- removed ErrorID, using the error message as the ID
    - works just as well and simplifies maintenance
    - the messages should be moved to the relevant packages OR to a
      locale package. not sure which yet.
2020-01-05 18:58:42 +00:00
steve
6c210ee6c1 o debugger
- reorganised packages within the debugger package
    - commentary and documentation

o terminal
    - renaming of console to terminal in all instances
2020-01-05 18:58:41 +00:00
steve
aba69ec69a o added overview documentation for every package
o recorder
    - fixed recorder after recent changes made to digest/video
    - fdf3f2765c59de4097a01b7fdf736ae38e4398b4
2020-01-05 18:58:41 +00:00
steve
59056fb6a8 o regression
- fully implemented audio digest regression

o modalflag
    - can now print additional help text
2020-01-05 18:58:41 +00:00
steve
7de8c5ba14 o database
- improved documentation
    - some tidying up

o regression
    - improved documentation

o digest
    - Digest interface now requires Hash() rather than String()
    - warning: use of String() may now break things
2020-01-05 18:58:41 +00:00
steve
5698309e68 o database
- improved error messaging
    - sketched in support for audio and 'video & audio' digests in
	digest regression
2020-01-05 18:58:41 +00:00
steve
da4ce0b9eb o digest
- renamed screendigest package to digest and SHA1 type to
	ScreenDigest
    - added AudioDigest type
    - added Digest interface
2020-01-05 18:58:41 +00:00
steve
9f50f3c77e o audio
- implemented audio
    - using Ron Fries' method as the basis
    - removed sample playback - performance of Fries' method is good
	enough that we'll never need it again
    - sdl audio routines using QueueAudio() - maybe better if we use
	callbacks?
    - sketched wavwriter AudioMixer - not usable yet
2020-01-05 18:58:40 +00:00
steve
8ad481e132 o debugger / playmode
- removed references to SdlPlay and SdlDebug
    - constructors for debugger and playmode now expect instances of GUI
    and Television, rather than creating them
    - this should help future porting efforts

o peripherals
    - renamed Events to Actions
    - to avoid confusion with Events in the GUI package

o television
    - renamed StellaTelevision to television; a better name because
    it serves as a reference implementation and is the only television
    implementation currently needed.
    - originally, PixelRenderers were implemented as Television that
    embedded StellaTelevision; it made sense to use a more unique name
    - note that we're still keeping and using the Television interface
    - reworked specifications file
2020-01-05 18:58:39 +00:00
steve
cc8c14f0ae o regression
- saving scripts (playback and state scripts) are now prepended with
	info about what type of script it is. in practice it has proved
	useful to know this from a glance, rather than opening up the file.

o gopher2600
    - playing back recordings is now more intuitive
    - removed option to specify the filename that a new recording will
	save to but I think that's acceptable.
2020-01-05 18:58:39 +00:00
steve
17b5c599f2 o paths
- implemented paths package
    - handles building of paths using the most appropriate config path -
	the local directory or the user's home directory
2020-01-05 18:58:39 +00:00
steve
28d7352b52 o cartridgeloader
- moved from memory package
2020-01-05 18:58:39 +00:00
steve
11d9676ba9 o screendigest
- moved digesttv to screendigest package

o television
    - removed imagetv and renderers package
2020-01-05 18:58:39 +00:00
steve
3ecbd6b527 o regression
- playback regression entries will now end with an error if
	emulation has not terminated at 100%
    - shouldn't ever happen except during development of the emulation
	core. none-the-less it is useful for regressions to end in all
	instances.
2020-01-05 18:58:39 +00:00
steve
1814ed0544 o debugger
- renamed metavideo concept to reflection
    - moved metavideo/reflection to its own package
    - added ReflectionNotRunning error
    - error message shown if overlay is turned on without reflection
	processing running
    - improved DISPLAY command

o sdl
    - type assertion panics now caught in sdl.SetFeture() and returned
	as a PanicError
2020-01-05 18:58:38 +00:00
steve
8db28019c6 o instrumentation
- replaced machineinfo concept with instrumentation interface
    - for now instrumentation is the same as the Stringer interface
    - plans to add more advanced instrumentation with additional
	interface requirements. Stringer is a good first step

o debugger
    - removed verbose/terse modes

o regression
    - fixed how frame regression gets state information (otherwise
	broken by changes removal of machineinfo)
2020-01-05 18:58:38 +00:00