xyWords User Manual & Reference
-------------------------------

	THIS GAME IS DISTRIBUTED AS FREEWARE 
	DO NOT PAY FOR THIS GAME 
	NO SUPPORT/WARRANTY IS GIVEN
	USE AT YOUR OWN RISK
	
	DO NOT EMAIL ASKING FOR HELP OR SUPPORT

License
-------

xyWords and all of its utilities are distributed as freeware.
Freeware means you do not need to pay for the license to use xyWords. 
Please see "Credits" section at the end of this document for important 
references and attribution regarding game assets.

Introduction
------------

As a kid of the 90s I used to use QB and make all sorts of annoying and 
fun projects. I used to be a Visual Basic 1x-6x developer but hung up 
the keyboard around 2008.

Today, I spend a lot of time mucking around with retro computers.
I thought it would be fun and challenging to try to write something in QB 
for my XT luggable.

xyWords is not meant to be a serious commercial game, it’s just a project 
I spent some time working on and I decided to document and release it for free.

What is xyWords?
----------------

xyWords is a cross-worded anagram puzzle where you use letters stored in a 
circle to find words in the puzzle and clear the level. 
It is a loving tribute to "WordScapes" which you can find on modern 
Apple, Android & Windows devices.
I will host xyWords on my personal website: Https://4am.org/xywords

System Requirements
-------------------

xyWords is designed to run on DOS-based IBM-PC compatibles.
Although it may run on a variety of machines the following is the 
targeted minimum:
-	Intel 8088 at 4.77mhz
-	384KB RAM
-	CGA graphics
-	360KB Floppy (Pico) or 4MB Hard Disk (Full)
-	MS-DOS 2.11 or higher
Emulating on DOSBOX should be fine on standard settings but for the real 
experience please set your display options to “cga”. I recommend using more 
cycles (20K+) if you plan on using xyPE to create many puzzles as 
word searching can take a long time.

Distributions
-------------

xyWords will be available initially in the following release types:
-	Pico – Special compressed player version for 360K floppy disk play
-	Full – Standard installation with player, editor and documentation

I will make them available on http://4am.org/xywords

Detail				Pico					Full
Size				360KB					4MB
Game Executables	Packed					Standard
Puzzle Collections	All 3					All 3
Free Play Puzzles	All	All
Documentation		Pico only				All
Assets				Font / Symbols only		All inc. Puzzle End Images
Patterns			8 only					All 96
Table Images		2 only					All 
Puzzle Editor		No						xyPE 
Word Ref List		No						Yes
In game help		Basic					Quick help (graphical)
BMP to CGA utility	No						Yes
		
Documentation
-------------

Pico Distribution only:
-	Pico.txt – a very small reference document for xyWords PICO distribution

Full Distribution only:
-	Readme.txt – quick reference for those who can’t be bothered with a manual
-	Manual.pdf – PDF version with pictures of this manual
-	xyWords.txt – this file

Configuration
-------------
xyWords and xyPE keep both of their configurations in the same directory as 
the EXE files.

If you experience any crashes on starting it is suggested you delete the 
following files and retry:
•	XYWORDS.CFG
•	XYPE.CFG

[Configuration for xyWords - XYWORDS.CFG]

Rather than editing the configuration file manually, you have a small set 
of prompts that will create one for you.
You can access these settings once xyWords starts 
(detailed in “Game Settings” section of this document).

"XYWORDS.CFG cannot be found!" screen
This message gives you a chance to bail out if you’ve simply tried to 
run the game outside of its installed directory. 

If you continue the xyWords Quick Setup will begin.

xyWords Quick Setup – Directory
-------------------------------
Type in the directory where xyWords was installed to.
If this is valid, quick setup will continue.

xyWords Quick Setup – Sound
---------------------------
xyWords uses some very basic beeps and bloops out of the PC Speaker. 
If you wish to traumatise yourself with them 
(and really, for the full experience...) press Y

xyWords Quick Setup – Text Post-Processing
------------------------------------------
xyWords uses some tricks to jazz up the text, including applying some 
extra colours and formatting. 
This can make the user interface feel a little sluggish for some users 
of XT/286 PC’s. 
If you’re using something more modern you will not notice it.
Press Y for the best experience or press N for the quickest update.

