- RAM command now has CART option. displays any additional RAM the
cartridge may have
o cartridge
- implemented RAM() command. returns copy of RAM array
- save/restore banks functions are now save/restore state and deal
with cartridge RAM in addition to bank information
o debugger/memory
- better error messages for peek and poke
- reworking of timings
- improved MachineInfo() text
- work on NUSIZ * more to be done
o stella tv
- error if no flyback signal has been sent
o metavideo
- improved metavideo
- now visualises delayed effects
- more general and more flexible handling different cartridge
mapping schemes
- implemented parker bros cartridges
o disassembler/debugger
- changes to bank detection to support changes to cartridge module
- renamed Recorder to Scribe
- any references to script "recording" has been altered
o errors
- some effort expended tidying up error messages display and
construction
- commandline package now uses errors package
o removed panics that would be better served with errors
o removed extraneous calls to fmt.Println and fmt.Printf
- stores string representation of disassembly rather than instances
of result.Instruction
- it was felt that the context of result.Instruction maybe
misleading if probed after the disassembly process (it may not be
obvious to a user of the disassembly package what the limitations are)
o commandline
- in all instances, error messages containing placeholders now
contain descriptive messages rather than the placeholder itself
o debugger
- added analysis option to CARTRIDGE command
- lots more work required on this
- added a "linear" disassembly that deciphers every address in the
cart as though it were a valid instruction. this solves the problem with
the original disassembly algorithm (now called flow) caused when the
debugger reaches an area of the code that cannot be found with the flow
mechanism.
- fixed duplicate detection
- fixed parsing of breakpoint values >16bit (I misread the
ParseInt() documentation)
o disassembly / commands
- GREP results now provide context
o gopher2600
- initscript now definable on the command line
o tia / playfield
- implemented "scoremode"
* I'd totally forgotten about this 2600 feature and was trying to
understand why the "28c3 intro" demo wasn't showing the atari logo
at the top of the screen. at the same time I had stumbled across
SvOlli's Revision 2013 lecture where he mentions it. lucky. I would
have spent a couple of hours probably, scratching my noggin.
- removed TVState construct
- GetTVState now returns an interface{}
- after second thoughts TVState was too clumsy. debugging targets
can be constructed with the genericTarget struct
- the only thing we've lost for now, is automatic consistency of
labelling but I think that can be solved more elegantly
o debugger/targets
- parse targets now wraps GetTVState results in genericTarget struct
o panics
- all panics now follow the same pattern - no mixture of Sprinf()s
and Errorf()s
o disassembler
- parseMemory now reaches all areas of the ROM
- reworked disassembly routines so that it works better with
multi-bank cartridges.
- unfinished
o cpu
- reworked cpu testing routines
- NoSideEffects has been changed to NoFlowControl
* this means that memory is now written
* it is intended that NoFlowControl CPU instances be supplied with a
memory shim that can filter out write addresses as appropriate
* this was done so that we can see switching of cartridge banks
- reverted motion clock timings from 480ff22670eb8898b0d15d5f884257232db584bf
- this visually breaks Keystone Kapers ROM again but this was
definitely not the right solution because the fix broke both Yar's
Revenge and the stress-test-cards.
* I really now need to implement automatic regression tests
o debugger
- implemented grepping of disassembly
- corrected initial state of break and interrupt disable flags on
startup
- result.InstructionData now set as soon as possible in all
instances
- corrected RTI implementation
- corrected RTS implementation
- implemented some undocumented instructions:
0x0c skw
0xb3 lax
0xc7 dcp
0x4b asr
- a homebrew version of pacman (pac-man_4k.bin) now works (up to a
point; not sure if bug is in the implementation of the new
instructions or is a video issue)
- new effect classification "Interrupt" for BRK and RTI
- instructions_gen program is now more robust
o disassembly
- added validity check to ParseMemory() function
- Dump() now uses strings.Builder
o result.Instruction
- corrected GetString() function
- function would panic when in videostep mode
- bug most probably introduced in 58f452cf52343eb27fb495b3b0f6e6675806203f
- improved output of IsValid()
- disassembly of problem line is now included as part of the
error string
- added universal symbols file
- chip memory definitions no longer include symbol definitions.
they use the new universal symbols file
o cpu
- moved instruction_result from cpu package to result package
o disassembly
- style parameters moved to new result package
o memory / debugger
- improved PEEK command implementation
- can now use symbolic addresses
- added SYMBOL command. searches for address label, returns
address
- fixed disassembly output for ROMs without a symbol file
- improved disassembly a little bit. now attempts to disassemble
entire of cartridge memory and doesn't bail out of loop
at first sign of an unimplemented instruction. cpu
package now returns a ProgramCounterCycled error when
program counter reads past end of memory
o video
- tweaked horizontal movement
- fixed player vertical delay (tested with Pitfall ROM)
- fixed ball enable detection (0x02 not 0x20. doh!)
o cpu
- implemented LAX command
- renamed 3 byte NOP to DOP
- added program counter information to unimplemented instruction
error
o gopher 2600
- error message now returned and displayed in run mode
o
- symbol loading
- printing of disassembly now uses symbols (if available)
- run mode disasm now works as expected
o errors
- added GopherError - started to replace calls to fmt.Errorf()
with instantiations of GopherError
o debugger
- prompt now shows (brief) disassembly of next instruction to be
executed