Commit graph

1523 commits

Author SHA1 Message Date
steve
ccd289fad5 o cpu
- implemented ARR opcode
    * timer_test.bas rom now runs
2020-01-05 18:58:34 +00:00
steve
ba5aa0bfe0 o cpu
- implemented the 'absolute indexed x' versions of SKW opcode
    * now runs mega bitmap demo (atext.bin) although not perfectly yet
2020-01-05 18:58:34 +00:00
steve
c6edd5e15c o television
- improved auto tv specification switching
2020-01-05 18:58:34 +00:00
steve
c28ee6cc70 o cpu
- implemented SAX instruction
    - implemented absolute indexed-y LAX instruction
2020-01-05 18:58:34 +00:00
steve
d0b41d0aa5 o RIOT
- implemented TIMINT register
    - ROMs now know to work:
	* Solaris
	* Tapper
2020-01-05 18:58:34 +00:00
steve
ba1e840215 o debugger
- CPU command can now SET cpu registers
2020-01-05 18:58:34 +00:00
steve
9e897f7245 o sdltv
- SDL SetSize() function causes the window to gain focus. added
    logic to prevent SetSize() being called if the size is not going to
    change
2020-01-05 18:58:34 +00:00
steve
d42ec8e911 o television
- reworked basic television
    - added AUTO tv type to the command line - switches tv specification
	to PAL automatically when visible screen exceeds NTSC limits
    - updated all renderer implementation (sdl, digesttv, imagetv) to
	handle specification switches
2020-01-05 18:58:34 +00:00
steve
8800312527 o breakpoints
- ANDing of breakpoints now works correctly
    - listing of ANDed breakpoints now correct
    - corrected command template for BREAK

o debugger
    - STEP command template and parsing corrected
2020-01-05 18:58:34 +00:00
steve
728b37a908 o new delay package - currently a sub-package of the tia package
- moved future package to delay package
    - schedule delays are not part of delay package
    - VBLANK trigger moved back to tia package
    - TODO: could do with some more work. maybe moving
    onFutureColorClock and onFutureMotionClock to a single type; and
    then passing a copy to types that need them; delay values could be a
    table that lists delay cycles alongside which delay group it is
    associated with; maybe make delay values adjustable at run time (?)
2020-01-05 18:58:34 +00:00
steve
2ec392a00d o commandline
- added help command
    - nested groups
    - extensive commentary
    - improved error message when not all tokens have been parsed
    - repeat groups
    - removed %* placeholder

o debugger
    - updated command definitions to match new commandline package
2020-01-05 18:58:34 +00:00
steve
0af89e8240 o cpu
- added some TODO notes for correct handling of 6502 bugs

o commandline
    - change %V to %N and %I to %P
2020-01-05 18:58:34 +00:00
steve
33e9132347 o debugger / console
- printProfile changed to Style
    - implemented styleWriter(), in debugger package, satisfying
    io.Writer interface
2020-01-05 18:58:34 +00:00
steve
5393cc5325 o symbols
- reworked symbols package
2020-01-05 18:58:34 +00:00
steve
d90f2f441c o debugger memory
- reworked debugger memory routines
    - implemented an addressInfo type that normalises display of address
	information

o memory
    - renamed vcssymbols package to addresses

o console / colorterminal / easyterm
    - tidy up

o debugger
    - tidied up break, trap, watch, symbol commands
2020-01-05 18:58:34 +00:00
steve
c1953d6bbc o debugger / commandline
- fixed tentative matching during validation
2020-01-05 18:58:34 +00:00
steve
43c7646471 o watches
- fixed watches
    - TODO: still more work required on the watch facility. it doesn't
    feel right just yet
2020-01-05 18:58:34 +00:00
steve
93b14ca2e6 o tia / video
- moved VBLANK servicing from ReadTIAMemory to ReadVideoMemory
    - applied a delay to VBLANK
    - fixes score box of homebrew Donkey Kong
2020-01-05 18:58:33 +00:00
steve
c732f5c811 o video schedule delays
- tweaked delay value for playfield writes
    - fixes Thrust
