For the complete documentation index, see llms.txt. This page is also available as Markdown.

Single-writer output pipeline

Scattered output writes create "correct math, wrong result" bugs. Centralize them:

single-writer-pipeline.gpc
int raw_rx;
int raw_ry;
int final_rx;
int final_ry;
int feature_enabled;
int menu_open;

main {
    raw_rx = get_ival(PS5_RX);
    raw_ry = get_ival(PS5_RY);

    final_rx = raw_rx;
    final_ry = raw_ry;

    if(feature_enabled) {
        final_rx = apply_x_feature(final_rx);
        final_ry = apply_y_feature(final_ry);
    }

    if(menu_open) {
        final_rx = 0;
        final_ry = 0;
    }

    set_val(PS5_RX, bounded_axis(final_rx));
    set_val(PS5_RY, bounded_axis(final_ry));
}

function bounded_axis(value) {
    if(value < -100) return -100;
    if(value > 100) return 100;
    return value;
}

function apply_x_feature(value) {
    return value; // replace with the X-axis transform
}

function apply_y_feature(value) {
    return value; // replace with the Y-axis transform
}

This makes priority explicit and gives each axis one final writer.

Last updated