Display tweaks, add vbGetPixels()
This commit is contained in:
@@ -279,6 +279,46 @@ VBAPI vbOnFrame vbGetFrameCallback(VB *sim) {
|
||||
return sim->onFrame;
|
||||
}
|
||||
|
||||
/* Retrieve the most recent frame image pixels */
|
||||
VBAPI void vbGetPixels(VB *sim, void *left, int leftStrideX, int leftStrideY,
|
||||
void *right, int rightStrideX, int rightStrideY) {
|
||||
uint8_t *dest; /* Output data */
|
||||
int offset; /* Horizontal offset of output pixel */
|
||||
uint8_t *src; /* Source data */
|
||||
int xStride; /* Bytes between output pixels */
|
||||
int yStride; /* Bytes between output lines */
|
||||
int i, x, y; /* Iterators */
|
||||
|
||||
/* Process both eyes */
|
||||
for (i = 0; i < 2; i++) {
|
||||
|
||||
/* Working variables for left image */
|
||||
if (i == 0) {
|
||||
dest = left;
|
||||
xStride = leftStrideX;
|
||||
yStride = leftStrideY;
|
||||
}
|
||||
|
||||
/* Working variables for right image */
|
||||
else {
|
||||
dest = right;
|
||||
xStride = rightStrideX;
|
||||
yStride = rightStrideY;
|
||||
}
|
||||
|
||||
/* Nothing to do */
|
||||
if (dest == NULL)
|
||||
continue;
|
||||
|
||||
/* Transfer pixels to the destination */
|
||||
src = sim->vip.frames[sim->vip.dp.buffer][i];
|
||||
for (y = 0; y < 224; y++, dest += yStride)
|
||||
for (x = offset = 0; x < 384; x++, offset += xStride)
|
||||
dest[offset] = *src++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Retrieve the value of the program counter */
|
||||
VBAPI uint32_t vbGetProgramCounter(VB *sim) {
|
||||
return sim->cpu.pc;
|
||||
|
||||
Reference in New Issue
Block a user