Display tweaks, add vbGetPixels()

This commit is contained in:
2024-10-16 16:53:33 -05:00
parent 448658430c
commit eecc55bbd7
3 changed files with 76 additions and 8 deletions
+40
View File
@@ -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;