----------------------------------------------------------------------
FERNANDO 3-C Release 0.29 of 23/01/99.
Copyright (C) 1998-1999 by Patrick Pelissier.
All rights reserved.
----------------------------------------------------------------------

----------------------------------------------------------------------
				EDIT
----------------------------------------------------------------------

	You can make your levels, your worlds, your boss and your graphs :

	_First, you must have fer3c.zip, Packer92.zip, fargo.zip (DOS) 
		or plusShel.zip, doorsos.zip, ...
		(See http://www.ticalc.org/pub/ or http://ti-files.org)

	_Install Fargo, plusShell or DoorsOs.

	_Extract : level.exe, Graph.d32, test.d32, mkworld in the 
		same folder (\Edit) and extract also Packer92.exe in \edit
		(or in a path directory).

	_How can I make a new world with new graphs ?
		Run 'Sprite32 MyGraph.d32' and make your graphs (Save them).
		Then make the levels (Enter MyGraph.d32 as Graph-File).
		And  make the boss.
		Finally, make the world.

	_How can I make the sprites of the boss ?
		Run 'Sprite16 Boss.s16'

	_How can I make the graphs of the Level ?
		Run 'Sprite32 MyGraph.D32'

	_How can I edit a level or make a new level ?:
		1st : in a dos command, 
			level NAME [RETURN].
		1st': Enter the name of the graph-file (Default : graph.d32)
		2nd : Modify your level (Look at Options.txt).
		      DON'T FORGET PUTTING A STARTING POINT...
		3rd : Press F2 to save and ESC to quit.
		      Press F2 then F6 to have NAME.92P (Fargo only !!).
	   OR, NEW, :
		1st : Send MyLevel, fer3edit and fer3c to your calc.
	 	      If you want to have new graphs, in a DOS command,
		      in a good directory (with MyLevel.Asm, MyLevel.Bat),
		      and if you have installed the OS (fargo, doors,
		      PlusShell and co), write :
			MyLevel GRAPHFILE BATFILE
			Example : mylevel graph.d32 fargo
				  mylevel MyGraph.d32 doors
				  mylevel Grph3.d32 asm92p
		2nd : Run MyLevel()
		You need about 25Ko free to run it !
		3rd : edit it.
		4e  : Esc to exit (The map is always saved)
		5e  : Receive it in your computer (very often to avoid a crash).
		6e  : To convert the 92P File (MyLevel.92p) to a valid LVL file
			(To distribute it and to compile it), use CALCTLVL.
		7e  : Then look at 'Making a world' to compile your level with
			many others levels and boss or another games.


	_How can I make a boss ?
		* 1st : you must have the gfx of the sprites of the boss.
			Example : Grph.s16
		* 2nd : Run 'Boss NewBoss.bb' and answer the questions.
			Elements if the different sprites of the boss.
			(just like Ray-Man). It's equal to the number of
			graphs if Grph.S16 (Or your graph-file)
			A phase is the Boss at a time.
			Number of phases is N :
			Phase0 -> Phase1 -> Phase2 -> ... -> Phase(N-1)
			-> Phase0 -> ...
		* 3rd : Make the animation of the boss : 
			DON'T forget the speed for each steps !!!!!!
			 0 - faster = 2^0 steps between the two phases.
			 i - 2^i steps between the two phases.
			Uses '+' / '-' to change the current Phase and the mouse
			 to modify the position of one srite of the boss
		   REM : the sprite No 0 (the first graph) if the weak point
			of the boss : to kill him, Fernando must Jump on this
			sprite.
		* Save the file (you don't need GRPH.S16 anymore).

	_How can I compile a world : Run "mkworld WName.wld"
		A world is a text-file (Example WName.wld) with some codes

		* "shll fargo", "shll asm92p", "shll doors"...
			Type of shell : Fargo II, PlusShell ....
			(It's in fact the name of the BAT-File :fargo.bat
			asm92p.bat).
			This bat-file must support Fargo II format:
				xdef	_main
				xdef	_comment
			 _main:	lea	Start(PC),a0
				jmp	fer3c@0000
			Start:	dc.w	N	; Number of Levels [1..N]
				INCBIN	WORLD.P92
			_comment:
				dc.b "Your comment",0
				end
			REM : To compile for TI-89, you can : 
				+ compile with asm92P to have PlusShell.
				+ compile with doors.
				asm89 do not work.
		* "ofst 86"
			Offset where the code generaly begins in a .92p
			(Or 9xz) file.
			Default : Fargo II programs (it works also with 9xz)
			I need it for Loading 92P files.
		* "grph graph.d32"
			Name of current graph-File (Only one by world).
		* "name It's my world"
			Your comment (Only one by world).
		* "play level.lvl" or "play boss.bss"
			Play at level (Level-File) or Boss (Boss-File).
		* "load jezzball.92p"
			Load JezzBall and put it in the World
			When you run Fer3c, it will run JezzBall.
			(only if there isn't any problem like : no library
			or not enought memory !!!)
		* "jump" Jump to the level.
			Example : 'Jump 4'
			'jump 1' will restart the world.
			For each 'play', 'load', 'jump' and 'jkey',
			add 1 to the counter.
			Warning : do not jump to itself !
		* 'jkey' Jump to the level if key = 0.
			See 'Jump'.
		* 'addo' : include an AddOn in the world like that :
			If You have writen 'addo AddOn.asm' in the World-File,
			   it will create an ASM-file like :
				include 'AddOn.asm'
				xdef	_main
				xdef	_comment
			 _main:	
				lea	SpriteInit(PC),a0
				move.l	a0,InitAddOnADR	; Adress of the init part
				lea	SpriteExec(PC),a0
				move.l	a0,ExecAddOnADR	; Adress of the exec part
				lea	Start(PC),a0
				jmp	fer3c@0000
			Start:	dc.w	N	; Number of Levels [1..N]
				INCBIN	WORLD.P92
			_comment:
				dc.b "Your comment",0
				end

		* Anything else is a comment but i can use new words...
		So do not use any comment.

 
----------------------------------------------------------------------
			List of the options:
----------------------------------------------------------------------

 ' ' - > Nothing

 'Block' -> There is a block and Fernando and some sprites cann't go here
		They can walk on it.

 'PLat-Form' -> Fernando can walk on it

 'Fer rises' -> Fernando rises when he is here.

 'Power' -> power = power + 1 
	    Destroy Test : Tab[x,y] = 0

 'OneUp' -> Life = Life + 1
	    Destroy Test : Tab[x,y] = 0

 'Bumper' -> Fernando does his mega-jump.

 'Key' -> Key = Key + 1

 'Gate' -> If Key >0 then Key = Key -1
			Destroy Test : Tab[x,y] = 0 
		   elseifSi LeftKey then
			Xfernando =Xfernando+SpeedX
		   elseifSi RightKey then
			Xfernando =Xfernando-SpeedX
		   else
			YFernando = Yfernando - SpeedY

 'Spike' -> If Power >0 then Power = Max (0, Power-Difficulty)
			     Invulnerabilty = 10
			else Life = Life - 1
			     ReStartLevel

 'Up'	-> Fernando goes up until the top of the screen or a block.

 'Down'	-> Fernando goes down until the end of the screen or a block.
 
 'Left' -> Fernando goes Left until the topLeft the screen or a block.

 'Right'-> Fernando goes Right until the endRight of the screen or a block.

 'The End' -> Victory you have found the end !!!

 'HyperPower' -> Power = power + 8

 'Invisible' -> Invulnerability = 1000

 'Fall-Down' -> A stone goes on the head of Fernando

 'Teleport' -> If DownKey then
			for i=Yfernando+1 to 31
			    if Tab[xfernando,i]=teleport then Yfernando=i:exit
			for i=0 to 31
			    if Tab[xfernando,i]=teleport then Yfernando=i:exit
 
 'Speed' -> SpeedX = SpeedY = 8

 'Laser' -> 2 Lasers are shooting on fernando every 32 frames

 'I-Gravity' -> If SpeedY<0 then SpeedY = -SpeedY
		If SpeedX<0 then SpeedX = -SpeedX

 'Switch' -> Switch sets to on.

 'Door' -> If Switch = On then Switch = Off
			Destroy Test : Tab[x,y] = 0 
		   elseifSi LeftKey then
			Xfernando =Xfernando+SpeedX
		   elseifSi RightKey then
			Xfernando =Xfernando-SpeedX
		   else
			YFernando = Yfernando - SpeedY
 'Hooking' -> If UpKey and Fpart(Yfernando)<0.2 then
			Fernando hooks to the ceiling.

 'E-Dance' -> Fernando does his E-Dance ( Duck dance ?)
		FPart(yfernando) = f(Time)

 'Fly' -> Fernando flies until he does another action.

 'Bomb' -> BOOOOOOM ! ! ! !
	  Same as spikes but no shield can resist it.

 'BadaBoum' -> Fernando destroys the graph with his Ack Attack

 'Garbesh' -> When Fernando goes here, after a while, the graph and the test
	just underneath will disapear until Fernando is on their screen

 'Block Plan 1' -> There is a block on Plan 1
		Its graph is the Graph at the Top left of the level Tab[0,0]

 'Plan no 0' -> Set plan to 0
	If it's different SwitchPlan :
		Exchange 
		* Graph = GraphExg and Test = Block 
			And
		* test =Block Plan 1
 'Plan no 1' -> Set plan to 1
	Look at plan 0.

-------------------------------------
	Starting of animated sprites :
-------------------------------------

 'Blob' -> It's a blob !

 'Bat' -> It's a bat !

 'Fish' -> It's a fish !

 'Fer-Hunter' -> HE HE HE HE HE !
		I can't say who they are because i can't give you the end of
		story...

 'Fungus' -> It's a mushroom.

 'Ghost' -> It's a ghost : you can't kill him. So you must try to escape.
	    It makes your power down but doesn't kill you.

 'Deca-Vert' -> The graph the test pointes haves a transformation.
		All the same graphs will have the same transformation.
		You can combine the transformation.
		You don't need to put it on all the graphes : Just one.

 'S-Bat' -> It's a bat ( a little more harder).

 'Star' -> the star which gives you bad luck...

 'Gray' -> Very interesting option, not ?
	It activates the gray mode and the graph the test pointed will
	be exchange to the next Graph in the graph file every frame.
	You must activate all the graphs you want to be in gray-mode !
	It works because of the screen of the TI-92...
	It's a transformation (It works similary to Deca-Vert).

 'Scroll-Right' -> The screen scrolls to the right and if fernando tuches 
	the left of the screen, he will die.

 'Shifting' -> Secial Effects : All the sub-level under it will have a special 
	transformation (World1 - Level 2)

 'Boat-Effect' -> The screen will oscillates like on a boat (World1 - Level 8).

 'Sun' -> Yes, I knowk you will say 'It's a sun???'
	At the background you will have a sun in gray.

 'Diag Right' -> Fernando walks on a right diagonale : /

 'Diag Left' -> Fernando walks on a left diagonale : \

 'Mode X-Or'->  The graph the test pointes haves a transformation.
		All the same graphs have the same transformation.
		You can combine the transformation.

 'Cinema' -> The screen haves now a 16/9 format.

 'Column' -> A column apears at the first ground.

 'Moon'   -> Like 'Sun'

 'Shooter' -> It's a shoot, sir.

 'Crabe' -> ....

 'Shifting 2' -> It makes a transformation on the final screen
		Every 16 rows, there is a rotation.

 'Monkey' -> It's a monkey ?????
	You can't kill him !!
	You can't pass him !!!
	You can enjoy it ....for example, you can try to dance ?
	But how ?

 'Deca'	-> The graph the test pointes haves a transformation.
		All the same graphs have the same transformation.
		You can combine the transformation.

 'Miror' -> Secial Effects : All the sub-level under it have a special 
	transformation (World1 - Level 8).

 'Link Graph-Test' -> What is the graph is the test !
	fernando exactly walks on the pixel of the graph.

 'Anim 2' ->The graph the test pointes haves a transformation.
		All the same graphs have the same transformation.
		You can combine the transformation.
		It's just like GrayMode but it works every 32 frames.
		You can combine with itself to have 3,4,5,... animations

 'ConcScrolling' -> The screen doesn't concentrate the scrolling on Fernando

 'Deca-Sac_Flam'->The graph the test pointes haves a transformation.
		All the same graphs have the same transformation.
		You can combine the transformation.

 'Glooner' -> 4 Blobs with a special move.

 'Boolder' -> Like Shooter but in all the dir.

 'HoloD..e' -> Like Holo-Duke but, it's you the victim (Destroy the projector)

 'HoloD..e2'->Like Holo-Duke but, it's you the victim (Destroy the projector)

 'FlyBoot' -> A bat with 4 stars.

 'Scarat' -> His name is SCARAT.

 'Point Dexter' -> You will see it.

 'Bloominator' -> " " " "

 'Flamme' -> 2 Flames 

 'Nest' -> It will appear many, many sprites at this case.
	   The different sprites use different value (period / Number of sprites).
	   Warning : Using this, you can easilly be at the top of the buffer
		of sprites (more than 200 sprites at the same time !).
	   To use it,
		* Select the sprite you want to be repeat.
		* Put the gfx in graph mode with is associated to the test:
			If blob 'a', type gfx 'a'.
			You must have the same offset in the table.
		* Put the test 'Repeat Gfx as test for xxx until xxx'
	   Warning : You musn't use Repeat repeat for repeat for...
	   Rem : this sprite will change the first test in table T(0,0) as
		the sprite you have quoted.

 'Addon' -> This sprite is what you want !
	First, you must include 'addo sprite.asm' in WLD-File to work.
	(So you can't test it in Fer3Edit, sorry...)
	Then it will init and exec this sprite like the others.
	You can use a table of sprite if you want using the gfx-table as test-table.
	(See Sprite.Asm for more doc).

 More than 'Addon' -> 255 : Crash your TI... do not use ! ! !
	WARNING : using 'Nest', gfx is a test, so if the gfx is 
		> Addon, it will crash too.

_____________________________________

	KEYS FOR THE CALC EDITOR
_____________________________________

Up, Down, Left, Right : Move the cursor.
[2nd] + Up, Down, Left, Right : Move the cursor quickly.

'+' '-' : Select the current graph or test (at the top-right of the screen)

Enter   : Put the selected graph or test in the list (at the top-right of
	  the screen).

SPACE   : Change between Graph / Test Mode

'.'     : Go to Graph or Test 0 in the list.

'DEL'   : Clear the current graph (and test) or only the test.

'F1'	: Associate a test at a graph, choose the graph then choose the test.
	When you will put this graph, this test will be put too.

'F2'    : Play at this level.

'F3'    : Put the starting point.

'F4'    : Clear the level.

'F5'	: To make a box which is filled by an item,
		1st : At one corner, press F5
		2st : At the other corner, press ENTER, a HotKey or
			 a shortkey.

'F6'	: Map-Mode :
		Choose the item you want to be shown.
		(If you choose '0', you will have all the items
		exept the '0').
'ESC'   : Quit

[DIAMOND] + '0' to '9' : Save a short key.
		Save the graph / test pointed by the cursor (not the list)
		and save it in memory.
'0' to '9' :	Short Keys.
		Put the graph / test.

'A' to 'A'+255 : Direct hotKeys.
		Put the graph Number (Asc(GetKey)-65)
		and the test Table[Asc(GetKey)-65]
		Or only the test Asc(GetKey)-65)
		REM : some graph/test can't be drawn with these keys.

_____________________________________

		ADD-ON
_____________________________________

An add-on is an include asm file (like many other) with 2 entry point :

	SpriteInit:

	SpriteExec:

When the 'addon' code in Test-Table apear, it will call 'SpriteInit'
to init your sprite and 'SpriteExec' to exec your sprite (you must 
end by 'rts' evry frame).

See the example for details ('Sprite.asm').

