avatar_Sid_

Martine a cpc old / Plus tool to handle your images

Started by Sid_, 15:20, 24 January 20

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Sid_

I would like to introduce you a tool to handle your images for the CPC old and CPC plus series.
This cli tool convert png / jpg file to several different formats, such  as classical cpc screen file (like OCP), sprites and sprites hard for plus series, overscan, egx 1 and 2, tiles.
You can export your files in dsk, ascii text files, binary files.
It's a multiplatform tool (binaries for windows, macOS, linux, raspbian).
All outputs files are compatible with ImpDraw V2 http://orgams.wikidot.com/i2.

You can improve rendering by applying dithering, your own palette (plus and old palette supported).
You rotate your image, byte translation.


To explain more, I'll post some samples in further posts.

You can check the code here : https://github.com/jeromelesaux/martine
And binaries here : https://github.com/jeromelesaux/martine/releases
A windows Gui is available here : https://index.amstrad.info/wp-content/uploads/martine/



SkulleateR

Sounds REALLY cool, since I´m a mac user I have to try this out ....

trocoloco

It does even create a dsk and a loader for the converted screen, nice  feature & very useful.

Sid_

I forgot the greetings 😀
The GUI is made by tronic and all ideas came from Siko Tronic Roudoudou and Ast ^^.
The next post will be a explanation of some arguments usage on the same image.

Sid_

Here some examples :

input image :
simple transfert :
#! /bin/bash
martine -i hulk.jpg -m 0 -dsk
/Applications/Retro\ Virtual\ Machine\ 2.app/Contents/MacOS/Retro\ Virtual\ Machine\ 2 -i HULK.DSK -b=cpc6128@fr -command="run3hulk



Now with dithering treatment :
#! /bin/bash
martine -i hulk.jpg -m 0 -dithering 10 -dsk


In overscan :
#! /bin/bash
martine -i hulk.jpg -m 0 -dithering 10 -f -dsk


In egx1 mode :
#! /bin/bash
mkdir mode0
mkdir mode1
martine -i hulk.jpg -m 0 -o mode0 -dsk -f
martine -i hulk.jpg -m 1 -o mode1 -dithering 10 -dsk -f
martine -i mode0/HULK.SCR -m 0 -egx1 -i2 mode1/HULK.SCR -m2 1 -dsk -pal mode0/HULK.PAL -f


If you want more examples tell me.
Next post will be on the sprites.

Sid_

If your CPC has the M4 card, you can send your image by network, here an usage example in the video

GUNHED

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Sid_

Thanks @GUNHED but it's a collegiate work with @siko, @tronic , @Ast and @roudoudou
Of course I didn't say but to enable amstrad plus palette, add -p (for amstrad plus) to your command line.
Yours gfx may be exported in sna, dsk or just binary files.


A lot of course still remains such as :
- deltapacking (with an assembly code to give an idea).
- fix some bugs




Something else, I can't post dsk file, how can I send to the forum some examples dsk ?

tronic

You can also do EGX graphics (which is a mix of mode 0/1/2 on odd/even lines).
Here there some examples in this zip file. (see attached)
To view them (dsk): RUN "file.bas" or then RUN "file.scr" depending on the case.
You'll also find some "delta" animations inside (sna / 128ko).


Sid_

Hi a little post to explain how to use Martine to generate sprites.


here a bash sample for each phases :

#! /bin/bash
WIDTH=40
HEIGHT=60


martine -i sprite0.png -m 0 -w $WIDTH -h $HEIGHT
mv SPRITE0.PAL REFERENCE.PAL


for i in sprite[0-4].png
do martine -i "$i" -m 0 -w $WIDTH -h $HEIGHT -pal REFERENCE.PAL -dsk
done


#display all the sprite text outputs
cat SPRITE[0-4].TXT


1/ generate the referenced palette

2/ generate all sprite with the reference palette
3/ get all the sprites, and palette output.

