summaryrefslogtreecommitdiff
path: root/app/mac/main.mm
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-01-23 22:02:11 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-01-23 22:02:11 +0100
commitb1d1573702f21e3104606d6ade5f5d39ec86a33a (patch)
treed703be130a5d6f9ff2626313d3380ed34de44dd7 /app/mac/main.mm
parent6512dd599d13035f6a90b2009344e02c488f5aae (diff)
restructure project
Diffstat (limited to 'app/mac/main.mm')
-rw-r--r--app/mac/main.mm60
1 files changed, 60 insertions, 0 deletions
diff --git a/app/mac/main.mm b/app/mac/main.mm
new file mode 100644
index 0000000..5ca7c5c
--- /dev/null
+++ b/app/mac/main.mm
@@ -0,0 +1,60 @@
+#import "scene.hh"
+#import <iostream>
+
+#import <Cocoa/Cocoa.h>
+#import <SpriteKit/SpriteKit.h>
+
+int main(int argc, char** argv)
+{
+ if (argc != 2)
+ {
+ std::cerr << "Usage: " << argv[0] << " <rom-path>" << std::endl;
+ return 1;
+ }
+
+ auto filePath = [NSString stringWithUTF8String:argv[1]];
+
+ auto app = [NSApplication sharedApplication];
+ [app setActivationPolicy:NSApplicationActivationPolicyRegular];
+
+ auto quitItem = [[NSMenuItem alloc] init];
+ [quitItem setTitle:@"Quit NES"];
+ [quitItem setKeyEquivalent:@"q"];
+ [quitItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
+ [quitItem setTarget:app];
+ [quitItem setAction:@selector(terminate:)];
+
+ auto menu = [[NSMenu alloc] init];
+ [menu addItem:quitItem];
+
+ auto item = [[NSMenuItem alloc] init];
+ [item setSubmenu:menu];
+
+ auto mainMenu = [[NSMenu alloc] init];
+ [mainMenu addItem:item];
+ [app setMainMenu:mainMenu];
+
+ auto scene = [[Scene alloc] initWithFilePath:filePath];
+ auto minSize = [scene size];
+
+ auto view = [[SKView alloc] init];
+ [view setIgnoresSiblingOrder:YES];
+ [view setShowsFPS:YES];
+ [view presentScene:scene];
+
+ auto window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0., 0., minSize.width * 2, minSize.height * 2)
+ styleMask:(NSWindowStyleMaskTitled | NSWindowStyleMaskClosable |
+ NSWindowMiniaturizeButton | NSWindowStyleMaskResizable)
+ backing:NSBackingStoreBuffered
+ defer:false];
+ [window setTitle:@"NES"];
+ [window setContentAspectRatio:minSize];
+ [window setContentMinSize:minSize];
+ [window setContentView:view];
+ [window makeKeyAndOrderFront:nil];
+
+ [app activateIgnoringOtherApps:YES];
+ [app run];
+
+ return 0;
+} \ No newline at end of file