Commit graph

51 commits

Author SHA1 Message Date
JetSetIlly
b54439e574 correct processing of signal array in pixel renderers
all SetPixel() function now set VBLANK pixels to 'VideoBlack' via a call
to GetColor(), rather than setting the RGBA values directly. except the
video digest, which remains a special case

this complete work from the previous commit 68263991f
2024-11-23 14:56:37 +00:00
JetSetIlly
e4dea5c7b9 reverted SignalAttributes to a struct
profiling shows that the performance penalty is no longer that great.
the struct is preferable because the code is clearer
2024-11-23 14:56:37 +00:00
JetSetIlly
a7c296d6c4 simplified calls to logger package
calls to Logf() which do no formatting replaced with Log()

calls to Log() with Sprintf() replaced with Logf()

error types sent without use of Error(), taken advantage of new logger
package features

correct construction of wrapped errors in eeprom package
2024-11-23 14:56:36 +00:00
JetSetIlly
84a881504c ACE handles YieldProgramEnded
the ARM should never return this type of yield. it it does it
is handled as a YieldExecutionError
2024-07-16 16:10:01 +01:00
JetSetIlly
516092310c added user preference for "synchronised on startup" 2024-06-11 13:58:14 +01:00
JetSetIlly
1c3b4454e8 corrected specification switching in conjunction with new VSYNC code 2024-06-11 13:58:11 +01:00
JetSetIlly
cb0181f684 calls to SetResizer() are paired with calls to SetSpec()
comment added to SetResizer() function to explain that this is
probably required
2024-06-11 13:57:39 +01:00
JetSetIlly
94dd1fc9f9 Revert "preview emulation uses TV spec from command line option"
This reverts commit 1c95bc94b8.
2024-06-08 12:51:27 +01:00
JetSetIlly
f65241fce2 improved communication of preview results from animation thumbnailer 2024-05-29 14:47:40 +01:00
JetSetIlly
a4b848e0c8 thumbnail animation changed TV spec on Create() function 2024-05-21 18:20:43 +01:00
JetSetIlly
83ace43f86 NewTelevision called with correct creation spec ID
for example, the ROM selector created a new thumbnail animation with
the AUTO spec when it's more appropriate to use the creation spec of
the main emulation
2024-05-21 18:09:50 +01:00
JetSetIlly
8b2f630417 television can inherit resizer instance
this is instead of swapping FrameInfo information and setting the
resizer values based on that. this is used by the television in
conjuction with the preview package
2024-05-21 18:09:50 +01:00
JetSetIlly
25523d350d data race in thumbnail.Anim.PreviewResults()
actual preview results are sent over the channel rather
than just a signal to retrieve the results
2024-05-19 16:02:57 +01:00
JetSetIlly
1c95bc94b8 preview emulation uses TV spec from command line option
this fixes a problem where some ROMs when given the command line
directive to use the PAL spec is contradicted by the preview emulation.
this seems to be a particular problem with PAL ROMs that never set a
valid VSYNC signal. Nightstalker is a good example of such a ROM
2024-05-18 17:25:09 +01:00
JetSetIlly
f995efa41e better solution for problem in 5549230c
clarified how preset sizing works for the television resizer
2024-05-11 14:46:39 +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
cd2a00d4ba logger.Log() and logger.Logf() now require a logger.Permission instance
the logger.Permission interface indicates whether the environment making
the logging request is allowed to create new log entries. the
environment.Environment type satisifies the Permission interface

logger.Allow is provided as a convienient way of indicating the the log
entry should always be created
2024-04-30 11:23:40 +01:00
JetSetIlly
da83fc311b removed complexity from cartridge fingerprinting process
all cartridge data is read through cartridgeloader io.Reader interface
2024-04-16 10:18:13 +01:00
JetSetIlly
877f282b8b corrected supercharger multiloading for fastload 2024-04-10 20:50: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
9e69f124d5 animated thumbnail preload render queue with empty image on creation
animated thumbnail emulation could be left running if ROM Select window
was closed with the X button
2024-02-14 16:04:29 +00:00
JetSetIlly
d1482c139a main environment label is now "main" rather than the empty string
this means that main emulation must be explicitely named but this is
good because it means there is no ambiguity if a support emulation is
not named
2024-02-09 17:25:26 +00:00
JetSetIlly
86cab7c258 thumbnail animation monitors screen for activity
if activity is low then a panel reset input is inserted into the
emulation

