AgentSkillsCN

ZX FFI Reference

ZX 控制台的 FFI 绑定参考。触发条件包括“ZX FFI”、“zx.rs”、“ZX API”、“ZX 函数”、“ZX 渲染”、“ZX 输入”、“ZX 音频”。 **在以下情况下加载参考文档:** - 渲染 API 详情 -> `references/render-api.md` - 输入 API 详情 -> `references/input-api.md` - 音频 API 详情 -> `references/audio-api.md` - 完整的 FFI —— 直接阅读 `nethercore/include/zx.rs`

SKILL.md
--- frontmatter
name: ZX FFI Reference
description: |
  ZX console FFI bindings reference. Triggers on "ZX FFI", "zx.rs", "ZX API", "ZX functions", "ZX rendering", "ZX input", "ZX audio".

  **Load references when:**
  - Render API details -> `references/render-api.md`
  - Input API details -> `references/input-api.md`
  - Audio API details -> `references/audio-api.md`
  - Full FFI -> Read `nethercore/include/zx.rs` directly
version: 1.0.0

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

rust
// 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

rust
// 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