Commit graph

191 commits

Author SHA1 Message Date
JetSetIlly 0c8b2d2450 added audio comparison to comparison package
changed comparision/diff texture to linear and clamped scaling

comparison window will not be open on following session

if a comparison window was left open on program exit, it remained
open when the program is started again, even if there was no
comparison ROM specified. comparison window will now be closed
under those circumstances
2024-05-28 16:43:23 +01:00
JetSetIlly e0a792083c corrected RemoveRealtimeAudioMixer() function
the function is not used currently but it should be correct none-the-less

reset realtime mixer in television on Reset()
2024-05-28 16:43:23 +01:00
JetSetIlly 03b9854e92 improved TV spec selection combobox in debugger TV screen window
AUTO is a checkbox that can be toggled
2024-05-21 19:34:15 +01:00
JetSetIlly 5bd9cd1f5a changing TV SPEC while paused will update the spec as expected
the rewind system is used to rerun the previous 10 frames thereby creating
an image that immediately reflects the selected specification
2024-05-21 19:18:12 +01:00
JetSetIlly 2aa2a11ba6 SetSpec() to AUTO and with the forced works as expected
setting the spec in this manner changes the creation Spec ID. this means
that is the spec is changed by the TV SPEC command or by via the debugger
window, newly loaded ROMs will prefer the creation ID. if the new creation
ID is AUTO then auto-detection and filename directives are preferred

changing the creation ID to AUTO with the forced flag also resets the
stable frames counter. this means that the auto-spec identification will
work as expected on change
2024-05-21 18:09:50 +01:00
JetSetIlly 17df98c1ec added "creation Spec ID" to television
this is in addition to the requested Spec ID and the current Spec ID
2024-05-21 18:09:50 +01:00
JetSetIlly 4813dae6c4 ELF system argument uses the television requested spec ID
tracker package uses television spec ID correctly

movie cart tested for PAL60. it should be PAL-M

rewind search functions uses the TV spec of the main emulation

command line "performance" and "regress add" -spec option renamed to -tv

