From dda0cf5006f79ebea9e9b7fef0b06af5507bb3be Mon Sep 17 00:00:00 2001 From: condret Date: Mon, 21 Oct 2024 00:45:40 +0200 Subject: [PATCH] Fix build --- Makefile | 11 ++++++++++- include/gb.h | 1 + io/joypad.c | 13 +++++++------ io/mbc1.c | 4 ++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 5327382..a05d28a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ LDFLAGS = $(shell pkg-config --libs sdl2 r_util r_io) CFLAGS = -Wall -I include/ $(shell pkg-config --cflags sdl2 r_util r_io) -all: sdl/pixbuf.o io/timers.o +all: sdl/pixbuf.o io/timers.o io/mbc1.o io/mbc2.o io/joypad.o sdl/pixbuf.o: gcc -c sdl/pixbuf.c -o sdl/pixbuf.o $(CFLAGS) @@ -9,5 +9,14 @@ sdl/pixbuf.o: io/timers.o: gcc -c io/timers.c -o io/timers.o $(CFLAGS) +io/mbc1.o: + gcc -c io/mbc1.c -o io/mbc1.o $(CFLAGS) + +io/mbc2.o: + gcc -c io/mbc2.c -o io/mbc2.o $(CFLAGS) + +io/joypad.o: + gcc -c io/joypad.c -o io/joypad.o $(CFLAGS) + clean: rm sdl/*.o && rm io/*.o diff --git a/include/gb.h b/include/gb.h index 0e63cc4..d836b9d 100644 --- a/include/gb.h +++ b/include/gb.h @@ -48,5 +48,6 @@ void gb_joypad_close(RIO *io, GBJoypad *joypad); extern RIOPlugin r_io_plugin_gb_timers; extern RIOPlugin r_io_plugin_gb_mbc1; extern RIOPlugin r_io_plugin_gb_mbc2; +extern RIOPlugin r_io_plugin_gb_joypad; #endif diff --git a/io/joypad.c b/io/joypad.c index 477df13..24e2b27 100644 --- a/io/joypad.c +++ b/io/joypad.c @@ -15,12 +15,12 @@ static RIODesc *__open(RIO *io, const char *pathname, int rw, int mode) { GBJoypad *joypad = NULL; sscanf (pathname, "gb_joybad://%p", &joypad); RIODesc *desc = r_io_desc_new (io, &r_io_plugin_gb_joypad, pathname, - R_PERM_RWX, mode, timers); + R_PERM_RWX, mode, joypad); return desc; } static ut64 __lseek(RIO* io, RIODesc *desc, ut64 offset, int whence) { - GBJoypad *joypad = (GBTimers *)desc->data; + GBJoypad *joypad = (GBJoypad *)desc->data; ut64 seek = (joypad->odata & 0x40) >> 6; switch (whence) { case R_IO_SEEK_SET: @@ -33,7 +33,7 @@ static ut64 __lseek(RIO* io, RIODesc *desc, ut64 offset, int whence) { seek = 1; break; } - joypad->odata = (joypad->odata & 0x3f) | + joypad->odata = (joypad->odata & 0x3f) | (seek << 6); return seek; } @@ -77,7 +77,7 @@ RIOPlugin r_io_plugin_gb_joypad = { }; GBJoypad *gb_joypad_open (RIO *io) { - joypad = R_NEW0 (GBJoypad); + GBJoypad *joypad = R_NEW0 (GBJoypad); if (!joypad) { return NULL; } @@ -91,7 +91,8 @@ GBJoypad *gb_joypad_open (RIO *io) { return NULL; } joypad->fd = desc->fd; - joypad->keys = SDL_GetKeyboardState (NULL); + const ut8 *keys = SDL_GetKeyboardState (NULL); + memcpy (&joypad->keys, &keys, sizeof (ut8 *)); joypad->up = SDL_SCANCODE_W; joypad->down = SDL_SCANCODE_S; joypad->left = SDL_SCANCODE_A; @@ -122,7 +123,7 @@ void gb_joypad_update(GBJoypad *joypad) { ndata = (ndata & 0x3) | (data & 0xc); } } - if (!(joypad->data & 0x10)) { + if (!(joypad->data & 0x10)) { //buttons ndata |= !!joypad->keys[joypad->a]; ndata |= (!!joypad->keys[joypad->b]) << 1; ndata |= (!!joypad->keys[joypad->select]) << 2; diff --git a/io/mbc1.c b/io/mbc1.c index 1a5de35..d64e752 100644 --- a/io/mbc1.c +++ b/io/mbc1.c @@ -103,7 +103,7 @@ static RIODesc *__open(RIO *io, const char *pathname, int rw, int mode) { } eprintf ("%d rambanks\n", mbc->n_rambanks); } else { - eprintf ("no external ram\n", mbc->n_rombanks); + eprintf ("no external ram\n"); } mbc->io = r_io_new (); if (!mbc->io) { @@ -119,7 +119,7 @@ static RIODesc *__open(RIO *io, const char *pathname, int rw, int mode) { } if (mbc->n_rambanks) { char *malloc_uri = r_str_newf ("malloc://0x%"PFMT64x, - mbc->small_ram? 0x800: (0x2000 * mbc->n_rambanks)); + (ut64)(mbc->small_ram? 0x800: (0x2000 * mbc->n_rambanks))); mbc->mem_fd = r_io_fd_open (mbc->io, malloc_uri, R_PERM_RW, 0); free (malloc_uri); if (mbc->mem_fd < 0) {