add more devices
This commit is contained in:
parent
a9f3ec694c
commit
035397209d
|
@ -14,12 +14,9 @@ int main(int argc, char **argv) {
|
|||
|
||||
/* test_add_compile(vm.memory); */
|
||||
/* test_add_function_compile(vm.memory); */
|
||||
/* test_loop_compile(vm.memory); */
|
||||
test_hello_world_compile(vm.memory);
|
||||
/* end = test_loop_compile(vm.memory); */
|
||||
end = test_hello_world_compile(vm.memory);
|
||||
/* test_recursive_function_compile(vm.memory); */
|
||||
while (step_vm(&vm));
|
||||
core_dump(&vm);
|
||||
return 0;
|
||||
|
||||
uint32_t buffer_size = 640 * 480 * sizeof(uint32_t);
|
||||
|
||||
|
@ -32,6 +29,17 @@ int main(int argc, char **argv) {
|
|||
vm.devices[vm.dp++] = screen;
|
||||
vm.mp += buffer_size;
|
||||
|
||||
Device mouse;
|
||||
mouse.type = MOUSE;
|
||||
mouse.m = (Mouse){.x = 0, .y = 0, .btn1 = 0, .btn2 = 0, .btn3 = 0};
|
||||
vm.devices[vm.dp++] = mouse;
|
||||
|
||||
Device keyboard;
|
||||
keyboard.type = KEYBOARD;
|
||||
const uint8_t *state = SDL_GetKeyboardState(NULL);
|
||||
keyboard.k = (Keyboard){.length = SDL_NUM_SCANCODES, .keys = state};
|
||||
vm.devices[vm.dp++] = keyboard;
|
||||
|
||||
/* Create window and renderer */
|
||||
SDL_Window *window =
|
||||
SDL_CreateWindow("Reality Engine VM", SDL_WINDOWPOS_CENTERED,
|
||||
|
@ -56,7 +64,7 @@ int main(int argc, char **argv) {
|
|||
while (SDL_PollEvent(&event)) {
|
||||
switch (event.type) {
|
||||
case SDL_QUIT:
|
||||
running = false;
|
||||
running = false;
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
printf("mouse_down: x=%d, y=%d, btn=%d\n", event.button.x,
|
||||
event.button.y, event.button.button);
|
||||
|
@ -65,12 +73,14 @@ int main(int argc, char **argv) {
|
|||
printf("mouse_move: x=%d, y=%d\n", event.motion.x, event.motion.y);
|
||||
break;
|
||||
case SDL_FINGERDOWN:
|
||||
printf("touch_down x=%f, y=%f\n", event.tfinger.x * screen.s.width,
|
||||
event.tfinger.y * screen.s.height);
|
||||
printf("touch_down x=%d, y=%d\n",
|
||||
(int)(event.tfinger.x * screen.s.width),
|
||||
(int)(event.tfinger.y * screen.s.height));
|
||||
break;
|
||||
case SDL_FINGERMOTION:
|
||||
printf("touch_move x=%f, y=%f\n", event.tfinger.x * screen.s.width,
|
||||
event.tfinger.y * screen.s.height);
|
||||
printf("touch_move x=%d, y=%d\n",
|
||||
(int)(event.tfinger.x * screen.s.width),
|
||||
(int)(event.tfinger.y * screen.s.height));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,9 +34,24 @@ typedef struct screen_t {
|
|||
Value *buffer;
|
||||
} Screen;
|
||||
|
||||
typedef struct mouse_t {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint8_t btn1;
|
||||
uint8_t btn2;
|
||||
uint8_t btn3;
|
||||
} Mouse;
|
||||
|
||||
typedef struct keyboard_t {
|
||||
uint32_t length;
|
||||
const uint8_t *keys;
|
||||
} Keyboard;
|
||||
|
||||
typedef union device_u {
|
||||
uint8_t type;
|
||||
Screen s;
|
||||
Mouse m;
|
||||
Keyboard k;
|
||||
} Device;
|
||||
|
||||
#define MEMORY_SIZE 65536
|
||||
|
@ -100,7 +115,7 @@ typedef enum {
|
|||
OP_UINT_TO_REAL, /* utor : dest = src1 as f32 */
|
||||
OP_ADD_REAL, /* addr : dest = src1 + src2 */
|
||||
OP_SUB_REAL, /* subr : dest = src1 - src2 */
|
||||
OP_MUL_REAL, /* mulr : dest = src1 * src2 */
|
||||
OP_MUL_REAL, /* ulr : dest = src1 * src2 */
|
||||
OP_DIV_REAL, /* divr : dest = src1 / src2 */
|
||||
OP_JEQ_REAL, /* jeqr : jump to address dest if src1 as real == src2 as real */
|
||||
OP_JGE_REAL, /* jgtr : jump to address dest if src1 as real >= src2 as real */
|
||||
|
|
Loading…
Reference in New Issue