Jump to content

bsnes WIP Update!


olaf

Recommended Posts

bsnes, one of the newest and most updated sees another updated today. Below are the changes in this version as reported by Emu#dreams.

 

- DMV27 pointed out some flaws with DSP sound generation. Specifically, the noise sample wasn't being sign-extended, causing noise channels to sound a little off, e.g. in the Dual Orb 2 opening. More specifically, it was causing half the volume range to be lost.

- I also took the time to fix Mortal Kombat 2/3's serious sound issues. Turns out, the problem was that writes to VxSRCN caused the sample to restart. The later MK games write to these registers constantly, causing the samples to keep restarting before finishing. It seems that writing to VxSRCN should only update the BRR source address, and that the write will only be acknowledged when the affected channel reaches a BRR block with the end bit set.

- I also modified KON to always return the last value written, as anomie indicated. The cause of the Der Langrisser sound corruption appears to be due to clearing KON whenever KOFF is written to. At least for DL, it seems to require that the KON bit remains set, so that when KOFF is cleared, the sample is played. This is contradictory to anomie's research, so further testing will be needed. I also modified the kon/koff update check to every DSP sample generated instead of every two, which is what TRAC uses, to see how it would affect games. I believe some games sound slightly better, but that this may not be correct. I shall have to test this myself as well.

- The C4 wireframe code has been fixed, so the C4 code now appears to be equivalent to the snes9x code, only with slightly more accurate triangle / multiplication functions, some extra test ops that aren't used by the MMX games, and a possible hanging bug with OAM opcode 08h. But then I haven't played through both games from start to finish to verify yet.

- Lastly, DMV27 gave me a fix for bsnes on Win9x, so it should run there now as well. It appears to also compile with MinGW now, too. I still need add his suggestion to make the destructors for base classes virtual, however. This should eliminate the need to static cast base class pointers to call the derived class destructors. c++ is fun.

Click here to visit the homepage and find out more.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...