From c369209b1bea5cbf02bdd6ae0bde45e0945ac10c Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 30 Jun 2020 19:18:53 -0400 Subject: [PATCH] mist: nibel: viewer in blue room --- mist/common_routines.inc | 1 + mist/generate_common.c | 1 + mist/gr_fast_clear.s | 52 +++---- mist/graphics_nibel/blue_house_e.png | Bin 15932 -> 15865 bytes mist/graphics_nibel/viewer_pics.png | Bin 0 -> 1199 bytes mist/leveldata_nibel.inc | 5 +- mist/nibel.s | 57 +++++++- mist/nibel_switches.s | 209 +++++++++++++++++++++++++-- mist/zp.inc | 1 + 9 files changed, 290 insertions(+), 36 deletions(-) create mode 100644 mist/graphics_nibel/viewer_pics.png diff --git a/mist/common_routines.inc b/mist/common_routines.inc index 491d8350..5625771a 100644 --- a/mist/common_routines.inc +++ b/mist/common_routines.inc @@ -21,6 +21,7 @@ end_level =$169d gr_copy_to_current =$16bf ; gr_fast_clear.s +clear_bottom =$17e5 clear_all =$1823 clear_all_color =$1848 diff --git a/mist/generate_common.c b/mist/generate_common.c index 9c4b04aa..5e85c45c 100644 --- a/mist/generate_common.c +++ b/mist/generate_common.c @@ -68,6 +68,7 @@ int main(int argc, char **argv) { printf("\n"); printf("; gr_fast_clear.s\n"); + find_address("clear_bottom"); find_address("clear_all"); find_address("clear_all_color"); printf("\n"); diff --git a/mist/gr_fast_clear.s b/mist/gr_fast_clear.s index 7465131b..76035a21 100644 --- a/mist/gr_fast_clear.s +++ b/mist/gr_fast_clear.s @@ -19,31 +19,6 @@ ; ; rts -clear_bottoms: - - lda DRAW_PAGE - pha - - ;=================================== - ; Clear bottom of page 0 - ;=================================== - - lda #$0 - sta DRAW_PAGE - jsr clear_bottom - - ;=================================== - ; Clear bottom of page 1 - ;=================================== - - lda #$4 - sta DRAW_PAGE - jsr clear_bottom - - pla - sta DRAW_PAGE - - rts @@ -155,6 +130,33 @@ __cbf2: ; rts +clear_bottoms: + + lda DRAW_PAGE + pha + + ;=================================== + ; Clear bottom of page 0 + ;=================================== + + lda #$0 + sta DRAW_PAGE + jsr clear_bottom + + ;=================================== + ; Clear bottom of page 1 + ;=================================== + + lda #$4 + sta DRAW_PAGE + jsr clear_bottom + + pla + sta DRAW_PAGE + + rts + + ;========================================================= ; clear_all ;========================================================= diff --git a/mist/graphics_nibel/blue_house_e.png b/mist/graphics_nibel/blue_house_e.png index 198e1df0568ce7d0be7c718aa770b7cdffdaa0b7..bfccef0b71b5e158ae8e051c5f94d0173a4b86ed 100644 GIT binary patch delta 15719 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 Z{{XQek3q>DD_Z~n002ovPDHLkV1mI7(q#Yu delta 15769 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 N002ovPDHLkV1nU?CrkhU literal 0 HcmV?d00001 diff --git a/mist/leveldata_nibel.inc b/mist/leveldata_nibel.inc index be527876..8a028d6e 100644 --- a/mist/leveldata_nibel.inc +++ b/mist/leveldata_nibel.inc @@ -169,5 +169,8 @@ location8: .word projector_e_lzsa ; east bg .word $0000 ; west bg .byte BG_EAST - .byte $ff + .byte DIRECTION_E ; special exit + .byte 14,24 ; special x + .byte 34,40 ; special y + .word projector_button-1 ; special function diff --git a/mist/nibel.s b/mist/nibel.s index d3f86a2c..bda4ba4d 100644 --- a/mist/nibel.s +++ b/mist/nibel.s @@ -75,7 +75,8 @@ game_loop: lda LOCATION cmp #NIBEL_BLUE_ROOM beq fg_draw_blue_page -; beq animate_mist_book + cmp #NIBEL_BLUE_HOUSE_VIEWER + beq animate_viewer jmp nothing_special @@ -83,6 +84,59 @@ fg_draw_blue_page: jsr draw_blue_page jmp nothing_special +animate_viewer: + lda ANIMATE_FRAME + beq nothing_special + cmp #6 + beq viewer_done + + sec + sbc #1 + asl + tay + + lda current_button_animation + sta OUTL + lda current_button_animation+1 + sta OUTH + lda (OUTL),Y + sta INL + iny + lda (OUTL),Y + sta INH + + lda #14 + sta XPOS + + lda #10 + sta YPOS + jsr put_sprite_crop + + lda FRAMEL + and #$f + bne nothing_special + + lda ANIMATE_FRAME + cmp #5 + bne short_frame + +long_frame: + inc LONG_FRAME + lda LONG_FRAME + cmp #30 + bne nothing_special + +short_frame: + inc ANIMATE_FRAME + + lda #0 + sta LONG_FRAME + jmp nothing_special + + +viewer_done: + lda #0 + sta ANIMATE_FRAME nothing_special: @@ -140,3 +194,4 @@ really_exit: ; book pages .include "handle_pages.s" + diff --git a/mist/nibel_switches.s b/mist/nibel_switches.s index 97ce035b..84b6d996 100644 --- a/mist/nibel_switches.s +++ b/mist/nibel_switches.s @@ -75,6 +75,110 @@ no_draw_page: rts +projector_button: + + lda DRAW_PAGE + pha + + ; mixed text and graphics + bit TEXTGR + + lda #$8 + sta DRAW_PAGE + + jsr clear_bottom + + ; reset button colors + lda #$44 + sta $D50+16 + sta $D50+18 + sta $D50+20 + sta $D50+22 + + lda #$cc + + ldy CURSOR_X + cpy #19 + bcs button3 + cpy #17 + bcs button2 + cpy #15 + bcs button1 +button0: + + sta $D50+16 + + lda #button0_and_2_animation + sta current_button_animation+1 + + lda #viewer1_text + sta OUTH + + jmp done_buttons + +button1: + + sta $D50+18 + + lda #button1_animation + sta current_button_animation+1 + + lda #viewer2_text + sta OUTH + + jmp done_buttons + +button2: + sta $D50+20 + + lda #button0_and_2_animation + sta current_button_animation+1 + + lda #viewer3_text + sta OUTH + + jmp done_buttons + +button3: + sta $D50+22 + + lda #button3_animation + sta current_button_animation+1 + + lda #viewer4_text + sta OUTH + jsr move_and_print + jsr move_and_print + jsr move_and_print + + +done_buttons: + jsr move_and_print + pla + sta DRAW_PAGE + + lda #1 + sta ANIMATE_FRAME + + rts + + ; viewer @@ -83,18 +187,18 @@ no_draw_page: ; [talking in another language] viewer1_text: -.byte "[WORDS IN ANOTHER LANGUAGE]" +.byte 5,22,"[ WORDS IN ANOTHER LANGUAGE ]",0 ; position 2 ; [scary talking in another language] viewer2_text: -.byte "[OMINIOUS WORDS IN ANOTHER LANGUAGE]" +.byte 1,22,"[ OMINOUS WORDS IN ANOTHER LANGUAGE ]",0 ; position 3 ; [ more talking in another language] viewer3_text: -.byte "[MORE OMINIOUS WORDS IN ANOTHER LANGUAGE]" +.byte 9,22,"[ MORE OMINOUS WORDS ]",0 ; position 4 ; Sirrus: I hope I pushed the right button @@ -104,9 +208,96 @@ viewer3_text: ; brother viewer4_text: -; 1 2 3 -; 0123456789012345678901234567890123456789 -.byte "I HOPE I PUSHED THE RIGHT BUTTON." -.byte "WHAT AN INTERESTING DEVICE YOU HAVE HERE" -.byte "NOT ERASING ANYTHING IMPORTANT, AM I?" -.byte "TAKE ONLY ONE PAGE MY DEAR BROTHER." +; 1 2 3 +; 0123456789012345678901234567890123456789 +.byte 4,20,"I HOPE I PUSHED THE RIGHT BUTTON.",0 +.byte 0,21,"WHAT AN INTERESTING DEVICE YOU HAVE HERE",0 +.byte 1,22,"NOT ERASING ANYTHING IMPORTANT, AM I?",0 +.byte 3,23,"TAKE ONLY ONE PAGE MY DEAR BROTHER.",0 + +current_button_animation: + .word button0_and_2_animation + +button0_and_2_animation: + .word viewer_static1_sprite + .word viewer_static2_sprite + .word viewer_static1_sprite + .word viewer_static2_sprite + .word viewer_ach_sprite + +button1_animation: + .word viewer_static1_sprite + .word viewer_static2_sprite + .word viewer_static1_sprite + .word viewer_static2_sprite + .word viewer_ach_zoom_sprite + +button3_animation: + .word viewer_static1_sprite + .word viewer_static2_sprite + .word viewer_static1_sprite + .word viewer_static2_sprite + .word viewer_sir_sprite + + + +viewer_static1_sprite: +.byte 12,8 +.byte $55,$fd,$2f,$62,$26,$65,$f0,$6f,$26,$65,$5d,$ff +.byte $ff,$65,$56,$62,$26,$ff,$55,$52,$26,$62,$ff,$65 +.byte $26,$62,$26,$55,$2f,$62,$26,$65,$f6,$6f,$26,$62 +.byte $26,$62,$f6,$6f,$55,$62,$26,$ff,$26,$55,$26,$62 +.byte $26,$ff,$26,$62,$26,$f5,$5f,$62,$26,$62,$55,$52 +.byte $2f,$62,$26,$62,$f6,$6f,$25,$52,$26,$62,$26,$65 +.byte $dd,$62,$26,$f2,$2f,$62,$26,$65,$56,$62,$26,$d2 +.byte $dd,$d2,$f6,$6f,$26,$02,$26,$62,$26,$55,$dd,$dd + +viewer_static2_sprite: +.byte 12,8 +.byte $55,$fd,$6f,$26,$62,$25,$f0,$2f,$62,$25,$5d,$ff +.byte $ff,$25,$52,$26,$62,$ff,$55,$62,$62,$26,$ff,$25 +.byte $02,$06,$02,$55,$0f,$06,$02,$05,$f2,$0f,$02,$06 +.byte $00,$00,$f0,$0f,$55,$00,$00,$ff,$00,$55,$00,$00 +.byte $60,$ff,$60,$20,$60,$f5,$5f,$20,$60,$20,$55,$50 +.byte $6f,$26,$62,$26,$f2,$2f,$65,$56,$62,$26,$62,$25 +.byte $dd,$26,$62,$f6,$6f,$26,$62,$25,$52,$26,$62,$d6 +.byte $dd,$d6,$f2,$2f,$62,$06,$62,$26,$62,$55,$dd,$dd + +viewer_ach_sprite: +.byte 12,8 +.byte $55,$fd,$0f,$00,$00,$05,$f0,$0f,$00,$05,$5d,$ff +.byte $ff,$05,$50,$20,$62,$ff,$55,$50,$00,$00,$ff,$05 +.byte $00,$00,$00,$55,$2f,$66,$26,$25,$f0,$0f,$00,$00 +.byte $00,$00,$f0,$6f,$55,$66,$62,$ff,$00,$55,$00,$00 +.byte $00,$ff,$00,$66,$66,$f5,$5f,$66,$00,$00,$55,$50 +.byte $0f,$00,$e0,$26,$f2,$2f,$25,$56,$00,$00,$00,$05 +.byte $dd,$0e,$e6,$f2,$6f,$62,$62,$05,$50,$00,$00,$d0 +.byte $dd,$d0,$f0,$0f,$02,$06,$02,$00,$00,$55,$dd,$dd + +viewer_ach_zoom_sprite: +.byte 12,8 +.byte $55,$fd,$6f,$66,$66,$05,$f0,$0f,$00,$65,$5d,$ff +.byte $ff,$e5,$5e,$66,$66,$ff,$55,$56,$66,$66,$ff,$05 +.byte $66,$e6,$6e,$55,$0f,$06,$06,$05,$f6,$6f,$66,$00 +.byte $66,$e6,$f6,$0f,$55,$00,$00,$ff,$00,$55,$66,$00 +.byte $66,$ff,$66,$68,$86,$f5,$5f,$68,$66,$6e,$55,$50 +.byte $6f,$e6,$6e,$66,$f6,$6f,$65,$56,$68,$86,$66,$05 +.byte $dd,$e6,$6e,$f6,$6f,$00,$00,$05,$50,$00,$00,$d0 +.byte $dd,$d6,$f6,$0f,$06,$00,$00,$00,$00,$55,$dd,$dd + +viewer_sir_sprite: +.byte 12,8 +.byte $55,$fd,$0f,$00,$00,$e5,$fe,$ef,$c0,$05,$5d,$ff +.byte $ff,$05,$50,$00,$ee,$ff,$55,$54,$ee,$44,$ff,$05 +.byte $00,$00,$00,$55,$4f,$ee,$44,$45,$fe,$4f,$00,$00 +.byte $00,$00,$f0,$0f,$55,$ce,$44,$ff,$ee,$55,$00,$00 +.byte $00,$ff,$00,$00,$4c,$f5,$5f,$44,$ee,$44,$55,$50 +.byte $2f,$32,$23,$00,$fe,$4f,$c5,$5e,$cc,$32,$23,$35 +.byte $dd,$32,$23,$f2,$2f,$34,$c4,$85,$5c,$32,$23,$d2 +.byte $dd,$d2,$f3,$3f,$23,$02,$2e,$8c,$c8,$55,$dd,$dd + + + + + + diff --git a/mist/zp.inc b/mist/zp.inc index ba2a0650..c0c49902 100644 --- a/mist/zp.inc +++ b/mist/zp.inc @@ -163,6 +163,7 @@ ANIMATE_FRAME = $E0 LEVEL_OVER = $E1 LOCATIONS_L = $E2 LOCATIONS_H = $E3 +LONG_FRAME = $E4 DISP_PAGE = $ED ; ALL DRAW_PAGE = $EE ; ALL