Commit graph

1240 commits

Author SHA1 Message Date
steve
432354488a o TIA reworking
- implemented TIAClock
    - simplified polycounter
    - tidied up playfield

o BasicTV
    - corrected timings
2020-01-05 18:58:35 +00:00
steve
690c0c158a o disassembly
- corrected linear disassembly to work with non-atari bank switching
	cartridges

o cartridge
    - corrected bank initialisation
2020-01-05 18:58:35 +00:00
steve
e69099993f o player
- reverted previous change for fixing an visual artefact in Tapper
    * c56bea71231273bb2731400f14c6ebdea24cf9ef
    - it broke homebrew Donkey Kong (there was no regression test)
2020-01-05 18:58:35 +00:00
steve
730707735e o cartridge
- 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
2020-01-05 18:58:35 +00:00
steve
dc076eac18 * tweaking of code in preparation for future changes
o tia
    - naming of HMOVE concepts - to help thinking

o memory
    - IRQ and Reset addressess moved to addresses package
2020-01-05 18:58:35 +00:00
steve
147589160c o debugger
- added HMOVE argument to TIA command
2020-01-05 18:58:35 +00:00
steve
9da5570742 o tia
- timings for writing playfield color register COLUPF and COLUBK now
	distinct from the timing of writing playfield data
    * fixes Tapper

o tia / player
    - rule added that says draw deferment only applies for the primary
     copy of the sprite and not for the second or third copies
    * fixes Tapper

o sdl television
    - metapixel layer now shown regardless of whether screen is unmasked
	or not
2020-01-05 18:58:35 +00:00
steve
0d96744dac o tia
- video Pixel() function (now named Resolve()) is called every cycle
	and not only when HBLANK is off
    - the function also sets the collision registers which needs to be
	done even if pixel cannot be seen
    * fixes Fatal Run

o basic television
    - threshold for automatic-specification switching increased to 10
	scanlines (from one scanline)
2020-01-05 18:58:35 +00:00
steve
5b42fbc841 o video / player / missile
- delay added to COLUP0 and COLUP1

o cpu
    - corrected error construction for errors.ProgramCounterCycled
2020-01-05 18:58:35 +00:00
steve
c69a25f4a5 o video / player
- delay added to setting of player reflection
2020-01-05 18:58:34 +00:00
steve
9887aafa47 o tia / delay / future
- added MachineInfo() functions to Instance type

o debugger
    - added FUTURES argument to TIA command
    - better filtering of empty strings in the debugger.print() command
    * formatting of string no longer deferred to UserPrint()

o player sprite
    - better handling of NUSIZ setting
2020-01-05 18:58:34 +00:00
steve
de5e3ffc25 o gopher2600
- fixed command line parsing bug
    - default run mode was broken such that flags were not recognised
    - bug introduced in bf03447dc79fde2b21d0e9f0c62211ba5f77f601
2020-01-05 18:58:34 +00:00
steve
ec1121bdd6 o riot
- moved timer code to its own file and type

o debugger
    - added TIMER argument to RIOT command
2020-01-05 18:58:34 +00:00
steve
2feaf67333 o riot
- fixed initial timerTickCyclesRemaining value
    - reworked commentary for timer
2020-01-05 18:58:34 +00:00
steve
e818387c28 o gopher2600
- seeding of random number generator
	* some areas of the emulated hardware start in a randomised
	state (not committed yet)
    - better argument parsing. better help messages for sub-modes
2020-01-05 18:58:34 +00:00
steve
d5b0d45d63 o sdl
- frame stability handles tv spec changes
2020-01-05 18:58:34 +00:00
steve
f5c1bed707 o sdl
- improved frame stability
    - plaqattk now works correctly - again

o television
    - tweaked tv specification change threshold
2020-01-05 18:58:34 +00:00
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