mirror of
https://github.com/Pecusx/Young-lumberjack.git
synced 2026-05-21 14:49:43 +02:00
467 lines
8.9 KiB
Plaintext
467 lines
8.9 KiB
Plaintext
// Player-Missile Fade
|
|
// v2.5 (26.07.2010 - 12.08.2013)
|
|
|
|
.ifndef pmg
|
|
pmg = $0000
|
|
eif
|
|
|
|
mapBits = pmg+$100
|
|
|
|
ert <mapBits<>0
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
.local fade_chars
|
|
|
|
color
|
|
|
|
cont ldx #0
|
|
ldy #0
|
|
|
|
ift FADECHR = 1
|
|
box #WIDTH #HEIGHT
|
|
eli FADECHR = 2
|
|
random
|
|
eli FADECHR = 3
|
|
left_right
|
|
eli FADECHR = 4
|
|
plasma
|
|
eif
|
|
|
|
wait lda:cmp:req cloc
|
|
rts
|
|
|
|
.proc color (.byte a) .reg
|
|
beq color0
|
|
|
|
color1 mva #{lda $ffff,y} plot.src
|
|
rts
|
|
|
|
color0 mva #{bit $ffff} plot.src
|
|
rts
|
|
.endp
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
ift FADECHR = 4
|
|
.proc plasma
|
|
|
|
loop mwa #hmap src
|
|
|
|
ldx #HEIGHT-1
|
|
lpy
|
|
ldy #WIDTH-1
|
|
|
|
lpx lda $ffff,y
|
|
src equ *-2
|
|
cmp #0
|
|
hmax equ *-1
|
|
sne
|
|
|
|
jsr plot
|
|
|
|
dey
|
|
bpl lpx
|
|
|
|
adw src #48
|
|
|
|
dex
|
|
bpl lpy
|
|
|
|
jsr wait
|
|
|
|
incdec inc hmax
|
|
lda hmax
|
|
bmi stop_p
|
|
cmp #$3f+1
|
|
bcs stop_m
|
|
|
|
jmp loop
|
|
|
|
stop_p lda #{inc*}
|
|
dta {bit*}
|
|
stop_m lda #{dec*}
|
|
sta incdec
|
|
rts
|
|
|
|
hmap .he 28 2E 33 39 3F 3B 35 2F 29 24 1F 1A 16 12 0F 0B 09 07 05 05 04 05 06 07 09 0C 0F 12 16 1B 1F 24
|
|
.he 29 2E 33 38 3C 3F 3B 38 35 34 33 33 34 36 38 3B 2D 33 39 3F 3A 34 2E 28 23 1E 18 14 0F 0B 08 05
|
|
.he 03 01 00 00 00 00 01 02 04 07 0A 0E 13 18 1C 21 26 2C 32 37 3B 3F 3B 37 34 33 32 32 33 35 37 39
|
|
.he 33 39 3F 3B 34 2E 28 23 1D 18 12 0E 0A 06 02 00 01 04 05 05 05 04 03 01 01 03 07 0B 0F 14 1A 1F
|
|
.he 25 2A 30 35 3B 3F 3A 37 33 32 30 31 32 33 35 38 38 3E 3B 35 2F 29 23 1D 18 12 0D 09 05 01 02 05
|
|
.he 07 09 0A 0A 0A 09 07 05 03 00 03 08 0C 11 16 1C 23 28 2E 34 3A 3F 3A 36 33 30 2F 2F 30 32 34 37
|
|
.he 3D 3D 37 30 2B 24 1F 19 13 0E 09 03 00 03 06 09 0B 0D 0E 0E 0E 0D 0B 09 06 02 00 05 09 0F 14 1A
|
|
.he 20 26 2D 33 3A 3E 3B 37 33 31 30 2F 30 32 34 37 3E 39 32 2C 26 21 1A 15 0F 09 05 00 04 07 0A 0C
|
|
.he 0F 10 11 11 11 10 0E 0C 09 05 01 02 07 0C 11 18 1E 24 2B 31 38 3E 3C 38 34 31 2F 30 30 32 34 37
|
|
.he 3B 35 2F 29 23 1D 17 12 0C 07 02 02 06 0A 0C 0F 11 13 14 14 13 12 11 0E 0B 08 04 00 05 0A 10 15
|
|
.he 1B 22 29 2F 35 3B 3D 39 35 32 31 30 31 34 36 38 38 32 2C 27 20 1A 15 0F 09 04 00 05 09 0C 0F 12
|
|
.he 13 15 16 16 15 14 13 10 0D 0A 06 02 02 08 0D 14 1A 20 26 2D 33 39 3E 3C 37 35 33 33 34 35 37 39
|
|
.he 35 2F 2A 24 1E 18 13 0D 08 03 02 06 09 0D 10 13 15 16 17 17 16 15 14 12 0F 0B 07 03 01 06 0C 11
|
|
.he 17 1D 24 2A 30 36 3C 3F 3C 38 37 37 36 38 39 3C 34 2E 28 23 1D 17 11 0C 07 02 02 07 0A 0D 11 13
|
|
.he 15 16 17 17 17 16 14 12 0F 0C 08 04 00 04 0A 10 15 1B 21 27 2D 33 38 3C 3F 3C 3B 3A 3A 3B 3D 3E
|
|
.he 32 2D 28 22 1C 16 11 0C 07 02 02 06 0A 0D 10 13 14 16 17 17 16 15 14 12 0F 0C 09 05 00 04 08 0E
|
|
.he 13 19 1F 24 2A 30 34 38 3C 3E 3F 3E 3E 3F 3F 3E 32 2D 28 22 1D 17 12 0D 08 03 01 04 09 0C 10 11
|
|
.he 13 15 15 15 15 15 13 11 0F 0C 09 04 01 03 07 0D 12 17 1C 22 26 2B 30 34 37 39 3C 3D 3D 3C 3C 3A
|
|
.he 33 2E 28 23 1E 19 13 0E 09 04 00 03 07 0A 0D 10 12 13 13 13 14 13 11 10 0D 0A 07 04 00 02 07 0C
|
|
.he 10 15 19 1F 23 28 2C 2F 33 35 37 38 38 38 38 37 33 2F 2A 24 20 1A 15 10 0B 07 03 01 05 08 0B 0D
|
|
.he 0E 0F 11 11 11 10 0F 0E 0B 09 07 03 00 03 07 0B 0F 14 18 1C 20 24 28 2B 2E 31 32 33 34 34 34 33
|
|
.he 35 30 2C 27 22 1C 18 13 0E 0A 06 02 01 04 07 09 0B 0C 0D 0E 0E 0D 0C 0A 09 07 04 01 00 04 07 0B
|
|
.he 0E 12 16 1A 1E 21 24 27 2A 2C 2E 2F 30 30 30 30 36 33 2E 2A 25 20 1B 17 13 0E 0A 06 02 00 03 04
|
|
.he 06 08 09 09 09 09 08 07 06 04 02 00 01 05 08 0B 0E 11 14 18 1B 1E 21 23 26 28 2A 2B 2C 2C 2C 2C
|
|
.he 39 35 32 2D 29 24 20 1B 17 12 0E 0A 07 04 02 00 02 03 04 05 05 04 04 03 02 00 00 02 04 07 09 0B
|
|
.he 0E 10 13 16 19 1B 1E 20 23 24 26 27 28 29 29 29 3C 39 35 31 2D 29 24 20 1C 17 13 10 0D 0A 07 05
|
|
.he 03 02 01 00 00 00 00 01 01 02 04 05 06 08 0A 0C 0E 11 13 15 17 1A 1B 1E 1F 21 23 24 24 25 26 26
|
|
.he 3F 3D 39 36 31 2E 29 25 21 1D 19 16 12 0F 0C 0A 09 08 06 05 05 05 06 06 07 07 08 09 0A 0B 0C 0E
|
|
.he 0F 11 12 14 16 18 19 1B 1D 1E 20 20 22 22 23 24 3C 3E 3E 3A 37 33 2F 2B 27 23 1F 1C 19 16 13 11
|
|
.he 0F 0E 0D 0C 0C 0B 0B 0C 0C 0C 0D 0D 0D 0E 0F 0F 10 11 12 14 15 16 18 19 1B 1C 1D 1E 1F 20 21 21
|
|
.he 37 3A 3C 3F 3C 38 34 30 2D 29 25 22 1F 1C 1A 18 15 15 13 12 12 12 12 12 12 12 12 12 11 12 11 11
|
|
.he 12 12 13 14 15 15 16 18 19 1A 1B 1C 1D 1E 1E 20 33 35 37 3A 3D 3E 3B 37 33 2F 2C 28 25 23 20 1E
|
|
.he 1D 1B 1A 19 19 19 18 18 18 17 17 16 16 15 15 14 13 13 14 14 14 15 15 16 18 18 19 1A 1B 1D 1D 1F
|
|
.he 2E 30 32 35 37 3B 3E 3D 39 35 32 2F 2C 29 27 25 23 22 21 21 20 1F 1F 1F 1E 1D 1D 1C 1A 19 17 17
|
|
.he 16 15 15 14 14 14 15 15 16 17 18 19 1A 1B 1C 1D 2A 2B 2D 2F 31 35 38 3C 3F 3C 38 35 32 2F 2D 2B
|
|
.he 2A 29 28 27 27 26 26 25 24 23 22 20 1E 1D 1B 19 18 16 16 15 15 15 15 15 15 16 17 18 19 1B 1B 1C
|
|
.he 26 27 28 29 2C 2F 32 36 3A 3D 3F 3B 38 36 33 31 31 2F 2E 2E 2D 2C 2D 2B 2B 2A 28 26 24 21 1E 1C
|
|
.he 1A 19 17 16 15 15 15 15 15 16 17 18 19 1A 1B 1D 22 22 23 25 26 29 2D 30 34 37 3B 3E 3E 3B 39 37
|
|
.he 36 35 34 34 34 33 32 31 30 2F 2C 2A 28 24 22 1F 1D 1A 18 17 17 16 15 15 15 16 17 18 19 1A 1C 1D
|
|
.he 1E 1E 1E 1F 21 24 28 2B 2F 32 36 39 3C 3E 3E 3D 3C 3B 3A 3A 39 39 38 36 36 34 31 2E 2B 28 25 22
|
|
.he 1F 1C 1A 19 17 17 16 16 16 17 17 18 1A 1B 1C 1E 1B 1B 1B 1B 1E 20 23 27 2A 2E 31 35 38 3A 3C 3E
|
|
.he 3F 3F 3F 3F 3D 3D 3C 3B 39 38 35 32 2E 2A 27 24 21 1E 1C 1A 19 18 18 17 18 18 19 19 1B 1C 1E 1F
|
|
.he 19 18 17 19 1A 1D 20 23 27 2A 2E 31 34 36 39 3A 3A 3C 3C 3D 3D 3E 3F 3E 3D 3A 37 33 31 2D 29 26
|
|
.he 22 20 1E 1C 1A 1A 19 18 19 19 1A 1B 1C 1D 1F 21 18 16 16 17 18 1B 1D 21 25 28 2B 2F 31 34 35 37
|
|
.he 38 39 39 3A 3B 3C 3E 3F 3E 3C 39 35 32 2E 2B 27 24 21 1F 1E 1C 1B 1A 1A 1A 1B 1C 1D 1E 1F 22 24
|
|
|
|
.endp
|
|
eif
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
ift FADECHR = 3
|
|
.proc left_right
|
|
|
|
mva #WIDTH/2 cnt
|
|
|
|
mva #0 x0
|
|
mva #WIDTH-1 x1
|
|
|
|
loop ldy #0
|
|
x0 equ *-1
|
|
jsr column
|
|
|
|
ldy #0
|
|
x1 equ *-1
|
|
jsr column
|
|
|
|
:2 inc x0
|
|
:2 dec x1
|
|
|
|
dec cnt
|
|
bne loop
|
|
rts
|
|
|
|
column ldx #HEIGHT-1
|
|
draw jsr plot
|
|
dex
|
|
bpl draw
|
|
jmp wait
|
|
|
|
cnt brk
|
|
|
|
.endp
|
|
eif
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
ift FADECHR = 2
|
|
.proc random
|
|
|
|
mwa #0 cnt
|
|
|
|
loop lda $d20a ; y
|
|
and #$f
|
|
cmp #15
|
|
bcs loop
|
|
asl @
|
|
sta py
|
|
|
|
:2 asl @
|
|
sta bmap
|
|
|
|
ret lda $d20a ; x
|
|
lsr @
|
|
and #$1f
|
|
cmp #WIDTH/2
|
|
bcs ret
|
|
asl @
|
|
sta px
|
|
|
|
:3 lsr @
|
|
tax
|
|
|
|
lda px
|
|
and #7
|
|
tay
|
|
|
|
jsr mapByte
|
|
and mask,y
|
|
bne loop
|
|
|
|
jsr mapByte
|
|
ora mask,y
|
|
|
|
mvy #{sta $ffff,x} mapByte
|
|
jsr mapByte
|
|
mvy #{lda $ffff,x} mapByte
|
|
|
|
ldy #0
|
|
px equ *-1
|
|
ldx #0
|
|
py equ *-1
|
|
|
|
jsr plot
|
|
iny
|
|
jsr plot
|
|
inx
|
|
jsr plot
|
|
dey
|
|
jsr plot
|
|
|
|
inw cnt
|
|
|
|
cpw cnt #(WIDTH/2)*15
|
|
jne loop
|
|
|
|
ldx #$7f
|
|
lda #0
|
|
sta:rpl mapBits,x-
|
|
|
|
mapByte lda mapBits,x
|
|
bmap equ *-2
|
|
rts
|
|
|
|
mask dta $80,$40,$20,$10,$08,$04,$02,$01
|
|
|
|
cnt dta a(0)
|
|
.endp
|
|
eif
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
ift FADECHR = 1
|
|
.proc box (.byte width, height) .var
|
|
|
|
loop mva width w
|
|
dec w
|
|
l0 jsr plot
|
|
iny
|
|
dec w
|
|
bne l0
|
|
|
|
mva height h
|
|
dec h
|
|
l1 jsr plot
|
|
inx
|
|
dec h
|
|
bne l1
|
|
|
|
mva width w
|
|
dec w
|
|
l2 jsr plot
|
|
dey
|
|
dec w
|
|
bne l2
|
|
|
|
mva height h
|
|
dec h
|
|
l3 jsr plot
|
|
dex
|
|
dec h
|
|
bne l3
|
|
|
|
:2 dec width
|
|
:2 dec height
|
|
|
|
inx
|
|
iny
|
|
|
|
jsr wait
|
|
|
|
cpy #15
|
|
bne loop
|
|
|
|
rts
|
|
|
|
w brk
|
|
h brk
|
|
|
|
width brk
|
|
height brk
|
|
|
|
.endp
|
|
eif
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
.proc movfil (.word fadr, fhlp, fcnt .byte fill+1) .var
|
|
|
|
sta fill_+1
|
|
|
|
LDY #0
|
|
LDX fcnt+1
|
|
BEQ MD2
|
|
MD1 LDA (fadr),y ; move the remaining bytes
|
|
STA (fhlp),y
|
|
fill lda #0
|
|
sta (fadr),y
|
|
INY
|
|
BNE MD1
|
|
INC fadr+1
|
|
INC fhlp+1
|
|
DEX
|
|
BNE MD1
|
|
MD2 LDX fcnt
|
|
BEQ MD4
|
|
MD3 LDA (fadr),y ; move the remaining bytes
|
|
STA (fhlp),y
|
|
fill_ lda #0
|
|
sta (fadr),y
|
|
INY
|
|
DEX
|
|
BNE MD3
|
|
MD4 RTS
|
|
|
|
.endp
|
|
|
|
init movfil #scr #scrn #WIDTH*HEIGHT #SCHR
|
|
|
|
ldy #0
|
|
tya
|
|
pmgClr sta pmg+$300,y
|
|
sta pmg+$400,y
|
|
sta pmg+$500,y
|
|
sta pmg+$600,y
|
|
sta pmg+$700,y
|
|
iny
|
|
bne pmgClr
|
|
rts
|
|
|
|
// -----------------------------------------------------------
|
|
|
|
.proc plot (.byte x,y) .reg
|
|
|
|
stx rx ; Y char position
|
|
sty ry ; X char position
|
|
|
|
mva lmul,x fadr
|
|
mva hmul,x fadr+1
|
|
|
|
lda fadr
|
|
add <scrn
|
|
_sta0 sta src+1
|
|
lda fadr+1
|
|
adc >scrn
|
|
_sta1 sta src+2
|
|
|
|
adw fadr #scr dst+1
|
|
|
|
lda #SCHR
|
|
|
|
src lda $ffff,y
|
|
dst sta $ffff,y
|
|
|
|
jsr pmg_plot
|
|
|
|
ldx #0
|
|
rx equ *-1
|
|
ldy #0
|
|
ry equ *-1
|
|
|
|
rts
|
|
|
|
.local pmg_plot
|
|
|
|
mva lcol,y fcnt
|
|
mva hcol,y fcnt+1
|
|
|
|
txa
|
|
asl @
|
|
tay
|
|
|
|
asl @
|
|
asl @
|
|
add #8
|
|
tax
|
|
|
|
lda (fcnt),y
|
|
sta fadr
|
|
iny
|
|
lda (fcnt),y
|
|
sta fadr+1
|
|
|
|
ldy #0
|
|
|
|
loop lda (fadr),y
|
|
src equ *-2
|
|
sta tmp
|
|
|
|
beq stop
|
|
|
|
jmi _mis
|
|
p0 asl tmp
|
|
jmi _pl0
|
|
p1 asl tmp
|
|
jmi _pl1
|
|
p2 asl tmp
|
|
jmi _pl2
|
|
p3 asl tmp
|
|
jmi _pl3
|
|
|
|
stop rts
|
|
|
|
tmp brk
|
|
|
|
_mis @plot $300
|
|
jmp p0
|
|
|
|
_pl0 @plot $400
|
|
jmp p1
|
|
|
|
_pl1 @plot $500
|
|
jmp p2
|
|
|
|
_pl2 @plot $600
|
|
jmp p3
|
|
|
|
_pl3 @plot $700
|
|
rts
|
|
|
|
.macro @plot (player)
|
|
.rept 8
|
|
iny
|
|
lda pmg+%%player+#,x
|
|
eor (fadr),y
|
|
sta pmg+%%player+#,x
|
|
.endr
|
|
.endm
|
|
|
|
.endl
|
|
|
|
lcol :WIDTH dta l(col%%1)
|
|
hcol :WIDTH dta h(col%%1)
|
|
|
|
.rept WIDTH,#
|
|
col%%1 dta a(c%%1r0),a(c%%1r1),a(c%%1r2),a(c%%1r3),a(c%%1r4)
|
|
dta a(c%%1r5),a(c%%1r6),a(c%%1r7),a(c%%1r8),a(c%%1r9)
|
|
dta a(c%%1r10),a(c%%1r11),a(c%%1r12),a(c%%1r13),a(c%%1r14)
|
|
dta a(c%%1r15),a(c%%1r16),a(c%%1r17),a(c%%1r18),a(c%%1r19)
|
|
dta a(c%%1r20),a(c%%1r21),a(c%%1r22),a(c%%1r23),a(c%%1r24)
|
|
dta a(c%%1r25),a(c%%1r26),a(c%%1r27),a(c%%1r28),a(c%%1r29)
|
|
.endr
|
|
|
|
lmul :HEIGHT dta l(#*WIDTH)
|
|
hmul :HEIGHT dta h(#*WIDTH)
|
|
.endp
|
|
|
|
.endl
|
|
|
|
scrn .ds WIDTH*HEIGHT
|