mirror of https://github.com/stella-emu/stella.git
More TIA documentation.
This commit is contained in:
parent
c2302c2e71
commit
2757c906cb
|
@ -592,49 +592,118 @@ class TIA : public Device
|
||||||
LatchedInput myInput0;
|
LatchedInput myInput0;
|
||||||
LatchedInput myInput1;
|
LatchedInput myInput1;
|
||||||
|
|
||||||
// Pointer to the internal color-index-based frame buffer
|
/**
|
||||||
|
* Pointer to the internal color-index-based frame buffer
|
||||||
|
*/
|
||||||
uInt8 myFramebuffer[160 * FrameManager::frameBufferHeight];
|
uInt8 myFramebuffer[160 * FrameManager::frameBufferHeight];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting this to true injects random values into undefined reads.
|
||||||
|
*/
|
||||||
bool myTIAPinsDriven;
|
bool myTIAPinsDriven;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current "line state" --- either hblank or frame.
|
||||||
|
*/
|
||||||
HState myHstate;
|
HState myHstate;
|
||||||
|
|
||||||
// Master line counter
|
/**
|
||||||
|
* Master line counter
|
||||||
|
*/
|
||||||
|
|
||||||
uInt8 myHctr;
|
uInt8 myHctr;
|
||||||
// Delta between master line counter and actual color clock. Nonzero after RSYNC (before the scanline terminates)
|
/**
|
||||||
|
* Delta between master line counter and actual color clock. Nonzero after
|
||||||
|
* RSYNC (before the scanline terminates)
|
||||||
|
*/
|
||||||
Int32 myHctrDelta;
|
Int32 myHctrDelta;
|
||||||
// Electron beam x at rendering start (used for blanking out any pixels from the last frame that are not overwritten)
|
/**
|
||||||
|
* Electron beam x at rendering start (used for blanking out any pixels from
|
||||||
|
* the last frame that are not overwritten)
|
||||||
|
*/
|
||||||
uInt8 myXAtRenderingStart;
|
uInt8 myXAtRenderingStart;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do we need to update the collision mask this clock?
|
||||||
|
*/
|
||||||
bool myCollisionUpdateRequired;
|
bool myCollisionUpdateRequired;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The collision latches are represented by 15 bits in a bitfield.
|
||||||
|
*/
|
||||||
uInt32 myCollisionMask;
|
uInt32 myCollisionMask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The movement clock counts the extra ticks sent to the objects during
|
||||||
|
* movement.
|
||||||
|
*/
|
||||||
uInt32 myMovementClock;
|
uInt32 myMovementClock;
|
||||||
|
/**
|
||||||
|
* Movement mode --- are we sending movement clocks?
|
||||||
|
*/
|
||||||
bool myMovementInProgress;
|
bool myMovementInProgress;
|
||||||
|
/**
|
||||||
|
* Do we have an extended hblank this line? Get set by strobing HMOVE and
|
||||||
|
* cleared when the line wraps.
|
||||||
|
*/
|
||||||
bool myExtendedHblank;
|
bool myExtendedHblank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Counts the number of line wraps since the last external TIA state change.
|
||||||
|
* If at least two line breaks have passed, the TIA will suspend simulation
|
||||||
|
* and just reuse the last line instead.
|
||||||
|
*/
|
||||||
uInt32 myLinesSinceChange;
|
uInt32 myLinesSinceChange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current mode of the priority encoder.
|
||||||
|
*/
|
||||||
Priority myPriority;
|
Priority myPriority;
|
||||||
|
|
||||||
uInt8 mySubClock;
|
/**
|
||||||
|
* The index of the last CPU cycle that was included in the simulation.
|
||||||
|
*/
|
||||||
Int32 myLastCycle;
|
Int32 myLastCycle;
|
||||||
|
/**
|
||||||
|
* Keeps track of a possible fractional number of clocks that still need
|
||||||
|
* to be simulated.
|
||||||
|
*/
|
||||||
|
uInt8 mySubClock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bitmasks that track which sprites / collisions are enabled / disabled.
|
||||||
|
*/
|
||||||
uInt8 mySpriteEnabledBits;
|
uInt8 mySpriteEnabledBits;
|
||||||
uInt8 myCollisionsEnabledBits;
|
uInt8 myCollisionsEnabledBits;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The color used to highlight HMOVE blanks (if enabled).
|
||||||
|
*/
|
||||||
uInt8 myColorHBlank;
|
uInt8 myColorHBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The total number of color clocks since emulation started. This is a
|
||||||
|
* double a) to avoid overflows and b) as it will enter floating point
|
||||||
|
* expressions in the paddle readout simulation anyway.
|
||||||
|
*/
|
||||||
double myTimestamp;
|
double myTimestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The "shadow registers" track the last written register value for the
|
||||||
|
* debugger.
|
||||||
|
*/
|
||||||
uInt8 myShadowRegisters[64];
|
uInt8 myShadowRegisters[64];
|
||||||
|
|
||||||
// Automatic framerate correction based on number of scanlines
|
/**
|
||||||
|
* Automatic framerate correction based on number of scanlines
|
||||||
|
*/
|
||||||
bool myAutoFrameEnabled;
|
bool myAutoFrameEnabled;
|
||||||
|
|
||||||
// Indicates if color loss should be enabled or disabled. Color loss
|
/**
|
||||||
// occurs on PAL-like systems when the previous frame contains an odd
|
* Indicates if color loss should be enabled or disabled. Color loss
|
||||||
// number of scanlines.
|
* occurs on PAL-like systems when the previous frame contains an odd
|
||||||
|
* number of scanlines.
|
||||||
|
*/
|
||||||
bool myColorLossEnabled;
|
bool myColorLossEnabled;
|
||||||
bool myColorLossActive;
|
bool myColorLossActive;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue