story screen
This commit is contained in:
+11
@@ -625,6 +625,17 @@ txt_info2: !scr "p2: joystick 1 or j/l"
|
|||||||
txt_ttgname: !scr "teletype games"
|
txt_ttgname: !scr "teletype games"
|
||||||
txt_presents:!scr "presents"
|
txt_presents:!scr "presents"
|
||||||
txt_vs: !scr "vs"
|
txt_vs: !scr "vs"
|
||||||
|
txt_story: !scr "story"
|
||||||
|
txt_st0: !scr "based on a true story"
|
||||||
|
txt_st1: !scr "a wild rabbit attacked a"
|
||||||
|
txt_st2: !scr "scooter rider near budapest."
|
||||||
|
txt_st3: !scr "the rabbit jumped straight"
|
||||||
|
txt_st4: !scr "into the rider's face."
|
||||||
|
txt_st5: !scr "rabbits can jump 5 meters"
|
||||||
|
txt_st6: !scr "high and run at 75 km/h."
|
||||||
|
txt_st7: !scr "the rabbit ran away unhurt."
|
||||||
|
txt_st8: !scr "the rider crashed hard."
|
||||||
|
txt_st9: !scr "this game tells their story."
|
||||||
txt_over: !scr "game over"
|
txt_over: !scr "game over"
|
||||||
txt_return: !scr "fire = return"
|
txt_return: !scr "fire = return"
|
||||||
txt_blank: !fill 19, $20
|
txt_blank: !fill 19, $20
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ wf_hit:
|
|||||||
!src "intro.asm"
|
!src "intro.asm"
|
||||||
!src "menu.asm"
|
!src "menu.asm"
|
||||||
!src "credits.asm"
|
!src "credits.asm"
|
||||||
|
!src "story.asm"
|
||||||
!src "play.asm"
|
!src "play.asm"
|
||||||
!src "over.asm"
|
!src "over.asm"
|
||||||
!src "common.asm"
|
!src "common.asm"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
; -----------------------------------------------------------
|
; -----------------------------------------------------------
|
||||||
; menu.asm - full-screen menu card: big RABBIT VS SCOOTER
|
; menu.asm - full-screen menu card: big RABBIT VS SCOOTER
|
||||||
; logo flanked by two hopping rabbits, and a three-item menu:
|
; logo flanked by two hopping rabbits, and a four-item menu:
|
||||||
; single player / multiplayer / credits (joystick up/down +
|
; single player / multiplayer / credits / story
|
||||||
; fire; s, m, c pick; 1 and 2 pick and start at once)
|
; (joystick up/down + fire; s, m, c, t shortcut keys;
|
||||||
|
; 1 and 2 pick player mode and start at once)
|
||||||
; -----------------------------------------------------------
|
; -----------------------------------------------------------
|
||||||
|
|
||||||
menu_init:
|
menu_init:
|
||||||
@@ -25,12 +26,6 @@ menu_init:
|
|||||||
lda #WHITE
|
lda #WHITE
|
||||||
sta SPR_COL+1
|
sta SPR_COL+1
|
||||||
sta SPR_COL+2
|
sta SPR_COL+2
|
||||||
lda #SPRP_SCOOT
|
|
||||||
sta SPRPTR
|
|
||||||
lda #172 ; center lane position
|
|
||||||
sta SPRPOS
|
|
||||||
lda #226 ; just below the footer line
|
|
||||||
sta SPRPOS+1
|
|
||||||
lda #30 ; left rabbit
|
lda #30 ; left rabbit
|
||||||
sta SPRPOS+2
|
sta SPRPOS+2
|
||||||
lda #58
|
lda #58
|
||||||
@@ -43,7 +38,7 @@ menu_init:
|
|||||||
lda #%00000110 ; both rabbits double-sized
|
lda #%00000110 ; both rabbits double-sized
|
||||||
sta SPR_XEX
|
sta SPR_XEX
|
||||||
sta SPR_YEX
|
sta SPR_YEX
|
||||||
lda #%00000111
|
lda #%00000110 ; only the two flanking rabbits
|
||||||
sta SPR_EN
|
sta SPR_EN
|
||||||
|
|
||||||
+setupd menu_update
|
+setupd menu_update
|
||||||
@@ -128,6 +123,12 @@ mu_nom:
|
|||||||
lda #2
|
lda #2
|
||||||
sta menusel
|
sta menusel
|
||||||
mu_noc:
|
mu_noc:
|
||||||
|
lda CIA1_PB ; column 2 still selected
|
||||||
|
and #$40 ; 't': keyboard column 2, row bit 6
|
||||||
|
bne mu_not
|
||||||
|
lda #3
|
||||||
|
sta menusel
|
||||||
|
mu_not:
|
||||||
|
|
||||||
; the 1 / 2 keys pick and start right away (edge detected)
|
; the 1 / 2 keys pick and start right away (edge detected)
|
||||||
lda #$7f ; keyboard column 7: '1' = bit 0, '2' = bit 3
|
lda #$7f ; keyboard column 7: '1' = bit 0, '2' = bit 3
|
||||||
@@ -158,10 +159,10 @@ mu_keydone:
|
|||||||
lda framectr
|
lda framectr
|
||||||
and #64
|
and #64
|
||||||
beq mu_foot2
|
beq mu_foot2
|
||||||
+prtext 21, 9, LGREY, txt_info, 21
|
+prtext 22, 9, LGREY, txt_info, 21
|
||||||
jmp mu_footdone
|
jmp mu_footdone
|
||||||
mu_foot2:
|
mu_foot2:
|
||||||
+prtext 21, 9, LGREY, txt_info2, 21
|
+prtext 22, 9, LGREY, txt_info2, 21
|
||||||
mu_footdone:
|
mu_footdone:
|
||||||
|
|
||||||
; the menu items: the picked line is yellow
|
; the menu items: the picked line is yellow
|
||||||
@@ -181,6 +182,7 @@ mm_items:
|
|||||||
sta SCREEN+14*40+12
|
sta SCREEN+14*40+12
|
||||||
sta SCREEN+16*40+12
|
sta SCREEN+16*40+12
|
||||||
sta SCREEN+18*40+12
|
sta SCREEN+18*40+12
|
||||||
|
sta SCREEN+20*40+12
|
||||||
lda framectr
|
lda framectr
|
||||||
and #16
|
and #16
|
||||||
bne mu_start
|
bne mu_start
|
||||||
@@ -207,10 +209,14 @@ menu_go:
|
|||||||
lda menusel
|
lda menusel
|
||||||
cmp #2
|
cmp #2
|
||||||
beq mg_credits
|
beq mg_credits
|
||||||
|
cmp #3
|
||||||
|
beq mg_story
|
||||||
sta mp_mode ; item 0 / 1 doubles as the player count
|
sta mp_mode ; item 0 / 1 doubles as the player count
|
||||||
jmp play_init ; its rts returns to the main loop
|
jmp play_init ; its rts returns to the main loop
|
||||||
mg_credits:
|
mg_credits:
|
||||||
jmp credits_init
|
jmp credits_init
|
||||||
|
mg_story:
|
||||||
|
jmp story_init
|
||||||
mu_done:
|
mu_done:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -239,16 +245,18 @@ dm_store:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
; ---- menu tables ----
|
; ---- menu tables ----
|
||||||
MENU_ITEMS = 3
|
MENU_ITEMS = 4
|
||||||
mitem_lo: !byte <txt_1p, <txt_2p, <txt_credits
|
mitem_lo: !byte <txt_1p, <txt_2p, <txt_credits, <txt_story
|
||||||
mitem_hi: !byte >txt_1p, >txt_2p, >txt_credits
|
mitem_hi: !byte >txt_1p, >txt_2p, >txt_credits, >txt_story
|
||||||
mitem_len: !byte 13, 11, 7
|
mitem_len: !byte 13, 11, 7, 5
|
||||||
mitem_row: !byte 14, 16, 18
|
mitem_row: !byte 14, 16, 18, 20
|
||||||
mcur_lo: ; cursor cells: column 12 of those rows
|
mcur_lo: ; cursor cells: column 12 of those rows
|
||||||
!byte <(SCREEN+14*40+12), <(SCREEN+16*40+12), <(SCREEN+18*40+12)
|
!byte <(SCREEN+14*40+12), <(SCREEN+16*40+12)
|
||||||
|
!byte <(SCREEN+18*40+12), <(SCREEN+20*40+12)
|
||||||
mcur_hi:
|
mcur_hi:
|
||||||
!byte >(SCREEN+14*40+12), >(SCREEN+16*40+12), >(SCREEN+18*40+12)
|
!byte >(SCREEN+14*40+12), >(SCREEN+16*40+12)
|
||||||
|
!byte >(SCREEN+18*40+12), >(SCREEN+20*40+12)
|
||||||
|
|
||||||
; ---- menu variables ----
|
; ---- menu variables ----
|
||||||
menusel: !byte 0 ; picked line: 0-2
|
menusel: !byte 0 ; picked line: 0-3
|
||||||
udheld: !byte 0 ; joystick up/down edge detection state
|
udheld: !byte 0 ; joystick up/down edge detection state
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
; -----------------------------------------------------------
|
||||||
|
; story.asm - the true story behind the game: a wild rabbit
|
||||||
|
; knocked over a scooter rider near Budapest (Százhalombatta)
|
||||||
|
; -----------------------------------------------------------
|
||||||
|
|
||||||
|
story_init:
|
||||||
|
lda #BLACK
|
||||||
|
sta bg_top
|
||||||
|
sta bg_bot
|
||||||
|
lda #0
|
||||||
|
sta SPR_EN
|
||||||
|
jsr clear_screen
|
||||||
|
|
||||||
|
+prbig 1, 10, YELLOW, txt_story, 5
|
||||||
|
|
||||||
|
+prtext 7, 9, LGREY, txt_st0, 21
|
||||||
|
+prtext 9, 8, WHITE, txt_st1, 24
|
||||||
|
+prtext 10, 6, WHITE, txt_st2, 28
|
||||||
|
+prtext 12, 7, WHITE, txt_st3, 26
|
||||||
|
+prtext 13, 9, WHITE, txt_st4, 22
|
||||||
|
+prtext 15, 7, LGREEN, txt_st5, 25
|
||||||
|
+prtext 16, 8, LGREEN, txt_st6, 24
|
||||||
|
+prtext 18, 6, RED, txt_st7, 27
|
||||||
|
+prtext 19, 8, RED, txt_st8, 23
|
||||||
|
+prtext 21, 6, CYAN, txt_st9, 28
|
||||||
|
|
||||||
|
+setupd story_update
|
||||||
|
rts
|
||||||
|
|
||||||
|
story_update:
|
||||||
|
; blink the return prompt
|
||||||
|
lda framectr
|
||||||
|
and #32
|
||||||
|
bne su_hide
|
||||||
|
+prtext 23, 13, YELLOW, txt_return, 13
|
||||||
|
jmp su_input
|
||||||
|
su_hide:
|
||||||
|
+prtext 23, 13, YELLOW, txt_blank, 13
|
||||||
|
su_input:
|
||||||
|
jsr start_edge
|
||||||
|
beq su_done
|
||||||
|
jmp menu_init
|
||||||
|
su_done:
|
||||||
|
rts
|
||||||
Reference in New Issue
Block a user