Commit graph

1240 commits

Author SHA1 Message Date
JetSetIlly
45e43cf0c6 improved MNetwork fingerprinting
a new demo ROM from Splendidnut (Congo Bongo) was not being detected
correctly.

during testing I noticed that the 8k version of Bump n Jump was not
supported so the MNetwork mapper now supports 8k ROMs in addition to the
documented 16k.

error message corrections.
2021-01-24 09:29:32 +00:00
JetSetIlly
54c14a2563 playmode catches Ctrl-C events and silences them 2021-01-23 11:24:04 +00:00
JetSetIlly
93031daf8f improved dbgscreen layout
toolbar no longer jumps when screen resizes
2021-01-22 19:27:10 +00:00
JetSetIlly
fc70fd5505 television frame resizer will now ignore false positives
this means that frames must be consistent for N frames before the resize
is committed to the PixelRenderers.

sdlimgui screen is now correct height to show limits of screen.
2021-01-22 19:27:10 +00:00
JetSetIlly
1059859b27 TIA optimisations
pending TIA events only checked when required

only applies to the main TIA events. no value in the same optimisation
for future events in the video subsystem

removed visible flag from video Tick() functions. sprites have access to
the TIA hblank flag which amounts to the same thing.
2021-01-21 18:21:32 +00:00
JetSetIlly
4b17a4b803 arm disasm works correctly after performance improvements 82fe52852c 2021-01-21 17:08:40 +00:00
JetSetIlly
d2e9ce1afb lazy breakpoints could fail if CPU result addresses were non-sequential
if the disasm window list started at for example $f010 and ended at
$1120, then the for loop would not run because the start address is
numerically after the end address.o
2021-01-21 16:47:32 +00:00
JetSetIlly
7d95c30b9d fixed race condition in win_audio 2021-01-21 12:16:17 +00:00
JetSetIlly
46dd44c218 vcs.Run() continue check not only returns error and not (bool, error)
this is marginally quicker but I feel it's neater. to solve the problem
of distunguishing between returns values (true, nil) and (false, nil)
the latter can implemented with a sentinal error.
2021-01-20 23:51:08 +00:00
JetSetIlly
b8ecaefebb TIA optimisations
TIA sub-components no longer pass values around in return values. it
turns out to be far cheaper computationally to store calculated values
in the TIA sub-types and retrieving them as required.

on my machine this turns out to be around 2fps saving
2021-01-20 23:50:46 +00:00
JetSetIlly
82fe52852c ARM7 performance improvements
it is assumed that the program counter will only ever point to a single
memory area (the custom area in CDF/DPC+ parlance) so reading the PC
address no longer consults the memory map every instruction.

the top/level decoding of instructions happens once and the function
pointer is placed into a cache.
2021-01-20 23:40:29 +00:00
JetSetIlly
450f6ae303 default preferences values for disassembly and debugger
supercharger tries to load BIOS before anything else meaning a quicker
failure if one is necessary

failed cartridge attachment will result in log entry rather than a
terminal error

loading cartridge without a coprocessor (ARM) when the Last Execution
window was open would cause a crash

added video link in readme
2021-01-19 21:09:30 +00:00
JetSetIlly
b9891dc854 disassembly will stop decoding on unknown opcode but will return "true"
this means that the sequence is allowed but that particular opcode is
not allowed
2021-01-19 18:42:20 +00:00
JetSetIlly
7e9a64a5ab added ARM section to the readme file
tweaked default window positions
2021-01-19 17:53:22 +00:00
JetSetIlly
d8caaf7858 fixed bug caused by loading a Superhcarger ROM without a BIOS
bug was only triggered when loading was attempted when another cartridge
had already been loaded. the error path when the debugger was already
running left the debugger in an unsafe state for the disassembler

debugger will now load the ejected cartridge if an error occurs during
the loading of another cartridge.
2021-01-19 17:34:54 +00:00
JetSetIlly
8dd5b7106e goto button in coprocessor last execution window
rewinds emulation to just after the point the coprocessor program was
last executed
2021-01-19 17:34:43 +00:00
JetSetIlly
91c88d555b renamed all instances of HorizPos to Clock
it's less clumsy when used as a label and it's accurate with regards to
how the VCS is documented. not sure why I thought HorizPos was a better
label. maybe it helped my thinking in the earlier phases of development.
2021-01-19 17:34:43 +00:00
JetSetIlly
90f3d60174 coprocessor last execution window shows TV information
extended disassembly package accordingly
2021-01-19 17:34:43 +00:00
JetSetIlly
84372f6bc5 crop guides in debug screen refined
more pleasing colour and are now drawn on the outside of the boundary
and not the inside of the bounday. as it was, the guide could obscure
pixels drawn on the very edge of the screen.
2021-01-19 17:34:43 +00:00
JetSetIlly
ce7d724a02 fixed lint errors 2021-01-19 10:03:27 +00:00
JetSetIlly
e3bb2b023e television resizing less aggressive
resizer counts N frames (currently 5) before committing to a resize.
this gives the ROM change to expand the screen slowly without any visual
side-effect. the supercharger BIOS expands noticeably without this
mechanism.

fixed off by one error for Ladybug and Hack'Em Pacman (and probably
others)

missing doc files for crt and crt/shaders packages
2021-01-18 23:37:57 +00:00
JetSetIlly
527130c788 fixed panic caused by second supercharger disassembly
using a dead reference to the cartridge structure. bug introduced with
the coprocessor package.
2021-01-18 23:37:57 +00:00
JetSetIlly
b22cfad036 updated README and screenshots 2021-01-18 23:37:57 +00:00
JetSetIlly
c4fbd2fe6d paddle sensitivity is better and eliminated jitter
fixes avalanche
2021-01-18 19:20:15 +00:00
JetSetIlly
a3c0fca9f9 fixed blur in playmode
broken in 364fef5228

