Commit graph

2968 commits

Author SHA1 Message Date
JetSetIlly
c6d7147048 added SetEmulationState() to developer package
this called in the same way as the corresponding functions in the
television and reflection packages

list of locals is updated when emulation is paused. this allows the list
of locals to be visible immediately on program start and when execution
is halted in the VCS part of the execution (as opposed to yielding in
the ARM part of the execution due to a breakpoint)

fixed race condition caused by local variable window
2023-08-01 18:02:13 +01:00
JetSetIlly
61d7403c8f breakable addresses are collated for each source line
the detail I was missing previously was the possibility that a single
line can have multiple break addresses suggested by the .debug_line
section
2023-08-01 18:02:13 +01:00
JetSetIlly
68338fd993 local variables are listed even if they are not locatable
lexical scope is used to decide if the variable is present in the list.
while this might not be completely accurate in all instances it presents
a more natural view. in any case, the value of the variable won't be
wrong because it isn't locatable
2023-08-01 16:52:13 +01:00
JetSetIlly
d350a2fddf more flexible method of locating ELF file 2023-07-31 08:57:41 +01:00
JetSetIlly
6cc1d4a9a4 support for type conversion to more natural representation 2023-07-31 08:57:41 +01:00
JetSetIlly
3f6bd27324 modal dialog warning that non-supported DWARF data is being used
improved how modal dialogs are handled
2023-07-31 08:57:41 +01:00
JetSetIlly
9f79e8b2d1 implicit relocation of .dwarf_frame for ACE 2023-07-31 08:57:41 +01:00
JetSetIlly
eccfb5872d version check for DWARF. only version 4 supported for now 2023-07-31 08:57:41 +01:00
JetSetIlly
28a22ab2b3 added coprocessor developer icon to cartridge notification area
corrected display of existing notifications. for example, emulation
notifications (pause, mute, etc.) would not display if cartridge
notification was visible
2023-07-31 08:57:41 +01:00
JetSetIlly
4830799c71 implementation of remaining frame instructions
corrected endianess of multibyte frame instructions
2023-07-31 08:57:41 +01:00
JetSetIlly
a815f9c6ae improved terminal output for DWARF LOCALS command 2023-07-31 08:57:41 +01:00
JetSetIlly
8a93f5b404 framebase derivation output
improved display of error messages in local variable tooltip
2023-07-29 14:21:53 +01:00
JetSetIlly
cddb2efba1 corrected DW_OP_regx. unsigned LEB value not signed
stipulated that the coprocessor takes extended register values in the
Register() and SetRegister() functions. extended register check in
coprocessor implementation (ie. ARM)
2023-07-29 14:21:53 +01:00
JetSetIlly
c3998ad9e8 corrected lexical scope for local variables 2023-07-29 14:21:52 +01:00
JetSetIlly
bccc2d49c7 more accurate allocation of functions to source lines 2023-07-28 06:03:58 +01:00
JetSetIlly
ad1ae65977 corrected optimisation flag detection 2023-07-28 06:03:58 +01:00
JetSetIlly
ee9b593c84 added ARM specific method for finding entry function 2023-07-28 06:03:58 +01:00
JetSetIlly
59e4b373f6 removed DisableExpensive() from developer package
it's added complexity for very little performance gain
2023-07-28 06:03:58 +01:00
JetSetIlly
b5a7a6f884 removed "ROM Setup" from coprocessor profiling
"ROM Setup" is too confusing a state to be useful. Initialisation, based
on the current emulation state, might be more helpful but it fails for
the same reason as "ROM Setup" (which was based on screen stability) in
that it doesn't really fit in with the current method of keeping
profiling statistics

renamed KernelVCS (from profiling package) to Focus. this better
describes what the intention of the type is

renamed Performance window to Profiling
2023-07-28 06:03:58 +01:00
JetSetIlly
e462abcfa8 moved coprocessor/developer illegalAccesses into dedicated faults package
renamed references to illegal accesses to faults. the new name is
simpler and more flexible

faults locking was already independent of source lock

single MemoryFault() function in coproc developer interface

