Moved mouse to devices/
This commit is contained in:
parent
13fd0d9724
commit
89c07988ac
4
build.sh
4
build.sh
|
@ -20,6 +20,8 @@ then
|
||||||
clang-format -i src/devices/apu.c
|
clang-format -i src/devices/apu.c
|
||||||
clang-format -i src/devices/file.h
|
clang-format -i src/devices/file.h
|
||||||
clang-format -i src/devices/file.c
|
clang-format -i src/devices/file.c
|
||||||
|
clang-format -i src/devices/mouse.h
|
||||||
|
clang-format -i src/devices/mouse.c
|
||||||
clang-format -i src/uxnasm.c
|
clang-format -i src/uxnasm.c
|
||||||
clang-format -i src/uxnemu.c
|
clang-format -i src/uxnemu.c
|
||||||
clang-format -i src/uxncli.c
|
clang-format -i src/uxncli.c
|
||||||
|
@ -62,7 +64,7 @@ fi
|
||||||
|
|
||||||
echo "Building.."
|
echo "Building.."
|
||||||
${CC} ${CFLAGS} src/uxnasm.c -o bin/uxnasm
|
${CC} ${CFLAGS} src/uxnasm.c -o bin/uxnasm
|
||||||
${CC} ${CFLAGS} ${CORE} src/devices/file.c src/devices/ppu.c src/devices/apu.c src/uxnemu.c ${EXTRA} ${UXNEMU_LDFLAGS} -o bin/uxnemu
|
${CC} ${CFLAGS} ${CORE} src/devices/file.c src/devices/mouse.c src/devices/ppu.c src/devices/apu.c src/uxnemu.c ${EXTRA} ${UXNEMU_LDFLAGS} -o bin/uxnemu
|
||||||
${CC} ${CFLAGS} ${CORE} src/devices/file.c src/uxncli.c -o bin/uxncli
|
${CC} ${CFLAGS} ${CORE} src/devices/file.c src/uxncli.c -o bin/uxncli
|
||||||
|
|
||||||
if [ -d "$HOME/bin" ]
|
if [ -d "$HOME/bin" ]
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
#include "../uxn.h"
|
||||||
|
#include "mouse.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright (c) 2021 Devine Lu Linvega
|
||||||
|
Copyright (c) 2021 Andrew Alderwick
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
mouse_xy(Device *d, Uint16 x, Uint16 y)
|
||||||
|
{
|
||||||
|
poke16(d->dat, 0x2, x);
|
||||||
|
poke16(d->dat, 0x4, y);
|
||||||
|
uxn_eval(d->u, d->vector);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
mouse_z(Device *d, Uint8 z)
|
||||||
|
{
|
||||||
|
d->dat[7] = z;
|
||||||
|
uxn_eval(d->u, d->vector);
|
||||||
|
d->dat[7] = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
mouse_down(Device *d, Uint8 mask)
|
||||||
|
{
|
||||||
|
d->dat[6] |= mask;
|
||||||
|
uxn_eval(d->u, d->vector);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
mouse_up(Device *d, Uint8 mask)
|
||||||
|
{
|
||||||
|
d->dat[6] &= (~mask);
|
||||||
|
uxn_eval(d->u, d->vector);
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2021 Devine Lu Linvega
|
||||||
|
Copyright (c) 2021 Andrew Alderwick
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void mouse_xy(Device *d, Uint16 x, Uint16 y);
|
||||||
|
void mouse_z(Device *d, Uint8 z);
|
||||||
|
void mouse_down(Device *d, Uint8 mask);
|
||||||
|
void mouse_up(Device *d, Uint8 mask);
|
40
src/uxnemu.c
40
src/uxnemu.c
|
@ -11,6 +11,7 @@
|
||||||
#include "devices/ppu.h"
|
#include "devices/ppu.h"
|
||||||
#include "devices/apu.h"
|
#include "devices/apu.h"
|
||||||
#include "devices/file.h"
|
#include "devices/file.h"
|
||||||
|
#include "devices/mouse.h"
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#pragma clang diagnostic pop
|
#pragma clang diagnostic pop
|
||||||
|
|
||||||
|
@ -196,33 +197,6 @@ init(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
domouse(SDL_Event *event)
|
|
||||||
{
|
|
||||||
Uint8 flag = 0x00;
|
|
||||||
Uint16 x = clamp(event->motion.x - PAD, 0, ppu.width - 1);
|
|
||||||
Uint16 y = clamp(event->motion.y - PAD, 0, ppu.height - 1);
|
|
||||||
if(event->type == SDL_MOUSEWHEEL) {
|
|
||||||
devmouse->dat[7] = event->wheel.y;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
poke16(devmouse->dat, 0x2, x);
|
|
||||||
poke16(devmouse->dat, 0x4, y);
|
|
||||||
devmouse->dat[7] = 0x00;
|
|
||||||
switch(event->button.button) {
|
|
||||||
case SDL_BUTTON_LEFT: flag = 0x01; break;
|
|
||||||
case SDL_BUTTON_RIGHT: flag = 0x10; break;
|
|
||||||
}
|
|
||||||
switch(event->type) {
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
|
||||||
devmouse->dat[6] |= flag;
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
|
||||||
devmouse->dat[6] &= (~flag);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Devices
|
#pragma mark - Devices
|
||||||
|
|
||||||
static Uint8
|
static Uint8
|
||||||
|
@ -494,7 +468,6 @@ run(Uxn *u)
|
||||||
doctrl(u, &event, event.type == SDL_KEYDOWN);
|
doctrl(u, &event, event.type == SDL_KEYDOWN);
|
||||||
uxn_eval(u, devctrl->vector);
|
uxn_eval(u, devctrl->vector);
|
||||||
devctrl->dat[3] = 0;
|
devctrl->dat[3] = 0;
|
||||||
|
|
||||||
if(event.type == SDL_KEYDOWN) {
|
if(event.type == SDL_KEYDOWN) {
|
||||||
ksym = event.key.keysym.sym;
|
ksym = event.key.keysym.sym;
|
||||||
if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym)
|
if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym)
|
||||||
|
@ -502,11 +475,18 @@ run(Uxn *u)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEWHEEL:
|
case SDL_MOUSEWHEEL:
|
||||||
|
mouse_z(devmouse, event.wheel.y);
|
||||||
|
break;
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
mouse_up(devmouse, 0x1 << (event.button.button - 1));
|
||||||
|
break;
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
mouse_down(devmouse, 0x1 << (event.button.button - 1));
|
||||||
|
break;
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
domouse(&event);
|
mouse_xy(devmouse,
|
||||||
uxn_eval(u, devmouse->vector);
|
clamp(event.motion.x - PAD, 0, ppu.width - 1),
|
||||||
|
clamp(event.motion.y - PAD, 0, ppu.height - 1));
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT:
|
case SDL_WINDOWEVENT:
|
||||||
if(event.window.event == SDL_WINDOWEVENT_EXPOSED)
|
if(event.window.event == SDL_WINDOWEVENT_EXPOSED)
|
||||||
|
|
Loading…
Reference in New Issue