1185 lines
14 KiB
ArmAsm
1185 lines
14 KiB
ArmAsm
.feature c_comments
|
|
.include "../../build/loadersymbols-c64.inc"
|
|
|
|
.ZEROPAGE
|
|
.org $10
|
|
bmp_delay: .res 1
|
|
bmp_addr: .res 2
|
|
bmp_ptr: .res 2
|
|
scr_ptr_lo: .res 1
|
|
scr_ptr: .res 2
|
|
cram_ptr: .res 2
|
|
chr_count: .res 1
|
|
vbl: .res 1
|
|
frame: .res 1
|
|
cur_frame: .res 1
|
|
frame_delay: .res 1
|
|
frame_until: .res 1
|
|
text_ptr: .res 2
|
|
timer: .res 2
|
|
timer_limit: .res 2
|
|
timer_reached: .res 2
|
|
timer_mode: .res 1
|
|
temp: .res 3
|
|
|
|
aart_lz_buffer := $fd00
|
|
.include "lz_zp.asm"
|
|
|
|
CODE_START_ADDR = $e000
|
|
|
|
.segment "CODE"
|
|
|
|
ZP=$e0
|
|
offset = ZP+0
|
|
ZX0_src = ZP+2
|
|
ZX0_dst = ZP+4
|
|
bitr = ZP+6
|
|
pntr = ZP+7
|
|
|
|
|
|
.org $080d
|
|
|
|
copy_start:
|
|
sei
|
|
lda #$35
|
|
sta $01
|
|
lda #>(code_end-CODE_START_ADDR)
|
|
sta $ff
|
|
lda #<(code_end-CODE_START_ADDR)
|
|
sta $fe
|
|
|
|
lda #<CODE_START_ADDR
|
|
sta $fc
|
|
lda #>CODE_START_ADDR
|
|
sta $fd
|
|
|
|
lda #<code_start
|
|
sta $fa
|
|
lda #>code_start
|
|
sta $fb
|
|
|
|
@copy_loop:
|
|
ldy #0
|
|
lda ($fa), y
|
|
sta ($fc), y
|
|
inc $fc
|
|
bne :+
|
|
inc $fd
|
|
:
|
|
inc $fa
|
|
bne :+
|
|
inc $fb
|
|
:
|
|
lda $fe
|
|
bne :+
|
|
dec $ff
|
|
:
|
|
dec $fe
|
|
lda $fe
|
|
ora $ff
|
|
bne @copy_loop
|
|
|
|
lda #$36
|
|
sta $01
|
|
cli
|
|
jsr install
|
|
sei
|
|
lda #$35
|
|
sta $01
|
|
jmp CODE_START_ADDR
|
|
|
|
.res loadraw - *
|
|
.incbin "../../build/loader-c64.prg", 2
|
|
|
|
.res install - *
|
|
.incbin "../../build/install-c64.prg", 2
|
|
|
|
code_start:
|
|
.org CODE_START_ADDR
|
|
|
|
sei
|
|
|
|
ldx #<fontname
|
|
ldy #>fontname
|
|
jsr loadraw
|
|
|
|
lda #$34
|
|
sta $01
|
|
|
|
ldx #0
|
|
:
|
|
lda $8000, x
|
|
sta $d800, x
|
|
eor #$ff
|
|
sta $c00, x
|
|
lda $8100, x
|
|
sta $d900, x
|
|
eor #$ff
|
|
sta $d00, 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
|
|
|
|
ldx #<badguy
|
|
ldy #>badguy
|
|
jsr loadraw
|
|
|
|
lda #0
|
|
sta ZX0_src
|
|
lda #$80
|
|
sta ZX0_src+1
|
|
lda #0
|
|
sta ZX0_dst
|
|
lda #$20
|
|
jsr zx02
|
|
|
|
lda #127
|
|
sta $dc0d
|
|
|
|
and $d011
|
|
sta $d011
|
|
|
|
lda $dc0d
|
|
lda $dd0d
|
|
|
|
lda #<irq_badguy
|
|
sta $fffe
|
|
lda #>irq_badguy
|
|
sta $ffff
|
|
|
|
lda #$1b
|
|
sta $d011
|
|
lda #$d0
|
|
sta $d012
|
|
|
|
lda #1
|
|
sta $d01a
|
|
sta bmp_delay
|
|
jsr init_bmp
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
cli
|
|
|
|
;lda #64
|
|
;sta frame_delay
|
|
;jsr wait_loop
|
|
|
|
;jsr intro
|
|
|
|
lda #$0b
|
|
sta $d011
|
|
|
|
sei
|
|
ldx #<introname
|
|
ldy #>introname
|
|
jsr loadraw
|
|
|
|
lda #0
|
|
sta ZX0_src
|
|
lda #$80
|
|
sta ZX0_src+1
|
|
lda #0
|
|
sta ZX0_dst
|
|
lda #$10
|
|
jsr zx02
|
|
|
|
ldx #<sidname
|
|
ldy #>sidname
|
|
jsr loadraw
|
|
|
|
ldx #<towername
|
|
ldy #>towername
|
|
jsr loadraw
|
|
|
|
lda #<fake_kernal_irq
|
|
sta $fffe
|
|
lda #>fake_kernal_irq
|
|
sta $ffff
|
|
|
|
lda #1
|
|
sta $d01a
|
|
|
|
jsr run_nufli_bmp
|
|
sei
|
|
jsr init_2x
|
|
lda #$0b
|
|
sta $d011
|
|
|
|
jsr clr_txt
|
|
ldx #<story_writ
|
|
ldy #>story_writ
|
|
jsr write_txt3
|
|
ldx #$30
|
|
ldy #$01
|
|
jsr init_timer
|
|
lda #1
|
|
sta timer_mode
|
|
|
|
lda #0
|
|
sta ZX0_src
|
|
lda #$80
|
|
sta ZX0_src+1
|
|
lda #0
|
|
sta ZX0_dst
|
|
lda #$20
|
|
jsr zx02
|
|
|
|
:
|
|
lda timer_reached
|
|
beq :-
|
|
|
|
ldx #$b8
|
|
ldy #$01
|
|
jsr init_timer
|
|
lda #2
|
|
sta timer_mode
|
|
:
|
|
lda timer_reached
|
|
beq :-
|
|
|
|
jsr init_bmp
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
lda #$11
|
|
sta frame_until
|
|
jsr wait_frame_until_2x
|
|
|
|
ldx #$6c
|
|
:
|
|
jsr wait_frame
|
|
jsr wait_frame
|
|
dex
|
|
bpl :-
|
|
|
|
lda #$0b
|
|
sta $d011
|
|
|
|
jsr clr_txt
|
|
ldx #<scenario_writ
|
|
ldy #>scenario_writ
|
|
jsr write_txt2
|
|
ldx #$80
|
|
ldy #$01
|
|
jsr init_timer
|
|
lda #1
|
|
sta timer_mode
|
|
|
|
ldx #<towerbeamname
|
|
ldy #>towerbeamname
|
|
jsr loadraw
|
|
lda #0
|
|
sta ZX0_src
|
|
lda #$80
|
|
sta ZX0_src+1
|
|
lda #0
|
|
sta ZX0_dst
|
|
lda #$20
|
|
jsr zx02
|
|
|
|
:
|
|
lda timer_reached
|
|
beq :-
|
|
|
|
ldx #$90
|
|
ldy #$01
|
|
jsr init_timer
|
|
lda #2
|
|
sta timer_mode
|
|
:
|
|
lda timer_reached
|
|
beq :-
|
|
|
|
jsr init_bmp
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
lda #$0d
|
|
sta frame_until
|
|
jsr wait_frame_until_2x
|
|
lda bmp_addr
|
|
sta temp
|
|
lda bmp_addr+1
|
|
sta temp+1
|
|
lda cur_frame
|
|
sta temp+2
|
|
|
|
ldx #17
|
|
:
|
|
txa
|
|
pha
|
|
lda temp+2
|
|
sta cur_frame
|
|
lda temp
|
|
sta bmp_addr
|
|
lda temp+1
|
|
sta bmp_addr+1
|
|
lda #$0d+3
|
|
sta frame_until
|
|
jsr wait_frame_until_2x
|
|
pla
|
|
tax
|
|
dex
|
|
bpl :-
|
|
|
|
lda #$0b
|
|
sta $d011
|
|
|
|
jsr clr_txt
|
|
ldx #<prog_writ
|
|
ldy #>prog_writ
|
|
jsr write_txt2
|
|
ldx #$a8
|
|
ldy #$01
|
|
jsr init_timer
|
|
lda #1
|
|
sta timer_mode
|
|
|
|
ldx #<fieldname
|
|
ldy #>fieldname
|
|
jsr loadraw
|
|
lda #0
|
|
sta ZX0_src
|
|
lda #$80
|
|
sta ZX0_src+1
|
|
lda #0
|
|
sta ZX0_dst
|
|
lda #$20
|
|
jsr zx02
|
|
|
|
:
|
|
lda timer_reached
|
|
beq :-
|
|
|
|
ldx #$48
|
|
ldy #$01
|
|
jsr init_timer
|
|
lda #2
|
|
sta timer_mode
|
|
|
|
:
|
|
lda timer_reached
|
|
beq :-
|
|
|
|
jsr init_bmp
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
lda #$08
|
|
sta frame_until
|
|
jsr wait_frame_until_2x
|
|
lda bmp_addr
|
|
sta temp
|
|
lda bmp_addr+1
|
|
sta temp+1
|
|
lda cur_frame
|
|
sta temp+2
|
|
|
|
ldx #2
|
|
:
|
|
txa
|
|
pha
|
|
lda temp+2
|
|
sta cur_frame
|
|
lda temp
|
|
sta bmp_addr
|
|
lda temp+1
|
|
sta bmp_addr+1
|
|
lda #$08+8
|
|
sta frame_until
|
|
jsr wait_frame_until_2x
|
|
pla
|
|
tax
|
|
dex
|
|
bpl :-
|
|
|
|
|
|
lda #0
|
|
sta vbl
|
|
lda #$27
|
|
sta frame_until
|
|
jsr wait_frame_until_2x
|
|
jmp *
|
|
|
|
|
|
intro:
|
|
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
|
|
|
|
ldx #<adol_win
|
|
ldy #>adol_win
|
|
jsr upload_text
|
|
|
|
lda #50*5
|
|
sta frame_delay
|
|
jsr wait_loop
|
|
|
|
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
|
|
|
|
lda #120
|
|
sta frame_delay
|
|
jsr wait_loop
|
|
rts
|
|
|
|
wait_frame:
|
|
@loop:
|
|
bit $d011
|
|
bpl @loop
|
|
@loop2:
|
|
bit $d011
|
|
bmi @loop2
|
|
rts
|
|
|
|
story_writ:
|
|
.res 11, ' '
|
|
.byte "story written by"
|
|
.res 40-(16+11), ' '
|
|
.res 11, ' '
|
|
.res 5, ' '
|
|
.byte "takahiro ohura"
|
|
.res 40-(14+11+5), ' '
|
|
.res 11, ' '
|
|
.res 5, ' '
|
|
.byte "tomoo yamane"
|
|
.res 40-(12+11+5), ' '
|
|
|
|
scenario_writ:
|
|
.res (40-24)/2, ' '
|
|
.byte " scenario written by "
|
|
.res (40-24)/2, ' '
|
|
.res (40-24)/2, ' '
|
|
.byte " tomoyoshi miyazaki"
|
|
.res (40-24)/2, ' '
|
|
|
|
prog_writ:
|
|
.res (40-22)/2, ' '
|
|
.byte " programmed by "
|
|
.res (40-22)/2, ' '
|
|
.res (40-22)/2, ' '
|
|
.byte " masaya hashimoto"
|
|
.res (40-22)/2, ' '
|
|
|
|
clr_txt:
|
|
lda #$80
|
|
ldx #0
|
|
:
|
|
.repeat 4, I
|
|
sta $400+(I*250), x
|
|
.endrepeat
|
|
inx
|
|
cpx #250
|
|
bne :-
|
|
lda #0
|
|
ldx #0
|
|
:
|
|
.repeat 4, I
|
|
sta $d800+(I*250), x
|
|
.endrepeat
|
|
inx
|
|
cpx #250
|
|
bne :-
|
|
lda #$13
|
|
sta $d018
|
|
lda #$1b
|
|
sta $d011
|
|
rts
|
|
|
|
init_2x:
|
|
lda #127
|
|
sta $dc0d
|
|
|
|
and $d011
|
|
sta $d011
|
|
|
|
lda $dc0d
|
|
lda $dd0d
|
|
|
|
lda #<irq_music
|
|
sta $fffe
|
|
lda #>irq_music
|
|
sta $ffff
|
|
|
|
lda #$0b
|
|
sta $d011
|
|
lda #$00
|
|
sta $d012
|
|
|
|
lda #0
|
|
sta $d01a
|
|
|
|
lda #$63; <(985248/100)
|
|
sta $dc04
|
|
lda #$26;>(985248/100)
|
|
sta $dc05
|
|
|
|
lda $dc0d
|
|
and #$81
|
|
sta $dc0d
|
|
|
|
lda #$40
|
|
sta $dc0c
|
|
|
|
lda #$81
|
|
sta $dc0d
|
|
|
|
@loop:
|
|
bit $d011
|
|
bpl @loop
|
|
@loop2:
|
|
bit $d011
|
|
bmi @loop2
|
|
cli
|
|
rts
|
|
|
|
init_timer:
|
|
lda #0
|
|
sta timer_reached
|
|
sta timer_mode
|
|
sta timer
|
|
sta timer+1
|
|
stx timer_limit
|
|
sty timer_limit+1
|
|
rts
|
|
|
|
fade_cols:
|
|
.byte 0, 0
|
|
.byte $0, $0, $0, $0, $b, $c, $f, $1
|
|
.res 32-10, $1
|
|
|
|
irq_music:
|
|
pha
|
|
txa
|
|
pha
|
|
tya
|
|
pha
|
|
|
|
lda $dd00
|
|
and #3
|
|
sta @dd00_arc+1
|
|
lda #3
|
|
sta $dd00
|
|
|
|
inc vbl
|
|
|
|
;inc $d020
|
|
jsr $a003
|
|
;dec $d020
|
|
|
|
lda timer_mode
|
|
cmp #1
|
|
bne :+
|
|
lda timer+1
|
|
bne :+
|
|
lda timer
|
|
lsr
|
|
lsr
|
|
lsr
|
|
tax
|
|
lda fade_cols, x
|
|
sta $d021
|
|
:
|
|
lda timer_mode
|
|
cmp #2
|
|
bne :+
|
|
lda timer+1
|
|
bne :+
|
|
lda timer
|
|
lsr
|
|
lsr
|
|
lsr
|
|
eor #31
|
|
tax
|
|
lda fade_cols, x
|
|
sta $d021
|
|
:
|
|
|
|
inc timer
|
|
bne :+
|
|
inc timer+1
|
|
:
|
|
lda timer
|
|
cmp timer_limit
|
|
bne :+
|
|
lda timer+1
|
|
cmp timer_limit+1
|
|
bne :+
|
|
lda #1
|
|
sta timer_reached
|
|
:
|
|
|
|
@dd00_arc:
|
|
lda #0
|
|
sta $dd00
|
|
|
|
pla
|
|
tay
|
|
pla
|
|
tax
|
|
pla
|
|
jmp $dc0c
|
|
|
|
|
|
fake_kernal_irq:
|
|
pha
|
|
txa
|
|
pha
|
|
tya
|
|
pha
|
|
tsx
|
|
lda $0104, x
|
|
and #$10
|
|
beq :+
|
|
jmp ($0314)
|
|
:
|
|
jmp ($0314) ; fuck you
|
|
|
|
wait_loop:
|
|
@loop2:
|
|
lda vbl
|
|
beq @loop2
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
jsr sfx_play
|
|
|
|
dec frame_delay
|
|
lda frame_delay
|
|
beq :+
|
|
jmp @loop2
|
|
:
|
|
rts
|
|
|
|
wait_frame_until:
|
|
@loop:
|
|
lda vbl
|
|
beq @loop
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
lda cur_frame
|
|
cmp #2
|
|
bcc :+
|
|
jsr sfx_play
|
|
:
|
|
|
|
dec bmp_delay
|
|
bpl :+
|
|
jsr update_bmp
|
|
:
|
|
|
|
lda cur_frame
|
|
cmp frame_until
|
|
beq :+
|
|
|
|
jmp @loop
|
|
:
|
|
rts
|
|
|
|
|
|
wait_loop_2x:
|
|
@loop:
|
|
lda vbl
|
|
cmp #2
|
|
bcc @loop
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
dec frame_delay
|
|
lda frame_delay
|
|
beq :+
|
|
jmp @loop
|
|
:
|
|
rts
|
|
|
|
wait_frame_until_2x:
|
|
@loop:
|
|
lda vbl
|
|
cmp #2
|
|
bcc @loop
|
|
|
|
lda #0
|
|
sta vbl
|
|
|
|
dec bmp_delay
|
|
bpl :+
|
|
jsr update_bmp
|
|
:
|
|
|
|
lda cur_frame
|
|
cmp frame_until
|
|
beq :+
|
|
jmp @loop
|
|
:
|
|
rts
|
|
|
|
|
|
init_bmp:
|
|
lda #$0b
|
|
sta $d011
|
|
lda #$19
|
|
sta $d018
|
|
lda #$d8
|
|
sta $d016
|
|
|
|
lda $4710
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
sta $d020
|
|
|
|
lda $4710
|
|
and #$0f
|
|
sta $d021
|
|
|
|
lda #0
|
|
sta cur_frame
|
|
sta bmp_delay
|
|
|
|
lda #$11
|
|
sta bmp_addr
|
|
lda #$47
|
|
sta bmp_addr+1
|
|
|
|
ldx #0
|
|
:
|
|
.repeat 4, I
|
|
lda $3f40+(I*250), x
|
|
sta $400+(I*250), x
|
|
lda $4328+(I*250), x
|
|
sta $d800+(I*250), x
|
|
.endrepeat
|
|
inx
|
|
cpx #250
|
|
bne :-
|
|
|
|
lda #$3b
|
|
sta $d011
|
|
rts
|
|
|
|
inc_bmp_addr:
|
|
inc bmp_addr
|
|
bne :+
|
|
inc bmp_addr+1
|
|
:
|
|
rts
|
|
|
|
update_bmp:
|
|
ldy #0
|
|
sty scr_ptr
|
|
sty cram_ptr
|
|
lda (bmp_addr), y
|
|
jsr inc_bmp_addr
|
|
sta chr_count
|
|
cmp #0 ; tfw flags update in inc_bmp_addr
|
|
bne @skip_frame_end
|
|
lda (bmp_addr), y
|
|
jsr inc_bmp_addr
|
|
sta bmp_delay
|
|
inc cur_frame
|
|
rts
|
|
@skip_frame_end:
|
|
|
|
lda (bmp_addr), y
|
|
sta bmp_ptr
|
|
iny
|
|
lda (bmp_addr), y
|
|
clc
|
|
adc #$20
|
|
sta bmp_ptr+1
|
|
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta scr_ptr_lo
|
|
iny
|
|
lda (bmp_addr), y
|
|
clc
|
|
adc #$04
|
|
sta scr_ptr+1
|
|
clc
|
|
adc #$d8-$04
|
|
sta cram_ptr+1
|
|
|
|
ldy #0
|
|
lda bmp_addr
|
|
clc
|
|
adc #4
|
|
sta bmp_addr
|
|
bcc :+
|
|
inc bmp_addr+1
|
|
:
|
|
|
|
ldx #0
|
|
@loop:
|
|
ldy #0
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
iny
|
|
lda (bmp_addr), y
|
|
sta (bmp_ptr), y
|
|
|
|
lda bmp_ptr
|
|
clc
|
|
adc #8
|
|
sta bmp_ptr
|
|
bcc :+
|
|
inc bmp_ptr+1
|
|
:
|
|
lda bmp_addr
|
|
clc
|
|
adc #8
|
|
sta bmp_addr
|
|
bcc :+
|
|
inc bmp_addr+1
|
|
:
|
|
|
|
ldy #0
|
|
lda (bmp_addr), y
|
|
ldy scr_ptr_lo
|
|
sta (scr_ptr), y
|
|
|
|
ldy #1
|
|
lda (bmp_addr), y
|
|
ldy scr_ptr_lo
|
|
sta (cram_ptr), y
|
|
|
|
inc scr_ptr_lo
|
|
bne :+
|
|
inc scr_ptr+1
|
|
inc cram_ptr+1
|
|
:
|
|
|
|
lda bmp_addr
|
|
clc
|
|
adc #2
|
|
sta bmp_addr
|
|
bcc :+
|
|
inc bmp_addr+1
|
|
:
|
|
|
|
dec chr_count
|
|
ldx chr_count
|
|
bne @loop
|
|
jmp update_bmp
|
|
|
|
irq_badguy:
|
|
pha
|
|
txa
|
|
pha
|
|
tya
|
|
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
|
|
tay
|
|
pla
|
|
tax
|
|
pla
|
|
rti
|
|
|
|
badguy: .byte "badguy",0
|
|
fontname: .byte "font",0
|
|
sidname: .byte "sid", 0
|
|
introname: .byte "intrbmp", 0
|
|
towername: .byte "tower", 0
|
|
towerbeamname: .byte "towerbm", 0
|
|
fieldname: .byte "field", 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, ' '
|
|
|
|
write_txt3:
|
|
stx text_ptr
|
|
sty text_ptr+1
|
|
|
|
ldx #0
|
|
ldy #0
|
|
:
|
|
lda (text_ptr), y
|
|
sec
|
|
sbc #$20
|
|
ora #$80
|
|
sta $400+10*40, x
|
|
iny
|
|
inx
|
|
cpx #40
|
|
bne :-
|
|
|
|
ldx #0
|
|
:
|
|
lda (text_ptr), y
|
|
sec
|
|
sbc #$20
|
|
ora #$80
|
|
sta $400+12*40, x
|
|
iny
|
|
inx
|
|
cpx #40
|
|
bne :-
|
|
|
|
ldx #0
|
|
:
|
|
lda (text_ptr), y
|
|
sec
|
|
sbc #$20
|
|
ora #$80
|
|
sta $400+14*40, x
|
|
iny
|
|
inx
|
|
cpx #40
|
|
bne :-
|
|
rts
|
|
|
|
write_txt2:
|
|
stx text_ptr
|
|
sty text_ptr+1
|
|
|
|
ldx #0
|
|
ldy #0
|
|
:
|
|
lda (text_ptr), y
|
|
sec
|
|
sbc #$20
|
|
ora #$80
|
|
sta $400+11*40, x
|
|
iny
|
|
inx
|
|
cpx #40
|
|
bne :-
|
|
|
|
ldx #0
|
|
:
|
|
lda (text_ptr), y
|
|
sec
|
|
sbc #$20
|
|
ora #$80
|
|
sta $400+13*40, x
|
|
iny
|
|
inx
|
|
cpx #40
|
|
bne :-
|
|
rts
|
|
|
|
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
|
|
|
|
|
|
run_nufli_bmp:
|
|
lda #$01
|
|
sta $81
|
|
lda #$29
|
|
sta $80
|
|
lda #0
|
|
sta $d01a
|
|
jsr $a000
|
|
cli
|
|
jsr $3000
|
|
@loop:
|
|
bit $d011
|
|
bpl @loop
|
|
jsr $a003
|
|
@loop2:
|
|
bit $d011
|
|
bmi @loop2
|
|
lda #0
|
|
sta $d020
|
|
sta $d021
|
|
jsr $a003
|
|
lda $80
|
|
bne :+
|
|
dec $81
|
|
:
|
|
dec $80
|
|
lda $81
|
|
cmp #$ff
|
|
beq :+
|
|
jmp @loop
|
|
:
|
|
rts
|
|
|
|
|
|
.res $ea31-*, $ff
|
|
;asl $d019
|
|
pla
|
|
tay
|
|
pla
|
|
tax
|
|
pla
|
|
rti
|
|
|
|
.res $ea81-*, $ff
|
|
;asl $d019
|
|
pla
|
|
tay
|
|
pla
|
|
tax
|
|
pla
|
|
rti
|
|
|
|
.include "sfx.asm"
|
|
.include "zx02.asm"
|
|
.include "thcmod_lz.asm"
|
|
|
|
code_end:
|