Next Graphics Version 2

Having written and tested my original next graphics tool, I found it was lacking a few features and contained some bugs that needed fixing, so rather than continuing with the development of the command line option I decided to write a whole new version using .net.

Presenting Version 2

Main application UI

What does it do? it will take most image formats and cuts them up into sprites/tiles for use in code with Spectrum Next games programming, It will allow you select images from sequences outputted from other tools, it will allow you to extract the palettes from images, edit those palettes, and then save them for later use.

During the processing of your images, it it will remap the images to the closest colours in your palette, remapping multiple images to a single palette if required. Also it will check for repeated, mirrored (both X and Y) and rotated sprites or tiles.

The output format of the tool is can be 4-bit or 8-bit sprites or 4-bit tiles, which are exported to either Assembly include file, a basic include file or a combination of a Assembly include file and a binary data file.

Instructions

I have tried to keep it simple to use while making it versatile and feature packed.

Projects

I have made the project files in XML format, so they can be humanly readable, yet they store all the your project settings so that you can simply continue where you left off over multiple sessions.

New Project

The new project button allows you to set the project name, this name is important as it forms the basis of your labels in the exported assembly / basic files, therefore I suggest you keep the name short but meaningful.

New project panel

You can rename the project at any time by double clicking the project name in the project panel.

I have yet to implement a complete reset of the application as its just as simple to close it and open it again.

Open project

Opening a project from your computer

Save project

Save your project on your computer

Add images to your project

Clicking this button will allow you to add multiple images to your project, currently the application supports BMP, DIB, RLE, JPG, JPEG, JPE, JFIF, GIF, TIFF and PNG files, with the following formats.

8-bits per pixel Indexed colour images
32-bits per pixel R G B images
32-bits per pixel A R G B (8-8-8-8)
24-bits per pixel R G B (8-8-8)
16-bits per pixel R G B (5-6-5)
16-bits per pixel A R G B (1-5-5-5)
16-bits per pixel R G B (5-5-5)

You can add images to your project at any time, however to update the image in memory you will need to remove the image first using the remove image button on the project window. Simply highlight the image you wish to remove and click the button.

Also you can reorganise the order of your images, as you may want to organize your animations or tile sets different to how they are loaded, again you simply highlight the image you wish to reposition and click the up or down buttons.

Now to the meat and gravy of the application

The palette

The palette window is one of the main features of the application, as it allows you to remap you graphics to different pallets and allows you to create and edit the palettes before you map them.

So let’s have a look at the palette panel.

As you can see there are quite a few options available to you, so i will go through them one by one.

Colour mapping

You can select to have your graphics mapped to the standard Spectrum Next colour palette of 256 colours or 512 colours, this is nice, but it will mean that your sprites and characters would take up more space than necessary so its best to use the custom palette for games.

Custom pallets

The main feature is the custom pallet, using the palette tool you can import the palette from an image (first 256 on non palletised images), or you can import the colours from a Windows (Photoshop) .ACT file or a Apple .8BCT file. The palette import tool allows you to extract all or some of the colours and place them in any position in your 256 colour custom palette.

From is the index to start the import from, Count is how many colours to import, and Where to is the index in your custom palette you want to start the import at.

You can import as many colours as you like, you could even download some art from the internet and extract the palette to any location in your custom palette and then remap all your graphics to that palette if you want.

Other features of the palette tool allow you to save the palette in Windows (Photoshop) .ACT file or Apple .8BCT file formats.

You can also set the transparency index of your artwork by picking the colour in the palette, and or restrict the amount of colours you want your graphics to be mapped to.


If all that was not enough for you, you can also edit or define the colours by hand using the colour mixer, simply click any colour in the custom palette or import palettes and select the colour mixer from the pop up menu, choose a nice colour and add it to your custom palette.

From that popup menu in both the import and custom palettes you can also clear, copy and paste colours to arrange them exactly how you want them.

All that and we haven’t even got onto the output features yet :p

Output

The make button, cuts all the images in your image list into blocks/tiles or sprites, remapping them depending on the settings in the palette panel and output settings.

