messages from 3e+, wickstead design and supercharger
mnetwork would crash if only one segment was specified
the logic of SetBank() for 3e and 3e+ were swapped
this applies to the loading of ELF binaries that might have undefined
symbols. rather than reject the binary compltely, the emulator will
continue until the symbol is used during execution
this is to prevent possible issues with StrongARM functions being
triggered erroneously when the address is used in a non-executing
context by the ARM program. this doesn't seem likley but this is a
preemptive fix with no adverse consequences
signal history only copied if 'realtime' audio is being used.
the signal history is not required except for mitigations related to
'realtime' audio, so limiting the copy means a marginal performance
improvement for headless operation
TV Signal() implementation split into signalFull() and signalSimple().
the decision as to which is called is made once on instantiation, rather
than on every call to Signal()
small changes to tia/video and arm for clarity purposes
the SYMBOL command can now tab-complete the current list of symbols
there is more work to be done here to allow other commands such as BREAK
and WATCH to tab-complete on symbols/labels
clarified terminology for symbols package in doc.go
added extension directive. allows validation and tab-completion of a
command to be extended with additional parameters
added mapper.TerminalCommand interface. this interface works in
conjunction with the commandline package Extension interface
ELF mapper implements mapper.TerminalCommand and commandline.Extension
interfaces to give the CARTRIDGE command some ELF specific options
reverted dee9c15352. all extant ELF ROMs
work in streaming and non-streaming mode
simplified elfMemory.Snapshot()
simplified snoopDataBus() (strongarm function)
pull() and peek() functions explicitely handle instances when stream is
not draining
rewind package commentary. protection when adjusting frame during
findFrameIndex()
this cased a crash, originating with a bug in debugger/rewind.go
the rewind.GotoFrame() was called without first putting the emulation
into the rewind state. this caused an intentional panic in the catchup
loop
added support for specification DWARF attribute
- as far as I can tell this works in the same way as abstract origin
attribute
- variable declaration resolution will prefer type field in concrete
instance if available
typedefs are resolved more than once and can be replaced
- because we take a copy of a underlying type for a typedef (so that we
can change the name) it maybe that the type is incomplete at the time
of the copy
- it maybe better if we didn't make a copy of the underlying type but
then we're left with the naming problem
three passes instead of two over DWARF entries when building composite
types
sum of samples is averaged and output twice per scanline for an output
sample rate of 31.4KHz
this fixes issues with ROMs that change the volume of the audio multiple
times per scanline
added *.wav to .gitignore
an F8 cartridge for example might look like it needs a superchip
but does not. specifying F8 on the command line would still add
the superchip because the check was still made
the OnYield() address is always the address of the most recently
executed instruction. using the current PC register value often means
that the address is pointing to the second word of a 32 bit instruction,
which is misleading
additional ARM preference option 'ImmediateCorrection'. for simplicity
this is tested for by users of the callfn package and the Accumulate()
function called accordingly
the 'ImmediateCorrection' option is not intended to be exposed to the
end user in the GUI
this is really intended to facilitate comparisons with the STM32
implementations of the CDF/DPC+ drivers
non-existant program memory was not logged as a memory fault. this
won't happen except in very unusual circumstances but it's good
for the error to be logged in the same way (ie. in the memory
fault window) as other memory errors