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.
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
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
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.
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.
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
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
cart ram/static areas show changes across time
supercharger TV reset after tape load no longer resets frame number.
this affected the rewind system and how it stores historical data.
improved responsiveness of service loop polling
VCSReturnChannel so the television can inform the VCS about a change in
television spec. The VCS uses this information to forward clock
information to the cartridge.Step function
DPC and DPC+ music generators now use correct VCS clock value in all
instances
Collision tests run less frequently
Pixels are reused more often
Streamlined Playfied.pixel() and Player.pixel() functions
Tiny improvment to ARM MapAddress() imlplementations (CDF and DPC+)
Small improvement to performance of ARM read 16/32 bit memory functions
Unchanged overlay renamed to "Unoptimised"; now highlights pixels that
were generated without any optimisation at all
expanded --profile option for DEBUG and PERFORMANCE so that different
profile options can be selected/combined
added --profile option to PLAY mode.
many lint errors removed (re-added "make lint" to git pre-commit hook)
the reset routine now tests each bank to see if the reset vector is
sensible. probably applicable to some other mapping formats but
keep it to the Atari ROMs for now.
I've flip-flopped on what the start bank should be for atari cartridges.
I'm reasonably happy that this is now correct.
fixes Voice Enhanced Bezerk ROM while retaining correct beahviour for
all test ROMs