But before we get to the output I wish to discuss names, in the Spectrum next they call the character based screen a tile map which for me is fundamentally wrong, I understand why they may have done it but it does not gel in my mind.

Back in the day the Commodore 64 had a character based screen with each each character is 8×8 pixels, which was allowed game developers to remap the character set to game graphics, and use them for the background of games.

Does this sound familiar?

If you are making a large scolly game it becomes quite difficult to make a whole level just using 8×8 characters, placing them one character at a time. And with large 8×8 game level stored in memory, it would up loads of space, which is not good on a 8-bit machine. So along the way the developers at the time invented blocks which are groups of characters forming familiar objects which would be easy to map with and would take up much less space. So your map is made up of block references and you get the character indexes from inside the blocks.

Flexible

Which is why the blocks structure has been primarily implemented within Next Graphics, even though I have also allowed you completely ignore the blocks and map with the 8×8 characters instead if you wish. The tool will cut your art up into Sprites, which are simple 16×16 pixel blocks of graphical data and characters (Tiles) which are 8×8 pixel blocks of graphical data. It will save them as basic include file or an assembly file or even as raw binary data, with basic or assembly reference files.

Structure

When your art is drawn as a larger object both the sprites and the tiles produce a reference map (block) to how the object can be constructed in the game.

So for sprites it would be something like this (all byte values)

number of 16×16 sprites wide
number of 16×16 sprites tall

x offset from center of sprite
y offset from center of sprite
Palette offset with the X mirror,Y mirror, Rotate bits if set
4 bit colour bit and pattern offset bit if set
Index of the sprite at this position that makes up the frame

…… repeated wide * tall times

And for blocks / tiles

number of tiles (characters) tall
number of tiles (characters) wide

Palette offset with the X mirror,Y mirror, Rotate bits if set
index of the character at this position that makes up the block;

… repeated wide * tall times

So the output panel

Sprites vs Blockset

As mentioned previously you can choose between Sprite/Object or Tiles/blocks output, selecting sprites the output is 16×16 pixels, and blockset the output will be 8×8 pixels.

Width and Height

The width and height define the size in pixels of each object on your sprite sheet or block on your blockset.

Settings

I think the settings panel is mostly self explanatory however I will go through it one section at a time.

Ignore repeats of

By default the tool will remove repeated, mirrored, rotated or transparent graphics as space is limited and the hardware in the Spectrum Next has attributes that can be set to mirror and rotate.

However some games may need these retained therefore I have allowed you the option to keep them in the outputted data if you require them.

Output settings

Transparent first

This checkbox allows you to organise the output so that the characters/tiles with any transparent pixels are first in the tileset, this is mostly for something I am working on but you may find it useful.

4-Bit Sprites

Obviously the characters/blocks will be outputted in 4 bits per pixel format, however you have the option when producing sprites. Therefore when this checkbox is checked and you are creating sprites the output would be remapped using 4 bits per pixel output.

Binary+

The binary plus checkbox will change the Sprite and Tileset output into a binary file leaving just the mirror/rotation settings and frames in the source files.

Comments

The comments level dropdown allows you to remove the comments from the source file output as once you have coded up your engine using my data format you don’t need the comments anymore and depending on how many graphics you have in your game it may make it compile a little quicker.

Sprite Centre

As the name and layout of the panel suggests this allows you to add an offset to the base position of your sprite in the output file. For example a running walking character would probably have its base position at his feet where as a Spaceship would be better having its centre in the middle of the sprite. Anyhow the choice is yours depending on how you make your game.

Saving your output

Writing your output

Once you are happy with the output of your graphics it is time to chose your output file format where you have a choice of an Assembly or a Basic include file output by selecting the .asm or .bas file extension on the save file drop down.

Mapping tiles

Apart from the Assembly or Basic code files outputting a blockset/tileset, when checked it will also output a a bitmap that can be used for mapping with Mappy or Tiled.

Again quite self evident, with how many tiles to a row on the output bitmap, and the format of the bitmaps. BMP/PNG/JPG.

