void Emulator::readLCDIntoBuffer(uint8_t **lines, bool is32BitOutput) {
if (!lcdController->isLCDEnabled()) {
+ for (int i = 0; i < 480; i++) {
+ uint8_t* line = reinterpret_cast<uint8_t*>(lines[i]);
+ memset(line, 0x0AAA, 2*640);
+ }
return;
}
std::vector<uint8_t> pixels;
for (int i = 0; i < 640*240; i += 4) {
- LOAD_32LE(test, (framebufferTopHalfBase + (4*i)) & memoryMask, MemoryBlockC0);
+ LOAD_32LE(test, (framebufferTopHalfBase + (i)) & memoryMask, MemoryBlockC0);
for (int j = 0; j < 4; j++) {
- pixels.emplace_back(getByteIdx(test, 3-j));
+ pixels.emplace_back(getByteIdx(test, j));
}
}
for (int i = 0; i < 640*240; i += 4) {
- LOAD_32LE(test, (framebufferBottomHalfBase + (4*i)) & memoryMask, MemoryBlockC0);
+ LOAD_32LE(test, (framebufferBottomHalfBase + (i)) & memoryMask, MemoryBlockC0);
for (int j = 0; j < 4; j++) {
- pixels.emplace_back(getByteIdx(test, 3-j));
+ pixels.emplace_back(getByteIdx(test, j));
}
}
// }
// printf("\n");
- printf("Pixel count %d\n", pixels.size());
+ // printf("Pixel count %d\n", pixels.size());
- printf("PBS: %x\n", (palette[0] >> 12) & 0x3);
+ // printf("PBS: %x\n", (palette[0] >> 12) & 0x3);
- uint8_t* framebufferTopHalf = &MemoryBlockC0[framebufferTopHalfBase];
- uint8_t* framebufferBottomHalf = &MemoryBlockC0[framebufferBottomHalfBase];
+ // uint8_t* framebufferTopHalf = &MemoryBlockC0[512];
+ // uint8_t* framebufferBottomHalf = &MemoryBlockC0[512 + (640*240)];
- printf("Display Size %dx%d\n", lcdController->getWidth(), lcdController->getHeight());
+ //printf("Display Size %dx%d\n", lcdController->getWidth(), lcdController->getHeight());
for (int i = 0; i < 480; i++) {
- uint8_t* line = reinterpret_cast<uint8_t*>(lines[i]);
+ uint16_t* line = reinterpret_cast<uint16_t*>(lines[i]);
+ memset(line, 0, 2*640);
for (int j = 0; j < 640; j++) {
- //line[j] = palette[pixels[(480*i)+j]];
- uint8_t pixel = pixels[(480*i)+j];
+ line[j] = palette[pixels[(480*i)+j] & 0x0FFF];
+ //uint8_t pixel = pixels[(480*i)+j];
// if (pixel != 0) {
// printf("Pixel data is %02x\n", pixel);
// }
- line[j] = pixel;
+ //line[j] = pixel;
//printf("Pixel %08x\n", line[j]);
}
}