;т√тюф сшЄь¤яр эр ¤ъЁрэ
MACRO SHOWBITMAPLINELAYER02_25 ;т√тюф яшъёхыхщ ab..ef..
ld b,lx
_=$
exx
ld c,(iy)
ld a,(bc)
ld l,(iy+4)
or (hl)
ld (de),a
set 5,d
ld c,(iy+16)
ld a,(bc)
ld l,(iy+20)
or (hl)
ld (de),a
res 5,d
inc de
exx
add iy,de ;32
djnz _
ENDM
MACRO SHOWBITMAPLINELAYER02_50 ;т√тюф яшъёхыхщ ab..ef..
ld b,lx
_=$
exx
ld c,(iy)
ld a,(bc)
ld l,(iy+2)
or (hl)
ld (de),a
set 5,d
ld c,(iy+8)
ld a,(bc)
ld l,(iy+10)
or (hl)
ld (de),a
res 5,d
inc de
exx
add iy,de ;16
djnz _
ENDM
MACRO SHOWBITMAPLINELAYER02_100 ;т√тюф яшъёхыхщ ab..ef..
;180t/4pix (с√ыю 202)
ld b,lx
_=$
exx
ld c,(iy)
ld a,(bc)
ld l,(iy+1)
or (hl)
ld (de),a
set 5,d
ld c,(iy+4)
ld a,(bc)
ld l,(iy+5)
or (hl)
ld (de),a
res 5,d
inc de
exx
add iy,de ;8
djnz _
ENDM
MACRO SHOWBITMAPLINELAYER02_200 ;т√тюф яшъёхыхщ ab..ef..
;106t/ (ўхЁхч ёЄхъ ьюцэю 86)
ld hx,lx
_=$
ld e,(hl)
inc hl
inc hl
ld a,(de)
ld (bc),a
set 5,b
ld e,(hl)
inc hl
inc hl
ld a,(de)
ld (bc),a
res 5,b
inc bc
dec hx
jp nz,_
ENDM
MACRO SHOWBITMAPLINELAYER02_400 ;т√тюф яшъёхыхщ ab..ef..
ld hx,lx
_=$
ld e,(hl)
inc hl
ld a,(de)
ld (bc),a
set 5,b
ld e,(hl)
inc hl
ld a,(de)
ld (bc),a
res 5,b
inc bc
dec hx
jp nz,_
ENDM
prbitmapbox
;hl=x т bitmap
;de=y т bitmap
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
push bc ;xy эр ¤ъЁрэх
push hl ;x т bitmap
call calcscr_from_xchr_y
pop bc ;x т bitmap
ld a,h
add a,+((scrbase16k-scrbase)/256)&#ff ;or scrbase16k/256 ;#c0
ld h,a
push hl ;scr (#c000+)
call calcbitmap_from_xy ;out: a=pg, hl=addr
pop de ;scr (#c000+)
ld bc,(curbitmapscale) ;1=25%, 2=50%, 3=100%, 4=200%, 5=400%
dec c
jp z,showbitmapbox_25_lines
dec c
jp z,showbitmapbox_50_lines
dec c
jp z,showbitmapbox_100_lines
dec c
jr z,showbitmapbox_200_lines
;dec c
;jp z,showbitmapbox_400_lines
;pop bc
;ret ;эшъюуфр
showbitmapbox_400_lines
ld c,hy
inc c
srl c
inc c
srl c
ld hy,c ;/4 ё юъЁєуыхэшхь ттхЁї
push iy
showbitmapbox_400_lines0
ld ly,4
showbitmapbox_400_lines1
push de ;scr (#c000+)
push af ;pg
call setpg32k
push hl ;bitmap addr
push de ;scr (#c000+)
push hl ;bitmap addr
ld a,(setpgs_scr_low)
SETPG16K
ld b,d
ld c,e
ld d,tpixelrecode/256
SHOWBITMAPLINELAYER02_400 ;lx=wid(chr)
pop hl ;bitmap addr
ld a,(setpgs_scr_high)
SETPG16K
pop bc ;scr (#c000+)
SHOWBITMAPLINELAYER02_400 ;lx=wid(chr)
pop hl ;bitmap addr
pop af ;pg
pop de ;scr (#c000+)
call showbitmapbox_scrlinedown
dec ly
jp nz,showbitmapbox_400_lines1
call showbitmapbox_linedown
dec hy
jp nz,showbitmapbox_400_lines0
pop iy
ld a,hy
add a,a
jr addaa_hya_popbc_showbitmaprightbox
;add a,a
;ld hy,a ;hy=hgt эр ¤ъЁрэх
;pop bc ;xy эр ¤ъЁрэх
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
;jp showbitmaprightbox ;фхырхЄ setpgs_scr
showbitmapbox_200_lines
ld c,hy
inc c
srl c
ld hy,c ;/2 ё юъЁєуыхэшхь ттхЁї
push iy
showbitmapbox_200_lines0
ld ly,2
showbitmapbox_200_lines1
push de ;scr (#c000+)
push af ;pg
call setpg32k
push hl ;bitmap addr
push de ;scr (#c000+)
push hl ;bitmap addr
ld a,(setpgs_scr_low)
SETPG16K
ld b,d
ld c,e
ld d,tpixelrecode/256
SHOWBITMAPLINELAYER02_200 ;lx=wid(chr)
pop hl ;bitmap addr
ld a,(setpgs_scr_high)
SETPG16K
pop bc ;scr (#c000+)
inc hl
SHOWBITMAPLINELAYER02_200 ;lx=wid(chr)
pop hl ;bitmap addr
pop af ;pg
pop de ;scr (#c000+)
call showbitmapbox_scrlinedown
dec ly
jp nz,showbitmapbox_200_lines1
call showbitmapbox_linedown
dec hy
jp nz,showbitmapbox_200_lines0
pop iy
ld a,hy
addaa_hya_popbc_showbitmaprightbox
add a,a
ld hy,a ;hy=hgt эр ¤ъЁрэх
pop bc ;xy эр ¤ъЁрэх
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
jp showbitmaprightbox ;фхырхЄ setpgs_scr
showbitmapbox_25_lines
push iy
exx
ld de,32
ld b,hy
ld l,b
showbitmapbox_25_lines0
exx
push de ;scr (#c000+)
push af ;pg
call setpg32k
push hl ;bitmap addr
push de ;scr (#c000+)
push hl ;bitmap addr
pop iy
ld bc,8
add hl,bc
push hl ;bitmap addr+2
ld b,tpixelrecodeLEFT/256
ld h,tpixelrecodeRIGHT/256
exx
ld a,(setpgs_scr_low)
SETPG16K
SHOWBITMAPLINELAYER02_25 ;lx=wid(chr)
pop iy ;bitmap addr+2
exx
pop de ;scr (#c000+)
exx
ld a,(setpgs_scr_high)
SETPG16K
SHOWBITMAPLINELAYER02_25 ;lx=wid(chr)
exx
pop hl ;bitmap addr
pop af ;pg
pop de ;scr (#c000+)
call showbitmapbox_scrlinedown
call showbitmapbox_linedown2
call showbitmapbox_linedown2
exx
dec l
jp nz,showbitmapbox_25_lines0
jp popiy_popbc_showbitmaprightbox
;pop iy ;hy=hgt эр ¤ъЁрэх
;pop bc ;xy эр ¤ъЁрэх
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
;jp showbitmaprightbox ;фхырхЄ setpgs_scr
showbitmapbox_50_lines
push iy
exx
ld de,16
ld b,hy
ld l,b
showbitmapbox_50_lines0
exx
push de ;scr (#c000+)
push af ;pg
call setpg32k
push hl ;bitmap addr
push de ;scr (#c000+)
push hl ;bitmap addr
pop iy
ld bc,4
add hl,bc
push hl ;bitmap addr+2
ld b,tpixelrecodeLEFT/256
ld h,tpixelrecodeRIGHT/256
exx
ld a,(setpgs_scr_low)
SETPG16K
SHOWBITMAPLINELAYER02_50 ;lx=wid(chr)
pop iy ;bitmap addr+2
exx
pop de ;scr (#c000+)
exx
ld a,(setpgs_scr_high)
SETPG16K
SHOWBITMAPLINELAYER02_50 ;lx=wid(chr)
exx
pop hl ;bitmap addr
pop af ;pg
pop de ;scr (#c000+)
call showbitmapbox_scrlinedown
call showbitmapbox_linedown2
exx
dec l
jp nz,showbitmapbox_50_lines0
jp popiy_popbc_showbitmaprightbox
;pop iy ;hy=hgt эр ¤ъЁрэх
;pop bc ;xy эр ¤ъЁрэх
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
;jp showbitmaprightbox ;фхырхЄ setpgs_scr
showbitmapbox_100_lines
;hy=hgt
;lx=wid(chr)
;hl=gfxaddr
;a=pg
push iy
exx
ld de,8
ld b,hy
ld l,b
showbitmapbox_100_lines0
exx
push de ;scr (#c000+)
push af ;pg
call setpg32k
push hl ;bitmap addr
push de ;scr (#c000+)
push hl ;bitmap addr
pop iy
inc hl
inc hl
push hl ;bitmap addr+2
ld b,tpixelrecodeLEFT/256
ld h,tpixelrecodeRIGHT/256
exx
ld a,(setpgs_scr_low)
SETPG16K
SHOWBITMAPLINELAYER02_100 ;lx=wid(chr)
pop iy ;bitmap addr+2
exx
pop de ;scr (#c000+)
exx
ld a,(setpgs_scr_high)
SETPG16K
SHOWBITMAPLINELAYER02_100 ;lx=wid(chr)
exx
pop hl ;bitmap addr
pop af ;pg
pop de ;scr (#c000+)
call showbitmapbox_scrlinedown
call showbitmapbox_linedown
exx
dec l
jp nz,showbitmapbox_100_lines0
popiy_popbc_showbitmaprightbox
pop iy ;hy=hgt эр ¤ъЁрэх
pop bc ;xy эр ¤ъЁрэх
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
;jp showbitmaprightbox ;фхырхЄ setpgs_scr
showbitmaprightbox
;c=x/8 эр ¤ъЁрэх
;b=y эр ¤ъЁрэх
;hy=hgt
;lx=wid(chr)
push bc ;xy
call setpgs_scr
ld hl,(curbitmapwid_edit)
ld de,(curbitmapxscroll)
or a
sbc hl,de
call scalebitmapcoords
pop bc ;xy
ld de,workzonewid8*8
or a
sbc hl,de ;т√ўыш °шЁшэє Ёрсюўхщ чюэ√
ret nc ;тэх ¤ъЁрэр
;hl=ьшэєё ьръёшьры№эр °шЁшэр сюъёр яю ¤Єющ x-ъююЁфшэрЄх (!=0)
push hl
add hl,de
ld de,workzonex8*8
add hl,de ;hl=x эр ¤ъЁрэх яЁртющ уЁрэшЎ√ сшЄь¤яр
ex de,hl ;de=x эр ¤ъЁрэх яЁртющ уЁрэшЎ√ сшЄь¤яр
pop hl ;hl=ьшэєё ьръёшьры№эр °шЁшэр сюъёр яю ¤Єющ x-ъююЁфшэрЄх
;xor a
;sub l
;ld l,a
;sbc a,h
;sub l
;ld h,a
call neghl ;hl=ьръёшьры№эр °шЁшэр сюъёр яю ¤Єющ x-ъююЁфшэрЄх (!=0)
push de ;x
ld de,7 ;ьръёшьєь ёЄюы№ъю яшъёхыхщ фюсрты хЄё фы юъЁєуыхэш
or a
sbc hl,de
add hl,de
jr c,$+3
ex de,hl ;тч ыш эршьхэ№°хх шч 7 ш ьръёшьры№эющ °шЁшэ√ сюъёр яю ¤Єющ x-ъююЁфшэрЄх
;hl=wid (яюёыхфэшщ яшъёхы№ = x+wid-1)
pop de ;x
ld a,c ;x/8
add a,lx ;wid(chr)
dec a
ld c,a ;x/8 ёрьюую яЁртюую юЄЁшёютрээюую срщЄр
push de
ld a,e
srl d
rra
srl d
rra
srl d
rra
pop de
cp c
ret nz ;эх Ёшёєхь эр яЁртющ уЁрэшЎх
call setpgshapes
ld c,b;30 ;c=y
;ld de,50 ;de=x
ld b,hy;10 ;b=hgt (яюёыхфэшщ яшъёхы№ = y+hgt-1)
ld lx,backcolor ;lx=color
jp shapes_prpixelbox
showbitmapbox_scrlinedown
ex de,hl
ld bc,40
add hl,bc
ex de,hl ;scr (#c000+)
ret
showbitmapbox_linedown2
call showbitmapbox_linedown
showbitmapbox_linedown
ld bc,(curbitmapwid_view)
add hl,bc
bit 6,h
res 6,h
ret z
inc a ;pg
ret