#
# MSX SC2 importer
# A Multipaint internal script
#
# NYYRIKKI 2026
#

# Import palette (0=NO, 1=Yes)

F=0

LOAD

# Error checking

Z = LENGTH
Z=Z-7

IF Z<14336
	ALERT 1
	STOP
ENDIF
IF Z>16384
	ALERT 1
	STOP
ENDIF

# header

READ A
IF A<>$FE
	ALERT 1
	STOP
ENDIF
READ L
READ H
READ L
READ H
B=H*256
B=B+L
IF A>Z
	ALERT 1
	STOP
ENDIF
READ L
READ H

# For some reason working block of RAM in Multipaint
S=49152+1024

# Read tiles & positions

FOR I=0 TO $1AFF
	P=I+S
	READ A
	POKE P,A
NEXT I

# Skip

FOR I=$1B00 TO $1B7F
	READ A
NEXT I

# Read palette?

IF F=1
	A=256
	R=0
	G=0
	B=0

	FOR I=0 TO 15
		READ H
		READ L

		R=H&$70
		R=R/16
		G=L&$7
		B=H&$7

		P=R/2
		R=R*36
		R=R+P

		P=G/2
		G=G*36
		G=G+P	

		P=B/2
		B=B*36
		B=B+P	

		POKE A,R
		A=A+1
		POKE A,G
		A=A+1
		POKE A,B
		A=A+1
	NEXT I
ENDIF

# Skip palette?

IF F=0
	FOR I=$1B80 TO $1B9F
		READ A
	NEXT I
ENDIF

# Skip

FOR I=$1BA0 TO $1FFF
	READ A
NEXT I

# Draw tiles

FOR Y=0 TO 23
	FOR X=0 TO 31
		T=S+$1800+X+Y*32
		B=PEEK T
		J=Y&24
		B=B+J*32
		T=S+B*8
		FOR V=0 TO 7
			P=1024+X*8+Y*2048+V*256
			C=128
			#READ L
			L=PEEK T
			T=T+1
			FOR B=0 TO 7
				A=L&C				
				IF A=0
					POKE P,0
				ENDIF
				IF A<>0
					POKE P,1
				ENDIF
				P=P+1
				C=C/2
			NEXT B
		NEXT V
	NEXT X
NEXT Y

# Read colors

FOR I=0 TO $17FF
	P=I+S
	READ A
	POKE P,A
NEXT I

# Draw colors

FOR Y=0 TO 23
	FOR X=0 TO 31
		T=S+$1800+X+Y*32
		B=PEEK T
		K=Y&24
		B=B+K*32
		T=S+B*8
		D=65536+X+Y*256
		J=65536+X+Y*256+6144
		FOR V=0 TO 7
			B=T+V
			A=PEEK B
			#A=$F0
			H=A&$F0
			L=A&$0F
			H=H/16
			POKE D,H
			POKE J,L
			LET D=D+32
			LET J=J+32
		NEXT V
	NEXT X
NEXT Y

REFRESH