DEBUG

In these builds it opens a black window that is 2 x zoom of the output for my debugging purposes which may make its way into the app.

Reverse

In the latest versions below I have implemented a tool for turning the exported characters/tiles back into a blocks bitmap

why I hear you shout?

Well its so I can add details to the character set after they have been reduced and checked for mirrors or rotations, then when I turn them back into blocks for mapping all the repeats and mirrors etc, will have all the details.

Like here I made all the blocks and then processed them, then added all the noise using the dithered layer in photoshop, by doing it to the tile set after they have been processed, I don’t end up will a million different tiles with loads of different noise!

Where to Get it?

The windows source code is available on Git here, It will compile under window using Visual Studio .net and probably under mono for linux or OSX. To be fair your best bet is to clone the git project and build it on windows that way you will get all the updates! However I have compiled an windows version which again will run under mono for linux and I believe it will run under mono on OSX but it needs to be signed (please let me know if it does or doesn’t)

Windows/Linux 64-bit version 2.0.2.0 (unsigned)

Windows/Linux/Osx 32-bit version 2.0.2.0 (unsigned)

Typical Output from the Tool

The assembly file will look like this

// MyGame.asm
// Created on Monday, November 2, 2020 10:06:58 AM by the NextGraphics tool from
// patricia curtis at luckyredfish dot com

MyGameColours:		equ	7
MyGamePalette:
			db	%11100011	//	255,0,255
			db	%00010111	//	3,169,219
			db	%10011011	//	156,203,233
			db	%10011011	//	156,204,233
			db	%00001001	//	1,81,106
			db	%11100000	//	255,0,0
			db	%01100000	//	123,0,0
MyGameSpritesSize:		equ	128
MyGameSprites:		equ	8
MyGameSprite0:
				.db	$00,$00,$01,$11,$11,$10,$00,$00
				.db	$00,$00,$12,$32,$22,$31,$00,$00
				.db	$00,$11,$11,$11,$11,$11,$11,$00
				.db	$00,$11,$11,$45,$54,$41,$11,$00
				.db	$01,$11,$15,$55,$35,$54,$11,$10
				.db	$01,$11,$55,$53,$33,$55,$11,$10
				.db	$11,$11,$55,$53,$35,$55,$11,$11
				.db	$11,$16,$55,$55,$55,$55,$61,$11
				.db	$11,$16,$65,$55,$55,$55,$61,$14
				.db	$41,$11,$66,$66,$66,$66,$11,$14
				.db	$01,$11,$66,$66,$66,$66,$11,$10
				.db	$04,$11,$16,$66,$66,$61,$11,$40
				.db	$00,$41,$13,$16,$61,$31,$14,$00
				.db	$00,$44,$11,$33,$33,$11,$44,$00
				.db	$00,$00,$44,$11,$11,$44,$00,$00
				.db	$00,$00,$04,$44,$44,$40,$00,$00
MyGameSprite1:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$11,$22,$33,$11,$00,$00
				.db	$00,$01,$22,$11,$11,$23,$10,$00
				.db	$00,$13,$11,$15,$51,$11,$21,$00
				.db	$01,$22,$15,$55,$35,$51,$12,$10
				.db	$01,$21,$55,$53,$33,$55,$13,$10
				.db	$11,$21,$55,$53,$35,$55,$13,$11
				.db	$11,$26,$55,$55,$55,$55,$62,$11
				.db	$11,$36,$65,$55,$55,$55,$62,$11
				.db	$41,$21,$66,$66,$66,$66,$12,$14
				.db	$01,$12,$66,$66,$66,$66,$31,$10
				.db	$04,$11,$31,$66,$66,$12,$21,$40
				.db	$00,$41,$13,$23,$32,$31,$14,$00
				.db	$00,$04,$41,$11,$11,$14,$40,$00
				.db	$00,$00,$44,$44,$44,$44,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