2020-01-05 18:58:33 +00:00
steve
acee669ef8 o tia
- refined when motion clock is set/unset. if HMOVE has been set then
    motionclock is set/unset at a different color clock.
    - clarification/tidy-up of comments and function names
2020-01-05 18:58:33 +00:00
steve
0e3aaec23a o disassembly
- readded call to flow disassembly
2020-01-05 18:58:33 +00:00
steve
adfce28044 o peripherals
- changed peripheral identifcation from a string to a type
    (PeriphID)
    - recorder.playback can now more efficiently filter, using an array
    rather than a map
2020-01-05 18:58:33 +00:00
steve
681910b4d1 o peripheral
- removed CENTRE event and replaced with more flexible NOLEFT,
    NORIGHT, NODOWN and NOUP events
    - splace joystick ammended as appropriate

o sdl
    - keyboard down events not forwarded if event is a repeat event

o performance
    - tidy up
2020-01-05 18:58:33 +00:00
steve
652d2df623 o tia
o OutOfSpec errors caught and filtered
2020-01-05 18:58:33 +00:00
steve
f8698c329f o disassembly
- linear disassembly could cause bank switches naturally through
    memory accesses
    - this caused the linear loop to write the disassembly to the wrong
    array
    - fixed by resetting the bank every loop iteration
2020-01-05 18:58:33 +00:00
steve
cdab0f185a o tia/video
- playfield scoremode is only effective when playfield priority is
    false
	- ROMs affected: Homebrew Donkey Kong
2020-01-05 18:58:33 +00:00
steve
b51cfbb057 o debugger
- a recent refactor caused the vcs to initialise with the basic
    television rather than the sdl gui/tv
    - this meant that the sdl implementation of MetaSignal was not being
    called

o basic television
    - scanline extension corrected

o errors
    - messages corrected
2020-01-05 18:58:33 +00:00
steve
e18f17ca37 o regression
- added progress meter for playback regression types

o errors
    - added FatalError type. intended to be used instead of panic()

o limiter
    - created limiter package
    - moved sdl fpsLimiter to new package
    - added HasWaited() function in additio to Wait() function
2020-01-05 18:58:33 +00:00
steve
c36459e1d2 o recorder/playback
- fixed bug caused by interaction between basictv and digesttv
    - some roms (games_that_do_bad_things_to_hmove) failed playback when
    the screen limits changed
    - the best solution I could find was to prevent basictv calling
    registered renderers once the last possible scanline was reached
    - in previous versions, the last scanline was redrawn over and over
    until a new frame was ready
    - this however, caused a hashing issue in digesttv when playing back
    recording input. it is unclear to me why this hashing issue arose.
    however, the solution is a more natural response to end of frame
    conditions as well as a being a fix for this bug

o regression
    - regression top level functions now output to an io.Writer passed
    as an argument, rather than to Stdout directly
    - playback will now save an image of the current frame (via imagetv)
    in the event of playback failure

o television
    - NewFrame() and NewScanline() implementations both require a
    frameNum and scanlineNum argument
2020-01-05 18:58:33 +00:00
steve
05080b510b o regression
- fixed regress bug caused by key dereferencing
2020-01-05 18:58:33 +00:00
steve
1073c53724 o performance
- added performance package
    - moved fps() function from gopher.go to new package
    - added percentage of full-speed indicator to fps

o gopher2600
    - changed FPS mode to PERFORMANCE

o polycounter
    - squeezed a little more time out of polycounter by changing the
    receivers of some frequently called functions to pointer receivers.

o television / colors
    - changed how colors are transalted from signals
    - the color specifications are pre-processed in an init() function
2020-01-05 18:58:33 +00:00
steve
6272b90892 o debugger/script
- 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
2020-01-05 18:58:33 +00:00
steve
61c39d5a93 o regression
- added regression entry listing operation
    - added playback regression type
    - playback regression makes a local copy of playback script. delete
    operation deletes it
    - better database key handling
    - running of regression tests can now be limited to a list of
    specific keys
