From d55fa64714def1657cb70656cd723ff88880f445 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Sun, 27 Oct 2024 07:23:08 -0500 Subject: [PATCH] example: restore more examples --- example/clipping.cpp | 1 + example/clipping2.cpp | 1 + example/clipping_textured.cpp | 1 + example/example.mk | 84 +++++++++--------- example/font_outline.cpp | 43 +++++---- example/font_outline_punch_through.cpp | 56 ++++++++---- example/heart.cpp | 2 +- example/macaw_cube.cpp | 6 +- example/macaw_cube_render_to_texture.cpp | 6 +- example/macaw_multipass.cpp | 15 ++-- example/macaw_twiddle.cpp | 6 +- example/maple_analog.cpp | 17 ++-- example/maple_controller.cpp | 20 +++-- example/maple_device_request.cpp | 3 +- example/maple_font.cpp | 3 + example/maple_mouse.cpp | 1 + example/maple_storage.cpp | 5 ++ example/maple_vibrator.cpp | 3 + example/maple_wink.cpp | 3 + example/modifier_volume_with_two_volumes.cpp | 1 + example/texture_filtering_maple.cpp | 1 + font/dejavusansmono/dejavusansmono.data | Bin 18336 -> 34720 bytes .../dejavusansmono/dejavusansmono_mono.data.h | 5 ++ font/dejavusansmono/dejavusansmono_mono.hpp | 5 -- font/europc_mono_9x14/europc_mono_9x14.hpp | 7 -- font/ter_u20n/ter_u20n.hpp | 5 -- font/verite_8x16/verite_8x16.hpp | 7 -- 27 files changed, 174 insertions(+), 133 deletions(-) create mode 100644 font/dejavusansmono/dejavusansmono_mono.data.h delete mode 100644 font/dejavusansmono/dejavusansmono_mono.hpp delete mode 100644 font/europc_mono_9x14/europc_mono_9x14.hpp delete mode 100644 font/ter_u20n/ter_u20n.hpp delete mode 100644 font/verite_8x16/verite_8x16.hpp diff --git a/example/clipping.cpp b/example/clipping.cpp index 59645f5..40e3335 100644 --- a/example/clipping.cpp +++ b/example/clipping.cpp @@ -50,6 +50,7 @@ void do_get_condition() } maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/clipping2.cpp b/example/clipping2.cpp index 62ce420..051f76b 100644 --- a/example/clipping2.cpp +++ b/example/clipping2.cpp @@ -53,6 +53,7 @@ void do_get_condition() } maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/clipping_textured.cpp b/example/clipping_textured.cpp index 614c071..586e476 100644 --- a/example/clipping_textured.cpp +++ b/example/clipping_textured.cpp @@ -55,6 +55,7 @@ void do_get_condition() } maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/example.mk b/example/example.mk index 8bc1801..ee5b394 100644 --- a/example/example.mk +++ b/example/example.mk @@ -43,11 +43,47 @@ MACAW_TWIDDLE_OBJ = \ holly/region_array.o \ holly/background.o \ holly/ta_fifo_polygon_converter.o \ - macaw.data.o + texture/macaw/macaw.data.o example/macaw_twiddle.elf: LDSCRIPT = $(LIB)/main.lds example/macaw_twiddle.elf: $(START_OBJ) $(MACAW_TWIDDLE_OBJ) +MACAW_CUBE_OBJ = \ + example/macaw_cube.o \ + holly/video_output.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + texture/macaw/macaw.data.o + +example/macaw_cube.elf: LDSCRIPT = $(LIB)/main.lds +example/macaw_cube.elf: $(START_OBJ) $(MACAW_CUBE_OBJ) + +MACAW_CUBE_RENDER_TO_TEXTURE_OBJ = \ + example/macaw_cube_render_to_texture.o \ + holly/video_output.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + texture/macaw/macaw.data.o + +example/macaw_cube_render_to_texture.elf: LDSCRIPT = $(LIB)/main.lds +example/macaw_cube_render_to_texture.elf: $(START_OBJ) $(MACAW_CUBE_RENDER_TO_TEXTURE_OBJ) + +MACAW_MULTIPASS_OBJ = \ + example/macaw_multipass.o \ + holly/video_output.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + texture/macaw/macaw.data.o + +example/macaw_multipass.elf: LDSCRIPT = $(LIB)/main.lds +example/macaw_multipass.elf: $(START_OBJ) $(MACAW_MULTIPASS_OBJ) + FONT_BITMAP_OBJ = \ example/font_bitmap.o \ holly/video_output.o \ @@ -67,7 +103,7 @@ FONT_OUTLINE_OBJ = \ holly/region_array.o \ holly/background.o \ holly/ta_fifo_polygon_converter.o \ - dejavusansmono.data.o + font/dejavusansmono/dejavusansmono.data.o example/font_outline.elf: LDSCRIPT = $(LIB)/main.lds example/font_outline.elf: $(START_OBJ) $(FONT_OUTLINE_OBJ) @@ -79,23 +115,11 @@ FONT_OUTLINE_PUNCH_THROUGH_OBJ = \ holly/region_array.o \ holly/background.o \ holly/ta_fifo_polygon_converter.o \ - dejavusansmono_mono.data.o + font/dejavusansmono/dejavusansmono_mono.data.o example/font_outline_punch_through.elf: LDSCRIPT = $(LIB)/main.lds example/font_outline_punch_through.elf: $(START_OBJ) $(FONT_OUTLINE_PUNCH_THROUGH_OBJ) -MACAW_MULTIPASS_OBJ = \ - example/macaw_multipass.o \ - holly/video_output.o \ - holly/core.o \ - holly/region_array.o \ - holly/background.o \ - holly/ta_fifo_polygon_converter.o \ - macaw.data.o - -example/macaw_multipass.elf: LDSCRIPT = $(LIB)/main.lds -example/macaw_multipass.elf: $(START_OBJ) $(MACAW_MULTIPASS_OBJ) - TRANSLUCENCY_OBJ = \ example/translucency.o \ holly/video_output.o \ @@ -103,7 +127,7 @@ TRANSLUCENCY_OBJ = \ holly/region_array.o \ holly/background.o \ holly/ta_fifo_polygon_converter.o \ - macaw.data.o + texture/macaw/macaw.data.o example/translucency.elf: LDSCRIPT = $(LIB)/main.lds example/translucency.elf: $(START_OBJ) $(TRANSLUCENCY_OBJ) @@ -174,8 +198,8 @@ MODIFIER_VOLUME_WITH_TWO_VOLUMES_OBJ = \ holly/region_array.o \ holly/background.o \ holly/ta_fifo_polygon_converter.o \ - wolf.data.o \ - macaw.data.o \ + texture/wolf/wolf.data.o \ + texture/macaw/macaw.data.o \ maple/maple.o \ $(LIBGCC) @@ -205,30 +229,6 @@ VIEWING_SYSTEM_OBJ = \ example/viewing_system.elf: LDSCRIPT = $(LIB)/main.lds example/viewing_system.elf: $(START_OBJ) $(VIEWING_SYSTEM_OBJ) -MACAW_CUBE_OBJ = \ - example/macaw_cube.o \ - holly/video_output.o \ - holly/core.o \ - holly/region_array.o \ - holly/background.o \ - holly/ta_fifo_polygon_converter.o \ - macaw.data.o - -example/macaw_cube.elf: LDSCRIPT = $(LIB)/main.lds -example/macaw_cube.elf: $(START_OBJ) $(MACAW_CUBE_OBJ) - -MACAW_CUBE_RENDER_TO_TEXTURE_OBJ = \ - example/macaw_cube_render_to_texture.o \ - holly/video_output.o \ - holly/core.o \ - holly/region_array.o \ - holly/background.o \ - holly/ta_fifo_polygon_converter.o \ - macaw.data.o - -example/macaw_cube_render_to_texture.elf: LDSCRIPT = $(LIB)/main.lds -example/macaw_cube_render_to_texture.elf: $(START_OBJ) $(MACAW_CUBE_RENDER_TO_TEXTURE_OBJ) - CLIPPING_OBJ = \ example/clipping.o \ holly/video_output.o \ diff --git a/example/font_outline.cpp b/example/font_outline.cpp index d01ebf0..b630559 100644 --- a/example/font_outline.cpp +++ b/example/font_outline.cpp @@ -18,6 +18,7 @@ #include "holly/region_array.hpp" #include "twiddle.hpp" #include "palette.hpp" +#include "sh7091/serial.hpp" #include "font/font.hpp" #include "font/dejavusansmono/dejavusansmono.data.h" @@ -72,7 +73,7 @@ uint32_t transform(ta_parameter_writer& parameter, | tsp_instruction_word::texture_v_size::from_int(texture_height); const uint32_t texture_address = texture_memory_alloc::texture.start; - const uint32_t texture_control_word = texture_control_word::pixel_format::_4bpp_palette + const uint32_t texture_control_word = texture_control_word::pixel_format::_8bpp_palette | texture_control_word::scan_order::twiddled | texture_control_word::texture_address(texture_address / 8); @@ -140,7 +141,7 @@ uint32_t transform2(ta_parameter_writer& parameter, | tsp_instruction_word::texture_v_size::from_int(texture_height); const uint32_t texture_address = texture_memory_alloc::texture.start; - const uint32_t texture_control_word = texture_control_word::pixel_format::_4bpp_palette + const uint32_t texture_control_word = texture_control_word::pixel_format::_8bpp_palette | texture_control_word::scan_order::twiddled | texture_control_word::texture_address(texture_address / 8); @@ -189,15 +190,24 @@ void init_texture_memory(const struct opb_size& opb_size) background_parameter(0xff0000ff); } -void inflate_font(const uint32_t * src, - const uint32_t stride, - const uint32_t curve_end_ix) +void inflate_font(const uint8_t * src, + const uint32_t width, + const uint32_t height) { - auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); + auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); - twiddle::texture3<4, 8>(texture, reinterpret_cast(src), - stride, - curve_end_ix); + const uint32_t size = width * height; + + uint8_t temp[size] __attribute__((aligned(4))); + + twiddle::texture(temp, + src, + width, + height); + + for (uint32_t i = 0; i < size / 4; i++) { + texture[i] = reinterpret_cast(temp)[i]; + } } uint32_t _ta_parameter_buf[((32 * 10 * 17) + 32) / 4]; @@ -206,14 +216,13 @@ void main() { video_output::set_mode_vga(); - auto font = reinterpret_cast(&_binary_dejavusansmono_data_start); + auto font = reinterpret_cast(&_binary_font_dejavusansmono_dejavusansmono_data_start); auto glyphs = reinterpret_cast(&font[1]); - auto texture = reinterpret_cast(&glyphs[font->glyph_count]); + auto texture = reinterpret_cast(&glyphs[font->glyph_count]); /* serial::integer(font->first_char_code); serial::integer(font->glyph_count); - serial::integer(font->glyph_height); serial::integer(font->texture_stride); serial::integer(font->texture_width); serial::integer(font->texture_height); @@ -223,9 +232,9 @@ void main() */ inflate_font(texture, - font->texture_stride, - font->max_z_curve_ix); - palette_data<16>(); + font->texture_width, + font->texture_height); + palette_data<256>(); // The address of `ta_parameter_buf` must be a multiple of 32 bytes. // This is mandatory for ch2-dma to the ta fifo polygon converter. @@ -272,14 +281,14 @@ void main() font->first_char_code, glyphs, ana, 17, - font->glyph_height * 0); + font->face_metrics.height * 0); transform(parameter, font->texture_width, font->texture_height, font->first_char_code, glyphs, cabal, 26, - font->glyph_height * 1); + font->face_metrics.height * 1); parameter.append() = ta_global_parameter::end_of_list(para_control::para_type::end_of_list); diff --git a/example/font_outline_punch_through.cpp b/example/font_outline_punch_through.cpp index a14dcb6..62d073a 100644 --- a/example/font_outline_punch_through.cpp +++ b/example/font_outline_punch_through.cpp @@ -20,7 +20,7 @@ #include "palette.hpp" #include "font/font.hpp" -#include "dejavusansmono_mono.hpp" +#include "font/dejavusansmono/dejavusansmono_mono.data.h" struct vertex { float x; @@ -71,7 +71,7 @@ uint32_t transform(ta_parameter_writer& parameter, | tsp_instruction_word::texture_v_size::from_int(texture_height); const uint32_t texture_address = texture_memory_alloc::texture.start; - const uint32_t texture_control_word = texture_control_word::pixel_format::_4bpp_palette + const uint32_t texture_control_word = texture_control_word::pixel_format::_8bpp_palette | texture_control_word::scan_order::twiddled | texture_control_word::texture_address(texture_address / 8); @@ -139,7 +139,7 @@ uint32_t transform2(ta_parameter_writer& parameter, | tsp_instruction_word::texture_v_size::from_int(texture_height); const uint32_t texture_address = texture_memory_alloc::texture.start; - const uint32_t texture_control_word = texture_control_word::pixel_format::_4bpp_palette + const uint32_t texture_control_word = texture_control_word::pixel_format::_8bpp_palette | texture_control_word::scan_order::twiddled | texture_control_word::texture_address(texture_address / 8); @@ -188,15 +188,39 @@ void init_texture_memory(const struct opb_size& opb_size) background_parameter(0xff0000ff); } -void inflate_font(const uint32_t * src, - const uint32_t stride, - const uint32_t curve_end_ix) +void inflate_font(const uint8_t * src, + const uint32_t width, + const uint32_t height) { - auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); + auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); - twiddle::texture3<4, 1>(texture, reinterpret_cast(src), - stride, - curve_end_ix); + const uint32_t bits_per_pixel = 1; + const uint32_t pixels_per_byte = 8; + const uint32_t stride = width / pixels_per_byte; + const uint32_t mask = (1 << bits_per_pixel) - 1; + + const uint32_t size = width * height; + + uint8_t temp1[size]; + for (uint32_t y = 0; y < height; y++) { + for (uint32_t x = 0; x < width; x++) { + const uint32_t texture_ix = y * stride + x / pixels_per_byte; + const uint32_t texture_ix_mod = x % pixels_per_byte; + const uint32_t value = (src[texture_ix] >> (bits_per_pixel * texture_ix_mod)) & mask; + temp1[y * width + x] = value; + } + } + + uint8_t temp[size] __attribute__((aligned(4))); + + twiddle::texture(temp, + temp1, + width, + height); + + for (uint32_t i = 0; i < size / 4; i++) { + texture[i] = reinterpret_cast(temp)[i]; + } } uint32_t _ta_parameter_buf[((32 * 10 * 17) + 32) / 4]; @@ -205,9 +229,9 @@ void main() { video_output::set_mode_vga(); - auto font = reinterpret_cast(&_binary_dejavusansmono_mono_data_start); + auto font = reinterpret_cast(&_binary_font_dejavusansmono_dejavusansmono_mono_data_start); auto glyphs = reinterpret_cast(&font[1]); - auto texture = reinterpret_cast(&glyphs[font->glyph_count]); + auto texture = reinterpret_cast(&glyphs[font->glyph_count]); /* serial::integer(font->first_char_code); @@ -222,8 +246,8 @@ void main() */ inflate_font(texture, - font->texture_stride, - font->max_z_curve_ix); + font->texture_width, + font->texture_height); palette_data<2>(); // The address of `ta_parameter_buf` must be a multiple of 32 bytes. @@ -274,14 +298,14 @@ void main() font->first_char_code, glyphs, ana, 17, - font->glyph_height * 0); + font->face_metrics.height * 0); transform(parameter, font->texture_width, font->texture_height, font->first_char_code, glyphs, cabal, 26, - font->glyph_height * 1); + font->face_metrics.height * 1); parameter.append() = ta_global_parameter::end_of_list(para_control::para_type::end_of_list); diff --git a/example/heart.cpp b/example/heart.cpp index 0a24f37..1d1dc7a 100644 --- a/example/heart.cpp +++ b/example/heart.cpp @@ -205,7 +205,7 @@ void transform_model(ta_parameter_writer& parameter, c.g += color.g * 0.1; c.b += color.b * 0.1; if (n_dot_l > 0) { - float intensity = n_dot_l / (length(n) * length(l)); + float intensity = n_dot_l / (magnitude(n) * magnitude(l)); c.r += color.r * intensity * lighting_weight; c.g += color.g * intensity * lighting_weight; c.b += color.b * intensity * lighting_weight; diff --git a/example/macaw_cube.cpp b/example/macaw_cube.cpp index 05abd55..e757505 100644 --- a/example/macaw_cube.cpp +++ b/example/macaw_cube.cpp @@ -17,7 +17,7 @@ #include "holly/background.hpp" #include "memorymap.hpp" -#include "macaw.hpp" +#include "texture/macaw/macaw.data.h" struct vertex { float x; @@ -145,8 +145,8 @@ void init_texture_memory(const struct opb_size& opb_size) void copy_macaw_texture() { - auto src = reinterpret_cast(&_binary_macaw_data_start); - auto size = reinterpret_cast(&_binary_macaw_data_size); + auto src = reinterpret_cast(&_binary_texture_macaw_macaw_data_start); + auto size = reinterpret_cast(&_binary_texture_macaw_macaw_data_size); auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); for (uint32_t px = 0; px < size / 3; px++) { uint8_t r = src[px * 3 + 0]; diff --git a/example/macaw_cube_render_to_texture.cpp b/example/macaw_cube_render_to_texture.cpp index 5210f04..8e01c3c 100644 --- a/example/macaw_cube_render_to_texture.cpp +++ b/example/macaw_cube_render_to_texture.cpp @@ -17,7 +17,7 @@ #include "holly/background.hpp" #include "memorymap.hpp" -#include "macaw.hpp" +#include "texture/macaw/macaw.data.h" struct vertex { float x; @@ -178,8 +178,8 @@ void transform(ta_parameter_writer& parameter, void copy_macaw_texture() { - auto src = reinterpret_cast(&_binary_macaw_data_start); - auto size = reinterpret_cast(&_binary_macaw_data_size); + auto src = reinterpret_cast(&_binary_texture_macaw_macaw_data_start); + auto size = reinterpret_cast(&_binary_texture_macaw_macaw_data_size); auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); for (uint32_t px = 0; px < size / 3; px++) { uint8_t r = src[px * 3 + 0]; diff --git a/example/macaw_multipass.cpp b/example/macaw_multipass.cpp index 9b26f75..8f87f08 100644 --- a/example/macaw_multipass.cpp +++ b/example/macaw_multipass.cpp @@ -17,7 +17,7 @@ #include "holly/video_output.hpp" #include "memorymap.hpp" -#include "macaw.hpp" +#include "texture/macaw/macaw.data.h" struct vertex { float x; @@ -134,11 +134,12 @@ uint32_t transform(uint32_t * ta_parameter_buf, void init_texture_memory(const struct opb_size * opb_size, uint32_t render_passes) { - region_array_multipass(640 / 32, // width - 480 / 32, // height + region_array_multipass(640 / 32, // tile_width + 480 / 32, // tile_height opb_size, - render_passes - ); + render_passes, + texture_memory_alloc::region_array.start, + texture_memory_alloc::object_list.start); background_parameter(0xff00ff00); } @@ -147,8 +148,8 @@ uint32_t _ta_parameter_buf[((32 * (strip_length + 2)) + 32) / 4]; void copy_macaw_texture() { - auto src = reinterpret_cast(&_binary_macaw_data_start); - auto size = reinterpret_cast(&_binary_macaw_data_size); + auto src = reinterpret_cast(&_binary_texture_macaw_macaw_data_start); + auto size = reinterpret_cast(&_binary_texture_macaw_macaw_data_size); auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); for (uint32_t px = 0; px < size / 3; px++) { uint8_t r = src[px * 3 + 0]; diff --git a/example/macaw_twiddle.cpp b/example/macaw_twiddle.cpp index 76ef105..ee9a4e6 100644 --- a/example/macaw_twiddle.cpp +++ b/example/macaw_twiddle.cpp @@ -18,7 +18,7 @@ #include "memorymap.hpp" #include "twiddle.hpp" -#include "macaw.hpp" +#include "texture/macaw/macaw.data.h" struct vertex { float x; @@ -116,8 +116,8 @@ void init_texture_memory(const struct opb_size& opb_size) void init_macaw_texture() { - auto src = reinterpret_cast(&_binary_macaw_data_start); - auto size = reinterpret_cast(&_binary_macaw_data_size); + auto src = reinterpret_cast(&_binary_texture_macaw_macaw_data_start); + auto size = reinterpret_cast(&_binary_texture_macaw_macaw_data_size); auto texture = reinterpret_cast(&texture_memory64[texture_memory_alloc::texture.start / 4]); uint16_t temp[size / 3]; diff --git a/example/maple_analog.cpp b/example/maple_analog.cpp index 4257af4..d977017 100644 --- a/example/maple_analog.cpp +++ b/example/maple_analog.cpp @@ -30,16 +30,16 @@ static ft0::data_transfer::data_format data[4]; +uint32_t send_buf[1024] __attribute__((aligned(32))); +uint32_t recv_buf[1024] __attribute__((aligned(32))); + void do_get_condition() { - uint32_t send_buf[1024] __attribute__((aligned(32))); - uint32_t recv_buf[1024] __attribute__((aligned(32))); + auto writer = maple::host_command_writer(send_buf, recv_buf); using command_type = maple::get_condition; using response_type = maple::data_transfer; - auto writer = maple::host_command_writer(send_buf, recv_buf); - auto [host_command, host_response] = writer.append_command_all_ports(); @@ -47,6 +47,7 @@ void do_get_condition() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; @@ -58,8 +59,8 @@ void do_get_condition() return; } - data[port].analog_axis_3 = data_fields.data.analog_axis_3; - data[port].analog_axis_4 = data_fields.data.analog_axis_4; + data[port].analog_coordinate_axis[2] = data_fields.data.analog_coordinate_axis[2]; + data[port].analog_coordinate_axis[3] = data_fields.data.analog_coordinate_axis[3]; } } @@ -188,8 +189,8 @@ void main() 640 / 32, 480 / 32); - float x_pos = static_cast(data[0].analog_axis_3 - 0x80) * (0.5 / 127); - float y_pos = static_cast(data[0].analog_axis_4 - 0x80) * (0.5 / 127); + float x_pos = static_cast(data[0].analog_coordinate_axis[2] - 0x80) * (0.5 / 127); + float y_pos = static_cast(data[0].analog_coordinate_axis[3] - 0x80) * (0.5 / 127); auto parameter = ta_parameter_writer(ta_parameter_buf); for (uint32_t i = 0; i < border::num_faces; i++) { diff --git a/example/maple_controller.cpp b/example/maple_controller.cpp index 3dd21e0..cc44c2c 100644 --- a/example/maple_controller.cpp +++ b/example/maple_controller.cpp @@ -21,8 +21,8 @@ void do_get_condition() auto writer = maple::host_command_writer(send_buf, recv_buf); - using command_type = get_condition; - using response_type = data_transfer; + using command_type = maple::get_condition; + using response_type = maple::data_transfer; auto [host_command, host_response] = writer.append_command_all_ports(); @@ -31,6 +31,7 @@ void do_get_condition() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; @@ -61,8 +62,8 @@ void do_lm_request(uint8_t port, uint8_t lm) uint32_t host_port_select = host_instruction_port_select(port); uint32_t destination_ap = ap_port_select(port) | ap::de::expansion_device | lm; - using command_type = device_request; - using response_type = device_status; + using command_type = maple::device_request; + using response_type = maple::device_status; auto [host_command, host_response] = writer.append_command(host_port_select, @@ -71,10 +72,11 @@ void do_lm_request(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; auto& data_fields = bus_data.data_fields; - if (bus_data.command_code != device_status::command_code) { + if (bus_data.command_code != maple::device_status::command_code) { serial::string("lm did not reply: "); serial::integer(port, ' '); serial::integer(lm); @@ -115,19 +117,20 @@ void do_device_request() auto writer = maple::host_command_writer(send_buf, recv_buf); - using command_type = device_request; - using response_type = device_status; + using command_type = maple::device_request; + using response_type = maple::device_status; auto [host_command, host_response] = writer.append_command_all_ports(); maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; auto& data_fields = bus_data.data_fields; - if (bus_data.command_code != device_status::command_code) { + if (bus_data.command_code != maple::device_status::command_code) { serial::string("port: "); serial::integer(port); serial::string(" disconnected\n"); @@ -153,6 +156,7 @@ void do_device_request() void main() { + serial::init(0); // flycast needs this in HLE mode, or else it won't start the vcount // counter. video_output::set_mode_vga(); diff --git a/example/maple_device_request.cpp b/example/maple_device_request.cpp index 68ffb6e..0aed218 100644 --- a/example/maple_device_request.cpp +++ b/example/maple_device_request.cpp @@ -7,7 +7,7 @@ void main() { - serial::init(4); + serial::init(0); uint32_t send_buf[1024] __attribute__((aligned(32))); uint32_t recv_buf[1024] __attribute__((aligned(32))); @@ -22,6 +22,7 @@ void main() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/maple_font.cpp b/example/maple_font.cpp index df9f5c1..5b9231e 100644 --- a/example/maple_font.cpp +++ b/example/maple_font.cpp @@ -72,6 +72,7 @@ void send_vmu_framebuffer(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); serial::integer(host_response->bus_data.command_code); serial::integer(host_response->bus_data.destination_ap); @@ -99,6 +100,7 @@ void do_lm_request(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; auto& data_fields = bus_data.data_fields; @@ -156,6 +158,7 @@ void do_device_request() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/maple_mouse.cpp b/example/maple_mouse.cpp index 900a34c..0559c8f 100644 --- a/example/maple_mouse.cpp +++ b/example/maple_mouse.cpp @@ -49,6 +49,7 @@ void do_get_condition() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/maple_storage.cpp b/example/maple_storage.cpp index a138ce4..2fcca49 100644 --- a/example/maple_storage.cpp +++ b/example/maple_storage.cpp @@ -146,6 +146,7 @@ bool do_block_read(storage_state& state, uint16_t block_number, uint8_t * dest) maple::dma_start(state.send_buf, writer.send_offset, state.recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint32_t phase = 0; phase < state.device_status.read_accesses; phase++) { auto& bus_data = host_responses[phase]->bus_data; @@ -227,6 +228,7 @@ bool do_block_write(storage_state& state, uint16_t block_number, uint8_t * src) maple::dma_start(state.send_buf, writer.send_offset, state.recv_buf, writer.recv_offset); + maple::dma_wait_complete(); serial::string("block write status: "); serial::integer(host_response->bus_data.command_code); @@ -316,6 +318,7 @@ void do_lm_request(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; auto& data_fields = bus_data.data_fields; @@ -361,6 +364,7 @@ void do_lm_request(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; auto& data_fields = bus_data.data_fields; @@ -556,6 +560,7 @@ void do_device_request() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/maple_vibrator.cpp b/example/maple_vibrator.cpp index 9ae5fbb..97c9bfc 100644 --- a/example/maple_vibrator.cpp +++ b/example/maple_vibrator.cpp @@ -63,6 +63,7 @@ void do_lm_request(uint8_t port, uint8_t lm) serial::string("dma start\n"); maple::dma_start(command_buf, maple::sizeof_command(host_command), receive_buf, maple::sizeof_command(host_response)); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; if (bus_data.command_code != response_type::command_code) { @@ -123,6 +124,7 @@ void do_lm_request(uint8_t port, uint8_t lm) auto host_response = reinterpret_cast(receive_buf); maple::dma_start(command_buf, maple::sizeof_command(host_command), receive_buf, maple::sizeof_command(host_response)); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; @@ -160,6 +162,7 @@ void do_device_request() const uint32_t command_size = maple::init_host_command_all_ports(command_buf, receive_buf); maple::dma_start(command_buf, command_size, receive_buf, maple::sizeof_command(host_response) * 4); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/maple_wink.cpp b/example/maple_wink.cpp index 30817c4..87228f7 100644 --- a/example/maple_wink.cpp +++ b/example/maple_wink.cpp @@ -76,6 +76,7 @@ void send_wink(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); serial::integer(host_response->bus_data.command_code); serial::integer(host_response->bus_data.destination_ap); @@ -103,6 +104,7 @@ void do_lm_request(uint8_t port, uint8_t lm) maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); auto& bus_data = host_response->bus_data; auto& data_fields = bus_data.data_fields; @@ -160,6 +162,7 @@ void do_device_request() maple::dma_start(send_buf, writer.send_offset, recv_buf, writer.recv_offset); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/modifier_volume_with_two_volumes.cpp b/example/modifier_volume_with_two_volumes.cpp index 9b5d438..e9bd09e 100644 --- a/example/modifier_volume_with_two_volumes.cpp +++ b/example/modifier_volume_with_two_volumes.cpp @@ -52,6 +52,7 @@ void do_get_condition(uint32_t * command_buf, maple::dma_start(command_buf, command_size, receive_buf, maple::sizeof_command(host_response)); + maple::dma_wait_complete(); for (uint8_t port = 0; port < 4; port++) { auto& bus_data = host_response[port].bus_data; diff --git a/example/texture_filtering_maple.cpp b/example/texture_filtering_maple.cpp index 1684c59..5e4c9d0 100644 --- a/example/texture_filtering_maple.cpp +++ b/example/texture_filtering_maple.cpp @@ -249,6 +249,7 @@ void do_get_condition(uint32_t * command_buf, maple::dma_start(command_buf, command_size, receive_buf, maple::sizeof_command(host_response)); + maple::dma_wait_complete(); buttons.reset(); diff --git a/font/dejavusansmono/dejavusansmono.data b/font/dejavusansmono/dejavusansmono.data index a072ce7710fa8fd52fdc5c20b18695f01ce5a734..7cafa02cb3205448cd9a6f1dc9ebe5cc1a45f1c8 100644 GIT binary patch literal 34720 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 Ml=&iL`v1fKKN;>lC;$Ke literal 18336 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

