Commit graph

233 commits

Author SHA1 Message Date
JetSetIlly
08a7695d01 command line arguments are forwarded to default RUN mode 2023-11-22 08:04:19 +00:00
JetSetIlly
aec9109e76 add command line --help for submodes 2023-11-19 20:28:55 +00:00
JetSetIlly
85adbca367 improved gopher2600.go structure
removed modalflags package. modalflags was added very early in the
project. it's neater and simpler to implement command-line modes with
the standard flag package directly

improved log message for unsupported terminal type

remove rand.Seed(time) on startup. rand.Seed() is a deprecated function
2023-11-19 20:16:17 +00:00
JetSetIlly
b48d487643 added version package
Makefile now sets the version string for the project. the version
package tries to set a meaningful version string if the project is not
built with the Makefile

added VERSION command
2023-11-08 22:05:41 +00:00
JetSetIlly
1cc0a66c70 added SECAM support 2023-09-18 19:19:25 +01:00
JetSetIlly
a8009b513f simplified the setting of FPS cap from the command line
command line now only accepts true/false as options. previously, the
options were aimed at allowing different syncing methods with the
monitor but that's not needed now
2023-05-23 20:26:50 +01:00
JetSetIlly
9cb6cce02e added macro package and command line option
screenshot request to GUI system can specify a filename
2023-04-20 23:01:31 +01:00
JetSetIlly
596f40e82d errors from gui Destroy() are logged rather than printed to stderr 2023-04-07 22:33:51 +01: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
5410a9b936 number of cores being used is added to log on startup 2023-01-05 22:20:19 +00:00
JetSetIlly
e318ae8fda path to ELF/DWARF file can be specified on command line 2022-09-28 19:31:04 +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
d548d0c852 -fpscap option in PERFOMANCE mode changed to -uncapped
-uncapped defaults to true, which is more useful for this mode than
running with the FPS cap enabled

renamed because the -fpscap option for PLAY and DEBUG mode is now very
different and it was confusing to have an option with the same name but
with different semantics
2022-08-25 21:41:17 +01:00
JetSetIlly
39c62d7ffc additional commentary in gopher2600
reordered arguments in NewDebugger() for clarity
2022-08-20 21:00:20 +01:00
JetSetIlly
c5e8316848 fpscap option now takes values of TV, MONITOR or NONE 2022-08-20 21:00:20 +01:00
JetSetIlly
90ced4ffbc added NewCommandLineOptions() for initialisation of CommandLineOptions
prevents accidetnal nil dereferencing of unused options
2022-08-09 14:57:35 +01:00
JetSetIlly
5b4d667cca added NoEject commandline option
useful in some development environments. we want the emulator to exit
(with an error) if a ROM is bad.
2022-08-08 15:07:59 +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
5c4c11e0da commandline options for main emulation modes moved to debugger package
this is more flexible and allows additional options to be added easily
2022-08-02 10:06:48 +01:00
JetSetIlly
4ce3aecbca readded wavwriter package using go-audio/wav package 2022-05-26 21:10:28 +01:00
JetSetIlly
7e57bbe46c removed unused/unwanted dependencies
go-wav, statsview and memviz all indirectly used gopkg.in/yaml.v3 which
I do not want to depend upon

WAV functionality is no longer available for wav writing or reading
(supercharger tapes). will try to reintroduce functionality in the
future
2022-05-26 12:14:34 +01:00
JetSetIlly
63dcc6d7c3 removed -termtype as an option for playmode command line
may be readded if ASCII rendering of TV screen is ever implemented
2022-05-21 11:19:24 +01:00
JetSetIlly
738273519f removed gui.ReqShowFPS and -showfps command line option
state of fps overlay is saved on exit so there is now need for those
requests/options
2022-05-14 23:00:14 +01:00
JetSetIlly
3972842419 added left and right arguments for debugger and playmode
PERIPHERAL command now accepts AUTO parameter. this will (re)fingerprint
the cartridge and insert the "detected" peripheral

