Contribute
Register

I have decided to hack eMac's CRT (To work with any standard motherboard)

Status
Not open for further replies.
Here i found the printed paper with the data:
eMac edid.JPG
 
I'll try and program that into an arduino.
I'll let you know how it goes.
 
I manually typed all of the hex numbers in the image into a hex editor and saved it to a file called 1280x960.bin
I then used edid-decode and it passed the test.
here's an image

I think this can be easily coded into an arduino sketch.

edidTest.png
 
I manually typed all of the hex numbers in the image into a hex editor and saved it to a file called 1280x960.bin
I then used edid-decode and it passed the test.
here's an image

I think this can be easily coded into an arduino sketch.

View attachment 230070

I was thinking that if the arduino could be present on the i2c rail betwen the host pc and eMac CRT it will be terrific that it can provide the desired protocol to the CRT (7 seconds after powering up seems to be a good idea) and stay put, present as address 50 with the edid protocol to answer on the PC request.

------eMac CRT
l
l
l---- Arduino sends proper protocol to eMac CRT and stay put on adress 50 with EDID info to answer any one who request it.
l
l
l
-----Vga PC (Will look for address 50 on i2c rail and read edid).
 
I actually started coding it last night but I still need to test it. I have a day off today so I might work on it some more later on.







#include <Wire.h>

const int i2c_port = 0x50;
byte edid[] =
{ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x06, 0x10, 0x07, 0x9d, 0x01, 0x01, 0x01, 0x01,
0x00, 0x1a, 0x01, 0x03, 0x68, 0x21, 0x18, 0x6f, 0x08, 0xf6, 0x29, 0xa2, 0x53, 0x47, 0x99, 0x25,
0x10, 0x48, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc0, 0x2f, 0x00, 0xa0, 0x51, 0xc0, 0x2a, 0x30, 0x30, 0x60,
0x13, 0x00, 0x40, 0xf0, 0x10, 0x00, 0x00, 0x1e, 0xbf, 0x26, 0x00, 0x60, 0x41, 0x00, 0x2a, 0x30,
0x30, 0x60, 0x13, 0x00, 0x40, 0xf0, 0x10, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x46,
0x8c, 0x47, 0x49, 0x0d, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc,
0x00, 0x65, 0x4d, 0x61, 0x63, 0x20, 0x43, 0x52, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x2e
};







void setup() {
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);

Serial.begin(9600);
Serial.write("initiating\n");
Wire.begin(i2c_port); // join i2c bus (address optional for master)
Wire.onRequest(requestEvent);

}


void loop() {

delay(100);






}


void writeToIvad(int address, int message) {
Wire.beginTransmission(address);
Wire.write(message);
Wire.endTransmission();

}//end method



void readFromIvad(int address, int bytes) {
char buf[bytes + 1];
int bytesRead = 0;
Wire.requestFrom(address, bytes);
while (Wire.available())
{
char c = Wire.read();
buf[bytesRead++] = c;
}
buf[bytesRead] = '\0';
//return buf;


}//end method






void sendEdid() {

for (int i = 0 ; i < 128 ; i++) {

Wire.write(edid);



//readFromIvad(i2c_port,1);

}//end for

}//end

// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent() {

Serial.write("request received\n");
sendEdid();

}
 
I actually started coding it last night but I still need to test it. I have a day off today so I might work on it some more later on.







#include <Wire.h>

const int i2c_port = 0x50;
byte edid[] =
{ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x06, 0x10, 0x07, 0x9d, 0x01, 0x01, 0x01, 0x01,
0x00, 0x1a, 0x01, 0x03, 0x68, 0x21, 0x18, 0x6f, 0x08, 0xf6, 0x29, 0xa2, 0x53, 0x47, 0x99, 0x25,
0x10, 0x48, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc0, 0x2f, 0x00, 0xa0, 0x51, 0xc0, 0x2a, 0x30, 0x30, 0x60,
0x13, 0x00, 0x40, 0xf0, 0x10, 0x00, 0x00, 0x1e, 0xbf, 0x26, 0x00, 0x60, 0x41, 0x00, 0x2a, 0x30,
0x30, 0x60, 0x13, 0x00, 0x40, 0xf0, 0x10, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x46,
0x8c, 0x47, 0x49, 0x0d, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc,
0x00, 0x65, 0x4d, 0x61, 0x63, 0x20, 0x43, 0x52, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x2e
};







void setup() {
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);

Serial.begin(9600);
Serial.write("initiating\n");
Wire.begin(i2c_port); // join i2c bus (address optional for master)
Wire.onRequest(requestEvent);

}


void loop() {

delay(100);






}


void writeToIvad(int address, int message) {
Wire.beginTransmission(address);
Wire.write(message);
Wire.endTransmission();

}//end method



void readFromIvad(int address, int bytes) {
char buf[bytes + 1];
int bytesRead = 0;
Wire.requestFrom(address, bytes);
while (Wire.available())
{
char c = Wire.read();
buf[bytesRead++] = c;
}
buf[bytesRead] = '\0';
//return buf;


}//end method






void sendEdid() {

for (int i = 0 ; i < 128 ; i++) {

Wire.write(edid);



//readFromIvad(i2c_port,1);

}//end for

}//end

// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent() {

Serial.write("request received\n");
sendEdid();

}

You are a genius (And so am i).
Like the movie said: "If you build it, they will come"
 
only if it works!

thanks!
 
I think this is a good starting point. well have to iron out the details
 
you are the genius that started this!
 
Status
Not open for further replies.
Back
Top