Commit graph

1523 commits

Author SHA1 Message Date
JetSetIlly
0317975e0a moved PC bump for instruction fetch after instruction execution
this means that the PC register is "correct" during the execution of an
instruction. previously the PC register was adjusted as required.
2021-07-09 09:44:48 +01:00
JetSetIlly
18ccb42a8a record ARM cycle order and display in last execution window
simplified tooltip usage in GUI
2021-07-08 21:39:35 +01:00
JetSetIlly
bbc675cf73 MAMTIM value used to control access to MAM
cycles reset or increase a counter that says how many cycles since an
access to flash occurred.

renamed some MAM fields for clarity
2021-07-08 15:47:34 +01:00
JetSetIlly
e561532163 corrected cycle accumulation for format 19 2021-07-08 15:47:34 +01:00
JetSetIlly
3451cb730f corrected PC value with respect to pipeline sequence 2021-07-08 15:47:34 +01:00
JetSetIlly
a762369721 save coprocessor disasm/last-execution includes execution notes 2021-07-08 15:47:34 +01:00
JetSetIlly
14b8dcc418 simplified format 15 function. renamed pcCycle() to fillPipeline()
fixed format 14 (again). added commentary to both format functions to
explain exactly how the cycles are being accumulated.
2021-07-08 15:47:34 +01:00
JetSetIlly
0a1cc327f9 Corrected Format 5 cycle accumulation
Added ARM Interrupt cycle accumulation. Estimates for cycle accumulation
from Stella/Thumbulator
2021-07-06 12:30:51 +01:00
JetSetIlly
b622849e24 corrected cycle accumulation in LDM and STM type instructions
minimal impact on the instances used in the test ROMs
2021-07-05 21:39:48 +01:00
JetSetIlly
c570a1c028 added "disassembly" view to last execution window
shows all disassembled entries in order regardless of whether they were
executed recently or not.

store more information in "pipeline" array
2021-07-05 21:39:39 +01:00
JetSetIlly
96fb590fb6 Subject MAM prefetch to MAMTIM setting (as best as it is currently understood)
Added justification comment with sources, for why MAM prefetch can
behave this way. Weirdly, this seems to apply only to MAM1 and not to
MAM2 so obviously the reason is more nuanced than the current condition.
2021-07-05 21:34:56 +01:00
JetSetIlly
0a0670d8c6 removed N cycle merging. doesn't seem to be a correct intepretation of the text 2021-07-04 20:55:21 +01:00
JetSetIlly
5ef277fe78 MAM accuracy improvement. assuming MAM1 is 'perfect' seems to produce good results 2021-07-04 19:53:09 +01:00
JetSetIlly
8881c420a8 clarified naming of bus types 2021-07-04 19:38:30 +01:00
JetSetIlly
3f7e059f38 generalised N cycle merging and tightened condition in IS cycle merging 2021-07-04 14:28:50 +01:00
JetSetIlly
40dfab59bd clarified mam access code for N and S cycles 2021-07-04 14:28:50 +01:00
JetSetIlly
20dca7e099 corrected(?) merged-N cycles
merged-N visualisation in last execution
2021-07-04 14:28:50 +01:00
JetSetIlly
74a1f1d6c5 updated/clarified information about ARM/Thumb documentation used 2021-07-04 14:28:50 +01:00
JetSetIlly
c6fb383dd0 additional visual information in ARM last execution window 2021-07-04 14:28:25 +01:00
JetSetIlly
192c393b50 suspend PC break checking when ARM is running
the ARM coprocessor causes the 6507 to run NOP instructions, which
causes the PC to advance. this means that a PC break can be triggered
when the user probably doesn't want it to be.
2021-07-03 19:56:22 +01:00
JetSetIlly
dc1abef0dc arm cycle counting rewrite
counting and stretching each cycle as it comes, rather than stretching
groups of cycles at the end of the instruction. the old method worked
fine up to a point but too much information is lost that we need to
factor in the stretching calculations.

still not 100% accurate but closer
2021-07-03 12:31:34 +01:00
JetSetIlly
e60e8f2767 default unsync tolerance is now 2 frames 2021-07-03 10:58:11 +01:00
JetSetIlly
17edc90252 arm cycle experiments
better MAM support and better accuracy. still not 100% though
2021-07-02 15:26:51 +01:00
JetSetIlly
153d06d8d1 fixed debugger screen break menu
scanline/clock values don't update once the break menu is open
2021-06-30 16:54:21 +01:00
JetSetIlly
f769ae7cab fixed race condition between disasm iteration and execution updates 2021-06-30 16:26:05 +01:00
JetSetIlly
af1fc91bbb improved disassembly of non-4k bank sizes
clarified disassembly memory model

corrected decision making in blessSequence() function

there will still be instances when executed entries won't/can't be detected statically

