diff options
Diffstat (limited to 'src/DSi_Camera.h')
-rw-r--r-- | src/DSi_Camera.h | 70 |
1 files changed, 41 insertions, 29 deletions
diff --git a/src/DSi_Camera.h b/src/DSi_Camera.h index e5926bb..75e97f2 100644 --- a/src/DSi_Camera.h +++ b/src/DSi_Camera.h @@ -22,38 +22,53 @@ #include "types.h" #include "Savestate.h" -class DSi_Camera +namespace DSi_CamModule { -public: - static bool Init(); - static void DeInit(); - static void Reset(); - static void DoSavestate(Savestate* file); +class Camera; + +extern Camera* Camera0; +extern Camera* Camera1; + +bool Init(); +void DeInit(); +void Reset(); - static void IRQ(u32 param); - static void RequestFrame(u32 cam); +void DoSavestate(Savestate* file); - static void Transfer(u32 pos); +void IRQ(u32 param); - DSi_Camera(u32 num); - ~DSi_Camera(); +void TransferScanline(u32 line); - void DoCamSavestate(Savestate* file); +u8 Read8(u32 addr); +u16 Read16(u32 addr); +u32 Read32(u32 addr); +void Write8(u32 addr, u8 val); +void Write16(u32 addr, u16 val); +void Write32(u32 addr, u32 val); + +class Camera +{ +public: + Camera(u32 num); + ~Camera(); - void ResetCam(); + void DoSavestate(Savestate* file); + + void Reset(); bool IsActivated(); + void StartTransfer(); + bool TransferDone(); + + // lengths in words + int TransferScanline(u32* buffer, int maxlen); + void I2C_Start(); u8 I2C_Read(bool last); void I2C_Write(u8 val, bool last); - static u8 Read8(u32 addr); - static u16 Read16(u32 addr); - static u32 Read32(u32 addr); - static void Write8(u32 addr, u8 val); - static void Write16(u32 addr, u16 val); - static void Write32(u32 addr, u32 val); + void InputFrame(u32* data, int width, int height, bool rgb); u32 Num; @@ -73,20 +88,17 @@ private: u16 MiscCnt; u16 MCUAddr; - u16* MCUData; - u8 MCURegs[0x8000]; - static u16 ModuleCnt; - static u16 Cnt; + u8 MCU_Read(u16 addr); + void MCU_Write(u16 addr, u8 val); - static u8 FrameBuffer[640*480*4]; - static u32 TransferPos; - static u32 FrameLength; + u16 FrameWidth, FrameHeight; + u16 FrameReadMode, FrameFormat; + int TransferY; + u32 FrameBuffer[640*480/2]; // YUYV framebuffer, two pixels per word }; - -extern DSi_Camera* DSi_Camera0; -extern DSi_Camera* DSi_Camera1; +} #endif // DSI_CAMERA_H |