diff options
author | alekseiplusplus <alekseijeaves@protonmail.com> | 2023-08-03 11:50:22 +1000 |
---|---|---|
committer | alekseiplusplus <alekseijeaves@protonmail.com> | 2023-08-03 11:50:22 +1000 |
commit | b8599585fad704b2ec3bdde69dca4dd9c2a6f8fd (patch) | |
tree | 275eda06de77d9e6d8d831a31179ad8cec33ad4d /src/video | |
parent | 9a6188f821b11b69fff3d3a303dbfcce2e52e6f4 (diff) |
New direction for video
Diffstat (limited to 'src/video')
-rw-r--r-- | src/video/interface.h | 6 | ||||
-rw-r--r-- | src/video/ncurses.c | 5 | ||||
-rw-r--r-- | src/video/sdl.c | 60 |
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 |