On this page
  1. Related
  2. Games

A projectile is an object of its own: it appears at the shooter, moves each frame, and checks for a hit as it goes. Its speed and path decide how a player dodges it, unlike a hitscan attack, which hits at once.

  • BallisticSuper Mario Bros. 3 (1988). Fire Mario's fireballs start downward and the Hammer Suit's hammers upward.1

Games

GameYearHowNote
Super Mario Bros. 31988BallisticFire Mario's fireballs start downward and the Hammer Suit's hammers upward

References

  1. ^With the Fire Flower or the Hammer Suit, a press of B throws a weapon unless Mario is ducking, kicking, in a pipe, or the game is halted: Fire Mario's fireball starts downward, the Hammer Suit's hammer upward. Ducking in the Hammer Suit, the fireballs of Piranha Plants, Nippers, Fire Bros., and Fire Chomps collide with him as if he had a Starman's invincibility, which destroys the fireball instead of hurting him.CodeSouthbird's SMB3 disassembly
    How we know
    479	CMP #PLAYERSUIT_HAMMER
    480	BEQ PRG007_A251	 ; If Player is wearing a Hammer Suit, jump to PRG007_A251
    ⋮
    482	CMP #PLAYERSUIT_FIRE
    483	BNE PRG007_A268	 ; If Player is not Fire, jump to PRG007_A268
    ⋮
    485PRG007_A251:
    ⋮
    487	; Player wearing a Hammer Suit or Fire
    ⋮
    489	LDA Player_HaltTick	; If Player is not halted ...
    490	ORA Player_IsDucking	; ... Player is ducking ...
    491	ORA Player_Kick	 	; ... Player is kicking ...
    492	ORA Player_InPipe	; ... Player is in a pipe ...
    493	ORA <Player_HaltGame	; ... gameplay is halted ...
    494	BNE PRG007_A268	 	; ... then jump to PRG007_A268
    ⋮
    
    PRG/prg007.asm lines 479–499 at 09b1bd8 · upstream ↗
    586	LDA #$01	 ; A = 1
    ⋮
    588	LDY <Player_Suit
    589	CPY #PLAYERSUIT_HAMMER
    590	SEC		 ; Set carry (if NOT wearing the hammer suit)
    591	BNE PRG007_A2E3	 ; If Player is NOT wearing the Hammer Suit, jump to PRG007_A2E3
    592	ASL A		 ; Clears carry, also A = 2
    593PRG007_A2E3:
    594	STA PlayerProj_ID,X	 ; Set projectile as type 1 or 2
    ⋮
    596	; Set Player Projectile Y velocity
    597	LDA #$03	 ; A = $03 (Fireballs are thrown down)
    598	BCS PRG007_A2EC	 ; If Player is NOT wearing Hammer Suit, jump to PRG007_A2EC
    599	LDA #-$03	 ; A = -$03 (Hammers are thrown up)
    ⋮
    
    PRG/prg007.asm lines 586–601 at 09b1bd8 · upstream ↗
    3184	.word SObj_Fireball	; 04: Nipper fireball
    3185	.word SObj_Fireball	; 05: Piranha fireball
    ⋮
    3192	.word SObj_Fireball	; 0C: Fire bro bouncing fireball
    ⋮
    3198	.word SObj_Fireball	; 12: Fire Chomp's fire
    
    PRG/prg007.asm lines 3184–3198 at 09b1bd8 · upstream ↗
    5213PRG007_BA6E:
    ⋮
    5215	; Set fireball attributes
    5216	STA Sprite_RAM+$02,Y
    ⋮
    5218	LDX <SlotIndexBackup	 ; X = special object slot index
    ⋮
    5220	LDA <Player_Suit
    5221	CMP #$06
    5222	BNE PRG007_BA8F	 ; If Player is not wearing the Hammer Suit, jump to PRG007_BA8F
    ⋮
    5224	LDA Player_IsDucking
    5225	BEQ PRG007_BA8F	 ; If Player is NOT ducking (immunity to fireballs), jump to PRG007_BA8F
    ⋮
    5227	LDA Player_StarInv
    5228	PHA		 ; Save Player's Star Man invincibility status
    ⋮
    5230	; Collide with it like Player were invincible!  (Visually the shell protects him)
    ⋮
    
    PRG/prg007.asm lines 5213–5242 at 09b1bd8 · upstream ↗
    4805PRG007_B836:
    4806	LDA Player_StarInv
    4807	BNE PRG007_B844	 ; If Player is Star Man invincible, jump to PRG007_B844
    ⋮
    4809	JMP Player_GetHurt	 ; Hurt Player and don't come back!
    ⋮
    4811SpecialObj_Remove:
    ⋮
    4813	; Remove special object
    4814	LDA #$00
    4815	STA SpecialObj_ID,X
    ⋮
    4817PRG007_B843:
    4818	RTS		 ; Return
    ⋮
    4820PRG007_B844:
    ⋮
    4822	; Player is invincible; destroy the special object!
    ⋮
    
    PRG/prg007.asm lines 4805–4824 at 09b1bd8 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger