dos33fsprogs/demos/trogdor/trogdor.s

383 lines
5.4 KiB
ArmAsm
Raw Normal View History

2024-01-11 06:25:38 +00:00
; TROGDOR 2024
.include "hardware.inc"
.include "zp.inc"
.include "qload.inc"
.include "music.inc"
.include "flames.inc"
2024-01-11 06:25:38 +00:00
trogdor_main:
;======================================
; init
;======================================
2024-01-20 18:48:33 +00:00
; clear screen to white0
2024-01-11 06:25:38 +00:00
2024-01-20 18:48:33 +00:00
lda #$0
2024-01-11 06:25:38 +00:00
sta DRAW_PAGE
2024-01-20 20:41:58 +00:00
; clear PAGE1 to white
2024-01-20 18:48:33 +00:00
ldy #$7f
jsr hgr_clear_screen
; set to HIRES PAGE1
bit SET_GR
bit HIRES
bit FULLGR
bit PAGE1
2024-01-11 06:25:38 +00:00
2024-01-20 20:41:58 +00:00
lda #$20
sta DRAW_PAGE
2024-01-11 06:25:38 +00:00
;======================================
2024-01-20 18:48:33 +00:00
; draw SCENE 1
2024-01-11 06:25:38 +00:00
;======================================
2024-01-20 18:48:33 +00:00
; scroll in zoomed in trogdor from right to left
; for 60 frames (roughly 2s)
2024-01-20 20:41:58 +00:00
; decompress trogdor to $6000
2024-01-17 07:03:32 +00:00
2024-01-11 06:25:38 +00:00
lda #<trog00_graphics
sta zx_src_l+1
lda #>trog00_graphics
sta zx_src_h+1
2024-01-20 18:48:33 +00:00
lda #$60
2024-01-11 06:25:38 +00:00
jsr zx02_full_decomp
2024-01-20 20:41:58 +00:00
; copy+magnify to PAGE2
2024-01-17 07:03:32 +00:00
2024-01-20 20:41:58 +00:00
lda #$60
jsr hgr_copy_magnify
2024-01-17 07:03:32 +00:00
2024-01-20 20:41:58 +00:00
jsr horiz_pan
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
; clear to white
ldy #$7f
jsr hgr_clear_screen
2024-01-17 07:03:32 +00:00
jsr horiz_pan
2024-01-20 18:48:33 +00:00
jsr hgr_page_flip
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
;======================================
; draw SCENE 2
;======================================
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
; draw flames
; left flame short 2 frames
; left tall 1212 roughly 10 frames (1/2 s)
; both short 2 frames
; right tall 1212 roughly 10 frames
; right short 2 frames
; left frame short 2 frames
; left tall 1212 roughly 10 frames (1/2 s)
; left short 2 frames
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
;======================================
; left flame short 2 frames
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
; clear to white
ldy #$7f
jsr hgr_clear_screen
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
ldx #8
jsr draw_flame_small_1
jsr hgr_page_flip
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
lda #2
jsr wait_ticks
;=================================================
; left tall 1212 roughly 10 frames (1/2 s)
lda #2
sta ANIMATE_COUNT
left_flame_animate1:
ldy #$7f
jsr hgr_clear_screen
ldx #8
jsr draw_flame_tall_1
jsr hgr_page_flip
lda #2
jsr wait_ticks
ldy #$7f
jsr hgr_clear_screen
ldx #8
jsr draw_flame_tall_2
jsr hgr_page_flip
lda #2
jsr wait_ticks
dec ANIMATE_COUNT
bne left_flame_animate1
;==============================
; both short 2 frames
; clear to white
ldy #$7f
jsr hgr_clear_screen
ldx #8
jsr draw_flame_small_1
ldx #24
jsr draw_flame_small_1
jsr hgr_page_flip
lda #2
jsr wait_ticks
;===========================================
; right tall 1212 roughly 10 frames
lda #2
sta ANIMATE_COUNT
right_flame_animate1:
ldy #$7f
jsr hgr_clear_screen
ldx #24
jsr draw_flame_tall_2
jsr hgr_page_flip
lda #2
jsr wait_ticks
ldy #$7f
jsr hgr_clear_screen
ldx #24
jsr draw_flame_tall_1
jsr hgr_page_flip
lda #2
jsr wait_ticks
dec ANIMATE_COUNT
bne right_flame_animate1
;=============================
; right short 2 frames
; clear to white
ldy #$7f
jsr hgr_clear_screen
ldx #24
jsr draw_flame_small_2
jsr hgr_page_flip
lda #2
jsr wait_ticks
;=============================
; left short 2 frames
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
; clear to white
ldy #$7f
jsr hgr_clear_screen
2024-01-17 07:03:32 +00:00
2024-01-20 18:48:33 +00:00
ldx #8
jsr draw_flame_small_1
jsr hgr_page_flip
lda #2
jsr wait_ticks
;================================================
; left tall 1212 roughly 10 frames (1/2 s)
lda #2
sta ANIMATE_COUNT
left_flame_animate2:
ldy #$7f
jsr hgr_clear_screen
ldx #8
jsr draw_flame_tall_1
jsr hgr_page_flip
lda #2
jsr wait_ticks
ldy #$7f
jsr hgr_clear_screen
ldx #8
jsr draw_flame_tall_2
jsr hgr_page_flip
lda #2
jsr wait_ticks
dec ANIMATE_COUNT
bne left_flame_animate2
;=============================
; left short 2 frames
; clear to white
ldy #$7f
jsr hgr_clear_screen
ldx #8
jsr draw_flame_small_1
jsr hgr_page_flip
lda #2
jsr wait_ticks
;=============================
; blank screen
ldy #$7f
jsr hgr_clear_screen
jsr hgr_page_flip
2024-01-17 07:03:32 +00:00
2024-01-11 06:25:38 +00:00
jsr wait_until_keypress
; second
lda #<trog03_graphics
sta zx_src_l+1
lda #>trog03_graphics
sta zx_src_h+1
lda #$20
jsr zx02_full_decomp
finished:
jmp finished
; start music
2024-01-20 18:48:33 +00:00
; lda SOUND_STATUS
; and #SOUND_MOCKINGBOARD
; beq no_music
; cli ; enable sound
;no_music:
2024-01-11 06:25:38 +00:00
;0123456789012345678901234567890123456789
2024-01-20 18:48:33 +00:00
;merry_text:
; .byte " MERRY CHRISTMAS!!! MERRY CHRISTMAS!!! ME"
2024-01-11 06:25:38 +00:00
trog00_graphics:
2024-01-20 20:41:58 +00:00
.incbin "graphics/actual00_trog_cottage.hgr.zx02"
2024-01-11 06:25:38 +00:00
trog03_graphics:
.incbin "graphics/trog03_man.hgr.zx02"
.include "wait_keypress.s"
.include "irq_wait.s"
2024-01-17 07:03:32 +00:00
hposn_low = $1e00
hposn_high = $1f00
.include "hgr_sprite_big_mask.s"
2024-01-20 20:41:58 +00:00
.include "horiz_scroll_simple.s"
.include "hgr_copy_magnify.s"
2024-01-20 18:48:33 +00:00
;===============================
; draw_flame_small
;===============================
; x location in X
draw_flame_small_1:
lda #<left_flame_small
sta INL
lda #>left_flame_small
sta INH
lda #<left_flame_small_mask
sta MASKL
lda #>left_flame_small_mask
bne draw_flame_small_common ; bra
draw_flame_small_2:
lda #<left_flame_small
sta INL
lda #>left_flame_small
sta INH
lda #<left_flame_small_mask
sta MASKL
lda #>left_flame_small_mask
draw_flame_small_common:
sta MASKH
txa
; lda #8
sta SPRITE_X
lda #152
sta SPRITE_Y
jsr hgr_draw_sprite_big_mask
rts
;===============================
; draw_flame_tall
;===============================
; X location in X
draw_flame_tall_1:
lda #<left_flame_big
sta INL
lda #>left_flame_big
sta INH
lda #<left_flame_big_mask
sta MASKL
lda #>left_flame_big_mask
sta MASKH
bne draw_left_flame_common ; bra
draw_flame_tall_2:
; draw right flame
lda #<right_flame_big
sta INL
lda #>right_flame_big
sta INH
lda #<right_flame_big_mask
sta MASKL
lda #>right_flame_big_mask
sta MASKH
draw_left_flame_common:
; lda #8
txa
sta SPRITE_X
lda #54
sta SPRITE_Y
jsr hgr_draw_sprite_big_mask
rts