130 lines
1.7 KiB
C
130 lines
1.7 KiB
C
#include "background.h"
|
|
|
|
static ksys_pos_t sizes;
|
|
|
|
int syscalls_backgroundGetSize(lua_State* L)
|
|
{
|
|
asm_inline(
|
|
"int $0x40"
|
|
:"=a"(sizes)
|
|
: "a"(39), "b"(1)
|
|
);
|
|
|
|
syscalls_push_pos_t(L, sizes);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int syscalls_backgroundSetSize(lua_State* L)
|
|
{
|
|
sizes = syscalls_check_pos_t(L, 1);
|
|
|
|
_ksys_bg_set_size(
|
|
sizes.x,
|
|
sizes.y
|
|
);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int syscalls_backgroundPutPixel(lua_State* L)
|
|
{
|
|
uint32_t x = luaL_checkinteger(L, 1);
|
|
uint32_t y = luaL_checkinteger(L, 2);
|
|
|
|
_ksys_bg_put_pixel(
|
|
x,
|
|
y,
|
|
sizes.x,
|
|
luaL_checkinteger(L, 3)
|
|
);
|
|
|
|
return 0;
|
|
}
|
|
|
|
ksys_color_t background_read_point(ksys_pos_t pos, uint16_t w)
|
|
{
|
|
ksys_color_t color;
|
|
|
|
asm_inline(
|
|
"int $0x40"
|
|
:"=a"(color)
|
|
: "a"(39), "b"(2), "c"((pos.x + pos.y * w) * 3)
|
|
);
|
|
|
|
return color;
|
|
}
|
|
|
|
int syscalls_backgroundReadPoint(lua_State* L)
|
|
{
|
|
lua_pushinteger(
|
|
L,
|
|
background_read_point(syscalls_check_pos_t(L, 1), sizes.x)
|
|
);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int syscalls_backgroundRedraw(lua_State* L)
|
|
{
|
|
_ksys_bg_redraw();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int syscalls_backgroundSetDrawMode(lua_State* L)
|
|
{
|
|
_ksys_bg_set_mode(luaL_checkinteger(L, 1));
|
|
|
|
return 0;
|
|
}
|
|
|
|
int syscalls_backgroundGetDrawMode(lua_State* L)
|
|
{
|
|
enum KSYS_BG_MODES mode;
|
|
|
|
asm_inline(
|
|
"int $0x40"
|
|
:"=a"(mode)
|
|
: "a"(39), "b"(4)
|
|
);
|
|
|
|
lua_pushinteger(L, mode);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int syscalls_backgroundOpenMap(lua_State* L)
|
|
{
|
|
lua_pushinteger(
|
|
L,
|
|
_ksys_bg_get_map()
|
|
);
|
|
|
|
return 1;
|
|
}
|
|
|
|
int syscalls_backgroundCloseMap(lua_State* L)
|
|
{
|
|
if (_ksys_bg_close_map(luaL_checkinteger(L, 1)) == 0)
|
|
{
|
|
lua_pushnil(L);
|
|
}
|
|
else
|
|
{
|
|
lua_pushboolean(L, true);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
int syscalls_backgroundRedrawArea(lua_State* L)
|
|
{
|
|
_ksys_bg_redraw_bar(
|
|
syscalls_check_pos_t(L, 1),
|
|
syscalls_check_pos_t(L, 3)
|
|
);
|
|
|
|
return 0;
|
|
}
|