Commit graph

1240 commits

Author SHA1 Message Date
JetSetIlly
b16b59291a television pauses rendering on rewind
replacement for GuiStateRewinding request removed in previous commit

particularly effective when rewind snapshot frequency is greater than
one frame

colorterm should now work correctly with RawEvents and RawEventImm (I
don't really use colorterm anymore but this corrects an oversight)
2021-01-03 11:39:27 +00:00
JetSetIlly
1bfe27e3ed speeded up lazy breakpoint checks for disasm window
rewind system feels smoother and quicker. fixed bug in TV plumbing
introduced by recent commit

removed StateRewinding / StateGotoCoords requests. it was slowing things
down and it seems other recent changes have removed the need for them in
the first place (purely visual reasons).
2021-01-03 08:57:50 +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
aab9db672e textinputs edit correctly when machine is running 2020-12-31 21:02:34 +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
537c9d79af updated README
Clarified Stella's utility during development of the CDF cartridge formats.
2020-12-31 16:09:30 +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
c0f64a7e40 removed fancy polling mechanism
while it works under Linux it doesn't work on Darwin on Windows. the
ideas behind it though, I've retained and am now using the
sdl.WaitUntilTimeout() function which does a close enough job and is
guaranteed to work on all systems.
2020-12-30 20:45:07 +00:00
JetSetIlly
dc1dfdfa0a updated README 2020-12-30 20:45:07 +00:00
JetSetIlly
376165aaa8 new service loop did not work in Windows. fixed.
two polling methods have been abstracted into two files polling_fancy
and polling_simple. these are built according to the build constraints.
currently fancy polling is used by linux and darwin and simple by
everything else.
2020-12-30 20:45:07 +00:00
JetSetIlly
2389e683d7 arm7 package tidy 2020-12-30 20:45:07 +00:00
JetSetIlly
6d3fec0e0a clarified/simplified how sdlimgui service timout ticker is selected 2020-12-30 20:45:07 +00:00
JetSetIlly
cdd01db301 bumped imgui-go version to v3.0.0
fixed lint errors
2020-12-30 20:45:07 +00:00
JetSetIlly
c25f7aec4d removed "animated" screen cursor effect from debugger
it does not play nice with the new delay procedure in the service loop
2020-12-30 20:45:07 +00:00
JetSetIlly
919e510180 small reworking of FPS slider and frame limiter
deadlock prevention for new service loop - caused by serviceWake channel
being serviced on both ends in the same goroutine. fixed with
select/default construct

fixed bug which caused screen-cursor being shown when emulation is
running
2020-12-30 20:45:07 +00:00
JetSetIlly
389e3e338b reworked keyboard handling in sdlimgui
removed some unused GUI requests. originaly added to support earlier and
simpler GUI implementations, that have since been removed

ESC key now toggles input capture in debug mode

` (backtick) key toggles run state in debug mode
2020-12-30 20:45:07 +00:00
JetSetIlly
5831e82a2e clearer mouse capture in debugger
removed double-click to capture mouse. it is now a button with clear
instructions.
2020-12-30 20:45:07 +00:00
JetSetIlly
d4ab437506 Optimisations
Collision tests run less frequently

Pixels are reused more often

Streamlined Playfied.pixel() and Player.pixel() functions

Tiny improvment to ARM MapAddress() imlplementations (CDF and DPC+)

Small improvement to performance of ARM read 16/32 bit memory functions

Unchanged overlay renamed to "Unoptimised"; now highlights pixels that
were generated without any optimisation at all
2020-12-30 20:45:07 +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
7b54b19e4b better handling of mouse motion events in mini-service loop
handling of mouse motion is stalled slightly unless the gui is in
playmode or input is "captured"
2020-12-30 20:45:07 +00:00
JetSetIlly
d2ee20ed8c better CPU usage in debug mode when nothing (or very little) is happening
FPS measured even when fpscap is not active. measurement will be
done more reliably.

FPS indicator will always remain on top of playscreen

spelling mistake in Makefile .PHONY list
2020-12-30 20:45:07 +00:00
JetSetIlly
409af79c65 (again) better start-bank detection for Atari ROMs
the reset routine now tests each bank to see if the reset vector is
sensible. probably applicable to some other mapping formats but
keep it to the Atari ROMs for now.
2020-12-30 20:45:07 +00:00
JetSetIlly
2b75a50b8d shader generator outputs constants in sorted order
stops "go generate" from producing an altered file when in fact nothing
has changed.
2020-12-30 20:45:07 +00:00
JetSetIlly
968899ce10 CDF and DPC+ now rewindable
removed patching for CDF and DPC+ for now (not really related to
rewinding but I thought I'd remove it until I can get to test it
properly)
2020-12-30 20:45:07 +00:00
JetSetIlly
70e83867ef CDF registers window
(only MusicFetchers and FastFatch/SampleMode flags for now)
2020-12-30 20:45:07 +00:00
JetSetIlly
93d60d1db6 fixed pixel() logic in ball sprite
ball was not being drawn correctly if vertical delay was active

added vertical delay checkbox to ball tab in TIA debug window
2020-12-30 20:45:07 +00:00
JetSetIlly
2c5cf7f79a CDF format. support for all versions except CDFJ+
DPC+ updated to support changes to ARM package

PlusROM host/path detection size limited
2020-12-30 20:45:07 +00:00
JetSetIlly
9d74be9b1b atari starting bank fixed at bank 0
I've flip-flopped on what the start bank should be for atari cartridges.
I'm reasonably happy that this is now correct.

fixes Voice Enhanced Bezerk ROM while retaining correct beahviour for
all test ROMs
2020-12-30 20:45:07 +00:00
JetSetIlly
a90833c77c move dpc+ mapper to it's own package
tidied up and clarfied some concepts in the Cartridge interfaces
2020-12-30 20:45:07 +00:00
JetSetIlly
7b5f302957 small alteration to Supercharger register window 2020-12-30 20:45:07 +00:00
JetSetIlly
b90eff8f9c ARM memory access now handled via SharedMemory interface
DPC+ ammended to support SharedMemory interface
2020-12-30 20:45:07 +00:00
JetSetIlly
f9d353f5fd more ARM instructions
software interrupts unimplemented

DPC+ function call hotspot expanded to support copy functions and
parameters

DPC+ARM ROMs working:
    frantic
    space rocks
    unholy
    donkey kong arcade
    oofescape
    zaxxon demo
2020-12-30 20:45:07 +00:00
JetSetIlly
2e4cd77714 minimum amount of ARM7 Thumb instructions implemented to get a test ROM working 2020-12-30 20:45:07 +00:00
JetSetIlly
a79688a83e sketched in arm7tdmi support 2020-12-30 20:45:07 +00:00
JetSetIlly
69f0dc5064 renamed CartRegistersBus to CartCoProcessorBus
DPC and DPC+ windows renamed accordingly

cartridge peek/poke now read/write cartridges in passive mode
    - it should always have been like this

cartridges with coprocessors no longer alter anything when in
passive mode
    - this affects DPC and DPC+
2020-12-30 20:45:07 +00:00
JetSetIlly
98bf114626 removed vestigial Println() calls 2020-12-30 20:45:07 +00:00
JetSetIlly
2ce1870fe4 plusrom hostname validation corrected
hyphens are valid characters in hostnames (except for the first character)
2020-12-09 12:02:30 +00:00
JetSetIlly
a81e596aab binaries target for Makefile
better naming of executables, ready for upload
2020-11-29 11:59:35 +00:00
JetSetIlly
17d743632d updated README
added CRT prefs screenshot
2020-11-28 19:17:29 +00:00
JetSetIlly
cbe351c33d go constants inserted into generated glsl
makes code clearer and less likely to be wrong
2020-11-28 12:50:30 +00:00
JetSetIlly
7d38c1cd84 simplified read8BitPC() function in CPU implementation
simplified handling of null videoCycle callback

removed some pointless assignments

clarified player scancounter switch
2020-11-28 07:39:56 +00:00
JetSetIlly
133e9e34ab toggle fps indicator in playmode (F12)
toggle fullscreen in playmode (F11)
2020-11-27 22:02:55 +00:00
JetSetIlly
890eec5c72 altered how time.Ticker is reset in television limiter
correct gui state restored after rewind
2020-11-27 21:11:01 +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
cbc1b8b7f5 fixed television for ROMs that VSYNC late
NewFrame() non-synced is now only called if VBLANK is off

this fixes: flappy, the chase screen on Hack'Em Pacman, ProTennis; while
not breaking ROMs that deliberately do not send VSYNC like (Andrew
Davies' Chess ROMs)
2020-11-25 22:35:09 +00:00
JetSetIlly
dae060699f bumped imgui-go v2.6.0 2020-11-25 21:58:01 +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
c524c47f6f fixed visible change in screen scaling on startup
affected both play screen and debug screen
2020-11-25 10:46:04 +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