Commit graph

209 commits

Author SHA1 Message Date
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
JetSetIlly
35357f93a3 lint fixes 2021-06-16 14:29:35 +01:00
JetSetIlly
febf85e5ab main loop will sleep if no GUI is active
clarified user instructions issued by Makefile
2021-06-14 11:13:09 +01:00
JetSetIlly
f875c79289 rearranaged performance.Check() function parameters
added includeDetail argument. this adds the Go version string and time
parameted to the filname of any profile file (specified by the profile
parameter)

simplified GUI creation process in main goroutine sync

corrected Makefile spellings
2021-06-13 16:38:50 +01:00
JetSetIlly
0d88a7035f added PAL60 TV specification
cartridge filename will set TV Spec if mathing string is present

added HASH option to CARTRIDGE command
2021-05-02 10:42:50 +01:00
JetSetIlly
1d53447317 removed lint errors 2021-04-16 07:57:44 +01:00
JetSetIlly
aa86b2e42d cartridgeloader streaming 2021-04-02 20:41:45 +01:00
JetSetIlly
156534a3fd added userinput package
debugger and playmode refer to userinput package rather than the common
code being in the playmode package

GUI events are now userinput events

more versatile handling of EventData in controller package. parsing of
EventData is handled by the controller types as required. added
EventDataPlayback type to ports package to help distinguish source of
data.

EventDataStick used to specify stick data value. used to help
distinguish between setting a stick direction and toggle a stick
direction. the latter case is useful for (physical) gamepad input and
the former for input from a keyboard.

Gamepad analogue stick can be used for paddle input. PaddleFire removed
and Fire used instead.

version number of playback file increased to 1.1. version detection of
recorder.IsPlaybackFile() improved.
2021-03-09 22:37:08 +00:00
JetSetIlly
ec71e46ec5 added --log option to performance mode 2021-02-22 17:53:40 +00:00
JetSetIlly
83bf90c826 disasm window uses table API
improved/simplified text disasm output

entry is always correctly updated on execution
2021-02-19 19:24:49 +00:00
JetSetIlly
616dc894cf TIA revisions window accessible in playmode
window positions in playmode are not saved. saved window positions from
debug mode does not affect playmode

updated play and performance mode instantiation so that TIA revisions
window in playmode works correctly
2021-02-16 15:49:48 +00:00
JetSetIlly
2b7b8d1eca reworked linter package
added IterateBlessed() function for Disassembly type. more convenient
method of outputting disassembly to a string.

instruction defintion notes whether opcode is undocumented

linter flags use of undocumented opcodes

renamed DISASSEMBLY command to DISASM

added single address disassembly to DISASM command
2021-02-08 19:16:51 +00:00
JetSetIlly
19e2c7dbc0 changed/streamlined how playmode/debugmode is initiated and handled 2021-01-31 21:08:59 +00:00
JetSetIlly
ab6c4aaeeb streamlined window/menu creation in sdlimgui
removed gui.ReqSavePrefs. prefs should only be saved under explicit
instruction from the user

added gui.StateEnding to be used with gui.ReqState when debugger and
playmode (and maybe other modes) are finishing. sdlimgui uses this to
save window information.
2021-01-04 10:57:37 +00:00
JetSetIlly
d5fa669b1b fullscreen command line option
can start playmode in fullscreen mode
2021-01-01 16:50:53 +00:00
JetSetIlly
c22caf852b CRT blur (very basic chromatic aberration)
blur options added to CRT prefs window

CRT prefs now accessible from playmode (F10)
2021-01-01 14:29:46 +00:00
JetSetIlly
17eb04b931 added trace profile type to performance package
expanded --profile option for DEBUG and PERFORMANCE so that different
profile options can be selected/combined

added --profile option to PLAY mode.

many lint errors removed (re-added "make lint" to git pre-commit hook)
2020-12-30 20:45:07 +00:00
JetSetIlly
0e4737b326 rework of sdlimgui package
removed options related to setting scale of debug/play window
    - can be done more effectively window controls

preference initialisation for debug and play modes is more clear
    - removed errant playmode setting (terminalOnError - not applicable)

simplified window management

nicer feedback on rewind slider
2020-11-27 18:31:23 +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
7e18cbbfb8 improved video performance
screen will buffer a small number of frames it can use to smooth out
variations in the speed at which frames come from the emulation

results in better synchronisation for flicker kernels
2020-11-24 23:29:51 +00:00
JetSetIlly
b6a890a9d1 renamed statsserver package to statsview
optional build with +statsview constraint
2020-11-22 12:04:28 +00:00
JetSetIlly
3880066322 added stats server option to debug and play mode
package from https://github.com/go-echarts/statsview
2020-11-21 18:47:33 +00:00
JetSetIlly
d110a08a64 logging of rewind boundary events
result of changing rewind maxentries value displayed correctly in win_control

timer randomised on startup (if preference selected)

changing symbols preference updates disasm window vertical alignment

file selector:
    - scrolls to top on directory change
    - centres on current ROM when first opened

help note for the -state flags (REGRESS ADD)

changed default window position for timer window
2020-11-19 08:21:28 +00:00
JetSetIlly
b712123653 clarified debugger input loop
removed some logical dead-ends

introduced the concept of restarting the input loop. this is important
when resetting the emulation for example. if the machine is reset during
a video cycle then the emulation will resume inside the video inputloop.
however the reset machine expects to be inside a cpu inputloop, causing
havoc. also used to ensure the rewind system works correctly.

restarting the input loop is tricky. it requires a RawEventReturn channel
that works like the RawEvent channel but returns control to the input
loop on completion.

added GetFeature() to gui interface to better support the rewind
subsystem. renamed ReqFeature() to SetFeature(). Added FeatureReqData
type for clarity.
2020-11-17 23:01:23 +00:00
JetSetIlly
bf4c132f37 sdldebug removed
line terminal debugging still works but without a GUI (for now). will
replace with an ASCII GUI and display in the future.

add gui.Stub to ease transition.
2020-10-27 17:53:45 +00:00