Properly handle the MainScreen struct everywhere; update rom

This commit is contained in:
Ry 2022-10-22 18:50:51 -07:00
parent f094b712af
commit 0f02835148
5 changed files with 26 additions and 26 deletions

View File

@ -10,9 +10,9 @@ unsigned char fox32rom[] = {
0x00, 0x00, 0x8c, 0x0e, 0x97, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x0e, 0x97, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00,
0x00, 0x02, 0x97, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x97, 0x00, 0x03, 0x00, 0x02, 0x97, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x97, 0x00, 0x03,
0x00, 0x80, 0x00, 0x02, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x80, 0x00, 0x02, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91,
0x00, 0x02, 0xa8, 0x7b, 0x00, 0x00, 0xf0, 0x02, 0x97, 0x64, 0x47, 0x67, 0x00, 0x02, 0xa8, 0x7b, 0x00, 0x00, 0xf0, 0x02, 0x98, 0x42, 0x08, 0x00,
0xff, 0x00, 0x02, 0x98, 0xcd, 0x04, 0x00, 0xf0, 0x02, 0x89, 0x00, 0x00, 0xf0, 0x02, 0x97, 0x64, 0x47, 0x67, 0xff, 0x00, 0x02, 0x98, 0xcd, 0x04,
0x00, 0x00, 0x02, 0x98, 0x3e, 0x16, 0x00, 0xf0, 0x02, 0x98, 0xba, 0x16, 0x00, 0xf0, 0x02, 0x98, 0x3e, 0x16, 0x00, 0xf0, 0x02, 0x98, 0xba, 0x16,
0x00, 0xf0, 0x02, 0x97, 0x37, 0xf2, 0x06, 0xf0, 0x00, 0x02, 0x97, 0xff, 0x00, 0xf0, 0x02, 0x97, 0x37, 0xf2, 0x06, 0xf0, 0x00, 0x02, 0x97, 0xff,
0xff, 0xff, 0xff, 0x01, 0x02, 0x98, 0x27, 0x17, 0x00, 0xf0, 0x02, 0x97, 0xff, 0xff, 0xff, 0x01, 0x02, 0x98, 0x27, 0x17, 0x00, 0xf0, 0x02, 0x97,
0x84, 0xf1, 0x06, 0xf0, 0x00, 0x02, 0x97, 0x10, 0x00, 0x00, 0x00, 0x01, 0x84, 0xf1, 0x06, 0xf0, 0x00, 0x02, 0x97, 0x10, 0x00, 0x00, 0x00, 0x01,

View File

@ -16,7 +16,7 @@ uint32_t PixelBuffer[FRAMEBUFFER_WIDTH * FRAMEBUFFER_HEIGHT];
extern fox32_vm_t vm; extern fox32_vm_t vm;
void FramebufferDraw(struct Screen screen) { void FramebufferDraw(struct Screen *screen) {
SDL_Texture *texture = ScreenGetTexture(screen); SDL_Texture *texture = ScreenGetTexture(screen);
memcpy(PixelBuffer, &vm.memory_ram[0x02000000], FRAMEBUFFER_WIDTH * FRAMEBUFFER_HEIGHT * 4); memcpy(PixelBuffer, &vm.memory_ram[0x02000000], FRAMEBUFFER_WIDTH * FRAMEBUFFER_HEIGHT * 4);
SDL_UpdateTexture(texture, NULL, PixelBuffer, FRAMEBUFFER_WIDTH * 4); SDL_UpdateTexture(texture, NULL, PixelBuffer, FRAMEBUFFER_WIDTH * 4);

View File

@ -7,4 +7,4 @@
#define VSYNC_INTERRUPT_VECTOR 0xFF #define VSYNC_INTERRUPT_VECTOR 0xFF
void FramebufferDraw(struct Screen screen); void FramebufferDraw(struct Screen *screen);

View File

@ -56,7 +56,7 @@ void ScreenInit() {
} }
void ScreenDraw() { void ScreenDraw() {
MainScreen.Draw(MainScreen); MainScreen.Draw(&MainScreen);
SDL_Rect screenrect = { SDL_Rect screenrect = {
.w = MainScreen.Width, .w = MainScreen.Width,
@ -111,7 +111,7 @@ int ScreenProcessEvents() {
case SDL_MOUSEMOTION: { case SDL_MOUSEMOTION: {
if (ScreenMouseGrabbed) { if (ScreenMouseGrabbed) {
if (MainScreen.MouseMoved) if (MainScreen.MouseMoved)
MainScreen.MouseMoved(MainScreen, event.motion.xrel, event.motion.yrel); MainScreen.MouseMoved(&MainScreen, event.motion.xrel, event.motion.yrel);
} }
break; break;
} }
@ -127,14 +127,14 @@ int ScreenProcessEvents() {
} }
if (MainScreen.MousePressed) if (MainScreen.MousePressed)
MainScreen.MousePressed(MainScreen, event.button.button); MainScreen.MousePressed(&MainScreen, event.button.button);
break; break;
} }
case SDL_MOUSEBUTTONUP: { case SDL_MOUSEBUTTONUP: {
if (MainScreen.MouseReleased) if (MainScreen.MouseReleased)
MainScreen.MouseReleased(MainScreen, event.button.button); MainScreen.MouseReleased(&MainScreen, event.button.button);
break; break;
} }
@ -149,12 +149,12 @@ int ScreenProcessEvents() {
} }
if (MainScreen.KeyPressed) if (MainScreen.KeyPressed)
MainScreen.KeyPressed(MainScreen, event.key.keysym.scancode); MainScreen.KeyPressed(&MainScreen, event.key.keysym.scancode);
break; break;
case SDL_KEYUP: case SDL_KEYUP:
if (MainScreen.KeyReleased) if (MainScreen.KeyReleased)
MainScreen.KeyReleased(MainScreen, event.key.keysym.scancode); MainScreen.KeyReleased(&MainScreen, event.key.keysym.scancode);
break; break;
} }
} }
@ -162,22 +162,22 @@ int ScreenProcessEvents() {
return 0; return 0;
} }
struct SDL_Texture *ScreenGetTexture(struct Screen screen) { struct SDL_Texture *ScreenGetTexture(struct Screen *screen) {
if (screen.Texture) { if (screen->Texture) {
return screen.Texture; return screen->Texture;
} }
screen.Texture = SDL_CreateTexture( screen->Texture = SDL_CreateTexture(
ScreenRenderer, ScreenRenderer,
SDL_PIXELFORMAT_ABGR32, SDL_PIXELFORMAT_ABGR32,
SDL_TEXTUREACCESS_STREAMING, SDL_TEXTUREACCESS_STREAMING,
screen.Width, screen->Width,
screen.Height screen->Height
); );
SDL_SetTextureScaleMode(screen.Texture, SDL_ScaleModeNearest); SDL_SetTextureScaleMode(screen->Texture, SDL_ScaleModeNearest);
return screen.Texture; return screen->Texture;
} }
struct Screen ScreenCreate( struct Screen ScreenCreate(

View File

@ -4,12 +4,12 @@
struct Screen; struct Screen;
typedef void (*ScreenDrawF)(struct Screen screen); typedef void (*ScreenDrawF)(struct Screen *screen);
typedef void (*ScreenKeyPressedF)(struct Screen screen, int sdlscancode); typedef void (*ScreenKeyPressedF)(struct Screen *screen, int sdlscancode);
typedef void (*ScreenKeyReleasedF)(struct Screen screen, int sdlscancode); typedef void (*ScreenKeyReleasedF)(struct Screen *screen, int sdlscancode);
typedef void (*ScreenMousePressedF)(struct Screen screen, int button); typedef void (*ScreenMousePressedF)(struct Screen *screen, int button);
typedef void (*ScreenMouseReleasedF)(struct Screen screen, int button); typedef void (*ScreenMouseReleasedF)(struct Screen *screen, int button);
typedef void (*ScreenMouseMovedF)(struct Screen screen, int dx, int dy); typedef void (*ScreenMouseMovedF)(struct Screen *screen, int dx, int dy);
struct Screen { struct Screen {
int Width; int Width;
@ -33,7 +33,7 @@ void ScreenDraw();
int ScreenProcessEvents(); int ScreenProcessEvents();
struct SDL_Texture *ScreenGetTexture(struct Screen screen); struct SDL_Texture *ScreenGetTexture(struct Screen *screen);
struct Screen ScreenCreate( struct Screen ScreenCreate(
int w, int h, char *title, int w, int h, char *title,