xyWords Quick Setup – Pre-Puzzle Messages
-----------------------------------------
xyWords can flash up a custom message before the puzzle starts.
This is only applicable during Collection play and is not available 
in Free Play.
If you want to see the messages press Y otherwise press N to be 
blissfully unaware

xyWords Quick Setup – CGA Mode
------------------------------
xyWords has been designed around CGA mode (320x200x4 and 640x200x2).
If you are using real CGA based hardware or have this configured within 
your emulator (DOSBOX for example) then press C to use CGA mode.

If you’ve got a different set up with either EGA or VGA or better and 
you either don’t want to adjust your emulator – or try to find and install 
a CGA card simply press E for EGA+ mode.

This doesn’t make the game look better, it just tries to simulate the 
CGA color palette on the newer standards. 

You can now run xyWords.exe again and the game should start.
If it doesn’t – you probably need check your install directory and 
video standard.

xyPE – Configuration of XYPE.CFG
--------------------------------
If the XYPE.CFG has been deleted you can write a new config to get it 
back up and running.
Simply press V to start writing the config

Enter the installed location of xype.exe
xyPe should now start.

xyWords – Main Menu
-------------------

When xyWords starts you will be presented with the main menu
Use the UP and DOWN keys to choose and select with ENTER.

[Play a Puzzle Collection] 
This will allow you to select a collection of puzzles and play through them. 
If enabled, your progress will be saved upon puzzle completion.

Each collection will contain:
-	Collection Icon
-	Progress bar & status
-	Collection Name
-	Author Name
-	# of Puzzles contained

Use the ARROW keys to choose and ENTER to select.

When you select a collection to play the list of available puzzles will appear.
By default, puzzles are unlocked as soon as you complete a previous puzzle.

[Free Play a Single Puzzle]
You can pick and choose an individual puzzle to play. 
These may or may not be in a collection.

When you enter Free Play you will see a list of available puzzles.
Unlike collection mode you do not need to unlock these – they are free to play!

Each box contains:
-	Name of the puzzle
-	Difficulty rating # and summary
-	Time limit 
-	Invalid word limit
-	Count of the words on the board (to complete)
-	Count of the words in the bag (bonus)
Use the ARROW keys to choose and ENTER to select.

Game Settings
-------------
Fancy colors: ON|OFF
Enable Text Post-Processing effects
Recommended: ON unless the user interface feels sluggish on your PC.
Press F to change the setting.

CGA Mode: CGA|EGA/VGA
Change the colour palette mode based on the video card you’re using
Recommended: CGA if you’re using actual CGA hardware (or emulating it).
Press C to change the setting.

Pre-Game Messages: Allow|Hide
In collection mode, if configured, a message can be shown before the 
puzzle starts. Useful for hints.
Press P to change the setting.

Sound: Enabled|Disabled
Enable the PC speaker beeps and boops for those who like to be tortured 
with those sounds.
Press S to change the setting.


xyWords – Game Basics
---------------------
During gameplay press F1 and the quick help demo will appear
This shows you the areas of the screen relevant to gameplay.

[Level Detail]
-	Contains the collection/free play indicator and name
-	The icon and difficulty
-	Time, Invalid word limits (if any)
-	Puzzle word progress
-	Bag word progress (if any)

[Circle]
-Key word is jumbled into this circle
-Press UP to re-jumble

[Rack & Status icon] 
As you type, letters will appear here. 
The icon will indicate the outcome from the try.

[The board]
-	Completed words will appear here, in place.
-	Puzzle words will be detached from the main grid.
-	Bag words will appear off the board, in the bag.
Press LEFT during gameplay to show the bag contents.

[The bag]
As you collect the hidden words they appear within the bag.
These are just bonus words and you don’t need to find them all to complete 
a puzzle.

[Pause Screen]
-	Shows current puzzle statistics
-	Collection Name/Author (if in this mode)
-	Allow you to quit, view bag or switch puzzle.
-	Note: Switching a puzzle immediately cancels the current puzzle.


