
Multi-Man Melee is now called Multi-Man Smash and the player now confronts black-palette versions of Mario, Link, Kirby, and Pikachu, all of whom have very limited movesets and high stamina.
Super smash flash 2 beta v1.1 mod#
Here’s an example mod that changes Pichu’s name.A missing Stadium sub-mode from the official games that is absent from the original SSF gets reincorporated: Home-Run Contest, where the objective is to launch the Sandbag as far as possible by first racking up its damage, players are able to enable and disable a protective barrier that prevents the sandbag of getting out of the main platform, unless launched strong enough to break it. withExtension ( ".swf" ))Īnd that’s it! We’ve got an SSF2 resource (de)compresser! There are other thingsĮncrypted in the code, like what characters / stages are in what. bytes ) garbageLength = bytes swfBytes = bytes write ( swfBytes, file. ssf: def decompress ( file : SSF ): bytes = zlibDecompress ( file. Pretty simple! Here’s the pseudocode to decompress a. bytes compressed = zlibCompress ( buffer ) write ( compressed, file. # the length of the garbage data to 0 aboveīuffer += file. # we don't need any garbage data since we set length as Int32 # we want to truncate it to 4 bytesīuffer += 0 as Int32 # 4 bytes for 'n' described above ssf: def compress ( file : SWF ): buffer = new ByteBuffer () buffer += file. Matter much, only the compressing / decompressing. I chose to write in in Kotlin since it is a language I enjoy. What’s next? Write a tool to generate the headers! The SWF itself prefixed by the typical SWF header, FWS.Any number of random, useless bytes, as indicated by #2.4 bytes to indicate the size of the garbage data in bytes.4 bytes to indicate the size of the SWF in bytes.This mystery header doesn’t actuallyĬontain any information, it’s skipped right over! What’s really going on here? b starts off with the length of the SWF data ( l)Īnd the length of the mystery header ( n). b is set to the bytes we just copied to b, truncating the original array to l.The bytes in b from [b.position, l) are copied to c.The beginning two ints in b are stored in l and n.A new ByteArray, c, is constructed to obfuscate things.At the beginning, b is our resource file that is loaded into a ByteArray.data as ByteArray c = new ByteArray () try
Super smash flash 2 beta v1.1 code#
The code containing the string is: var c : ByteArray = null var l : int = 0 var n : int = 0 var x : int = 0 var b : ByteArray = m_urlLoader. Instantly had one hit in com/mcleodgaming/ssf2/util/Resource.as. I disassembled the game using JPEXS and grepped the code for ZLIB. This tells us something in the code has to be decompressing them.

Modifying this header breaks loading the resource.There’s a mystery header before the SWF header.Inspecting these ssfs shows us a couple things: All we need is to figure out how do decode these into the SWF format The files in the resourcesįolder are named DAT1.ssf, DAT2.ssf, DAT3.ssf, etc. The resource files are in a “hidden” ssf format. Things, except some of the core resource loading was obfuscated (manually?). Thing I noticed was that nothing was obfuscated, which made it easy to find some Written in ActionScript, which is very similar to other OOP languages. I used the JPEXS Flash decompiler to inspect the code. That of courseĭidn’t stop me from digging into the game. Thing is poor considering they’re making a non-profit game. The SSF2 developers have had a strong stance against modding, which I personally

In this Discord Server asked me to check out Super Smash Flash 2 Beta v1.1.0.1īecause their old modding tools didn’t work for it. With a bunch of people who like modding Sonic Battle for the GBA. I run a Sonic Battle Hacking Discord Server, filled
