mirror of
https://github.com/TomHarte/CLK.git
synced 2025-08-07 23:25:00 +00:00
Switched to using a diagnostic ROM for now, as it'll definitely boot without initially requiring either a 6522 or AY. Have some forms appearing which imply I'm not doing badly, at least up to not knowing where I'm supposed to get character pixels from.
This commit is contained in:
@@ -13,7 +13,8 @@ using namespace Oric;
|
|||||||
VideoOutput::VideoOutput(uint8_t *memory) :
|
VideoOutput::VideoOutput(uint8_t *memory) :
|
||||||
_ram(memory),
|
_ram(memory),
|
||||||
_frame_counter(0), _counter(0),
|
_frame_counter(0), _counter(0),
|
||||||
_state(Sync), _cycles_in_state(0)
|
_state(Sync), _cycles_in_state(0),
|
||||||
|
_is_graphics_mode(false)
|
||||||
{
|
{
|
||||||
_crt.reset(new Outputs::CRT::CRT(64*6, 6, Outputs::CRT::DisplayType::PAL50, 1));
|
_crt.reset(new Outputs::CRT::CRT(64*6, 6, Outputs::CRT::DisplayType::PAL50, 1));
|
||||||
|
|
||||||
@@ -63,9 +64,20 @@ void VideoOutput::run_for_cycles(int number_of_cycles)
|
|||||||
_cycles_in_state++;
|
_cycles_in_state++;
|
||||||
|
|
||||||
if(new_state == Pixels) {
|
if(new_state == Pixels) {
|
||||||
_pixel_target[0] = 0x70;
|
uint8_t pixels;
|
||||||
_pixel_target[1] = 0x14;
|
if(_is_graphics_mode)
|
||||||
_pixel_target[2] = 0x23;
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int address = 0xbb80 + (_counter >> 9) * 40 + h_counter;
|
||||||
|
uint8_t character = _ram[address];
|
||||||
|
pixels = character;//_ram[character * 8 + ((_counter >> 6) & 7)];
|
||||||
|
}
|
||||||
|
_pixel_target[0] = ((pixels & 0x01) ? 0xf : 0x0) | ((pixels & 0x02) ? 0xf0 : 0x00);
|
||||||
|
_pixel_target[1] = ((pixels & 0x04) ? 0xf : 0x0) | ((pixels & 0x08) ? 0xf0 : 0x00);
|
||||||
|
_pixel_target[2] = ((pixels & 0x10) ? 0xf : 0x0) | ((pixels & 0x20) ? 0xf0 : 0x00);
|
||||||
_pixel_target += 3;
|
_pixel_target += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -35,6 +35,7 @@ class VideoOutput {
|
|||||||
|
|
||||||
// Registers
|
// Registers
|
||||||
uint8_t _ink, _style, _paper;
|
uint8_t _ink, _style, _paper;
|
||||||
|
bool _is_graphics_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
self = [super init];
|
self = [super init];
|
||||||
if(self)
|
if(self)
|
||||||
{
|
{
|
||||||
NSData *rom = [self rom:@"basic10"];
|
NSData *rom = [self rom:@"test108j"];
|
||||||
if(rom) _oric.set_rom(rom.stdVector8);
|
if(rom) _oric.set_rom(rom.stdVector8);
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
|
Reference in New Issue
Block a user