From: hgn Date: Sun, 23 Jan 2022 21:09:56 +0000 (+0000) Subject: remove new-style text X-Git-Url: https://harrygodden.com/git/?p=fishladder.git;a=commitdiff_plain;h=a69a9e27e7de338a3116ed345ff2d9d19f084329 remove new-style text --- diff --git a/fishladder.c b/fishladder.c index aca4e40..493b704 100644 --- a/fishladder.c +++ b/fishladder.c @@ -166,35 +166,6 @@ struct mesh u32 elements; }; -struct -{ - GLuint vao; - GLuint vbo; - GLuint ebo; - - u32 - title_start, title_count, - desc_start, desc_count, - score_start, score_count, - time_start, time_count, - grid_start, grid_count - ; - - #pragma pack(push,1) - struct vector_glyph_vert - { - v2f co; - v2f uv; - - u32 colour; - } - *buffer; - #pragma pack(pop) - - u16 *indices; -} -text_buffers; - static struct world { // Things that are 'static', aka, initialized once @@ -339,7 +310,6 @@ static void io_reset(void); static struct cell *pcell( v2i pos ); static void lcell( int id, v2i pos ); static void map_reclassify( v2i start, v2i end, int update_texbuffer ); -static u32 gen_text_buffer( const char *str, struct sdf_font *font, v2f origin, float size, u32 start ); static void gen_level_text( struct cmp_level *pLevel ); static int map_load( const char *str, const char *name ); static void map_serialize( FILE *stream ); @@ -673,94 +643,8 @@ static void map_reclassify( v2i start, v2i end, int update_texbuffer ) } } -static u32 gen_text_buffer( const char *str, struct sdf_font *font, v2f origin, float size, u32 start ) -{ - u32 count = 0; - - v2f cursor; - v2f invUv; - v2_copy( origin, cursor ); - - float invScale = (size / (float)font->size); - invUv[0] = 1.0f / (float)font->width; - invUv[1] = 1.0f / (float)font->height; - - u16 base_idx = start * 4; - - const char *_c = str; - char c; - while( (c = *(_c ++)) ) - { - if( c == '\n' ) - { - cursor[1] -= size * 1.25f; - cursor[0] = origin[0]; - } - else if( c >= 32 && c <= 126 ) - { - struct sdf_char *pch = &font->characters[ c - ' ' ]; - struct vector_glyph_vert *vt = &text_buffers.buffer[ count * 4 ]; - u16 *ind = &text_buffers.indices[ count * 6 ]; - - // Emit quad - v2f p0; v2f uv0; - v2f p1; v2f uv1; - - v2_muladds( cursor, (v2f){ pch->originX, -pch->originY }, -invScale, p0 ); - v2_muladds( p0, (v2f){ pch->w, -pch->h }, invScale, p1 ); - - v2_mul( (v2f){ pch->uvx, pch->uvy }, invUv, uv0 ); - v2_muladd( uv0, (v2f){ pch->w, pch->h }, invUv, uv1 ); - - v2_copy( p0, vt[0].co ); - v2_copy( uv0, vt[0].uv ); - vt[0].colour = 0xffffffff; - - v2_copy( (v2f){ p0[0], p1[1] }, vt[1].co ); - v2_copy( (v2f){ uv0[0], uv1[1] }, vt[1].uv ); - vt[1].colour = 0xffffffff; - - v2_copy( p1, vt[2].co ); - v2_copy( uv1, vt[2].uv ); - vt[2].colour = 0xffffffff; - - v2_copy( (v2f){ p1[0], p0[1] }, vt[3].co ); - v2_copy( (v2f){ uv1[0], uv0[1] }, vt[3].uv ); - vt[3].colour = 0xffffffff; - - // Emit indices - ind[0] = base_idx+count*4; - ind[1] = base_idx+count*4+1; - ind[2] = base_idx+count*4+2; - ind[3] = base_idx+count*4; - ind[4] = base_idx+count*4+2; - ind[5] = base_idx+count*4+3; - - cursor[0] += (float)pch->advance * invScale; - count ++; - } - } - - glBindVertexArray( text_buffers.vao ); - - glBindBuffer( GL_ARRAY_BUFFER, text_buffers.vbo ); - glBufferSubData( GL_ARRAY_BUFFER, - start*4*sizeof( struct vector_glyph_vert ), - count*4*sizeof( struct vector_glyph_vert ), - text_buffers.buffer - ); - - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, text_buffers.ebo ); - glBufferSubData( GL_ELEMENT_ARRAY_BUFFER, start*6*sizeof(u16), count*6*sizeof(u16), text_buffers.indices ); - - return count; -} - static void gen_level_text( struct cmp_level *pLevel ) { - text_buffers.title_count = gen_text_buffer( pLevel->title, &font_Ubuntu, (v2f){ -5.0f, -0.6f }, 0.6f, text_buffers.title_start ); - text_buffers.desc_count = gen_text_buffer( pLevel->description, &font_Ubuntu, (v2f){ -5.0, -0.9f }, 0.25f, text_buffers.desc_start ); - // Old style UI. ui_px const unit_scale_px = 4*UI_GLYPH_SPACING_X; // 4 char per unit ui_begin( &world.st.world_text, world.w*unit_scale_px, world.h*unit_scale_px ); @@ -3071,20 +2955,6 @@ void vg_render(void) // TEXT ELEMENTS // ======================================================================================================== - SHADER_USE( shader_sdf ); - glBindVertexArray( text_buffers.vao ); - glUniformMatrix3fv( SHADER_UNIFORM( shader_sdf, "uPv" ), 1, GL_FALSE, (float *)vg_pv ); - - vg_tex2d_bind( &tex_ubuntu, 0 ); - glUniform1i( SHADER_UNIFORM( shader_sdf, "uTexGlyphs" ), 0 ); - - glUniform4f( SHADER_UNIFORM( shader_sdf, "uColour" ), 1.0f, 1.0f, 1.0f, 1.0f ); - glDrawElements( GL_TRIANGLES, text_buffers.title_count*6, GL_UNSIGNED_SHORT, (void*)( text_buffers.title_start*6*sizeof(u16) ) ); - glDrawElements( GL_TRIANGLES, text_buffers.desc_count*6, GL_UNSIGNED_SHORT, (void*)( text_buffers.desc_start*6*sizeof(u16) ) ); - - glUniform4f( SHADER_UNIFORM( shader_sdf, "uColour" ), 1.0f, 1.0f, 1.0f, 0.17f ); - glDrawElements( GL_TRIANGLES, text_buffers.grid_count*6, GL_UNSIGNED_SHORT, (void*)( text_buffers.grid_start*6*sizeof(u16) ) ); - // Old style m3x3f mvp_text; m3x3_identity( mvp_text ); @@ -3307,8 +3177,11 @@ void vg_render(void) void vg_ui(void) { // Drawing world name - gui_text( (ui_px [2]){ vg_window_x / 2, 4 }, "THIS IS A WORLD NAME", 2, k_text_align_center ); - gui_text( (ui_px [2]){ vg_window_x / 2, 28 }, "And here is its cool description yo", 1, k_text_align_center ); + if( world.pCmpLevel ) + { + gui_text( (ui_px [2]){ vg_window_x / 2, 4 }, world.pCmpLevel->title, 2, k_text_align_center ); + gui_text( (ui_px [2]){ vg_window_x / 2, 28 }, world.pCmpLevel->description, 1, k_text_align_center ); + } if( world.st.state == k_game_state_settings ) { @@ -3828,120 +3701,6 @@ void vg_start(void) ui_init_context( &world.st.world_text, 15000 ); } - // Create text buffers - { - // Work out the counts for each 'segment' - u32 desc_max_size = 0, title_max_size = 0, - score_max_size = 10, - time_max_size = 10, - - size_level_texts = 6*9*7 - ; - - for( int i = 0; i < vg_list_size( career_packs ); i ++ ) - { - struct career_level_pack *set = &career_packs[i]; - for( int j = 0; j < set->count; j ++ ) - { - struct cmp_level *lvl = &set->pack[j]; - - desc_max_size = VG_MAX( desc_max_size, strlen( lvl->description ) ); - title_max_size = VG_MAX( title_max_size, strlen( lvl->title ) ); - } - } - - // Full buffer - u32 total_characters = - title_max_size + - desc_max_size + - score_max_size + - time_max_size + - size_level_texts; - - u32 total_faces = total_characters * 2, - total_vertices = total_characters * 4, - total_indices = total_faces * 3; - - // Working buffer - u32 work_buffer_total_chars = - VG_MAX( 7, VG_MAX( VG_MAX( desc_max_size, title_max_size ), VG_MAX( score_max_size, time_max_size ) ) ); - - u32 total_work_faces = work_buffer_total_chars * 2, - total_work_vertices = work_buffer_total_chars * 4, - total_work_indices = total_work_faces * 3; - - text_buffers.title_count = 0; - text_buffers.desc_count = 0; - text_buffers.score_count = 0; - text_buffers.time_count = 0; - text_buffers.grid_count = size_level_texts; - - // Calculate offsets - text_buffers.title_start = 0; - text_buffers.desc_start = text_buffers.title_start + title_max_size; - text_buffers.score_start = text_buffers.desc_start + desc_max_size; - text_buffers.time_start = text_buffers.score_start + score_max_size; - text_buffers.grid_start = text_buffers.time_start + time_max_size; - - // Opengl - glGenVertexArrays(1, &text_buffers.vao); - glGenBuffers( 1, &text_buffers.vbo ); - glGenBuffers( 1, &text_buffers.ebo ); - glBindVertexArray( text_buffers.vao ); - - glBindBuffer( GL_ARRAY_BUFFER, text_buffers.vbo ); - glBufferData( GL_ARRAY_BUFFER, total_vertices * sizeof( struct vector_glyph_vert ), NULL, GL_DYNAMIC_DRAW ); - - glBindVertexArray( text_buffers.vao ); - - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, text_buffers.ebo ); - glBufferData( GL_ELEMENT_ARRAY_BUFFER, total_indices * sizeof( u16 ), NULL, GL_DYNAMIC_DRAW ); - - u32 const stride = sizeof( struct vector_glyph_vert ); - - // XY - glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE, stride, (void *)offsetof( struct vector_glyph_vert, co ) ); - glEnableVertexAttribArray( 0 ); - - // UV - glVertexAttribPointer( 1, 2, GL_FLOAT, GL_FALSE, stride, (void *)offsetof( struct vector_glyph_vert, uv ) ); - glEnableVertexAttribArray( 1 ); - - // COLOUR - glVertexAttribPointer( 2, 4, GL_UNSIGNED_BYTE, GL_TRUE, stride, (void *)offsetof( struct vector_glyph_vert, colour ) ); - glEnableVertexAttribArray( 2 ); - - // Offline memory - text_buffers.buffer = (struct vector_glyph_vert *)malloc( total_work_vertices * sizeof(struct vector_glyph_vert) ); - text_buffers.indices = (u16*)malloc( total_work_indices * sizeof(u16) ); - - char label[8]; - for( int i = 1; i < 7; i ++ ) - label[i] = ' '; - label[7] = 0x00; - - // Reset grid - for( int x = 0; x < 6; x ++ ) - { - for( int y = 0; y < 9; y ++ ) - { - label[0] = ' '; - - if( x == 0 ) - { - if( y != 8 ) - label[0] = 'A' + y; - } - else if( y == 8 ) - { - label[0] = '0' + x; - } - - gen_text_buffer( label, &font_Ubuntu, (v2f){ -6.0f + x + (x == 0? 0.6f: 0.2f), y + 0.2f }, 0.35f, text_buffers.grid_start+(y*6+x)*7 ); - } - } - } - // Restore gamestate career_local_data_init(); career_load(); @@ -3956,13 +3715,6 @@ void vg_free(void) console_save_map( 0, NULL ); career_serialize(); - glDeleteVertexArrays( 1, &text_buffers.vao ); - glDeleteBuffers( 1, &text_buffers.vbo ); - glDeleteBuffers( 1, &text_buffers.ebo ); - - free( text_buffers.buffer ); - free( text_buffers.indices ); - resource_free_main(); glDeleteTextures( 1, &world.background_data ); diff --git a/fishladder_resources.h b/fishladder_resources.h index 030a050..a3a2a87 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -1,119 +1,3 @@ -// FONTS - -struct sdf_char -{ - u16 uvx, uvy, originX, originY, w, h, advance; -}; - -struct sdf_font -{ - const char *name; - int size, width, height; - struct sdf_char *characters; -}; - -static struct sdf_char characters_Ubuntu[] = { - {655, 167, 9, 9, 18, 18, 11}, - {561, 64, 6, 42, 25, 52, 13}, - {435, 167, 6, 45, 32, 30, 20}, - {797, 64, 7, 42, 46, 51, 32}, - {362, 0, 6, 46, 39, 60, 27}, - {918, 0, 7, 43, 55, 52, 41}, - {973, 0, 7, 43, 47, 52, 32}, - {467, 167, 6, 45, 23, 30, 11}, - {142, 0, 5, 46, 30, 64, 15}, - {172, 0, 9, 46, 30, 64, 15}, - {291, 167, 7, 42, 38, 37, 23}, - {171, 167, 6, 35, 40, 42, 27}, - {410, 167, 7, 14, 25, 31, 12}, - {625, 167, 8, 26, 30, 22, 14}, - {558, 167, 6, 15, 25, 24, 12}, - {0, 0, 10, 46, 39, 64, 18}, - {88, 64, 7, 43, 41, 52, 27}, - {532, 116, 5, 42, 32, 51, 27}, - {370, 64, 6, 43, 39, 52, 27}, - {409, 64, 6, 43, 39, 52, 27}, - {176, 116, 7, 42, 42, 51, 27}, - {448, 64, 6, 42, 39, 52, 27}, - {170, 64, 6, 42, 40, 52, 27}, - {343, 116, 6, 42, 40, 51, 27}, - {854, 0, 6, 43, 40, 53, 27}, - {210, 64, 7, 43, 40, 52, 27}, - {146, 167, 6, 34, 25, 43, 12}, - {564, 116, 7, 34, 26, 51, 12}, - {211, 167, 6, 34, 40, 39, 27}, - {370, 167, 6, 30, 40, 32, 27}, - {251, 167, 6, 34, 40, 39, 27}, - {525, 64, 8, 43, 36, 52, 19}, - {401, 0, 6, 43, 57, 59, 45}, - {700, 64, 9, 42, 49, 51, 32}, - {218, 116, 5, 42, 42, 51, 31}, - {769, 0, 6, 43, 44, 53, 30}, - {935, 64, 5, 42, 45, 51, 34}, - {383, 116, 5, 42, 40, 51, 27}, - {423, 116, 5, 42, 38, 51, 26}, - {724, 0, 6, 43, 45, 53, 32}, - {45, 116, 5, 42, 44, 51, 34}, - {590, 116, 5, 42, 23, 51, 13}, - {487, 64, 9, 42, 38, 52, 24}, - {89, 116, 5, 42, 44, 51, 30}, - {461, 116, 5, 42, 38, 51, 25}, - {646, 64, 6, 42, 54, 51, 42}, - {0, 116, 5, 42, 45, 51, 35}, - {674, 0, 6, 43, 50, 53, 37}, - {302, 116, 5, 42, 41, 51, 29}, - {312, 0, 6, 43, 50, 61, 37}, - {133, 116, 5, 42, 43, 51, 30}, - {813, 0, 7, 43, 41, 53, 25}, - {0, 64, 8, 42, 44, 52, 27}, - {44, 64, 5, 42, 44, 52, 33}, - {749, 64, 8, 42, 48, 51, 31}, - {586, 64, 8, 42, 60, 51, 44}, - {843, 64, 8, 42, 46, 51, 30}, - {889, 64, 9, 42, 46, 51, 28}, - {260, 116, 7, 42, 42, 51, 27}, - {202, 0, 4, 46, 29, 64, 16}, - {39, 0, 10, 46, 39, 64, 18}, - {231, 0, 9, 46, 29, 64, 16}, - {329, 167, 7, 42, 41, 36, 27}, - {583, 167, 9, 4, 42, 22, 23}, - {490, 167, 6, 46, 27, 28, 18}, - {695, 116, 7, 34, 38, 44, 25}, - {458, 0, 5, 46, 40, 56, 28}, - {733, 116, 7, 34, 37, 44, 22}, - {498, 0, 7, 46, 40, 56, 28}, - {655, 116, 7, 34, 40, 44, 27}, - {641, 0, 5, 46, 33, 55, 18}, - {250, 64, 7, 34, 40, 52, 27}, - {603, 0, 5, 46, 38, 55, 27}, - {894, 0, 6, 44, 24, 53, 12}, - {282, 0, 12, 44, 30, 62, 12}, - {564, 0, 5, 46, 39, 55, 25}, - {538, 0, 5, 46, 26, 56, 13}, - {860, 116, 5, 34, 52, 43, 41}, - {0, 167, 5, 34, 38, 43, 27}, - {613, 116, 7, 34, 42, 44, 28}, - {290, 64, 5, 34, 40, 52, 28}, - {330, 64, 7, 34, 40, 52, 28}, - {113, 167, 5, 34, 33, 43, 18}, - {770, 116, 7, 34, 36, 44, 21}, - {499, 116, 5, 42, 33, 51, 19}, - {38, 167, 5, 34, 38, 43, 27}, - {912, 116, 8, 34, 41, 43, 24}, - {806, 116, 8, 34, 54, 43, 37}, - {953, 116, 8, 34, 41, 43, 24}, - {129, 64, 9, 34, 41, 52, 24}, - {76, 167, 7, 34, 37, 43, 22}, - {78, 0, 7, 46, 32, 64, 16}, - {260, 0, 4, 46, 22, 64, 13}, - {110, 0, 9, 46, 32, 64, 16}, - {517, 167, 7, 27, 41, 26, 27}, -}; - -static struct sdf_font font_Ubuntu = {"Ubuntu", 48, 1024, 256, characters_Ubuntu}; - -vg_tex2d tex_ubuntu = { .path = "textures/ubuntu.qoi" }; - // TEXTURES // =========================================================================================================== @@ -140,7 +24,6 @@ vg_tex2d *texture_list[] = { &tex_monofur, &tex_unkown, &tex_buttons, - &tex_ubuntu, &tex_sprites }; @@ -590,38 +473,6 @@ SHADER_DEFINE( shader_buttons, UNIFORMS({ "uPv", "uOffset", "uTexMain", "uColour" }) ) -SHADER_DEFINE( shader_sdf, - - // VERTEX - "layout (location=0) in vec2 a_co;" - "layout (location=1) in vec2 a_uv;" - "uniform mat3 uPv;" - "" - "out vec2 aTexCoords;" - "" - "void main()" - "{" - "gl_Position = vec4( uPv * vec3( a_co, 1.0 ), 1.0 );" - "aTexCoords = a_uv;" - "}", - - // FRAGMENT - "uniform sampler2D uTexGlyphs;" - "uniform vec4 uColour;" - "out vec4 FragColor;" - "" - "in vec2 aTexCoords;" - "" - "void main()" - "{" - "vec4 glyph = texture( uTexGlyphs, aTexCoords );" - "FragColor = vec4( uColour.rgb, smoothstep( 0.46, 0.54, glyph.r ) * uColour.a );" - //"FragColor = glyph;" - "}" - , - UNIFORMS({ "uPv", "uTexGlyphs", "uColour" }) -) - SHADER_DEFINE( shader_sprite, // VERTEX @@ -663,7 +514,6 @@ void vg_register(void) SHADER_INIT( shader_background ); SHADER_INIT( shader_wire ); SHADER_INIT( shader_buttons ); - SHADER_INIT( shader_sdf ); SHADER_INIT( shader_sprite ); } @@ -724,7 +574,6 @@ struct cmp_level static struct cmp_level cmp_levels_tutorials[] = { - // r1 { .serial_id = 0, .title = "PRINCIPLE 1", @@ -735,7 +584,6 @@ static struct cmp_level cmp_levels_tutorials[] = ._unlock = 1, .is_tutorial = 1 }, - // r1 { .serial_id = 1, .title = "PRINCIPLE 2", @@ -746,7 +594,6 @@ static struct cmp_level cmp_levels_tutorials[] = ._unlock = 2, .is_tutorial = 1, }, - // r1 { .serial_id = 2, .title = "PRINCIPLE 3", @@ -757,7 +604,6 @@ static struct cmp_level cmp_levels_tutorials[] = ._unlock = 12, .is_tutorial = 1 }, - // r1 { .serial_id = 12, .title = "PRINCIPLE 4", @@ -768,12 +614,31 @@ static struct cmp_level cmp_levels_tutorials[] = ._unlock = 6, .is_tutorial = 1, .achievement = "TUTORIALS" + }, + { + .serial_id = 15, + .title = "PRINCIPLE 5", + .map_name = "cmp_b10", + .description = + "", + + ._unlock = 16, + .is_tutorial = 1 + }, + { + .serial_id = 17, + .title = "PRINCIPLE 6", + .map_name = "cmp_b11", + .description = + "(Right click)", + + ._unlock = 18, + .is_tutorial = 1 } }; static struct cmp_level cmp_levels_basic[] = { - // r2 GM { .serial_id = 6, .title = "PATCH", @@ -784,7 +649,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 7, ._linked = 3 }, - // r1 GM { .serial_id = 3, .title = "SUBDIVISION 1", @@ -795,7 +659,6 @@ static struct cmp_level cmp_levels_basic[] = ._linked = 4, ._unlock = 5 }, - // r1 GM { .serial_id = 4, .title = "SUBDIVISION 2", @@ -805,7 +668,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 7 }, - // r1 GM { .serial_id = 5, .title = "RESTRUCTURE", @@ -815,7 +677,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 8 }, - // r2 GM { .serial_id = 7, .title = "PATTERNS 1", @@ -826,7 +687,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 15, ._linked = 8 }, - // r2 GM { .serial_id = 8, .title = "PATTERNS 2", @@ -836,18 +696,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 15 }, - // r2 GM - { - .serial_id = 15, - .title = "PRINCIPLE 5", - .map_name = "cmp_b10", - .description = - "", - - ._unlock = 16, - .is_tutorial = 1 - }, - // r2 GM { .serial_id = 16, .title = "ROUTING PROBLEM", @@ -857,7 +705,6 @@ static struct cmp_level cmp_levels_basic[] = ._linked = 9 }, - // r2 GM { .serial_id = 9, .title = "MIGHTY CONSUMER", @@ -878,7 +725,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 17 }, - // r2 GM { .serial_id = 11, .title = "REVERSE", @@ -888,18 +734,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 17 }, - // r2 GM - { - .serial_id = 17, - .title = "PRINCIPLE 6", - .map_name = "cmp_b11", - .description = - "(Right click)", - - ._unlock = 18, - .is_tutorial = 1 - }, - // r2 GM { .serial_id = 18, .title = "NOT GATE", @@ -909,7 +743,6 @@ static struct cmp_level cmp_levels_basic[] = ._linked = 19, ._unlock = 20 }, - // r2 GM { .serial_id = 19, .title = "AND GATE", @@ -918,7 +751,6 @@ static struct cmp_level cmp_levels_basic[] = ._unlock = 20 }, - // r2 GM { .serial_id = 20, .title = "QUALIFICATION PROJECT", @@ -950,7 +782,6 @@ static struct cmp_level cmp_levels_grad[] = ._linked = 21 }, - // r2 GM { .serial_id = 21, .title = "SIMPLE ADDITION", @@ -960,7 +791,6 @@ static struct cmp_level cmp_levels_grad[] = ._linked = 22, ._unlock = 23 }, - // r2 GM { .serial_id = 22, .title = "SECRET CODE", @@ -983,25 +813,25 @@ static struct cmp_level cmp_levels_computer[] = }, { .serial_id = 24, - .title = "3 BIT ADDITION", + .title = "3 BIT ADDER", .map_name = "cmp_add3b", - .description = "", + .description = "binary addition", .strings = { { .placement = k_placement_top, //.str ="\t\t\t\t\t\t\t\t\t| NUMBER A | | NUMBER B |\n" .str ="" -"\t\t\t\t\t\t\t\t\t\x80\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x82 \x80\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x82\n" -"\t\t\t\t\t\t\t\t\t\x83 4 2 1 \x84 add \x83 4 2 1 \x84\n" +"\t\t\t\t\t\t\t\t\t\x8A 4 2 1 \x8B \x8A 4 2 1 \x8B\n" +"\t\t\t\t\t\t\t\t\t\x83 \x84 add \x83 \x84\n" "\t\t\t\t\t\t\t\t\t\x83 \x84 \x83 \x84" }, { .placement = k_placement_bottom, .str = "\t\t\t\x83 \x84\n" -"\t\t\t\x83 8 4 2 1 \x84 result a+b\n" -"\t\t\t\x85\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x86" +"\t\t\t\x83 \x84 result a+b\n" +"\t\t\t\x83 8 4 2 1 \x84" } }, @@ -1032,29 +862,29 @@ career_packs[] = .pack = cmp_levels_tutorials, .count = vg_list_size( cmp_levels_tutorials ), .primary_colour = { 0.204f, 0.345f, 0.553f }, - .origin = { -5, 0 }, - .dims = { 1, 4 } + .origin = { -5, -2 }, + .dims = { 1, 7 } }, { .pack = cmp_levels_basic, .count = vg_list_size( cmp_levels_basic ), .primary_colour = { 0.304f, 0.245f, 0.553f }, - .origin = { -3, 0 }, - .dims = { 3, 5 } + .origin = { -3, -2 }, + .dims = { 3, 7 } }, { .pack = cmp_levels_grad, .count = vg_list_size( cmp_levels_grad ), .primary_colour = { 0.553f, 0.345f, 0.204f }, .origin = { -5, 6 }, - .dims = { 4, 1 } + .dims = { 5, 1 } }, { .pack = cmp_levels_computer, .count = vg_list_size( cmp_levels_computer ), .primary_colour = { 0.75f, 0.23f, 0.39f }, .origin = { -5, 8 }, - .dims = { 5, 1 } + .dims = { 5, 2 } } }; diff --git a/fonts/vg_font.png b/fonts/vg_font.png index f669d8c..892a6dd 100644 Binary files a/fonts/vg_font.png and b/fonts/vg_font.png differ diff --git a/maps/cmp_add3b.map b/maps/cmp_add3b.map index 59d190a..5d18ed4 100644 --- a/maps/cmp_add3b.map +++ b/maps/cmp_add3b.map @@ -1,5 +1,5 @@ ########################; -###-#-#-#-##############;:b:b:b,b:::b,::b:b,b::: +###-.-.-.-##############;:b:b:b,b:::b,::b:b,b::: ## ##; ## ##; ## ##; @@ -24,5 +24,5 @@ ## ##; ## ##; ## ##; -#########+#+#+##+#+#+###;::b:b,b::b:b,:b:b:b,:b::b,b:b:b:b,b:b:b:b +#########+.+.+##+.+.+###;::b:b,b::b:b,:b:b:b,:b::b,b:b:b:b,b:b:b:b ########################; diff --git a/vg/vg_pxfont.h b/vg/vg_pxfont.h index 0bf1cf5..a67a48d 100644 --- a/vg/vg_pxfont.h +++ b/vg/vg_pxfont.h @@ -99,7 +99,7 @@ 0,0,0,0,0,0,0,0, 0x3000000,0,0,0,0,0,0,0, 0x3000000,0,0,0,0,0,0,0, -0x1800000,0x6000000,0x600000,0,0x6000180,0x1800600,0x6000000,0, +0x1800000,0x6000000,0x600000,0,0x6000180,0x1800600,0,0, 0x800000,0x6000000,0x600000,0,0x6000180,0x1800600,0x6000000,0, 0x1c0,0x60003c0,0x6003c0,0x1e003c0,0x6000000,0x600,0x60007e0,0x3c007e0, 0x3e0,0x7c007e0,0x3e007e0,0x3e007e0,0x6000380,0x38006e0,0x6000ff0,0x7e00ff0, @@ -107,16 +107,16 @@ 0x3e0,0x6600600,0x66006e0,0x3000660,0x7e00180,0x1800780,0x6000db0,0x6600c30, 0x660,0x6600600,0x66007c0,0x3000660,0x6600180,0x18007c0,0x6000c30,0x6600c30, 0x660,0x6600600,0x6600700,0x3e007e0,0x6600180,0x18006c0,0x6000c30,0x6600e70, -0x7e0,0x7e007e0,0x7e003e0,0x3c003e0,0x6600180,0x1800660,0x7e00c30,0x6600ff0, -0x3e0,0x7c003c0,0x3e001c0,0x3000060,0x6600180,0x1800660,0x3e00c30,0x66007e0, +0x7e0,0x7e007e0,0x7e003e0,0x3c003e0,0x6600180,0x1800660,0x7c00c30,0x6600ff0, +0x3e0,0x7c003c0,0x3e001c0,0x3000060,0x6600180,0x1800660,0x3c00c30,0x66007e0, 0,0,0,0x70007e0,0,0x3800000,0,0, 0,0,0,0x60003c0,0,0x3000000,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0xc0,0x300,0, -0,0,0x3000000,0,0,0x1c0,0x1800380,0, -0,0,0x3000000,0,0,0x180,0x1800180,0x1ce0, +0,0,0,0,0,0x1c0,0x1800380,0, +0,0,0,0,0,0x180,0x1800180,0x1ce0, 0x3c003c0,0x1c001c0,0x3000660,0xc300c30,0xc300660,0x7e00180,0x1800180,0x3ff0, 0x7e007e0,0x3c003c0,0x3000660,0xc300c30,0xe700660,0x7e00380,0x18001c0,0x7303ff0, 0x6600660,0x3000300,0x3c00660,0x6600c30,0x7e00660,0xe00700,0x18000e0,0xfb03ff0, @@ -135,13 +135,13 @@ 0,0x100,0x800100,0x800000,0x8000010,0,0,0, 0,0,0,0,0x8000010,0,0,0, 0,0x100,0x800100,0x800000,0x8000010,0,0,0, -0x1b66db6,0x6d800100,0x800100,0x800000,0x68000016,0,0,0, +0x1b66db6,0x6d800100,0x800100,0x800000,0x68000016,0x1800180,0,0, 0,0,0,0,0x8000010,0,0,0, -0x1000000,0x800100,0x8001b6,0x6d806db6,0x8000010,0,0,0, -0x1000000,0x800100,0x800000,0,0x8000010,0,0,0, +0x1000000,0x800100,0x8001b6,0x6d806db6,0x8000010,0x1000080,0,0, +0x1000000,0x800100,0x800000,0,0x8000010,0x1000080,0,0, 0,0,0,0,0x8000010,0,0,0, -0x1000000,0x800100,0x800000,0,0x4000020,0,0,0, -0x1000000,0x800100,0x800000,0,0x2000040,0,0,0, +0x1000000,0x800100,0x800000,0,0x4000020,0x1000080,0,0, +0x1000000,0x800100,0x800000,0,0x2000040,0x1000080,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,