mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-23 03:32:32 +00:00
Colour phase is now updated and varies per line.
This commit is contained in:
parent
23ce032ba1
commit
ae2760e034
@ -46,7 +46,8 @@ Machine::Machine() :
|
|||||||
_audioOutputPosition(0),
|
_audioOutputPosition(0),
|
||||||
_current_pixel_line(-1),
|
_current_pixel_line(-1),
|
||||||
_use_fast_tape_hack(false),
|
_use_fast_tape_hack(false),
|
||||||
_crt(nullptr)
|
_crt(nullptr),
|
||||||
|
_phase(0)
|
||||||
{
|
{
|
||||||
memset(_key_states, 0, sizeof(_key_states));
|
memset(_key_states, 0, sizeof(_key_states));
|
||||||
memset(_palette, 0xf, sizeof(_palette));
|
memset(_palette, 0xf, sizeof(_palette));
|
||||||
@ -421,6 +422,8 @@ unsigned int Machine::perform_bus_operation(CPU6502::BusOperation operation, uin
|
|||||||
|
|
||||||
_frameCycles += cycles;
|
_frameCycles += cycles;
|
||||||
|
|
||||||
|
if(!(_frameCycles&127)) _phase += 64;
|
||||||
|
|
||||||
// deal with frame wraparound by updating the two dependent subsystems
|
// deal with frame wraparound by updating the two dependent subsystems
|
||||||
// as though the exact end of frame had been hit, then reset those
|
// as though the exact end of frame had been hit, then reset those
|
||||||
// and allow the frame cycle counter to assume its real value
|
// and allow the frame cycle counter to assume its real value
|
||||||
@ -779,7 +782,7 @@ inline void Machine::update_display()
|
|||||||
if(this_cycle < 24)
|
if(this_cycle < 24)
|
||||||
{
|
{
|
||||||
if(final_cycle < 24) return;
|
if(final_cycle < 24) return;
|
||||||
_crt->output_colour_burst((24-9) * crt_cycles_multiplier, 0, 12);
|
_crt->output_colour_burst((24-9) * crt_cycles_multiplier, _phase, 12);
|
||||||
_displayOutputPosition += 24-9;
|
_displayOutputPosition += 24-9;
|
||||||
this_cycle = 24;
|
this_cycle = 24;
|
||||||
// TODO: phase shouldn't be zero on every line
|
// TODO: phase shouldn't be zero on every line
|
||||||
|
@ -190,9 +190,10 @@ class Machine: public CPU6502::Processor<Machine>, Tape::Delegate {
|
|||||||
uint16_t _screenModeBaseAddress;
|
uint16_t _screenModeBaseAddress;
|
||||||
uint16_t _startScreenAddress;
|
uint16_t _startScreenAddress;
|
||||||
|
|
||||||
// Counters related to simultaneous subsystems;
|
// Counters related to simultaneous subsystems
|
||||||
unsigned int _frameCycles, _displayOutputPosition;
|
unsigned int _frameCycles, _displayOutputPosition;
|
||||||
unsigned int _audioOutputPosition, _audioOutputPositionError;
|
unsigned int _audioOutputPosition, _audioOutputPositionError;
|
||||||
|
uint8_t _phase;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
uint16_t forty1bpp[256];
|
uint16_t forty1bpp[256];
|
||||||
|
Loading…
Reference in New Issue
Block a user