News: 11 March 2016 - Forum Rules

Author Topic: Interesting SMB1 discovery ('Shy Bloopers')  (Read 716 times)

therealtaftq

  • Jr. Member
  • **
  • Posts: 16
    • View Profile
Interesting SMB1 discovery ('Shy Bloopers')
« on: May 21, 2022, 10:52:23 pm »
I made an interesting discovery about Super Mario Bros. earlier today; specifically, about one of the enemies.

You all know how Bloopers act, right? Moving in a zig-zag pattern, always going after Mario...
Well, it turns out that not all of them act like that.

Some Bloopers actually act like Boos. They chase Mario like the normal ones when he's facing away from them, but turn around and go the other way when he turns to look at them.
I've dubbed these Bloopers 'shy Bloopers' due to their unusual behavior.

I have a few theories for what causes these Bloopers to act different than the others.
Here they are from most likely to least likely:
1. It's determined by the Blooper's X or Y position, similarly to how some enemies in Super Mario World are programmed.
2. Shy Bloopers are not the same object as normal Bloopers, and are instead a subtype with different behavior.
3. Every Blooper has a random chance of acting like this to make them less predictable. Scratch that, this one's definitely not true. Which behavior each individual Blooper has is always the same.

I'm not entirely sure if this is relevant to the content of this site, but I thought this was really interesting, and was wondering if anyone else knew about this or had any information on it.

I haven't been able to find anything online about this. Is it possible that I'm the first person to discover this, or at least the first to document it?

TL;DR: Did anyone else know about shy Bloopers? What causes them to behave differently than other Bloopers?

Update: Made some changes to the original post to make things a bit clearer. I also made a video showing this behavior in action. Here's the link: https://www.youtube.com/watch?v=lqdNCq6jGA8

Update 2: Turns out my first theory was right! Bloopers placed at an odd X coordinate behave normally, while Bloopers placed at an even X coordinate exhibit the behavior described above.
I wonder if there are any other enemies whose behavior is determined this way...
« Last Edit: May 22, 2022, 02:31:38 pm by therealtaftq »

gamingcat02261991

  • Full Member
  • ***
  • Posts: 125
    • View Profile
Re: Interesting SMB1 discovery ('Shy Bloopers')
« Reply #1 on: May 23, 2022, 06:57:05 pm »
These X coordinate mentions remind me of how certain objects in Super Mario World behave when put in specific coordinates. Believe me, I have Lunar Magic as proof.

therealtaftq

  • Jr. Member
  • **
  • Posts: 16
    • View Profile
Re: Interesting SMB1 discovery ('Shy Bloopers')
« Reply #2 on: May 23, 2022, 10:39:12 pm »
Yeah, I noticed that too. The way these Bloopers act is also really similar to how Boos act. Makes you wonder...

N·K

  • Jr. Member
  • **
  • Posts: 15
    • View Profile
Re: Interesting SMB1 discovery ('Shy Bloopers')
« Reply #3 on: June 01, 2022, 03:10:55 am »
Apparently, the X coordinate is irrelevant, and the behavior changes depending on whether the pointer of the enemy slot is even or odd.
The following is an excerpt of the relevant code.
Code: [Select]
BlooberBitmasks:
      .db %00111111, %00000011

MoveBloober:
        lda Enemy_State,x
        and #%00100000             ;check enemy state for d5 set
        bne MoveDefeatedBloober    ;branch if set to move defeated bloober
        ldy SecondaryHardMode      ;use secondary hard mode flag as offset
        lda PseudoRandomBitReg+1,x ;get LSFR
        and BlooberBitmasks,y      ;mask out bits in LSFR using bitmask loaded with offset
        bne BlooberSwim            ;if any bits set, skip ahead to make swim
        txa
        lsr                        ;check to see if on second or fourth slot (1 or 3)
        bcc FBLeft                 ;if not, branch to figure out moving direction
        ldy Player_MovingDir       ;otherwise, load player's moving direction and
        bcs SBMDir                 ;do an unconditional branch to set
FBLeft: ldy #$02                   ;set left moving direction by default
        jsr PlayerEnemyDiff        ;get horizontal difference between player and bloober
        bpl SBMDir                 ;if enemy to the right of player, keep left
        dey                        ;otherwise decrement to set right moving direction
SBMDir: sty Enemy_MovingDir,x      ;set moving direction of bloober, then continue on here

BlooberSwim:

NesDraug

  • Sr. Member
  • ****
  • Posts: 269
    • View Profile
Re: Interesting SMB1 discovery ('Shy Bloopers')
« Reply #4 on: June 01, 2022, 05:04:57 am »
Oh, yeah. Come to think of it, I accidentally put them in Mario´s Keep. It´s especially annoying in some stages. https://www.youtube.com/watch?v=AOSFTbyJOWk&t=5706s
✍️ Blog: https://www.tumblr.com/blog/nesdraug

💀 Join my crypt on discord:
https://discord.gg/Eb4HTSNzeg