Here the sample code (not optimized, just to explain how use Martine and incorporate the sprites in yours projects.
Of course, all optimisations can be applied on your sprites, such as dithering, zigzag output, mode etc ...


org #1000
run $
start
;
; to compile and execute rasm sprite_sonic.asm -eo && open sprite_sonic.dsk
;


large equ 40/2 ; mode 0 pixels / 2
haut equ 60
where equ #c350


xor a
call #BC0E ; mode 0




sprloop


;#call #bb06 ; wait key from keyboard




call palettefirmware


;ld hl,#b7f9
;jp #bcdd


//call #bb06 ; wait key from keyboard
call xvbl
;call waitvbl
ld de,where ; adresse de l'ecran
ld hl,sprite0 ; pointeur sur l'image en memoire
ld b, haut ; hauteur de l'image
call display


//call #bb06 ; wait key from keyboard
;call waitvbl
call xvbl
ld de,where ; adresse de l'ecran
ld hl,sprite1 ; pointeur sur l'image en memoire
ld b, haut ; hauteur de l'image
call display


//call #bb06 ; wait key from keyboard
;call waitvbl
call xvbl
ld de,where ; adresse de l'ecran
ld hl,sprite2 ; pointeur sur l'image en memoire
ld b, haut ; hauteur de l'image
call display




//call #bb06 ; wait key from keyboard
;call waitvbl
call xvbl
ld de,where ; adresse de l'ecran
ld hl,sprite3 ; pointeur sur l'image en memoire
ld b, haut ; hauteur de l'image
call display


//call #bb06 ; wait key from keyboard
;call waitvbl
call xvbl
ld de,where ; adresse de l'ecran
ld hl,sprite4 ; pointeur sur l'image en memoire
ld b, haut ; hauteur de l'image
call display


call xvbl


jp sprloop




display
loop
push bc ; sauve le compteur hauteur dans la pile
push de ; sauvegarde de l'adresse ecran dans la pile
ld bc, large ; largeur de l'image a afficher
ldir ; remplissage de n * largeur octets a l'adresse dans de
pop de ; recuperation de l'adresse d'origine
ex de,hl ; echange des valeurs des adresses
call bc26 ; calcul de l'adresse de la ligne suivante
ex de,hl ; echange des valeurs des adresses
pop bc ; retabli le compteur
djnz loop
ret




palettefirmware ; hl pointe sur les valeurs de la palette
ld a,0
ld b,0
ld c,0
call #bc32


ld a,1
ld b,1
ld c,1
call #bc32


ld a,2
ld b,13
ld c,13
call #bc32


ld a,3
ld b,14
ld c,14
call #bc32


ld a,4
ld b,16
ld c,16
call #bc32


ld a,5
ld b,11
ld c,11
call #bc32


ld a,6
ld b,26
ld c,26
call #bc32
ret


palette
ld bc,#7F00
ld e, #54
out (c),c
out (c),e


ld bc,#7F01
ld e, #44
out (c),c
out (c),e


ld bc,#7F02
ld e, #40
out (c),c
out (c),e


ld bc,#7F03
ld e, #5f
out (c),c
out (c),e


ld bc,#7F04
ld e, #47
out (c),c
out (c),e




ld bc,#7F05
ld e, #57
out (c),c
out (c),e


ld bc,#7F06
ld e, #4b
out (c),c
out (c),e


ret




xvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
call waitvbl
ret


waitvbl
    ld b,#f5 ; attente vbl
vbl
    in a,(c)
    rra
    jp nc,vbl
    ret


bc26
ld a,h
add a,8
ld h,a ; <---- le fameux que tu as oublié !
ret nc
ld bc,#c050 ; on passe en 96 colonnes
add hl,bc
res 3,h
ret


palettes
pal0
db #54, #44, #40, #5f, #47, #57, #4b


sprites
sprite0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c0, #d0, #f0, #f0, #f0, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #c0, #d0, #f0, #f0
db #f0, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #cc, #cc
db #c4, #c8, #c0, #c0, #c0, #cc, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #cc, #cc, #c4, #c8, #c0, #c0
db #c0, #cc, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #cc, #c0
db #48, #c4, #cc, #cc, #c0, #cc, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #cc, #c0, #48, #c4, #cc, #cc
db #c0, #cc, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #24, #48, #c4, #cc, #cc, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #c0, #0c, #24, #48, #c4, #cc
db #cc, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #c0, #0c
db #24, #48, #c4, #cc, #cc, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #c0, #0c, #64, #cc, #9c, #6c
db #cc, #cc, #c0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #c0, #0c
db #64, #cc, #9c, #6c, #cc, #cc, #c0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c4, #cc, #cc, #cc, #cc, #8c, #1c, #3c
db #cc, #cc, #c0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c4, #cc, #cc, #cc
db #cc, #8c, #1c, #3c, #cc, #cc, #c0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #cc
db #cc, #cc, #cc, #cc, #cc, #8c, #1c, #3c
db #00, #cc, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #cc, #cc, #cc, #cc, #cc
db #cc, #8c, #1c, #3c, #00, #cc, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c0, #c0, #c0, #cc, #cc, #8c, #1c, #3c
db #00, #cc, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #c0, #c0, #c0, #cc
db #cc, #8c, #1c, #3c, #00, #cc, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #c0, #c0, #cc, #cc, #8c, #1c, #3c
db #00, #00, #00, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #c0, #c0, #cc
db #cc, #8c, #1c, #3c, #00, #00, #00, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #c0, #c0, #8c, #0c, #1c, #3c
db #00, #0c, #00, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #c0, #c0
db #8c, #0c, #1c, #3c, #00, #0c, #00, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c4, #c0, #c0, #c0, #18, #30, #30, #24
db #0c, #30, #00, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c4, #c8, #c0, #c0, #c0
db #18, #30, #30, #30, #30, #30, #0c, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c4
db #c8, #c0, #c0, #c0, #18, #30, #30, #30
db #30, #30, #0c, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c4, #c8, #c0, #c0, #c0
db #84, #18, #30, #30, #30, #0c, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c4
db #c8, #c0, #c0, #c0, #84, #18, #30, #30
db #30, #0c, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #c0, #c0, #c0
db #c0, #c0, #84, #0c, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #c0
db #c0, #c0, #c0, #c0, #c0, #c0, #84, #0c
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #c0
db #c0, #c0, #80, #00, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #c0, #c0, #c0, #80, #00
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #0c
db #60, #84, #18, #20, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #0c, #60, #84, #18, #20
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #0c, #30
db #84, #18, #30, #24, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #0c, #30, #84, #18, #30, #24
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #0c, #30, #c0
db #84, #18, #30, #30, #00, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #0c, #30, #c0, #84, #18, #30, #30
db #00, #00, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #0c, #3c, #0c
db #84, #18, #30, #30, #0c, #0c, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #84, #3c, #3c, #3c, #0c, #18, #30, #24
db #0c, #0c, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #84, #3c, #3c, #3c
db #0c, #18, #30, #24, #0c, #0c, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a4, #3c, #3c, #3c, #48, #84, #0c, #48
db #0c, #0c, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a4, #3c, #3c, #3c
db #48, #84, #0c, #48, #0c, #0c, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #0c, #3c, #0c, #c0, #c0, #c0, #d0
db #00, #00, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #0c, #3c, #0c
db #c0, #c0, #c0, #d0, #00, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #c0, #d0, #e0, #c4, #d8
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #c0
db #d0, #e0, #c4, #d8, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #c0, #d8, #e0, #c4, #d8
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #c0
db #d8, #e0, #c4, #d8, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #00, #c0, #d0, #e0, #c4, #d8
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #00, #c0
db #d0, #e0, #c4, #d8, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #00, #3c, #c0, #28, #00, #00, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #00, #3c, #c0
db #28, #00, #00, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #00, #0c, #3c, #08, #00, #04, #08
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a0, #0c, #00, #00
db #10, #20, #00, #04, #00, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a0, #0c, #00, #00, #10, #20, #00, #04
db #00, #00, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a0, #0c, #30, #30
db #30, #34, #3c, #28, #00, #0c, #00, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a0, #0c, #30, #30, #30, #34, #3c, #28
db #00, #0c, #00, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a0, #0c, #0c, #0c
db #0c, #0c, #18, #30, #30, #00, #0c, #08
db #50, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a0, #0c, #0c, #0c, #0c, #0c, #18, #30
db #30, #00, #0c, #08, #50, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a0, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #00, #00
db #50, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a0, #00, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #50, #f0, #f0, #f0


sprite1
db #f0, #f0, #f0, #f0, #f0, #f0, #c0, #c0
db #c0, #c0, #d0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #c0, #c0, #c0, #c0, #d0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #c0, #cc
db #cc, #cc, #c8, #c0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #c0, #cc, #cc, #cc, #c8, #c0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c4, #cc, #cc, #cc
db #cc, #cc, #cc, #c8, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c4, #cc, #cc, #cc, #cc, #cc, #cc, #c8
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #cc, #c8, #30, #30, #c0
db #cc, #cc, #cc, #cc, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c0, #0c, #30, #30, #cc, #cc, #cc, #cc
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #c0, #0c, #30, #30
db #cc, #cc, #cc, #cc, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #0c, #30, #c0, #1c, #3c, #28, #44
db #cc, #00, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #0c, #30, #c0
db #1c, #3c, #28, #44, #cc, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #c0, #0c, #cc, #1c, #3c, #28, #00
db #3c, #00, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #c0, #0c, #cc
db #1c, #3c, #28, #00, #3c, #00, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c4
db #cc, #cc, #cc, #cc, #8c, #1c, #3c, #28
db #30, #00, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c4, #cc, #cc, #cc, #cc
db #8c, #1c, #3c, #28, #30, #00, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #cc
db #cc, #cc, #cc, #cc, #8c, #1c, #3c, #3c
db #30, #30, #0c, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #cc, #cc, #cc, #cc, #cc
db #8c, #1c, #3c, #3c, #30, #30, #0c, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #c8
db #c0, #cc, #cc, #cc, #cc, #8c, #1c, #38
db #30, #30, #0c, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #c8, #c0, #cc, #cc, #cc
db #cc, #8c, #1c, #38, #30, #30, #0c, #f0
db #f0, #f0, #f0, #f0, #f0, #c4, #c8, #c0
db #c0, #cc, #cc, #cc, #8c, #0c, #18, #30
db #30, #0c, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c4, #c8, #c0, #c0, #cc, #cc, #cc
db #8c, #0c, #18, #30, #30, #0c, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c0, #c0, #cc, #cc, #18, #30, #30, #30
db #30, #0c, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #d0, #f0, #e0, #c0, #c0, #c0, #c0
db #18, #30, #30, #30, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #d0, #f0, #e0
db #c0, #c0, #c0, #c0, #18, #30, #30, #30
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #c0, #c0, #c0
db #84, #18, #30, #24, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #c0, #c0, #c0, #84, #18, #30, #24
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #c0, #c0, #c0
db #c0, #84, #0c, #58, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #c0, #c0, #c0, #c0, #84, #0c, #58
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #c0, #c0, #c0
db #c0, #80, #00, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #c0
db #c0, #c0, #c0, #c0, #c0, #80, #00, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #d0, #f0, #e0, #c0, #0c, #30
db #84, #18, #20, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #d0, #f0
db #e0, #c0, #0c, #30, #84, #18, #20, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #0c, #30, #c0
db #18, #30, #24, #08, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #0c, #30, #c0, #18, #30, #24, #08
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #84, #30, #c0, #c0
db #18, #30, #30, #20, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #84, #30, #c0, #c0, #18, #30, #30, #20
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #84, #3c, #0c, #c0
db #18, #30, #30, #24, #0c, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #84
db #1c, #3c, #3c, #0c, #18, #30, #24, #0c
db #0c, #00, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #84, #1c, #3c, #3c, #0c
db #18, #30, #24, #0c, #0c, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a4
db #1c, #3c, #3c, #0c, #84, #0c, #48, #84
db #0c, #00, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #a4, #1c, #3c, #3c, #0c
db #84, #0c, #48, #84, #0c, #00, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a4, #3c, #0c, #c0, #c0, #c0, #d0, #a0
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a4, #3c, #0c, #c0
db #c0, #c0, #d0, #a0, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #c0, #c0, #e0, #c4, #d8, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #c0, #c0
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #c0, #cc, #e0, #c4, #d8, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #c0, #cc
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #00, #c0, #c0, #e0, #c4, #d8, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #00, #c0, #c0
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a0, #3c, #c0, #3c, #00, #00, #50, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #a0, #3c, #c0, #3c
db #00, #00, #50, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #a0, #0c, #3c, #0c, #00, #04, #08, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #a0, #04, #00, #00, #00
db #20, #00, #04, #08, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a0
db #04, #00, #00, #00, #20, #00, #04, #08
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #a0, #04, #30, #30, #30
db #34, #3c, #28, #00, #0c, #00, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a0
db #04, #30, #30, #30, #34, #3c, #28, #00
db #0c, #00, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #a0, #04, #0c, #0c, #0c
db #0c, #18, #30, #30, #00, #0c, #0c, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a0
db #04, #0c, #0c, #0c, #0c, #18, #30, #30
db #00, #0c, #0c, #50, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #a0, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #00, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a0
db #00, #00, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #50, #f0, #f0, #f0, #f0




sprite2
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #c0, #c0
db #f0, #f0, #f0, #e0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #c0, #c0, #f0, #f0, #f0, #e0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #0c, #c0, #cc
db #c0, #c0, #c0, #84, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #0c, #c0, #cc, #c0, #c0, #c0, #84
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #30, #0c, #c0
db #cc, #cc, #c8, #84, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #84, #30, #0c, #c0, #cc, #cc, #cc, #c8
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #84, #30, #0c, #c0
db #cc, #cc, #cc, #c8, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #84, #c0, #cc, #cc, #cc, #cc, #cc, #cc
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #84, #c0, #cc, #cc
db #cc, #cc, #cc, #cc, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #cc
db #c8, #cc, #cc, #3c, #6c, #cc, #9c, #3c
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #cc, #c8, #cc, #cc, #3c
db #6c, #cc, #9c, #3c, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c4, #cc, #cc
db #cc, #cc, #3c, #3c, #3c, #3c, #3c, #3c
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c4, #cc, #cc, #cc, #cc, #3c, #3c
db #3c, #3c, #3c, #3c, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c4, #c8, #c4
db #cc, #cc, #3c, #00, #14, #3c, #28, #14
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c4, #c8, #c4, #cc, #cc, #3c, #00
db #14, #3c, #28, #14, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #c0, #c0, #c0, #c4
db #cc, #cc, #3c, #00, #14, #3c, #28, #14
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #c0, #c0, #c0, #c4, #cc, #cc, #3c, #00
db #14, #3c, #28, #14, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c4, #cc, #3c, #00, #14, #3c, #28, #14
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c4, #cc, #3c, #00
db #14, #3c, #28, #14, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #c0
db #c0, #0c, #0c, #3c, #2c, #0c, #0c, #0c
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #0c, #30, #0c
db #18, #30, #20, #00, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #c0
db #c0, #0c, #30, #0c, #18, #30, #20, #00
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #c0, #0c, #30, #30
db #30, #30, #30, #30, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c0, #0c, #30, #30, #30, #30, #30, #30
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #0c, #30
db #20, #10, #30, #24, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #0c, #30, #20, #10, #30, #24
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #b0, #30, #c0, #c0, #0c
db #30, #30, #24, #58, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #b0
db #30, #c0, #c0, #0c, #30, #30, #24, #58
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a4, #18, #24, #0c, #cc, #cc, #00
db #04, #0c, #58, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #a4, #18, #24
db #0c, #cc, #cc, #00, #04, #0c, #58, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #18, #24, #48, #c0, #cc, #0c, #30
db #20, #04, #18, #70, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #18, #24, #48
db #c0, #cc, #0c, #30, #20, #04, #18, #70
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a4, #0c, #18, #34, #cc, #0c, #30
db #30, #20, #04, #18, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #a4, #0c, #18
db #34, #cc, #0c, #30, #30, #20, #04, #18
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #94, #3c, #0c, #30, #30
db #30, #24, #18, #70, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #94, #3c
db #3c, #0c, #30, #30, #20, #04, #58, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #94, #3c, #3c, #0c, #30, #30
db #20, #04, #58, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #b4, #3c
db #3c, #cc, #0c, #0c, #88, #04, #58, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #b4, #3c, #3c, #cc, #0c, #0c
db #88, #04, #58, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #cc, #cc, #d8, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #cc, #cc
db #d8, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #c0, #c0, #d8, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #c0, #c0
db #d8, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #cc, #f0, #f0, #c4, #d8, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #cc, #f0, #f0
db #c4, #d8, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #d0
db #e0, #cc, #f0, #f0, #c4, #d8, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #d0, #e0, #cc, #f0, #f0
db #c4, #d8, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a0, #14
db #68, #3c, #00, #f0, #e0, #c4, #d8, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #a0, #14, #68, #3c, #00, #f0
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a0, #04
db #1c, #3c, #00, #f0, #04, #0c, #08, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #a0, #00, #00, #00, #30, #00
db #04, #0c, #0c, #08, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a0, #00
db #00, #00, #30, #00, #04, #0c, #0c, #08
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a0, #04, #0c, #0c, #3c, #3c, #30
db #20, #04, #0c, #0c, #0c, #00, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #a0, #04, #0c
db #0c, #3c, #3c, #30, #20, #04, #0c, #0c
db #0c, #00, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #a0, #04, #0c, #0c, #0c, #30, #30
db #30, #20, #04, #0c, #0c, #0c, #0c, #50
db #f0, #f0, #f0, #f0, #f0, #a0, #04, #0c
db #0c, #0c, #30, #30, #30, #20, #04, #0c
db #0c, #0c, #0c, #50, #f0, #f0, #f0, #f0
db #f0, #a0, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #00, #50
db #f0, #f0, #f0, #f0, #f0, #a0, #00, #00
db #00, #00, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #50, #f0, #f0, #f0, #f0




sprite3
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #c0, #c0
db #f0, #f0, #f0, #e0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #c0, #c0, #f0, #f0, #f0, #e0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #0c, #c0, #cc
db #c0, #c0, #c0, #84, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #0c, #c0, #cc, #c0, #c0, #c0, #84
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #30, #0c, #c0
db #cc, #cc, #c8, #84, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #84, #30, #0c, #c0, #cc, #cc, #cc, #c8
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #84, #30, #0c, #c0
db #cc, #cc, #cc, #c8, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #84, #c0, #cc, #cc, #cc, #cc, #cc, #cc
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #84, #c0, #cc, #cc
db #cc, #cc, #cc, #cc, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #cc
db #c8, #cc, #c0, #3c, #c4, #cc, #cc, #c8
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #cc, #c8, #cc, #c0, #3c
db #c4, #cc, #cc, #c8, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c4, #cc, #cc
db #cc, #cc, #3c, #3c, #68, #c4, #cc, #9c
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c4, #cc, #cc, #cc, #cc, #3c, #3c
db #68, #c4, #cc, #9c, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c4, #c8, #c4
db #cc, #cc, #3c, #00, #14, #6c, #c8, #94
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c4, #c8, #c4, #cc, #cc, #3c, #00
db #14, #6c, #c8, #94, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #c0, #c0, #c0, #c4
db #cc, #cc, #3c, #00, #14, #68, #80, #14
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #c0, #c0, #c0, #c4, #cc, #cc, #3c, #00
db #14, #68, #80, #14, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c4, #cc, #3c, #00, #14, #3c, #28, #14
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c4, #cc, #3c, #00
db #14, #3c, #28, #14, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #c0
db #c0, #0c, #0c, #3c, #2c, #0c, #0c, #0c
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #0c, #30, #0c
db #18, #30, #20, #00, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #c0
db #c0, #0c, #30, #0c, #18, #30, #20, #00
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #c0, #0c, #30, #30
db #30, #30, #30, #30, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c0, #0c, #30, #30, #30, #30, #30, #30
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #0c, #30
db #20, #10, #30, #24, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #0c, #30, #20, #10, #30, #24
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #b0, #30, #c0, #c0, #0c
db #30, #30, #24, #58, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #b0
db #30, #c0, #c0, #0c, #30, #30, #24, #58
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a4, #18, #24, #0c, #cc, #cc, #00
db #04, #0c, #58, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #a4, #18, #24
db #0c, #cc, #cc, #00, #04, #0c, #58, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #18, #24, #48, #c0, #cc, #0c, #30
db #20, #04, #18, #70, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #18, #24, #48
db #c0, #cc, #0c, #30, #20, #04, #18, #70
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a4, #0c, #18, #34, #cc, #0c, #30
db #30, #20, #04, #18, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #a4, #0c, #18
db #34, #cc, #0c, #30, #30, #20, #04, #18
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #94, #3c, #0c, #30, #30
db #30, #24, #18, #70, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #94, #3c
db #3c, #0c, #30, #30, #20, #04, #58, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #94, #3c, #3c, #0c, #30, #30
db #20, #04, #58, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #b4, #3c
db #3c, #cc, #0c, #0c, #88, #04, #58, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #b4, #3c, #3c, #cc, #0c, #0c
db #88, #04, #58, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #cc, #cc, #d8, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #cc, #cc
db #d8, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #c0, #c0, #d8, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #c0, #c0
db #d8, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #cc, #f0, #f0, #c4, #d8, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #cc, #f0, #f0
db #c4, #d8, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #d0
db #e0, #cc, #f0, #f0, #c4, #d8, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #d0, #e0, #cc, #f0, #f0
db #c4, #d8, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a0, #14
db #68, #3c, #00, #f0, #e0, #c4, #d8, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #a0, #14, #68, #3c, #00, #f0
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a0, #04
db #1c, #3c, #00, #f0, #04, #0c, #08, #50
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #a0, #00, #00, #00, #30, #00
db #04, #0c, #0c, #08, #00, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a0, #00
db #00, #00, #30, #00, #04, #0c, #0c, #08
db #00, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a0, #04, #0c, #0c, #3c, #3c, #30
db #20, #04, #0c, #0c, #0c, #00, #00, #f0
db #f0, #f0, #f0, #f0, #f0, #a0, #04, #0c
db #0c, #3c, #3c, #30, #20, #04, #0c, #0c
db #0c, #00, #00, #f0, #f0, #f0, #f0, #f0
db #f0, #a0, #04, #0c, #0c, #0c, #30, #30
db #30, #20, #04, #0c, #0c, #0c, #0c, #50
db #f0, #f0, #f0, #f0, #f0, #a0, #04, #0c
db #0c, #0c, #30, #30, #30, #20, #04, #0c
db #0c, #0c, #0c, #50, #f0, #f0, #f0, #f0
db #f0, #a0, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #00, #50
db #f0, #f0, #f0, #f0, #f0, #a0, #00, #00
db #00, #00, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #50, #f0, #f0, #f0, #f0




sprite4
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #d0, #f0, #f0, #f0, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #d0, #f0, #f0, #f0
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #c0, #0c, #c0
db #c8, #c0, #c0, #c0, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #c0, #30, #0c, #c4, #cc, #cc, #c8
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #c0, #30, #0c
db #c4, #cc, #cc, #c8, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #0c, #30, #0c, #c4, #cc, #cc, #cc
db #c0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #0c, #30, #0c
db #c4, #cc, #cc, #cc, #c0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #0c, #c0, #cc, #cc, #cc, #cc, #cc
db #cc, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #0c, #c0, #cc
db #cc, #cc, #cc, #cc, #cc, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c4
db #cc, #c0, #cc, #c0, #68, #c4, #cc, #cc
db #c0, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c4, #cc, #c0, #cc, #c0
db #68, #c4, #cc, #cc, #c0, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #cc
db #cc, #cc, #cc, #3c, #3c, #68, #c4, #cc
db #3c, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c4, #cc, #cc, #cc, #cc, #3c
db #3c, #68, #c4, #cc, #3c, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c4, #c8
db #c4, #cc, #cc, #3c, #00, #14, #6c, #c8
db #3c, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #c0, #c4, #cc, #cc, #3c
db #00, #14, #68, #80, #3c, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #c0
db #c4, #cc, #cc, #3c, #00, #14, #68, #80
db #3c, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #cc, #cc, #3c
db #00, #14, #3c, #28, #3c, #c0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #e0
db #c0, #cc, #cc, #3c, #00, #14, #3c, #28
db #3c, #c0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #c0, #0c, #0c
db #3c, #2c, #0c, #0c, #0c, #0c, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #c0, #0c, #0c, #3c, #2c, #0c, #0c
db #0c, #0c, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #c0, #c0, #0c, #30
db #0c, #18, #30, #20, #00, #0c, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #c0, #c0, #0c, #30, #0c, #18, #30, #20
db #00, #0c, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #c0, #c0, #c0, #0c, #30
db #30, #30, #30, #30, #30, #0c, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #c0, #c0, #0c, #30, #20, #10, #30
db #0c, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #c0, #c0, #0c
db #30, #20, #10, #30, #0c, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #b0, #30, #c0, #c0, #18, #30, #30, #24
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #b0, #30, #c0, #c0
db #18, #30, #30, #24, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a4, #18
db #24, #0c, #cc, #cc, #00, #04, #0c, #58
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #a4, #18, #24, #0c, #cc, #cc
db #00, #04, #0c, #58, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #a4, #18, #24
db #48, #c0, #cc, #0c, #30, #20, #04, #18
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #a4, #18, #24, #48, #c0, #cc, #0c
db #30, #20, #04, #18, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #a4, #0c
db #18, #3c, #cc, #0c, #30, #30, #20, #04
db #30, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #a4, #0c, #18, #3c, #cc, #0c
db #30, #30, #20, #04, #30, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #94, #3c, #0c, #30, #30, #30, #24, #18
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #e0, #c0, #94, #3c, #3c, #0c, #30
db #30, #20, #04, #58, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #e0, #c0, #94
db #3c, #3c, #0c, #30, #30, #20, #04, #58
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #b4, #3c, #3c, #cc, #0c
db #4c, #88, #04, #58, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #b4
db #3c, #3c, #cc, #0c, #4c, #88, #04, #58
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #cc, #cc
db #cc, #d8, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #cc, #cc, #cc, #d8, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #e0, #c0, #cc, #c0
db #c4, #d8, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #e0, #c0, #cc, #c0, #c4, #d8, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #e0, #c0, #c0, #cc, #f0
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #e0, #c0
db #d0, #c0, #cc, #f0, #e0, #c4, #d8, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #e0, #c0, #d0, #c0, #cc, #f0
db #e0, #c4, #d8, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a0
db #14, #c0, #3c, #00, #f0, #e0, #84, #08
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #a0, #14, #c0, #3c, #00
db #f0, #e0, #84, #08, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #a0
db #04, #3c, #3c, #00, #a0, #04, #0c, #0c
db #00, #00, #00, #00, #00, #50, #f0, #f0
db #f0, #f0, #f0, #a0, #04, #3c, #3c, #00
db #a0, #04, #0c, #0c, #00, #00, #00, #00
db #00, #50, #f0, #f0, #f0, #f0, #f0, #a0
db #00, #00, #00, #30, #00, #04, #0c, #0c
db #0c, #0c, #0c, #08, #00, #50, #f0, #00
db #f0, #f0, #f0, #a0, #00, #00, #00, #30
db #00, #04, #0c, #0c, #0c, #0c, #0c, #08
db #00, #50, #f0, #00, #f0, #f0, #a0, #04
db #0c, #0c, #3c, #3c, #30, #20, #04, #0c
db #0c, #0c, #00, #50, #f0, #f0, #f0, #00
db #f0, #f0, #a0, #04, #0c, #0c, #3c, #3c
db #30, #20, #04, #0c, #0c, #0c, #00, #50
db #f0, #f0, #f0, #00, #f0, #f0, #a0, #04
db #0c, #0c, #0c, #30, #30, #30, #20, #04
db #00, #00, #f0, #f0, #f0, #f0, #f0, #00
db #f0, #f0, #a0, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #00, #f0, #f0, #a0, #00
db #00, #00, #00, #00, #00, #00, #00, #00
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #00
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0
db #f0, #f0, #f0, #f0, #f0, #f0, #f0, #f0




end


save'disc.bin',#1000,end-start,DSK,'sprite_sonic.dsk'
[/size]



Sid_

A new feature was coded : tile map


If you want to generate all tile from an image, you can execute the following command line :

martine -i mario-level1.png -w 16 -h 16 -tilemap -o Mario-level1



Martine will find all tiles from the original image, generate all uniq tiles (16 pixels width and 16 pixels height) and a map of the tiles positions in the level.
here a sample of the result of all tiles, plus an resume image (tiles map_schema.png) and a csv file of all tiles positions.
Again all treatment can be applied on all tiles (dithering, zigzag output, rle compression etc...)


Sid_

I would like to introduce a new feature available in Martine : delta packing.
This feature allows to create animation using this technic.


In the both archives, you will find a gif and all the script to create your own animation.


be aware that the gif format has delta between image, to convert to png you must apply this command line (imagemagick) to produce correct png :

convert giphy-5.gif -coalesce -scale 500x328 output.gif



Here the assembly code to handle delta packing data from Martine :




org #1000
run $
;--- dimensions du sprite ----
large equ 100 / 4
haut equ 40
;-----------------------------




start


    ; gestion du mode
;--- selection du mode ---------
    ld a,0
    call #BC0E
;-------------------------------




;--- gestion de la palette ----
    call palettefirmware
;------------------------------


;--- custom cls ------
ld hl,#c000
ld (hl),48 ; pixel pour clean


ld de,#C001
ld bc,#4000
ldir
;---------------------


call xvbl


;--- affichage du sprite initiale --
    ; affichage du premier sprite
    ld de,#c000 ; adresse de l'ecran
    ld hl,sprite ; pointeur sur l'image en memoire
    ld b, haut ; hauteur de l'image
    loop
    push bc ; sauve le compteur hauteur dans la pile
    push de ; sauvegarde de l'adresse ecran dans la pile
    ld bc, large ; largeur de l'image a afficher
    ldir ; remplissage de n * largeur octets a l'adresse dans de
    pop de ; recuperation de l'adresse d'origine
    ex de,hl ; echange des valeurs des adresses
    call bc26 ; calcul de l'adresse de la ligne suivante
    ex de,hl ; echange des valeurs des adresses
    pop bc ; retabli le compteur
    djnz loop
;------------------------------------


   ;call #bb06


mainloop    ; routine pour afficher les deltas provenant de martine
call xvbl
    ld hl,delta1
    call delta
call xvbl
    ld hl,delta2
    call delta
call xvbl
    ld hl,delta3
    call delta
call xvbl
    ld hl,delta4
    call delta
call xvbl
    ld hl,delta5
    call delta
call xvbl
    ld hl,delta6
    call delta


call xvbl
    ld hl,delta7
    call delta


call xvbl
    ld hl,delta8
    call delta


call xvbl
    ld hl,delta9
    call delta
call xvbl
    ld hl,delta10
    call delta
call xvbl
    ld hl,delta11
    call delta
call xvbl
    ld hl,delta12
    call delta
call xvbl
    ld hl,delta13
    call delta


call xvbl
    ld hl,delta14
    call delta


call xvbl
    ld hl,delta15
    call delta


call xvbl
    ld hl,delta16
    call delta


call xvbl
    ld hl,delta17
    call delta


call xvbl
    ld hl,delta18
    call delta


jp mainloop


;--- routine de deltapacking --------------------------
delta
ld a,(hl) ; nombre de byte a poker
ld (nbbytepoked),a ; stockage en mémoire
inc hl
init
ld a,(hl) ; octet a poker
ld (pixel),a
inc hl
ld c,(hl) ; nbfois
inc hl
ld b,(hl)
inc hl
;
poke_octet
ld e,(hl)
inc hl
ld d,(hl) ; de=adresse
inc hl
ld a,(pixel)
ld (de),a ; poke a l'adresse dans de
dec bc
ld a,b ; test a t'on poke toutes les adresses compteur bc
or a
jr nz, poke_octet
ld a,c
or a
jr nz, poke_octet


ld a,(nbbytepoked) ; reste t'il d'autres bytes a poker ?
dec a
ld (nbbytepoked),a
jr nz,init
ret






;---------------------------------------------------------------
;
; attente de plusieurs vbl
;
xvbl ld e,40
call waitvbl
dec e
jr nz,xvbl+2
ret
;-----------------------------------


;---- attente vbl ----------
waitvbl
    ld b,#f5 ; attente vbl
vbl
    in a,(c)
    rra
    jp nc,vbl
    ret
;---------------------------


;--- application palette firmware -------------
palettefirmware ; hl pointe sur les valeurs de la palette
ld a,0
ld b,0
ld c,0
call #bc32


ld a,1
ld b,10
ld c,10
call #bc32


ld a,2
ld b,3
ld c,3
call #bc32


ld a,3
ld b,9
ld c,9
call #bc32


ld a,4
ld b,13
ld c,13
call #bc32


ld a,5
ld b,6
ld c,6
call #bc32


ld a,6
ld b,16
ld c,16
call #bc32




ld a,7
ld b,26
ld c,26
call #bc32


ret
;---------------------------------------------


;---- recuperation de l'adresse de la ligne en dessous ------------
bc26
ld a,h
add a,8
ld h,a ; <---- le fameux que tu as oublié !
ret nc
ld bc,#c050 ; on passe en 96 colonnes
add hl,bc
res 3,h
ret
;-----------------------------------------------------------------




;--- variables memoires -----
pixel db 0
nbbytepoked db 0
;----------------------------




;------- data ---------------------------


include 'data.asm'






end


save'delta.bin',#1000,end-start,DSK,'delta-martine.dsk'



this code must be assembly with the famous RASM ^^.


If you have idea, questions ask in this post.






GUNHED

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Sid_

I forgot to say, I added in the last release a screen board compatible with the impdraw animation new feature.
From a gif or a group of png, representing your sprite you can import them into impdraw and display edit your animation.
For instance with the previous megaman's gif, and the following command line you can get this :



Martine -animate -i myinputimage.gif -w 20 -h 20 -m 0 -o folder -dsk



where -w is the number of pixels large and -h is the number of pixels high.

Sid_

I fixed a big issue in the address computing in delta mode if you choose a starting address different from #C000.
I will release tomorrow to diffuse this fix.


Sorry for this issue ^^.

Sid_

The new release is here with the bug fix :
https://github.com/jeromelesaux/martine/releases/tag/v0.25


A new option has been also added, -reducer. This option allows to reduce the colors from the original image.


GUNHED

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Sid_

just do view the fix, here are two sna for the same animation.
before avec after the fix.


Enjoy

Sid_

A new bug fix will come.
I fixed the text output by column.
This output allows you to import the text gfx formatted as column.
You can use it in your font conversion for instance.
I also added the same export by as json, if you want to use this export in a tool factory.
The next release will come soon.




Sid

Sid_

I forgot to say I start to write the documentation (user oriented) here https://github.com/jeromelesaux/martine/blob/master/README.md
A French translation will come too.


Sid

Powered by SMFPacks Menu Editor Mod