Commit graph

1523 commits

Author SHA1 Message Date
JetSetIlly
ad596d4b34 corrected how regression database stores cartridge mapping
regressionDB wasn't storing the requested cartridge mapping correctly.
for example, if no mapping was specified by the user but a mapping was
detected by file extension then the detected mapper was stored. this
caused problems with supercharger audio files - the AR mapping was
stored in the DB but no that it was an audio file

DB now stores the user specified mapping in all instances (ie. not the
mapping detected by the file extension).

related to this was that the deserialisation of DB entries was not using
the cartridgeloader package correctly. instead of using NewLoader, the
deserialisation was populating the Loader type manually.
2021-08-19 08:29:55 +01:00
JetSetIlly
13daecdb9a corrected how screen rolled frames are stitched together 2021-08-19 07:36:27 +01:00
JetSetIlly
415ae7d337 less aggressive range check in SetPixels()
if pixel array was too large for remaining screen buffer then *no* new
pixels were drawn to the screen. this was fine in most situations but
in some instances this resulted in poor screen updating. for example the
loading curtains in the Supercharger ROM weren't being drawn correctly.
2021-08-18 22:04:49 +01:00
JetSetIlly
2f6327d721 makefile test target checks go version and uses -shuffle if available 2021-08-18 06:48:14 +01:00
JetSetIlly
53e83ecaca test target in Makefile now specifies -shuffle on 2021-08-18 06:28:05 +01:00
JetSetIlly
eb510b7cb6 updated go.mod for go 1.17
easyterm package updated to satisfy new termios version

other packages updated
2021-08-18 06:25:40 +01:00
JetSetIlly
f08e1aa28e fixed index out of range error when drawing reflection tooltip 2021-08-17 19:30:13 +01:00
JetSetIlly
88c3f97a35 remeasure FPS on unpause event to television
means the actual FPS reported is less misleading for the first second
2021-08-17 19:30:13 +01:00
JetSetIlly
3761dc0bab VSYNC count reset correctly
fixes smooth playfield scrolling demos. bug introduced in
0f169f41bc. demo ROMs not in regression
database
2021-08-17 19:30:13 +01:00
JetSetIlly
5eed167aa6 tidy up of reflection package 2021-08-17 19:30:13 +01:00
JetSetIlly
c303c847f3 SetPixels() in sdlimgui PixelRenderer sped up
modest performance improvement
2021-08-15 11:12:20 +01:00
JetSetIlly
f008c13156 types in prefs package use atomics rather then mutexes
pref types are likely to be called in critical sections. to make the
prefs package easy to use, values in the types were protected by
mutexes, this is relatively expensive however. with the exception of the
generic type, critical sections are now protected with atomics.

small performance improvement
2021-08-14 09:57:36 +01:00
JetSetIlly
69321b43ee throttled how often the frame resizing check is performed
significant improvement in frame rate
2021-08-14 08:29:16 +01:00
JetSetIlly
2dd30c26d5 simplified telelvision frame limiter 2021-08-14 08:29:16 +01:00
JetSetIlly
9bd7fc59e4 reduced the frequency at which FPS performance is checked
the measurement was/is limited by a one second clock pulse but we were
checking to see if the pulse had ticked every TV clock. we now only
check the pulse every frame.
2021-08-13 21:52:06 +01:00
JetSetIlly
156ecd8d3e optimisations in arm7tdmi package, particularly for immediate mode 2021-08-13 21:26:29 +01:00
JetSetIlly
35d1a8000a moved ARM cycle capping from the callfn package to the arm7tdmi package
capping in the callfn package was misleading because it meant the ARM
program was allowed to run until completion. capping during ARM
execution means that not all side-effects of the program will occur

it's still not clear what actually happens in the Harmony/Melody
hardware but testing with known good/bad ROMs is encouraging
2021-08-12 15:39:38 +01:00
JetSetIlly
903843ca5f fixed menubar cartridge information disappearing on rewind
the lazy cartridge type was being reinitialiased in the wrong emulation
state. it needs to be reinitialised in order to prevent atomic.Value
panics when the cartridge type changes but it was being done too
aggressively. it now reinitialised only when emulation state switches to
Initialising.
2021-08-12 11:28:59 +01:00
JetSetIlly
4bdba33551 television package keeps better track of current frame information
this simplifies the sdlimgui/screen type in addition to the NewFrame()
and Resize() functions in the PixelRenderer interface

will allow better overview and summarising of television performance

playscreen F7 window shows "total scanlines" rather than "visible
scanlines"
2021-08-12 11:28:59 +01:00
JetSetIlly
88b83f3b58 playscreen will update texture even if screen is unstable
the stability check is simply wrong now that I think about it more, but
it was only obvious for a ROM that never achieved stability (and
therefore never showing any output).

in these cases the texture was never updated to begin with so the screen
never had anything to show.

