PCSX2 - Widescreen Game Patches
Thanks sergx12! I put the codes on Dolphin Wiki.

For Sonic Adventure, can you check this out?

   

Water is broken during the first Eggman fight.
Also, the black fade-in-fade-out screens are still in 4:3, any way to disable them entirely or stretch to widescreen?

One more request, can you do a Sonic Heroes render fix?
Reply

Sponsored links

(05-09-2015, 03:13 PM)monsterjamp Wrote: @Aced14: Nice, I was actually trying to figure out how to make a patch for Frequency based on your post about Amplitude. If you don't mind me asking, can you explain how you figured out the patch again? I understand you overwrote some code with your own code and I sort of understand MIPS assembly. But how did you find which address to write to (How did you know to overwrite $f0)?

Based on your reference to $f0, I presume you're talking about MIPS registers as opposed to addresses.

What I did was use PCSX2's debugger. I setup a breakpoint on one of the memory addresses Amplitude's ELF file was about to write the X FOV into. When I loaded my savestate and encountered the breakpoint, I went to the debugger's "Registers - FPR" tab. It contains an outline of all float registers' values at that point in time. All of the latter float registers ($f20 through $f31) appeared to be unused because they all contained 0.000000.

Amplitude's ELF file normally writes $f0's value into the aforementioned memory address. I ended up injecting a jump command right before it writes to that address. It goes to an area of the ELF file's memory I overwrote with custom MIPS logic. From there, I loaded 0.75 into the unused $f31 register, multiplied the $f0 register's value against it, then stored the result back into $f31. The reason I didn't use $f0 for the result is because the ELF file still uses $f0 for a couple of division calculations after its value gets written to memory. I didn't want to interfere with those calculations. I then wrote $f31's value into the memory address I keep referring to instead of $f0's value. Finally, I jumped back to where I came from (2 lines latter).

Is that the kind of information you were looking for? If you're still unsure about anything or have a more specific question, I could try to explain further Smile.



(05-09-2015, 03:13 PM)monsterjamp Wrote: Also how did you convert the MIPS code to a pnach?

I usually use ps2dis to do it, but other ways exist too.

Keep in mind that there are sometimes differences in how the tools I'm about to cover interpret and/or display plain-text MIPS instructions (HEX representations should always be the same). I personally use ps2dis as my "benchmark" for MIPS instructions. When I develop pnaches that necessitate injecting custom MIPS logic, I include ps2dis' plain-text instructions in line comments.

Here's how to do it with ps2dis...
  1. Open an ELF file in ps2dis.
  2. Go to "Analyzer - Invoke Analyzer" (probably isn't necessary for your purpose - but it's the first thing I always do).
  3. Go to any line of code and double-click it.
  4. In the pop-up window, enter a MIPS instruction into the "Command" field. The "Data" field's value will change on-the-fly. "Data" is a HEX representation of the instruction. I usually copy its value for use in Cheat Engine (for testing) and my pnaches.
  5. Repeat the previous step as many times as needed.

Other tools that can achieve the same kind of purpose...
  • Pelvicthrustman's PS2 Hacking Toolkit - MIPS Mini Assembler:
    • Allows you convert MIPS instructions to HEX, one at a time.
  • PCSX2's debugger:
    1. Run a game in PCSX2.
    2. Go to "Debug - Open Debug Window..." in PCSX2's file menu. If it's not there, upgrade to the latest Git version of PCSX2.
    3. Click the "Break" button.
    4. Select any line of code in the right panel and start typing. An "Assemble opcode" window will automatically pop-up, showing what you're typing in.
    5. Finish typing your MIPS instruction, then click the "OK" button.
    6. Right click on the line you modified and select "Copy Instruction (Hex)".
    7. Repeat steps 4-6 as needed.


Edit: Added more context as to why I didn't directly store my widescreen calculation's result in the $f0 register instead of $f31 (third paragraph after the first quote block).
Reply
Thanks, that's really helpful. I've never used PCSX2's debugger and I didn't know how to find when the fov value was being written. Your post clears up a lot of confusions I had.
Reply
KH2FM rev8 is out, and is probably going to be the final release, so I'll update the widescreen hack again.

https://www.youtube.com/watch?v=vLr91ehKlJE

More info + Download in video description.
Reply
Nemesis, is it possible to widescreen hack the updated Steam version of Sonic Adventure?
A patch was released in September 2014 which made previous widescreen hacks incompatible.

If you'd like, I can gift you a free copy of it via Steam if you promise to check it out.
Reply
(05-11-2015, 05:38 AM)Devina Wrote: Nemesis, is it possible to widescreen hack the updated Steam version of Sonic Adventure?
A patch was released in September 2014 which made previous widescreen hacks incompatible.

If you'd like, I can gift you a free copy of it via Steam if you promise to check it out.
request exe file
Reply
(05-11-2015, 03:59 PM)nemesis2000 Wrote: request exe file

There's 2 files:

https://www.dropbox.com/s/fn93p0udd9jn2e...c.rar?dl=0
Reply
I'd like to request a Widescreen patch for Shadow Hearts NTSC-U (the first game).
Reply
(03-26-2015, 06:28 PM)No.47 Wrote: So the patch works on your PS2 but not on the PS3?
(At least it should work on PS2, since it does for me...)

It's a memory patch, so converting to search/replace hex pattern with PNACH converter won't work. Embedding with Patch Engine should theoretically work, but I don't know what could go wrong when emulated on a PS3 - sure, it's a backwards compatible PS3, but still...

EDIT, this is what I'm using. Just in case... Wink

Code:
"Sega Rally Championship /ID SLPM_627.03"
Mastercode
901CCB58 0C07327E
Widescreen
2030f990 43610000
2030f9e0 42e10000
2030fa94 43a8c000
20310340 43960000
203105d8 43960000
20310718 43960000
20310878 43834000
203114ec 3faaaaab
20311650 00000000

Thanks

I tested the iso patched with my old PS2 and I have the same issues: partial widescreen: game select and car select widescreen but in game no widescreen.

How to patch it manually? With patch engine not worK.

Thanks
Reply
(05-13-2015, 04:37 AM)rmcin329 Wrote: I'd like to request a Widescreen patch for Shadow Hearts NTSC-U (the first game).

Already in archive, only works in 3D battles.
Reply




Users browsing this thread: 28 Guest(s)