mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-19 08:25:47 -04:00
GPU: Implement texture window
This commit is contained in:
@ -73,9 +73,11 @@ bool GPU::DoState(StateWrapper& sw)
|
||||
sw.Do(&m_render_state.texture_y_flip);
|
||||
sw.Do(&m_render_state.texpage_attribute);
|
||||
sw.Do(&m_render_state.texlut_attribute);
|
||||
sw.Do(&m_render_state.texture_window_value);
|
||||
sw.Do(&m_render_state.texture_page_changed);
|
||||
sw.Do(&m_render_state.texture_color_mode_changed);
|
||||
sw.Do(&m_render_state.transparency_mode_changed);
|
||||
sw.Do(&m_render_state.texture_window_changed);
|
||||
|
||||
sw.Do(&m_drawing_area.left);
|
||||
sw.Do(&m_drawing_area.top);
|
||||
@ -113,6 +115,7 @@ bool GPU::DoState(StateWrapper& sw)
|
||||
m_render_state.texture_page_changed = true;
|
||||
m_render_state.texture_color_mode_changed = true;
|
||||
m_render_state.transparency_mode_changed = true;
|
||||
m_render_state.texture_window_changed = true;
|
||||
UpdateGPUSTAT();
|
||||
}
|
||||
|
||||
@ -437,10 +440,7 @@ void GPU::WriteGP0(u32 value)
|
||||
|
||||
case 0xE2: // set texture window
|
||||
{
|
||||
m_render_state.texture_window_mask_x = param & UINT32_C(0x1F);
|
||||
m_render_state.texture_window_mask_y = (param >> 5) & UINT32_C(0x1F);
|
||||
m_render_state.texture_window_offset_x = (param >> 10) & UINT32_C(0x1F);
|
||||
m_render_state.texture_window_offset_y = (param >> 15) & UINT32_C(0x1F);
|
||||
m_render_state.SetTextureWindow(value);
|
||||
Log_DebugPrintf("Set texture window %02X %02X %02X %02X", m_render_state.texture_window_mask_x,
|
||||
m_render_state.texture_window_mask_y, m_render_state.texture_window_offset_x,
|
||||
m_render_state.texture_window_offset_y);
|
||||
@ -895,6 +895,20 @@ void GPU::RenderState::SetFromPaletteAttribute(u16 value)
|
||||
texture_page_changed = true;
|
||||
}
|
||||
|
||||
void GPU::RenderState::SetTextureWindow(u32 value)
|
||||
{
|
||||
value &= TEXTURE_WINDOW_MASK;
|
||||
if (texture_window_value == value)
|
||||
return;
|
||||
|
||||
texture_window_mask_x = value & UINT32_C(0x1F);
|
||||
texture_window_mask_y = (value >> 5) & UINT32_C(0x1F);
|
||||
texture_window_offset_x = (value >> 10) & UINT32_C(0x1F);
|
||||
texture_window_offset_y = (value >> 15) & UINT32_C(0x1F);
|
||||
texture_window_value = value;
|
||||
texture_window_changed = true;
|
||||
}
|
||||
|
||||
bool GPU::DumpVRAMToFile(const char* filename, u32 width, u32 height, u32 stride, const void* buffer, bool remove_alpha)
|
||||
{
|
||||
std::vector<u32> rgba8_buf(width * height);
|
||||
|
Reference in New Issue
Block a user