There is no reason to dupe in Diablo 2 on multiplayer LAN or open battlenet since the characters are saved on your local hard drive and you can download an diablo 2 character editor (there are many) to give yourself whatever you want, even change attributes on items to make them super overpowered.
As for closed battlenet, duping still exists, in particular, high end runes are still often duped on the ladder where they can be used in powerful ladder only rune words. The reason why runes are the choice for duping is because they cannot 'poof' if they are immediately used in an item for a runeword as they take on the UID of the item they are put in, but if two duped items with the same UID enters a game, they will dissapear.
How it works
When GameShark (and other game enhancer products/homebrew) gets loaded by the console, the enhancer is what launches the actual game. In doing so, it leaves behind a Code Handler in the system RAM and "hooks" the game's programming.
Specific locations in a game's programming that get executed roughly every frame (like reading the controller data) are where "hooks" will be placed. (because SDKs are used, this makes finding hooks that work in all games for a system much easier)
What the hook actually does is redirect the flow of programming to the Code Handler the enhancer left behind. Once the Code Handler is finished executing, it returns the flow of programming back to the point of hijacking.
If you are familiar with GameShark's "Master Code", that is what sets the hook.
(other enhancers - like Gecko OS for Wii - don't need master codes because the enhancer itself has a handful of SDK-based hooks that it can "find" in the game while it loads.)
Structure of codes
Now a code itself is separated into THREE parts:
- The CodeType (this is USUALLY the first byte of the code-- the first 2 Hex Characters). CodeTypes are specific to the enhancer.
- The address in ram that the CodeType will use.
- The value the codetype will use at the specified address.
The most common CodeTypes are:
RAM Writes (typical options are 8bit, 16bit, or 32bit)
With RAM Write, the CodeHandler will take the value and place it at the address. (changing whatever was there, like setting your health to 100!)
Conditionals (typical options are >, <, =, !=)
With Conditionals, the CodeHander reads the value at the code's address and compares it to the value in the code. IF the comparison returns true, then the CodeHander will execute the next line in the code. (how many lines it executes is up to the enhancer and often is an option in the codetype itself!)
There is plenty more info we could dive into, but that should give you a good basis for understanding. =)
Source: Game hacker since 1999, founder of http://GeckoCodes.org
Best Answer
The password system for SFxMM is actually identical to the one from Mega Man 2!
Just swap the bosses according to this table and you can generate any password you want:
SOURCE:
http://michaelcmartin.github.io/megaforge/