aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index 725ad65..5ccf6c1 100644
--- a/main.cpp
+++ b/main.cpp
@@ -17,7 +17,59 @@
*/
#include <stdio.h>
+#include <windows.h>
#include "NDS.h"
+#include "GPU2D.h"
+
+
+HINSTANCE instance;
+HWND melon;
+BITMAPV4HEADER bmp;
+bool quit;
+
+
+LRESULT CALLBACK derpo(HWND window, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ switch (msg)
+ {
+ case WM_CLOSE:
+ printf("close\n");
+ PostQuitMessage(0);
+ return 0;
+
+ case WM_KEYDOWN:
+ switch (wparam)
+ {
+ case VK_RETURN: NDS::PressKey(3); break;
+ case VK_SPACE: NDS::PressKey(2); break;
+ case VK_UP: NDS::PressKey(6); break;
+ case VK_DOWN: NDS::PressKey(7); break;
+ case VK_LEFT: NDS::PressKey(5); break;
+ case VK_RIGHT: NDS::PressKey(4); break;
+ }
+ return 0;
+
+ case WM_KEYUP:
+ switch (wparam)
+ {
+ case VK_RETURN: NDS::ReleaseKey(3); break;
+ case VK_SPACE: NDS::ReleaseKey(2); break;
+ case VK_UP: NDS::ReleaseKey(6); break;
+ case VK_DOWN: NDS::ReleaseKey(7); break;
+ case VK_LEFT: NDS::ReleaseKey(5); break;
+ case VK_RIGHT: NDS::ReleaseKey(4); break;
+ }
+ return 0;
+
+ /*case WM_PAINT:
+ {
+
+ }
+ return 0;*/
+ }
+
+ return DefWindowProc(window, msg, wparam, lparam);
+}
int main()
@@ -25,12 +77,78 @@ int main()
printf("melonDS version uh... 0.1??\n");
printf("it's a DS emulator!!!\n");
printf("http://melonds.kuribo64.net/\n");
+ quit = false;
+
+ instance = GetModuleHandle(NULL);
+
+ // god this shit sucks
+ WNDCLASSEX shit;
+ shit.cbSize = sizeof(shit);
+ shit.style = CS_HREDRAW | CS_VREDRAW;
+ shit.lpfnWndProc = derpo;
+ shit.cbClsExtra = 0;
+ shit.cbWndExtra = 0;
+ shit.hInstance = instance;
+ shit.hIcon = NULL;
+ shit.hIconSm = NULL;
+ shit.hCursor = NULL;
+ shit.hbrBackground = (HBRUSH)(COLOR_WINDOWFRAME+1);
+ shit.lpszMenuName = NULL;
+ shit.lpszClassName = "v0ltmeters";
+ RegisterClassEx(&shit);
+
+ RECT rekt;
+ rekt.left = 0; rekt.top = 0;
+ rekt.right = 256; rekt.bottom = 384;
+ AdjustWindowRect(&rekt, WS_OVERLAPPEDWINDOW, FALSE);
+
+ melon = CreateWindow("v0ltmeters",
+ "melonDS",
+ WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ rekt.right-rekt.left, rekt.bottom-rekt.top,
+ NULL,
+ NULL,
+ instance,
+ NULL);
+
+ ShowWindow(melon, SW_SHOW);
+
+ // more sucky shit!
+ memset(&bmp, 0, sizeof(bmp));
+ bmp.bV4Size = sizeof(bmp);
+ bmp.bV4Width = 256;
+ bmp.bV4Height = -384;
+ bmp.bV4Planes = 1;
+ bmp.bV4BitCount = 16;
+ bmp.bV4V4Compression = BI_RGB|BI_BITFIELDS;
+ bmp.bV4RedMask = 0x001F;
+ bmp.bV4GreenMask = 0x03E0;
+ bmp.bV4BlueMask = 0x7C00;
NDS::Init();
for (;;)
{
+ MSG msg;
+ while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+ {
+ if (msg.message == WM_QUIT)
+ {
+ quit = true;
+ break;
+ }
+
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ if (quit) break;
+
NDS::RunFrame();
+
+ HDC dc = GetDC(melon);
+ SetDIBitsToDevice(dc, 0, 0, 256, 384, 0, 0, 0, 384, GPU2D::Framebuffer, (BITMAPINFO*)&bmp, DIB_RGB_COLORS);
+ UpdateWindow(melon);
}
return 0;