Commit graph

162 commits

Author SHA1 Message Date
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 58315e5182 added VCS.Snapshot() function. simplifies the rewind package
also allows easy access to the VCS snapshot process when there is no
need to use the rewind package
2024-02-05 11:41:17 +00:00
JetSetIlly f21c693c23 option to select PAL60 missing from the command line
arguments to vcs.SetClockSpeed() more robust
2024-01-28 10:41:08 +00:00
JetSetIlly 547bba947c Added PAL-M TV specification
this replaces the PAL60 specification. PAL60 can still be specified on
the command line (and embedded in ROM filenames) but it is now treated
exactly the same as PAL
2024-01-10 17:42:55 +00:00
JetSetIlly 67a682d32c SECAM/PAL60 console timing 2023-12-31 17:02:37 +00:00
JetSetIlly 395a0785a9 simplified input package by removing AllowPushedEvents()
pushed events are always available and do not have the same performance
impact as orignally thought
2023-08-03 06:53:35 +01:00
JetSetIlly 1ad07dc020 environment correctly propogated after Plumb() event
AudioTick() function in tracker interface accepts TrackerEnvironment
instance. tracker implementation differentiates emulation instances and
records AudioTick() information accordingly
2023-04-17 17:07:03 +01:00
JetSetIlly 6c3035e143 renamed hardware/instance package to environment 2023-04-16 21:24:09 +01:00
JetSetIlly 22ad697d24 definable frame queue length
fast sync. preempt pixel queue on user input
2023-03-05 17:24:03 +00:00
JetSetIlly 11fb367ff5 periperhal event PaddleSet now takes a pair of float32 values
float32 pair defined as ports.EventDataPaddle

added functions to convert the float32 to and from a playback entry.
conversion from the playback entry tolerates a single float32 value
meaning that old recording files will work

rename plugging.PortLeftPlayer and plugging.PortRightPlayer to just
plugging.PortLeft and plugging.PortRight
2023-02-27 21:27:21 +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 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 fd591dd46d peripherals weren't being fingerprinted when loading from an initial ROM selector 2022-04-29 13:50:33 +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 5885c9e776 fixed race condition in instance caused by timeline
thumbnailer was running in a different goroutine to that which the state
being used to generate the thumbnail was create in. there's no way of
making that safe except through mutexes or similar. that's too much
overhead for something as inconsequential as a timeline thumbnailer

timeline thumbnailer now runs in the same goroutine as the main
emulation, bypassing these problems. scheduling of when thumbnailer runs
is now done manually

"Live" TIA Revision values replaced with atomics. small performance
improvement
2022-04-04 21:27:56 +01:00
JetSetIlly ae08fdfa10 atarivox/festival command exits properly
ends immediately on emulation quit and doesn't leave zombie process if
controller is changed mid-emulation
2022-03-07 19:27:10 +00:00
JetSetIlly ab92d01f73 fingerprinting of controllers
moved controllers and savekeys package to new peripherals package

removed auto controller

changed lazy.Controllers to lazy.Peripherals and Controllers window to
Peripherals window

changed CONTROLLER command to PERIPHERAL command. removed AUTO option

added savekey as an option to PERIPHERAL command and Peripheral window
2022-01-29 08:58:05 +00: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 f2fb0091e7 simplified/clarified memory interface
addresses and bus interface removed and split into cpubus and chipbus
packages.

ReadZeroPage() no longer has any distinction from normal Read()
function.
2021-12-26 19:00:11 +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 4df1eb071e added the ports.InputEvent type
this is now used when passing events and event data around. it also
records the port and time (in TV coordinates) which are required by
driver/passenger synchronisation and playback recording

