diff options
Diffstat (limited to 'src/DSi_I2C.cpp')
-rw-r--r-- | src/DSi_I2C.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/DSi_I2C.cpp b/src/DSi_I2C.cpp index d58a38c..76664e5 100644 --- a/src/DSi_I2C.cpp +++ b/src/DSi_I2C.cpp @@ -50,7 +50,7 @@ void Reset() Registers[0x10] = 0x00; // power btn Registers[0x11] = 0x00; // reset Registers[0x12] = 0x00; // power btn tap - Registers[0x20] = 0x83; // battery + Registers[0x20] = 0x8F; // battery Registers[0x21] = 0x07; Registers[0x30] = 0x13; Registers[0x31] = 0x00; // camera power @@ -187,8 +187,10 @@ void WriteCnt(u8 val) switch (Device) { case 0x4A: Data = DSi_BPTWL::Read(islast); break; - case 0x78: Data = DSi_Camera0->Read(islast); break; - case 0x7A: Data = DSi_Camera1->Read(islast); break; + case 0x78: Data = DSi_Camera0->I2C_Read(islast); break; + case 0x7A: Data = DSi_Camera1->I2C_Read(islast); break; + case 0xA0: + case 0xE0: Data = 0xFF; break; default: printf("I2C: read on unknown device %02X, cnt=%02X, data=%02X, last=%d\n", Device, val, 0, islast); Data = 0xFF; @@ -211,8 +213,10 @@ void WriteCnt(u8 val) switch (Device) { case 0x4A: DSi_BPTWL::Start(); break; - case 0x78: DSi_Camera0->Start(); break; - case 0x7A: DSi_Camera1->Start(); break; + case 0x78: DSi_Camera0->I2C_Start(); break; + case 0x7A: DSi_Camera1->I2C_Start(); break; + case 0xA0: + case 0xE0: ack = false; break; default: printf("I2C: %s start on unknown device %02X\n", (Data&0x01)?"read":"write", Device); ack = false; @@ -226,8 +230,10 @@ void WriteCnt(u8 val) switch (Device) { case 0x4A: DSi_BPTWL::Write(Data, islast); break; - case 0x78: DSi_Camera0->Write(Data, islast); break; - case 0x7A: DSi_Camera1->Write(Data, islast); break; + case 0x78: DSi_Camera0->I2C_Write(Data, islast); break; + case 0x7A: DSi_Camera1->I2C_Write(Data, islast); break; + case 0xA0: + case 0xE0: ack = false; break; default: printf("I2C: write on unknown device %02X, cnt=%02X, data=%02X, last=%d\n", Device, val, Data, islast); ack = false; |