diff options
| author | bunnei <bunneidev@gmail.com> | 2015-02-18 17:19:38 -0500 | 
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2015-02-18 17:19:38 -0500 | 
| commit | 4a48b017ca7fe8fe68dfc84d70864ef6aea6a266 (patch) | |
| tree | dcd7914a3a2147790d384ce0992f70d40bce8704 /src/core/hle | |
| parent | 745b42d236873522ee854aa7422f8330eaa86c0e (diff) | |
| parent | 2eee3a87f915a8d18482cdd15e6bfd823467ea13 (diff) | |
Merge pull request #562 from neobrain/pica_progress3
More PICA200 Emulation Fixes
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/gsp_gpu.cpp | 34 | ||||
| -rw-r--r-- | src/core/hle/service/gsp_gpu.h | 4 | 
2 files changed, 21 insertions, 17 deletions
| diff --git a/src/core/hle/service/gsp_gpu.cpp b/src/core/hle/service/gsp_gpu.cpp index 31e61391f..c23cfa3c8 100644 --- a/src/core/hle/service/gsp_gpu.cpp +++ b/src/core/hle/service/gsp_gpu.cpp @@ -368,28 +368,28 @@ static void ExecuteCommand(const Command& command, u32 thread_id) {      case CommandId::SET_MEMORY_FILL:      {          auto& params = command.memory_fill; -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_start)),  -                Memory::VirtualToPhysicalAddress(params.start1) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_end)),  -                Memory::VirtualToPhysicalAddress(params.end1) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].size)), params.end1 - params.start1); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].value)), params.value1); - -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_start)),  -                Memory::VirtualToPhysicalAddress(params.start2) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_end)),  -                Memory::VirtualToPhysicalAddress(params.end2) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].size)), params.end2 - params.start2); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].value)), params.value2); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_start)), +                         Memory::VirtualToPhysicalAddress(params.start1) >> 3); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_end)), +                         Memory::VirtualToPhysicalAddress(params.end1) >> 3); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].value_32bit)), params.value1); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].control)), params.control1); + +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_start)), +                         Memory::VirtualToPhysicalAddress(params.start2) >> 3); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_end)), +                         Memory::VirtualToPhysicalAddress(params.end2) >> 3); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].value_32bit)), params.value2); +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].control)), params.control2);          break;      }      case CommandId::SET_DISPLAY_TRANSFER:      {          auto& params = command.image_copy; -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.input_address)),  +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.input_address)),                  Memory::VirtualToPhysicalAddress(params.in_buffer_address) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.output_address)),  +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.output_address)),                  Memory::VirtualToPhysicalAddress(params.out_buffer_address) >> 3);          WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.input_size)), params.in_buffer_size);          WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.output_size)), params.out_buffer_size); @@ -402,9 +402,9 @@ static void ExecuteCommand(const Command& command, u32 thread_id) {      case CommandId::SET_TEXTURE_COPY:      {          auto& params = command.image_copy; -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.input_address)),  +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.input_address)),                  Memory::VirtualToPhysicalAddress(params.in_buffer_address) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.output_address)),  +        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.output_address)),                  Memory::VirtualToPhysicalAddress(params.out_buffer_address) >> 3);          WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.input_size)), params.in_buffer_size);          WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(display_transfer_config.output_size)), params.out_buffer_size); diff --git a/src/core/hle/service/gsp_gpu.h b/src/core/hle/service/gsp_gpu.h index 65abb194a..a435d418a 100644 --- a/src/core/hle/service/gsp_gpu.h +++ b/src/core/hle/service/gsp_gpu.h @@ -109,9 +109,13 @@ struct Command {              u32 start1;              u32 value1;              u32 end1; +              u32 start2;              u32 value2;              u32 end2; + +            u16 control1; +            u16 control2;          } memory_fill;          struct { | 
