mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-04 20:06:09 +00:00
0359b21d2a
still need to hook up the fireplace puzzle
631 lines
15 KiB
ArmAsm
631 lines
15 KiB
ArmAsm
; Ending with page steps
|
|
;
|
|
; DNI_PROGRESS
|
|
; 5 writing
|
|
; 6 say text both
|
|
; 7 say give me page (until you do)
|
|
; 8 say other give me page
|
|
|
|
; 9 takes page
|
|
; 10 hold book
|
|
; 11 puts page in book (right thing)
|
|
; 12 looks sad (sons)
|
|
; 13 touches link
|
|
; 14 zaps into book
|
|
; 15 pause
|
|
; 16 zaps out of book
|
|
; 17 (link again) page3/it is done
|
|
; 18 (holds book) page4/reward
|
|
; 19 (places book) page5/stick around
|
|
|
|
; 20 writing loop 1
|
|
; 21 writing loop 2
|
|
;
|
|
; effect of clicking is now myst linking book
|
|
; red/blue book in myst replaced and no longer can click on
|
|
; all red/blue/white pages cleared out
|
|
; atrus no longer talks in green book
|
|
|
|
HAVE_PAGE_START = 5
|
|
ATRUS_WRITING = 20 ; must be even
|
|
|
|
atrus_text:
|
|
.word atrus_text_nothing ; 0
|
|
.word atrus_text_both ; 1
|
|
.word atrus_text_nopage1 ; 2
|
|
.word atrus_text_nopage2 ; 3
|
|
.word atrus_text_nothing ; 4
|
|
|
|
.word atrus_text_nothing ; 5
|
|
.word atrus_text_both ; 6
|
|
.word atrus_gimme_page1 ; 7
|
|
.word atrus_gimme_page2 ; 8
|
|
|
|
.word atrus_text_nothing ; 9
|
|
.word atrus_text_right ; 10
|
|
.word atrus_text_right ; 11
|
|
|
|
.word atrus_text_sons ; 12
|
|
.word atrus_text_nothing ; 13
|
|
.word atrus_text_nothing ; 14
|
|
.word atrus_text_nothing ; 15
|
|
.word atrus_text_nothing ; 16
|
|
|
|
.word atrus_text_itisdone ; 17
|
|
.word atrus_text_reward ; 18
|
|
.word atrus_text_foe ; 19
|
|
|
|
.word atrus_text_nothing ; 20
|
|
.word atrus_text_nothing ; 21
|
|
|
|
|
|
atrus_sprites:
|
|
.word atrus_sprite_writing1 ; 0
|
|
.word atrus_sprite_talking ; 1
|
|
.word atrus_sprite_facepalm ; 2
|
|
.word atrus_sprite_talking ; 3
|
|
.word atrus_sprite_writing1 ; 4
|
|
|
|
.word atrus_sprite_writing1 ; 5
|
|
.word atrus_sprite_talking ; 6
|
|
|
|
.word atrus_sprite_reaching ; 7
|
|
.word atrus_sprite_reaching ; 8
|
|
|
|
.word atrus_sprite_hold_page ; 9
|
|
.word atrus_sprite_hold_book ; 10
|
|
.word atrus_sprite_place_page ; 11
|
|
.word atrus_sprite_sad ; 12
|
|
.word atrus_sprite_link ; 13
|
|
.word atrus_sprite_going ; 14
|
|
|
|
.word atrus_sprite_gone ; 15
|
|
.word atrus_sprite_going ; 16
|
|
|
|
.word atrus_sprite_link ; 17
|
|
.word atrus_sprite_hold_book ; 18
|
|
.word atrus_sprite_book_down ; 19
|
|
|
|
.word atrus_sprite_writing1 ; 20
|
|
.word atrus_sprite_writing2 ; 21
|
|
|
|
atrus_xy:
|
|
.byte 13,6, 16,6, 16,6 ; 0 1 2
|
|
.byte 16,6, 13,6 ; 3 4
|
|
.byte 13,6, 16,6 ; 5 6
|
|
.byte 14,6, 14,6 ; 7 8
|
|
.byte 15,6, 15,6, 15,6 ; 9 10 11
|
|
.byte 14,14, 15,6, 13,6 ; 12 13 14
|
|
.byte 13,6, 13,6, 15,6 ; 15 16 17
|
|
.byte 15,6, 15,6 ; 18 19
|
|
.byte 15,22, 15,22 ; 20 21
|
|
|
|
atrus_delay:
|
|
.byte $1,$80, $0,$00, $0,$00 ; 0 1 2
|
|
.byte $0,$00, $0,$00 ; 3 4
|
|
|
|
.byte $1,$80, $0,$00 ; 5 6
|
|
.byte $1,$00, $1,$00 ; 7 8
|
|
.byte $1,$80, $1,$00, $1,$00 ; 9 10 11
|
|
.byte $0,$00, $1,$c0, $1,$c0 ; 12 13 14
|
|
.byte $0,$00, $1,$c0, $0,$00 ; 15 16 17
|
|
.byte $0,$00, $0,$00 ; 18 19
|
|
.byte $0,$00, $0,$00 ; 20 21
|
|
|
|
|
|
atrus_sprite_writing1: ; 15,22
|
|
.byte 1,1
|
|
.byte $AA
|
|
|
|
|
|
atrus_sprite_writing2:
|
|
.byte 5,3
|
|
.byte $ff,$dd,$0d,$dd,$dd
|
|
.byte $fd,$bd,$b0,$0d,$dd
|
|
.byte $ff,$bb,$bb,$bb,$0d
|
|
|
|
atrus_sprite_facepalm:
|
|
.byte 10,12
|
|
.byte $00,$55,$77,$77,$77,$77,$77,$77,$77,$77
|
|
.byte $00,$77,$77,$77,$88,$88,$88,$87,$77,$77
|
|
.byte $00,$77,$77,$88,$b8,$b8,$bb,$bb,$77,$77
|
|
.byte $00,$77,$77,$bb,$3b,$3b,$bb,$bb,$77,$77
|
|
.byte $00,$f7,$df,$bb,$3b,$33,$33,$3b,$f7,$77
|
|
.byte $ff,$df,$dd,$8b,$33,$33,$33,$33,$ff,$ff
|
|
.byte $ff,$dd,$dd,$88,$88,$83,$83,$53,$ff,$ff
|
|
.byte $ff,$dd,$dd,$df,$f8,$f8,$f8,$55,$ff,$ff
|
|
.byte $dd,$dd,$dd,$dd,$ff,$ff,$dd,$55,$ff,$ff
|
|
.byte $bd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$ff
|
|
.byte $bb,$bb,$7d,$7d,$7d,$7d,$7d,$7d,$dd,$df
|
|
.byte $77,$77,$77,$07,$57,$55,$55,$55,$55,$5d
|
|
|
|
atrus_sprite_talking:
|
|
.byte 8,11
|
|
.byte $00,$55,$77,$77,$77,$77,$77,$77
|
|
.byte $00,$77,$77,$77,$88,$88,$88,$87
|
|
.byte $00,$77,$77,$88,$bb,$bb,$b8,$bb
|
|
.byte $00,$77,$77,$bb,$0b,$3b,$0b,$bb
|
|
.byte $00,$f7,$df,$bb,$bb,$33,$bb,$bb
|
|
.byte $ff,$df,$dd,$8b,$88,$88,$88,$8b
|
|
.byte $ff,$dd,$dd,$88,$88,$80,$88,$88
|
|
.byte $ff,$dd,$dd,$df,$f8,$f8,$f8,$dd
|
|
.byte $dd,$dd,$dd,$dd,$ff,$ff,$dd,$dd
|
|
.byte $bd,$dd,$dd,$dd,$dd,$dd,$dd,$bd
|
|
.byte $bb,$bb,$7d,$7d,$7d,$7d,$bb,$bb
|
|
|
|
|
|
|
|
atrus_sprite_nothing:
|
|
.byte 1,1
|
|
.byte $AA
|
|
|
|
|
|
; good ending
|
|
|
|
atrus_sprite_reaching: ; at 14,6
|
|
.byte 10,14
|
|
.byte $00,$00,$00,$55,$77,$77,$77,$77,$77,$77
|
|
.byte $77,$00,$00,$77,$77,$77,$88,$88,$88,$87
|
|
.byte $77,$70,$00,$77,$77,$88,$bb,$bb,$b8,$88
|
|
.byte $77,$77,$00,$77,$77,$bb,$0b,$3b,$0b,$bb
|
|
.byte $77,$77,$00,$f7,$df,$bb,$bb,$33,$bb,$bb
|
|
.byte $77,$77,$ff,$df,$dd,$8b,$88,$88,$88,$8b
|
|
.byte $77,$f7,$ff,$dd,$dd,$88,$88,$80,$88,$88
|
|
.byte $f7,$ff,$ff,$dd,$dd,$df,$f8,$f8,$f8,$dd
|
|
.byte $ff,$ff,$dd,$dd,$dd,$dd,$ff,$ff,$ff,$dd
|
|
.byte $ff,$fd,$fd,$fd,$dd,$dd,$dd,$dd,$dd,$bd
|
|
.byte $ff,$bb,$bb,$bb,$ff,$7d,$7d,$7d,$bb,$bb
|
|
.byte $ff,$55,$bb,$bb,$ff,$07,$57,$55,$55,$5b
|
|
.byte $ff,$55,$bb,$5b,$ff,$85,$50,$50,$50,$50
|
|
.byte $8f,$f5,$f5,$f5,$8f,$80,$80,$80,$80,$80
|
|
|
|
atrus_sprite_hold_page: ; at 15,6
|
|
.byte 9,11
|
|
.byte $00,$00,$55,$77,$77,$77,$77,$77,$77
|
|
.byte $00,$00,$77,$77,$77,$88,$88,$88,$87
|
|
.byte $70,$00,$77,$77,$88,$bb,$bb,$b8,$88
|
|
.byte $77,$00,$77,$77,$bb,$0b,$3b,$0b,$bb
|
|
.byte $77,$00,$f7,$df,$bb,$bb,$33,$bb,$bb
|
|
.byte $77,$ff,$df,$dd,$8b,$88,$88,$88,$8b
|
|
.byte $f7,$ff,$dd,$dd,$88,$88,$80,$88,$88
|
|
.byte $ff,$ff,$dd,$dd,$df,$f8,$f8,$f8,$dd
|
|
.byte $ff,$dd,$dd,$dd,$dd,$ff,$ff,$dd,$dd
|
|
.byte $fd,$bd,$bd,$bd,$fd,$fd,$fd,$fd,$bd
|
|
.byte $bb,$bb,$bb,$fb,$ff,$ff,$ff,$bb,$bb
|
|
|
|
atrus_sprite_hold_book: ; at 15,6
|
|
.byte 9,12
|
|
.byte $00,$00,$55,$77,$87,$87,$87,$77,$77
|
|
.byte $00,$00,$77,$87,$b8,$b8,$88,$88,$77
|
|
.byte $70,$00,$77,$b8,$bb,$bb,$bb,$b8,$77
|
|
.byte $77,$00,$77,$bb,$b0,$33,$b0,$bb,$77
|
|
.byte $77,$00,$f7,$bb,$8b,$83,$8b,$bb,$d7
|
|
.byte $77,$ff,$df,$88,$88,$08,$88,$88,$dd
|
|
.byte $f7,$ff,$dd,$f8,$88,$88,$88,$d8,$dd
|
|
.byte $ff,$ff,$dd,$dd,$df,$ff,$ff,$fd,$dd
|
|
.byte $ff,$dd,$dd,$88,$88,$88,$88,$88,$dd
|
|
.byte $fd,$bd,$bd,$b8,$88,$88,$88,$88,$bd
|
|
.byte $bb,$bb,$bb,$8b,$88,$88,$88,$bb,$bb
|
|
.byte $77,$77,$77,$78,$08,$58,$58,$58,$5b
|
|
|
|
atrus_sprite_place_page: ; at 15,6
|
|
.byte 10,12
|
|
.byte $00,$00,$55,$77,$87,$87,$87,$77,$77,$77
|
|
.byte $00,$00,$77,$87,$b8,$b8,$88,$88,$77,$77
|
|
.byte $70,$00,$77,$b8,$bb,$bb,$bb,$b8,$77,$77
|
|
.byte $77,$00,$77,$bb,$b0,$33,$b0,$bb,$77,$77
|
|
.byte $77,$00,$f7,$bb,$8b,$83,$8b,$bb,$d7,$d7
|
|
.byte $77,$ff,$df,$88,$88,$08,$88,$88,$dd,$dd
|
|
.byte $f7,$ff,$dd,$f8,$88,$88,$88,$d8,$dd,$dd
|
|
.byte $ff,$ff,$dd,$dd,$df,$ff,$ff,$fd,$dd,$dd
|
|
.byte $ff,$77,$7d,$dd,$dd,$ff,$ff,$dd,$dd,$dd
|
|
.byte $ff,$bd,$77,$7d,$dd,$dd,$dd,$bd,$bd,$fd
|
|
.byte $bb,$bb,$bb,$77,$7d,$7d,$7b,$7b,$bb,$ff
|
|
.byte $87,$87,$87,$87,$08,$58,$58,$58,$5b,$5f
|
|
|
|
atrus_sprite_sad: ; at 14,14
|
|
.byte 11,8
|
|
.byte $77,$77,$00,$f7,$f7,$b0,$33,$b3,$b8,$88,$d7
|
|
.byte $77,$77,$ff,$df,$df,$8b,$33,$bb,$bb,$ff,$dd
|
|
.byte $77,$f7,$ff,$dd,$fd,$88,$80,$88,$fb,$ff,$fd
|
|
.byte $f7,$ff,$ff,$dd,$dd,$df,$f8,$f8,$ff,$ff,$ff
|
|
.byte $ff,$ff,$df,$dd,$dd,$dd,$ff,$dd,$ff,$ff,$ff
|
|
.byte $ff,$ff,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$ff,$ff
|
|
.byte $bb,$bb,$dd,$dd,$7d,$7d,$7d,$7d,$7d,$df,$ff
|
|
.byte $ff,$57,$57,$57,$57,$08,$58,$58,$58,$58,$8f
|
|
|
|
atrus_sprite_link: ; at 15,6
|
|
.byte 10,12
|
|
.byte $00,$00,$55,$77,$87,$87,$87,$77,$77,$77
|
|
.byte $00,$00,$77,$87,$b8,$b8,$88,$88,$77,$77
|
|
.byte $70,$00,$77,$b8,$bb,$bb,$bb,$b8,$77,$77
|
|
.byte $77,$00,$77,$bb,$b0,$33,$b0,$bb,$77,$77
|
|
.byte $77,$00,$f7,$bb,$8b,$83,$8b,$bb,$d7,$d7
|
|
.byte $77,$ff,$df,$88,$88,$08,$88,$88,$dd,$dd
|
|
.byte $f7,$ff,$dd,$f8,$88,$88,$88,$d8,$dd,$dd
|
|
.byte $ff,$ff,$dd,$dd,$df,$ff,$ff,$fd,$dd,$dd
|
|
.byte $ff,$df,$dd,$dd,$dd,$ff,$ff,$dd,$dd,$dd
|
|
.byte $ff,$dd,$dd,$dd,$dd,$dd,$dd,$bd,$bd,$fd
|
|
.byte $bb,$bb,$bd,$bd,$7d,$7d,$7b,$7b,$bb,$ff
|
|
.byte $87,$87,$57,$57,$08,$58,$58,$58,$58,$5f
|
|
|
|
atrus_sprite_going: ; at 13,6
|
|
.byte 15,12
|
|
.byte $77,$00,$00,$00,$55,$77,$77,$87,$77,$77,$77,$77,$77,$07,$00
|
|
.byte $77,$77,$00,$00,$77,$77,$78,$b7,$78,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$70,$00,$77,$77,$7b,$b7,$7b,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$70,$37,$70,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$7b,$87,$7b,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$78,$07,$78,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$f7,$78,$87,$78,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$d7,$7f,$f7,$7f,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$50,$7d,$d7,$7d,$f7,$7f,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$f7,$55,$7d,$d7,$7d,$d7,$77,$b7,$b7,$f7,$77,$00,$00
|
|
.byte $77,$ff,$bb,$bb,$bd,$bd,$7d,$f7,$fb,$fb,$bb,$ff,$77,$00,$00
|
|
.byte $22,$ff,$8f,$8f,$8f,$8f,$08,$58,$58,$58,$58,$8f,$87,$40,$00
|
|
|
|
atrus_sprite_gone: ; at 13,6
|
|
.byte 15,13
|
|
.byte $77,$00,$00,$00,$55,$77,$77,$77,$77,$77,$77,$77,$77,$07,$00
|
|
.byte $77,$77,$00,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$70,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$00,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$50,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$55,$77,$77,$77,$77,$77,$77,$77,$77,$77,$00,$00
|
|
.byte $77,$77,$77,$55,$77,$77,$f7,$f7,$f7,$f7,$77,$77,$77,$00,$00
|
|
.byte $22,$87,$8f,$8f,$8f,$8f,$08,$58,$58,$58,$58,$87,$87,$40,$00
|
|
.byte $22,$25,$85,$85,$85,$85,$85,$50,$50,$50,$50,$40,$44,$04,$80
|
|
|
|
atrus_sprite_book_down: ; at 15,6
|
|
.byte 12,12
|
|
.byte $00,$00,$55,$77,$87,$87,$87,$77,$77,$77,$77,$07
|
|
.byte $00,$00,$77,$87,$b8,$b8,$88,$88,$77,$77,$77,$00
|
|
.byte $70,$00,$77,$b8,$bb,$bb,$bb,$b8,$77,$77,$77,$00
|
|
.byte $77,$00,$77,$bb,$b0,$33,$b0,$bb,$77,$77,$77,$00
|
|
.byte $77,$00,$f7,$bb,$8b,$83,$8b,$bb,$d7,$d7,$77,$00
|
|
.byte $77,$ff,$df,$88,$88,$08,$88,$88,$dd,$dd,$dd,$00
|
|
.byte $f7,$ff,$dd,$f8,$88,$88,$88,$d8,$dd,$dd,$ff,$f0
|
|
.byte $ff,$ff,$dd,$dd,$df,$ff,$ff,$fd,$dd,$dd,$ff,$ff
|
|
.byte $ff,$ff,$dd,$dd,$dd,$ff,$dd,$dd,$dd,$dd,$ff,$ff
|
|
.byte $ff,$bd,$dd,$dd,$dd,$88,$88,$88,$88,$b8,$bb,$bb
|
|
.byte $bb,$bb,$bb,$db,$dd,$d8,$d8,$d8,$d8,$d8,$5b,$55
|
|
.byte $7b,$7b,$7b,$7d,$0d,$5d,$5d,$5d,$5d,$5d,$5f,$4f
|
|
|
|
|
|
|
|
;
|
|
; ending, both
|
|
;
|
|
atrus_text_both:
|
|
.byte 0,20,"AH, MY FRIEND. YOU'VE RETURNED.",0
|
|
.byte 0,21,"WE MEET FACE-TO-FACE.",0
|
|
.byte 0,22,"AND THE PAGE, DID YOU BRING THE PAGE?",0
|
|
.byte 0,23," ",0
|
|
|
|
; ending, no white page
|
|
;
|
|
|
|
atrus_text_nopage1:
|
|
.byte 0,20,"YOU DIDN'T BRING THE PAGE.",0
|
|
.byte 0,21,"YOU DIDN'T BRING THE PAGE!",0
|
|
.byte 0,22,"WHAT KIND OF FOOL ARE YOU?!",0
|
|
.byte 0,23,"DID YOU NOT TAKE MY WARNING SERIOUSLY?",0
|
|
|
|
atrus_text_nopage2:
|
|
.byte 17,20,"*SIGH*",0
|
|
.byte 0,21," ",0
|
|
.byte 12,22,"WELCOME TO D'NI",0
|
|
.byte 2,23,"YOU AND I WILL LIVE HERE... FOREVER.",0
|
|
|
|
|
|
; ending, with white page
|
|
|
|
atrus_gimme_page1:
|
|
.byte 0,20," ",0
|
|
.byte 3,21,"GIVE IT TO ME... GIVE ME THE PAGE",0
|
|
.byte 0,22," ",0
|
|
.byte 0,23," ",0
|
|
|
|
atrus_gimme_page2:
|
|
.byte 0,20," ",0
|
|
.byte 8,21,"PLEASE GIVE THE PAGE...",0
|
|
.byte 0,22," ",0
|
|
.byte 0,23," ",0
|
|
|
|
|
|
;0123456789012345678901234567890123456789
|
|
atrus_text_right:
|
|
.byte 0,20," ",0
|
|
.byte 6,21,"YOU'VE DONE THE RIGHT THING.",0
|
|
.byte 3,22,"I HAVE A DIFFICULT CHOICE TO MAKE.",0
|
|
.byte 0,23," ",0
|
|
|
|
atrus_text_sons:
|
|
.byte 0,20," ",0
|
|
.byte 10,21,"MY SONS BETRAYED ME.",0
|
|
.byte 9,22,"I KNOW WHAT I MUST DO.",0
|
|
.byte 9,23,"I SHALL RETURN SHORTLY",0
|
|
|
|
; [links away]
|
|
|
|
; [links in]
|
|
|
|
atrus_text_itisdone:
|
|
;01234567890123456789012345678901234567890
|
|
.byte 3,20,"IT IS DONE. I HAVE MANY QUESTIONS,",0
|
|
.byte 2,21,"BUT MY WRITING CANNOT WAIT. MY DELAY",0
|
|
.byte 2,22,"MAY HAVE HAD A CATASTROPHIC IMPACT ON",0
|
|
.byte 1,23,"THE WORLD WHERE MY WIFE IS HELD HOSTAGE",0
|
|
|
|
atrus_text_reward:
|
|
;01234567890123456789012345678901234567890
|
|
.byte 2,20,"A REWARD? I'M SORRY BUT ALL I HAVE TO",0
|
|
.byte 2,21,"OFFER IS THE LIBRARY ON MYST AND THE",0
|
|
.byte 10,22,"BOOKS CONTAINED THERE.",0
|
|
.byte 2,23,"FEEL FREE TO EXPLORE AT YOUR LEISURE.",0
|
|
|
|
atrus_text_foe:
|
|
;01234567890123456789012345678901234567890
|
|
.byte 1,20,"ALSO: I AM FIGHTING A FOE MUCH GREATER",0
|
|
.byte 8,21,"THAN MY SONS CAN IMAGINE.",0
|
|
.byte 5,22,"I MIGHT REQUEST YOUR ASSISTANCE.",0
|
|
.byte 6,23,"UNTIL THEN, HAVE FUN ON MYST",0
|
|
|
|
atrus_text_nothing:
|
|
.byte 0,20," ",0
|
|
.byte 0,21," ",0
|
|
.byte 0,22," ",0
|
|
.byte 0,23," ",0
|
|
|
|
|
|
; just speed up talking
|
|
; also, bump past giving page
|
|
|
|
; so 0,1,2 -> increment
|
|
; 3,4 -> no increment
|
|
; 7,8 -> 9
|
|
; 9..ATRUS_WRITING -> increment
|
|
|
|
; ATRUS_WRITING+ -> nothing
|
|
|
|
poke_atrus:
|
|
lda DNI_PROGRESS
|
|
cmp #ATRUS_WRITING
|
|
bcs no_speedup ; bge
|
|
|
|
cmp #3 ; don't skip too far in no page case
|
|
beq no_speedup
|
|
cmp #4
|
|
beq no_speedup
|
|
|
|
cmp #7
|
|
beq give_atrus_page
|
|
cmp #8
|
|
bne no_extra_skip
|
|
give_atrus_page:
|
|
lda #8
|
|
sta DNI_PROGRESS
|
|
lda #0
|
|
sta HOLDING_PAGE
|
|
|
|
no_extra_skip:
|
|
|
|
jsr skip_to_next_stage
|
|
|
|
no_speedup:
|
|
rts
|
|
|
|
|
|
|
|
;==================================
|
|
; skip_to_next_stage
|
|
;==================================
|
|
skip_to_next_stage:
|
|
|
|
inc DNI_PROGRESS
|
|
|
|
lda DNI_PROGRESS
|
|
asl
|
|
tay
|
|
|
|
lda atrus_delay,Y
|
|
sta FRAMEH
|
|
lda atrus_delay+1,Y
|
|
sta FRAMEL
|
|
|
|
lda DNI_PROGRESS
|
|
cmp #19
|
|
bne all_done_inc
|
|
|
|
; update state now that game is over
|
|
lda #1
|
|
sta GAME_COMPLETE
|
|
jsr update_game_complete
|
|
|
|
all_done_inc:
|
|
rts
|
|
|
|
|
|
;====================================
|
|
; draw atrus
|
|
;====================================
|
|
draw_atrus:
|
|
|
|
; handle writing separately
|
|
|
|
lda DNI_PROGRESS
|
|
cmp #ATRUS_WRITING
|
|
bcc not_writing ; blt
|
|
|
|
atrus_is_writing:
|
|
|
|
lda FRAMEL
|
|
and #$3f
|
|
bne done_increment
|
|
|
|
lda DNI_PROGRESS
|
|
eor #$1
|
|
sta DNI_PROGRESS
|
|
|
|
jmp done_increment
|
|
|
|
|
|
;======================
|
|
; not writing
|
|
;======================
|
|
|
|
not_writing:
|
|
|
|
; calc next frame
|
|
lda FRAMEH
|
|
cmp #$2
|
|
bne done_increment ; only increment occasionally
|
|
|
|
do_increment:
|
|
|
|
jsr skip_to_next_stage
|
|
|
|
lda DNI_PROGRESS ; special cases
|
|
cmp #4 ; if 4, done nopage case
|
|
bne next_case
|
|
|
|
lda #ATRUS_WRITING ; if not have it, end of text, skip to end
|
|
sta DNI_PROGRESS
|
|
jmp done_increment
|
|
|
|
next_case:
|
|
; have him ask until you give page
|
|
cmp #9
|
|
bne done_increment
|
|
|
|
lda #7
|
|
sta DNI_PROGRESS
|
|
|
|
done_increment:
|
|
|
|
; only draw the words if looking at atrus
|
|
lda DIRECTION
|
|
and #$f
|
|
cmp #DIRECTION_N
|
|
bne done_draw_atrus
|
|
|
|
; put words
|
|
|
|
bit TEXTGR ; in case turned off by turning mid-speech
|
|
|
|
jsr clear_bottom
|
|
|
|
lda DNI_PROGRESS
|
|
asl
|
|
tay
|
|
lda atrus_text,Y
|
|
sta OUTL
|
|
lda atrus_text+1,Y
|
|
sta OUTH
|
|
|
|
lda #$09 ; ora
|
|
sta ps_smc1
|
|
lda #$80
|
|
sta ps_smc1+1 ; set regular text
|
|
|
|
jsr move_and_print
|
|
jsr move_and_print
|
|
jsr move_and_print
|
|
jsr move_and_print
|
|
|
|
lda #$29 ; and
|
|
sta ps_smc1
|
|
lda #$3f
|
|
sta ps_smc1+1 ; restore inverse text
|
|
|
|
; draw sprite
|
|
|
|
lda DNI_PROGRESS
|
|
asl
|
|
tay
|
|
|
|
lda atrus_xy,Y
|
|
sta XPOS
|
|
|
|
lda atrus_xy+1,Y
|
|
sta YPOS
|
|
|
|
lda atrus_sprites,Y
|
|
sta INL
|
|
lda atrus_sprites+1,Y
|
|
sta INH
|
|
|
|
jsr put_sprite_crop
|
|
done_draw_atrus:
|
|
rts
|
|
|
|
|
|
|
|
;==========================
|
|
; visit atrus
|
|
; mostly has to do with getting dialog right
|
|
|
|
visit_atrus:
|
|
; start part-way through pause
|
|
lda #1
|
|
sta FRAMEH
|
|
lda #$80
|
|
sta FRAMEL ; want consistent timers
|
|
|
|
; see if it's the first time we've opened book
|
|
lda DNI_PROGRESS
|
|
beq actually_talk_with_atrus
|
|
|
|
; skip to just writing if not
|
|
lda #ATRUS_WRITING
|
|
sta DNI_PROGRESS
|
|
|
|
actually_talk_with_atrus:
|
|
|
|
lda HOLDING_PAGE
|
|
and #$c0
|
|
cmp #HOLDING_WHITE_PAGE
|
|
bne not_holding_page
|
|
|
|
lda #HAVE_PAGE_START
|
|
sta DNI_PROGRESS
|
|
|
|
not_holding_page:
|
|
|
|
lda #DIRECTION_N|DIRECTION_SPLIT|DIRECTION_ONLY_POINT
|
|
sta DIRECTION
|
|
|
|
lda #DNI_DESK
|
|
sta LOCATION
|
|
jmp change_location
|
|
|
|
|
|
|
|
;==========================
|
|
; update game complete
|
|
;==========================
|
|
; hook up linking books
|
|
; disable poking of atrus
|
|
update_game_complete:
|
|
lda GAME_COMPLETE
|
|
beq done_update_game_complete ; do nothing if not
|
|
|
|
ldy #LOCATION_NORTH_EXIT
|
|
lda #DNI_MIST_BOOK
|
|
sta location1,Y ; DNI_DESK
|
|
|
|
ldy #LOCATION_NORTH_EXIT_DIR
|
|
lda #DIRECTION_N
|
|
sta location1,Y ; DNI_DESK
|
|
|
|
ldy #LOCATION_SPECIAL_EXIT
|
|
lda #$ff
|
|
sta location1,Y ; DNI_DESK
|
|
|
|
done_update_game_complete:
|
|
rts
|