|
|
|
@ -127,7 +127,7 @@ struct Regs { |
|
|
|
u32 address; |
|
|
|
|
|
|
|
u32 GetPhysicalAddress() const { |
|
|
|
return DecodeAddressRegister(address) - Memory::FCRAM_PADDR + Memory::HEAP_LINEAR_VADDR; |
|
|
|
return DecodeAddressRegister(address); |
|
|
|
} |
|
|
|
|
|
|
|
// texture1 and texture2 store the texture format directly after the address |
|
|
|
@ -317,11 +317,11 @@ struct Regs { |
|
|
|
|
|
|
|
INSERT_PADDING_WORDS(0x1); |
|
|
|
|
|
|
|
inline u32 GetColorBufferAddress() const { |
|
|
|
return Memory::PhysicalToVirtualAddress(DecodeAddressRegister(color_buffer_address)); |
|
|
|
inline u32 GetColorBufferPhysicalAddress() const { |
|
|
|
return DecodeAddressRegister(color_buffer_address); |
|
|
|
} |
|
|
|
inline u32 GetDepthBufferAddress() const { |
|
|
|
return Memory::PhysicalToVirtualAddress(DecodeAddressRegister(depth_buffer_address)); |
|
|
|
inline u32 GetDepthBufferPhysicalAddress() const { |
|
|
|
return DecodeAddressRegister(depth_buffer_address); |
|
|
|
} |
|
|
|
|
|
|
|
inline u32 GetWidth() const { |
|
|
|
@ -345,9 +345,8 @@ struct Regs { |
|
|
|
|
|
|
|
BitField<0, 29, u32> base_address; |
|
|
|
|
|
|
|
inline u32 GetBaseAddress() const { |
|
|
|
// TODO: Ugly, should fix PhysicalToVirtualAddress instead |
|
|
|
return DecodeAddressRegister(base_address) - Memory::FCRAM_PADDR + Memory::HEAP_LINEAR_VADDR; |
|
|
|
u32 GetPhysicalBaseAddress() const { |
|
|
|
return DecodeAddressRegister(base_address); |
|
|
|
} |
|
|
|
|
|
|
|
// Descriptor for internal vertex attributes |
|
|
|
@ -779,5 +778,15 @@ union CommandHeader { |
|
|
|
BitField<31, 1, u32> group_commands; |
|
|
|
}; |
|
|
|
|
|
|
|
// TODO: Ugly, should fix PhysicalToVirtualAddress instead |
|
|
|
inline static u32 PAddrToVAddr(u32 addr) { |
|
|
|
if (addr >= Memory::VRAM_PADDR && addr < Memory::VRAM_PADDR + Memory::VRAM_SIZE) { |
|
|
|
return addr - Memory::VRAM_PADDR + Memory::VRAM_VADDR; |
|
|
|
} else if (addr >= Memory::FCRAM_PADDR && addr < Memory::FCRAM_PADDR + Memory::FCRAM_SIZE) { |
|
|
|
return addr - Memory::FCRAM_PADDR + Memory::HEAP_LINEAR_VADDR; |
|
|
|
} else { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace |