implemented deep-poking of playfield values. there may be pathological
instances where this does not work. not all addressing modes have been
added to the deep-poke function.
to be clear, non-playfield graphic elements (player, missile, ball) have
not had this feature added yet.
will probably also require some way of feeding back information, making
it clear what has actually happened or actually changed. changing of an
immediate value should probably trigger a redisassembly.
result of cartridge Mapping() function can result in strings of varying
length in a very short period, which caused the draw routine to flicker
more flexible Mapping() function required
ejected cartridges now report having one bank, rather than zero. this
is really to sypport the symbols_test but it shouldn't do any harm
elsewhere.
symbols package now safe to use in threaded code
symbols search returns normalised symbol name (ie. as it appears in the
symbols table). the effect of can be seen with the PEEK and POKE
commands for example.
debugger and playmode refer to userinput package rather than the common
code being in the playmode package
GUI events are now userinput events
more versatile handling of EventData in controller package. parsing of
EventData is handled by the controller types as required. added
EventDataPlayback type to ports package to help distinguish source of
data.
EventDataStick used to specify stick data value. used to help
distinguish between setting a stick direction and toggle a stick
direction. the latter case is useful for (physical) gamepad input and
the former for input from a keyboard.
Gamepad analogue stick can be used for paddle input. PaddleFire removed
and Fire used instead.
version number of playback file increased to 1.1. version detection of
recorder.IsPlaybackFile() improved.
lazy system now pulses the update time. is used by the disasm window to
synchronise updating
clearer method of switching between play and debugmodes (not fully
implemented yet)
extended mapper.BankInfo fields to include Name (useful for identifying
BIOS in the supercharger, probably not much else)
cart summary info moved from disam window to menubar
common TIA variations added to tia package
revisions preferences window in sdlimgui
key names in prefs package can now contain digits in addition to letters
soundfile (WAV or MP3) will stop when cartridge stops looking for tape
data and will rewind when it reaches the end of the file.
tape position slider in debugger
These conditions only seem to apply to some machine types. Prompting
a reason to introduce options to allow the user to select the precise
2600 model.
Hmove has been packaged up for easier working. We could probably improve
HMOVE instrumention because of this.
added IterateBlessed() function for Disassembly type. more convenient
method of outputting disassembly to a string.
instruction defintion notes whether opcode is undocumented
linter flags use of undocumented opcodes
renamed DISASSEMBLY command to DISASM
added single address disassembly to DISASM command
removed optimistion reflection overlay
it didn't show all optimisations that are now done in the TIA emulation
and it was difficult to present the information meaningfully. plus, it's
information about the emulation itself and not about the emulated machine.
cleaned up lint errors
for optimisation purposes we cache the first level decoding of an
opcode. we also store the pointer to the memory mapping of the PC and
only change it if the PC falls outside the range of cache. we call this
program memory.
however, the decoding cache was not being refreshed when program memory
changed causeing visible failures in Draconian, and probably other ROMs
too.
disassembly package and win_disasm now pause when coprocessor is
running. terminal prompt now reflects coprocessor activity
ARM "program memory" will change when required. error introduced during
ARM optimisations 82fe52852c
implemented remaining ARM7 disasm
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.
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.
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.
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.
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