2020-01-05 18:58:33 +00:00
steve
609ab331a2 o regression
- tidied up regression database operation
    - removed UPDATE option (for now). it's probably never needed but we
    can add it again if it's ever needed
2020-01-05 18:58:33 +00:00
steve
218c3d7823 o recorder
- digest tv support added to recorder/playback module
2020-01-05 18:58:33 +00:00
steve
99d04c747b o debugger
- commands can now be deemed unsafe
    - script recording can handle embedded scripts
    - script playback/recording moved to their own package
    - videocycle prompt changed

o gopher2600
    - improved default command line parsing

o general tidying up

o sdl/imagetv
    - wrong error reporting
2020-01-05 18:58:33 +00:00
steve
3d4dd9aec8 o commandline
- fixed bug caused by singular optional arguments
2020-01-05 18:58:33 +00:00
steve
599d9a5b0a o panel
- implemented recording and playback of panel events (from all
	sources)

o keyboard events
    - keyboard can now act as a controller (for player 0)
2020-01-05 18:58:33 +00:00
steve
468d34fdc5 o television
- renamed HeadlessTV to BasicTelevision
    - imagetv and digesttv moved to a single package (called renderers)
    - for example, an SDL GUI and a digestTV instance can now use the
	same BasicTelevision instance
    - hooks now implemented as a Renderer interface
    - simplified GetState() interface

o debugger
    - debugger now initialises an instance of digestTV, using the same
	underlying BasicTelevision as the SDL GUI
    - added DIGEST command
2020-01-05 18:58:33 +00:00
steve
102f9813d7 o debugger
- commands
    - removed RECORD command. the functionality is now part of the
    SCRIPT command

o commandline
    - bugfixes
2020-01-05 18:58:33 +00:00
steve
47b59fedad o renamed scribe package to recorder
- fits in better with what it's being asked to do
2020-01-05 18:58:33 +00:00
steve
d18caa86da o Ports/Controllers
- updating SWCHA does not now clobber the entire register, only the
        nibble for the controller being strobed

o playmode
    - default recording name now includes seconds
    - recording doesn't start until cartridge has been inserted (so if
	the cartridge fails to load there is no useless recording file left
	over)

o memory / periphbus
    - PeriphWrite simply writes straight to memory, rather than through
	a channel
    - work on how controllers are implemented means this is no longer
	necessary.
2020-01-05 18:58:33 +00:00
steve
fe98896706 o gopher2600
- asking for help without a mode now shows available modes
2020-01-05 18:58:32 +00:00
steve
d04462a0fc o scribe
- added recording and playback of controller input

o cpu
    - cpu now correctly propagates errors from video cycle callback
2020-01-05 18:58:32 +00:00
steve
953b709fd9 o controllers
- alternative imlpementation of yesterdays changes
    - this is cleaner and makes more sense
    - removed race error in splace controller
2020-01-05 18:58:32 +00:00
steve
c5edff64e7 o contollers
- generalised controller support
    - opened the way for different stick implementations, including
    scripted playback
2020-01-05 18:58:32 +00:00
steve
b03b64e527 o metavideo
- reimplemented system monitor as metavideo
    - system monitor was trying to be too general to the point where it
    was confusing
    - refactored sdl implementation accordingly

o debugging / script
    - "script capture" reclassified/renamed as "script recording"
    - i want to use capture to refer to the capturing of control input
    (joystick, etc.)

o assert
    - moved assert package to be a sub-package of hardware/cpu/register
    - not required anywhere other than the test packages for cpu and
    register
2020-01-05 18:58:32 +00:00
steve
e58e6b15eb o disassembly
- 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
2020-01-05 18:58:32 +00:00
steve
d06d49eae0 o disassembly
- 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.
2020-01-05 18:58:32 +00:00
steve
cf90552b0a o breaks/traps
- added witchspace as a target - purely to help me debug the
disassembly process but at the same time, it has improved how targets
are defined.
2020-01-05 18:58:32 +00:00