additional observation: it follows from this reasoning that on the
occasions when a television frame lost stability it would show "stale"
information for the period the TV was unsynced.
2021-08-08 10:26:59 +01:00
JetSetIlly
2291d48a36 auto-detection of keyboard differentiates between left and right player
keyboard was being selected for right player even if SWACNT was only
be set to output for left player
2021-08-04 19:04:50 +01:00
JetSetIlly
64e94e60f1 added tooltip to palette selector, showing numeric value of the item being hovered over 2021-07-27 13:41:35 +01:00
JetSetIlly
eac6941e10 Updated README and ran lint fixes 2021-07-25 18:44:12 +01:00
JetSetIlly
ae6e8acf79 refined how RESPx works under HMOVE conditions
renamed some preferences for clarity. amended description tests and
preferences window to match
2021-07-25 18:44:12 +01:00
JetSetIlly
9e4d14266d fixed playfield latching when PF0/PF1/PF2 registers are set
Hack'Em Hangly Man exhibited a playfield error on the right boundary of
the main playscreen because of this
2021-07-25 18:44:12 +01:00
JetSetIlly
c2616c2573 added emulation package / gui.EmulationState (re)moved 2021-07-25 18:44:12 +01:00
JetSetIlly
89b7596837 implemented pausing in playmode
this has revealed the way forward for an effective convergence of
playmode and debugging mode. for this commit a Playmode interface has
been added but this will abstracted into an Emulation interface in the
future
2021-07-24 08:07:23 +01:00
JetSetIlly
839d92cfca corrected screen update when screen is not keeping up with emulation
the problem can be seen when the monitor refresh rate is higher than the
emulation speed. for example, PAL on a 60Hz monitor. the problem was
caused by the reuse of the previous frame, rather than the current
frame.
2021-07-23 09:24:46 +01:00
JetSetIlly
5c021455c2 corrected latch masking in MAM functions 2021-07-22 09:31:43 +01:00
JetSetIlly
966330e88f ARM cycle counting refinements
N cycle stretched only for a back-to-back N cycle

MAM prefetch will succeed unless the previous cycle was a data read,
meaning the pending prefetch has failed. this affects S cycle prefetches
(for the MAM) which will always succeed unless the prefetch has been
aborted. we're also assuming that MAMTIM is set correctly
2021-07-21 22:27:20 +01:00
JetSetIlly
e13606dbf4 updated screenshots after CRT ghosting improvements 2021-07-20 22:52:01 +01:00
JetSetIlly
c6a859d1c6 renamed bilinear filter to ghosting filter
ghosting filter is now only applied horizontally

added ghosting options to CRT preferences
2021-07-20 22:17:46 +01:00
JetSetIlly
22dd8284ca improved terminal window input line 2021-07-20 16:29:50 +01:00
JetSetIlly
d830c956d9 sdl opens all available gamepads/joysticks
all devices control player zero. other players will be supported in the
future once a suitable system for allocating controllers is settled on.

this was added only so that my Hori fighting stick could be used with
minimal effort
2021-07-20 16:28:59 +01:00
JetSetIlly
55fcc30bb5 fixed symbol lookup for write addresses
wasn't noticeable except for symbols that have different underlying
read/write addresses. for example, TIM64T has no read address so the
lookup was failing.
2021-07-19 19:17:50 +01:00
JetSetIlly
f69ba60984 updated of LDMIA base register is now conditional
LDMIA updated base register value in all instances. if the base register
is part of the update however then we should not update the register.
2021-07-18 16:09:07 +01:00
JetSetIlly
7b0a123534 corrected status flags for Format 15 CMP implementation 2021-07-18 16:09:07 +01:00
JetSetIlly
db6ef4535f CDF/DPC+: corrected CALLFN resolution for zero cycle execution
no need to account for phantom reads if cycle usage of the ARM program
execution is zero (immediate mode)
2021-07-17 20:26:36 +01:00
JetSetIlly
d9f55701bf corrected RIOT timer value boundaries
comment in RIOT timer source file clarifying meaning of internal timing values
2021-07-17 20:26:15 +01:00
JetSetIlly
e7b7191d90 clarified ARM shift instructions
artithmetic shift is defined on signed types in Go but this has been
replaced by explicit bit manipulation
2021-07-17 07:43:56 +01:00
JetSetIlly
8de0b450d0 iteration of coproc disassembly corrected
last execution window (and saved CSV file) not showing first entry in
the disassembly
2021-07-16 19:18:34 +01:00
JetSetIlly
06ccbf3b59 Update ARM preference window information/screenshot 2021-07-15 10:38:37 +01:00
JetSetIlly
1cefa61cea added Abort on Illegal Memory Access option for ARM emulation (default: off)
thumb program will abort if illegal memory access is detected

illegal accesses will always be logged even if the option is off

program will always abort on illegal PC fetch even if the option is off
2021-07-15 10:38:37 +01:00
JetSetIlly
8d63b402d3 README section on improving performance 2021-07-11 13:43:49 +01:00
JetSetIlly
ef0d25e45e immedate ARM mode does no cycle counting
small performance improvement when in immediate mode. modified last
execution window to say if execution was in immediate mode or not (to
explain the absence of cycle count)

removed stale ARM preferences

updated screenshots and README
2021-07-11 12:39:08 +01:00
JetSetIlly
399c384b36 reverted changes in 3451cb730f
there was an error introduced when ARM driver code is called from BX. I
can't find the source of the error.
2021-07-11 12:36:50 +01:00
JetSetIlly
e54c146988 added MCLK modulation for N cycles. 2021-07-11 10:42:06 +01:00
JetSetIlly
61e3b90fd4 additional notes in ARM disassembly
ARM timer value/control access. no note on reading timer control

BX instruction notes whether it branch to Thumb or ARM code
2021-07-11 06:19:16 +01:00
JetSetIlly
9eafea9753 ARM disassembly save creates a CSV file
separated by semicolons but still a CSV file that can be imported to a
spreadsheet for analysis
2021-07-10 09:21:23 +01:00
JetSetIlly
3f6eaae08d fixed race condition on goto last ARM execution button 2021-07-09 09:44:48 +01:00