From 8cead9614fe5acd6403040e023e11c4ab259c73a Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Mon, 9 Sep 2024 04:20:40 -0500 Subject: [PATCH] add pipelined rendering examples This adds a new texture memory allocation header, texture_memory_alloc2.hpp, with two of each memory area. This also adds two new examples, "cube_textured" and "cube_vq" that demonstrate using the new texture_memory_alloc2 to perform CORE rendering, geometry transformation, and tile acceleration concurrently. --- Makefile | 14 +- base.mk | 12 +- client.py | 22 +-- color_format.hpp | 34 ++++ common.mk | 2 +- example/cube_textured.cpp | 239 ++++++++++++++++++++++++++++ example/cube_vq.cpp | 236 +++++++++++++++++++++++++++ example/example.mk | 30 +++- holly/background.cpp | 12 +- holly/background.hpp | 2 + holly/core.cpp | 27 +++- holly/core.hpp | 7 + holly/region_array.cpp | 29 +--- holly/region_array.hpp | 25 ++- holly/ta_fifo_polygon_converter.cpp | 33 ++++ holly/ta_fifo_polygon_converter.hpp | 9 ++ holly/texture_memory_alloc2.hpp | 86 ++++++++++ model/cube.h | 119 ++++++++++++++ model/cube_material.h | 28 ++++ model/material.h | 25 +++ model/model.h | 53 ++++++ notes/texture_memory_allocation.ods | Bin 0 -> 21241 bytes texture/cube/wn.data | 42 +++++ texture/cube/wn.data.h | 5 + texture/cube/wn.data.pal | Bin 0 -> 440 bytes texture/cube/wn.data.pal.h | 5 + texture/cube/wn.png | Bin 0 -> 12509 bytes texture/panda/panda.vq | Bin 0 -> 67584 bytes texture/panda/panda.vq.h | 5 + 29 files changed, 1054 insertions(+), 47 deletions(-) create mode 100644 color_format.hpp create mode 100644 example/cube_textured.cpp create mode 100644 example/cube_vq.cpp create mode 100644 holly/texture_memory_alloc2.hpp create mode 100644 model/cube.h create mode 100644 model/cube_material.h create mode 100644 model/material.h create mode 100644 model/model.h create mode 100644 notes/texture_memory_allocation.ods create mode 100644 texture/cube/wn.data create mode 100644 texture/cube/wn.data.h create mode 100644 texture/cube/wn.data.pal create mode 100644 texture/cube/wn.data.pal.h create mode 100644 texture/cube/wn.png create mode 100644 texture/panda/panda.vq create mode 100644 texture/panda/panda.vq.h diff --git a/Makefile b/Makefile index c777550..cf51353 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,18 @@ geometry/%.hpp: geometry/%.obj PYTHONPATH=regs/gen python tools/obj_to_cpp.py $< > $@.tmp mv $@.tmp $@ +%.data.h: + $(BUILD_BINARY_H) + +%.data.pal.h: + $(BUILD_BINARY_H) + +%.vq.h: %.vq + $(BUILD_BINARY_H) + +%.vq.o: %.vq + $(BUILD_BINARY_O) + build-fonts: ./tools/ttf_outline 20 7f 20 0 little /usr/share/fonts/dejavu/DejaVuSans.ttf dejavusansmono.data ./tools/ttf_outline 20 7f 20 1 little /usr/share/fonts/dejavu/DejaVuSans.ttf dejavusansmono_mono.data @@ -19,7 +31,5 @@ build-fonts: include example/example.mk include chess/chess.mk include text_editor/text_editor.mk -include snake/snake.mk -include pokemon/pokemon.mk .PHONY: phony diff --git a/base.mk b/base.mk index 51ac19e..2279ff3 100644 --- a/base.mk +++ b/base.mk @@ -33,15 +33,17 @@ define BUILD_BINARY_O $< $@ endef -as_obj_binary = _binary_$(subst .,_,$(subst /,_,$(1))) +makefile_path := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) +makefile_relative = $(shell realpath --relative-to $(makefile_path) $(1)) +as_obj_binary = _binary_$(subst .,_,$(subst /,_,$(subst .h,,$(call makefile_relative,$(1))))) define BUILD_BINARY_H - @echo gen $@ + @echo gen $(call makefile_relative,$@) @echo '#pragma once' > $@ @echo '#include ' >> $@ - @echo 'extern uint32_t $(call as_obj_binary,$<)_start __asm("$(call as_obj_binary,$<)_start");' >> $@ - @echo 'extern uint32_t $(call as_obj_binary,$<)_end __asm("$(call as_obj_binary,$<)_end");' >> $@ - @echo 'extern uint32_t $(call as_obj_binary,$<)_size __asm("$(call as_obj_binary,$<)_size");' >> $@ + @echo 'extern uint32_t $(call as_obj_binary,$@)_start __asm("$(call as_obj_binary,$@)_start");' >> $@ + @echo 'extern uint32_t $(call as_obj_binary,$@)_end __asm("$(call as_obj_binary,$@)_end");' >> $@ + @echo 'extern uint32_t $(call as_obj_binary,$@)_size __asm("$(call as_obj_binary,$@)_size");' >> $@ endef %.bin.o: %.bin diff --git a/client.py b/client.py index 43596e6..6ee3ef6 100644 --- a/client.py +++ b/client.py @@ -4,8 +4,8 @@ import sys import time #dest = 0xac21_0000 -#dest = 0xac02_0000 -dest = 0xac01_0000 +dest = 0xac02_0000 +#dest = 0xac01_0000 ret = [] @@ -34,7 +34,7 @@ def symmetric(ser, b): l = [] mem = memoryview(b) i = 0 - chunk_size = 384 + chunk_size = 8 while i < len(b): if i % 1024 == 0: @@ -73,6 +73,8 @@ def start_data(ser, b): ret = sync(ser, b'DATA' + args) if ret != b'data\n': print(".", end=' ') + print(ret) + time.sleep(1) sys.stdout.flush() sync(ser, b'prime', wait=0) start_data(ser, b) @@ -89,7 +91,8 @@ def do(ser, b): duration = end - start print("\n\nduration:", duration, "\n\n") print(ret[-5:]) - if ret[:-5] != b: + print(len(b), len(ret)) + if ret[:-5] != b and False: print("ret != b; dumped to asdf.bin") with open('asdf.bin', 'wb') as f: f.write(ret[:-5]) @@ -97,7 +100,8 @@ def do(ser, b): return args = struct.pack(" + +namespace color_format { + +uint16_t argb4444(uint8_t a, uint8_t r, uint8_t g, uint8_t b) +{ + int a4 = (a >> 4) & 15; + int r4 = (r >> 4) & 15; + int g4 = (g >> 4) & 15; + int b4 = (b >> 4) & 15; + return (a4 << 12) | (r4 << 8) | (g4 << 4) | (b4 << 0); +} + + +uint16_t argb1555(uint8_t a, uint8_t r, uint8_t g, uint8_t b) +{ + int a1 = (a >> 7) & 1; + int r5 = (r >> 3) & 31; + int g5 = (g >> 3) & 31; + int b5 = (b >> 3) & 31; + return (a1 << 15) | (r5 << 10) | (g5 << 5) | (b5 << 0); +} + +uint16_t rgb565(uint8_t a, uint8_t r, uint8_t g, uint8_t b) +{ + int r5 = (r >> 3) & 31; + int g6 = (g >> 2) & 63; + int b5 = (b >> 3) & 31; + return (r5 << 11) | (g6 << 5) | (b5 << 0); +} + +} diff --git a/common.mk b/common.mk index 16cfe68..4f833d9 100644 --- a/common.mk +++ b/common.mk @@ -2,7 +2,7 @@ MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) DIR := $(dir $(MAKEFILE_PATH)) LIB ?= . -OPT ?= -O3 +OPT ?= -O0 GENERATED ?= AARCH = --isa=sh4 --little diff --git a/example/cube_textured.cpp b/example/cube_textured.cpp new file mode 100644 index 0000000..6fb53b6 --- /dev/null +++ b/example/cube_textured.cpp @@ -0,0 +1,239 @@ +#include + +#include "holly/isp_tsp.hpp" +#include "holly/ta_parameter.hpp" +#include "holly/ta_global_parameter.hpp" +#include "holly/ta_vertex_parameter.hpp" +#include "holly/ta_bits.hpp" +#include "holly/ta_fifo_polygon_converter.hpp" +#include "holly/holly.hpp" +#include "holly/core_bits.hpp" +#include "holly/core.hpp" +#include "holly/region_array.hpp" +#include "holly/background.hpp" +#include "holly/video_output.hpp" +#include "holly/texture_memory_alloc2.hpp" +#include "sh7091/store_queue.hpp" +#include "sh7091/serial.hpp" + +#include "twiddle.hpp" + +#include "math/vec2.hpp" + +#include "texture/cube/wn.data.h" +#include "texture/cube/wn.data.pal.h" + +#include "model/cube_material.h" +#include "model/cube.h" + +void transfer_scene(float theta) +{ + const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume + | para_control::list_type::translucent + | obj_control::col_type::intensity_mode_1 + | obj_control::texture + | obj_control::gouraud; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::always + | isp_tsp_instruction_word::culling_mode::no_culling; + + const uint32_t tsp_instruction_word = tsp_instruction_word::src_alpha_instr::src_alpha + | tsp_instruction_word::dst_alpha_instr::inverse_src_alpha + | tsp_instruction_word::fog_control::no_fog + | tsp_instruction_word::use_alpha + | tsp_instruction_word::texture_shading_instruction::modulate_alpha + | tsp_instruction_word::texture_u_size::from_int(128) + | tsp_instruction_word::texture_v_size::from_int(128); + + const uint32_t texture_address = texture_memory_alloc::texture.start; + 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); + + for (int j = 0; j < cube_model.object_count; j++) { + *reinterpret_cast(store_queue) = + ta_global_parameter::polygon_type_1(parameter_control_word, + isp_tsp_instruction_word, + tsp_instruction_word, + texture_control_word, // texture_control_word + 0.5, // face color alpha + 1.0, // face color r + 1.0, // face color g + 1.0 // face color b + ); + sq_transfer_32byte(ta_fifo_polygon_converter); + + struct object * object = cube_model.object[j]; + for (int i = 0; i < object->triangle_count; i++) { + for (int k = 0; k < 3; k++) { + int position_ix = object->triangle[i].v[k].position; + float x0 = cube_model.position[position_ix].x; + float y0 = cube_model.position[position_ix].y; + float z0 = cube_model.position[position_ix].z; + + float x1 = x0 * cos(theta) - z0 * sin(theta); + float y1 = y0; + float z1 = x0 * sin(theta) + z0 * cos(theta); + + float x = x1; + float y = y1 * cos(theta) - z1 * sin(theta); + float z = y1 * sin(theta) + z1 * cos(theta); + + z += 3; + + x /= z; + y /= z; + + // do rotation + x = x * 240 + 320; + y = y * 240 + 240; + + z = 1/z; + + bool end_of_strip = k == 2; + + int texture_ix = object->triangle[i].v[k].texture; + float u = cube_model.texture[texture_ix].u; + float v = cube_model.texture[texture_ix].v; + + *reinterpret_cast(store_queue) = + ta_vertex_parameter::polygon_type_7(polygon_vertex_parameter_control_word(end_of_strip), + x, y, z, + u, v, + 1.0, // base intensity + 1.0 // offset intensity + ); + sq_transfer_32byte(ta_fifo_polygon_converter); + } + } + } + + *reinterpret_cast(store_queue) = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + sq_transfer_32byte(ta_fifo_polygon_converter); +} + +void texture_init() +{ + holly.PAL_RAM_CTRL = pal_ram_ctrl::pixel_format::argb1555; + + int material_count = (sizeof (material)) / (sizeof (material[0])); + for (int i = 0; i < material_count; i++) { + uint32_t offset = texture_memory_alloc::texture.start + material[i].pixel.vram_offset; + /* + twiddle::texture3<8, 8>(&texture_memory64[offset / 4], + (uint32_t *)material[i].pixel.start, + material[i].pixel.width, + material[i].pixel.size); + */ + twiddle::texture((uint8_t *)&texture_memory64[offset / 4], + (uint8_t *)material[i].pixel.start, + material[i].pixel.width, + material[i].pixel.height); + }; + + for (int i = 0; i < material[0].palette.size / 2; i++) { + holly.PALETTE_RAM[i] = ((uint16_t*)material[0].palette.start)[i]; + } +} + +void main() +{ + serial::init(0); + constexpr uint32_t ta_alloc = ta_alloc_ctrl::pt_opb::no_list + | ta_alloc_ctrl::tm_opb::no_list + | ta_alloc_ctrl::t_opb::_16x4byte + | ta_alloc_ctrl::om_opb::no_list + | ta_alloc_ctrl::o_opb::no_list; + + constexpr int render_passes = 1; + constexpr struct opb_size opb_size[render_passes] = { + { + .opaque = 0, + .opaque_modifier = 0, + .translucent = 16 * 4, + .translucent_modifier = 0, + .punch_through = 0 + } + }; + + holly.SOFTRESET = softreset::pipeline_soft_reset + | softreset::ta_soft_reset; + holly.SOFTRESET = 0; + + core_init(); + + video_output::set_mode_vga(); + + constexpr int framebuffer_width = 640; + constexpr int framebuffer_height = 480; + constexpr int tile_width = framebuffer_width / 32; + constexpr int tile_height = framebuffer_height / 32; + + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc::region_array[0].start, + texture_memory_alloc::object_list[0].start); + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc::region_array[1].start, + texture_memory_alloc::object_list[1].start); + + background_parameter2(texture_memory_alloc::background[0].start, + 0xff220033); + background_parameter2(texture_memory_alloc::background[1].start, + 0xff220033); + + texture_init(); + + const float degree = 0.017453292519943295; + float theta = 0; + int ta = -1; + int core = -2; + while (1) { + if (core >= 0) { + // core = 0 ; core = 1 + // ta = 1 ; ta = 0 + core_wait_end_of_render_video(); + while (!spg_status::vsync(holly.SPG_STATUS)); + holly.FB_R_SOF1 = texture_memory_alloc::framebuffer[core].start; + while (spg_status::vsync(holly.SPG_STATUS)); + } + + // core = -2 ; core = 1 ; core = 0 + // ta = -1 ; ta = 0 ; ta = 1 + core += 1; + ta += 1; + if (core > 1) core = 0; + if (ta > 1) ta = 0; + + if (core >= 0) { + // core = 1 ; core = 0 + // ta = 0 ; ta = 1 + ta_wait_translucent_list(); + core_start_render2(texture_memory_alloc::region_array[core].start, + texture_memory_alloc::isp_tsp_parameters[core].start, + texture_memory_alloc::background[core].start, + texture_memory_alloc::framebuffer[core].start, + framebuffer_width); + } + + + // core = -1 ; core = 1 ; core = 0 + // ta = 0 ; ta = 0 ; ta = 1 + ta_polygon_converter_init2(texture_memory_alloc::isp_tsp_parameters[ta].start, + texture_memory_alloc::isp_tsp_parameters[ta].end, + texture_memory_alloc::object_list[ta].start, + texture_memory_alloc::object_list[ta].end, + opb_size[1].total(), + ta_alloc, + tile_width, + tile_height); + transfer_scene(theta); + theta += degree; + } +} diff --git a/example/cube_vq.cpp b/example/cube_vq.cpp new file mode 100644 index 0000000..6483418 --- /dev/null +++ b/example/cube_vq.cpp @@ -0,0 +1,236 @@ +#include + +#include "holly/isp_tsp.hpp" +#include "holly/ta_parameter.hpp" +#include "holly/ta_global_parameter.hpp" +#include "holly/ta_vertex_parameter.hpp" +#include "holly/ta_bits.hpp" +#include "holly/ta_fifo_polygon_converter.hpp" +#include "holly/holly.hpp" +#include "holly/core_bits.hpp" +#include "holly/core.hpp" +#include "holly/region_array.hpp" +#include "holly/background.hpp" +#include "holly/video_output.hpp" +#include "holly/texture_memory_alloc2.hpp" +#include "sh7091/store_queue.hpp" +#include "sh7091/serial.hpp" + +#include "twiddle.hpp" + +#include "math/vec2.hpp" + +#include "texture/panda/panda.vq.h" + +enum material { + wn, +}; + +#include "model/cube.h" + +void transfer_scene(float theta) +{ + const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume + | para_control::list_type::translucent + | obj_control::col_type::intensity_mode_1 + | obj_control::texture + | obj_control::gouraud; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::always + | isp_tsp_instruction_word::culling_mode::no_culling; + + const uint32_t tsp_instruction_word = tsp_instruction_word::src_alpha_instr::one + | tsp_instruction_word::dst_alpha_instr::zero + | tsp_instruction_word::fog_control::no_fog + | tsp_instruction_word::texture_shading_instruction::modulate + | tsp_instruction_word::flip_uv::u + | tsp_instruction_word::texture_u_size::from_int(512) + | tsp_instruction_word::texture_v_size::from_int(512); + + const uint32_t texture_address = texture_memory_alloc::texture.start; + const uint32_t texture_control_word = texture_control_word::vq_compressed + | texture_control_word::pixel_format::_565 + | texture_control_word::scan_order::twiddled + | texture_control_word::texture_address(texture_address / 8); + + for (int j = 0; j < cube_model.object_count; j++) { + *reinterpret_cast(store_queue) = + ta_global_parameter::polygon_type_1(parameter_control_word, + isp_tsp_instruction_word, + tsp_instruction_word, + texture_control_word, // texture_control_word + 1.0, // face color alpha + 1.0, // face color r + 1.0, // face color g + 1.0 // face color b + ); + sq_transfer_32byte(ta_fifo_polygon_converter); + + struct object * object = cube_model.object[j]; + for (int i = 0; i < object->triangle_count; i++) { + for (int k = 0; k < 3; k++) { + int position_ix = object->triangle[i].v[k].position; + float x0 = cube_model.position[position_ix].x; + float y0 = cube_model.position[position_ix].y; + float z0 = cube_model.position[position_ix].z; + + float x1 = x0 * cos(theta) - z0 * sin(theta); + float y1 = y0; + float z1 = x0 * sin(theta) + z0 * cos(theta); + + float x = x1; + float y = y1 * cos(theta) - z1 * sin(theta); + float z = y1 * sin(theta) + z1 * cos(theta); + + z += 2.4; + + x /= z; + y /= z; + + // do rotation + x = x * 240 + 320; + y = y * 240 + 240; + + z = 1/z; + + bool end_of_strip = k == 2; + + int texture_ix = object->triangle[i].v[k].texture; + float u = cube_model.texture[texture_ix].u; + float v = cube_model.texture[texture_ix].v; + + *reinterpret_cast(store_queue) = + ta_vertex_parameter::polygon_type_7(polygon_vertex_parameter_control_word(end_of_strip), + x, y, z, + u, v, + 1.0, // base intensity + 1.0 // offset intensity + ); + sq_transfer_32byte(ta_fifo_polygon_converter); + } + } + } + + *reinterpret_cast(store_queue) = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + sq_transfer_32byte(ta_fifo_polygon_converter); +} + +template +inline void copy(T * dst, const T * src, const int32_t n) noexcept +{ + int32_t n_t = n / (sizeof (T)); + while (n_t > 0) { + *dst++ = *src++; + n_t--; + } +} + +void texture_init() +{ + uint32_t offset = texture_memory_alloc::texture.start; + copy(&texture_memory64[offset / 4], + reinterpret_cast(&_binary_texture_panda_panda_vq_start), + reinterpret_cast(&_binary_texture_panda_panda_vq_size)); +} + +void main() +{ + serial::init(0); + constexpr uint32_t ta_alloc = ta_alloc_ctrl::pt_opb::no_list + | ta_alloc_ctrl::tm_opb::no_list + | ta_alloc_ctrl::t_opb::_16x4byte + | ta_alloc_ctrl::om_opb::no_list + | ta_alloc_ctrl::o_opb::no_list; + + constexpr int render_passes = 1; + constexpr struct opb_size opb_size[render_passes] = { + { + .opaque = 0, + .opaque_modifier = 0, + .translucent = 16 * 4, + .translucent_modifier = 0, + .punch_through = 0 + } + }; + + holly.SOFTRESET = softreset::pipeline_soft_reset + | softreset::ta_soft_reset; + holly.SOFTRESET = 0; + + core_init(); + + video_output::set_mode_vga(); + + constexpr int framebuffer_width = 640; + constexpr int framebuffer_height = 480; + constexpr int tile_width = framebuffer_width / 32; + constexpr int tile_height = framebuffer_height / 32; + + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc::region_array[0].start, + texture_memory_alloc::object_list[0].start); + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc::region_array[1].start, + texture_memory_alloc::object_list[1].start); + + background_parameter2(texture_memory_alloc::background[0].start, + 0xff220033); + background_parameter2(texture_memory_alloc::background[1].start, + 0xff220033); + + texture_init(); + + const float degree = 0.017453292519943295; + float theta = 0; + int ta = -1; + int core = -2; + while (1) { + if (core >= 0) { + // core = 0 ; core = 1 + // ta = 1 ; ta = 0 + core_wait_end_of_render_video(); + while (!spg_status::vsync(holly.SPG_STATUS)); + holly.FB_R_SOF1 = texture_memory_alloc::framebuffer[core].start; + while (spg_status::vsync(holly.SPG_STATUS)); + } + + // core = -2 ; core = 1 ; core = 0 + // ta = -1 ; ta = 0 ; ta = 1 + core += 1; + ta += 1; + if (core > 1) core = 0; + if (ta > 1) ta = 0; + + if (core >= 0) { + // core = 1 ; core = 0 + // ta = 0 ; ta = 1 + ta_wait_translucent_list(); + core_start_render2(texture_memory_alloc::region_array[core].start, + texture_memory_alloc::isp_tsp_parameters[core].start, + texture_memory_alloc::background[core].start, + texture_memory_alloc::framebuffer[core].start, + framebuffer_width); + } + + + // core = -1 ; core = 1 ; core = 0 + // ta = 0 ; ta = 0 ; ta = 1 + ta_polygon_converter_init2(texture_memory_alloc::isp_tsp_parameters[ta].start, + texture_memory_alloc::isp_tsp_parameters[ta].end, + texture_memory_alloc::object_list[ta].start, + texture_memory_alloc::object_list[ta].end, + opb_size[1].total(), + ta_alloc, + tile_width, + tile_height); + transfer_scene(theta); + //theta += degree; + } +} diff --git a/example/example.mk b/example/example.mk index ba58f52..a13a676 100644 --- a/example/example.mk +++ b/example/example.mk @@ -538,7 +538,8 @@ SIERPINSKI_OBJ = \ wolf2.data.o \ wolf2.data.pal.o \ strawberry.data.o \ - strawberry.data.pal.o + strawberry.data.pal.o \ + $(LIBGCC) example/sierpinski.elf: LDSCRIPT = $(LIB)/main.lds example/sierpinski.elf: $(START_OBJ) $(SIERPINSKI_OBJ) @@ -553,3 +554,30 @@ TETRAHEDRON_OBJ = \ example/tetrahedron.elf: LDSCRIPT = $(LIB)/main.lds example/tetrahedron.elf: $(START_OBJ) $(TETRAHEDRON_OBJ) + +CUBE_TEXTURED_OBJ = \ + example/cube_textured.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + holly/video_output.o \ + sh7091/serial.o \ + texture/cube/wn.data.o \ + texture/cube/wn.data.pal.o + +example/cube_textured.elf: LDSCRIPT = $(LIB)/main.lds +example/cube_textured.elf: $(START_OBJ) $(CUBE_TEXTURED_OBJ) + +CUBE_VQ_OBJ = \ + example/cube_vq.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + holly/video_output.o \ + sh7091/serial.o \ + texture/panda/panda.vq.o + +example/cube_vq.elf: LDSCRIPT = $(LIB)/alt.lds +example/cube_vq.elf: $(START_OBJ) $(CUBE_VQ_OBJ) diff --git a/holly/background.cpp b/holly/background.cpp index a289635..3f76cba 100644 --- a/holly/background.cpp +++ b/holly/background.cpp @@ -20,10 +20,11 @@ struct isp_tsp_parameter { static_assert((sizeof (isp_tsp_parameter)) == (4 * 3 + 3) * 4); -void background_parameter(const uint32_t color) +void background_parameter2(const uint32_t background_start, + const uint32_t color) { auto parameter = reinterpret_cast - (&texture_memory32[texture_memory_alloc::background.start / 4]); + (&texture_memory32[background_start / 4]); parameter->isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::always @@ -52,3 +53,10 @@ void background_parameter(const uint32_t color) parameter->vertex[2].z = 1.f/100000; parameter->vertex[2].base_color = color; } + +void background_parameter(const uint32_t color) + +{ + background_parameter2(texture_memory_alloc::background.start, + color); +} diff --git a/holly/background.hpp b/holly/background.hpp index c046f7e..c8c491e 100644 --- a/holly/background.hpp +++ b/holly/background.hpp @@ -2,4 +2,6 @@ #include +void background_parameter2(const uint32_t background_start, + const uint32_t color); void background_parameter(const uint32_t color); diff --git a/holly/core.cpp b/holly/core.cpp index bec7824..47281f8 100644 --- a/holly/core.cpp +++ b/holly/core.cpp @@ -74,8 +74,6 @@ void core_start_render(uint32_t frame_address, holly.STARTRENDER = 1; } -constexpr uint32_t framebuffer_frame_size = 0x00096000 * 2; - void core_start_render(uint32_t frame_ix) { core_start_render(texture_memory_alloc::framebuffer[frame_ix].start, @@ -83,6 +81,31 @@ void core_start_render(uint32_t frame_ix) ); } +void core_start_render2(uint32_t region_array_start, + uint32_t isp_tsp_parameters_start, + uint32_t background_start, + uint32_t frame_address, + uint32_t frame_width // in pixels + ) +{ + holly.REGION_BASE = region_array_start; + holly.PARAM_BASE = isp_tsp_parameters_start; + + uint32_t background_offset = background_start - isp_tsp_parameters_start; + holly.ISP_BACKGND_T = isp_backgnd_t::tag_address(background_offset / 4) + | isp_backgnd_t::tag_offset(0) + | isp_backgnd_t::skip(1); + holly.ISP_BACKGND_D = _i(1.f/100000.f); + + holly.FB_W_CTRL = fb_w_ctrl::fb_dither | fb_w_ctrl::fb_packmode::_565_rgb_16bit; + constexpr uint32_t bytes_per_pixel = 2; + holly.FB_W_LINESTRIDE = (frame_width * bytes_per_pixel) / 8; + + holly.FB_W_SOF1 = frame_address; + + holly.STARTRENDER = 1; +} + void core_wait_end_of_render_video() { /* diff --git a/holly/core.hpp b/holly/core.hpp index bb7f660..3341a18 100644 --- a/holly/core.hpp +++ b/holly/core.hpp @@ -7,5 +7,12 @@ void core_start_render(uint32_t frame_address, void core_start_render(uint32_t frame_ix); +void core_start_render2(uint32_t region_array_start, + uint32_t isp_tsp_parameters_start, + uint32_t background_start, + uint32_t frame_address, + uint32_t frame_width // in pixels + ); + void core_wait_end_of_render_video(); void core_flip(uint32_t frame_ix); diff --git a/holly/region_array.cpp b/holly/region_array.cpp index c6a36d5..e61bd6b 100644 --- a/holly/region_array.cpp +++ b/holly/region_array.cpp @@ -4,27 +4,6 @@ #include "texture_memory_alloc.hpp" #include "memorymap.hpp" -#define REGION_ARRAY__LAST_REGION (1 << 31) -#define REGION_ARRAY__Z_CLEAR (1 << 30) -#define REGION_ARRAY__PRE_SORT (1 << 29) -#define REGION_ARRAY__FLUSH_ACCUMULATE (1 << 28) -#define REGION_ARRAY__TILE_Y_POSITION(n) (((n) & 0x3f) << 8) -#define REGION_ARRAY__TILE_X_POSITION(n) (((n) & 0x3f) << 2) - -#define REGION_ARRAY__LIST_POINTER__EMPTY (1 << 31) -#define REGION_ARRAY__LIST_POINTER(n) ((n) & 0xfffffc) - -// this is for a "type 2" region array. -// region header type is specified in FPU_PARAM_CFG -struct region_array_entry { - uint32_t tile; /* 3.7.7 page 216 */ - uint32_t opaque_list_pointer; - uint32_t opaque_modifier_volume_list_pointer; - uint32_t translucent_list_pointer; - uint32_t translucent_modifier_volume_list_pointer; - uint32_t punch_through_list_pointer; -}; - // opaque list pointer offset: OPB size * tile index * 4 void region_array(const uint32_t width, // in tile units (1 tile unit = 32 pixels) @@ -141,15 +120,17 @@ void region_array2(const uint32_t width, // in tile units (1 tile unit = 32 pix void region_array_multipass(const uint32_t width, // in tile units (1 tile unit = 32 pixels) const uint32_t height, // in tile units (1 tile unit = 32 pixels) const struct opb_size * opb_size, - const uint32_t num_render_passes) + const uint32_t num_render_passes, + const uint32_t region_array_start, + const uint32_t object_list_start) { auto region_array = reinterpret_cast - (&texture_memory32[texture_memory_alloc::region_array.start / 4]); + (&texture_memory32[region_array_start / 4]); const uint32_t num_tiles = width * height; uint32_t ol_base[num_render_passes]; - ol_base[0] = texture_memory_alloc::object_list.start; + ol_base[0] = object_list_start; for (uint32_t pass = 1; pass < num_render_passes; pass++) { ol_base[pass] = ol_base[pass - 1] + num_tiles * opb_size[pass - 1].total(); } diff --git a/holly/region_array.hpp b/holly/region_array.hpp index a787cdd..fa884c2 100644 --- a/holly/region_array.hpp +++ b/holly/region_array.hpp @@ -2,6 +2,27 @@ #include +#define REGION_ARRAY__LAST_REGION (1 << 31) +#define REGION_ARRAY__Z_CLEAR (1 << 30) +#define REGION_ARRAY__PRE_SORT (1 << 29) +#define REGION_ARRAY__FLUSH_ACCUMULATE (1 << 28) +#define REGION_ARRAY__TILE_Y_POSITION(n) (((n) & 0x3f) << 8) +#define REGION_ARRAY__TILE_X_POSITION(n) (((n) & 0x3f) << 2) + +#define REGION_ARRAY__LIST_POINTER__EMPTY (1 << 31) +#define REGION_ARRAY__LIST_POINTER(n) ((n) & 0xfffffc) + +// this is for a "type 2" region array. +// region header type is specified in FPU_PARAM_CFG +struct region_array_entry { + uint32_t tile; /* 3.7.7 page 216 */ + uint32_t opaque_list_pointer; + uint32_t opaque_modifier_volume_list_pointer; + uint32_t translucent_list_pointer; + uint32_t translucent_modifier_volume_list_pointer; + uint32_t punch_through_list_pointer; +}; + struct opb_size { uint32_t opaque; uint32_t opaque_modifier; @@ -29,4 +50,6 @@ void region_array2(const uint32_t width, // in tile units (1 tile unit = 32 pix void region_array_multipass(const uint32_t width, // in tile units (1 tile unit = 32 pixels) const uint32_t height, // in tile units (1 tile unit = 32 pixels) const struct opb_size * opb_size, - const uint32_t num_render_passes); + const uint32_t num_render_passes, + const uint32_t region_array_start, + const uint32_t object_list_start); diff --git a/holly/ta_fifo_polygon_converter.cpp b/holly/ta_fifo_polygon_converter.cpp index efccdd3..3057d4b 100644 --- a/holly/ta_fifo_polygon_converter.cpp +++ b/holly/ta_fifo_polygon_converter.cpp @@ -41,6 +41,39 @@ void ta_polygon_converter_init(uint32_t opb_total_size, // for one tile, for all (void)_dummy_read; } +void ta_polygon_converter_init2(uint32_t isp_tsp_parameters_start, + uint32_t isp_tsp_parameters_end, + uint32_t object_list_start, + uint32_t object_list_end, + uint32_t opb_total_size, // for one tile, for all render passes + uint32_t ta_alloc, + uint32_t tile_width, // in tile units (e.g: (640 / 32)) + uint32_t tile_height) // in tile units (e.g: (480 / 32)) +{ + // opb_size is the total size of all OPBs for all passes + const uint32_t ta_next_opb_offset = opb_total_size * tile_width * tile_height; + + holly.SOFTRESET = softreset::ta_soft_reset; + holly.SOFTRESET = 0; + + holly.TA_GLOB_TILE_CLIP = ta_glob_tile_clip::tile_y_num(tile_height - 1) + | ta_glob_tile_clip::tile_x_num(tile_width - 1); + + holly.TA_ALLOC_CTRL = ta_alloc_ctrl::opb_mode::increasing_addresses + | ta_alloc; + + holly.TA_ISP_BASE = isp_tsp_parameters_start; + holly.TA_ISP_LIMIT = isp_tsp_parameters_end; // the end of isp_tsp_parameters + holly.TA_OL_BASE = object_list_start; + holly.TA_OL_LIMIT = object_list_end; // the end of the object_list + holly.TA_NEXT_OPB_INIT = object_list_start + ta_next_opb_offset; + + holly.TA_LIST_INIT = ta_list_init::list_init; + + uint32_t _dummy_read = holly.TA_LIST_INIT; + (void)_dummy_read; +} + void ta_polygon_converter_cont(uint32_t ol_base_offset, uint32_t ta_alloc) { diff --git a/holly/ta_fifo_polygon_converter.hpp b/holly/ta_fifo_polygon_converter.hpp index 9515830..77e2d67 100644 --- a/holly/ta_fifo_polygon_converter.hpp +++ b/holly/ta_fifo_polygon_converter.hpp @@ -6,6 +6,15 @@ void ta_polygon_converter_init(uint32_t opb_total_size, // for one tile, for all uint32_t ta_alloc, uint32_t tile_width, // in tile units (e.g: (640 / 32)) uint32_t tile_height); // in tile units (e.g: (480 / 32)) + +void ta_polygon_converter_init2(uint32_t isp_tsp_parameters_start, + uint32_t isp_tsp_parameters_end, + uint32_t object_list_start, + uint32_t object_list_end, + uint32_t opb_total_size, // for one tile, for all render passes + uint32_t ta_alloc, + uint32_t tile_width, // in tile units (e.g: (640 / 32)) + uint32_t tile_height); // in tile units (e.g: (480 / 32)) void ta_polygon_converter_cont(uint32_t ol_base_offset, uint32_t ta_alloc); void ta_polygon_converter_transfer(volatile uint32_t const * const buf, uint32_t size); diff --git a/holly/texture_memory_alloc2.hpp b/holly/texture_memory_alloc2.hpp new file mode 100644 index 0000000..3d5f395 --- /dev/null +++ b/holly/texture_memory_alloc2.hpp @@ -0,0 +1,86 @@ +#pragma once + +#include +#include + +/* + * A 0x10000-byte region array is sufficient for 9 render passes: + * + * ((640 / 32) * (480 / 32) * 6 * 4) * 9 == 0xfd20 + */ + +namespace texture_memory_alloc { + +constexpr uint32_t address_64to32(uint32_t addr) +{ + uint32_t value = ((addr & 0xfffffff8) >> 1) + (addr & 0x3); + if ((addr & 0x4) != 0) + value += 0x400000; + if (addr >= 0x800000) + value += 0x400000; + return value; +} + +struct start_end { + uint32_t start; + uint32_t end; +}; + +constexpr start_end isp_tsp_parameters[2] = { + { // bus A + .start = 0x00'0000, + .end = 0x0f'ffc0, + }, + { // bus B + .start = 0x40'0000, + .end = 0x4f'ffc0, + }, +}; +constexpr start_end background[2] = { + { + .start = 0x0f'ffc0, + .end = 0x10'0000, + }, + { + .start = 0x4f'ffc0, + .end = 0x50'0000, + }, +}; +constexpr start_end object_list[2] = { + { // bus A + .start = 0x10'0000, + .end = 0x20'0000 - 0x10, + }, + { // bus B + .start = 0x50'0000, + .end = 0x60'0000 - 0x10, + } +}; +constexpr start_end framebuffer[2] = { + { // bus A + .start = 0x20'0000, + .end = 0x29'6000, + }, + { // bus B + .start = 0x60'0000, + .end = 0x69'6000, + } +}; +constexpr start_end region_array[2] = { + { // bus A + .start = 0x29'6000, + .end = 0x2a'6000, + }, + { // bus B + .start = 0x69'6000, + .end = 0x6a'6000, + }, +}; + +// 64-bit transfer +constexpr start_end texture = { + .start = 0x54'c000, + .end = 0x80'0000, +}; + +} diff --git a/model/cube.h b/model/cube.h new file mode 100644 index 0000000..6bc2301 --- /dev/null +++ b/model/cube.h @@ -0,0 +1,119 @@ +#include + +#include "model.h" + +// floating-point +vertex_position cube_position[] = { + {1.0, 1.0, -1.0}, + {1.0, -1.0, -1.0}, + {1.0, 1.0, 1.0}, + {1.0, -1.0, 1.0}, + {-1.0, 1.0, -1.0}, + {-1.0, -1.0, -1.0}, + {-1.0, 1.0, 1.0}, + {-1.0, -1.0, 1.0}, +}; + +// floating-point +vertex_texture cube_texture[] = { + {1.0, 0.0}, + {0.0, 1.0}, + {0.0, 0.0}, + {1.0, 1.0}, + {0.0, 0.0}, + {1.0, 0.0}, +}; + +// floating-point +vertex_normal cube_normal[] = { + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}, + {-1.0, 0.0, 0.0}, + {0.0, -1.0, 0.0}, + {1.0, 0.0, 0.0}, + {0.0, 0.0, -1.0}, +}; + +union triangle cube_knight_triangle[] = { + { .v = { + {4, 0, 0}, + {2, 1, 0}, + {0, 2, 0}, + }}, + { .v = { + {2, 3, 1}, + {7, 4, 1}, + {3, 5, 1}, + }}, + { .v = { + {6, 3, 2}, + {5, 4, 2}, + {7, 5, 2}, + }}, + { .v = { + {1, 0, 3}, + {7, 1, 3}, + {5, 2, 3}, + }}, + { .v = { + {0, 3, 4}, + {3, 4, 4}, + {1, 5, 4}, + }}, + { .v = { + {4, 3, 5}, + {1, 4, 5}, + {5, 5, 5}, + }}, + { .v = { + {4, 0, 0}, + {6, 3, 0}, + {2, 1, 0}, + }}, + { .v = { + {2, 3, 1}, + {6, 1, 1}, + {7, 4, 1}, + }}, + { .v = { + {6, 3, 2}, + {4, 1, 2}, + {5, 4, 2}, + }}, + { .v = { + {1, 0, 3}, + {3, 3, 3}, + {7, 1, 3}, + }}, + { .v = { + {0, 3, 4}, + {2, 1, 4}, + {3, 4, 4}, + }}, + { .v = { + {4, 3, 5}, + {0, 1, 5}, + {1, 4, 5}, + }}, +}; + +struct object cube_knight = { + .triangle = &cube_knight_triangle[0], + .quadrilateral = NULL, + .triangle_count = 12, + .quadrilateral_count = 0, + .material = wn, +}; + +struct object * cube_object_list[] = { + &cube_knight, +}; + +struct model cube_model = { + .position = &cube_position[0], + .texture = &cube_texture[0], + .normal = &cube_normal[0], + .object = &cube_object_list[0], + .object_count = 1, +}; + diff --git a/model/cube_material.h b/model/cube_material.h new file mode 100644 index 0000000..29fbf1c --- /dev/null +++ b/model/cube_material.h @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include "model/material.h" + +enum material { + wn, +}; + +struct material_descriptor material[] = { + [wn] = { + .pixel = { + .start = (uint8_t *)&_binary_texture_cube_wn_data_start, + .size = (int)&_binary_texture_cube_wn_data_size, + .vram_offset = 0, + .width = 128, + .height = 128, + }, + .palette = { + .start = (uint8_t *)&_binary_texture_cube_wn_data_pal_start, + .size = (int)&_binary_texture_cube_wn_data_pal_size, + .vram_offset = 0, + .palette_size = 256, + }, + }, +}; + diff --git a/model/material.h b/model/material.h new file mode 100644 index 0000000..1d230db --- /dev/null +++ b/model/material.h @@ -0,0 +1,25 @@ +#pragma once + +#include + +struct pixel_descriptor { + uint8_t * start; + int32_t size; + int32_t vram_offset; // offset into vram texture address space + + int16_t width; + int16_t height; +}; + +struct palette_descriptor { + uint8_t * start; + int32_t size; + int32_t vram_offset; // offset into vram palette address space + + int32_t palette_size; +}; + +struct material_descriptor { + struct pixel_descriptor pixel; + struct palette_descriptor palette; +}; diff --git a/model/model.h b/model/model.h new file mode 100644 index 0000000..6bf88b2 --- /dev/null +++ b/model/model.h @@ -0,0 +1,53 @@ +#pragma once + +#include + +#include "math/vec3.hpp" +#include "math/vec2.hpp" + +struct index_ptn { + uint16_t position; + uint16_t texture; + uint16_t normal; +}; + +union triangle { + struct { + struct index_ptn a; + struct index_ptn b; + struct index_ptn c; + }; + struct index_ptn v[3]; +}; + +union quadrilateral { + struct { + struct index_ptn a; + struct index_ptn b; + struct index_ptn c; + struct index_ptn d; + }; + struct index_ptn v[4]; +}; + +using vertex_position = vec<3, float>; +using vertex_normal = vec<3, float>; +using vertex_texture = vec<2, float>; + +struct object { + union triangle * triangle; + union quadrilateral * quadrilateral; + int triangle_count; + int quadrilateral_count; + + int material; +}; + +struct model { + vertex_position * position; + vertex_texture * texture; + vertex_normal * normal; + + struct object ** object; + int object_count; +}; diff --git a/notes/texture_memory_allocation.ods b/notes/texture_memory_allocation.ods new file mode 100644 index 0000000000000000000000000000000000000000..e40a28a7d8f892f31f74c26d1e27d19b24233746 GIT binary patch literal 21241 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 literal 0 HcmV?d00001 diff --git a/texture/cube/wn.data b/texture/cube/wn.data new file mode 100644 index 0000000..8170ed1 --- /dev/null +++ b/texture/cube/wn.data @@ -0,0 +1,42 @@ +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛT¿ŒÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ\ÙÙÙŠÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ+ÌÙÖÖÙŠÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛWÙÖÙÙÏÙˆÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ{ÙÖÙÙÔÎÙˆÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!¡Ù×ÙÙ×ÐÎÙˆÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!)ÈÙÙÙÙ×ÓÓÎÙˆÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  ?ÙÙÙÙÙ×ÓÓÓÎÙˆÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ_ÙÖÙÙÙ×ÓÓÓÓÎÙˆ!!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ”Ù×ÙÙÙÖÓÓÓÓÓÎÙˆ  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! +;ÙÙÙÙÙÙÔÓÓÓÓÓÓÎÙ‹;1$  !ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +šÙ×ÙÙÙÙÓÓÓÓÓÓÓÓÐÙÔʼ`D/ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛkÙ×ÙÙÙÙÖÓÓÓÓÓÓÓÓÓÐÓÔ×ÙÙÙ˳“jD) ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛKÙÙÙÙÙÙ×ÓÓÓÓÓÓÓÓÓÓÓÓÐÐÐÐÐÔÖÔ̺šqF) + ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ HÙÙÙÙÙÙ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÐÓÓÓË¿­•d5 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ XÙÙ×ÙÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÓÔÔʸ­¡p; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ nÙÙ×ÙÙ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÔʲ©¤p4 +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!‡ÙÙÙÙÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÔĨ¨¤e) ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ‹ÙÖÙÙÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔг¡¬”B ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ jÙÖÙÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÓÖ¡¤©k! ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +;ÙÙÙÙÙÖÓÓÓÓÓÓÐÐÎÎÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔʧš­Ž4 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛœÙÖÙÙ×ÓÓÓÓÓÓÐÔÙÙÙ×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔέš¨ŸD ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ >ÙÙÙÙÙÔÓÓÓÓÓÐÙΖw…½ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÓ®š¤«W +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛƒÙÖÙÙÔÓÓÓÓÓÎÙ¢6 +!wÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔЬž¡«] ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ(ÄÙÙÙÙÓÓÓÓÓÎÙœ +yÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔΨŸ¡¬^ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛUÙ×ÙÙÔÓÓÓÓÐ׿, )¿ÖÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÈ£¡¡¬[ +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! –ÙØÙÙÓÓÓÓÓÎÙ^’ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¿Ÿ¡¡«S ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .ËÙÙÙÖÓÓÓÓÐÙµ!šÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ°Ÿ¡¡¥> +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛZÙ×ÙÙÔÓÓÓÓÎÙl!FÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔË¥¡¡¥š,ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! ˜Ù×ÙÙÓÓÓÓÓÓÓ9  KÊÖÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ½Ÿ£Ÿ©„ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ1ÐÙÙÙÖÓÓÓÓÐÙ« 2XaZKDZ—ÙÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÒ©¡¡ž­\ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛfÙÖÙÙÔÓÓÓÓÐÙˆoÐÙÙÙÙÖÙÙÐÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÕÀŸ¡¡¡£8 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ¨Ù×ÙÙÓÓÓÓÓÓÔËÙÕÐÎÐÐÓÐÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓϨ¡¡Ÿ¨†ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ?ÙÙÙÙ×ÓÓÓÓÓÓÓÔÐÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÕ¸Ÿ£¡Ÿ«P +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +“ÙØÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÊ¡¡¡¡¥–'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +=ÙÙÙÙÙÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÌÎÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓªŸ¡¡Ÿ¬V ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ’ÙÖÙÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓЧ¿ÖÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ»ž£¡¡¥•'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! @ÙÙÙÙÙÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¾šµÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÆ¡¡¡¡Ÿ¬V +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ¬Ù×ÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÍ¥ž¯ÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔЦ¡¡¡¡¥“!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛmÙÖÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔµŸ¡¬ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÕ­Ÿ¡¡¡Ÿ©E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ >ÙÙÙÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÇ¡¡¡©ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¶ž£¡¡Ÿ©|ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!¹Ù×Ù×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ¬Ÿ£¡¨ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¾£¡¡¡£Ÿ/ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÙÖÙÙÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¾Ÿ£¡¡¨ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÒÔá¡¡¡¡Ÿ¬T ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛOÙØÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÌ¥¡¡¡Ÿ­ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÈ¡¡¡¡¡©~!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ",ÆÙ×ÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÙ³ž£¡£ž³ÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÊ£¡¡¡¡¡£ž- ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ™ÙÖÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÙ“™¤¡¡£ž¼ÖÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ̤¡¡¡¡¡Ÿ«I ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛdÙÖÙ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙ” Z¬Ÿ¡¡¡ÆÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔФ¡¡¡¡¡Ÿ­i ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ :×ÙÙÙÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙ¦†¨¡¡¤ÍÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔФ¡¡¡¡¡¡§ŠÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ­Ù×ÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙ¸.  ?©¡Ÿ­ÕÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔФ¡¡¡¡¡¡£ž.ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÙÖÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙ¿2 †¨šºÖÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔͤ¡¡¡¡¡¡¡§@ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛDÙÙÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙ¿3  P¬žÅÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔË£¡¡¡¡¡¡­WÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"*ÁÙØ×ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙ¿3  2Ÿ¨ÐÕÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÉ¡¡¡¡¡¡¡Ÿ¬kÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ “ÙÖÙÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÔÓÓÓÓÓÓÓÓÓÓÓÓÓÍÙ¶0 ÛÛ!!¹ÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÒÔá¡¡¡¡¡¡¡¨~ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ_ÙØÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÓÅÊÔÔÓÓÓÓÓÓÓÓÓÐÐÙœ) ÛÛÛ~ÉÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¾Ÿ£¡¡¡¡¡¡¥•!!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 4ÓÙÙÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÕЭ£¯ÇÔÔÐÓÓÓÓÐÎÙÙ{ÛÛÛÛ!„×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¸ž£¡¡¡¡¡¡£š+ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! +“ÙÖÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ¶š£¡Ÿ¡µÎÔÓÐÐÎÔÙ¹H ÛÛÛÛÛÛ!—ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ±Ÿ£¡¡¡¡¡¡£¡3 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*ËÙÖÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÊ£¡¡¡¡Ÿš¥ÀÔÖÙÙÆq& !ÛÛÛÛÛÛÛ&¼×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓϧ¡¡¡¡¡¡¡¡¡¥> +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +?ÙÙÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÕ¸ž£Ÿ£¨­­¨¦¯Ãb,ÛÛÛÛÛÛÛ HÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÉ¡¡¡¡¡¡¡¡¡¡¨A ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛJÙÓÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÑ©Ÿ¡©¡}_MD@;+!ÛÛÛÛÛÛÛÛ +ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¾£¡¡¡¡¡¡¡Ÿ«K ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +>ÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÆ¡£©o0  + ÛÛÛÛÛÛÛÛÛ +;ÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ¯Ÿ£¡¡¡¡¡¡¡Ÿ­QÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!!½×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔ³Ÿ¤M !ÛÛÛÛÛÛÛÛÛÛ +“ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÍ¥¡¡¡¡¡¡¡¡¡ž­UÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ nÙËÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÍ£©KÛÛÛÛÛÛÛÛÛÛÛÛÛÛQÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖ¾Ÿ£¡¡¡¡¡¡¡¡ž¯VÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!«ÙÍÐÓÓÓÓÓÓÓÓÓÓÓÐÖ¶©f +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 1Á×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓªŸ¡¡¡¡¡¡¡¡¡ž¯VÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!+™ÙÙÎÐÓÓÓÓÓÓÓÓÓÔÊ«ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!¯ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÆ¡¡¡¡¡¡¡¡¡¡¡ž­TÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛY¹ÙÙÐÎÐÓÓÓÓÓÐÔ³¥> +!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ œÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ°Ÿ£¡¡¡¡¡¡¡¡¡Ÿ«K ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!\¦ÖÙÙÓÎÎÐÐÔíe ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ )ÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÇ¡¡¡¡¡¡¡¡¡¡¡¡¡¨C ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ>r¯ÓÙÙ×Öгˆ!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!/²ÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ±Ÿ£¡¡¡¡¡¡¡¡¡¡¡¡8 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ =cŒ·Ë·,!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ?¿ÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔá¡¡¡¡¡¡¡¡¡¡¡¡£š*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  + !,3%ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ UÐÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓЫŸ¡¡¡¡¡¡¡¡¡¡¡¡§!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ! ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛrÙÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔ¸Ÿ£¡¡¡¡¡¡¡¡¡¡¡Ÿ©x!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!!!!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ !•ÙÐÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÊ£¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ­a ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ0¯ÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ­Ÿ£¡¡¡¡¡¡¡¡¡¡¡¡Ÿ©G ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ#>¿ÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔ»Ÿ£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡3 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!EÐÕÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÉ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥’ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛKÓÖÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔЩ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ«q!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛN×ÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔµž£¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ­W ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛI×ÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÕ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥< ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ EÐÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ̧¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤–$ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 7Ë×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ®£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ©x!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ#)µÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖÀŸ£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ­T ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ –ÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÍ¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤9 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ gÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ°Ÿ£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥“!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +9ÐÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÈ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ¬nÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛšÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ­Ÿ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ«K ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ RÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÄŸ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£ž/ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!¬ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔ¯Ÿ£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨…!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛRÙÐÓÓÓÓÓÓÓÓÐÐÐÐÐÐÐÐÐÐÐÎÎÎÎÎÎÎÎÎÎÎÎÎÐÅŸŸ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ÿ­] ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÙÎÐÐÎÎÐÐÓÔÔÔÖ×ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ¨«¨¨¨§¥¤£¡¡¡ŸžŸŸ¡¡¡¡¡§= +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  =ÕÔ×ÙÙÙÙÙÙÖÐËÈĺ­ œ—’‹‹€}vvvvu~‚€€ˆspx}ƒ‰—šž¡¤¨¬¯­«¨§£¡£•$ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛuÙÇ»¡|i]OD;1*$! + + + + +!'.4>>>>65550.)$!!   ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ + )9DTfsƒ‘›§¯½ÁËÎÐÐÔÔÔÔÙÙÙØÑÙÔÔÔÔÓÐÎÍǼ³«š’‡zl_N?2'  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! .Gh…»Î×ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÔʶž…fD* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ >v¨ÎÙÙÙÙÙÙÙÙ×ÖÖÖÖ×××ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙØÙÙÙÙÙÙÙÙÙÙÙ×××ÖÖÖ×ÙÙÙÙÙÙÙÙÙÍŸh2 + +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ CšÙÙÙÙÙÖÖ×ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ×ÖÖÙÙÙÙÔ’9 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ $ˆÙÙÙÖ×ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ×ÖÙÙÙg +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!*²Ù××ÙÙÙÙÙÙÙÙÙ××ÖÖÔÔÔÔÔÔÔÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÔÔÔÔÔÔÔÔÖÖ××ÙÙÙÙÙÙÙÙÖÙÙ‚ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ¢ÙÔÙÙÙ×ÖÔÔÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÔÔÔ××ÙÙ×Ùl ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛhÙÔÖÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÔÔ×Ù9 +ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ)ÄÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÍÙ‡ !ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛWÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÔÇ,ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ŠÙÎÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÙSÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!­ÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÎÙuÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!*ÉÔÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÙ’!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ! +9ÐÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÙ¤ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ @ÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÙ´!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ G×ÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐ×¼!!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛMÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖÆ$!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛLÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖÆ$!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛLÙÐÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÐÖÆ$!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛKÖÍÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÍÓÄ$!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛRÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÖ&!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 7ytvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvtwo!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ!ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ \ No newline at end of file diff --git a/texture/cube/wn.data.h b/texture/cube/wn.data.h new file mode 100644 index 0000000..49a6b86 --- /dev/null +++ b/texture/cube/wn.data.h @@ -0,0 +1,5 @@ +#pragma once +#include +extern uint32_t _binary_texture_cube_wn_data_start __asm("_binary_texture_cube_wn_data_start"); +extern uint32_t _binary_texture_cube_wn_data_end __asm("_binary_texture_cube_wn_data_end"); +extern uint32_t _binary_texture_cube_wn_data_size __asm("_binary_texture_cube_wn_data_size"); diff --git a/texture/cube/wn.data.pal b/texture/cube/wn.data.pal new file mode 100644 index 0000000000000000000000000000000000000000..e2bf4b37923fcc45a16a4acac9506f09ed9ff0e5 GIT binary patch literal 440 zcmZX{krsqN7zN;PG3*t>uvb_Ndxga?=>ZmlU}Pa!2o{2ckzgPQf*?qOfnXpQSZL2Z z|M^dKn(y3u=XWwEQ$?Ap;z*0D+Y7Xy&_(T+SifZVH+xj<`8ld;)_s|gXKn*VQs@el z+XRY4ZJ;Po8?{NtopdDc^FHa&d0!6*HT`hGFz)O$jCSJ254;(8y*boKsN*GGXz7nT dHE7<{fLQkx>zTA-l@_KS1x>aMi{38JasE-DCs6 +extern uint32_t _binary_texture_cube_wn_data_pal_start __asm("_binary_texture_cube_wn_data_pal_start"); +extern uint32_t _binary_texture_cube_wn_data_pal_end __asm("_binary_texture_cube_wn_data_pal_end"); +extern uint32_t _binary_texture_cube_wn_data_pal_size __asm("_binary_texture_cube_wn_data_pal_size"); diff --git a/texture/cube/wn.png b/texture/cube/wn.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6bcc52d8ace5fa8becfd971402cba5c79f2586 GIT binary patch literal 12509 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 C=lr$+ literal 0 HcmV?d00001 diff --git a/texture/panda/panda.vq.h b/texture/panda/panda.vq.h new file mode 100644 index 0000000..1a0ac87 --- /dev/null +++ b/texture/panda/panda.vq.h @@ -0,0 +1,5 @@ +#pragma once +#include +extern uint32_t _binary_texture_panda_panda_vq_start __asm("_binary_texture_panda_panda_vq_start"); +extern uint32_t _binary_texture_panda_panda_vq_end __asm("_binary_texture_panda_panda_vq_end"); +extern uint32_t _binary_texture_panda_panda_vq_size __asm("_binary_texture_panda_panda_vq_size");