mirror of
https://github.com/TomHarte/CLK.git
synced 2024-07-05 10:28:58 +00:00
Made an attempt to get RGB output mode up and running, and showing at least a box where pixels would be.
This commit is contained in:
parent
a900bfed65
commit
b4f31edea3
@ -244,3 +244,12 @@ inline void Machine::update_display()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *Machine::get_signal_decoder()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
"vec4 sample(vec2 coordinate)\n"
|
||||||
|
"{\n"
|
||||||
|
"return vec4(1.0, 1.0, 0.0, 1.0);\n"
|
||||||
|
"}";
|
||||||
|
}
|
||||||
|
@ -49,6 +49,7 @@ class Machine: public CPU6502::Processor<Machine> {
|
|||||||
void set_rom(ROMSlot slot, size_t length, const uint8_t *data);
|
void set_rom(ROMSlot slot, size_t length, const uint8_t *data);
|
||||||
|
|
||||||
Outputs::CRT *get_crt() { return _crt; }
|
Outputs::CRT *get_crt() { return _crt; }
|
||||||
|
const char *get_signal_decoder();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint8_t _os[16384], _basic[16384], _ram[32768];
|
uint8_t _os[16384], _basic[16384], _ram[32768];
|
||||||
|
@ -261,6 +261,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
|
|||||||
|
|
||||||
- (void)setSignalDecoder:(nonnull NSString *)signalDecoder type:(CSCathodeRayViewSignalType)type
|
- (void)setSignalDecoder:(nonnull NSString *)signalDecoder type:(CSCathodeRayViewSignalType)type
|
||||||
{
|
{
|
||||||
|
_signalType = type;
|
||||||
_signalDecoder = [signalDecoder copy];
|
_signalDecoder = [signalDecoder copy];
|
||||||
OSAtomicIncrement32(&_signalDecoderGeneration);
|
OSAtomicIncrement32(&_signalDecoderGeneration);
|
||||||
}
|
}
|
||||||
@ -343,6 +344,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
|
|||||||
"uniform float alpha;\n"
|
"uniform float alpha;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"%@\n"
|
"%@\n"
|
||||||
|
"%%@\n"
|
||||||
"\n"
|
"\n"
|
||||||
"void main(void)\n"
|
"void main(void)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
@ -354,9 +356,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
|
|||||||
"in float phase;\n"
|
"in float phase;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"// for conversion from i and q are in the range [-0.5, 0.5] (so i needs to be multiplied by 1.1914 and q by 1.0452)\n"
|
"// for conversion from i and q are in the range [-0.5, 0.5] (so i needs to be multiplied by 1.1914 and q by 1.0452)\n"
|
||||||
"const mat3 yiqToRGB = mat3(1.0, 1.0, 1.0, 1.1389784, -0.3240608, -1.3176884, 0.6490692, -0.6762444, 1.7799756);\n"
|
"const mat3 yiqToRGB = mat3(1.0, 1.0, 1.0, 1.1389784, -0.3240608, -1.3176884, 0.6490692, -0.6762444, 1.7799756);\n";
|
||||||
"\n"
|
|
||||||
"\%@\n";
|
|
||||||
|
|
||||||
NSString *const ntscFragmentShaderBody =
|
NSString *const ntscFragmentShaderBody =
|
||||||
@"vec4 angles = vec4(phase) + vec4(-2.35619449019234, -0.78539816339745, 0.78539816339745, 2.35619449019234);\n"
|
@"vec4 angles = vec4(phase) + vec4(-2.35619449019234, -0.78539816339745, 0.78539816339745, 2.35619449019234);\n"
|
||||||
@ -379,7 +379,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
|
|||||||
@"";
|
@"";
|
||||||
|
|
||||||
NSString *const rgbFragmentShaderBody =
|
NSString *const rgbFragmentShaderBody =
|
||||||
@"fragColour = texture(srcCoordinatesVarying, srcCoordinatesVarying);//sin(lateralVarying));\n";
|
@"fragColour = texture(shadowMaskTexID, shadowMaskCoordinates) * sample(srcCoordinatesVarying);//sin(lateralVarying));\n";
|
||||||
|
|
||||||
switch(_signalType)
|
switch(_signalType)
|
||||||
{
|
{
|
||||||
|
@ -31,4 +31,9 @@
|
|||||||
_electron.get_crt()->set_delegate(delegate);
|
_electron.get_crt()->set_delegate(delegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)setView:(CSCathodeRayView *)view {
|
||||||
|
[super setView:view];
|
||||||
|
[view setSignalDecoder:[NSString stringWithUTF8String:_electron.get_signal_decoder()] type:CSCathodeRayViewSignalTypeRGB];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
Loading…
Reference in New Issue
Block a user