MyGameSprite2:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$01,$11,$11,$10,$00,$00
				.db	$00,$01,$32,$35,$53,$33,$10,$00
				.db	$00,$13,$15,$55,$35,$51,$21,$00
				.db	$01,$31,$55,$53,$33,$55,$12,$10
				.db	$11,$21,$55,$53,$35,$55,$12,$11
				.db	$11,$26,$55,$55,$55,$55,$61,$11
				.db	$41,$21,$65,$55,$55,$55,$13,$11
				.db	$41,$12,$66,$66,$66,$66,$22,$14
				.db	$04,$11,$31,$66,$66,$13,$31,$40
				.db	$00,$41,$11,$32,$32,$11,$14,$00
				.db	$00,$04,$44,$11,$11,$44,$40,$00
				.db	$00,$00,$04,$44,$44,$40,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
MyGameSprite3:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$05,$50,$00,$00,$00
				.db	$00,$00,$15,$55,$35,$51,$00,$00
				.db	$00,$11,$55,$53,$33,$55,$11,$00
				.db	$01,$11,$55,$53,$35,$55,$11,$10
				.db	$11,$16,$55,$55,$55,$55,$61,$11
				.db	$11,$11,$11,$55,$55,$11,$11,$14
				.db	$04,$11,$11,$32,$23,$21,$11,$40
				.db	$00,$44,$44,$41,$14,$44,$44,$00
				.db	$00,$00,$44,$44,$44,$44,$00,$00
				.db	$00,$00,$00,$06,$60,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
MyGameSprite4:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$05,$50,$00,$00,$00
				.db	$00,$00,$05,$55,$35,$50,$00,$00
				.db	$00,$00,$55,$53,$33,$55,$00,$00
				.db	$01,$11,$11,$11,$11,$11,$11,$10
				.db	$41,$11,$11,$11,$11,$11,$11,$11
				.db	$44,$44,$44,$44,$44,$44,$44,$44
				.db	$04,$44,$44,$44,$44,$44,$44,$40
				.db	$00,$00,$66,$66,$66,$66,$00,$00
				.db	$00,$00,$06,$66,$66,$60,$00,$00
				.db	$00,$00,$00,$06,$60,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
MyGameSprite5:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$05,$50,$00,$00,$00
				.db	$00,$00,$11,$32,$23,$11,$00,$00
				.db	$00,$11,$11,$11,$11,$11,$11,$00
				.db	$04,$44,$44,$44,$44,$44,$44,$10
				.db	$44,$44,$44,$45,$54,$44,$44,$44
				.db	$44,$46,$65,$55,$55,$55,$64,$44
				.db	$04,$41,$66,$66,$66,$66,$14,$40
				.db	$00,$44,$66,$66,$66,$66,$44,$00
				.db	$00,$00,$46,$66,$66,$64,$00,$00
				.db	$00,$00,$00,$06,$60,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
MyGameSprite6:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$01,$13,$21,$10,$00,$00
				.db	$00,$01,$11,$11,$11,$11,$10,$00
				.db	$00,$11,$14,$44,$44,$41,$11,$00
				.db	$04,$44,$44,$43,$34,$44,$44,$10
				.db	$44,$44,$55,$53,$35,$55,$44,$44
				.db	$44,$44,$55,$55,$55,$55,$44,$44
				.db	$44,$46,$65,$55,$55,$55,$64,$44
				.db	$44,$41,$66,$66,$66,$66,$14,$44
				.db	$04,$41,$66,$66,$66,$66,$14,$40
				.db	$00,$44,$16,$66,$66,$61,$44,$00
				.db	$00,$04,$41,$16,$61,$14,$40,$00
				.db	$00,$00,$04,$44,$44,$40,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00
