No, it's not the first line of a very bad joke.
I have finally made my TV card mostly working again, BUT I can't see anything.... it's just not writing to memory.
It
thinks it's writing to memory, but it's not. This is what I'm doing (from memory, there will be inaccuracies):
for ( tLine=0 ; tLine < height ; tLine++ )
mFrameBufferLine[ tLine ] = IExec->AllocMem( tWidth * 4, MEMF_PUBLIC | MEMF_HWALIGN );
for ( tLine = 0 ; tLine < height ; tLine++ )
{
IExec->StartDMA ( mFrameBufferLine[ tLine ], tWidth * 4 );
GetDMAList( blah blah)
}
This all succeeds, no problemo. DMA 'starts' up ok on each line otherwise it yells loudly.
Then I program the Connexant chip:
DWORD *tPointer = programBase;
*tPointer++ = SwitchEndian( OPCODE_WRITE | 0x0300 ); // This writes 0x300 bytes....
*tPointer++ = SwitchEndian( mFrameBufferLine[ currentLine ] ); // To this address.
That's more or less it, anyway.
This used to work.
It doesn't now!
I can check the Cx2388x chip's RISC Program Counter, and it's going properly.
I can even check where it thinks it's DMAing to, and it's the correct value (about 0x6d69e000 or something). It's always in one of the mFrameBufferLine regions.
However, my data is never being changed. It's DMAing to it, but the target address never changes from 0xDEDEDEDE (my default value).
Remember I'm using the latest update, but the latest SDK also, which of course is 50.22 so doesn't have any AllocVecTags() or anything.
Any help much appreciated, it's very frustrating when you can
see things working but there's no
evidence of it!
Thanks!