tweaked phosphor strength in fragment shader
2021-01-18 13:47:48 +00:00
JetSetIlly
f3154975f0 improved disassembly performance for ARM7 2021-01-17 22:34:59 +00:00
JetSetIlly
47990c09e6 disassembly (6507) will ignore unknown opcodes 2021-01-17 19:59:34 +00:00
JetSetIlly
33e1053bdb fix dpc+ running in debug mode
Snapshot() implementation was copying the wrong ROM instead of RAM which
obviously didn't affect run dpc+ in playmode
2021-01-17 18:46:05 +00:00
JetSetIlly
d6abbd8067 added Coprocesser last execution window
added support for coprocessor menu

reworked window manager/menu system to be more flexible

windows that are cartridge specific now use mapper ID in title. this
means that we can store different window size/position for the cartridge
RAM window, for example, that are approprite for the mapper in question.
2021-01-17 13:38:07 +00:00
JetSetIlly
3ea4d74ba5 arm7tdmi disassembly
references to Mnemonic renamed to Operator for 6507
2021-01-17 08:46:16 +00:00
JetSetIlly
510c155989 clarified (and corrected) reset procedures 2021-01-14 12:37:38 +00:00
JetSetIlly
e39021eabb improved Collisions layer
tidied up collision detection routines

clarified some concepts in the reflection system

rationalised some concepts in the sdlimgui interface
    - handling of PackedColors is clearer
    - easier handling of color key entries (colored rectangle and label)
2021-01-13 22:32:30 +00:00
JetSetIlly
7060d09603 phosphor now appears in CRT preferences preview image
preview image in CRT prefs window is now draggable

reworked glsl and fragment shader to clarify some concepts
2021-01-12 23:34:58 +00:00
JetSetIlly
fccdc91019 cart ram/static windows scroll correctly (tab bar stays put)
byte grid labels are correctly sized (uses the correct number of digits)
according to length of grid
2021-01-12 21:32:10 +00:00
JetSetIlly
279134b532 Savekey EEPROM now uses drawByteGrid() function
this matches other areas of the debugger that need to draw editable byte
grids

extended drawByteGrid() to use imgui list clipper

EEPROM window shows data changed since last EEPROM write
2021-01-11 17:40:52 +00:00
JetSetIlly
49a8de6c31 removed lint errors
menu entries for windows can have diferent labels to the window title.
(this was already a feature but it is now more clear/onvenient. change
prompted by lint error).
2021-01-11 17:40:52 +00:00
JetSetIlly
364fef5228 CRT phosphor now works with debug screen
textures (regular pixels and phosphor pixels) were not being rendered if
emulator was too fast for the vsync. this was okay but it caused visible
artefacts in playmode when vsync was enabled and the CRT prefs was
visible, particular on fast machines.
2021-01-11 17:40:52 +00:00
JetSetIlly
7b7f046342 crt prefs shows descriptive values instead of numeric values
tweaked default values for crt
2021-01-11 17:40:52 +00:00
JetSetIlly
ae9bc23836 fixed fragment shader for MacOS
shaders are no self contained and compilable with glslangValidator

glsl constants extracted from shader source by go generator
2021-01-11 06:42:44 +00:00
JetSetIlly
7b6fc85959 added phosphor effect to CRT emulation
removed imput/output gamma preferences

removed scanline/shadowmask scaling preference
2021-01-10 21:03:50 +00:00
JetSetIlly
d9b535f228 audio signal pushed when pending pixels are pushed
doesn't seem to be more efficient than before but it makes more sense to
do it like this.
2021-01-09 18:26:46 +00:00
JetSetIlly
83e0a990d1 UI events checked less frequently in playmode
significant performance improvement
2021-01-09 13:42:37 +00:00
JetSetIlly
eac81e26bb patch from output of "cmp -l"
a far simpler but more convenient patch format
2021-01-08 23:24:19 +00:00
JetSetIlly
f458561e0c SP target for breaks and traps was not correct
fix breakpoint error message
2021-01-08 19:03:30 +00:00
JetSetIlly
8f6eec130a corrected TV behaviour when VSYNC is not encountered
fixes Lili NTSC rom (and improves Andrew Davies' chess ROM)

fps limiter more reliable. more accurate at low frame rates.
2021-01-08 18:48:23 +00:00
JetSetIlly
f26ed57914 added final CDF registers to CDF window
tidied up registers and windows for DPC, DPC+ and Supercharger mappers
2021-01-06 07:30:16 +00:00
JetSetIlly
71cc4dbed0 PEEK/POKE report address area (TIA, etc.) even if address is not peekable/pokeable 2021-01-05 19:02:23 +00:00
JetSetIlly
63ebcd1f95 crikey. another attempt at the atari start bank issue
so 4k and 2k cartridges start at bank 0. all larger size start at bank 1.

this satisfies all the sensitive ROMs that I've found:
    HackEm HanglyMan
    Stay Frosty
    Congo Bongo
2021-01-05 17:36:09 +00:00
JetSetIlly
3ba342586d tidied up dear imgui widget creation
moved some common constructs to imgui_helpers
2021-01-05 14:47:02 +00:00
JetSetIlly
ab6c4aaeeb streamlined window/menu creation in sdlimgui
removed gui.ReqSavePrefs. prefs should only be saved under explicit
instruction from the user

added gui.StateEnding to be used with gui.ReqState when debugger and
playmode (and maybe other modes) are finishing. sdlimgui uses this to
save window information.
2021-01-04 10:57:37 +00:00