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 (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 (https://github.com/jeromelesaux/martine)
And binaries here : https://github.com/jeromelesaux/martine/releases (https://github.com/jeromelesaux/martine/releases)
A windows Gui is available here : https://index.amstrad.info/wp-content/uploads/martine/ (https://index.amstrad.info/wp-content/uploads/martine/)
some sample can be found here : https://amstradplus.forumforever.com/t513-martine-fait-du-dessin.htm?start=45
Sounds REALLY cool, since I´m a mac user I have to try this out ....
It does even create a dsk and a loader for the converted screen, nice feature & very useful.
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.
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.
If your CPC has the M4 card, you can send your image by network, here an usage example in the video
WoW! SID, that's awesome!!! :) :) :)
Thanks @GUNHED (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2029) but it's a collegiate work with @siko, @tronic (https://www.cpcwiki.eu/forum/index.php?action=profile;u=859) , @Ast (https://www.cpcwiki.eu/forum/index.php?action=profile;u=573) and @roudoudou (https://www.cpcwiki.eu/forum/index.php?action=profile;u=1714)
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 ?
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).
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]
the results in vidéo :
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...)
Of course you can get the last release here :
https://github.com/jeromelesaux/martine/releases/tag/v0.23 (https://github.com/jeromelesaux/martine/releases/tag/v0.23)
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.
here the sample with vador :
release is available here : https://github.com/jeromelesaux/martine/releases/tag/v0.24
Awesome!!!
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.
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 ^^.
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.
Great, downloading...
just do view the fix, here are two sna for the same animation.
before avec after the fix.
Enjoy
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
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
Great! And thank you for using English, so we all can read it. :) :) :)
New release.
You can find it here https://github.com/jeromelesaux/martine/releases/tag/v0.26
A lot of bugs fixed, oneline and onerow (allow you to display one line or one row each).
Stay tuned, ^^
Sid
Hi all,
a new prod shows Martine animation capabilities and can be downloaded on pouet here : [size=78%]https://www.pouet.net/prod.php?which=86955 (https://www.pouet.net/prod.php?which=86955)[/size]
All code and data files (images, script) can be found on GitHub : https://github.com/jeromelesaux/autobahn-showcase
Thanks @siko for all ^^
Hi,
i'm trying to convert CPC Plus Sprite Hardware with Martine and it doesn't work as i want it to.
[attach=1,msg195792]
martine.exe ship.png -spritehard -m 1 -tile -w 16 -h 16 -o output
What i'd like, generate sprites 16x16 with HardwareSprite format with 16 colors to a text file
What i got, only of sprite 16x16 in mode 1 with 4 colors
Thanks,
Arnaud
Well the documentation is not complet.
the sprite hard is an option dedicated to the cpc plus so you need to add -p (for plus).
martine.exe ship.png -spritehard -m 1 -tile -w 16 -h 16 -o output -p
Thanks but don't seems to work no more :
martine.exe ship.png -spritehard -m 1 -tile -w 16 -h 16 -o output -p
Here my output dir.
missing the input option -I
I never use -tile with sprite hard option I must check the behavior.
martine.exe -i ship.png -spritehard -m 1 -tile -w 16 -h 16 -o output -p
[/size]
@Sid_ (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2614) Ok i can generate a sprite 16x16 (with source of the same size) but tile function is not working for now.
@Arnaud (https://www.cpcwiki.eu/forum/index.php?action=profile;u=1424) you're right the tile function on sprite hard in not coded.
If such functionality interest you, tell me I will coded it.
Sid
By using tile option what do you expected ?
Do you mean the same usage as zigzag or rra option ?
You want to compile your sprite ?
What kind of treatment you want ?
I 'm interested by your usages.
Sid
Hi @Sid_ (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2614) ,
Is there a slideshow available for this yet?
If so I would like to record it for a YT video.
Cheers,
Peter
well it's in wip, I just coded a little intro (with Siko) for now https://www.pouet.net/prod.php?which=86955.
It's a delta mode intro ^^.
Sid
Quote from: Sid_ on 10:51, 28 December 20By using tile option what do you expected ?
Hi @Sid_ (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2614),
i need to convert an image (see my previous image as example) into HW Sprites arrays in C format (same behaviour as img2cpc) including the palette (in another file eventually).
An option to compress sprites or simply use 1-Byte for 2 pixels will be great.
Here an output example :
const unsigned char sprite_ship_0[] =
{
...
};
const unsigned char sprite_ship_1[] =
{
...
};
...
const unsigned char sprite_ship_7[] =
{
...
};
unsigned char* const tileset_ship[] =
{
sprite_ship_0,
sprite_ship_1,
..
sprite_ship_7
};
// 0x0GRB
const unsigned word hw_sprite_palette[] =
{
0x0000,
0x02A0,
...
}
Martine already handle sprite and compression on sprite using -z option :
-z int
Compression algorithm :
1: rle (default)
2: rle 16bits
3: Lz4 Classic
4: Lz4 Raw
and pixel position in sprite like option -zigzag (same as imgcpc)
For the sprite hard (only for Amstrad CPC plus), nothing is already done. And if you wanted to apply those options on sprite hard tell me.
Sid
Quote from: Sid_ on 18:21, 28 December 20For the sprite hard (only for Amstrad CPC plus), nothing is already done. And if you wanted to apply those options on sprite hard tell me.
Yes it could be useful :)
features accepted :D.
I'll added those features to sprite hard.
Sid
a new release is available https://github.com/jeromelesaux/martine/releases/tag/v0.27.
Now compression and zigzag feature can be applied to all sprites format (soft and hard).
Sid
new release is available with a lot of bugs fixed :
https://github.com/jeromelesaux/martine/releases/tag/v0.28
next step will be to add some crunchers and improve rasters option.
Any chance for a ARM 64Bit binary ? Tried to compile, but I get a lot of errors (maybe because I'm not a coder myself) ......
Yep I can do it. I'll try tomorrow and if succeed, I'll provide it in the next release.
Quote from: SkulleateR on 01:58, 20 March 21Any chance for a ARM 64Bit binary ? Tried to compile, but I get a lot of errors (maybe because I'm not a coder myself) ......
May you test this archive ?
martine-0.28-arm64.zip (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm64.zip)
Quote from: Sid_ on 13:23, 21 March 21
May you test this archive ?
Tested but it looks weird ...
sudo ./martine -i test.png -m 0 -dithering 10 -dsk
./martine: 1: ./martine: ELF: not found
./martine: 1: ./martine: e e: not found
./martine: 1: ./martine: @W@@R0Qåte@: not found
./martine: 2: ./martine: ¨o¨oAÀoA
Ok not good architecture I'll try another. Sorry I don't have a 64 bits arm to test my self.
May you type uname -a ?
Quote from: Sid_ on 20:59, 21 March 21
Ok not good architecture I'll try another. Sorry I don't have a 64 bits arm to test my self.
May you type uname -a ?
uname -a
Linux raspberrypi 5.4.73v64 #2 SMP PREEMPT Tue Nov 3 16:11:05 CET 2020 aarch64 GNU/Linux
ok I tried to define the processor in the compilation command line (my bad).
This version may fix the problem : [size=78%]martine-0.28-arm-64bits.zip (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)[/size]
(https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)
R (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)egards
Quote from: Sid_ on 10:18, 22 March 21
ok I tried to define the processor in the compilation command line (my bad).
This version may fix the problem : [size=78%]martine-0.28-arm-64bits.zip (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)[/size]
R (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)egards
Thx for your effort, but I get nearly the same errors like above . It writes a file, but it's not usable and has weird symbols in it. Is there a way to write an error log or something ?
may you put the generated file in this post ?
The logs are printed in the console so, you may know what Martine is doing.
I cannot even add the file to an archive, since it has illegal name. I can delete it, that's all ... but anyway, it's 0 Bytes so I doubt there is useful information in it ...
But I made a screenshot of the filename ...
it's the archive content ?
What a hell GitHub has done.
Nope, not inside the archive ... that one came up after I tried to start martine ...
may you try this other archive : https://koaks.servebeer.com/cpc/martine-0.28-arm-64bits.zip
It's another location where I'm sur of the content.
Same as before .... BUT !!!!!
I tested around a bit and after setting my console to root priviliges, I'll get : cannot execute binary file exec format error
this last version fix the issue ?
Sadly it doesn't ... same error as before :(
may you do a test for me ?
Type in a terminal file /bin/ls and also on Martine executable.
If I do this on the Martine 64 bits archive I've got :
file martine
martine: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=Q-xFG4f4o2N14jF87lQL/Rb23--2UcTLGrd6A46k_/ZK2-ShduUljgH0MWq3Pu/LHViCiFrSn4iOUaY23Mu, not stripped
Are there any Martine slideshows that I could record for YT?
Quote from: Sid_ on 10:13, 27 March 21
may you do a test for me ?
Type in a terminal file /bin/ls and also on Martine executable.
If I do this on the Martine 64 bits archive I've got :
file martine
martine: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=Q-xFG4f4o2N14jF87lQL/Rb23--2UcTLGrd6A46k_/ZK2-ShduUljgH0MWq3Pu/LHViCiFrSn4iOUaY23Mu, not stripped
My bad, the issue came from me and my makefile.
It is fixed and the correct archive can be found here
[size=78%]martine-0.28-arm-64bits.zip (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)[/size] (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)
Thanks to find this issue.
Quote from: ComSoft6128 on 10:36, 27 March 21
Are there any Martine slideshows that I could record for YT?
Still in WIP
Quote from: ComSoft6128 on 10:36, 27 March 21
Are there any Martine slideshows that I could record for YT?
Well if you want I can send you dsk I've done. But it's one image per dsk.
Tell me and if you're ok I'll them to you.
Sid
Hi @Sid_ (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2614) ,
Thanks for the reply. Best to wait until you have say 10 images on a .dsk and a display program/slideshow. I could probably use an existing slideshow but that is likely not to show the screens to best effect.
Quote from: Sid_ on 11:27, 27 March 21
My bad, the issue came from me and my makefile.
It is fixed and the correct archive can be found here [size=78%]martine-0.28-arm-64bits.zip (https://github.com/jeromelesaux/martine/releases/download/v0.28/martine-0.28-arm-64bits.zip)[/size]
Thanks to find this issue.
Thx , I will test later this evening :)
@Sid_ (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2614)
Thanks for your work, works fine now on my Raspberry Pi 400 :)
Thanks to you to point the issue.
I fixed the arm architecture for martine ^^.
ZX0 cruncher is now added in Martine.
Check the url https://github.com/jeromelesaux/martine/releases/tag/v0.29 do update your cli.
To access to this cruncher add the option -z 5 to your command line.
Hi all,
main version here :
- warn, some arguments are renamed (such as -w becomes -width, -h becomes -height, or -m becomes -mode)
- as I mentioned in another thread of this forum the tile map mode, which allow to analyze an image of a level game, and produce .imp and .til readable by tile tool from Impact. To use it apply the command line : martine -in a269_Bridge_Zone_Act_1-6.png -out level1-acte16 -width 8 -height 8 -tilemap -mode 0 -plus
. where -in is the input level board image, -width and -height are the tile dimension you want and -tilemap which execute the analyze. To illustrate the output, check those videos : https://youtu.be/fu5pog11QLY and https://youtu.be/g70CeEehvMk
- and the possibility to create a delta packing animation from a gif file with the option -deltapacking. martine -mode 1 -in my file.gif -deltapacking -width 90 -height 100
. This command line will produce an assembly code, compatible with rasm dialect.
The new version can be found here and enjoy this new version :
https://github.com/jeromelesaux/martine/releases/tag/v0.30
Sid
Hi,
Congrats to the devs for this awesome application.
I spent some time this afternoon making a new avatar from a Yoda figure and I had a lot of fun.
Thanks for your work!!
Quote from: ajcasado on 21:00, 03 October 21
Hi,
Congrats to the devs for this awesome application.
I spent some time this afternoon making a new avatar from a Yoda figure and I had a lot of fun.
Thanks for your work!!
Really, thank you for your return.
I did this tool, first for me and my team, but it's a real pleasure to share with others.
If you want some more features, feel free to ask.
"Martine a cpc old / Plus tool "
Each time I see that I believe it runs on CPC.
Martine WORKS for Amstrad Cpc & Plus.
It's a Pc, Mac tool which did the job.
Quick fix for tilemap.
the imp file export was bigger, it's now fixed.
Feel free to download this new version here :
https://github.com/jeromelesaux/martine/releases/tag/v0.31
Hi friends,
I saw that the command line is not the most common usage, that's why I started to develop a GUI for Martine.
You will be able to do the same but you will improve your production.
It's still in WIP, but it will be available soon. And as usual, all the ideas and requests are encouraged.
Just two quick question (I have seen Martine the first time but haven't used / tried / got deeper of Martine descprition so far):
What I have seen is that there's tile map tool included (also for command line). Does it mean I can create tiles (asm or c code) from an image (e.g. GIF)?
If I'm going to create a tile map with is this tool, is it also able to recognize duplicate tiles?
To create a tilemap and a tileset from an image you can use this online tool.
https://map-cutter.herokuapp.com/ (https://map-cutter.herokuapp.com/)
The exported files are reusable in Tiled.
Quote from: gurneyh on 07:34, 20 January 22
To create a tilemap and a tileset from an image you can use this online tool.
https://map-cutter.herokuapp.com/ (https://map-cutter.herokuapp.com/)
The exported files are reusable in Tiled.
thank you @gurneyh (https://www.cpcwiki.eu/forum/index.php?action=profile;u=2960) for your link.
Quote from: HAL 6128 on 23:19, 19 January 22
Just two quick question (I have seen Martine the first time but haven't used / tried / got deeper of Martine descprition so far):
What I have seen is that there's tile map tool included (also for command line). Does it mean I can create tiles (asm or c code) from an image (e.g. GIF)?
If I'm going to create a tile map with is this tool, is it also able to recognize duplicate tiles?
The purpose of this module in Martine is exactly what you expect. It looks for duplicate tiles and keep the tile index in a map.
You can save the results either in imptiles format (I mean two files. one containing the tiles and one file containing the indexes of the tiles. For informations can be found here http://imptiles.wikidot.com), or as sprites format for the tiles and the map indexes.
If some features are needed, feel free to ask.
Sounds good!
Downloaded the release 0.30 from github for Windows. In the binaries folder there are four files including "martine". All extensions are missing. Are all files .exe?
yes I know, my bad. When I compiled for windows I forgot to add the .exe extension.
And all are executables.
This will no longer happen in the next releases.
Just one more question (then I'm going to have try... :) . Assuming I have GIF picture (size about 240 x 480 pixel). The colouring is created with the original Amstrad CPC colours (14 out of 27). I wanted to create tiles (12x24).
How can I adjust the colours or is Martine recognizing the original colors.
I've worked so far with the command line tool "Img2CPC" where you have an config-file with a colours setup.
I've also seen that martine only accept tile width 8 or 16 pixels.
Quote from: HAL 6128 on 10:44, 20 January 22
Just one more question (then I'm going to have try... :) . Assuming I have GIF picture (size about 240 x 480 pixel). The colouring is created with the original Amstrad CPC colours (14 out of 27). I wanted to create tiles (12x24).
How can I adjust the colours or is Martine recognizing the original colors.
I've worked so far with the command line tool "Img2CPC" where you have an config-file with a colours setup.
I've also seen that martine only accept tile width 8 or 16 pixels.
Martine will find the originals colors (either plus or old CPC palette).
I curb the tiles size to 8x8 8x16 16x16 for the moment.
I see a lot of developers using different tile size, the new version of Martine will allow any size.
Is there an easy way to host Martine so that it can be used to load any images from the net?
eg:
martinehost.com/?mode=1&url=http://imagehost.com/image.jpg
Quote from: zhulien on 15:33, 21 January 22
Is there an easy way to host Martine so that it can be used to load any images from the net?
eg:
martinehost.com/?mode=1&url=http://imagehost.com/image.jpg
It's not implemented but if you want this feature, I can it.
I'll implement it this weekend.
The new Martine version is available and this version add a great evolution. Now you can use Martine with a GUI.
I'll post some vidéo how to use this version.
Binaries available are windows, macos, linux and raspbian.
You can download here : https://github.com/jeromelesaux/martine/releases/tag/v0.33
You can use as usual Martine with command line, but if you want to use GUI, just click on it ^^.
Quote from: Sid_ on 21:28, 28 February 22The new Martine version is available and this version add a great evolution. Now you can use Martine with a GUI.
I'll post some vidéo how to use this version.
Binaries available are windows, macos, linux and raspbian.
You can download here : https://github.com/jeromelesaux/martine/releases/tag/v0.33
You can use as usual Martine with command line, but if you want to use GUI, just click on it ^^.
Kikitoutdur !
A new Martine version is available with a loooot bugs fixed and new features such as gray et monochrome color conversion for CPC Plus.
You can download it here : https://github.com/jeromelesaux/martine/releases/tag/v0.35
Linux and Raspbian versions will be available soon, for the moment MacosX and Windows version can be downloaded.
Enjoy this new version.
Now linux versions are available (Raspbian, and intel linux).
Same link to follow.
I forgot to thanks
@roudoudou for his hints ^^.
Lnux? The title says "Martine a cpc old / Plus tool", and each time, for half a second, I'm under the impression it is a Amstrad native tool!
More precisely, an amstrad cpc & plus tool.
Doing and release it on a lot of plateform is a good idea !
Viva Don Saluste !
A new version is available with a new animation algorithm (named as V2) and a new sprite board tab to handle your hard sprites sprites.
To download it on your appropriate platform check this link :
https://github.com/jeromelesaux/martine/releases/tag/v0.36
Enjoy and have nice holidays.
A new version of Martine is available.
The main improvements are around sprite handling, and impDraw go files export, plus many issues fixed.
You can find the new version here :
https://github.com/jeromelesaux/martine/releases/tag/v0.37
Enjoy this day ;) .
A new Christmas version is available, which will improve speed and stability.
Enjoy this new version ;) :
https://github.com/jeromelesaux/martine/releases/tag/v0.38
Hello all,
a little slideshow with EGX transfert from Martine can be download here :
https://www.pouet.net/prod.php?which=94276
or here
https://www.cpc-power.com/index.php?page=detail&num=19009
Another will be done soon.
Enjoy
Unlisted YT video
The blue border on three sides of the screen (not visible on the screenshots at CPCPOWER) I've seen a few times before, it might be an annoying "quirk" of the OSSC but I don't know - anyone have any ideas?
Best viewed on a large screen at 720p (YouTube Setting)
To adjust the aspect ratio use Stretch Site:
https://www.stretch.site/
A new version is available.
A lot of improvements such as means to get the best palette, new widget in animation tab (now you select the image you want to keep in the animation), and export speed up.
To get this new version, follow this link : https://github.com/jeromelesaux/martine/releases/tag/v0.39
The windows and linux version are compiled differently so if you encounter problems tell me I will fix the issue.
Enjoy