xyPE – Puzzle Editor & Management
---------------------------------

[System Requirements]
xyPE requires a few mega-bytes of storage space for the dictionary and assets.
Unlike xyWords there is no Pico release of xyPE and it is designed to run from 
a hard disk.

Other than that, xyPE shares the same system requirements as xyWords.
One note – when creating a new puzzle, it will take a long time on something 
like an original XT at 4.77mhz.

I’d recommend using something like a 386 or above to generate the puzzles.

[xyPE Main Menu]
-Key the corresponding number to select the menu item.
1. Create New Puzzle
2. Puzzle Management
3. Collection Management
4. Utilities & Settings
5. About xyPE

[Generating a new puzzle]
-	Enter a valid word between 4 and 7 letters. 
-	Wait patiently
- 	Editor will appear

Puzzle Editor
-------------
   
Separated into areas.
-	Top: Toolbar
-	Left/Top: Puzzle Settings
-	Left/Centre: The board
-	Left/Bottom: Info / data entry
-	Right: Word List

[Placing Words]
The first thing you will need to do is make the puzzle valid.

This is done by placing the Kword (Keyword) in this case it’s ‘TICKET’.
Use the ARROW keys to move and use O to change from a vertical to horizontal 
orientation.
ENTER to place word on the board.

You will note on the Word List, the top value will change to the X&Y position 
and will have KHC which stands for Keyword Horizontal Orientation 
and Common Word.

From this point you have a valid (but very simple) puzzle as 
it contains a keyword.

By default all other words in the list will be O for off-board/bag.
Select a word and change its status from O to X,P to add it or from 
X,P to O to remove it.

By default ICE is an O word meaning it is not on the board.
Use X if you want to intersect it with TICKET 
Use P if you want to keep it isolated as a puzzle word

You now have an intersecting word and a valid puzzle.
Note – xyPE does not check or validate where you put words. If you make a 
mistake you can always re-select the word, move it and change it so that 
it’s valid.

-	Do not border words (ie. Put them next to each other in sequence)

-	Careful when intersecting not to have a situation where a word can be 
uncovered without typing it (ie. Don’t make a 3 letter word that solves 
itself, have one letter free that the player has to type to find it).

-	Do not join words to puzzle words – they are meant to be isolated and 
like their own space.

Placing a puzzle word is done a similar way and when you’ve place it – the 
word will reverse its text to signify it’s a puzzle word.

[Adjusting Puzzle Settings]

The following settings are available to change within a puzzle:
-	Name – Friendly name given to the puzzle (identifier)
-	Difficulty – Author rating of 1-99 for how difficult the puzzle is
-	Table – Choose to have a image, pattern, or solid color as your table
-	Limits – Set Invalid Word, Time Limits for a challenge
-	Change Background Color, CGA Palette and Rack Setup.

Once you’ve finished adjusting the settings it’s a good idea to preview the 
board press T to see what the puzzle looks like.

[Table Editor / Preview]

This shows a view similar to what you’re going to see when playing the puzzle.

Use the following keys to operate the Table Editor:
-	E – Exit without saving 
-	S – Save and return to editor
-	T – Change Table type between SOLID and TRANSPARENT
-	+/- - Change Table Pattern
-	P – Choose an alternative palette of colors
-	I – Choose another image for TRANSPARENT board
-	B – Change the background color
-	R – Change Rack type between SOLID and TRANSPARENT
-	C – Change the solid Rack back color.

Changing to TRANSPARENT table or changing IMAGE will present the file select 
dialog.
You may need to refer to the “Art” section of this document to understand 
the naming conventions. These are pictures, targeted for a CGA palette.

Example – selecting M4_4 picture and setting Palette to 4 will give the 
desired look.

Pressing S will save the settings and apply them to the puzzle

[Saving the new puzzle]

- Press F2 to save the puzzle

- Give it a name
If you want this available in free play press Y
 
You will now note the EDIT: CUSTOM1 showing you’re now in EDIT mode 
not CREATE NEW.

When ready, press ESC to quit

