Romhacking => Programming => Topic started by: kaspro on January 20, 2013, 05:00:14 pm

Title: Help me fix a bug plz!
Post by: kaspro on January 20, 2013, 05:00:14 pm
Hello guys i come from france and im gonna explain you my problem.
I want to fix a bug in a game on playstation (command and conquer red alert retaliation)with cheat engine which contains a debugger.It s a strategy game ,the problem is when you launch big attack in same time ,some unit who got an electric weapon freeze the game,maybe ecause there is too much electric animations at the same time because it happens only with these unit ,but before freeze a strange number appears ,so i tried to freeze it(found value adress with cheat engine) but doesnt work the game crash ,but just before crash strange colors appears so i would like to know who can help me fixing a bug really hard to use debugger i understand nothing.Maybe the problem can come from the console playstation (graphic card) but i dont know cause  problem is on my ps3 which contain an psx emulator and epsxe too.Thanks a lot for your help guys  ;) ;) ;)
Title: Re: Help me fix a bug plz!
Post by: FAST6191 on January 20, 2013, 06:15:12 pm
I am not much of a playstation hacker but what you have asked for is actually potentially really difficult to find let alone generate a fix for. Also working against you is by the looks of things there is no new content here and nobody cares for RTS games on a home console this side of Dune II or cannon fodder, on the other hand we have seen people fix cheetah men 2 and I am not exactly picky in what I help people pull apart.

So if I have it straight upon launching a large attack when using a particular type of unit the game crashes. Before the crash proper there is a number on screen and/or graphical corruption.

I agree the numbers could be a leftover from some form of memory/registers dump or other debug info, it could just as easily be the result of memory corruption from a bug in programming (safe languages still have not really took off in game programming and certainly were going to then).
Likewise it could be an animation overload as you ponder or it could be underlying logic for it all- having never played the game I would not know but lightning in these sorts of things has a habit of being chain/passthrough lightning which is a way to overflow buffers very easily if you implement it in a basic/"obvious" way.

That it happens on an emulator and real hardware does not mean a lot at this stage- your classical buffer overflow could lock up the game anywhere and likewise it could be that the emulators are accurate enough that they crash too. For an added bonus it might not work that way on a PC either which could be considered to have unlimited resources and gets programmed for in a different way, for a further added bonus lightning probably includes "Tesla Tank" which was a new unit by most accounts and a prime candidate on the list of things to spoil a hasty port.

Anyway talk of basic computer science gets nobody anywhere so what you will want

A savestate (or three) shortly before you attack with the units mentioned.
If your debugger has stepping capabilities then you can use that, here you load the savestate, select attack and press go, immediately jump to the debugger and go instruction by instruction. If you know your MIPS assembly and Playstation architecture it might spring out at you here.
Try this on a few different maps in similar situations, you might be able to skip this but try if you can.

Alternatively if you had a fairly commented disassembly or even something roughly mapped it could get something done. Were it any other PS1 game aside from maybe a Final Fantasy I would say not a chance of finding something like that (it is rare to find for highly hacked consoles like the NES, SNES or Nintendo handhelds), but I have crossed paths with a few of the command and conquer lot in the past and they do good work on occasion.

My cheating bastard fix is see how many tanks will cause the game to break and limit it to one less than that- even if you find it you are going to have to program in a safe but fast routine to handle the affair (regardless of whether it is graphics or underlying code related) and to do that in MIPS ASM on a last minute PS1 port of a PC RTS game... urgh.
Title: Re: Help me fix a bug plz!
Post by: kaspro on January 20, 2013, 09:09:42 pm                   look i post a video,really hard for to do what you said ,i dont have any programming knowledge.........

January 20, 2013, 09:20:36 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
As you can see number goes down and when he is under 0 game crash , i would like to know what is this value.. I got the adress lin what can i do with it?