Log In  


I've been building a game via the API, and in my quest to figure out what savegame systems I can use (if any) I wrote a little script to dump the contents of _ENV. This seems to list the API, both documented and otherwise, so I thought folks might find it useful.

So far the only undocumented feature I've found and successfully used is clip3d, which you can use to set a clipping volume for subsequent voxel rendering operations. It doesn't seem to get reset every time you run a game, so be sure to clean up after yourself :)

Parameters seem to be x0, y0, z0, x1, y1, z1

Anyway, here's the rest of the dump:


flip: [function]
trace: [function]
__type: [function]
_activate_objects_yieldable: [function]
_activate_objects: [function]
_add_method: [function]
_add_val_names_from_table: [function]
_blit: [function]
_class_16: table: 0x1cc93810
_class_func_16: [function]
_clear_all_lua_data: [function]
_draw_legacy_hud: [function]
_draw_map: [function]
_draw_messages: [function]
_draw_objects_yieldable: [function]
_draw_objects: [function]
_draw: [function]
_end_of_program: 1
_extract_upvalues: [function]
_fetch_function_by_name: [function]
_fetch_table_by_name: [function]
_functions_at_boot: [table]
_G: [table]
_get_frames_skipped: [function]
_get_menu_item_selected: [function]
_get_newable_elf_class: [function]
_get_num_elves: [function]
_get_world_actors: [function]
_head_id: -2
_init_room_state_instances: [function]
_last_room_at_draw: table: 0x1cc93798
_mainloop: [function]
_mark_actor_newed: [function]
_mark_cpu: [function]
_menuitem: [function]
_move_all_elves_yieldable: [function]
_move_room_flow: [function]
_move_world_post: [function]
_move_world: [function]
_mt_actor: [table]
_mt_resource: [table]
_name_val: [table]
_non_saveable: [table]
_num_functions: 295
_obj_4: table: 0x1cc93798
_p8_program: [function]
_pausemenu: [table]
_read_global_variables: [function]
_read_world_objects: [function]
_record_callback_bits: [function]
_record_functions_at_boot: [function]
_record_table_functions: [function]
_remove_dead_objects: [function]
_restore_upvalues: [function]
_set_fps: [function]
_set_mainloop_exists: [function]
_spawn_worker: [function]
_startframe: [function]
_uc: 2
_update_buttons: [function]
_update_multi: [function]
_update_objects: [function]
_update_voxatron_buttons: [function]
_update120: [function]
_update60: [function]
_val_name: [table]
_validate_head_class: [function]
_VERSION: Lua 5.2
_vvmp_id: 16
_write_global_variables: [function]
_write_world_objects: [function]
?: -1632.5
?: -18402.5
?: -19008.5
?: -20032.5
?: -20128.5
?: -20192.5
?: -24351.5
?: -2560.5
?: -25792.5
?: -26208.5
?: -2624.5
?: 0
?: 0.5
?: 1
?: 2
?: 20767.5
?: 20927.5
?: 21845.5
?: 23130.5
?: 3
?: 31455.5
?: 32125.5
?: 3855.5
?: 4
?: 5
?: 6943.5
abs: [function]
add: [function]
all: [function]
ANIMATION: 8
assert: [function]
atan2: [function]
ATOMIZE_ON_DEATH: 0.0043
ATTACK_BOTTOM: 0.0041
ATTACK_DAMAGE: 15
ATTACK_SIDES: 0.004
ATTACK_TOP: 0.004
band: [function]
BASE_P0: 8
BASE_P1: 9
BASE_TYPE: 7
bbsreq: [function]
blit_voxmap: [function]
bnot: [function]
bor: [function]
BOUNCE: 21
box: [function]
boxfill: [function]
btn: [function]
btnp: [function]
BULLET: 9
button_pressed: [function]
button: [function]
bxor: [function]
camera: [function]
cartdata: [function]
cd: [function]
ceil: [function]
chr: [function]
circ: [function]
circfill: [function]
clip: [function]
clip3d: [function]
cls: [function]
clv: [function]
cocreate: [function]
COLLECT_BOTTOM: 0.0041
COLLECT_SIDES: 0.004
COLLECT_TOP: 0.004
collectgarbage: [function]
COLLIDE_BULLETS: 0.0041
COLLIDE_GROUND: 0.0041
COLLIDE_PARENT: 0.0043
COLLIDE_SIBLINGS: 0.0043
color: [function]
coresume: [function]
cos: [function]
costatus: [function]
COUNT_AS_MONSTER: 0.0042
count: [function]
cstore: [function]
cursor: [function]
del: [function]
deli: [function]
DENSITY: 5
dget: [function]
dofile: [function]
DOOR: 4
draw_voxmap: [function]
dset: [function]
EMITTER: 10
error: [function]
exit: [function]
EXPEL_ACTORS: 20.0042
EXPLODE_ON_DEATH: 0.0042
export: [function]
extcmd: [function]
FACING_TURN_SPEED: 17
fget: [function]
fillp: [function]
flip: [function]
flr: [function]
folder: [function]
foreach: [function]
FRICTION: 11
fset: [function]
get_actors: [function]
get_display_camera: [function]
get_id: [function]
get_key_type_index: [function]
get_room: [function]
get_type_index: [function]
get_value_string: [function]
get_world_camera: [function]
getmetatable: [function]
GRAVITY: 14
HEADING_TURN_SPEED: 18
HEIGHT: 4
help: [function]
HOISTABLE: 0.004
holdframe: [function]
import: [function]
info: [function]
init_id_table: [function]
init_val_name_table: [function]
io_read_boolean: [function]
io_read_int32: [function]
io_read_string: [function]
io_read_uint8: [function]
io_write_boolean: [function]
io_write_int32: [function]
io_write_string: [function]
io_write_uint8: [function]
ipairs: [function]
is_array_key: [function]
is_valid: [function]
JUMP_FREQ: 10
JUMP_HEIGHT: 9
LENGTH: 3
line: [function]
line3d: [function]
LIQUID_Z: 9
load_checkpoint: [function]
load: [function]
loadfile: [function]
LOCK_FACING: 0.004
LOCK_X: 0.004
LOCK_Y: 0.004
LOCK_Z: 0.004
login: [function]
logout: [function]
ls: [function]
lshr: [function]
mag: [function]
map: [function]
mapdraw: [function]
max: [function]
memcpy: [function]
memset: [function]
menuitem: [function]
mget: [function]
mid: [function]
min: [function]
mkdir: [function]
MONSTER: 7
MORTALITY: 7
MOVE_STYLE_P: 19
MOVE_STYLE: 12
mset: [function]
music: [function]
MUSIC: 11
next: [function]
ord: [function]
oval: [function]
ovalfill: [function]
pack: [function]
pairs: [function]
pal: [function]
palt: [function]
pcall: [function]
peek: [function]
peek2: [function]
peek4: [function]
pget: [function]
PICKUP: 5
play_music: [function]
play_sound: [function]
PLAYER: 6
POINTS: 6
poke: [function]
poke2: [function]
poke4: [function]
print_table: [function]
print: [function]
printable: [function]
printh: [function]
printio: [function]
PROP: 0
pset: [function]
PUSHABLE: 0.0039
radio: [function]
rawequal: [function]
rawget: [function]
rawlen: [function]
rawset: [function]
read_key: [function]
read_table: [function]
read_value: [function]
record_non_saveables: [function]
rect: [function]
rectfill: [function]
reload: [function]
reset: [function]
rnd: [function]
ROOM: 1
rotl: [function]
rotr: [function]
run: [function]
save_checkpoint: [function]
save: [function]
scoresub: [function]
select: [function]
serial: [function]
set_display_camera: [function]
set_draw_slice: [function]
set_draw_target: [function]
set_map_draw_mode: [function]
set_pico8_cart: [function]
set_room: [function]
set_world_camera: [function]
setmetatable: [function]
sfx: [function]
sget: [function]
sgn: [function]
shl: [function]
shr: [function]
shutdown: [function]
sin: [function]
SOUND: 12
spawn: [function]
SPEED: 8
sphere: [function]
split: [function]
spr: [function]
SPREAD_OUT: 0.0042
sqrt: [function]
srand: [function]
sset: [function]
sspr: [function]
STANDABLE: 0.0039
stat: [function]
stop_music: [function]
stop_sound: [function]
stop: [function]
sub: [function]
t: [function]
TEAM: 13
test_obj_1: [function]
THROWABLE: 0.0039
ti: 4
time: [function]
tline: [function]
tonum: [function]
tonumber: [function]
tostr: [function]
tostring: [function]
total: 0
trace: [function]
TURN_SPEED: 18
TURN_STYLE: 16
type: [function]
unpack: [function]
vget: [function]
vset: [function]
WIDTH: 2
write_key: [function]
write_literal: [function]
write_table: [function]
write_value: [function]
xpcall: [function]
yield: [function]

1


This works in pico-8 too. I wouldn't recommend using ones that start with an underscore though. That's a pretty universal way of indicating that something is meant to be under the hood, which means it's more likely to change in future versions.


for comparison, the functions that are the official API are documented here: https://www.lexaloffle.com/vox_api.txt

I suspect that many here (pal sget etc) are added to run pico-8 carts, and there’s no separation between vox mode and p8 mode, for better or for worse ;)


Yep, I was mucking about with pal() the other day and found you can use it to remap the first 16 voxatron colours to anything in the pico8 palette. Nothing else seemed to be affected by it.



[Please log in to post a comment]