did first badguys part

This commit is contained in:
AArt1256 2025-11-15 23:15:48 +03:00
parent ec5774bfe7
commit bec0c6ac45
1040 changed files with 480 additions and 1950 deletions

View file

@ -1,4 +1,4 @@
; repository version 194, built on Sat, 15 Nov 2025 15:05:27 +0300 for project "loader" using
; repository version 194, built on Sat, 15 Nov 2025 23:14:57 +0300 for project "loader" using
; make PLATFORM=c64 prg INSTALL=1800 RESIDENT=1700 ZP=02 PROJECT=
; configuration

Binary file not shown.

View file

@ -163,6 +163,7 @@ $(DISKIMAGE): $(ASSEMBLE)
-f "sid" -w sid.bin \
-f "badguy" -w badguy.zx0.prg \
-f "font" -w font.bin \
-f "scrmap" -w tilemap.bin.lz \
$@

View file

@ -0,0 +1,68 @@
# Original script by AArt1256
# Modified by alexmush
import sys
def chunks(lst, n):
"""Yield successive n-sized chunks from lst."""
for i in range(0, len(lst), n):
yield lst[i:i + n]
def find_subarray(arr, sub_arr):
sub_len = len(sub_arr)
for i in range(len(arr) - sub_len + 1):
if arr[i:i+sub_len] == sub_arr:
return i
return -1
def compress(input_data : bytearray):
LEN_BUFFER = 256
final = []
buf = [0]*LEN_BUFFER
buf_ind = 0
for data in chunks(input_data, LEN_BUFFER):
data = list(data)
data += [0] * (LEN_BUFFER - len(data))
index = 0
aux = []
while index < LEN_BUFFER:
aux.append(data[index])
find_ind = find_subarray(buf,aux)
if find_ind == -1 or index == LEN_BUFFER-1 or (len(aux) > 0x70 and find_ind != -1):
if len(aux) > 1:
find_ind = find_subarray(buf,aux[:-1])
final.append(len(aux[:-1]))
final.append(find_ind)
final.append(data[index])
for i in aux[:-1]:
buf[buf_ind] = i
buf_ind += 1
buf_ind %= 256
buf[buf_ind] = data[index]
buf_ind += 1
buf_ind %= 256
elif len(aux) == 1:
final.append(0x80)
final.append(data[index])
buf[buf_ind] = data[index]
buf_ind += 1
buf_ind %= 256
aux = []
index += 1
#print(buf==data)
final.append(0xFF)
return bytearray(final)
if __name__ == "__main__":
if len(sys.argv) < 3:
print("error: not enough argument given\n")
print("example arguments:")
print("python",sys.argv[0],"input.bin lzout.bin")
sys.exit()
f = open(sys.argv[1],"rb")
final = compress(f.read())
f = open(sys.argv[2],"wb")
f.write(final)
f.close()

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,4 +0,0 @@
#!/bin/bash
export VICE_INITIAL_CWD="$(pwd)"
export PROGRAM="c1541"
"/Applications/vice-arm64-gtk3-3.9/VICE.app/Contents/Resources/script" "$@"

View file

@ -1,3 +1,4 @@
zx02/zx02 badguys_new.bin badguy.zx0
zx02/zx02 badguyz.bin badguy.zx0
printf "\x00\xe0" > badguy.zx0.prg
cat badguy.zx0 >> badguy.zx0.prg
cat badguy.zx0 >> badguy.zx0.prg
python3 aart_lz.py tilemap.bin tilemap.bin.lz

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,10 @@
LZ_addr: .res 2
; check if the decompression has been finished
; $00 = currently not fully decompressed
; $FF = done/complete!
LZ_done: .res 1
LZ_buf_addr: .res 1
LZ_copy_left: .res 1
LZ_y_temp: .res 1

View file

@ -15,6 +15,10 @@ frame: .res 1
cur_frame: .res 1
frame_delay: .res 1
frame_until: .res 1
text_ptr: .res 2
aart_lz_buffer := $fd00
.include "lz_zp.asm"
.segment "CODE"
@ -33,6 +37,35 @@ pntr = ZP+7
lda #$35
sta $01
ldx #<fontname
ldy #>fontname
jsr loadraw
lda #$34
sta $01
ldx #0
:
lda $e000, x
sta $d800, x
lda $e100, x
sta $d900, x
inx
bne :-
lda #0
tax
:
.repeat 4, I
sta $d000+(I*250), x
.endrepeat
inx
cpx #250
bne :-
lda #$35
sta $01
lda #0
sta ZX0_dst+0
@ -65,7 +98,7 @@ pntr = ZP+7
lda #$1b
sta $d011
lda #$80
lda #$d0
sta $d012
lda #1
@ -78,27 +111,68 @@ pntr = ZP+7
cli
;lda #64
;sta frame_delay
;jsr wait_loop
lda #0
jsr sfx_init
lda #7
sta frame_until
jsr wait_frame_until
lda #64
sta frame_delay
jsr wait_loop
lda #1
jsr sfx_init
ldx #<darmtower_txt
ldy #>darmtower_txt
jsr upload_text
lda #50*5
sta frame_delay
jsr wait_loop
ldx #<empty_txt
ldy #>empty_txt
jsr upload_text
lda #$0d
sta frame_until
jsr wait_frame_until
lda #50*5
sta frame_delay
jsr wait_loop
ldx #<adol_win
ldy #>adol_win
jsr upload_text
lda #50*5
sta frame_delay
jsr wait_loop
lda #26
ldx #<too_bad_txt
ldy #>too_bad_txt
jsr upload_text
lda #50*5
sta frame_delay
jsr wait_loop
ldx #<empty_txt
ldy #>empty_txt
jsr upload_text
lda #$13
sta frame_until
jsr wait_frame_until
lda #0
jsr sfx_init
lda #$1a
sta frame_until
jsr wait_frame_until
jmp *
@ -208,12 +282,6 @@ update_bmp:
jsr inc_bmp_addr
sta bmp_delay
inc cur_frame
lda cur_frame
cmp #2
bne :+
lda #0
jsr sfx_init
:
rts
@skip_frame_end:
@ -325,6 +393,40 @@ irq_badguy:
pha
inc vbl
;inc $d020
lda #$1b
sta $d011
lda #$19
sta $d018
lda #$c8
sta $d016
lda $dd00
and #3
sta @dd00_arc+1
lda #0
sta $dd00
lda #$47
sta $d018
:
lda $d012
cmp #$fb
bcc :-
.res 2, $ea
lda #$3b
sta $d011
lda #$19
sta $d018
lda #$d8
sta $d016
@dd00_arc:
lda #0
sta $dd00
;dec $d020
asl $d019
pla
@ -335,9 +437,54 @@ irq_badguy:
rti
badguy: .byte "badguy",0
fontname: .byte "font",0
darmtower_txt:
.res (40-26)/2, ' '
.byte "who silenced darm's tower?"
.res (40-26)/2, ' '
empty_txt:
.res 40, ' '
adol_win:
.res (40-20)/2, ' '
.byte "adol must have won.."
.res (40-20)/2, ' '
too_bad_txt:
.res (40-10)/2, ' '
.byte "too bad..."
.res (40-10)/2, ' '
upload_text:
lda #$34
sta $01
stx text_ptr
sty text_ptr+1
ldy #39
:
lda (text_ptr), y
sec
sbc #$20
sta $d348+40, y
dey
bne :-
lda #$35
sta $01
lda #1
ldy #39
:
sta $db48+40, y
dey
bne :-
rts
.include "sfx.asm"
.include "zx02.asm"
.include "thcmod_lz.asm"
.res loadraw - *
.incbin "../../build/loader-c64.prg", 2