Puzzle Management
-----------------

There is a master list of puzzles – these are stored in \PUZZLES\*.XYP 
Not all of them can be played in Free Play mode. Only those referenced in 
the ALLPUZ.DAT database can be played in Free Play.

Using (2) Puzzle Management you will be able to select any of the puzzle 
FILE NAMES and see the detail on the right.

[Editing an Existing Puzzle]
Simply target the puzzle and press ENTER to go to the Puzzle Editor.
Make your changes and save.
Add/Removing a Puzzle to Free Play

Do the same as Editing Existing Puzzle and ensure you choose Y for 
Free Play or N to remove it.

Create and Edit Collections
---------------------------
Select 3 from the main menu - Collection Management

When you first start xyPE you will see the 3 enabled default collections. 
Do not modify or kill/delete these – it will break the game.
It is recommended you start out by creating a new collection by pressing F1.

The editor contains:
-	Details about the collection
-	List of available puzzles you can insert
-	Detail about the selected puzzle 

Press N to edit the collection name
Press B to edit the author name
Press I to change the Icon
Press INS to add the puzzle to the collection.

Note – you will not be able to add any XY* puzzles to your collections.
Pressing LEFT and RIGHT will toggle between Puzzle and Collection lists.
When you select the puzzle within your collection it will show details 
underneath. These are changeable:
-	T – To change the Time Limit Override
-	V – To change the Invalid Words Override
-	K – To change the Record Progress Override
-	1,2,3&4 – Change the pre-game puzzle message lines.

When you’ve added all of the puzzles you want to your collection 
press S to save.

Important – you may not start the name of any collection file name with XY* 

When complete, you will see your new collection name (not the file name) 
appear in the list.
When you select it the file name will appear.
-	You can modify the collection by pressing F2 to edit.
-	You can enable/disable the collection from xyWords by using E and D.
-	You can delete the collection (not the puzzles) by pressing F9.

Utilities & Settings
--------------------
You can access this by pressing 4 in the main menu.

Press S to adjust game settings
Press T to see a list of table Images
Press P to browse the Patterns for solid tables

In settings there are only a few things to tweak:
Press G to toggle between grid on and off, this is for use with the 
puzzle editor.
Press V to change the CGA Mode between CGA or EGA/VGA modes.
Press R to disable reverse font on the keys – speeds up older machines a bit.

Create a custom Table Image 
---------------------------
xyWords looks for .PIC files within the \picdata folder.
.PIC files are simple binary files containing CGA BSAVE format (320x200x4).
These can be viewed within xyWords Utilities -> (T)able Image Browser and 
within xyPE Table Preview (T) while in puzzle editing / create mode by 
changing the Table Style to “Transparent”.

[Preparing a BMP file – Method 1]
This method explains how to create a BMP file using MS Paintbrush.

1.	Choose the CGA palette you want to use (refer to CGA Palette Detail in 
this document)
2.	Ensure the colours are set as custom colors within Paintbrush and only 
use these (unless you intend to dither using Method 2 later)
3.	Save the image as a 256Color bitmap.
Recommended but optional
4.	Use something like Irfanview, open the BMP 
5.	Apply the JASC palette (see misc\palettes)  - this will reduce colors to 4
6.	Increase colors back to 256
7.	Save the BMP

[Preparing a BMP file – Method 2]
This method explains how to take an existing image and prepare it for use 
within xyWords.
1.	Use an appropriate program (recommended: Irfanview) to adjust and resize 
the image to fit 320x200, Save.
2.	Use a dithering method – I recommend the mighty Dithertron
https://8bitworkshop.com/dithertron/#sys=x86.cga.04h.2B&image=seurat.jpg
You can simply cycle through CGA palettes, adjust and download PNG output.
It’s an amazing bit of code.
3.	Open the output file
4.	Apply the JASC palette (see misc\palettes)  - this will reduce colors to 4
5.	Increase image colors back to 256
6.	Save as BMP

[Converting the BMP to PIC – BMP2CGAX.EXE]

