When skipdraw doesn't work...
#1
In many games, the GSdx hardware hack skipdraw removes overlays or blur effects (deleting n surfaces). When this works, it is a great way to remove unnecessary overlays on screen that clutter the screen during gameplay.

However, for some games, skipdraw (for whatever reasons) doesn't work. In many games, even if you set it to 100 it won't seem to remove anything. For games where skip draw doesn't do it, I would like to figure out an alternate way to remove some of the overlays on screen.

Does anyone have any advice on what I can try or where I can look to hide these layers? I've had some success finding surfaces / on-screen overlays via cheat engine, and turning them off temporarily, but many of them flick back on when certain things in the game trigger it.

It would be very helpful to be able to have more control over the on-screen overlays in general for PS2 games where skipdraw doesn't have any effect on hiding surfaces like overlays.

I bring this up because there have been many widescreen patches made to adjust the FOV, and zoom, but the on-screen overlays still remain the same size and in some games take up a lot of space on-screen.
Reply

Sponsored links

#2
If I understand its working it removes the layer number x and not x layers. This way to think makes sense since removing 100 layers practically leaves nothing to draw, even a much smaller number of missing layers would be a huge impact.

About the overlay I can't say anything and suppose each game treats it differently, if ever has them.

None the above is granted to be so, I don't know much about the feature, just that makes no sense it was the other way,
Imagination is where we are truly real
Reply
#3
(12-22-2014, 06:23 PM)nosisab Ken Keleh Wrote: If I understand its working it removes the layer number x and not x layers. This way to think makes sense since removing 100 layers practically leaves nothing to draw, even a much smaller number of missing layers would be a huge impact.

In my experience, the way it works is it removes x layers, not just layer number x. So, as you increase skipdraw from 0 to 1,2,3 etc more layers get deleted. Usually first are a "blur" layer if there is one (usually skipdraw=1), then as you increase to 2,3,4,5,6… some of the overlays are removed, then eventually as you get up into 20, 30, 40 etc the textures get removed. This could be difference depending on the game, but generally that has been my experience. In some games, this works very well and removes some of the overlays. However, it would be great if we could do what you said and select which layers get deleted. Regardless of that, there are many games where skipdraw doesn't work at all.

Quote:About the overlay I can't say anything and suppose each game treats it differently, if ever has them.

None the above is granted to be so, I don't know much about the feature, just that makes no sense it was the other way,

It is for those games (where skipdraw has no effect) that I'd like to find another way to remove layers, like overlays, etc. Perhaps the skipdraw function (in GSdx hardware hacks) only points to a memory location that only some games utilize, but maybe other games have a difference location of where those layers are. The developers who designed this feature might have more information on this.

It would be great if skipdraw could be expanded and compatible with more games as pcsx2 development continues, but if not, I would very much like to research alternate ways of removing layers on a game by game basis for games where skipdraw does not work.
Reply
#4
I think skipdraw means remove x layers as op is thinking...
I think skipdraw can only remove some post processing stuff... therefore this can not completely erase the whole image. If the effect you want to kill is not in the post-processing but in the image-processing you can not remove it with skipdraw.

The 'easiest' way is to kill the code that creates the blur or whatever effect. This can be normally done using the pnach-system by something like
Code:
patch=1,address,extended,0000000
And you only need to find the correct address... (maybe you need some special code as type-4 codes to overwrite some more addresses and therefore you might need some more addresses and some more special values than 0x0)

The easiest way to find the address is to check the differences between two different scenes where once the effect is present and once not. (Will be hard for graphics stuff) or to have some idea how the graphics processing is done.

I guess for some rare cases with some smart coders you can create these pnach files.. But if you don't know where to start you will probably need more time than it is reasonable.
Reply
#5
(12-22-2014, 11:42 PM)willkuer Wrote: The easiest way to find the address is to check the differences between two different scenes where once the effect is present and once not. (Will be hard for graphics stuff) or to have some idea how the graphics processing is done.

This is exactly what I have been doing for games where skipdraw doesn't remove on-screen overlays during gameplay. In these cases, in games where skipdraw doesn't remove anything, I use cheat engine to do single-byte searches between 0x20000000 - 0x22000000 to try to turn overlays off manually. When the overlay is on the game I search 01 and when it is off I search 00, and this technically works. i.e. I find the overlay address and can turn it off manually by freezing it at 00. However, the problem is that even when I turn it off and freeze the address at 00, it still flashes on throughout the gameplay, so it sorta flickers on and off because that is the way the game is programmed. (for the overlay to be always on)

So basically I am able to do what you suggested, by searching for the value 01 when it's on and 00 when it's off and force / freeze it off at 00. Removing the layer completely, like skipdraw is able to do in games where skipdraw works, would prevent it from popping on and back off like that.

Quote:I guess for some rare cases with some smart coders you can create these pnach files.. But if you don't know where to start you will probably need more time than it is reasonable.

I thought of putting it in as a pnach code but the address that temporarily turns the individual overlay off that I find through cheat engine don't seem to be static, but rather a dynamic address, i.e. an address that seems to change its location every time I start up the game.

Basically all I am trying to do is have skipdraw work with more games. For the games that skipdraw works, I have no complaints. It is a great feature and usually turns off the overlays. But for games where skipdraw doesn't work, there are issues getting the overlays to turn off. You have to find the individual overlays through cheat engine searches, and like I said sometimes there is an issue with the overlays turning on automatically (even when forced off) due to the way the game is programmed.

I hope I have explained the problem sufficiently and we can figure out a permanent way to remove layers / overlays for games where skipdraw doesn't work.
Reply
#6
So you already know a bit about the subject.

The cheat-engine tutorial is quite helpful for you. They provide a solution if a variable address is changing something if I remember correctly.

I guess the freezing/non-freezing problem is that cheat engine updates the address if it is changed every x ms. I don't know if you really can freeze something. but the frame is updated every 20ms or something like that.

I would put exactly that that cheat address that you have there to the pnach system. I guess it will work then.

patch=1,address,extended,00000000
is the mask

If you are successful it would be very kind if you can provide the code for others in the compatibility list as well as in this thread.
Reply
#7
willkuer, I have narrowed down the code that turns off the overlay to a specific address of this code. I have determined that the overlay address changes based on what game settings are used.

I had already done exactly what you suggested, putting in patch=1,address,extended,00000000 into the pnach and turning cheats on. It worked the same way it did by freezing it in cheat engine. Once again, the overlay turns off like it does in cheat engine, but as the game progresses it repeatedly flashes on, then turns back off, so it ends up flickering on and off throughout gameplay. I think it has more to do with the way the game is programmed, for this menu to pop on and off at certain times. I bet others have encountered a similar type thing, or trying to turn something off but the game programmed to force it back on.

Obviously another address is trying to repeatedly turn that overlay on while I am trying to freeze it being off, and it flashes on at certain points throughout gameplay, then back off. This is why I asked about skipdraw because skipdraw works in a much different way. For games where it works, skipdraw would turn off entire layers, so once the overlay turns off, it wouldn't flash on and off like trying to force individual overlays off in cheat engine does.

It's a bit of a complicated problem for this particular game, but I would like to know why skipdraw doesn't work with some games. The layers must be there somewhere.
Reply
#8
Sorry I somehow forgot that thread.

(12-26-2014, 01:43 AM)planetps2 Wrote: Obviously another address is trying to repeatedly turn that overlay on while

Then you have to find that second address that and disable it. As I said there is some hint in the cheat engine tutorial. This is actually a quite common problem for cheats.
Reply




Users browsing this thread: 1 Guest(s)