View file

@ -1,29 +0,0 @@
100,ys2/01_badguyz/koala/png/00.png
3,ys2/01_badguyz/koala/png/01.png
3,ys2/01_badguyz/koala/png/02.png
3,ys2/01_badguyz/koala/png/03.png
3,ys2/01_badguyz/koala/png/04.png
3,ys2/01_badguyz/koala/png/05.png
50,ys2/01_badguyz/koala/png/06.png
15,ys2/01_badguyz/koala/png/07.png
15,ys2/01_badguyz/koala/png/08.png
15,ys2/01_badguyz/koala/png/09.png
15,ys2/01_badguyz/koala/png/10.png
15,ys2/01_badguyz/koala/png/11.png
100,ys2/01_badguyz/koala/png/12.png
15,ys2/01_badguyz/koala/png/10.png
15,ys2/01_badguyz/koala/png/09.png
15,ys2/01_badguyz/koala/png/08.png
15,ys2/01_badguyz/koala/png/07.png
100,ys2/01_badguyz/koala/png/06.png
3,ys2/01_badguyz/koala/png/13.png
3,ys2/01_badguyz/koala/png/14.png
3,ys2/01_badguyz/koala/png/15.png
3,ys2/01_badguyz/koala/png/16.png
3,ys2/01_badguyz/koala/png/17.png
3,ys2/01_badguyz/koala/png/18.png
3,ys2/01_badguyz/koala/png/19.png
100,ys2/01_badguyz/koala/png/00.png
1 100 ys2/01_badguyz/koala/png/00.png
2 3 ys2/01_badguyz/koala/png/01.png
3 3 ys2/01_badguyz/koala/png/02.png
4 3 ys2/01_badguyz/koala/png/03.png
5 3 ys2/01_badguyz/koala/png/04.png
6 3 ys2/01_badguyz/koala/png/05.png
7 50 ys2/01_badguyz/koala/png/06.png
8 15 ys2/01_badguyz/koala/png/07.png
9 15 ys2/01_badguyz/koala/png/08.png
10 15 ys2/01_badguyz/koala/png/09.png
11 15 ys2/01_badguyz/koala/png/10.png
12 15 ys2/01_badguyz/koala/png/11.png
13 100 ys2/01_badguyz/koala/png/12.png
14 15 ys2/01_badguyz/koala/png/10.png
15 15 ys2/01_badguyz/koala/png/09.png
16 15 ys2/01_badguyz/koala/png/08.png
17 15 ys2/01_badguyz/koala/png/07.png
18 100 ys2/01_badguyz/koala/png/06.png
19 3 ys2/01_badguyz/koala/png/13.png
20 3 ys2/01_badguyz/koala/png/14.png
21 3 ys2/01_badguyz/koala/png/15.png
22 3 ys2/01_badguyz/koala/png/16.png
23 3 ys2/01_badguyz/koala/png/17.png
24 3 ys2/01_badguyz/koala/png/18.png
25 3 ys2/01_badguyz/koala/png/19.png
26 100 ys2/01_badguyz/koala/png/00.png

View file

@ -1,20 +0,0 @@
100,ys2/03_tower/koala/png/01.png
3,ys2/03_tower/koala/png/02.png
3,ys2/03_tower/koala/png/03.png
3,ys2/03_tower/koala/png/04.png
3,ys2/03_tower/koala/png/05.png
3,ys2/03_tower/koala/png/06.png
3,ys2/03_tower/koala/png/03.png
50,ys2/03_tower/koala/png/01.png
10,ys2/03_tower/koala/png/07.png
10,ys2/03_tower/koala/png/08.png
10,ys2/03_tower/koala/png/09.png
10,ys2/03_tower/koala/png/10.png
10,ys2/03_tower/koala/png/11.png
10,ys2/03_tower/koala/png/12.png
10,ys2/03_tower/koala/png/13.png
10,ys2/03_tower/koala/png/14.png
150,ys2/03_tower/koala/png/15.png
1 100 ys2/03_tower/koala/png/01.png
2 3 ys2/03_tower/koala/png/02.png
3 3 ys2/03_tower/koala/png/03.png
4 3 ys2/03_tower/koala/png/04.png
5 3 ys2/03_tower/koala/png/05.png
6 3 ys2/03_tower/koala/png/06.png
7 3 ys2/03_tower/koala/png/03.png
8 50 ys2/03_tower/koala/png/01.png
9 10 ys2/03_tower/koala/png/07.png
10 10 ys2/03_tower/koala/png/08.png
11 10 ys2/03_tower/koala/png/09.png
12 10 ys2/03_tower/koala/png/10.png
13 10 ys2/03_tower/koala/png/11.png
14 10 ys2/03_tower/koala/png/12.png
15 10 ys2/03_tower/koala/png/13.png
16 10 ys2/03_tower/koala/png/14.png
17 150 ys2/03_tower/koala/png/15.png

View file

@ -1,40 +0,0 @@
50,ys2/04_tower_beam/koala/png/01.png
5,ys2/04_tower_beam/koala/png/02.png
5,ys2/04_tower_beam/koala/png/03.png
3,ys2/04_tower_beam/koala/png/04.png
3,ys2/04_tower_beam/koala/png/05.png
3,ys2/04_tower_beam/koala/png/06.png
3,ys2/04_tower_beam/koala/png/07.png
3,ys2/04_tower_beam/koala/png/08.png
3,ys2/04_tower_beam/koala/png/09.png
3,ys2/04_tower_beam/koala/png/10.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
3,ys2/04_tower_beam/koala/png/11.png
3,ys2/04_tower_beam/koala/png/12.png
3,ys2/04_tower_beam/koala/png/13.png
1 50 ys2/04_tower_beam/koala/png/01.png
2 5 ys2/04_tower_beam/koala/png/02.png
3 5 ys2/04_tower_beam/koala/png/03.png
4 3 ys2/04_tower_beam/koala/png/04.png
5 3 ys2/04_tower_beam/koala/png/05.png
6 3 ys2/04_tower_beam/koala/png/06.png
7 3 ys2/04_tower_beam/koala/png/07.png
8 3 ys2/04_tower_beam/koala/png/08.png
9 3 ys2/04_tower_beam/koala/png/09.png
10 3 ys2/04_tower_beam/koala/png/10.png
11 3 ys2/04_tower_beam/koala/png/11.png
12 3 ys2/04_tower_beam/koala/png/12.png
13 3 ys2/04_tower_beam/koala/png/13.png
14 3 ys2/04_tower_beam/koala/png/11.png
15 3 ys2/04_tower_beam/koala/png/12.png
16 3 ys2/04_tower_beam/koala/png/13.png
17 3 ys2/04_tower_beam/koala/png/11.png
18 3 ys2/04_tower_beam/koala/png/12.png
19 3 ys2/04_tower_beam/koala/png/13.png
20 3 ys2/04_tower_beam/koala/png/11.png
21 3 ys2/04_tower_beam/koala/png/12.png
22 3 ys2/04_tower_beam/koala/png/13.png
23 3 ys2/04_tower_beam/koala/png/11.png
24 3 ys2/04_tower_beam/koala/png/12.png
25 3 ys2/04_tower_beam/koala/png/13.png
26 3 ys2/04_tower_beam/koala/png/11.png
27 3 ys2/04_tower_beam/koala/png/12.png
28 3 ys2/04_tower_beam/koala/png/13.png
29 3 ys2/04_tower_beam/koala/png/11.png
30 3 ys2/04_tower_beam/koala/png/12.png
31 3 ys2/04_tower_beam/koala/png/13.png