The full release of xyWords comes with BMP2CGAX.EXE.
This is a small utility that will load the BMP and save it as PIC file
It will also try to figure out the Palette your using.
It is a DOS program and if you run it without any parameters it will display 
basic help
Example: BMP2CGAX.EXE example.bmp example.pic 0 0 319 199

This will grab an entire image and save it. This is the supported function.
You can tell it to grab smaller portions of the image, this can be used for 
things like icons, assets or fonts. I’m not providing documented support for 
that right now – but feel free to experiment.
Important – after you’ve converted the file to .PIC be sure to move to \picdata 
folder 

[Using the Sample Images]

I’ve included a few m*.bmp files which are my own work, released as 
public domain.

You can convert these or use them as a template. See the \misc\sampic
I have kept a file name convention of Mx_p.bmp
X = Image Number
P = Palette Number applied when saving
You don’t need to do this – but I’ve built in some support for xyWords and xyPE
 to read the last digit and match a palette.

If you see a distorted or double-image
You’ve not saved the BMP as 8-bit 256 color with only 4 unique colors.
If the picture colours are wrong, or palette cannot be found
You’ve probably not loaded the appropriate JASC palette during BMP edit

Manual Method – Create a Puzzle (*.XYP)
---------------------------------------
This is unsupported – do this at your own risk
It’s recommended to use the xyPE utility to manage puzzles.
I am documenting the file format for reference only.

[Important notes]
-	You will need to create your own word list, xyWords doesn’t validate or 
check (yet) but I strongly suggest you use a website like 
https://wordfinder.wordgamegiant.com and select TWL as the dictionary.
-	xyWords can only accept words of a 3 to 7 character in size
-	Do not modify the puzzles shipped with xyWords (XY*) this will 
break the game.
 
[Line-by-Line format]
-	Line 1 - Puzzle Settings
-	Line 2 - CGA Settings
-	Line 3 - EGA Settings (NOT USED for now)
-	Line 4 - VGA Settings (NOT USED for now)
-	Line 5 - K word
-	Line 6+ - O|X|P words

