#include "common.h"
#include <acess/sys.h>
+#define JOY_IOCTL_GETSETAXISLIMIT 6
+#define JOY_IOCTL_GETSETAXISPOSITION 7
+
// === CODE ===
int Input_Init(void)
{
// Set mouse limits
num_value.Num = 0;
num_value.Value = giScreenWidth;
- ioctl(giMouseFD, 6, &num_value);
+ ioctl(giMouseFD, JOY_IOCTL_GETSETAXISLIMIT, &num_value);
+ num_value.Value = giScreenWidth/2;
+ ioctl(giMouseFD, JOY_IOCTL_GETSETAXISPOSITION, &num_value);
num_value.Num = 1;
num_value.Value = giScreenHeight;
- ioctl(giMouseFD, 6, &num_value);
+ ioctl(giMouseFD, JOY_IOCTL_GETSETAXISLIMIT, &num_value);
+ num_value.Value = giScreenHeight/2;
+ ioctl(giMouseFD, JOY_IOCTL_GETSETAXISPOSITION, &num_value);
return 0;
}
// mouseinfo.Axies[0].CurValue
// );
// Handle movement
-// Video_SetCursorPos( mouseinfo.Axies[0], mouseinfo.Axies[1] );
- _SysDebug("Cursor to %i,%i", mouseinfo.Axies[0].CursorPos, mouseinfo.Axies[1].CursorPos);
+ Video_SetCursorPos( mouseinfo.Axies[0].CursorPos, mouseinfo.Axies[1].CursorPos );
+// _SysDebug("Cursor to %i,%i", mouseinfo.Axies[0].CursorPos, mouseinfo.Axies[1].CursorPos);
}
}
--- /dev/null
+/*
+ */
+#ifndef _RESORUCE_CURSOR_H
+#define _RESORUCE_CURSOR_H
+
+#include <stdint.h>
+
+static struct {
+ uint16_t W, H, OfsX, OfsY;
+ uint32_t Data[];
+} cCursorBitmap = {
+ 8, 16, 0, 0,
+ {
+ 0xFF000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFF000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF888888, 0xFF000000, 0xFF000000, 0xFF000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFFFFFFFF, 0xFF000000, 0xFF000000, 0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0xFF000000, 0x00000000, 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000,
+ 0xFF000000, 0x00000000, 0x00000000, 0x00000000, 0xFF000000, 0xFFFFFFFF, 0xFF000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFF000000, 0xFFFFFFFF, 0xFF000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFF000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
+
+#endif
+
#include <acess/sys.h>
#include <acess/devices/terminal.h>
#include <image.h>
+#include "resources/cursor.h"
// === PROTOTYPES ===
void Video_Setup(void);
+void Video_SetCursorPos(short X, short Y);
void Video_Update(void);
void Video_FillRect(short X, short Y, short W, short H, uint32_t Color);
void Video_DrawRect(short X, short Y, short W, short H, uint32_t Color);
tmpInt = TERM_MODE_FB;
ioctl( giTerminalFD, TERM_IOCTL_MODETYPE, &tmpInt );
- // Force VT8 to be shown
+ // Force VT to be shown
ioctl( giTerminalFD, TERM_IOCTL_FORCESHOW, NULL );
// Create local framebuffer (back buffer)
gpScreenBuffer = malloc( giScreenWidth*giScreenHeight*4 );
memset32( gpScreenBuffer, 0x8888FF, giScreenWidth*giScreenHeight );
+
+ // Set cursor position and bitmap
+ ioctl(giTerminalFD, TERM_IOCTL_SETCURSORBITMAP, &cCursorBitmap);
+ Video_SetCursorPos( giScreenWidth/2, giScreenHeight/2 );
+
Video_Update();
}
write(giTerminalFD, gpScreenBuffer, giScreenWidth*giScreenHeight*4);
}
+void Video_SetCursorPos(short X, short Y)
+{
+ struct {
+ uint16_t x;
+ uint16_t y;
+ } pos;
+ pos.x = giVideo_CursorX = X;
+ pos.y = giVideo_CursorY = Y;
+ ioctl(giTerminalFD, TERM_IOCTL_GETSETCURSOR, &pos);
+}
+
void Video_FillRect(short X, short Y, short W, short H, uint32_t Color)
{
uint32_t *buf = gpScreenBuffer + Y*giScreenWidth + X;