===========================================
YAJP v1.0 Copyright (c) 1996 Patrik Hedmalm  
Yet Another Juggling Program                 
===========================================

Freeware!
=========
YAJP v1.0 is a freeware program, and may be used freely for any non
commercial purposes. Please share it with your friends. Have fun!

Acknowledgements
================
The book 'ENCYCLOPAEDIA of Ball Juggling' by Charlie Dancey is a great
juggling book, and really got me started with siteswap. I recommend this
book to all who want to know nearly all siteswap patterns known.

The book 'Zen of Graphics Programming' by Michael Abrash is a very good
book about (surprise, surprise) graphics programming.

The program JuggleMaster by Ken Matsuoka is one great juggling program,
check it out!

Greetings
=========
Jesper Wigelius who is a terrible programmer and a REALLY crappy juggler! :)

Bjorn Morn who is a good programmer.

Nils Svangard who is a good juggler and programmer.

Pontus Uggla, who is a great juggler.

My little sister Frida who is a good juggler.

The history
===========
Late one night after practicing juggling I got a desperate urge to write a
program. That's when I started to write this program. I know there are quite
a few juggling programs around, but still there are gaps to fill. Did I hear
someone say 'club juggling'? Nah, maybe tomorrow.. :)

What is it?
===========
YAJP is a siteswap simulator. It will take any siteswap pattern with a
maximum throw height of 9 and display it graphically as if it was juggled.
It does not only support normal siteswap, but also some extra commands on
top of the normal siteswap. I call the new format YAJP-Siteswap.

YAJP-Siteswap?
==============
YAJP-Siteswap is normal siteswap with some extra commands added to it.
The new commands are :

M    Throw next throw straight up in the middle (column middle).
This command is used to make the next throw a vertical throw in the middle
of the pattern.

O    Throw next throw straight up on the outside (column left/right).
This command is used to make the next throw a vertical throw at the outside
(left/right depending on hand) of the pattern.

S    Throw next throw with the same hand as the previous throw.
This command is used to throw the next ball with the same hand as the
previous throw. Can be used with the + command to make multiplex throws.

T    Throw next throw over the top (tennis)
This command is used to throw the next ball over the top. Just like a
tennis throw. It's like a reverse throw with some extra force sideways.

!    Turn reverse throws on/off.
Every time a ! is found in the pattern, the reverse mode is switched.
When reverse mode is on, the balls travel from outside to inside. When it
is off, the balls travel from inside to outside.

+    Throw several balls simultaneously.
This command makes it possible to throw X throws at the same time. You can
throw 1 from each hand. 2 from one hand (when combined with the S command) or
3 from one hand and 4 from the other. It's up to you. Have a play.

.    Dont throw the ball.
This is like a 0, but does not fuck up the number of balls calculation. It's
just a gap in the pattern. Good for aligning complex throws.

Here are some examples of (YAJP/normal) siteswap :

Pattern           Description

3                 3 ball cascade.
T53               4 ball half shower (using over-the-top 5 throws).
!7!               Reverse 7 ball cascade.
!4!               Reverse 4 ball fountain (rolling out).
SO3O3M3           3 ball columns.
5S5S5S5S5         5 ball chase in 10 ball cascade pattern. :)
60                3 in one hand.
6.                3 in one hand with 3 resting in the same hand.
4+S3S.            5 ball splits (force number of balls to 5).
O5+S5S1           5 ball splits another way.
4+S5S.            5 ball splits a third way. :)
T51               3 ball shower.

Yes, it's quite messy but it feels good when you get the numbers right.

Simulation mode?
================
The simulation mode is a 320*200 256 color display that is realtime animated.
Many other juggling programs precalculates the paths of the balls, but YAJP
throws balls in realtime as it reads the pattern. This is more error prone,
but it sure is more fun as well. :)

The simulator has various controls to make it possible to adjust the
simulation. Many of them are used to make it easier to grasp the patterns.
Below is a list of keys you can use in simulation mode.

S    Toggle sound on/off
Normally sound is turned on. The sound is played in the internal bleeper.
The tones represent the heights of each throw, so that you can get a feel
for the rythm of the pattern.

L    Toggle center line
There is a center line in the middle of the screen, so that you can see where
balls are compared to the middle of the body. You can think of the line as
the middle of a jugglers body. The L key turns it on and off.

Q    Scale down on X
When a pattern is displayed, it is scaled to fit the screen. This will make
high patterns appear narrow on the screen and low patterns appear wide.
This can sometimes make it hard to see the pattern. If you feel that you
would like the pattern to be more narrow, use the Q key to scale it down.

Z    Scale up on X
When a pattern is displayed, it is scaled to fit the screen. This will make
high patterns appear narrow on the screen and low patterns appear wide.
This can sometimes make it hard to see the pattern. If you feel that you
would like the pattern to be wider, use the Z key to scale it up.

M    Quickly pass ball
This key will quickly put one ball from one of the hands into the other
hand. This can be used to resolve "locked patterns".

P    Toggle dots/balls
Normally the balls are represented by objects looking similar to juggling
balls. These balls are never scaled, so sometimes it can be hard to see
what is happening with the balls. Then you can press P to change to small
white dots instead. If you press P again, you'll get the balls back.

+    Increase animation speed
Increases the speed of the animation.

-    Decrease animation speed
Decreases the speed of the animation. This can be used to make a pattern
easier to see.

1-9  Turn balls on/off
Each ball has a number. For example in the three ball cascade, you have the
balls 1, 2 and 3. By pressing 1, you turn ball 1 off. This means it is not
displayed anymore. By pressing 1 again, you turn the ball on again. This
feature is very nice for getting the paths of the balls. It also enables you
to practice a hard trick with less balls than the fullblown version.

SPC  Enter a new pattern
The space key gets you back to the main screen, where you can enter a new
pattern.

ESC  Quit the program
By pressing the Escape key, you exit the program.

Known Bugs
==========
I know there is no fancy full color juggler in the background, but apart
from that :

Some patterns may get locked in the wrong pattern in the start. If this
happens, wait for a while, and if it doesn't start, try pressing M a few
times until it starts. You can also get around the problem by overriding
the number of balls in the left hand. 

I am not 100% sure how accurate the simulation is.

Final words
===========
I may enhance the program and add new features by time. There are probably
some bugs in there, so I would appreciate if you make me aware of them if
you find any, I dont promise to fix them instantly though. I would also be
happy to hear what you think about the program, suggestions, improvements etc.

You can reach me for whatever reason at : path@algonet.se

Hope you will learn something new with this program, good luck!

- Patrik
