1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-22 14:30:29 +00:00

Attempted a square wave, made the Vic itself responsible for address manipulation re:the 6560.

This commit is contained in:
Thomas Harte 2016-06-09 22:05:17 -04:00
parent e99055bedb
commit 30b7db3979
2 changed files with 3 additions and 3 deletions

View File

@ -57,7 +57,7 @@ MOS6560::MOS6560() :
"float phaseOffset = 6.283185308 * float(iPhase + 8u) / 8.0;" // TODO: appropriate phaseOffset
// sin(phase + phaseOffset)
"return mix(step(1, c) * y, step(2, c) * step(3.141592654, mod(phase + phaseOffset, 6.283185308)) * 2.0, amplitude);" // TODO: square wave (step(3.141592654, mod(phase + phaseOffset, 6.283185308))?)
"return mix(step(1, c) * y, step(2, c) * step(3.141592654, mod(phase + phaseOffset, 6.283185308)) * 2.0 - 1.0, amplitude);" // TODO: square wave (step(3.141592654, mod(phase + phaseOffset, 6.283185308))?)
"}");
}
@ -226,8 +226,7 @@ uint16_t MOS6560::get_address()
*/
if(_column_counter&1)
{
// TODO: don't add 0x8000. That's a hack.
return 0x8000 + (_character_cell_start_address + (_character_code*8) + (_row_counter&7));
return _character_cell_start_address + (_character_code*8) + (_row_counter&7);
}
else
{

View File

@ -25,6 +25,7 @@ unsigned int Machine::perform_bus_operation(CPU6502::BusOperation operation, uin
// run the phase-1 part of this cycle, in which the VIC accesses memory
uint16_t video_address = _mos6560->get_address();
if(!(video_address&0x1000)) video_address += 0x8000;
_mos6560->set_graphics_value(read_memory(video_address), _colorMemory[video_address & 0x03ff]);
// run the phase-2 part of the cycle, which is whatever the 6502 said it should be