Much more better in my opinion:
https://gist.github.com/realmonster/83a7b48c3ad0abd1d17c
Warning, script for gens!
Also, there is human readable dumps of scripts.
All that is random based is
rndcall. "Randoms left:" counter shows how many calls to
rndcall left. Middle section - main script. Right section subscript, that was called from main script by
rndcall. Main script terminated by command
stop, but subscript termnated by command
ret, and continuing execution in main script.
More about commands:
save - stores line in script where you restore if you die.
text - shows text on screen.
inc - increasing timer marked on screen "Timeout:"
dec - decreasing timer marked on screen "Timeout:"
def - sets value to "Timeout:"
p0 p1 p2 - position where next puppy/bonus/bomb will drop
puppy,
bonus,
bomb - drop appropriate thing. Bonus replaced by puppy if "Bonus: no" shown by script
clr - makes "Bonus: yes"
down - Psycrow moves down
up - Psycrow moves up
upp - Psycrow moves up but in some different way (idk)
smt - set max of "Something:"
incs - increase "Something:"
idk - interesting thing, it changes chance that throwed bomb by Peter will deflect Psycrow house, and start falling on ground, so you will need to bounce it :D Zero value means never deflect. It set to non zero only in Puppy Love part 3
table - sets table of possible subscripts for
rndcall
diff jmp - if difficulty equal to first operand, it will jump on address set by second operand. Easy = 0, Normal = 1, Difficult = 2
round jmp - if round < value of first operand, it will jump on address set by second operand
end - waiting when all puppies/bonuses are lost/done, so actually
end command is awaiting end of wave.
wait - like "no operation" but "-" in front of it means that it will wait unitl "Timeout:" reach zero.
All commands where "-" in front of it, means that it is waiting when "Timeout:" reach zero. Suffix "x5" means that command is repeated in script 5 times in row.
Tables in the end of dump - subscripts chosen by
rndcall. For each round there are several of them, appropriate chosen by RNG.
Didn't test waves, steps thing made by
feos, because I simply don't understand them. Maybe I'm too stupid... Also "next bounces" works kinda awkward to me. You can say about next position by looking for next
p0/
p1/
p2 in script.
All timing thing based on timer shown as "Timeout:"
Beware, some code increasing current value of it by 1, or even for big values.
For example
text command increasing current timeout often that current exceeds max (default).
This script showing only script behavior. It would be nice if someone would also made investigation about timings in frames of all that stuff. I don't wanna do that, also, I guess it's very hard. -_-