MyGameSprite7:
				.db	$00,$00,$00,$00,$00,$00,$00,$00
				.db	$00,$00,$01,$22,$32,$10,$00,$00
				.db	$00,$01,$11,$11,$11,$11,$10,$00
				.db	$00,$11,$11,$44,$44,$11,$11,$00
				.db	$01,$11,$44,$55,$35,$44,$11,$10
				.db	$01,$44,$45,$53,$33,$54,$41,$10
				.db	$44,$44,$55,$53,$35,$55,$44,$44
				.db	$44,$16,$55,$55,$55,$55,$64,$44
				.db	$44,$16,$65,$55,$55,$55,$61,$44
				.db	$44,$11,$66,$66,$66,$66,$11,$44
				.db	$04,$11,$66,$66,$66,$66,$11,$40
				.db	$04,$41,$16,$66,$66,$61,$14,$40
				.db	$00,$44,$11,$36,$63,$11,$44,$00
				.db	$00,$04,$41,$11,$11,$14,$40,$00
				.db	$00,$00,$04,$44,$44,$40,$00,$00
				.db	$00,$00,$00,$00,$00,$00,$00,$00

				// number of sprites wide
				// number of sprites tall

					// x offset from center of sprite
					// y offset from center of sprite
					// Palette offset with the X mirror,Y mirror, Rotate bits if set
					// 4 bit colour bit and pattern offset bit
					// index of the sprite at this position that makes up the frame

				//...... repeated wide x tall times

MyGameFrame0:		.db	2,2,	0,0,0,128,0,	16,0,0,192,1,	0,16,0,128,0,	16,16,0,128,0
MyGameFrame1:		.db	2,2,	0,0,0,128,2,	16,0,0,192,3,	0,16,0,128,0,	16,16,0,128,0
MyGameFrame2:		.db	2,2,	0,0,0,128,4,	16,0,0,192,5,	0,16,0,128,0,	16,16,0,128,0
MyGameFrame3:		.db	2,2,	0,0,0,128,6,	16,0,0,192,7,	0,16,0,128,0,	16,16,0,128,0

MyGameFrames:		.dw	MyGameFrame0,MyGameFrame1,MyGameFrame2,MyGameFrame3

The basic for the same sprites will look like this

