• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Completed Stock Dependent Blastzone Wrapping

Gun.Rugger

Smash Cadet
Joined
Jan 2, 2016
Messages
26
I have a mod idea but I don't know where to start.

I would gladly pay someone/collaborate to make it happen, but I don't know if that's how things work around here. ¯\_(?)_/¯

The mod would require ASM coding, and I don't know how to do that.

Watch this video if you are not familiar with blast zone wrapping from 20xx: https://www.youtube.com/watch?v=FHSFxIkUEZI

The mod idea would be to use blast zone wrapping conditionally, depending on 2 things.
1. How many stocks you have lost
2. How many times have you wrapped since touching the ground (like double/multi jumping logic)

Your first stock would be normal behavior.
On your second stock, you have to wrap around once before you die.
3rd stock: wrap twice, and 4th stock: wrap 3 times.
5-7th stock would occur in teams, and would continue to increment.

Additionally, if you go through the left blastzone, and then the right one before touching the ground it should "cancel out".

Often times, when I explain this via text, I get a lot of confusion. To try and clear it up, I here is some pseudo code to express the idea logically. For the sake of simplicity, I'm just going to write it as if there was only one player.

Code:
#vars
stocksLost = 0
blastHor = 0
blastVer = 0
t=0
b=1
l=2
r=3

def touchBlastzone(blastZone) {
  if blastZone in [l, r]:
    if absoluteValue(blastHor) >= stocksLost:
      die ();
  if blastZone in [t, b]:
    if absoluteValue(blastVer) >= stocksLost:
      die ();
  wrap (blastZone);

def die () {
  #normal game blastzone logic goes here.
  stocksLost += 1
  blastHor = 0
  blastVer = 0
}

def wrap (blastZone) {
  #magic code that wraps blastzones like 20xx goes here.
  switch (blastzone):
    case (t): blastVer += 1; break;
    case (b): blastVer -= 1; break;
    case (l): blastHor += 1; break;
    case (r): blastHor -= 1; break;
}

def land () {
  #normal game logic resets your jumps, and some other vars.
  blastHor = 0
  blastVer = 0
}

#game loop
if player touches top blastzone:
  touchBlastZone(t);
if player touches bottom blastzone:
  touchBlastZone(b);
if player touches left blastzone:
  touchBlastZone(l);
if player touches bottom blastzone:
  touchBlastZone(r);

if player touches ground:
  land();
Finally, because of the way that melee is built, players can't jump into the top blastzone. This would need to be changed if possible. To see what I mean, in 20xx, just turn on infinite jumping and try to jump through the top blastzone.

P.S. This is the biggest feature, but I have a small list of ideas that would go into this hack.
 

Gun.Rugger

Smash Cadet
Joined
Jan 2, 2016
Messages
26
An anonymous smasher here came in clutch and made this thing happen. If anyone wants to use it, review it, or anything else here it is.

Stock dependent blastzone wrapping
[anonymous]
NTSC 1.02
C20679C0 00000002 #safe player block extend
38802608 38A00005
60000000 00000000
C207D8B8 00000002 #store 0 blastzone wraps on landing
987F1968 907F2600
907F2604 00000000
C20D32E8 00000016 #bottom blastzone
887E000C 38800E90
7C8419D6 3CA08045
60A53080 7C642A14
8863008E 829E2604
3A94FFFF 929E2604
2C140000 4080000C
3AE00000 7E94B850
3EA08045 62B5BF14
8AB50000 7EA3A850
7C14A800 41810050
3C608022 60634B68
7C6803A6 4E800021
C1FE00B4 EDE17828
D03E00B4 D03E06F8
38600004 7C6903A6
387E082C C4230138
EC21782A D0230000
4200FFF4 3C60800D
606331A4 7C6903A6
4E800420 3A800000
929E2604 7FE3FB78
60000000 00000000
C20D3200 00000016 #left blastzone
887E000C 38800E90
7C8419D6 3CA08045
60A53080 7C642A14
8863008E 829E2600
3A940001 929E2600
2C140000 4080000C
3AE00000 7E94B850
3EA08045 62B5BF14
8AB50000 7EA3A850
7C14A800 41810050
3C608022 60634B38
7C6803A6 4E800021
C1FE00B0 EDE17828
D03E00B0 D03E06F4
38600004 7C6903A6
387E0828 C4230138
EC21782A D0230000
4200FFF4 3C60800D
606331A4 7C6903A6
4E800420 3A800000
929E2604 7FE3FB78
60000000 00000000
C20D31E0 00000016 #right blastzone
887E000C 38800E90
7C8419D6 3CA08045
60A53080 7C642A14
8863008E 829E2600
3A94FFFF 929E2600
2C140000 4080000C
3AE00000 7E94B850
3EA08045 62B5BF14
8AB50000 7EA3A850
7C14A800 41810050
3C608022 60634B50
7C6803A6 4E800021
C1FE00B0 EDEF0828
D03E00B0 D03E06F4
38600004 7C6903A6
387E0828 C4230138
EC217828 D0230000
4200FFF4 3C60800D
606331A4 7C6903A6
4E800420 3A800000
929E2604 7FE3FB78
60000000 00000000
C20D3220 00000017 #top blastzone
887E000C 38800E90
7C8419D6 3CA08045
60A53080 7C642A14
8863008E 829E2604
3A940001 929E2604
2C140000 4080000C
3AE00000 7E94B850
3EA08045 62B5BF14
8AB50000 7EA3A850
7C14A800 41810050
3C608022 60634B80
7C6803A6 4E800021
C1FE00B4 EDEF0828
D03E00B4 D03E06F8
38600004 7C6903A6
387E082C C4230138
EC217828 D0230000
4200FFF4 3C60800D
606331A4 7C6903A6
4E800420 3A800000
929E2604 3D80800D
618C3268 7D8903A6
4E800420 00000000
 
Last edited:
Top Bottom