wip
This commit is contained in:
parent
306294cfff
commit
ac97380328
@ -143,6 +143,68 @@ void transfer_scene(float theta)
|
|||||||
sq_transfer_32byte(ta_fifo_polygon_converter);
|
sq_transfer_32byte(ta_fifo_polygon_converter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct vertex {
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float z;
|
||||||
|
};
|
||||||
|
|
||||||
|
// screen space coordinates
|
||||||
|
const struct vertex quad_vertices[] = {
|
||||||
|
{ 0.f, 0.f, 0.1f },
|
||||||
|
{ 640.f, 0.f, 0.1f },
|
||||||
|
{ 640.f, 480.f, 0.1f },
|
||||||
|
{ 640.f, 480.f, 0.1f },
|
||||||
|
};
|
||||||
|
|
||||||
|
void transfer_quad()
|
||||||
|
{
|
||||||
|
const uint32_t parameter_control_word = para_control::para_type::sprite
|
||||||
|
| para_control::list_type::opaque
|
||||||
|
| obj_control::col_type::packed_color;
|
||||||
|
//| obj_control::gouraud;
|
||||||
|
|
||||||
|
const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::greater
|
||||||
|
| 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;
|
||||||
|
|
||||||
|
const uint32_t texture_control_word = 0;
|
||||||
|
|
||||||
|
const uint32_t base_color = 0xffff0000;
|
||||||
|
*reinterpret_cast<ta_global_parameter::sprite *>(store_queue) =
|
||||||
|
ta_global_parameter::sprite(parameter_control_word,
|
||||||
|
isp_tsp_instruction_word,
|
||||||
|
tsp_instruction_word,
|
||||||
|
texture_control_word,
|
||||||
|
base_color,
|
||||||
|
0, // offset_color
|
||||||
|
0, // data_size_for_sort_dma
|
||||||
|
0); // next_address_for_sort_dma
|
||||||
|
sq_transfer_32byte(ta_fifo_polygon_converter);
|
||||||
|
|
||||||
|
*reinterpret_cast<ta_vertex_parameter::sprite_type_0 *>(store_queue) =
|
||||||
|
ta_vertex_parameter::sprite_type_0(para_control::para_type::vertex_parameter,
|
||||||
|
quad_vertices[0].x,
|
||||||
|
quad_vertices[0].y,
|
||||||
|
quad_vertices[0].z,
|
||||||
|
quad_vertices[1].x,
|
||||||
|
quad_vertices[1].y,
|
||||||
|
quad_vertices[1].z,
|
||||||
|
quad_vertices[2].x,
|
||||||
|
quad_vertices[2].y,
|
||||||
|
quad_vertices[2].z,
|
||||||
|
quad_vertices[3].x,
|
||||||
|
quad_vertices[3].y);
|
||||||
|
sq_transfer_64byte(ta_fifo_polygon_converter);
|
||||||
|
|
||||||
|
*reinterpret_cast<ta_global_parameter::end_of_list *>(store_queue) =
|
||||||
|
ta_global_parameter::end_of_list(para_control::para_type::end_of_list);
|
||||||
|
sq_transfer_32byte(ta_fifo_polygon_converter);
|
||||||
|
}
|
||||||
|
|
||||||
void dma_transfer(uint32_t source, uint32_t destination, uint32_t transfers)
|
void dma_transfer(uint32_t source, uint32_t destination, uint32_t transfers)
|
||||||
{
|
{
|
||||||
using namespace dmac;
|
using namespace dmac;
|
||||||
@ -282,8 +344,10 @@ void main()
|
|||||||
|
|
||||||
holly.FB_W_CTRL = fb_w_ctrl::fb_packmode::_8888_argb_32bit;
|
holly.FB_W_CTRL = fb_w_ctrl::fb_packmode::_8888_argb_32bit;
|
||||||
|
|
||||||
system.LMMODE0 = 1;
|
//system.LMMODE0 = 1;
|
||||||
system.LMMODE1 = 1; // 32-bit
|
//system.LMMODE1 = 1; // 32-bit
|
||||||
|
system.LMMODE0 = 0;
|
||||||
|
system.LMMODE1 = 0; // 64-bit
|
||||||
|
|
||||||
uint32_t * out = (uint32_t *)&texture_memory32[texture_memory_alloc.framebuffer[0].start / 4];
|
uint32_t * out = (uint32_t *)&texture_memory32[texture_memory_alloc.framebuffer[0].start / 4];
|
||||||
for (int i = 0; i < 640 * 480; i++) {
|
for (int i = 0; i < 640 * 480; i++) {
|
||||||
@ -322,6 +386,7 @@ void main()
|
|||||||
|
|
||||||
uint32_t * in = (uint32_t *)&texture_memory64[texture_memory_alloc.texture.start / 4];
|
uint32_t * in = (uint32_t *)&texture_memory64[texture_memory_alloc.texture.start / 4];
|
||||||
uint32_t * framebuffer = (uint32_t *)(0x11000000 + texture_memory_alloc.framebuffer[0].start);
|
uint32_t * framebuffer = (uint32_t *)(0x11000000 + texture_memory_alloc.framebuffer[0].start);
|
||||||
|
uint32_t * out = (uint32_t *)(0x11000000 + texture_memory_alloc.texture.start + 640 * 480 * 4);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
ta_wait_translucent_list();
|
ta_wait_translucent_list();
|
||||||
@ -333,7 +398,6 @@ void main()
|
|||||||
ta_alloc,
|
ta_alloc,
|
||||||
tile_width,
|
tile_width,
|
||||||
tile_height);
|
tile_height);
|
||||||
|
|
||||||
transfer_scene(theta);
|
transfer_scene(theta);
|
||||||
|
|
||||||
core_wait_end_of_render_video();
|
core_wait_end_of_render_video();
|
||||||
@ -348,7 +412,7 @@ void main()
|
|||||||
dma_transfer((uint32_t)in, (uint32_t)inbuf, 640 * 480 * 4 / 32);
|
dma_transfer((uint32_t)in, (uint32_t)inbuf, 640 * 480 * 4 / 32);
|
||||||
while ((sh7091.DMAC.CHCR1 & dmac::chcr::te::transfers_completed) == 0);
|
while ((sh7091.DMAC.CHCR1 & dmac::chcr::te::transfers_completed) == 0);
|
||||||
|
|
||||||
sobel_fipr_store_queue2(inbuf, framebuffer, temp);
|
sobel_fipr_store_queue2(inbuf, out, temp);
|
||||||
|
|
||||||
theta += half_degree;
|
theta += half_degree;
|
||||||
frame_ix += 1;
|
frame_ix += 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user