Commit graph

1627 commits

Author SHA1 Message Date
JetSetIlly
58d289ec41 corrected how PlusROM reads host/path information
fixes issue #35
2024-12-14 09:09:58 +00:00
JetSetIlly
b8eea8a976 user input recorded for rewind system
input is re-inserted as appropriate on playback
2024-12-14 09:09:58 +00:00
JetSetIlly
650b893af8 television tolerates a brief change in refresh rate
Real Sports Tennis would cause a brief instability during the logo
bounce. the difference in VSYNC is one frame long and shouldn't
affect the stability
2024-12-14 09:09:58 +00:00
JetSetIlly
03d46e072e corrected VSYNC behaviour in some instances
the MsPacman VSYNC event (when the bouncing fruit appears) revealed the
error in using the VSYNC history to make a decision

removed the "immediate desynchronise" option
2024-12-14 09:09:58 +00:00
JetSetIlly
1ab1a5ea67 improved search for TV spec in filename
previous scheme had too many false matches. for example, palleteTest.bin
would say it required a PAL TV when in fact it does not
2024-12-14 09:09:58 +00:00
JetSetIlly
70ad97c6db added BF mapper, including SC option
added proper fingerprinting for SB mapper
2024-11-23 14:56:37 +00:00
JetSetIlly
71ab13dbf0 fixed CPU functional test package
also removed 6507_functional_test build tag from the package. the
original idea was to exclude the package because it took relatively
longer than other tests but it is now considerably faster. the speed
comes from not recording the execution history, which is only needed if
the functional test fails for some reason. if the test does fail, then
the test is run again with history recording enabled

added ExpectApproximate() function to test package

the test harness can also create a pprof if required
2024-11-23 14:56:37 +00:00
JetSetIlly
b885fc49cf fixed supercharger soundloud memory usage
when the tape was not playing the step() function returned a formatted
error saying the tape had stopped. the formatting process puts pressue
on the memory allocator and the frequency of the error (once per colour
clock) caused a noticeable drop in performance

the fix removes the error generation from the step() function completely
and also adds an early return if the tape is not playing
2024-11-23 14:56:37 +00:00
JetSetIlly
797cc6cf51 television limiter moved to separate package
added tests to make sure measurement is working as expected
2024-11-23 14:56:37 +00:00
JetSetIlly
2d6a6a5c07 television resizer commits resize even during desync
this prevents a visual resizing of the image at the moment when the
screen has synchronised. ie. the resizing happens and is disguised
by the synchronisation process

fixed spelling mistake in television preferences window
2024-11-23 14:56:37 +00:00
JetSetIlly
b54439e574 correct processing of signal array in pixel renderers
all SetPixel() function now set VBLANK pixels to 'VideoBlack' via a call
to GetColor(), rather than setting the RGBA values directly. except the
video digest, which remains a special case

this complete work from the previous commit 68263991f
2024-11-23 14:56:37 +00:00
JetSetIlly
1ac6f33a13 nullification of TV signal array now resets color field
setting the index field to NoSignal should be enough but some pixel
renderers may choose to still render the signal information

this completes the change started in 3284d9f7
2024-11-23 14:56:37 +00:00
JetSetIlly
60a1620503 removed old nolint directives
the linter that required these is no longer used
2024-11-23 14:56:37 +00:00
JetSetIlly
393904abcb simplification of the memory sub-system
- preparation for adding 7800 emulation

cpu (6507) package uncoupled from upstream dependencies

- cpu no longer logs execution of KIL instruction
- randomisation of registers on startup can be handled by the called of
  the cpu's Reset() function
- address errors are filtered by an optional IsAddressError() function
  in the Memory interface implementation
- Error field removed from execution.Result type

all references to interface{} replaced with any
2024-11-23 14:56:37 +00:00
JetSetIlly
6728d37045 removed 'simple' television
simple was added so that regression database didn't need to change along
with the changes to the television (simple is an older television
implementation rather than anything really new). but now that the
regress package can redux playback files, there is now no need for the
'simple' version
2024-11-23 14:56:37 +00:00
JetSetIlly
e4dea5c7b9 reverted SignalAttributes to a struct
profiling shows that the performance penalty is no longer that great.
the struct is preferable because the code is clearer
2024-11-23 14:56:37 +00:00
JetSetIlly
9873f5db9e fixed DPC+/FA2 fingerprinting
there could be FA2 false positives in some rare cases. method is
now much more robust
2024-11-23 14:56:37 +00:00
JetSetIlly
f98a775d37 regression and database improvements
added Replace() to database package

simplified Regressor interface

playback regressor can now be reduxed

regression Redux() now uses database.Replace() instead of separate
Delete() and Add(). this makes sure that the redux entry gets the same
database key once the redux has completed

removed -dryrun option from REGRESS REDUX

removed regression fails log. it wasn't well developed and not a
particularly useful idea

fixed television.SetSimple(). the signal function was not set correctly
2024-11-23 14:56:36 +00:00
JetSetIlly
f66d020907 added lint target to Makefile
checks that linters exist before proceeding. project URL for each linter
in the Makefile comments

only go-errorlint and unconvert used at the moment

fixed all lint errors for the added linters
2024-11-23 14:56:36 +00:00
JetSetIlly
b7bedb56fe marginal improvement to TIA audio performance
removed audio overlay due to changes in TIA audio implementation. the
changes could be reflected accurately but the overlay is no longer as
useful as I originally thought
2024-11-23 14:56:36 +00:00
JetSetIlly
12d1e446fd corrected ReadHotspots() for FA2 mapper
FA2 hotspot() function called on AccessVolatile()
2024-11-23 14:56:36 +00:00
JetSetIlly
89c353425d implemented FA2 bank switching (Star Castle)
nvram data written to fa2_nvram directory in the resource path. not
emulating read/write time of flash memory

fixed GetRAM() information for CBS, DF and commavid
2024-11-23 14:56:36 +00:00
JetSetIlly
a7c296d6c4 simplified calls to logger package
calls to Logf() which do no formatting replaced with Log()

calls to Log() with Sprintf() replaced with Logf()

error types sent without use of Error(), taken advantage of new logger
package features

correct construction of wrapped errors in eeprom package
2024-11-23 14:56:36 +00:00
JetSetIlly
c993ea8dcd relaxed PlusROM fingerprinting
the entire ROM data is now searched for the fingerprint. also, the fingerprint is
now specifically "STA $1ff1" and not "STA $Xff1"
2024-10-07 19:24:26 +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
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
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
6aa2e5cdc2 ELF file loaded with undefined symbols generates a notification 2024-08-21 15:45:35 +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
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
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
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
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
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
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