nethercore-systems avatar

zx-ffi-reference

ZX console FFI bindings reference. Triggers on "ZX FFI", "zx.rs", "ZX API", "ZX functions", "ZX rend

by nethercore-systems|Open Source

ZX FFI Reference

The ZX console provides 250+ FFI functions. Always read nethercore/include/zx.rs for accurate signatures.

FFI Categories

CategoryKey FunctionsFind In zx.rs
Systemdelta_time, tick_count, logLines 1-100
Randomrandom, random_range, random_f32Search "random"
Inputbutton_held, button_pressed, left_stick_xSearch "button"
Cameracamera_set, camera_fovSearch "camera"
Transformspush_translate, push_rotate_y, push_scaleSearch "push_"
Meshesload_mesh, draw_mesh, cube, sphereSearch "mesh"
Texturesload_texture, texture_bindSearch "texture"
Materialsmaterial_albedo, material_mre, material_normalSearch "material"
Audioload_sound, play_sound, music_playSearch "sound"
2D Drawingdraw_sprite, draw_text, draw_rectSearch "draw_"
Environmentdraw_env, env_gradientSearch "env_"
Debugdebug_register_*, debug_watch_*, debug_group_*Search "debug_"

Init-Only Functions

Must call only during init():

  • set_tick_rate(rate) - 0=24fps, 1=30fps, 2=60fps, 3=120fps
  • set_clear_color(color) - 0xRRGGBBAA
  • render_mode(mode) - 0=Lambert, 1=Matcap, 2=PBR, 3=Hybrid
  • All rom_*(), load_*(), procedural mesh functions

Render-Only Functions

Call only during render():

  • All draw_* functions
  • camera_set(), camera_fov()
  • push_translate(), push_rotate_y(), push_scale()
  • texture_bind(), font_bind()
  • begin_pass(), begin_pass_stencil_write()

Asset Loading

// In init()
let tex = rom_texture_str("player");
let mesh = rom_mesh_str("character");
let sfx = rom_sound_str("jump");
let music = rom_music_str("theme");

Transform Stack

// In render()
push_translate(x, y, z);
push_rotate_y(angle_degrees);
push_scale_uniform(scale);
draw_mesh(MESH);
push_identity();  // Reset

Coordinate System

  • Y-up, right-handed, -Z forward
  • When yaw=0, camera looks toward -Z
  • Angles in degrees for FFI functions