View file

@ -1,69 +0,0 @@
3,ys2/05_field/koala/png/01.png
3,ys2/05_field/koala/png/02.png
3,ys2/05_field/koala/png/03.png
3,ys2/05_field/koala/png/04.png
3,ys2/05_field/koala/png/05.png
3,ys2/05_field/koala/png/06.png
3,ys2/05_field/koala/png/07.png
3,ys2/05_field/koala/png/08.png
3,ys2/05_field/koala/png/01.png
3,ys2/05_field/koala/png/02.png
3,ys2/05_field/koala/png/03.png
3,ys2/05_field/koala/png/04.png
3,ys2/05_field/koala/png/05.png
3,ys2/05_field/koala/png/06.png
3,ys2/05_field/koala/png/07.png
3,ys2/05_field/koala/png/08.png
3,ys2/05_field/koala/png/01.png
3,ys2/05_field/koala/png/02.png
3,ys2/05_field/koala/png/03.png
3,ys2/05_field/koala/png/04.png
3,ys2/05_field/koala/png/05.png
3,ys2/05_field/koala/png/06.png
3,ys2/05_field/koala/png/07.png
3,ys2/05_field/koala/png/08.png
3,ys2/05_field/koala/png/01.png
3,ys2/05_field/koala/png/02.png
3,ys2/05_field/koala/png/03.png
3,ys2/05_field/koala/png/04.png
3,ys2/05_field/koala/png/05.png
3,ys2/05_field/koala/png/06.png
3,ys2/05_field/koala/png/07.png
3,ys2/05_field/koala/png/08.png
3,ys2/05_field/koala/png/01.png
3,ys2/05_field/koala/png/02.png
3,ys2/05_field/koala/png/03.png
3,ys2/05_field/koala/png/04.png
3,ys2/05_field/koala/png/05.png
3,ys2/05_field/koala/png/06.png
3,ys2/05_field/koala/png/07.png
3,ys2/05_field/koala/png/08.png
3,ys2/05_field/koala/png/09.png
3,ys2/05_field/koala/png/10.png
3,ys2/05_field/koala/png/11.png
3,ys2/05_field/koala/png/12.png
3,ys2/05_field/koala/png/13.png
3,ys2/05_field/koala/png/14.png
3,ys2/05_field/koala/png/15.png
3,ys2/05_field/koala/png/16.png
3,ys2/05_field/koala/png/17.png
3,ys2/05_field/koala/png/18.png
3,ys2/05_field/koala/png/19.png
3,ys2/05_field/koala/png/20.png
3,ys2/05_field/koala/png/21.png
3,ys2/05_field/koala/png/22.png
3,ys2/05_field/koala/png/23.png
3,ys2/05_field/koala/png/24.png
3,ys2/05_field/koala/png/25.png
3,ys2/05_field/koala/png/26.png
3,ys2/05_field/koala/png/27.png
3,ys2/05_field/koala/png/28.png
3,ys2/05_field/koala/png/29.png
3,ys2/05_field/koala/png/30.png
1 3 ys2/05_field/koala/png/01.png
2 3 ys2/05_field/koala/png/02.png
3 3 ys2/05_field/koala/png/03.png
4 3 ys2/05_field/koala/png/04.png
5 3 ys2/05_field/koala/png/05.png
6 3 ys2/05_field/koala/png/06.png
7 3 ys2/05_field/koala/png/07.png
8 3 ys2/05_field/koala/png/08.png
9 3 ys2/05_field/koala/png/01.png
10 3 ys2/05_field/koala/png/02.png
11 3 ys2/05_field/koala/png/03.png
12 3 ys2/05_field/koala/png/04.png
13 3 ys2/05_field/koala/png/05.png
14 3 ys2/05_field/koala/png/06.png
15 3 ys2/05_field/koala/png/07.png
16 3 ys2/05_field/koala/png/08.png
17 3 ys2/05_field/koala/png/01.png
18 3 ys2/05_field/koala/png/02.png
19 3 ys2/05_field/koala/png/03.png
20 3 ys2/05_field/koala/png/04.png
21 3 ys2/05_field/koala/png/05.png
22 3 ys2/05_field/koala/png/06.png
23 3 ys2/05_field/koala/png/07.png
24 3 ys2/05_field/koala/png/08.png
25 3 ys2/05_field/koala/png/01.png
26 3 ys2/05_field/koala/png/02.png
27 3 ys2/05_field/koala/png/03.png
28 3 ys2/05_field/koala/png/04.png
29 3 ys2/05_field/koala/png/05.png
30 3 ys2/05_field/koala/png/06.png
31 3 ys2/05_field/koala/png/07.png
32 3 ys2/05_field/koala/png/08.png
33 3 ys2/05_field/koala/png/01.png
34 3 ys2/05_field/koala/png/02.png
35 3 ys2/05_field/koala/png/03.png
36 3 ys2/05_field/koala/png/04.png
37 3 ys2/05_field/koala/png/05.png
38 3 ys2/05_field/koala/png/06.png
39 3 ys2/05_field/koala/png/07.png
40 3 ys2/05_field/koala/png/08.png
41 3 ys2/05_field/koala/png/09.png
42 3 ys2/05_field/koala/png/10.png
43 3 ys2/05_field/koala/png/11.png
44 3 ys2/05_field/koala/png/12.png
45 3 ys2/05_field/koala/png/13.png
46 3 ys2/05_field/koala/png/14.png
47 3 ys2/05_field/koala/png/15.png
48 3 ys2/05_field/koala/png/16.png
49 3 ys2/05_field/koala/png/17.png
50 3 ys2/05_field/koala/png/18.png
51 3 ys2/05_field/koala/png/19.png
52 3 ys2/05_field/koala/png/20.png
53 3 ys2/05_field/koala/png/21.png
54 3 ys2/05_field/koala/png/22.png
55 3 ys2/05_field/koala/png/23.png
56 3 ys2/05_field/koala/png/24.png
57 3 ys2/05_field/koala/png/25.png
58 3 ys2/05_field/koala/png/26.png
59 3 ys2/05_field/koala/png/27.png
60 3 ys2/05_field/koala/png/28.png
61 3 ys2/05_field/koala/png/29.png
62 3 ys2/05_field/koala/png/30.png

View file

