From 152cac3dedd9feb236f93cdf3dd7e8b3511d69ea Mon Sep 17 00:00:00 2001 From: Rob McMullen Date: Fri, 21 Jul 2017 22:02:56 -0700 Subject: [PATCH] Initial score panel display --- actors.s | 3 ++ background.s | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++-- debug.s | 55 +++++++++++++++++--------------- maze.s | 3 +- screen.s | 2 +- working.s | 9 +++--- 6 files changed, 127 insertions(+), 34 deletions(-) diff --git a/actors.s b/actors.s index 92abd5c..0c3c135 100644 --- a/actors.s +++ b/actors.s @@ -124,6 +124,9 @@ add_score nop adc #0 sta player_score_h,x cld + + jsr update_score + rts diff --git a/background.s b/background.s index 35e03ac..4e4e75c 100644 --- a/background.s +++ b/background.s @@ -164,7 +164,52 @@ paint_boxes nop ; pad.addstr(row - 1, MAZE_SCORE_COL, " ") ; pad.addstr(row, MAZE_SCORE_COL, "Player%d" % (zp.current_actor + 1)) ; zp.current_actor += 1 -; + +clear_panel nop + ldx #MAZE_RIGHT_COL+1 + lda #0 +?1 jsr text_put_col + inx + cpx #40 + bcc ?1 + rts + +init_panel nop + jsr clear_panel + + ldy #1 + jsr mazerow + ldy #MAZE_PANEL_COL + ldx #0 +?1 lda player1_text,x + beq ?2 + sta (mazeaddr),y + iny + inx + bne ?1 +?2 + ldy #6 + jsr mazerow + ldy #MAZE_PANEL_COL + ldx #0 +?3 lda player2_text,x + beq ?4 + sta (mazeaddr),y + iny + inx + bne ?3 +?4 + ldx #0 + jsr update_score + inx + jsr update_score + rts + +player1_text .byte "PLAYER1", 0 +player2_text .byte "PLAYER2", 0 + + + ; def show_lives(row, num): ; i = 1 ; col = SCREEN_COLS @@ -176,8 +221,48 @@ paint_boxes nop ; c = " " ; pad.addch(row, col, ord(c)) ; i += 1 -; + +print_hex pha + stx param_x + lsr + lsr + lsr + lsr + tax + lda hexdigit,x + sta (mazeaddr),y + iny + pla + and #$0f + tax + lda hexdigit,x + sta (mazeaddr),y + iny + ldx param_x + rts + + ; def update_score(): +update_score nop + lda #MAZE_SCORE_COL + sta c + lda player_score_row,x + sta r + lda #4 + sta size + jsr damage_string + +print_score nop + ldy player_score_row,x + jsr mazerow + ldy #MAZE_SCORE_COL + lda player_score_h,x + jsr print_hex + lda player_score_l,x + jsr print_hex + lda #'0' + sta (mazeaddr),y + rts ; row = player_score_row[zp.current_actor] ; if actor_status[zp.current_actor] == GAME_OVER: ; pad.addstr(row - 1, MAZE_SCORE_COL, "GAME ") diff --git a/debug.s b/debug.s index f01d8ce..f6e62ab 100644 --- a/debug.s +++ b/debug.s @@ -8,7 +8,7 @@ debugtext nop rts -printhex ; A = hex byte, X = column, Y = row; A is clobbered, X&Y are not +debughex ; A = hex byte, X = column, Y = row; A is clobbered, X&Y are not pha stx param_x lsr @@ -33,10 +33,13 @@ hexdigit .byte "0123456789ABCDEF" printstr ; X = column, Y = row, scratch_ptr is text (null terminated) sty param_y ldy #0 -?next lda (scratch_ptr),y + sty param_index +?next ldy param_index + lda (scratch_ptr),y beq ?exit ldy param_y jsr fastfont + inc param_index inx bne ?next ?exit rts @@ -59,12 +62,12 @@ debug_player nop lda actor_input_dir,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #0 lda actor_dir,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #34 @@ -75,12 +78,12 @@ debug_player nop lda actor_x,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #0 lda actor_y,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #34 @@ -91,12 +94,12 @@ debug_player nop lda actor_col,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #0 lda actor_row,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #34 @@ -107,12 +110,12 @@ debug_player nop lda tdamageindex1 ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #0 lda tdamageindex2 ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #34 @@ -123,12 +126,12 @@ debug_player nop lda debug_mark_box ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #0 lda debug_paint_box ldx #38 ldy scratch_row - jsr printhex + jsr debughex ; amidar 4 dec scratch_row @@ -140,12 +143,12 @@ debug_player nop lda actor_col,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR+3 lda actor_row,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex ; amidar 3 dec scratch_row @@ -157,12 +160,12 @@ debug_player nop lda actor_col,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR+2 lda actor_row,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex ; amidar 2 dec scratch_row @@ -170,12 +173,12 @@ debug_player nop lda actor_xpixel,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR+1 lda actor_ypixel,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #34 @@ -186,12 +189,12 @@ debug_player nop lda actor_col,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR+1 lda actor_row,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex ; amidar 1 (orbiter) dec scratch_row @@ -199,24 +202,24 @@ debug_player nop lda actor_xpixel,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR lda actor_ypixel,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #FIRST_AMIDAR lda actor_xfrac,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR lda actor_yfrac,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex dec scratch_row ldx #34 @@ -227,11 +230,11 @@ debug_player nop lda actor_col,x ldx #35 ldy scratch_row - jsr printhex + jsr debughex ldx #FIRST_AMIDAR lda actor_row,x ldx #38 ldy scratch_row - jsr printhex + jsr debughex rts diff --git a/maze.s b/maze.s index f2b3738..b50bd17 100644 --- a/maze.s +++ b/maze.s @@ -53,7 +53,8 @@ SCREEN_ROWS = 24 ;# cols 33 - 39 is the score area MAZE_LEFT_COL = 1 MAZE_RIGHT_COL = 31 -MAZE_SCORE_COL = 33 +MAZE_PANEL_COL = 33 +MAZE_SCORE_COL = 35 SCREEN_COLS = 40 ;# Orbiter goes around the outside border, but not through the maze diff --git a/screen.s b/screen.s index 449c547..aa60962 100644 --- a/screen.s +++ b/screen.s @@ -172,7 +172,7 @@ copytexthgr_src_smc copytexthgr_dest_smc jsr $ffff inx - cpx #32 + cpx #40 bcc copytexthgr_src_smc iny cpy #24 diff --git a/working.s b/working.s index 6f5bd29..7ea5650 100644 --- a/working.s +++ b/working.s @@ -190,9 +190,9 @@ title_screen nop rts init_game nop - jsr initbackground jsr init_level jsr init_actors + jsr initbackground lda #0 sta frame_count sta frame_count+1 @@ -203,6 +203,7 @@ init_game nop initbackground nop jsr show_page1 jsr init_maze + jsr init_panel jsr copytexthgr ; page2 becomes the source ; jsr wipeclear1 ; jsr wipe2to1 @@ -257,8 +258,8 @@ game_loop nop jsr paint_boxes jsr renderstart jsr pageflip - jsr debug_player - jsr wait + ;jsr debug_player + ;jsr wait jmp game_loop @@ -316,7 +317,7 @@ userinput pha ldx #38 ldy #23 - jsr printhex + jsr debughex ldx #0 pla bpl input_not_movement ; stop movement of player if no direction input