removed television interfaces from signal package and moved the
interfaces to where they are needed
2021-12-05 20:17:43 +00:00
JetSetIlly 62ff113f13 EmulationLabel moved from cartridgeloader to instance package 2021-12-05 20:17:43 +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 e0d4c7cb7b added random package. random numbers "accessed" via instance package 2021-12-05 20:17:43 +00:00
JetSetIlly 085adf5159 added hardware/instance package 2021-12-05 20:17:43 +00:00
JetSetIlly 464a62c9db userinput package can now forward events to many implementations of HandleInput
preperation for allowing parallel emulations with the same userinput
2021-12-05 20:17:42 +00:00
JetSetIlly 249e3c4b60 timeline window now runs the rewind.GetState()/thumbnailer in the main emulation goroutine
the thumbnailer does the actual emulation in a new goroutine so there's
no lag here but it's necessary to PushRawEvent() so that
rewind.GetState() doesn't race
2021-11-18 21:51:44 +00:00
JetSetIlly f44707057b counting for the timeline removed from reflection package
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
2021-11-13 10:21:45 +00:00
JetSetIlly 33cb5543aa controller input reset after rewind state plumbed in
this fixes the issue caused by rewinding and continuing from a state in
which a controller was active
2021-11-06 15:25:02 +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 b46dc6db58 added tracker package and audio tracking window 2021-10-28 19:49:15 +01:00
JetSetIlly cc22223313 refactor of ports package
added PeripheralID type to complement PortsID type. renamed keyboard
peripheral to keypad, which is more accurate and removes any potential
confusion with the physical keyboard the user might be using
2021-08-24 16:02:12 +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 ba4a61981d fixed Superbank bank switching 2021-03-28 20:26:01 +01:00
JetSetIlly 2062ff6edb port monitor 2021-03-14 18:03:49 +00:00
JetSetIlly a18421b0af added TIA revision package
common TIA variations added to tia package

revisions preferences window in sdlimgui

key names in prefs package can now contain digits in addition to letters
2021-02-15 19:08:38 +00:00
JetSetIlly b8ecaefebb TIA optimisations
TIA sub-components no longer pass values around in return values. it
turns out to be far cheaper computationally to store calculated values
in the TIA sub-types and retrieving them as required.

on my machine this turns out to be around 2fps saving
2021-01-20 23:50:46 +00:00
JetSetIlly 510c155989 clarified (and corrected) reset procedures 2021-01-14 12:37:38 +00:00
JetSetIlly 76b36a4d80 cartridge rewinding is now more flexible
cart ram/static areas show changes across time

supercharger TV reset after tape load no longer resets frame number.
this affected the rewind system and how it stores historical data.

improved responsiveness of service loop polling
2020-12-31 17:19:33 +00:00
JetSetIlly 418de49ba1 ARM timer ticks forward correctly
VCSReturnChannel so the television can inform the VCS about a change in
television spec. The VCS uses this information to forward clock
information to the cartridge.Step function

DPC and DPC+ music generators now use correct VCS clock value in all
instances
2020-12-30 20:45:07 +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 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 e61cdae584 moved rewind system to rewind package
rewind system not used when in playmode (for now)
2020-10-26 20:02:09 +00:00
JetSetIlly cac80ab720 rewind system is reset when machine is reset 2020-10-23 20:08:43 +01: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 339dcc5c7c delay events can only carry one uint8 value
this simplifies the rewind system

corrected plumbing process for player sprite
2020-10-23 15:12:18 +01:00
JetSetIlly 664ea09f5c halting a non-frame boundary will add add a partial snapshot
continuing from a partial snapshot will cull that snapshot

rewinding state and then continuing from that point will crop the
state history
2020-10-22 21:40:57 +01:00
JetSetIlly 3902b13a55 television state is now rewindable
updates attached pixelrenderers. added Refresh() function and added
'refreshing' flag to SetPixel()

cpu and tia memory references updated on rewind

fixed rewind.Append()
2020-10-22 10:55:41 +01:00
JetSetIlly 4253af599e moved televsion to hardware package 2020-10-21 11:14:20 +01:00
JetSetIlly 3c1fc53093 state of VCS CPU/TIA/RIOT/Memory can be saved and restored on demand
televsion state not stored and there is some state information in the
debugger that is not updated on state restore

sketched in gui state rewinder
2020-10-21 10:48:49 +01:00