Fix build

This commit is contained in:
condret 2024-10-21 00:45:40 +02:00
parent 22fed0fea1
commit dda0cf5006
4 changed files with 20 additions and 9 deletions

View File

@ -1,7 +1,7 @@
LDFLAGS = $(shell pkg-config --libs sdl2 r_util r_io) LDFLAGS = $(shell pkg-config --libs sdl2 r_util r_io)
CFLAGS = -Wall -I include/ $(shell pkg-config --cflags 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: sdl/pixbuf.o:
gcc -c sdl/pixbuf.c -o sdl/pixbuf.o $(CFLAGS) gcc -c sdl/pixbuf.c -o sdl/pixbuf.o $(CFLAGS)
@ -9,5 +9,14 @@ sdl/pixbuf.o:
io/timers.o: io/timers.o:
gcc -c io/timers.c -o io/timers.o $(CFLAGS) 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: clean:
rm sdl/*.o && rm io/*.o rm sdl/*.o && rm io/*.o

View File

@ -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_timers;
extern RIOPlugin r_io_plugin_gb_mbc1; extern RIOPlugin r_io_plugin_gb_mbc1;
extern RIOPlugin r_io_plugin_gb_mbc2; extern RIOPlugin r_io_plugin_gb_mbc2;
extern RIOPlugin r_io_plugin_gb_joypad;
#endif #endif

View File

@ -15,12 +15,12 @@ static RIODesc *__open(RIO *io, const char *pathname, int rw, int mode) {
GBJoypad *joypad = NULL; GBJoypad *joypad = NULL;
sscanf (pathname, "gb_joybad://%p", &joypad); sscanf (pathname, "gb_joybad://%p", &joypad);
RIODesc *desc = r_io_desc_new (io, &r_io_plugin_gb_joypad, pathname, 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; return desc;
} }
static ut64 __lseek(RIO* io, RIODesc *desc, ut64 offset, int whence) { 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; ut64 seek = (joypad->odata & 0x40) >> 6;
switch (whence) { switch (whence) {
case R_IO_SEEK_SET: case R_IO_SEEK_SET:
@ -33,7 +33,7 @@ static ut64 __lseek(RIO* io, RIODesc *desc, ut64 offset, int whence) {
seek = 1; seek = 1;
break; break;
} }
joypad->odata = (joypad->odata & 0x3f) | joypad->odata = (joypad->odata & 0x3f) | (seek << 6);
return seek; return seek;
} }
@ -77,7 +77,7 @@ RIOPlugin r_io_plugin_gb_joypad = {
}; };
GBJoypad *gb_joypad_open (RIO *io) { GBJoypad *gb_joypad_open (RIO *io) {
joypad = R_NEW0 (GBJoypad); GBJoypad *joypad = R_NEW0 (GBJoypad);
if (!joypad) { if (!joypad) {
return NULL; return NULL;
} }
@ -91,7 +91,8 @@ GBJoypad *gb_joypad_open (RIO *io) {
return NULL; return NULL;
} }
joypad->fd = desc->fd; 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->up = SDL_SCANCODE_W;
joypad->down = SDL_SCANCODE_S; joypad->down = SDL_SCANCODE_S;
joypad->left = SDL_SCANCODE_A; joypad->left = SDL_SCANCODE_A;
@ -122,7 +123,7 @@ void gb_joypad_update(GBJoypad *joypad) {
ndata = (ndata & 0x3) | (data & 0xc); ndata = (ndata & 0x3) | (data & 0xc);
} }
} }
if (!(joypad->data & 0x10)) { if (!(joypad->data & 0x10)) { //buttons
ndata |= !!joypad->keys[joypad->a]; ndata |= !!joypad->keys[joypad->a];
ndata |= (!!joypad->keys[joypad->b]) << 1; ndata |= (!!joypad->keys[joypad->b]) << 1;
ndata |= (!!joypad->keys[joypad->select]) << 2; ndata |= (!!joypad->keys[joypad->select]) << 2;

View File

@ -103,7 +103,7 @@ static RIODesc *__open(RIO *io, const char *pathname, int rw, int mode) {
} }
eprintf ("%d rambanks\n", mbc->n_rambanks); eprintf ("%d rambanks\n", mbc->n_rambanks);
} else { } else {
eprintf ("no external ram\n", mbc->n_rombanks); eprintf ("no external ram\n");
} }
mbc->io = r_io_new (); mbc->io = r_io_new ();
if (!mbc->io) { if (!mbc->io) {
@ -119,7 +119,7 @@ static RIODesc *__open(RIO *io, const char *pathname, int rw, int mode) {
} }
if (mbc->n_rambanks) { if (mbc->n_rambanks) {
char *malloc_uri = r_str_newf ("malloc://0x%"PFMT64x, 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); mbc->mem_fd = r_io_fd_open (mbc->io, malloc_uri, R_PERM_RW, 0);
free (malloc_uri); free (malloc_uri);
if (mbc->mem_fd < 0) { if (mbc->mem_fd < 0) {