Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -70,14 +70,12 @@ namespace rsx

void fill_window_matrix(void *dest, bool transpose)
{
u32 shader_window = method_registers[NV4097_SET_SHADER_WINDOW];
u16 height = method_registers.shader_window_height();
window_origin origin = method_registers.shader_window_origin();
window_pixel_center pixelCenter = method_registers.shader_window_pixel();

u16 height = shader_window & 0xfff;
window_origin origin = to_window_origin((shader_window >> 12) & 0xf);
window_pixel_center pixelCenter = to_window_pixel_center(shader_window >> 16);

f32 offset_x = f32(method_registers[NV4097_SET_WINDOW_OFFSET] & 0xffff);
f32 offset_y = f32(method_registers[NV4097_SET_WINDOW_OFFSET] >> 16);
f32 offset_x = f32(method_registers.shader_window_offset_x());
f32 offset_y = f32(method_registers.shader_window_offset_y());
f32 scale_y = 1.0;

if (origin == window_origin::bottom)
@@ -97,13 +95,13 @@ namespace rsx

void fill_viewport_matrix(void *buffer, bool transpose)
{
f32 offset_x = (f32&)method_registers[NV4097_SET_VIEWPORT_OFFSET + 0];
f32 offset_y = (f32&)method_registers[NV4097_SET_VIEWPORT_OFFSET + 1];
f32 offset_z = (f32&)method_registers[NV4097_SET_VIEWPORT_OFFSET + 2];
f32 offset_x = method_registers.viewport_offset_x();
f32 offset_y = method_registers.viewport_offset_y();
f32 offset_z = method_registers.viewport_offset_z();

f32 scale_x = (f32&)method_registers[NV4097_SET_VIEWPORT_SCALE + 0];
f32 scale_y = (f32&)method_registers[NV4097_SET_VIEWPORT_SCALE + 1];
f32 scale_z = (f32&)method_registers[NV4097_SET_VIEWPORT_SCALE + 2];
f32 scale_x = method_registers.viewport_scale_x();
f32 scale_y = method_registers.viewport_scale_y();
f32 scale_z = method_registers.viewport_scale_z();

fill_scale_offset_matrix(buffer, transpose, offset_x, offset_y, offset_z, scale_x, scale_y, scale_z);
}
@@ -0,0 +1,40 @@
#pragma once

#include "GCM.h"
#include "Utilities/types.h"

namespace rsx
{

struct data_array_format_info
{
private:
u8 index;
std::array<u32, 0x10000 / 4> &registers;
public:
u16 frequency = 0;
u8 stride = 0;
u8 size = 0;
vertex_base_type type = vertex_base_type::f;


data_array_format_info(u8 idx, std::array<u32, 0x10000 / 4> &r) : index(idx), registers(r)
{}

data_array_format_info() = delete;

void unpack_array(u32 data_array_format)
{
frequency = data_array_format >> 16;
stride = (data_array_format >> 8) & 0xff;
size = (data_array_format >> 4) & 0xf;
type = to_vertex_base_type(data_array_format & 0xf);
}

u32 offset() const
{
return registers[NV4097_SET_VERTEX_DATA_ARRAY_OFFSET + index];
}
};

}
@@ -370,13 +370,13 @@ void RSXDebugger::OnClickBuffer(wxMouseEvent& event)
if (event.GetId() == p_buffer_stencil->GetId()) display_buffer(this, stencil_img);
if (event.GetId() == p_buffer_tex->GetId())
{
u8 location = render->textures[m_cur_texture].location();
/* u8 location = render->textures[m_cur_texture].location();
if(location <= 1 && vm::check_addr(rsx::get_address(render->textures[m_cur_texture].offset(), location))
&& render->textures[m_cur_texture].width() && render->textures[m_cur_texture].height())
MemoryViewerPanel::ShowImage(this,
rsx::get_address(render->textures[m_cur_texture].offset(), location), 1,
render->textures[m_cur_texture].width(),
render->textures[m_cur_texture].height(), false);
render->textures[m_cur_texture].height(), false);*/
}

#undef SHOW_BUFFER
@@ -725,7 +725,7 @@ void RSXDebugger::GetBuffers()
}

// Draw Texture
if(!render->textures[m_cur_texture].enabled())
/* if(!render->textures[m_cur_texture].enabled())
return;
u32 offset = render->textures[m_cur_texture].offset();
@@ -752,7 +752,7 @@ void RSXDebugger::GetBuffers()
wxImage img(width, height, buffer);
wxClientDC dc_canvas(p_buffer_tex);
dc_canvas.DrawBitmap(img.Scale(m_text_width, m_text_height), 0, 0, false);
dc_canvas.DrawBitmap(img.Scale(m_text_width, m_text_height), 0, 0, false);*/
}

void RSXDebugger::GetFlags()
@@ -823,7 +823,7 @@ void RSXDebugger::GetTexture()

for(uint i=0; i<rsx::limits::textures_count; ++i)
{
if(render->textures[i].enabled())
/* if(render->textures[i].enabled())
{
m_list_texture->InsertItem(i, wxString::Format("%d", i));
u8 location = render->textures[i].location();
@@ -848,7 +848,7 @@ void RSXDebugger::GetTexture()
render->textures[i].height()));
m_list_texture->SetItemBackgroundColour(i, wxColour(m_cur_texture == i ? "Wheat" : "White"));
}
}*/
}
}

@@ -600,6 +600,7 @@
<ClInclude Include="Emu\DbgCommand.h" />
<ClInclude Include="Emu\Memory\wait_engine.h" />
<ClInclude Include="Emu\RSX\rsx_cache.h" />
<ClInclude Include="Emu\RSX\rsx_vertex_data.h" />
<ClInclude Include="Emu\VFS.h" />
<ClInclude Include="Emu\GameInfo.h" />
<ClInclude Include="Emu\IdManager.h" />
@@ -1687,5 +1687,8 @@
<ClInclude Include="..\Utilities\JIT.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\rsx_vertex_data.h">
<Filter>Emu\GPU\RSX</Filter>
</ClInclude>
</ItemGroup>
</Project>