this is only a sketch of an idea and could definitely be improved
2024-02-06 22:24:13 +00:00
JetSetIlly
00fc13aee6 ROM select window shows mapper and TV information
animation thumbnailer drains render queue when creating a new emulation
2024-02-05 11:41:17 +00:00
JetSetIlly
685bf7ccc7 added support for stella.pro files
added properties package

ROM select window display property information
2024-02-05 11:41:17 +00:00
JetSetIlly
7a6d877096 added preview emulation support to ROM selector animation 2024-01-28 20:37:42 +00:00
JetSetIlly
745e977ef2 improved thumbnailing 2024-01-28 20:14:18 +00:00
JetSetIlly
e491cccbff another correction for VBLANK framing 2024-01-28 10:41:08 +00:00
JetSetIlly
2d02764e60 moved coprocessor interface/types from mapper to coprocessor package
there could be more work to do here to make this more readable
2023-08-09 15:26:05 +01:00
JetSetIlly
61b4c07b65 thumbnailer (animation and image) implement CartYieldHook
a cartridge with a coprocessor that had failed for some reason would
cause the thumbnailer goroutine to halt

in the case of the thumbnailer.Image type this would lock the UI
goroutine. and in the case of the thumbnail.Anim type it would lock the
goroutine that had been launched to produce the animation

added YieldHookResponse to better indicate the intention of the
CartYieldHook
2023-07-18 09:26:39 +01:00
JetSetIlly
ac5e3ba6b9 split Thumbnail type into image and anim
anim better handles animated thumbnails (eg. ROM select window)
2023-05-21 18:42:00 +01:00
JetSetIlly
78c4a30b34 clarified the names of constants of type environment.Label 2023-04-23 20:00:26 +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
6fa1f42118 ROM select thumbnail view clamps texture (avoid ugly border)
ROM select loads cartridge using setup package
2023-02-16 19:42:28 +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
0cde9cc7fb added Notifications package
this replaces Event in govern package and in the mapper package.
NotificationHook moved from cartridgeloader package to new package
2022-08-31 14:37:00 +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
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
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
62ff113f13 EmulationLabel moved from cartridgeloader to instance package 2021-12-05 20:17:43 +00:00
JetSetIlly
aceda42de5 corrected thumbnailer comments 2021-12-05 20:17:42 +00:00
JetSetIlly
c778ee58be fixed moviecart title screen length
it runs shorter in thumbnail emulation and for the normal time in the
regular emulation
2021-11-20 16:20:48 +00:00
JetSetIlly
0d261cf630 thumbnailer emulation supports supercharger completely (callback hooks) 2021-11-19 19:22:20 +00:00
JetSetIlly
2348faf319 improved ROM selector. updated CARTRIDGE command
double-click in ROM selector loads the cartridge. cartridgine
information below thumbnail. save ROM selection to preferences.
automatically select previous ROM on next session.
2021-11-19 16:44:10 +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
eecd5aa8c1 fixed controller snapshotting and dumping of emulation links 2021-11-18 21:51:44 +00:00
JetSetIlly
4f4bee0b36 thumbnail preview on timeline hover
introduced PlumbFromDifferentEmulation interface. the ARM emulation
doesn't like being moved between emulation instances so the ARM is
recreated when plumbing a state that originated in a different
emulation. not all mappers need to implement this interface.
2021-11-17 17:30:46 +00:00
JetSetIlly
6b40af1749 moviecart in the ROM select thumbnail will have shorter titlecards
added EmulationLabel to cartridgeloader.Loader as a way of indicating to
cartridges what emulation category they are in
2021-11-17 10:26:52 +00:00