From c5906235fc861fb1b1d1121d8e2ac296f47e62ff Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 10 May 2024 22:26:38 -0400 Subject: [PATCH] keen: hook up title choice --- games/keen/graphics/Makefile | 4 + games/keen/graphics/title_sprites.png | Bin 1542 -> 1546 bytes games/keen/title.s | 200 +++++++++++++++++++++++++- games/keen/zp.inc | 1 + 4 files changed, 198 insertions(+), 7 deletions(-) diff --git a/games/keen/graphics/Makefile b/games/keen/graphics/Makefile index 625916c5..f3b7971a 100644 --- a/games/keen/graphics/Makefile +++ b/games/keen/graphics/Makefile @@ -17,6 +17,10 @@ all: keen1_title.hgr.zx02 level1_bg.gr.zx02 parts.gr.zx02 \ title_sprites.inc: title_sprites.png $(HGR_SPRITE) -s -l title_sprite title_sprites.png 0 0 167 95 > title_sprites.inc + $(HGR_SPRITE) -s -l ball_bg title_sprites.png 0 96 6 104 >> title_sprites.inc + $(HGR_SPRITE) -s -l ball0 title_sprites.png 0 105 6 113 >> title_sprites.inc + $(HGR_SPRITE) -s -l ball1 title_sprites.png 0 114 6 122 >> title_sprites.inc + $(HGR_SPRITE) -s -l ball2 title_sprites.png 0 123 6 131 >> title_sprites.inc #### diff --git a/games/keen/graphics/title_sprites.png b/games/keen/graphics/title_sprites.png index 11ec4ce7393ab6aa1b6e70415c811110cf5d88e8..d06675cb2392b730535892146a397095a9fb474e 100644 GIT binary patch delta 995 zcmV<9104K@42le}^Z^J90u}@@Q=Xoa`~fI`(Md!>RCwC$o84~XAP|K|LQ!95B&6mA z`T%=__BK)~dK)Rb>(^gw42&H+e+JCO!Hw!TuJh^ma2QBKq>a)U8*4*fZ#Giyk8{GP zO)$oAr#qW#>#w&7#!@zxZW9a{omH9sdRt&V>_A4c1Y=uX{# zbz5g5r}Gw=?wnwZKK2)!c6KIu0p_#IrHnE9s-4u@i5;P608%bOcsO25nQnj~j}hLO z*n`oHW@VM>jJf(ZcS=MUJt{^1cr|6Z9%fV^-6l#v6_q)<`xM`}_ee0X1gfP>hOV7Y znawS$GSBA9+Bw;k3AqwH68D8?*0N`Rvod-CW_V*4e&Z7#gd%6wvZshLQH1~#deoRR zYuS_CGZBUb49}EV$)4=Wu<%L$6ZTo8@>=#}_Y87oO_^8fmnu0E^Cfs^zXVpk2R&WI z6!i=xm{FnKl$pS=S7|q8!fldSv!gP|nLE8{v4-ipdi9*~BeAS$qOV!iRfcANn;5De zW=?)(#v0{4n3~Fj+zF4Go(Y*VG4Nd&nbCXH^Ri~&ZV)c>6tNG zXtIi>@6>k{SIC2B{O1IPl|jxtKRbA^>`^~we5TNBuB3yxM-R=5tU@_|Gxi%fOQ8Ad zw`;_Oawe@ngwK^GFd~)9DkJAb3+ut*^<|h+mELUGKEjAk=CXSRpEn_ap$wFPGCM27 zid8ep3@~my;<32ufA_~Y{%1&-Hj&>S&o8D-uT9j4RXmnn7ux_^R++Ro#mcLb{xL+w zM^KEYq-TV47M1C54@H%K^nBiutv4l4s0mE)khn#|xmqjEtjuRiIYV@DTejvjyKJ~k z_};+^j4`L~ob`JLr!6pSFYSEqAgeO{^)|rR%-=iMkTXo#n|d4OtD#2L+Hb%B1~7mr z3DZ{Sb^qE?hV4%~FbA@Knt}Ois3jN!m_?YQ`Sp#ijnI3^GnU&afw^kkPH%Fp9hgH) zInxvjo8JgMgx-sx*HEQ*JssNVO_u|529+K{50l9SBp?i600S7n00uC#_8%7Be542BG_^Z^J81tTYn_FTG?`~fI`%}GQ-RCwC$n_X_BFcgKahmSa!})f>7|OzM4ygj@+8iQB?6TiLUJTN%9qGhWz*-}J@@p~#u7>?xv5R3X5G7B%I} zR`z7~OoU+p!wY3LvM0MTEPOKjgl!h7yp=uKJ%gOtQs$NVrAp4kdV-dWo9t!RXR+WaGPY-9HcfzZtXF}%8415;`IaARy&yJI-c*gr>IY%REoN=2fC_|ywPAd5T z)UyhQYAF+kCq%QGm&QwKwc9A;8Byuoz_1cG?*Pw)_p-mD8pQQf*T~nUp0e zDzx-Wn&;DHJ%gOtob7y&GfW4Jn`VBA+w=gYSkA~ET*sNsy2^;;jWDsgb7`zy6|2;urWsoz^j}9J8d(_VvpDDB$E9qeF$wSK`t5D8=OzlRF5@`AP z?HqBToJlhf;d`YSj7a6O%E)oi%6xG6d>y7#rMH;2k1*n!x$K_7_f1G(C4RVGbNvGVGqe+*Ia z6%->X=^5diRb__TLs2Dvy&Sh>YfZ@$Y6cTLByQ1otk#M%EA!b>&JbPPnr(5KU3T0i zJa@1G({(3%&idTJX%7sWOFPdUWL0K3-wqg)`MHA~Im48FQE$V1H?)v3<_9o<0SsVD z!n757_HR4N^yarAnBM$p2FA7p(>DZT8-n?@{STTpLhmKdn1(zh(^k{&Z96c1Q!utI z7=#`|@3p4gQl)22OT|@7FnwFy0V+L&9+S!iDI0(R%zq2>4`o_^i)fd2`2YX_07*qo IM6N<$g7@d#umAu6 diff --git a/games/keen/title.s b/games/keen/title.s index 5e3c45df..d7629263 100644 --- a/games/keen/title.s +++ b/games/keen/title.s @@ -180,6 +180,11 @@ done_setup_sound: lda #100 jsr wait_a_bit + + ;=================================== + ; Draw title message + ;=================================== + lda #title_sprite @@ -196,21 +201,142 @@ done_setup_sound: jsr hgr_draw_sprite + ;=========================== + ; title loop + ;========================== - lda #100 - jsr wait_a_bit + lda #0 + sta WHICH_CURSOR + sta FRAMEL + sta FRAMEH + sta MENU_OPTION +title_loop: + + lda KEYPRESS + bpl done_title_keyboard + + bit KEYRESET + + and #$7f ; clear high bit + and #$df ; convert to uppercase + + cmp #13 ; exit if enter pressed + beq done_intro + + cmp #'H' + bne not_help + + jsr print_help +not_help: + +check_up: + cmp #'W' + beq up_pressed + cmp #$0B ; up key + bne check_down +up_pressed: + + lda MENU_OPTION + beq done_title_keyboard + + jsr erase_marker + + dec MENU_OPTION + + jsr draw_marker + + jmp done_title_keyboard + +check_down: + cmp #'S' + beq down_pressed + cmp #$0A ; down key + bne done_title_keyboard + +down_pressed: + + lda MENU_OPTION + cmp #7 + beq done_title_keyboard + + jsr erase_marker + + inc MENU_OPTION + + jsr draw_marker + + jmp done_title_keyboard + + +done_title_keyboard: + inc FRAMEL + bne noframeoflo + inc FRAMEH +noframeoflo: + lda FRAMEL + bne no_adjust_cursor + + lda FRAMEH + and #$0f + bne no_adjust_cursor + + clc + lda WHICH_CURSOR + adc #1 + cmp #3 + bne no_cursor_oflo + lda #0 + +no_cursor_oflo: + sta WHICH_CURSOR + + jsr draw_marker + +no_adjust_cursor: + jmp title_loop done_intro: ; restore to full screen (no text) + lda MENU_OPTION + cmp #0 + beq new_game ; new game + cmp #1 + beq nothing ; continue game + cmp #2 + beq do_story + +nothing: + jmp title_loop + + ;===================== + ;===================== + ; do story + ;===================== + ;===================== +do_story: bit FULLGR bit LORES + lda #LOAD_STORY + sta WHICH_LOAD ; assume new game (mars map) + + rts + ;===================== - ; init vars ;===================== + ; new game + ;===================== + ;===================== +new_game: init_vars: + bit FULLGR + bit LORES + + + + lda #0 sta ANIMATE_FRAME sta FRAMEL @@ -243,9 +369,7 @@ init_vars: sta MARS_X sta MARS_Y - lda #LOAD_STORY - -; lda #LOAD_MARS + lda #LOAD_MARS sta WHICH_LOAD ; assume new game (mars map) rts @@ -310,9 +434,13 @@ done_keyloop: cmp #'H'|$80 bne really_done_keyloop - bit SET_TEXT + + lda #$04 + sta DRAW_PAGE jsr print_help bit SET_GR + lda #$20 + sta DRAW_PAGE bit PAGE1 ldx #100 @@ -324,9 +452,67 @@ really_done_keyloop: rts + ;============================= + ; erase + ;============================= +erase_marker: + lda #ball_bg + sta INH + + lda #12 + sta SPRITE_X + + lda MENU_OPTION + asl + asl + asl + clc + adc #55 + sta SPRITE_Y + +; lda #$20 +; sta DRAW_PAGE + + jsr hgr_draw_sprite + + rts + ;============================= + ; draw + ;============================= +draw_marker: + ldx WHICH_CURSOR + lda cursor_lookup_l,X + sta INL + lda cursor_lookup_h,X + sta INH + + lda #12 + sta SPRITE_X + + lda MENU_OPTION + asl + asl + asl + clc + adc #55 + sta SPRITE_Y + +; lda #$20 +; sta DRAW_PAGE + + jsr hgr_draw_sprite + + rts + +cursor_lookup_h: + .byte >ball0,>ball1,>ball2 +cursor_lookup_l: + .byte