template for TV terminal command uses specification.ReqSpecList
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 141a5f34d2 refresh rate calculation uses correct HSR value for PAL/SECAM
the value for NTSC/PAL-M was already correct
2024-05-21 18:09:50 +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 5549230c69 equalised new/atari safe top/bottom value for PAL/SECAM
NTSC still needs this in practice because of the propensity of NTSC
roms to assume a larger screen (eg. Spike's Peak)
2024-05-10 19:37:15 +01:00
JetSetIlly a196b21a93 logging functions called with real env instances from the hardware package
logger package will no longer create new log entires for environments
other than the main emulation (or the logging.Always shim)
2024-04-30 17:48:46 +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 344b92e8f3 increase TV frame resize threshold from 2 to 3 frames
this fixes abberant resizing when using the emulation rewind with
moviecarts - the moviecart rewind system is unaffected by this

moviecart resets the frame state on Plumb()
2024-04-27 19:06:31 +01:00
JetSetIlly 4d7ec9f109 fixed TV frame size clamping
frame cannot be bigger than the NewSafeVisible values and not smaller
than the AtariSafeVisible values

works well with PAL60 resizing
2024-02-09 11:53:23 +00:00
JetSetIlly 558ec65438 fixed TV frame generation when VSYNC immediately follows natural flyback
the solution isn't perfect but given the current state of how the TV and
pixelRenderes work and interact, it's an adequate solution
2024-02-09 11:39:06 +00: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 df1afc5c21 added preview package
preview can be used to run a ROM for a short period in order to gather
information about the ROM that can only be found through execution. this
is useful for example, for setting the TV dimensions
2024-01-28 20:14:18 +00:00
JetSetIlly 745e977ef2 improved thumbnailing 2024-01-28 20:14:18 +00:00
JetSetIlly e52f2420b1 screen resizing not performed when TV is unstable
improved screen size detection of PAL and PAL60 during startup (ie. when
TV is unstable)

resizing no longer clears display pixels
2024-01-28 18:34:52 +00:00
JetSetIlly b450c0bde9 corrected black pixel framing 2024-01-28 10:41:08 +00:00
JetSetIlly e491cccbff another correction for VBLANK framing 2024-01-28 10:41:08 +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 e8dc4c0b43 corrected which TV spec string is used for vcs.SetClockSpeed()
sometimes the command line argument, AUTO, was sent rather than the
detected specification as a result of the AUTO request. this resulted in
a spurious/misleading log message
2024-01-18 21:06:09 +00:00
JetSetIlly 8bbbc4f563 PAL-M machines generate NTSC colours and not PAL colours 2024-01-13 18:07:16 +00:00
JetSetIlly ec3b840af2 television resizing
TV cropping was misaligned by one pixel vertically (gui)
2024-01-10 17:42:55 +00:00
JetSetIlly 7679d96f21 search for TV spec in filename now ignores the path component
for example, in ROM Hunter's archive there are directories called "PAL
VERSIONS OF NTSC ORIGINALS" and "NTSC VERSIONS OF PAL ORIGINALS". these
cause false positives in the TV spec search
2024-01-10 17:42:55 +00:00
JetSetIlly 83e52bdd62 Television Aspect Bias is now constant for all specifications 2024-01-10 17:42:55 +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 0a91777f53 allow TV size to shrink from bottom 2024-01-10 17:42:55 +00:00
JetSetIlly 67a682d32c SECAM/PAL60 console timing 2023-12-31 17:02:37 +00:00
JetSetIlly 9f6cbdad58 added CYCLE quantum
updated QUANTUM and STEP commands to accoodate new quantum

control window changed to support the three quantum options

improved/corrected the conditions under which the ONSTEP command is run

disassembly.ExecutedEntry() updates existing entry
2023-11-27 07:47:30 +00:00
JetSetIlly 8ccae4e70f TV rotation
cartridges can control TV rotation if necessary. only movie cart does
this for now

alt + <cursor keys> manually flips the screen rotation
2023-10-07 16:06:56 +01:00
JetSetIlly 1cc0a66c70 added SECAM support 2023-09-18 19:19:25 +01:00
JetSetIlly 520a666053 StrongARM ColorLookup uses the appropiate table for the current TV
specification

added minimal Television interface to Environment type. exposes
GetSpecID() to the hardware emulation
2023-09-15 15:50:47 +01:00
JetSetIlly 12b9f19d1f removed lazy update components. made savekey rewind safe 2023-08-26 09:14:40 +01:00
JetSetIlly fbee41d0fc TV nudge counter access is now an atomic operation 2023-07-22 19:34:40 +01:00
JetSetIlly af4f95d514 altered period of FPS measuring pulse 2023-07-19 20:34:28 +01:00
JetSetIlly 60bb13e302 FPS measurement was broken if television was being nudged 2023-07-16 21:43:36 +01:00
JetSetIlly 732c433cd2 tidied and simplified test package 2023-07-06 13:49:18 +01:00
JetSetIlly 537aa451d4 television pixel renderers expected to resize as a result of NewFrame()
Resize() removed from PixelRenderer interface

pixels are no longer cleared during resize (sdlimgui screen
implementation) when in playmode
2023-06-05 17:58:35 +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 8fd2a7659d improved screen handling of frame queue
screen can nudge the emulation limiter in the event of frame queue
collision

nudge icon in playscreen information (FPS) window
2023-05-17 17:24:44 +01:00
JetSetIlly b074e2cffb Frame field of coords.TelevisionCoords can now be 'undefined' 2023-03-22 18:36:21 +00:00
JetSetIlly 6fd921492f added JITTER halt condition 2023-03-16 13:52:37 +00:00
JetSetIlly a0de56b9ba fixed STEP BACK behaviour in HBLANK area 2023-03-13 14:05:22 +00:00
JetSetIlly 22ad697d24 definable frame queue length
fast sync. preempt pixel queue on user input
2023-03-05 17:24:03 +00:00
JetSetIlly 0e0aa88c63 television.Signal() logs error rather than returning
this means that we can remove error checking from the tia step functions
2023-02-19 21:22:22 +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