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
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
these were broken in b48d487 when the release ldflags were used for
profiling. the release flags strip symbol and DWARF data from the binary
meaning that pprof couldn't dig into the source code or disassembly
this runs 'go vet' but filtered through awk so we ignore noisy errors
that we're not interested in
fixed vet error caused by unreturned error type in input package
statsviz support is presented in the form of a patch file. this is so
that the requirements of the patch don't become part of the project
unecessarily
the statsviz package is only needed for emulator development and including
the additional packages in the BOM creates a false impression of the
requirements (IMO)
patch can be applied with:
git apply --verbose 0001-statsviz.patch
Makefile has a "patch_file_integrity" target to test that patch files
can still be applied cleanly. ideal for calling from git pre-commit hook
patch was created with:
git diff > 0001-statsviz.patch
all references to opengl are now made through the renderer interface.
which renderer is to be used is controlled by buildtags
now requires minimum go version of 1.21
CRT preferences and CRT preview in debugger TV window are disabled for
OpenGL2.1
Makefile now sets the version string for the project. the version
package tries to set a meaningful version string if the project is not
built with the Makefile
added VERSION command
updated .gitignore file to include .DS_Store folder. the current line to
ignore executable files has also been beefed up
corrected profile_cpu and profile_trace arguments - the elf argument is
not supported (or required) for PERFORMANCE mode
previously, the cached instructions still required a significant amount
of decoding. the new method captures the state of the decoding much
closer to the variable element of the instruction (eg. using what's in
the register etc.)
most of the benefit of the caching still comes from not having to reread
program memory every instruction but the new method does add a small
performance increase and arguably, more clarity to the code
the function no longer returns (uint8, bool) tuple. it instead expects a
function that can be called from the Tick() function itself, in the case
of "success"
this has significant performance improvements due to the frequency of
calls to delay.Event.Tick()
screenshotting now uses exactly the same CRT sequence as the playmode. a
single file for each screenshot rather than a selection of images
results aren't exactly comparable but the new pipeline means it should
be easier to manipulate to get the results we want
this target build a console friendly version of the windows binary.
tagged with development indicator because we don't ever want to release
these as an actual version
removed some old and unused make targets
BusStuff and CoProc functions are called a lot and type assertions are
moderately expensive and noticeable when done frequently. by making the
assertion in when the cartridge is inserted we can reduce the test to a
simple boolean comparison
the font rendering used for build and release target will use the
freetype library unless the go version indicates that it's being built
on MacOS with an M2 CPU (darwin/arm64)
for some reason not yet fully understand, using freetype causes an issue
on darwin/arm64