Commit graph

3372 commits

Author SHA1 Message Date
JetSetIlly
29fcfe1fe1 corrected ARM yield for bug type yields
now yields PC of instruction not the current PC register
2024-07-08 10:53:36 +01:00
JetSetIlly
a1c5f8f5bd bumped version to v0.34.0 pre-release 2024-07-06 23:05:59 +01:00
JetSetIlly
1e1c1cbe6f bumped version to v0.33.0 2024-07-06 22:14:10 +01:00
JetSetIlly
fab6eb1507 renamed television halting conditions 2024-07-06 22:09:39 +01:00
JetSetIlly
95ea700ae5 added VBLANK/VSYNC overlay
overlay shader will color the VBLANK/VSYNC area with stripes
2024-07-06 22:03:11 +01:00
JetSetIlly
79d5e5be00 simplified CoProcYieldType 2024-07-06 22:03:11 +01:00
JetSetIlly
77f6e02a4d tweaked vblank/vsync text in play screen overlay 2024-07-06 22:03:11 +01:00
JetSetIlly
002f2287de ARM cycle limit panic guard removed
replaced with cartridge yield

TODO: make coprocessor.CartridgeYield more like television.HaltCondition
2024-07-06 22:03:11 +01:00
JetSetIlly
7a2e257c36 VBLANK information in the playscreen overlay
reintroduction of the old idea of indicating whether the screen is
"atari safe" (as per the Stella Programmer's Guide). the indicator is
now a tick icon next to the VBLANK information
2024-07-06 22:03:11 +01:00
JetSetIlly
4950d7ccea debugger menu bar shows halt reason
overlay shows a bug icon if VSYNC ever changes
2024-07-06 22:03:11 +01:00
JetSetIlly
225dd77829 television halt conditions controlled by user preferences 2024-07-06 22:03:11 +01:00
JetSetIlly
8e917ec896 television issues halt if VBLANK bounds change
this is not the same as a change of visible bounds, which take into
account ideal settings and if VBLANK is never set at all
2024-07-06 21:52:28 +01:00
JetSetIlly
32319dc50a added HaltFromTelevision() to debugger halt conditions
television accepts a Debugger interface that will be called if halt
conditions are met

television issues halt if VSYNC signal changes
2024-07-06 21:52:28 +01:00
JetSetIlly
d5925d497d move television vsync type into its own file 2024-07-06 21:52:28 +01:00
JetSetIlly
de803e6f1c added VSYNC trace to timeline window
television would not desynchronise if scanlines was less than user
preference

desync is now less aggressive. for example, the transition between the
map screen and main screen in Lord of the Rings would trigger a full
screen roll but now it's less noticeable
2024-07-06 21:52:28 +01:00
JetSetIlly
dee9c15352 more efficient AccessPassive() for ELF 2024-07-06 21:52:28 +01:00
JetSetIlly
c3cc0bbb13 ARM cycle counting specific to architecture
this gives a small improvement to ARMv7_M architecture because there's
no need to check the state of the the MAM sub-system
2024-07-06 21:52:28 +01:00
JetSetIlly
dd1e1188ce LateCOLUPF expanded to include COLUBK register
when I implemented the feature I only knew of Quickstep as
being a problem ROM for some RGB mods. however, there is now
an example of a ROM where the COLUBK register is a problem.

rather than add a new option I simply renamed LateCOLUPF to
LateColor and set it to affect the COLUBK in addition to
COLUPF
2024-07-06 21:52:28 +01:00
JetSetIlly
dc084bea7b added crunched package and implemented a simple RLE crunching interface
elf SRAM is crunched with this new package on Snapshot()

.gitigore updated with */testdata

added fuzz target to Makefile
2024-07-06 21:52:28 +01:00
JetSetIlly
61baee5f4c slightly more efficient snapshotting of ELF memory 2024-07-06 21:52:28 +01:00
JetSetIlly
89d465a50c reversal of accidental commit in 40d4e96a 2024-07-06 21:52:15 +01:00
JetSetIlly
40d4e96ac3 corrected C source code parsing
embedding a // comment inside a /* */ block produced incorrect results
2024-07-06 21:29:20 +01:00
JetSetIlly
78b61de4a6 correct fix for rewinding of fastload supercharger files
the problem was that the Plumb() function was not providing the new
pointer to the cartridge

this wasn't a problem for the soundloud sub-implementation because that
never changes supercharger memory directly

however, for fastload, the load process does poke supercharger memory as
part of the fast load process. this meant that the fastload
implementation could poke memory of another rewind state, meaning that
the current rewind state would never get past the load() point. ie. the
PC would never be set to the correct value etc.

fastload does not send NotifySuperchargerFastload notification unless it
is in the MainEulation (not during thumbnailing etc.)

previous attempt at fix in commit 78a6880
2024-07-06 01:17:34 +01:00
JetSetIlly
0e590ad51d cartridgeloader.NewLoaderFromData() retreives property entry
corrected error messages issued by NewLoaderFromData()
2024-07-01 21:47:28 +01:00
JetSetIlly
06e5ae0717 bumped golang.org/x/image from 0.13.0 to 0.18.0 2024-06-26 20:41:27 +01:00
JetSetIlly
8b27c93d1a ARM cycle regulator applied at program yield
it's relatively expensive to scale the cycles for every instruction.
this means that the cycle limit can happen either earlier or later than
expected but honestly, if we're worried about the cycle limit the
program is running out of spec in any case
2024-06-24 06:49:55 +01:00
JetSetIlly
672a7fd253 fixed the make profile_* targets
these were broken in b48d487 when the release ldflags were used for
profiling. the release flags strip symbol and DWARF data from the binary
meaning that pprof couldn't dig into the source code or disassembly
2024-06-23 20:53:50 +01:00
JetSetIlly
4149e732cd tv spec given on command line given priority 2024-06-23 16:12:41 +01:00
JetSetIlly
f06315203d DPC+ reset of fractional fetcher counter on setting low byte
depending on the DPC+ driver used the counter is either reset or it is
left alone on setting of the counter
2024-06-23 14:36:48 +01:00
JetSetIlly
f28a0736f4 fixed call to filepath.Clean() in archives.Set()
this fixes an issue on Windows where ROM selector could
not navigate backwards out of the installation folder.
Issue #30
2024-06-21 21:00:02 +01:00
JetSetIlly
1985e6bde1 flexible drawing of items on RHS of debugger menu 2024-06-18 15:51:03 +01:00
JetSetIlly
73d3181020 television resize is not committed unless screen is synchronised 2024-06-18 15:51:03 +01:00
JetSetIlly
9c0c11a7c6 bumped imgui-go requirement to 4.7.2
this is purely house-keeping because I fumbled the release of
imgui-go 4.7.1. it's okay except the tag to 4.7.1 is not in a branch,
which may seem odd.

it was caused by starting the release process on github but then force
pushing an additional change. the release process is now pointing at
a commit that is not part of a branch
2024-06-18 15:51:03 +01:00
JetSetIlly
d54bb1c685 fix for ab5a408
unwanted changes to service.go committed by accident
2024-06-16 16:41:30 +01:00
JetSetIlly
ab5a408212 polling sleep period kept short if LMB is being held
holding down mouse button without any mouse movement does not produce an
SDL event. this meant that holding down the STEP SCANLINE button slowed
down dramatically after the short keepAwake period
2024-06-16 15:11:08 +01:00
JetSetIlly
5b9dee99ec updated .gitignore 2024-06-16 10:49:30 +01:00
JetSetIlly
51f77f2a7a COPROC MEM SEARCH command 2024-06-12 14:03:21 +01:00
JetSetIlly
54c05a05a5 LDRSH misspelled as LDSH (thumb mnemonic) 2024-06-12 14:03:21 +01:00
JetSetIlly
e02f5b9f94 bumped version to v0.33.0 pre-release 2024-06-11 21:17:56 +01:00
JetSetIlly
e97629f34a possible to re-record playback files
this is useful for recreating playback files for the regression
database. playback entries not currently supported for REDUX mode

added -playbackIgnoreDigest and -recordingFilename options for RUN mode
2024-06-11 19:38:48 +01:00
JetSetIlly
eaf62ed37e playback resets VCS after normalising the environment
this is necessary because the "Randomise on Startup" might be active
and so the console needs to be reset without that enabled
2024-06-11 17:48:12 +01:00
JetSetIlly
babeade87a recording and playback system sets the television to simple mode
this simplifies the information in the recording and playback files and
means that the current VSYNC settings are ignored

television preferences window disable VSYNC controls when in TV is in
simplified mode

playback used GetReqSpecID() instead of GetCreationSpecID(). noting the
TV specification in the playback file will be replaced with a more
flexible system in the future
2024-06-11 17:47:47 +01:00
JetSetIlly
e534c43181 increased absolute number of scanlines to 350
Some PAL games go a lot higher than 313 scanlines meaning that the TV
could never synchronise

this breaks existing recordings

extended visible bottom for PAL games
extended to 305 (Acid Drop is an example of a game
that needs this additional space
2024-06-11 17:39:47 +01:00
JetSetIlly
3a4e0057a5 ROM selector, timeline and comparison thumb, now use 4:3 aperture
added WidthTV and Height TV to specification package. these can be used
to specify the 4:3 aperture and will scale nicely if a texture needs to
be bigger for example

debugger TV and bot image not updated, although the bot image texture
now uses linear scaling
2024-06-11 13:58:14 +01:00
JetSetIlly
0ad744fd2c use of "atari safe" value replaced with "ideal" values
this is to make the screen be sized at 4:3 in the majority of cases

"atari safe" values are still in the source and can be used for
information purposes in the debugger (not added yet)
2024-06-11 13:58:14 +01:00
JetSetIlly
45378fa526 screen size fixed at 4:3
TV image will be squeezed into the 4:3 aperture automatically
depending on detected screen size
2024-06-11 13:58:14 +01:00
JetSetIlly
ae8daf5fd5 fixed pixel perfect 'phopshor' fade
broken in 5d8d65d0f
2024-06-11 13:58:14 +01:00
JetSetIlly
acdcf4c6cd added simple television to television package
regression package uses simple television, mainly for backwards
compatability purposes
2024-06-11 13:58:14 +01:00
JetSetIlly
11abfdcea3 flyback scanline is not touched if a VSYNC signal is invalid 2024-06-11 13:58:14 +01:00
JetSetIlly
5061c5c77f tweaked values television prefs assigns to VSYNC perferences 2024-06-11 13:58:14 +01:00