diff --git a/BuGS/game.s b/BuGS/game.s index 309a330..074cb10 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -36,87 +36,56 @@ game start drawDirtyGameTiles entry - ldy #$0 + ldy numDirtyGameTiles + beq dirtyTileLoopDone dirtyTileLoop anop - cpy numDirtyGameTiles - blt handleDirtyTile - stz numDirtyGameTiles - rtl -handleDirtyTile anop + dey + dey phy - tya - asl a - tay - - lda dirtyGameTiles,y - tax + ldx dirtyGameTiles,y stz tiles,x - - txy - iny - iny - - ldx tiles,y - - iny - iny - - lda tiles,y + ldy tiles+2,x + lda tiles+4,x jsl drawTile ply - iny - bra dirtyTileLoop + bne dirtyTileLoop +dirtyTileLoopDone anop + stz numDirtyGameTiles + rtl drawDirtyNonGameTiles entry - ldy #$0 + ldy numDirtyNonGameTiles + beq dirtyTileLoopDone2 dirtyTileLoop2 anop - cpy numDirtyNonGameTiles - blt handleDirtyTile2 - stz numDirtyNonGameTiles - rtl -handleDirtyTile2 anop + dey + dey phy - tya - asl a - tay - - lda dirtyNonGameTiles,y - tax + ldx dirtyNonGameTiles,y stz tiles,x - - txy - iny - iny - - ldx tiles,y - - iny - iny - - lda tiles,y + ldy tiles+2,x + lda tiles+4,x jsl drawTile ply - iny - bra dirtyTileLoop2 + bne dirtyTileLoop2 +dirtyTileLoopDone2 anop + stz numDirtyNonGameTiles + rtl + drawTile entry - asl a - asl a - tay + tax - lda tileJumpTable,y + lda tileJumpTable,x sta jumpInst+1 - iny - iny - lda tileJumpTable,y + lda tileJumpTable+2,x sta jumpInst+3 jumpInst jmp >mushroom1 @@ -124,493 +93,493 @@ jumpInst jmp >mushroom1 drawAll entry - ldx #$2003 + ldy #$2003 jsl mushroom1 - ldx #$200b + ldy #$200b jsl mushroom2 - ldx #$2013 + ldy #$2013 jsl mushroom3 - ldx #$201b + ldy #$201b jsl mushroom4 - ldx #$2023 + ldy #$2023 jsl poisonedMushroom1 - ldx #$202b + ldy #$202b jsl poisonedMushroom2 - ldx #$2033 + ldy #$2033 jsl poisonedMushroom3 - ldx #$203b + ldy #$203b jsl poisonedMushroom4 - ldx #$2043 + ldy #$2043 jsl letterA - ldx #$204b + ldy #$204b jsl letterB - ldx #$2053 + ldy #$2053 jsl letterC - ldx #$205b + ldy #$205b jsl letterD - ldx #$2063 + ldy #$2063 jsl letterE - ldx #$206b + ldy #$206b jsl letterF - ldx #$2073 + ldy #$2073 jsl letterG - ldx #$207b + ldy #$207b jsl letterH - ldx #$2083 + ldy #$2083 jsl letterI - ldx #$208b + ldy #$208b jsl letterJ - ldx #$2093 + ldy #$2093 jsl letterK - ldx #$209b + ldy #$209b jsl letterL - ldx #$2a03 + ldy #$2a03 jsl letterM - ldx #$2a0b + ldy #$2a0b jsl letterN - ldx #$2a13 + ldy #$2a13 jsl letterO - ldx #$2a1b + ldy #$2a1b jsl letterP - ldx #$2a23 + ldy #$2a23 jsl letterQ - ldx #$2a2b + ldy #$2a2b jsl letterR - ldx #$2a33 + ldy #$2a33 jsl letterS - ldx #$2a3b + ldy #$2a3b jsl letterT - ldx #$2a43 + ldy #$2a43 jsl letterU - ldx #$2a4b + ldy #$2a4b jsl letterV - ldx #$2a53 + ldy #$2a53 jsl letterW - ldx #$2a5b + ldy #$2a5b jsl letterX - ldx #$2a63 + ldy #$2a63 jsl letterY - ldx #$2a6b + ldy #$2a6b jsl letterZ - ldx #$2a73 + ldy #$2a73 jsl symbolC - ldx #$2a7b + ldy #$2a7b jsl symbolP - ldx #$2a83 + ldy #$2a83 jsl symbolDot - ldx #$2a8b + ldy #$2a8b jsl symbolColon - ldx #$2a93 + ldy #$2a93 jsl solid0 - ldx #$2a9b + ldy #$2a9b jsl solid1 - ldx #$3403 + ldy #$3403 jsl solid2 - ldx #$340b + ldy #$340b jsl solid3 - ldx #$3413 + ldy #$3413 jsl number0 - ldx #$341b + ldy #$341b jsl number1 - ldx #$3423 + ldy #$3423 jsl number2 - ldx #$342b + ldy #$342b jsl number3 - ldx #$3433 + ldy #$3433 jsl number4 - ldx #$343b + ldy #$343b jsl number5 - ldx #$3443 + ldy #$3443 jsl number6 - ldx #$344b + ldy #$344b jsl number7 - ldx #$3453 + ldy #$3453 jsl number8 - ldx #$345b + ldy #$345b jsl number9 - ldx #$345f + ldy #$345f jsl flea1 - ldx #$3467 + ldy #$3467 jsl flea2 - ldx #$346f + ldy #$346f jsl flea3 - ldx #$3477 + ldy #$3477 jsl flea4 - ldx #$347e + ldy #$347e jsl score300 - ldx #$3486 + ldy #$3486 jsl score600 - ldx #$348e + ldy #$348e jsl score900 - ldx #$3e04 + ldy #$3e04 jsl leftScorpion1 - ldx #$3e14 + ldy #$3e14 jsl leftScorpion1s - ldx #$3e24 + ldy #$3e24 jsl leftScorpion2 - ldx #$3e34 + ldy #$3e34 jsl leftScorpion2s - ldx #$3e44 + ldy #$3e44 jsl leftScorpion3 - ldx #$3e54 + ldy #$3e54 jsl leftScorpion3s - ldx #$3e64 + ldy #$3e64 jsl leftScorpion4 - ldx #$3e74 + ldy #$3e74 jsl leftScorpion4s - ldx #$4804 + ldy #$4804 jsl rightScorpion1 - ldx #$4814 + ldy #$4814 jsl rightScorpion1s - ldx #$4824 + ldy #$4824 jsl rightScorpion2 - ldx #$4834 + ldy #$4834 jsl rightScorpion2s - ldx #$4844 + ldy #$4844 jsl rightScorpion3 - ldx #$4854 + ldy #$4854 jsl rightScorpion3s - ldx #$4864 + ldy #$4864 jsl rightScorpion4 - ldx #$4874 + ldy #$4874 jsl rightScorpion4s - ldx #$5204 + ldy #$5204 jsl spider1 - ldx #$5214 + ldy #$5214 jsl spider1s - ldx #$5224 + ldy #$5224 jsl spider2 - ldx #$5234 + ldy #$5234 jsl spider2s - ldx #$5244 + ldy #$5244 jsl spider3 - ldx #$5254 + ldy #$5254 jsl spider3s - ldx #$5264 + ldy #$5264 jsl spider4 - ldx #$5274 + ldy #$5274 jsl spider4s - ldx #$5284 + ldy #$5284 jsl spider5 - ldx #$5294 + ldy #$5294 jsl spider5s - ldx #$5c04 + ldy #$5c04 jsl spider6 - ldx #$5c14 + ldy #$5c14 jsl spider6s - ldx #$5c24 + ldy #$5c24 jsl spider7 - ldx #$5c34 + ldy #$5c34 jsl spider7s - ldx #$5c40 + ldy #$5c40 jsl explosion1 - ldx #$5c48 + ldy #$5c48 jsl explosion2 - ldx #$5c50 + ldy #$5c50 jsl explosion3 - ldx #$5c58 + ldy #$5c58 jsl explosion4 - ldx #$5c60 + ldy #$5c60 jsl explosion5 - ldx #$5c68 + ldy #$5c68 jsl explosion6 - ldx #$5c70 + ldy #$5c70 jsl leftHead1 - ldx #$5c78 + ldy #$5c78 jsl leftHead1s - ldx #$5c80 + ldy #$5c80 jsl leftHead2 - ldx #$5c88 + ldy #$5c88 jsl leftHead2s - ldx #$5c90 + ldy #$5c90 jsl leftHead3 - ldx #$5c98 + ldy #$5c98 jsl leftHead3s - ldx #$6600 + ldy #$6600 jsl leftHead4 - ldx #$6608 + ldy #$6608 jsl leftHead4s - ldx #$6610 + ldy #$6610 jsl leftHead5 - ldx #$6618 + ldy #$6618 jsl leftHead5s - ldx #$6620 + ldy #$6620 jsl leftBody1 - ldx #$6628 + ldy #$6628 jsl leftBody1s - ldx #$6630 + ldy #$6630 jsl leftBody2 - ldx #$6638 + ldy #$6638 jsl leftBody2s - ldx #$6640 + ldy #$6640 jsl leftBody3 - ldx #$6648 + ldy #$6648 jsl leftBody3s - ldx #$6650 + ldy #$6650 jsl leftBody4 - ldx #$6658 + ldy #$6658 jsl leftBody4s - ldx #$6660 + ldy #$6660 jsl leftBody5 - ldx #$6668 + ldy #$6668 jsl leftBody5s - ldx #$6670 + ldy #$6670 jsl rightHead1 - ldx #$6678 + ldy #$6678 jsl rightHead1s - ldx #$6680 + ldy #$6680 jsl rightHead2 - ldx #$6688 + ldy #$6688 jsl rightHead2s - ldx #$6690 + ldy #$6690 jsl rightHead3 - ldx #$6698 + ldy #$6698 jsl rightHead3s - ldx #$7000 + ldy #$7000 jsl rightHead4 - ldx #$7008 + ldy #$7008 jsl rightHead4s - ldx #$7010 + ldy #$7010 jsl rightHead5 - ldx #$7018 + ldy #$7018 jsl rightHead5s - ldx #$7020 + ldy #$7020 jsl rightBody1 - ldx #$7028 + ldy #$7028 jsl rightBody1s - ldx #$7030 + ldy #$7030 jsl rightBody2 - ldx #$7038 + ldy #$7038 jsl rightBody2s - ldx #$7040 + ldy #$7040 jsl rightBody3 - ldx #$7048 + ldy #$7048 jsl rightBody3s - ldx #$7050 + ldy #$7050 jsl rightBody4 - ldx #$7058 + ldy #$7058 jsl rightBody4s - ldx #$7060 + ldy #$7060 jsl rightBody5 - ldx #$7068 + ldy #$7068 jsl rightBody5s - ldx #$7070 + ldy #$7070 jsl leftDownHead1 - ldx #$7078 + ldy #$7078 jsl leftDownHead1s - ldx #$7080 + ldy #$7080 jsl leftDownHead2 - ldx #$7088 + ldy #$7088 jsl leftDownHead2s - ldx #$7090 + ldy #$7090 jsl leftDownBody1 - ldx #$7098 + ldy #$7098 jsl leftDownBody1s - ldx #$7a00 + ldy #$7a00 jsl leftDownBody2 - ldx #$7a08 + ldy #$7a08 jsl leftDownBody2s - ldx #$7a10 + ldy #$7a10 jsl rightDownHead1 - ldx #$7a18 + ldy #$7a18 jsl rightDownHead1s - ldx #$7a20 + ldy #$7a20 jsl rightDownHead2 - ldx #$7a28 + ldy #$7a28 jsl rightDownHead2s - ldx #$7a30 + ldy #$7a30 jsl rightDownBody1 - ldx #$7a38 + ldy #$7a38 jsl rightDownBody1s - ldx #$7a40 + ldy #$7a40 jsl rightDownBody2 - ldx #$7a48 + ldy #$7a48 jsl rightDownBody2s - ldx #$7a50 + ldy #$7a50 jsl downHead1 - ldx #$7a58 + ldy #$7a58 jsl downHead2 - ldx #$7a60 + ldy #$7a60 jsl downHead3 - ldx #$7a68 + ldy #$7a68 jsl downBody1 - ldx #$7a70 + ldy #$7a70 jsl downBody2 - ldx #$7a78 + ldy #$7a78 jsl downBody3 - ldx #$7a80 + ldy #$7a80 jsl drawShip - ldx #$7a88 + ldy #$7a88 jsl drawShipShift - ldx #$7a90 + ldy #$7a90 jsl drawHalfShot - ldx #$7a98 + ldy #$7a98 jsl drawHalfShotShift - ldx #$8400 + ldy #$8400 jsl drawShot - ldx #$8408 + ldy #$8408 jsl drawShotShift rtl diff --git a/BuGS/sprites/sprites.macros b/BuGS/sprites/sprites.macros index 0731fed..f5500d9 100644 --- a/BuGS/sprites/sprites.macros +++ b/BuGS/sprites/sprites.macros @@ -15,7 +15,7 @@ ora #$0030 sta $e1c068 clc - txa + tya tcs mend diff --git a/BuGS/tiles.c b/BuGS/tiles.c index 4232286..880b7f0 100644 --- a/BuGS/tiles.c +++ b/BuGS/tiles.c @@ -40,15 +40,15 @@ #define ADD_DIRTY_GAME_TILE(tileNum) \ if (!tiles[tileNum].dirty) { \ tiles[tileNum].dirty = 1; \ - dirtyGameTiles[numDirtyGameTiles] = ((tileNum) * sizeof(tTile)); \ - numDirtyGameTiles++; \ + dirtyGameTiles[numDirtyGameTiles / 2] = ((tileNum) * sizeof(tTile)); \ + numDirtyGameTiles += 2; \ } #define ADD_DIRTY_NON_GAME_TILE(tileNum) \ if (!tiles[tileNum].dirty) { \ tiles[tileNum].dirty = 1; \ - dirtyNonGameTiles[numDirtyNonGameTiles] = ((tileNum) * sizeof(tTile)); \ - numDirtyNonGameTiles++; \ + dirtyNonGameTiles[numDirtyNonGameTiles / 2] = ((tileNum) * sizeof(tTile)); \ + numDirtyNonGameTiles += 2; \ } /* Globals */ diff --git a/BuGS/tiles.h b/BuGS/tiles.h index c30ee9d..6726051 100644 --- a/BuGS/tiles.h +++ b/BuGS/tiles.h @@ -43,63 +43,63 @@ typedef word tTileOffset; /* A tile offset is a tile number times the sizeof(t typedef enum { TILE_EMPTY = 0, - TILE_MUSHROOM1 = 1, - TILE_MUSHROOM2 = 2, - TILE_MUSHROOM3 = 3, - TILE_MUSHROOM4 = 4, - TILE_POISON_MUSHROOM1 = 9, - TILE_POISON_MUSHROOM2 = 10, - TILE_POISON_MUSHROOM3 = 11, - TILE_POISON_MUSHROOM4 = 12, + TILE_MUSHROOM1 = 1 * 4, + TILE_MUSHROOM2 = 2 * 4, + TILE_MUSHROOM3 = 3 * 4, + TILE_MUSHROOM4 = 4 * 4, + TILE_POISON_MUSHROOM1 = 9 * 4, + TILE_POISON_MUSHROOM2 = 10 * 4, + TILE_POISON_MUSHROOM3 = 11 * 4, + TILE_POISON_MUSHROOM4 = 12 * 4, - TILE_SYMBOL_C = 5, - TILE_SYMBOL_P = 6, - TILE_SYMBOL_DOT = 7, - TILE_SYMBOL_COLON = 8, + TILE_SYMBOL_C = 5 * 4, + TILE_SYMBOL_P = 6 * 4, + TILE_SYMBOL_DOT = 7 * 4, + TILE_SYMBOL_COLON = 8 * 4, - TILE_LETTER_A = 13, - TILE_LETTER_B = 14, - TILE_LETTER_C = 15, - TILE_LETTER_D = 16, - TILE_LETTER_E = 17, - TILE_LETTER_F = 18, - TILE_LETTER_G = 19, - TILE_LETTER_H = 20, - TILE_LETTER_I = 21, - TILE_LETTER_J = 22, - TILE_LETTER_K = 23, - TILE_LETTER_L = 24, - TILE_LETTER_M = 25, - TILE_LETTER_N = 26, - TILE_LETTER_O = 27, - TILE_LETTER_P = 28, - TILE_LETTER_Q = 29, - TILE_LETTER_R = 30, - TILE_LETTER_S = 31, - TILE_LETTER_T = 32, - TILE_LETTER_U = 33, - TILE_LETTER_V = 34, - TILE_LETTER_W = 35, - TILE_LETTER_X = 36, - TILE_LETTER_Y = 37, - TILE_LETTER_Z = 38, + TILE_LETTER_A = 13 * 4, + TILE_LETTER_B = 14 * 4, + TILE_LETTER_C = 15 * 4, + TILE_LETTER_D = 16 * 4, + TILE_LETTER_E = 17 * 4, + TILE_LETTER_F = 18 * 4, + TILE_LETTER_G = 19 * 4, + TILE_LETTER_H = 20 * 4, + TILE_LETTER_I = 21 * 4, + TILE_LETTER_J = 22 * 4, + TILE_LETTER_K = 23 * 4, + TILE_LETTER_L = 24 * 4, + TILE_LETTER_M = 25 * 4, + TILE_LETTER_N = 26 * 4, + TILE_LETTER_O = 27 * 4, + TILE_LETTER_P = 28 * 4, + TILE_LETTER_Q = 29 * 4, + TILE_LETTER_R = 30 * 4, + TILE_LETTER_S = 31 * 4, + TILE_LETTER_T = 32 * 4, + TILE_LETTER_U = 33 * 4, + TILE_LETTER_V = 34 * 4, + TILE_LETTER_W = 35 * 4, + TILE_LETTER_X = 36 * 4, + TILE_LETTER_Y = 37 * 4, + TILE_LETTER_Z = 38 * 4, - TILE_NUMBER_0 = 39, - TILE_NUMBER_1 = 40, - TILE_NUMBER_2 = 41, - TILE_NUMBER_3 = 42, - TILE_NUMBER_4 = 43, - TILE_NUMBER_5 = 44, - TILE_NUMBER_6 = 45, - TILE_NUMBER_7 = 46, - TILE_NUMBER_8 = 47, - TILE_NUMBER_9 = 48, + TILE_NUMBER_0 = 39 * 4, + TILE_NUMBER_1 = 40 * 4, + TILE_NUMBER_2 = 41 * 4, + TILE_NUMBER_3 = 42 * 4, + TILE_NUMBER_4 = 43 * 4, + TILE_NUMBER_5 = 44 * 4, + TILE_NUMBER_6 = 45 * 4, + TILE_NUMBER_7 = 46 * 4, + TILE_NUMBER_8 = 47 * 4, + TILE_NUMBER_9 = 48 * 4, - TILE_SOLID1 = 49, - TILE_SOLID2 = 50, - TILE_SOLID3 = 51, + TILE_SOLID1 = 49 * 4, + TILE_SOLID2 = 50 * 4, + TILE_SOLID3 = 51 * 4, - TILE_PLAYER = 52, + TILE_PLAYER = 52 * 4, } tTileType;