fixes #14
2021-06-30 16:25:56 +01:00
JetSetIlly
b1bace8ebf format moviecart.go file 2021-06-30 15:03:30 +01:00
JetSetIlly
8202299961 added e3p and 3e+ as valid file extensions
indicate 3e+ mapping format

fixes #14
2021-06-30 08:41:03 +01:00
JetSetIlly
682aa62121 lint fix 2021-06-27 18:32:10 +01:00
JetSetIlly
032e468e96 ARM7: cycle counting improvements
PC access counts are now dependent on underlying memory type not just
whether data is in MAM

MAM estimation improved
2021-06-27 18:21:34 +01:00
JetSetIlly
c3d9cc6b0b Screen Roll/Unsync tolerance definable in CRT Prefs window 2021-06-27 18:20:35 +01:00
JetSetIlly
7db055b93e symbols tables records source of the symbol 2021-06-26 15:00:05 +01:00
JetSetIlly
6479526ad4 address labels now editable in disassembly window
reworked symbols package to support it and to support future work on
symbol manipulation.
2021-06-26 10:57:25 +01:00
JetSetIlly
40e10de6a3 Go: replaced iotuil functions with io equivalents 2021-06-25 10:10:56 +01:00
JetSetIlly
20b1755651 TV Hz in menu of debugger 2021-06-25 10:10:56 +01:00
JetSetIlly
6b42205790 exposed Symbols instance in disassembly type so symbols can be added/deleted etv. 2021-06-25 10:10:56 +01:00
JetSetIlly
ca0bea116f corrected CDF hotspot information 2021-06-25 10:10:56 +01:00
JetSetIlly
2de9f72dae disassembly will not use mapped addresses in all instances
unused labels will be removed after blessing, including those added
during loading of a symbols file

blessing will end on JSR. this was preventing some blessed paths from
being detected before committal.
2021-06-25 10:10:48 +01:00
JetSetIlly
dbe2559292 corrected the blessing loop in the disassembly package
there were clear mistakes in the previous version. these have been
corrected

added rule to ignore decoded bytes that are obviously fill bytes from
the assembler
2021-06-25 10:10:09 +01:00
JetSetIlly
329d77aefa symbols: changed how the decision to add to the label table is made
I based the original strategy on the symbols file created by the flappy
assembly. a new project produces a symbols file that didn't produce good
results using the assumptions I made. the new method works for both
cases.
2021-06-23 19:40:08 +01:00
JetSetIlly
b574edaa2e first entry in diasm window now indicates PC break if one exists
PC break was toggleable but the break marker (!) did not show
2021-06-23 18:00:20 +01:00
JetSetIlly
5b73ead76c debug screen always shows CPU information regardless of selected overlay 2021-06-22 22:22:07 +01:00
JetSetIlly
0f169f41bc TV fps now adjusted to match incoming signal
TV frame will never resize if frame is unsynced

Play-screen FPS counter shows target frame frequency

sdlimgui playscreen: screen will not roll on first couple of non-synced
frames. the screen is tolerant of the odd rogue frame.

gui vsync options renamed to monitor sync to clarify distinction wth
emulated television VSYNC
2021-06-22 22:22:07 +01:00
JetSetIlly
ee5b62b235 fixed deadlock in disassembly package
caused by not releasing crital section lock on error. error caused by
the presence of the "ejected" cartridge. most probably caused by trying
to load a unrecognised file.

in a headless disassembly, this doesn't matter because no other
goroutine ever tries to acquire the lock but in the sdlimgui debugger,
the disassembly window tries to acquire the lock during iteration.
2021-06-21 13:58:32 +01:00
JetSetIlly
588cd66a80 resize will use extent of non-black pixels more selectively
if VBLANK is used by the ROM then non-black pixels are used to size the
screen, otherwise we take the VBLANK as intended (while still obeying
the safe top/bottom values
2021-06-20 18:26:46 +01:00
JetSetIlly
e0fb707428 lowered mnetwork fingerprint threshold caused false positive
Hack Em Hangly Pacman detected falsely. reduced the scope of the
cartidge mirror bytes that are looked for.
2021-06-20 12:24:48 +01:00
JetSetIlly
6992e32774 lowered threshold for Mnetwork (E7) detection
Thomas Jenttzch's Elite demo is not detected automatically otherwise

moved fingerprintMnetwork() to bottom of list of detection to prevent
false positives (none known but with such a low threshold it's
possible).
2021-06-19 15:39:05 +01:00
JetSetIlly
b00b0a5ef7 merged changes from STM32F407VGT6 branch
allows use of different ARM chip with different address mappings
2021-06-19 09:34:23 +01:00
JetSetIlly
3346835c83 updated README and screenshots to reflect changes to ARM emulation 2021-06-18 22:43:39 +01:00
JetSetIlly
4d6c37bb52 an unsynced frame will no longer cause the screen to resize 2021-06-18 20:05:13 +01:00