Metal Slug 2 – reducing the slowdown

UPDATE 15/05 – DO NOT BUY FROM PEOPLE PRODUCTING MODIFIED CARTS, the readme file specifically bans making money from this patch.  Since this work is given away entirely for free, a modified cart is worth the same as an unmodified one.  If you buy from someone making carts to sell, then you’re supporting the idea that profiteers should be able to make money on other peoples work, that exploiting community goodwill is OK.

Opinions have long been divided on this, but while Metal Slug X is a revised, recoloured, extended and rearranged version of Metal Slug 2, I’m one of those people who just felt that Metal Slug 2 held together better as a game.  I prefer the times of day (changed in X) and I prefer the boss ordering and I prefer the level of detail.  For example in the below picture, the sand in the background of stage 1 is actually animated in MS2 but static in MSX.  Metal Slug 2 is on the left.

slug2fix_1

However Metal Slug 2 has one big problem – slowdown, and lots of it.  Half of the game has to be played at a crippling pace unless you overclock your MVS system, and even then it’s still not as quick as other games in the series.  I don’t know why SNK never addressed this, but it was fixed in X, and it was also fixed in some of the newer port releases SNK have made over the years.

That doesn’t help arcade collectors though who want to play the game on original hardware, and overclocking the MVS isn’t really my preferred solution to the problem.  Over the years on and off I’ve looked into it and never really gone much further, but the most solid information I could find was that there was a problem in the code causing game logic to get updated twice for every graphical frame.

I don’t know any 68k assembly language, but I know a man who does and I was finally able to get some of his time to look at the problem.  Unfortunately, the logic happening twice – isn’t the case.  However one thing he did spot was the 30 fps lock code was causing extra frames to be dropped.  If the game was missing one frame it would miss two.  If it would miss three it would instead miss four.  So, code fix developed it’s time to try it out on a real Metal Slug 2 cartridge.

This is my world weary Metal Slug 2 cart – like so many others a victim of operators removing serial numbers so the cart couldn’t be traced – selling them across borders was against the copyright/usage terms.  Still, it was very cheap.

slug2fix_2

I’ll have to admit I took that photo after I’d finished, you can tell – you’ll see why later.  Remove the 4 screws and then take out the top layer board, which has the code ROM on and looks like this:

slug2fix_3

The code we need to fix is in the 241-P1 ROM.  An equivalent EPROM part number would be M27C800, so you’ll need a blank 42 pin 8mbit EPROM of ideally 100ns – they’re not very expensive on ebay.  When you program this with the updated code, it will also change the NGH (unique game ID every game has) to 941, and change the game name on the SOFT DIP settings page to “METALSLUG2 TURBO”.  This was done so people can differentiate unmodified and original carts without having an obnoxious splash screen or similar.

Desolder the original 241-p1 ROM and put it somewhere safe.  The fixed code is distributed as a binary patch file with patch utilities for Windows and Linux, please download and follow the instructions in the README.txt file.

Click here to download Metal Slug 2 Turbo patcher.

When you’ve burned the 941-p1.p1 image to the 27C800 and verified it, you can solder it into the P1 position.  Note that there is not enough space in the cart to fit this with a socket, so make sure you’ve verified the chip before soldering it in.  If you really do want to use a socket as I needed to in case this didn’t work, you’ll have to dremel some of the inner cart vent plastic away which is hard to do cleanly.  Your CPU board should look like this:

slug2fix_4

Then just bolt it back together – you can see in this photo that I’d dremelled the cart vents to make it fit with a socket.  It’s nicer not to, I wouldn’t expect this ROM to be changed in future so you should be fine to just solder it in.

slug2fix_5

With this fixed the game still slows down as often as it used to and in the same places, but the actual delay between frames is reduced by 1 across all speeds.  To improve things more would mean actually rewriting chunks of code as apparently there are many slow functions in there and the reason MSX is so much faster is because they’d actually re-written the engine rather than just fixing MS2, which was based on the original Metal Slug code.  Here’s a video showing the difference, nearly 20 seconds just across the first level despite some mistakes on the ‘turbo’ run.

If anyone from SNK wishes to contact me to request removal, please contact me on the shmups.system11.org or neo-geo.com forums, user ‘system11’.  This has purely been provided to improve one of your classics for owners of classic arcade hardware, and no harm is intended.