xenia-project / xenia

Xbox 360 Emulator Research Project
https://xenia.jp
Other
8.25k stars 1.14k forks source link

Unknown GPU Registers #610

Open NeoTheLynx opened 8 years ago

NeoTheLynx commented 8 years ago

We have tried one a few torque games and they are missing a lot GPU related, which is causing rendering bugs and possible cases where the player falls through the floor.

https://www.youtube.com/watch?v=ovwUd-PoYuY

We have tools that can mod the game, we will give them to you upon request if you are needing them.

For Marble Blast Ultra, here is some of the missing registers.


AVIVO_D1***


My friend found those, dont know where, but all torque games are like that.

Razzile commented 8 years ago

marble blast runs absolutely fine for me. Oh and hey @neolightning!

EDIT: I do remember falling through the floor however in some levels like mentioned

NeoTheLynx commented 8 years ago

@Razzile How is it working?

hekar commented 8 years ago

@neolightning That's on the OpenGL renderer (with an AMD card)? I'd wait until AMD is supported in Vulkan and give it another test.

It might make sense to close this issue and merge your findings with: https://github.com/xenia-project/game-compatibility/issues/47

NeoTheLynx commented 8 years ago

OpenGL With AMD Radeon R7 360.

xeniambu1 xeniambu2

DrChat commented 7 years ago

708 Adds definitions for most of the unknown registers. They should be able to be safely ignored.

ghost commented 7 years ago

00000004 GPU: Write to unknown register (045E = 00000004) This one is still a problem, do you know what that does?

DrChat commented 7 years ago

@tmccaff That's the callback acknowledgement register, which we can safely ignore.

ghost commented 7 years ago

@DrChat I also found in some games Write to unknown register 1924 and also 0081, 0082. I am trying to figure out what those are.

raynebc commented 7 years ago

The game Bandfuse uses two additional registers not listed here or in #708 (or its pull request): 00000004 GPU: Write to unknown register (0E00 = 00000001) 00000004 GPU: Write to unknown register (0E40 = 00000001)

DrChat commented 7 years ago

@tmccaff If you want to examine some libxenon code - multiply those register indexes by 4 and then look for them here.

For context - I'm mostly ignoring registers < 0x2000, as they're less important.

Range Type
0x0000 - 0x1FFF Setup
0x2000 - 0x2400 Graphics
0x4000 - 0x5000 Shader Constants
ghost commented 7 years ago

@DrChat for example I have w> 00000004 GPU: Write to unknown register (1973 = 00010000) so are you saying multiply 00010000 x 4? I am new to this and want to help. Thanks

ghost commented 7 years ago

thanks DrChat and parkerlamb for explaining this..

ghost commented 7 years ago

722 Added GPU register 0x1924

Sleepy93 commented 7 years ago

GPU reads from unk. register:

!> 00000028 GPU: Read from unknown register (044B)

GPU writes to unk. register

w> 00000004 GPU: Write to unknown register (0081 = 80010000) w> 00000004 GPU: Write to unknown register (0082 = 00000000) w> 00000004 GPU: Write to unknown register (0E00 = 00000001) w> 00000004 GPU: Write to unknown register (0E40 = 00000001) w> 00000004 GPU: Write to unknown register (1E4E = 00000000)

refs from GameCompatiblity: #229 #357 #795 #796 #797

Sleepy93 commented 4 years ago

I think we have another two unknown registers :)

Ref - 434D0839 - Bodycount | #221