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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
using namespace dmac;
|
||||
@ -282,8 +344,10 @@ void main()
|
||||
|
||||
holly.FB_W_CTRL = fb_w_ctrl::fb_packmode::_8888_argb_32bit;
|
||||
|
||||
system.LMMODE0 = 1;
|
||||
system.LMMODE1 = 1; // 32-bit
|
||||
//system.LMMODE0 = 1;
|
||||
//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];
|
||||
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 * 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) {
|
||||
ta_wait_translucent_list();
|
||||
@ -333,7 +398,6 @@ void main()
|
||||
ta_alloc,
|
||||
tile_width,
|
||||
tile_height);
|
||||
|
||||
transfer_scene(theta);
|
||||
|
||||
core_wait_end_of_render_video();
|
||||
@ -348,7 +412,7 @@ void main()
|
||||
dma_transfer((uint32_t)in, (uint32_t)inbuf, 640 * 480 * 4 / 32);
|
||||
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;
|
||||
frame_ix += 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user