Has anyone here been aware that the Spiny Egg movement in the NES version of Super Mario Brothers is not as intended? The link below will tell.
Link about this:
https://tcrf.net/Talk:Super_Mario_Br...ontal_Movement
What we got:
Code:
DifLoop: lda PRDiffAdjustData,y
sta $01,x
iny
iny
iny
iny
dex
bpl DifLoop
ldx ObjectOffset
jsr PlayerLakituDiff
ldy Player_X_Speed
cpy #$08
bcs SetSpSpd
tay
lda PseudoRandomBitReg+1,x
and #$03
beq UsePosv
tya
eor #$ff
tay
iny
UsePosv: tya
SetSpSpd: jsr SmallBBox
ldy #$02
sta Enemy_X_Speed,x
cmp #$00
bmi SpinyRte
dey
What should have been:
Code:
SetSpSpd: ldy #$02
sta Enemy_X_Speed,x
cmp #$00
bmi SpinyRte
dey
SpinyRte: jsr SmallBBox
Move the jsr instruction to below the dey instruction, and the movement will be as intended.
This same fix can also be applied to these other SMB variations:
Super Mario Bros. (FDS)
Super Mario Bros. 2 (Japan) (FDS)
All-Night Nippon Super Mario Bros. (FDS)
Vs. Super Mario Bros.
(Please note the offsets for the SetSpSpd instruction will be different for these versions than the NES cartridge version, which is at offset 0x4444 when using a hex editing program like Hexecute or Hex Workshop.)
~Ben