News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: FF7-PSX. Trying to fix w-item's glitch  (Read 2112 times)

Wert

  • Newbie
  • *
  • Posts: 3
  • Weeeeert
    • View Profile
FF7-PSX. Trying to fix w-item's glitch
« on: August 04, 2013, 06:57:36 pm »
Hi everyone! I'm a member of a team that are doing a FF7's spanish (Now that I think the team not even has a name  :huh:)

We almost have finished with it but I wanted to be one step ahead ang trying to fix (or partially fix)  W-item's glitch. Ironically, this glitch isn't in the first Final Fantasy VII japanese release, they added since international version to fix another minor glitch (Great job Squaresoft! :thumbsup:)

Thanks to Kranmer in qhimm's forum (http://forums.qhimm.com/index.php?topic=11839.0) we know where is the function that increase the item (PC). The problem is that we are working in PSX version and not PC.

So we trying to search a equivalent of ff7.exe's PC function in PSX files via debugging with no success (ELF? BATTLE.X? :banghead:).

And here I am, looking for someone to help us or give us a hint to know how we can search it.


According to Kranmer the increase comes from the adress 006DB691 (002DAA91 in ff7.exe) and we can see this around that:

Code: [Select]
.text:006DB66C loc_6DB66C:
.text:006DB66C        xor     edx, edx
.text:006DB66E        mov     dx, word_DC3638
.text:006DB675        imul    edx, 6
.text:006DB678        mov     eax, [ebp+var_C]
.text:006DB67B        mov     cl, [eax+edx+2]
.text:006DB67F        add     cl, 1
.text:006DB682        xor     edx, edx
.text:006DB684        mov     dx, word_DC3638
.text:006DB68B        imul    edx, 6
.text:006DB68E        mov     eax, [ebp+var_C]
.text:006DB691        mov     [eax+edx+2], cl
.text:006DB695        xor     ecx, ecx
.text:006DB697        mov     cx, word_DC3638
.text:006DB69E        imul    ecx, 6
.text:006DB6A1        mov     edx, [ebp+var_C]
.text:006DB6A4        xor     eax, eax
.text:006DB6A6        mov     al, [edx+ecx+2]
.text:006DB6AA        cmp     eax, 63h
.text:006DB6AD        jle     short loc_6DB6C3

We know that Psx and PC code are encoded into two entirely different binary languages (MIPS R3000 vs x86) but We though that maybe it can help us.

Thanks for your attention and I'm sorry if you don't understandme at 100% but I don't write english from a long time (I need more practice :-[  ).

See ya! :woot!:

Pyriel

  • Jr. Member
  • **
  • Posts: 23
    • View Profile
Re: FF7-PSX. Trying to fix w-item's glitch
« Reply #1 on: August 05, 2013, 07:50:04 pm »
There's not a lot you can get from that code that could be translated into something to search for in a PSX executable.  Most of it is clearing registers and establishing the address of the quantity.  Assuming it is what you say it is, which looks likely.

All you can really tell from this is that the quantity is a byte, and you can expect to see a load byte, followed by an addi(u) of 1 to that value farther down, and then a store byte followed by a check on the value's upper limit (99).  You'll probably get faster results just searching for immediate operands of 0x63 in IDA, and using a GameShark or PEC or whatever to see if you're changing the right operation.  It sounds like the guy you got this from is removing the store operation, so you can go that route, and see if you can replicate his results.

Honestly, you probably guessed all of that yourself.