From 0fa9b45f45c8ee774dc738d3758975d0244db974 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Tue, 27 Oct 2020 23:59:06 -0400 Subject: [PATCH] Rework the LHS side of the game screen to have some BuGS branding. Move the number of lives indicator to the left and add a player 1 and player 2 section. --- BuGS/globals.s | 6 ++ BuGS/score.s | 3 +- BuGS/sprites/letters.s | 177 +++++++++++++++++++++++++++++++++++++++ BuGS/tiles.c | 183 ++++++++++++++++++++++++++++++++++++++--- BuGS/tiles.h | 3 + 5 files changed, 360 insertions(+), 12 deletions(-) diff --git a/BuGS/globals.s b/BuGS/globals.s index 1a78156..250007e 100644 --- a/BuGS/globals.s +++ b/BuGS/globals.s @@ -123,6 +123,9 @@ TILE_SOLID2 gequ 50*4 TILE_SOLID3 gequ 51*4 TILE_PLAYER gequ 52*4 +TILE_LETTER_WHITE_U gequ 53*4 +TILE_LETTER_GREEN_G gequ 54*4 +TILE_LETTER_GREEN_S gequ 55*4 TILE_POISON_A_MUSHROOM gequ TILE_POISON_MUSHROOM4-TILE_MUSHROOM4 @@ -213,6 +216,9 @@ tileJumpTable dc a4'solid0' dc a4'solid2' dc a4'solid3' dc a4'drawPlayer' + dc a4'letterWhiteU' + dc a4'letterGreenG' + dc a4'letterGreenS' EXPLOSION_LAST_OFFSET gequ 20 diff --git a/BuGS/score.s b/BuGS/score.s index e406582..3139366 100644 --- a/BuGS/score.s +++ b/BuGS/score.s @@ -14,7 +14,8 @@ score start using globalData -TILE_SCORE_ONES equ LHS_FIRST_TILE+LHS_NUM_TILES_WIDE+LHS_NUM_TILES_WIDE+LHS_NUM_TILES_WIDE+LHS_NUM_TILES_WIDE-2 +TILE_SCORE_7TH_ROW equ LHS_FIRST_TILE+7*LHS_NUM_TILES_WIDE +TILE_SCORE_ONES equ TILE_SCORE_7TH_ROW-2 TILE_SCORE_ONES_OFFSET equ TILE_SCORE_ONES*SIZEOF_TILE_INFO TILE_SCORE_TENS_OFFSET equ TILE_SCORE_ONES_OFFSET-SIZEOF_TILE_INFO TILE_SCORE_HUNDREDS_OFFSET equ TILE_SCORE_TENS_OFFSET-SIZEOF_TILE_INFO diff --git a/BuGS/sprites/letters.s b/BuGS/sprites/letters.s index d57b695..586f591 100644 --- a/BuGS/sprites/letters.s +++ b/BuGS/sprites/letters.s @@ -1609,4 +1609,181 @@ letterZ entry _spriteFooter rtl + + +letterWhiteU entry + _spriteHeader + + ldx #$0000 ; Black, Black, Black, Black + ldy #$3003 ; Black, Off-white, Off-white, Black + + phx + phx + + adc #$00a0 + tcs + + phx + phx + + adc #$00a0 + tcs + + phx + phx + + adc #$00a0 + tcs + + phy + pea $0033 + + adc #$00a0 + tcs + + phy + pea $0033 + + adc #$00a0 + tcs + + phy + pea $0033 + + adc #$00a0 + tcs + + pea $3033 + pea $3033 + + adc #$00a0 + tcs + + pea $3030 + pea $3303 + + _spriteFooter + rtl + + +letterGreenG entry + _spriteHeader + +; Colours #$0000 - Black, Black, Black, Black (x4) +; #$1100 - Black, Black, Green, Green (x2) +; #$1011 - Green, Green, Red, Black (x3) +; #$1001 - Black, Green, Green, Black (x4) +; #$0011 - Green, Green, Black, Black (x3) +; + ldx #$1001 ; Black, Green, Green, Black + ldy #$0000 ; Black, Black, Black, Black + + phy + phy + + adc #$00a0 + tcs + + pea $1011 + pea $1100 + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + pea $0011 + + adc #$00a0 + tcs + + pea $1011 + pea $0011 + + adc #$00a0 + tcs + + phx + pea $0011 + + adc #$00a0 + tcs + + phx + phx + + adc #$00a0 + tcs + + pea $1011 + pea $1100 + + _spriteFooter + rtl + +letterGreenS entry + _spriteHeader + +; Colours #$0000 - Black, Black, Black, Black (x4) +; #$1101 - Black, Green, Green, Green (x3) +; #$0010 - Green, Black, Black, Black (x1) +; #$0011 - Green, Green, Black, Black (x6) +; #$1001 - Black, Red, Green, Black (x2) +; + ldx #$0000 ; Black, Black, Black, Black + ldy #$0011 ; Green, Green, Black, Black + + phx + phx + + adc #$00a0 + tcs + + pea $0010 + pea $1101 + + adc #$00a0 + tcs + + phy + phy + + adc #$00a0 + tcs + + phx + phy + + adc #$00a0 + tcs + + phy + pea $1101 + + adc #$00a0 + tcs + + pea $1001 + phx + + adc #$00a0 + tcs + + pea $1001 + phy + + adc #$00a0 + tcs + + phy + pea $1101 + + _spriteFooter + rtl + end diff --git a/BuGS/tiles.c b/BuGS/tiles.c index 96ef477..c3b613c 100644 --- a/BuGS/tiles.c +++ b/BuGS/tiles.c @@ -197,15 +197,53 @@ void initNonGameTiles(void) { unsigned int i; tTileNum tileNum; - numPlayers = STARTING_NUM_PLAYERS; - for (i = 0; i < numPlayers; i++) - { - tileNum = RHS_FIRST_TILE + i; - tileType[tileNum] = TILE_PLAYER; - ADD_DIRTY_NON_GAME_TILE(tileNum); - } - tileNum = LHS_FIRST_TILE + (1 * LHS_NUM_TILES_WIDE) + 6; + tileNum = LHS_FIRST_TILE + (LHS_NUM_TILES_WIDE / 2); + tileType[tileNum] = TILE_LETTER_B; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_WHITE_U; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_GREEN_G; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_GREEN_S; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum = LHS_FIRST_TILE + (3 * LHS_NUM_TILES_WIDE); + tileType[tileNum] = TILE_LETTER_P; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_L; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_A; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_Y; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_E; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_R; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileNum++; + tileType[tileNum] = TILE_NUMBER_1; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum = LHS_FIRST_TILE + (5 * LHS_NUM_TILES_WIDE) + 2; tileType[tileNum] = TILE_LETTER_S; ADD_DIRTY_NON_GAME_TILE(tileNum); @@ -229,11 +267,44 @@ void initNonGameTiles(void) tileType[tileNum] = TILE_SYMBOL_COLON; ADD_DIRTY_NON_GAME_TILE(tileNum); - tileNum = LHS_FIRST_TILE + (4 * LHS_NUM_TILES_WIDE) - 2; + tileNum = LHS_FIRST_TILE + (7 * LHS_NUM_TILES_WIDE) - 2; tileType[tileNum] = TILE_NUMBER_0; ADD_DIRTY_NON_GAME_TILE(tileNum); - tileNum = LHS_FIRST_TILE + (12 * LHS_NUM_TILES_WIDE) + 1; + tileNum = LHS_FIRST_TILE + (8 * LHS_NUM_TILES_WIDE) + 2; + tileType[tileNum] = TILE_LETTER_L; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_I; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_V; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_E; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_S; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_SYMBOL_COLON; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + numPlayers = STARTING_NUM_PLAYERS; + tileNum = LHS_FIRST_TILE + (10 * LHS_NUM_TILES_WIDE) - 2; + for (i = 0; i < numPlayers; i++) + { + tileType[tileNum] = TILE_PLAYER; + ADD_DIRTY_NON_GAME_TILE(tileNum); + tileNum--; + } + + tileNum = LHS_FIRST_TILE + (12 * LHS_NUM_TILES_WIDE); tileType[tileNum] = TILE_LETTER_H; ADD_DIRTY_NON_GAME_TILE(tileNum); @@ -274,9 +345,99 @@ void initNonGameTiles(void) tileType[tileNum] = TILE_SYMBOL_COLON; ADD_DIRTY_NON_GAME_TILE(tileNum); - tileNum = LHS_FIRST_TILE + (15 * LHS_NUM_TILES_WIDE) - 2; + tileNum = LHS_FIRST_TILE + (14 * LHS_NUM_TILES_WIDE) - 2; tileType[tileNum] = TILE_NUMBER_0; ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum = LHS_FIRST_TILE + (16 * LHS_NUM_TILES_WIDE); + tileType[tileNum] = TILE_LETTER_P; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_L; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_A; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_Y; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_E; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_R; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileNum++; + tileType[tileNum] = TILE_NUMBER_2; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum = LHS_FIRST_TILE + (18 * LHS_NUM_TILES_WIDE) + 2; + tileType[tileNum] = TILE_LETTER_S; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_C; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_O; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_R; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_E; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_SYMBOL_COLON; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum = LHS_FIRST_TILE + (20 * LHS_NUM_TILES_WIDE) - 2; + tileType[tileNum] = TILE_NUMBER_0; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum = LHS_FIRST_TILE + (21 * LHS_NUM_TILES_WIDE) + 2; + tileType[tileNum] = TILE_LETTER_L; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_I; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_V; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_E; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_LETTER_S; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + tileNum++; + tileType[tileNum] = TILE_SYMBOL_COLON; + ADD_DIRTY_NON_GAME_TILE(tileNum); + + numPlayers = STARTING_NUM_PLAYERS; + tileNum = LHS_FIRST_TILE + (23 * LHS_NUM_TILES_WIDE) - 2; + for (i = 0; i < numPlayers; i++) + { + tileType[tileNum] = TILE_PLAYER; + ADD_DIRTY_NON_GAME_TILE(tileNum); + tileNum--; + } } diff --git a/BuGS/tiles.h b/BuGS/tiles.h index c5f90dc..100ce2b 100644 --- a/BuGS/tiles.h +++ b/BuGS/tiles.h @@ -100,6 +100,9 @@ typedef enum { TILE_SOLID3 = 51 * 4, TILE_PLAYER = 52 * 4, + TILE_LETTER_WHITE_U = 53 * 4, + TILE_LETTER_GREEN_G = 54 * 4, + TILE_LETTER_GREEN_S = 55 * 4, } tTileType;