Saturday, January 29, 2011

Whacked! is playable and more

I hope that this update is proof that I DO listen to user's requests!















Let's kick off the new year with some cool updates, shall we? Got lots to share, but so little time to share it all xD

As you can see, the game known as Whacked! (XDK 4831) appears to be playable for the most part, but I do have some good news and some bad news about it, and hopefully the bad news won't apply to you. But first, let me do a quick rant. Whacked is my 3rd favourite Xbox game of all time, and it makes me feel great knowing that it's now playable on Cxbx and cheers to the guy that requested it too. It only took me one night to get it working, fortunately. This is how I got it working.

When I first tried to emulate Whacked, I was ready to pull my hair out! Cxbx did not initially support XDK 4831, and it's been on my todo list for a long time. Knowing that 4928 is treated as XDK 4627, I figured that it would work if I did the same for XDK 4831. Did it work initially? Nope. That was the most annoying part. Eventually, I found out that it was missing a call to XapiApplyKernelPatches, which was thought to have originated in XDK 4928. So I added that, and that XDK started working normally. Did Whacked work after that? Nope. I was still getting crashes for some strange reason. I couldn't figure it out to save my life at the time, then when I found it, I felt like a n00b! Read on.

A few days ago, I bought some used Xbox games from the GoodWill store for $5 USD each. One of them was the Exhibition demo disc. I know they are only demos, but I got it anyway because it said it had content for DOA3 (which was released prior to Xbox Live's launch, giving it potential value knowing that Xbox Live for Xbox1 is dead). Now, I took it back to my place and did a dump of that disc and just for the heck of it, I tried the Whacked demo. It crashed for the same reason. So I pulled it up in IDA, and it turns out it was just a missing call to D3D::PixelJar::Lock3DSurface. Easy fix, but it's a mystery why that was never added. When I found out that was the thing stopping it from going ingame, I damn near slapped myself because I was stumped on this for a very long time. Did Whacked become playable after that? Still no -_-. Took me a few hours to track the next problem, but I got it though. Turns out that it was just a missing call to XMediaObjectCreateEx. I wrote enough code to make the function fail, but the game still worked after that. That's what fixed the game, and now other games that use it should have less problems, because honestly, I've been dodging this API for a while.

"Okay, it works! Now that's the good/bad news?" Okay, sorry. Had to get that off my chest :)

While the game does appear to be playable, I do want to address a few things.

Good:
- Runs at stable frame rates with debug logging disabled.
- Uses time based movement and every map appears to work so far.

Bad:
- I think I'm having driver issues with my PC and this game. It likes to crash sometimes when creating a 128x256x16 texture. Might not effect everyone.
- Missing textures and post processing effects.
- No sound (the audio is hilarious).
- Only works in debug mode so far. Playing in retail mode crashes.

The point is it works, and when I get the opportunity to update the SVN, you can try it for yourself and see what happens.

Next on our list is Quantum Redshift (XDK 4721). This is another game that a user requested (which was also on my todo list). I can't get passed the menus because the controller won't respond. This is the same problem with Metal Arms. This game makes use of blending effects that are only available on PC via OpenGL. Last time I checked, Direct3D is not capable of using constant colours for blending. Sucks, but I'm working on the OpenGL layer still, and it will be supported once it's finished. This is another one of my favourite games. It's a totally awesome futuristic racing game with an excellent soundtrack. Highly recommended by blueshogun! In the future, I'll look into the issues with this game.

Next is World Series Baseball. This image was submitted by Bill_gates (no, not the Microsoft founder), and since I don't have this game, I can't go any further on it yet. Why the strange interlace-like look? I dunno, looks like a problem with his ATI card drivers :/

Lastly is Splinter Cell the demo version. I also have the full version, but it doesn't play the intro video in Cxbx. I haven't found out why, but I'll look into it later. That game is a headache to deal with. At least the demo shows that there is hope somewhere along the line for it though.

So there you have it, some cool new updates and proof that I do consider user requests. Don't make this your green light to make ridiculous requests like crazy, but requests are fine. Just don't expect it to happen right away.

Stick around,

Shogun.

11 comments:

  1. Congrats! Good luck with the other issues, and please keep us posted on your OpenGL progress, that seems like a good solution for all the D3D8 limitations. Cheers!

    ReplyDelete
  2. Kung Fu Chaos won't be playable for a long time. I bought that game and tried it last night. It uses the dreaded LTCG library and Cxbx can't emulate it. Sorry, I had high hopes for it too. :(

    ReplyDelete
  3. Erm, you might want to look at D3DRS_BLENDFACTOR concerning "using constant colours for blending"...
    IIRC blending support in D3D is just as good as in OGL, just that OGL supports logic blending as well whereas D3D does not.

    ReplyDelete
  4. Nice! When I saw the Quantum Redshift screenshots in the ngemu forum, I was suddenly excited a bit. That game is now probably the second of the compatibility-listed games after Galleon that I would like to play on either of the -XBX emulators straight away.

    I love the rebellious nature of certain racers like the floating racers since I played Star Wars: Racer, and others like the current-gen Pure - a dirt-spraying ATV racer.

    Of course there are about 4 dozens of Xbox-exclusive, & console-only Xbox games that I would like to be added as compatible with either emulators like Burnout 2, 3: Revenge (But the Burnout titles are not so necessary for now as we've got the current-gen iterations, so who cares?), Timesplitters 2/3, SSX 2: Tricky, 3, Fatal Frame (Project Zero) 1/2, & so on. Now you know, lol. But I will wait patiently for you. We've been waiting for years, so I'm used to it, hah.

    ReplyDelete
  5. @BigBrain, the problem is that Quantum Redshift uses D3DBLEND_CONSTANTCOLOR for the Blend factor, and this is an Xbox extension not found on standard Direct3D used to take advantage of an NV2x feature. OpenGL can do this, but Direct3D can't without the use of a shader. Since Xbox has a programmable pipeline we can't use a shader when one is already being used.

    ReplyDelete
  6. Hm, I see.. that sucks. Guess the only way to implement that stuff would be to edit the shader bytecode, but that might not even be worth the trouble :P
    OpenGL is nicer for emulator development anyway ;)

    ReplyDelete
  7. How do I get Whacked! on the emulator? I downloaded it, but I can't figure out how.

    ReplyDelete
  8. I've tried everything I can and still dont work. Only skips through the menus and then crashes. I tried on different computers with windows 7-10 32-64bit for each.

    I'm using the debug build SVN called cxbx-shogun-master. Its the only one that displays the menu for a second.

    I'm trying to make a game like this with similar controls using unity 3d engine. It would be really cool if there were a modern version like this with online and the party fun.

    How can I get this to work? Is there a certain windows OS you use? Maybe something to do with the video card or settings?

    ReplyDelete
  9. You can play this game on any xbox over the internet using xlink kai. Because XBL is shutdown.

    ReplyDelete