Commit graph

119 commits

Author SHA1 Message Date
JetSetIlly
7de45d3d25 added -elf=none to all profiling invocation of the emulator in the Makefile 2023-09-13 20:14:28 +01:00
JetSetIlly
27df3bd5f5 improved caching of decoded Thumb2 (32bit and FPU) instructions
previously, the cached instructions still required a significant amount
of decoding. the new method captures the state of the decoding much
closer to the variable element of the instruction (eg. using what's in
the register etc.)

most of the benefit of the caching still comes from not having to reread
program memory every instruction but the new method does add a small
performance increase and arguably, more clarity to the code
2023-08-31 08:54:33 +01:00
JetSetIlly
b3c743d8df tiny efficiency improvement in ACE 2023-08-30 07:34:19 +01:00
JetSetIlly
894d491371 added 32bit Thumb instruction TST (register) 2023-06-24 22:16:07 +01:00
JetSetIlly
b968c534ab chaged signature of Tick() function for delay.Event type
the function no longer returns (uint8, bool) tuple. it instead expects a
function that can be called from the Tick() function itself, in the case
of "success"

this has significant performance improvements due to the frequency of
calls to delay.Event.Tick()
2023-02-19 21:22:22 +00:00
JetSetIlly
896e32a5a9 corrected -trimpath (although it doesn't seem to work with non .go files) 2023-02-16 07:47:08 +00:00
JetSetIlly
9cd7f15a16 added -trimpath to build flags in Makefile (go1.19 and higher) 2023-02-15 07:56:32 +00:00
JetSetIlly
fed7060736 more flexible shader pipeline / new screenshot method
screenshotting now uses exactly the same CRT sequence as the playmode. a
single file for each screenshot rather than a selection of images

results aren't exactly comparable but the new pipeline means it should
be easier to manipulate to get the results we want
2023-02-12 13:31:42 +00:00
JetSetIlly
abe3a0837f added a pgo file - performance profile of ARM using ROM
build and release targets in Makefile now use pgo
2023-02-12 13:23:40 +00:00
JetSetIlly
89f691f33e updated README
refined readme_spell target in Makefile
2022-10-30 13:24:13 +00:00
JetSetIlly
d3cd6c458b added cross_winconsole_development target to Makefile
this target build a console friendly version of the windows binary.
tagged with development indicator because we don't ever want to release
these as an actual version

removed some old and unused make targets
2022-10-29 16:21:38 +01:00
JetSetIlly
8497d95fb0 extistance of BusStuff and CoProc interfaces decided in cartridge Attach() and Plumb()
BusStuff and CoProc functions are called a lot and type assertions are
moderately expensive and noticeable when done frequently. by making the
assertion in when the cartridge is inserted we can reduce the test to a
simple boolean comparison
2022-10-24 15:46:36 +01:00
JetSetIlly
3576f6cf9a corrected Makefile with respect to d548d0c852 2022-09-07 19:23:25 +01:00
JetSetIlly
52004e5f78 makefile correctly detects minimum version of go for test target
the font rendering used for build and release target will use the
freetype library unless the go version indicates that it's being built
on MacOS with an M2 CPU (darwin/arm64)

for some reason not yet fully understand, using freetype causes an issue
on darwin/arm64
2022-08-22 21:34:14 +01:00
JetSetIlly
266646f150 ELF is now rewind safe. memory copied and repointed correctly 2022-07-31 08:36:36 +01:00
JetSetIlly
d7b1f0df71 simplified conditions underwhich playfield and sprites tick()
also triggerMissileReset() is passed to missile at init time and not on
call to Missile.tick()

small performance improvement
2022-05-28 19:12:16 +01:00
JetSetIlly
7e57bbe46c removed unused/unwanted dependencies
go-wav, statsview and memviz all indirectly used gopkg.in/yaml.v3 which
I do not want to depend upon

WAV functionality is no longer available for wav writing or reading
(supercharger tapes). will try to reintroduce functionality in the
future
2022-05-26 12:14:34 +01:00
JetSetIlly
8fb2d16b00 reording of CDF MapAddress() decisions 2022-05-25 09:23:56 +01:00
JetSetIlly
0c85bbfff2 added cross_windows_development target
this adds the current git hash to the executable filename
2022-04-29 13:50:33 +01:00
JetSetIlly
fc431415f1 cross_windows make target deletes icon resource file on completion
cross_windows make target specifies "windowsgui" - changed for testing
purposes and now changed back
2022-04-06 22:30:08 +01:00
JetSetIlly
50d91e22d2 separated release and release_upx 2022-03-25 21:52:22 +00:00
JetSetIlly
3d3efbf3f4 static linking of freetype for cross_windows target
corrected error handling on SDL initialisation failure
2022-03-16 14:52:45 +00:00
JetSetIlly
9ce2258a0a freetype font rendering enabled with imguifreetype build tag
Makefile updated to build with freetype by default.

building without the imguifreetype build tag will cause the application
to use the default proggyclean font

embeds JetBrainMono-Regular.ttf under the OFL-1.1 License
2022-02-05 23:02:32 +00:00
JetSetIlly
4a658e2073 auto detect memory model for DPC+ ROMs
corrected logging messages and comments in objdump package
2021-12-13 13:38:15 +00:00
JetSetIlly
56a0d6a4dd silenced "make clean" on non-existant files 2021-12-05 20:17:42 +00:00
Stephen Illingworth
a321c67e23 added logo and windows icons
makefile cross_windows now requires rsrc https://github.com/akavel/rsrc
2021-11-22 21:06:51 +00:00
JetSetIlly
cc3d26ed0a embed windows icons in windows binary 2021-11-22 10:06:49 +00:00
JetSetIlly
1e8e9dd005 removed -display option from performance mode
added -fpscap to emulate() function (used by both playmode and the
debugger) making it a good alternative to the -display option

getting performance mode to work with an increasingly complex
gui-emulation communication just isn't worth it. it would make the code
too complex.

this paves the way for removing the Emulation interface and using a
straight-forward Emulation type, which will be current Debugger type
renamd. the Debugger type is currently handling the playmode, performing
well and allowing tighter integration of the debugger and playmode.
2021-11-19 21:43:22 +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
3f6bd5fccb preview thumbnails in ROM selector
added thumbnailer package to support thumbnailing
2021-11-15 13:37:50 +00:00
JetSetIlly
32499606a3 WSYNC/Coproc aren't counted in playmode so timeline now shows dotted lines
dotted lines indicate that those counts haven't been made during the
period shown
2021-11-10 14:29:53 +00:00
JetSetIlly
e0d577589f rewind in playmode is more responsive - mousewheel and keyboard
added rewind via gamepad bumper

cleanup of rewind functions in debugger package
2021-11-09 08:40:45 +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
668b8750b3 added piano keys window 2021-10-31 13:35:24 +00:00
JetSetIlly
22ead85bdc emulator event notification icons
like peripheral event and cartridge event notifications but placed in
the top-left corner of the screen

fixed race condition by calling playmode Pause() from the GUI thread
2021-10-26 19:40:12 +01:00
JetSetIlly
04e6b6ca98 added profile_cpu_debug Makefile target 2021-10-19 08:38:44 +01:00
JetSetIlly
394a23bb35 makefile builds windows binaries with -H=windowsgui flag 2021-10-15 19:07:18 +01:00
JetSetIlly
61b4125d74 replaced SignalAttributes struct with a single uint64 value
more efficient memory usage and marginally faster performance. maybe
possible to compress to a single uint32 value?
2021-09-02 14:20:44 +01:00
JetSetIlly
537fa62663 Supercharger Fastload handled with cartridgeloader.VCSHook mechanism
The error mecahnism worked but the VCSHook solution is more general and
has the added benefit of keeping all special-cartridge-handling code
together and keeping it out of the input-loop
2021-08-21 10:59:16 +01:00
JetSetIlly
e5105feb9e supercharger soundload improvements 2021-08-19 12:33:02 +01:00
JetSetIlly
2f6327d721 makefile test target checks go version and uses -shuffle if available 2021-08-18 06:48:14 +01:00
JetSetIlly
53e83ecaca test target in Makefile now specifies -shuffle on 2021-08-18 06:28:05 +01:00
JetSetIlly
c303c847f3 SetPixels() in sdlimgui PixelRenderer sped up
modest performance improvement
2021-08-15 11:12:20 +01:00
JetSetIlly
156ecd8d3e optimisations in arm7tdmi package, particularly for immediate mode 2021-08-13 21:26:29 +01:00
JetSetIlly
4bdba33551 television package keeps better track of current frame information
this simplifies the sdlimgui/screen type in addition to the NewFrame()
and Resize() functions in the PixelRenderer interface

will allow better overview and summarising of television performance

playscreen F7 window shows "total scanlines" rather than "visible
scanlines"
2021-08-12 11:28:59 +01:00
JetSetIlly
617dec7837 Makefile profile_mem changed to profile debugger 2021-06-16 23:54:32 +01:00
JetSetIlly
febf85e5ab main loop will sleep if no GUI is active
clarified user instructions issued by Makefile
2021-06-14 11:13:09 +01:00
JetSetIlly
f875c79289 rearranaged performance.Check() function parameters
added includeDetail argument. this adds the Go version string and time
parameted to the filname of any profile file (specified by the profile
parameter)

simplified GUI creation process in main goroutine sync

corrected Makefile spellings
2021-06-13 16:38:50 +01:00
JetSetIlly
686f52597f makefile: added profile_cpu_again target 2021-06-09 20:01:39 +01:00
JetSetIlly
3628d8ea6b makefile: easier to change go binary 2021-06-08 20:43:11 +01:00