'I give up'

Clements - Feb 04, 2007

Found a potential bug with MKII:

Code:

NSRT v3.3 - Nach's SNES ROM Tools

---------------------Internal ROM Info----------------------
File: Mortal Kombat II (U) (V1.1).sfc

Name: MORTAL KOMBAT II Company: Acclaim
Header: None Bank: HiROM
Interleaved: No SRAM: 0 Kb
Type: Normal ROM: 24 Mb
Country: USA Video: NTSC
ROM Speed: 120ns (FastROM) Revision: 1.1
Checksum: Good 0x7221 CRC32: 70BB5513
MD5: A0B9BEBBC80958E36292ABD9B8FB758E
--------------------------Database--------------------------
Name: Mortal Kombat II
Country: USA Revision: 1.1
Port 1: Gamepad Port 2: Gamepad
Genre 1: Fighting Genre 2: Hand To Hand

Character sprites glitch up in-game and in the Character Select. This happens in bsnes v0.019 and the wips.

Note: I also tested MK1, MK3 and UMK3, and they seem to be unaffected by this. Just affects MK2.


byuu - Feb 04, 2007

I give up. Video and audio synchronization at the same time is impossible for me to implement.

For audio synchronization, I've hooked polling vblank status as much as possible, I had something like 40,000 vblank tests per second as well as zero Sleep() commands. The result is that I still miss 20% of all vblank periods entirely.

For video synchronization, it doesn't matter how close I get each buffer, even a difference of ten samples with a hermite resampler results in unbelievably noticeable pitch distortion. A lowpass filter only makes the situation worse as the rounding error eventually builds up until it overflows, resulting in an even more vastly different pitch rate for that sample block.

Neither are possible, so I'm not going to keep wasting my time anymore. I've removed all traces of my attempts at doing this and I will not be trying this again.

If you want perfect audio, expect video tearing. If you want perfect video, you'd better mute the audio. Don't like it? Use ZSNES. I don't know how they pull it off, and I really don't care anymore. End of topic.

As for Mortal Kombat II, the problem began between v0.018 wip14 and wip16. The only change there was the total rewrite of IRQs. Motherfucking hell if I'm touching IRQs again. Mortal Kombat II, fuck you. You're staying broken forever, unless someone else fixes you (like triple buffering, hahahahahah). Let's not kid ourselves: even if I did fix this bug, it would just break three other games, guaranteed. Why bother anymore?

I no longer have the motivation or passion to continue to put myself through this physical and emotional pain to work on these issues in bsnes anymore. bsnes has become nothing but a headache for the last year now. Either someone else can join up with me to work on this stuff, or we can consider v0.018 the final version of bsnes for public use, and I'll take development in a personal, private direction once again.

As of now, I'm refactoring and cleaning up the code. I've been chasing down so many bugs and doing so many things at once to make everyone happy that my code is now almost a complete trainwreck. I scrapped the D3D-specific scanline renderer and will be rewriting a software renderer for that purpose. I also removed the D3D-vertex-specific pause gamma adjustment, video profiles, D3D-specific screenshot capturing, and DD/D3D fullscreen support (I'll still support pseudo-fullscreen mode in the future).

I'm going to continue cleaning up and refactoring my codebase. Filters are going to be moved out of the core of the emulator, along with other things that don't belong there. I'll continue to scrap wanton features that are better suited for ZSNES and clutter up my code.

Sorry everyone, I'm going to make working on this emulator fun again, even if it kills my userbase and my original project goals.


© 2007 ZSNES board - www.emusource.net/bsnes/index.html