aboutsummaryrefslogtreecommitdiff
path: root/games/devtest
Commit message (Expand)AuthorAge
* Add padding[] element to formspecs (#11821)Vincent Robinson2021-12-30
* Restructure devtest's unittests and run them in CI (#11859)sfan52021-12-18
* Fix number of tool uses being off by 1..32767 (#11110)Wuzzy2021-10-31
* Add no_texture.png as fallback for unspecified texturesWuzzy2021-10-20
* Add embedded PNG texture modifier (#11498)hecks2021-10-13
* Split liquid_viscosity to liquid_viscosity and move_resistance (#10810)Wuzzy2021-10-01
* Chop game background in mainmenu (#10796)Lars Müller2021-09-14
* Add a simple PNG image encoder with Lua API (#11485)hecks2021-07-29
* Add bold, italic and monospace font styling for HUD text elements (#11478)sfan52021-07-27
* Add wallmounted support for plantlike and plantlike_rooted nodes (#11379)Wuzzy2021-07-15
* Fix rotation for falling mesh degrotate nodes (#11159)Wuzzy2021-04-28
* Fix devtest Lua errorsfan52021-04-21
* Put torch/signlike node on floor if no paramtype2 (#11074)Wuzzy2021-04-20
* Devtest: Remove testnodes_show_fallback_imageWuzzy2021-04-05
* Degrotate support for mesh nodes (#7840)Vitaliy2021-03-30
* DevTest: Formspec tests, children getter, better lighttool (#10918)Wuzzy2021-03-16
* Devtest: Fix missing log level in minetest.log (#11068)Wuzzy2021-03-15
* Allow overwriting media files of dependencies (#10752)DS2021-02-23
* Fix wrong reported item counts for inventory actions using Shift-Move (#10930)Lars Müller2021-02-21
* Add nametag background setting and object property (#10937)rubenwardy2021-02-17
* Fix short_description fallback order (#10943)rubenwardy2021-02-17
* Fix animation_image support in scroll containersJean-Patrick Guerrero2021-02-08
* Devtest: Remove bumpmap/parallax occl. test nodes (#10902)Wuzzy2021-02-04
* Fix list spacing and size (again) (#10869)Vincent Robinson2021-02-02
* devtest: Fix deprecated alpha usagesfan52021-01-29
* Drop never documented 'alpha' property from nodedefsfan52021-01-29
* Make hypertext and textarea have proper scroll event propagation. (#10860)Vincent Robinson2021-01-23
* FormSpec: Add list spacing, slot size, and noclip (#10083)Vincent Robinson2021-01-23
* Allow "liquid" and "flowingliquid" drawtypes even if liquidtype=none (#10737)Wuzzy2021-01-21
* Add on_deactivate callback for luaentities (#10723)hecks2021-01-02
* DevTest: Add food item to test food replacement (#10642)Wuzzy2020-12-18
* Semi-transparent background for nametags (#10152)Zughy2020-12-14
* Various documentation fixes (#10692)SmallJoker2020-12-10
* Fix falling image of torchlike if paramtype2="none" (#10612)Wuzzy2020-11-15
* Add model[] formspec element (#10320)SmallJoker2020-11-04
* Shaders for Android (GLES 2) (#10506)Vitaliy2020-10-25
* Devtest: Automatically enable zoom capability (#10493)Paramat2020-10-20
* Devtest hand tool: Update capabilities, add creative mode capabilities (#10484)Paramat2020-10-13
* Add bumpmapping and parallax occlusion testing nodes to devtest (#9242)HybridDog2020-10-09
* Add a short_description to be used by mods (#8980)DS2020-10-09
* Add minetest.get_artificial_light and minetest.get_natural_light (#5680)HybridDog2020-10-06
* Lua API: Add register_on_chatcommand to SSM and CSM (#7862)Elijah Duffy2020-10-03
* Devtest: Extend tooltips of many items and tools (#10312)Wuzzy2020-09-04
* Scale inventory image for scaled allfaces nodes (#10225)Wuzzy2020-09-04
* Make bgcolor tint button background images (#9818)Hugues Ross2020-08-29
* Load media from subfolders (#9065)DS2020-08-20
* Fix precision not working in hud_change (#10186)Lars Müller2020-08-12
* content_cao: Support texture animation for upright_sprite (#10020)sfan52020-07-30
* Fix undeclared global in devtest (#10133)Wuzzy2020-07-02
* Make shading of CAOs optional (#10033)Danila Shutov2020-06-16
) \ | (cast(Instruction, a)<<POS_A) \ | (cast(Instruction, b)<<POS_B) \ | (cast(Instruction, c)<<POS_C)) #define CREATE_ABx(o,a,bc) ((cast(Instruction, o)<<POS_OP) \ | (cast(Instruction, a)<<POS_A) \ | (cast(Instruction, bc)<<POS_Bx)) /* ** Macros to operate RK indices */ /* this bit 1 means constant (0 means register) */ #define BITRK (1 << (SIZE_B - 1)) /* test whether value is a constant */ #define ISK(x) ((x) & BITRK) /* gets the index of the constant */ #define INDEXK(r) ((int)(r) & ~BITRK) #define MAXINDEXRK (BITRK - 1) /* code a constant index as a RK value */ #define RKASK(x) ((x) | BITRK) /* ** invalid register that fits in 8 bits */ #define NO_REG MAXARG_A /* ** R(x) - register ** Kst(x) - constant (in constant table) ** RK(x) == if ISK(x) then Kst(INDEXK(x)) else R(x) */ /* ** grep "ORDER OP" if you change these enums */ typedef enum { /*---------------------------------------------------------------------- name args description ------------------------------------------------------------------------*/ OP_MOVE,/* A B R(A) := R(B) */ OP_LOADK,/* A Bx R(A) := Kst(Bx) */ OP_LOADBOOL,/* A B C R(A) := (Bool)B; if (C) pc++ */ OP_LOADNIL,/* A B R(A) := ... := R(B) := nil */ OP_GETUPVAL,/* A B R(A) := UpValue[B] */ OP_GETGLOBAL,/* A Bx R(A) := Gbl[Kst(Bx)] */ OP_GETTABLE,/* A B C R(A) := R(B)[RK(C)] */ OP_SETGLOBAL,/* A Bx Gbl[Kst(Bx)] := R(A) */ OP_SETUPVAL,/* A B UpValue[B] := R(A) */ OP_SETTABLE,/* A B C R(A)[RK(B)] := RK(C) */ OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */ OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */ OP_ADD,/* A B C R(A) := RK(B) + RK(C) */ OP_SUB,/* A B C R(A) := RK(B) - RK(C) */ OP_MUL,/* A B C R(A) := RK(B) * RK(C) */ OP_DIV,/* A B C R(A) := RK(B) / RK(C) */ OP_MOD,/* A B C R(A) := RK(B) % RK(C) */ OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */ OP_UNM,/* A B R(A) := -R(B) */ OP_NOT,/* A B R(A) := not R(B) */ OP_LEN,/* A B R(A) := length of R(B) */ OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */ OP_JMP,/* sBx pc+=sBx */ OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */ OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */ OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */ OP_TEST,/* A C if not (R(A) <=> C) then pc++ */ OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */ OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */ OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ OP_FORLOOP,/* A sBx R(A)+=R(A+2); if R(A) <?= R(A+1) then { pc+=sBx; R(A+3)=R(A) }*/ OP_FORPREP,/* A sBx R(A)-=R(A+2); pc+=sBx */ OP_TFORLOOP,/* A C R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); if R(A+3) ~= nil then R(A+2)=R(A+3) else pc++ */ OP_SETLIST,/* A B C R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B */ OP_CLOSE,/* A close all variables in the stack up to (>=) R(A)*/ OP_CLOSURE,/* A Bx R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) */ OP_VARARG/* A B R(A), R(A+1), ..., R(A+B-1) = vararg */ } OpCode; #define NUM_OPCODES (cast(int, OP_VARARG) + 1) /*=========================================================================== Notes: (*) In OP_CALL, if (B == 0) then B = top. C is the number of returns - 1, and can be 0: OP_CALL then sets `top' to last_result+1, so next open instruction (OP_CALL, OP_RETURN, OP_SETLIST) may use `top'. (*) In OP_VARARG, if (B == 0) then use actual number of varargs and set top (like in OP_CALL with C == 0). (*) In OP_RETURN, if (B == 0) then return up to `top' (*) In OP_SETLIST, if (B == 0) then B = `top'; if (C == 0) then next `instruction' is real C (*) For comparisons, A specifies what condition the test should accept (true or false). (*) All `skips' (pc++) assume that next instruction is a jump ===========================================================================*/ /* ** masks for instruction properties. The format is: ** bits 0-1: op mode ** bits 2-3: C arg mode ** bits 4-5: B arg mode ** bit 6: instruction set register A ** bit 7: operator is a test */ enum OpArgMask { OpArgN, /* argument is not used */ OpArgU, /* argument is used */ OpArgR, /* argument is a register or a jump offset */ OpArgK /* argument is a constant or register/constant */ }; LUAI_DATA const lu_byte luaP_opmodes[NUM_OPCODES]; #define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3)) #define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3)) #define getCMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 2) & 3)) #define testAMode(m) (luaP_opmodes[m] & (1 << 6)) #define testTMode(m) (luaP_opmodes[m] & (1 << 7)) LUAI_DATA const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */ /* number of list items to accumulate before a SETLIST instruction */ #define LFIELDS_PER_FLUSH 50 #endif