[Line #1 - Puzzle Settings]
All settings are separated by pipe “|” and must reside on the same line
pComplexityRating|pIdentifier|pImageFile|pTimeTarget
|pMissingAllowance|pTablePattern
Example for FP1.XYP
01 |FREE-1|M10_2   |N|N|N
|  |	  |		   | | |pTablePattern 
|  |	  |		   | |pMissingAllowance 
|  |	  |		   |pTimeTarget  						
|  |	  |pImageFile		   
|  |pIdentifier	  		 
|pComplexityRating  
-	pComplexityRating - 2bytes - Author rating of 0-99 for difficulty

See the section on Puzzle Complexity for guidance on the ratings.

Easy, simple puzzles should generally be under 25
Normal, to challenging puzzles should be around 26-65
Complex, or very complex puzzles should be around 66-99 
This is mainly used for freeplay selection as collections may choose add 
or remove rules which will impact score.

-	pIdentifier – 12bytes - Free Text Identifier (ie. ‘Gwiz 0-1’ for use in 
collection)
-	pImageFile - 8bytes - File name. 
o	This can be a \picdata image or a \patdata pattern
o	Leave blank for no image(s) – Solid Table.
-	pTimeTarget - 3bytes - timer for the 3 modes (up to 999) - 
N for no time limit
-	pMissingAllowance – 3 bytes - # allowance for invalid words - 
N for no counting of missing words.
-	pTablePattern       - 1 byte – leave this as N for now

pLine #2 – CGA Settings]
All settings appear as one single 10-byte string (Pipe for illustration only)
pCGAMainColor|pCGATableColor|pCGATileTColor|pCGATileBColor|pCGARackColor
|pCGARackOption|pCGATableOption|pCGAPalFlag|pCGATileBorder

Example
0010311214
| ||||||||
| |||||||pCGATileBorder
| |||||pCGAPalFlag
| |||||pCGATableOption
| ||||pCGARackOption
| |||pCGARackColor
| ||pCGATileBColor
| |pCGATileTColor
| pCGATableColor
pCGAMainColor

-	pCGAMainColor -  2bytes - BACKCOLOR Color (00-15) main color to 'use
-	pCGATableColor - 1byte - TABLECOLOR (0,1,2,3)
-	pCGATileTColor	- 1byte - TILE TEXT COLOR (BGCOLOR likely)
-	pCGATileBColor	- 1byte - TILECOLOR (0,1,2,3)
-	pCGARackColor	- 1byte - OTHERCOLOR (0,1,2,3)
-	pCGARackOption - 1byte - Default RackOption (1=Solid, 2=Transparent)
-	pCGATableOption - 1byte - TableType (1 = Solid, 2=Transparent)
-	pCGAPalFlag  - 1byte - Palette chooser
	1 - 04h-P0-Low [Black, DGreen, DRed, Orange], 
	2 - 04h-P0-High [Black, LGreen, LRed, Yellow], 
	3 - 04h-P1-Low [Black, DCyan, DMagenta, Grey], 
	4 - 04h-P1-High [Black, LCyan, LMagenta, White] ,
	5 - 05h-Low [Black, DCyan, DRed, Grey],
	6 - 05h-High [Black, LCyan, LRed, White]
-	pCGATileBorder	- 1byte - 1=None, 2=Use Othercolor, 3=Use TableColor, 
4=BGCOLOR 5= TileColor

[Line 3 and Line 4]
Just leave the text “NOT USED” on these lines.
This is for later use. xyWords only supports CGA at this time.

[Line 5 – Keyword]
This is the word that will always appear on the board and its letters will be
jumbled in the circle.
Usage: WORD|X,Y|K#$
-	WORD = the valid word to use for the keyword
-	X = Column to use on the board
-	Y = Row to use on the board
-	# = Orientation; can be H for Horizonal or V for Vertical
-	$ = Word Rarity; can be C for Common word or U for Uncommon word

[Line 6+ Remainder of XYP Puzzle ]

Usage: WORD|X,Y|!#$
O words are optional as these don’t appear within the board and are not 
required to complete the puzzle. It’s good practise 

P words must not border or intersect any other words – they’re supposed 
to be isolated and challenging

X words must intersect with other X words or the K word 
-	WORD = The valid word to use in the puzzle
-	X = Column to use on the board
-	Y = Row to use on the board
-	! = Word Type; O for offboard (bag word), P for puzzle word or X for 
intersecting word

-	# = Orientation; can be H for Horizonal or V for Vertical
-	$ = Word Rarity; can be C for Common word or U for Uncommon word

[Saving / Make available in Free Play] 
1.	Save your XYP file into the puzzles folder
2.	Edit \puzzles\allpuz.dat
3.	Append a new line at the end with your new puzzle file name
 
4.	Save
5.	Start up xyWords and your puzzle (whatever you named it before as 
pIdentifier) will appear in the Free play list. 

Do not use the file name, unless of course the pIdentifier is the same.. 

Manual Method – Create A Collection (*.XYC)
-------------------------------------------

This is unsupported – do this at your own risk

It’s recommended to use the xyPE utility to manage collections.

I am documenting the file format for reference only.

Important notes
-	Do not modify the collections shipped with xyWords (XY*) this will 
break the game.
-	You can add any .XYP file into your collection 
-	You can override each .XYP setting using the .XYC file. This can give 
an alternate challenge (or take it away).

[Line by Line format]
Values are separated by “|” pipe.
1.	pCollectionName|pAuthorName|pCollectionIconFile 
2.	pPuzFileName|pPuzzleParms|pPrePuzString

[Line 1 – Collection Detail]
This line defines the Collection
-	pCollectionName - 11bytes friendly name
-	pAuthorName - 11bytes or blank for none 
-	pCollectionIconFile - 16x16 image file name (ignores extension and path 
[will be \icons\*.cgf] or leave blank for none.

[Line 2+ - Puzzle Names, Overrides and Messages]
These lines are for each of the XYP files references by the collection.
You can provide an override for each limit and enable/disable progress records.
-	pPuzFileName – 8bytes file name as stored in \puzzles
-	pPuzzleParms – 7bytes fixed (AAABBBC)
o	AAA – Overwrite puzzle word missing penalty. 000 – No, 999 – Disable Penalty, 
001-998 specify new value.
o	BBB - Overwrite puzzle time limit. 000 - No, 999 - Disable Penalty, 
001-998 specify new value.
o	C - Progress Flag. 0 = Do not keep records (unlock) 1 = Keep records 
(lock, except if first puzzle in list)
-	pPrePuzString – 4x18 byte messages separated by “[“. If enabled within 
xyWords settings this message will show before the puzzle starts. 
Good for putting hints or information.

Updating the Collection database
--------------------------------

xyWords relies on a file \puzzle\allcol.dat to define the collections it will 
load once the game starts. Be careful when updating this file or you may 
break the game.

1.	Save your XYC file into the puzzles folder
2.	Edit \puzzles\allcol.dat
3.	Append a new line at the end with your new puzzle file name

Credits
-------

xyWords was heavily inspired by the mobile game - WordScapes.

WordScapes is a free-to-play game (not a pay to win).
WordScapes is owned by PeopleFun and you can check out the game on your 
favourite mobile app store.

Inspiration to target CGA - https://www.youtube.com/PCRetroTech
Your passion and excitement towards a 40+ year old graphics standard 
encouraged me to give this project a go. Thanks!
 
Idea for CGA 6-Palette code - 
https://www.youtube.com/watch?v=tI7LqShM9WQ&t=142s

Routine for viewing text files: 
TEXTVIEW.BAS - https://thedubber.altervista.org/qbsrc.htm   

Routine for reading directory contents using assembly: 
GETDIR$ - Alt255 on https://www.tek-tips.com/viewthread.cfm?qid=198826 

Routine for reading BMP files: 
BMP2CGA - http://petesqbsite.com/sections/tutorials/tuts/loading_bmps.html 
I heavily relied on the awesome dithertron https://8bitworkshop.com/dithertron/ 
This lets you put in a full colour picture and it will smartly adapt and dither 
the picture to suit your target system and palette. 

Artwork & Game Assets
---------------------
Table Patterns are from talented artist Poloviiinkin
The itch page is here: https://poloviiinkin.itch.io/ 
These are stored in the \patdata folder
These are licenced under Attribution-ShareAlike 4.0 International
Details here: https://creativecommons.org/licenses/by-sa/4.0/deed.en

I have used the pack of tiles and patterns from this pack: 	
https://poloviiinkin.itch.io/1-bit-patterns-and-tiles 
If you find these patterns and tiles interesting - please consider giving 
them a donation.

Table Image Backgrounds are stored in \picdata folder

Not all images listed below will be included with this package but may be in 
later versions.
m* - These are my own photos, you are free to use them under public domain.

z* - Collected from various websites
z1_5  - https://www.autosport.com/f1/news/the-f1-moments-that-defined-the-1980s-4982738/4982738/ 
z2_5  - Https://commons.wikimedia.org/wiki/Category:IBM_Model_F_Keyboard#/media/File:IBM_Model_F_AT.png - Raymangold22
z3_6  - https://personal.garrettfuller.org/blog/wp-content/uploads/2018/10/macintosh.jpg 
z4_6  - https://www.raspberrypi.com/app/uploads/2021/08/PC5150_color-1536x1099.jpg 
z5_5  - https://en.wikipedia.org/wiki/Atari_2600#/media/File:Atari-2600-Wood-4Sw-Set.png - Evan-Amos
z6_2  - https://commons.wikimedia.org/wiki/File:ZXSpectrum48k.jpg - Bill Bertram
z7_2  - https://commons.wikimedia.org/wiki/File:Commodore-64-Computer-FL.jpg - Evan-Amos
z8_2  - https://commons.wikimedia.org/wiki/File:Adlib_sound_card_version_1.5.jpg - Bratgoul
z9_4  - https://www.discover1770.com.au/tours/amphibious-larc/ 
z10_2 - https://www.guidovanhelten.com/projects/brim-victoria 

o* - Collected from freesvg.org 
o1_3  - https://freesvg.org/gameboy-tetris 
o2_4  - https://freesvg.org/comic-robot 
o3_5  - https://freesvg.org/tv-computer-system 
o4_5  - https://freesvg.org/old-style-game-controller-vector-clip-art 
o5_5  - https://freesvg.org/orange-fish 
o6_2  - https://freesvg.org/lego-man 
o7_6  - https://freesvg.org/bad-girl-retro-image 
o8_5  - https://freesvg.org/grey-disk 
o9_5  - https://freesvg.org/notepad-with-pencil 
o10_3 - https://freesvg.org/tapeplayer 
o11_5 - https://freesvg.org/game-system-in-japan 

these files are stored in \assets folder and are used in game
colfin - https://unsplash.com/photos/_XTY6lD8jgM 	Giorgio Trovato
lev - https://unsplash.com/photos/dChZrZx6mf8 	 Daniel Olah
stop - https://unsplash.com/photos/nPPyyii1oIg 	Aleksandr Kadykov
timer1 - https://unsplash.com/photos/x8He9JItX2o 	AB

these files are stored in \picdata 
u* files are collected from unsplash.com
u16_6 - https://unsplash.com/photos/hBzrr6m6-pc 	Jamie Street
u15_1 - https://unsplash.com/photos/2W-QWAC0mzI 	nasa
u14_6 - https://unsplash.com/photos/mwWZTLr9Tcg 	Ingo Schulz
u13_1 - https://unsplash.com/photos/VYFEByzg7qw 	Steve DiMatteo
u12_5 - https://unsplash.com/photos/Fi47SbeEg2k 	Steve Sewell
u11_1 - https://unsplash.com/photos/U8OYfPBceWE 	MIO ITO
u10_5 - https://unsplash.com/photos/ZOSkWlDVCsE 	Yu Kato
u6_6  - https://unsplash.com/photos/up8ooQ1Pm2s 	vackground.com
u7_5  - https://unsplash.com/photos/p0j-mE6mGo4 	Lorenzo Herrera
u3_4  - https://unsplash.com/photos/qvI3wvjSoHE 	Dieter Pelz
u4_4  - https://unsplash.com/photos/YerVHy1nXq8 	Christine Ellsay
u2_3  - https://unsplash.com/photos/Y1vNJCM7nyw 	David Clode
u1_5  - https://unsplash.com/photos/Sy95bMYqrP0 	Do Photography
u5_4  - https://unsplash.com/photos/Es4vkIk90LI 	Phillip Flores
u8_1  - https://unsplash.com/photos/4cGR8wgtxR8 	BoliviaInteligente

f* files are collected from freepik.com
f1_1 - by catalyststuff https://www.freepik.com/free-vector/book-paper-with-feather-pen-ink-cartoon-icon-illustration-education-object-icon-concept-isolated-flat-cartoon-style_10848243.htm#&position=18&from_view=collections 
f2_3 - by catalyststuff https://www.freepik.com/free-vector/vintage-television-cartoon-icon-illustration_10340616.htm#page=2&query=retro%20tv&position=10&from_view=search&track=ais 
f3_3 - by catalyststuff https://www.freepik.com/free-vector/toaster-bread-food-technology_10549649.htm#&position=26&from_view=collections 
f4_3 - by freepik https:/freepik.com/free-photo/beautiful-planets-space_22896237.htm#&position=13&from_view=collections 
f5_4 - by kjpargeter https://www.freepik.com/free-photo/3d-abstract-background-with-extruding-hexagons-design_33921625.htm#&position=1&from_view=collections 
f6_1 - by freepik https://www.freepik.com/free-photo/80s-trainer-doing-exercises_34089297.htm#&position=33&from_view=collections 
f7_3 - by freepik https://www.freepik.com/free-photo/retro-computer-technology-with-monitor-hardware_34134928.htm#&position=38&from_view=collections 
f8_5 - by catalyststuff https://www.freepik.com/free-vector/cute-koi-fish-cartoon-vector-icon-illustration-animal-nature-icon-concept-isolated-premium-vector-flat-cartoon-style_22961535.htm#&position=22&from_view=collections 