@ -1,38 +0,0 @@
50,ys2/06_falling_star/koala/png/01.png
5,ys2/06_falling_star/koala/png/02.png
5,ys2/06_falling_star/koala/png/03.png
5,ys2/06_falling_star/koala/png/04.png
5,ys2/06_falling_star/koala/png/05.png
5,ys2/06_falling_star/koala/png/06.png
5,ys2/06_falling_star/koala/png/07.png
5,ys2/06_falling_star/koala/png/08.png
5,ys2/06_falling_star/koala/png/09.png
5,ys2/06_falling_star/koala/png/10.png
5,ys2/06_falling_star/koala/png/11.png
5,ys2/06_falling_star/koala/png/12.png
5,ys2/06_falling_star/koala/png/13.png
5,ys2/06_falling_star/koala/png/14.png
5,ys2/06_falling_star/koala/png/15.png
5,ys2/06_falling_star/koala/png/16.png
5,ys2/06_falling_star/koala/png/17.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
5,ys2/06_falling_star/koala/png/18.png
5,ys2/06_falling_star/koala/png/19.png
1 50 ys2/06_falling_star/koala/png/01.png
2 5 ys2/06_falling_star/koala/png/02.png
3 5 ys2/06_falling_star/koala/png/03.png
4 5 ys2/06_falling_star/koala/png/04.png
5 5 ys2/06_falling_star/koala/png/05.png
6 5 ys2/06_falling_star/koala/png/06.png
7 5 ys2/06_falling_star/koala/png/07.png
8 5 ys2/06_falling_star/koala/png/08.png
9 5 ys2/06_falling_star/koala/png/09.png
10 5 ys2/06_falling_star/koala/png/10.png
11 5 ys2/06_falling_star/koala/png/11.png
12 5 ys2/06_falling_star/koala/png/12.png
13 5 ys2/06_falling_star/koala/png/13.png
14 5 ys2/06_falling_star/koala/png/14.png
15 5 ys2/06_falling_star/koala/png/15.png
16 5 ys2/06_falling_star/koala/png/16.png
17 5 ys2/06_falling_star/koala/png/17.png
18 5 ys2/06_falling_star/koala/png/18.png
19 5 ys2/06_falling_star/koala/png/19.png
20 5 ys2/06_falling_star/koala/png/18.png
21 5 ys2/06_falling_star/koala/png/19.png
22 5 ys2/06_falling_star/koala/png/18.png
23 5 ys2/06_falling_star/koala/png/19.png
24 5 ys2/06_falling_star/koala/png/18.png
25 5 ys2/06_falling_star/koala/png/19.png
26 5 ys2/06_falling_star/koala/png/18.png
27 5 ys2/06_falling_star/koala/png/19.png
28 5 ys2/06_falling_star/koala/png/18.png
29 5 ys2/06_falling_star/koala/png/19.png
30 5 ys2/06_falling_star/koala/png/18.png
31 5 ys2/06_falling_star/koala/png/19.png

View file

@ -1,66 +0,0 @@
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
50,ys2/11_lilia_final/koala/png/01.png
20,ys2/11_lilia_final/koala/png/04.png
3,ys2/11_lilia_final/koala/png/05.png
3,ys2/11_lilia_final/koala/png/06.png
3,ys2/11_lilia_final/koala/png/07.png
3,ys2/11_lilia_final/koala/png/06.png
3,ys2/11_lilia_final/koala/png/05.png
3,ys2/11_lilia_final/koala/png/04.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
3,ys2/11_lilia_final/koala/png/08.png
3,ys2/11_lilia_final/koala/png/09.png
3,ys2/11_lilia_final/koala/png/10.png
3,ys2/11_lilia_final/koala/png/11.png
3,ys2/11_lilia_final/koala/png/10.png
3,ys2/11_lilia_final/koala/png/09.png
3,ys2/11_lilia_final/koala/png/08.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/01.png
7,ys2/11_lilia_final/koala/png/02.png
7,ys2/11_lilia_final/koala/png/03.png
7,ys2/11_lilia_final/koala/png/02.png
50,ys2/11_lilia_final/koala/png/01.png
3,ys2/11_lilia_final/koala/png/12.png
3,ys2/11_lilia_final/koala/png/13.png
3,ys2/11_lilia_final/koala/png/14.png
3,ys2/11_lilia_final/koala/png/15.png
200,ys2/11_lilia_final/koala/png/16.png
1 7 ys2/11_lilia_final/koala/png/01.png
2 7 ys2/11_lilia_final/koala/png/02.png
3 7 ys2/11_lilia_final/koala/png/03.png
4 7 ys2/11_lilia_final/koala/png/02.png
5 7 ys2/11_lilia_final/koala/png/01.png
6 7 ys2/11_lilia_final/koala/png/02.png
7 7 ys2/11_lilia_final/koala/png/03.png
8 7 ys2/11_lilia_final/koala/png/02.png
9 7 ys2/11_lilia_final/koala/png/01.png
10 7 ys2/11_lilia_final/koala/png/02.png
11 7 ys2/11_lilia_final/koala/png/03.png
12 7 ys2/11_lilia_final/koala/png/02.png
13 7 ys2/11_lilia_final/koala/png/01.png
14 7 ys2/11_lilia_final/koala/png/02.png
15 7 ys2/11_lilia_final/koala/png/03.png
16 7 ys2/11_lilia_final/koala/png/02.png
17 50 ys2/11_lilia_final/koala/png/01.png
18 20 ys2/11_lilia_final/koala/png/04.png
19 3 ys2/11_lilia_final/koala/png/05.png
20 3 ys2/11_lilia_final/koala/png/06.png
21 3 ys2/11_lilia_final/koala/png/07.png
22 3 ys2/11_lilia_final/koala/png/06.png
23 3 ys2/11_lilia_final/koala/png/05.png
24 3 ys2/11_lilia_final/koala/png/04.png
25 7 ys2/11_lilia_final/koala/png/01.png
26 7 ys2/11_lilia_final/koala/png/02.png
27 7 ys2/11_lilia_final/koala/png/03.png
28 7 ys2/11_lilia_final/koala/png/02.png
29 7 ys2/11_lilia_final/koala/png/01.png
30 7 ys2/11_lilia_final/koala/png/02.png
31 7 ys2/11_lilia_final/koala/png/03.png
32 7 ys2/11_lilia_final/koala/png/02.png
33 7 ys2/11_lilia_final/koala/png/01.png
34 7 ys2/11_lilia_final/koala/png/02.png
35 7 ys2/11_lilia_final/koala/png/03.png
36 7 ys2/11_lilia_final/koala/png/02.png
37 3 ys2/11_lilia_final/koala/png/08.png
38 3 ys2/11_lilia_final/koala/png/09.png
39 3 ys2/11_lilia_final/koala/png/10.png
40 3 ys2/11_lilia_final/koala/png/11.png
41 3 ys2/11_lilia_final/koala/png/10.png
42 3 ys2/11_lilia_final/koala/png/09.png
43 3 ys2/11_lilia_final/koala/png/08.png
44 7 ys2/11_lilia_final/koala/png/01.png
45 7 ys2/11_lilia_final/koala/png/02.png
46 7 ys2/11_lilia_final/koala/png/03.png
47 7 ys2/11_lilia_final/koala/png/02.png
48 7 ys2/11_lilia_final/koala/png/01.png
49 7 ys2/11_lilia_final/koala/png/02.png
50 7 ys2/11_lilia_final/koala/png/03.png
51 7 ys2/11_lilia_final/koala/png/02.png
52 7 ys2/11_lilia_final/koala/png/01.png
53 7 ys2/11_lilia_final/koala/png/02.png
54 7 ys2/11_lilia_final/koala/png/03.png
55 7 ys2/11_lilia_final/koala/png/02.png
56 50 ys2/11_lilia_final/koala/png/01.png
57 3 ys2/11_lilia_final/koala/png/12.png
58 3 ys2/11_lilia_final/koala/png/13.png
59 3 ys2/11_lilia_final/koala/png/14.png
60 3 ys2/11_lilia_final/koala/png/15.png
61 200 ys2/11_lilia_final/koala/png/16.png

