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)
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

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_mbc1;
extern RIOPlugin r_io_plugin_gb_mbc2;
extern RIOPlugin r_io_plugin_gb_joypad;
#endif

View File

@ -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;

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);
} 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) {