+static void sfd_encode( v2i co, const char *str, enum world_sfd_align align ){
+ i32 row_h = world_sfd.h -1 -co[1];
+ i32 offset_x = 0;
+
+ i32 w = VG_MIN( strlen(str), world_sfd.w );
+ if( align == k_world_sfd_center )
+ offset_x = (world_sfd.w - w) / 2;
+ else if( align == k_world_sfd_right )
+ offset_x = world_sfd.w - w;
+ else
+ offset_x = co[0];
+
+ for( i32 i=0; i<world_sfd.w; i++ ){
+ i32 u = i + offset_x,
+ idx = (world_sfd.w*row_h + u) * 2;
+
+ if( (u >= world_sfd.w) || (u < 0) )
+ continue;
+
+ if( !str[i] )
+ return;
+
+ world_sfd.buffer[idx] = sfd_encode_glyph( str[i] );
+ }
+}
+
+static void world_sfd_compile_scores( struct leaderboard_cache *board,
+ const char *title ){
+ for( u32 i=0; i<13; i++ )
+ sfd_clear(i);
+
+ sfd_encode( (v2i){0,0}, title, k_world_sfd_left );
+
+ if( !board ){
+ sfd_encode( (v2i){-1,4}, "Error out of range", k_world_sfd_center );
+ return;
+ }
+
+ if( !network_connected() ){
+ sfd_encode( (v2i){-1,0}, "Offline", k_world_sfd_right );
+ return;
+ }
+
+ if( board->status == k_request_status_not_found ){
+ sfd_encode( (v2i){-1,4}, "No records", k_world_sfd_center );
+ return;
+ }
+
+ if( board->status != k_request_status_ok ){
+ char buf[32];
+ vg_str s;
+ vg_strnull( &s, buf, 32 );
+ vg_strcat( &s, "Error: " );
+ vg_strcati32( &s, board->status );
+ sfd_encode( (v2i){-1,4}, buf, k_world_sfd_center );
+ return;
+ }
+
+ vg_msg body;
+ vg_msg_init( &body, board->data, board->data_len );
+
+ const char *alias = "rows";
+
+ if( world_sfd.view_weekly ){
+ alias = "rows_weekly";
+ sfd_encode( (v2i){-1,0}, "Weekly", k_world_sfd_right );
+ }
+ else {
+ sfd_encode( (v2i){-1,0}, "All-Time", k_world_sfd_right );
+ }