View file

@ -1,9 +0,0 @@
50,ys2/07_lilia/lilia1.png
4,ys2/07_lilia/lilia2.png
4,ys2/07_lilia/lilia3.png
4,ys2/07_lilia/lilia4.png
4,ys2/07_lilia/lilia5.png
4,ys2/07_lilia/lilia6.png
4,ys2/07_lilia/lilia7.png
4,ys2/07_lilia/lilia8.png
150,ys2/07_lilia/lilia9.png
1 50 ys2/07_lilia/lilia1.png
2 4 ys2/07_lilia/lilia2.png
3 4 ys2/07_lilia/lilia3.png
4 4 ys2/07_lilia/lilia4.png
5 4 ys2/07_lilia/lilia5.png
6 4 ys2/07_lilia/lilia6.png
7 4 ys2/07_lilia/lilia7.png
8 4 ys2/07_lilia/lilia8.png
9 150 ys2/07_lilia/lilia9.png

View file

@ -1,687 +0,0 @@
# PNG2PRG 1.12 by burg
Png2prg converts a 320x200 image (png/gif/jpeg) to a c64 hires or
multicolor bitmap, charset, petscii, ecm or sprites prg. It will find the best
matching palette and background/bitpair-colors automatically, no need to modify
your source images or configure a palette.
Vice screenshots with default borders (384x272) are automatically cropped.
Vice's main screen offset is at x=32, y=35.
Quite a few people (and possibly tools too) use the incorrect 32,36 offset.
Use the -alt-offset or -ao flag to use 32,36 as offset.
Images in sprite dimensions will be converted to sprites.
The resulting .prg includes the 2-byte start address and optional displayer.
The displayers can optionally play a .sid tune.
This tool can be used in all buildchains on all common platforms.
## What Is New
Png2prg 1.12 introduces animation.csv support for custom delays per frame.
See 'Animation csv' below for details.
The -no-loop flag causes animations to only display once.
This release contains an important bugfix related to mixedcharsets,
where in some cases, png2prg would require more unique chars than necessary.
There were more issues with png2prg 1.10, which were hotfixed in 1.10.1.
It is best to delete any 1.10 version and upgrade to 1.12.
ECM conversion has been improved, now png2prg also searches for potential
char reduction by searching for invertable characters.
Trident added [devcontainer files](https://github.com/staD020/png2prg/commit/6cb6c48a2804fa5210cf704e0af4cff3313398fe) for setting up a Docker
development environment to compile png2prg directly from within VSCode.
See 'Changes for version 1.12' below for more features and details.
## What it is *not*
Png2prg is not a tool to wire fullcolor images. It needs input images to
already be compliant with c64 color and size restrictions.
In verbose mode (-v) it outputs locations of color clashes, if any.
If you do need to wire fullcolor images, check out Youth's [Retropixels](https://www.micheldebree.nl/retropixels/).
## Supported Graphics Modes
koala: multicolor bitmap (max 4 colors per char)
hires: singlecolor bitmap (max 2 colors per char)
mixedcharset: multicolor charset (max 4 colors per char (fixed bgcol, d022, d023))
mccharset: multicolor charset (max 4 colors)
sccharset: singlecolor charset (max 2 colors per char (fixed bgcol))
petscii: singlecolor rom charset (max 2 colors per char (fixed bgcol))
ecm: singlecolor charset (max 2 colors per char (4 fixed bgcolors), max 64 chars)
mcsprites: multicolor sprites (max 4 colors)
scsprites: singlecolor sprites (max 2 colors)
mcibitmap: 320x200 multicolor interlace bitmap (max 4 colors per char/frame)
Png2prg is mostly able to autodetect the correct graphics mode, but you can
also force a specific graphics mode with the -mode flag:
./png2prg -m koala image.png
## Koala or Hires Bitmap
Bitmap: $2000 - $3f3f
Screen: $3f40 - $4327
D020: $4328 (singlecolor only)
D800: $4328 - $470f (multicolor only)
D021: $4710 (multicolor only, low-nibble)
D020: $4710 (multicolor only, high-nibble)
## Multicolor Interlace Bitmap
You can supply one 320x200 multicolor image with max 4 colors per 8x8 pixel
char per frame of which at least 2 are shared (the D021 and D800 colors).
Or supply both frames in regular koala specs (-interlace flag required).
When making screenshots in vice, please disable the d016 pixel shift manually.
./png2prg -i testdata/madonna/frame_0.png testdata/madonna/frame_1.png
### Drazlace (shared screenram and colorram for both frames)
./png2prg testdata/madonna/cjam_pure_madonna.png
D800: $5800 - $5be7
Screen: $5c00 - $5fe7
Bitmap1: $6000 - $7f3f
D021: $7f40 (low-nibble)
D020: $7f40 (high-nibble)
D016Offset: $7f42
Bitmap2: $8000 - $9f3f
### Multicolor Interlace (shared colorram, true paint .mci format)
./png2prg -i -d016 1 testdata/mcinterlace/parriot?.png
Screen1: $9c00 - $9fe7
D021: $9fe8 (low-nibble)
D020: $9fe8 (high-nibble)
D016Offset: $9fe9
Bitmap1: $a000 - $bf3f
Bitmap2: $c000 - $df3f
Screen2: $e000 - $e3e7
D800: $e400 - $e7e7
## Singlecolor, PETSCII or ECM Charset (individual d800 colors)
By default charsets are packed, they only contain unique characters.
If you do not want charpacking, eg for a 1x1 charset, please use -no-pack.
With ECM -bitpair-colors can be used to force d021-d024 colors.
NB: individual d800 colors are not supported with -no-pack.
./png2prg -m sccharset testdata/hirescharset/ohno_logo.png
./png2prg -m petscii testdata/petscii/hein_hibiscus.png
./png2prg -m ecm testdata/ecm/xpardey.png
./png2prg -m ecm testdata/ecm/shampoo.png
./png2prg -m ecm -bpc 2,7,14,0 testdata/ecm/orion.png
Charset: $2000-$27ff (omitted for petscii)
Screen: $2800-$2be7
D800: $2c00-$2fe7
D020: $2fe8
D021: $2fe9
D022: $2fea (ecm only)
D023: $2feb (ecm only)
D024: $2fec (ecm only)
## Mixed Multi/Singlecolor Charset (individual d800 colors)
Png2prg tries to figure out the right -bitpair-colors and auto-corrects
where it can, but there still are edge-cases like the ones below.
If an impossible color is found, an error will be displayed.
Swap some -bpc colors around and retry.
There can also be cases where manual -bpc colors can influence char-count or
packed size.
You may want to add the -brute-force flag so most color options will be tried.
The best packed result wins, not necessarily the version with the least amount
of chars.
./png2prg -m mixedcharset testdata/mixedcharset/hein_neo.png
./png2prg -m mixedcharset testdata/mixedcharset/huntress.gif
./png2prg -m mixedcharset -bpc 3 testdata/mixedcharset/shine.png
./png2prg -m mixedcharset -bpc 0 testdata/mixedcharset/charsetcompo.png
Charset: $2000-$27ff
Screen: $2800-$2be7
D800: $2c00-$2fe7
D020: $2fe8
D021: $2fe9
D022: $2fea
D023: $2feb
## Single or Multicolor Sprites
If the source image size is a multiple of a 24x21 pixel sprite,
the image is considered to contain sprites.
The image will be converted from left to right, top to bottom.
./png2prg image.png
./png2prg -m scsprites image.png
./png2prg -m mcsprites image.png
Sprite 1: $2000-$203f
Sprite 2: $2040-$207f
...
## Bitpair Colors
By default, png2prg guesses bitpair colors by itself. In most cases you
don't need to configure anything. It will provide a mostly normalized image
which should yield good pack results, but your miles may vary.
To give you more control, you can force/prefer a specific bitpair
color-order. Use c64 colors, so 0 for black, 1 for white, 2 for red, etc.
The following example will force background color 0 for bitpair 00 and
prefer colors 6,14,3 for bitpairs 01,10,11:
./png2prg -bitpair-colors 0,6,14,3 image.png
It's also possible to explicitly skip certain bitpair preferences with -1:
./png2prg -bitpair-colors 0,-1,-1,3 image.png
## Animations
When multiple files are added, they are treated as animation frames.
You can also supply an animated .gif.
## Sprite Animation
Each frame will be concatenated in the output .prg.
## Bitmap Animation (only koala and hires)
Note that png2prg uses a rather simple generic diff approach, where small
changes frame by frame work well. Trying to change large areas at once
is not advised.
Use the -no-fade flag if you run out of memory.
The first image will be exported with all framedata appended.
Koala animation frames start at $4711, hires at $4329.
The frame files are following this format.
Each frame consists of 1 or more chunks. A chunk looks like this:
.byte $03 // number of chars in this chunk
// $00 marks end of frame
// $ff marks end of all frames
.word bitmap // bitmap address of this chunk (the high byte is <$20)
.word screen // screenram address (the high byte is <$04)
For each char in this chunk:
.byte 0,31,15,7,8,34,0,128 // pixels
.byte $64 // screenram colors
.byte $01 // colorram color (koala only)
... // next char(s)
... // next chunks
.byte 0 // end of frame
.byte 6 // wait for 6 frames
... // next frame(s)
.byte $ff // end of all frames
## PETSCII and Charset Animation
Only petscii and sccharset modes support different background and
bordercolors per frame.
All chars used in all frames must fit into a single 256 char charset.
Each frame consists of 1 or more chunks. A chunk looks like this:
.byte $xy // $y = bgcol, $x = bordercol (only for petscii/sccharset)
.byte $03 // number of chars in this chunk
// $00 marks end of frame
// $ff marks end of all frames
.word screen // screenram address (the high byte is <$04)
For each char in this chunk:
.byte $03 // character
.byte $01 // colorram color
... // next char(s)
... // next chunks
.byte 0 // end of frame
.byte 6 // wait for 6 frames
... // next frame(s)
.byte $ff // end of all frames
## Animation csv
Since version 1.12 animation.csv support has been added to give more
freedom to users wanting to create animation displayers.
It is now possible to use a custom frame-delay per frame.
The csv should contain rows of frame delay value and image, where the
delay can be any value from 0 till 255. The highest delay is a little
over 5 seconds on PAL systems.
If you want longer delays, just copy a row.
10,frame0.png
50,frame1.png
10,frame2.png
Examples can be found here: [Évoluer by The Sarge](https://github.com/staD020/png2prg/blob/master/testdata/evoluer/evoluer.csv) and [Rose by Sander](https://github.com/staD020/png2prg/blob/master/testdata/petscii/anim/rose.csv)
png2prg -d -o evoluer.prg -sid testdata/evoluer/Evoluer.sid testdata/evoluer/evoluer.csv
png2prg -d -o rose.prg testdata/petscii/anim/rose.csv
## Displayer
The -d or -display flag will link displayer code infront of the picture.
By default it will also crunch the resulting file with Antonio Savona's
[TSCrunch](https://github.com/tonysavon/TSCrunch/) with a couple of changes in my own [fork](https://github.com/staD020/TSCrunch/).
All displayers except for sprites support adding a .sid.
Multispeed sids are supported as long as the .sid initializes the CIA timers
correctly.
You can use sids located from $0e00-$1fff or $e000+ in the displayers.
More areas may be free depending on graphics type.
A memory usage map is shown on error and in -vv (very verbose) mode.
If needed, you can relocate most sids using lft's [sidreloc](http://www.linusakesson.net/software/sidreloc/index.php).
Zeropages $08-$0f are used in the animation displayers, while none are used
in hires/koala displayers, increasing sid compatibility.
## Brute Force Mode and Pack Optimization
By default png2prg 1.8 does a pretty good job at optimizing the resulting prg
for crunchers and packers. It is not enough to beat [SPOT 1.3](https://csdb.dk/release/?id=242492).
The optimization techniques used by png2prg are also responsible for cleaning
up the bitmap, making it ideal for animations and color effects.
### -brute-force (-bf)
Iterates are over many -bitpair-colors permutations automatically, packs
with the built in TSCrunch and selects the shortest.
./png2prg -bf image.png
The -brute-force mode can be used in combination with additional flags.
### -no-bitpair-counters (-nbc)
Disable counting of bitpairs per color to guess a bitpair for a color.
./png2prg -bf -nbc image.png
### -no-prev-char-colors (-npcc)
Disable lookback to previous char's charcolors to guess a bitpair for a color.
./png2prg -bf -npcc image.png
Since TSCrunch is optimized for speed, packing with Dali can give varying
results. This is also the reason for not including these options in the
brute force permutations automatically.
## Benchmark
The [koala otpimizing thread](https://csdb.dk/forums/?roomid=13&topicid=38311&showallposts=1) on csdb has gained some interest in the scene.
Since Sparta released [SPOT](https://csdb.dk/release/?id=242492) it has been the best optimizer available.
Png2prg 1.8 has improved optimization techniques but requires -brute-force
mode to beat SPOT 1.3. Manual flags can optimize even better in some cases.
All koalas are packed with [Dali 0.3.2](https://csdb.dk/release/?id=223584).
+---------+--------+----------+------------+--------+
| spot1.3 | p2p1.8 | p2p1.8bf | p2p1.8best | p2p1.6 |
+---------+--------+----------+------------+--------+
| 7332 | 7372 | 7332 | 7324 | 7546 | Untitled/Floris
| 5136 | 5190 | 5149 | bf | 5464 | Song of the Sunset/Mermaid
| 5968 | 5998 | 5963 | bf | 6155 | Short Circuit/Karen Davies
| 3618 | 3647 | 3616 | 3589 | 3830 | Portrait L+D/Sander
| 5094 | 5080 | 5083 | 5078 | 5320 | Weee/Mermaid
| 7497 | 7471 | 7458 | bf | 7612 | Deadlock/Robin Levy
| 8068 | 8097 | 8046 | 8038 | 8227 | Room with a view/Veto
| 7445 | 7490 | 7432 | bf | 7582 | Vangelis/Talent
| 6759 | 6739 | 6737 | bf | 6963 | Temple of Tears/Hend
| 7859 | 7848 | 7839 | 7821 | 7998 | Thanos/JonEgg
| 4859 | 4849 | 4782 | bf | 4983 | Solar-Sonar/Leon
| 5640 | 5671 | 5613 | bf | 5869 | Cisco Heat/Alan Grier
| 6243 | 6286 | 6228 | bf | 6430 | Daylight/Sulevi
| 2850 | 2884 | 2848 | bf | 3092 | Yie Ar Kung Fu/Steve Wahid
| 6727 | 6721 | 6730 | 6711 | 6901 | Lee/The Sarge
| 7837 | 7828 | 7798 | bf | 7960 | Parrot/Mirage
| 4559 | 4536 | 4494 | bf | 4821 | Dragon's Lair
| 4275 | 4324 | 4292 | 4284 | 4519 | Scorpion/SIR'88
| 5562 | 5558 | 5506 | bf | 5668 | Hatching/Joe
+---------+--------+----------+------------+--------+
| 113328 | 113589 | 112946 | 112853 | 116940 | Total
+---------+--------+----------+------------+--------+
- p2p1.8: default png2prg result w/o options
- p2p1.8bf: -brute-force mode
- p2p1.8best: hand-picked -bitpair-colors, or bruteforced with -npcc and/or -nbc flags
- p2p1.6: default png2prg 1.6 result w/o options
## Examples
This release contains examples with all assets included for you to test with.
Also included are the assets of [Évoluer](https://csdb.dk/release/?id=220170) by The Sarge and Flotsam.
A larger set of testdata can be found in the [github repo](https://github.com/staD020/png2prg/tree/master/testdata).
## Install from source
Png2prg was built on Linux, building on Mac should work out of the box.
For Windows, try out Windows Subsystem Linux (WSL), works pretty well.
However, natively building on Windows should be easy enough, look at
Compiling without Make below.
The compiled displayer prgs are included in the repo to ease building
and importing png2prg as a library. Java is only required to build
the displayers with KickAssembler (included in the repo).
But first [install Go 1.20 or higher](https://go.dev/dl/).
### Simple install
go install -v github.com/staD020/png2prg@master
### Compiling with Make (recommended)
git clone https://github.com/staD020/png2prg.git
cd png2prg
make -j
Build for all common targets:
make all -j
### Compiling without Make
go build ./cmd/png2prg
## Install and use as library
In your Go project's path, go get the library:
go get github.com/staD020/png2prg
In essence png2prg implements the [io.WriterTo](https://pkg.go.dev/io#WriterTo) interface.
Typical usage could look like below. A more complex example can be found
in the [source](https://github.com/staD020/png2prg/blob/master/cmd/png2prg/main.go) of the cli tool.
```go
import (
"fmt"
"io"
"github.com/staD020/png2prg"
)
func convertPNG(w io.Writer, png io.Reader) (int64, error) {
p, err := png2prg.New(png2prg.Options{}, png)
if err != nil {
return 0, fmt.Errorf("png2prg.New failed: %w", err)
}
return p.WriteTo(w)
}
```
## Changes for version 1.12
- Bugfix: Fix regression with handling mixedcharsets that was increasing
char usage count in some cases (thanks Shine).
- Feature: Press CBM key in petscii (animation) displayers to switch
charset case.
- Feature: Add -brute-force support to all charset modes.
- Feature: Improve ECM handling by searching for invertable characters to
reduce char usage.
- Feature: Add animation.csv support to allow for custom delays per frame.
- Feature: Add -no-loop support for animations (thanks jab).
- Feature: Add -no-fade support to other displayers (thanks Shine).
- Feature: Disable repeating color optimization for koala & hires anims.
This reduces animation size & runtime processing at the cost of initial
image optimization.
- Feature: Allow sids to use all memory below $0400 (thanks kbs).
- Feature: VSCode Docker build support for a devcontainer was added by
Trident (thanks!).
- Experimental: Add secondary+tertiary preferred bitpair colors with -bpc2
and -bpc3 (thanks Fungus).
## Changes for version 1.10.1
- Play NTSC .sid tunes at the right speed (thanks Acrouzet).
- Bugfix: palette detection must detect all hires colors, also on odd pixels.
- Bugfix: dont look at border area to determine hires pixels.
- Bugfix: fix -frame-delay for charset anim displayers.
## Changes for version 1.10
- Add gfxmode to .sym files and display in terminal output (thanks Spider-J).
- Add petscii animation support.
- Add background and bordercolor to each petscii or sccharset animation frame.
- Add -no-anim flag disable sc/mccharset animations and store frames as separate
screens.
- Add -no-fade flag for koala, hires, petscii and sccharset animation
displayers, this frees up a lot of RAM for animation data and sid.
- Code refactor, standardizing color and bitpair code, separated palettes in
palettes.yaml and more.
- Bugfix: repair -force-border-color.
- Bugfix: handle blank ECM images as well as ECM images using few bg colors
(thanks Brush).
- Typofix: fix simple install docs (thanks IcePic).
- Added another weird palette (thanks Fungus).
## Changes for version 1.8
- Improve crunchiness by re-using the previous char's bitpair-colors.
- Add -no-prev-char-colors flag to disable re-use of the previous char's
bitpair-colors, in some cases this optimization causes worse pack results.
- Add -brute-force mode to find bitpair color combinations with better
crunchiness. Burns some CPU for a couple seconds.
- Add -no-bitpair-counters flag to disable using bitpair counters per color
for color guessing.
- Added multi-frame support for mccharset, where all frames use the same
charset.
- Add support for any centered fullscreen image resolution bigger than
320x200 and other than 384x272.
- Add support for Marq's PETSCII tool .png resolution 352x232 (thanks jab).
- Bugfix: docs fixes related to installation from source (thanks jab).
- Bugfix: hide findECMColors log behind -verbose mode (thanks jab).
- Docs fix: add a bit more info for sprites (thanks fungus).
## Changes for version 1.6
- Added -mode mixedcharset for mixed multicolor/singlecolor and
individual d800 colors per char.
- Modified -mode sccharset to use individual d800 colors per char.
- Added -mode petscii.
- Added -mode ecm.
- Added -no-pack-empty to skip packing empty chars to filled chars to re-use
for different colors. Only for mixed and ecm charsets.
- Added -force-pack-empty for singlecolor and multicolor charset, may save
a char, but usually pack-ratio is worse due to increased d800 color usage.
- Improved auto-detection of graphics modes, including various charset modes.
- Added sid support to charset displayers.
- Added fullscreen fade in/out to charset displayers.
- Bug Fix: -force-border-color for singlecolor charset (thanks Raistlin).
- Bug Fix: do not write empty .prg file on error.
- Standardized d02x colors in output.prg for charset modes.
## Changes for version 1.4
- Support for even more far-out palette ranges (thanks Perplex).
- Now throws an error if the palette can't be detected properly, this should
never happen. Please let me know if you run into this error.
- Separated library and cli tool.
- Library supports the standard [io.Reader](https://pkg.go.dev/io#Reader) and [io.Writer](https://pkg.go.dev/io#Writer) interfaces.
- Patched [TSCrunch](https://github.com/staD020/TSCrunch/) further to increase crunch speed and use less memory.
- Added -parallel and -worker flags to treat each input file as standalone
and convert all files in parallel. Gifs with multiple frames are still
treated as animations.
- Stop relying on .gif filename extension, detect it.
- Add -alt-offset flag to force screenshot offset 32, 36), used by a few
graphicians. Though, please switch to the correct 32, 35.
- Add -symbols flag to write symbols to a .sym file.
- Interlace support for mcibitmap (drazlace and truepaint).
- Bugfix: allow blank images input (thanks Spider-J).
- Allow colors not present in the image as -bitpair-colors (thanks Map).
## Changes for version 1.2
- Added displayer for koala animations.
- Added displayer for hires animations.
- Added -frame-delay flag for animation displayers.
- Added -wait-seconds flag for animation displayers.
- Fixed bug in koala/hires displayers not allowing sids to overlap $c000-$c7ff.
- Expanding wildcards: using pic??.png or pic*.png now also works on Windows.
- Set bank via $dd00 in displayers.
## Changes for version 1.0
- Added fullscreen fade in/out to koala and hires displayers.
- Added optional .sid support for koala and hires displayers.
- Added optional crunching for all displayers using TSCrunch.
## Credits
Png2prg was created by Burglar, using the following third-party libraries:
[TSCrunch 1.3](https://github.com/tonysavon/TSCrunch/) by Antonio Savona for optional crunching when exporting
an image with a displayer.
[Colfade Doc](https://csdb.dk/release/?id=132276) by Veto for the color fade tables used in the displayers.
[Kick Assembler](http://www.theweb.dk/KickAssembler/) by Slammer to compile the displayers.
[Go](https://go.dev/) by The Go Authors is the programming language used to create png2prg.
### Thanks to
Apollyon, Spider-J, Brush, The Sarge, Fungus, Jab, Shine, Raistlin, Perplex,
Map, Youth, IcePic, Sander, Guinea Pig, Krill, Christopher Jam, Sparta,
Acrouzet, Trident, Worrior1 and Antonio Savona.
## Options
```
-alt-offset
use alternate screenshot offset with x,y = 32,36
-ao
alt-offset
-bf
brute-force
-bitpair-colors string
prefer these colors in 2bit space, eg 0,6,14,3
-bpc string
bitpair-colors
-bpc2 string
secondary bitpair colors eg 0,2,10,7
-bpc3 string
tertiary bitpair colors eg 0,11,12,15
-brute-force
brute force bitpair-colors
-cpuprofile file
write cpu profile to file
-d display
-d016 int
d016offset (default 1)
-d016offset int
number of pixels to shift with d016 when using interlace (default 1)
-display
include displayer
-force-border-color int
force border color (default -1)
-force-pack-empty
optimize packing empty chars (only for sccharset)
-fpe
force-pack-empty
-frame-delay int
frames to wait before displaying next animation frame (default 6)
-h help
-help
help
-i interlace
-interlace
when you supply 2 frames, specify -interlace to treat the images as such
-m string
mode
-memprofile file
write memory profile to file (only in -parallel mode)
-mode string
force graphics mode to koala, hires, mixedcharset, sccharset, mccharset (4col), scsprites or mcsprites
-na
no-anim
-nbc
no-bitpair-counters
-nc
no-crunch
-nf
no-fade
-ng
no-guess
-nl
no-loop
-no-anim
disable charset animations and store frames as separate screens
-no-bitpair-counters
do not use c64color bitpar counters optimization
-no-crunch
do not TSCrunch displayer
-no-fade
do not use fade in/out and free up a lot of memory
-no-guess
do not guess preferred bitpair-colors
-no-loop
play animations only once
-no-pack
do not pack chars (only for sc/mc charset)
-no-pack-empty
do not optimize packing empty chars (only for mc/mixed/ecm charset)
-no-prev-char-colors
do not look at the previous char's bitpair-colors, in some cases this optimization causes worse pack results
-np
no-pack
-npcc
no-prev-char-colors
-npe
no-pack-empty
-o string
out
-out string
specify outfile.prg, by default it changes extension to .prg
-p parallel
-parallel
run number of workers in parallel for fast conversion, treat each image as a standalone, not to be used for animations, unless an anim.csv is used
-q quiet
-quiet
quiet, only display errors
-sid string
include .sid in displayer (see -help for free memory locations)
-sym
symbols
-symbols
export symbols to .sym
-targetdir string
specify targetdir
-td string
targetdir
-trd
has side effect of enforcing screenram bitpair colors in level area
-v verbose
-verbose
verbose output
-vv
very verbose, show memory usage map in most cases and implies -verbose
-w int
workers (default 12)
-wait-seconds int
seconds to wait before animation starts
-workers int
number of concurrent workers in -parallel or -brute-force mode (default 12)
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View file

@ -1,29 +0,0 @@
5,ys2/01_badguyz/koala/png/01.png
5,ys2/01_badguyz/koala/png/02.png
5,ys2/01_badguyz/koala/png/03.png
5,ys2/01_badguyz/koala/png/04.png
5,ys2/01_badguyz/koala/png/05.png
50,ys2/01_badguyz/koala/png/06.png
15,ys2/01_badguyz/koala/png/07.png
15,ys2/01_badguyz/koala/png/08.png
15,ys2/01_badguyz/koala/png/09.png
15,ys2/01_badguyz/koala/png/10.png
15,ys2/01_badguyz/koala/png/11.png
100,ys2/01_badguyz/koala/png/12.png
15,ys2/01_badguyz/koala/png/10.png
15,ys2/01_badguyz/koala/png/09.png
15,ys2/01_badguyz/koala/png/08.png
15,ys2/01_badguyz/koala/png/07.png
100,ys2/01_badguyz/koala/png/06.png
5,ys2/01_badguyz/koala/png/13.png
5,ys2/01_badguyz/koala/png/14.png
5,ys2/01_badguyz/koala/png/15.png
5,ys2/01_badguyz/koala/png/16.png
5,ys2/01_badguyz/koala/png/17.png
5,ys2/01_badguyz/koala/png/18.png
5,ys2/01_badguyz/koala/png/19.png
100,ys2/01_badguyz/koala/png/00.png
1 5 ys2/01_badguyz/koala/png/01.png
2 5 ys2/01_badguyz/koala/png/02.png
3 5 ys2/01_badguyz/koala/png/03.png
4 5 ys2/01_badguyz/koala/png/04.png
5 5 ys2/01_badguyz/koala/png/05.png
6 50 ys2/01_badguyz/koala/png/06.png
7 15 ys2/01_badguyz/koala/png/07.png
8 15 ys2/01_badguyz/koala/png/08.png
9 15 ys2/01_badguyz/koala/png/09.png
10 15 ys2/01_badguyz/koala/png/10.png
11 15 ys2/01_badguyz/koala/png/11.png
12 100 ys2/01_badguyz/koala/png/12.png
13 15 ys2/01_badguyz/koala/png/10.png
14 15 ys2/01_badguyz/koala/png/09.png
15 15 ys2/01_badguyz/koala/png/08.png
16 15 ys2/01_badguyz/koala/png/07.png
17 100 ys2/01_badguyz/koala/png/06.png
18 5 ys2/01_badguyz/koala/png/13.png
19 5 ys2/01_badguyz/koala/png/14.png
20 5 ys2/01_badguyz/koala/png/15.png
21 5 ys2/01_badguyz/koala/png/16.png
22 5 ys2/01_badguyz/koala/png/17.png
23 5 ys2/01_badguyz/koala/png/18.png
24 5 ys2/01_badguyz/koala/png/19.png
25 100 ys2/01_badguyz/koala/png/00.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Some files were not shown because too many files have changed in this diff Show more