diff --git a/src/dchip8.cpp b/src/dchip8.cpp index e48f16b..2f09e1f 100644 --- a/src/dchip8.cpp +++ b/src/dchip8.cpp @@ -287,7 +287,7 @@ void dchip8_update(PlatformRenderBuffer renderBuffer, PlatformInput input, if (cpu.state == chip8state_load_file) { PlatformFile file = {}; - if (platform_open_file(L"roms/PONG", &file)) + if (platform_open_file(L"roms/brix", &file)) { DQNT_ASSERT((cpu.INIT_ADDRESS + file.size) <= memory.permanentMemSize); @@ -597,13 +597,16 @@ void dchip8_update(PlatformRenderBuffer renderBuffer, PlatformInput input, const i32 BYTES_PER_PIXEL = renderBuffer.bytesPerPixel; i32 pitch = renderBuffer.width * BYTES_PER_PIXEL; + bool collisionFlag = false; for (i32 i = 0; i < readNumBytesFromMem; i++) { u8 spriteBytes = mainMem[cpu.indexRegister + i]; u8 posY = initPosY + (u8)i; - if (posY >= renderBuffer.height) posY = 0; + // NOTE: Flip the Y + posY = ((u8)(renderBuffer.height-1) - posY); + const i32 ALPHA_BYTE_INTERVAL = renderBuffer.bytesPerPixel; const i32 BITS_IN_BYTE = 8; i32 baseBitShift = BITS_IN_BYTE - 1; @@ -629,14 +632,7 @@ void dchip8_update(PlatformRenderBuffer renderBuffer, PlatformInput input, // NOTE: If caused a pixel to XOR into off, then this is // known as a "collision" in chip8 - if (pixelWasOn && !pixelIsOn) - { - cpu.VF = 1; - } - else - { - cpu.VF = 0; - } + if (pixelWasOn && !pixelIsOn) collisionFlag = true; if (pixelIsOn) { @@ -648,6 +644,8 @@ void dchip8_update(PlatformRenderBuffer renderBuffer, PlatformInput input, } } } + + cpu.VF = collisionFlag; } break; diff --git a/src/win32_dchip8.cpp b/src/win32_dchip8.cpp index eb86f8b..61ef03a 100644 --- a/src/win32_dchip8.cpp +++ b/src/win32_dchip8.cpp @@ -43,11 +43,10 @@ FILE_SCOPE void win32_display_render_bitmap(Win32RenderBitmap renderBitmap, { HDC stretchDC = CreateCompatibleDC(deviceContext); SelectObject(stretchDC, renderBitmap.handle); + StretchBlt(deviceContext, 0, 0, width, height, stretchDC, 0, 0, + renderBitmap.width, renderBitmap.height, SRCCOPY); - StretchBlt(deviceContext, 0, 0, width, height, stretchDC, 0, - 0, renderBitmap.width, renderBitmap.height, SRCCOPY); - - // NOTE: Win32 AlphaBlend requires the RGB components to be premultiplied + // NOTE: Win32 AlphaBlend requires the RGB components to be premultiplied // with alpha. #if 0 BLENDFUNCTION blend = {}; @@ -382,7 +381,6 @@ u32 platform_read_file(PlatformFile file, void *buffer, u32 numBytesToRead) return numBytesRead; } -FILE_SCOPE u32 buffer[15000]; bool platform_open_file(const wchar_t *const file, PlatformFile *platformFile) { HANDLE handle = CreateFile(file, GENERIC_READ | GENERIC_WRITE, 0, NULL,