diff --git a/source/mini/lua/lua.wrappers.cpp b/source/mini/lua/lua.wrappers.cpp index a30d9f2..c9671cf 100644 --- a/source/mini/lua/lua.wrappers.cpp +++ b/source/mini/lua/lua.wrappers.cpp @@ -396,6 +396,31 @@ namespace mini } return 0; } + + static int lut(lua_State *L) { + const int index = luaL_checkinteger(L, 1); + if (index<0 || index>255) return 0; + + uint8_t tabla[256]; + for (int i = 0; i < 256; ++i) tabla[i] = i; + + if (!lua_isnil(L, 2) && lua_gettop(L) >= 2) { + luaL_checktype(L, 2, LUA_TTABLE); + const int len = std::min(256, (int)lua_rawlen(L, 2)); + for (int i=0;i @@ -81,5 +82,28 @@ namespace mini for (int i=0;i<256;++i) draw::state.draw_palette[i]=i; } } + + namespace mask { + uint8_t tables[256][256]; + + void apply() { + surf::surface_t& source = surf::state.surfaces[surf::state.source_surface]; + surf::surface_t& dest = surf::state.surfaces[surf::state.dest_surface]; + + const int width = source.w < dest.w ? source.w : dest.w; + const int height = source.h < dest.h ? source.h : dest.h; + + for (int y=0; y