implementation temporary in lieu of an improved setup package
2022-04-09 15:24:16 +01:00
JetSetIlly
ee73d04fda removed HISCORE from list of submodes
completes removal started in 8ddc1c4d97
2022-03-03 09:06:56 +00:00
JetSetIlly
db5d736f38 added -showfps option. shows FPS overlay by default in playmode 2022-02-16 21:17:54 +00:00
JetSetIlly
a41ce2edda removed -savekey commandline option 2022-01-29 08:58:05 +00:00
JetSetIlly
eade7ea7be readded patch, multiload and wav options to the commandline
removed experimental hiscore client (never used)
2021-12-11 09:56:39 +00:00
JetSetIlly
26c61dd423 no manual input during a playback recording
swallow power off error message at end of playback recording
2021-12-11 09:28:41 +00:00
JetSetIlly
94e24e8881 colored log. log entries with multiple lines will be colored 2021-12-11 08:45:35 +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
dd706b392b preferences for the comparison emulation can be added on the command line
added commandline stack functions to the prefs package
2021-12-05 20:17:43 +00:00
JetSetIlly
8cbe5bf1c1 comparison emulation quits when entering the rewind state
rewinding the main emulation breaks the strict synchronisation
constraints with the comparison emulation. it should be possible to
maintain two parallel rewind instances *and* to maintain the constraints
but I've chosen not to tackle that just yet.
2021-12-05 20:17:43 +00:00
JetSetIlly
0e3ec6a5d5 add visual comparison tool. command line option and gui
userinput for two emulations synced by RIOT ports. RIOT port
driver/passenger synchronisation ensures user input is seen by the
emulations at the same time (relative to the emulation's television)

does not yet handle RNGs (randomise on startup or the RNG in the DPC or
DPC+ formats yet). we need to add a context type first
2021-12-05 20:17:42 +00:00
JetSetIlly
1e8e9dd005 removed -display option from performance mode
added -fpscap to emulate() function (used by both playmode and the
debugger) making it a good alternative to the -display option

getting performance mode to work with an increasingly complex
gui-emulation communication just isn't worth it. it would make the code
too complex.

this paves the way for removing the Emulation interface and using a
straight-forward Emulation type, which will be current Debugger type
renamd. the Debugger type is currently handling the playmode, performing
well and allowing tighter integration of the debugger and playmode.
2021-11-19 21:43:22 +00:00
JetSetIlly
9c59dea5e0 fixed interrupt handling when in playmode/debugger probably broken during 13aa07b
added terminal.UserQuit sentinal error to better handle quit events.
future versions should probably remove 'running' variable and rely on
this error and filter accordingly
2021-11-19 18:13:28 +00:00
JetSetIlly
219ffa58c5 playmode will always show ROM selector if cartridge is ejected
this works even when starting in debugmode and switching to playmode
before choosing a cartridge. before it would exit with a command line
error.
2021-11-18 10:29:33 +00:00
JetSetIlly
042af21eba (re)added -log command line option for debug/play modes
this adds a stdout echo for the central logger. playmode had this before
the refactor in 13aa07b0cc
2021-11-13 11:40:33 +00:00
JetSetIlly
92d96cc4e9 major refactor. amalgamated debugger/playmode emulations
switch between debugger and playmode with F6 or backtick key

pakage debugger remains for now but it will be renamed to emulator or
something like that. playmode package removed.

commandline options for both debugger and playmode are the same
currently, with some playmode features being lost (temporarily)
2021-11-04 09:38:35 +00:00
JetSetIlly
321cf62d2d gopher2600 can be launched without filename on command line
this works for both playmode and debugmode. in playmode a ROM selector
will be shown immediately
2021-10-15 08:48:51 +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
c1a13ba61b user interrupt handling improved for debugger
now takes into consideration the attached terminal. added
IsRealTerminal() to terminal.Input interface to support this

reworked script package error messages
2021-09-24 20:07:08 +01:00
JetSetIlly
6ac1a8858d removed gui.ReqState. replaced entirely with emulation.State()
I had started to do this work but hadn't finished it.

added gui.ReqEnd so that gui can exit gracefully (save window
preferences etc.) this was previously handled by ReqState
2021-09-22 15:36:10 +01:00
JetSetIlly
8bf405ee80 added NewLoaderFromEmbed()
suitable for loading data from a go:embed directive
2021-09-05 10:11:02 +01:00
JetSetIlly
3a32f82707 added forcing of supercharger multiload byte to playmode
generalised OnInserted function in catridgeloader package, to VCSHook.
receiver of VCSHook differentiates by cartridge mapper and action
string
2021-08-20 21:26:24 +01:00
JetSetIlly
c2616c2573 added emulation package / gui.EmulationState (re)moved 2021-07-25 18:44:12 +01:00
JetSetIlly
0f169f41bc TV fps now adjusted to match incoming signal
TV frame will never resize if frame is unsynced

Play-screen FPS counter shows target frame frequency

sdlimgui playscreen: screen will not roll on first couple of non-synced
frames. the screen is tolerant of the odd rogue frame.

gui vsync options renamed to monitor sync to clarify distinction wth
emulated television VSYNC
2021-06-22 22:22:07 +01:00