mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-25 23:29:55 -06:00
camera: fix some misc issues
This commit is contained in:
@ -144,6 +144,12 @@ void DSi_CamModule::IRQ(u32 param)
|
|||||||
|
|
||||||
void DSi_CamModule::TransferScanline(u32 line)
|
void DSi_CamModule::TransferScanline(u32 line)
|
||||||
{
|
{
|
||||||
|
if (Cnt & (1<<4))
|
||||||
|
{
|
||||||
|
Transferring = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (line == 0)
|
if (line == 0)
|
||||||
{
|
{
|
||||||
if (!(Cnt & (1<<15)))
|
if (!(Cnt & (1<<15)))
|
||||||
@ -153,9 +159,6 @@ void DSi_CamModule::TransferScanline(u32 line)
|
|||||||
Transferring = true;
|
Transferring = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Cnt & (1<<4))
|
|
||||||
return;
|
|
||||||
|
|
||||||
sPixelBuffer* buffer = &PixelBuffer[CurPixelBuffer];
|
sPixelBuffer* buffer = &PixelBuffer[CurPixelBuffer];
|
||||||
u32* dstbuf = &buffer->Data[buffer->WritePos];
|
u32* dstbuf = &buffer->Data[buffer->WritePos];
|
||||||
int maxlen = 512 - buffer->WritePos;
|
int maxlen = 512 - buffer->WritePos;
|
||||||
@ -324,12 +327,13 @@ u32 DSi_CamModule::Read32(u32 addr)
|
|||||||
case 0x04004204:
|
case 0x04004204:
|
||||||
{
|
{
|
||||||
sPixelBuffer* buffer = &PixelBuffer[CurPixelBuffer ^ 1];
|
sPixelBuffer* buffer = &PixelBuffer[CurPixelBuffer ^ 1];
|
||||||
u32 ret = buffer->Data[buffer->ReadPos];
|
u32 ret;
|
||||||
if (Cnt & (1<<15))
|
if (buffer->ReadPos < buffer->WritePos)
|
||||||
{
|
ret = buffer->Data[buffer->ReadPos++];
|
||||||
if (buffer->ReadPos < buffer->WritePos)
|
else if (buffer->ReadPos > 0)
|
||||||
buffer->ReadPos++;
|
ret = buffer->Data[buffer->ReadPos - 1];
|
||||||
}
|
else
|
||||||
|
ret = buffer->Data[0];
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -421,7 +425,7 @@ void DSi_CamModule::Write16(u32 addr, u16 val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DSi_CamModule::Write32(u32 addr, u32 val)
|
void DSi_CamModule::Write32(u32 addr, u32 val)
|
||||||
{
|
{printf("cam write32 %08X %08X\n", addr, val);
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
case 0x04004210:
|
case 0x04004210:
|
||||||
|
Reference in New Issue
Block a user