Commit graph

3266 commits

Author SHA1 Message Date
JetSetIlly
cc1cf9a085 upated version string to 0.35.3 2024-12-14 09:12:22 +00:00
JetSetIlly
58d289ec41 corrected how PlusROM reads host/path information
fixes issue #35
2024-12-14 09:09:58 +00:00
JetSetIlly
3029b8c1ee fixed race condition in MutePeripherals()
calling from GUI goroutine required it being pushed to the
emulation goroutine
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
ca642b84ce television halt conditions apply in debugger mode
I had limited the halt conditions to only working in playmode
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
a37048cb69 TV brightness and contrast adjustments corrected in frag shader 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
11848209d0 upated version string to 0.35.2 2024-11-23 14:57:09 +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
54d9cf6b26 improved 6507 disassembly speed
disassemby when called from normal cartridge attachment is now done the
background in a separate goroutine. this allows execution to begin
immediately without having to wait for the disassembly to finish

disasm window in the gui will show a "disassembling..." message while
the background disassembly is working

fixed symbols test data
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
c809a6a3a0 a rom can be specified on the command line for the makefile
for example:

    rom=my_game.bin make profile_cpu

if the rom variable is not set then the default roms/Pitfall.bin
will be used
2024-11-23 14:56:37 +00:00
JetSetIlly
2909c2f3d1 more even blur shader (better phosphor bloom effect)
CRT sharpness setting separated from phosphor settings in GUI
preferences window
2024-11-23 14:56:37 +00:00
JetSetIlly
e3c9f08e39 version number and revision information logged on startup
while the version number appears in the window title it was not visible
in the log. moreover, the SDL version number appears early in the log
and may have led people to believe it was the version number of the
emulator
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
bf567a7bdc disabling the ghosting CRT effect would flip the image 2024-11-23 14:56:37 +00:00
JetSetIlly
b7e476a335 GL framebuffer handlers (flip and single) can Copy() between one another
this doesn't do anything yet but is intended to be used as a way of
improving the phosphor effect
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
c32645f4ee more efficient clearing of gl frame buffer
approximately 8% performance improvement
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
00497b6d50 corrected signal loop in audio/video digests
the SetPixels() loop in both digest types were using signals that were
invalid for that frame. this can happen when the screen size changes or
during a change of VSYNC profile
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
2d1a01de9e improved regress command line interface
the way the regress() function behaves with regard to the flag package
is more like the launch() function

flag package boilerplate is removed and the sub-mode information is
displayed only when -help is requested

failed parsing at the top-level regress() function causes the args to be
passed to the default sub-mode (the RUN sub-mode) and parsed there.
there is no error message displayed by the regress() function
2024-11-23 14:56:36 +00:00
JetSetIlly
8f9e78cad5 fixed all unkeyed struct field errors
makefile vet target removed and put 'go vet' into lint target. awk
filter for unkeyed struct errors removed
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
554064ef77 aggressive inlining for build targets in Makefile 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
929137a71b added profile_mem target to Makefile
this target runs the emulator in performance mode with
memory profiling
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
c0bcca6647 logger improvements
Log() function takes any type for the detail argument. More convenient
when logging errors or fmt.Stringer types. Logf() function is unaffected
by this change

permissions moved to base logger type. previously only available with
the central logger
2024-11-23 14:56:36 +00:00
JetSetIlly
a1f5f8e9ad updated version string to v0.35.1 2024-10-07 19:26:13 +01: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
46ac3c0e68 changed regression/log to use logger.SetEcho()
this seems clearer and less prone to error than WriteRecent()
2024-10-07 19:24:18 +01:00
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