Commit graph

3372 commits

Author SHA1 Message Date
JetSetIlly
921bc26ab6 changes in 3af5cfb extended to the windows build 2024-10-02 11:23:55 +01:00
JetSetIlly
ad2aef6b5e added rsrc_windows_amd64.syso to .gitignore 2024-10-02 11:10:11 +01:00
JetSetIlly
f2df48eeb3 updated version string to v0.35.0 2024-10-02 11:00:40 +01:00
JetSetIlly
499ba0cf31 fixes to SetBank() implementations
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
2024-10-02 09:15:28 +01:00
JetSetIlly
b2f8284408 added Undefined Symbols Warning option
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
2024-10-02 08:23:33 +01:00
JetSetIlly
40ee6c64b9 added executing flag to MapAddress() functions (for ARM mappers)
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
2024-10-02 07:33:19 +01:00
JetSetIlly
8cb8f421ab fixed bug caused by rewinding ELF when streaming is enabled 2024-10-02 07:33:19 +01:00
JetSetIlly
2930bca10c add GetCoords() to environment.Television interface 2024-10-02 07:33:19 +01:00
JetSetIlly
4232b572ab env field of elf memory updated on Plumb() 2024-10-02 07:33:19 +01:00
JetSetIlly
1f2f73d005 marginally more efficient MapAddress() function for ELF
correctly implemented IsExecutable() function (ARM interface to test if
memory has the executable bit set) for ELF
2024-10-02 07:33:19 +01:00
JetSetIlly
49178ad9ee marginal television performance improvements
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
2024-10-02 07:32:34 +01:00
JetSetIlly
82f8d33505 implemented commandline.Extension for symbols package
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
2024-09-15 19:54:17 +01:00
JetSetIlly
3af5cfb281 maintenance work on commandline package
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
2024-09-14 12:30:20 +01:00
JetSetIlly
6ca3124e0a updated commandline tests to work with test package 2024-09-14 12:30:20 +01:00
JetSetIlly
77ad2da0f9 ELF package, commentary and clarification
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()
2024-09-14 12:30:20 +01:00
JetSetIlly
08b1a94dcd simplified RunForFrameCount() 2024-09-14 12:30:20 +01:00
JetSetIlly
66fde044ee added CARTRIDGE SETBANK command 2024-09-07 17:47:21 +01:00
JetSetIlly
5cf739e938 fixed hash for starting image for videochess bot
bug introduced in e534c43181

and present in release v0.31.0 to v0.34.0
2024-09-07 17:47:21 +01:00
JetSetIlly
2a9d53be3a added DemandSuccess() and DemandFailure() to test package
ExpectImplements() renamed to DemandImplements()
2024-09-04 19:41:16 +01:00
JetSetIlly
71fdabe6d6 updated test package
additional functionality used in another project
2024-08-25 09:58:40 +01:00
JetSetIlly
12359c5d43 added .ELF to list of valid ROM extensions 2024-08-22 21:51:38 +01:00
JetSetIlly
7b65cfd7e9 updated version string to v0.34.0-maintenance 2024-08-22 21:51:18 +01:00
JetSetIlly
6aa2e5cdc2 ELF file loaded with undefined symbols generates a notification 2024-08-21 15:45:35 +01:00
JetSetIlly
3522d2cdf2 fixed bug caused by mouse wheel event reporting an amount of zero
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
2024-08-11 18:58:44 +01:00
JetSetIlly
43a71d51d8 improved decision making for whether variables are in global scope 2024-08-11 14:18:52 +01:00
JetSetIlly
4154a560a8 added support for REL32 to ELF decoding
also added partial support for PREL31
2024-08-10 21:20:01 +01:00
JetSetIlly
d4e19e5af9 DWARF builder improvements
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
2024-08-10 19:48:02 +01:00
JetSetIlly
37cb85ecb7 elf.AccessPassive() does nothing is strongarm stream is being drained 2024-08-10 19:48:02 +01:00
JetSetIlly
099ff003cc flattened arm.Run() function. checkProgramMemory() called less frequently 2024-08-10 19:48:02 +01:00
JetSetIlly
b212fa6486 TIA audio sampled every colour clock
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
2024-08-07 09:02:17 +01:00
JetSetIlly
f3dbbb114d fixed crash caused by replay button in tracker window
replay emulation was referencing the incorrect television pointer
2024-07-30 08:54:24 +01:00
JetSetIlly
031ec6514a prevent recursion loop in DWARF builder
recursion resulted in stack exhaustion and a crash
2024-07-29 21:05:23 +01:00
JetSetIlly
769331f5b8 bumped version to v0.34.0
added link to Current Status page on the wiki
2024-07-19 10:42:38 +01:00
JetSetIlly
9ddac142fe fixed endless loop caused by TIM2 cycle deferment
added APBDIV address to ARM package. the address is checked on memory
access after all other access attempts have failed
2024-07-18 18:43:41 +01:00
JetSetIlly
63fffe68e4 superchip not checked when explicitly specifying a mapper
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
2024-07-16 20:14:31 +01:00
JetSetIlly
241ba8ac79 correct location of DWARF data when specified with -elf argument 2024-07-16 16:10:01 +01:00
JetSetIlly
84a881504c ACE handles YieldProgramEnded
the ARM should never return this type of yield. it it does it
is handled as a YieldExecutionError
2024-07-16 16:10:01 +01:00
JetSetIlly
a932e12eba improved input focus on mouse click in terminal window 2024-07-16 16:10:00 +01:00
JetSetIlly
12a0e950a8 ARM yield address to development package
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
2024-07-16 16:10:00 +01:00
JetSetIlly
b2ee002ef8 added && as an alternative to & for BREAK command
also added || as an alternative to | but this is less tested and
probably doesn't work as intended in any case
2024-07-16 16:10:00 +01:00
JetSetIlly
0de2075cc4 CALLFN implementation always returns a NOP and corrective JMP
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
2024-07-16 16:10:00 +01:00
JetSetIlly
47b9ab1bd1 DWARF loading more careful with isRelocatable ELF files
this applies when a separate ELF/DWARF file is specified
2024-07-16 16:10:00 +01:00
JetSetIlly
20da76532a simplified bankswitch code in CDF implementation 2024-07-16 16:10:00 +01:00
JetSetIlly
74497e4bf5 better error message for non-existant ARM program memory
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
2024-07-16 16:10:00 +01:00
JetSetIlly
bccf3fe975 update function comments related to interface implementations
the changes to the interface was done a long time ago but the
comments were missed
2024-07-16 16:10:00 +01:00
JetSetIlly
f6833385eb clarified Makefile message
when make is called with no target a message is printed
instructing the user on how to build the release binary
2024-07-16 16:10:00 +01:00
JetSetIlly
3b7bd01b04 io.Writer nil protection in WriteDerivation() 2024-07-16 16:10:00 +01:00
JetSetIlly
6d385078e1 6507 disasm more careful with system symbols
system symbols could appear in instructions with immediate addressing
mode, which didn't make sense
2024-07-16 16:10:00 +01:00
JetSetIlly
2ddd6cd08c renamed some variables in CDF implementation
helps with thinking while debugging the ACE implementation of CDF
2024-07-16 16:10:00 +01:00
JetSetIlly
c635240868 fixed scroll-to-end issue in coproc disasm window 2024-07-16 16:10:00 +01:00