;+!f!a$TB`Kcyy)%zQt17Ta{MN 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 diff --git a/font/dejavusansmono/dejavusansmono_mono.data.h b/font/dejavusansmono/dejavusansmono_mono.data.h new file mode 100644 index 0000000..3025b64 --- /dev/null +++ b/font/dejavusansmono/dejavusansmono_mono.data.h @@ -0,0 +1,5 @@ +#pragma once +#include +extern uint32_t _binary_font_dejavusansmono_dejavusansmono_mono_data_start __asm("_binary_font_dejavusansmono_dejavusansmono_mono_data_start"); +extern uint32_t _binary_font_dejavusansmono_dejavusansmono_mono_data_end __asm("_binary_font_dejavusansmono_dejavusansmono_mono_data_end"); +extern uint32_t _binary_font_dejavusansmono_dejavusansmono_mono_data_size __asm("_binary_font_dejavusansmono_dejavusansmono_mono_data_size"); diff --git a/font/dejavusansmono/dejavusansmono_mono.hpp b/font/dejavusansmono/dejavusansmono_mono.hpp deleted file mode 100644 index ca93a73..0000000 --- a/font/dejavusansmono/dejavusansmono_mono.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#include - -extern uint32_t _binary_dejavusansmono_mono_data_start __asm("_binary_dejavusansmono_mono_data_start"); -extern uint32_t _binary_dejavusansmono_mono_data_end __asm("_binary_dejavusansmono_mono_data_end"); -extern uint32_t _binary_dejavusansmono_mono_data_size __asm("_binary_dejavusansmono_mono_data_size"); diff --git a/font/europc_mono_9x14/europc_mono_9x14.hpp b/font/europc_mono_9x14/europc_mono_9x14.hpp deleted file mode 100644 index a2be09f..0000000 --- a/font/europc_mono_9x14/europc_mono_9x14.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include - -extern uint32_t _binary_europc_mono_9x14_data_start __asm("_binary_europc_mono_9x14_data_start"); -extern uint32_t _binary_europc_mono_9x14_data_end __asm("_binary_europc_mono_9x14_data_end"); -extern uint32_t _binary_europc_mono_9x14_data_size __asm("_binary_europc_mono_9x14_data_size"); diff --git a/font/ter_u20n/ter_u20n.hpp b/font/ter_u20n/ter_u20n.hpp deleted file mode 100644 index 151c6b9..0000000 --- a/font/ter_u20n/ter_u20n.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#include - -extern uint32_t _binary_ter_u20n_data_start __asm("_binary_ter_u20n_data_start"); -extern uint32_t _binary_ter_u20n_data_end __asm("_binary_ter_u20n_data_end"); -extern uint32_t _binary_ter_u20n_data_size __asm("_binary_ter_u20n_data_size"); diff --git a/font/verite_8x16/verite_8x16.hpp b/font/verite_8x16/verite_8x16.hpp deleted file mode 100644 index 5e5bc6c..0000000 --- a/font/verite_8x16/verite_8x16.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include - -extern uint32_t _binary_verite_8x16_data_start __asm("_binary_verite_8x16_data_start"); -extern uint32_t _binary_verite_8x16_data_end __asm("_binary_verite_8x16_data_end"); -extern uint32_t _binary_verite_8x16_data_size __asm("_binary_verite_8x16_data_size");