HappyLee, don't be so pessimistic, it's just luck manipulation! Common thing for TASes (well, not very common for SMB because of the nature of the game, but here you finally stumbled upon it).
CheepCheeps are created periodically (using FrenzyEnemyTimer), as well as some BulletBills in 5-3 and later. Their properties are set using global RNG (Linear feedback shift register of 7 bytes: 0x7A7-0x7AD). The RNG changes once per frame (even when the gameplay is paused), so it's simple
Frame-based RNG. It means you can get different outcome by waiting different amound of frames. However, with periodic enemies is SMB things get hard to control, because FrenzyEnemyTimer (0x78F) is initialized near the beginning of level (where the first CheepCheep appears) and the only way to manipulate the timer (and thus change the sequence of new CheepCheeps apearance) is to wait some frames at the beginning of the level.
As for manipulating properties of new CheepCheeps, there are few dependencies on player's current speed and horizontal position, as you can see in the game code.
InitFlyingCheepCheep:
lda FrenzyEnemyTimer ;if timer here not expired yet, branch to leave
bne ChpChpEx
jsr SmallBBox ;jump to set bounding box size $09 and init other values
lda PseudoRandomBitReg+1,x
and #%00000011 ;set pseudorandom offset here
tay
lda FlyCCTimerData,y ;load timer with pseudorandom offset
sta FrenzyEnemyTimer
ldy #$03 ;load Y with default value
lda SecondaryHardMode
beq MaxCC ;if secondary hard mode flag not set, do not increment Y
iny ;otherwise, increment Y to allow as many as four onscreen
MaxCC: sty $00 ;store whatever pseudorandom bits are in Y
cpx $00 ;compare enemy object buffer offset with Y
bcs ChpChpEx ;if X => Y, branch to leave
lda PseudoRandomBitReg,x
and #%00000011 ;get last two bits of LSFR, first part
sta $00 ;and store in two places
sta $01
lda #$fb ;set vertical speed for cheep-cheep
sta Enemy_Y_Speed,x
lda #$00 ;load default value
ldy Player_X_Speed ;check player's horizontal speed
beq GSeed ;if player not moving left or right, skip this part
lda #$04
cpy #$19 ;if moving to the right but not very quickly,
bcc GSeed ;do not change A
asl ;otherwise, multiply A by 2
GSeed: pha ;save to stack
clc
adc $00 ;add to last two bits of LSFR we saved earlier
sta $00 ;save it there
lda PseudoRandomBitReg+1,x
and #%00000011 ;if neither of the last two bits of second LSFR set,
beq RSeed ;skip this part and save contents of $00
lda PseudoRandomBitReg+2,x
and #%00001111 ;otherwise overwrite with lower nybble of
sta $00 ;third LSFR part
RSeed: pla ;get value from stack we saved earlier
clc
adc $01 ;add to last two bits of LSFR we saved in other place
tay ;use as pseudorandom offset here
lda FlyCCXSpeedData,y ;get horizontal speed using pseudorandom offset
sta Enemy_X_Speed,x
lda #$01 ;set to move towards the right
sta Enemy_MovingDir,x
lda Player_X_Speed ;if player moving left or right, branch ahead of this part
bne D2XPos1
ldy $00 ;get first LSFR or third LSFR lower nybble
tya ;and check for d1 set
and #%00000010
beq D2XPos1 ;if d1 not set, branch
lda Enemy_X_Speed,x
eor #$ff ;if d1 set, change horizontal speed
clc ;into two's compliment, thus moving in the opposite
adc #$01 ;direction
sta Enemy_X_Speed,x
inc Enemy_MovingDir,x ;increment to move towards the left
D2XPos1: tya ;get first LSFR or third LSFR lower nybble again
and #%00000010
beq D2XPos2 ;check for d1 set again, branch again if not set
lda Player_X_Position ;get player's horizontal position
clc
adc FlyCCXPositionData,y ;if d1 set, add value obtained from pseudorandom offset
sta Enemy_X_Position,x ;and save as enemy's horizontal position
lda Player_PageLoc ;get player's page location
adc #$00 ;add carry and jump past this part
jmp FinCCSt
D2XPos2: lda Player_X_Position ;get player's horizontal position
sec
sbc FlyCCXPositionData,y ;if d1 not set, subtract value obtained from pseudorandom
sta Enemy_X_Position,x ;offset and save as enemy's horizontal position
lda Player_PageLoc ;get player's page location
sbc #$00 ;subtract borrow
FinCCSt: sta Enemy_PageLoc,x ;save as enemy's page location
lda #$01
sta Enemy_Flag,x ;set enemy's buffer flag
sta Enemy_Y_HighPos,x ;set enemy's high vertical byte
lda #$f8
sta Enemy_Y_Position,x ;put enemy below the screen, and we are done
rts
Unfortunately, the speed and horizontal position affect CheepCheep properties much less than predetermined RNG affects them, so manipulating CheepCheeps is more about waiting at the beginning of level, and (to lesser extent) about slowing down during the level run.
Oh, and shooting CheepCheeps or keeping them alive can change the sequence sometimes, because there can be only 3 CheepCheeps on screen (or 4 in Hard mode), so when FrenzyEnemyTimer is about to create new CheepCheep, you can prevent it from doing so by having 3 CheepCheeps still on screen. This way you postpone CheepCheep creation to next time when FrenzyEnemyTimer gets ready, and at that time RNG will have different values, so properties of new CheepCheep will be different from what it would be with current RNG.