10000	REM	MyGame.bas
10005	REM	Created on Monday, November 2, 2020 10:07:48 AM by the NextGraphics tool from
10010	REM	patricia curtis at luckyredfish dot com
10015	LET	MyGameColours = 7
10020	REM
10025	REM
10030	REM	MyGame Palette starts here
10035	REM
10040	DATA	227,23,155,155,9,224,96
10045	LET	MyGameSpritesSize = 128
10050	LET	MyGameSprites = 8
10055	REM
10060	REM	MyGameSprite0 Starts here
10065	REM
10070	DATA	0,0,1,17,17,16,0,0
10075	DATA	0,0,18,50,34,49,0,0
10080	DATA	0,17,17,17,17,17,17,0
10085	DATA	0,17,17,69,84,65,17,0
10090	DATA	1,17,21,85,53,84,17,16
10095	DATA	1,17,85,83,51,85,17,16
10100	DATA	17,17,85,83,53,85,17,17
10105	DATA	17,22,85,85,85,85,97,17
10110	DATA	17,22,101,85,85,85,97,20
10115	DATA	65,17,102,102,102,102,17,20
10120	DATA	1,17,102,102,102,102,17,16
10125	DATA	4,17,22,102,102,97,17,64
10130	DATA	0,65,19,22,97,49,20,0
10135	DATA	0,68,17,51,51,17,68,0
10140	DATA	0,0,68,17,17,68,0,0
10145	DATA	0,0,4,68,68,64,0,0
10150	REM
10155	REM	MyGameSprite1 Starts here
10160	REM
10165	DATA	0,0,0,0,0,0,0,0
10170	DATA	0,0,17,34,51,17,0,0
10175	DATA	0,1,34,17,17,35,16,0
10180	DATA	0,19,17,21,81,17,33,0
10185	DATA	1,34,21,85,53,81,18,16
10190	DATA	1,33,85,83,51,85,19,16
10195	DATA	17,33,85,83,53,85,19,17
10200	DATA	17,38,85,85,85,85,98,17
10205	DATA	17,54,101,85,85,85,98,17
10210	DATA	65,33,102,102,102,102,18,20
10215	DATA	1,18,102,102,102,102,49,16
10220	DATA	4,17,49,102,102,18,33,64
10225	DATA	0,65,19,35,50,49,20,0
10230	DATA	0,4,65,17,17,20,64,0
10235	DATA	0,0,68,68,68,68,0,0
10240	DATA	0,0,0,0,0,0,0,0
10245	REM
10250	REM	MyGameSprite2 Starts here
10255	REM
10260	DATA	0,0,0,0,0,0,0,0
10265	DATA	0,0,0,0,0,0,0,0
10270	DATA	0,0,1,17,17,16,0,0
10275	DATA	0,1,50,53,83,51,16,0
10280	DATA	0,19,21,85,53,81,33,0
10285	DATA	1,49,85,83,51,85,18,16
10290	DATA	17,33,85,83,53,85,18,17
10295	DATA	17,38,85,85,85,85,97,17
10300	DATA	65,33,101,85,85,85,19,17
10305	DATA	65,18,102,102,102,102,34,20
10310	DATA	4,17,49,102,102,19,49,64
10315	DATA	0,65,17,50,50,17,20,0
10320	DATA	0,4,68,17,17,68,64,0
10325	DATA	0,0,4,68,68,64,0,0
10330	DATA	0,0,0,0,0,0,0,0
10335	DATA	0,0,0,0,0,0,0,0
10340	REM
10345	REM	MyGameSprite3 Starts here
10350	REM
10355	DATA	0,0,0,0,0,0,0,0
10360	DATA	0,0,0,0,0,0,0,0
10365	DATA	0,0,0,0,0,0,0,0
10370	DATA	0,0,0,5,80,0,0,0
10375	DATA	0,0,21,85,53,81,0,0
10380	DATA	0,17,85,83,51,85,17,0
10385	DATA	1,17,85,83,53,85,17,16
10390	DATA	17,22,85,85,85,85,97,17
10395	DATA	17,17,17,85,85,17,17,20
10400	DATA	4,17,17,50,35,33,17,64
10405	DATA	0,68,68,65,20,68,68,0
10410	DATA	0,0,68,68,68,68,0,0
10415	DATA	0,0,0,6,96,0,0,0
10420	DATA	0,0,0,0,0,0,0,0
10425	DATA	0,0,0,0,0,0,0,0
10430	DATA	0,0,0,0,0,0,0,0
10435	REM
10440	REM	MyGameSprite4 Starts here
10445	REM
10450	DATA	0,0,0,0,0,0,0,0
10455	DATA	0,0,0,0,0,0,0,0
10460	DATA	0,0,0,0,0,0,0,0
10465	DATA	0,0,0,5,80,0,0,0
10470	DATA	0,0,5,85,53,80,0,0
10475	DATA	0,0,85,83,51,85,0,0
10480	DATA	1,17,17,17,17,17,17,16
10485	DATA	65,17,17,17,17,17,17,17
10490	DATA	68,68,68,68,68,68,68,68
10495	DATA	4,68,68,68,68,68,68,64
10500	DATA	0,0,102,102,102,102,0,0
10505	DATA	0,0,6,102,102,96,0,0
10510	DATA	0,0,0,6,96,0,0,0
10515	DATA	0,0,0,0,0,0,0,0
10520	DATA	0,0,0,0,0,0,0,0
10525	DATA	0,0,0,0,0,0,0,0
10530	REM
10535	REM	MyGameSprite5 Starts here
10540	REM
10545	DATA	0,0,0,0,0,0,0,0
10550	DATA	0,0,0,0,0,0,0,0
10555	DATA	0,0,0,0,0,0,0,0
10560	DATA	0,0,0,5,80,0,0,0
10565	DATA	0,0,17,50,35,17,0,0
10570	DATA	0,17,17,17,17,17,17,0
10575	DATA	4,68,68,68,68,68,68,16
10580	DATA	68,68,68,69,84,68,68,68
10585	DATA	68,70,101,85,85,85,100,68
10590	DATA	4,65,102,102,102,102,20,64
10595	DATA	0,68,102,102,102,102,68,0
10600	DATA	0,0,70,102,102,100,0,0
10605	DATA	0,0,0,6,96,0,0,0
10610	DATA	0,0,0,0,0,0,0,0
10615	DATA	0,0,0,0,0,0,0,0
10620	DATA	0,0,0,0,0,0,0,0
10625	REM
10630	REM	MyGameSprite6 Starts here
10635	REM
10640	DATA	0,0,0,0,0,0,0,0
10645	DATA	0,0,0,0,0,0,0,0
10650	DATA	0,0,1,19,33,16,0,0
10655	DATA	0,1,17,17,17,17,16,0
10660	DATA	0,17,20,68,68,65,17,0
10665	DATA	4,68,68,67,52,68,68,16
10670	DATA	68,68,85,83,53,85,68,68
10675	DATA	68,68,85,85,85,85,68,68
10680	DATA	68,70,101,85,85,85,100,68
10685	DATA	68,65,102,102,102,102,20,68
10690	DATA	4,65,102,102,102,102,20,64
10695	DATA	0,68,22,102,102,97,68,0
10700	DATA	0,4,65,22,97,20,64,0
10705	DATA	0,0,4,68,68,64,0,0
10710	DATA	0,0,0,0,0,0,0,0
10715	DATA	0,0,0,0,0,0,0,0
10720	REM
10725	REM	MyGameSprite7 Starts here
10730	REM
10735	DATA	0,0,0,0,0,0,0,0
10740	DATA	0,0,1,34,50,16,0,0
10745	DATA	0,1,17,17,17,17,16,0
10750	DATA	0,17,17,68,68,17,17,0
10755	DATA	1,17,68,85,53,68,17,16
10760	DATA	1,68,69,83,51,84,65,16
10765	DATA	68,68,85,83,53,85,68,68
10770	DATA	68,22,85,85,85,85,100,68
10775	DATA	68,22,101,85,85,85,97,68
10780	DATA	68,17,102,102,102,102,17,68
10785	DATA	4,17,102,102,102,102,17,64
10790	DATA	4,65,22,102,102,97,20,64
10795	DATA	0,68,17,54,99,17,68,0
10800	DATA	0,4,65,17,17,20,64,0
10805	DATA	0,0,4,68,68,64,0,0
10810	DATA	0,0,0,0,0,0,0,0
10815	REM
10820	LET	MyGameFrame0Width = 2
10825	LET	MyGameFrame0Height = 2
10830	LET	MyGameSprite0XOffset0 = 0
10835	LET	MyGameSprite0YOffset0 = 0
10840	LET	MyGameSprite0Attribute2Bits0 = 0
10845	LET	MyGameSprite0FourBitBits0 = 128
10850	LET	MyGameTile0Index0 = 0
10855	REM
10860	LET	MyGameSprite0XOffset1 = 16
10865	LET	MyGameSprite0YOffset1 = 0
10870	LET	MyGameSprite0Attribute2Bits1 = 0
10875	LET	MyGameSprite0FourBitBits1 = 192
10880	LET	MyGameTile0Index1 = 1
10885	REM
10890	LET	MyGameSprite0XOffset2 = 0
10895	LET	MyGameSprite0YOffset2 = 16
10900	LET	MyGameSprite0Attribute2Bits2 = 0
10905	LET	MyGameSprite0FourBitBits2 = 128
10910	LET	MyGameTile0Index2 = 0
10915	REM
10920	LET	MyGameSprite0XOffset3 = 16
10925	LET	MyGameSprite0YOffset3 = 16
10930	LET	MyGameSprite0Attribute2Bits3 = 0
10935	LET	MyGameSprite0FourBitBits3 = 128
10940	LET	MyGameTile0Index3 = 0
10945	REM
10950	REM
10955	LET	MyGameFrame1Width = 2
10960	LET	MyGameFrame1Height = 2
10965	LET	MyGameSprite1XOffset0 = 0
10970	LET	MyGameSprite1YOffset0 = 0
10975	LET	MyGameSprite1Attribute2Bits0 = 0
10980	LET	MyGameSprite1FourBitBits0 = 128
10985	LET	MyGameTile1Index0 = 2
10990	REM
10995	LET	MyGameSprite1XOffset1 = 16
11000	LET	MyGameSprite1YOffset1 = 0
11005	LET	MyGameSprite1Attribute2Bits1 = 0
11010	LET	MyGameSprite1FourBitBits1 = 192
11015	LET	MyGameTile1Index1 = 3
11020	REM
11025	LET	MyGameSprite1XOffset2 = 0
11030	LET	MyGameSprite1YOffset2 = 16
11035	LET	MyGameSprite1Attribute2Bits2 = 0
11040	LET	MyGameSprite1FourBitBits2 = 128
11045	LET	MyGameTile1Index2 = 0
11050	REM
11055	LET	MyGameSprite1XOffset3 = 16
11060	LET	MyGameSprite1YOffset3 = 16
11065	LET	MyGameSprite1Attribute2Bits3 = 0
11070	LET	MyGameSprite1FourBitBits3 = 128
11075	LET	MyGameTile1Index3 = 0
11080	REM
11085	REM
11090	LET	MyGameFrame2Width = 2
11095	LET	MyGameFrame2Height = 2
11100	LET	MyGameSprite2XOffset0 = 0
11105	LET	MyGameSprite2YOffset0 = 0
11110	LET	MyGameSprite2Attribute2Bits0 = 0
11115	LET	MyGameSprite2FourBitBits0 = 128
11120	LET	MyGameTile2Index0 = 4
11125	REM
11130	LET	MyGameSprite2XOffset1 = 16
11135	LET	MyGameSprite2YOffset1 = 0
11140	LET	MyGameSprite2Attribute2Bits1 = 0
11145	LET	MyGameSprite2FourBitBits1 = 192
11150	LET	MyGameTile2Index1 = 5
11155	REM
11160	LET	MyGameSprite2XOffset2 = 0
11165	LET	MyGameSprite2YOffset2 = 16
11170	LET	MyGameSprite2Attribute2Bits2 = 0
11175	LET	MyGameSprite2FourBitBits2 = 128
11180	LET	MyGameTile2Index2 = 0
11185	REM
11190	LET	MyGameSprite2XOffset3 = 16
11195	LET	MyGameSprite2YOffset3 = 16
11200	LET	MyGameSprite2Attribute2Bits3 = 0
11205	LET	MyGameSprite2FourBitBits3 = 128
11210	LET	MyGameTile2Index3 = 0
11215	REM
11220	REM
11225	LET	MyGameFrame3Width = 2
11230	LET	MyGameFrame3Height = 2
11235	LET	MyGameSprite3XOffset0 = 0
11240	LET	MyGameSprite3YOffset0 = 0
11245	LET	MyGameSprite3Attribute2Bits0 = 0
11250	LET	MyGameSprite3FourBitBits0 = 128
11255	LET	MyGameTile3Index0 = 6
11260	REM
11265	LET	MyGameSprite3XOffset1 = 16
11270	LET	MyGameSprite3YOffset1 = 0
11275	LET	MyGameSprite3Attribute2Bits1 = 0
11280	LET	MyGameSprite3FourBitBits1 = 192
11285	LET	MyGameTile3Index1 = 7
11290	REM
11295	LET	MyGameSprite3XOffset2 = 0
11300	LET	MyGameSprite3YOffset2 = 16
11305	LET	MyGameSprite3Attribute2Bits2 = 0
11310	LET	MyGameSprite3FourBitBits2 = 128
11315	LET	MyGameTile3Index2 = 0
11320	REM
11325	LET	MyGameSprite3XOffset3 = 16
11330	LET	MyGameSprite3YOffset3 = 16
11335	LET	MyGameSprite3Attribute2Bits3 = 0
11340	LET	MyGameSprite3FourBitBits3 = 128
11345	LET	MyGameTile3Index3 = 0
11350	REM

Blocks/tiles output would be similar.