From 8ec46144a0ad85604408f7e0862f417c24009b9f Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 6 Feb 2019 23:08:04 -0500 Subject: [PATCH] ootw: add keypad approach --- ootw/Makefile | 3 +- ootw/intro.s | 71 +++++++++++++--- ootw/intro_graphics/04_keypad/Makefile | 13 ++- ootw/intro_graphics/04_keypad/approach01.png | Bin 0 -> 2229 bytes ootw/intro_graphics/04_keypad/approach02.png | Bin 0 -> 2990 bytes ootw/intro_graphics/04_keypad/approach03.png | Bin 0 -> 3023 bytes ootw/intro_graphics/04_keypad/approach04.png | Bin 0 -> 3162 bytes ootw/intro_graphics/04_keypad/approach05.png | Bin 0 -> 3208 bytes ootw/intro_graphics/04_keypad/approach06.png | Bin 0 -> 2845 bytes ootw/intro_graphics/04_keypad/approach07.png | Bin 0 -> 2798 bytes .../04_keypad/intro_approach.inc | 78 ++++++++++++++++++ 11 files changed, 151 insertions(+), 14 deletions(-) create mode 100644 ootw/intro_graphics/04_keypad/approach01.png create mode 100644 ootw/intro_graphics/04_keypad/approach02.png create mode 100644 ootw/intro_graphics/04_keypad/approach03.png create mode 100644 ootw/intro_graphics/04_keypad/approach04.png create mode 100644 ootw/intro_graphics/04_keypad/approach05.png create mode 100644 ootw/intro_graphics/04_keypad/approach06.png create mode 100644 ootw/intro_graphics/04_keypad/approach07.png create mode 100644 ootw/intro_graphics/04_keypad/intro_approach.inc diff --git a/ootw/Makefile b/ootw/Makefile index 372c4b11..82a55d59 100644 --- a/ootw/Makefile +++ b/ootw/Makefile @@ -67,7 +67,8 @@ intro.o: intro.s \ intro_graphics/03_elevator/intro_off_elevator.inc \ intro_graphics/03_elevator/intro_walking.inc \ intro_graphics/04_keypad/intro_scanner_door.inc \ - intro_graphics/04_keypad/intro_keypad.inc + intro_graphics/04_keypad/intro_keypad.inc \ + intro_graphics/04_keypad/intro_approach.inc ca65 -o intro.o intro.s -l intro.lst #### diff --git a/ootw/intro.s b/ootw/intro.s index 5ae8c4f5..09e7fbcd 100644 --- a/ootw/intro.s +++ b/ootw/intro.s @@ -21,7 +21,7 @@ intro: lda #0 sta DISP_PAGE - jmp elevator_exit +; jmp elevator_exit ;=============================== ;=============================== @@ -544,8 +544,8 @@ elevator_inner_loop: jsr page_flip - ldx #30 - jsr long_wait + ldx #25 + jsr long_wait ; pause dec ELEVATOR_COUNT bne elevator_open_loop @@ -560,14 +560,14 @@ elevator_inner_loop: jsr run_sequence + ;====================================== + ; make background black and pause a bit + jsr clear_all + jsr page_flip - -off_elevator_loop: - lda KEYPRESS - bpl off_elevator_loop - bit KEYRESET - + ldx #80 + jsr long_wait ;=============================== ;=============================== @@ -575,6 +575,29 @@ off_elevator_loop: ;=============================== ;=============================== + ;============================= + ; Load background to $c00 + + lda #>(scanner_door_rle) + sta GBASH + lda #<(scanner_door_rle) + sta GBASL + lda #$c ; load to off-screen $c00 + jsr load_rle_gr + + +; jsr gr_copy_to_current +; jsr page_flip + + + lda #approach_sequence + sta INTRO_LOOPH + + jsr run_sequence + + ;============================= ; Load background to $c00 @@ -585,12 +608,10 @@ off_elevator_loop: lda #$c ; load to off-screen $c00 jsr load_rle_gr - ;================================= - ; copy $c00 to both pages $400/$800 jsr gr_copy_to_current jsr page_flip - jsr gr_copy_to_current + keypad_loop: lda KEYPRESS @@ -888,6 +909,7 @@ gone_loop: .include "intro_graphics/04_keypad/intro_scanner_door.inc" .include "intro_graphics/04_keypad/intro_keypad.inc" +.include "intro_graphics/04_keypad/intro_approach.inc" .include "intro_scanner.inc" .include "intro_open_soda.inc" @@ -1043,7 +1065,32 @@ walking_sequence: .word walking07_rle .byte 20 .word walking08_rle + .byte 20 + .word walking08_rle + .byte 0 + +; Approaching keypad sequence + +approach_sequence: + .byte 20 + .word approach01_rle + .byte 20 + .word approach02_rle + .byte 20 + .word approach03_rle + .byte 20 + .word approach04_rle + .byte 20 + .word approach05_rle + .byte 20 + .word approach06_rle + .byte 20 + .word approach07_rle + .byte 80 + .word approach07_rle .byte 0 + + diff --git a/ootw/intro_graphics/04_keypad/Makefile b/ootw/intro_graphics/04_keypad/Makefile index 40150f57..40df5a19 100644 --- a/ootw/intro_graphics/04_keypad/Makefile +++ b/ootw/intro_graphics/04_keypad/Makefile @@ -3,7 +3,7 @@ include ../../../Makefile.inc PNG2RLE = ../../../gr-utils/png2rle -all: intro_scanner_door.inc intro_keypad.inc +all: intro_scanner_door.inc intro_keypad.inc intro_approach.inc ##### @@ -13,6 +13,17 @@ intro_scanner_door.inc: $(PNG2RLE) intro_scanner_door.png intro_keypad.inc: $(PNG2RLE) intro_keypad.png $(PNG2RLE) asm intro_keypad.png keypad_rle > intro_keypad.inc +intro_approach.inc: $(PNG2RLE) approach01.png approach02.png \ + approach03.png approach04.png approach05.png approach06.png \ + approach07.png + $(PNG2RLE) asm approach01.png approach01_rle > intro_approach.inc + $(PNG2RLE) asm approach02.png approach02_rle >> intro_approach.inc + $(PNG2RLE) asm approach03.png approach03_rle >> intro_approach.inc + $(PNG2RLE) asm approach04.png approach04_rle >> intro_approach.inc + $(PNG2RLE) asm approach05.png approach05_rle >> intro_approach.inc + $(PNG2RLE) asm approach06.png approach06_rle >> intro_approach.inc + $(PNG2RLE) asm approach07.png approach07_rle >> intro_approach.inc + ##### clean: diff --git a/ootw/intro_graphics/04_keypad/approach01.png b/ootw/intro_graphics/04_keypad/approach01.png new file mode 100644 index 0000000000000000000000000000000000000000..021dc59b957f1ffcbff6f3895e5848e3c4d48834 GIT binary patch literal 2229 zcmb7_`9BkmAIIlTA)iGw%pFom%8`+KR$(m~S=rdkM6S7p&}xVgAqtVRT#ZR1$J`My zNo{k5a^(n7VqgEl_lNiE`Fgw_ugBx{<2wOv4;4QMItTy _8ph<(EM@5}*#eWe+T zcLD$+aU@4)A_5bt^OzjJ}Ymq<2Vl@Rh!U(A|79Z3{(jnDw%aJa-wG?Ed zX=mKxI;nFe0Ta*>5$^Zla8aimb`zKjWVo2KmV;3 zU+k|htrLeDLv*mD6?yQ)&a|`XNZLg(hC98ryCWpv7ixMBXQvC3h!oy5D(#KBs(AKo zf8XGr80Z4k>CeBhCUGYp7S27-!Q?3DyK9~2kG;qey{@GujV}Vk)ry74J=(%Ax0dD_ zZd3N%YkLW-t;XkNRh!6?F`+q*$UW6t6+>S zrZ+m6u_DIa5lru40vBeP)p@q<58HF%*W1p>rbdxLIx!Pf&)wpXWM&u>Wr$witpMzr z^dA0Elj!AvE{YO-Jrk}2uyU5vwGk7J1SY0+;GLdW18U6R?Zmo#g&S%%xw0>r2WS;m zd=YvYediquO&k8Rh>y?A!M#;Jr>uQHo;L$uEjW6LBJ1(cDAU>Fa;E+L;`HIGpE6Iy z$p`fsJwXKpbzah>6{TI)s-wRefpeV`x^H+_R?-L_vt3JFF`pYk77M!bNXx~eeaJ3k%Ens6yJ_))Ju(*uL#FtdbXS0iO5gI>kyxv2@7d{7vOG_jDCR-IPH_hQ6^ z+ksTqamEf4Ma2osXmfYv=Pw|b&4H@8v+Z09DVST?E zb?nMFX4F=EM9nzdx&@T3bP`C-hFb9VB>qPy%9DzIHmmJ#DHLkb*%W)DQLa}x$ZF4f zp>gxT;3Q}L7UB0$-;5Hb=oUr~t9~81K2sD{6F9Rn)UbN3yIa4KO0t;`@CL8Z%tvo} zu+wh;46>ZC{V$u?)AaqidX>wwp9qqd-WKgQsL){G{KAs0|x zT84ginpGlF zz@?LgiplTuMF+ej@IcHux%TZu#E>7yOK?(NTA7_wk%qK=L_4g)D7a=xPxW1(^n|#- zKf;g$8M&lq1eCE2qkU1HNG~ z8WOJl0;c#;c-d)Zt-9D0v-;+pzqulk1<7Y7v>LDD<7K_$s^J< z@9fx1{q}O!h=Ee*4W;KR&7MmJ{&GKI75+;AZrfXMQXVm=gYvlQ=%v{GB;hN950j>_ zm|T}4KvM~cx0S(aJiy$x-ZXQDG}Ce`6;jhZUgrBU&bbbUT=;tYD`k~0_za@!2DucR zj#E|kp}HI zX$kgQ5%)zI^4_YZd~(Z)jH0Q&GU0|w``hgxubAuUpTMtNs7ls3R#(3&_K$he_MjB9ZmGZnqB1 z;MKSH1Z>PQR7thuv-_V}4}QhbdY{u^G}^w2XSE9`MCat>NPXNLZ0Df^1$f?&+}vDV z{-D$*WN?fc$Q$JGc>Dd_6iUoKMEz}Df&c(1A^;$b=F3DbrtOC!M3|km$TYu*Airi~ zcJJDLbc|^2Otkd#^~K#G0xSb@7$Od<6iOg^DM4X&aAd56%zo)6%*x!+w)^L2nkYb5 zQh-Svi)KCtEg6&TnIdd{;q-)H>YI@coz`TlsS7}AIn1$21v*K^wwajU2T9WSv5yqE yFnKPYyO)6O>{rqw^l_M0aeCUUk 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 literal 0 HcmV?d00001 diff --git a/ootw/intro_graphics/04_keypad/approach03.png b/ootw/intro_graphics/04_keypad/approach03.png new file mode 100644 index 0000000000000000000000000000000000000000..13067948eae766458f1fbbd68564c9cdc365c8d4 GIT binary patch literal 3023 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 R)d&Cp002ovPDHLkV1gYq)*S!< literal 0 HcmV?d00001 diff --git a/ootw/intro_graphics/04_keypad/approach04.png b/ootw/intro_graphics/04_keypad/approach04.png new file mode 100644 index 0000000000000000000000000000000000000000..5069d4e908437ac0a1a39a7a25408b57ddd80c6e GIT binary patch literal 3162 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 AT>t<8 literal 0 HcmV?d00001 diff --git a/ootw/intro_graphics/04_keypad/approach05.png b/ootw/intro_graphics/04_keypad/approach05.png new file mode 100644 index 0000000000000000000000000000000000000000..aa575fd88b732c466dc2277635b126a777d78d17 GIT binary patch literal 3208 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 u>y;)k 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 literal 0 HcmV?d00001 diff --git a/ootw/intro_graphics/04_keypad/approach07.png b/ootw/intro_graphics/04_keypad/approach07.png new file mode 100644 index 0000000000000000000000000000000000000000..f4179c964fc913eea3d825870fa36a80d8eb8ff9 GIT binary patch literal 2798 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