Previous Page | Next Page

by punk7890-2 at 4:43 PM EDT on September 11, 2015
Awesome, thanks.

EDIT: Noticed a few tracks that have errors: Hopeless Desire, Oui Are Al Bhed, Cloister Of Trials (weird clicks happen every now and then)
Haven't went through the entire set yet.

edited 10:42 PM EDT September 11, 2015
by RB at 7:53 PM EDT on September 11, 2015
Oh, wow. I spent years trying to debug FFX. I'm glad it turns out the rip was just bad.
by kode54 at 8:14 PM EDT on September 11, 2015
The rip managed to work in Highly Experimental, due to its acceptance of bad code.

I think its delay slot implementation is as simple as many MIPS console emulators are, in that it just executes the opcode immediately following a branch, before committing that branch, and all without actually validating the operation. Easiest way to do it while still remaining capable of running assumedly valid code.

The MIPS core in Audio Overload, on the other hand, has full delay slot emulation, and emulates all delayed load operations the way one would expect a strict machine to do it. Invalid operations will throw exceptions, like a real MIPS processor should.

There are a few other rips that need fixing.

I need to go in and fix the entirety of the Chocobo's Dungeon 2 rip that CaitSith2 made. There's a dirty hack in the official Audio Overload code, but that relies on tag reading, so I didn't want to include it in my version of AOPSF, so that set is still broken.

The bug there is exactly delay slot. An infinite loop branch placed in the delay slot of another branch opcode, which throws a MIPS exception. The fix is extremely simple, to move the infinite loop branch forward by one opcode, and fill its old place with a NOP. Easy peasy lemon squeezy.

The problem with this set is that it's not minipsf based, so it will involve mass unpack/patch/repack cycling the entire set. Should be easy enough to write a tool to do it.

E: I think the fixed set gets away with using some code borrowed from the FFX-2 rip, which never had this problem. Or at least, I saw an ffx2.irx being loaded during the boot up process.

edited 1:26 AM EDT September 12, 2015

E 2:

Here, have a patcher for Chocobo's Dungeon 2 rip:

https://gist.github.com/kode54/072e25c83f86cef6016d

And a fully patched set:

Chocobo's Dungeon 2 [Chocobo no Fushigi na Dungeon 2] (1998-12-23)(Square).7z

edited 2:26 AM EDT September 12, 2015
by RB at 4:44 AM EDT on September 12, 2015
Nice, thanks!

If we can get Shadow Hearts re-ripped to actually respect the return value from malloc() now that'll eliminate the need for cheese in AOPSF.

edited 9:56 AM EDT September 12, 2015
by Feldspar at 5:52 AM EDT on September 12, 2015
PSF Decoder settings item(Reverb,Emulation,Output debug info to console)gray out...
Will you this item is not available anymore?
by kode54 at 5:46 PM EDT on September 12, 2015
Reverb would be fairly simple to implement a switch for again, but I don't intend to make a switch for Emulation, since the only thing it really did was make DMA transfers fire completion interrupts instantly instead of with a realistic delay, which doesn't seem to break any sets yet.

As for Output debug information to console, that mostly caught debug printfs from the emulator, and forwarded them to the caller. That may be useful in PSFLab, or in debug builds of the player to track down broken sets, but how useful is it in the player for normal use? I could still try to implement this again, though.
More bugs? by Yoshinkeru at 6:10 PM EDT on September 12, 2015
On this information, I went ahead and updated my foobar2000 components, including foo_psf.

For some reason, it still has the Highly Experimental header in the component list and the logo on its configuration page.

Also, the Brave Fencer Musashi and Rayman rips aren't working anymore.
by kode54 at 11:28 PM EDT on September 12, 2015
I fixed Brave Fencer Musashi by implementing support for event 9 spec 5, which is for waiting or polling on the SPU DMA interrupt status. A few, such as the last track, also rely on the TestEvent function not setting psx->WAI to 1, or at least the event clearing it afterward, or else it can't poll properly.

One down. Many to go.
by punk7890-2 at 9:29 AM EDT on September 13, 2015
Noticed Chrono Cross doesn't work at all anymore either. :/
by kode54 at 1:57 PM EDT on September 13, 2015
Yeah, I broke a bunch of sets doing it wrong. Now those should work.

Previous Page | Next Page
Go to Page 0 1 2 3

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source