revision

package
v0.14.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2021 License: GPL-3.0, GPL-3.0 Imports: 6 Imported by: 0

Documentation

Overview

Package revision handles/documents the differences in the TIA across different models of the Atari 2600.

There is a tremendous number of number of variations in the TIA chip and all are listed at the URL below.

http://www.ataricompendium.com/faq/vcs_tia/vcs_tia.html

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HeatThreshold

func HeatThreshold(scanline int) bool

HeatThreshold returns true if heat threshold is met. This is in no way an accurate simulation of heat. It simply emulates an increasing probability that the function will return true every time it is called.

Types

type Bug

type Bug int
const (
	// Late VDEL gfx: The setting of player graphics VDEL data and in the case
	// of GRP1, the ball enable delayed bit. It does not affect the writing of
	// the primary graphics data.
	//
	// For clarity the naming of these preferences refers to the register that
	// is being written. In other words, when GRP0 has been written to the
	// effect of the LateGRP0 option is seen in player 1 delayed gfx data.
	//
	// Example ROM: HeMan.
	LateVDELGRP0 Bug = iota
	LateVDELGRP1

	// Late RESPx: triggering of a REPSx happens a little later under certain
	// HMOVE condition.
	//
	// https://atariage.com/forums/topic/311795-576-and-1008-characters/?tab=comments#comment-4748106
	//
	// Example ROM: 36 char demos (36_Char_Interlaced_RESP0_cycle0).
	LateRESPx

	// EarlyScancounter: a pending scancounter will start a little earlier
	// under certain HMOVE conditions
	//
	// https://atariage.com/forums/topic/311795-576-and-1008-characters/?tab=comments#comment-4748106
	//
	// Example ROM: 36 char demos (36_Char_Interlaced_RESP0_cycle3).
	EarlyScancounter

	// Late PFx: The setting of the playfield bits happens a video cycle later
	// that it should.
	//
	// Example ROM: Pesco.
	LatePFx

	// Late COLUPF: Updating of playfield color register happens a video cycle
	// later than it should.
	//
	// Example ROM: QuickStep
	//
	// I am unsure if this applies to all color registers or just the
	// Playfield. For now, I'm assuming it is only the playfield color
	// register.
	//
	// This is implemented by delaying the servicing of the color register
	// until after the pixel color is selected.
	//
	// Some TIAs that are on the edge of tolerance can also exhibit this
	// behaviour when the TIA is embedded in another device, such as an RGB
	// mod. Explanation of how this can happen:
	//
	// https://atariage.com/forums/topic/307533-atari-rgb-light-sixer-repair/?do=findComment&comment=4559618
	LateCOLUPF

	// In some TIA variations, a HMOVE clock during the non-HBLANK period will
	// cause the regular tick signal to phase out when the sprites HMOVE
	// required flag is set.
	//
	// Example ROMs: Cosmic Ark (starfield) and the barber pole test ROM (barber.a26)
	//
	// An image of the effect on Cosmic Ark can be seen here:
	// http://www.ataricompendium.com/faq/vcs_tia/vcs_tia_cosmic_ark_2.jpg
	LostMOTCK

	// RESPx on HBLANK threshold: the delay when resetting player position is
	// affected by the state of HBLANK. some TIA revisions seem to react even
	// later to HBLANK being reset.
	//
	// This phenomenon seems to be affected by operating temperature. the
	// HeatThreshold() function provides a rudimentary emulation of this.
	//
	// Example ROM: 2/3 sprite demo (labelled bin00004.bin)
	//
	// https://www.biglist.com/lists/stella/archives/199901/msg00089.html
	RESPxHBLANK
)

func (Bug) Description

func (bug Bug) Description() string

func (Bug) NotableROM

func (bug Bug) NotableROM() string

type Preferences

type Preferences struct {

	// The names of the preference fields match the Bug enumerations. These
	// values are updated automatically when the corresponding Dsk* field is
	// updated.
	LateVDELGRP0     bool
	LateVDELGRP1     bool
	LateRESPx        bool
	EarlyScancounter bool
	LatePFx          bool
	LateCOLUPF       bool
	LostMOTCK        bool
	RESPxHBLANK      bool

	// Disk copies of preferences
	DskLateVDELGRP0     prefs.Bool
	DskLateVDELGRP1     prefs.Bool
	DskLateRESPx        prefs.Bool
	DskEarlyScancounter prefs.Bool
	DskLatePFx          prefs.Bool
	DskLateCOLUPF       prefs.Bool
	DskLostMOTCK        prefs.Bool
	DskRESPxHBLANK      prefs.Bool
	// contains filtered or unexported fields
}

Preferences for TIA revisins. Use the "live" values inside the emulation code. Accessing the Dsk* values through the prefs system is too slow.

The Dsk* values should be used from any GUI preferences editor however - the live values will be updated automatically when the Dsk* value are changed.

func (*Preferences) Load

func (p *Preferences) Load() error

Load disassembly preferences and apply to the current disassembly.

func (*Preferences) Save

func (p *Preferences) Save() error

Save current disassembly preferences to disk.

type TIARevision

type TIARevision struct {
	Prefs *Preferences
	// contains filtered or unexported fields
}

func NewTIARevision

func NewTIARevision(tv signal.TelevisionTIA) (*TIARevision, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL