mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-05-28 16:41:35 +00:00
Start implementing the code to draw the tiles on the screen.
This commit is contained in:
parent
63fb8a0e22
commit
3f9e7bd066
|
@ -20,6 +20,7 @@
|
||||||
9D1716A52491C49300C83148 /* system601.2mg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D1716A42491C49300C83148 /* system601.2mg */; };
|
9D1716A52491C49300C83148 /* system601.2mg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D1716A42491C49300C83148 /* system601.2mg */; };
|
||||||
9D1716A72491C49300C83148 /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D1716A62491C49300C83148 /* tail.mk */; };
|
9D1716A72491C49300C83148 /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D1716A62491C49300C83148 /* tail.mk */; };
|
||||||
9D1716AA2491C49300C83148 /* BuGS.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D1716A92491C49300C83148 /* BuGS.xcscheme */; };
|
9D1716AA2491C49300C83148 /* BuGS.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D1716A92491C49300C83148 /* BuGS.xcscheme */; };
|
||||||
|
9DC4D7C124BE9F7100BACF4B /* tiles.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DC4D7C024BE9F7100BACF4B /* tiles.c */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
@ -83,6 +84,8 @@
|
||||||
9D8FFC612491CAF0005C9327 /* game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = "<group>"; };
|
9D8FFC612491CAF0005C9327 /* game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = "<group>"; };
|
||||||
9DC4D7BD24B7652100BACF4B /* ship.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ship.s; sourceTree = "<group>"; };
|
9DC4D7BD24B7652100BACF4B /* ship.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ship.s; sourceTree = "<group>"; };
|
||||||
9DC4D7BE24B80C9600BACF4B /* shot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = shot.s; sourceTree = "<group>"; };
|
9DC4D7BE24B80C9600BACF4B /* shot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = shot.s; sourceTree = "<group>"; };
|
||||||
|
9DC4D7BF24BE9F7100BACF4B /* tiles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tiles.h; sourceTree = "<group>"; };
|
||||||
|
9DC4D7C024BE9F7100BACF4B /* tiles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tiles.c; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -121,6 +124,8 @@
|
||||||
children = (
|
children = (
|
||||||
9D17168E2491C49300C83148 /* main.c */,
|
9D17168E2491C49300C83148 /* main.c */,
|
||||||
9D1716902491C49300C83148 /* main.h */,
|
9D1716902491C49300C83148 /* main.h */,
|
||||||
|
9DC4D7BF24BE9F7100BACF4B /* tiles.h */,
|
||||||
|
9DC4D7C024BE9F7100BACF4B /* tiles.c */,
|
||||||
9D8FFC602491CA28005C9327 /* game.s */,
|
9D8FFC602491CA28005C9327 /* game.s */,
|
||||||
9D8FFC612491CAF0005C9327 /* game.h */,
|
9D8FFC612491CAF0005C9327 /* game.h */,
|
||||||
9D62AF3B249871A300348F45 /* colour.s */,
|
9D62AF3B249871A300348F45 /* colour.s */,
|
||||||
|
@ -292,6 +297,7 @@
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
9DC4D7C124BE9F7100BACF4B /* tiles.c in Sources */,
|
||||||
9D1716942491C49300C83148 /* Makefile in Sources */,
|
9D1716942491C49300C83148 /* Makefile in Sources */,
|
||||||
9D17168F2491C49300C83148 /* main.c in Sources */,
|
9D17168F2491C49300C83148 /* main.c in Sources */,
|
||||||
);
|
);
|
||||||
|
|
158
BuGS/game.s
158
BuGS/game.s
|
@ -27,6 +27,109 @@ game start
|
||||||
lda colourPalette
|
lda colourPalette
|
||||||
jsl setColour
|
jsl setColour
|
||||||
|
|
||||||
|
jsl drawDirtyGameTiles
|
||||||
|
|
||||||
|
jsl drawDirtyNonGameTiles
|
||||||
|
|
||||||
|
jsl waitForKey
|
||||||
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
drawDirtyGameTiles entry
|
||||||
|
ldy #$0
|
||||||
|
dirtyTileLoop anop
|
||||||
|
cpy numDirtyGameTiles
|
||||||
|
blt handleDirtyTile
|
||||||
|
stz numDirtyGameTiles
|
||||||
|
rtl
|
||||||
|
handleDirtyTile anop
|
||||||
|
phy
|
||||||
|
tya
|
||||||
|
asl a
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda dirtyGameTiles,y
|
||||||
|
asl a
|
||||||
|
asl a
|
||||||
|
asl a
|
||||||
|
tax
|
||||||
|
|
||||||
|
stz tiles,x
|
||||||
|
|
||||||
|
txy
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
|
||||||
|
ldx tiles,y
|
||||||
|
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda tiles,y
|
||||||
|
|
||||||
|
jsl drawTile
|
||||||
|
|
||||||
|
ply
|
||||||
|
iny
|
||||||
|
bra dirtyTileLoop
|
||||||
|
|
||||||
|
|
||||||
|
drawDirtyNonGameTiles entry
|
||||||
|
ldy #$0
|
||||||
|
dirtyTileLoop2 anop
|
||||||
|
cpy numDirtyNonGameTiles
|
||||||
|
blt handleDirtyTile2
|
||||||
|
stz numDirtyNonGameTiles
|
||||||
|
rtl
|
||||||
|
handleDirtyTile2 anop
|
||||||
|
phy
|
||||||
|
tya
|
||||||
|
asl a
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda dirtyNonGameTiles,y
|
||||||
|
asl a
|
||||||
|
asl a
|
||||||
|
asl a
|
||||||
|
tax
|
||||||
|
|
||||||
|
stz tiles,x
|
||||||
|
|
||||||
|
txy
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
|
||||||
|
ldx tiles,y
|
||||||
|
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda tiles,y
|
||||||
|
|
||||||
|
jsl drawTile
|
||||||
|
|
||||||
|
ply
|
||||||
|
iny
|
||||||
|
bra dirtyTileLoop2
|
||||||
|
|
||||||
|
drawTile entry
|
||||||
|
asl a
|
||||||
|
asl a
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda tileJumpTable,y
|
||||||
|
sta jumpInst+1
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda tileJumpTable,y
|
||||||
|
sta jumpInst+3
|
||||||
|
|
||||||
|
jumpInst jmp >mushroom1
|
||||||
|
nop
|
||||||
|
|
||||||
|
|
||||||
|
drawAll entry
|
||||||
ldx #$2003
|
ldx #$2003
|
||||||
jsl mushroom1
|
jsl mushroom1
|
||||||
|
|
||||||
|
@ -516,7 +619,6 @@ game start
|
||||||
ldx #$8408
|
ldx #$8408
|
||||||
jsl drawShotShift
|
jsl drawShotShift
|
||||||
|
|
||||||
jsl waitForKey
|
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
@ -586,4 +688,58 @@ quit rtl
|
||||||
backupStack dc i2'0'
|
backupStack dc i2'0'
|
||||||
colourPalette dc i2'0'
|
colourPalette dc i2'0'
|
||||||
|
|
||||||
|
tileJumpTable dc a4'solid0'
|
||||||
|
dc a4'mushroom4'
|
||||||
|
dc a4'mushroom3'
|
||||||
|
dc a4'mushroom2'
|
||||||
|
dc a4'mushroom1'
|
||||||
|
dc a4'symbolC'
|
||||||
|
dc a4'symbolP'
|
||||||
|
dc a4'symbolDot'
|
||||||
|
dc a4'symbolColon'
|
||||||
|
dc a4'poisonedMushroom4'
|
||||||
|
dc a4'poisonedMushroom3'
|
||||||
|
dc a4'poisonedMushroom2'
|
||||||
|
dc a4'poisonedMushroom1'
|
||||||
|
dc a4'letterA'
|
||||||
|
dc a4'letterB'
|
||||||
|
dc a4'letterC'
|
||||||
|
dc a4'letterD'
|
||||||
|
dc a4'letterE'
|
||||||
|
dc a4'letterF'
|
||||||
|
dc a4'letterG'
|
||||||
|
dc a4'letterH'
|
||||||
|
dc a4'letterI'
|
||||||
|
dc a4'letterJ'
|
||||||
|
dc a4'letterK'
|
||||||
|
dc a4'letterL'
|
||||||
|
dc a4'letterM'
|
||||||
|
dc a4'letterN'
|
||||||
|
dc a4'letterO'
|
||||||
|
dc a4'letterP'
|
||||||
|
dc a4'letterQ'
|
||||||
|
dc a4'letterR'
|
||||||
|
dc a4'letterS'
|
||||||
|
dc a4'letterT'
|
||||||
|
dc a4'letterU'
|
||||||
|
dc a4'letterV'
|
||||||
|
dc a4'letterW'
|
||||||
|
dc a4'letterX'
|
||||||
|
dc a4'letterY'
|
||||||
|
dc a4'letterZ'
|
||||||
|
dc a4'number0'
|
||||||
|
dc a4'number1'
|
||||||
|
dc a4'number2'
|
||||||
|
dc a4'number3'
|
||||||
|
dc a4'number4'
|
||||||
|
dc a4'number5'
|
||||||
|
dc a4'number6'
|
||||||
|
dc a4'number7'
|
||||||
|
dc a4'number8'
|
||||||
|
dc a4'number9'
|
||||||
|
dc a4'solid1'
|
||||||
|
dc a4'solid2'
|
||||||
|
dc a4'solid3'
|
||||||
|
dc a4'drawPlayer'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
20
BuGS/main.c
20
BuGS/main.c
|
@ -8,13 +8,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <Memory.h>
|
#include <Memory.h>
|
||||||
#include <Locator.h>
|
#include <Locator.h>
|
||||||
#include <MiscTool.h>
|
#include <MiscTool.h>
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "game.h"s
|
#include "game.h"
|
||||||
|
#include "tiles.h"
|
||||||
|
|
||||||
|
|
||||||
/* Defines and macros */
|
/* Defines and macros */
|
||||||
|
@ -23,24 +25,14 @@
|
||||||
if (toolerror()) SysFailMgr(toolerror(), "\p" string "\n\r Error Code -> $");
|
if (toolerror()) SysFailMgr(toolerror(), "\p" string "\n\r Error Code -> $");
|
||||||
|
|
||||||
|
|
||||||
/* Types */
|
|
||||||
|
|
||||||
|
|
||||||
/* Globals */
|
/* Globals */
|
||||||
|
|
||||||
BOOLEAN shouldQuit;
|
|
||||||
unsigned int userid;
|
unsigned int userid;
|
||||||
|
|
||||||
|
|
||||||
/* Implementation */
|
/* Implementation */
|
||||||
|
|
||||||
|
|
||||||
void initGlobals(void)
|
|
||||||
{
|
|
||||||
shouldQuit = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int event;
|
int event;
|
||||||
|
@ -61,6 +53,12 @@ int main(void)
|
||||||
NewHandle(0x9000, userid, attrLocked | attrFixed | attrAddr | attrBank, (Pointer)0x011000);
|
NewHandle(0x9000, userid, attrLocked | attrFixed | attrAddr | attrBank, (Pointer)0x011000);
|
||||||
TOOLFAIL("Unable to allocate SHR screen");
|
TOOLFAIL("Unable to allocate SHR screen");
|
||||||
|
|
||||||
|
srand((int)(time(NULL)));
|
||||||
|
|
||||||
|
initTiles();
|
||||||
|
initPlayer();
|
||||||
|
addStartingMushrooms();
|
||||||
|
|
||||||
game();
|
game();
|
||||||
|
|
||||||
ShutDownTools(refIsHandle, toolStartupRef);
|
ShutDownTools(refIsHandle, toolStartupRef);
|
||||||
|
|
|
@ -28,6 +28,8 @@ drawShip entry
|
||||||
; ..OO|O...
|
; ..OO|O...
|
||||||
; ..OO|O...
|
; ..OO|O...
|
||||||
|
|
||||||
|
stz collision
|
||||||
|
|
||||||
lda $0,s
|
lda $0,s
|
||||||
_collision #$0c00
|
_collision #$0c00
|
||||||
and #$f0ff
|
and #$f0ff
|
||||||
|
@ -150,6 +152,8 @@ drawShipShift entry
|
||||||
; ...O|OO..
|
; ...O|OO..
|
||||||
; ...O|OO..
|
; ...O|OO..
|
||||||
|
|
||||||
|
stz collision
|
||||||
|
|
||||||
lda $2,s
|
lda $2,s
|
||||||
_collision #$00c0
|
_collision #$00c0
|
||||||
and #$ff0f
|
and #$ff0f
|
||||||
|
@ -255,10 +259,84 @@ drawShipShift entry
|
||||||
lda collision
|
lda collision
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
; This differs from the above by being a tile draw routine for drawing the number of lives left.
|
||||||
|
; It assumes it is drawing to the background and overwrites what may be there and does not check
|
||||||
|
; for collisions
|
||||||
|
drawPlayer entry
|
||||||
|
_spriteHeader
|
||||||
|
|
||||||
clearShipCollision entry
|
; $1 - Green
|
||||||
lda #$0000
|
; $2 - Red
|
||||||
sta collision
|
; $3 - Off-white
|
||||||
|
;
|
||||||
|
; ...O|....
|
||||||
|
; ..OO|O...
|
||||||
|
; .RRO|RR..
|
||||||
|
; ORRO|RRO.
|
||||||
|
; OOOO|OOO.
|
||||||
|
; .OOO|OO..
|
||||||
|
; ..OO|O...
|
||||||
|
; ..OO|O...
|
||||||
|
;
|
||||||
|
; Colours #$0000 - Black, Black, Black, Black (x1)
|
||||||
|
; #$0300 - Black, Black, Black, Off-white (x1)
|
||||||
|
; #$3300 - Black, Black, Off-white, Off-white (x3)
|
||||||
|
; #$0030 - Off-white, Black, Black, Black (x3)
|
||||||
|
; #$2302 - Black, Red, Red, Off-white (x1)
|
||||||
|
; #$0022 - Red, Red, Black, Black (x1)
|
||||||
|
; #$2332 - Off-white, Red, Red, Off-white (x1)
|
||||||
|
; #$3022 - Red, Red, Off-white, Black (x1)
|
||||||
|
; #$3333 - Off-white, Off-white, Off-white, Off-white (x1)
|
||||||
|
; #$3033 - Off-white, Off-white, Off-white, Black (x1)
|
||||||
|
; #$3303 - Black, Off-white, Off-white, Off-white (x1)
|
||||||
|
; #$0033 - Off-white, Off-white, Black, Black (x1)
|
||||||
|
|
||||||
|
pea $0000
|
||||||
|
pea $0300
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $0030
|
||||||
|
pea $3300
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $0022
|
||||||
|
pea $2302
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $3022
|
||||||
|
pea $2332
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $3033
|
||||||
|
pea $3333
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $0033
|
||||||
|
pea $3303
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $0030
|
||||||
|
pea $3300
|
||||||
|
|
||||||
|
adc #$00a0
|
||||||
|
tcs
|
||||||
|
|
||||||
|
pea $0030
|
||||||
|
pea $3300
|
||||||
|
|
||||||
|
_spriteFooter
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
|
129
BuGS/tiles.c
Normal file
129
BuGS/tiles.c
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
/*
|
||||||
|
* tiles.c
|
||||||
|
* BuGS
|
||||||
|
*
|
||||||
|
* Created by Jeremy Rand on 2020-07-14.
|
||||||
|
* Copyright © 2020 Jeremy Rand. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "tiles.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Defines */
|
||||||
|
|
||||||
|
#define TILE_WIDTH 8
|
||||||
|
#define TILE_HEIGHT 8
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH 320
|
||||||
|
#define SCREEN_HEIGHT 200
|
||||||
|
|
||||||
|
#define GAME_LEFT_MOST_X_POS (13 * TILE_WIDTH) /* 13 tiles from the left */
|
||||||
|
#define GAME_TOP_MOST_Y_POS (0 * TILE_HEIGHT)
|
||||||
|
|
||||||
|
#define TILE_OFFSET_FOR_X_Y(X, Y) \
|
||||||
|
(0x2000 + (0xa0 * (Y)) + ((X) / 2) + 3)
|
||||||
|
|
||||||
|
#define STARTING_NUM_MUSHROOMS 30
|
||||||
|
#define STARTING_NUM_PLAYERS 3
|
||||||
|
|
||||||
|
|
||||||
|
/* Globals */
|
||||||
|
|
||||||
|
tTile tiles[TOTAL_GAME_TILES];
|
||||||
|
|
||||||
|
unsigned int dirtyGameTiles[NUM_GAME_TILES];
|
||||||
|
unsigned int numDirtyGameTiles;
|
||||||
|
|
||||||
|
unsigned int dirtyNonGameTiles[NUM_NON_GAME_TILES];
|
||||||
|
unsigned int numDirtyNonGameTiles;
|
||||||
|
|
||||||
|
unsigned int numPlayers;
|
||||||
|
|
||||||
|
|
||||||
|
/* Implementation */
|
||||||
|
|
||||||
|
void initTiles(void)
|
||||||
|
{
|
||||||
|
int tileX;
|
||||||
|
int tileY;
|
||||||
|
int lastOffset;
|
||||||
|
tTile * tilePtr = &(tiles[0]);
|
||||||
|
tTile * playerTilePtr = &(tiles[FIRST_PLAYER_TILE]);
|
||||||
|
|
||||||
|
for (tileY = 0; tileY < GAME_NUM_TILES_TALL; tileY++)
|
||||||
|
{
|
||||||
|
lastOffset = TILE_OFFSET_FOR_X_Y(GAME_LEFT_MOST_X_POS, GAME_TOP_MOST_Y_POS + (tileY * TILE_HEIGHT));
|
||||||
|
tilePtr->dirty = 0;
|
||||||
|
tilePtr->offset = lastOffset;
|
||||||
|
tilePtr->type = TILE_EMPTY;
|
||||||
|
tilePtr->dummy = 0;
|
||||||
|
tilePtr++;
|
||||||
|
|
||||||
|
for (tileX = 1; tileX < GAME_NUM_TILES_WIDE; tileX++)
|
||||||
|
{
|
||||||
|
lastOffset += 4;
|
||||||
|
tilePtr->dirty = 0;
|
||||||
|
tilePtr->offset = lastOffset;
|
||||||
|
tilePtr->type = TILE_EMPTY;
|
||||||
|
tilePtr->dummy = 0;
|
||||||
|
tilePtr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastOffset += 4;
|
||||||
|
playerTilePtr->dirty = 0;
|
||||||
|
playerTilePtr->offset = lastOffset;
|
||||||
|
playerTilePtr->type = TILE_EMPTY;
|
||||||
|
playerTilePtr->dummy = 0;
|
||||||
|
playerTilePtr++;
|
||||||
|
|
||||||
|
lastOffset += 4;
|
||||||
|
playerTilePtr->dirty = 0;
|
||||||
|
playerTilePtr->offset = lastOffset;
|
||||||
|
playerTilePtr->type = TILE_EMPTY;
|
||||||
|
playerTilePtr->dummy = 0;
|
||||||
|
playerTilePtr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
numDirtyGameTiles = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void initPlayer(void)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
unsigned int tileNum;
|
||||||
|
numPlayers = STARTING_NUM_PLAYERS;
|
||||||
|
for (i = 0; i < numPlayers; i++)
|
||||||
|
{
|
||||||
|
tileNum = FIRST_PLAYER_TILE + i;
|
||||||
|
tiles[tileNum].dirty = 1;
|
||||||
|
tiles[tileNum].type = TILE_PLAYER;
|
||||||
|
|
||||||
|
dirtyNonGameTiles[numDirtyNonGameTiles] = tileNum;
|
||||||
|
numDirtyNonGameTiles++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void addStartingMushrooms(void)
|
||||||
|
{
|
||||||
|
int tileNum;
|
||||||
|
int numMushrooms = 0;
|
||||||
|
|
||||||
|
while (numMushrooms < STARTING_NUM_MUSHROOMS)
|
||||||
|
{
|
||||||
|
/* We do not put mushrooms in the bottom tile so we subtract the width here to find
|
||||||
|
a tile number above that last line */
|
||||||
|
tileNum = rand() % (NUM_GAME_TILES - GAME_NUM_TILES_WIDE);
|
||||||
|
if (tiles[tileNum].type != TILE_EMPTY)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
tiles[tileNum].type = TILE_MUSHROOM4;
|
||||||
|
tiles[tileNum].dirty = 1;
|
||||||
|
dirtyGameTiles[numDirtyGameTiles] = tileNum;
|
||||||
|
numDirtyGameTiles++;
|
||||||
|
numMushrooms++;
|
||||||
|
}
|
||||||
|
}
|
117
BuGS/tiles.h
Normal file
117
BuGS/tiles.h
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
/*
|
||||||
|
* tiles.h
|
||||||
|
* BuGS
|
||||||
|
*
|
||||||
|
* Created by Jeremy Rand on 2020-07-14.
|
||||||
|
* Copyright © 2020 Jeremy Rand. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GUARD_PROJECTBuGS_FILEtiles_
|
||||||
|
#define _GUARD_PROJECTBuGS_FILEtiles_
|
||||||
|
|
||||||
|
|
||||||
|
/* Defines */
|
||||||
|
|
||||||
|
#define GAME_NUM_TILES_WIDE 25
|
||||||
|
#define GAME_NUM_TILES_TALL 25
|
||||||
|
|
||||||
|
#define NUM_GAME_TILES (GAME_NUM_TILES_WIDE * GAME_NUM_TILES_TALL)
|
||||||
|
|
||||||
|
#define NUM_PLAYER_TILES (2 * GAME_NUM_TILES_TALL)
|
||||||
|
#define FIRST_PLAYER_TILE NUM_GAME_TILES
|
||||||
|
|
||||||
|
#define NUM_NON_GAME_TILES (NUM_PLAYER_TILES)
|
||||||
|
|
||||||
|
#define TOTAL_GAME_TILES (NUM_GAME_TILES + NUM_NON_GAME_TILES)
|
||||||
|
|
||||||
|
|
||||||
|
/* Types */
|
||||||
|
|
||||||
|
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_SYMBOL_C = 5,
|
||||||
|
TILE_SYMBOL_P = 6,
|
||||||
|
TILE_SYMBOL_DOT = 7,
|
||||||
|
TILE_SYMBOL_COLON = 8,
|
||||||
|
|
||||||
|
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_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_SOLID1 = 49,
|
||||||
|
TILE_SOLID2 = 50,
|
||||||
|
TILE_SOLID3 = 51,
|
||||||
|
|
||||||
|
TILE_PLAYER = 52,
|
||||||
|
} tTileType;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned int dirty;
|
||||||
|
unsigned int offset;
|
||||||
|
tTileType type;
|
||||||
|
unsigned int dummy; /* I want a size which is a multiple of 2 */
|
||||||
|
} tTile;
|
||||||
|
|
||||||
|
|
||||||
|
/* Globals */
|
||||||
|
|
||||||
|
extern tTile tiles[TOTAL_GAME_TILES];
|
||||||
|
extern unsigned int dirtyGameTiles[NUM_GAME_TILES];
|
||||||
|
extern unsigned int numDirtyGameTiles;
|
||||||
|
extern unsigned int dirtyNonGameTiles[NUM_NON_GAME_TILES];
|
||||||
|
extern unsigned int numDirtyNonGameTiles;
|
||||||
|
|
||||||
|
|
||||||
|
/* API */
|
||||||
|
|
||||||
|
extern void initTiles(void);
|
||||||
|
extern void initPlayer(void);
|
||||||
|
extern void addStartingMushrooms(void);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* define _GUARD_PROJECTBuGS_FILEtiles_ */
|
Loading…
Reference in New Issue
Block a user