summaryrefslogtreecommitdiff
path: root/src/video
diff options
context:
space:
mode:
authoralekseiplusplus <alekseijeaves@protonmail.com>2023-08-03 11:50:22 +1000
committeralekseiplusplus <alekseijeaves@protonmail.com>2023-08-03 11:50:22 +1000
commitb8599585fad704b2ec3bdde69dca4dd9c2a6f8fd (patch)
tree275eda06de77d9e6d8d831a31179ad8cec33ad4d /src/video
parent9a6188f821b11b69fff3d3a303dbfcce2e52e6f4 (diff)
New direction for video
Diffstat (limited to 'src/video')
-rw-r--r--src/video/interface.h6
-rw-r--r--src/video/ncurses.c5
-rw-r--r--src/video/sdl.c60
3 files changed, 71 insertions, 0 deletions
diff --git a/src/video/interface.h b/src/video/interface.h
new file mode 100644
index 0000000..9c77de2
--- /dev/null
+++ b/src/video/interface.h
@@ -0,0 +1,6 @@
+// interface.h
+// Provides the interface with which all video interactions must occur.
+
+void VideoInit();
+
+void VideoClose(); \ No newline at end of file
diff --git a/src/video/ncurses.c b/src/video/ncurses.c
new file mode 100644
index 0000000..a9221e1
--- /dev/null
+++ b/src/video/ncurses.c
@@ -0,0 +1,5 @@
+// ncurses.c
+// Implements interface.h
+// Provides an in-terminal interface to the emulator.
+
+#include"interface.h" \ No newline at end of file
diff --git a/src/video/sdl.c b/src/video/sdl.c
new file mode 100644
index 0000000..811b0d3
--- /dev/null
+++ b/src/video/sdl.c
@@ -0,0 +1,60 @@
+// sdl.c
+// Implements interface.h
+// Emulates the graphics of the Apple I computer with SDL.
+
+#include"interface.h"
+#include<SDL2/SDL.h>
+
+#define SCALE 2
+
+#define CHR_WIDTH 5
+#define CHR_HEIGHT 8
+
+#define WIDTH_SPACE 1 * SCALE
+
+#define MIN_WIDTH (40 * CHR_WIDTH) + 39*WIDTH_SPACE
+#define MIN_HEIGHT (24 * CHR_HEIGHT)
+
+int VideoInit(){
+ // INITIALIZATION
+ SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO);
+ SDL_Window* window = SDL_CreateWindow(
+ "Apple C",
+ SDL_WINDOWPOS_CENTERED,
+ SDL_WINDOWPOS_CENTERED,
+ MIN_WIDTH * SCALE,
+ MIN_HEIGHT * SCALE,
+ SDL_WINDOW_SHOWN
+ );
+
+ SDL_Renderer* render = SDL_CreateRenderer(window, -1, 0);
+ SDL_Surface* font_surface = SDL_LoadBMP("font.bmp");
+ SDL_Texture* font_texture = SDL_CreateTextureFromSurface(render, font_surface);
+ SDL_FreeSurface(font_surface);
+
+ SDL_Rect character = {
+ .x = 0,
+ .y = 0,
+ .w = CHR_WIDTH,
+ .h = CHR_HEIGHT
+ };
+
+ SDL_Rect draw_character = {
+ .x = 0,
+ .y = 0,
+ .w = CHR_WIDTH * SCALE,
+ .h = CHR_HEIGHT * SCALE
+ };
+
+ SDL_SetRenderDrawColor (render, 0, 0, 0, 255);
+ SDL_RenderClear (render);
+ SDL_RenderCopy (render, font_texture, &character, &draw_character);
+ SDL_RenderPresent (render);
+
+}
+
+void VideoClose() {
+
+
+ SDL_Quit();
+} \ No newline at end of file