simplified faults window
2023-07-28 06:03:58 +01:00
JetSetIlly
0beb133bbe moved obsolete mapfile code into a dedicated package 2023-07-28 06:03:58 +01:00
JetSetIlly
784143f920 moved coprocessor/developer yield into dedicated package
yield locking was already independent of source lock
2023-07-28 06:03:58 +01:00
JetSetIlly
00a941b8c7 moved coprocessor/developer breakpoints into dedicated package
breakpoint locking independent of source lock
2023-07-28 06:03:58 +01:00
JetSetIlly
82ab2d4568 moved coprocessor/developer callstack into dedicated package
callstack locking independent of source lock
2023-07-24 16:11:48 +01:00
JetSetIlly
e5045458cf coprocessor/developer package refactor
after work on callstack in the previous commit it became more apparent
than ever that this package needs a major refactor in order to improve
clarity
2023-07-24 16:11:48 +01:00
JetSetIlly
f1b019f45b work on improving callstack in the developer package 2023-07-24 16:11:48 +01:00
JetSetIlly
cf982fc791 full mnemonic for LDRD immediate
conditional branching mnemonic
2023-07-24 16:11:48 +01:00
JetSetIlly
5cfb04aa97 corrected stack protection bug that caused false positives 2023-07-23 02:44:34 +01:00
JetSetIlly
fbee41d0fc TV nudge counter access is now an atomic operation 2023-07-22 19:34:40 +01:00
JetSetIlly
95877acc9d corrected bitmask for ARM FPU instructions 2023-07-22 13:05:51 +01:00
JetSetIlly
5a08d9a083 implemented SMLA 2023-07-21 12:18:48 +01:00
JetSetIlly
e6f3574e76 tape window no longer shown for "fastload" supercharger ROMs
showing the tape window for fastload ROMs would cause the debugger to
crash. this was because the tape data was empty and the waveform plotter
expects some data

this solution removes the tape window entirely, and the menu entry, in
the cast of fastload supercharger ROMs
2023-07-21 09:34:38 +01:00
JetSetIlly
5dec469873 better path handling for developer package
if the source files are in a different path to the ROM file, the
longest common path is discarded for presentation
2023-07-19 20:34:28 +01:00
JetSetIlly
978753a180 implemented SMULL 2023-07-19 20:34:28 +01:00
JetSetIlly
52efeb78b1 precise yield instruction indicated in source window tooltip 2023-07-19 20:34:28 +01:00
JetSetIlly
020ca25f50 corrected ARM breakpoint detection after a branch
because of how we have implemented branches we need special
consideration for breakpoints afterwards. the branch instruction will
have altered the PC and adjusted it for the pipeline fill (cycle
accumulation for the pipeline fill is handle indpendently). because of
that we need to test for a breakpoint for the PC before the pipeline
fill
2023-07-19 20:34:28 +01:00
JetSetIlly
af4f95d514 altered period of FPS measuring pulse 2023-07-19 20:34:28 +01:00
JetSetIlly
ec6b181acd corrected yield handling in cdf/dpc+
bug introduced in 61b4c07b65
2023-07-19 20:09:36 +01:00
JetSetIlly
2693b9d012 removed fmt.Println() accidentally in 61b4c07b65 2023-07-19 19:23:19 +01:00
JetSetIlly
90290504c6 implemented UMLAL, VMRS and more VMOV variants 2023-07-18 13:45:32 +01:00
JetSetIlly
1d95457d65 corrected alignment and addressing of interworked ACE functions 2023-07-18 09:26:39 +01:00
JetSetIlly
61b4c07b65 thumbnailer (animation and image) implement CartYieldHook
a cartridge with a coprocessor that had failed for some reason would
cause the thumbnailer goroutine to halt

in the case of the thumbnailer.Image type this would lock the UI
goroutine. and in the case of the thumbnail.Anim type it would lock the
goroutine that had been launched to produce the animation

added YieldHookResponse to better indicate the intention of the
CartYieldHook
2023-07-18 09:26:39 +01:00
JetSetIlly
2b9a66c789 greatly clarified how ELF memory is structured
commentary about how the ARM addressing works and how it impacts the ELF
mapper. In particular, how it affects the StrongARM functionality
2023-07-18 09:26:39 +01:00
JetSetIlly
f0a7a15e05 added buffer to end of ARM program in ACE mapper
this already happened with the ELF mapper as a consequence of forcing
alignment
2023-07-17 15:50:07 +01:00
JetSetIlly
32f2d5918a fix crash caused by timeline thumbnailing with ACE/ELF ROMs
problem was caused by a failure to reevaluate program memory pointer
after plumbing an ARM state saved from a different emulation
2023-07-17 15:50:07 +01:00
JetSetIlly
00f97cf95e reimplemented ARM stack protection 2023-07-17 15:50:07 +01:00
JetSetIlly
769bb68477 coproc MapAddress() implementations return origin address rather than index
this makes more sense and is easier to understand and think about. if
the index for the adddress is needed, then it can be attained simply by
subtracting the origin from the address
2023-07-17 15:50:07 +01:00
JetSetIlly
d554693ce0 removed memoryError, executionError fields in favour of the Yield mechanism
extended Yield type to include optional detail
2023-07-17 15:50:07 +01:00
JetSetIlly
f0f49a1025 reworked how program memory is handled in ARM emulation 2023-07-17 15:50:07 +01:00
JetSetIlly
26f23f740f remove continueExecution field 2023-07-17 15:50:07 +01:00